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 foreach、while性能比较
Oct 15 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
php设计模式 Observer(观察者模式)
Jun 26 PHP
php入门学习知识点四 PHP正则表达式基本应用
Jul 14 PHP
PHP中JSON的应用技巧
Oct 10 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
Dec 31 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
May 04 PHP
php 实现301重定向跳转实例代码
Jul 18 PHP
YII2自动登录Cookie总是失效的解决方法
Jun 28 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
Nov 29 PHP
php扩展开发入门demo示例
Sep 23 PHP
在thinkphp5.0路径中实现去除index.php的方式
Oct 16 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
模拟flock实现文件锁定
2007/02/14 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
js静态方法与实例方法分析
2011/07/04 Javascript
javascript 使td内容不换行不撑开
2012/11/29 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
jQuery - css() 方法示例详解
2014/01/16 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
Node.js简单入门前传
2017/08/21 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
元素全屏的设置与监听实例
2017/11/28 Javascript
浅谈vue引入css,less遇到的坑和解决方法
2018/01/20 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
微信小程序左右滚动公告栏效果代码实例
2019/09/16 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
python爬虫爬取网页表格数据
2018/03/07 Python
python 字典操作提取key,value的方法
2019/06/26 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
Numpy 多维数据数组的实现
2020/06/18 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
迎元旦广播稿
2014/02/22 职场文书
原材料检验岗位职责
2014/03/15 职场文书
老龙头导游词
2015/02/11 职场文书
社区工作者个人总结
2015/02/28 职场文书
庆祝教师节主持词
2015/07/06 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript