2010-09-21 8 views
10

Ich untersuche derzeit die besten Methoden zur Integration von i18n in Projekte.Internationalisierung in PHP

Es gibt mehrere Methoden, die ich dazu gedacht habe, zuerst ein Datenbankschema zum Speichern der Strings und relevanten Locale, aber das Problem dabei ist, dass es nicht so einfach wäre, die Strings auszuwählen, weil ich nicht möchte quesries ausführen wie folgt:

SELECT text FROM locales WHERE locale = 'en_GB' AND text_id = 245543 

Oder

SELECT text FROM locales WHERE locale = 'en_GB' AND text_primary = 'hello' 

Die nächste Methode, um sie innerhalb von Dateien wie locales/en_gb/login/strings.php und dann versuchen, und sie gezielt wie so entwickelt über eine Klasse zugreifen zu speichern wäre:

$Language = Registry::Construct('Language',array('en_GB')); 
echo $Language->login->strings->hello; 

Das Problem mit diesem ist würde ich muss ein System aufzubauen, das diese Dateien über eine Administrationsoberfläche Hexe aktualisieren würde, ist sehr Zeit, nicht nur den Aufbau des Systems raubend die Saiten zu verwalten, sondern tatsächlich die Saiten wie die Verwaltung Website wächst

  • Welche anderen Methoden gibt es, die für ein großes System von Vorteil sein wird
  • gibt es eine automatisierte Art und Weise ‚Übersetzung‘ zu tun, als solche
  • Soll ich mit einer Datenbank Methode bleiben und bauen ein System für Benutzer, um stri zu übersetzen ngs mit Bewertung/bessere Version vorschlagen?
  • Welche Systeme haben Sie in der Vergangenheit versucht und sollte ich sie untersuchen oder sie vollständig vermeiden.
+0

Hast du gettext() versucht? – fabrik

+0

Was hast du am Ende gemacht? Ich habe ein ähnliches Problem. – Sunny

Antwort

8

Neben gettext bereits erwähnt, PHP 5.3 has native Internationalization support

Wenn das keine Option ist, in Betracht ziehen. Zend_Translate unterstützt eine Reihe von Adaptern, einschließlich, aber nicht beschränkt auf einfache Arrays, gettext, XmlTm und andere.

+0

+1 Für Zend_Translate. – wimvds

5

Ich habe ein XML-Übersetzungsdienstprogramm als Teil eines größeren Projekts implementiert. Sie finden es here, und eine Beispielübersetzungsdatei ist here (en_US).

+0

hat es UnitTests? – Gordon

+1

Sie sind noch nicht festgelegt. Dieses Projekt ist relativ neu, daher bin ich gerade dabei, den Rahmen aufzubauen. UnitTests kommen in den nächsten Tagen. – halfdan

+0

Großartig, ich liebe die XML-Formation, anstatt Dinge wie Arrays/Objekte zu verwenden, macht die Tiefe einfacher :) +1 – RobertPitt

4

Die beeindruckendste Methode zum Studieren ist die Implementierung von Drupal. Zweitbeste wäre Wordpress. Beide verwenden gettext und .pot/.po/.mo für die Lokalisierung. Und das Gute ist, dass es einen schönen Open Source .po Editor namens Poedit gibt. Es ist für Windows-Systembenutzer verfügbar, was eine größere Anziehungskraft verleiht. Es ist auch für Mac und Linux verfügbar. Schau es dir hier an: http://www.poedit.net/

Verwandte Themen