MehrsprachigDer Schwerpunkt der Website-Entwicklung liegt auf der Lösung der Probleme zwischen den Sprachen.
Wie kann man dieses Problem lösen? Es kann in drei Schritte unterteilt werden:
1. Mehrsprachige Seite
2. Mehrsprachige Datenbank
3. Einheitliche Benutzerzugriffssprache
1. Mehrsprachige Seite
Erforderliche Fragen, die berücksichtigt werden müssen:
A. Wenn sich Benutzer anmelden, werden Zeichen automatisch erkannt und verschiedene Sprachpakete aufgerufen?
B. Wenn der Benutzer zwischen verschiedenen Sprachen wechselt, werden dann unterschiedliche Sprachpakete aufgerufen?
C. Wie ist die Verzeichnisstruktur nach dem Hinzufügen mehrerer Sprachen?
Mehrsprachigkeit der Seite bedeutet Mehrsprachigkeit des Erscheinungsbildes Hier können statische Sprachpakete verwendet werden.
Das Sprachverzeichnis sollte während des Entwurfs einbezogen werden, mit separaten Unterverzeichnissen für verschiedene Sprachen.
Zum Beispiel Englisch/en, vereinfachtes Chinesisch/gb, traditionelles Chinesisch/b5 (kann auf andere Sprachen erweitert werden)
Jedes Verzeichnis enthält die Sprachversion jeder Seite. Bei der Auswahl einer Sprachversion können Sie das Sprachpaket der entsprechenden Version aufrufen.
Das Folgende ist ein Beispielcode
class language { static $lanObject; public $type; // unit , dashboard , menu ,other public $lan; // language private $special; // The common in the file private function construct() { if( isset($_GET['hl']) || isset($_POST['hl']) ) { switch( isset($_GET['hl'])?$_GET['hl']:$_POST['hl'] ) { case 'en': $this->lan = 'en'; case 'zh': $this->lan = 'zh'; case 'all': $this->lan = 'all'; default: $this->error(); } } else $this->lan = isset($_COOKIE['hl']) ? $_COOKIE['hl']:'zh'; } public static function getObject() { if( !(self::$lanObject instanceof self) ) self::$lanObject = new language(); return self::$lanObject; } public function lto($key) //$key is English { if( $this->lan !== 'zh' ) return $key; if( empty($this->special) ) // if the $special is null { if( isset($this->type) ) $this->special = file_get_contents($this->type.'.txt'); else return $key; } echo $this->search($key); } private function search($searchTozh) // PHP String { $key_start = strpos($this->special,$searchTozh); $key_end = strpos($this->special,' ',$key_start); $len_str = strlen($searchTozh); $for_sub = $key_start + $len_str + 1; return substr($this->special, $for_sub, $key_end - $for_sub); } }
strpos(); soll die Position finden, an der die -Zeichenfolge zum ersten Mal erscheint, z. B. „wo“ in „Hallo“. world', Der Rückgabewert ist 6
substr(); ist ein Teil der abgefangenen Zeichenfolge
Als nächstes kommt der Code, der während des Debuggens hinzugefügt wurde
$la = language::getObject(); $la->type = 'unit'; $la->lto('min'); echo '<br/>'; $la->lto('hello');
lto (this muss ins Englische übersetzt werden); Das Inhaltsformat der
unit.txt-Datei ist
hello-hello min-small minute-minutes-minutes
$special ist global konzipiert und ist es auch erwartet, dass lto( mehr als einmal aufgerufen wird), wäre es eine Leistungsverschwendung, wenn Sie die Datei wiederholt laden würden.
$type ist so konzipiert, dass es öffentlich ist, um die Effizienz geladener Dateien zu berücksichtigen. Manchmal ist es nicht erforderlich, Dateien von vor ein paar Tagen anzuzeigen, daher ist es beispielsweise besser, sie nach Verwendungstyp zu trennen menu.txt ist speziell für die Menüübersetzung zuständig. Es gibt auch übersetzte TXT-Texte speziell für Vorgänge wie Löschen und Sammeln. Auf diese Weise kann der zu ladende Text frei eingestellt werden
Auch die Sprache ist frei einstellbar.
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des PHP-Kurses zur Konvertierung der chinesischen und englischen Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!