由LabelLocator进行的zk国际化

时间:2015-06-03 13:55:31

标签: internationalization zk

我想在我的项目中进行zk国际化。我查看了所有文档并找到了这些信息:

public class FooServletLocator implements org.zkoss.util.resource.LabelLocator {
    private ServletContext _svlctx;
    private String _name;
    public FooServletLocator(ServletContext svlctx, String name) {
        _svlctx = svlctx;
        _name = name;
    }
    public URL locate(Locale locale) {
        return _svlctx.getResource("/WEB-INF/labels/" + name + "_" + locale + ".properties");
    }
}

然后我应该通过代码调用这个定位器:

Labels.register(LabelLocator2)

问题是我应该在我的viewmodel(我使用mvvm)或其他地方放置此代码并调用定位器?我无法理解:(

感谢您的帮助!!!

1 个答案:

答案 0 :(得分:0)

关于ZK国际化的docs非常简单。看来你只是没有读过几段:

  

然后,我们可以在应用程序启动时使用WebAppInit注册标签定位器,如下所示。

public class MyAppInit implements org.zkoss.zk.ui.util.WebAppInit {
    public void init(WebApp wapp) throws Exception {
        Labels.register(new FooDBLocator(("moduleX");
        Labels.register(new FooDBLocator(("moduleY");
        Labels.register(new FooServletLocator((ServletContext)wapp.getNativeContext(), "module-1");
        Labels.register(new FooServletLocator((ServletContext)wapp.getNativeContext(), "module-2");
    }
}
  

我们假设moduleX和moduleY是要加载属性的数据库表,module-1.properties和module-2.properties是您提供的两个消息模块。然后,按照ZK Configuration Reference

中的说明在WEB-INF / zk.xml中对其进行配置