我想知道什么是正确的方法处理国际化的语句添加运行时数据.例如
1)您的输入“xyz”非常好!
2)当您从“Barney and Freinds”转为“海绵宝宝”时,您已经“4年”了.
1)您的输入“xyz”非常好!
2)当您从“Barney and Freinds”转为“海绵宝宝”时,您已经“4年”了.
双引号是在运行时获取或计算的用户数据.我的平台主要是Java / Android.西方语言的正确解决方案比较弱的普遍方法更为优先.
解决方法
Java的
要检索本地化的文本(消息),请使用java.util.ResourceBundle
API.要格式化消息,请使用java.text.MessageFormat
API.
基本上,首先创建一个properties file像这样:
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);
然后通过键获取消息,做:
String key1 = bundle.getString("key1"); String key2 = bundle.getString("key2");
然后格式化,做:
String formattedKey1 = MessageFormat.format(key1,"xyz"); String formattedKey2 = MessageFormat.format(key2,"4 years","Barney and Friends","Spongebob");
也可以看看:
Android的
关于Android,这个过程比较简单.您只需将所有这些String消息放在res / values / strings.xml文件中.然后,您可以使用不同的语言创建该文件的版本,并将该文件放在包含语言代码的值文件夹中.例如,如果要添加西班牙语支持,您只需要创建一个名为res / values-es /的文件夹,并将西班牙语版的strings.xml放在那里. Android将根据手机的配置自动决定使用哪个文件.
也可以看看: