国际化
- 国际化(i18n): i18n internationalization,网站能够提供翻译成访问者的语言或国籍的不同版本的内容
- 本地化(l10n): localization,向网站添加资源,使其适应特定的地理或文化区域,例如将网站翻译为中文
- 区域设置:通常为语言符号后跟一个由下划线分隔的国家符号。例如”en_US”
获取区域
1 2
| Locale locale = request.getLocale();
|
获取区域设置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| public String getCountry() { return baseLocale.getRegion(); }
public final String getDisplayCountry() { return getDisplayCountry(getDefault(Category.DISPLAY)); }
public String getLanguage() { return baseLocale.getLanguage(); }
public final String getDisplayLanguage() { return getDisplayLanguage(getDefault(Category.DISPLAY)); }
public String getISO3Country() throws MissingResourceException { String country3 = getISO3Code(baseLocale.getRegion(), LocaleISOData.isoCountryTable); if (country3 == null) { throw new MissingResourceException("Couldn't find 3-letter country code for " + baseLocale.getRegion(), "FormatData_" + toString(), "ShortCountry"); } return country3; }
public String getISO3Language() throws MissingResourceException { String lang = baseLocale.getLanguage(); if (lang.length() == 3) { return lang; }
String language3 = getISO3Code(lang, LocaleISOData.isoLanguageTable); if (language3 == null) { throw new MissingResourceException("Couldn't find 3-letter language code for " + lang, "FormatData_" + toString(), "ShortLanguage"); } return language3; }
|
时间国际化
时间格式化 DateFormat
货币国际化
数字、货币格式化 NumberFormat
字符串国际化
字符串格式化 MessageFormat
1 2 3 4 5
| String str = "Date: {0},Salary: {1}"; Locale locale = Locale.CHINA; Date date = new Date(); double sa1 = 12345.12; MessageFormat.format(str,date,sa1);
|
国际化配置
native2ascii命令在jdk下 可以查看ascii码
1 2
| Locale locale = Locale.CHINA; ResourceBundle bundle = ResourceBundle.getBundle("i18n",locale);
|
在配置文件中i18n.properties i18n_en_US.properties i18n_zh_CN.properties
根据locale来找不同的配置文件