Http: Accept-Language - передается только язык
От: Gajdalager Украина  
Дата: 17.05.07 16:59
Оценка:
Всем привет.

Возник такой вопрос:
Как известно, браузер передает настройки языков как поле HTTP Request Acceptable-Language, например
Acceptable-Language: en-us

Как следует из RFC, en — это ISO-код языка, us — код страны. Теперь возьмем следующий пример:
Винда, в Regional Setting задано German (Germany) (или Spanish (Spain), проблема аналогична). IE подгребает оттуда настройки и в списке Languages задает язык German (Germany) [de]. RFC не запрещает ему отослать только код языка, соответственно, к нам на веб приходит
Acceptable-Language: de

Как известно, Request.getLocale() возвращает the preferred Locale for the client, однако в случае вышеуказанного юз-кейса локаль проинициализированна не полностью, т.е. там задан только язык, страна же неизвестна. В результате мы не можем взять специфичные для страны настройки с локали (к примеру, валюту), хотя человек задал у себя в настройках Винды всё нормально.
Задача — побороть
Кто нибуть сталкивался с такой проблемой? Как можно ее обойти? Пока что предложили солюшн — держать в каком нибуть месте (например, конфигурационном файле) мапу язык-"дефолтная страна", т.е. приходит немецкий язык без страны — мы поднимаем из мапы Германию и получаем полнофункциональную локаль. Однако терзают смутные сомнения — не изобретаем ли велосипед? Проблема вроде бы в таком месте, на которое много кто наткнулся бы...
У кого какие еще предложения?
Спасибо.
<< RSDN@Home 1.1.4 stable SR1 rev. 568>>
Сейчас играет Эпидемия — Рожденный Для Битвы
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.