【发布时间】:2019-05-25 13:08:21
【问题描述】:
我开始此讨论是为了收集有关 API 本地化实践的更多信息。似乎 HTTP 没有提供足够的指导,甚至实践状态也不够。
基本问题是 API 可能需要提供取决于用户文化、国家、语言和时区的内容。例如,德国用户希望阅读德语消息,其中包含欧洲公制日期、数字、单位,使用欧元货币和中欧时区。
通读RFC 7231 Section 5.3.5 Accept-Language 并进一步了解RFC 4647,您可能会认为Accept-Language 已经足够成熟,应该这样做。但是有几个明显的缺点:
- 语言标签可能不够精确,例如用户只能请求没有国家/地区代码的语言,从而留下歧义:“de, en;q=0.8”
- 即使用户同时提供语言和国家偏好,也不清楚如何将消息区域设置和值格式化区域设置联系起来。例如,如果用户请求:“hu_HU, en_US;q=0.9”,而应用程序缺少匈牙利语消息并且是用知道如何用匈牙利语格式化日期的 Java 编写的。那么应用程序应该使用带有匈牙利日期的英文消息还是提供带有美国日期的英文消息?实际情况可能更复杂。
- 语言标签中不存在时区。有no HTTP standard header for this it seems。
我看到Microsoft have thought about #2 in ASP.Net 并介绍了文化和 UICulture 的概念,以将消息语言的选择与格式分开。
在 Java 世界中,Spring 已将 TimeZoneAwareLocaleContext 引入地址 #3
W3c 已向Accept-Language used for locale setting 发布了指南。这或多或少说明Accept-Language不够用
那么你的想法是什么?
- 你知道可以综合解决这个问题的API吗?指针?
- API 是否应该接受多个值来选择消息语言、值格式化区域设置和时区?
- 应该使用
Accept-Language吗?
【问题讨论】:
-
格式化和使用特定于区域设置的数字等可以从 CLDR 数据库中获得,正如许多供应商似乎所做的那样cldr.unicode.org 但是仍然可能存在一些问题: 1. CLDR 的可用翻译存在差异,即 CLDR 封面许多语言环境,而大多数 API 的翻译很少 2. 人们是否可能希望使用与 CLDR 值相矛盾的自己的格式设置?
标签: rest api http localization internationalization