Decide first whether the string should be translated at all, then suppress as narrowly as possible. MissingTranslation is a lint check: it compares every string in res/values with each language folder and reports the ones a language lacks. Nothing breaks at runtime, because Android falls back to the default values string when a translation is missing; the check exists so untranslated text does not ship unnoticed. The options, from narrowest to broadest:
Strings that must never be translated (brand names, URLs, format templates) get translatable="false", or live in a file named donottranslate.xml. Lint skips both.
<string name="app_name" translatable="false">Acme</string>
One string that is knowingly untranslated for now. The attribute goes on the string in the default file, because that is where lint reports the issue:
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="beta_notice" tools:ignore="MissingTranslation">Beta</string>
</resources>
Regional override files. Lint counts folders by language, so values-pt-rBR beside a complete values-pt is already fine: the two are checked together as "pt" and the override may contain only the strings that differ. Lint complains when the regional folder is the only folder for its language, or when it is a variant of your default language, such as values-en-rGB next to an English values. For that case, declare the default language on the base file and lint counts the base strings as English:
<!-- res/values/strings.xml -->
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="en">
The whole project, in a lint.xml file in the module root:
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<issue id="MissingTranslation" severity="ignore" />
</lint>
or in build.gradle.kts:
android {
lint {
disable += "MissingTranslation"
}
}
tools:ignore="MissingTranslation" on the <resources> element of the default file sits in between: it covers every string in that file. The broad options hide the problem for every language, including the ones you do intend to finish, so leaving the check on and completing the translations, in a TMS such as Localizely or by hand, is the better long-term fix.
Details: MissingTranslation and configuring lint.
Published Oct 9, 2026 · Markdown version