После обновления Android Studio до версии 3.2 я получил ошибки при локализации - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть строковые ресурсы:

  • values ​​\ strings.xml (содержит английские строки по умолчанию);
  • values-de \ strings.xml (содержит немецкие строки);

Все было в порядке, пока я не обновил Android Studio до последней версии 3.2.Теперь lint дает мне массу ошибок относительно файла ресурсов строки по умолчанию (values ​​\ strings.xml):

".... is not translated in "en" (English)"

Какое лучшее решение?Я не хочу создавать другую папку values-en, которая будет содержать только копию моего ресурса values ​​\ strings.xml по умолчанию ...

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

В версии 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.)

В соответствии с этим разделом статьи, вы можете использовать следующие методы:

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


  2.
  <string name="any_name" translatable="false">anything</string>
0 голосов
/ 10 октября 2018

Одним из решений является включение раздела «resConfigs» в файл build.gradle, как описано здесь https://developer.android.com/studio/build/shrink-code, чтобы сохранить только те языки, которые официально поддерживает мое приложение.После этого больше не было ошибок.

Для меня это будет:

android {
    defaultConfig {
        ...
        resConfigs "de"
    }
}

Мне нравится это решение, потому что я не хочу полностью отключать функцию "MissingTranslation".

0 голосов
/ 26 сентября 2018

Вы должны добавить disable 'MissingTranslation' на уровне приложения.

android {
     defaultConfig {
           //Your config
     }

     lintOptions {
       disable 'MissingTranslation'
   }
}
...