Ускоряющая клавиша n предназначена для пропусков при навигации по страницам. Пропуск для перехода на начало контента.

Данный документ является переводом. В случае каких-либо несоответствий и ошибок последняя версия документа на английском языке должна рассматриваться в качестве официальной. Первоначальное авторское право принадлежит W3C, как то указано ниже.

Переводчик: Alexandr Shlapak

s_gotoW3cHome Internationalization
 

Настройка языковых предпочтений в браузере

Предполагаемая аудитория: пользователи, которые хотят настроить клиентское приложение/браузер для автоматической загрузки страниц на данном языке когда это возможно (при условии, что есть альтернативные страницы на сервере, и что сервер настроен для работы с ними).

Вопрос

Как можно использовать языковые настройки браузера, чтобы указать язык, на котором сервер должен прислать мне страницы?

Вводная информация

Когда ваш браузер тянет документ из Интернета, он отправляет запрос на сервер, где хранится информация. Это известно как HTTP запрос. С запросом, браузер посылает информацию о своих настройках языковых предпочтений. Это предпочтение языка страниц, а не пользовательского интерфейса браузера.

Часть HTTP запроса, которая держит эту информацию о языке которому отдается предпочтение называется Accept-Language заголовок запроса. Если сервер может вернуть альтернативные версии страницы или ресурса на более чем одном языке, информация может быть использована для загрузки страницы на языке, который вы предпочитаете, если это возможно, с помощью процесса, известного как HTTP content negotiation (согласование контента). Если есть только одна версия страницы на сервере, то эта версия будет извлечена. Если язык, которой вы запрашиваете отсутствует, то сервер должен быть настроен таким образом, чтобы возвращать язык по умолчанию.

Основные браузеры позволяют вам менять языковые предпочтения выраженные вашим браузером в HTTP запросе. Самое значение должно соответствовать BCP 47 (Тэги для Идентификации Языков). Как правило, двух- или трехбуквенный код языка (например fr для Французского), а затем следуют дополнительные subcodes, представляющие страну (например fr-CA представляет Французский, который используется в Канаде).

Во многих случаях, начальная настройка браузера будет отвечать вашим потребностям. Например, если у вас есть Японская версия браузера, браузер обычно предполагает, что вы предпочитаете страницам на Японском языке, и отправляет эту информацию на сервер. Эта статья расскажет вам, как открыть и изменить языковые предпочтения выраженные вашим клиентским приложением.

Примечание: Иногда сервер может определить, какой язык послать к вам таким способом, что не полагается на Accept-Language информацию. Например, Google стремится использовать IP информацию, чтобы определить язык, который вы получите. Настройки браузера обсуждаемые здесь не влияют на content negotiation (согласование контента), который базируется на таком механизме.

Ответ

Чтобы настроить браузер для автоматической загрузки страниц на этом языке, если это возможно (при условии, что есть альтернативные страницы на сервере, и сервер настроен на взаимодействие между ними), вам нужно контролировать информацию, которая отправляется в Accept-Language HTTP заголовке при вашем запросе страницы.

Большинство браузеров имеют предпочтения или опции, которые позволяют проверить или изменить настройки языковых предпочтений. Однако, в операционной системе Mac OS X вам, возможно, потребуется изменить настройки системы.

Большинство браузеров позволит вам указать список языков, так что если ваш первый выбор не доступен, то вы можете указать какой альтернативный язык попробовать, и в каком порядке. Как правило, когда у вас есть несколько языков, браузер будет назначать qvalues для языков внизу списка. Это вид анализа системы, которая поддерживается чтобы помочь серверу понять порядок предоставления вами предпочтения определенным языкам. Вот пример Accept-Language заголовка с несколькими языками. Датскому языку предоставляется предпочтение. Если это не проходит, то спрашивается Британский Английский, и наконец, любой тип английского языка.

Accept-Language: da, en-gb;q=0.8, en;q=0.7

Если ваши текущие настройки браузера используют language тэг с региональным subtag, то вы должны убедиться, что существует другой language тэг, указанный после него только с language subtag (как показано для Английского языка в примере). Смотрите примечания ниже для получения дополнительной информации.

Некоторые браузеры позволяют вам указать пользовательские language тэги, а не просто выбрать из заданного списка. Это может быть полезно, когда браузер не обеспечивает вас тем, что вам нужно в его определенных списках.

Остальная часть этой статьи предоставляет более подробную информацию об этом.

Вы можете использовать Инструмент для Проверки Интернационализации чтобы найти, которая Accept-Language информация на самом деле направляется вашим браузером. Запустите инструмент для проверки на любой странице, тогда на панели, посмотрите под Request Headers (Заголовки запроса) > Accept-Language. (Смотрите пример используя эту страницу.)

Изменение ваших предпочтений

Здесь указано как вы сменили бы настройки языка для последних версий ряда популярных браузеров на платформах Windows или Mac OS X. Если не указано иное, мы используем новейшие версии этих браузеров на момент написания этой статьи.

Эти пути время от времени меняются, когда выпускаются новые версии браузера. Когда мы смотрели последний раз - данные, которые здесь содержаться были правильными. Пожалуйста, дайте нам знать, если информация устарела.

Internet Explorer. Когда вы устанавливаете копию Internet Explorer версия 7+, ваши предпочтения автоматически устанавливаются согласно локали Windows, хотя вам предоставляется возможность изменить их во время первой установки.

Отметим, что, если вы не настроили языковые предпочтения вашего браузера, то при смене локали Windows предпочтения браузера также изменятся. Если вы настроили параметры браузера, то они больше не будут следовать изменениям в локали Windows. (настройки локали Windows позволяют вам переключать такие форматы, как, какой символ используется только как десятичный разделитель, порядок информации о дате, и т.д. за счет выбора различных локалей.)

По умолчанию, значение передаваемые в Accept-Language заголовок запроса с IE7 дальше обычно имеют форму language-region (язык-регион). Обычно не включена language-only (только язык) форма. Например, если вы француз, то ваш Accept-Language заголовок представит серверу fr-FR. Это имеет значение для некоторых серверов, особенно если вы добавляете другие language тэги. Дополнительную информацию смотрите ниже в разделе под названием Уровни детализации в language тэгах.

Чтобы изменить языковые предпочтения перейдите по Tools (Сервис) > Internet Options (Свойства обозревателя) > General (tab) (Общие) > Languages (Языки) > Language preference (Предпочтения языка). В IE можно также определить свои собственные пользовательские language тэги: нажмите на кнопку 'Add' (добавить) в диалоговом окне языковых предпочтений, и введите свой language тэг в поле 'User defined' (Другой).

Firefox. Чтобы изменить языковые предпочтения перейдите по Tools (Инструменты) > Options (Настойки) (Windows) или Firefox > Preferences (Предпочтения) (Mac OS X), и выберите Content (tab) (Содержимое) > Languages (Языки) > Choose (button) (кнопка Выбрать).

Вы можете добавлять сюда языка с (длинного) определенного набора, и Firefox отправит все языки, которые вы выбрали из Accept-Language заголовком в том порядке, в котором вы их расположите.

Вы не можете создавать пользовательские language тэги используя стандартный интерфейс. (Однако, если вы эксперт, то вы можете это сделать с помощью about:config, используя intl.accept_languages.)

Safari. В Mac OS X посланный язык - то, что указано в языковых предпочтениях OS X системы. Для изменения предпочтения перейдите по System Preferences (Системные предпочтения) > Language (Язык) & text (текст) > Language (язык). Вы можете иметь длинный список языков, в этом диалоговом окне, но Safari будет отправлять только верхний элемент с Accept-Language заголовком. Вы не можете создавать пользовательские language тэги.

В Windows, вы не можете изменить язык, который был послан Safari. Язык посланный с Accept-Language заголовком происходит от настроек вашей системы.

Google Chrome. Чтобы изменить языковые предпочтения перейдите по Options (Параметры) (Windows) или Chrome > Preferences (Предпочтения) (Mac OS X), и выберите Under the Bonnet > Web Content > Languages & Spellchecker settings (Расширенные > Настройки языков и проверки правописания).

Вы можете добавлять сюда языка из предварительно определенного набора, и Chrome отправит все языки, которые вы выберете с Accept-Language заголовком в том порядке, в котором вы их расположите. Вы не можете создавать пользовательские language тэги.

Opera. В Windows вы можете изменить ваши языковые предпочтения перейдя по Menu (Меню) > Settings (Настройки) > Preferences (Общие настройки) > General (Основные) > Language (Язык) > Details (button) (кнопка Настройки).

Вы можете добавлять языки из предварительно определенного набора, или создать пользовательский (User-defined) language тэг. Opera отправит все языки, которые вы выберете с Accept-Language заголовком в том порядке, в котором вы их расположите в диалоговом окне.

В Mac OS X, Opera берет список языков, для отправки с Accept-Language заголовком из языковых предпочтений OS X системы. Чтобы изменить языковые предпочтения перейдите по System Preferences (Системные предпочтения) > Language (Язык) & text (текст) > Language (Язык). Вы можете иметь длинный список языков, в этом диалоговом окне, и, в отличие от Safari и Chrome отправит их все с Accept-Language заголовком.

Вы не можете создавать пользовательские language тэги используя стандартный интерфейс. (Опять же, вы можете это сделать, если вы достаточно осведомлены технически, чтобы использовать opera:config и Network > HTTP Accept Language установку.)

Последовательности команд для дополнительных браузеров можно найти на сайте http://www.debian.org/intro/cn#mozilla

Указание альтернатив

Вы можете конечно указать несколько альтернатив, которые будут рассматриваться в порядке предпочтений. Следующий пример показывает настройки в Firefox для тех, кто отдает предпочтение Французским страницам на Швейцарской языке, но если это не доступно согласится на любые страницы на Французском, Немецком или Английском языке, в таком порядке.

Снимок экрана диалогового окна Firefox для изменения Языковых Предпочтений.

Часто браузеры будут позволять вам выбрать языки, которые необходимо из списка. Вы также можете иметь возможность задавать пользовательские языковые предпочтения. Если вы это сделаете, то вам необходимо будет использовать значения, которые будут признаны сервером (смотрите ниже)

Ваши предпочтения всегда должны располагаться от наиболее до наименее специфического, сверху донизу. Как правило, это означает, что если вы используете несколько subtags, то потом нужно включить короткие тэги ниже по списку.

Для обеспечения успеха вам необходимо настроить ваш браузер так, чтобы он спрашивал как fr-CH так и fr, именно в таком порядке. (Смотрите следующий раздел.) Это заставит сервер сначала искать Швейцарскую Французскую версию, но если невозможно, то искать Французскую версию.

Уровни детализации в language тэгах

Основное правило здесь то, что если ваши списки языковых предпочтений содержат language тэг, содержащий дефис, например fr-CH (Французский, на котором говорят в Швейцарии), то вы должны рассмотреть вопрос о включении дополнительных language тэгов без дефиса, то есть fr (Французский) в этом случае, сразу после.

Это потому что, если сервер следует спецификации HTTP 1.1 буквально, то он не в состоянии проверить fr-CH в отличие от документа обозначенного на сервере, как fr.

В этом случае на практике такой сервер как Apache на самом деле все еще ​​будет выдавать результат. Это потому, что сервер добавляет в список неявное предпочтение fr.

Однако, это предпочтение добавлено с очень низким приоритетом. Хотя обходной путь Apache может решить проблему, но если ваш список языковых предпочтений содержит только один язык, то вы можете столкнуться с проблемами, в случае если вы указали несколько языков. Документация Apache объясняет это следующим образом:

Неявно, Apache будет добавлять родительский язык до приемлемого клиентского списка языков со значением очень низкого качества. Но учтите, что если клиент делает запрос "en-GB; q=0.9, fr; q=0.8", и сервер имеет документы обозначенные, как "en" и "fr", тогда "fr" документ будет возвращен. Это необходимо чтобы обеспечить соответствие требованиям спецификации HTTP/1.1 и эффективнее работать с правильно настроенными клиентами.

Давайте посмотрим на пример. Список языковых предпочтений на рисунке в предыдущем разделе всегда будет возвращать Французский документ на сервер Apache, обозначенным как fr, потому что выбор Французский [fr] четко указан в списке, сразу же после Французский/Швейцарский [fr-ch]. Если мы уберем Французский [fr] из списка, тем не менее, даже если сервер Apache добавляет значение Французский [fr] неявно оно имеет более низкое качество, чем значение Немецкий [de], и, следовательно, Немецкая версия документа будет возвращена, если не доступна Швейцарско-Французская версия (даже если будет доступна версия, обозначенная как Французская).

Снимок экрана диалогового окна Firefox для изменения Языковых Предпочтений.

В браузере Internet Explorer вам, возможно, придется указать простой language тэг, как настройку что определяется пользователем. Другие браузеры будут иметь выбор для этого в их заранее определенных списках.

Поиск и выбор пользовательских тэгов

Как правило, вы можете выбрать language тэги, что вы хотите из списка, представленного в вашем браузере. В этом разделе рассказывается, как создавать свои собственные language тэги если то, что вам нужно не доступно в указанном списке.

Информация в этом разделе в большинстве случаев должна соответствовать вашим потребностям. Если вы хотите узнать больше о синтаксис language тэгов смотрите статью Language тэги в HTML и XML и Вибор Language Тэга.

Ваш language тэг должен начинаться с двух- или трехбуквенного кода, который называется subtag из списка языков, указанных в IANA Language Subtag Реестре. Затем вы можете добавить второй subtag, чтобы указать, страну или регион, если вам нужно. Эти subtags также можно найти в реестре. Первый и второй subtags должны быть разделены дефисом.

Язык. IANA Language Subtag Реестре - длинный текстовый файл. Чтобы найти language subtag, ищите на Английском по названию того языка. Если мы ищем 'French', мы находим запись, которая выглядит следующим образом:

Type: language
Subtag: fr
Description: French
Added: 2005-10-16
Suppress-Script: Latn

Обратите внимание, что тип этой записи 'language'. Вы можете использовать код поблизости, того что обозначено, как 'Subtag', то есть 'fr'.

Вместо того чтобы искать в реестре файл, вы можете отдать предпочтение использованию инструмента Поиск по Language Subtag созданного Richard Ishida. Введите название языка или региона, что вы ищете в поле Find (Найти) и нажмите на находящуюся рядом кнопку.

Регион. Если вы хотите указать, что вы отдаете предпочтение определенному типу Французского, то в случае если он доступен вы можете добавить такой региональный subtag, как CA для fr-CA (Французский, на котором говорят в Канаде). Чтобы найти региональный тэг ищите по названию страны или региона. Если вы ищете 'Canada', то вы найдете запись, похожую на эту:

Type: region
Subtag: CA
Description: Canada
Added: 2005-10-16

Отметим, что тип этого subtag - 'region', что и является тем, что вы хотите. Используйте 'CA' subtag (в конечном итоге fr-CA).

Subtags, которых следует избегать. Вы должны избегать subtags, что описанные в реестре как избыточные или устаревшие. Есть и другие виды subtag доступные в реестре, но, вообще говоря, очень маловероятно, что вам понадобится использовать их в настоящее время с этой целью (потому что люди вряд ли будут использовать другие subtags для того, чтобы отметить документы на сервере).

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

Китайцы, хотя они могут говорить на взаимно непонятных языках или диалектах, как правило, пишут одинаково то, что они хотят сказать, разница только между Упрощенной и Традиционной формой Китайских иероглифов. Таким образом, если вы ищете Китайский информацию вы можете просто указать, какой скрипт использует текст: упрощенный или традиционный, а не специфический язык.

Ввиду отсутствия в прошлом способа сослаться на скрипт в language subtags, серверы, как правило, возвращали текст в традиционном скрипте если ваши языковые настройки - zh-TW (Китайский на котором говорят в Тайване), и в упрощенном скрипте, если ваши настройки - zh-CN (Китайский на котором говорят на Материковом Китае). Если ваши настройки - zh-SG (Китайский на котором говорят в Сингапуре) или zh-HK (Китайский на котором говорят в Гонконге), то не ясно получите ли вы обратно то, что вы ожидаете (нормально упрощенный и традиционный Китайский, соответственно).

IANA реестр теперь также содержит subtags для скриптов. Скриптовые tags Hans и Hant в реестре позволяют вам указать предпочтения для zh-Hans (упрощенный Китайский) или zh-Hant (традиционный Китайский).

Возможно, это стоит делать, поскольку люди начинают маркировать свои ресурсы с помощью этих тэгов на сервере. Однако, вы также должны включить другие альтернативы, чтобы охватить старые серверы, которые все еще используют старый подход. Например, если вы живете в Тайване, вы можете настроить список предпочтений следующим образом:

zh-Hant
zh-TW
zh

Заметьте, что в настройках браузера вы должны вообще избегать использования скриптовых тэгов для других языков, особенно там, где Language Subtag Реестр указывает поле Suppress-Script для того языка. Если вы используете language тэг из скриптовым subtag, например, для Сербского языка, то вы должны использовать его в качестве альтернативного language тэга, то есть наряду с простым language тэгом.

Кстати говоря

Хорошим примером использования language negotiation (согласования языка) является Пресс-релиз W3C Spanish Office’s Standards Tour в 2004, который доступен на Испанском, Баскском, Каталонском, и Галисийском, так же, как на Японском и Французском якыках. Чтобы испытать это, настройте поочередно ваши предпочтения для каждого из доступных языков Иберийского полуострова и нажимайте на эту ссылку после каждого изменения. Коды, которые вам нужны: es (Испанский), eu (Баскский), ca (Каталонский) и gl (Галисийский ).

Вы также можете попробовать language negotiation (согласование языка) с этим примером страницы с согласованным языком: Пресс-релиз CSS2 (доступен на Голландском, Английском, Немецком, и Японском).

Выскажите своё мнение (по-английски).

Подпишитесь на ленту новостей RSS.

Новые публикации

Новости главной страницы

Twitter (Новости главной страницы)

‎@webi18n

Дополнительные материалы

Автор: Richard Ishida & Martin Dürst, W3C. Переводчик: Alexandr Shlapak.

Допустимый XHTML 1.0!
Допустимый CSS!
Кодировка UTF-8!

Перевод с английского: 2011-03-22. Последнее внесение изменений в перевод: 2011-07-13 12:00 GMT

Для просмотра истории внесения изменений нажмите qa-lang-priorities в блоге i18n.