Version 9.1 by Vincent Massol on 2011/03/31

Show last authors
1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
4
5 = Tutorials =
6
7 * [[Tutorial for Internationalizing a Form>>DevGuide.TranslationsTutorial]]
8
9 = Using the static Resource Bundles =
10
11 * Stop your XWiki instance
12 * Unjar the ##WEB-INF/lib/xwiki-core-*.jar## file (it was named ##xwiki.jar## in old versions) in ##WEB-INF/classes## and remove it from ##WEB-INF/lib##
13 * Edit the ##WEB-INF/classes/ApplicationResources*.properties## Resource Bundle files by adding the key/value pairs you need for your application.
14 * In your document, use the following to get the value associated with a key:(((
15 {{code language="none"}}
16 $msg.get("key")
17 {{/code}}
18
19 This will get the value from the Resource Bundle corresponding to the current language you are using in XWiki.
20 )))
21
22 = Using properties located in XWiki pages =
23
24 {{warning}}
25 The features described below are only available in XWiki 1.0 Beta 4 and above. The ability to parametrize the resource string is available only in XWiki 1.0 Beta 5 and above.
26 {{/warning}}
27
28 * Create a page that will host your key/value pairs.
29 * Enter all the key/value pairs in that page ({{warning}}use the wiki editor{{/warning}}). For example:(((
30 {{code language="none"}}
31 greeting=hello
32 welcome=Welcome
33 withparams=I can {0} pass {1} {2} params too using the Java MessageFormat syntax
34 {{/code}}
35 )))
36 * Do the same for all the translations you want.(((
37 {{info}}
38 To enable multiple languages you'll need to go to the Administration page and set MultiLingual to true and list the different languages you wish to use in the Languages field.
39 {{/info}}
40 )))
41 * Tell XWiki that your page is a Document Bundle by going to the Administration page, selecting the "Programming" icon and entering it in the "Internationalization Document Bundles" field. You can specify several pages, separated by commas.(((
42 {{info}}
43 When creating "Internationalization Document Bundles", you should avoid naming the pages with names that include spaces. For example, a document name of Main.My Messages could cause issues, instead, use Main.MyMessages
44 {{/info}}
45 )))
46 * Alternatively you can also specify the list of Internationalization Document Bundles in ##xwiki.cfg## under the key ##xwiki.documentBundles##.
47 * On the page where you want to use the internationalized message, use:(((
48 {{code}}
49 $msg.get("key")
50 $msg.get("key", ["param1", "param2", ...])
51 {{/code}}
52
53 where ##key## is the key for the message to retrieve. Parameters can also be passed as is shown in the second syntax above.
54 )))
55
56 = I18n of XWiki Objects =
57
58 This is currently not implemented (see our logged issue: [[XWIKI-69>>http://jira.xwiki.org/jira/browse/XWIKI-69]]). There are 2 workarounds you can use:
59
60 * Have several objects, one for each language, with a language field, and then decide which object to use (for example in a Class Sheet, based on the current language):(((
61 {{code language="none"}}
62 $doc.getObject('Your.Class', 'lang', $context.language')
63 ## Will select the object whose 'lang' property is set to the current language
64 {{/code}}
65 )))
66 * Use Velocity scripting to do an IF in your object. For example, you could have:(((
67 {{code language="none"}}
68 #if ($context.language == "fr")
69 French texts
70 #else
71 Default texts
72 #end
73 {{/code}}
74 )))

Get Connected