zoukankan      html  css  js  c++  java
  • Yii2多语言

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

    要添加语言包,需要现在config/main.php配置:

    'i18n' => [
                'translations' => [
                    'lang*' => [
                        'class' => 'yiii18nPhpMessageSource',
                    ]
                ],
            ],

    上面的 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

  • 相关阅读:
    C# 中的委托和事件
    SQLserver2000与2005同时安装的问题
    又到毕业时
    WCF服务发布和调用IIS服务
    进销存取项目总结
    URL
    undefined reference to `android::Mutex::lock()'
    关于 ffmpeg ‘UINT64_C’ was not declared in this scope 的错误
    Ti 的 OMX_Core
    linux Perforce 使用
  • 原文地址:https://www.cnblogs.com/wilburxu/p/6544717.html
Copyright © 2011-2022 走看看