Java $NON-NLS-1$是什么意思?
在Eclipse源代码中,我发现在注释中使用了一些“$NON-NLS-1$”,如下所示:Java $NON-NLS-1$是什么意思?,java,eclipse,eclipse-rcp,Java,Eclipse,Eclipse Rcp,在Eclipse源代码中,我发现在注释中使用了一些“$NON-NLS-1$”,如下所示: private String toolTip = ""; //$NON-NLS-1$ 这是什么意思?字符串不可翻译。它告诉Eclipse编辑器不要将字符串标记为未来源。这对于多语言应用程序很重要。它告诉编译器不要抱怨非外部化字符串,并且它不需要本地化。Eclipse使用它来指示字符串不需要翻译,可能是因为应用程序的用户看不到它 当Eclipse遇到字符串文本时(并且已配置为投诉),它们会使Eclipse发
private String toolTip = ""; //$NON-NLS-1$
这是什么意思?字符串不可翻译。它告诉Eclipse编辑器不要将字符串标记为未来源。这对于多语言应用程序很重要。它告诉编译器不要抱怨非外部化字符串,并且它不需要本地化。Eclipse使用它来指示字符串不需要翻译,可能是因为应用程序的用户看不到它 当Eclipse遇到字符串文本时(并且已配置为投诉),它们会使Eclipse发出的警告静音
其思想是UI消息不应该作为字符串文本嵌入,而应该来源于资源文件(以便可以翻译、校对等)。因此,可以将Eclipse配置为检测字符串文本,这样您就不会意外地在代码中留下未国际化的UI字符串;但是,有些字符串不应该外部化(例如regexps),因此,//$NON-NLS-1$提供了一种将该事实传达给编译器的方法。如果您是Android开发人员。用户可能看到的所有字符串都应位于资源文件/res/values/strings.xml中,以便在使用R.string的代码中读取strings.xml文件。。通过添加标记/$NON-NLS-$,您注意到该字符串不会被用户看到 EclipseHelios中的警告可以在
Window->preferences->java->Compiler->code style->“非外部化字符串(缺少/未使用&非NLS$tag)
处打开
如果您计划将活动编程为多语言,建议您启用此功能。然后将&NON-NLS$标记添加到活动内部的字符串中。如果右键单击警告或错误,Eclipse将在快速修复中添加&NON-NLS$标记。
非NLS
表示非-NNationalL语言S支持。还建议非-NativeL语言S支持(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$
Project>Properties>Java编译器>错误/警告
然后选择字段
非外部化字符串(缺少/未使用的$Non-NLS$标记)
我不认为是编译器的问题,我认为是Eclipse的问题。Eclipse有自己的编译器作为JDT的一部分,用于这类事情。所以是的,它是编译器(反正是Eclipse的编译器)。那么,NLS代表什么呢?@matrixprog它似乎是“国家语言支持”“,至少这里是这么说的:为了便于评估,我认为如果代码在不同的环境中被修改,就不应该使用这种特定于IDE的标记。虽然标记不会造成任何伤害,但它会使代码变得混乱,并使维护变得稍微困难。那么,如何配置Eclipse来检测字符串文字,以便丢失//$NON-NLS-1$会引发警告或smt?NetBeans平台出于同样的目的使用//NOI18N comment关键字某些字符串在翻译时无法正常工作。如果字符串表示字符集、HTML/XML标记、正则表达式等,它们可能会改变程序的行为。很好地解释了为什么该标志被称为非NLS(无国家语言支持)。谢谢