Es gibt freie Steuerelemente von Drittanbietern, die dies tun, indem sie eine ISO-Standard-XML-Datei verwenden (Ich habe ein Datenbank-Dienstprogramm geschrieben, um & Export in dieses Format zu erstellen).
Die anderen Antworten sind sehr manuell und erfordern mehr Arbeit als die Verwendung dieser Kontrolle.
Die Kontrolle, die Sie brauchen, um zu finden ist: http://ezcomponents.org/docs/api/trunk/introduction_Translation.html
Nachdem der eZ Components werden auf dem Server installiert, müssen Sie die Basissteuerung für alle eZ Components
require_once "ezc/Base/base.php";
/**
* __autoload()
*
* @param mixed $className
* @return
*/
function __autoload($className)
{
ezcBase::autoload($className);
}
Dann müssen Sie erforderlich abrufen definieren, wo die XML-Sprachdatei befindet (siehe: ISO639-2, ISO3166, und Qt Linguist)
$config["language_code"] = "en_us"; // as defined by ISO639-2 and ISO3166
// grab our translation XML file
$backend = new ezcTranslationTsBackend(dirname(__FILE__). '/translations');
$backend -> setOptions(array('format' => $config["language_code"].'.xml'));
// create a manager object
$manager = new ezcTranslationManager($backend);
$language = $manager->getContext($config["language_code"], 'strings');
n ow Sie können Strings greifen einfach durch Aufruf der folgenden Funktion
getTranslation("SOME_KEY");
und Phrasen abrufen, die Parameter, die die folgende Syntax verwenden, beachten Sie bitte die Beziehung zwischen [STICHWORT] und „Schlüsselwort“ ist beabsichtigt und empfohlen
getTranslation("FIND_[KEYWORD]_BY_[TYPE]", array("keyword" => $keyword, "type" => $type));
ein Beispiel für eine TS XML-Datei wird
<!DOCTYPE TS>
<TS>
<context>
<name>strings</name>
<message>
<source>ZONE_TYPE</source>
<translation>Zone Type</translation>
</message>
<message>
<source>ZONE_TOOL</source>
<translation>Zone Tool</translation>
</message>
<message>
<source>HELLO_[NAME]_WELCOME_TO</source>
<translation>Hello, %name, welcome to Webfood Admin</translation>
</message>
<message>
<source>YOUR_ADMINISTRATIVE_SESSION_HAS</source>
<translation>Your administrative session has timed out. Please login again.</translation>
</message>
</context>
</TS>
ich würde einfach eine Einstellung in Ihren PHP-Sitzungen, dass der LAN hat (sollte en_US.xml genannt werden), speichert verwendet werden, fragen Sie den Benutzer vor oder nach der Anmeldung in der gewünschten Sprache und speichern Sie ihn in der Benutzertabelle, wenn Sie über Konten verfügen. Es gibt keinen Grund, weiterhin einen URL-Wert zu senden, das ist eine schlechte Idee.
Ich empfehle diese Methode auch. – jerebear