Android Lint: Wie ignoriert man fehlende Übersetzungswarnungen in einer regionalen Gebietsschema-String-Datei, die absichtlich nur einige Standardübersetzungen überschreibt?

Lesezeit: 5 Minuten

Benutzer-Avatar
Steveo

Ist es möglich, einige Zeichenfolgen, aber nicht alle, in einer separaten Ressourcendatei zu übersetzen, ohne dass sich Lint darüber beschwert Fehlende Übersetzung?

Beispiel: Die Strings meiner App sind alle drin res/values/strings.xml. Eine der Saiten ist

<string name="postal_code">Postal Code</string>

Da “Postleitzahl” in den USA normalerweise “Postleitzahl” heißt, möchte ich eine weitere Ressource hinzufügen res/values-en-rUS/strings.xml mit Inhalt:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="postal_code">Zip Code</string>
</resources>

Lint beschwert sich jedoch über andere Saiten Werte/Strings.xml aber nicht drin values-en-rUS/strings.xml

Mir ist klar, dass Sie die Warnungen unterdrücken können, indem Sie angeben tools:ignore in Werte/Strings.xml. Dies ist jedoch unerwünscht, da die Lint-Warnung beim Übersetzen in eine andere Sprache tatsächlich nützlich ist.

Stattdessen ist es möglich, die Warnung in der zu unterdrücken values-en-rUS/strings.xml Datei, wie in Lint sagen, dass er diese Datei nicht als Kriterium verwenden soll, wenn er nach fehlenden Übersetzungen sucht?

  • Verwandt/fast ein Dummkopf: Ignorieren der Überprüfung von Android Lint „MissingTranslation“ auf Teilübersetzungen

    – bladibla

    28. April 2015 um 23:05 Uhr


  • Bitte markieren Sie die @blahdiblah-Antwort als akzeptiert, da es sich tatsächlich um eine richtige Antwort handelt.

    – Wadim Kotow

    26. Juli 2019 um 13:06 Uhr

Benutzer-Avatar
Nicks

Eine gute Möglichkeit, die MissingTranslations-Prüfung zu deaktivieren, besteht darin, die Option modulspezifisch hinzuzufügen build.gradle Datei .

android {

    lintOptions{
        disable 'MissingTranslation'
    }

    //other build tags
}

Wenn die Zeichenfolgen nicht in der gebietsschemaspezifischen Zeichenfolgendatei vorhanden sind, werden die Zeichenfolgen aus der Standarddatei entnommen, was im Allgemeinen der Fall ist strings.xml.

  • Beachten Sie, dass dies deaktiviert wird alle MissingTranslation-Warnungen/-Fehler, damit Sie keine Fehlalarme erhalten en-rUS absichtlich teilweise übersteuern en Standardeinstellungen, aber Sie erhalten auch keine True Positives, wenn bei einem anderen Gebietsschema eine Übersetzung fehlt.

    – bladibla

    6. Dezember 2017 um 23:46 Uhr

  • Ich fand Ihre Antwort auf jeden Fall nützlich, aber es könnte sein, dass Sie daran interessiert sind, Übersetzungen in verschiedenen Ebenen zu ignorieren (alle ignorieren, nur Zeichenfolgen in einer bestimmten Datei ignorieren oder nur eine Zeichenfolge ignorieren). Schau mal hier: stackoverflow.com/a/53206467/973919

    – xarlymg89

    14. März 2019 um 12:31 Uhr


Benutzer-Avatar
Anticafe

Ich habe gemäß dieser Antwort eine bessere Lösung gefunden: https://stackoverflow.com/a/13797364/190309

Einfach hinzufügen ignore="MissingTranslation" zu deinem string.xmlzum Beispiel:

<?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>

  • Das OP hat ausdrücklich nach einer Lösung gefragt, die nur ignoriert etwas fehlende Übersetzungen. Diese Lösung gilt für alles in einer bestimmten Datei.

    – Sterling

    26. Februar 2015 um 21:12 Uhr

Benutzer-Avatar
bladibla

Lint unterstützt teilweise regionale Übersetzungen, muss aber wissen, welche Sprache die Standardzeichenfolgen sind. Auf diese Weise kann es eine teilweise regionale Übersetzung von fehlenden Übersetzungen in einem anderen Gebietsschema unterscheiden.

Um das Gebietsschema anzugeben in values/strings.xml:

<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="en">

Zitat aus dem lint-Befehlszeilentool, wenn es ausgeführt wird lint --show:

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 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.)

Quelle: https://android.googlesource.com/platform/tools/base/+/master/lint/libs/lint-checks/src/main/java/com/android/tools/lint/checks/TranslationDetector.java#88

Fügen Sie die Gebietsschemaspezifikation zu Ihrer Standardsprachdatei hinzu, und Sie sollten diesen Fehler nicht erhalten en-rUSwird aber weiterhin über alle anderen fehlenden Übersetzungen informiert.

  • Ihre Antwort ist sinnvoll, funktioniert aber bei mir nicht – ich habe eine Standard-String-Datei “values/strings.xml” und übersetze einige der Strings in en-rGB. Ich lege sie in “values-en-rUS/strings.xml” ab ” Datei – Ich habe tools:locale=”en” zu “values/strings.xml” hinzugefügt, aber immer noch den Fehler erhalten, dass einige Strings nicht in “en” übersetzt werden

    – Ahmed Haschem

    7. April 2019 um 13:55 Uhr

  • Ich versuche das und tatsächlich funktioniert es. Wenn Sie eine Lint-Aufgabe ausführen, werden nach dem Hinzufügen von tools:locale=”en” keine MissingTranslation-Warnungen angezeigt. Aber in Android Studio 3.5.1 werden rote Linien immer noch da sein. Es handelt sich also wahrscheinlich um einen Android Studio-Bug. Diese Antwort sollte als richtige Antwort markiert werden

    – michgauz

    14. Oktober 2019 um 11:55 Uhr


  • Ich habe ein Ticket an Google erstellt: issuetracker.google.com/issues/142590628

    – michgauz

    15. Oktober 2019 um 11:52 Uhr

  • @michgauz Ich habe gesehen, dass du bei den Google-Jungs geblieben bist, um diese Korrektur vorzunehmen, auch wenn sie es nicht wollten, gut für dich und danke!

    – Matt Jenje

    21. Juli 2020 um 9:33 Uhr

Dies scheint noch nicht beantwortet zu sein, also zeige ich Ihnen eine Lösung:

In Ihrer DEFAULT-XML-Datei können Sie Zeichenfolgen definieren, die keine Übersetzungen wie die folgenden benötigen:

<string name="developer" translatable="false">Developer Name</string>

Dieser String muss nicht übersetzt werden und lint wird sich auch nicht darüber beschweren…

Dies ist eine Schweizer Messerantwort, sodass Sie die Meldung über fehlende Übersetzungen ignorieren können, je nachdem, in welcher Situation Sie sich befinden:

  • Alles ignorieren MissingTranslation Botschaft:

    Bearbeiten Sie Ihre build.gradle Datei:

    android {
        lintOptions{
            disable 'MissingTranslation'
        }
    }
    
  • Alles ignorieren MissingTranslation Botschaften in Beton resources.xml Datei:

    <?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>
    
  • Ignorieren MissingTranslation Meldung für nur einen String:

    <string name="developer" translatable="false">Developer Name</string>
    

  • Drei Möglichkeiten, mit der Warnung „fehlende Übersetzung“ umzugehen

    – Mukesch

    15. Januar 2020 um 7:18 Uhr

Benutzer-Avatar
Bananenweizen

Wenn Sie Eclipse verwenden, sehen Sie sich bitte die Symbolleistenschaltflächen der Lint-Warnungsansicht an. Eine davon heißt “In Datei ignorieren”. Dies sollte helfen, aber nur, wenn Lint den Fehler Ihrer “US”-Datei zuordnet. Diese Schaltfläche ändert einfach die Datei lint.xml in Ihrem Projekt, sodass Sie dies einfach untersuchen (und rückgängig machen) können.

Weitere Details zu dieser dateispezifischen Unterdrückung finden Sie unter http://tools.android.com/tips/lint/suppressing-lint-warnings

  • Drei Möglichkeiten, mit der Warnung „fehlende Übersetzung“ umzugehen

    – Mukesch

    15. Januar 2020 um 7:18 Uhr

Benutzer-Avatar
sdex

Für die lint-Konfigurationsdatei lint.xml:

<issue id="MissingTranslation" severity="ignore" />

1090820cookie-checkAndroid Lint: Wie ignoriert man fehlende Übersetzungswarnungen in einer regionalen Gebietsschema-String-Datei, die absichtlich nur einige Standardübersetzungen überschreibt?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy