PDF converter * distributed under the OSL-3.0 License * * @package Html2pdf * @author Laurent MINGUET * @copyright 2017 Laurent MINGUET */ namespace Spipu\Html2Pdf; use Spipu\Html2Pdf\Exception\LocaleException; class 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 * * @param string $code * * @return void * @throws LocaleException */ public static function load($code) { if (self::$directory === null) { self::$directory = __DIR__ . '/locale/'; } // must be in lower case $code = strtolower($code); // must be [a-z-0-9] if (!preg_match('/^([a-z0-9]+)$/isU', $code)) { $e = new LocaleException( 'invalid language code' ); $e->setLocaleCode($code); throw $e; } // 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)) { $e = new LocaleException( 'unknown language code. You can create the locale file and push it on the Html2Pdf GitHub project.' ); $e->setLocaleCode($code); throw $e; } // load the file self::$list = array(); $handle = fopen($file, 'r'); while (!feof($handle)) { $line = fgetcsv($handle); if (!is_array($line) || count($line) !=2) { continue; } self::$list[trim($line[0])] = trim($line[1]); } fclose($handle); } /** * clean the locale * * @return void */ public static function clean() { self::$code = null; self::$list = array(); } /** * get a text * * @param string $key * @param string $default * * @return string */ public static function get($key, $default = '######') { return (isset(self::$list[$key]) ? self::$list[$key] : $default); } }