Java我如何将ResourceBundle用于i18n?
就本地区域的消息格式而言,为不同区域的用户创建应用程序可能很困难。Java提供了ResourceBundle有助于国际化我们的应用程序的类。
要为i18n创建资源(第一个i和最后一个n之间有18个字母),我们需要为应用程序支持的每个语言环境创建一个文件。文件名必须以结尾language_COUNTRY.properties。例如,Locale.UK的资源包将为MessagesBundle_en_GB.properties。
加载捆绑包后,我们可以用来bundle.getString(key)从资源捆绑包文件中读取特定消息。
package org.nhooo.example.util; import java.util.Locale; import java.util.ResourceBundle; public class InternationalizationDemo { public static void main(String[] args) { //加载Locale.UK语言环境的资源包。资源 //捆绑软件将加载MessagesBundle_en_GB.properties文件。 ResourceBundle bundle = ResourceBundle.getBundle("MessagesBundle", Locale.UK); System.out.println("Message in " + Locale.UK + ": " + bundle.getString("greeting")); //将默认语言环境更改为印度尼西亚语并获取默认语言环境 //当前语言环境的资源包。 Locale.setDefault(new Locale("in", "ID")); bundle = ResourceBundle.getBundle("MessagesBundle"); System.out.println("Message in " + Locale.getDefault() + ": " + bundle.getString("greeting")); } }
下面是资源束文件的一些示例,这些文件应位于我们的应用程序类路径中,以使ResourceBundle类能够读取它。
MessagesBundle_en_GB.properties
greeting=Hello, how are you?
MessagesBundle_in_ID.properties
greeting=Halo, apa kabar?