sTEFANs Subversion Web Contol (SWC)
Inc
[ class tree: Swc ] [ index: Swc ] [ all elements ]

Source for file translation.inc.php

Documentation is available at translation.inc.php

  1. <?php
  2. /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3. SVN Web Control
  4. Copyright ©2006 by sTEFANs
  5. Created on 25.02.2006
  6. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  7. This program is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2 of the License, or
  10. (at your option) any later version.
  11.  
  12. This program is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with this program; if not, write to the Free Software
  19. Foundation, Inc., 59 Temple Place - Suite 330,
  20. Boston, MA 02111-1307, USA.
  21. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  22. */
  23.  
  24. /**
  25.  * This file provides functions to translate several string or URLs.
  26.  * The translations themself could be in according files to ease
  27.  * the access and provide a well done structure.
  28.  * 
  29.  * @package Swc
  30.  * @subpackage Inc
  31.  * @author Stefan Schraml
  32.  * @copyright Copyright ©2006 by sTEFANs
  33.  * @license http://opensource.org/licenses/lgpl-license.php GNU General Public License
  34.  * @version v1.0.0
  35.  * @since v1.0.0
  36.  */
  37.  
  38.     /** 
  39.      * Formats a given timestamp into a localized format.
  40.      * @param boolean $short Whether or not (default) the timestamp
  41.      *  should be returned in short or long format.
  42.    * @return string Formatted timestamp string.
  43.    * 
  44.      * @since v1.0.0
  45.      */
  46.     function GetLocalizedTimestamp($timestamp$short false){
  47.       return FormatTimestamp($timestamp$short);
  48.   }
  49.  
  50.     /** 
  51.      * Translates the given ID to the language
  52.      * set in the browser or to english as default language.<br><br>
  53.      * <b>Parameters</b>:This function needs the ID for the
  54.      * string to translate as first argument. Any
  55.      * further arguments are passed to <i>sprintf</i>
  56.      * to format the string with values.<br>
  57.      * If no parameter is applied, an error text
  58.      * (not translated) is returned.
  59.      * 
  60.      * @since v1.0.0
  61.      */
  62.     function T(){
  63.         $arg_cnt func_num_args();
  64.         $args func_get_args();
  65.         if ($arg_cnt == 0){
  66.             return "NO-KEY";
  67.         }
  68.         $args[0Translate($args[0]);
  69.         if ($arg_cnt == 1){
  70.             return $args[0];
  71.         }
  72.         return call_user_func_array('sprintf'$args);
  73.     }
  74.     
  75.     /** 
  76.      * Determines the languages accepted by the browser.
  77.      * @return array Array of languages accepted by the browser
  78.      *  order by relevance or an empty array if the browser
  79.      *  does not determine accepted languages.
  80.      * 
  81.      * @since v1.0.0
  82.      */
  83.      function &GetBrowserLanguages(){
  84.          static $langs NULL;
  85.          if ($langs == NULL){
  86.              $langs array();
  87.              if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
  88.                  $countries array();
  89.                  $lang_str $_SERVER['HTTP_ACCEPT_LANGUAGE'];
  90.                  $langs explode(','$lang_str);
  91.                  foreach($langs as $key => $lang){
  92.                      $tmp explode(';'$lang);
  93.                      $langs[$key$tmp[0];
  94.                      // Get country only
  95.                      $tmp explode('-'$tmp[0]);
  96.                      if (count($tmp1){
  97.                          $countries[$tmp[0];
  98.                      }
  99.                  }
  100.                  // Remove double countries
  101.                  foreach($countries as $key => $country){
  102.                      if (array_search($country$langs!= NULL){
  103.                          unset($countries[$key]);
  104.                      }
  105.                  }
  106.                  $langs array_merge($langs$countries);
  107.              }             
  108.          }
  109.          return $langs;
  110.      }
  111.      
  112.     /** 
  113.      * Loads the best fitting translation table resource.
  114.      * The best fitting translation table is the table that
  115.      * 1. meets the country and language code exactly
  116.      * 2. meets the country code only
  117.      * 3. is the default language
  118.      * in this order.<br>
  119.      * Translation tables are looked up in folder
  120.      * <b>STD_RESOURCE_PATH</b> defined in
  121.      * <b>inc/var.inc.php</b>. The name of the file
  122.      * should be in format <b>country-language.php</b>
  123.      * or <b>country</b>, both in ISO 2 letter code
  124.      * as used by browsers.<br>
  125.      * US English for instance is coded <b>en-us</b>,
  126.      * default English is coded <b>en</b>.
  127.      * Translation tables for a language without
  128.      * a country code should be provided.<br>
  129.      * The filename is case insensitive.
  130.      * The file name of the default translation
  131.      * table is defined in <b>inc/var.inc.php</b>
  132.      * by <b>STD_TRANSLATION_TABLE</b>.
  133.      * @return string Code of the loaded language
  134.      * 
  135.      * @since v1.0.0
  136.      */
  137.       function LoadTranslationResource(){
  138.           static $language_code NULL;
  139.           if ($language_code == NULL){
  140.               $browser_langs GetBrowserLanguages();
  141.               if ($browser_langs != NULL){
  142.                   $idx 0;
  143.                   while($idx count($browser_langs&& $language_code == NULL){
  144.                       $path STD_RESOURCE_PATH.$browser_langs[$idx].'.php';
  145.                       if (file_exists($path)){
  146.                           include_once($path);
  147.                           $language_code $browser_langs[$idx];
  148.                       }
  149.                       $idx++;
  150.                   }
  151.               }
  152.               if ($language_code == NULL){
  153.                     include_once(STD_RESOURCE_PATH.STD_TRANSLATION_TABLE);
  154.                   $language_code 'en';
  155.               }
  156.           }
  157.           return $language_code;
  158.       }
  159.       
  160. ?>

Documentation generated on Fri, 03 Nov 2006 18:45:05 +0100 by phpDocumentor 1.3.0RC6
for sTEFANs POWERED BY eBC.bz