2 * Copyright (C) 2006 Jean Privat
3 * Part of the Neverball Project http://icculus.org/neverball/
5 * NEVERBALL is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published
7 * by the Free Software Foundation; either version 2 of the License,
8 * or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
21 /* predeclare the POSIX putenv function, I do not know why but is not declared */
22 int putenv(char *string);
24 const char * gettextdbg(const char * c)
26 char * c2 = gettext(c);
31 const char * sgettext(const char *msgid)
33 const char *msgval = gettext (msgid);
34 if (msgval == msgid) {
35 msgval = strrchr (msgid, '^');
45 /*---------------------------------------------------------------------------*/
48 const char * language_names[] = {N_("English"), N_("French"), N_("German"), N_("Latvian")};
49 const char * language_codes[] = {"en", "fr", "de", "lv"};
51 /*---------------------------------------------------------------------------*/
53 void language_init(const char * domain, const char * locale_dir)
55 setlocale(LC_ALL, "");
56 bindtextdomain(domain, locale_dir);
58 bind_textdomain_codeset(domain, "UTF-8");
61 void language_set(int l)
65 /* remove the LANGUAGE env variable */
71 /* set the LANGUAGE env variable */
72 strcpy(e, "LANGUAGE=");
73 strncat(e, language_codes[l-1], 25-9);
76 setlocale(LC_ALL, ""); /* force to update getext */
79 int language_count(void)
84 int language_from_code(const char * code)
87 for(i=0; i<LANG_NUMBER; i++)
88 if (strcmp(language_codes[i], code) == 0)
93 const char * language_get_name(int id)
95 return id==0 ? _("System Default") : language_names[id-1];
99 const char * language_get_code(int id)
102 return language_codes[id-1];