Internationalization

links:

- https://symfony.com/doc/current/translation.html#translation-providers
- https://borntobeglobal.com/2020/05/26/web-application-localization-best-practices/
- https://lokalise.com/

Symfony steps

image-20220311142156491

Keyword approach

  • The choice of which method to use is entirely up to you, but the “keyword” format is often recommended for multi-language applications
  • Keywords can be nested in yaml or php

ICU message formating

  • Rearrange messages according to grammar
  • complex

Translatable objects

image-20220311155800256

Extracting Translation Contents and Updating Catalogs Automatically

image-20220311155918361

Database translation with doctrine

https://borntobeglobal.com/2020/05/26/web-application-localization-best-practices/

  • Size of words
  • No text in images
  • Pseudo localization to test
  • Don’t use too little strings and concatenation. Hard to translate for different grammars
  • Punctuation in strings
  • add a button to switch language (don’t rely on browser)
  • don’t use flags, use language names
  • sort on server
  • give context to translators

Possible

  • définir plusieurs domaines (security, application ..). Le domaine peut etre défini en haut d’un fichier twig : % trans_default_domain 'app' %}
  • pour chaque domaine : un fichier par langue
  • Config translation.yaml avec default lang et définit où sont les fichiers
  • en index on peut utiliser :
    • messages
    • code (nestable)
  • Les messages peuvent etre traduits :
    • dans les templates (avec filtre trans)
    • ou dans les services avec new TranslatableMessage pour ne pas avoir a passer les arguments
  • Avoir des parametres en twig grace au tag trans auquel on peut passer un contexte : variable au format %%
  • Commandes utiles:
    • dump tous les messages a traduire pour une langue
    • remplir par défaut les messages a traduire pour une langue

Stockage :

Avec Lokalize

  • on connect le repo github
  • on donne le dossiers translation
  • on pull
  • tout s’affiche et est editable dans le saas
  • on push : ca fait une pull request
  • pas de dépendance