Здесь я покажу как я сделал интернационализацию/локализацию:
i18n.php:
Код:
<?php // Для множественного числа function __choice($str_value, $int_index) { $arr_values = explode('|', $str_value); return $arr_values[$int_index]; } // Возвращает значение по ключу function __($str_value) { return $_SESSION['i18n'][$str_value]; } // Инициализация function I18n_init() { if(isset($_SESSION['i18n']) && $_SESSION['i18n'] != '') $_SESSION['i18n'] = ''; } // Возвращает массив i18n function I18n_get() { return $_SESSION['i18n']; } // Добавляет в массив function I18n_set($arr_i18n) { I18n_init(); $_SESSION['i18n'] = $arr_i18n; } // Загружает файл с переводом function I18n_lang($str_language, $str_default_language = NULL) { if(!file_exists($str_language)) { if($str_default_language == NULL || !file_exists($str_default_language)) return; $str_language = $str_default_language; } if(!isset($_SESSION['i18n'])) $_SESSION['i18n'] = array(); $arr_i18n = @include($str_language); if(isset($arr_i18n) && is_array($arr_i18n)) { $_SESSION['i18n'] = $arr_i18n; $arr_i18n = ''; } } ?>
ru.php:
Код:
<?php return array('main.hello' => 'Всем привет!'); // Перевод ?>
index.php:
Код:
<?php require_once('i18n.php'); // Загрузка модуля i18n.php session_start(); // Инициализация сессии I18n_init(); // Инициализация i18n I18n_lang('ru.php'); // Загрузка русского языка echo __('main.hello'); // Выводит "Всем привет!" ?>