Symfony - Internationalisation

Internationalization (i18n) et Localization (l10n)aider à augmenter la couverture client d'une application Web. Symfony fournit un excellent composant de traduction à cet effet. Apprenons à utiliser le composant Traduction dans ce chapitre.

Activer la traduction

Par défaut, le framework Web Symfony désactive le composant de traduction. Pour l'activer, ajoutez la section du traducteur dans le fichier de configuration, app / config / config.yml.

framework: translator: { fallbacks: [en] }

Fichier de traduction

Le composant de traduction traduit le texte à l'aide du fichier de ressources de traduction. Le fichier de ressources peut être écrit en PHP, XML et YAML. L'emplacement par défaut du fichier de ressources estapp/Resources/translations. Il a besoin d'un fichier de ressources par langue. Écrivons un fichier de ressources,messages.fr.yml pour la langue française.

I love Symfony: J'aime Symfony 
I love %name%: J'aime %name%

Le texte de gauche est en anglais et le texte de droite est en français. La deuxième ligne montre l'utilisation d'un espace réservé. Les informations d'espace réservé peuvent être ajoutées de manière dynamique lors de l'utilisation de la traduction.

Usage

Par défaut, les paramètres régionaux par défaut du système de l'utilisateur seront définis par le framework Web Symfony. Si la langue par défaut n'est pas configurée dans l'application Web, elle reviendra à l'anglais. Les paramètres régionaux peuvent également être définis dans l'URL de la page Web.

http://www.somedomain.com/en/index 
http://www.somedomain.com/fr/index

Utilisons les paramètres régionaux basés sur les URL dans notre exemple pour comprendre facilement le concept de traduction. Créer une nouvelle fonction,translationSample avec itinéraire /{_locale}/translation/sampledans DefaultController (src / AppBundle / Controller / DefaultController.php). {_locale} est un mot-clé spécial dans Symfony pour spécifier les paramètres régionaux par défaut.

/** 
   * @Route("/{_locale}/translation/sample", name="translation_sample") 
*/ 
public function translationSample() { 
   $translated = $this->get('translator')->trans('I love Symfony'); 
   return new Response($translated); 
}

Ici, nous avons utilisé la méthode de traduction, trans, qui traduit le contenu dans les paramètres régionaux actuels. Dans ce cas, les paramètres régionaux actuels sont la première partie de l'URL. Maintenant, lancez l'application et chargez la page,http://localhost:8000/en/translation/sample dans le navigateur.

Le résultat sera "I love Symfony" en anglais. Maintenant, chargez la pagehttp://localhost:8000/fr/translation/sampledans le navigateur. Maintenant, le texte sera traduit en français comme suit.

De même, le modèle de brindille a {% trans %}pour activer également la fonction de traduction dans les vues. Pour le vérifier, ajoutez une nouvelle fonction,translationTwigSample et la vue correspondante sur app/Resources/views/translate/index.html.twig.

/** 
   * @Route("/{_locale}/translation/twigsample", name="translation_twig_sample") 
*/ 
public function translationTwigSample() { 
   return $this->render('translate/index.html.twig'); 
}

Vue

{% extends 'base.html.twig' %}  
{% block body %} 
   {% trans with {'%name%': 'Symfony'} from "app" into "fr" %}I love %name% {% endtrans %} 
{% endblock %}

Ici, le bloc trans spécifie également l'espace réservé. Le résultat de la page est le suivant.