La traduction dans les .yml avec le paramètre optionnel
Je veux faire une traduction my_translation
avec un paramètre facultatif. Par exemple:
> I18n.t('my_translation')
=> "This is my translation"
> I18n.t('my_translation', parameter: 1)
=> "This is my translation with an optional parameter which value is 1"
Est-ce possible?
Vous devez vous connecter pour publier un commentaire.
Oui, certainement. Il vous suffit d'écrire les traductions comme ceci:
Est le paramètre vraiment facultatif? Dans la traduction ci-dessus, vous devez fournir tous les paramètres.
Mise à JOUR: Désolé, j'ai répondu trop vite. Je ne pense pas que c'est facile à faire. Peut-être la façon la plus simple, c'est comme cela:
Je dirais que c'est possible, mais pas recommandé. Vous avez deux chaînes distinctes, en fonction de vos commentaires dans @Yanhao réponse, et je dirais même qu'ils devraient être deux entrées distinctes dans votre fichier yaml:
Depuis l'existence de l'
date
détermine quelle chaîne de caractères à afficher, vous pourriez peut-être tester son existence dans laparams
de hachage dans une méthode de contrôleur, d'attribuer le titre d'une variable, et ensuite l'utiliser dans une vue. Peut-être quelque chose comme:Si vous voulez comportement exactement comme vous l'avez décrit, vous auriez besoin de deux yaml entrées de toute façon, et vous auriez supplémentaire de convolution, et que vous feriez un I18n non-pas par la création d'une chaîne de caractères par la concaténation de deux chaînes, ce qui suppose un fixe grammaticales de la structure de la phrase (pour ne pas mentionner cela conduit à des traducteurs vers le haut du mur):
avec le code quelque chose comme ceci:
Donc, en résumé, je dirais aller avec deux ensemble de chaînes de caractères, comme dans le premier exemple.
C'est la façon dont je l'ai fait!
Premier jeu de ma traduction
Vérifier si la valeur est nulle
=>"This is my translation"
=> "This is my translation with an optional parameter which value is 1"