我已经很清楚使用string.xml代码制作Android多语言应用程序是多么容易。这部分很简单。
问题是我的应用程序中有很多动态文本是用我的Java代码编写的。这是我无法找到如何制作多语言的部分。我想象一个解决方案的方式是在某种条件下我会验证它所使用的语言,并更改字符串。例如:
if(language.equals(English))
textView1.setText("Hi! This is in English!");
if(language.equals(Portuguese))
textView1.setText("Oi! Isso é em Português!");
我可以做这样的事情吗?如果是这样,我该怎么做?
谢谢!
答案 0 :(得分:5)
将这些字符串解压缩到strings.xml
文件中,它将根据语言从正确的文件中选择值。 没有有理由在您的java中使用硬编码字符串。
String hello = getResources().getString(R.string.hello);
如果可用,将使用正确的语言,因为在运行时,Android系统根据当前为用户设备设置的语言环境使用适当的字符串资源集。
例如,如果您的res/values-ru/strings.xml
包含res/values/strings.xml
并且该设备是俄语设备,则会从第一个设备获取该值(如果可用)。
答案 1 :(得分:2)
根据您的示例,听起来您实际上并不了解strings.xml的工作原理,因为这似乎是您正在寻找的答案。您的整个示例可以替换为一行:
textView1.setText(R.string.hello);
然后创建strings.xml的不同版本,所有这些版本都包含完全相同的ID但不同的字符串值。如果英语是您的默认值,则英文版本将命名为/res/values/strings.xml。葡萄牙文件将命名为/res/values-pt/strings.xml。系统会自动使用正确文件中的字符串作为设备区域设置。
答案 2 :(得分:1)
在几百个要翻译并包含在代码中的文本之后,您会发现在资源中使用字符串要简单得多。
values-..
文件夹