在URL中编写语言 格式为:(lang).website.com(如维基百科)


Writing Languages in the URLs In the format: (lang).website.com (like wikipedia)

我虽然维基百科使用了一种很好的方法来编写其URL中的语言:

http://en.wikipedia.org/wiki/Main_Page
http://de.wikipedia.org/wiki/Main_Page
http://fr.wikipedia.org/wiki/Main_Page

(语言在网站名称之前)

有没有办法像这样编写语言,或者它非常复杂,就像每种语言的页面一样?我真的很想把它作为一个参数传递,然后我可以用来设置内容的语言。

我一直在研究一些httpd的东西,其中包括像维基百科一样的AddLanguage,但我不明白它是如何工作的或它的作用。

我对httpd和PHP不是很有经验,所以可能有更好的方法。

我将不胜感激任何帮助:)

我无法验证维基百科是否以这种方式处理它(我怀疑它在那里要复杂得多),但对于一个简单的网站,您可以使用 DNS 中的通配符域、简单的 URL 重写以及gettext()或其他国际化方法来实现这一点。

您的通配符域将注册为 *.example.com 。 使用支持 URL 重写的 Web 服务器,匹配第一个子域组件,并将其作为查询字符串参数传递给 PHP。下面是一个使用 Apache mod_rewrite 的示例:

# Example apache rewrite subdomain to lang parameter:
RewriteEngine On
# Capture the language subdomain in %1
RewriteCond %{HTTP_HOST} ^([a-z]+)'.example'.com$ [NC]
# And pass the language into PHP as the lang= querystring param
RewriteRule ^(.*)$ index.php?lang=%1

在 PHP 中,检索语言作为$_GET['lang'],并使用它来切换国际化方案中的语言。

在像维基百科这样的情况下,他们可能会在他们的数据库中存储多种语言翻译的同一篇文章。 如果您只是翻译 Web 应用程序上的字符串,则可以使用 gettext()intl 等国际化函数完成

如何处理内容的国际化完全取决于您。 这里重要的部分是通配符子域可用于在语言之间切换。