331

在 Eclipse 源代码中,我在这样使用的注释中发现了一些“$NON-NLS-1$”:

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

这意味着什么 ?

4

6 回答 6

385

它们使 Eclipse 在遇到字符串文字时发出的警告静音(并且已配置为抱怨)。

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

于 2009-03-17T12:40:34.977 回答
60

该字符串不可翻译。它告诉 Eclipse 编辑器不要将该字符串标记为无资源。这对于多语言应用程序很重要。

于 2009-03-17T12:37:14.097 回答
33
于 2016-10-26T15:41:59.353 回答
14

如果你是安卓开发者。用户可能看到的所有字符串都应该在资源文件 /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$ 标记。

于 2011-02-08T17:53:34.893 回答
9

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

于 2009-03-17T12:38:35.217 回答
5

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

于 2009-03-17T12:38:33.890 回答