Ist gettext der beste Weg, um eine Website in PHP zu lokalisieren? Ich verwende keine Frameworks, und es gibt nicht viele Wörter zu übersetzen, nur zwei leicht unterschiedliche Versionen in Englisch.
Sie können einfach ein lang_XX.php
verwenden und es in Ihre Anwendung einbinden.
Für andere Sprachen, sagen wir lang_fr.php
, haben Sie etwas wie:
Für einen kleinen Anwendungsfall sollte dies in Ordnung sein und Sie müssen nicht mit .po
-Dateien gehen. Sie können es auch so definieren:
gettext ist der beste Weg. Für eine kleine Website mit wenigen Zeichenfolgen, die nicht erwartet wird zu wachsen, viel zu implementieren, etwas Ähnliches wie die bereits geposteten Lösungen möglicherweise tatsächlich schneller als lernen, wie man gettext verwenden und konfigurieren.
tl; dr:
Die Leute haben über viele Jahre hinweg intensiv nachgedacht, um ein Übersetzungssystem zu entwickeln, das funktioniert, man könnte ewig damit verbringen, dieses Rad neu zu erfinden, oder man könnte eine Weile damit verbringen, Gettext zu lernen.
In der Open-Source-Welt ist gettext praktisch ein De-facto-Standard.
Hier sind einige Gründe, warum gettext besser ist als die übliche Alternative, große Listen von Übersetzungs-Arrays zu verwalten.
if n != 1 "There was a person" else "There were n people"
. Für andere Sprachen ist die Regel nicht so einfach wie wenn (n! = 1), Russisch hat 3 verschiedene Varianten und die Regel ist n%100/10==1 ? 2 : n%10==1 ? 0 : (n+9)%10>3 ? 2 : 1;
Leistungsmäßig ist gettext
Erweiterung schneller als ein String-Array, das wie lokalisierte Texte wie String-IDs aussieht ( Zum Beispiel wäre "WelcomeText" => "Welcome to our homepage."
mit etwas <?= $strings["WelcomeText"] >
enthalten, die reine PHP-Implementierung von gettext ist langsamer und nicht empfehlenswert, wenn Sie die PHP-Erweiterung verwenden können. Weitere Details finden Sie hier Lokalisierung von PHP-Websites mit gettext und Benchmarking PHP Localization - Gettext schnell genug?
Für statische Inhalte, die sich niemals / extrem selten ändern werden, sicher.
Für dynamische Inhalte, nicht im Geringsten. Das Kompilieren der .po-Dateien usw. ist weit übertrieben, und ich würde stattdessen eine Art von JSON- oder XML-Lösung und Templating mit zwischengespeicherten kompilierten Vorlagen vorschlagen.
Tags und Links php localization gettext