Language Definition
A language definition defines a component set (aka., a language). For example, ZUL and XHTML are two component sets.
To define a language definition, you have to prepare a file called /metainfo/zk/lang.xml
and makes it available to the classpath (such as in a JAR file, or in WEB-INF/classes of a Web application).
A language addon is used to extend a language definition. It shall be called /metainfo/zk/lang-addon.xml
available to the classpath, or specified in WEB-INF/zk.xml.
When ZK starts, it will parse all language definitions and then all language addons based on their dependency. A language addon is a variant of a language definition. They are almost the same, except the naming and it must specify the addon name.
Here is a sample (from ZUL's lang.xml):
<language>
<language-name>xul/html</language-name>
<device-type>ajax</device-type>
<namespace>http://www.zkoss.org/2005/zul</namespace>
<extension>zul</extension><!-- the first extension is the major one -->
<extension>xul</extension>
<version>
<version-class>org.zkoss.zul.Version</version-class>
<version-uid>5.0.6</version-uid>
</version>
<javascript package="zk"/>
<javascript package="zul.lang"/>
<stylesheet href="~./zul/css/zk.wcs" type="text/css"/>
<renderer-class>org.zkoss.zul.impl.PageRenderer</renderer-class>
<label-template>
<component-name>label</component-name>
<component-attribute>value</component-attribute>
</label-template>
<macro-template>
<macro-class>org.zkoss.zk.ui.HtmlMacroComponent</macro-class>
</macro-template>
<native-template>
<native-class>org.zkoss.zk.ui.HtmlNativeComponent</native-class>
</native-template>
<component>
<component-name>a</component-name>
<component-class>org.zkoss.zul.A</component-class>
<widget-class>zul.wgt.A</widget-class>
<text-as>label</text-as><!-- treat text within the element as the label property -->
<mold>
<mold-name>default</mold-name>
<mold-uri>mold/a.js</mold-uri>
<css-uri>css/a.css.dsp</css-uri>
</mold>
</component>
</language>