Ist gettext der beste Weg, um eine Website in PHP zu lokalisieren? (nur leichte Lokalisierung erforderlich) [geschlossen]

8

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.

    
Richard Le Poidevin 04.10.2012, 15:55
quelle

4 Antworten

12

Sie können einfach ein lang_XX.php verwenden und es in Ihre Anwendung einbinden.

%Vor%

Für andere Sprachen, sagen wir lang_fr.php , haben Sie etwas wie:

%Vor%

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:

%Vor%     
Praveen Kumar 04.10.2012, 16:01
quelle
10

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.

  1. Es ist schneller
  2. Es muss nicht jede einzelne Zeichenfolge einmal pro Thread in den Speicher geladen werden
  3. Es gibt eine Menge Tool-Unterstützung für Übersetzer, wie zB poedit, so dass Sie nicht darauf angewiesen sind, dass Ihre Übersetzer PHP-Code bearbeiten.
  4. Es hat Tool-Unterstützung für Sie, msgmerge usw. bedeutet, dass Sie Ihre zu übersetzende Datei noch während der Arbeit senden und neuen übersetzbaren Text hinzufügen und diese einfach wieder zusammenführen können
  5. Müssen Sie dem Übersetzer einen Kommentar zum Kontext einer Zeichenkette geben? gettext nimmt einen Kommentar aus dem Code, in dem es verwendet wird, und kopiert es in die Übersetzungsdatei
  6. Die Übersetzungstasten sind der englische Text. Wenn der Text noch nicht übersetzt wurde und der Text immer noch in einfachem Englisch angezeigt wird, ist dies bei keiner der Lösungen auf dieser Antwort richtig.
  7. Es unterstützt Plural, wenn eine Zeichenkette von einer Ganzzahl abhängt, gibt es in Englisch nur zwei Formen 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;
dsas 04.10.2012 22:48
quelle
3

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?

    
chridam 04.10.2012 16:00
quelle
1

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.

    
dmp 04.10.2012 15:58
quelle

Tags und Links