如何在JSP中设置locale以识别所需的资源包?
<fmt:setLocale>标签用于将给定的区域设置存储在区域设置配置变量中。
属性
<fmt:setLocale>标签具有以下属性:
| 属性 | 描述 | 必需 | 默认值 |
|---|---|---|---|
| 值 | 指定一个两部分代码,表示ISO-639语言代码和ISO-3166国家代码。 | 是 | en_US |
| variant | 浏览器特定的变体 | 否 | 无 |
| scope | 区域设置配置变量的作用域 | 否 | 页面 |
示例
资源包包含特定于区域设置的对象。资源包包含键值对。当您的程序需要特定于区域设置的资源时,您可以保留所有区域设置通用的所有键,但您可以拥有特定于区域设置的翻译值。资源包有助于提供特定于区域设置的内容。
Java资源包文件包含一系列的键到字符串映射。我们关注的方法包括创建扩展java.util.ListResourceBundle类的已编译Java类。您必须编译这些类文件并使它们可用于Web应用程序的类路径。
让我们定义一个默认资源包,如下所示:
package com.tutorialspoint;
import java.util.ListResourceBundle;
public class Example_En extends ListResourceBundle {
public Object[][] getContents() {
return contents;
}
static final Object[][] contents = {
{"count.one", "One"},
{"count.two", "Two"},
{"count.three", "Three"},
};
}现在让我们再定义一个资源包,我们将用于西班牙语区域设置:
package com.tutorialspoint;
import java.util.ListResourceBundle;
public class Example_es_ES extends ListResourceBundle {
public Object[][] getContents() {
return contents;
}
static final Object[][] contents = {
{"count.one", "Uno"},
{"count.two", "Dos"},
{"count.three", "Tres"},
};
}让我们编译上面的类Example.class和Example_es_ES.class,并将它们放在Web应用程序的CLASSPATH中。现在可以使用以下JSTL标签显示这三个数字:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %> <%@ taglib uri = "http://java.sun.com/jsp/jstl/fmt" prefix = "fmt" %> <html> <head> <title>JSTL fmt:setLocale Tag</title> </head> <body> <fmt:bundle basename = "com.tutorialspoint.Example"> <fmt:message key = "count.one"/><br/> <fmt:message key = "count.two"/><br/> <fmt:message key = "count.three"/><br/> </fmt:bundle> <!-- Change the Locale --> <fmt:setLocale value = "es_ES"/> <fmt:bundle basename = "com.tutorialspoint.Example"> <fmt:message key = "count.one"/><br/> <fmt:message key = "count.two"/><br/> <fmt:message key = "count.three"/><br/> </fmt:bundle> </body> </html>
以上代码将生成以下结果:
One Two Three Uno Dos Tres
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP