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

Localization of android application. One string resources for several countries

我有这样一个问题:我有一个 Login/Registration Activity,它默认使用俄语版本的 strings.xml。 因此,当用户进入应用程序时 - 他会看到俄语文本。但是在那 activity 上有一个按钮可以选择另一种语言。 当他单击该按钮时 - 我打开另一个 activity,他可以在其中选择要使用的语言 (English/Spanish/German/etc)。当他选择一个 语言(比如说德语)。我怎样才能从这个时间点向用户显示现在应该使用德文版 strings.xml 的文本? 而且 - 我怎么能做这样的事情:如果用户的区域设置来自俄罗斯、乌克兰、格鲁吉亚 --- 然后使用俄语版本的 strings.xml,如果用户的 来自任何其他国家/地区的语言环境 - strings.xml 的用户英语版本? 谢谢

您想做的是:

  1. 有一个 language/locale 键值对格式的明智内容翻译列表。您可以在同一个文件中实现这一点,或者拥有单独的文件并根据语言-区域设置组合命名它们。我更喜欢后一个版本,更容易维护

  2. 接下来在应用程序初始化时,您想使用

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

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

我强烈建议使用 lokalise

我们的应用有 6 种风格和超过 16 种语言。如果这个库不存在,那将是一场噩梦。

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

    // Create a new Locale object
    Locale locale = new Locale("ru");
    Locale.setDefault(locale);
    // Create a new configuration object
    Configuration config = new Configuration();
    // Set the locale of the new configuration
    config.locale = locale;
    // Update the configuration of the Accplication context
    getResources().updateConfiguration(
        config, 
        getResources().getDisplayMetrics()
    );