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

Liferay, reading from multiple language.properties file on same jsp

我有一个 jsp 文件,其中包含从多个 language.properties 文件读取的请求ui,即使用语言环境 fr_CAN 和 other.Is 可能通过从这些文件中获取值而不更改会话中的区域设置并且不使用资源包。

例如。 在Language.fr_CAN.properties

hello=Hello in canada french

并在 Language.en_CAN.properties

hello=Hello in canada english

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


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

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


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

您可以调用 API 而不是 标签:

<%= LanguageUtil.get(new Locale("fr", "CAN"), "your-message-key-here") %>

<%= LanguageUtil.get(new Locale("en", "CAN"), "your-message-key-here") %>

您可以使用 <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>

并且在您的 Language.properties 文件中:

say-hello=Hello in English
greetings=Greetings in English
namaste=Namaste in English

Language.fr_CAN.properties

say-hello=Hello in canada french
greetings=Greetings in canada french
namaste=Namaste in canada french

并在 Language.en_CAN.properties

hello=Hello in canada english
greetings=Greetings in canada english
namaste=Namaste in canada english

在这里您可以使用 <fmt:setLocale /> 标签控制要在 jsp 文件中显示的值。 简单地说,你可以给它一个区域设置的值,比如 "en_US"、"fr_FR" 或 "en_CAN" 来控制它从属性中获取的值 files.So 在请求中设置它并显示在jsp 为:

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