eclipse中形如$NON-NLS-1$注释的含义

本文解析了Eclipse中实现国际化(i18n)的方法,详细介绍了如何使用$NON-NLS-1$注释标记不需要本地化的字符串,并通过具体代码示例展示了如何将字符串资源外部化到.properties文件中。

刚刚接触eclipse时,经常在官方的例子中看到一些奇怪的注释,例如:shell.setText(Messages.getString("TestRef.hello")); //$NON-NLS-1$
这$NON-NLS-1$到底代表什么呢?当时在一阵浅尝辄止之后,也就忽略了这个问题,今天在阅读Rich Client Tutorial Part 2时,意外的发现了这行注释的真实含义……
^_^真是意外中的收获。

 

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

现在大家也许对注释$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

public class TestRef {                                 
 public static void main(String[] args) {         
  Shell shell =new Shell();                           
  shell.setText(Messages.getString("TestRef.hello")); //$NON-NLS-1$                
 }               

 

Messages.java

public class Messages {                                       
 private static final String BUNDLE_NAME = "test";//$NON-NLS-1$                                                     
 private static final ResourceBundle                       RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);                              
 private Messages() {                                                     
 }                                                                     
 public static String getString(String key) {             
  try {                                                               
   return RESOURCE_BUNDLE.getString(key);          
  } catch (MissingResourceException e) {               
   return '!' + key + '!';                                        
  }                                                                   
 }                                                                    
}

 

test.properties

 

TestRef.hello=Hello                   

提供的引用中未涉及若依框架与alibaba - nls - python - sdk相关内容,不过可以给出一般情况下若依框架集成alibaba - nls - python - sdk的大致思路。 若依框架是一个基于Spring Boot、Spring Cloud & Vue的前后端分离的开发平台,而alibaba - nls - python - sdk是阿里云自然语言和语音相关的Python SDK。要将二者集成,可按以下步骤进行: #### 1. 安装alibaba - nls - python - sdk 在Python环境中安装该SDK,可使用pip命令: ```python pip install alibaba-nls-python-sdk ``` #### 2. 配置阿里云账号信息 在Python代码中配置阿里云的Access Key ID和Access Key Secret,以及相关的语音服务配置。示例代码如下: ```python import nls # 配置Access Key信息 AK_ID = 'your_access_key_id' AK_SECRET = 'your_access_key_secret' APP_KEY = 'your_app_key' # 创建实例 client = nls.NlsClient(ak_id=AK_ID, ak_secret=AK_SECRET) ``` #### 3. 在若依框架中调用Python脚本 若依框架是Java开发的,要调用Python脚本可以使用`ProcessBuilder`或`Runtime.getRuntime().exec()`方法。示例Java代码如下: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class PythonCaller { public static void main(String[] args) { try { // 执行Python脚本 Process process = new ProcessBuilder("python", "your_python_script.py").start(); // 获取脚本输出 BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } // 等待脚本执行完成 int exitCode = process.waitFor(); System.out.println("脚本执行完成,退出码: " + exitCode); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } } ``` #### 4. 数据交互 在若依框架和Python脚本之间进行数据交互。可以通过命令行参数传递数据给Python脚本,Python脚本处理后将结果输出,若依框架再获取输出结果。 ### 注意事项 - 确保Python环境和若依框架所在服务器的环境配置正确。 - 注意阿里云账号信息的安全,避免泄露。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值