Wicket国际化:多页的多个属性文件?

时间:2012-09-21 06:43:54

标签: internationalization wicket

可用的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

1 个答案:

答案 0 :(得分:8)

Wicket将尝试使用以下规则查找邮件资源:

  1. Wicket将尝试从Page开始查找消息并向下钻取Component组件层次结构中的特定Page 。请注意,这是自上而下搜索。

  2. 如果在组件层次结构中找不到消息,则会在Application类中查找该消息。

  3. 每个类中资源的查找工作方式如下:

    1. 本地化搜索将语言环境附加到文件名(Login_nl.properties,然后是Login.properties),就像Java的ResourceBundles do一样。

    2. 通过类层次结构
    3. Down-top 。这意味着如果在类中找不到资源,它将一直在其超类中搜索,直到它到达java.lang.Object

    4. 因此,在您的具体情况下,如果LoginPanel内是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文本。