Im Eclipse-Quellcode habe ich einige '$ NON-NLS-1 $' in Kommentaren gefunden, die so verwendet wurden:
private String toolTip = ""; //$NON-NLS-1$
Was bedeutet das ?
Sie unterdrücken eine Warnung, die Eclipse ausgibt, wenn Zeichenfolgenliterale gefunden werden (und die so konfiguriert wurde, dass sie sich beschwert).
Die Idee ist, dass UI-Nachrichten nicht als Zeichenfolgenliterale eingebettet werden sollten, sondern aus einer Ressourcendatei stammen (damit sie übersetzt, geprüft usw. werden können). Folglich kann Eclipse so konfiguriert werden, dass Zeichenfolgenliterale erkannt werden, sodass Sie nicht versehentlich nicht externe Zeichenfolgen für die Benutzeroberfläche im Code belassen. Es gibt jedoch Zeichenfolgen, die nicht ausgelagert werden sollten (z. B. reguläre Ausdrücke). Mit // $ NON-NLS-1 $ können Sie dem Compiler diese Tatsache mitteilen.
Die Zeichenfolge ist nicht übersetzbar. Der Eclipse-Editor wird angewiesen, die Zeichenfolge nicht als nicht verfügbar zu kennzeichnen. Dies ist wichtig für mehrsprachige Anwendungen.
NON-NLS
Bedeutet Non [ ~ # ~] n [~ # ~] ationale [~ # ~] l [~ # ~] Sprache [~ # ~] s [~ # ~] uppport.
Wikipedia schlägt auch Non [~ # ~] n [~ # ~] ative [~ # ~] l [~ # ~] Sprache [~ # ~] s [~ # ~] upport (NLS) aber dieses letzte wird nicht sehr benutzt.
In [~ # ~] nls [~ # ~] geht es um die Internationalisierung Ihrer Anwendung. Eclipse-Hilfe zum Auffinden von fest codierten Zeichenfolgen in Ihrem Code. Um anzuzeigen, dass ein String nicht Teil der Internationalisierung ist, fügen Sie den Kommentar //$NON-NLS-x$
Hinzu, wobei x die Position des Strings ist. Im folgenden Beispiel sind beide "!"
Fest codierte Zeichenfolgen, die nicht Teil der Internationalisierung sind:
public String foo(String key) {
return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$
}
Anmerkungen:
//
ist jedes Mal erforderlich$NON-NLS$
für mehrere Zeichenfolgen in derselben Zeile//$NON-NLS-x$
schreiben.)Das Buch EMF: Eclipse Modeling Framework auf Seite 25 sagt:
Nicht-NLS-Marker - Der Eclipse-Compiler Java) kann nicht ausgelagerte Zeichenfolgen als Warnung oder Fehler kennzeichnen. EMF-generierter Code verwendet keine fest codierten Zeichenfolgen für Nachrichten, die vom Benutzer angezeigt werden, jedoch werden Zeichenfolgenliterale häufig angezeigt, beispielsweise als Schlüssel zum Nachschlagen von externen Zeichenfolgen in Eine Eigenschaftendatei: Diese Eigenschaft steuert, ob Kommentare eingefügt werden sollen, die diese Literale als nicht übersetzbar markieren, damit der Compiler sie nicht kennzeichnet.
Weitere Informationen finden Sie auch auf den Seiten Die Generator-GUI und So internationalisieren Sie Ihr Eclipse-Plug-In .
Sie können diese Funktion aktivieren/deaktivieren. Auf Eclipse Neon gehen Sie zuProject > Properties > Java Compiler > Errors/Warnings
und wählen Sie das Feld ausNon-externalized strings (missing/unused $NON-NLS$ tag)
Wenn Sie ein Android Entwickler sind. Alle Zeichenfolgen, die der Benutzer möglicherweise sieht, sollten sich in der Ressourcendatei /res/values/strings.xml befinden, um die Datei strings.xml in dem von Ihnen verwendeten Code zu lesen. R.string .. Indem Sie das Tag // $ NON-NLS- $ hinzufügen, stellen Sie fest, dass der String für Benutzer nicht sichtbar ist.
Die Warnung in Eclipse Helios kann bei Window -> preferences -> Java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag)
aktiviert werden.
Wenn Sie vorhaben, Ihre Aktivität mehrsprachig zu programmieren, wird empfohlen, diese Option zu aktivieren. Fügen Sie dann das & NON-NLS $ -Tag zu Zeichenfolgen hinzu, die für Ihre Aktivität intern sind. Eclipse fügt & NON-NLS $ -Tag in die Schnellkorrektur ein, wenn Sie mit der rechten Maustaste auf die Warnung oder den Fehler klicken.
Es wird von Eclipse verwendet, um anzuzeigen, dass eine Zeichenfolge nicht übersetzt werden muss, wahrscheinlich, weil sie von den Benutzern der Anwendung nicht gesehen wird.
Er weist den Compiler an, sich nicht über einen nicht ausgelagerten String zu beschweren, und dass keine Lokalisierung erforderlich ist.