kozicak / l10n-nette-translator
Tracy 的简单 l10n 翻译面板
2.1.0
2019-06-06 07:21 UTC
Requires
- php: >=7.1
- kocicak/l10n: ^2.0
- nette/application: ^3.0
- nette/di: ^3.0
- nette/http: ^3.0
- nette/utils: ^3.0
- tracy/tracy: ^2.6
README
l10nNetteTranslator
为 Nette 提供简单面板的 l10n 翻译器,适用于 Tracy
Packagist
l10nNetteTranslator 可在 Packagist.org 上找到,只需在 composer.json 中添加依赖即可。
{ "require" : { "zemistr/l10n-nette-translator": "1.*" } }
或者运行 Composer 命令
php composer.phar require zemistr/l10n-nette-translator
不使用 Composer 的使用方法
<?php require('src/l10nNetteTranslator.php');
示例用法(标准用法,使用文件存储)
只需将以下代码添加到 config.neon
extensions: translator: l10nNetteTranslator\ApplicationDI\Extension translator: # languages are required languages: - lang: l10n\Language\CzechLanguage # must implements l10n\Language\ILanguage plural: l10n\Plural\PluralRule8 # must implements l10n\Plural\IPlural - lang: l10n\Language\SlovakLanguage # if language implements l10n\Plural\IPlural, you can ignore plural section - lang: l10n\Language\EnglishLanguage default: true # if is not set, the first language will be set as default # storage is optional storage: @translator_simple_nette_storage # must implements l10nNetteTranslator\Storage\IStorage services: # You can use any storage implements Nette\Caching\IStorage translator_nette_storage: class: Nette\Caching\Storages\FileStorage(%appDir%/Texts) # Texts will be saved in %appDir%/Texts as file named by ISO 639-1 autowired: false translator_simple_nette_storage: l10nNetteTranslator\Storage\SimpleNetteStorage(@translator_nette_storage)
并将此代码添加到 presenter 中
/** @var \l10nNetteTranslator\Translator */ protected $translator; public function injectTranslator(\l10nNetteTranslator\Translator $translator) { $this->translator = $translator; } protected function beforeRender() { $this->template->setTranslator($this->translator); }
表单中的示例用法
class XxxPresenter extends \Nette\Application\UI\Presenter { public function createComponentForm() { $form = new Form(); $form->setTranslator($this->translator); ... return $form; } }
在 Latte 中的示例用法
// users -> singular => %n% person // users -> plural 1 => %n% people {_'users'} // 1 person {_'users', 0} // 0 people {_'users', 50} // 50 people ---- // user -> singular => I am %firstname% %lastname% {_'user', ['%firstname%' => 'John','%lastname%' => 'Doe']} // I am John Doe {_'user', 1, ['%firstname%' => 'John','%lastname%' => 'Doe']} // I am John Doe
我如何更改语言?
class XxxPresenter extends \Nette\Application\UI\Presenter { public function actionDefault() { // argument must be ISO 639-1 code $this->translator->setActiveLanguageCode('cs'); } }
(c)Martin Zeman (Zemistr),2015 (http://zemistr.eu)