В моем веб-приложении есть умный переводчик Java, поэтому я не могу использовать простой i18n на основе Label в ZK. Вместо этого должен быть вызван мой метод умного переводчика с двумя параметрами - ключом и языком, но текущий язык должен быть получен из некоторой области веб-приложения.
Было бы очень полезно иметь функцию EL
<textbox value="${x:translate('some.i18n.key')}"/>
, который вызывает мой метод интеллектуального переводчика с заданным параметром String и текущим языковым кодом из сеанса.
Что я мог сделать, это определить метод с 2 параметрами translate
<?xel-method prefix="x" name="translate"
class="mypackage.Translator"
signature="java.lang.Class translate(java.lang.String,java.lang.String)"?>
и используйте его как
<textbox value="${x:translate('qqq',sessionScope.get('LANGUAGE'))}"/>
, но запись второго параметра каждый раз не является хорошим решением. Его можно записать немного короче, как
<textbox value="${x:translate('qqq',LANGUAGE)}"/>
или, возможно, выбрать вместо более короткой клавиши LANGUAGE
, но меня интересует более компактная форма.
Можно ли определить такая функция, которая получает этот второй параметр неявно? Или как-то вызвать метод объекта в области видимости сеанса / рабочего стола / страницы из EL?