2017-10-18 13 views
0

J'ai besoin de traduire des chaînes provenant d'un serveur en utilisant ngx/translate.ngx/translate - traduire seulement une partie d'une chaîne

Cela fonctionne très bien quand j'ai besoin de traduire une chaîne de caractères mais dans certains cas je n'ai besoin de traduire qu'une partie de la chaîne.

Par exemple: « bonjour Shay » ou « bonjour John »

Et je dois traduire que « bonjour » et laisser le nom tel quel. Je essayé:

this.i18n.instant('hello {Shay}') 

et dans le fichier en.json: "bonjour {var}": "Bonjour {var}"

mais sans succès. Des idées comment cela peut-il être fait?

Répondre

0

Vous recherchez des traductions paramétrées. Vous n'avez pas besoin de ce paramètre dans la clé de traduction. Essayez comme ceci:

en.json:

"hello_name": "Hello {{name}}" 
contrôleur

:

this.i18n.instant('hello_name', {name: 'Shay'}); 

ou dans le modèle:

{{ 'hello_name' | translate: {name: 'Shay'} }} 

https://github.com/ngx-translate/core#3-define-the-translations

+0

Adamek merci pour you'r répondre. vous êtes suggestion fonctionne pour moi avec des crochets doubles seulement mais ne résout pas mon problème. Le point est la clé venant du serveur contient le nom, donc je n'ai pas de clé permanente comme 'hello_name'. bien sûr, je peux utiliser 'hello_shay'.split (' _ ') mais je cherche une façon plus simple de le faire. – Shay

+0

Eh bien, ces deux choses doivent être séparées, vous ne devriez pas le retourner comme une chaîne de votre côté serveur. Vous devriez le faire comme je l'ai suggéré, certainement, c'est la meilleure pratique ... –

+0

Je ne connais pas votre cas d'utilisation, mais votre serveur devrait vous renvoyer juste des valeurs (comme le nom), il ne devrait pas se soucier du "bonjour" partie, c'est le travail de frontend. –