phpgroupware-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-cvs] api/lang/class.lang_stub.php, 1.1.2.1


From: nomail
Subject: [Phpgroupware-cvs] api/lang/class.lang_stub.php, 1.1.2.1
Date: Thu, 20 May 2004 14:59:36 -0000

Update of /api/lang
Added Files:
        Branch: proposal-branch
          class.lang_stub.php

date: 2004/04/16 20:59:49;  author: seek3r;  state: Exp;  lines: +309 -0

Log Message:
bringing savannah cvs back up to date with what we were doing on our private 
cvs server. We will not be doing dev from this cvs tree
=====================================================================
No syntax errors detected in -
=====================================================================
<?php
        
/**************************************************************************\
        * phpGroupWare                                                          
   *
        * http://www.phpgroupware.org                                           
   *
        * This file written by Dan Kuykendall <address@hidden>                 *
        * Copyright (C) 2003 Dan Kuykendall                                     
   *
        * 
-------------------------------------------------------------------------*
        * This library is part of the phpGroupWare API                          
   *
        * http://www.phpgroupware.org/api                                       
   * 
        * 
------------------------------------------------------------------------ *
        * This library is free software; you can redistribute it and/or modify 
it  *
        * under the terms of the GNU Lesser General Public License as published 
by *
        * the Free Software Foundation; either version 2.1 of the License,      
   *
        * or any later version.                                                 
   *
        * This library is distributed in the hope that it will be useful, but   
   *
        * WITHOUT ANY WARRANTY; without even the implied warranty of            
   *
        * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                  
   *
        * See the GNU Lesser General Public License for more details.           
   *
        * You should have received a copy of the GNU Lesser General Public 
License *
        * along with this library; if not, write to the Free Software 
Foundation,  *
        * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA         
   *
        
\**************************************************************************/

        /* $Id: class.lang_stub.php,v 1.1.2.1 2004/04/16 20:59:49 seek3r Exp $ 
*/
        /* $Source: /cvsroot/phpgroupware/api/lang/Attic/class.lang_stub.php,v 
$ */

        class api_lang
        {
                var $messages       = array();
                var $domain         = 'messages';
                var $language;
                var $registered_app = 'api';
                var $envset         = false;
                var $windows_locale = array(
                        'address@hidden' => 'DEU',
                        'fi_FI'      => 'FIN',
                        'en_US'      => 'USA'
                );

                function api_lang()
                {
                        if(!isset($GLOBALS['phpgw_data']['prefs']['api.lang']))
                        {
                                $GLOBALS['phpgw_data']['prefs']['api.lang'] = 
'en';
                        }
                        $this->language = 
$GLOBALS['phpgw_data']['prefs']['api.lang'];
                        $this->switchlang();
                }
                
                function add($strings, $app = 'api')
                {
                        $this->messages[$app][$strings] = true;
                }

                function _translate()
                {
                        $args = new safe_args();
                        $args->set('msg', REQUIRED, 'any');
                        $args->set('param1', NOTSET, 'any');
                        $args = $args->get(func_get_args());

                        if ($this->language == 'en_US')
                        {
                                return sprintf($args['msg'],$args['param1']);
                        }

                        $omsg = $args['msg'];
                        $msg = strtolower($args['msg']);
                        $result = $args['msg'];
                        
                        if($result == $args['msg'] && $this->registered_app != 
'api')
                        {
                                $current_app = $this->registered_app;
                                $this->switchapp('api');
                                $result = $args['msg'];
                                $this->registered_app = $current_app;
                        }

                        if($result == $args['msg'])
                        {
                                return $this->translate_service($omsg);
                        }

                        return $result;
                }

                function translate_service($msg)
                {
                        
if(!isset($GLOBALS['phpgw_data']['server']['translate_service']))
                        {
                                
$GLOBALS['phpgw_data']['server']['translate_service'] = 'disabled';
                        }
                        
                        switch 
($GLOBALS['phpgw_data']['server']['translate_service'])
                        {
                                case 'disabled':
                                        return $msg;
                                        break;
                                case 'babelfish':
                                        $url_string = 
'http://babelfish.altavista.com/babelfish/tr';
                                        $get_string = 
'urltext='.urlencode($msg).'&lp=en_'.$this->language.'&submit=Translate'; 
                                        $start_string = 'padding:10px; 
lang='.$this->language.'>';
                                        $end_string = '</div>';
                                        break;
                                case 'google':
                                default:
                                        $url_string = 
'http://translate.google.com/translate_t';
                                        $get_string = 
'text='.urlencode($msg).'&langpair=en|'.$this->language.'&submit=Translate'; 
                                        $start_string = '<textarea name=q 
rows=5 cols=45 wrap=PHYSICAL>';
                                        $start_string2 = '<textarea name=q 
rows=5 cols=45 wrap=PHYSICAL readonly>';
                                        $end_string = '</textarea>';
                        }
                        
                        if(!function_exists('curl_init'))
                        {
                                return $msg;
                        }
                        
if(isset($_SESSION['phpgw_session']['lang_cache'][$msg]))
                        {
                                return 
$_SESSION['phpgw_session']['lang_cache'][$msg];
                        }
                        $ch = curl_init();
                        curl_setopt($ch, CURLOPT_URL,$url_string);
                        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
                        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
                        curl_setopt($ch, CURLOPT_TIMEOUT, 3);
                        curl_setopt ($ch, CURLOPT_HEADER, 0);
                        curl_setopt($ch, CURLOPT_POST, 1);
                        curl_setopt($ch, CURLOPT_POSTFIELDS, $get_string);
                        ob_start();
                        curl_exec ($ch);
                        $buffer = ob_get_contents();
                        ob_end_clean();
                        curl_close ($ch);                       
                        $start = strpos ($buffer, $start_string);
                        if($start === false)
                        {
                                if(!isset($start_string2))
                                {
                                        return $msg;                            
                                }
                                else
                                {
                                        $start_string = $start_string2;
                                        $start = strpos ($buffer, 
$start_string);
                                        if($start === false)
                                        {
                                                return $msg;                    
        
                                        }
                                }
                        }

                        $start_length = strlen($start_string);
                        $start = $start+$start_length;
                        $buffer = substr($buffer, $start);
                        $end = strpos ($buffer, $end_string);
                        $buffer = trim(substr($buffer, 0, $end));
                        if(!empty($buffer))
                        {
                                $_SESSION['phpgw_session']['lang_cache'][$msg] 
= $buffer;
                                return $buffer;
                        }
                        return $msg;                            
                }

                
                function get()
                {
                        $args = new safe_args();
                        $args->set('msg', REQUIRED, 'any');
                        $args->set('param1', NOTSET, 'any');
                        $args->set('app', NOTSET, 'string');
                        $args = $args->get(func_get_args());

                        if(!isset($args['app']))
                        {
                                if(isset($GLOBALS['phpgw_data']['api']['op']))
                                {
                                        list($args['app']) = 
explode('.',$GLOBALS['phpgw_data']['api']['op']);
                                }
                                else
                                {
                                        $args['app'] = 'api';
                                }
                        }
                        $this->switchlang();
                        $this->switchapp($args['app']);

                        if(isset($args['param1']))
                        {
                                return 
$this->_translate($args['msg'],$args['param1']);
                        }
                        return $this->_translate($args['msg']);
                }

                function trans()
                {
                        return $this->get(func_get_args());
                }
                
                function switchapp($app = 'api')
                {
                        $this->registered_app = $app;
                }

                function switchlang()
                {
                        if ($this->language != 
$GLOBALS['phpgw_data']['prefs']['api.lang'])
                        {
                                $this->language = 
$GLOBALS['phpgw_data']['prefs']['api.lang'];
                                $this->envset = false;
                                unset($_SESSION['phpgw_session']['lang_cache']);
                        }

                        if (! $this->envset)
                        {
                                putenv('LANG='.$this->language);
                                putenv('TZ=' . 
$GLOBALS['phpgw_data']['prefs']['api.timezone']);
                                setlocale(LC_ALL, $this->language);
                                if (PHP_OS == 'Windows')
                                {
                                        if 
($this->windows_locale[$this->langauge])
                                        {
                                                setlocale(LC_TIME, 
$this->langauge);
                                        }
                                        else
                                        {
                                                setlocale(LC_TIME,'C');
                                        }
                                }
                                else
                                {
                                        setlocale(LC_TIME, $this->langauge);
                                }

                                $this->envset = true;
                        }
                }

                function addtoxml()
                {
                        $this->switchlang();    
                        if(count($this->messages) > 0)
                        {
                                
                                foreach($this->messages as $app=>$strings)      
                        
                                {
                                        $this->switchapp($app);
                                        
                                        foreach($strings as $msg=>$val)         
                
                                        {
                                                $translated = 
$this->_translate($msg);

                                                $lang_node = 
createObject('api_xmltool',array('node_type'=>'node','name'=>'LANG'));
                                                
$lang_node->set_attribute('name', $msg);
                                                
$lang_node->set_value($translated);
                                                
$GLOBALS['phpgw_xmldoc']->add_node($lang_node);
                                        }
                                }
                        }
                }

                function addfromskin($xsl_files)
                {
                        foreach($xsl_files as $key=>$val)                       
        
                        {
                                $valid_file = false;
                                list($app,$file) = explode('.',$val);
                                $skindir = 
PHPGW_ROOT.SEP.$app.SEP.'skins'.SEP.$GLOBALS['phpgw_data']['prefs']['api.skin'];
                                $filename = $skindir.SEP.$file.'_lang.xml';
                                if(file_exists($filename))
                                {
                                        $valid_file = true;
                                }
                                
elseif($GLOBALS['phpgw_data']['prefs']['api.skin'] != 'default')
                                {
                                        $def_skindir = 
PHPGW_ROOT.SEP.$app.SEP.'skins'.SEP.'default';
                                        $def_filename = 
$def_skindir.SEP.$file.'_lang.xml';
                                        if(file_exists($def_filename))
                                        {
                                                $skindir = $def_skindir;
                                                $filename = $def_filename;
                                                $valid_file = true;
                                        }
                                }

                                if($valid_file)
                                {
                                        $f = fopen ($filename, 'r');
                                        $xmlstring = fread ($f, 
filesize($filename));
                                        fclose ($f);
                                        $messages = xml2var($xmlstring);
                                        unset($xmlstring);
                                        $this->switchapp($app);

                                        
                                        foreach ($messages['message'] as $val)
                                        {
                                                $translated = 
$this->_translate($val);
                                                
                                                $lang_node = 
createObject('api_xmltool',array('node_type'=>'node','name'=>'LANG'));
                                                
$lang_node->set_attribute('name', $val);
                                                
$lang_node->set_value($translated);
                                                
$GLOBALS['phpgw_xmldoc']->add_node($lang_node);
                                        }
                                }
                        }
                }
        }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]