我正在决定如何组织URL并将语言环境放入其中。我有两个选择:
从一侧example.com/en/page
看起来比example.com/page?locale=en
更好,更紧凑。
另一方面,对于具有两个表示的一个资源,我们有两个网址example.com/en/page
和example.com/ru/page
。
当然,在example.com/page?locale=en
的情况下,我们也有一个资源用于一个资源,但根据我的口味,它略微更加RESTful。
最佳做法是什么?你在用什么?为什么?
答案 0 :(得分:36)
本地化是Restful API中Content-Negotiation的一部分。
所以我首选的方式是通过标题来实现。 HTTP提供了定义所需语言的标准方法。看看Accept-Language标题。
答案 1 :(得分:17)
来自https://www.w3.org/International/questions/qa-accept-lang-locales:
HTTP Accept-Language标头最初仅用于指定用户的语言。但是,由于许多应用程序需要知道用户的语言环境,因此通常的做法是使用Accept-Language来确定此信息。 仅使用HTTP Accept-Language标头确定用户的区域设置并不是一个好主意。如果您专门使用Accept-Language,您可能会将用户手铐放入一组不符合他自己的选择。
我的偏好:
Accept-Language
标头
指定的Accept-Language
标头,则回退到已记录默认区域设置Content-Language
<some-root-tag xml:lang="en-US">
(请参阅http://www.opentag.com/xfaq_lang.htm)