X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/66c8f0766ef9f2d660251ece524fcb82d5ea3813..4ffaaa5d0ea85053dae7d1bf638a3a3a209ab36d:/apt-pkg/indexfile.cc diff --git a/apt-pkg/indexfile.cc b/apt-pkg/indexfile.cc index fad38772b..2f5bc2439 100644 --- a/apt-pkg/indexfile.cc +++ b/apt-pkg/indexfile.cc @@ -8,15 +8,12 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#ifdef __GNUG__ -#pragma implementation "apt-pkg/indexfile.h" -#endif - #include #include #include #include +#include /*}}}*/ // Global list of Item supported @@ -44,7 +41,6 @@ pkgIndexFile::Type *pkgIndexFile::Type::GetType(const char *Type) return 0; } /*}}}*/ - // IndexFile::ArchiveInfo - Stub /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -75,7 +71,7 @@ string pkgIndexFile::SourceInfo(pkgSrcRecords::Parser const &Record, /* */ bool pkgIndexFile::TranslationsAvailable() { - const string Translation = _config->Find("APT::Acquire::Translation", "environment"); + const string Translation = _config->Find("APT::Acquire::Translation"); if (Translation.compare("none") != 0) return CheckLanguageCode(LanguageCode().c_str()); @@ -93,8 +89,11 @@ bool pkgIndexFile::TranslationsAvailable() bool pkgIndexFile::CheckLanguageCode(const char *Lang) { - if (strlen(Lang) == 2 || (strlen(Lang) == 5 && Lang[2] == '_')) - return true; + if (strlen(Lang) == 2 || + strlen(Lang) == 3 || + (strlen(Lang) > 3 && Lang[3] == '_') || + (strlen(Lang) == 5 && Lang[2] == '_')) + return true; if (strcmp(Lang,"C") != 0) _error->Warning("Wrong language code %s", Lang); @@ -107,7 +106,7 @@ bool pkgIndexFile::CheckLanguageCode(const char *Lang) /* return the language code */ string pkgIndexFile::LanguageCode() { - const string Translation = _config->Find("APT::Acquire::Translation", "environment"); + const string Translation = _config->Find("APT::Acquire::Translation"); if (Translation.compare("environment") == 0) { @@ -116,13 +115,19 @@ string pkgIndexFile::LanguageCode() // we have a mapping of the language codes that contains all the language // codes that need the country code as well // (like pt_BR, pt_PT, sv_SE, zh_*, en_*) - char *need_full_langcode[] = { "pt","sv","zh","en", NULL }; - for(char **s = need_full_langcode;*s != NULL; s++) + const char *need_full_langcode[] = { "en_", + "pt_", + "sv_", + "zh_", + NULL }; + for(const char **s = need_full_langcode;*s != NULL; s++) if(lang.find(*s) == 0) return lang.substr(0,5); - if(lang.size() > 2) - return lang.substr(0,2); + if(lang.find("_") != lang.npos) + return lang.substr(0, lang.find("_")); + else if(lang.find(".") != lang.npos) + return lang.substr(0, lang.find(".")); else return lang; }