Je dois changer de paramique de manière dynamique en fonction de la langue que l'utilisateur souhaite.
Je peux définir la locale dans l'application / module.php comme ceci: p>
$translator = $this->getServiceLocator()->get('translator'); $translator->setLocale('srb_SRB');
5 Réponses :
Configurez la locale par défaut au niveau de la configuration! Voir # 61 fort > de module.config.php code>
à partir du module d'application ZendqueletonApplications
Mais je dois le changer de manière dynamique, en fonction de l'utilisateur.
Cela serait défini par demande alors, basé sur les données de la session des utilisateurs (ou la userentiosité)
@ sgleser87 Le point est que vous ne doit pas b> le changer dans le code, qui ne doit contenir que la valeur par défaut
Ok, mais comment gérez-vous que les changements de langue? Vous devez la définir sur chaque demande à nouveau? C'est trop de code que vous devriez définir une seule fois.
C'est à quoi ressemble des données de session. Oui, vous devez le changer sur chaque demande. Vous ne pouvez pas écrire une application sur une base d'utilisateur, mais vous pouvez modifier les données en fonction de l'utilisateur. C'est ce que vous codez pour OO
@Sam j'essaie de définir le traducteur local $-> getLocale ('hin_in'); mais trouvé toujours une locale par défaut lorsque j'utilise ce traducteur $> getLocale (); Donnez en_in mais je suis Wondor, je n'ai pas ajouté ce local à aucun endroit dans mon projet. Cela fonctionne en 2.1.1 parfait mais ne fonctionne pas dans 2.3.3Dev lorsque je met à niveau cette version. Aidez-moi, s'il vous plaît.
Ce travail pour moi: } p> et mon modal.config.php: p> 'service_manager' => array(
'abstract_factories' => array(
'Zend\Cache\Service\StorageCacheAbstractServiceFactory',
'Zend\Log\LoggerAbstractServiceFactory',
),
'aliases' => array(
'translator' => 'MvcTranslator',
),
),
'service_manager' => array(
'factories' => array(
'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
),
),
'translator' => array(
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
'text_domain' => __NAMESPACE__,
),
),
),
Dans le fichier modal.config, je ne pense pas que ce qui suit est requis car vous avez utilisé l'alias 'MVCTranslator' pour Traducteur.
J'ai eu le même problème. Dans mon module de connexion de l'utilisateur, je suis inscrit à Mvcevent sur Bootstrap: puis lorsque cet événement vient, je définis la locale basée sur des informations de l'URL: P> public function onDispatch(MvcEvent $event)
{
$servicemanager = $event->getApplication()->getServiceManager();
$lang = $event->getRouteMatch()->getParam('lang','jp-JP');
$translator = $servicemanager->get(TranslatorInterface::class);
if( $translator != null )
{
$translator->setLocale($lang);
}
...
dans zf2 locale est défini toujours par demande. Vous pouvez le faire sur Bootstrap: et ultérieur dans le contrôleur, si vous souhaitez modifier: p> Si vous modifiez les paramètres régionaux sélectionnés, Vous devez ajouter à nouveau un chemin de traduction pour que cela fonctionne p> p>