YII Framework框架教程之国际化实现方法


Posted in PHP onMarch 14, 2016

本文讲述了YII Framework框架教程之国际化实现方法。分享给大家供大家参考,具体如下:

一个web应用,发布到互联网,就是面向全球用户。用户在世界的各个角落都可以访问到你的web应用,当然要看你的网站和不和谐,不和谐的web应用在和谐社会是不让你访问的。

YII提供了国际化的支持,可以让我们创建的应用适合不同语言的人群。

国际化是一个很花哨的东西,没有哪个大型的网站真正能做到国际化。大多都是针对不懂的语言,不同地区设计不同的网站。如果你的应用相对较小,处理的东西不多,那么国际化起来的东西还是蛮可以的。

国际化从以下几个方面入手:

区域设置

信息文本和文件资源的翻译

日期/时间、货币符号和数字格式

YII中国际化涉及到的类在/yii_dev/yii/framework/i18n目录下面:

/yii_dev/yii/framework/i18n# tree
.
├── CChoiceFormat.php
├── CDateFormatter.php
├── CDbMessageSource.php
├── CGettextMessageSource.php
├── CLocale.php
├── CMessageSource.php
├── CNumberFormatter.php
├── CPhpMessageSource.php
├── data
│   ├── en_us.php
│   ├── ....................
│   ├── zh_hk.php
│   ├── zh_mo.php
│   ├── zh.php
│   ├── zh_sg.php
│   ├── zh_tw.php
│   ├── zu.php
│   └── zu_za.php
└── gettext
    ├── CGettextFile.php
    ├── CGettextMoFile.php
    └── CGettextPoFile.php

2 directories, 616 files

区域设置

通过对区域的设置,来判断用户所在的国际和使用的语言。

YII定义了常见的区域标识,可以认为是表示区域的唯一ID。

YII中通过CLocale类存放区域数据(包括货币,日期,数字格式等等)。

通过一个区域唯一ID,然后就可以通过 CLocale::getInstance($localeID) 或者CApplication::getLocale($localeID) 获取相应的 CLocale 实例。通过CLocale实例,就能够判断用户所在的国家,使用的语言。然后可以根据CLocale的数据进行相应的翻译,让web应用更适于当前用户使用和阅读。最根本的就是为了用户进行特定的翻译。

信息文本和文件资源的翻译

翻译很简单就是把一种语言变成另一种语言。在计算机中用的是26字母,就是e文。所以可以把e文当成是原始语言,万语之源,所有其他的语言都是通过e文翻译而成的,暂且e文叫做源语言。翻译成的语言叫做目标语言。

具体的类说明

/**
* Translates a message to the specified language.
* Starting from version 1.0.2, this method supports choice format (see {@link CChoiceFormat}),
* i.e., the message returned will be chosen from a few candidates according to the given
* number value. This feature is mainly used to solve plural format issue in case
* a message has different plural forms in some languages.
* @param string $category message category. Please use only word letters. Note, category 'yii' is
* reserved for Yii framework core code use. See {@link CPhpMessageSource} for
* more interpretation about message category.
* @param string $message the original message
* @param array $params parameters to be applied to the message using <code>strtr</code>.
* Starting from version 1.0.2, the first parameter can be a number without key.
* And in this case, the method will call {@link CChoiceFormat::format} to choose
* an appropriate message translation.
* Starting from version 1.1.6 you can pass parameter for {@link CChoiceFormat::format}
* or plural forms format without wrapping it with array.
* @param string $source which message source application component to use.
* Defaults to null, meaning using 'coreMessages' for messages belonging to
* the 'yii' category and using 'messages' for the rest messages.
* @param string $language the target language. If null (default), the {@link CApplication::getLanguage application language} will be used.
* This parameter has been available since version 1.0.3.
* @return string the translated message
* @see CMessageSource
*/
public static function t($category,$message,$params=array(),$source=null,$language=null)
{

$category源语言
$mesage目标语言
$params是$mesage中要匹配翻译的数组。

具体使用方法如:

Yii::t('app', 'Path alias "{alias}" is redefined.',
  array('{alias}'=>$alias))

当然可以通过yiic提供的命令行命令message进行翻译,具体的参考yiic命令的使用说明

日期/时间、金钱和数字格式

日期/时间处理CDateFormatter类
具体参考(/yii_dev/yii/framework/i18n/CDateFormatter.php)类文件

数字处理
具体参考(/yii_dev/yii/framework/i18n/CNumberFormatter.php)类文件

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 基于文件头的文件类型验证类函数
May 01 PHP
解析htaccess伪静态的规则
Jun 18 PHP
php调用google接口生成二维码示例
Apr 28 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
PHP 验证登陆类分享
Mar 13 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
Oct 16 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
Aug 29 PHP
ThinkPHP简单使用memcache缓存的方法
Nov 15 PHP
php中的抽象方法和抽象类
Feb 14 PHP
PHP使用第三方即时获取物流动态实例详解
Apr 27 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
Dec 03 PHP
YII Framework框架教程之缓存用法详解
Mar 14 #PHP
YII Framework框架教程之安全方案详解
Mar 14 #PHP
YII Framework框架教程之日志用法详解
Mar 14 #PHP
YII Framework教程之异常处理详解
Mar 14 #PHP
Zend Framework教程之Application用法实例详解
Mar 14 #PHP
Zend Framework自定义Helper类相关注意事项总结
Mar 14 #PHP
Zend Framework教程之Bootstrap类用法概述
Mar 14 #PHP
You might like
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
PHP strtotime函数详解
2009/12/18 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
javascript 实现 原路返回
2015/01/21 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
2016/11/07 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
jQuery查找dom的几种方法效率详解
2017/05/17 jQuery
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
webpack之引入图片的实现及问题
2018/10/08 Javascript
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
详解Python中的相对导入和绝对导入
2017/01/06 Python
python构建深度神经网络(DNN)
2018/03/10 Python
python实现点对点聊天程序
2018/07/28 Python
Python实现直播推流效果
2019/11/26 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
意大利男装网店:Vrients
2019/05/02 全球购物
求职简历自荐信
2013/10/20 职场文书
欢度春节标语
2014/07/01 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
详细聊聊vue中组件的props属性
2021/11/02 Vue.js
Vue监视数据的原理详解
2022/02/24 Vue.js