我有一个最初使用英国英语编写的应用程序,因此res/values/strings.xml
中的所有字符串都使用英国英语。
我想提供美国英语的“翻译”。在大多数情况下,美国和英国的英文完全相同,因此在美国翻译文件中,我只想指定一些会受到影响的字符串更改(大约120个中的10个)。
我尝试创建一个res/values-en-rUS/strings.xml
文件(此名称由Android Studio提供),在其中我仅添加了这10个不同的字符串。但是Android Studio在我的主strings.xml
中给我所有其余字符串:"XXX" is not translated in "en" (English)
的错误。
那么,我如何才能有效地提供美国英语的翻译-即仅指定10行,而不必重复所有其他行?复制总是不利于代码维护!
答案 0 :(得分:2)
您可以使用translatable="false"
设置来标记不应翻译的字符串资源。像这样:
<resources>
<string name="app_name" translatable="false">EasyApp</string>
<string name="action_settings">Settings</string>
<string name="easy_app">I am a Simple App!</string>
<string name="next_page">Next Page</string>
<string name="second_page_message">I am the Second Page!</string>
<string name="title_activity_second">SecondActivity</string>
</resources>
在上面的示例中,无需在其他语言环境中翻译app_name。这样,您可以在默认的strings.xml中提供英国版本,并用translatable="false"
标记您要在美国版本中维护的所有资源都相同。在res/values-en-rUS/strings.xml
中,您只需要添加需要以美式英语维护的邮件即可。
请注意,如果您打算使用其他语言环境/语言,则此方法可能不合适,因为您可以通过这种方式指定translatable="false"
资源在所有语言环境中都是相同的。
如果需要更多详细信息,可以检查Configure untranslatable section行。