android应用程序的本地化。一个字符串资源可用于多个国家

时间:2018-08-14 10:49:56

标签: android localization android-resources android-location localizable.strings

我有这样一个问题:我有一个登录/注册活动,默认情况下使用的是俄语版本的strings.xml。 因此,当用户输入应用程序时-他会看到俄语文字。但是在该活动上有一个选择其他语言的按钮。 当他单击该按钮时-我打开另一个活动,他可以在其中选择要使用的语言(英语/西班牙语/德语/等)。当他选择一个 语言(比方说德语)。从那时起,我如何才能向用户显示现在应该从德语版本的strings.xml使用的文本? 而且-我该怎么做:如果用户的语言环境来自俄语,乌克兰,格鲁吉亚---然后使用俄语版本的strings.xml,如果用户的语言环境 来自任何其他国家/地区的语言环境-用户英语版本的strings.xml? 谢谢。

2 个答案:

答案 0 :(得分:1)

您想要做的是:

  1. 具有键/值对格式的语言/区域明智内容转换列表。您可以在同一文件中实现此目的,也可以在单独的文件中实现此目的,然后根据语言区域设置组合命名它们。我更喜欢后一种版本,易于维护。

  2. 下一步,在应用程序启动时,您要使用

    来读取手机的当前语言环境
    Locale current = getResources().getConfiguration().locale;
    

    将此值映射到上面创建的内容文件(因框架而异),您可以立即进行本地化。

答案 1 :(得分:1)

我强烈建议您使用lokalise

我们有一个具有6种口味和16种以上语言的应用程序。如果仅此库不存在,那将是一场噩梦。

他们有tutorial关于如何使用自定义语言环境的信息:但是总而言之:

let arr = [1,3,5,7],
    data = [1,2,3,4,5,6,7,8,9,10];
    
for (let i = 0, len = data.length; i < len; i++) {
  if (arr.indexOf(data[i]) > -1) {
    console.log(`item ${data[i]} exists in the array`);
  }
}