java应用web化,如何使Java Web应用程序国际化?

在基本的JSP / Servlet Web应用程序的情况下,基本方法将使用

JSTL

fmt taglib与

resource bundles结合。资源束包含键值对,其中键是对于所有语言都相同的常数,并且值对于每种语言是不同的。资源束通常是

properties files,由

ResourceBundle API加载。然而,这可以是定制的,以便您可以从例如数据库加载键值对。

这里有一个例子,如何使用基于属性文件的资源束对您的Web应用程序的登录表单进行国际化。

>创建以下文件并将其放在某些包中,例如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(包含西班牙语键值对)

login.label.username = Nombre de usuario

login.label.password = Contraseña

login.button.submit = Acceder

资源束文件名应遵循以下模式name_ll_CC.properties。 _ll部分应该是小写的ISO 693-1语言代码。它是可选的,只有当_CC部分存在时才需要。 _CC部分应为大写ISO 3166-1 Alpha-2国家/地区代码。它是可选的,通常只用于区分国家/地区特定的语言方言,如American English(_en_US)和British English(_en_GB)。

>如果尚未完成,请安装JSTL。如果你运行在一个Servlet 2.5容器或更新的(Tomcat 6.0等等),并且你的web.xml被声明符合Servlet 2.5规范,那么只需把jstl-1.2.jar放在webapp的/ WEB-INF / lib文件夹中。

>创建以下示例JSP文件并将其放在Web内容文件夹中。

login.jsp

JSP/JSTL i18n demo

English

Nederlands

Español

:

:

< c:set var =“language”>管理当前语言。如果语言是作为请求参数提供的(通过语言下拉列表),那么它将被设置。否则,如果语言以前已在会话中设置,则坚持它。否则请在请求标头中使用用户提供的区域设置。

< fmt:setLocale>设置资源束的区域设置。重要的是,此行在< fmt:setBundle>之前。

< fmt:setBundle>通过其基本名称(即,完全限定包名称,直到具有唯一名称,而没有_ll_CC说明符)来初始化资源包。

< fmt:message>通过指定的捆绑密钥检索消息值。

< html lang =“$ {language}”>通知searchbots该页面是什么语言,以便它不会被标记为重复内容(因此,有利于SEO)。

当选择其他语言时,语言下拉列表将立即通过JavaScript提交,并且将使用新选择的语言刷新页面。

然而,您需要记住,属性文件默认情况下使用ISO-8859-1字符编码读取。你需要通过unicode转义来转义它们。这可以使用JDK提供的native2ascii.exe工具来完成。更多详细信息,请参见this article section。

一个理论选择是提供一个自定义Control捆绑,以加载这些文件作为UTF-8,但是这是不幸的是基本的JSTL fmt taglib不支持。你需要在过滤器的帮助下自己管理它。有(MVC)框架可以以更透明的方式处理这种情况,例如JSF,也参见this article。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值