From 1998a2fb62f6146507c58b10e55c0b6ff28fce79 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Fri, 24 Aug 2007 13:09:09 +0200 Subject: [PATCH] Fixed detecting whether a particular locale is actually supported --- HISTORY | 1 + i18n.c | 29 ++++++++++++++++------------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/HISTORY b/HISTORY index 9ddbf649..622ba156 100644 --- a/HISTORY +++ b/HISTORY @@ -5387,3 +5387,4 @@ Video Disk Recorder Revision History - Updated Turkish language texts (thanks to Oktay Yolgeçen). - Fixed stripping the context in I18nTranslate() (reported by Christian Wieninger). +- Fixed detecting whether a particular locale is actually supported. diff --git a/i18n.c b/i18n.c index 1eb8ebbf..b475a3b3 100644 --- a/i18n.c +++ b/i18n.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: i18n.c 1.314 2007/08/24 12:53:53 kls Exp $ + * $Id: i18n.c 1.315 2007/08/24 13:08:04 kls Exp $ * * */ @@ -114,19 +114,22 @@ void I18nInitialize(void) if (access(FileName, F_OK) == 0) { // found a locale with VDR texts if (NumLocales < I18N_MAX_LANGUAGES - 1) { SetEnvLanguage(Locales[i]); - NumLocales++; - if (strstr(OldLocale, Locales[i]) == OldLocale) - CurrentLanguage = LanguageLocales.Size(); - LanguageLocales.Append(strdup(Locales[i])); - LanguageNames.Append(strdup(gettext(LanguageName))); - const char *Code = gettext(LanguageCode); - for (const char **lc = LanguageCodeList; *lc; lc++) { - if (ContainsCode(*lc, Code)) { - Code = *lc; - break; + const char *TranslatedLanguageName = gettext(LanguageName); + if (TranslatedLanguageName != LanguageName) { + NumLocales++; + if (strstr(OldLocale, Locales[i]) == OldLocale) + CurrentLanguage = LanguageLocales.Size(); + LanguageLocales.Append(strdup(Locales[i])); + LanguageNames.Append(strdup(TranslatedLanguageName)); + const char *Code = gettext(LanguageCode); + for (const char **lc = LanguageCodeList; *lc; lc++) { + if (ContainsCode(*lc, Code)) { + Code = *lc; + break; + } } - } - LanguageCodes.Append(strdup(Code)); + LanguageCodes.Append(strdup(Code)); + } } else { esyslog("ERROR: too many locales - increase I18N_MAX_LANGUAGES!");