【问题标题】:localizing application non default strings?本地化应用程序非默认字符串?
【发布时间】:2013-06-06 23:51:27
【问题描述】:

您好,我正在尝试本地化我的 android 应用程序,我通过阅读本教程 http://developer.android.com/guide/topics/resources/localization.html 了解了如何进行本地化,但在看完之后,我无法弄清楚如何更改语言。我在 res/values/strings.xml 中有默认值,在 res/values-latin/strings.xml 中有其他字符串。但我不知道如何让我的应用程序使用 res/values-latin/strings.xml 中的字符串而不是默认值。有人可以向我解释一下吗?

如果有人单击更改语言按钮,我如何通知应用程序更改所有字符串?

谢谢!

【问题讨论】:

    标签: android


    【解决方案1】:

    Android 会自动为您完成。

    当用户运行您的应用程序时:

    Android 系统根据 设备的语言环境。

    例子:

    假设您的应用程序的默认语言是英语。还假设您要将应用程序中的所有文本本地化为法语。在这种情况下,您可以创建两个可选的 strings.xml 文件,每个文件都存储在特定于语言环境的资源目录中:

    res/values/strings.xml
    

    包含应用程序使用的所有字符串的英文文本。

    res/values-fr/strings.xml
    

    包含所有字符串的法语文本。

    如果您的 Java 代码引用 R.string.title,以下是运行时会发生的情况:

    如果设备设置为法语以外的任何语言,Android 将从 res/values/strings.xml 文件加载 English title

    如果设备设置为法语,Android 将从 res/values-fr/strings.xml 文件加载 法语标题


    使用拉丁文将无法正常工作。您应该搜索替代方法。 我在java中的解决方案:

    public final class English {
        String moon = "Moon";
        String earth = "Earth";
        String mars = "Mars";
    }
    
    public final class Latin {
        String moon = "Luna";
        String earth = "Terrae";
        String mars = "Mars in Latin";
    }
    

    然后在您的代码中您可以访问它们:

    TextView textView = (TextView) findViewById(R.id.my_text);
    textView.setText( Latin.moon );
    

    【讨论】:

    • 感谢您的回复!对于我的拉丁字符串的情况如何,它仍然知道加载它。因为我知道在android程序中已经设置了values-fr
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    相关资源
    最近更新 更多