返回介绍

48 多国语言示例

发布于 2025-02-21 12:35:57 字数 3558 浏览 0 评论 0 收藏 0

本例通过 Yii Framework 开发教程(11) UI 组件 ActiveForm 示例 添加中文支持简要说明一下多国语言支持。详细文档可可以参考 Yii 文档

信息翻译是通过调用 Yii::t() 实现的。此方法会将信息从 源语言 翻译为 目标语言

总体来说,要实现信息翻译,需要执行如下几步:

  1. 在合适的位置调用 Yii::t()
  2. 以 protected/messages/LocaleID/CategoryName.php 的格式创建 PHP 翻译文件。 每个文件简单的返回一个信息翻译数组。 注意,这是假设你使用默认的 CPhpMessageSource 存储翻译信息。
  3. 配置 CApplication::sourceLanguageCApplication::language

因此第一步为 pplication 添加合适的配置:

 
    <?php
 
    // This is the main Web application configuration. Any writable
    // CWebApplication properties can be configured here.
    return array(
    'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
    'sourceLanguage'=>'en',
    'language'=>'zh_cn',
    'name'=>'i18nDemo',
 
    ...
    // application components
    'components'=>array(
    'coreMessages'=>array(
            'basePath'=>'protected/messages',
            ),),
    );

源语言为 en,目录语言为中文(zh_cn) ,翻译信息的目录为 protected/messages.

然后再 protected/messages 创建 zh_cn 目录,如果还需要支持其它语言,可以创建相应的目录,然后在 zh_cn 创建一个 yii.php ,其中 yii 做为翻译时的分类名(你可以选择你自己喜欢的名字)。

检查代码中需要翻译的地方,然后在 yii.php 文件中定义对应的翻译:

 
    return array (
 
        'Application Name' => '应用程序名称',
        'Greetings from Santa'=>'来自圣诞老人的问候',
        'firstName'=>'名',
        'lastName'=>'姓',
        'Choose your Christmas Gift'=>'选择你喜欢的圣诞礼物',
        'iPad'=>'iPad',
        'Remote control helicopter'=>'遥控直升飞机',
        '60 inch 3D LED TV'=>'60 寸 3D LED 电视',
        'Holy Bible'=>'圣经',
        'Choose your Christmas dinner'=>'选择你圣诞节晚餐',
        'Egg'=>'鸡蛋',
        'Ham'=>'火腿',
        'Chicken'=>'鸡',
        'Pork'=>'猪肉',
        'Beer'=>'啤酒',
        'Coke'=>'可乐',
        'Wine'=>'白酒',
        'Submit'=>'提交',
        'Merry Christmas'=>'圣诞快乐',
        'On Christmas Day,You will be given'=>'圣诞节那天你将获得',
        'And you will have'=>'你可以有',
        'for Christmas dinner'=>'作为圣诞晚餐',
        'Start Again'=>'重新选择'
    );
    1
 
    然后将原先使用英文字元串的地方换成 yii::t('yii',xxx);比如 DataModel.php
    1
    public function getGifts()
    {
        return array(
            '1'=>Yii::t('yii','iPad'),
            '2'=>Yii::t('yii','Remote control helicopter'),
            '3'=>Yii::t('yii','60 inch 3D LED TV'),
            '4'=>Yii::t('yii','Holy Bible'),
            );
    }
 
    public function getMeals()
    {
        return array(
            '1'=>Yii::t('yii','Egg'),
            '2'=>Yii::t('yii','Ham'),
            '3'=>Yii::t('yii','Chicken'),
            '4'=>Yii::t('yii','Pork'),
            '5'=>Yii::t('yii','Beer'),
            '6'=>Yii::t('yii','Coke'),
            '7'=>Yii::t('yii','Wine'),
        );
    }

picture48.1

图片 48.1 picture48.1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文