Здесь я покажу как я сделал интернационализацию/локализацию:
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'); // Выводит "Всем привет!"
?>