JAVA SSM实现国际化 中英双语网站

news/2024/5/19 7:59:41/文章来源:https://blog.csdn.net/qq_36992939/article/details/84204896

一、思路

前段时间做了一个双语网站,记录一下自己实现国际化的方式。

实现国际化有两种方法。

1、第一种调用必应、百度、微软等翻译接口实时翻译。

  • 优点:对于开发者来说非常省时省力,在前端直接调用接口翻译,使用js保存cookie进行语言切换,翻译效果也还可以。
  • 缺点:每次切换页面最先显示的是中文,然后在翻译成其他语言,而且翻译插件都会自带一些弹出层,不好看,用户体验不好。

2、第二种是使用i18n配置结合英文数据库。静态内容走配置,动态内容存放在数据库中。

  • 优点:能够根据需求写入翻译过的内容,比第一种实时翻译更准确。
  • 缺点:每种语言都要写一个配置文件,后期维护麻烦,工作量巨大。

二、举例

1、谷歌翻译

<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head><meta charset="utf-8" /><title>TranslateTool</title>
</head>
<body><div>Just do it.</div><!--谷歌翻译--><div id="google_translate_element"></div><script>function googleTranslateElementInit() {new google.translate.TranslateElement({layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL}, 'google_translate_element');}</script><script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
</body>
</html>

效果:

2、必应翻译

<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head><meta charset="utf-8" /><title></title>
</head>
<body><div>Just do it.</div><div>Just do it.</div><div>Just do it.</div><div>Just do it.</div><div>Just do it.</div><!--必应翻译--><div id='MicrosoftTranslatorWidget' class='Dark' style='color:white;background-color:#555555'></div><script type='text/javascript'>setTimeout(function () { { var s = document.createElement('script'); s.type = 'text/javascript'; s.charset = 'UTF-8'; s.src = ((location && location.href && location.href.indexOf('https') == 0) ? 'https://ssl.microsofttranslator.com' : 'http://www.microsofttranslator.com') + '/ajax/v3/WidgetV3.ashx?siteData=ueOIGRSKkd965FeEGM5JtQ**&ctf=True&ui=true&settings=Manual&from='; var p = document.getElementsByTagName('head')[0] || document.documentElement; p.insertBefore(s, p.firstChild); } }, 0);</script>
</body>
</html>

效果:

3、微软翻译

<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head><meta charset="utf-8" /><title></title>
</head>
<body><div>Just do it.</div><!--微软翻译--><div id="MicrosoftTranslatorWidget" style="width: 100%; min-height: 57px; border-color: #170D07;background-color: #362F2A;"><noscript><a href="http://www.microsofttranslator.com/bv.aspx?a=http%3a%2f%2flocalhost%2f">Translatethis page</a><br />Powered by <a href="http://www.microsofttranslator.com">Microsoft® Translator</a></noscript></div><script type="text/javascript">/* <![CDATA[ */setTimeout(function () {var s = document.createElement("script");s.type = "text/javascript";s.charset = "UTF-8";s.src = "http://www.microsofttranslator.com/Ajax/V2/Widget.aspx"+ "?mode=auto"+ "&from=en"+ "&layout=ts"+ "&appId=<%= InteractiveSDK.Properties.Settings.Default.WidgetAppId %>";var p = document.getElementsByTagName('head')[0] || document.documentElement; p.insertBefore(s, p.firstChild);}, 0);/* ]]> */</script>
</body>
</html>

效果:

微软翻译我觉得太笨重,选择了比较轻量的必应翻译。使用了必应进行翻译觉得鼠标悬停在文字上背景图会变成淡黄色,这个弹出层也不好看

就把引用的js保存到本地,修改混淆后的css样式。折腾了大半天,终于去掉了难看的样式,本以为这样就完事了。回家打开网站一看翻译失效了,刚开始以为是下午调试太多,把免费翻译的量用完的原因,换了一个appid改上去就能用了。第二天到公司一看翻译又失效了,查了很多资料保存到本地后那个appid是会过期的。于是我就去官网尝试申请个appid,但是现在必应官网改了以后申请appid非常麻烦,还必须要外国的银行卡。。这我哪会有,太麻烦了果断放弃。

4、i18n配置+英文数据库

首先在src目录下新建两个名为xx_en_US.properties和xx_zh_CN.properties的配置文件。注意:两个文件的第一个下划线前的名字必须相同,后面的也不能出错,不然会导致找不到资源无法翻译。

 

我就拿注册页面来举例吧。

英文页面配置信息:

中文页面配置信息:

 

然后在jsp页面导入fmt标签

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%String code=request.getParameter("code");if(code!=null){if("en".equals(code)){session.setAttribute("locale", Locale.US);session.setAttribute("code", "en");}else if("zh".equals(code)){session.setAttribute("locale", Locale.CHINA);session.setAttribute("code", "zh");}}%><c:if test="${sessionScope.locale!=null }"><fmt:setLocale value="${sessionScope.locale }"/></c:if><fmt:setBundle basename="register"/><title><fmt:message key="title"/></title>

 上面代码就把标题title变成了双语。

 

 

注册页面的国际化就实现了。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_895572.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈大型网站动态应用系统架构

动态应用&#xff0c;是相对于网站静态内容而言&#xff0c;是指以c/c、php、Java、perl、.net等服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。 大型动态应用系统…

sql server数据库《音乐网站》项目歌曲管理模块

1.sql server数据库《音乐网站》项目歌曲管理模块 你&#xff08;1&#xff09;任务描述 《歌曲管理》模块的E-R图如图2.50.1 所示&#xff0c;逻辑数据模型如图2.50.2 所示&#xff0c;物理数据模型如图2.50.3所示&#xff0c;数据表字段名定义见表2.50.1。请按以下设计完成数…

ASP.NET网站开发——LINQ TO SQL 动态数据支持

ASP.NET 3.5 Extensions CTP 包含了一个新特性是 ASP.NET Dynamic Data Support&#xff08;动态数据支持&#xff09;&#xff0c;它允许开发人员不用编写一行代码就能快速地建造使用LINQ to SQL对象模型的数据驱动网站。 下面就来简单介绍一下创建步骤&#xff1a; 1.创建AS…

ASP.NET网站开发——用户控件与HttpHandler

一丶用户控件 定义&#xff1a;用户控件可用来实现页面中可重用的代码&#xff0c;是可以一次编写就多处方便使用的功能块。它们是ASP.NET控件封装最简单的形式。由于它们最简单&#xff0c;因此创建和使用它们也最简单。用户控件实际上是把已有的服务器控件组合到一个空间容器…

ASP.NET网站开发——LINQ TO SQL 查询数据库数据(八大子句)

LINQ查询字句概述 1.查询&#xff08;Query&#xff09;是一组指令&#xff0c;这些指令可以从一个或多个给定的数据源中检索数据&#xff0c;并指定检索结果的数据类型和表现形式。 2.查询表达式是一种用查询语法表示的表达式&#xff0c;由一组用类似于SQL的生明性语法编写的…

ASP.NET网站开发——成员资格(安全模式)

安全的必要性 构造特殊的链接地址&#xff0c;导致文件内的数据泄露 数据库泄露 安全防范的首要范畴&#xff1a;所有的HTTP访问都要经过IIS&#xff0c;所以限制IIS的安全性是关键 asp.net的安全模式 简介&#xff1a;根据所请求的资源类型&#xff0c;IIS能够自己处理请求&…

ASP.NET网站开发——LINQ TO SQL类

LINQ TO SQL是LINQ中最重要的一个组件&#xff0c;为NET. Framework3.5所支持&#xff0c;它可以为关系数据库提供一个对象模型&#xff0c;并在该对象模型基础上实现对数据的查询丶添加丶修改丶删除等功能&#xff0c;即LINQ TO SQL提供了用于将关系数据作为对象管理的运行时…

React + Vite 实现一个音乐网站(项目搭建篇)

最近找工作屡屡碰壁&#xff0c;突然不想努力了… 最初想搭建一个个人博客&#xff0c;技术栈确定为React TS Vite&#xff0c;一方面是为了学习新知识&#xff0c;一方面是实在闲着。但是由于之前做过个人博客所有觉得个人博客可能没啥意思。主要是设计也是一大麻烦&#x…

React + Vite 实现一个音乐网站(menu篇)

众所周知&#xff0c;每个网站都有菜单… 1.建立component文件夹 内部创建menu文件夹&#xff0c;文件夹内创建index.jsx和index.scss 目录结构如下 2.代码的编写 1.解决思路&#xff1a;首先我们肯定是要搭建页面的&#xff0c;我将meun分为两部分一步份为logo&#xff0…

React + Vite 实现一个音乐网站(动画篇)

为了让网站能够炫酷一点&#xff0c;必然的动画是不可或缺的 现在实现一个类似canvas流动背景的功能&#xff0c;最初设计是遍历多个小球在页面上&#xff0c;然后小球在dom节点内移动变换。后决定加入小球一起变换&#xff0c;让小球跟随大球移动&#xff0c;同时小球也能有自…

React + Vite 实现一个音乐网站(aplayer音乐播放器 )

众所周知&#xff0c;音乐网站需要能播放音乐 1.页面搭建 我们需要搭建这样一个部分 那么秉承一分为二的原则&#xff0c;左边音乐列表&#xff0c;右边显示cd图片。理所应当我们得让cd运动起来。 components里面建立文件夹Music&#xff0c;文件夹内新建index.jsx和index.scs…

快速把网站变成纯灰度显示

直接上代码了&#xff0c;在Header中添加这句话&#xff1a; <style>html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale1);-webkit-filter: grayscale(100%);}</style> 上面的应该是对应IE的&#xff0c;Mac版Chrome&#xff0c;没有进行实测…

看李俊超老师SEO视频教程 全程笔记

SEO教程详解 一次偶然的机会发现了百度文库新推出的公开课栏目&#xff0c;并在其中发现了的李俊超老师的SEO视频教程&#xff0c;从中学到了很多知识。并在观看的过程中做了如下笔记&#xff1a; 核心思想及工作流程 1&#xff0e;内容为王&#xff0c;外链为帝&#xff0…

网站在微信中提示从浏览器打开

做微信营销活动或者APK下载推广时候&#xff0c;域名被经常被封&#xff0c;做到微信中正常使用呢&#xff1f;这就要借助一些工具来实现有效的操作。 由于微信的限制&#xff0c;通常会出现下面几种情况 1、应用文件在内置浏览器中下载全部被屏蔽掉&#xff0c;造成很多人用…

插件效果【网站开发必备】——12款响应式 Lightbox(灯箱)效果插件

文章结束给大家来个程序员笑话&#xff1a;[M] 灯箱效果&#xff08;Lightbox&#xff09;是网站中最用常的效果之一&#xff0c;用于现实相似模态对话框的效果。网络上各种 Lightbox 插件满目琳琅&#xff0c;随着应响式计划&#xff08;Respnsive Design&#xff09;的开展&a…

插件网站Formula.js – 实现 MS Excel 公式的 JavaScript 工具库

这两天一直在研究插件网站之类的问题,上午正好有机会和大家讨论一下. Formula.js 是一个实现 Microsoft Excel 和 Google Spreadsheets 等类似的电子表格应用程序拥有的强大公式的功能库&#xff0c;带给 Web 开辟人员最经常使用的日期/时光&#xff0c;文本&#xff0c;逻辑&a…

插件网站zoom.js:一款效果很独特的页面内容缩放插件

最近研究插件网站&#xff0c;稍微总结一下&#xff0c;以后继续补充&#xff1a; zoom.js 提供的 JavaScript API 让网站开发人员能够给页面内容添加缩放效果。在页面上点击&#xff0c;目标处的内容会放大&#xff0c;再次点击或者按 ESC 键即可恢复原始巨细。zoom.js 提供了…

linux服务器搭建网站

搭建网站环境用的是lnmp即&#xff1a;linuxnginxmsqlphp 1 命令行输入 wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh lnmp 出现选择项&#xff0c;如图&#xff…

java web 网站头像上传处理 (springmvc +bootstrap+cropper)

制作头像上传。请根据您的实际需求&#xff0c;修改代码&#xff0c;不完全正确&#xff0c;仅供参考&#xff01; 前端页面设计使用bootstrap &#xff0c;头像预览和剪裁工具使用cropper 后台使用springmvc。 现在来看前端的页面设计 前端页面设计&#xff0c;自然需要boo…

大型网站架构演变和知识体系

大型网站架构演变和知识体系 之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值得参考的&#xff0c;不过感觉他们讲的更多的是每次演变的结果&#xff0c;而没有很详细的讲为什么需要做这样的演变&#xff0c;再加上近来感…