2012-04-11 9 views
0

ich wegen der großen Bewertungen von Cake „eingebauten“ Lokalisierungsfunktionen in CakePHP 2.1.x eine doppelte Sprache app bin Gebäude. Ich habe jedoch damit zu kämpfen, dass diese leistungsstarke Funktion funktioniert.Internationalisierung und Lokalisierung in CakePHP 2.1

Ich weiß, dass dieses Thema für frühere Versionen von Kuchen in Angriff genommen wurde (here, here, here und here), aber es ist für Kuchen 2.x. nicht gelöst Ich bin auch diese Artikel im Kochbuch Referenzierung (ja, habe ich gelesen, das Handbuch):

Paar Dinge - ich will nicht getrennte Sub-Domains tun für jede Sprache. Stattdessen bevorzuge ich URL-basierte Sprachumschaltung mit einem Klick auf eine Schaltfläche (in diesem Fall ein Flaggensymbol). Die Website wird aktiv gepflegt, sodass der Inhalt dynamisch aktualisiert werden muss. Den Client zu bitten, zwei getrennte Sites/Datenbanken zu unterhalten, kommt nicht in Frage.

Ich habe Verhalten für meinen PostModel einrichten Übersetzen, aber ich kann nicht sagen, ob es funktioniert. Ich initialisiert I18n auch durch I18n in der Konsole ausgeführt wird, haben die Datenbanktabellen existieren bestätigt, meine .po-Dateien einrichten und haben alle meine Inhalte in __() gewickelt. Wenn ich jedoch die Standardsprache in meinem Browser auf Französisch ändere, bleibt die Website in Englisch.

Ich habe die P28n Komponente versucht, aber ich denke, es ist für Kuchen 2.x. veraltet ist Ich versuchte auch URL-basierte Sprachumschaltung basierend auf dieser nuts-and-bolts-of-cakephp article, aber anscheinend ist es nicht kompatibel mit der neuen CakePHP API.

Kann mir jemand in Richtung eines Tutorials oder Anweisungen zeigen, die mit CakePHP 2.x funktionieren? Einer, auf den hier noch nicht verwiesen wird?

Aktualisierung: Ich fand den Artikel: http://www.localizingjapan.com/blog/2011/11/10/localizing-a-cakephp-application/comment-page-1/#comment-7467. Weiß jemand, wo Sie den Code für CakeSession::write('Config.language', 'fre'); und setlocale("LC_ALL", "fr_FR.utf8"); platzieren?

Antwort

0

Einfach den Code in AppController :: before() und die Werte festgelegt, basierend auf wie Sie die Sprache, die von einem Post-Anforderung oder einen Teil der URL abgerufen werden.

+0

Danke, burzum! Hier ist meine 'before()' in AppController: 'public function before() { \t parent :: before(); \t CakeSession :: write ('Config.language', 'fre'); \t setlocale ("LC_ALL", "fr_FR.utf8"); \t $ this-> Auth-> allow ('index', 'view', 'home', 'display', 'logout'); } ' – deewilcox

+0

Bisher scheint dies keine Auswirkungen auf die Website zu haben. Hier ist die URL: puzzle.leadingegedgecommunications.net. Außerdem möchte ich das Gebietsschema bei einem Klick auf die Schaltfläche ändern. Wie mache ich das? – deewilcox

+0

Das Problem war mit meinen .po-Dateien. Ich brauchte am Ende auch nicht setlocale(). – deewilcox

Verwandte Themen