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.phpと。contact.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

これは、2文字の小文字の出現をマップするwww.example.com/xyため、これを処理するためにルートレベルに2文字のディレクトリを設定しないでください。

于 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 に答える