我已经创建了Web应用程序,但不确定,如何实现像印地语等多种语言支持.I18N可以解决这个问题,还是谷歌翻译可以做到这一点?
答案 0 :(得分:0)
这只是一个大致的想法:
为每种语言制作1个单独的键值对文件
<sp:message code="hi" />
..或者只是使用Spring为你做所有这些事情。
答案 1 :(得分:0)
在这里查看BalusC的答案:How to internationalize a Java web application?
BalusC:
对于基本的JSP / Servlet webapplication,基本方法 将JSTL
fmt
taglib与resource bundles结合使用 properties files。资源包中包含键值对 键是一个常量,对所有语言都是相同的 每种语言的价值不同。资源包通常是ResourceBundle
,由ISO 693-1 API加载。这个可以 但是要进行自定义,以便您可以从中加载键值对 例如数据库。以下是如何国际化您的登录表单的示例 基于属性文件的资源包的webapplication。
创建以下文件并将其放入某个包中,例如
com.example.i18n
(如果是Maven,请将它们放入包装中src/main/resources
)内的结构。
text.properties
(包含默认语言的键值对,通常为英语)login.label.username = Username login.label.password = Password login.button.submit = Sign in
text_nl.properties
(包含荷兰语(nl
)键值对)login.label.username = Gebruikersnaam login.label.password = Wachtwoord login.button.submit = Inloggen
text_es.properties
(包含西班牙语(es
)键值对)login.label.username = Nombre de usuario login.label.password = Contraseña login.button.submit = Acceder资源包文件名应遵循以下模式
name_ll_CC.properties
。_ll
部分应为小写ISO 3166-1 Alpha-2语言代码。它是可选的,只有在需要时才需要_CC
部分存在。_CC
部分应为大写American English国家/地区代码。它是可选的,通常只用于 区分特定国家/地区的语言,例如British English(_en_US
)和jstl-1.2.jar(_en_GB
)。如果尚未完成,请安装JSTL。如果您正在运行Servlet 2.5容器或更新版本(Tomcat 6.0等)并且您的
web.xml
是 声明符合Servlet 2.5规范,然后就放了 webapp的/WEB-INF/lib
文件夹中的this article section。- 醇>
创建以下示例JSP文件并将其放在Web内容文件夹中。
login.jsp
<%@ page pageEncoding="UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <c:set var="language" value="${not empty param.language ? param.language : not empty language ? language :
pageContext.request.locale}“scope =”session“/&gt; JSP / JSTL i18n演示 英语 荷兰 西班牙语 :
:
<c:set var="language">
管理当前语言。如果语言是作为请求参数提供的(通过语言下拉列表), 然后它将被设置。否则,如果语言之前已经设置过 在会话中,然后坚持它。否则使用提供的用户 请求标头中的区域设置。
<fmt:setLocale>
设置资源包的区域设置。重要的是此行之前<fmt:setBundle>
。
<fmt:setBundle>
按其基本名称(即完整限定的包名称)初始化资源包 没有_ll_CC
说明符的名称。)
<fmt:message>
按指定的捆绑密钥检索消息值。
<html lang="${language}">
通知搜索机构页面所使用的语言,以便它不会被标记为重复 内容(因此,有利于SEO)。当选择其他语言时,语言下拉列表将立即通过JavaScript提交,并且页面将使用 新选择的语言。
但是,您需要记住默认情况下属性文件 使用ISO-8859-1字符编码读取。你需要逃脱 他们通过unicode逃脱。这可以使用JDK提供的方法完成
native2ascii.exe
工具。有关更多信息,另请参阅Control
详情。理论上的替代方案是提供一个包含自定义的包 this article将这些文件加载为UTF-8,但不幸的是 基本JSTL
fmt
taglib不支持。你需要管理 这一切都是在Filter
的帮助下完成的。有(MVC)框架 它可以以更透明的方式处理这个问题,比如JSF,另见 {{3}}