Я начинаю это обсуждение, чтобы собрать больше информации о методах локализации для API.Похоже, что HTTP НЕ дает достаточного руководства, и даже практического опыта недостаточно.
Основная проблема заключается в том, что API-интерфейсам может потребоваться предоставление контента, который зависит от культуры пользователя, страны, языка и часового пояса.Например, немецкий пользователь хотел бы читать сообщения на немецком языке, с европейскими метрическими датами, числами, единицами, используя евро и в центральноевропейском часовом поясе.
Чтение RFC 7231 Раздел 5.3.5 Принять* Язык и далее в RFC 4647 можно подумать, что Accept-Language
достаточно сложен и это то, что должно быть сделано.Однако есть несколько заметных недостатков:
- Языковые теги могут быть недостаточно точными, например, пользователь может запрашивать язык только без кода страны и, таким образом, оставить неопределенность в виде: "de, en; q = 0,8"
- Даже если пользователь задает языковые и страновые предпочтения, неясно, как связать выбор языкового стандарта сообщения и языкового стандарта форматирования значения.Например, если пользователь запрашивает: «hu_HU, en_US; q = 0,9», в то время как в приложении отсутствуют венгерские сообщения, и он написан на Java, который знает, как форматировать дату на венгерском языке.Так должно ли приложение использовать английские сообщения с венгерскими датами или, скорее, предоставлять английские сообщения с датами США?Реальная ситуация может быть более сложной.
- Часовой пояс отсутствует в языковых тегах. нет стандартного заголовка HTTP для этого, кажется .
Я вижу Microsoft подумала о # 2 в ASP.Net и ввела понятие культурыи UICulture для отделения выбора языка сообщений от форматирования.
В мире Java Spring ввел TimeZoneAwareLocaleContext для адреса # 3
W3c выпустил директиву для Accept-Язык, используемый для настройки языка .Это более или менее говорит о том, что Accept-Language
недостаточно
Итак, что вы думаете?
- Знаете ли вы, что API-интерфейсы решают эту проблему всесторонним способом?Указатели?
- Должны ли API принимать несколько значений для выбора языка сообщений, языка форматирования значений и часового пояса?
- Следует ли вообще использовать
Accept-Language
?