Frage

Es gibt keine Dokumentation auf cakephp.org und ich bin nicht in der Lage einen auf Google zu finden. Bitte verlinken Sie mir eine Dokumentation oder geben Sie einen an!

War es hilfreich?

Lösung

Das übersetzen Verhalten ist ein weiterer von CakePHP ist sehr nützlich, aber schlecht dokumentiert Funktionen. Ich habe es ein paar Mal mit angemessenem Erfolg umgesetzt in mehrsprachigen Websites entlang der folgenden Zeilen.

Als erstes wird das Verhalten übersetzt nur die Datenbank Inhalt Ihrer Website internationalisieren. Wenn Sie mehr statischen Inhalt haben, sollten Sie bei Cake __('string') Wrapper-Funktion suchen und gettext (es gibt einige hilfreiche Informationen über diese hier )

Unter der Annahme, es gibt Inhalte, die uns mit der folgenden Tabelle db übersetzen:

CREATE TABLE `contents` (
    `id` int(11) unsigned NOT NULL auto_increment,
    `title` varchar(255) default NULL,
    `body` text,
  PRIMARY KEY  (`id`),
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

Das content.php Modell dann hat:

var $actsAs = array('Translate' => array('title'   => 'titleTranslation',
                     'body'    => 'bodyTranslation'
                     ));

in seiner Definition. Sie müssen dann die i18n Tabelle zu der Datenbank hinzuzufügen thusly:

CREATE TABLE `i18n` (
  `id` int(10) NOT NULL auto_increment,
  `locale` varchar(6) NOT NULL,
  `model` varchar(255) NOT NULL,
  `foreign_key` int(10) NOT NULL,
  `field` varchar(255) NOT NULL,
  `content` mediumtext,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

Dann, wenn Sie die Daten in die Datenbank in Ihrem Controller sind zu speichern, stellen Sie die locale auf die Sprache, die Sie (in diesem Beispiel für die polnische wäre) wollen:

$this->Content->locale = 'pol';
$result = $this->Content->save($this->data);

Dies wird für den Titel und Körperfelder für den pol locale Einträge in der i18n Tabelle erstellen. Funde werden finden basierend auf dem aktuelle Gebietsschema festgelegt in dem Browser des Benutzers, die Rückkehr ein Array wie:

[Content]
  [id]
  [titleTranslation]
  [bodyTranslation]

Wir nutzen die hervorragende p28n Komponente Sprache Switching-Lösung zu implementieren, die recht gut mit dem gettext arbeitet und Verhaltensweisen übersetzen.

Es ist kein perfektes System - wie es HABTM Beziehungen on the fly erstellt, kann es einige Probleme mit anderen Beziehungen führt, dass Sie manuell erstellt haben, aber wenn Sie vorsichtig sind, kann es gut funktionieren

.

Andere Tipps

Für alle die gleiche Sache suchen, aktualisiert cakephp deren Dokumentation. Für Übersetzen Verhalten gehen hier ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top