Feature #1873
closedУчитывание рекомендаций rfc2616 при формировании заголовков Accept-Language
100%
Description
1. The language quality factor.
Согласно http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4 может указываться в заголовке при множественных значениях. А может не указываться, тогда предполагается, что для указанных языковых тегов q=1, и эти языки одинаково приемлимы. В реале же большинство (?) серверов при этом учитывает порядок тегов, но вовсе не обязаны этого делать. Следовательно, есть некий смысл, всё-таки указывать этот фактор.
2. Нестрогое указание диапазона языков.
Note: When making the choice of linguistic preference available to the user, we remind implementors of the fact that users are not familiar with the details of language matching as described above, and should provide appropriate guidance. As an example, users might assume that on selecting "en-gb", they will be served any kind of English document if British English is not available. A user agent might suggest in such a case to add "en" to get the best matching behavior.
Таким образом, имеет смысл введение в список нулевого значения для подвида языка, при выборе которого будет указана только первая часть тега.
3. Требование приватности.
Некоторые положения http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4 и http://www.w3.org/Protocols/rfc2616/rfc2616-sec15.html#sec15.1.4 могут быть истолкованы так, что пользователь должен иметь возможность настройки исключающей отправку этого заголовка.
В итоге предлагается следующая модель поведения.
1. При первом запуске приложения настройки языков берутся из текущей локали и явным оброзам обозначаются. То есть, эти настройки вписываются в файлы конфигурации
2. В последствии, пользователь может удалить ранее (пред)определенные настройки, и тогда заголовок Accept-Language посылаться не будет
Хотя этот вариант логичен, но несет проблему миграции настроек на новую логику, то есть без миграции текущие установки приложения (когда при отсутствии настроек посылается хаголовок со значениями из локали) не будут посылать заголовок вовсе. Если эта проблема представляется трудноразрешимой, есть обходной вариант:
В форму настроек поместить опцию отключающую отправку заголовка Accept-Language.