DataparkSearch Engine 4.53: Справочное руководство
Пред. | Глава 7. Поддержка языков | След.

# 7.2. Создание многоязычных страниц поиска

Основная идея Craig Small `<csmall@eye-net.com.au>`. Небольшие изменения Alex Barkov `<bar@mnogosearch.org>`.

Зачастую требуется поддержка различных языков, что означает использование различных файлов `search.htm` в зависимости от языка, выбранного в настройках броузера пользователя.

Пожалуйста, устите, что замечания по конфигурированию, даваемы ниже, абсолютно одинаковы для обоих поисковых фронт-ендов `search.php` и `search.cgi`.

> Замечание: специфика `PHP`: единственное отличие для `search.php` заключается в модификации `config.inc` для изменения файла шаблона:

>     $template_file= ereg_replace(".php", ".htm", basename(getenv("SCRIPT_FILENAME")));
>     $template_file = "/etc/somewhere" . $template_file;

Дальнейшая установка проводится в три этапа.

1. Установка нескольких шаблонов.

   Основная идея состоит в том, чтобы иметь один файл `search.php` или `search.cgi` и несколько файлов `search.[language].htm`. Также, для ипользования по умолчанию необходимо иметь файл `search.htm` (обычно в качестве символьной ссылки на `search.en.htm`).

   Если имя скрипта `search.en.php` (или `search.en.cgi`), оба CGI и PHP фронт-енды будут искать `/somewhere/etc/search.en.htm`, мы подразумеваем, чтоassuming `/somewhere/etc/` - поддиректория `/etc/` корневой директории установки DataparkSearch.

   Вы должны поместить в `/somewhere/etc/` все такие шаблоны `search.htm`, т.е. `/somewhere/etc` будет иметь, например:

   `search.en.htm` | Шаблон для английского языка
   `search.pl.htm` | Шаблон для польского языка
   `search.ru.htm` | Шаблон для русского языка
   `search.htm` | Символьная ссылка на шаблон английского языка

2. Установка фронт-ендов

   Создайте поддиректорию и поместите в неё `search.cgi` или `search.php` (отдельно от включаемых файлов, если желаете, указав для PHP include_path и разместив их в другом месте).

   Затем создайте символьные ссылки:

   `search.cgi` | Оригинальный файл
   `search.en.cgi` | символьная ссылка
   `search.pl.cgi` | символьная ссылка
   `search.ru.cgi` | символьная ссылка

   Или для `PHP` фронт-енда:

   `search.php` | Оригинальный файл
   `search.en.php` | символьная ссылка
   `search.pl.php` | символьная ссылка
   `search.ru.php` | символьная ссылка

3. Конфигурирование Apache

   Теперь нужно научить `apache` понимать, что надо здесь делать. Вам нужно включить процесс определения содержимого (negotiation) и изменить индексы. Я использовал файл `.htaccess`, но вы можете задать это и в файле конфигурации `apache`.

       AddLanguage en .en
       AddLanguage pl .pl
       AddLanguage ru .ru

       DirectoryIndex search search.cgi  (or search.php)
       Options FollowSymlinks MultiViews

## 7.2.1. Как это работает ?

1. Вы набираете url `http://myhost/mydir/search` без слэша на конце !!

2. Ваш броузер говорит `"Я предпочитаю английский язык (т.е. определён язык en) "`

3. `Apache` находит `search.en.cgi` (DirectoryIndex даёт `search`, MultiViews даёт `en.cgi`)

4. SCRIPT_FILENAME, используемый обоими `search.cgi` и `search.php` равен `somepath/search.en.cgi`

   > Замечание: Большинство других переменных будут иметь неправильные значения, либо `search`, либо `search.cgi`)

5. Вы измезменяете `config.inc` как указано выше, для использования `search.en.htm`.

Что случится, если пользователь, к примеру, захочет немецкий ? У нас нет `search.de.cgi` (`search.de.php`), т.е. первый элемент в списке DirectoryIndex не отработает, тогда сервер попробует второй, `search.php` Да, он получит страницу на английском, но это лучше, чем 404.

Это работает, возможно вам понадобиться еще что-то подкрутить в конфигурации `apache`, - я пробовал на сервере, для которого уже всё было настроено и возможно что-то упустил в описании конфигурирования веб-сервера.

## 7.2.2. Возможные сложности

У вас могут возникнуть некоторые проблемы с определением языка, вызванные:

- Некотрыми кэшами, неследующими стандартам

- Некоторыми броузерами, неследующими стандартам

- Некоторыми пользователями, неуказывающими или неправильно указывающими предпочитаемый язык в настройках.

Команда разработчиков `apache` работает над возможностями обхода некоторых из этих трудностей, если это возможно. Для плотно используемого веб-сервера, вы можете ожидать примерно один е-мейл в неделю с описанием подобной проблемы.

Пред. | Начало | След.
Поддержка языков | Уровень выше | Сегментеры фраз японского, тайского, корейского и китайского языков