Языки сайта
Модуль относится к части CMS «Управление», пересекается со всеми модулями сайта и является обязательным для установки.
Языки сайта
Языки сайта имеют следующие характеристики:
При добавлении и удалении языка сайта меняется структура базы данных, структура сайта. Нельзя удалить основной язык сайта.
Любой язык сайта можно определить как основной для административной части и основной для пользовательской части. При этом язык, ранее помеченный как основной для соответствующей части, становится не основным. Основной язык нельзя удалить.
Перевод интерфейса
Модуль позволяет задать свой вариант текстов в интерфейсе. Форма редактирования интерфейса имеет следующие поля:
Перевод исходных текстов можно задавать вручную. Если открыта отличная от русской версия сайта, то весь доступный на текущей странице текст, не имеющий перевода, будет добавлен в базу для дальнейшего перевода. Искать добавленный текст легко с помощью формы поиска.
Перевод интерфейса можно импортировать и экспортировать, а также редактировать из пользовательской части с помощью модуля «Панель быстрого редактирования».
Подключение
Подключаемая часть – файл modules/languages/languages.inc.php. В нем описан класс
Languages_inc. В модуле к объекту класса можно обратиться через переменную $this->diafan->_languages
. Экземпляр класса создается при первом вызове
переменной.
Свойства
var is_ru = false – это русская версия сайта.
Методы
string get (string $name, [string $module_name = ''], [boolean $useradmin = false], [array $args = array()]) – Отдает значение перевода строки.
- string $name: текст для перевода
- string $module_name: модуль
- boolean $useradmin: выдавать форму для редактирования
- array $args: аргументы
Для быстрого доступа к функции в основном объекте системы определена функция _()
.
Пример:
// полный вариант
$text = $this->diafan->_laguages->get('Здравствуйте %s! У Вас %d новых
сообщений.', 'registration', false, array('Иван Иванович', 3));
string base_admin () – Определяет язык версии административной панели для текущего пользователя.
void import (string $file_path, integer $lang_id) – Импортирует файл перевода.
- string $file_path: путь до файла
- integer $lang_id: ID языка, для которого загружается перевод
Пример:
// импортируем файл перевода langs/eng для языка интерфейса ID=2
$this->diafan->_languages->import(ABSOLUTE_PATH.'langs/eng', 2);
string _ (string $name, [boolean $useradmin = false]) – возвращает перевод строки для текущего модуля.
access: public
string $name: текст для перевода
boolean $useradmin: выдавать форму для редактирования, параметр только для пользовательской части
Дополнительно можно передать аргументы в функцию, для того чтобы подставить
их в строку функцией vsprintf()
.
Пример:
// сокращенный вариант
$text = $this->diafan->_('Здравствуйте %s! У Вас %d новых сообщений.', false,
'Иван Иванович', 3);
Свойства
array all – массив данных обо всех языках, использующихся на сайте.
Пример:
print_r($this->diafan->_languages->all);
Результат:
Array
(
[0] => Array
(
[id] => 1 // номер языка
[name] => русский // название языка
[shortname] => ru // сокращенное название, используется в URL
[base_admin] => 1 // язык является основным для административной части
[base_site] => 1 // язык является основным для сайта
[page_act] => 1 // текущая страница существует для языкового зеркала
)
[1] => Array
(
[id] => 2
[name] => английский
[shortname] => eng
[base_admin] => 0
[base_site] => 0
[page_act] => 1
)
)
integer site – номер языка, использующегося как основной на сайте.
Пример:
if(_LANG == $this->diafan->_languages->site)
{
echo 'Текущий язык является основным на сайте.';
}
integer admin – номер языка, использующегося как основной в административной части.
Пример:
if(_LANG == $this->diafan->_languages->admin)
{
echo 'Текущий язык является основным для административной части.';
}
Шаблонные теги
Для работы с модулем «Языки сайта» служат следующие шаблонные теги:
show_block – выводит ссылки на альтернативные языковые версии сайта.
Атрибуты:
— defer – маркер отложенной загрузки шаблонного тега: event – загрузка контента только по желанию пользователя при нажатии кнопки "Загрузить", emergence – загрузка контента только при появлении в окне браузера клиента, async – асинхронная (одновременная) загрузка контента совместно с контентом шаблонных тегов с тем же маркером, sync – синхронная (последовательная) загрузка контента совместно с контентом шаблонных тегов с тем же маркером, по умолчанию отложенная загрузка не используется, обычный вывод шаблонных тегов в коде страницы;
— defer_title – текстовая строка, выводимая на месте появления загружаемого контента с помощью отложенной загрузки шаблонного тега;
— template – шаблон тега (файл modules/languages/views/languages.view.show_block_template.php; по умолчанию шаблон modules/languages/views/languages.view.show_block.php).
Пример:
<insert name="show_block" module="languages">
выведет список ссылок на языковые версии сайта, «ru/eng»
В шаблоне тега можно получить значение любого атрибута через переменную $result["attributes"]["название атрибута"]
.
База данных
{languages} – Языки сайта
{languages_translate} – Перевод интерфейса
Файлы
modules/languages/admin/js/languages.admin.translate.js – редактирование списка языковых версий сайта, JS-сценарий;
modules/languages/admin/languages.admin.php – редактирование списка языковых версий сайта;
modules/languages/admin/languages.admin.translate.php – редактирование перевода интерфейса;
modules/languages/languages.php – контроллер;
modules/languages/languages.export.php – экспорт языкового файла;
modules/languages/languages.inc.php – подключение модуля;
modules/languages/languages.install.php – установка модуля;
modules/languages/languages.model.php – модель;
modules/languages/views/languages.view.show_block.php – шаблон ссылок на языковые версии сайта.
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.
Ваш комментарий будет первым.