在android中使用不同的字符串文件

bor*_*eas 6 xml string build-automation android localizable.strings

我将我的iPhone应用程序移植到android,现在我遇到了字符串文件的问题.

该应用程序是一个翻译工具,用户可以切换语言,因此所有本地化的字符串都使用两种语言,并且它们独立于操作系统的运行区域.

对于iOS版本,我有不同的文件,如de.strings,en.strings和fr.strings等.对于具有指定语言对的每个目标,我从字符串表中读取字符串,例如对于de-fr,我将在项目中包含de.strings和fr.strings,并在info-list文件中设置字符串表的名称并读取字符串从他们.最后,我有一个项目包含不同的目标(具有不同的信息列表文件),并且所有项目都配置得很好.

我打算在Android平台上做同样的事情,但是

  1. 每个项目只允许一个strings.xml吗?

  2. 如何设置不同的构建目标?例如,我的de-fr和de-en翻译应用程序实际上是两个应用程序,唯一的区别是语言对.如何设置某些内容以便我可以使用一个项目生成两个应用程序?在XCode中它很简单,但我找不到eclipse的解决方案.

  3. 如何为每个目标指定应该读取哪个strings.xml?

感谢您的回答,但请注意,我需要与操作系统区域设置无关的语言设置,即如果用户将操作系统区域设置从en更改为de,我的应用程序仍会显示英文本地化字符串.我问的实际上是如何设置像prebuild这样的东西并为不同的目标加载不同的字符串文件.

Pas*_*lis 9

根据用户设置自动选择区域设置

strings.xml包含原始文本,假定为英语.要创建翻译成不同的语言,你可以创建文件夹,例如: values-gr,values.it,为希腊最终意大利.只需复制strings.xml到这些文件夹并进行翻译即可.

在应用程序启动时,OS会根据用户的首选项自动选择一种语言.

手动选择区域设置,覆盖用户设置

例如,强制希腊语可以使用:

Locale locale = new Locale("gr"); 
            Locale.setDefault(locale);
            Configuration config = new Configuration();
            config.locale = locale;
            getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
Run Code Online (Sandbox Code Playgroud)

当然,您应该为此提供希腊语翻译.

阅读更多

您可以在此处查看文档: 支持不同的语言 - Android