[Top][All Lists]
[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);
}
}
}
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Phpgroupware-cvs] api/lang/class.lang_stub.php, 1.1.2.1,
nomail <=