本地化有两个概念:
国外网站要进中国,所以需要进行本地化的处理,比如调整版式,翻译内容等等
一个网站是实现国际化(I18N),需要接受世界上各个国家的用户,那么我们可以选择世界通用的语言---英语,也可以给每个语种做一个不同的翻译,后者也可以视为本地化
利用I-F中的ILocale可以实现根据不同的国家或语种可以调用不同的配置和语言。要实现本地化可以有以下几个步骤
ILocale提供了四种方式来获取用户端支持的语言,以便调取相应的配置:
直接构造,这也是最简单的办法:
$locale = new ILocale("zh_CN");
从URL获取。对于根据URL来区分语言的网站来说,可以使用
$locale = ILocale::fromUrl("lang");//对于 /a/b/c?lang=zh_CN
返回一个本地化对象,稍后讲述它的应用。
从cookie中获取。对于将用户选择的语言存放到cookie中去的网站,可以使用
$locale = ILocale::fromCookie("lang");//假设别的地方已经设置了lang这个cookie
同样返回一个本地化对象,fromCookie不传任何参数时,默认值为 if_locale
从浏览器信息获取。根据浏览器的HTTP_ACCEPT_LANGUAGE参数,自动判断用户的语言
$locale = ILocale::fromBrowser();
同样返回一个本地化对象。这时的fromBrowser可以传入一个默认的值,当无法判断浏览器语言时,使用此值返回。
可以在 config/locale 目录下对不同的语言进行配置,比如对于zh_CN,可以新建目录 zh_CN,并新建文件config.php,message.php,当前的目录结构变为
/config
/locale
/zh_CN
/config.php
/message.php
其中 config.php内容为关于此语言的特殊配置,它 的格式为:
<?php
$config["headers"] = array(
"content-type" => "text/html;charset=gb2312"
);
$config["base"] = "http://a/b/c/zh";
?>
message.php内容为关于此语言的消息,定义了UI显示的文字等,它的格式为:
<?php
$message["button"] = "按钮";
$message["search"] = "搜索";
$message["password_invalid"] = "密码不合法";
?>
同样地,可以对en_US或hk等等进行同样的配置。