Yii2多语言
Posted WilburXu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yii2多语言相关的知识,希望对你有一定的参考价值。
背景: 如果项目有要求需要用到多语言的话,那么就需要引入语言包了。
要添加语言包,需要现在config/main.php配置:
\'i18n\' => [ \'translations\' => [ \'lang*\' => [ \'class\' => \'yii\\i18n\\PhpMessageSource\', ] ], ],
上面的 lang*表示可以加载lang+任意合法文件名的文件如:
接下来是lang.php的内容:
return [ \'title\' => \'\', \'ws_id\' => \'工号\', \'phone\' => \'手机\', \'next\' => \'下一步\', \'cancel\' => \'取消\', ];
调用方式如下:
$this->title = Yii::t(\'lang_home\', \'Title\');
另外,有时候会遇到一些比较特殊需要转化的字符串如 常量+变量+常量 (这边文章在2017年发表了) 2017就是变量,像这种要怎么做呢?
我们先来看一下 Yii2 自带的函数 t
public static function t($category, $message, $params = [], $language = null) { if (static::$app !== null) { return static::$app->getI18n()->translate($category, $message, $params, $language ?: static::$app->language); } $placeholders = []; foreach ((array) $params as $name => $value) { $placeholders[\'{\' . $name . \'}\'] = $value; } return ($placeholders === []) ? $message : strtr($message, $placeholders); }
上面第三个参数是对参数的解析,什么参数呢?我们来看看下面的例子:
\'password {passwdMinLength}\' => \'密码长度必须大于或等于{passwdMinLength}\',
那么可以这么解析:
$this->title = Yii::t(\'文件名\', password\',[\'passwdMinLength\' => 5]);
那么结果就是:密码长度必须大于或等于5
以上是关于Yii2多语言的主要内容,如果未能解决你的问题,请参考以下文章