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 ;
}
分享到:
相关推荐
这是一个关于处理javascript的国际化问题的一篇技术文章。
JavaScript(简称JS)国际化(i18n,国际化英文单词“internationalization”的缩写)是为网站或应用程序提供多语言支持的过程。这个过程涉及到将文本、日期、数字和其他文化特定的元素从源语言(通常是英语)转换成...
JavaScript(Js)国际化插件是用于在Web应用中实现多语言支持的一种工具。它使得开发者能够轻松地根据用户的地域设置,展示相应的语言内容。在Web全球化日益重要的今天,这种插件成为了许多网站和应用程序不可或缺的...
JavaScript 国际化(i18n)是网站或应用程序为了支持不同地区和语言而进行的一种设计和开发方法。为了实现这一目标,开发者通常会使用特定的格式存储多语言资源,如`.properties`文件。这些文件包含了键值对,其中键...
i18n JavaScript国际化翻译需要引用的js 可参考国际化翻译 https://blog.csdn.net/qq_36992948/article/details/120062824
FBT(Facebook Translation Bundle Tool)是Facebook开源的一个JavaScript国际化框架,它旨在简化Web应用的多语言支持,同时保持代码的可读性和维护性。在深入理解FBT之前,我们需要先了解一些基本的国际化(i18n)...
JavaScript(JS)的国际化处理则相对复杂一些,因为JavaScript本身并不支持多语言。一种常见做法是通过后端服务动态加载不同语言的JSON文件,或者在HTML中嵌入多语言数据。例如,我们可以创建两个JSON文件: - `...
JavaScript(简称JS)是网页开发中的重要脚本语言,它为开发者提供了丰富的功能,其中之一就是实现国际化(i18n,Internationalization)。国际化是让软件能够适应不同地区、语言和文化背景的重要特性,使得应用程序...
直接引入js,复制黏贴一段代码, 并把切换国际化的按键 id设为“change”. 里面有文档说明。复制黏贴就可用,无翻译小窗口,直接国际化。 但是机械翻译,只使适用首页那些简单的代码,涉及文章的,还是要数据库中英版本各...
描述中的“一种将国际化引入JS的简单方法”表明i18nliterally库提供了易于理解和使用的API,旨在帮助开发者轻松地在JavaScript项目中添加多语言支持。这意味着它可能具有直观的语法和清晰的文档,使得开发者能够快速...
本文将详细探讨如何使用JavaScript(简称js)中的i18n库实现页面国际化。 首先,需要理解i18n的含义。"i18n"是一个行业术语,代表“internationalization”,是指软件或文档在设计阶段就考虑了不同地区和语言的用户...
由于最新版的jquery.i18n.properties有问题,特意从google下载稳定的老版,这个zip包已包含原版和minified版
JsTalks JsTalks 是一个 JavaScript 国际化工具。 任何使用此工具的 JavaScript 网络应用程序都将能够完全国际化。 此工具将在从 Web 服务器托管您的站点或在本地运行文件时工作。如何使用在文件夹js/jsTalks 中包含...
综上所述,"js/jquery 国际化 全兼容"的Demo涵盖了从检测用户语言到动态切换和显示不同语言内容的全过程,是学习和实践JavaScript和jQuery国际化的一个实用示例。通过深入理解并应用这些知识点,开发者可以构建出...
jQuery i18n 插件是基于 jQuery 和 i18next 的,i18next 是一个强大的 JavaScript 国际化框架。通过结合这两个库,开发者可以创建支持多种语言的应用,无需大量重复的代码。这个插件的工作原理是将翻译文本存储在一...