qpfsoft/lang

v1.1 2019-06-14 00:36 UTC

This package is auto-updated.

Last update: 2024-04-14 10:55:50 UTC


README

language translation

多语言

网站多语言, 一般采用语句标识映射一句消息.

# en
[
     'welcome' => 'Hello {:name}, nice to meet you!',
]

# zh
[
    'welcome' => '你好 {:name}, 见到你很高兴!',
]

根据语言类型, 分包映射对应的语言消息.

目录结构

/root
   |- langs
   |    |- zh-cn
   |    |   |- simple
   |    |   |- precision
   |    |- en-us
   |    |   |- simple
   |    |   |- precision

可将语言包按类别划分, 这样可根据app或class获取自身需要的语言. 不会一次加载所有语言消息.

示例

翻译语言

// simple 对应 @root/langs/zh-cn/simple.php 语言包
$lang->translate('simple', 'welcome', ['name'=>'qpf'], 'en-us'); // 'Hello qpf, nice to meet you!'
$lang->translate('simple', 'welcome', ['name'=>'qpf'], 'zh-cn'); // '你好 qpf, 见到你很高兴!'
$lang->translate('simple', 'welcome', ['name'=>'qpf']); // 可通过设置首选语言类型, 或客户端语言类型检查后, 可忽略

其它

请自行查看tests目录内示例.

翻译词典

网站多语言, 使用语言标记的好处是, 不用做词库(词库size很大), 翻译的语句更准确!

不过还是提供了 词典语言包, 以英文单词为基准, 直接替换翻译, 词典不知道的单词, 将原样返回.

由于语法顺序问题, 也可使用短语, 但建议依赖单词, 而不是短语.

词典语言包格式:

  • 短语与单词定义不区分大小写
[
    'phrase'    => [
        'Phrase is for better translation'  => '短语是为了更好的翻译',
    ],
    
    'word'      => [
        't' => [
            'translate' => '翻译', // 推荐, 首字母分组
        ],
        
        'translate' => '翻译', // 若存在首字符分组, 该词将无效
        
    ],
]

翻译语句

词典默认限定为en-us语言, 所以当目标语言也是en-us时将不会进行翻译!

$this->lang->translate('precision', 'translate  ok!', 'zh-cn'); // `翻译  ok!`
$this->lang->translate('precision', 'Phrase is for better translation', 'zh-cn'); // `短语是为了更好的翻译`
$this->lang->translate('precision', 'translate  ok!', 'en-us'); // `translate  ok!`