8
votes

Zend Framework 2: Comment définir les paramètres locaux à l'échelle mondiale?

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');


0 commentaires

5 Réponses :


2
votes

Configurez la locale par défaut au niveau de la configuration! Voir # 61 de module.config.php à partir du module d'application ZendqueletonApplications XXX


6 commentaires

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 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.



0
votes

Ce travail pour moi: xxx pré>

} 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__,
         ),
     ),
 ),


0 commentaires

0
votes

Dans le fichier modal.config, je ne pense pas que ce qui suit est requis car vous avez utilisé l'alias 'MVCTranslator' pour Traducteur. xxx


0 commentaires

1
votes

J'ai eu le même problème. Dans mon module de connexion de l'utilisateur, je suis inscrit à Mvcevent sur Bootstrap: xxx pré>

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);
    } 
    ...


0 commentaires

0
votes

dans zf2 locale est défini toujours par demande. Vous pouvez le faire sur Bootstrap: xxx

et ultérieur dans le contrôleur, si vous souhaitez modifier: xxx

Si vous modifiez les paramètres régionaux sélectionnés, Vous devez ajouter à nouveau un chemin de traduction pour que cela fonctionne


0 commentaires