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 相关文章推荐
也谈截取首页新闻 - 范例
Oct 09 PHP
php 分页类 扩展代码
Jun 11 PHP
php短域名转换为实际域名函数
Jan 17 PHP
PHP语言中global和$GLOBALS[]的分析 之二
Feb 02 PHP
php中使用$_REQUEST需要注意的一个问题
May 02 PHP
使用php统计字符串中中英文字符的个数
Jun 23 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
Aug 23 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
PHP中include/require/include_once/require_once使用心得
Aug 28 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
PHP常用字符串函数小结(推荐)
Aug 05 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
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
js对数字的格式化使用说明
2011/01/12 Javascript
五个jQuery图片画廊插件 推荐
2011/05/12 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
js实现的tab标签切换效果代码分享
2015/08/25 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
微信小程序实现天气预报功能
2018/07/18 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python制作爬虫并将抓取结果保存到excel中
2016/04/06 Python
Python字符串格式化输出方法分析
2016/04/13 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
Django模板Templates使用方法详解
2019/07/19 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
电大自我鉴定范文
2013/10/01 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
成绩单评语
2015/01/04 职场文书
个人求职自荐信范文
2015/03/06 职场文书
linux目录管理方法介绍
2022/06/01 Servers
python计算列表元素与乘积详情
2022/08/05 Python