2 * i18n.c: Internationalization
4 * This code is taken from the VDR project and modified for VOMP.
5 * See the main source file 'vdr.c' for original copyright information.
6 * Modifications (C) 2005 D Pickles.
8 This file is part of VOMP.
10 VOMP is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 2 of the License, or
13 (at your option) any later version.
15 VOMP is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with VOMP; if not, write to the Free Software
22 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 #include "language-data.h"
31 int I18n::LanguageID = DEFAULT_LANGUAGE_INDEX;
33 int I18n::initialize(void)
35 VDR *vdr = VDR::getInstance();
36 char *lang = vdr->configLoad("General", "Language");
39 LanguageID = LanguageIndex(lang);
48 LanguageID = DEFAULT_LANGUAGE_INDEX;
53 const char* I18n::translate(const char* s)
57 const tI18nPhrase *p = Phrases;
58 for (int i = ((p == Phrases) ? 1 : 2); i--; )
62 if (strcmp(s, **p) == 0)
64 char *t = (*p)[LanguageID];
65 if (t && *t) return t;
70 Log::getInstance()->log("I18n", Log::ERR, "No translation found for '%s' in language %d (%s)",
71 s, LanguageID, LanguageName(LanguageID));
74 char *p = strchr(s, '$');
78 const char* const * I18n::CharSets(void)
83 const char* const I18n::LanguageCode(int Index)
85 return 0 <= Index && Index < NumLanguages ? languageCodes[Index] : NULL;
88 const char* I18n::LanguageName(int Index)
90 return 0 <= Index && Index < NumLanguages ? Languages[Index] : NULL;
93 int I18n::LanguageIndex(const char* Name)
95 for (int i = 0; i < NumLanguages; i++)
97 if (STRCASESTR(Languages[i], Name)) return i;
99 Log::getInstance()->log("I18n", Log::ERR, "Unknown language: '%s'", Name);
103 int I18n::GetNumLanguages(void)