Merge lp:~widelands-dev/widelands/martin_i18n into lp:widelands

Proposed by SirVer
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
Reviewer Review Type Date Requested Status
Nasenbaer final approve Approve
Martin Needs Information
SirVer Needs Information
Tino win32 Needs Fixing
Review via email: mp+49202@code.launchpad.net

Description of the change

Martin explored wesnoths code and duplicated their ideas to properly fix i18n under linux.

To post a comment you must log in.
Revision history for this message
SirVer (sirver) wrote :

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.

review: Needs Fixing
Revision history for this message
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.

Revision history for this message
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? ;)

review: Needs Information
Revision history for this message
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.

Revision history for this message
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.

Revision history for this message
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

review: Needs Fixing (win32)
Revision history for this message
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.

Revision history for this message
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, ...

Revision history for this message
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://pastebin.com/qPmabxe7

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).

review: Needs Information
Revision history for this message
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://wl.widelands.org/developers

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?

review: Needs Information
Revision history for this message
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://wl.widelands.org/developers
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...

Revision history for this message
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://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair and https://help.launchpad.net/Code/UploadingABranch .

Revision history for this message
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?

Revision history for this message
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?

Revision history for this message
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!!

Revision history for this message
Martin (p-martin) wrote :

Sorry! Again, I didn't succeed in pushing a diff to this branch.
So I opened my own:
https://code.launchpad.net/~p-martin/widelands/i18n/+merge/49506

Alternatively, you can use this patch: http://pastebin.com/VGDHxmki

Have a nice test ;)

Revision history for this message
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!

Revision history for this message
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!

review: Needs Information
Revision history for this message
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.

Revision history for this message
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->FindFiles(s->get_string("localedir", INSTALL_LOCALEDIR), "*", &files)" results in an empty filenameset_t files...

Revision history for this message
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 :)!

review: Needs Fixing
Revision history for this message
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

Revision history for this message
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?

review: Needs Information
Revision history for this message
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.

Revision history for this message
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?

Revision history for this message
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 BuildingWidelandsUnderWindows page still up to date? (although slightly off-topic)

review: Needs Information
Revision history for this message
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?

Revision history for this message
Jari Hautio (jarih) wrote :

@Martin: I have updated BuildingWidelandsUnderWindows page recently. Mingw build with with latest mingw, self compiled libraries and cmake should work. I have compiled this branch based on the described build commands.

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.

Revision history for this message
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 :)!

review: Approve (final approve)
Revision history for this message
Nasenbaer (nasenbaer) wrote :

Hans Joachim, you are of course right! Thank you for pointing to those bugs - I updated the states :)

Revision history for this message
SirVer (sirver) wrote :

Thanks a lot Martin and all testers! Makes me always warm and fuzzy when many work so nicely together on widelands.

Revision history for this message
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

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
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+

Subscribers

People subscribed via source and target branches

to status/vote changes: