向 jakarta.faces.Messages 国际化添加新语言

问题描述 投票:0回答:1

jakarta.faces
中,这些是唯一可用的消息翻译(显示的消息取自位于 jakarta.faces.Messages 的这个 jar
jakarta.faces-4.1.1
):

jakarta.faces.Messages

我需要添加

Messages_it.properties
来管理意大利网站网页上的错误(针对表单验证错误)。

我所做的是:

  1. 将所有这些属性复制到我自己的包下的
    resources
    文件夹下
    jakarta.faces
  2. 在同一目录中添加了一个包含所需翻译的文件“Messages_it.properties”

resources

但运行代码时似乎没有加载它,因为我总是得到英文翻译(所以基本上它会自动切换到默认翻译)。

我应该提到,如果我从一种语言切换到另一种语言,我可以完美地看到其他语言(en、fr、de、es)。但我无法加载新的(它是lang)。

我尝试将其添加到我的

faces-config.xml
作为
resource-bundle
message-bundle
,但再次没有成功。

<application>
   <message-bundle>jakarta.faces.Messages</message-bundle>
</application>

可能我缺少一些基本配置。

jsf properties localization internationalization resources
1个回答
0
投票

将所有这些属性复制到 jakarta.faces 包下我自己的资源文件夹下

那是不必要的。除非您想覆盖默认翻译之一。您可以安全地删除所有未修改的属性文件并仅保留在您自己的

Messages_it.properties
文件中。

在同一目录中添加了一个文件“Messages_it.properties”以及所需的翻译

这应该可行。然而,

resources
文件夹的确切位置以及如何创建
jakarta.faces
包的路径是不明确的。目前尚不清楚您正在使用哪种构建工具,但根据您之前提出的问题,您似乎正在使用 Maven。在这种情况下,
Messages_it.properties
最终必须精确地结束 路径
src/main/resources/jakarta/faces/Messages_it.properties
.

从您的屏幕截图来看,并不清楚

resources
文件夹本身所在的位置。在 WAR 应用程序的 Maven 项目结构中,有 2 个选项:
src/main/resources
src/webapp/resources
。只有前者是正确的,因为它将最终出现在运行时类路径中,并且资源包文件需要通过类加载器加载。

也不清楚您是否创建了具有双重嵌套子文件夹的

resources/jakarta/faces
路径,还是具有单个嵌套子文件夹(字面名称为
resources/jakarta.faces
)的
jakarta.faces
路径。只有前者是正确的,就像普通 Java 包/类的情况一样。

我尝试将其作为资源包或消息包添加到我的 faces-config.xml 中,但再次没有成功。

那是不必要的。您唯一需要确保的是

it
<supported-locale>
<application><locale-config>
的显式配置的
faces-config.xml
之一。

例如

<application>
    <locale-config>
        <default-locale>en</default-locale>
        <supported-locale>de</supported-locale>
        <supported-locale>es</supported-locale>
        <supported-locale>fr</supported-locale>
        <supported-locale>it</supported-locale>
        ...
    </locale-config>
</application>

再次确认,

<f:view locale="#{...}">
还必须明确引用
it
区域设置。另请参阅 JSF 中的本地化,如何记住每个会话而不是每个请求/视图选择的区域设置

© www.soinside.com 2019 - 2024. All rights reserved.