如何创建java国际化类资源文件

如何创建java国际化类资源文件,第1张

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

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

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

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

[java] view plain copy

<p>sys.login.index=index.jsp\u9875</p>

[java] view plain copy

sys.login.index=index.jsp page

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

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

[java] view plain copy

package com.xiaoli.test

import java.util.Locale

import java.util.ResourceBundle

public class ResourceMessage

{

private static ResourceMessage resourceMessage = null

private ResourceBundle resourceMessage_zh = null

private ResourceBundle resourceMessage_en = null

private Locale local

//此时该国际化资源文件为下面的完全限定类名访问,LDP为资源文件前缀

private static final String SOURCE_FILE_ZH= "com.xiaoli.test.LDPC"

private static final String SOURCE_FILE_EN= "com.xiaoli.test.LDPE"

private ResourceMessage()

{

//分别将两个文件绑定到相应的语言环境下

resourceMessage_zh = ResourceBundle.getBundle(SOURCE_FILE_ZH, Locale.CHINA)

resourceMessage_en = ResourceBundle.getBundle(SOURCE_FILE_EN,

Locale.ENGLISH)

}

/**

* 单例模式

* 只创建一个实例

* @return

* @see [类、类#方法、类#成员]

*/

public static ResourceMessage getInstance()

{

if (null == resourceMessage)

{

synchronized (ResourceMessage.class)

{

resourceMessage = new ResourceMessage()

}

}

return resourceMessage

}

public String getMessage(String key)

{

return getMessage(key, local)

}

public String getMessage(String key, Locale local)

{

if (null == local)

{

local = Locale.getDefault()

}

String msg = null

if (Locale.CHINA.equals(local))

{

msg = resourceMessage_zh.getString(key)

}

else if (Locale.ENGLISH.equals(local))

{

msg = resourceMessage_en.getString(key)

}

//如果找不到资源文件,返回key

if (null == msg || "".equals(msg))

{

return key

}

return msg

}

/** 测试方法

* @param args

* @see [类、类#方法、类#成员]

*/

public static void main(String[] args)

{

String key = "sys.login.index"

//String value = ResourceMessage.getInstance().getMessage(key, Locale.ENGLISH)

//使用当前默认的语言环境获取,这里为中文支持

String value = ResourceMessage.getInstance().getMessage(key)

System.out.println(value)

}

}

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

index.jsp页 和 index.jsp page

所谓资源文件就是*.properties啊,把需要国际化的输出字符串都弄成键值对存放在properties中,每种语言一个配置文件,键相同,值就是各种语言的翻译;国际化的时候读取不同的配置文件就OK了:Properties p=new Properties()

p.load(new FileInputStream(new File(String FileName)))p.getProperty(String key)。

国际化就是在你导入struts之后工程目录下的ApplicationResources.properties文件当你在struts-config.xml配置了:<message-resources parameter="xxx.xx.xxx.ApplicationResources" />比如简体中文的是:ApplicationResources_zh_CN.properties会自动根据你 *** 作系统的语言环境转换语言,但是在你JSP网页上,必须要用struts标签


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/11902867.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存