Mit der Entwicklung der Globalisierung müssen immer mehr Websites und Anwendungen mehrsprachige Unterstützung bieten. Für Entwickler, die das ThinkPHP6-Framework verwenden, ist die Implementierung mehrsprachiger Übersetzungsvorgänge eine wichtige Anforderung. In diesem Artikel wird erläutert, wie Sie ThinkPHP6 für mehrsprachige Übersetzungsvorgänge verwenden.
In ThinkPHP6 ist ein Sprachpaket ein Array mit Schlüssel-Wert-Paaren. Dies kann in verschiedenen Unterverzeichnissen unter dem Verzeichnis app/lang/ gespeichert werden. Zum Beispiel:
/app/lang/zh-cn/ /app/lang/en-us/
Unter diesen sind zh-cn und en-us die Namen der Sprachpakete, und die Übersetzungen dieser Sprachversion sollten in den entsprechenden Verzeichnissen gespeichert werden. Im Sprachpaketverzeichnis befindet sich normalerweise eine app.php- oder validation.php-Datei, die der Übersetzung der Anwendung bzw. der Formularvalidierung entspricht.
Zum Beispiel:
/app/lang/zh-cn/app.php /app/lang/en-us/app.php
In diesen beiden Dateien werden einige Schlüssel-Wert-Paare definiert, um Text in der Anwendung zu übersetzen. Eine einfache app.php-Datei könnte beispielsweise so aussehen:
<?php return [ 'welcome' => '欢迎', 'login' => '登录', 'logout' => '退出登录', ];
Hier werden drei Schlüssel-Wert-Paare definiert, die zur Übersetzung der Texte „Willkommen“, „Anmelden“ und „Abmelden“ in der Anwendung verwendet werden. Für die englische Version können Sie eine en-us/app.php-Datei erstellen und die obige chinesische Übersetzung durch die englische Übersetzung ersetzen:
<?php return [ 'welcome' => 'Welcome', 'login' => 'Log in', 'logout' => 'Log out', ];
In der Anwendung ist es normalerweise notwendig, das festzulegen Sprache entsprechend den Spracheinstellungen des Benutzers. Lesen Sie das entsprechende Sprachpaket. Sie können den folgenden Code verwenden, um die aktuelle Spracheinstellung abzurufen:
$lang = $request->lang();
Hier wird die lang()-Methode des $request-Objekts verwendet, die den lang-Parameter im Anforderungsobjekt abrufen kann. Normalerweise speichert dieser Parameter die Spracheinstellung des Benutzers, zum Beispiel:
http://example.com/?lang=zh-cn http://example.com/?lang=en-us
Wenn der lang-Parameter hier nicht angegeben ist, kann die Spracheinstellung des Benutzers durch Lesen des Accept-Language-Headers des Browsers erraten werden.
Als nächstes können Sie die Funktion lang() verwenden, um das aktuelle Sprachpaket zu lesen, zum Beispiel:
$lang = $request->lang(); app()->setLocale($lang); $translations = lang('app');
Die Funktion app() wird hier verwendet, um das Anwendungsobjekt abzurufen und dann das aktuelle Gebietsschema über setLocale() festzulegen Methode. Verwenden Sie abschließend die Funktion lang(), um das Sprachpaket zu lesen, das ein Array zurückgibt, das alle Übersetzungen im aktuellen Gebietsschema enthält.
Mit einem Sprachpaket und einem Übersetzungsarray können Sie Übersetzungen in Ihrer Anwendung verwenden. Sie können beispielsweise Tags in Vorlagen verwenden, um Übersetzungen zu erhalten:
<p>{{ __('app.welcome') }}</p>
Hier wird die __-Funktion verwendet, um Übersetzungen zu erhalten. Die Funktion __ analysiert die eingehende Zeichenfolge gemäß der Punktmethode in ein Array und findet dann die entsprechende Übersetzung aus dem Übersetzungsarray.
Wenn keine entsprechende Übersetzung gefunden wird, gibt die Funktion __ die Originalzeichenfolge zurück. Daher können Sie die englische Zeichenfolge als Standardwert an die Funktion __ übergeben, zum Beispiel:
<p>{{ __('app.welcome', ['default' => 'Welcome']) }}</p>
Hier wird ein Standardparameter angegeben, dessen Wert „Willkommen“ ist. Wenn die dem „Welcome“-Schlüssel entsprechende Übersetzung nicht im Übersetzungsarray gefunden wird, gibt die Funktion __ diesen Standardwert zurück.
Manchmal müssen Sie einige benutzerdefinierte Übersetzungen hinzufügen, z. B. Fehlermeldungen zur Formularvalidierung. Sie können den folgenden Code verwenden, um benutzerdefinierte Übersetzungen hinzuzufügen:
use thinkacadeLang; Lang::load([ 'validation.custom' => [ 'email' => [ 'required' => '请填写邮箱地址', 'email' => '请输入有效的邮箱地址', ], ], ]);
Die Methode „load()“ der Lang-Klasse wird hier verwendet, um benutzerdefinierte Übersetzungen hinzuzufügen. Die Methode „load()“ akzeptiert ein Array als Parameter, das entsprechend der Struktur des Sprachpakets organisiert ist und zum Hinzufügen benutzerdefinierter Übersetzungen verwendet wird.
Im obigen Beispiel wird ein validation.custom-Sprachpaket hinzugefügt, das eine benutzerdefinierte Übersetzung für den Schlüssel „E-Mail“ enthält. Diese Übersetzungen überschreiben die Standardübersetzungen des Systems.
Die Verwendung von ThinkPHP6 für mehrsprachige Übersetzungsvorgänge ist sehr praktisch. Bereiten Sie einfach das Sprachpaket vor, lesen Sie dann das Sprachpaket und verwenden Sie die Übersetzung. Wenn Sie benutzerdefinierte Übersetzungen hinzufügen müssen, ist das ganz einfach. Die Unterstützung mehrerer Sprachen verbessert nicht nur die Benutzerfreundlichkeit von Anwendungen, sondern erfüllt auch die Bedürfnisse der Benutzer besser und erhöht das Benutzererlebnis.
Das obige ist der detaillierte Inhalt vonWie verwende ich ThinkPHP6 für mehrsprachige Übersetzungsvorgänge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!