国际化

如果系统有不同语言文案的支持,此时就需要使用国际化,统一管理不同语言的文案翻译

国际化配置

国际化配置主要是配置,国际化翻译文件路径和默认语言信息。Swoft 提供两种方式配置,properties 和 env,env 配置会覆盖 properties

可用配置:

  • languageDir 路径支持别名,框架底层会自动解析相应路径
  • defaultCategory 配置默认分类,默认是 default
  • defaultLanguage 配置默认语言,默认是 en

properties

配置文件,app/config/properties/app.php

return [
    // ......
    'translator' =>[
        'languageDir' => '@root/resources/languages/',
        'defaultCategory' => 'default',
        'defaultLanguage' => 'en',
    ],
    // ......
];

env

环境变量配置,.env文件

TRANSLATOR_LANG_DIR=@root/resources/languages/
TRANSLATOR_DEFAULT_CATEGORY=default
TRANSLATOR_DEFAULT_LANG=en
  • 同样 env 路径配置也支持别名

翻译文件格式

不同语言文件,是放在不同的语言文件夹下面。

[root@0dd3950e175b languages]## tree 
.
|-- en
|   |-- default.php
|   `-- msg.php
`-- zh
    |-- default.php
    `-- msg.php

翻译文件组成

  • 语言,指的是文件夹名称,比如en/zh
  • 分类,指的是不同语言文件夹下的文件,多个文件就是多个分类(msg/default)。
  • Key,翻译文件内存是按照key/value形式定义
  • default.php是默认分类

文件内容格式

return [
    'body' => '这是一条消息 [%s] %d',
];
  • value 替换规则是按照sprintf()函数格式替换

使用实例


$data[] = translate('title', [], 'zh');
$data[] = translate('title', [], 'en');
$data[] = translate('msg.body', ['Swoft', 1], 'zh');
$data[] = translate('msg.body', ['Swoft', 2], 'en');

  • 第一个参数,若有”.“符号,先匹配分类,再匹配key,否则,直接匹配默认分类和key
  • 第二个参数,按顺序传入需要替换参数
  • 第三个参数,指定翻译语言,如果不指定,会使用默认配置的语言。
上一页
下一页