如何保持先前选定的语言(I使用php阵列和?lang=)之后点击的链接?
题
我有下列代码:
<html>
<head>
<title><?php echo $GLOBALS['L']['title']; ?></title>
</head>
<body>
<ul id="language-selection">
<li><a href="index.php?lang=english">English</a></li>
<li><a href="index.php?lang=french">French</a></li>
</ul>
<h1><?php echo $GLOBALS['L']['h1']; ?></h1>
<p><?php echo $GLOBALS['L']['p1']; ?></p>
<ul id="language-selection">
<li><a href="about.php">About Page</a></li>
<li><a href="contact.php">Contact Page</a></li>
</ul>
</body>
</html>
set_locale.php:
<?php
/*
* File: set_locale.php
*/
// Get the language from the query string, or set a default.
($language = @$_GET['lang']) or $language = 'english';
// Set up a list of possible values, and make sure the
// selected language is valid.
$allowed_locales = array('english', 'french');
if(!in_array($language, $allowed_locales))
$language = 'english'; // Set default if it is invalid.
// Inlclude the selected language
include "locale/$language.php";
// Make it global, so it is accessible everywhere in the code.
$GLOBALS['L'] = $locale;
?>
它工作好吧,但是如果我点击 about.php
和 contact.php
链接。页面返回到默认的语言:英文。我能做些什么,以便当我击 about.php
或 contact.php
结束了这样的:
about.php?lang=english
contact.php?lang=french
别换句话说,我想URL要记住的 ?lang=
结束。什么是最好的方式这样做?
解决方案
只有追加到每个出的链接:
<li><a href="about.php<?php echo "?lang=".$GLOBALS['L']; ?>">About Page</a></li>
一个很好的方式处理多语文网站中,一般是,如果你的服务器支持它, mod_rewrite
改写的"虚拟"的网址喜欢
www.example.com/en/about.php
和映射它们内部
www.example.com/about.php?lang=en
我没有mod_rewrite大师,但这个工作对我来说:
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_URI} ^/([a-z][a-z])(/.*)?$
RewriteRule (.*) %2?lang=%1&%{QUERY_STRING}
这地图
www.domain.com/en/about.php
要/about.php?lang=en
www.domain.com/fr/about.php
要/about.php?lang=fr
www.domain.com/es/
要/?lang=es
=通常index.php
这地图的任何发生的两封信,小写的 www.example.com/xy
, 所以你不应该有任何目录的用两个字母在根一级的工作。
其他提示
您可能想看看会议和存储持久选项有。它使人们能够复制链接给他人后,他们迫使它们的设置,如果你愿意的话这样的优势。
您可以使用 output_add_rewrite_var
到参数添加到的URL。你输出的内容之前只需拨打以下内容:
output_add_rewrite_var('lang', $language);
不隶属于 StackOverflow