【发布时间】:2011-10-17 08:26:02
【问题描述】:
我正在尝试设置一个简单的语言切换。我以为我会使用 PHP cookie,但它们的行为不符合预期。
我已经阅读了一些 cookie 教程,并在 StackOverflow 上查看了一些类似的示例,但我一定遗漏了一些东西,因为它无法使其正常工作。
我通过将语言作为 URL 变量(lang=en 或 lang=ru)传递来设置语言。这一切似乎都很好。但是,我目前设置cookie的代码似乎落后了一步,所以最初它没有任何价值(我希望它默认为'en'),然后如果用户点击'ENG'按钮它仍然没有值,然后如果用户单击俄语,则该值显示为“en”,然后如果我再次单击“ENG”按钮,则该值显示为“ru”。
这是我拼凑的代码:
if( $_GET['lang'] ) {
$lang = (string)$_GET['lang'];
setcookie( 'lang', $lang, time() + 60*60*24*30 );
} elseif( !isset($_COOKIE['lang']) ) {
$lang = 'en';
} else {
$lang = $_COOKIE['lang'];
}
一旦我完成了这项工作,我打算使用 cookie 的值通过一些条件 PHP 来显示英语或俄语菜单。
谢谢。
【问题讨论】:
-
使用 cookie 来确定语言不是一个好主意。单独的 URL 是更好的选择,人们可以直接链接到他们在放置链接的页面上使用的相同语言的内容,并且搜索引擎会看到两个单独的页面。
-
@Quentin 说得很好。但是,我的预算很紧,所以需要一个快速简单的解决方案。基本上有(或将会有)两个主菜单,一个是英文的,一个是俄文的。站点编辑器将以两种语言创建文章,然后将它们分配到相关菜单。根据用户的选择和使用条件语句,只会显示这些菜单之一。这是我能想到的最简单的方法......
-
@Quentin 如果创建了单独的 url,网站应该如何记住法语页面也只能链接到网站上的另一个法语页面?
-
@Quentin,因为在这个模型上,所有语言的文本应该是相同的,所以链接只指向内容,可以通过多种不同的方式添加语言。