Locale-Dependent Resources"
(8 intermediate revisions by 2 users not shown) | |||
Line 4: | Line 4: | ||
Many resources depend on the Locale and, sometimes, the browser. For example, you might need to use a larger font for Chinese characters to have better readability. ZK provides a way to load locale and browser-dependent resources including JavaScript, CSS, and images. | Many resources depend on the Locale and, sometimes, the browser. For example, you might need to use a larger font for Chinese characters to have better readability. ZK provides a way to load locale and browser-dependent resources including JavaScript, CSS, and images. | ||
− | =Specifying Locale | + | =Specifying Locale and Browser-Dependent URL= |
− | ZK can handle this for you automatically by specifying a URL with '''asterisk''' <code>*</code>. | + | ZK can handle this for you automatically by specifying a URL with '''asterisk''' <code>*</code>. This feature is supported by all components that accept a URL, e.g. the src of [[ZK%20Component%20Reference/Essential%20Components/Script| <script>]] or [[ZUML%20Reference/ZUML/Processing%20Instructions/script| <?script?>]]. The algorithm is as follows. |
+ | ==Absolute or Relative Path== | ||
+ | You can only specify an absolute path to load a locale-dependent resource at 9.x and before. | ||
+ | {{versionSince | 10.0.0}} | ||
+ | Relative path is supported. | ||
== One "*" for Locale Code == | == One "*" for Locale Code == | ||
Line 14: | Line 18: | ||
* User's preferences (current locale): '''<code>de_DE</code>''' | * User's preferences (current locale): '''<code>de_DE</code>''' | ||
− | Then ZK looks for files in the order below one-by-one in your | + | Then ZK looks for files in the order below one-by-one in your website until any of them is found: |
# <code>/my_de_DE.css</code> | # <code>/my_de_DE.css</code> | ||
Line 25: | Line 29: | ||
* <code>ie</code> for Internet Explorer | * <code>ie</code> for Internet Explorer | ||
* <code>saf</code> for Chrome, Safari | * <code>saf</code> for Chrome, Safari | ||
− | * <code>moz</code> for | + | * <code>moz</code> for Firefox and other browsers<ref>In the future editions, we will use different codes for browsers other than Internet Explorer, Firefox and Safari.</ref>. |
Moreover, the last asterisk will be replaced with a proper Locale as described in the previous rule. In summary, the last asterisk represents the Locale, while the first asterisk represents the browser type. | Moreover, the last asterisk will be replaced with a proper Locale as described in the previous rule. In summary, the last asterisk represents the Locale, while the first asterisk represents the browser type. | ||
Line 119: | Line 123: | ||
= Locating Locale- and browser-dependent resources in Java = | = Locating Locale- and browser-dependent resources in Java = | ||
− | In addition to ZUML | + | In addition to ZUML, you can also load browser- and Locale-dependent resources in Java. Here is a list of methods that you can use. |
* The <code>encodeURL</code>, <code>forward</code>, and <code>include</code> methods in <javadoc>org.zkoss.zk.ui.Execution</javadoc> for encoding URL, forwarding to another page and including a page. In most cases, these methods are all you need. | * The <code>encodeURL</code>, <code>forward</code>, and <code>include</code> methods in <javadoc>org.zkoss.zk.ui.Execution</javadoc> for encoding URL, forwarding to another page and including a page. In most cases, these methods are all you need. | ||
Line 127: | Line 131: | ||
* The <code>locate</code> method in <javadoc>org.zkoss.util.resource.Locators</javadoc> for locating class resources. | * The <code>locate</code> method in <javadoc>org.zkoss.util.resource.Locators</javadoc> for locating class resources. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
{{ZKDevelopersReferencePageFooter}} | {{ZKDevelopersReferencePageFooter}} |
Latest revision as of 01:44, 25 April 2024
Overview
Many resources depend on the Locale and, sometimes, the browser. For example, you might need to use a larger font for Chinese characters to have better readability. ZK provides a way to load locale and browser-dependent resources including JavaScript, CSS, and images.
Specifying Locale and Browser-Dependent URL
ZK can handle this for you automatically by specifying a URL with asterisk *
. This feature is supported by all components that accept a URL, e.g. the src of <script> or <?script?>. The algorithm is as follows.
Absolute or Relative Path
You can only specify an absolute path to load a locale-dependent resource at 9.x and before. Since 10.0.0 Relative path is supported.
One "*" for Locale Code
If you specify only one *
in a URL, such as /my*.css
, then *
will be replaced with a locale code depending on the current locale that ZK detects. For example:
- URI:
/my*.css
- User's preferences (current locale):
de_DE
Then ZK looks for files in the order below one-by-one in your website until any of them is found:
/my_de_DE.css
/my_de.css
/my.css
Two "*" for Locale and Browser Code
Such as "/my*/lang*.css", then the first "*" will be replaced with a browser code as follows:
ie
for Internet Explorersaf
for Chrome, Safarimoz
for Firefox and other browsers[1].
Moreover, the last asterisk will be replaced with a proper Locale as described in the previous rule. In summary, the last asterisk represents the Locale, while the first asterisk represents the browser type.
For example:
zul
<style src="/i18n/css-*/mycss*.css" />
The result in an HTML with Chrome:
<link ... href="/i18n/css-saf/mycss.css" ...>
All other "*" are ignored
Note
The last asterisk that represents the Locale must be placed right before the first dot ("."), or at the end if no dot at all. Furthermore, no following slash (/) is allowed, i.e., it must be part of the filename, rather than a directory. If the last asterisk doesn't fulfill this constraint, it will be eliminated (not ignored).
For example, "/my/lang.css*" is equivalent to "/my/lang.css".
In other words, you can consider it as neutral to the Locale.
Tip: We can apply this rule to specify a URI depending on the browser type, but not depending on the Locale. For example, "/my/lang*.css*" will be replaced with "/my/langie.css" if Internet Explorer is the current user's browser.
- ↑ In the future editions, we will use different codes for browsers other than Internet Explorer, Firefox and Safari.
Example
In the following example, we assume the preferred Locale is de_DE
and the browser is Internet Explorer.
/css/norm*.css |
|
/css-*/norm*.css |
|
/img*/pic*/lang*.png |
|
/img*/lang.gif |
|
/img/lang*.gif* |
|
/img*/lang*.gif* |
|
Locating Locale- and browser-dependent resources in Java
In addition to ZUML, you can also load browser- and Locale-dependent resources in Java. Here is a list of methods that you can use.
- The
encodeURL
,forward
, andinclude
methods in Execution for encoding URL, forwarding to another page and including a page. In most cases, these methods are all you need. - The
locate
,forward
, andinclude
method in Servlets for locating Web resouces. You rarely need them when developing ZK applications, but useful for writing a servlet, portlet or filter. - The
encodeURL
method in Encodes for encoding URL. You rarely need them when developing ZK applications, but useful for writing a Servlet, Portlet or Filter.
- The
locate
method in Locators for locating class resources.