Utiliser HTML dans un fichier de traduction Rails
J'ai quelques traductions dans mon application Rails (config/locale/[fr|fr].yml) et je l'utilise dans mes vues avec <%=t "teasers.welcome" %>
. Exemple:
teasers:
welcome: "<strong>Welcome</strong> to the Website ..."
Dans Rails 2.3.8 cela fonctionne très bien, avec Rails 3, le code HTML est échappé et traduit en <
... Comment puis-je empêcher cette forme de traduction et utiliser HTML dans Mes fichiers de traduction comme dans Rails 2.3.8?
2 réponses
Je suppose que c'est parce que faire
<%= t("blah") %>
Dans rails 2.x, maintenant est l'équivalent de faire
<%=h t("blah") %>
Lorsque vous utilisez rails 3.
Passe à l'échappement XSS activé par défaut pour les rails.
Pour résoudre ce problème, et encore une fois à partir des notes de version:
Vous n'avez plus besoin d'appeler h(string) pour échapper à la sortie HTML, il est activé par par défaut dans tous les modèles de vue. Si vous vous voulez la chaîne non échappée, appeler raw(chaîne de caractères).
Il suffit donc de remplacer
<%= t("blah") %>
Par
<%= raw t("blah") %>
Autre que l'utilisation de raw
, Il existe un autre moyen non documenté (mais officiel) de le faire.
Toutes les clés se terminant par _html
sont automatiquement rendues non échappées.
Renommez la clé de
teasers:
welcome: "<strong>Welcome</strong> to the Website ..."
À
teasers:
welcome_html: "<strong>Welcome</strong> to the Website ..."