在日食的源代码,我已经发现了一些'$非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)

Window of the Project Properties on Eclipse

如果您是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来指示字符串并不需要翻译,可能是因为它不会给应用程序的用户看到。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top