1.
这一句指定的文件的名字,也就是SysConstants这个类中存在一个叫做SYS_PROPERTYNAME的变量,它的值就是sys.properties,也就是这样的
public static String SYS_PROPERTYNAME="sys.properties",你想在加载sys2.properties文件,只需再增加public static String SYS_PROPERTYNAME2="sys2.properties",再用上面的load方法加载即可。也就是p.load(Tools.class.GetClassLoader().getResourceAsStream(SysCOnstants.SYS_PROPERTYNAME2))即可。
2.通过类装载器来装载资源文件,这样就不必写出资源文件的全路径了。
3.加载后的资源文件你可以理解成一个map(类似),等号前边的是key,等号后边的是值。
步骤:1、在存放使用资源的res文件夹下的layout文件夹内新建一个XML布局文件,如命名为:page1.xml。
2、在存放资、代码的文件夹下下找到MainActivity.java,双击打开,在onCreate的方法内添加关联代码。
问题:关于一些大型项目中会使用不同语言版本的视图,比如在一个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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)