Файл: adultscript-2.0.3-pro/files/libraries/framework/language.php
Строк: 82
<?php
defined('_VALID') or die('Restricted Access!');
class VLanguage
{
public static $cache = array();
private static $files = array();
private static $language;
private static $languages = array();
private static $secret;
public static function initialize()
{
self::$secret = VF::cfg_item('secret');
self::cache_languages();
if (isset($_POST['language-code']) &&
isset(self::$languages[trim($_POST['language-code'])])) {
$_SESSION['language'] = trim($_POST['language-code']);
}
self::$language = (isset($_SESSION['language'])) ? $_SESSION['language'] : VF::cfg_core_item('language');
}
public static function load($key)
{
$key = self::$language.'.'.$key;
if (isset(self::$files[$key])) {
return;
}
if (!VF::cache_exists($key, 'language')) {
self::cache($key);
}
$translation = VF::cache_get($key, 'language', FALSE);
self::$cache = array_merge(self::$cache, $translation);
self::$files[$key] = 1;
}
private static function cache($key)
{
$parts = explode('.', $key);
$code = $parts['0'];
$type = $parts['1'];
$name = $parts['2'];
$db = VF::factory('database');
$db->query("SELECT file
FROM #__language_files
WHERE code = '".$db->escape($code)."'
AND type = '".$db->escape($type)."'
AND name = '".$db->escape($name)."'
LIMIT 1");
if (!$db->affected_rows()) {
throw new VException('Failed to load language file! Aborting...');
}
VF::cache_set($key, unserialize($db->fetch_field('file')), 'language', FALSE);
}
private static function cache_languages()
{
if (!self::$languages = VF::cache_get('languages', 'config')) {
$db = VF::factory('database');
$db->query("SELECT code, name, flag FROM #__language WHERE status = '1' ORDER BY code ASC");
if (!$db->affected_rows()) {
throw new VException('Failed to load languages! Aborting...');
}
$rows = $db->fetch_rows();
$languages = array();
foreach ($rows as $row) {
$languages[$row['code']] = array('name' => $row['name'], 'flag' => $row['flag']);
}
VF::cache_set('languages', $languages, 'config', TRUE);
self::$languages = $languages;
}
}
public static function get($var)
{
return self::$$var;
}
public static function get_flag()
{
return self::$languages[self::$language]['flag'];
}
}
function __($string, $replace=array())
{
if (isset(VLanguage::$cache[$string])) {
return ($replace) ? vsprintf(VLanguage::$cache[$string], (array) $replace) : VLanguage::$cache[$string];
}
return $string;
}