Définir la valeur du langage global dans l'application Yii2
Où puis-je définir la langue (en fonction de l'utilisateur cookie) à l'échelle mondiale? Comment faire pour le faire fonctionner dans l'ensemble de l'application (les contrôleurs,les points de vue, etc.) ?
Dans la documentation, j'ai trouvé \Yii::$app->language = '';
mais, là où je peux écrire ma logique de changer la langue dans le droit chemin?
source d'informationauteur bxN5
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
à l'intérieur du contrôleur qui est le parent de tous vos contrôleurs.
La classe parent doit être à l'intérieur du dossier composants, et si elle n'est pas disponible de créer le composant avec quelque chose comme
Après cela, vous devez vous assurer que tous vos contrôleurs étend votre nouvellement créé MyController à la place de celui d'origine.
J'espère que cela aide.
Vous pouvez définir votre langue de base dans le fichier de configuration. Dans la demande de base c'est l'emplacement par défaut est:
/config/web.php
dans advanced:application-name/config/main.php
etapplication-name/config/main-local.php
.Accepté la réponse est très bonne, mais juste au cas où vous voulez quelque chose de "plus globale", vous pouvez utiliser le bootstrap de fonctionnalités, ou le "sur beforeAction" pour déclencher une fonction (à la fois via la configuration):
Bootstrap:
Vous pouvez ensuite utiliser la
init()
fonction de ce composant par exemple."sur beforeaction":
Romain, vous pouvez atteindre votre objectif à l'aide d'un fichier de configuration principal ou param. Il suffit de faire une variable comme
$sitelang = 'UK_ua';
ensuite, vous pouvez l'utiliser viaYii::$app->params['sitelang']
Il y a beaucoup de réponse à votre question, selon votre logique.
Si vous avez un statique de la règle:
Voir http://www.yiiframework.com/doc-2.0/guide-tutorial-i18n.html#configuration
Si vous souhaitez mettre en œuvre l'ordinaire de la négociation de contenu HTTP, vous disposez d'un composant dédié:
Voir http://www.yiiframework.com/doc-2.0/guide-structure-filters.html#content-negotiator
Si vous avez besoin d'un plus complexe de négociation, vous pouvez créer un fichier d'amorce de la composante.
Voici un exemple où la langue est prise à partir des préférences de l'utilisateur pour un utilisateur connecté ou négociés pour les clients. Notez que vous pouvez surcharger votre application avec des opérations plus complexes, comme la prise en langues prises en charge à partir d'une base de données.
Il y a une bonne lecture ici sur ce sujet: https://yii2-cookbook.readthedocs.io/i18n-selecting-application-language/
Aller à fichier de configuration d'application frontend/main/config.php ou backend/main/config.php
$config = ['language' => "ru-RU']
Je sais c'est vieux mais je trouve cette question alors que j'étais à la recherche d'une réponse. Je trouve aussi un guide de nice, lien ci-dessous.
L'une des façons de faire pour créer un composant et bootstrap, comme:
Créer un fichier, disons, common/components/LanguageSelector.php
Je suis en utilisant avancées de l'application d'un modèle, vous pouvez ajuster l'emplacement du fichier et l'espace de noms que de besoin.
Puis, dans votre fichier de configuration, vous devez ajouter ce composant, juste comme vous êtes l'ajout d'un autre composant de débogage, ou journal des composants, comme suit:
Aussi, vous devez ajouter ce composant à bootstrap composants dans votre fichier de config:
Cette approche ne repose pas sur les cookies, cependant, il s'appuie sur la langue du navigateur du client. Vous pouvez également trouver un exemple sur la page ci-dessous dans la manière de réaliser de préférence à base de sélection de la langue. Mais fondamentalement, ce que vous devez faire est, dans votre languageSelector composant, obtenir la valeur du cookie et de modifier la langue en conséquence. Si il n'y a pas un témoin présent dans le navigateur de l'utilisateur, vous pouvez le secours de la langue du navigateur.
https://github.com/samdark/yii2-cookbook/blob/master/book/i18n-selecting-application-language.md