2008-11-20 4 views
6

Ich habe das gesamte MVC-Modell eingerichtet und HTML-Ansichten als Vorlagen verwenden. Aber ich habe deutsche Strings drin, die ich irgendwann in andere Sprachen übersetzen möchte.Wo zu verwenden Zend Framework Übersetzungstool

Was ist der beste Weg, dies zu tun? Ich weiß, dass ich Zend_Translate verwenden muss, aber muss ich einen einzigen Aufruf einer Übersetzungsfunktion für jedes Wort implementieren, das ich in meinen Ansichtsvorlagen habe?

Antwort

12

Zunächst würde ich vorschlagen, vollständige Sätze als Grundlage für Ihre Übersetzung zu verwenden. Bei Wörtern haben Sie immer das Problem, dass Sprachen nicht konsistent sind, wenn es um die Satzstruktur geht.

Dann müssen Sie einen der verfügbaren Zend_Transalate Adapter wählen: Array, Csv, Gettext, Ini, TBX, Tmx, Qt, Xliff oder XmlTm. Die meisten von ihnen sind Adapter für Industriestandards zum Speichern von Übersetzungsinformationen, so dass es wahrscheinlich ausreichen würde, wenn Sie Array, Csv oder Ini für den Anfang und für die Benutzerfreundlichkeit wählen würden. Siehe bitte 49.2.1. How to decide which translation adapter to use im Zend Framework Handbuch.

// setup your translation 
$translate = new Zend_Translate('csv', '/my/path/source-de.csv', 'de'); 
$translate->addTranslation('/my/path/source-en.csv', 'en'); 
// add the translation adapter to the registry 
Zend_Registry::set('Zend_Translate', $translate); 

Da es ein Zend_View_Helper_Translate die Zend_Translate als Standardübersetzung Ausgang den standardisierten Zend_Registry Eintrag zuzugreifen ist, können Sie die folgend in Ihren Ansichten verwenden können:

[...] 
<title><?php echo this->translate('Title'); ?></title> 
[...] 
<p>You can also do <?php echo $this->translate('Hello %1$s', $this->userName); ?></p> 
[...] 

Bitte beachten Sie, dass dies nur eine kurze Einführung ist in Zend_Translate und keineswegs eine vollständige Darstellung der von dieser Komponente bereitgestellten Funktionalität. Zum Beispiel gibt es eine Menge zu sagen, um das Gebietsschema zu bestimmen, das der Übersetzungsadapter verwenden wird.

Ich würde vorschlagen, dass Sie die folgenden in dem Zend Framework Handbuch zu lesen, da die Lokalisierung ein komplexes Thema sein kann und Zend_Translate nicht vollständig hier beschrieben werden:

+0

Danke. Also muss ich immer $ this-> translate() aufrufen. Vielen Dank! –

1

Nein, Sie müssen nicht jedes einzelne Wort übersetzen. Die Idee der Übersetzung in diesem Sinne ist eher eine Idee einer Nachrichtenübersetzung.

In meinem aktuellen Projekt machen wir zwei Arten von Übersetzungen. Wenn es sich nur um einen kurzen Text handelt, geben wir diesen aus Gründen der Lesbarkeit direkt in den Quellcode ein.

I.E.

<?=$this->translate('Add');?> 
<?=$this->translate('Delete');?> 
<?=$this->translate('Are you sure you want to delete %1$s?', $thing);?> 

Aber wenn die Nachricht viel länger ist, wir folgen in der Regel einem Standard für Übersetzungssystem zu markieren:

<?=$this->translate('controller-action_form-information');?> 

Die Idee, dass man das mit einem sehr langen Text dann ersetzen zu können Ihr Übersetzungstool und es hält das View-Skript sauber.