当前位置:首页 > CMS教程 > 其它CMS > 列表

Yii2语言国际化的配置教程

发布:smiling 来源: PHP粉丝网  添加日期:2021-10-25 15:03:24 浏览: 评论:0 

这篇文章主要给大家介绍了关于Yii2语言国际化的配置教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

前言

最近想将博客做成支持多语言的,还好Yii2支持这个功能,于是查看了下官方的文档,哎,看了半天不知道干嘛用的,于是各种百度,Google的搜索,最终才明白原来很简单,只是官方写的太复杂

下面介绍下具体的使用步骤,具体介绍我就不写了,官方写比我清楚,我就写怎么使用

第一步 创建i18n配置文件

./yii message/config @app/config/i18.php // yii 在项目目录下 Yii2创建的时候自动生成的,执行完命令之后会在项目根目录config下创建一个i18n.php文件

为什么要创建这个文件,因为我们为了多语言处理,需要生成一个对应的映射文件,只要生成就好了,稍后的配置程序会自动调用处理

第二步 修改配置规则

打开config/i18n.php,看下生成的配置文件的代码,如下:

  1. return [ 
  2.  'color' => null, 
  3.  'interactive' => true, 
  4.  'help' => null, 
  5.  'sourcePath' => '@yii'
  6.  'messagePath' => '@yii/messages'
  7.  'languages' => [], 
  8.  'translator' => 'Yii::t'
  9.  'sort' => false, 
  10.  'overwrite' => true, 
  11.  'removeUnused' => false, 
  12.  'markUnused' => true, 
  13.  'except' => [ 
  14.   '.svn'
  15.   '.git'
  16.   '.gitignore'
  17.   '.gitkeep'
  18.   '.hgignore'
  19.   '.hgkeep'
  20.   '/messages'
  21.   '/BaseYii.php'
  22.  ], 
  23.  'only' => [ 
  24.   '*.php'
  25.  ], 
  26.  'format' => 'php'
  27.  'db' => 'db'
  28.  'sourceMessageTable' => '{{%source_message}}'
  29.  'messageTable' => '{{%message}}'
  30.  'catalog' => 'messages'
  31.  'ignoreCategories' => [], 
  32.  'phpFileHeader' => ''
  33.  'phpDocBlock' => null, 
  34. ]; 

修改后的代码,如下:

  1. return [ 
  2.  'color' => null, 
  3.  'interactive' => true, 
  4.  'help' => null, 
  5.  'sourcePath' => '@app'
  6.  'messagePath' => '@app/messages'
  7.  'languages' => ['zh-CN''ru-RU'], 
  8.  'translator' => 'Yii::t'
  9.  'sort' => false, 
  10.  'overwrite' => true, 
  11.  'removeUnused' => false, 
  12.  'markUnused' => true, 
  13.  'except' => [ 
  14.   '.svn'
  15.   '.git'
  16.   '.gitignore'
  17.   '.gitkeep'
  18.   '.hgignore'
  19.   '.hgkeep'
  20.   '/messages'
  21.   '/BaseYii.php'
  22.   'vendor'
  23.  ], 
  24.  'only' => [ 
  25.   '*.php'
  26.  ], 
  27.  'format' => 'php'
  28.  'db' => 'db'
  29.  'sourceMessageTable' => '{{%source_message}}'
  30.  'messageTable' => '{{%message}}'
  31.  'catalog' => 'messages'
  32.  'ignoreCategories' => [], 
  33.  'phpFileHeader' => ''
  34.  'phpDocBlock' => null, 
  35. ]; 

我这里只改了两个地方

'sourcePath' => '@app', // 将@yii改为@app 只处理我们自己应用中的代码

'messagePath' => '@app/messages', // 将@yii/messages改为@app/messages 将需要翻译的字段提取出来要放的目录

'languages' => ['zh-CN', 'ru-RU'], // 要翻译成目标的语言,我这里定义了一个"中文"和"俄语",和:

  1. 'except' => [ 
  2.  '.svn'
  3.  '.git'
  4.  '.gitignore'
  5.  '.gitkeep'
  6.  '.hgignore'
  7.  '.hgkeep'
  8.  '/messages'
  9.  '/BaseYii.php'
  10.  'vendor'// 将vendor目录下的过滤掉,不然可能太多了 
  11. ], 

第三步 生成翻译配置文件

执行下面的命令

./yii message/extract @app/config/i18n.php

执行完之后会在messages目录下(如果没有messages目录的话需要手动创建下)得到如下的目录结构:

  1. ├── ru-RU 
  2. │   └── app.php 
  3. └── zh-CN 
  4.     └── app.php 

提示下再做这个操作之前,需要在自己的项目中有类似Yii:t()的调用,比如我这里在components/HeaderWidget.php这个文件中

Yii::t('app', 'Home')

这里的app的作用是用来进行文件分类的,我这里暂时没有计划生成的时候会将所有需要翻译的字段放在app开头命名的php文件app.php文件中,如果像下面这样调用的话

Yii::t('appp', 'Home')

会生成一个appp.php的文件

第四步 翻译配置文件

看下中文的翻译文件messages/zh-CN/app.php,我的是下面这个

  1. return [ 
  2.  'Archive' => ''
  3.  'Autokid' => ''
  4.  'Blog' => ''
  5.  'Ctime' => ''
  6.  'IP地址' => ''
  7.  'UserAgent' => ''
  8.  '主题' => ''
  9.  '内容' => ''
  10.  '姓名' => ''
  11.  '日期' => ''
  12.  '邮箱地址' => ''
  13.  '页面路径' => ''
  14.  'Home' => '首页'// 右边的键值对应 Yii::t('app', 'Home')中的Home,只需要在value中写入需要的汉字就可以了。 
  15. ]; 

第五步 修改目标国际化语言

修改配置文件

'language' => 'zh-CN', // 指定为要翻译的语言

再打开网页,就可以看到已经翻译成了对应需要的语言,当然这样的配置很不灵活,如果是部署多态机器并通过域名或者其他方式来实现的话,也是可以的,这里的话我建议如下方式

创建自己的Controller,然后将语言配置放在Session中,通过获取Session中的语言来更换全站的语言。具体见后面分享

提示,网站很多地方提到要加个配置,官方也是

  1. 'i18n' => [ 
  2.  'translations' => [ 
  3.   'app*' => [ 
  4.    'class' => 'yii\i18n\PhpMessageSource'
  5.    'basePath' => '@app/messages'
  6.    'sourceLanguage' => 'en-US'
  7.    'fileMap' => [ 
  8.     'app' => 'app.php'
  9.    ], 
  10.   ], 
  11.  ], 
  12. ], 

我这边在配置的时候没有加,运行也都是正常的,如有遇到问题,可以一起沟通交流下。

Tags: Yii2语言国际化 Yii2配置教程

分享到: