【发布时间】:2015-10-26 04:37:49
【问题描述】:
只是想知道是否有一种机制可以“宣传”我可以在 Accept-Language 中接受哪些值并返回正确的 Content-Language。
有“Link: ; rel=alternate hreflang=pt-br”,但这迫使我创建一个新资源(而不是在不同的语言下公开相同的资源)。
http://www.w3schools.com/tags/att_link_hreflang.asp
这是一个相关的问题:
【问题讨论】:
只是想知道是否有一种机制可以“宣传”我可以在 Accept-Language 中接受哪些值并返回正确的 Content-Language。
有“Link: ; rel=alternate hreflang=pt-br”,但这迫使我创建一个新资源(而不是在不同的语言下公开相同的资源)。
http://www.w3schools.com/tags/att_link_hreflang.asp
这是一个相关的问题:
【问题讨论】:
理想情况下,这应该在 HTTP 标头中完成 - 正如您所猜测的那样,HTML 标记并不是真正适合这样做的地方。
About the Content-Type header, from the IETF:
Content-Language 标头可以用逗号列出多种语言- 分隔列表。
因此,Content-Language 标头的目的是列出当前资源的所有可能语言,而不仅仅是您所服务页面的语言。
要宣传您接受的语言,请将它们全部添加到您的 Content-Language 标头中。
An official European Commission document (in a few of its official
languages):
Content-type: multipart/alternative
Content-Language: da, de, el, en, fr, it
【讨论】:
Accept-Language 标头,然后以客户端接受的一种语言返回文档。与Content-Language 一样,Accept-Language 也是一个完整列表,因此客户端将向您发送用户能够阅读的所有语言,您可以选择其中任何一种进行回复。
您可以使用 HTML 标记来实现此效果,该标记使用http-equiv 表示您想要的 HTTP 标头。
<meta http-equiv="accept-language" content="de, en">
<meta http-equiv="content-language" content="de">
但是,作为mentioned in this question,这确实是“穷人”的做法,您应该提供适当的 HTTP 标头:
Content-Language: de
Accept-Language: en, de
如果你只是想表达网页是什么语言,那么你也可以使用<html lang="de">。
编辑: 如果您希望在标题中正确表达这一点,则可以通过在文件顶部放置 PHP 代码 sn-p 来实现:
header('Content-Language: de');
header('Accept-Language: de, en');
【讨论】: