我有以下代码:
<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=的结尾。最好的方法是什么?
发布于 2010-02-20 10:35:43
您必须将其附加到每个传出链接:
<li><a href="about.php<?php echo "?lang=".$GLOBALS['L']; ?>">About Page</a></li>一般来说,处理多语言站点的一个很好的方法是,如果您的服务器支持它,mod_rewrite可以重写“虚拟”URLs,如
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}it地图
www.domain.com/en/about.php到/about.php?lang=enwww.domain.com/fr/about.php到/about.php?lang=frwww.domain.com/es/ to /?lang=es =通常为index.php它映射任何两个字母的小写www.example.com/xy的出现,因此您不应该在根级别上有任何带有两个字母的目录来处理这个问题。
发布于 2010-02-20 10:35:37
您将希望了解如何在会话中存储信息。
http://learnitscreencasts.net/2009/07/18/beginners/beginners-guide-php-sessions/
发布于 2010-02-20 10:35:50
您可能需要查看会话并将持久选项存储在那里。它有一个优点,允许人们复制链接到其他人,而不强迫他们的设置,如果你这样想。
https://stackoverflow.com/questions/2301850
复制相似问题