Zunächst einmal gettext
ist es ein guter Weg, also entlassen Sie es nicht, wenn es zunächst nicht einfach klingt. Es gibt jedoch auch andere Optionen, die nützlich sein sollten. Bevor wir das erklären, werfen wir zunächst einen Blick auf Ihre Vorschläge:
Auf array
diese Weise haben Sie eine ziemlich einfache Lösung. Das Gute ist, dass Sie Ihre Übersetzungen in einem Datenspeicher speichern und dann als Array in Ihr PHP-Skript laden können, und das war's. Wenn Sie Ihr Array jedoch statisch in einer PHP-Datei speichern möchten, benötigen Sie zum Bearbeiten a) einen PHP-Programmierer oder einen erfahrenen Benutzer, der mit der PHP-Syntax vertraut ist, nur um die Datei zu bearbeiten. B) Synchronisieren zwischen vier oder fünf verschiedenen Sprachdateien könnte ziemlich nervig und fehleranfällig sein.
Was Sie hier beachten müssen, ist: Wie können später neue Elemente zur Sprachdatei hinzugefügt werden? Kann ich es einem Übersetzer überlassen oder sollte es einen PHP-Programmierer geben?
Ihre variable
Vorgehensweise ist nicht praktikabel. Warum? Ich gehe davon aus, dass Sie zumindest in Ihrer Anwendung einige Funktionen haben werden, oder? Dann müssen Sie alle diese Variablen übergeben, wenn Sie die Funktion aufrufen, oder Sie müssen global
sie übergeben. Wenn Sie glauben, dass Sie mehr als zehn Variablen wie diese haben werden, rate ich Ihnen dringend davon ab. Möglicherweise liegt auch ein Namenskonflikt vor. Sie können möglicherweise den Wert einer anderen Variablen mit demselben Namen überschreiben. Dies kann jedoch gelöst werden, indem Sie ein Präfix hinzufügen, das so einfach wie ein Unterstrich ist, wie Sie es $_welcome
beispielsweise haben. Wenn ich du wäre, würde ich sowieso nicht einmal darüber nachdenken. Tu es nicht.
Eine gute Möglichkeit besteht darin, Konstanten mit einem Präfix zu definieren . So werden Sie zum Beispiel in Ihrem en.lang.php
etwas haben define( 'LABEL_WELCOME', 'Welcome' );
und in Ihrem werden no.lang.php
Sie haben define ( 'LABEL_WELCOME', 'Velkommen' );
. Das Gute an der Verwendung von Konstanten anstelle von Variablen ist, dass sie in Ihrem Skript immer verfügbar sind. Sie müssen sie also nicht injizieren oder globalisieren. Im Vergleich zu Arrays und Variablen sind sie aufgrund der Art und Weise, wie PHP mit ihnen umgeht, schneller - sie belegen weniger Speicherplatz. Der Nachteil ist, dass Sie sie nicht an den Übersetzer weitergeben können. Daher benötigen Sie erneut einen PHP-Entwickler. Auch das Synchronisieren zwischen Dateien kann wieder etwas schmerzhaft sein.
Die andere Option besteht darin, eine Funktion oder Klasse / Methode zum Abrufen der Übersetzung zu haben. Es wird weniger effizient sein - ich glaube jedoch nicht, dass Sie diese Art der Mikrooptimierung überhaupt benötigen, aber der zusätzliche Vorteil ist, dass Sie beim Abrufen der Übersetzung eine benutzerdefinierte Logik anwenden können. Stellen Sie sich zum Beispiel vor, eines Tages kommt Ihr geliebter Projektmanager zu Ihnen und fragt, ob Sie all diese Texte in Großbuchstaben umwandeln könnten. Sie können dies nicht ablehnen. Eine Funktion dazwischen kann Ihnen also sehr helfen, wenn Sie ein Muster auf alle Ihre Übersetzungen anwenden / ändern müssen.
Um es zusammenzufassen:
Überlegen Sie, wie Übersetzer es verwenden können, und entwickeln Sie eine funktionierende KISS-Lösung für sie.
Überlegen Sie, wie Sie zwischen verschiedenen Sprachen synchron bleiben können.
Überlegen Sie, ob dieselbe Übersetzung erforderlich sein könnte, beispielsweise für die mobile App. Eine plattformübergreifende Lösung könnte Ihre Zeit sparen. Entlassen Sie JSON und normale Datenbanken nicht.
Überlegen Sie, wie Sie die Logik beim Abrufen der Übersetzungen anwenden / ändern können.
Ich habe die Leistung vergessen. In 99,9% der Fälle kommen Sie nicht so weit, um Mikrooptimierungen wie Konstante vs. Variablen vs. Funktionsaufrufe durchzuführen . Ich gehe davon aus, dass Ihre Zeit als Entwickler / Mitarbeiter teurer ist als eine Prozessorzeit.
Update Nr. 1
Meine Güte, ich poste eine Antwort auf eine einjährige Frage. Warum sagt hier niemand etwas? Für diese Fälle benötigen wir Warnungen.
Update Nr. 2
Auf der rechten Seite steht, dass es sich um eine einjährige Frage handelt. Es wurde jedoch vor zwei Jahren gefragt! Hier ist alles irreführend!