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 的用户英语版本?
谢谢
您想做的是:
有一个 language/locale 键值对格式的明智内容翻译列表。您可以在同一个文件中实现这一点,或者拥有单独的文件并根据语言-区域设置组合命名它们。我更喜欢后一个版本,更容易维护
接下来在应用程序初始化时,您想使用
读取 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()
);
我有这样一个问题:我有一个 Login/Registration Activity,它默认使用俄语版本的 strings.xml。 因此,当用户进入应用程序时 - 他会看到俄语文本。但是在那 activity 上有一个按钮可以选择另一种语言。 当他单击该按钮时 - 我打开另一个 activity,他可以在其中选择要使用的语言 (English/Spanish/German/etc)。当他选择一个 语言(比如说德语)。我怎样才能从这个时间点向用户显示现在应该使用德文版 strings.xml 的文本? 而且 - 我怎么能做这样的事情:如果用户的区域设置来自俄罗斯、乌克兰、格鲁吉亚 --- 然后使用俄语版本的 strings.xml,如果用户的 来自任何其他国家/地区的语言环境 - strings.xml 的用户英语版本? 谢谢
您想做的是:
有一个 language/locale 键值对格式的明智内容翻译列表。您可以在同一个文件中实现这一点,或者拥有单独的文件并根据语言-区域设置组合命名它们。我更喜欢后一个版本,更容易维护
接下来在应用程序初始化时,您想使用
读取 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()
);