Merge lp:~widelands-dev/widelands/martin_i18n into lp:widelands
- martin_i18n
- Merge into trunk
Status: | Merged |
---|---|
Merged at revision: | 5831 |
Proposed branch: | lp:~widelands-dev/widelands/martin_i18n |
Merge into: | lp:widelands |
Diff against target: |
332 lines (+170/-37) 6 files modified
src/i18n.cc (+105/-27) src/i18n.h (+1/-0) src/wlapplication.cc (+18/-10) src/wlapplication.h (+1/-0) txts/developers (+1/-0) txts/locales (+44/-0) |
To merge this branch: | bzr merge lp:~widelands-dev/widelands/martin_i18n |
Related bugs: |
Commit message
Description of the change
Martin explored wesnoths code and duplicated their ideas to properly fix i18n under linux.
SirVer (sirver) wrote : | # |
Oh, I forgot: please test this branch before we merge it to trunk. We should get linux and windows testing at the very least.
Martin (p-martin) wrote : | # |
2) sounds a little bit strange. I did not change any line of the code for the language list. Did this work before my patch?
Unfortunately, I'm not familiar with language issues under Mac OS X. But a large, well-known search engine told me, OS X would neither use LANG nor LANGUAGE environment variables. I don't know, if this information is correct. Do you know, from where programs on Apple's systems usually get the configured language in that case?
Also, you told me that you need an ID. Do you mean my name? user id? credit card pin? something else? ;)
Hans Joachim Desserud (hjd) wrote : | # |
> Oh, I forgot: please test this branch before we merge it to trunk. We should
> get linux and windows testing at the very least.
Linux testing (Ubuntu 10.10 + Arch):
The list of locales is shown.
Selecting System language works.
Switching from one locale to another works. However, selecting a language when I don't have the locale installed on my machine does not work and print the following error
"No corresponding locale was found!"
Is this intentional behaviour, or a regression? I liked being able to switch between all languages.
I've read parts of the forum thread, but I am unsure if this has been mentioned already or not.
Martin (p-martin) wrote : | # |
Thanks for testing and reporting, Hans Joachim.
> Is this intentional behaviour, or a regression?
I guess, the behaviour is not intentional - more a kind of restriction. AFAIK, gettext only works with those locales installed on the system. Or is this just a restriction by Ubuntu? I don't know.
> I liked being able to switch between all languages.
Did this work in 5825 or earlier? As long as gettext has been used, it never was the case with Ubuntu.
If it really was possible with other Linux distributions (to select non-installed languages), I would propose for the Not-Found-Case to set the locale to the selected language string or its first two characters. Then, Ubuntu still will switch back to English, if no corresponding locale was found. But other Linuxes might succeed in switching the language even if the locale isn't installed on the system.
Tino (tino79) wrote : | # |
I've just tested the branch on win32 (gcc):
Before i started WL, i removed my WL config file.
Widelands starts in German.
The language list in Options shows 2 entries:
- (checked) Verwende Systemsprache, ("Try system language", the german strings seems somehow truncated here...)
- Englisch
Switching between system language (german) and english works fine.
My system
- Windows 7 x64 Professional English, with installed and activated german language pack
Jari Hautio (jarih) wrote : | # |
I fixed it to compile with visual studio r5829.
I tested windows builds with msvc and mingw by merging the branch to trunk.
I had all language entries in both msvc and mingw builds, altough they were visible only after I copied the locale files to right place. I tried multiple languages and they seemed to work the same way as in trunk.
Nasenbaer (nasenbaer) wrote : | # |
Looks generally good to me :). Good work martin!
About the different problems:
* the Mac problems SirVer faced are possibly based upon the clearing of LANGUAGE and the setting of LANG - I am quite sure that there was a comment somewhere, that macos needs the variable LANGUAGE set (perhaps "only the variable" ?) - however following the way of "never change a running system" (and it seems it does work before), we should try to not clear LANGUAGE initially and perhaps all the changes of LANG should be removed as well. SirVer could you please test, whether that solves your problems?
* I support Hans Joachim Desserud's wish, to not block languages, that can not be found - here on my German localized Mandriva Linux (just de and en locales installed) switching the language to Spanish or Swedish worked quite fine until now, ...
Martin (p-martin) wrote : | # |
Sorry, still didn't find out, how to contribute code on this launchpad branch. So again, I posted a patch via pastebin: http://
The LANGUAGE environment variable is now used on Mac OS X, instead of LANG. Moreover, unsetting the variable now happens just under Linux.
If (in Linux) no installed locale for the selected language is found, I now set the LANG variable directly to the selected language. This should bring back the feature of selecting uninstalled languages on other distros than Ubuntu. Please try, if this patch works - or whether we still need to set the LANGUAGE variable again.
I can confirm, that it works with Ubuntu (except for the selection of uninstalled languages, but this should be no problem).
SirVer (sirver) wrote : | # |
Okay, I found the problem with mac os x not filling the list: widelands checks in the CWD for the localedir and enumerates the locales it finds there but it tries to load the locales from the --localedir= commandline option. So things are a bit awkward - currently I can either have the list of all languages or get the game localized.
Okay, so we have success reports from windows, mac and linux. The problems described are likely not related to this bug.
Martin, with ID i mean your credit card. It is common that new developers pay a fee to join in the widelands development which is currently 50€.
...
just kidding. I need a name or nickname that you want to have apearing on our developers list:
http://
I can then go ahead and merge this branch. Maybe you are also interested to sort the remaining issues out, even though they are not of your making?
Martin (p-martin) wrote : | # |
> Okay, so we have success reports from windows, mac and linux.
You mean 5829? Or the later patch (see above)?
> I need a name or nickname that you want to have apearing on our
> developers list:
> http://
Thank you!
You can add my name to the list like this: Martin Prussak (martin)
(for Coders and Translators, I think)
but my user IDs for widelands.org and launchpad.net are not the same...
Hans Joachim Desserud (hjd) wrote : | # |
>I can confirm, that it works with Ubuntu (except for the selection of uninstalled languages, but this >should be no problem).
I'd preferably like to see this fixed before the branch is merged, as it is a somewhat strange regression. Out of curiosity I checked Wesnoth earlier today, and I was able to switch to other languages even when the locale wasn't installed.
Slightly off-topic:
Martin, for uploading code to Launchpad see https:/
Martin (p-martin) wrote : | # |
Again, I had a look at the Wesnoth-Project. What I didn't test before was the selection of uninstalled languages. This works in wesnoth - even with Ubuntu!!
I figured out, that the C++ code does not seem to make the difference. With the modification below, we nearly use the same way of locale selection like wesnoth.
More and more, I think that there may be some problems with our configuration or creation of the translation files.
When you compare the po/ directories of widelands and wesnoth, wesnoth has some additional files - such as "LINGUAS", which seems to be important, as it contains a list of all available languages. I did not find a kind of this file in widelands.
Also, the other stuff: make/cmake files/rules slightly more structured, and so on...
Seems to be another approach for our problem. But I have no clue of how to configure these files correctly :(
SirVer, do you know someone that is familiar with it?
SirVer (sirver) wrote : | # |
Martin, I added you to the list of developers in the martin_i18n branch. Your latest patch didn't apply to this branch, could you repost the diff based on the current tip of the martin_i18n branch?
I have no idea about gettext and we have no specialist in this field in the team, otherwise we would have probably sorted this out already :(. Maybe the SVN log of wesnoth gives us a name of a specialist in their team that we could contact?
I am unsure about the state of this branch now. What needs to be done before this can be merged? It seems to improve the i18n situation in some circumstances and makes it worse in others, is this correct or did I mininterpret the current discussion?
Martin (p-martin) wrote : | # |
Heureka! I got it!!! I just succeeded to use ANY language with Ubuntu. I thought, this wouldn't be possible, but however it is :)
Seems like it is very significant, which of the environment variables is set and which not.
I'll try to push the diff within the next hours - and then: let's start another testing round!!
Martin (p-martin) wrote : | # |
Sorry! Again, I didn't succeed in pushing a diff to this branch.
So I opened my own:
https:/
Alternatively, you can use this patch: http://
Have a nice test ;)
SirVer (sirver) wrote : | # |
I pulled your changes from the new branch to the martin_i18n branch to keep the history of commits intact. So the martin_i18n branch should contain your latest version now.
Testing wise the issues on mac os x are unchanged but do not provide a problem (as clever packaging will solve all path related problems and we will ship a .app package anyway).
if you contribute more fixes, please use the following sets of commands:
bzr get lp:~widelands-dev/widelands/martin_i18n # get this branch
cd martin_i18n
bzr pull lp:~widelands-dev/widelands/martin_i18n # has someone made any changes?
- make your changes
bzr commit -m "I changed this and this and that"
bzr push lp:~widelands-dev/widelands/martin_i18n # push the current version
So, testers on windows and linux once again please!
Martin (p-martin) wrote : | # |
SirVer, thanks for merging. Meanwhile, I found out, what I did wrong: I changed my local copy of trunk, not of this branch - and therefore got the bzr error msg "branches have diverged", of course.
However, thank you for the complete set of commands to use - even though I hope, not to have to upload lots of subsequent changes ;)
Another question: Should I delete lp:p-martin/widelands/i18n now? Or maybe just its merge proposal? Or will this result in problems with this branch?
For all the testers: here are some points you should check:
- widelands should start using your selected language (from config)
- list in options menu should contain 42 languages plus system default
- selection of installed language should work
- selection of non-installed language should also work
- "system language" should take effect without restarting widelands
- please test with Linux (Ubuntu 10.10 already tested, works great!)
- please test with Mac OS X
- please test with Windows
Of course, this patch concentrates on Linux, but other system's functionality should at least be kept.
I'm looking forward to reading your results!
SirVer (sirver) wrote : | # |
@Martin: you can delete the i18n branch, it will not interfere with this one. You can also keep it around, but set it to being inactive then please.
Tino (tino79) wrote : | # |
On windows the language list doesn't get populated, it only contains system default and english, bot options are hardcoded in options.cc line 290ff.
I've tried to debug the way the list should be generated from the files in the locales dir, but i didn't get it to work.
It seems "g_fs->
Nasenbaer (nasenbaer) wrote : | # |
One left issue for me ... now setting other languages works fine, but not English language codes - instead Widelands gets translated to German...
Everything elese looks good :)!
Nasenbaer (nasenbaer) wrote : | # |
> One left issue for me ... now setting other languages works fine, but not
> English language codes - instead Widelands gets translated to German...
> Everything elese looks good :)!
Ahh sorry forgot to say: Mandriva Linux 2010.2 32bit
Martin (p-martin) wrote : | # |
@Nasenbaer: Although I did not encounter this problem with Ubuntu, I added a setenv of LANG, if the locale could not be found. It still works fine on my system - also for en_AU, en_CA and en_GB: for these, locales are found. But even starting widelands with non-installed brazilian portugese (pt_BR) is successful. Could you please retry, if it also works for Mandriva now?
@SirVer:
> clever packaging will solve all path related problems [...]
Tino's problem with only two entries in the language list in Windows - is it related to your path related problems on Mac OS X? I mean, should I have a look at it - or will it be removed by packaging anyway, as you wrote?
Nasenbaer (nasenbaer) wrote : | # |
Hi, sorry that I answer so late, I fear we missunderstood each other ;).
Unfortunally your change did not change anything for me, but that's no wonder as you changed code for "if (locale not found)", but the English locales are installed and found - however Widelands is German and not English.
Following example:
=======
selected language: cs
No corresponding locale found - trying to set it via LANGUAGE=cs, LANG=cs
selected language: (system language)
using locale de_DE.UTF-8
selected language: en
using locale en_US
=======
* Czech translation works as it should
* Germans (default system language) works as it should
* English localisation does not work, but uses German localisation.
Nasenbaer (nasenbaer) wrote : | # |
Okay, I fixed it for me - LANGUAGE is set in normal cases as well - can you please check if it works on Ubuntu as well?
Martin (p-martin) wrote : | # |
@Nasenbaer: You're right, I misunderstood your previous post. When you posted the exact messages, I had the same idea - but you were faster pushing the fix ;)
I can confirm, that your fix still works on Ubuntu 10.10! So we seem to be pretty close to "the solution" :)
For Linux, everything should be working now. (what about Arch, Hans Joachim?)
I also tried to compile widelands on Windows XP (MinGW) to reproduce Tino's "unpopulated language list", but somehow failed :( Seems to be due to the fact that NTFS doesn't support soft links...
As some files are "missing", cmake fails. Is the BuildingWidelan
Hans Joachim Desserud (hjd) wrote : | # |
Everything seems to be working as expected on Arch (and Ubuntu as well): a long list of languages is shown, switching to installed/not installed language works, changing the config-file works.
Thanks for fixing languages without installed locale!
I wonder if bug 642853 and bug 642854 should be linked to this branch as it seems to fix those issues?
Jari Hautio (jarih) wrote : | # |
@Martin: I have updated BuildingWidelan
I retested mingw build, and I experience same behaviour in trunk and in this branch: After building from clean checkout, only try system language and english are listed in language list. After I copy locale files from build directory to locale directory in top most directory, the rest of the languages are listed.
Nasenbaer (nasenbaer) wrote : | # |
Okay, so this is a packing issue on Win32 as well.
Jari, the behaviour you describe is intended - Widelands searches in the locale directory (always the subdirectory "locale" of the Widelands directory) for translation directories - only found ones are listed - English is always shown (untranslated), same for "try system language"
I will finally merge the branch :)
Good work Martin! Thank you for FINALLY fixing this :)!
Nasenbaer (nasenbaer) wrote : | # |
Hans Joachim, you are of course right! Thank you for pointing to those bugs - I updated the states :)
SirVer (sirver) wrote : | # |
Thanks a lot Martin and all testers! Makes me always warm and fuzzy when many work so nicely together on widelands.
Martin (p-martin) wrote : | # |
I'd also like to thank all testers and coop developers!
I'm glad that wideland's behaviour in terms of i18n/l10n now works as expected so far. From now on, getting the game localized to their preferred languages without expert's knowlegde will be very easy - especially for new players :)
Preview Diff
1 | === modified file 'src/i18n.cc' |
2 | --- src/i18n.cc 2010-11-01 21:43:46 +0000 |
3 | +++ src/i18n.cc 2011-02-16 18:55:31 +0000 |
4 | @@ -19,6 +19,7 @@ |
5 | |
6 | #include "i18n.h" |
7 | #include "log.h" |
8 | +#include "profile/profile.h" |
9 | |
10 | #include <config.h> |
11 | |
12 | @@ -27,6 +28,15 @@ |
13 | #include <cstdlib> |
14 | #include <utility> |
15 | |
16 | +#if __APPLE__ && LIBINTL_VERSION >= 0x001201 |
17 | +// for older libintl versions, setlocale is just fine |
18 | +#define SETLOCALE libintl_setlocale |
19 | +#elif _MSC_VER |
20 | +#define SETLOCALE setlocale |
21 | +#else |
22 | +#define SETLOCALE std::setlocale |
23 | +#endif |
24 | + |
25 | extern int _nl_msg_cat_cntr; |
26 | |
27 | namespace i18n { |
28 | @@ -36,6 +46,7 @@ |
29 | /// \see grab_texdomain() |
30 | std::vector<std::pair<std::string, std::string> > textdomains; |
31 | |
32 | +std::string env_locale; |
33 | std::string locale; |
34 | std::string localedir; |
35 | |
36 | @@ -70,8 +81,8 @@ |
37 | char const * const dom = domain.c_str(); |
38 | char const * const ldir = localedir.c_str(); |
39 | |
40 | + bindtextdomain(dom, ldir); |
41 | bind_textdomain_codeset(dom, "UTF-8"); |
42 | - bindtextdomain(dom, ldir); |
43 | // log("textdomain %s @ %s\n", dom, ldir); |
44 | textdomain(dom); |
45 | textdomains.push_back(std::make_pair(dom, ldir)); |
46 | @@ -100,55 +111,122 @@ |
47 | } |
48 | |
49 | /** |
50 | - * Set the locale to the given string |
51 | + * Initialize locale to English. |
52 | + * Save system language (for later selection). |
53 | + * Code inspired by wesnoth.org |
54 | + */ |
55 | +void init_locale() { |
56 | +#ifdef _WIN32 |
57 | + env_locale = ""; |
58 | + locale = "English"; |
59 | + SETLOCALE(LC_ALL, "English"); |
60 | +#else |
61 | + // first, save environment variable |
62 | + env_locale = getenv("LANG"); |
63 | + if (env_locale.empty()) |
64 | + env_locale = getenv("LANGUAGE"); |
65 | + |
66 | + locale = "C"; |
67 | + SETLOCALE(LC_ALL, "C"); |
68 | + SETLOCALE(LC_MESSAGES, ""); |
69 | +#endif |
70 | +} |
71 | + |
72 | +/** |
73 | + * Set the locale to the given string. |
74 | + * Code inspired by wesnoth.org |
75 | */ |
76 | void set_locale(std::string name) { |
77 | std::string lang(name); |
78 | |
79 | + log("selected language: %s\n", lang.empty()?"(system language)":lang.c_str()); |
80 | + |
81 | +#ifndef _WIN32 |
82 | +#ifndef __AMIGAOS4__ |
83 | +#ifndef __APPLE__ |
84 | + unsetenv ("LANGUAGE"); // avoid problems with this variable |
85 | +#endif |
86 | +#endif |
87 | +#endif |
88 | + |
89 | + std::string alt_str; |
90 | + if (lang.empty()) { |
91 | + // reload system language, if selected |
92 | + lang = env_locale; |
93 | + alt_str = env_locale + ","; |
94 | + } else { |
95 | + // otherwise, read alternatives from file |
96 | + Profile loc("txts/locales"); |
97 | + Section * s = &loc.pull_section("alternatives"); |
98 | + alt_str = s->get_string(lang.c_str(), lang.c_str()); |
99 | + alt_str += ","; |
100 | + } |
101 | + |
102 | // Somehow setlocale doesn't behave same on |
103 | // some systems. |
104 | #ifdef __BEOS__ |
105 | setenv ("LANG", lang.c_str(), 1); |
106 | setenv ("LC_ALL", lang.c_str(), 1); |
107 | + locale = lang; |
108 | #endif |
109 | #ifdef __APPLE__ |
110 | setenv ("LANGUAGE", lang.c_str(), 1); |
111 | + setenv ("LANG", lang.c_str(), 1); |
112 | setenv ("LC_ALL", lang.c_str(), 1); |
113 | + locale = lang; |
114 | #endif |
115 | - |
116 | #ifdef _WIN32 |
117 | putenv(const_cast<char *>((std::string("LANG=") + lang).c_str())); |
118 | + locale = lang; |
119 | #endif |
120 | |
121 | #ifdef linux |
122 | - // hopefully this gets gettext to run on all linux distributions - some like |
123 | - // ubuntu are very problematic with setting language variables. |
124 | - // If this doesn't solve the problem on your linux-distribution, here comes |
125 | - // a quote from |
126 | - // http://www.gnu.org/software/automake/manual/ |
127 | - // gettext/Locale-Environment-Variables.html |
128 | - // |
129 | - // Some systems, unfortunately, set LC_ALL in /etc/profile or in similar |
130 | - // initialization files. As a user, you therefore have to unset this |
131 | - // variable if you want to set LANG and optionally some of the other LC_xxx |
132 | - // variables. |
133 | - |
134 | - /* If lang is empty, fill it with $LANG */ |
135 | - if (lang.size() < 1) |
136 | - if (char const * const l = getenv("LANG")) |
137 | - lang = l; |
138 | - /* Than set the variables */ |
139 | - setenv ("LANG", lang.c_str(), 1); |
140 | - setenv ("LANGUAGE", lang.c_str(), 1); |
141 | - log |
142 | - ("LANG %s, LANGUAGE %s:%s\n", |
143 | - lang.c_str(), lang.c_str(), + lang.substr(0, 2).c_str()); |
144 | + char * res = NULL; |
145 | + char const * encoding[] = {"", ".utf-8", "@euro", ".UTF-8"}; |
146 | + std::size_t found = alt_str.find(',', 0); |
147 | + bool leave_while = false; |
148 | + // try every possible combination of alternative and encoding |
149 | + while (found != std::string::npos) { |
150 | + std::string base_locale = alt_str.substr(0, int(found)); |
151 | + alt_str = alt_str.erase(0, int(found) + 1); |
152 | + |
153 | + for (int j = 0; j < 4; ++j) { |
154 | + std::string try_locale = base_locale + encoding[j]; |
155 | + res = SETLOCALE(LC_MESSAGES, try_locale.c_str()); |
156 | + if (res) { |
157 | + locale = try_locale; |
158 | + log("using locale %s\n", try_locale.c_str()); |
159 | + leave_while = true; |
160 | + break; |
161 | + } else { |
162 | + //log("locale is not working: %s\n", try_locale.c_str()); |
163 | + } |
164 | + } |
165 | + if (leave_while) break; |
166 | + |
167 | + found = alt_str.find(',', 0); |
168 | + } |
169 | + if (leave_while) { |
170 | + setenv("LANG", locale.c_str(), 1); |
171 | + setenv("LANGUAGE", locale.c_str(), 1); |
172 | + } else { |
173 | + log |
174 | + ("No corresponding locale found - trying to set it via LANGUAGE=%s, LANG=%s\n", |
175 | + lang.c_str(), lang.c_str()); |
176 | + setenv("LANGUAGE", lang.c_str(), 1); |
177 | + setenv("LANG", lang.c_str(), 1); |
178 | + SETLOCALE(LC_MESSAGES, ""); // set locale according to the env. variables |
179 | + // --> see $ man 3 setlocale |
180 | + // assume that it worked |
181 | + // maybe, do another check with the return value (?) |
182 | + locale = lang; |
183 | + } |
184 | |
185 | /* Finally make changes known. */ |
186 | ++_nl_msg_cat_cntr; |
187 | #endif |
188 | - setlocale(LC_ALL, ""); // call to libintl |
189 | - locale = lang.c_str(); |
190 | + |
191 | + SETLOCALE(LC_ALL, ""); // call to libintl |
192 | |
193 | if (textdomains.size()) { |
194 | char const * const domain = textdomains.back().first.c_str(); |
195 | |
196 | === modified file 'src/i18n.h' |
197 | --- src/i18n.h 2010-04-12 09:11:24 +0000 |
198 | +++ src/i18n.h 2011-02-16 18:55:31 +0000 |
199 | @@ -48,6 +48,7 @@ |
200 | ~Textdomain() {release_textdomain();} |
201 | }; |
202 | |
203 | +void init_locale(); |
204 | void set_locale(std::string); |
205 | std::string const & get_locale(); |
206 | |
207 | |
208 | === modified file 'src/wlapplication.cc' |
209 | --- src/wlapplication.cc 2010-12-14 12:36:29 +0000 |
210 | +++ src/wlapplication.cc 2011-02-16 18:55:31 +0000 |
211 | @@ -286,6 +286,7 @@ |
212 | init_settings(); |
213 | if (m_default_datadirs) |
214 | setup_searchpaths(m_commandline["EXENAME"]); |
215 | + init_language(); // search paths must already be set up |
216 | cleanup_replays(); |
217 | init_hardware(); |
218 | |
219 | @@ -780,16 +781,6 @@ |
220 | //then parse the commandline - overwrites conffile settings |
221 | handle_commandline_parameters(); |
222 | |
223 | - // Set Locale and grab default domain |
224 | - i18n::set_locale(s.get_string("language", "")); |
225 | - |
226 | - std::string localedir = s.get_string("localedir", INSTALL_LOCALEDIR); |
227 | - i18n::set_localedir(find_relative_locale_path(localedir)); |
228 | - |
229 | - i18n::grab_textdomain("widelands"); |
230 | - |
231 | - log("using locale %s\n", i18n::get_locale().c_str()); |
232 | - |
233 | set_input_grab(s.get_bool("inputgrab", false)); |
234 | set_mouse_swap(s.get_bool("swapmouse", false)); |
235 | |
236 | @@ -835,6 +826,23 @@ |
237 | } |
238 | |
239 | /** |
240 | + * Initialize language settings |
241 | + */ |
242 | +void WLApplication::init_language() { |
243 | + // retrieve configuration settings |
244 | + Section & s = g_options.pull_section("global"); |
245 | + |
246 | + // Initialize locale and grab "widelands" textdomain |
247 | + i18n::init_locale(); |
248 | + std::string localedir = s.get_string("localedir", INSTALL_LOCALEDIR); |
249 | + i18n::set_localedir(find_relative_locale_path(localedir)); |
250 | + i18n::grab_textdomain("widelands"); |
251 | + |
252 | + // Set locale corresponding to selected language |
253 | + i18n::set_locale(s.get_string("language", "")); |
254 | +} |
255 | + |
256 | +/** |
257 | * Remember the last settings: write them into the config file |
258 | */ |
259 | void WLApplication::shutdown_settings() |
260 | |
261 | === modified file 'src/wlapplication.h' |
262 | --- src/wlapplication.h 2010-11-21 11:44:22 +0000 |
263 | +++ src/wlapplication.h 2011-02-16 18:55:31 +0000 |
264 | @@ -222,6 +222,7 @@ |
265 | bool poll_event(SDL_Event &, bool throttle); |
266 | |
267 | bool init_settings(); |
268 | + void init_language(); |
269 | std::string find_relative_locale_path(std::string localedir); |
270 | void shutdown_settings(); |
271 | |
272 | |
273 | === modified file 'txts/developers' |
274 | --- txts/developers 2011-02-07 14:53:40 +0000 |
275 | +++ txts/developers 2011-02-16 18:55:31 +0000 |
276 | @@ -68,6 +68,7 @@ |
277 | "<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Joachim Breitner (nomeata)</p></rt>" |
278 | "<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Nizamov Shawkat</p></rt>" |
279 | "<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Carl-Philip Hänsch (carli)</p></rt>" |
280 | +"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Martin Prussak (martin)</p></rt>" |
281 | "<rt text-align=left><p font-size=24 font-decoration=bold font-face=FreeSerif font-color=f4a131><br><br>" |
282 | "" |
283 | "" |
284 | |
285 | === added file 'txts/locales' |
286 | --- txts/locales 1970-01-01 00:00:00 +0000 |
287 | +++ txts/locales 2011-02-16 18:55:31 +0000 |
288 | @@ -0,0 +1,44 @@ |
289 | +[alternatives] |
290 | +ar="ar,ar_AR,ar_AE,ar_BH,ar_DZ,ar_EG,ar_IN,ar_IQ,ar_JO,ar_KW,ar_LB,ar_LY,ar_MA,ar_OM,ar_QA,ar_SA,ar_SD,ar_SY,ar_TN,ar_YE" |
291 | +ca="ca,ca_ES,ca_ES@valencia,ca_FR,ca_IT" |
292 | +cs="cs,cs_CZ" |
293 | +da="da,da_DK" |
294 | +de="de,de_DE,de_AT,de_CH,de_LI,de_LU,de_BE" |
295 | +en="en,en_US,en_GB,en_AU,en_CA,en_AG,en_BW,en_DK,en_HK,en_IE,en_IN,en_NG,en_NZ,en_PH,en_SG,en_ZA,en_ZW" |
296 | +en_AU="en_AU,en,en_US,en_GB" |
297 | +en_CA="en_CA,en,en_US,en_GB" |
298 | +en_GB="en_GB,en,en_US" |
299 | +eo="eo,eo_XX" |
300 | +es="es,es_ES,es_MX,es_US" |
301 | +et="et,et_EE" |
302 | +eu="eu,eu_ES,eu_FR" |
303 | +fa="fa,fa_IR" |
304 | +fi="fi,fi_FI" |
305 | +fr="fr,fr_FR,fr_CH,fr_BE,fr_CA,fr_LU" |
306 | +gl="ga,gl_ES" |
307 | +he="he,he_IL" |
308 | +hu="hu,hu_HU" |
309 | +ia="ia" |
310 | +id="id,id_ID" |
311 | +it="it,it_IT,it_CH" |
312 | +ja="ja,ja_JP" |
313 | +ko="ko,ko_KR" |
314 | +la="la,la_AU" |
315 | +ms="ms,ms_MY" |
316 | +nb="nb,nb_NO" |
317 | +nl="nl,nl_NL,nl_BE,nl_AW" |
318 | +nn="nn,nn_NO" |
319 | +oc="oc,oc_FR" |
320 | +pl="pl,pl_PL" |
321 | +pt="pt,pt_PT,pt_BR" |
322 | +pt_BR="pt_BR,pt,pt_PT" |
323 | +ru="ru,ru_RU,ru_UA" |
324 | +si="si,si_LK" |
325 | +sk="sk,sk_SK" |
326 | +sl="sl,sl_SI" |
327 | +sr="sr,sr_RS,sr_ME" |
328 | +sv="sv,sv_FI,sv_SE" |
329 | +tr="tr,tr_TR,tr_CY" |
330 | +uk="uk,uk_UA" |
331 | +vi="vi,vi_VN" |
332 | + |
I applied martins code with some compile fixes for mac os x. I can report the following for Mac OS X:
1) If you manually set the locale to de, the game is properly localized
2) The locales list in the options menu does not show anything but the current locale (Deutsch), English and Try system language. Try system language does not work - the game is not in German. I guess all locales should be shown in the list under Mac OS and the system language should be recognized.
Martin, I also need an ID for the authors file.