L20n est un framework de localisation Open Source de Mozilla. Il a été conçu pour être très expressif avec plusieurs fonctionnalités comme l'adaptation aux tailles d'écrans, une bonne séparation des préoccupations, le support simplifié de la pluralisation, le support des valeurs par défaut lorsqu'il y a plusieurs variantes, et plus encore.
Staś Małolepszy explique la motivation derrière ce projet :
La localisation des projets Mozilla nous a appris que 90 à 95% des messages présents dans une interface graphique sont des simples paires de clé-valeur qui ne nécessitent pas des connaissances avancées en fonctionnalités de localisation (L20n). Alors pourquoi développer L20n? Parce que ce sont les 5% restants qui font et défont l'interface graphique de votre application. Ils sont trop importants pour être ignorés et sont responsables de l'expérience de votre utilisateur.
En tant que tel, le projet essaye de garder simple les scénarios simples, mais supporte également les localisations complexes en cas de besoin.
Voici quelques fonctionnalités intéressantes de L20n :
- L'expressivité - L20n propose un support pour les interpolations (pour construire des entités plus complexes), les pluralisations, le traitement de cas grammaticaux, la possibilité d'avoir de multiples variantes de la même entité, et ainsi de suite, tous ces éléments se combinent pour créer un format très expressif.
- Sensibilité aux tailles d'écran - vous pouvez nommer différentes tailles d'écran et ensuite avoir différentes variantes d'entités cibles pour ces tailles d'écran.
- Une bonne séparation des préoccupations - la localisation liée à des complexités peut être isolée dans la langue considérée sans affecter les autres langues utilisées dans l'application ou même dans le code source de l'application.
- Une API sécurisée, non-bloquante avec en plus la possibilité de se lier aux éléments HTML pour les rendre localisables.
Un concept simple mais puissant introduit par L20n est le concept de valeurs par défaut - ce qui vous permet de définir plusieurs variantes pour une entité mais également de définir une valeur par défaut dans le cas où une variante spécifique n'est pas demandée. Cela permet aux traducteurs de modifier progressivement leur contenu et d'ajouter même d'autres variantes, tout en assurant que le code existant qui utilise ces entités n'est pas affecté (en choisissant la valeur par défaut). C'est ce qui permet des localisations différentes pour avoir différents degrés de complexité sans avoir à complexifier toutes les autres localisations.
Voici quelques ressources pour en savoir davantage sur le projet :
- Le fichier Lisez-Moi du projet
- Un projet de démonstration qui montre comment un fichier HTML peut être localisé avec L20n
- Un tutoriel étape par étape pour introduire les différents concepts
- La documentation
- Un ensemble de FAQs et de réponses
L20n est en développement depuis 2012 et la release candidate pour la version 1.0 est sortie depuis le mois de novembre 2013.