Il existe plusieurs méthodes pour traduire une application (angulaire). Les principales méthodes principales sont:
et
Pour autant que je sache, i18n est plus facile pour le référencement en raison de la navigation propre à l’URL avec
par exemple
app.com/de
app.com/en
par contre, avec ngx-translate, il est plus facile de passer d’une langue à l’autre.
Je sais que le créateur de ngx-translate a été embauché par Angular pour son travailQuelqu'un peut-il me dire quelles sont les principales différences (avantages/inconvénients)?
Je pense que cette question répond à votre question: https://github.com/ngx-translate/core/issues/495
Selon @ocombe , L'idée derrière ngx-translate library a toujours été de fournir un support pour i18n jusqu'à ce que Angular se rattrape, après quoi cette bibliothèque sera probablement obsolète. Pour le moment, il existe encore quelques différences entre Angular i18n et cette bibliothèque:
Angular ne fonctionne qu'avec une langue à la fois, vous devez recharger complètement l'application pour changer de langue. Le support JIT signifie seulement que cela fonctionne avec JIT, mais vous devez toujours fournir les traductions au démarrage car il remplacera le texte de vos modèles lors de la compilation, alors que cette bibliothèque utilise des liaisons, ce qui signifie que vous pouvez modifier les traductions à tout moment. . L'inconvénient est que les liaisons utilisent de la mémoire, donc la méthode Angular est plus performante. Mais si vous utilisez OnPush
pour vos composants, vous ne remarquerez probablement jamais la différence.
Angular ne prend en charge que l'utilisation d'i18n dans vos modèles pour l'instant, je travaille sur la fonctionnalité qui vous permettra de l'utiliser dans votre code, mais le travail est toujours en cours. Cette bibliothèque fonctionne à la fois dans le code et les modèles
Angular prend en charge les formats XLIFF ou XMB (les deux formats sont XML), alors que cette bibliothèque prend en charge JSON par défaut, mais vous pouvez écrire votre propre chargeur pour prendre en charge le format de votre choix (il existe un chargeur pour les fichiers PO, par exemple).
Angular prend en charge les expressions ICU (pluriels et sélection), mais ngx-translate library ne
Angular prend en charge les espaces réservés HTML, y compris le code angulaire, alors que cette bibliothèque ne prend en charge que le code HTML normal (car il est exécuté à l'exécution, pas pendant la compilation, et il n'y a pas de compilation $ dans Angular comme dans AngularJS).
L’API de ngx-translate library est plus complète car elle est exécutée à l’exécution, elle peut offrir plus de choses (observables, événements, ...) que Angular n’a pas (mais pas vraiment besoin étant donné que vous ne pouvez pas changer les traductions)