ddrv / translator
翻译库
v2.0.1
2020-07-04 12:01 UTC
Requires
- php: >=7.2
- ext-mbstring: *
- psr/simple-cache: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.1
- squizlabs/php_codesniffer: ^3.5
README
PHP本地化应用程序库。
安装
-
在终端运行
composer require ddrv/translator:^2
-
包含自动加载文件
require_once 'vendor/autoload.php';
用法
- 准备翻译
<?php # /path/to/translations/default/en_US.php return [ 'test' => 'It is test!', 'hello' => 'Hello, %name%', 'count' => '%count% element|%count% elements|{0}no elements', 'interval' => '[-Inf,0[negative|[0,Inf]positive', 'multi' => [ 'level' => [ 'key' => 'It is key in multilevel array.', ], ], ];
<?php # /path/to/translations/default/ru_RU.php return [ 'test' => 'Это тест!', 'hello' => 'Привет, %name%', 'count' => '%count% элемент|%count% элемента|%count% элементов|{0}элементов нет', 'interval' => '[-Inf,0[отрицательное|[0,Inf]положительное', 'multi' => [ 'level' => [ 'key' => 'Это ключ в многоуровневом массиве.', ], ], ];
- 初始化库
<?php use Ddrv\Translator\Loader\FileLoader; use Ddrv\Translator\Provider\TranslationProvider; use Ddrv\Translator\Translator; // Create a loader instance. $loader = new FileLoader('/path/to/translations'); $translations = new TranslationProvider($loader); $translator = new Translator('en_US', $translations);
- 使用它!
<?php use Ddrv\Translator\Translator; /** @var Translator $translator */ $translator->trans('default:test'); // It is test! $translator->trans('default:multi.level.key'); // It is key in multilevel array. $translator->trans('default:test', [], 'ru_RU'); // Это тест! $translator->setLocale('ru_RU'); $translator->trans('default:test'); // Это тест! $translator->trans('default:multi.level.key'); // Это ключ в многоуровневом массиве.
- 参数
<?php use Ddrv\Translator\Translator; /** @var Translator $translator */ $translator->trans('default:hello', ['name' => 'Ivan']); // Hello, Ivan! $translator->trans('default:hello', ['name' => 'John']); // Hello, John!
- 复数化
<?php use Ddrv\Translator\Translator; /** @var Translator $translator */ $translator->trans('default:count', ['count' => 1]); // 1 element! $translator->trans('default:count', ['count' => 2]); // 2 elements! $translator->trans('default:interval', ['count' => -2]); // negative $translator->trans('default:interval', ['count' => 2]); // positive
你可以开发一个实现 \Ddrv\Translator\Contract\DomainLoader
接口的加载器。
你可以同时使用多个加载器
<?php use Ddrv\Translator\Contract\DomainLoader; use Ddrv\Translator\Provider\TranslationProvider; use Ddrv\Translator\Loader\MultiLoader; use Ddrv\Translator\Translator; /** * @var DomainLoader $loader1 * @var DomainLoader $loader2 * @var DomainLoader $loader3 */ $loader = new MultiLoader($loader1); $loader->addLoader($loader2); $loader->addLoader($loader3); $translations = new TranslationProvider($loader); $translator = new Translator('en_US', $translations);
你可以将你的加载器封装到 \Ddrv\Translator\Loader\CachedLoader
<?php use Ddrv\Translator\Contract\DomainLoader; use Ddrv\Translator\Provider\TranslationProvider; use Ddrv\Translator\Loader\CachedLoader; use Ddrv\Translator\Translator; use Psr\SimpleCache\CacheInterface; /** * @var DomainLoader $loader * @var CacheInterface $cache */ $cached = new CachedLoader($loader, $cache, 'loader_1_'); $translations = new TranslationProvider($cached); $translator = new Translator('en_US', $translations);