在Yii 2.0 中实现属性标签的国际化支持

1、因为是生成一些公有的模型至common目录中,且配置了多个数据库连接组件,因此针对kcucDb的模型皆以Kcuc为前缀,以防止命名冲突(不然,不推荐模型名加上相应表前缀),如图1:

针对kcucDb的模型皆以Kcuc为前缀,以防止命名冲突

针对kcucDb的模型皆以Kcuc为前缀,以防止命名冲突

2、Use Table Prefix:使用表前缀要勾选;Generate Labels from DB Comments:基于DB注释生成标签不勾选(因为后期要进行人工翻译处理);Enable I18N:启用国际化要勾选;Message Category:信息分类设置为commonAttributeLabels/kcucMembers,这是启用国际化的情况下被Yii::t()所使用的类别,以用于当前模型类下的属性标签,生成后如图2:

Generate Labels from DB Comments:基于DB注释生成标签不勾选(因为后期要进行人工翻译处理)

Generate Labels from DB Comments:基于DB注释生成标签不勾选(因为后期要进行人工翻译处理)

3、在应用程序中按下面的代码来配置消息翻译,如图3:

模式 commonAttributeLabels* 表示所有以 commonAttributeLabels 开头的消息类别名称都使用这个翻译的消息来源。

模式 attributeLabels* 表示所有以 attributeLabels 开头的消息类别名称都使用这个翻译的消息来源。其根路径为当前应用。

模式 * 表示指定默认翻译。其根路径为当前应用。

在应用程序中按下面的代码来配置消息翻译

在应用程序中按下面的代码来配置消息翻译

4、新建/common/messages/zh-CN/commonAttributeLabels/kcucMembers.php、/common/messages/zh-CN/not_specified_category.php,如图4:

新建/common/messages/zh-CN/commonAttributeLabels/kcucMembers.php、/common/messages/zh-CN/not_specified_category.php

新建/common/messages/zh-CN/commonAttributeLabels/kcucMembers.php、/common/messages/zh-CN/not_specified_category.php

5、编辑/common/messages/zh-CN/commonAttributeLabels/kcucMembers.php,如图5:

编辑消息翻译文件

编辑消息翻译文件

6、小技巧:zh-CN下可先勾选Generate Labels from DB Comments,Preview时复制模型类下的public function attributeLabels(),再编辑,如图6;

小技巧:zh-CN下可先勾选Generate Labels from DB Comments,Preview时复制模型类下的public function attributeLabels(),再编辑

小技巧:zh-CN下可先勾选Generate Labels from DB Comments,Preview时复制模型类下的public function attributeLabels(),再编辑

7、测试,
$model = new /common/models/KcucMembers;

// 显示为 “Mobile”
echo $model->getAttributeLabel(‘mobile’);

默认的 [[yii/base/Application::$sourceLanguage|源语言]] 值是 en-US,即美国英语,保持不变,如果[[yii/base/Application::$language|目标语言]]未设置,或者设置为en-US,则
打印出”Mobile”,如图7:

如果[[yii/base/Application::$language|目标语言]]未设置,或者设置为en-US,则 打印出"Mobile"

如果[[yii/base/Application::$language|目标语言]]未设置,或者设置为en-US,则
打印出”Mobile”

8、默认的 [[yii/base/Application::$sourceLanguage|源语言]] 值是 en-US,即美国英语,保持不变,如果[[yii/base/Application::$language|目标语言]]设置为zh-CN,则
打印出”用户手机”,如图8:

如果[[yii/base/Application::$language|目标语言]]设置为zh-CN,则 打印出"用户手机"

如果[[yii/base/Application::$language|目标语言]]设置为zh-CN,则
打印出”用户手机”

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/webdev/180307.html

(0)
上一篇 2021年10月31日 06:23
下一篇 2021年10月31日 06:23

相关推荐

发表回复

登录后才能评论