码迷,mamicode.com
首页 > 编程语言 > 详细

Yii2多语言

时间:2017-03-13 20:16:00      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:解析   参数   大于   cti   foreach   tran   style   .com   内容   

背景: 如果项目有要求需要用到多语言的话,那么就需要引入语言包了。

要添加语言包,需要现在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多语言

标签:解析   参数   大于   cti   foreach   tran   style   .com   内容   

原文地址:http://www.cnblogs.com/bluebirds/p/6544717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!