完整的例子,我想你应该创造你自己的方式如何实现这一目标。在这里,在我目前的项目,我们注册了自己IStringResourceLoader这样的:
IStringResourceLoader stringResourceLoader = new OurOwnResourceLoaderImpl();
Application.get().getResourceSettings().getStringResourceLoaders().add(stringResourceLoader);
然后例如在IChoiceRenderer我们只需要调用Application.get()getLocalizer()的getString( “钥匙”,NULL)。
在我们的IStringResourceLoader中,我们正在根据自己的约定寻找包含一些字符串模式的包(属性文件)。
或者,你可以注册本地化包(即。属性文件)通过org.apache.wicket.resource.loader.BundleStringResourceLoader分布在Application#init的库中。
Afaik没有标准的方法来做到这一点,所以它取决于你选择什么样的路径。
更新时间:
我发现了另一个解决方案资料库/分机如何注册它自己的定位本身,所以你不必触摸应用程序初始化#或创建自己的IStringResourceLoaders。
有预先注册的字符串资源加载org.apache.wicket.resource.loader.InitializerStringResourceLoader(见售票窗口默认IResourceSetting实现即ResourceSetting,它的构造。),它采用检票口的初始化机制 - 见IInitializer的javadoc - 基本上你添加wicket.properties文件在您的罐子类根和内部文件存在(即它是在默认/无包装):
initializer=i.am.robot.MyInitilizer
然后i.am.robot.MyInitilizer:
public class MyInitializer implements IInitializer {
/**
* @param application
* The application loading the component
*/
void init(Application application) {
// do whatever want
}
/**
* @param application
* The application loading the component
*/
void destroy(Application application) {
}
}
现在哟ü创建相同的包和名称相同IInitializer实现你的本地化包(在我们的例子MyInitializer)
有趣的方式。我也在考虑这个问题,但看起来很尴尬,因为你必须每次投射本地化器,或者你必须介绍一些类似于MyConverter的东西。无论如何,它看起来并不那么糟糕.... –