2015-06-03 1 views
0

Я пытаюсь сделать zq интернационализацию в своем проекте. Я просмотрел все документы и выяснить эту информацию:zk интернационализация LabelLocator

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) 

Вопрос заключается в том, где я должен поставить этот codeline и вызывать локатор, в моем viewmodel (я использую mvvm) или где-то еще? Я не могу понять :(

Спасибо за любую помощь !!!

ответ

0

В docs о ZK интернационализации довольно просто кажется, вы просто не дочитали пару абзацев:.

Тогда мы могли бы зарегистрировать ярлык локаторы при запуске приложения с использованием 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 - это таблица базы данных для загрузки свойств, а модули-1.properties и module-2.properties - это два модуля сообщений, которые вы предоставляете. Затем вы настраиваете его в WEB-INF/zk.xml, как описано в ZK Configuration Reference.

+0

Хорошо спасибо. Но могу ли я переключаться между разными локаторами динамически на странице с помощью combobox? Я имею в виду, как не писать одни и те же части html-кода для разных языков и просто написать одно выражение, и оно будет называться в соответствии с выбранным языком. – SergeBud

+0

@SergeBud, конечно. Для доступа к ярлыкам i18n используется объект 'label' в файлах' zul' или 'Labels.getLabel (...)' в Java. И вы можете вызвать 'Labels.reset()' для динамической перезагрузки ярлыков, если локаль была изменена. Подробнее читайте в одном документе. –