Logomotion: suites des slides Symfony3

This commit is contained in:
wpetit 2017-12-26 17:38:01 +01:00
parent cdc80c6a5f
commit 63cb07d03e

View File

@ -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
<!-- La variable %name% est directement injectée depuis le contexte Twig --!>
{% trans %}Hello %name%{% endtrans %}
<!-- Via la notation "filtre" -->
{{ 'my.translation.key' | trans() }}
<!-- Avec des paramètres supplémentaires -->
{% 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 <language> --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