0

我有以下代码:

  <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.phpcontact.php链接。页面返回默认语言:英语。about.php当我点击或contact.php结束时,我该怎么做:

about.php?lang=english
contact.php?lang=french

分别,换句话说,我希望 URL 记住?lang=结尾。最好的方法是什么?

4

4 回答 4

3

您必须将其附加到每个传出链接:

 <li><a href="about.php<?php echo "?lang=".$GLOBALS['L']; ?>">About Page</a></li>

一般来说,处理多语言网站的一种好方法是,如果您的服务器支持它,mod_rewrite则重写“虚拟”URL,例如

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/to /?lang=es= 通常是 index.php

它映射任何出现的两个字母小写www.example.com/xy,因此您不应该在根级别上有任何带有两个字母的目录来使用它。

于 2010-02-20T10:35:43.220 回答
0

您将想要了解如何在会话中存储信息。

http://learnitscreencasts.net/2009/07/18/beginners/beginners-guide-php-sessions/

于 2010-02-20T10:35:37.510 回答
0

您可能想要查看会话并将持久选项存储在那里。如果您愿意,它的优点是允许人们将链接复制到其他人,而无需将其设置强加于他们。

于 2010-02-20T10:35:50.737 回答
0

您可以使用 将该output_add_rewrite_var参数添加到 URL。只需在输出内容之前调用以下命令:

output_add_rewrite_var('lang', $language);
于 2010-02-20T10:35:59.177 回答