Eclipseのソースコードでは、そのように使用されるコメントに「$ NON-NLS-1 $」が見つかりました。
private String toolTip = ""; //$NON-NLS-1$
どういう意味ですか ?
彼らは、文字列リテラルに遭遇したときに文句を言うようにEclipseが出す警告を黙らせます。
考えは、UIメッセージを文字列リテラルとして埋め込むのではなく、リソースファイルから取得する必要があるということです(そのため、メッセージは翻訳、校正などが可能です)。そのため、Eclipseは文字列リテラルを検出するように構成できるため、コードに誤って外部化されていないUI文字列が残されることはありません。ただし、外部化されるべきではない文字列(正規表現など)があるため、// $ NON-NLS-1 $はその事実をコンパイラに伝える方法を提供します。
文字列は翻訳できません。これは、Eclipseエディターに、ストリングをリソースなしとしてフラグ付けしないように指示します。これは多言語アプリケーションにとって重要です。
NON-NLS
は、Non-NationalLanguageSupport。
Wikipedia も提案しますNon-NativeLanguageSupport(NLS)この最後のものはあまり使用されません。
NLSは、アプリケーションの国際化に関するものです。 Eclipseは、コード内のハードコーディングされた文字列を見つけるのに役立ちます。文字列が国際化の一部ではないことを示すには、コメント//$NON-NLS-x$
を追加します。xは文字列の位置です。次の例では、両方の"!"
は国際化の一部ではないハードコードされた文字列です。
public String foo(String key) {
return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$
}
ノート:
//
が必要です$NON-NLS$
はありません//$NON-NLS-x$
を6回記述する必要があります)書籍 EMF:250ページのEclipse Modeling Framework のコメント:
NLS以外のマーカー—EclipseのJavaコンパイラには、外部化されていない文字列に警告またはエラーとしてフラグを立てて、各国語サポート(NLS)の有効化を促進します。 EMFで生成されたコードは、ユーザーに表示されるメッセージにハードコードされた文字列を使用しません。ただし、たとえば、プロパティファイル内の外部化された文字列を検索するためのキーとして、文字列リテラルは頻繁に表示されます。このプロパティは、これらのリテラルを翻訳不可としてマークするコメントを含めるかどうかを制御し、コンパイラがフラグを付けないようにします。
詳細については、ページ ジェネレータGUI および Eclipseプラグインの国際化方法 も参照してください。
この機能を有効/無効にすることができます。 Eclipse NeonでProject > Properties > Java Compiler > Errors/Warnings
フィールドを選択しますNon-externalized strings (missing/unused $NON-NLS$ tag)
あなたがAndroid開発者である場合。 R.stringを使用するコードでstrings.xmlファイルを読み取るには、ユーザーに表示されるすべての文字列がリソースファイル/res/values/strings.xmlにある必要があります。タグ// $ NON-NLS- $を追加すると、文字列はユーザーには表示されないことに注意してください。
Eclipse Heliosの警告は、Window -> preferences -> Java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag)
でオンにすることができます。
アクティビティを多言語でプログラミングすることを計画している場合は、これをオンにすることをお勧めします。そして、アクティビティの内部にある文字列に&NON-NLS $タグを追加します。警告またはエラーを右クリックすると、Eclipseはクイック修正に&NON-NLS $タグを追加します。
これは、おそらくアプリケーションのユーザーには表示されないため、文字列を翻訳する必要がないことを示すためにEclipseによって使用されます。
外部化されていない文字列について文句を言わないように、またローカライズを必要としないことをコンパイラに伝えます。