从URL隐藏gettext参数(locale = en)

时间:2011-11-10 21:32:31

标签: php session cookies gettext

我使用PHP的gettext扩展将我的网站翻译成不同的语言。我有三个链接可以根据URL更改语言:

$locale = false;
if (isSet($_GET["locale"])){
  $locale = $_GET["locale"];
  setcookie("locale", $locale, time()+60*60*24*30, "/");
}
if (!$locale && isSet($_COOKIE["locale"])){
  $locale = $_COOKIE["locale"];
}
putenv("LC_ALL=$locale");
putenv("LANGUAGE=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
bind_textdomain_codeset("messages", "UTF-8");
textdomain("messages");

与     <a href="?locale=en">English</a>和     <a href="?locale=ru">Russian</a>

我希望保持网址清洁,并在网址外加上?lang=en参数。因此,当用户点击lin products.php时,它会保持原样并且不显示products.php?locale=ru我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果你想要

  • 无论浏览器语言如何,用户都可以自由选择语言

  • 用户可以使用不同语言版本的网站打开不同的标签

然后无法将语言信息放在URL中的某个位置。要么像你一样使用GET参数,要么使用mod_rewrite将其掩盖为像

这样的东西
www.domain.com/en/pagename.php

如果你对标签问题没问题,那么在cookie中设置语言。实际上,您在上面显示的代码已经实现了这一点。只有在实际切换语言时才需要?lang=xx参数。

相关问题