正确使用PHP:header('Content-language:...');

时间:2011-03-24 18:49:37

标签: php header multilingual

除了设置页面语言的明显方式之外:

<meta name="language" content="de"><html lang="de">

我最近发现了一个典型的奇怪方面,只有PHP的编程语言才能使开发人员将语言设置在PHP文件的最顶端:

<?php  

 /* Set and pre-define the language in the header;
  * Eliminating guesswork for the Header language.
  */

  header('Content-language: de');

?>

PHP程序员经常出现两个问题:

主要问题:什么时候应该在PHP标头中设置语言?

SideQ1:大网站不打扰使用它:为什么不呢?

SideQ2:搜索引擎会听这个吗?如果有,这个PHP标题有什么含义?

2 个答案:

答案 0 :(得分:5)

您可以将此标题用于提供信息。但它主要用于content negotiation

每个http URL都可以透明地引用不同的资源。根据客户端Accept:和Accept-Language:标头,服务器可以发送资源的特定变体。这就是建议包含这些描述性标题的时候。

如果以这种方式使用它,它将伴随Vary: *Vary: Accept-Language标题。否则它真的只是信息性的。 (它从未被广泛使用过。)

答案 1 :(得分:5)

更短的回答:不要打扰,因为浏览器通常会忽略它。

更长的答案:W3C建议在HTTP中的lang标题中使用HTML中的Content-Language属性:

http://www.w3.org/International/geo/html-tech/tech-lang.html#ri20040808.110827800

理由:用户代理倾向于忽略标头或不一致地实现它。

另外,lang属性更灵活。如果您有一种语言和另一种语言的某些内容,您可以精确地指定,如下:

<body> 
 <div lang="en" xml:lang="en">
  <h1>Welcome!</h1> 
  <p>Lots of text in English...</p>
 </div>
 <div lang="fr" xml:lang="fr">
  <h1>Bienvenue !</h1> 
  <p>Beaucoup de texte en français...</p>
 </div>
</body> 

取自:http://www.w3.org/International/geo/html-tech/tech-lang.html#ri20040728.121403792

我不了解搜索引擎。