可用的wicket国际化示例具有以下文件结构
HomePage.java
HomePage.html
HomePage.properties
WicketApplication.java
HomePage_nl.properties
现在在创建包含多个HTML页面的项目时,例如我有 HomePage.html和Login.html,有一种方法可以保存特定语言的单个属性中的所有键值对 要么 我将不得不创建所有这些文件
HomePage.properties
HomePage_nl.properties
Login.properties
Login_nl.properties
答案 0 :(得分:8)
Wicket将尝试使用以下规则查找邮件资源:
Wicket将尝试从Page
开始查找消息并向下钻取Component
的组件层次结构中的特定Page
。请注意,这是自上而下搜索。
如果在组件层次结构中找不到消息,则会在Application
类中查找该消息。
每个类中资源的查找工作方式如下:
本地化搜索将语言环境附加到文件名(Login_nl.properties
,然后是Login.properties
),就像Java的ResourceBundle
s do一样。
Down-top 。这意味着如果在类中找不到资源,它将一直在其超类中搜索,直到它到达java.lang.Object
。
因此,在您的具体情况下,如果Login
在Panel
内是HomePage
,您只需在HomePage(_nl).properties
中定义资源即可。此外,如果有特定的应用程序范围的消息,请记住您可以在WicketApplication(_nl).properties
。
你可能会发现以下Wicket wiki页面:Everything about Wicket internationalization很有用,它详细阐述了这个问题。
(...)。首先查看消息可以促进这一点 (遵循上述算法)对于组件中的每个父级 层次结构(aka页面层次结构)。每个组件都可以覆盖 其子组件的消息,因此搜索从页面开始 属性然后逐渐渗透到使用它的组件(是的, 自上而下)。为了使特定于某个孩子的覆盖 在组件中,您可以使用组件ID为消息密钥添加前缀 儿童。有关更多详细信息,请参阅ComponentStringResourceLoader。
如果在页面层次结构中未找到任何消息,则开始另一个搜索 这将查看您的应用程序类及其超类。所以 Wicket首先查看MyApplication.properties(提供了MyApplication 是应用程序的名称),然后是类层次结构, 传递org.apache.wicket.Application,直到java.lang.Object。这是 Wicket如何提供许多默认的i18n文本。