Языковой перевод MaxSite CMS

Стандартно в MaxSite CMS используется русский язык в качестве основного. Поддержка других языков осуществляется с помощью языковых файлов.

Языковые файлы представляют собой обычные текстовые php-файлы, которые содержат массив $lang переводимых фраз, например:

$lang = array(
	'404 - несуществующая страница' => '404 - not found',
	'Аноним' => 'Anonim',
	'Комментатор' => 'User',
	'Новый комментарий' => 'New comment',
);

Языковые файлы следует располагать в application/maxsite/common/language.

Для того, чтобы фраза была переведена, используются две функции: t() и tf(). Они полностью идентичны, и служат только для разделения перевода админ-панели (t) и внешней части сайта (tf — frontend).

echo '<div class="update">' . t('Обновлено!') . '</div>';

В данном случае фраза «Обновлено!» будет обработана функцией t() и, если необходимо, будет переведена с помощью языкового файла.

На уровне шаблона используется функция tf().

$p->format('view_count', tf('Просмотров'));

Поскольку перевод для админ-панели достаточно объёмный, то перевод следует разделять на два файла: один будет подключаться всегда (в постфиксом «-f»), а второй только для админ-панели.

Например для английского: en-f.php — всегда загружаемый файл перевода, и en.php — только для админ-панели.

Указание языка сайта

Указать язык сайта можно в файле application/maxsite/mso_config.php, или на уровне шаблона в файле index.php с помощью строчки:

$MSO->language = 'en';

Для админ-панели язык выбирается в Основных настройках - Админ-панель. Обратите внимание, что в админ-панели поддерживаются только ua ro en de (потому что нет других переводов).

Если языковой файл есть, то фразы будут автоматически переводиться. Если файла нет, или в нём нет переводимой фразы, то перевода не будет.

Общая схема создания перевода

В некоторых случаях в MaxSite CMS фразы переводятся автоматически, например опции ini-файлов. Система берёт на себя обслуживание таких файлов и прогоняет фразы через языковые функции. Из-за такой схемы, воспользоваться сторонними программами (PoEdit), которые анализируют исходные php-файлы на предмет языковых функций, оказывается проблематичным. Из-за этого, собрать все переводимые фразы нужно в режиме реальной работы сайта.

Создание файлов перевода осуществляется в три этапа.

  • сбор переводимых фраз
  • их обработка
  • сам перевод на основе словаря

Сбор всех фраз

Фразы, которые указаны как переводимые, будут накапливаться в отдельных текстовых файлах. Чтобы их собрать, нужно вручную посетить некоторые страницы сайта, включая служебные (архив, регистрация и т.п.). При сборе фраз будут созданы два файла t.txt и tf.txt.

Сбор фраз происходит не зависимо от выбранного языка.

Обработка

Полученные данные нужно обработать. Это происходит в автоматическом режиме: нужно лишь набрать адрес обработчика в браузере.

Перевод

Сам перевод осуществляется в автоматическом режиме на основе словаря dictionary.php. Если этого файла нет, то можно использовать mso-dictionary.php как заготовку.

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

Инструкция

Распакуйте архив application/maxsite/common/language/lang.zip в корень своего сайта. Поскольку сбор фраз достаточно ресурсозатратная операция, то используйте только локальный сервер.

В каталоге lang находятся php-файлы:

  • lang.php — сборщик переводимых фраз
  • build.php — обработчик
  • translation.php — переводчик

Каталог lang/mso — является служебным. Именно в нем будет происходить работа по сбору и обработке данных.

Для того, чтобы включить сбор фраз в файле application/maxsite/mso_config.php добавьте строчку:

define('MSO__PLEASE__ADD__FILE_LANG', $MSO->config['FCPATH'] . 'lang/lang.php');

После этого нужно обновить страницы своего сайта (используйте default-шаблон), зайти в админ-панель. Фразы начнут собираться в каталоге lang/mso/ в виде двух файлов t.txt и tf.txt. Следите за размером файлов, чтобы он не вызвал излишнюю нагрузку на сервер.

Во время или после сбора фраз запустите build-обработчик, набрав его адрес в браузере: http://localhost/cms/lang/build.php (используйте свой адрес сайта).

Обработчик создаст три файла

  • mso-serialize.php и mso-f-serialize.php — серилизованные массивы данных
  • mso-dictionary.php — заготовка для словаря переводчика

При этом файлы t.txt и tf.txt также будут обработаны и из них будут удалены все дублирующиеся фразы.

В процессе сбора фраз, вы можете периодически запускать build-обработчик, чтобы уменьшить размер текстовых файлов.

После того, как сбор фраз завершен, закомментируйте добавленную строчку (с MSO__PLEASE__ADD__FILE_LANG) в mso_config.php.

Теперь, для того, чтобы сделать перевод, нужно создать каталог языка. Например для английского — en.

  • Если у вас нет своего словаря, то скопируйте в этот каталог mso-dictionary.php как dictionary.php — именно в этом файле нужно выполнять перевод.
  • В файле translation.php укажите каталог языка, а также дополнительные данные, если необходимо.
  • После того, как вы сделали какой-то перевод в dictionary.php, то нужно запустить translation-переводчик. В браузере наберите его адрес: http://localhost/cms/lang/translation.php

В каталоге языка появятся два готовых файла en-f.php и en.php. Это готовые файлы, которые можно скопировать в application/maxsite/common/language/ для использования.

Не редактируйте en-f.php и en.php, поскольку они будут обновлены автоматически.

Языковой перевод плагинов

Языковой перевод плагинов точно также базируется на массиве $lang, но при этом набор переводимых фраз должен составить автор плагина в виде любого языкового файла (даже пустого).

Языковые файлы плагина следует размещать в подкаталоге плагина language. См. например плагин bbcode.

В самом плагине функции t/tf следует вызывать со вторым параметром __FILE__. Например:

$header = tf('Показать/Скрыть...', __FILE__);

В этом случае MaxSite CMS будет использовать перевод из каталога плагина.

Языковой перевод шаблонов

Шаблон также может содержать свои языковые файлы в каталоге шаблона language. При вызове t/tf в файлах шаблона, вторым параметром следует указать строку mytemplate:

$catalog = tf('Каталог проекта ', 'mytemplate');

Создание языкового файла также ложится на автора шаблона.

Learn more about buy Instagram likes check popular website Friendlylikes
Find more information why people are used to buy Instagram likes for photos and videos these days.