geniv/nette-translator

Nette 框架的翻译扩展

v2.3.6 2019-03-26 23:34 UTC

README

此翻译器旨在保存消息中的标识,默认文本适用于 id_locale=NULL,下一个语言必须手动翻译。

复数源: http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html

安装

$ composer require geniv/nette-translator

或者

"geniv/nette-translator": "^2.0"

require

"php": ">=7.0",
"nette/nette": ">=2.4",
"dibi/dibi": ">=3.0",
"geniv/nette-locale": ">=2.0",
"geniv/nette-search-content": ">=1.0"

包含在应用程序中

可用的源驱动程序

  • DevNullDriver(忽略翻译,仅使用默认翻译)
  • NeonDriver(neon 语法文件系统)
  • DibiDriver(dibi + 缓存 _Translator-DibiDriver,自翻译数据库表)

neon 配置

# translator
translator:
#   debugger: true
#   autowired: true
    driver: Translator\Drivers\DevNullDriver
#   driver: Translator\Drivers\NeonDriver(%appDir%)
#   driver: Translator\Drivers\DibiDriver(%tablePrefix%)
#    searchMask: 
#       - *Translation.neon
    searchPath:
        - %appDir%/../vendor/geniv  # first vendor
        - %appDir%
        - %appDir%/presenters/CustomTranslation.neon
    excludePath:
        - CustomTranslation.neon

searchPath 用于配置系统搜索默认翻译。默认翻译系统具有名称约定 *Translation.neon,例如: AppTranslation.neon 目录中的名称按 natsort() 函数排序。可以添加自定义默认翻译文件。 excludePath 仅排除在 searchPath 中的搜索目录。此 neon 文件格式为: myIndent: "MyDefaultMessage"

警告:标识索引不应与翻译本身相同。

neon 配置扩展

extensions:
    translator: Translator\Bridges\Nette\Extension

用法

{* standard translating *}
{_'preklad'}

{* plural translating *}
{_'preklad', $pocet}

{* substitution translating *}
{_'preklad', [$pocet]}

此 latte 宏不受支持,因为像索引必须使用简单字符串,如 {_'xyz'}:

{_}translate{/_}

演示者

/** @var ITranslator @inject */
public $translator;

$form = new \Nette\Application\UI\Form;
$form->setTranslator($this->translator);

或者

// standard translating
$this->translator->translate('message-ident');

// plural translating
$this->translator->translate('message-ident', 123);             // inside %s

// substitution translating
$this->translator->translate('message-ident', [123]);           // inside %s

// substitution translating
$this->translator->translate('message-ident', ['hello', 123]);  // inside %s, %s