本地化应用程序非默认字符串?

时间:2013-06-06 23:51:27

标签: android

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

Android会自动为您完成。

  

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

     

Android系统根据内容选择要加载的资源   设备的区域设置。

示例:

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

res/values/strings.xml

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

res/values-fr/strings.xml

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

如果你的Java代码引用了 R.string.title ,那么这是在运行时会发生的事情:

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

如果设备设置为法语,则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 );