2010-04-30 12 views
12

Ich arbeite derzeit mit einer codeigniter PHP-basierten Anwendung und bin an den Punkt gekommen, wo es mit mehreren Sprachen gehen wird.Am effektivsten mit mehreren natürlichen Sprachen zu arbeiten

Ist Codeigniters eigene Sprachklasse der effektivste Weg, um mit Sprachen umzugehen? Gibt es spezielle Sprachwerkzeuge/Bibliotheken, die häufig in PHP-Anwendungen verwendet werden?

Danke!

Antwort

12

Ich habe nie CI_Language verwendet, aber es scheint, Spracharrays zu verwenden, um die Übersetzung durchzuführen.

Allzu vereinfachtes Beispiel für diese Art Methode:

$trans = array(
    'MAIN_TITLE' => 'Title Here' 
); 

echo $trans['MAIN_TITLE']; 

Persönlich finde ich das wirklich ärgerlich, weil Sie dann Ansichten bearbeiten, die anstelle von nützlichem Text mit Array-Schlüsselnamen überladen sind. Was manchmal ziemlich nervig sein kann. Ganz zu schweigen davon, dass Sie sich daran erinnern müssen, welche Tasten zu welchen Strings gehören, wenn Sie sie an mehreren Stellen verwenden.

Ich verwende Gettext, die ich viel einfacher finde. Sie müssen nur Ihre Zeichenfolgen mit der Übersetzungsmethode umschließen: _(). Sobald Sie Ihre App fertig haben, öffnen Sie PoEdit und erstellen die neue Sprachdatei. PoEdit analysiert alle meine Quelldateien nach Strings, die wie folgt eingepackt sind <?php echo _('Title here') ?> und fügt sie in die .po Sprachdatei ein. Sie können dann String für String gehen und den Text einfach in PoEdit übersetzen. Der Vorteil davon ist, dass Sie die Quellübersetzung direkt in PoEdit haben, anstelle eines bedeutungslosen Array-Schlüsselnamens in einigen Include-Dateien.

Dies alles macht mein Leben viel einfacher, da ich meine Sprachdateien jeden Freitag mit einem Klick aktualisieren kann . Neue oder geänderte Übersetzungen werden automatisch zu meiner Sprachdatei hinzugefügt. Nicht verwendete Übersetzungen werden automatisch entfernt. Ich sende die Dateien an meine 3 internationalen Niederlassungen zur Übersetzung, und meine Änderungen und aktualisierten Sprachdateien sind bereit für den Einsatz Montagmorgen

+0

Danke für Ihre Antwort, Mark. Sehr geschätzt. Ihr Ansatz mit gettext ist interessant! Ich denke darüber nach, ungefähr dasselbe zu tun, aber eine Datenbankversion, die stark zwischengespeichert wird und stattdessen auf Anfrage aktualisiert wird. – Industrial

+0

Wäre wirklich schön, mehr Beispiele zu verschiedenen Ansätzen zu diesem Thema zu sehen, nicht zu sagen, dass Ihre Lösung schlecht ist! – Industrial

+1

Vielleicht möchten Sie ZF herunterladen und die verschiedenen Adapter für Zend_Translate: http://framework.zend.com/manual/de/zend.translate.adapter.html für einige zusätzliche Ideen. Sie decken ziemlich alle gängigen Lokalisierungsmethoden ab. – Mark

Verwandte Themen