abbadon1334/atk4-i18next-php

1.0.1 2019-07-15 07:02 UTC

README

基于i18next http://i18next.com

直接与ATK4 - Agile Toolkit模型进行插值 https://www.agiletoolkit.org/

Build Status Codacy Badge Codacy Badge Coverage Status StyleCI Maintainability Test Coverage

使用composer安装

composer require abbadon1334/atk4-i18next-php

有关原始库的所有文档都可以在这里找到: http://i18next.com/

如何使用

$this->translator = new Translator();
$this->translator->setTranslationsPath(__DIR__.'/data/locales');

定义是否使用文件名作为命名空间

$this->translator->useFilenameAsNamespace(true);

定义主语言和备用语言(使用文件夹名称)

$this->translator->setLanguagePrimary($language);
$this->translator->setLanguageFallback($fallback);

添加额外语言

$this->translator->addLanguage('it');

翻译

interface TranslatorInterface
{
    /**
     * Translates the given message.
     *
     * @param string      $key
     * @param array|null  $parameters Array of parameters used to translate message
     * @param string|null $context
     * @param string|null $locale     The locale or null to use the default
     *
     * @return string The translated string
     */
    public function _(string $key, ?array $parameters = null, ?string $context = null, ?string $locale = null): string;
}

// Usage

$result = $this->translator->_('definitionKey');

$result = $this->translator->_('definitionKey', ['param1' => 'test']);

$result = $this->translator->_('definitionKey', ['param1' => 'test'], 'context');

$result = $this->translator->_('definitionKey', ['param1' => 'test'], 'context', 'specificLanguage');

$result = $this->translator->_('namespace:definitionKey', ['param1' => 'test'], 'context', 'specificLanguage');

支持I18Next

http://i18next.com
  • 从文件夹中读取翻译文件,每个文件夹都是一个语言代码
    • JSON
    • YAML
    • PHP数组
  • 将翻译文件写入文件夹,每个文件夹都是一个语言代码
    • JSON
    • YAML
    • PHP数组
  • 获取主语言中定义的翻译
    • 如果找不到,则尝试备用语言
      • 如果找不到,则返回原始字符串
  • 命名空间
    • 根据优先级回退命名空间获取定义的翻译
  • 上下文为 {key}_{context}
  • 复数
    • 单数作为 {key}
    • 复数作为 {key}_plural
    • 多个复数作为 {key}_{int $counter}
      • 管理当 $counter 大于定义的最大复数时的情况
    • 嵌套插值复数
    • 区间
  • 插值
    • 将 {{key}} 替换为定义的 $paramater 值
      • 如果 {{key}} 有点如 {{key.index}},并且 $parameters[index] 是数组或对象,将检索该值
  • 嵌套
    • 基本
    • 复数
  • 格式化
  • 添加助手以使用方法 Translator::_ 作为全局函数 __
  • 添加助手以使用 Translator 作为全局单例实例
  • 收集缺失的请求键
  • 添加助手以在代码中搜索/收集对方法 Translator _ 的调用
  • 使用键作为翻译添加直接翻译

支持 ATK4 - Agile Toolkit Model

https://www.agiletoolkit.org
  • 使用 \atk4\data\Model 进行插值