2011-08-19 58 views
2

我有一个网站,我翻译成不同的语言。我将内容翻译并存储在数据库中。我还在php文件中写入了不同的机制,这些机制将根据我在代码中设置较高的全局定义来显示语言。我对这一切感到满意。我的问题是我如何控制这个全局定义?如何处理网站上的多种语言

我目前有一个javascript开关,设置一个cookie,然后重新加载当前页面。每个后续页面都会读取该cookie来设置全局定义。它工作得很好,但我遇到了两个大问题。 (1)我不能只是不能有一个网址发送给有语言的人(我可以做一些像domain.com/forwarder.php?lan=spanish & gotopage = page.php这将设置一个曲奇,然后转发,但这很丑陋)。和(2),搜索引擎不能查看多种语言,因为他们没有真正使用Cookie和JavaScript。

那么我该如何解决这个问题呢?有没有人有这方面的经验?你能分享你的经验吗?

我只是倾向于使用网址和丢弃cookie;这在我见过的各种国际网站中似乎很受欢迎。所以我猜这个网址是:

domain.com/page  (for english, equivalent to domain.com/en/page) 
domain.com/es/page (for spanish) 
domain.com/fr/page (for french) 
etc ...... 

这是个好主意吗?我将不得不通过我的代码,并将所有的href与语言代码相挂钩,这可能是一种痛苦。

那么有没有人对此有任何评论?这是一个好计划吗?我忽略了什么?

+0

如果您好奇,可以通过http://archive.cyark.org/点击语言切换顶部并选择西班牙语 – Landon

回答

1

已经很长时间了,但不能使用$ _SERVER [“HTTP_ACCEPT_LANGUAGE”]并自动设置。在第一次写入cookie之前,请在屏幕上以英文或其他语言留言,询问是否使用可用语言的语言是否正确?选择后,将其存储为默认的网站语言。

您可以在全局资源文件中使用字符串常量。只有一个网站根据当前语言调用这些字符串常量。

+0

我不知道$ _SERVER变量的属性。这太有趣了。所以也许我甚至不需要切换?我可以看看并使用它。但在我看来,这与我目前拥有的我不喜欢的方法相当。无论cookie是与请求一起发送的,还是它是$ _SERVER变量的一部分,它仍然依赖于来自浏览器的请求。如果我想用西班牙语发送网址给某人,这并不能帮助我。它有助于谷歌爬行吗? Woudl google会抓取它两次,使用不同的HTTP_ACCEPT_LANGUAGE值并保存结果? – Landon

+0

使用查询字符串以特定语言发送URL www.whateversite.com?lang=en_gb或lang = span等我不确定,但我相信谷歌有服务器抓取不同的语言设置为默认。 – DFTR