michaelspiss / translation
一个无依赖的基于文件的翻译组件。
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: ^6.3
This package is not auto-updated.
Last update: 2024-09-29 23:47:34 UTC
README
一个无依赖的基于文件的翻译组件。
它支持你抛给它的所有文件格式,复数形式,占位符,已完全测试和文档化。
安装
要使用Composer安装此包,只需运行以下命令
$ composer require michaelspiss/translation
基本用法
实例化一个新的翻译器很容易:只需传入默认区域设置(在这种情况下为'en')和你的翻译目录的路径!
require 'vendor/autoload.php'; // composer autoloader use MichaelSpiss\Translation\Translator; $translator = new Translator('en', 'path/to/translations');
组件使用点符号键来标识要加载的字符串。要获取特定语言的字符串,请使用trans()方法并传入键
$translator->trans('message.hello_world');
在这种情况下,字符串将在path/to/translations/en/message.php中找到。该文件本身将如下所示。
文件夹结构
语言字符串存储在初始化时传入的目录中的文件中。在此目录中,每个子目录代表一种支持的语言,并包含翻译文件。
translations/
|- en/
| |- message.php
|- de/
|- fr/
翻译文件看起来如下
message.php
<?php return [ 'hello_world' => 'Hello World!' ];
尽管默认只支持.php文件,但翻译文件可以是任何格式。有关更多信息,请参阅相应的wiki文章。
设置区域设置
通常,区域设置只在初始化时设置一次,但组件也允许你在中途更改区域设置
$translator->setLocale('de');
此外,你还可以在不设置新区域设置并之后重置它的情况下,请求特定语言的单个翻译字符串
$translator->trans('message.hello_world', [], 'de'); // or: $translator->transChoice('message.choice', 1, [], 'de');
使用占位符
在你的翻译文件中,占位符通过将花括号放在占位符名称周围(仅限大写和小写字母)来定义
message.php
<?php return [ 'with_placeholder' => 'Hello {placeholder}!' ];
现在你可以在trans()调用中添加一个数组,包含占位符的值
$translator->trans('message.with_placeholder', ['placeholder' => 'World']); // returns "Hello World!"
你可以在字符串中放置任意数量的占位符!
复数形式
要为字符串启用复数形式,只需在翻译文件中将单数和复数形式之间添加一个管道字符
message.php
<?php return [ 'simple_pluralization' => 'Dog | Dogs' ];
第二种选项更高级,实际上允许你设置自己的规则
<?php return [ 'advanced_pluralization' => '{0} None | [1,10] Some | [11,*] Many' ];
你可以使用以下表达式
表达式也支持整数和浮点数!
要获取字符串,请使用transChoice()方法,它还接受一个额外的number参数(类型为int或float)
$translator->transChoice('message.simple_pluralization', 4); // returns "Dogs" $translator->transChoice('message.advanced_pluralization', 8); // returns "Some"
阅读更多
如果你想了解有关Translator的方法或如何使用除了.php以外的其他文件格式,请参阅此项目的wiki!
PHP要求
- PHP >= 7.0.0
许可证
MIT