Мультиязычность (реализация) (Рейтинг: +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

Вот впринципе и все smile
Добавил:
Рейтинг: +1
Просмотры: 1855
Комментарии (2) »