在Eclipse源代码中,我在注释中发现了一些“$NON-NLS-1$”:

private String toolTip = ""; //$NON-NLS-1$

这是什么意思?


当前回答

NON-NLS意为非国家语言支持。 维基百科还提出了非母语语言支持(NLS),但最后一项并不常用。

NLS是关于国际化你的应用程序。Eclipse帮助您定位代码中的硬编码字符串。要指出字符串不是国际化的一部分,可以附加注释//$NON-NLS-x$,其中x是字符串的位置。在下面的例子中,“!”都是硬编码的字符串,不是国际化的一部分:

 public String foo(String key) { 
   return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$ 
 } 

注:

每次都必须使用前导// 对于同一行中的多个字符串,没有全局$NON-NLS$ (例如,如果你的行有6个字符串,你必须写6次//$NON-NLS-x$)

《EMF: Eclipse建模框架》一书第250页说:

Non-NLS Markers— Eclipse's Java compiler has the ability to flag non-externalized strings as a warning or error, in order to facilitate enablement of National Language Support (NLS). EMF-generated code does not use hard coded strings for messages that the user will see; however, string literals do appear frequently, for example, as keys for lookup of externalized strings in a property file. This property controls whether to include comments that mark those literals as non-translatable, so that the compiler will not flag them.

有关更多详细信息,请参见生成器GUI和如何国际化您的Eclipse插件两页。

您可以启用/禁用此特性。关于日食霓虹灯转到 项目>属性> Java编译器>错误/警告 然后选择字段 非外部化字符串(缺少/未使用$NON-NLS$标签)

其他回答

字符串是不可翻译的。它告诉Eclipse编辑器不要将字符串标记为未使用资源。这对于多语言应用程序很重要。

它告诉编译器不要抱怨一个非外部化的字符串,并且它不需要本地化。

如果你是Android开发者。用户可能看到的所有字符串都应该在资源文件/res/values/strings.xml中读取使用R.string的代码中的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$标记。

NON-NLS意为非国家语言支持。 维基百科还提出了非母语语言支持(NLS),但最后一项并不常用。

NLS是关于国际化你的应用程序。Eclipse帮助您定位代码中的硬编码字符串。要指出字符串不是国际化的一部分,可以附加注释//$NON-NLS-x$,其中x是字符串的位置。在下面的例子中,“!”都是硬编码的字符串,不是国际化的一部分:

 public String foo(String key) { 
   return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$ 
 } 

注:

每次都必须使用前导// 对于同一行中的多个字符串,没有全局$NON-NLS$ (例如,如果你的行有6个字符串,你必须写6次//$NON-NLS-x$)

《EMF: Eclipse建模框架》一书第250页说:

Non-NLS Markers— Eclipse's Java compiler has the ability to flag non-externalized strings as a warning or error, in order to facilitate enablement of National Language Support (NLS). EMF-generated code does not use hard coded strings for messages that the user will see; however, string literals do appear frequently, for example, as keys for lookup of externalized strings in a property file. This property controls whether to include comments that mark those literals as non-translatable, so that the compiler will not flag them.

有关更多详细信息,请参见生成器GUI和如何国际化您的Eclipse插件两页。

您可以启用/禁用此特性。关于日食霓虹灯转到 项目>属性> Java编译器>错误/警告 然后选择字段 非外部化字符串(缺少/未使用$NON-NLS$标签)

Eclipse使用它来表示字符串不需要翻译,可能是因为应用程序的用户不会看到它。