2013-08-14 5 views
22

Ist es möglich, einige Zeichenfolgen, aber nicht alle, in einer separaten Ressourcendatei zu übersetzen, ohne dass sich Lint über MissingTranslation bekennt?Android Lint: Wie ignoriert man fehlende Übersetzungswarnungen in einer bestimmten Datei?

Zum Beispiel: Die Strings meiner App sind alle in res/values ​​/ strings.xml. Einer der Saiten ist

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

Da „Postleitzahl“ in der Regel „Postleitzahl“ in den USA genannt, ich eine andere Ressource res/Werte-en-rus/strings.xml hinzufügen wollen mit Inhalt:

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

Allerdings klagt Lint über andere Saiten in Werte/strings.xml aber nicht in Werte-en-rus/strings.xml

Ich weiß, Sie können die Warnungen unterdrücken, indem Sie in Werte/strings.xml angeben. Dies ist jedoch unerwünscht, da die Warnung "Lint" beim Übersetzen in eine andere Sprache tatsächlich nützlich ist.

Stattdessen ist es möglich, die Warnung in der Werte-en-rus/strings.xml Datei, wie in, sagte Lint nicht zu verwenden, die Datei als Kriterien zu unterdrücken, wenn für fehlende Übersetzungen suchen?

+0

Verwandte/fast ein Betrogener: [Ignorieren Android Lint "MissingTranslation" für Teilübersetzungen] (http://StackOverflow.com/questions/ 12019282/ignoring-android-lint-missingtranslation-Überprüfung-für-Teil- Übersetzungen) – blahdiblah

Antwort

0

Wenn Sie Eclipse verwenden, sehen Sie sich bitte die Symbolleistenschaltflächen der Lint-Warnungen an. Einer von ihnen heißt "Ignore in file". Dies sollte helfen, aber nur wenn Lint den Fehler Ihrer "US" -Datei zuweist. Diese Schaltfläche ändert einfach die Datei "lint.xml" in Ihrem Projekt, sodass Sie dies leicht untersuchen und rückgängig machen können.

Weitere Details zu dieser Datei spezifische Unterdrückung sind bei http://tools.android.com/tips/lint/suppressing-lint-warnings

26

fand ich eine bessere Lösung für diese Antwort nach: https://stackoverflow.com/a/13797364/190309

Fügen Sie einfach ignore="MissingTranslation" zu Ihrem string.xml, zum 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> 
+3

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

6

Lint unterstützt partielle regionale Übersetzungen, muss jedoch wissen, in welcher Sprache die Standardzeichenfolgen sind. Auf diese Weise kann eine partielle regionale Übersetzung von fehlenden Übersetzungen an einem anderen Ort unterschieden werden.

Um die Locale in values/strings.xml angeben:

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

Von Fusseln:

standardmäßig dieser Detektor ermöglicht Bereiche einer Sprache eine Teilmenge der Saiten nur zu liefern und zurück zu den fallen Standardsprachestrings. [...]

können Sie sagen, Flusen (und andere Tools), die Sprache ist die Standardsprache in Ihrer res/Werte/Ordner Tools spezifizieren: locale = „Sprachcode“ für das Root-Element in Ihrer Ressource-Datei .(Die Werkzeuge Präfix bezieht sich auf die Namespace-Deklaration http://schemas.android.com/tools.)

Fügen Sie die locale-Spezifikation auf dem Standardsprachdatei, und Sie sollten nicht, dass Fehler für en-rUS bekommen, aber immer noch von irgendwelchen anderen fehlt Übersetzungen informiert werden .

+2

Danke, das sollte die richtige Antwort sein. –

40

Eine schöne Möglichkeit, MissingTranslations zu deaktivieren, besteht darin, die Option in die modulspezifische build.gradle-Datei einzufügen.

android { 

lintOptions{ 
     disable 'MissingTranslation' 
    } 
//other build tags 
} 

Wenn die Saiten in locale spezifischen Strings-Datei nicht vorhanden sind, wird die Zeichenfolge aus der Standarddatei nehmen, die im Allgemeinen strings.xml ist.

+0

Beachten Sie, dass dies * all * MissingTranslation Warnung/Fehler deaktiviert, so dass Sie nicht falsch positive Ergebnisse für 'en-rUS' absichtlich teilweise überschreiben' en' Standardwerte erhalten, aber Sie werden auch nicht wahre positive erhalten, wenn ein anderes Gebietsschema ist Eine Übersetzung fehlt. – blahdiblah

7

Dies scheint noch nicht beantwortet, so zeige ich Ihnen eine Lösung:

in Ihrem XML-Datei STANDARD, Sie Strings definieren kann, die Übersetzungen nicht brauchen wie folgt vor:

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

Diese string muss nicht übersetzt werden und lint wird sich auch nicht beschweren ...

+0

Dadurch wird das Problem auf Warnungen zum Übersetzen nicht übersetzbarer Zeichenfolgen in den Gebietsschemas umgestellt, die eine andere Ressource bereitstellen sollen. – blahdiblah

Verwandte Themen