]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/indexfile.cc
.bzr-builddeb.moved/default.conf.bzr-builddeb.moved/default.conf: removed, bogus
[apt.git] / apt-pkg / indexfile.cc
index fad38772b606c58a53763f803eb524b695c1b61b..2f5bc24390c66cc954078b4bf453ac45ecb981e6 100644 (file)
@@ -8,15 +8,12 @@
    ##################################################################### */
                                                                        /*}}}*/
 // Include Files                                                       /*{{{*/
-#ifdef __GNUG__
-#pragma implementation "apt-pkg/indexfile.h"
-#endif
-
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/indexfile.h>
 #include <apt-pkg/error.h>
 
 #include <clocale>
+#include <cstring>
                                                                        /*}}}*/
 
 // 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;
   }