关于国际化中的$NON-NLS-1$

简介:

这实际与eclipse中支持i18n的一种方式eclipse的标准结构,将所有string常量定义到·properties中,例如下面程序段中的TestRef.hello实际上是·properties中的一个key TestRef.hello=Hello

eclipse时,经常在官方的例子中看到一些奇怪的注释,例如:  shell.setText(Messages.getString("TestRef.hello")); //$NON-NLS-1$
这$NON-NLS-1$到底代表什么呢?当时在一阵浅尝辄止之后,也就忽略了这个问题,如下图:
 
现在大家也许对注释$NON-NLS-1$的含义就能够猜到个大概了,我 个人猜测他也许就是non need localize string 1的缩写
rcp的文档里是这样表述的The string $NON-NLS-1$ is a hint for both the compiler and the Externalization(客观性,外表性,外部化) wizard that the first character string on this line is a tag or keyword of some sort and should not be localized.
也就是说$NON-NLS-1$表明本行的第一个string型变量是一个标签或者关键字,不需要被本地化.  

 

 

 

 

TestRef.java文件

 

 

复制代码
 1 import org.eclipse.swt.widgets.Display;
 2 import org.eclipse.swt.widgets.Shell;
 3 //TestRef.java文件
 4 public class TestRef {
 5     public static void main(String[] args) {
 6         TestRef window = new TestRef();
 7         window.open();
 8     }
 9     public void open() {
10         final Display display = Display.getDefault();
11         final Shell shell = new Shell();
12         shell.setSize(500, 375);
13         shell.setText(Messages.getString("TestRef.hello"));
14  
15         shell.layout();
16         shell.open();
17         while (!shell.isDisposed()) {
18             if (!display.readAndDispatch()) {
19                 display.sleep();
20             }
21         }
22     }    
23 }
复制代码

Messages.java

复制代码
 1 import java.util.MissingResourceException;
 2 import java.util.ResourceBundle;
 3 
 4 //Messages.java文件
 5 public class Messages {
 6     private static final String BUNDLE_NAME = "test";//$NON-NLS-1$
 7     private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
 8             .getBundle(BUNDLE_NAME);
 9 
10     private Messages() {
11     }
12 
13     public static String getString(String key) {
14         try{
15             return RESOURCE_BUNDLE.getString(key);
16         }catch(MissingResourceException e){
17             return '!' + key + '!';
18         }
19 
20     }
21 }
复制代码

test.properties

TestRef.hello=Hellokxh
//TestRef.hello5=Hellokxh

运行结果:

如果在test.properties中没有这个对应的key就是文件中注释的部分的话

但是注意着几个文件之间的位置

test.properties文件是在src资源文件夹下.不能更换位置.

 


本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/4234587.html,如需转载请自行联系原作者

相关文章
|
5月前
|
自然语言处理 搜索推荐 UED
国际化和本地化?
【6月更文挑战第8天】在Python中实现多语言支持变得日益重要,尤其是随着全球化的推进。文章介绍了国际化(i18n)和本地化(l10n)的概念,前者是设计可适应多种语言的软件,后者是针对特定区域调整软件。使用gettext库是Python中实现这一目标的关键,它允许标记待翻译的文本。首先,安装gettext库,然后设置本地化资源路径,通过`gettext.install()`和`gettext.translation()`加载翻译文件。管理本地化资源涉及存储不同语言的翻译文件,并根据当前语言环境加载。为了优化,可以使用字符串格式化、多语言框架(如Babel),并提供用户自定义语言选择。测试和
59 3
国际化和本地化?
|
4月前
|
存储 自然语言处理 Java
如何在Java中实现国际化与本地化
如何在Java中实现国际化与本地化
|
4月前
|
存储 自然语言处理 Java
实现Java中的国际化和本地化
实现Java中的国际化和本地化
|
4月前
|
存储 Java 文件存储
Java中的国际化与本地化处理
Java中的国际化与本地化处理
|
5月前
|
C语言
C 语言 locale.h 库介绍
C 语言 locale.h 库介绍
|
6月前
|
存储 自然语言处理 开发者
Django国际化与本地化
Django提供了强大的国际化和本地化支持,使开发者能够轻松地构建多语言和多地区的Web应用
51 3
|
6月前
|
自然语言处理 中间件 开发者
Django的国际化与本地化支持:打造多语言应用
【4月更文挑战第15天】Django,一款强大的Web框架,内置出色的支持国际化和本地化功能,使得创建多语言应用变得简单。本文介绍了国际化(i18n)与本地化(l10n)的概念,阐述了Django的相应机制,包括标记可翻译字符串、提取与翻译、设置语言和地区、本地化格式处理。遵循文中步骤,开发者能有效构建适应不同语言和地区需求的Web应用,提升用户体验。
国际化
国际化
118 0
国际化
国际化器
国际化器
80 0