我该如何创建一个多语言的安卓应用程序?

27

我希望创建一个多语言的安卓应用。

有没有一种方式可以检测用户喜欢使用的语言?

在安卓上管理多语言是否有推荐的方法,或者我需要重新发明轮子?

3个回答

29

是的,有一种推荐的方法来管理多语言

对于Android设备而言,多语言支持很容易实现。为具体语言创建一个带有该语言代码后缀的新值(values)目录。例如:德语为 "values-de" 或法语为 "values-fr",然后将string.xml复制到该目录中,并翻译每个条目。这就是你需要做的全部。

Android支持多种语言吗?

只要按照建议进行操作,检测用户首选语言将自动完成。

阅读这篇文档:

http://developer.android.com/guide/topics/resources/localization.html


谢谢!您知道是否可以从自定义XML文件中链接到这些字符串吗? - clamp
我不确定,抱歉。如果您将其作为一个新问题提出,其他人可能会知道答案。 - Colin Pickard
1
我原本期待的是一个复杂的解决方案。但是我得到了一些从未如此简单的东西。非常感谢,Colin和Clamp。 :-) - user942821

10

在活动文件中

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>

创建文件夹和文件

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>

2

知道这是一篇晚发的帖子,想分享一个演示应用程序,这对某些人会很有帮助。

使用共享首选项的多语言应用程序

此演示展示了以下两种情况,

  • 从下拉列表中选择语言。
  • 从底部表设计中选择语言

所选语言存储在共享首选项中。因此,下次打开应用程序时,将自动选择首选语言。

源代码- https://github.com/anurajr1/Multi-language_App


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