Налаштування відображення мови за допомогою apache multiviews
Intended audience: Веб-майстри, адміністратори серверів, а також ті, хто хоче краще зрозуміти, як відображати мову контенту на сервері Apache.
Як я можу використовувати підхід MultiViews на веб сервері Apache для автоматичного обслуговування ресурсів тією мовою, до якого був відправлений HTTP запит?
Клієнтське додаток запитує документ з сервера, інформація про мовні переваги користувача, як правило, передається на сервер через заголовок HTTP Accept-Language. Якщо сервер зберігає сторінки на більш ніж однією мовою, то ця HTTP інформація може бути використана для отримання сторінки на тій мові, який користувач віддає перевагу, якщо ту мову доступний. Якщо на сервері є тільки одна версія сторінки, то вона і буде отримана.
Механізм вибору відповідної сторінки для повернення користувачеві, заснований на Accept-Language інформації в HTTP запиті, і він називається узгодження мови.
У багатьох випадках клієнтську програму має правильні повернутися до початкового значення. Наприклад, якщо у вас є Японська версія браузера, то браузер зазвичай припускає, що ви віддаєте перевагу сторінкам на Японському мовою, і відправляє цю інформацію на сервер. Основні браузери дозволяють змінювати ці мовні переваги. Для отримання додаткової інформації дивіться Установка мовних уподобань в браузері.
В Apache є два різних підходи до узгодження ресурсу. Перший передбачає використання файлу типу map (наприклад. Var файл) який називає файли, що містять очікувані варіанти, другий припускає використання 'MultiViews' пошуку, де сервер робить неявне зіставлення імені файлу шаблону і вибирає з числа результатів. Опція MultiViews також може бути встановлена для кожної папки, якщо це дозволив адміністратор сервера.
У даній статті розглядається питання про те, як налаштувати документи на сервері Apache, використовуючи підхід MultiViews, так щоб працювало узгодження мови.
По-перше, зверніть увагу, що узгодження мови як може бути кращим способом для обслуговування вашого багатомовного контенту для ваших Новомосковсктелей, так може і не бути. У деяких випадках, наприклад, локалізовані сайти можуть краще підтримуватися шляхом збереження перекладених версій сторінки в папки з відповідними мовами або шляхом змішування вищезазначених двох підходів. Який підхід є більш доцільним, і в якій ситуації, буде розглядатися в наступній статті.
Налаштування узгодження мови включає в себе:
- розробку стратегії для позначення різних мовних версій файлу,
- планування резервної стратегії дій при запиті мов, які ви не підтримуєте, і
- встановлення відповідних серверних директив, щоб все працювало.
Існує кілька способів налаштувати узгодження мови на серверах Apache, і правильний підхід буде залежати від налаштувань більш високого рівня і від включених або відключених адміністратором сервера привілеїв. Можливо, вам доведеться звернутися до адміністратора сервера, щоб перевірити, який підхід доступний і які ви маєте привілеї.
З огляду на кілька шляхів, за якими налаштування сервера можуть змінюватися, важко просто і остаточно описати, як налаштувати узгодження мови. Далі описано типового підходу. Будемо вважати, що опція MultiViews включена (за замовчуванням) і. що користувач може змінити деякі директиви файлів .htaccess (невеликі текстові файли в структурі папки). Для того щоб підхід з .htaccess файлом працював, директива AllowOverride повинна бути правильно налаштована адміністратором сервера. Вам необхідно звернутися до адміністратора сервера, щоб дізнатися чи підходить для вас такий підхід.
Ми пропонуємо використовувати наступний приклад: документ під назвою example.html доступний на 3-х мовах: англійською, французькою та німецькою, а за замовчуванням використовується Англійська мова. Незважаючи на те, що приклад обмежує себе .html файлами, узгодження мови може бути застосоване до інших типів файлів.
Кожна мовна версія вказується спеціальним розширення, яке може з'являтися до або після .html розширення. На практиці, є деякі міркування щодо розміщенням цього розширення, які потрібно мати на увазі.
Ви повинні бути обережні з деякими розширеннями. Наприклад, використання коду ISO .pl для Польської мови, буде плутати його з розширенням, що зазвичай використовується для позначення Perl документів. Таким чином, якщо ви хочете, то для польської мови ви можете використовувати наступне позначення pl-PL.
Зверніть увагу, що користувачі можуть звертатися до конкретного файлу, ввівши повне ім'я файлу, наприклад example.fr.html буде завантажуватися на французькій мові, незалежно від мовних налаштувань.
Ви зазвичай використовуєте директиву AddLanguage. щоб вказати, які розширення зазначені для певної мови контенту в вхідному HTTP.
Наприклад, наступна директива спрямовує HTTP запит контенту, що написаний на Французькому мовою на розширення .fr:
AddLanguage fr .fr
Є кілька місць, де ви це можете вказати. Це, можливо, вже відзначено в глобальному масштабі за рахунок запису в файл сервера httpd.conf, або адміністратор сервера може її туди додати. Крім того, при завантаженні контенту користувачем він може вказуватися у файлі в ієрархії папок. Такий файл, як правило, називається .htaccess.
Важливо вказати файл за умовчанням, так що користувач, який не має Англійського, Французького або Німецької мови в своєму списку бажаних мов (скажімо, наприклад, Іспанська користувач), або чиє клієнтську програму не підтримує узгодження контенту, або в іншому випадку ви отримаєте не файл, а HTTP 406 результат (НЕ ПРИЙНЯТНИЙ).
Відзначимо також, що деякі основні браузери можуть для користувачів із США встановлювати мову користувача за замовчуванням en-us. Це не буде збігатися з en. яка встановлена на сервері, тому ви повинні переконатися, що ви надали користувачам можливість отримати Англійський документ.
Кращий спосіб вказати файл за умовчанням буде змінюватися, в залежності від вашого розширення мови - чи то воно передує, то воно слід за .html розширенням, і від того скільки разів Apache ви використовуєте. У наведених нижче прикладах будемо вважати, що за замовчуванням встановлений Англійська мова (ймовірно, частіше за все він може бути кращим вибором за замовчуванням, з урахуванням широкого поширення англійської мови).
У версіях 2.0.30 і вище на сервері Apache використовуючи директиви ForceLanguagePriority і LanguagePriority ви досить чітко можете вказати файл за умовчанням (для отримання детального опису роботи цих директив пройдіть по посиланню).
Для нашого прикладу, ми могли б встановити Англійська мова за замовчуванням, використовуючи наступні два рядки:
LanguagePriority en fr de
ForceLanguagePriority Fallback
Тепер, якщо Іспанські користувачі будуть запитувати Іспанська документ в контексті нашого прикладу, то замість Іспанського вони отримають Англійська документ. Тобто перший пункт зі списку LanguagePriority.
Якщо версія вашого сервера попередня до 2.0.30, то вам доведеться зробити дуже багато роботи, щоб вказати файл за умовчанням, оскільки тут не доступна директива ForceLanguagePriority. Крім того, підхід буде залежати від того де стоїть розширення мови: до або після .html розширення.
Якщо ваше розширення мови знаходиться після .html (тобто .html розширення можуть бути включені або виключені при зверненні до файлу), тоді необхідно назвати свою копію Англійського файлу наступним чином:
Файл за замовчуванням має таке розширення .html.html бо, якщо файл за умовчанням був названий example.html і користувач запросив файл, як example.html, то узгодження контенту ніколи не відбудеться (бо не зможе знайти точної відповідності).
Якщо в папці є тільки один файл з заданим ім'ям і немає розширення мови, то він буде обслуговуватися незалежно від мовних уподобань клієнта.
Ця техніка може бути застосована до інших типів файлів, крім HTML. Ми просто використовували HTML приклад тут, оскільки це загальна вимога.