没有不值得去解决的问题,也没有不值得去学习的技术!

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

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

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,则
打印出”用户手机”

PHP / Laravel / Yii2 老项目维护与长期技术支持

如果你的 PHP / Laravel / Yii2 项目已经上线,但遇到原开发离职、Bug 长期无人修复、接口不稳定、性能下降、代码难以接手等问题,可以联系我做一次远程技术排查。

适合以下情况:
✅ 老旧 PHP 系统无人维护
✅ Laravel / Yii2 项目 Bug 修复
✅ 后台管理系统小功能迭代
✅ RESTful API 接口排查
✅ MySQL / Redis / Nginx 性能问题
✅ 长期远程兼职维护

可先从一次小问题开始:
✅ 线上报错排查
✅ 接口异常分析
✅ 慢查询与性能瓶颈定位
✅ 代码结构初步评估
✅ 部署环境与日志检查

如需咨询,请联系我,并注明:PHP 维护咨询

联系方式:
Telegram:@shuijingwan
微信:13980074657
邮箱:shuijingwanwq@gmail.com

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理