2

我做了一个项目,我在其中使用不同语言的 xml,比如language_hi.xml, language_en.xml. 所以根据文档,我为每个 xml 创建了不同的文件夹。例如,我为language_en制作es/values-hilanguage_hi.xml我制作了res/values-en并且在我的每个 xml 中,字符串名称都是相同的,有没有办法在单击一个按钮时选择language_en.xml并在另一个事件上选择language_hi.xml .

这是我的xml

res/values-hi/language_hi.xml

<string name="hello">sachit</string>

<string name="app">colon</string>

res/values-en/language_en.xml

<string name="hello">astro</string>

<string name="app">dev</string>
4

2 回答 2

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是非常困难的,而且实际上在任何情况下都不应该这样做。一个应用程序应该始终使用相同的语言,否则它会开始让用户感到困惑(处理语言之间翻译的应用程序除外)。但是,如果您有兴趣这样做(出于任何深奥的原因),您应该查看此答案

PS:我想你知道这一点,但我还是应该提一下。res\values\...如果电话使用的语言环境未使用 指定,则使用文件夹中的任何字符串res\values-xx\...。您可以在此处找到相关信息。

于 2012-08-08T05:42:29.390 回答
1

不,那里没有。Android 在运行时根据设备的语言来决定语言。您可以强制更改设备的语言,但这不是一个好的解决方案。相反,您可以生成自己的解决方案,并且可以自己更改每个字符串。例如,您可以根据自己的喜好设置语言选项。然后根据选择的语言,您可以显示该语言的字符串。假设您有一条消息,例如“请输入密码”。您可以编写一个方法 getStringAccordingToLanguage("password_warning")。如果语言是英文,此方法将返回“请输入密码”。你可以用这个方法代替字符串。

于 2012-08-08T05:28:32.297 回答