Internationalization Wicket国际化:多页的多属性文件?
可用的wicket国际化示例具有以下文件结构Internationalization Wicket国际化:多页的多属性文件?,internationalization,wicket,Internationalization,Wicket,可用的wicket国际化示例具有以下文件结构 HomePage.java HomePage.html HomePage.properties WicketApplication.java HomePage_nl.properties 现在,当创建一个包含多个HTML页面的项目时,例如 HomePage.html和Login.html,是否有一种方法可以将特定语言的所有键值对保存在单个属性中 或 我将不得不创建所有这些文件 HomePage.properties HomePage_nl.prop
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
Wicket将尝试使用以下规则查找消息资源:
页面
开始查找消息,并通过页面
的组件层次结构深入到特定的组件
。请注意,这是一个自上而下的搜索应用程序
类中查找该消息Login\u nl.properties
,然后是Login.properties
),就像Java一样java.lang.Object
登录
是主页
中的面板
,您可以在主页(_nl).properties中定义资源。此外,如果存在特定的应用程序范围的消息,请记住您可以在WicketApplication(_nl).properties
中定义它们
您可能会发现以下Wicket wiki页面:非常有用,它详细阐述了这一问题
(……)。这通过首先查找消息来实现
(按照上面的算法)为组件中的每个父级
层次结构(又名页面层次结构)。每个组件都可以覆盖
它的子组件的消息,因此搜索从页面的
属性,然后向下流到使用它的组件(是,
它是自上而下的)。为了使覆盖特定于某个子级
组件,您可以在消息键前面加上
小孩有关更多详细信息,请参阅ComponentStringResourceLoader
如果在页面层次结构中未找到任何消息,则会启动另一个搜索
这将查看您的应用程序类及其超类。所以
Wicket首先查看MyApplication.properties(由MyApplication提供)
是应用程序的名称),然后向上移动类层次结构,
传递org.apache.wicket.Application,直到java.lang.Object。这是
Wicket如何提供其许多默认i18n文本
谢谢你的回答。我还有一个问题。是希望为不同的面板编写不同的属性文件,还是应该在WicketApplication(_nl).properties中包含所有键值。哪个更合适?这取决于您计划如何(重新)使用组件。我通常建议不要在application.properties中定义所有资源,这会使覆盖整个应用程序中重用组件中的消息变得更加困难。很高兴这有帮助:)实际上,忽略我的最后一条评论。这不会使它变得更加困难。您始终可以在组件层次结构中定义资源覆盖。