题
在日食的源代码,我已经发现了一些'$非NLS-1$'在评论中使用这样的:
private String toolTip = ""; //$NON-NLS-1$
这是什么意思?
解决方案
它们压制当它遇到字符串(和已配置为抱怨)了Eclipse发出警告。
的想法是,UI消息不应被嵌入为字符串常量,但是从资源文件中,而源(以使它们可以被翻译,校对等)。因此,Eclipse可以被配置为检测字符串文字,让你不小心有假的代码unexternalized UI字符串;但是,也有其不应该被外部化字符串(如正则表达式)等,// $ NON-NLS-1 $给你的方式事实传达给编译器。
其他提示
的字符串不是平移。它讲述了Eclipse编辑器没有标志的字符串作为unresourced。这是为多语言应用很重要。
NON-NLS
装置 非-N家 我语言 S支持.
维基百科 还提议 非-Native 我语言 S支持 (NLS)但是,这最后一个是不是很有用的。
NLS 是关于国际化应用程序。日蚀有助于找到硬编码的字符串在你的代码。来表示一串不是部分的国际化,追加的评论 //$NON-NLS-x$
其中x是的位置。在下面的例子既 "!"
很难编码的字符串不一部分的国际化:
public String foo(String key) {
return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$
}
注:
- 领先
//
是有必要的每个时间 - 没有全球性的
$NON-NLS$
对于多串在同一线
(例如如果你的线有六个弦,你必须写的六倍//$NON-NLS-x$
)
这本书 EMF:日食建模框架至250页 说:
非NLS标— 日食的Java编译器有能力标志的非外部化串如警告或误差,以便支持国家语言支持(NLS)。EMF产生的代码不使用硬编码的字符串的信息,用户将会看到的;然而,字符串做经常出现,例如,如键用于查找的外部化串在一个酒店的文件。这酒店的控制是否包括意见,这标志着那些文字作为非翻译,以便编译器将不会标志它们。
更多详情,又见网页 发电机GUI 和 如何国际化蚀你的插件.
你可以启用/停用这一特征。在日食霓虹灯去
Project > Properties > Java Compiler > Errors/Warnings
并选择的领域
Non-externalized strings (missing/unused $NON-NLS$ tag)
如果您是Android显影剂。所有字符串用户可以看到应该是在资源文件/res/values/strings.xml阅读使用R.string代码..的strings.xml文件中加入标签// $ NON-NLS- $你并指出,该字符串不会被用户看到。
在Eclipse太阳神警告可以在Window -> preferences -> java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag)
被接通。
如果你在你的编程活动将是多语言计划,它会建议把这个上。然后加入与-NLS NON $标签是内部给你活动的字符串。 Eclipse将在速战速决的添加和NON-NLS $标签,如果你右键点击警告或错误。
它使用Eclipse来指示字符串并不需要翻译,可能是因为它不会给应用程序的用户看到。
它告诉编译器不抱怨非外部化字符串,它不需要本地化。