Ich habe Zend Framework 3 Anwendung mit funktionierenden Übersetzer mit Po-Dateien.zf3 Gebietsschema ändern je nach Benutzerauswahl
Ich habe es so konfiguriert ist, in meiner \ config \ global.php Datei:
'translator' => [
'locale' => 'en_US',
'translation_file_patterns' => [
[
'type' => 'gettext',
'base_dir' => getcwd() . '/data/language/',
'pattern' => '/%s/general.mo',
],
],
],
Wenn ich den Wert des „locale“ ändern funktioniert ok und findet die richtige .po-Datei. Ich muss in der Lage sein, das Gebietsschema abhängig vom Wert eines Benutzerprofils einzustellen, das in der Datenbank gespeichert wird.
Ich habe die Dokumentation von hier http://zendframework.github.io/zend-i18n/translation/ und das Tutorial von hier https://docs.zendframework.com/tutorials/i18n/ überprüft, aber sie erwähnen nur die setLocale() -Methode ohne Erklärung oder Beispiel. Es gibt ähnliche Thread hier Zend framework 2 : How to set locale globaly? aber es ist für ZF2 und es bietet keine funktionierende Lösung nur einige Vorschläge.
Um meine Frage zusammenzufassen - wie und wo sollte ich die setLocale() -Methode verwenden, so dass es in der gesamten Anwendung wirksam wäre und $this->translate($message)
in allen Ansichtsdateien das neue Gebietsschema stattdessen das Standardgebietsschema in der Konfigurationsdatei verwendet?
Danke Thomas, das funktioniert wirklich, ich werde es auch mit der Fabrik versuchen, aber ich werde einige Hilfe mit ihm zu schätzen wissen.Ich denke, es wird konsequenter sein, Framework-Tools zu verwenden, wenn es solche gibt. Ich werde eine Chance geben, dass jemand anderes etwas anderes vorschlägt und wenn niemand reinkommt, werde ich deine Antwort als "akzeptiert" markieren. Nochmals vielen Dank, – Ivomasterche
Ich habe nur die Antwort ein wenig aktualisiert ... Das ist ein bisschen lang IMO, und wahrscheinlich ein bisschen verwirrend irgendwann, bitte fragen Sie weitere Details, wenn nötig. –
Nochmals vielen Dank. Ich denke, dass ich die Idee habe - wir "wickeln" den Übersetzer-Service mit diesem Delegator, der jedes Mal aufgerufen werden muss (und ein Gebietsschema setzt), wenn $ this-> translate ($ msg) 'aufgerufen wird? Leider kann ich es nicht funktionieren, ich habe die Konfiguration zu der module.config.php des Application-Moduls hinzugefügt, und ich habe die TranslatorFactory-Klasse in /Application/src/Factory/TranslatorFactory.php Datei erstellt, ist das alles? – Ivomasterche