将 Android Studio 升级到 3.2 版后,我遇到了本地化错误

por*_*cus 3 resources android localization android-studio-3.2

我有字符串资源:

  • values\strings.xml(包含默认英文字符串);
  • values-de\strings.xml(包含德语字符串);

一切正常,直到我将 Android Studio 更新到最新版本 3.2。现在 lint 给了我大量关于默认字符串资源文件 (values\strings.xml) 的错误:

".... is not translated in "en" (English)"
Run Code Online (Sandbox Code Playgroud)

最好的解决方案是什么?我不想创建另一个文件夹 values-en ,它只包含我的默认 values\strings.xml 资源的副本...

Has*_*iri 5

在 lint 版本中,添加了 3.2 新功能。有关这些功能的更多信息,您可以访问此参考:http : //tools.android.com/tips/lint-checks

MissingTranslation
------------------
Summary: Incomplete translation

Priority: 8 / 10
Severity: Error
Category: Correctness:Messages

If an application has more than one locale, then all the strings declared in
one language should also be translated in all other languages.

If the string should not be translated, you can add the attribute
translatable="false" on the <string> element, or you can define all your
non-translatable strings in a resource file called donottranslate.xml. Or, you
can ignore the issue with a tools:ignore="MissingTranslation" attribute.

You can tell lint (and other tools) which language is the default language in
your res/values/ folder by specifying tools:locale="languageCode" for the root
<resources> element in your resource file. (The tools prefix refers to the
namespace declaration http://schemas.android.com/tools.)
Run Code Online (Sandbox Code Playgroud)

根据本文的这一部分,您可以使用以下方法:

  1.
  <resources
  xmlns:tools="http://schemas.android.com/tools"
  tools:ignore="MissingTranslation">
  ...
  </resources>


  2.
  <string name="any_name" translatable="false">anything</string>
Run Code Online (Sandbox Code Playgroud)