PHP Cookbook读书笔记 – 第19章国际化和本地化
2011-11-19 15:53
260 查看
概述
所谓国际化[通常写为I18N],是指对一个只为某个地区设计的程序进行重构,使其能够在更多的地区使用的过程。而所谓的本地化[通常写为L10N],则是指在一个面向国际化的程序中增加对一个新地区应用支持的过程。
作为开发本地应用的开发者来说,这一章节的内容似乎离我们很远,其实不然。就说wordpress,我们很多都是用的国外主机,这时,主机的时区设置和使用者是不一致的,最可能碰到的问题是当你在发博文时,显示的时间是服务器设置的时间而非你本地的时间。这时就需要本地化设置了,通过设置时区来调整时间的显示。
设置时区并没那么容易
现在大多数系统都有地区系统,虽然地区系统有助于解决许多本地化的问题,但由于标准化程度不够,所以使用不便之处经常让人沮丧。不仅不同的系统支持的地区会有所不同,甚至对于相同地区都会有不同的名称。指定地区
在PHP中可以通过setlocale函数来设定地区信息,该函数只在运行期间有效(即不会影响到服务器上其他WEB程序)$messages = array ('en_US' => array( 'My favorite foods are' => 'My favorite foods are', 'french fries' => 'french fries', 'candy' => 'candy', 'potato chips' => 'potato chips', 'eggplant' => 'eggplant' ), 'en_UK' => array( 'My favorite foods are' => 'My favourite foods are', 'french fries' => 'chips', 'candy' => 'sweets', 'potato chips' => 'crisps', 'eggplant' => 'aubergine' ) ); function msg($s) { global $LANG, $messages; if (isset($messages[$LANG][$s])) { return $messages[$LANG][$s]; } else { error_log("l10n error: LANG: $lang, message: '$s'"); } } $LANG = 'en_UK'; print msg('My favorite foods are').":\n"; print msg('french fries')."\n"; print msg('potato chips')."\n"; print msg('candy')."\n";
本地化时间
这部分内容很多程序的时间格式显示都是在模板中进行设定的,书中介绍的是strftime来格式化时间本地化货币值
通过money_format()实现的,意义不大,因为这个不涉及到货币的兑换汇率。实际开发中可能需要通过重写__tostring()方法实现。通过localeconv()可以返回与货币相关的信息
本地化图片和文件
将含有文字的图片或不同语言版本的文件按语言/时区命名的文件夹来区分,例如images/$Lang/logo.jpg
设置字符编码
通过header可以设施输出数据的编码header('Content-Type: text/html;charset=utf-8');
在<form>标签中加入accept-charset="utf-8"可以设置输入数据时的编码
相关文章推荐
- php经典实例-笔记5-国际化和本地化
- php5与mysql5 web 开发技术详解-8 php国际化与本地化
- ASP.NET2.0国际化/本地化应用程序的实现总结(多语言,多文化页面的实现)
- iOS 本地化 国际化 相关的工具,命令,和可能遇到的问题
- iOS程序名称及内容国际化(本地化)
- iOS 国际化 本地化步骤 Localizations
- QT 国际化和本地化,附上实际案例以及一些使用心得和注意点
- 前端PHP入门-022-重点日期函数之获取本地化时间戳函数.md
- Spring MVC+Freemarker+Javascript的多语言(国际化i18n/本地化)和主题(Theme)实现
- iOS: 设置App的国际化和本地化
- php程序的国际化
- Cakephp本地化和国际化详解
- 3分钟实现iOS语言本地化/国际化(图文详解)
- 利用 gettext 来实现 PHP 的国际化编程
- 3分钟实现iOS语言本地化/国际化(图文详解)
- PHP Cookbook读书笔记 – 第18章安全和加密
- Flex分享: ResouceManager应用于本地化与国际化开发
- PHP 6将全面支持Unicode和国际化
- Linux 国际化本地化和中文化
- android的国际化及本地化