]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/indexfile.cc
ready for 0.7.20 upload
[apt.git] / apt-pkg / indexfile.cc
index 0f1f48af44461c46027eabf20565da68719aa66e..b38596143602248749d0431e62a1088c2e530bb5 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
@@ -70,10 +67,10 @@ string pkgIndexFile::SourceInfo(pkgSrcRecords::Parser const &Record,
    return string();
 }
                                                                        /*}}}*/
-// IndexFile::UseTranslation - Check if will use Translation           /*{{{*/
+// IndexFile::TranslationsAvailable - Check if will use Translation    /*{{{*/
 // ---------------------------------------------------------------------
 /* */
-bool pkgIndexFile::UseTranslation()
+bool pkgIndexFile::TranslationsAvailable()
 {
   const string Translation = _config->Find("APT::Acquire::Translation");
   
@@ -89,7 +86,6 @@ bool pkgIndexFile::UseTranslation()
 /* common cases: de_DE, de_DE@euro, de_DE.UTF-8, de_DE.UTF-8@euro,
                  de_DE.ISO8859-1, tig_ER
                  more in /etc/gdm/locale.conf 
-                approach: just get the first letter before the underscore?!?
 */
 
 bool pkgIndexFile::CheckLanguageCode(const char *Lang)
@@ -105,13 +101,23 @@ bool pkgIndexFile::CheckLanguageCode(const char *Lang)
                                                                        /*}}}*/
 // IndexFile::LanguageCode - Return the Language Code                  /*{{{*/
 // ---------------------------------------------------------------------
-/* */
+/* return the language code */
 string pkgIndexFile::LanguageCode()
 {
   const string Translation = _config->Find("APT::Acquire::Translation");
 
-  if (Translation.compare("environment") == 0) {
+  if (Translation.compare("environment") == 0) 
+  {
      string lang = std::setlocale(LC_MESSAGES,NULL);
+
+     // 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_*)
+     const char *need_full_langcode[] = { "pt","sv","zh","en", 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);
      else