博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java API实现国际化资源文件
阅读量:6799 次
发布时间:2019-06-26

本文共 2261 字,大约阅读时间需要 7 分钟。

hot3.png

问题:关于一些大型项目中会使用不同语言版本的视图,比如在一个Java web开发中,在struts中九提供了改种文件的配置项及在View中通过标签<bean:message value="">来根据浏览器不同语言形式来展示页面,实现多语言的互操作。

这里自己将所遇到的这类问题,查看相关资料,通过JDK自带的相关API实现这种国际化操作。

使用到的类主要有:import java.util.Locale; import java.util.ResourceBundle;还需要简单的国家化资源文件(针对不同语言有不同文件 .properties文件,键值对)

比如新建一个包com.xiaoli.test,里面放置两个国际化文件,中文(LDPC.properties)和英文(LDPE.properties)支持:

[java] 
  1. <p>sys.login.index=index.jsp\u9875</p>  
[java] 
  1. sys.login.index=index.jsp page  

上面键值对是指:index.jsp 页

 

而后建立相关测试类实现如下:

[java] 
  1. package com.xiaoli.test;  
  2.   
  3. import java.util.Locale;  
  4. import java.util.ResourceBundle;  
  5.   
  6. public class ResourceMessage    
  7. {    
  8.     private static ResourceMessage resourceMessage = null;    
  9.     private ResourceBundle resourceMessage_zh = null;    
  10.     private ResourceBundle resourceMessage_en = null;    
  11.     private Locale local;    
  12.      //此时该国际化资源文件为下面的完全限定类名访问,LDP为资源文件前缀   
  13.     private static final String SOURCE_FILE_ZH= "com.xiaoli.test.LDPC";   
  14.     private static final String SOURCE_FILE_EN= "com.xiaoli.test.LDPE";    
  15.     private ResourceMessage()    
  16.     {    
  17.         //分别将两个文件绑定到相应的语言环境下  
  18.        resourceMessage_zh = ResourceBundle.getBundle(SOURCE_FILE_ZH, Locale.CHINA);    
  19.        resourceMessage_en = ResourceBundle.getBundle(SOURCE_FILE_EN,    
  20.                Locale.ENGLISH);    
  21.     }    
  22.     /**  
  23.      * 单例模式  
  24.      * 只创建一个实例  
  25.      * @return  
  26.      * @see [类、类#方法、类#成员]  
  27.      */    
  28.     public static ResourceMessage getInstance()    
  29.     {    
  30.         if (null == resourceMessage)    
  31.         {    
  32.             synchronized (ResourceMessage.class)    
  33.             {    
  34.                 resourceMessage = new ResourceMessage();    
  35.             }    
  36.         }    
  37.         return resourceMessage;    
  38.     }    
  39.         
  40.     public String getMessage(String key)    
  41.     {    
  42.         return getMessage(key, local);    
  43.     }    
  44.         
  45.     public String getMessage(String key, Locale local)    
  46.     {    
  47.         if (null == local)    
  48.         {    
  49.             local = Locale.getDefault();    
  50.         }    
  51.         String msg = null;    
  52.         if (Locale.CHINA.equals(local))    
  53.         {    
  54.             msg = resourceMessage_zh.getString(key);    
  55.         }    
  56.         else if (Locale.ENGLISH.equals(local))    
  57.         {    
  58.            msg = resourceMessage_en.getString(key);    
  59.         }    
  60.             
  61.         //如果找不到资源文件,返回key     
  62.         if (null == msg || "".equals(msg))    
  63.         {    
  64.             return key;    
  65.         }    
  66.         return msg;    
  67.     }    
  68.     /** 测试方法  
  69.      * @param args  
  70.      * @see [类、类#方法、类#成员]  
  71.      */    
  72.     public static void main(String[] args)    
  73.     {    
  74.         String key = "sys.login.index";    
  75. //        String value = ResourceMessage.getInstance().getMessage(key, Locale.ENGLISH);    
  76.         //使用当前默认的语言环境获取,这里为中文支持  
  77.         String value = ResourceMessage.getInstance().getMessage(key);   
  78.         System.out.println(value);    
  79.     }    
  80.         
  81. }    

结果,根据手动设置的不同语言环境可以打印不同的值:

index.jsp页 和 index.jsp page

转载于:https://my.oschina.net/softwarechina/blog/157366

你可能感兴趣的文章
Linux文件系统只读Read-only file system
查看>>
Migrate to new vCenter Server while using dvSwitches
查看>>
ConcurrentHashMap原理分析
查看>>
phpstorm config include paths for swoole
查看>>
ruby的基础语法
查看>>
代码触发clistctrl控件的NM_CLICK事件
查看>>
我的友情链接
查看>>
win7安装***失败,出现错误771
查看>>
搭建python本地源
查看>>
【转】WaitN 自动化测试 入门
查看>>
浅谈NAT的原理、缺陷及其解决之道
查看>>
【linux基础】22、iptables基础
查看>>
华为 ACL 问题
查看>>
RHEL设置主机名
查看>>
Java原始的压缩和解压
查看>>
ORACLE系统表和视图说明
查看>>
你在为谁工作
查看>>
5、MySQL多表查询
查看>>
GZIPInputstream解决乱码问题
查看>>
阿里云不能启动docker
查看>>