var controller;
var rootPath = getRootPath();
//Js入口地方
$(document).ready(function() {
jQuery.fn.ready(getPropertyFileName);
});
//获得项目名 如/TestAAA
function getRootPath() {
//获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp
var curWwwPath = window.document.location.href;
//获取主机地址之后的目录,如: uimcardprj/share/meun.jsp
var pathName = window.document.location.pathname;
var pos = curWwwPath.indexOf(pathName);
//获取主机地址,如: http://localhost:8083
var localhostPaht = curWwwPath.substring(0, pos);
//获取带"/"的项目名,如:/uimcardprj
var projectName = pathName
.substring(0, pathName.substr(1).indexOf('/') + 1);
return (projectName);
}
/**
* 国际化主调函数
*/
function getPropertyFileName(){
//获得.properties文件名
var PropertyFileName=$("#PropertyFileName").val();
if(PropertyFileName==null ||PropertyFileName.length<0||PropertyFileName==""){
PropertyFileName=getParamter("PropertyFileName");
}
else if(PropertyFileName.length>0&&PropertyFileName!=""){
geti18n(PropertyFileName);
}
}
//从后台读取对应文件 并返回Map值
function geti18n(PropertyFileName){
var postUrl=rootPath+"/xx/I18N/i18n.do?PropertyFileName="+PropertyFileName;
$.ajax({
url:postUrl,
success:function(result){
if(result.error){
alert(result.error);
}else
if(result){
controller=new LanguageController(result.lang,result.titles);
setSpanName();
}else{
//alert('没找到资源文件');
}
},
dataType:"json",
async: false,
error:function(){
}
});
}
function LanguageController(lang,titless) {
this.language = {
lang: lang,
titles:titless
};
}
/**
* 获取所有class为‘paltform-i18n’的dom对象,替换国际化内容 key值是.properties文件
* 的键 根据键值到.properties文件得到对应的值
*/
function setSpanName() {
var palt = $(".paltform-i18n");
try {
if (controller) {
for ( var i = 0; i < palt.length; i++) {
var spankey=$(palt[i]).attr("key");
if (spankey == null || spankey == ""||spankey==undefined) {
continue;
}
var valuestr=controller.language.titles[spankey];
if(valuestr!=null || valuestr!=""){
$(palt[i]).html(controller.language.titles[spankey]);
}
}
}else{
}
} catch (e) {
}
}
//根据键值得到国际化内容
function getLanguageValue(key) {
try {
if (controller) {
var value = controller.language.titles[key];
if (value == null || value == "") {
return key;
}
return value;
}else{
return key;
}
} catch (e) {
top.setStatusBarText(e);
}
}
国际化文件i18n-info.properties
000000=Database connection disconnect
100001=Operation failure
000001=Save failed
000002=Query failed
000003=delete failed
000004=Update failed
000005=Reset failed
页面
//存放文件名
<input type="hidden" name="propertyname" id="propertyname" value='propertyname'/>
<td width="17%"><span id="xx" class="paltform-i18n" key="yinbaobianhao">xx:</span></td>
后台代码
/**
*
*@User :Test
*@date :2014-6-17 下午04:25:55
*@return :Object
*@userFor :
*/
@RequestMapping(value = "/i18n")
@ResponseBody
public Object i18n(HttpServletRequest request){
Map<String,Object> result = new HashMap<String, Object>();
Map<String,Object> content = new HashMap<String, Object>();
//文件名称
String fileName = request.getParameter("fileName");
//语言类型
String i18n = request.getParameter("i18n");
HttpSession session = request.getSession();
//项目部署位置
String ctxDir = session.getServletContext().getRealPath(String.valueOf(File.separatorChar));
String location = ctxDir+"jasframework\\i18n\\resources\\" + i18n + "\\" +fileName+".properties";
try {
InputStream fin = new FileInputStream(new File(location));
Properties prop = new Properties();
prop.load(fin);
Set<Object> keys = prop.keySet() ;
for(Object v:keys)
{
content.put((String)v, prop.getProperty((String)v));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
result.put("lang", i18n);
result.put("titles", content);
return result ;
}