Онлайн-руководство разработчика NetCat
Модуль «Поиск по сайту» 13.2.1Начало работы с модулем 13.2.2Язык запросов 13.2.3Способы хранения индекса 13.2.4Интерфейс модуля в панели управления сайтом 13.2.5Области индексирования 13.2.6Области HTML-страниц 13.2.7Области поиска на сайте 13.2.8Индексирование по расписанию, запуск индексирования в фоновом режиме 13.2.9Правила индексирования 13.2.10Постановка задачи переиндексирования в очередь 13.2.11Интеграция модуля в макеты дизайна сайта 13.2.12Простая форма поиска 13.2.13Расширенная форма поиска 13.2.14Вывод результатов поиска 13.2.15Стилизация списка подсказок 13.2.16Расширенные настройки 13.2.17Разработка расширений модуля 13.2.18Обзор архитектуры модуля 13.2.19Обработчики документов различных типов 13.2.20Текстовые фильтры 13.2.21Анализаторы текста 13.2.22Корректировщики запросов 13.2.23Подключение других поисковых систем 13.2.24Решение проблем с поиском 13.2.25Решение проблем с индексированием 13.2.26Справочник API

Мультиязычность

Видеоурок

Система мультиязычности позволяет с минимальными усилиями перевести 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. Вам необходимо определиться, как вы хотите организовать адресацию сайтов на другом языке:

  • http://example.com/ - основной, английский
  • http://example.com/ru - русский
  • http://example.com/de - немецкий
  • http://example.com/fr - французский

или

  • http://example.com/ - основной, английский
  • http://ru.example.com/ - русский
  • http://de.example.com/ - немецкий
  • http://fr.example.com/ - французский

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

Gleb Mesheryakov  Студия "АРАССА" 14 ноября 2014, 04:45:37
Очень интересная штука! Хотя малоподготовленному, наверное, будет тяжеловато разобраться.
   
Описание проекта