Changement de langue automatique

Aide aux auteurs d'extensions pour phpBB

Modérateur : Équipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com
Répondre
Avatar du membre
sylver35
Extensions
Extensions
Messages : 8117
Enregistré le : 26 févr. 2008 à 14:58
Localisation : West coast BZH
Contact :

Changement de langue automatique

Message par sylver35 »

Bonjour,

Je poste ici non pour demander de l'aide mais pour partager une fonction que je vient de créer.

Quand on souhaite faire envoyer un mp automatique à un membre ou aux admins/modos ou faire créer un message automatiquement dans la langue par défaut du forum, la langue définie à ce moment est celle du membre connecté faisant déclencher l’événement, pas pratique du tout comme les extensions mp de bienvenue et Notify Admin on Registration par exemple.

D'abord, on initialise à false la variable $switch_lang

Code : Tout sélectionner

$switch_lang = false;
On créé la requête puis la boucle :

Code : Tout sélectionner

bla bla bla
while ($row = $this->db->sql_fetchrow($result))
{
Au début de la boucle, on fait changer la langue en cours avec celle du membre de la boucle :

Code : Tout sélectionner

$switch_lang = $this->language_switch($row['user_lang'], $switch_lang);
Ensuite, tout le code d'envoi de message ou tous les $this->language->lang('blabla') et $this->user->lang['blabla']
prendront la langue du membre concerné.
à la fin de la boucle, on re-switch la langue par celle de départ :

Code : Tout sélectionner

$switch_lang = $this->language_switch($row['user_lang'], $switch_lang);
Ma petite fonction language_switch() :

Code : Tout sélectionner

	private function language_switch($lang_user, $switch_lang)
	{
		if (!$switch_lang && $lang_user !== $this->user->data['user_lang'])
		{
			$this->language->set_user_language($lang_user, true);
			return true;
		}
		else if ($switch_lang)
		{
			$this->language->set_user_language($this->user->data['user_lang'], true);
			return false;
		}
		return false;
	}
Petite démonstration en faisant afficher un mp automatique issu d'une boucle :
Image
Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !
Avatar du membre
pierredu
Resp. Extensions
Resp. Extensions
Messages : 1642
Enregistré le : 29 mai 2011 à 06:49
Localisation : Paris
Contact :

Changement de langue automatique

Message par pierredu »

Bien vu !!
Avatar du membre
sylver35
Extensions
Extensions
Messages : 8117
Enregistré le : 26 févr. 2008 à 14:58
Localisation : West coast BZH
Contact :

Changement de langue automatique

Message par sylver35 »

Petit complément, si l'on souhaite faire créer un sujet automatique et que l'on veut que la langue utilisée soit celle par défaut du forum et non la langue du membre faisant déclencher l'évènement :

Avant la fonction de création du sujet, on switch la langue avec celle par défaut :

Code : Tout sélectionner

// Switch language to default lang if needed
$switch_lang = $this->language_switch($this->config['default_lang'], false);
Puis, juste après l'envoi du message on re-switch avec celle du membre :

Code : Tout sélectionner

// Switch language to user lang if needed
$this->language_switch($this->config['default_lang'], $switch_lang);
Le changement ne s'opère que si la langue est différente et le message créé est bien toujours dans la langue par défaut.
En deuxième, pour un parfait usage, on ne met pas $switch_lang = car la variable ne sert plus à rien.
Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !
Répondre

Retourner vers « Aide au développement »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité