使用Accept-Language标头的默认内容的RFC2616算法

时间:2014-06-07 13:00:26

标签: internationalization w3c

我正在设计一个包含存储在数据库中的内容的Web服务,我想确保该设计符合RFC2616。但是,我对于匹配内容的正确方法有点不清楚。

如果我将行为指定为用户故事:

Given I request content in 'en_GB'
When the server has content in 'en_US' 
     and the server has content in 'en_CA'
     and the server does not have content in 'en'
Then the server should return content in '???'

问题:服务器应该使用哪种语言返回内容?


更新:基于pawel-dyda的answer,我相信这些故事应该是这样的:

Given I request content in 'en_GB'
When the server has content in 'en_US' 
     and the server has content in 'en_CA'
     and the server has content in 'en'
Then the server should return content in 'en'

Given I request content in 'en_GB'
When the server has content in 'en_US' 
     and the server has content in 'en_CA'
     and the server does not have content in 'en'
Then the server should return content in the server default language

1 个答案:

答案 0 :(得分:2)

你想要的是Locale后备。对于HTTP Accept-Language标头,I18n最佳实践规则是:

  1. 鉴于lang-country对返回内容(如果可用)
  2. 然后尝试返回给定语言的内容(如果可用)
  3. 然后尝试列表中的下一种语言(从1开始)
  4. 如果到目前为止没有任何作用,请返回(应用程序|服务器)默认语言。
  5. 例如,假设您的应用程序包含德语翻译(de),HTTP Accept-Language标题如下所示:

      

    接受语言:fr-FR,de-AT; q = 0.7

    返回的语言应为德语(de)。

    回到你的问题,你应该返回的是你的默认语言环境。显然,为给定的语言提供公共资源是很好的(在本例中为en)。