回答:
それらは、文字列リテラルに遭遇したときにEclipseが発する警告を沈黙させます(そして文句を言うように設定されています)。
UIメッセージは文字列リテラルとして埋め込まれるのではなく、リソースファイルからソースされる(つまり、翻訳、校正などができる)べきです。その結果、文字列リテラルを検出するようにEclipseを設定できるため、誤って外部化されていないUI文字列をコード内に残すことはありません。ただし、外部化すべきではない文字列(正規表現など)があるため、// $ NON-NLS-1 $を使用すると、その事実をコンパイラーに伝えることができます。
文字列は翻訳できません。これは、Eclipseエディターに、文字列にリソースなしのフラグを付けないように指示します。これは、多言語アプリケーションにとって重要です。
NON-NLS
手段の非 - N ational L anguage S upportコマンド。
ウィキペディアはまた、提案している非 - N ative L anguage S upportコマンド(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$
)250ページのEMF: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で使用され、文字列を翻訳する必要がないことを示します。これは、おそらくアプリケーションのユーザーには文字列が表示されないためです。
外部化されていない文字列について文句を言わないようにコンパイラーに指示し、ローカライズは必要ありません。