ZUML ページ(と JSP ページ)からロケール依存のデータを分けるため、ロケール依存のデータを WEB-INF ディレクトリーの下の i3_label_lang_CNTY プロパティの中に保存します。
ここで lang が en 、fr といった言語で、 CNTY は US や FR といった国名です。
ロケール依存プロパティを得るために、Java で org.zkoss.util.resource.Labels または EL で ${c:l('key')} を使用できます。
EL を使用する場合、以下のようにページ内に taglib ディレクティブと TLD ファイルを指定しなければなりません。
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c"?> <window title="${c:l('app.title')}"> ... </window>
【ファイルの位置】:core.tld は dist/WEB-INF ディレクトリーの下に配布されています。Web アプリケーション内にコピーする必要はありません。
ロケール依存ラベルが取得されようとするとき、i3-label_lang_CNTY.propaties が読み込まれます。例えば、ロケールが de_DE の場合、WEB-INF/i3-label_de_DE.properties が読み込まれます。そのようなファイルが見つからなかったら、ZKは順番に、WEB-INF/i3-label_de.propatiesとWEB-INF/i3-label.properties を読み込もうとします。
Javaコード(zscript を含む) でラベルにアクセスするのに org.zkoss.util.resource.Labels クラスの getLabel メソッドを使用します。
さらに、org.zkoss.util.resource.LabelLocator インターフェースを実装して、ロケーターを登録することで、ラベルローダーを拡張し、データベースなど他の位置からラベルを読み込むことができます。
ロケーターは org.zkoss.util.resource.LabelLocator インターフェースを実装している必要があります。そうして、 org.zkoss.util.resource.Labels クラスの
register メソッドを起動します。