Мультиязычность (реализация)
Добрый день!
Хочу представить Вам свой класс реализации мультиязычности для ваших проектов.
<?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
Вот впринципе и все
URL:
https://visavi.net/articles/494