Android多语言支持无需本地化

3

你好,我正在开发一个Android项目。

我想为应用程序提供多语言支持。我进行了相关的研究,但几乎所有的内容都与本地化有关。

是否有任何方法可以在不使用本地化的情况下实现这一点?

我的首选是使用语言支持来实现本地化或支持的版本。

也就是说,用户可以在应用程序中切换语言。

我可以通过多个值文件来实现这个功能吗?


你解决了他的问题吗? - Amitsharma
用户999822,你有没有解决你的问题?如果你解决了,请在这里发布你的技巧或代码。 - Amitsharma
3个回答

4
使用此代码更改语言 -
 Locale locale = new Locale("en_US");
 Locale.setDefault(locale);
 Configuration config = new Configuration();
 config.locale = locale;
 context.getApplicationContext().getResources().updateConfiguration(config, null);

在“en_US”的位置写入语言的国家代码,例如您想要的日语-“ja_JP”,阿拉伯语-“ar”或检查此链接以获取国家代码-

http://code.google.com/apis/igoogle/docs/i18n.html

请在 res/values-ja 文件夹中创建日语文件夹,或者在 res/values-ar 中创建阿拉伯语文件夹。

同时创建 string.xml 文件,并将所需语言添加到您的布局中。如果没有指定语言,则会从默认的 values 文件夹中获取语言信息;否则,它将从外部文件夹(例如 values-ar)获取。

这是阿拉伯语的示例:res/values-ar。

<?xml version="1.0" encoding="UTF-8"?>
  <resources>
     <string name="spinner_label">تصفية حسب</string>
     <string name="app_name">2011 فرق</string> 
     <string name="search">بحث :</string>
  </resource>

希望它能帮到你。


SDK版本7是否支持? - user999822
1
这取决于语言...例如,日语将从1.5版本开始支持...大多数语言从2.3.3版本开始支持。 - Hulk
我正在2.3.3版本和模拟器上测试,它们都有en-us语言工作。当我更改或使用日本语Locale locale = new Locale("ja")时,工作语言没有改变。我错在哪里? - Amitsharma
@ Hulk,我按照你的方法操作了,但是还是不知道哪里出错了。我正在尝试用英语-美国“en-us”、日语“ja”和印地语“hi”来完成这个任务,同时将相同的字符串放在res/values/string.xml中。 - Amitsharma
@amitsharma:使用“ja_JP”作为参数来选择日语。 - Hulk
如果您在应用运行时更改语言(例如通过按按钮),则非常重要在更改本地设置后添加context.recreate()。否则,当前活动将不会更新。 - Aster

0

是的,您可以使用它来满足您的要求

Locale locale = new Locale("en_US");
 Locale.setDefault(locale);
 Configuration config = new Configuration();
 config.locale = locale;
 context.getApplicationContext().getResources().updateConfiguration(config, null); 

方法,然后点击此链接更改应用程序语言


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接