Use case:
Then reload the translator and the path /apps/myapp/i18n should show up in the drop-down at the top.
Then on jsp page use following code
<cq:setContentBundle/>
<%
Locale pageLocale = currentPage.getLanguage(false);
//If above bool is set to true. CQ looks in to page path rather than jcr:language property.
ResourceBundle resourceBundle = slingRequest.getResourceBundle(pageLocale);
I18n i18n = new I18n(resourceBundle);
%>
I am printing using I18n <%=i18n.get("updateLocations") %>
I am printing using fmt:message now <fmt:message key="updateLocations"/>
I found page locale is <%=pageLocale.toString() %>
change language name and default country
- You want to add new language to CQ
- Change display language options in translator grid
- Change language name and default countries
Solution:
You can access translator UI in CQ with following URL http://<HOST>:<PORT>/libs/cq/i18n/translator.html
Create new language location for Dictionary
Go to CRXDE lite (or your favorite JCR browser) and add this structure (assuming /apps/myapp/i18n as a typical location for custom apps):
/apps/myapp/i18n [sling:Folder]
- de [nt:unstructured]
+ jcr:mixinTypes = [mix:language]
+ jcr:language = de
- fr [nt:unstructured]
+ jcr:mixinTypes = [mix:language]
+ jcr:language = frThen reload the translator and the path /apps/myapp/i18n should show up in the drop-down at the top.
Note: the translator will only save translations for languages that are actually present underneath the path (e.g. /apps/myapp/i18n), others will be skipped.
Then on jsp page use following code
<cq:setContentBundle/>
<%
Locale pageLocale = currentPage.getLanguage(false);
//If above bool is set to true. CQ looks in to page path rather than jcr:language property.
ResourceBundle resourceBundle = slingRequest.getResourceBundle(pageLocale);
I18n i18n = new I18n(resourceBundle);
%>
I am printing using I18n <%=i18n.get("updateLocations") %>
I am printing using fmt:message now <fmt:message key="updateLocations"/>
I found page locale is <%=pageLocale.toString() %>
Change List of Languages Display in Grid
To change what languages are shown in the translator's grid, create a multi-value string property /etc/languages/languages (node structure must be created), containing the iso language codes (e.g. ["de", "fr", …]). The default is hard coded in the translator and maps the ootb CQ languages: ['de', 'fr', 'it', 'es', 'ja', 'zh-cn']
Add supported language in WCM
- You need to overlay/overwrite /libs/cq/security/widgets/source/widgets/security/Preferences.js to change the list of available languages (used in security admin)
- and overlay /libs/cq/security/content/tools/userProperties (inside change language list under items/common/items/lang/options - similar dialog to Preferences.js) (used for user drop-down in the top right on admin consoles)
- Then you need to add the new language somewhere in the repo, e.g. /apps/myapp/i18n, following the layout as under /libs/wcm/core/i18n (see also the above section on the translator UI). Stuff under /libs must not be changed!
Here is a sample package:
- adds /apps/test/i18n with translation of "New..." in zh-cn ("simplified") and zh-tw ("traditional") languages
- overlays /apps/cq/security/content/tools/userProperties and /apps/cq/security/widgets/source/widgets/security/Preferences.js to add the zh-tw language
- to check, set the current user's language to "Traditional Chinese" and look in the siteadmin: the first button in the toolbar should now be "traditional" instead of "New..."
change language name and default country
Note: since 5.5 load 21
This means:
- language titles
- country names
- default countries (for codes like "en", "de", etc.)
A language list is stored under /libs/wcm/core/resources/languages. It can be overlayed by copying it to /apps/wcm/core/resources/languages and changing or extending the list there. If you do so, also change the configuration of the language manager com.day.cq.wcm.core.impl.LanguageManagerImpl: set langmgr.list.path = /apps/wcm/core/resources/languages at
http://localhost:4502/system/console/configMgr/com.day.cq.wcm.core.impl.LanguageManagerImpl.
The default countries, which come into play when resolving the country for a language code such as "en" ("en_GB" would be such a default country), and in turn for displaying flags in the UI, are configured in this list as well. A property defaultCountry on a language node must contain the full code, such as "ja_jp", which would define "jp" as default country for "ja".
NOTE: add at less one node in i18n which exists in list languages /libs/cq/i18n/translator.html
Nhận xét
Đăng nhận xét