如何保持先前选定的语言(I使用php阵列和?lang=)之后点击的链接?

StackOverflow https://stackoverflow.com/questions/2301850

  •  21-09-2019
  •  | 
  •  

我有下列代码:

  <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.phpcontact.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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top