prog/boffice/_class/locale.class.php

96 lines
2.3 KiB
PHP

<?php
/**
* HTML2PDF Librairy - HTML2PDF Locale
*
* HTML => PDF convertor
* distributed under the LGPL License
*
* @author Laurent MINGUET <webmaster@html2pdf.fr>
* @version 4.03
*/
class HTML2PDF_locale
{
/**
* code of the current used locale
* @var string
*/
static protected $_code = null;
/**
* texts of the current used locale
* @var array
*/
static protected $_list = array();
/**
* directory where locale files are
* @var string
*/
static protected $_directory = null;
/**
* load the locale
*
* @access public
* @param string $code
*/
static public function load($code)
{
if (self::$_directory===null) {
self::$_directory = dirname(dirname(__FILE__)).'/locale/';
}
// must be in lower case
$code = strtolower($code);
// must be [a-z-0-9]
if (!preg_match('/^([a-z0-9]+)$/isU', $code)) {
throw new HTML2PDF_exception(0, 'invalid language code ['.self::$_code.']');
}
// save the code
self::$_code = $code;
// get the name of the locale file
$file = self::$_directory.self::$_code.'.csv';
// the file must exist
if (!is_file($file)) {
throw new HTML2PDF_exception(0, 'language code ['.self::$_code.'] unknown. You can create the translation file ['.$file.'] and send it to the webmaster of html2pdf in order to integrate it into a future release');
}
// load the file
self::$_list = array();
$handle = fopen($file, 'r');
while (!feof($handle)) {
$line = fgetcsv($handle);
if (count($line)!=2) continue;
self::$_list[trim($line[0])] = trim($line[1]);
}
fclose($handle);
}
/**
* clean the locale
*
* @access public static
*/
static public function clean()
{
self::$_code = null;
self::$_list = array();
}
/**
* get a text
*
* @access public static
* @param string $key
* @return string
*/
static public function get($key, $default='######')
{
return (isset(self::$_list[$key]) ? self::$_list[$key] : $default);
}
}