- 国际化(Internationalization)指的是同一个网站可以支持多种不同的语言,以方便不同国家,不同语种的用户访问
代码
- 目录
- 首先,写配置文件。命名格式为
基础名字+地区语言.properties
,如基础名字为i18n
,语言国家为zh_CN
,拼起来的文件名就叫i18n_zh_CN.properties
。在文件中写key-value 键值对。#中文 username=用户名 password=密码
#英文 username=username password=password
- 国际化测试代码
@Test public void localeTest() { Locale locale = Locale.getDefault(); // 获取默认信息 System.out.println(locale); // zh_CN System.out.println(locale.getCountry()); // CN System.out.println(locale.getLanguage()); // zh System.out.println(Locale.CHINA); // zh_CN System.out.println(Locale.US); // en_US }
@Test public void i18nTest() { // 地区 Locale locale = Locale.CHINA; // 指定响应的目录及基础名字、地区,得到ResourceBundle ResourceBundle bundle = ResourceBundle.getBundle("i18n", locale); // 向map一样取值 String username = bundle.getString("username"); String password = bundle.getString("password"); System.out.println(username); System.out.println(password); }
- 在jsp中使用国际化
<%@ page import="java.util.Locale" %> <%@ page import="java.util.ResourceBundle" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>i18n</title> </head> <body> <% Locale locale = request.getLocale(); //Locale locale = Locale.US; //Locale locale = Locale.CHINA; System.out.println(locale); ResourceBundle i18n = ResourceBundle.getBundle("i18n", locale); %> <h1><%=i18n.getString("username")%></h1> <h1><%=i18n.getString("password")%></h1> </body> </html>
利用JSTL标签库实现国际化
- 导包
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
- jsp头部导入
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
- 初始化
<%--1 使用标签设置 Locale 信息--%> <fmt:setLocale value="<%=request.getLocale()%>"/> <%--2 使用标签设置 baseName--%> <fmt:setBundle basename="i18n"/>
- 取值
<h1><fmt:message key="username"/></h1> <h1><fmt:message key="password"/></h1>
- 完整代码
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>JQuery i18n</title> </head> <body> <%--1 使用标签设置 Locale 信息--%> <fmt:setLocale value="<%=request.getLocale()%>"/> <%--2 使用标签设置 baseName--%> <fmt:setBundle basename="i18n"/> <h1><fmt:message key="username"/></h1> <h1><fmt:message key="password"/></h1> </body> </html>