DataparkSearch Engine 4.49: Поисковая машина; Справочное руководство | ||
---|---|---|
Пред. | Глава 7. Поддержка языков | След. |
Основная идея 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;
Дальнейшая установка проводится в три этапа.
Установка нескольких шаблонов.
Основная идея состоит в том, чтобы иметь один файл 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.cgi или search.php (отдельно от включаемых файлов, если желаете, указав для PHP include_path и разместив их в другом месте).
Затем создайте символьные ссылки:
search.cgi | Оригинальный файл |
search.en.cgi | символьная ссылка |
search.pl.cgi | символьная ссылка |
search.ru.cgi | символьная ссылка |
Или для PHP фронт-енда:
Конфигурирование Apache
Теперь нужно научить apache понимать, что надо здесь делать. Вам нужно включить процесс определения содержимого (negotiation) и изменить индексы. Я использовал файл .htaccess, но вы можете задать это и в файле конфигурации apache.
AddLanguage en .en AddLanguage pl .pl AddLanguage ru .ru DirectoryIndex search search.cgi (or search.php) Options FollowSymlinks MultiViews
Вы набираете url http://myhost/mydir/search без слэша на конце !!
Ваш броузер говорит "Я предпочитаю английский язык (т.е. определён язык en) "
Apache находит search.en.cgi (DirectoryIndex даёт search, MultiViews даёт en.cgi)
SCRIPT_FILENAME, используемый обоими search.cgi и search.php равен somepath/search.en.cgi
Замечание: Большинство других переменных будут иметь неправильные значения, либо search, либо search.cgi)
Вы измезменяете config.inc как указано выше, для использования search.en.htm.
Что случится, если пользователь, к примеру, захочет немецкий ? У нас нет search.de.cgi (search.de.php), т.е. первый элемент в списке DirectoryIndex не отработает, тогда сервер попробует второй, search.php Да, он получит страницу на английском, но это лучше, чем 404.
Это работает, возможно вам понадобиться еще что-то подкрутить в конфигурации apache, - я пробовал на сервере, для которого уже всё было настроено и возможно что-то упустил в описании конфигурирования веб-сервера.
У вас могут возникнуть некоторые проблемы с определением языка, вызванные:
Некотрыми кэшами, неследующими стандартам
Некоторыми броузерами, неследующими стандартам
Некоторыми пользователями, неуказывающими или неправильно указывающими предпочитаемый язык в настройках.
Команда разработчиков apache работает над возможностями обхода некоторых из этих трудностей, если это возможно. Для плотно используемого веб-сервера, вы можете ожидать примерно один е-мейл в неделю с описанием подобной проблемы.
Пред. | Начало | След. |
Поддержка языков | Уровень выше | Сегментеры фраз японского, тайского, корейского и китайского языков |