【发布时间】:2011-05-14 15:12:41
【问题描述】:
我想创建一个多语言的 android 应用程序。
有没有办法检测用户喜欢什么语言?
有没有推荐的方法来管理 Android 上的多种语言,还是我应该重新发明轮子?
【问题讨论】:
标签: android internationalization
我想创建一个多语言的 android 应用程序。
有没有办法检测用户喜欢什么语言?
有没有推荐的方法来管理 Android 上的多种语言,还是我应该重新发明轮子?
【问题讨论】:
标签: android internationalization
是的,有一种管理多种语言的推荐方法
多语言支持很容易为 android 完成。使用语言代码的后缀为该语言创建一个新的值目录。对于德语:values-de 或法语:values-fr,而不是将您的 string.xml 复制到其中并翻译每个条目。这就是你所需要的。
如果您遵循建议,则自动检测用户喜欢哪种语言。
读一读:
http://developer.android.com/guide/topics/resources/localization.html
【讨论】:
在活动文件中
public boolean onOptionsItemSelected(MenuItem item)
{
String languageToLoad="en";
switch (item.getItemId()) {
case R.id.eng:
languageToLoad = "en";
break;
case R.id.hn:
languageToLoad = "hi";
break;
case R.id.te:
languageToLoad = "te";
break;
case R.id.ta:
languageToLoad = "ta";
break;
case R.id.ka:
languageToLoad = "kan";
break;
case R.id.ml:
languageToLoad = "ml";
break;
case R.id.mr:
languageToLoad = "mr";
break;
default:
break;
}
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config,getResources().getDisplayMetrics());
}
在 res\menu\menus.xml 中
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.connect.OrderProcess">
<item
android:title="Language"
app:showAsAction="never">
<menu>
<item
android:id="@+id/eng"
android:title="English"/>
<item
android:id="@+id/hn"
android:title="Hindi"/>
<item
android:id="@+id/te"
android:title="Telugu"/>
<item
android:id="@+id/ta"
android:title="Tamil"/>
<item
android:id="@+id/ka"
android:title="Kannada"/>
<item
android:id="@+id/ml"
android:title="Malayalam"/>
<item
android:id="@+id/mr"
android:title="Marathi"/>
</menu>
</item>
</menu>
AND 创建文件夹和文件
res\values\string.xml(英文)
res\values-hi\string.xml(印地语)
res\values-kan\string.xml(卡纳达语)
res\values-te\string.xml(泰卢固语)
res\values-ta\string.xml(泰米尔语)
res\values-ml\string.xml(马拉雅拉姆语)
res\values-mr\string.xml (马拉地语)
在 string.xml 中(印地语)
<resources>
<string name="email">ईमेल</string>
<string name="password">पासवर्ड </string>
</resources>
【讨论】:
知道这是一篇迟到的帖子,想分享一个演示应用程序,所以对某些人会有所帮助。
使用共享偏好的多语言应用
这个演示展示了以下两个场景,
所选语言存储在共享首选项中。所以下次打开应用程序时,会自动选择首选语言。
【讨论】: