做web服务器,为了实现全球业务,服务器端就要实现多语言。针对不同的国家、语言。返回不同语言的描述。
第一:JAVA对多语言是支持的
JAVA对语言的描述使用java.util.Locale,它主要包含语言、国家信息。
例如几个常量,
中国的简体中文:
Locale SIMPLIFIED_CHINESE = createConstant(“zh”, “CN”);
台湾的繁体
Locale TRADITIONAL_CHINESE = createConstant(“zh”, “TW”);
也可以只包含语言信息:
Locale CHINESE = createConstant(“zh”, “”);
以上几种语言,用字符串写就是zh_CN, zh_TW, zh(也有用中划线的)。
第二:语言资源文件
你可以在i18n目录(或者是com/zhaoyanblog/i18n, com/zhaoyanblog/i18n/resource, 这个是类路径)下为每一种语言创建一个资源文件。命名格式如下:
lang_zh_CN.properties
lang_zh_TW.properties
lang_zh.properties
再创建一个默认的语言对应的资源文件:
lang.properties
注:这里的文件名lang和路径都可以随便起。为什么路径要包含i18n,这个就是个习惯,随便你。i18n的意思就是国际化(internationalization, i和n之间有18个字符)。
资源文件里配置不同的配置
lang_zh_CN.properties里:
TITLE=我的苹果
lang_en.properties里:
TITLE=my apple
配置文件为了防止乱码,properties文件里3个字节以上表示的字符(例如中文)一般使用unicode配置。
TITLE=\u6211\u7684\u82f9\u679c
第三:读取配置文件的内容
JAVA加载语言资源文件使用java.util.ResourceBundle类。
ResourceBundle lang = ResourceBundle.getBundle(“com.zhaoyanblog.i18n.resource.lang”, Locale.SIMPLIFIED_CHINESE);
lang.getString(“TITLE”) 返回的就是我的苹果
第四:HTTP协议的多语言支持。
HTTP协议规定了一个header:Accept-Language支持多语言。多少客户端期望返回的语言类型。
格式如下:
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
q=0.8代表前面语言的比重。如果有中文就返回中文,没有中文就返回美式英文。再没有就返回中文。
第五:java web应用,获取客户端需要的语言。
servlet的HttpServletRequest参数对象里可以得到对Accept-Language的解析结果。
protected void service(HttpServletRequest req, HttpServletResponse resp)
{
Locale locale = req.getLocale();
}
除非注明,赵岩的博客文章均为原创,转载请以链接形式标明本文地址
本文地址:https://zhaoyanblog.com/archives/869.html
你看这个碗,它又大又圆,你看这个面,它又长又宽
java在内存里就是用Unicode编码字符串的,所以只要把字符串的每一个char转成16进制字符,就是Unicode编码。