Wie die vorher ausgewählte Sprache zu erhalten (Ich habe PHP Arrays und? Lang =) nach Klicken auf einen Link?
Frage
Ich habe den folgenden Code:
<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;
?>
Es funktioniert OK, aber wenn ich den about.php
und contact.php
Link klicken.
Die Seite kehrt zur Standardsprache: Englisch.
Was kann ich tun, damit, wenn ich about.php
oder contact.php
endet wie folgt klicken:
about.php?lang=english
contact.php?lang=french
bzw. mit anderen Worten möchte ich die URL der ?lang=
Endung erinnern.
Was ist der beste Weg, es zu tun?
Lösung
Sie werden es zu jedem abgehenden Link anhängen haben:
<li><a href="about.php<?php echo "?lang=".$GLOBALS['L']; ?>">About Page</a></li>
eine nette Art und Weise des Umgangs mit mehrsprachigen Websites in der Regel, wenn Ihr Server unterstützt, mod_rewrite
„virtuelle“ URLs zu umschreiben wie
www.example.com/en/about.php
und ordnet sie intern
www.example.com/about.php?lang=en
Es ist ein Leitfaden für Anfänger an, dass hier und offizielle Dokumentation hier .
Ich bin kein mod_rewrite Guru, aber das funktioniert für mich:
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_URI} ^/([a-z][a-z])(/.*)?$
RewriteRule (.*) %2?lang=%1&%{QUERY_STRING}
es Karten
-
www.domain.com/en/about.php
zu/about.php?lang=en
-
www.domain.com/fr/about.php
zu/about.php?lang=fr
-
www.domain.com/es/
zu/?lang=es
= in der Regel index.php
Es ordnet alle Vorkommen einen aus zwei Buchstaben, Klein www.example.com/xy
, so dass Sie keine Verzeichnisse mit zwei Buchstaben auf dem Root-Ebene an der Arbeit mit diesem.
Andere Tipps
Sie werden über das Speichern von Informationen in Sitzungen lernen wollen.
http://learnitscreencasts.net/2009/ 18.07 / Anfänger / Einsteiger-Guide-php-Sessions /
Sie können schauen wollen Sitzungen und speichern Sie die persistent Optionen gibt. Es hat den Vorteil, dass die Menschen Links zu anderen kopieren, ohne ihre Einstellungen auf sie zu zwingen, wenn Sie so so wünschen.
könnten Sie verwenden den output_add_rewrite_var
dieses Argument auf die URLs hinzuzufügen. Rufen Sie einfach die folgende, bevor Sie Ausgang Ihr Inhalt:
output_add_rewrite_var('lang', $language);