Liferay,从同一个jsp上的多个language.properties文件中读取

Mco*_*der 1 internationalization liferay-6

我有一个jsp文件,需要从多个language.properties文件中读取,即使用locales fr_CAN和其他文件.可以在同一个jsp文件中读取和显示(例如,基于liferay-ui-message中的键)从这些文件中获取值而不更改会话中的区域设置,而不使用资源束.

例如.在Language.fr_CAN.properties中

hello=Hello in canada french
Run Code Online (Sandbox Code Playgroud)

在In Language.en_CAN.properties中

hello=Hello in canada english
Run Code Online (Sandbox Code Playgroud)

现在在Jsp文件中我们必须显示:


说你好...加拿大法语:你好加拿大法语

加拿大英语:你好加拿大英语


任何帮助将不胜感激.谢谢.

小智 5

您可以使用<fmt:message/>标签来实现您的需求.例如,您可以在Jsp文件中尝试以下内容:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 
<html>
<head>
    <title>JSTL fmt:message Tag</title>
</head>
<body>
    <fmt:requestEncoding value="UTF-8" />
    <fmt:setLocale value="fr_CAN"/>
    <fmt:setBundle basename="content.Language" />    

    <fmt:message key="say-hello" />
    <fmt:message key="greetings" />
    <fmt:message key="namaste" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在您的Language.properties文件中:

say-hello=Hello in English
greetings=Greetings in English
namaste=Namaste in English
Run Code Online (Sandbox Code Playgroud)

Language.fr_CAN.properties中

say-hello=Hello in canada french
greetings=Greetings in canada french
namaste=Namaste in canada french
Run Code Online (Sandbox Code Playgroud)

Language.en_CAN.properties中

hello=Hello in canada english
greetings=Greetings in canada english
namaste=Namaste in canada english
Run Code Online (Sandbox Code Playgroud)

在这里,您可以使用<fmt:setLocale />tag 控制要在jsp文件中显示的值.只需你可以给它一个像"en_US","fr_FR"或"en_CAN"这样的语言环境的值来控制它从属性文件中获取的值.所以在请求中设置它并在jsp中显示为:

<% Locale locale = LocaleUtil.fromLanguageId(request.getParameter("locale-name"))%>
<fmt:setLocale value="<%=locale%>"/>
Run Code Online (Sandbox Code Playgroud)