你如何处理国际化"你的输入'xyz'非常棒!"

dip*_*ipu 9 java android internationalization

我想知道在添加运行时数据的语句中处理国际化的正确方法是什么.例如1)您的输入"xyz"非常好!2)当你从"Barney and Freinds"转到"海绵宝宝"节目时,你已经"4岁了".

双引号值是在运行时获得或计算的用户数据.我的平台主要是Java/Android.西方语言的正确解决方案优于较弱的通用语言.

Bal*_*usC 12

Java的

要检索本地化文本(消息),请使用java.util.ResourceBundleAPI.要格式化消息,请使用java.text.MessageFormatAPI.

基本上,首先创建一个属性文件,如下所示:

key1 = Your input {0} is excellent!
key2 = You were {0} old when you switched from {1} to {2} shows.

{n}你可以传入的东西是参数的占位符MessageFormat#format().

然后像这样加载它:

ResourceBundle bundle = ResourceBundle.getBundle("filename", Locale.ENGLISH);
Run Code Online (Sandbox Code Playgroud)

然后按键获取消息,执行:

String key1 = bundle.getString("key1");
String key2 = bundle.getString("key2");
Run Code Online (Sandbox Code Playgroud)

然后格式化它,执行:

String formattedKey1 = MessageFormat.format(key1, "xyz");
String formattedKey2 = MessageFormat.format(key2, "4 years", "Barney and Friends", "Spongebob");
Run Code Online (Sandbox Code Playgroud)

也可以看看:


Android的

关于Android,这个过程更容易.您只需将所有这些String消息放入res/values/strings.xml文件中即可.然后,您可以使用不同语言创建该文件的版本,并将该文件放在values包含语言代码的文件夹中.例如,如果您想添加西班牙语支持,您只需创建一个名为的文件夹res/values-es/,并将您的西班牙语版本放入strings.xml其中.Android将自动决定使用哪个文件,具体取决于手机的配置.

也可以看看:

  • 建议在android上执行此操作的方法是执行BalusC建议的操作并将字符串放入res/values-xx/strings.xml文件中.但是,您可以使用带有格式字符串的Context.getString()版本,而不是使用{0}.(请参阅http://d.android.com/reference/android/content/Context.html)它采用标准的Java Formatter样式字符串.所以你的价值看起来像"你的输入'%1 $ s'非常好" (2认同)