Was ist so gut an gettext für Sprachdateien?

7

Überall auf SO, wenn es darum geht, eine mehrsprachige App in PHP zu machen, sagen alle, dass gettext ist der beste Weg, es zu tun. Ich will nur wissen warum?

Was macht diese Methode weniger effizient als gettext?

%Vor%     
JasonDavis 12.09.2009, 17:29
quelle

4 Antworten

13

Eine gute Sache mit gettext ist, dass es eine Art De-facto-Standard ist: Es wird von vielen Anwendungen in vielen Sprachen verwendet - was bedeutet, dass viele Leute damit arbeiten.

Eine andere gute Sache (vielleicht eine Konsequenz, oder eine Ursache oder beides, tatsächlich) ist, dass mehrere Werkzeuge, wie Poedit zum Beispiel existieren, um gettext-Dateien zu bearbeiten: Sie müssen nicht durch irgendeinen PHP (oder was auch immer) Quellcode gehen. Und das ist sehr wichtig:

  • Es bedeutet, dass nicht-technische Personen Gettext-Lokalisierungsdateien bearbeiten können
    • vielleicht scheint dir das jetzt nicht wichtig,
    • Aber wenn Sie an einer großen Open-Source-Anwendung arbeiten, wird es wichtig, wenn es erfolgreich ist und viele Leute es in ihrer eigenen Sprache brauchen.
  • es bedeutet, dass sie nicht riskieren, die Anwendung zu zerschlagen (denken Sie an "parse error" wegen einer fehlenden Übereinstimmung in Anführungszeichen ;-))
Pascal MARTIN 12.09.2009, 17:32
quelle
6

Es gibt ein paar Nachteile in Ihrer "Implementierung".

  • Anders als gettext ist es in php implementiert. ; -)
  • Es behält die gesamte Übersetzung im Speicher, egal ob Sie sie verwenden oder nicht
  • Was noch schlimmer ist, es instanziiert das gesamte Datenfeld, wenn Sie eine Zeile benötigen (es dauert eine Weile und in PHP ziemlich viel Speicher)
  • Es ist nicht möglich, Pluralformen für viele Sprachen zu verwenden
  • Der Code, der diese Übersetzung verwendet, ist kaum lesbar
  • Der Code, der diese Übersetzung verwendet, enthält kein eingebettetes Fallback, das bei fehlender Übersetzung verwendet werden kann.

Grundsätzlich ist Ihre Implementierung in vielen Projekten weit verbreitet, die ihre Internationalisierungsunterstützung und hochinnovative Erfindung des Rades beanspruchen wollen, sich aber nicht um das Ergebnis kümmern und das Gute nicht vom Schlechten kennen.

    
Michael Krelin - hacker 12.09.2009 17:39
quelle
4

Es ist die gleiche Antwort wie für alle anderen Fragen:

  

Was ist besser mit [heightly bewiesen   und weit verbreitete Lösung]   als mit [mein hacky cocky noob   Implementierung]?

  • Es ist schon lange her, ob Sie es glauben oder nicht, wenn erfahrene Entwickler daran gearbeitet, es benutzt und es gelobt haben, es ist wahrscheinlich aus einem bestimmten Grund.
  • Es ist ein Standard, und selbst wenn Ihre Lösung besser wäre, wäre der Preis, den Sie dafür zahlen müssen, nicht wert.
  • Es kann 1000 mehr als Ihre Implementierung tun, weil es mit einem globalen Umfang entwickelt wurde, während Ihre Idee nur darauf abzielt, Ihr Problem zu lösen.

Ich kritisiere nicht, wir haben das alle getan und versucht, uns davon zu überzeugen, dass wir Smarties sind und andere Overkill-Programmierer sind. Das ist Teil der Art zu lernen. Ich tue das eigentlich ständig, erfinde das Rad neu oder präsentiere mich mit meinen Freunden / Kollegen über einen KISS-Code, den ich gehackt habe. Mit der Zeit machst du es am Ende immer weniger, und ich nehme an, du hörst damit auf, es an dem Tag zu tun, an dem du es tatsächlich verdienen würdest: -)

    
e-satis 12.09.2009 17:51
quelle
1

Der Vorteil von gettext im Vergleich zu anderen Lösungen wie Ihrer, Java-String-Tabellen oder Windows-Ressourcen ist, dass der Quellcode lesbarer wird.

Vergleiche das:

%Vor%

mit diesem:

%Vor%

Im ersten Fall können Sie die Nachricht direkt im Code sehen und Sie wissen genau, was sie tut. Im letzteren Fall sehen Sie nur eine symbolische Konstante und müssen die genauen Text- und Formatangaben nachschlagen.

    
Václav Slavík 29.12.2009 16:58
quelle

Tags und Links