Система мультиязычности позволяет с минимальными усилиями перевести back-office системы (интерфейс администрирования) на требуемый язык. По умолчанию система NetCat содержит русский и английский языки.
Для подключения нового языка необходимо в папку /netcat/admin/lang/ положить файл вида язык.php (например, esperanto.php). Лучше скопировать уже существующий русскоязычный файл, переименовать его и перевести в нем все константы. Система подключит файл автоматически. В результате в интерфейсе администрирования в верхней части страницы появится переключатель на новый язык.
В блоке MAIN языкового файла содержится общая информация для работы с языком:
Константа | Описание |
---|---|
MAIN_DIR | направление языка - LTR - Left-To-Right, RTL - Right-To-Left |
MAIN_LANG | 2-х символьный код языка по ISO 639-1 |
MAIN_COUNTRY | 2-х символьный код страны |
MAIN_NAME | название языка на английском |
MAIN_NAMELOC | название языка в натуральном виде |
MAIN_ENCODING | кодировка данного файла и интерфейса администрирования |
MAIN_EMAIL_ENCODING | кодировка писем, которые будут оправляться из системы |
Стоит учесть, что при добавлении нового языка потребуется добавить соответствующий язык и во все установленные модули. Файл вида язык.lang.php (находится в папке модуля) содержит все тестовые константы, используемые в модуле для обеспечения мультиязычности. Если Ваш сайт, скажем, имеет еще и немецкий интерфейс, Вам необходимо создать файл ger.lang.php (в папке / netcat/admin/lang/ должен присутствовать файл ger.php).
Пример содержимого файла язык.lang.php:
define("NETCAT_MODULE_AUTH", "Интерфейс пользователя"); define("NETCAT_MODULE_AUTH_DESCRIPTION", "Интерфейс пользователя в системе ввода-вывода. Возможность регистрации внешней группы пользователей, изменение собственной анкеты, пароля, восстановление пароля. Данный модуль может интегрироваться с другими модулями системы.");
1. Вам необходимо определиться, как вы хотите организовать адресацию сайтов на другом языке:
или
2. В первом случае в системе будет один сайт, а все остальные языки будут организованы как подразделы. Под каждый сайт будут свои макеты дизайна. Шаблоны можно создать одни, только учесть, что в оформлении шаблона необходимо вставить проверки, чтобы показывать нужный язык статических элементов дизайна. Например, на странице необходимо вывести "Дата: 01.01.2005". Слово "Дата" жестко прописано в шаблоне. Мы ставим проверку:
<?=opt($parent_sub_tree[$sub_level_count-1][Subdivision_ID]==123,"Дата")?> <?=opt($parent_sub_tree[$sub_level_count-1][Subdivision_ID]==456,"Date")?>
Здесь 123 - ID корневого раздела русского сайта, т.е. http://example.com/ru, а 456 - немецкого, http://example.com/de. При этом в Системных настройках каждого такого шаблона надо указать:
GLOBAL $parent_sub_tree, $sub_level_count;
Во втором случае сайты организованы на разных доменах, это позволит нам создать в системе несколько сайтов под каждый язык. Под каждый сайт будут свои макеты дизайна. Шаблоны можно тоже создать одни, только учесть, что в оформлении шаблона необходимо вставить проверки, чтобы показывать нужный язык статических элементов дизайна. Например, на странице необходимо вывести "Дата: 01.01.2005". Слово "Дата" жестко прописано в шаблоне. Мы вставим проверку:
<?= opt($catalogue==1,"Дата")?> <?= opt($catalogue==2,"Date")?>
Здесь 1 - ID русского сайта, т.е. http://ru.example.com/, а 2 - немецкого, http://de.example.com/.
3. Если вы пошли по второму пути, то необходимо правильно настроить домены. У всех сайтов в системе должны быть корректно указаны домены. Все домены должны ссылаться на одну папку на сервере - папку с системой NetCat. В настройках сервера можно указать следующее:
<VirtualHost XX.XX.XX.XX> ServerAdmin info@example.com DocumentRoot "/usr/local/etc/httpd/htdocs/example" ServerName example.com ServerAlias ru.example.com de.example.com fr.example.com ErrorDocument 404 /netcat/require/e404.php CharsetRecodeMultipartForms Off CharsetSourceEnc cp1251 </VirtualHost>
4. Если вы решили сделать мультиязычность через подразделы, то вам необходимо задуматься о реализации страницы Ошибки 404 и Карты сайта.
Один из вариантов Ошибки 404:
Заводим для 404 раздела отдельный макет. В нем, в Шаблонах вывода навигации пишем:
global $REQUEST_URI,$HTTP_HOST;
В самом макете вместо какого-то сообщения примерно следующее:
<?=opt(strpos($HTTP_HOST.$REQUEST_URI,"/ru/"),"на русском")?> <?=opt(strpos($HTTP_HOST.$REQUEST_URI,"/en/"),"на английском")?> <?=opt(!strpos($HTTP_HOST.$REQUEST_URI,"/ru/") && !strpos($HTTP_HOST.$REQUEST_URI,"/en/"),"на дефолтовом")?>
Один из вариантов Карты сайта:
В макете Карта сайта выполняется функция ".s_browse_sub(0,$browse_map).". Используя проверку, аналогичную Ошибке 404, получим:
<?=opt(strpos($HTTP_HOST.$REQUEST_URI,"/ru/"),s_browse_sub(123,$browse_map))?> <?=opt(strpos($HTTP_HOST.$REQUEST_URI,"/en/"),s_browse_sub(456,$browse_map))?> <?=opt(!strpos($HTTP_HOST.$REQUEST_URI,"/ru/") && !strpos($HTTP_HOST.$REQUEST_URI,"/en/"),s_browse_sub(0,$browse_map))?>
Здесь 123 и 456 - ID разделов /ru/ и /en/
Комментарии 1