* Added language aliases (I think)
[squirrelmail.git] / functions / i18n.php
index 3aec6c9c6cd9ccde75f75cca43e85369a696ff9e..289e7ee1e45ba359d324aa8a1cfad7ba61d1cc8a 100644 (file)
@@ -38,6 +38,9 @@
    $languages['de']['NAME']    = 'Deutsch';
    $languages['de']['CHARSET'] = 'iso-8859-1';
    
+   $languages['id']['NAME']    = 'Indonesian';
+   $languages['id']['CHARSET'] = 'iso-8859-1';
+   
    $languages['nl']['NAME']    = 'Dutch';
    $languages['nl']['CHARSET'] = 'iso-8859-1';
    
@@ -79,6 +82,7 @@
    
    $languages['es']['NAME']    = 'Spanish';
    $languages['es']['CHARSET'] = 'iso-8859-1';
+   $languages['es_ES']['ALIAS'] = 'es';
 
    $languages['sv']['NAME']    = 'Swedish';
    $languages['sv']['CHARSET'] = 'iso-8859-1';
    global $use_gettext;
    
    // Detect whether gettext is installed.
-   // If it is, set the flag so we can use it.
-   if (! function_exists('_') || 
-       ! function_exists('bindtextdomain') ||
-       ! function_exists('textdomain'))
-       $use_gettext = false;
-   else
-       $use_gettext = true;
-          
-
-   // Avoid warnings/errors if gettext is not installed
-   if (! function_exists('_')) {
-      function _($str) { return $str; };
-   }
-   if (! function_exists('bindtextdomain')) {
-      function bindtextdomain() { return; }
-   }
-   if (! function_exists('textdomain')) {
-      function textdomain() { return; }
+   $gettext_flags = 0;
+   if (function_exists('_')) $gettext_flags += 1;
+   if (function_exists('bindtextdomain')) $gettext_flags += 2;
+   if (function_exists('textdomain')) $gettext_flags += 4;
+
+   // If gettext is fully loaded, cool
+   if ($gettext_flags == 7)
+      $use_gettext = true;
+   // If we can fake gettext, try that
+   elseif ($gettext_flags == 0) {
+      $use_gettext = true;
+      include('../functions/gettext.php');
+   } else {
+      // Uh-ho.  A weird install
+      if (! $gettext_flags & 1) {
+         function _($str) { return $str; };
+      }
+      if (! $gettext_flags & 2) {
+         function bindtextdomain() { return; }
+      }
+      if (! $gettext_flags & 4) {
+         function textdomain() { return; }
+      }
    }
 
 
    {
       static $SetupAlready = 0;
       global $HTTP_ACCEPT_LANGUAGE, $use_gettext, $languages, 
-          $squirrelmail_language;
+          $squirrelmail_language, $squirrelmail_default_language, 
+         $sm_notAlias;
       
       if ($SetupAlready)
          return;
-        
+
       $SetupAlready = 1;
       
       $charset_headers_sent=false;
       if ($do_search && ! $sm_language && isset($HTTP_ACCEPT_LANGUAGE)) {
          $sm_language = substr($HTTP_ACCEPT_LANGUAGE, 0, 2);
       }
+      if (! $sm_language && isset($squirrelmail_default_language))
+         $sm_language = $squirrelmail_default_language;
+      $sm_notAlias = $sm_language;
+      while (isset($languages[$sm_notAlias]['ALIAS']))
+         $sm_notAlias = $languages[$sm_notAlias]['ALIAS'];
 
       if (isset($sm_language) && $use_gettext &&
-         $squirrelmail_language != '' &&
-        isset($languages[$sm_language]['CHARSET'])) {
+          $squirrelmail_language != '' &&
+         isset($languages[$sm_notAlias]['CHARSET'])) {
          if ((ini_get('safe_mode') == FALSE) && (getenv('LC_ALL') != $sm_language)) {
-           putenv('LC_ALL=' . $sm_language);
+           putenv('LC_ALL=' . $sm_notAlias);
          }
-         setlocale('LC_ALL', $sm_language);
+         setlocale('LC_ALL', $sm_notAlias);
          bindtextdomain('squirrelmail', '../locale/');
          textdomain('squirrelmail');
          header ('Content-Type: text/html; charset=' . $languages[$sm_language]['CHARSET']);
-         $charset_headers_sent=true;
       }
-      return $charset_headers_sent;
    }
 
    function set_my_charset(){
      global $data_dir, $username, $default_charset, $languages;
      $my_language = getPref($data_dir, $username, "language");
      if (!$my_language) return;
+     while (isset($languages[$my_language]['ALIAS']))
+        $my_language = $languages[$my_language]['ALIAS'];
      $my_charset=$languages[$my_language]['CHARSET'];
      if ($my_charset) $default_charset=$my_charset;
    }