首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在单击链接后维护以前选择的语言(我使用了php数组和?lang=)?

如何在单击链接后维护以前选择的语言(我使用了php数组和?lang=)?
EN

Stack Overflow用户
提问于 2010-02-20 10:31:20
回答 4查看 339关注 0票数 0

我有以下代码:

代码语言:javascript
复制
  <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:

代码语言:javascript
复制
<?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.phpcontact.php时,我能做些什么呢?

代码语言:javascript
复制
about.php?lang=english
contact.php?lang=french

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-20 10:35:43

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

代码语言:javascript
复制
 <li><a href="about.php<?php echo "?lang=".$GLOBALS['L']; ?>">About Page</a></li>

一般来说,处理多语言站点的一个很好的方法是,如果您的服务器支持它,mod_rewrite可以重写“虚拟”URLs,如

代码语言:javascript
复制
www.example.com/en/about.php

并在内部将它们映射到

代码语言:javascript
复制
www.example.com/about.php?lang=en

有一个关于这里和官方文档这里的初学者指南。

我不是mod_rewrite大师,但这对我有用:

代码语言:javascript
复制
 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=en
  • www.domain.com/fr/about.php/about.php?lang=fr
  • www.domain.com/es/ to /?lang=es =通常为index.php

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

票数 3
EN

Stack Overflow用户

发布于 2010-02-20 10:35:37

您将希望了解如何在会话中存储信息。

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

票数 0
EN

Stack Overflow用户

发布于 2010-02-20 10:35:50

您可能需要查看会话并将持久选项存储在那里。它有一个优点,允许人们复制链接到其他人,而不强迫他们的设置,如果你这样想。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2301850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档