languages
[ class tree: languages ] [ index: languages ] [ all elements ]

Source for file Babelfish.php

Documentation is available at Babelfish.php

  1. <?php
  2. /**
  3.  * @package languages
  4.  * @version $Header: /cvsroot/bitweaver/_bit_languages/Babelfish.php,v 1.2 2005/08/07 17:39:17 squareing Exp $
  5.  *
  6.  *  Tiki is copyright (c) 2002-2003, Luis Argerich, Garland Foster, Eduardo Polidor, et. al.
  7.  *  All Rights Reserved. See copyright.txt for details and a complete list of authors.
  8.  *  Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
  9.  *
  10.  *  This file copyright (c) 2002-2003, Ross Smith II
  11.  */
  12.  
  13. /**
  14.  * @package languages
  15.  */
  16. class Babelfish {
  17.     /**
  18.      *    Return the host name of the server
  19.      *
  20.      *    @todo move to BitBase class
  21.      */
  22.     function host({
  23.         if (isset($_SERVER['HTTP_HOST'])) {
  24.             // HTTP_HOST already includes a ':port' if it is used
  25.             return $_SERVER['HTTP_HOST'];
  26.         }
  27.  
  28.         if (!isset($_SERVER['SERVER_NAME'])) {
  29.             return false;
  30.         }
  31.  
  32.         $rv $_SERVER['SERVER_NAME'];
  33.  
  34.         if (!isset($_SERVER['SERVER_PORT'])) {
  35.             return $rv;
  36.         }
  37.         
  38.         if (isset($_SERVER['HTTPS']&& ($_SERVER['HTTPS'== 'on')) {
  39.             if ($_SERVER['SERVER_PORT'!= 443{
  40.                 $rv .= ':' $_SERVER['SERVER_PORT'];
  41.             }
  42.         else {
  43.             if ($_SERVER['SERVER_PORT'!= 80{
  44.                 $rv .= ':' $_SERVER['SERVER_PORT'];
  45.             }
  46.         }
  47.  
  48.         return $rv;
  49.     }
  50.     
  51.     /**
  52.      *    Return babelfish URL to translate \c $lang_from to \c $lang_to
  53.      *
  54.      * @param lang_from 
  55.      * @param lang_to 
  56.      */
  57.     function url($lang_from$lang_to{
  58.         static $url_map array(
  59.             'en'    => 'english',
  60.             'fr'    => 'french',
  61.             'de'    => 'german',
  62.             'it'    => 'italian',
  63.             'es'    => 'spanish',
  64.             'pt'    => 'portugese',
  65.         );
  66.  
  67.         $lang_from strtolower($lang_from);
  68.         $lang_to strtolower($lang_to);
  69.         
  70.         if (!isset($url_map[$lang_from])) {
  71.             return '';
  72.         }
  73.         
  74.         $url 'http://jump.altavista.com/translate_' $url_map[$lang_from'.go' .
  75.             '?http://babelfish.altavista.com/babelfish/tr?doit=done' .
  76.             '&amp;lp=' $lang_from '_' $lang_to .
  77.             '&amp;urltext=http';
  78.         if (isset($_SERVER['HTTPS']&& $_SERVER['HTTPS'== 'on'{
  79.             $url .= 's';
  80.         }
  81.         $url .= '://' Babelfish::host($_SERVER['REQUEST_URI'.
  82.             (strpos('?'$_SERVER['REQUEST_URI']'&amp;' '?'.
  83.             'babelfish=' $lang_from '_' $lang_to;
  84.  
  85.         return $url;
  86.     }
  87.  
  88.     /**
  89.      *    Return HTML of babelfish links
  90.      *
  91.      *    @param lang_from Language to translate from
  92.      */
  93.     function links($lang_from 'en'{
  94.         static $fishes array(
  95.             'en' => array(    # English
  96.                 
  97.                 'de' => '&Uuml;bersetzen&nbsp;Sie&nbsp;diese&nbsp;Seite&nbsp;ins&nbsp;Deutsche',
  98.                 'es' => 'Traduzca&nbsp;esta&nbsp;paginaci&oacute;n&nbsp;a&nbsp;espa&ntilde;ol',
  99.                 'fr' => 'Traduisez&nbsp;cette&nbsp;page&nbsp;en&nbsp;fran&ccedil;ais',
  100.                 'it' => 'Tradurre&nbsp;questa&nbsp;pagina&nbsp;in&nbsp;italiano',
  101.                 'pt' => 'Traduza&nbsp;esta&nbsp;p&aacute;gina&nbsp;em&nbsp;portugu&ecirc;ses',
  102.                 'zh' => '&#x7ffb;&#x8bd1;&#x8fd9;&#x9875;&#x6210;&#x6c49;&#x8bed;&nbsp;(CN)',
  103.                 'ja' => '&#x65e5;&#x672c;&#x8a9e;&#x306b;&#x3053;&#x306e;&#x30da;&#x30fc;&#x30b8;&#x3092;&#x7ffb;&#x8a33;&#x3057;&#x306a;&#x3055;&#x3044;&nbsp;(Nihongo)',
  104.                 'ko' => '&#xd55c;&#xad6d;&#xc778;&#xc73c;&#xb85c;&nbsp;&#xc774;&nbsp;&#xd398;&#xc774;&#xc9c0;&#xb97c;&nbsp;&#xbc88;&#xc5ed;&#xd558;&#xc2ed;&#xc2dc;&#xc694;&nbsp;(Hangul)',
  105.             ),
  106.             'fr' => array(    # French
  107.                 
  108.                 'de' => '&Uuml;bersetzen&nbsp;Sie&nbsp;diese&nbsp;Seite&nbsp;in&nbsp;Deutschen',
  109.                 'en' => 'Translate&nbsp;this&nbsp;page&nbsp;into&nbsp;English',
  110.             ),
  111.             'de' => array(    # German
  112.                 
  113.                 'en' => 'Translate&nbsp;this&nbsp;page&nbsp;into&nbsp;English',
  114.                 'fr' => 'Traduisez&nbsp;cette&nbsp;page&nbsp;en&nbsp;fran&ccedil;ais',
  115.             ),
  116.             'it' => array(    # Italian
  117.                 
  118.                 'en' => 'Translate&nbsp;this&nbsp;page&nbsp;into&nbsp;English',
  119.             ),
  120.             'es' => array(    # Spanish
  121.                 
  122.                 'en' => 'Translate&nbsp;this&nbsp;page&nbsp;into&nbsp;English',
  123.             ),
  124.             'pt' => array(    # Portugese
  125.                 
  126.                 'en' => 'Translate&nbsp;this&nbsp;page&nbsp;into&nbsp;English',
  127.             ),
  128.             'ru' => array(    # Russian
  129.                 
  130.                 'en' => 'Translate&nbsp;this&nbsp;page&nbsp;into&nbsp;English',
  131.             ),
  132.         );
  133.  
  134.         // \todo Use phpsniff or PEAR's Net_UserAgent_Detect to detect the browser type
  135.         // as Netscape 4.x and possibly others displays '&#xabcd;' literally
  136. //        if (preg_match('/(mozilla\/4)/i', $_SERVER['HTTP_USER_AGENT'])) {
  137. //            $fishes['en']['zh'] = 'Translate&nbsp;this&nbsp;page&nbsp;into&nbsp;Chinese&nbsp;(CN)';
  138. //            $fishes['en']['ja'] = 'Translate&nbsp;this&nbsp;page&nbsp;into&nbsp;Japenese&nbsp;(Nihongo)';
  139. //            $fishes['en']['ko'] = 'Translate&nbsp;this&nbsp;page&nbsp;into&nbsp;Korean&nbsp;(Hangul)';
  140. //        }
  141.  
  142.         // If we have already translated this page (babelfish=en_fr), then don't display the strings again
  143.         if (!isset($fishes[$lang_from]|| isset($_GET['babelfish'])) {
  144.             return array();
  145.         }
  146.  
  147.         $a array();
  148.         foreach ($fishes[$lang_fromas $lang_to => $msg{
  149.             $a[array('target' => $lang_to,
  150.                          'href'   => Babelfish::url($lang_from$lang_to),
  151.                          'msg'    => $msg);
  152.         }
  153.  
  154.         return $a;
  155.     }
  156.  
  157.     /**
  158.      *    Return javascript code to display babelfish logo
  159.      *    
  160.      *    \static
  161.      */
  162.     function logo($lang 'en'{
  163.         static $s "<script language=\"JavaScript1.2\" src=\"http://www.altavista.com/r?%str\"></script>";
  164.  
  165.         $lang strtolower($lang);
  166.  
  167.         switch ($lang{
  168.             case 'en':
  169.             case 'de':
  170.             case 'fr':
  171.             case 'it':
  172.                 return sprintf($s$lang);
  173.             case 'es':
  174.                 return sprintf($s'esp');
  175.             case 'pt':
  176.                 return sprintf($s'port');
  177.         }
  178.  
  179.         return '';
  180.     }
  181.  
  182. }
  183.  
  184. ?>

Documentation generated on Thu, 15 Feb 2007 20:28:43 +0000 by phpDocumentor 1.3.0