当前位置:  开发笔记 > 编程语言 > 正文

$ NON-NLS-1 $是什么意思?

如何解决《$NON-NLS-1$是什么意思?》经验,为你挑选了6个好方法。

在Eclipse源代码中,我发现在这样的评论中有一些'$ NON-NLS-1 $':

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

那是什么意思 ?



1> Aaron Maenpa..:

他们在遇到字符串文字时(并且已经配置为抱怨)沉默了Eclipse发出的警告.

这个想法是UI消息不应该作为字符串文字嵌入,而是从资源文件中获取(以便它们可以被翻译,校对等).因此,Eclipse可以配置为检测字符串文字,这样您就不会意外地在代码中留下未经过外化的UI字符串; 但是,有些字符串不应该外部化(例如regexps),因此,// $ NON-NLS-1 $为您提供了一种将这一事实传达给编译器的方法.


@MatrixFrog它似乎是"国家语言支持",至少这是它在这里提到的:http://msdn.microsoft.com/en-us/library/ms906482.aspx
为了进行评估,我认为如果在不同的环境中更改代码,则不应使用此类特定于IDE的标记.虽然标记没有任何损害,但它会使代码混乱并使其维护起来稍微困难一些.
那么,NLS代表什么?
那么,如何配置Eclipse以检测字符串文字,以便缺少// $ NON-NLS-1 $会引发警告或smt?
NetBeans平台使用// NOI18N注释关键字用于相同目的
@rpr要配置Eclipse以警告您缺少// $ NON-NLS-1 $,请查看Window - > Java - > Compiler - > Errors/Warnings.它低于Code Style下拉列表.
我假设`// $ NON-NLS-1 $ // $ NON-NLS-2 $ // $ NON-NLS-3 $`只需在一行中静音3个字符串.你能不能把`// $ NON-NLS $'静音一行中的所有字符串文字?

2> McDowell..:

字符串不可翻译.它告诉Eclipse编辑器不要将字符串标记为unresourced.这对多语言应用程序很重要.


很好地解释为什么国旗被称为NON NLS(无国家语言支持).谢谢.

3> olibre..:

NON-NLS - ñ大号 anguage 小号 upport.
维基百科建议也 - ñ ative 大号 anguage 小号 upport(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$)

EMF:Eclipse Modeling Framework一书第250页说:

非NLS标记 - Eclipse的Java编译器能够将非外化字符串标记为警告或错误,以便于启用国家语言支持(NLS).EMF生成的代码不会将硬编码字符串用于用户将看到的消息; 但是,字符串文字确实经常出现,例如,作为在属性文件中查找外化字符串的键.此属性控制是否包含将这些文字标记为不可翻译的注释,以便编译器不会标记它们.

有关更多详细信息,另请参阅"生成器GUI"和" 如何国际化Eclipse插件 "页面.

您可以启用/禁用此功能.在Eclipse Neon上转到
Project > Properties > Java Compiler > Errors/Warnings
并选择该字段
Non-externalized strings (missing/unused $NON-NLS$ tag)

Eclipse上项目属性的窗口



4> fishjd..:

如果您是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 $标记.



5> Kees de Koot..:

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



6> Björn..:

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


Eclipse将自己的编译器作为JDT的一部分用于此类事务.所以是的,它是编译器(无论如何都是Eclipse的编译器).
我不认为这是编译器,我认为它是Eclipse抱怨.
推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有