Zu übersetzen, wie Formular-labels in Zend Framework 2?
Ich bin nicht immer es!.. Kann bitte jemand erklären, wie das zu übersetzen Formular-labels? Ein einfaches Beispiel wäre toll.
Vielen Dank im Voraus!
Klasse Suchen\Form\CourseSearchForm
...
class CourseSearchForm extends Form {
...
public function __construct(array $cities) {
parent::__construct('courseSearch');
...
$this->add(array(
'name' => 'city',
'type' => 'Zend\Form\Element\Select',
'options' => array(
'label' => 'Stadt',
'value_options' => $this->cities,
'id' => 'searchFormCity',
),
));
...
}
}
view-script /module/Suche/Ansicht/Suche/search/search-form.phtml
<?php echo $this->form()->openTag($form); ?>
<dl>
...
<dt><label><?php echo $form->get('city')->getLabel(); ?></label></dt>
<dd><?php echo $this->formRow($form->get('city'), null, false, false); ?></dd>
...
</dl>
<?php echo $this->form()->closeTag(); ?>
<!-- The formRow(...) is my MyNamespace\Form\View\Helper (extends Zend\Form\View\Helper\FormRow); the fourth argument of it disables the label. -->
Den module/Application/config/module.config.php
konfiguriert ist:
return array(
'router' => ...
'service_manager' => array(
'factories' => array(
'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
),
),
'translator' => array(
'locale' => 'de_DE',
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
),
),
'controllers' => ...
'view_manager' => ...
);
Ich bearbeitete auch meine Ansicht, und verwenden Sie die FormLabel
view Helfer:
<dt><label><?php echo $this->formLabel($form->get('city')); ?></label></dt>
Desweiteren habe ich gedebuggt FormLabel
an der Stelle, wo die tranlator verwendet (Zeilen 116-120) -- scheint OK zu sein.
Aber es funktioniert immer noch nicht.
BEARBEITEN
Den (test) - Elemente für Etiketten, die ich Hinzugefügt, um die de_DE.po
- Datei manuell, sind tranlated. Die Seite ZF2 problem war eigentlich, dass ich mit $form->get('city')->getLabel()
statt $this->formlabel($form->get('city'))
im th-Skript anzeigen.
Das problem ist nun, dass die Etiketten nicht auf die de_DE.po
- Datei. Aber es ist nicht eine ZF2 Problem mehr, also ich habe akzeptieren Ruben Antwort, und öffnen Sie eine neue Poedit Frage.
- Bitte fügen Sie einige code, von dem, was Sie derzeit haben. Es wird es einfacher machen, Ihnen zu helfen und sehen, was das problem ist.
- Danke für eine schnelle Antwort! Ich habe den relevanten code jetzt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anstelle von:
Sollten Sie den formlabel view Helfer. Dieser Helfer verwendet automatisch Ihre übersetzer während der Wiedergabe, wenn Sie eingefügt haben, die Sie in Ihre Dienste-Verwalter. Höchstwahrscheinlich haben Sie es in Ihrer Anwendung ein Modul module.config.php:
Sobald Sie tun, verwenden Sie den formlabel view Helfer:
Und natürlich stellen Sie sicher, dass Ihre übersetzungen in Ihr .po-Datei.
module.config.php
konfiguriert ist und ich nun auch bearbeitet, meine Ansicht, und verwenden Sie dieFormLabel
view Helfer. Ich habe gedebuggtFormLabel
an der Stelle, wo die tranlator verwendet (Zeilen 116-120) -- scheint OK zu sein. Aber es ist immer noch nicht funktioniert.ich glaube, dein problem ist, dass Sie die label werden nicht erkannt von poedit (oder ein ähnliches tool), so müssen Sie Sie manuell hinzufügen, um Ihre poedit-Kataloge (.po)
machen Ihrem label strings erkannt durch tools wie poedit, Ihre Zeichenfolgen benutzt werden müssen, innerhalb eines translate() Funktion oder _() (andere Funktion kann Hinzugefügt werden, im Katalog/Eigenschaften/Quellen Schlüsselwort)
als _() Funktion ist für den Benutzer nicht in ZF2 (heute) so einen kleinen hack ist das hinzufügen einer Funktion wie diese in Ihrem index.php (keine Notwendigkeit, etwas ändern, auf diese Weise, in poedit params):
und in deinem code, nur verwenden Sie es, wenn Sie Ihre Zeichenfolgen außerhalb einer translate-Funktion
oder wenn Sie es bevorzugen
@Ruben sagt Recht!
Mir ich benutze PoEdit für die Erstellung meiner *.mo Dateien und um sicher zu sein erhalten Sie alle übersetzungen in die Datei, die ich erstellen irgendwo (in anzeigen zum Beispiel) eine Datei mit dem Namen _lan.phtml mit allen zu übersetzenden text :
Natürlich Poedit muss so konfiguriert werden, meine keywords. überprüfen Sie diese wie es zu konfigurieren
Alle Lösungen verwenden nicht die macht der ZF2. Sie müssen konfigurieren Sie Ihre poedit richtig :
Alles hier :
http://circlical.com/blog/2013/11/5/localizing-your-twig-using-zend-framework-2-applications