且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何国际化/本地化 JSP/Servlet Web 应用程序?

更新时间:2023-09-28 20:50:40

对于基本的 JSP/Servlet web 应用程序,基本方法是使用 JSTL fmt taglib 结合 资源包.资源包包含键值对,其中键是一个常量,对于所有语言都相同,而值因语言而异.资源包通常是属性文件,由ResourceBundle代码> API.但是,这可以自定义,以便您可以从例如数据库加载键值对.

这是一个如何使用基于属性文件的资源包来国际化 Web 应用程序登录表单的示例.


  1. 创建以下文件并将它们放入某个包中,例如com.example.i18n(在Maven的情况下,将它们放在src/main/resources内的包结构中).

    text.properties(包含默认语言的键值对,通常是英文)

    login.label.username = 用户名login.label.password = 密码login.button.submit = 登录


    text_nl.properties(包含荷兰语 (nl) 键值对)

    login.label.username = Gebruikersnaamlogin.label.password = Wachwoodlogin.button.submit = 登录


    text_es.properties(包含西班牙语(es)键值对)

    login.label.username = 用户名login.label.password = Contraseñalogin.button.submit = 加入者

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


  2. 如果还没有完成,请按照此答案中的说明安装 JSTL:如何安装JSTL?绝对uri:http://java.sun.com/jstl/core 无法解析.


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

    login.jsp

     <身体><表格><select id="language"名称=语言"onchange="提交()">Español</option></选择></表单><表单方法=发布"><label for="username"><fmt:message key="login.label.username"/>:</label><br><label for=password"><fmt:message key=login.label.password"/>:</label><br><fmt:message key="login.button.submit";var=buttonValue"/></表单>