Мультиязычность (реализация) (Оценка: +1)

Печать / RSS-лента
Добрый день!
Хочу представить Вам свой класс реализации мультиязычности для ваших проектов.


<?php
/**
* @author KpuTuK
* @link http://kputuk.ru
* @version 1.0.1
* @copyright (c) 2013
*/
class language {

/**
* Массив выбранного пакета
* @var array $language
*/
private $language = array();

/**
* Загрузка выбранного пакета
* @param string $language
* @throws InvalidArgumentException
*/
function __construct($language) {
if (is_string($language)) {
if (file_exists('/language/'. $language .'.ini')) {
$this->language = parse_ini_file('/language/'. $language .'.ini');
} else {
$this->language = parse_ini_file('/language/default.ini');
}
} else {
throw new InvalidArgumentException('Недопустимый тип параметра. Ожидается [string] вместо ['. gettype($language) .'].');
}
}

/**
* Локализация текстовой строки
* @param string $text Строка для локализации
* @return string Локализированная строка
* @throws InvalidArgumentException
*/
public function replease($text) {
if (is_string($text)) {
$lang_rus = array_flip(parse_ini_file('/language/default.ini'));
$key = $lang_rus[$text];
if (isset($this->language[$key])) {
return $this->language[$key];
} else
return $text;
} else {
throw new InvalidArgumentException('Недопустимый тип параметра. Ожидается [string] вместо ['. gettype($text) .'].');
}
}
}
?>


создаем папку language
в которой содаем файл default.ini
который будет отвечать у нас за названия ключей в языковых пакетах (key => value) по умолчанию

содержимое файла default.ini:

test = тестируем мультиязычность


затем в той же папке создадим файл EN.ini
который будет отвечать за перевод строки на английский

содержимое файла EN.ini:

test = multilanguage test


Реализация класса:
создаем файл test.php
с содержанием:


<?php
$lng = new language('EN');
echo $lng->replease('тестируем мультиязычность');
?>


затем открываем наш файл в браузере и видим

multilanguage test

Вот впринципе и все ).gif
Автор статьи: Олег (08.07.13 / 13:46)
ООП, Мультиязычность
Рейтинг: +1
Просмотров: 1151
Комментарии (2) »