我创建了一个项目,其中我使用的是不同语言的xml,例如language_hi.xml
,language_en.xml
。所以根据文档,我为每个xml制作了不同的文件夹。例如,对于 language_hi.xml ,我为 language_en 制作了es/values-hi
我已经在 res / values-en 和我的每个xml中创建了字符串名称相同,有没有办法在单击一个按钮时选择 language_en.xml ,在另一个事件上选择 language_hi.xml 。
这是我的xml
RES /值喜/ language_hi.xml
<string name="hello">sachit</string>
<string name="app">colon</string>
RES /值烯/ language_en.xml
<string name="hello">astro</string>
<string name="app">dev</string>
答案 0 :(得分:2)
您可以选择要在运行时使用的Locale
;例如,将其设置为英语将导致使用res\values-en\...
文件夹中的值。
为此,需要以下代码:
Resources res = getResources(); // From your context
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = new Locale("en"); // For English
res.updateConfiguration(conf, dm); // Now, update the language
但是,我强烈建议不要使用此功能。当用户运行应用程序时,他们希望它使用默认语言(在许多情况下是英语)或其本地化语言。例如,当他们在俄罗斯时,给某人使用印地语的应用程序真的不好。
请注意,如果您在整个应用中使用en
,那么从languages_hi.xml
获取值非常困难,而且在任何情况下都不应该这样做。应用程序应始终使用相同的语言,否则将开始混淆用户(除了处理语言之间的翻译的应用程序之外)。但是,如果您有兴趣这样做(出于任何深奥的原因),您应该查看this answer。
res\values\...
指定手机使用的区域设置,则会使用res\values-xx\...
文件夹中的任何字符串。您可以找到有关此here的信息。
答案 1 :(得分:1)
不,没有。 Android在运行时根据设备的语言决定语言。您可以强制更改设备的语言,但这不是一个好的解决方案。相反,您可以自己创建解决方案,并且可以自己更改每个字符串。例如,您可以根据自己的喜好选择语言选项。然后根据所选语言,您可以显示该语言的字符串。假设您有“请输入密码”之类的消息。你可以写一个方法getStringAccordingToLanguage(“password_warning”)。如果语言为英语,此方法将返回“请输入密码”。你可以用这个方法代替字符串。