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 相关文章推荐
手把手教你使用DedeCms的采集的图文教程
Mar 11 PHP
php+mysql开源XNA 聚合程序发布 下载
Jul 13 PHP
PHP 输出简单动态WAP页面
Jun 09 PHP
php实现的仿阿里巴巴实现同类产品翻页
Dec 11 PHP
360通用php防护代码(使用操作详解)
Jun 18 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
Jun 06 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
Sep 03 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
Jun 12 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 PHP
php中pcntl_fork详解
Apr 01 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数字每三位加逗号的功能函数
2015/10/22 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
php提取微信账单的有效信息
2018/10/01 PHP
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
2012/12/11 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
详解Vue快速零配置的打包工具——parcel
2018/01/16 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
详解vue v-model
2020/08/31 Javascript
python实现爬虫下载美女图片
2015/07/14 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
Python3 处理JSON的实例详解
2017/10/29 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
匡威英国官网:Converse英国
2018/12/02 全球购物
物流仓储计划书
2014/01/10 职场文书
单位刻章介绍信范文
2014/01/11 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python