diff --git a/developpement/symfony3/presentation/slides.md b/developpement/symfony3/presentation/slides.md index d6bc129..30ba8da 100644 --- a/developpement/symfony3/presentation/slides.md +++ b/developpement/symfony3/presentation/slides.md @@ -1188,6 +1188,238 @@ server { ``` --- +## Sujets spécifiques + +### Gestion des traductions +### Utilisation du micro-kernel +### Les tests +### Gestion des assets avec Webpack +### Formulaires et gestion des thèmes + +--- + +## Gestion des traductions + +### Installation du composant +### Le service `translator` +### Gestion des traductions + +--- + +## Installation du composant + +```bash +composer require symfony/translation +``` + +--- + +## Le service `translator` + +### Gestion de la `locale` +### Utilisation du service `translator` +### Utilisation dans un template Twig +### Pluralisation +### Organisation par domaine + +--- + +## Gestion de la `locale` (1) + +### Récupérer la locale dans un controleur + +```php +use Symfony\Component\HttpFoundation\Request; + +public function indexAction(Request $request) +{ + $locale = $request->getLocale(); +} +``` + +--- + +## Gestion de la `locale` (2) + +### Modifier la `locale` via un listener sur l'évènement `kernel.request` + +```php +public function onKernelRequest(GetResponseEvent $event) +{ + $request = $event->getRequest(); + $request->setLocale($locale); +} +``` + +> **Attention** La modification de la `locale` dans un contrôleur sera ignorée par les services dans la majoritée des cas. + +--- + +## Gestion de la `locale` (3) + +### Définir la `locale` via les paramètres de l'action + +```php +class LocalizedController extends Controller +{ + /** + * @Route( + * "/{_locale}/my-page", + * requirements = { "_locale"="fr|en" } + * ) + */ + public function localizedAction() + { + // ... + } +} +``` + +--- + +## Gestion de la `locale` (4) + +### Définir la `locale` par défaut + +```php +# app/config/config.yml +framework: + # ... + translator: { fallbacks: ['%locale%'] } + +# app/config/parameters.yml +parameters: + # ... + locale: en +``` + +--- + +## Utilisation du service `translator` + +```php + +use Symfony\Component\Translation\TranslatorInterface; + +//... + +public function localizedAction(TranslatorInterface $translator) +{ + $translated = $translator->trans( + 'my.translation.key', // Clé de la chaine à traduire + ['key' => $val ], // Variables à injecter, optionnel + ); +} +``` + +--- + +## Utilisation dans un template Twig + + + +```twig + + + +{% trans %}Hello %name%{% endtrans %} + + + +{{ 'my.translation.key' | trans() }} + + + +{% trans with { '%foo%': 'bar' } %}Hello %foo%{% endtrans %} + +{{ 'my.translation.key' | trans({ '%foo%': 'bar' }) }} + +``` +--- + +## Pluralisation (1) + +### Simple +``` +Il y a une pomme|Il y a %count% pommes +``` + +### Intervalles et valeurs spécifiques +``` +{0} Il n'y a aucune pomme. | +[1,20[ Il y %count% pommes. | +[20,Inf[ Il y a beaucoup de pommes. +``` + +--- + +## Pluralisation (2) + +### Utilisation + +```php +$translator->transchoice( + 'my.translation.key', // Clé de la chaine à traduire + $count, // Nombre d'occurences pour la pluralisation + [ 'key' => $val ], // Variables à injecter +); +``` + +--- + +## Organisation par domaine + +--- + +## Gestion des traductions + +### Générer/mettre à jour les fichiers XLIFF +### Manipuler les fichiers XLIFF +### Ajout de ressources supplémentaires + +--- + +## Générer/mettre à jour les fichiers XLIFF + +```bash +bin/console translation:update --output-format=xlf --force +``` + +--- + +## Manipuler les fichiers XLIFF + +> Démo de [Virtaal](http://virtaal.translatehouse.org/) + +--- + +## Utilisation du micro-kernel + +--- + +## Ajout de ressources supplémentaires + +```yaml +# app/config/config.yml +framework: + translator: + paths: + - '%kernel.project_dir%/translations' +``` +--- + +## Les tests + +--- + +## Gestion des assets avec Webpack + +--- + +## Formulaires et gestion des thèmes + +--- + # Licence ## CC BY-NC-SA 3.0 FR