/** * Returns the translation table for a given language. * * // Get all defined Spanish messages * $messages = I18n::load('es-es'); * * После генерации таблицы происходит создание Javascript файла с таблицей * перевода для загружаемого языка. * * @param string $lang language to load * @return array */ public static function load($lang) { $table = parent::load($lang); $filename = Kohana::$cache_dir . DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, array('i18n', NULL)) . $lang . '.js'; if (!file_exists($filename) or file_exists($filename) and time() - filemtime($filename) > Date::DAY) { if (Kohana::$profiling === TRUE and class_exists('Profiler', FALSE)) { // Start a new benchmark $benchmark = Profiler::start('i18n', 'Generate file for lang - ' . $lang); } try { // Create the log file file_put_contents($filename, '// Auto generated i18n lang file for lang ' . $lang . ". Created on " . date('Y-m-d H:i:s') . "\n"); file_put_contents($filename, 'cms.addTranslation(' . json_encode($table) . ');', FILE_APPEND); // Allow anyone to write to log files chmod($filename, 0777); } catch (Exception $e) { // do something } if (isset($benchmark)) { // Stop the benchmark Profiler::stop($benchmark); } } return $table; }
/** * Load lang from db table * @param string $lang * @return array */ public static function load($lang) { if (Kohana::$environment == Kohana::DEVELOPMENT) { if (isset(I18n::$_cache[$lang])) { return I18n::$_cache[$lang]; } I18n::$_cache[$lang] = array(); $language = ORM::factory('language')->find_all()->as_array(); foreach ($language as $item) { I18n::$_cache[$lang][$item->view . '|' . $item->key] = $item->{$lang}; } return I18n::$_cache[$lang]; } else { return parent::load($lang); } }