1、国际化【I18N】:对一个只为某个地区设计的程序进行重构,使其能够在更多地区使用的过程;
本地化【L10N】:在一个面向国际化的程序中增加对一个新地区应用支持的过程
2、地区是一组描述世界上某一特定区域文本格式和语言习惯的设置集合,分以下类别:
LC_COLLATE:设置控制文本的顺序(在字母顺序中,哪个字母在前,哪个在后)
LC_CTYPE:设置控制大小写字母之间的转换,也包括哪个字符属于哪个字符类
LC_MONETARY:描述货币信息的首选格式,如哪个字符表示小数点和如何标识负数
LC_NUMERIC:描述数字信息的首选格式,如对数字分组和用哪个字符作为千分位分隔符
LC_TIME:描述时间和日期信息的首选格式,如月、日的名称以及24小时制还是12小时制
LC_MESSAGES:在需要以多种语言显示信息时,此类别包含程序要使用的文本消息
LC_ALL:包含所有类别
地区名通常由三部分构成:1)语言的缩写;2)在一个下划线后,是一个可选的国家英文缩写,区分讲统一语言的不同国家;3)在一个句点后,是一个可选的字符集说明符。
实例:zh_TW.Big5
3、setlocale():设置特定的地区
setlocale(LC_ALL, 'es_US'); -- 基本设置
setlocale(LC_ALL, null);或 setlocale(LC_ALL, ‘’); -- 使用系统的环境变量中值设置地区
setlocale(LC_ALL, 0); -- 不设置地区,只返回当前环境配置
补充:很多系统支持使用常见地区的别名,一般放在/usr/share/locale/locale.alias文件中。格式:别名 地区和字符集。这样就使用别名来设置地区了,更加方便。
在多线程中,setlocale会使其他正在运行的脚本也会立即应用这个修改。因此,如果需要使用setlocale,最好考虑使用单线程的服务器设置。
4、strftime():本地化日期和时间,根据本地化的设置格式化日期和时间。
5、money_format():本地化货币值
6、设置输出数据的字符编码,有两种方式:
1)在配置文件中配置指令
default_mimetype = "text/html"
default_charset = "utf-8"
2)在代码中写(做到百分百保证编码的正确性)
header('Content-Type:text/html;charset=utf-8');
7、操作UTF-8编码的文本
mb_internal_encoding($encoding) — 设置/获取内部字符编码
mb_strlen($str,$encoding) — 获取字符串的长度
iconv_set_encoding($type,$encoding)
iconv_strlen($str,$encoding)
上面的编码设置同样可以在php配置文件中配置环境变量,效果是一样的。