2009-06-05 3 views
3

Ich habe eine Website, die derzeit auf Englisch ist; Ich möchte in der Lage sein, zu einer anderen Sprache zu wechseln, wenn ein Benutzer auf eine andere Sprache klickt (es gibt kleine Länderflaggenikonen auf der Site). Die Art, wie ich derzeit versuche mit Arrays, z.B .:PHP - Wie übersetzt man eine Website in mehrere Sprachen?

$english = array('index', 
      array('h1' => 'this is some h1 text', 
       'h2' => 'this is some h2 text')); 

$japanese = array('index', 
      array('h1' => '世界交換への歓迎', 
        'h2' => 世界交換への')); 


print $english[index][h1]; 
print $japanese[index][h2]; 

Wie man sehen kann, wenn ich das tue für jede einzelne Seite in einer eigenen Sprache, wäre es eine unglaubliche Menge von Code sein. Welche andere Methode kann ich ausprobieren?

Antwort

-4

könnten Sie einfach die Google übersetzen api:

http://code.google.com/apis/ajaxlanguage/

Es hat Tonnen von Dokumentation und es gibt Beispiele dafür, wie es auf dem Spielplatz Google Code zu verwenden:

http://code.google.com/apis/ajax/playground/

Navigieren Sie einfach zu Ajax> Übersetzung

+2

"Vertrauen darauf, die automatische Übersetzung wird anwendbar sein, der Fall sehr mutig mich - nicht alle Sprachen teilen Satzstruktur" (automatische Übersetzung von Google).Ursprüngliche Absicht: "Sich auf automatische Übersetzung verlassen zu können, klingt für mich sehr optimistisch, (...)" Fall abgeschlossen. – Piskvor

+0

Dies würde sehr schlechte Übersetzungen erzeugen. –

-2

Ich würde vorschlagen, Ihre Website in die Windows Live oder Google Translate APIs einhängen. Ich weiß nichts über Google, aber die Windows Live API scheint wirklich einfach zu benutzen.

http://msdn.microsoft.com/en-us/magazine/dd569750.aspx

Das, oder Sie können in zwei Sprachen auf der Seite alle Inhalte schreiben, speichern sie beide in verschiedenen Tabellen in einem „Inhalt“ Datenbank, dann ändern die Tabelle geladen wird, wenn der Benutzer die Klicks Sprachauswahl ändern Nun würde der Großteil Ihrer Plackerei den Inhalt in beiden Sprachen neu schreiben.

+1

heh. Microsoft. – JasonV

+0

die Google API und Live-API scheinen wie die gleiche Geschichte mit, wie ich die Arrays tun. um Zeit zu sparen im Hardcoding, anstatt eine db zu verwenden. So wie ich die Arrays ausgebreitet habe, wie kann ich das Englische oder das Japanische anhand eines Parameters in meiner URL aufrufen? Zum Beispiel: index.php? l = en – SarmenHB

+0

Die Google API (IDK über Live), kann mit einer URL erfolgen. Und Sie müssen den übersetzten Text nicht in Arrays speichern. Google übernimmt die gesamte Arbeit für Sie. Sie übergeben es einfach das Argument einer Javascript-Funktion. Sehen Sie sich den Google Code-Spielplatz an, um weitere Informationen zu erhalten. – JasonV

1
  • Inhalt Datenbank (oder Datei-I guess)
  • Eintrag pro Seite für jede Sprache
  • Sprache von ID verwiesen
  • ID gesetzt in $ _SESSION variable
  • Optional in Cookie erinnerte für nachfolgende Besuche

Ich habe dieses System mit einem benutzerdefinierten CMS @ verwendet. Es macht besonders Spaß, wenn Sie Dinge wie Broschüren & andere Downloads berücksichtigen müssen.

5

Angesichts der Tatsache, dass Sie für volle i18n Unterstützung suchen, die schließlich zu l10n Unterstützung führen wird, würde ich empfehlen, Ihre Seite in einem PHP-Framework zu schreiben, das diese Dinge out of the box unterstützt.

Ich persönlich habe nur Übersetzungen mit dem Symfony-Framework gemacht. Sie verwenden eine Kombination aus i18n Tabellenerweiterung in der DB für Inhalt und XLIFF-Dateien für Übersetzungen der Schnittstelle. Es war ziemlich transparent, sobald es eingerichtet wurde, und die Verwendung eines Frameworks vermeidet, dass all diese Unterstützung von Hand geschrieben werden muss.

Ich weiß auch, dass i18n in Zend, CakePHP und Code Igniter unterstützt wird.

+1

I zweite Symfony es macht es einfach, Strings aus und in eine Datei für die Übersetzung zu extrahieren. –

+0

+1 für symfony. Es erleichtert die Lokalisierung und Internationalisierung! – phidah