Vermeiden Sie, dass sich Android Lint über nicht übersetzte Zeichenfolgen beschwert

Lesezeit: 5 Minuten

ist es möglich anzugeben, dass die Zeichenfolgen in einer Datei innerhalb der value-* Verzeichnisse werden bewusst nicht in andere Sprachen übersetzt? Ich habe eine Reihe von Zeichenfolgen, die für alle Sprachen gleich sind und keine Übersetzung benötigen, also habe ich eine erstellt unlocalized-strings.xml Datei darin values Verzeichnis.. Wenn ich Android Lint ausführe, um nach Problemen zu suchen, heißt es immer wieder, dass einige Übersetzungen fehlen.. Ich möchte diese Überprüfung nicht für das gesamte Projekt deaktivieren, ich möchte sie nur in einigen XML-Dateien deaktivieren. Ist das möglich? ?

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

Wie kann dies definiert werden Region von nicht lokalisiert Saiten?

  • Fehler: „app_name“ ist nicht in af übersetzt

    – LF00

    9. August 2017 um 8:36 Uhr

Es ist das ignore Attribut der tools Namespace in Ihrer Strings-Datei wie folgt:

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

  • gibt mir einen Fehler beim Analysieren von XML: ungebundenes Präfix

    – fIwJlxSzAPHEZIl

    5. März 2013 um 21:27 Uhr

  • Das funktioniert gut, aber ich musste gehen Project->Clean um die Fehler endgültig zu beseitigen.

    – xonia

    2. Dezember 2013 um 18:32 Uhr

  • Zumindest hat uns Eclipse nicht gezwungen, alles zu übersetzen, einschließlich seltsamer String-Ordner wie ids.xml und analytics.xml.

    – Androidcoder

    24. Juni 2015 um 1:47 Uhr

  • Dies sollte als Antwort akzeptiert werden, um alle Probleme in nur 2 Codezeilen zu lösen.

    – nhoxbypass

    6. September 2017 um 4:28 Uhr

Benutzer-Avatar
Luis

Ich weiß nicht, wie ich die gesamte Datei ignorieren soll, aber Sie können dies Zeichenfolge für Zeichenfolge tun, indem Sie Folgendes verwenden:

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

  • Dies ergibt ‘nicht übersetzbare Ressourcen sollten nur in den Basiswerten /Ordner definiert werden.

    – fIwJlxSzAPHEZIl

    5. März 2013 um 21:25 Uhr

  • Und das ist richtig. Wenn Sie nicht möchten, dass ein String übersetzt wird, sollten Sie ihn nur im “Basiswerte/Ordner” definieren, dh den String nicht in den übersetzten Werte/Ordner eintragen.

    – Luis

    5. März 2013 um 22:34 Uhr

  • Die Antwort von @CyrilLeroux ist umfassender und sollte als die richtige markiert werden, da sie die Option zeigt, alle nicht übersetzbaren Zeichenfolgen in einer Datei abzulegen.

    – Yoel Gluschnaider

    27. Januar 2016 um 17:12 Uhr

  • Das funktioniert, aber ich denke nicht, dass es der beste Weg ist, das Problem zu lösen, indem man eine tatsächlich übersetzbare Zeichenfolge als “nicht übersetzbar” markiert, nur um die Fehlermeldung zu unterdrücken. Wir haben uns lediglich dafür entschieden, einige Zeichenfolgen vorerst nicht zu übersetzen. Aber das bedeutet nicht, dass sie nicht übersetzbar sind.

    – Zili FENG

    2. September 2016 um 6:53 Uhr

  • Ich möchte eine Zeichenfolge nur in einer Sprache einfügen, und das ist die deutsche (de) Sprache (nicht die Standardsprache Englisch). Ich habe es dort abgelegt und als ich versuche, den Build freizugeben, wurde mir ein Fehler angezeigt. Was ist in diesem Fall zu tun?

    – Aanal Mehta

    14. November 2018 um 7:13 Uhr

Benutzer-Avatar
Giraffenlöwe

Hinzufügen build.gradle:

android {
     lintOptions {
        disable 'MissingTranslation'
    }
}

  • Die einzige praktikable Lösung für den Umgang mit den automatisch generierten String-Ressourcen. Danke.

    – SqueezyMo

    27. November 2015 um 15:54 Uhr

  • Nein, sollte es nicht, basierend auf der Frage: “Ich möchte diese Überprüfung nicht für das gesamte Projekt deaktivieren”

    – Yoel Gluschnaider

    27. Januar 2016 um 17:05 Uhr

  • @Giraffe Lion, Sie sollten dies als andere Frage posten und selbst beantworten. Danke für die Lösung, zuvor musste ich sie manuell deaktivieren.

    – Diljeet

    9. März 2017 um 1:11 Uhr


  • Dadurch wurde die gesamte Überprüfung deaktiviert, was nach Möglichkeit vermieden werden sollte. Ich kann nicht verstehen, warum es so viele Stimmen hat.

    – Tasomane

    22. Januar 2018 um 13:41 Uhr

Mir sind 3 Möglichkeiten bekannt:

So wenden Sie die Änderung Wert für Wert an: Legen Sie das Attribut fest translatable="false" auf der <string> Definition:

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

Wenn Sie viele Ressourcen haben, die nicht übersetzt werden sollen, können Sie sie in einer Datei namens donottranslate.xml und lint wird sie alle als nicht übersetzbare Ressourcen betrachten.

Eine andere Möglichkeit, die ich beim Stöbern entdeckt habe Hackers Keyboard-Projektquellen:
Sie können das Präfix hinzufügen donottranslate- zu Ihrer Ressourcendatei. Wie im vorherigen Beispiel betrachtet lint alle als nicht übersetzbare Ressourcen.
In Ihrem Fall können Sie ersetzen unlocalized-strings.xml durch donottranslate-strings.xml. Es scheint zu funktionieren, aber ich habe keine Dokumentation für diesen Tipp gefunden.

Sehen: Android Tools-Projektwebsite: Nicht übersetzbare Zeichenfolgen

Und hier ist eine Android Studio-Lösung zum Deaktivieren dieses schwerwiegenden Lint-Fehlers:

Geben Sie hier die Bildbeschreibung ein

  • Es kann ein ärgerlicher Fehler sein, aber es könnte Sie retten, wenn Sie versehentlich vergessen, eine neue Zeichenfolge in eine Ihrer App-Sprachen zu übersetzen.

    – Elad Nava

    5. Oktober 2015 um 16:48 Uhr

Benutzer-Avatar
Diego Torres Mailand

Ich denke, was Sie brauchen, anstatt Lint zu deaktivieren, ist, sie mit Attributen zu markieren

translatable="false"

  • Es kann ein ärgerlicher Fehler sein, aber es könnte Sie retten, wenn Sie versehentlich vergessen, eine neue Zeichenfolge in eine Ihrer App-Sprachen zu übersetzen.

    – Elad Nava

    5. Oktober 2015 um 16:48 Uhr

Benutzer-Avatar
Kai

Erstellen Sie eine Ressourcendatei mit einem Dateinamen, der mit “übersetze nicht” (z.B nichtübersetzen.xml, donottranslate_urls.xmlusw.), und lint ignoriert seine Zeichenfolgen vollständig, wenn nach fehlenden Übersetzungen gesucht wird.

1335180cookie-checkVermeiden Sie, dass sich Android Lint über nicht übersetzte Zeichenfolgen beschwert

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

Privacy policy