Git --NB Framework 中文教程
目录 ▾ 多语言

最后更新于:2018-10-30 17:17
58次阅读0条评论

多语言

NB内置通过nbi18n类提供多语言支持,如果你的应用涉及到国际化的支持,那么可以定义相关的语言包文件。任何字符串形式的输出,都可以定义语言常量。
NB默认有两种语言驱动,一种是常规的php数组语言文件,一种是基于.mo文件.

开启和加载语言包

默认情况下,系统不实用多语言功能,你需要手动添加多语言设置来开启它。
开启方式为在框架配置里添加i18n设置,分别是:

默认语言驱动

默认驱动使用.php语言文件

//开启调试
public $i18n      = [
    'path'=>'mo',//语言文件目录路径
    'default_lang'=>'zh-cn',//设置默认语言
];
Mo语言驱动

此驱动使用.mo语言定义文件

//开启调试
public $i18n      = [
    'driver'=>'mo',//不设置为使用默认语言驱动
    'path'=>'mo',//语言文件目录路径
    'default_lang'=>'zh-cn',//设置默认语言
    'enable_cache'=>true
];

编写语言文件

我们可以自己定义一个语言目录,根据设置的语言驱动,我们可以编写对应的语言文件,如默认驱动情况下:

return [
    'hello'                 => '你好',
    'hello {:name}'         => '你好 {:name}',
    'hello %s'              => '你好 %s',
    'hello %s,i`m %s'       => '你好 %s,我是 %s',
];

如果是使用MO语言驱动,可以自行百度.mo语言文件如何编写。

翻译

nb\I18n类提供了三个静态方法来显示翻译文字。

1.翻译文字

public static function t($string, $vars = [])

//输出 你好
echo \nb\I18n::t('hello');

//输出 你好 Collin
echo \nb\I18n::t('hello {:name}',['name'=>'Collin']);

//输出 你好 Collin
echo \nb\I18n::t('hello %s','collin');

动态加载语言文件

动态加载是指在语言文件已经初始化后,手动的追加其它语言文件。
如果追加的语言文件有和原语言文件相同的值,将会覆盖原来的翻译文字。

public static function load($file, $range = '')

file :语言文件路径,如果不是全路径,将以语言设置里的path为相对路径
range :作用域,如果设置了作用域,那么翻译的时候必须使用tx函数来翻译。

\nb\I18n::load(__APP__.'lang/ko-kr');
//如果`__APP__.lang`为设置的默认目录,也可以这样
\nb\I18n::load('ko-kr');

//翻译
\nb\I18n::t('hello')

带作用域的加载

\nb\I18n::load(__APP__.'lang/ko-kr','kr');
//如果`__APP__.lang`为设置的默认目录,也可以这样
\nb\I18n::load('ko-kr','kr');

//翻译需要使用tx函数,第一个参数为加载时的range参数值
\nb\I18n::tx('kr','hello')
上一篇:响应输出
下一篇:重定向

相关评论

您需要登录后才可以发表评论