Вопрос по android, android-resources, android-lint – Avoid Android Lint жалуется на непереведенную строку

115

Можно ли указать, что строки в файле в пределахvalue-*& # xA0; каталоги специально не переводятся на другие языки? У меня есть несколько строк, которые являются общими для всех языков и не нуждаются в переводе, поэтому я создалunlocalized-strings.xml файл вvalues директория .. Запуск Android Lint для проверки проблем постоянно говорит, что некоторые переводы отсутствуют .. Я не хочу отключать эту проверку для всего проекта, я хочу отключить ее только в некоторых файлах XML ... возможно ли это ?

"title_widget_updater_service" is not translated in de, en, en-rUS, it

Issue: Checks for incomplete translations where not all strings are translated
Id: MissingTranslation

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

By default this detector allows regions of a language to just provide a subset of the 
strings and fall back to the standard language strings. You can require all regions to 
provide a full translation by setting the environment variable 
ANDROID_LINT_COMPLETE_REGIONS.

Как можно определить этоregion изunlocalized строки?

Ваш Ответ

10   ответов
0

откройте Настройки == & gt; Проверки, снимите флажок «Незавершенные переводы». Но это не повлияет на сборку Gradle.

156

как игнорировать все файлы, но вы можете сделать это строка за строкой, используя:

<string name="hello" translatable="false">hello</string>

удачи

это дает «непереводимые ресурсы», которые должны быть определены только в базовых значениях / папке.
Ответ @CyrilLeroux является более полным и должен быть помечен как правильный, поскольку он показывает возможность поместить все непереводимые строки в один файл.
к сожалению, это код библиотеки :(
Это работает, но я не думаю, что это лучший способ решить проблему, помечая фактически переводимую строку «не переводимую». просто чтобы подавить сообщение об ошибке. Мы просто решили не переводить некоторые строки в настоящее время. Но это не означает, что они не могут быть переведены.
И это правильно. Если вы не хотите, чтобы строка была переведена, вы должны определить ее только в «base values / folder», то есть не вводите строку в переведенные значения / folder.
1

resValue или жеbuildConfigField, Что-то вроде того:

buildTypes {
    debug {
        buildConfigField "string", "app_name1", "App Name"
        resValue "string", "app_name2", "App Name"
    }
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        buildConfigField "string", "app_name1", "App Name"
        resValue "string", "app_name2", "App Name"
    }
}

Обычаи:

// buildConfigField
BuildConfig.APP_NAME1

// resValue
getString(R.string.app_name2)
2

donottranslate& Quot; (например.donottranslate.xml, donottranslate_urls.xmlи т. д.), и lint будет полностью игнорировать свои строки при проверке отсутствующих переводов.

3

translatable="false"
220

ignore атрибутtools пространство имен в вашем файле строк, как показано ниже:

<?xml version="1.0" encoding="utf-8"?>
<resources
  xmlns:tools="http://schemas.android.com/tools"
  tools:ignore="MissingTranslation" >

  <!-- your strings here; no need now for the translatable attribute -->

</resources>
По крайней мере, затмение не заставило нас переводить все, включая папки с нечетными строками, такие как ids.xml и analytics.xml.
Вам необходимо указатьxmlns:tools атрибут также ...
Это хорошо работает, но я должен был пойти вProject->Clean чтобы устранить ошибки окончательно.
Это должен быть принят ответ для решения всех проблем всего за 2 строки кода.
& lt; инструменты ресурсов: ignore = & quot; MissingTranslation & quot; & gt; выдает ошибку синтаксического анализа XML: несвязанный префикс
1

вы можете перейти

& quot; Свойства проекта - & gt; Настройки Android Lint - & gt; Выберите MissingTranslation - & gt; Swtich, чтобы игнорировать в серьезности & quot ;,

надеюсь, что это поможет другим, потому что я просто столкнулся с этой проблемой :)

Есть ли способ сделать это в Android Studio? Я не могу найти настройки, связанные с линтом
0

Редактор переводов. Редактируйте переводы для всех языков. & Quot;

Можно просто проверить «непереводимый»; коробка на веревочке.

151

build.gradle:

android {
     lintOptions {
        disable 'MissingTranslation'
    }
}
Нет, это не должно основываться на вопросе: «Я не хочу отключать эту проверку для всего проекта».
Единственное работоспособное решение для работы с автоматически генерируемыми строковыми ресурсами. Спасибо.
Это отключило всю проверку, которую следует избегать, если это возможно. Я не могу понять, почему у него так много голосов.
@ Жираф Лев, вы должны опубликовать это как другой вопрос и ответить на него самостоятельно. Спасибо за решение, ранее мне приходилось отключать его вручную.
23

Чтобы применить значение модификации по значению: Установите атрибутtranslatable="false" на<string> определение:

<string name="account_setup_imap" translatable="false">IMAP</string>

Если у вас есть много ресурсов, которые не нужно переводить, вы можете поместить их в файл с именемdonottranslate.xml и Линт рассмотрит все их нетранслируемые ресурсы.

Еще один способ, который я обнаружил во время просмотраХакерская клавиатура проекта так, убивает:
Вы можете добавить префиксdonottranslate- в ваш файл ресурсов. Как и в предыдущем примере, lint будет рассматривать все их непереводимые ресурсы.
В вашем случае вы можете заменитьunlocalized-strings.xml отdonottranslate-strings.xml. It seems to work, but I haven't found any documentation for this tip.

Увидеть:Сайт Android Tools Project: непереводимые строки

Ага. Я использую файлы donottranslate-strings.xml во всех моих проектах. Работает отлично. Попробуйте, это очень полезно!
Правда ли, что если мы поместим нашу строку в файлdonottranlate.xmlнам не нужно добавлятьtranslatable="false" пометить еще?

Похожие вопросы