Dieses Tutorial zeigt, wie man einer PHP-Anwendung mit Twig und GetText eine Mehrsprach-Unterstützung hinzufügt. Es ist wesentlich schneller als Userland -Lösungen wie die Übersetzungskomponente von Symfony. Wir werden eine bereits bestehende englische Anwendung (NOFW) ändern, um dies zu veranschaulichen.
Schlüsselvorteile:
- Effizienz: Die native Implementierung von GetText bietet eine überlegene Leistung im Vergleich zu Alternativen von Userland.
- Einfachheit: Der Prozess der Addition der Internationalisierung zu einer vorhandenen Anwendung ist überraschend unkompliziert.
- umfassende Anleitung: Dieses Tutorial umfasst die Umgebungs -Setup, die String -Extraktion (mit
xgettext
),.po
und.mo
Dateigenerierung, Zweigintegration über die Erweiterungi18n
und hilfreiche Dienstprogramme Skripte .
Setup und Grundlagen:
Wir werden das Homestead verbessert (vorausgesetzt, GetText ist bereits installiert; Anweisungen zur manuellen Installation werden später angegeben). Da NofW Twig verwendet, ist die Erweiterung i18n
erforderlich:
git clone https://github.com/swader/nofw cd nofw git checkout tags/2.93 -b 2.93 composer require twig/extensions
(Hinweis: Dies kloniert eine ältere NOFW-Version ohne integrierte Internationalisierung für Tutorialzwecke.)
Folgen Sie dem NOFW Readme, um die Datenbank zu konfigurieren. Die Anwendung sollte jetzt ausgeführt werden.
getText verwendet gettext("string")
oder sein Alias _("string")
, um übersetzbare Zeichenfolgen zu markieren. Wenn eine Übersetzung nicht gefunden wird, wird die ursprüngliche Zeichenfolge (der Platzhalter) zurückgegeben.
Testen wir dies mit einer einfachen PHP -Datei (außerhalb von Twig), um die GetText -Funktionalität zu überprüfen. Erstellen Sie i18n.php
:
<?php $language = "en_US.UTF-8"; putenv("LANGUAGE=" . $language); setlocale(LC_ALL, $language); $domain = "messages"; bindtextdomain($domain, "Locale"); bind_textdomain_codeset($domain, 'UTF-8'); textdomain($domain); echo _("HELLO_WORLD");
Erstellen Sie die Verzeichnisstruktur:
Der Code legt die Sprache, das Gebietsschema und die Domäne für GetText fest. Ausführen dieses Ausführens wird "Hello_world" wiedergeben, weil die Sprachdatei fehlt.
String -Extraktion:
Verwenden Sie xgettext
, um Zeichenfolgen aus Ihren Dateien zu extrahieren:
xgettext --from-code=UTF-8 -o Locale/messages.pot public/i18n.php
Dies erstellt messages.pot
(tragbare Objektvorlage). Generieren Sie eine englische .po
Datei:
msginit --locale=en_US --output-file=Locale/en_US/LC_MESSAGES/messages.po --input=Locale/messages.pot
bearbeiten messages.po
, übersetzen "hello_world" (z. B. in "Howdy"). Kompilieren Sie zu .mo
:
msgfmt -c -o Locale/en_US/LC_MESSAGES/messages.mo Locale/en_US/LC_MESSAGES/messages.po
Hinzufügen einer neuen Sprache (z. B. Kroatischer):
- Installieren Sie das Gebietsschema:
sudo locale-gen hr_HR hr_HR.UTF-8; sudo update-locale; sudo dpkg-reconfigure locales
- generieren Sie die
.po
Datei:mkdir -p Locale/hr_HR/LC_MESSAGES; msginit --locale=hr_HR --output-file=Locale/hr_HR/LC_MESSAGES/messages.po --input=Locale/messages.pot
- Übersetzen Sie "Hello_world" in "zdravo" in
messages.po
. - zu
.mo
:msgfmt -c -o Locale/hr_HR/LC_MESSAGES/messages.mo Locale/hr_HR/LC_MESSAGES/messages.po
kompilieren
- ändern das Gebietsschema in
i18n.php
und test. Möglicherweise ist ein Server -Neustart erforderlich.hr_HR.UTF-8
twig Integration:
fügen Sie dies zu: app/config/config_web.php
hinzu
git clone https://github.com/swader/nofw cd nofw git checkout tags/2.93 -b 2.93 composer require twig/extensionsVerwenden Sie in Ihren Zweigvorlagen den
Block: trans
<?php $language = "en_US.UTF-8"; putenv("LANGUAGE=" . $language); setlocale(LC_ALL, $language); $domain = "messages"; bindtextdomain($domain, "Locale"); bind_textdomain_codeset($domain, 'UTF-8'); textdomain($domain); echo _("HELLO_WORLD");
behandelt den Zweig nicht direkt, daher verwenden wir einen Caching -Mechanismus. Erstellen Sie xgettext
: app/bin/twigcache.php
xgettext --from-code=UTF-8 -o Locale/messages.pot public/i18n.phpDann extrahieren Sie Zeichenfolgen aus den zwischengespeicherten Dateien:
msginit --locale=en_US --output-file=Locale/en_US/LC_MESSAGES/messages.po --input=Locale/messages.potAktualisieren
Dateien mit .po
und neu kompilieren msgmerge
Dateien. .mo
Bonus: Dienstprogrammskripte (App/bin/i18n):
Das Tutorial enthält BASH -Skripte (, addlang.sh
, update-pot.sh
, update-mo.sh
), um den Hinzufügen von Sprachen, die Aktualisierung config.sh
und .pot
zu automatisieren. Diese Skripte sind im Originaltext detailliert. .mo
Bereitstellung:
Stellen Sie sicher, dass GetText installiert ist und auf Ihrem Server die Lokale generiert werden. Auf Ubuntu:
msgfmt -c -o Locale/en_US/LC_MESSAGES/messages.mo Locale/en_US/LC_MESSAGES/messages.poDie Dateien
, .pot
und .po
sollten Teil Ihrer Versionskontrolle sein. Passen Sie den Installationsbefehl und die Skripte für Nicht-Ubuntu-Systeme an. Der FAQS -Abschnitt enthält weitere Details und Fehlerbehebungsinformationen. .mo
Das obige ist der detaillierte Inhalt vonEinfache multisprachige Zweig-Apps mit GetText. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Die PHP -Protokollierung ist für die Überwachung und Debugie von Webanwendungen von wesentlicher Bedeutung sowie für das Erfassen kritischer Ereignisse, Fehler und Laufzeitverhalten. Es bietet wertvolle Einblicke in die Systemleistung, hilft bei der Identifizierung von Problemen und unterstützt eine schnellere Fehlerbehebung

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Alipay PHP ...

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Dreamweaver CS6
Visuelle Webentwicklungstools

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung