在Eclipse源代码中,我在注释中发现了一些“$NON-NLS-1$”:
private String toolTip = ""; //$NON-NLS-1$
这是什么意思?
字符串是不可翻译的。它告诉Eclipse编辑器不要将字符串标记为未使用资源。这对于多语言应用程序很重要。
它告诉编译器不要抱怨一个非外部化的字符串,并且它不需要本地化。
Eclipse使用它来表示字符串不需要翻译,可能是因为应用程序的用户不会看到它。
它们屏蔽了Eclipse在遇到字符串字面值时发出的警告(并且已配置为抱怨)。
其思想是UI消息不应该作为字符串文字嵌入,而是来自资源文件(这样它们就可以被翻译、校对等)。因此,Eclipse可以配置为检测字符串字面量,这样您就不会意外地在代码中留下未外部化的UI字符串;但是,有些字符串不应该外部化(比如regexp),因此,//$NON-NLS-1$提供了一种与编译器沟通事实的方法。
如果你是Android开发者。用户可能看到的所有字符串都应该在资源文件/res/values/strings.xml中读取使用R.string的代码中的strings.xml文件。通过添加标签//$NON-NLS-$,你注意到字符串将不会被用户看到。
日食太阳神中的警告可以在Window -> preferences -> java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag)打开。
Window -> preferences -> java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag)
如果你打算将你的活动编程为多语言,建议打开这个选项。然后将NON-NLS$标记添加到活动内部的字符串中。如果您右键单击警告或错误,Eclipse将在快速修复中添加NON-NLS$标记。
NON-NLS表示< em >非-National __abc3language 年代upport. 维基百科还提出了< em >非-Native __abc3language 年代upport (NLS),但最后一个不太使用
NON-NLS
NLS是关于国际化你的应用程序。Eclipse帮助您定位代码中的硬编码字符串。要指出字符串不是国际化的一部分,添加注释//$NON-NLS-x$,其中x是字符串的位置。在下面的例子中,两个"!"都是硬编码的字符串,不是国际化的一部分:
//$NON-NLS-x$
"!"
public String foo(String key) { return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$ }
注:
//
$NON-NLS$
这本书第250页的Eclipse建模框架说:
Non-NLS标记, Eclipse的Java编译器具有将非外部化字符串标记为警告或错误的能力,以方便启用国家语言支持(NLS)。emf生成的代码不会对用户将看到的消息使用硬编码字符串;但是,字符串字面值确实经常出现,例如,在属性文件中作为查找外部化字符串的键。此属性控制是否包含将这些字面量标记为不可翻译的注释,以便编译器不会标记它们。
有关更多详细信息,请参见生成器GUI和如何国际化您的Eclipse插件页。
可以启用/禁用该特性。在Eclipse Neon上转到 Project > Properties > Java Compiler > Errors/Warnings < br > 并选择字段 Non-externalized strings (missing/unused $NON-NLS$ tag) < / p >
Project > Properties > Java Compiler > Errors/Warnings
Non-externalized strings (missing/unused $NON-NLS$ tag)
.