Changes for page Development-Localization and Internationalization
Last modified by Pascal Robert on 2015/05/04 04:24
From version 38.1
edited by tbritt
on 2009/11/06 10:18
on 2009/11/06 10:18
Change comment:
There is no comment for this version
To version 51.1
edited by Pascal Robert
on 2010/09/19 11:17
on 2010/09/19 11:17
Change comment:
There is no comment for this version
Summary
-
Page properties (3 modified, 0 added, 0 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,1 +1,1 @@ 1 - Web Applications-Development-Localization and Internationalization1 +Development-Localization and Internationalization - Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. tbritt1 +XWiki.probert - Content
-
... ... @@ -1,5 +1,7 @@ 1 1 == Unicode == 2 2 3 +See also: [[UTF-8 Encoding Tips>>UTF-8 Encoding Tips]] 4 + 3 3 To Enable Unicode for your WO app, add the following to your application constructor: 4 4 5 5 {{code}} ... ... @@ -68,7 +68,7 @@ 68 68 69 69 If you use localized strings in your UTF-8 application you may also check out Project Wonder's [[ERXLocalizer>>WOnder-ERXLocalizer]] class. 70 70 71 -=== Project Localization tips 73 +=== Project Localization tips [[~~ramsey]] === 72 72 73 73 The following are some tips and suggestions for localizing a project in WOLips using Project Wonder. 74 74 ... ... @@ -101,27 +101,55 @@ 101 101 102 102 {{/noformat}} 103 103 104 - 106 +The other changes are then in the er.extensions.ERXLocalizer.availableLanguages and ERXLanguages: 107 +In the above case after adding canadian french these would change in: 105 105 109 +{{noformat}} 110 + 111 +er.extensions.ERXLocalizer.availableLanguages=(English,Japanese,French_CA) 112 + 113 +{{/noformat}} 114 + 106 106 ===== Localized strings and components ===== 107 107 108 -For each language available, you will need a corresponding Localizable.strings file. This file should be located in Projects->Resources->"Lang".lproj directory. In these directories, you'll store localized resources such as Localizable.strings files and localized components. So, continuing with the above example, you should create two new Localizable.strings files in the following places in your project directory: 117 +For each language available, you will need a corresponding Localizable.strings file. This file should be located in Projects->Resources->"Lang".lproj directory. In these directories, you'll store localized resources such as Localizable.strings files and localized components. So, continuing with the above example, you should create two new Localizable.strings files in the following places in your project directory: 109 109 110 110 Project->Resources->English.lproj->Localizable.strings 111 111 Project->Resources->Japanese.lproj->Localizable.strings 121 +Project->Resources->French//CA.lproj->Localizable.strings// 112 112 113 113 As mentioned earlier, it's recommended that these be in UTF-16 format. You can do that by right clicking on the file in WOLips and selecting "Properties." In the resources panel, change from the project default encoding to UTF-16. 114 114 115 -If you have any components that need localizing, then you should relocate that component from your Project->Components folder into the appropriate Lang.lproj folder. Then make a copy of the component into the remaining lproj directories and you can begin the process of localizing the component. You do not need more than one copy of the associated API or java file. You only need duplicates of the WO. So, as an example, if you wanted to localize 125 +If you have any components that need localizing, then you should relocate that component from your Project->Components folder into the appropriate Lang.lproj folder. Then make a copy of the component into the remaining lproj directories and you can begin the process of localizing the component. You do not need more than one copy of the associated API or java file. You only need duplicates of the WO. So, as an example, if you wanted to localize 116 116 117 117 > Project->Components->Main WO 128 +>\\ 129 +>>You would right-click->Refactor->Move it to 118 118 119 -You would right-click->Refactor->Move it to 131 +> Project->Resources->English.lproj->Main WO 132 +>\\ 133 +>>and then right-click->Copy it from English.lproj and right-click->Paste it into Japanese.lproj. At this point, when you open the component in WOLips, there will be a tab at the bottom of the component editor view that allows you to switch back and forth between different localized versions of that component. 120 120 121 - > Project->Resources->English.lproj->MainWO135 +Your layout would end up something like this: 122 122 123 - and then right-click->Copy it fromEnglish.lprojand right-click->Pasteit intoJapanese.lproj. At this point, when you open thecomponentin WOLips, there will beatab at the bottom of the component editor view that allowsyouo switch back and forth between different localized versions of that component.137 +[[image:ERXLocalizerEclipseLayout.png]] 124 124 139 +===== Localized EOAttributes ===== 140 + 141 +In Wonder, it is also possible to localize attributes. There are two requisites: 142 + 143 +First add ERXLanguages to your Properties file: 144 + 145 +{{noformat}} 146 + 147 +ERXLanguages = (en,jp,fr_ca) 148 + 149 +{{/noformat}} 150 + 151 +Then, for the attribute you'd like to localize, add the ERXLanguages key to the UserInfo for that specific attribute: 152 + 153 +[[image:ERXLocalizerUserInfo_correct.png||border="1"]] 154 + 125 125 ===== Direct Actions ===== 126 126 127 127 If you are defaulting to direct actions, you may not have a session. If you do not have a session, the server will return the default language specified in the Properties mentioned above. If you're using direct actions and you don't like that behavior, you can stick this in your direct action class: ... ... @@ -143,6 +143,8 @@ 143 143 144 144 That should give the user their browser's default language setting instead of your server's default language setting until a session is created. 145 145 176 +[[Development-Localization and Internationalization^LocalizerTest.zip]] is an example application demonstrating the sessionless use of the localizer with localized strings and localized components, storing the language state in a cookie. 177 + 146 146 ===== Database setup ===== 147 147 148 148 Outside of this, if you are using a database, you'll need to make sure that is encoded properly as well. I'm using MySQL, so I have in my EOModel: ... ... @@ -150,3 +150,7 @@ 150 150 jdbc:mysql:~/~/localhost/mydatabase?capitalizeTypenames=true&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8 151 151 152 152 The database itself is set to default to "UTF8" encoding. (No hyphen in UTF8 for MySQL) You can set that in the "Options" pane of MySQL Administrator.app under the "Advanced" popup menu item in the "Def. char set" field. Of course, you'll need to use the correct database types too, meaning don't use a blob for text storage. Use varchar and longtext (varcharLarge is the name of the Wonder prototype) instead. 185 + 186 +===== Localization presentation from WOWODC West 2009 ===== 187 + 188 +Guido Neitzer did a localization presentation at WOWODC West 2009 that give a good overview of how to localize your apps. The presentation is available [[here>>http://www.wocommunity.org/podcasts/wowodc/west09/WOWODCW09-Localization.mov]].