# Создание многоязычных страниц поиска
DataparkSearch - Полнофункциональная поисковая машина для Интернета и Интранета с открытым исходным кодом. Распространяется по лицензии GNU.
Keywords: shareware, freeware, интернет, unix, поисковик, поисковая машина, поиск, поиск информации, интранет, open source, opensource, search, searching, software, udmsearch, engine, indexing, system, web, ftp, http, cgi, php, SQL, MySQL, database, php3, FreeBSD, Linux, Unix, DataparkSearch, MacOS X, Mac OS X, Windows, 2000, NT, 95, 98, GNU, GPL, url, grabbing

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` работает над возможностями обхода некоторых из этих трудностей, если это возможно. Для плотно используемого веб-сервера, вы можете ожидать примерно один е-мейл в неделю с описанием подобной проблемы.

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