Скрытие параметра gettext (locale = en) от URL - PullRequest
0 голосов
/ 11 ноября 2011

Я использую 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>

Я хотел, чтобы URL-адрес был чистым, и чтобы параметр ?lang=en отсутствовал в URL-адресе. Таким образом, когда пользователь нажимает на лин на products.php, он останется как есть и не будет отображаться products.php?locale=ru Как я могу это сделать?

1 Ответ

0 голосов
/ 11 ноября 2011

Если вы хотите

  • Пользователь сможет свободно выбирать язык независимо от языка браузера

  • Пользователь сможетчтобы разные вкладки открывались с разными языковыми версиями вашего сайта

, тогда невозможно разместить информацию о языке где-то в URL.Либо используя параметр GET, как вы, либо маскируя его с помощью mod_rewrite во что-то вроде

www.domain.com/en/pagename.php

, если вас устраивает проблема с вкладками, затем установите язык в файле cookie.На самом деле код, который вы показываете выше, уже делает это.Параметр ?lang=xx необходим только при фактическом переключении языка.

...