Rails: supprimer les erreurs de traduction manquantes
Je suis à l'aide de l'internationalisation pour anglais (fr) et français (fr)j'ai utilisé de fr.yml pour une utilisation limitée et la plupart des traductions que je suis en train d'écrire en fr.yml.
Avec les paramètres régionaux fr tout fonctionne bien, mais avec fr il me montre l'erreur comme manquant de traduction d'envergure.
Par exemple si j'ai reçu quelque chose comme
<%= text_field_tag( "search", params[:search], :placeholder=>t("Search"), :class=>"search_input") %>
et je reçois de sortie pour fr est:
<input class="search_input" id="search" name="search" placeholder="<span class=" translation_missing"="" title="translation missing: en.Search">
Ce que je veux c'est qu'il doit désactiver les erreurs de traduction de l'anglaispuisque l'anglais est ma langue par défaut, mais pour certains cas, j'ai utilisé de la fr.yml.
Ou si cela n'est pas possible, alors tout message d'erreur doit être supprimé.
Grâce
source d'informationauteur Paritosh Singh
Vous devez vous connecter pour publier un commentaire.
La mise en œuvre de HTML manquant erreurs de traduction a été changé dans les Rails 4.1. Maintenant, au lieu de I18n de la bibliothèque est gérée à l'aide de vue de la couche. À savoir, dans les "traduire" méthode d'assistance (voir action_view/helpers/translation_helper.rb).
Un moyen propre de faire ça maintenant, c'est de remplacer la méthode d'assistance et de gérer l'exception de vous-même.
À première vue, l' Rails I18n guide semble assez bon, et de couvrir ce assez bien (par exemple, un exemple pour déclarer une exception personnalisée gestionnaire).
Mais selon ce billet il ne fonctionne pas dans les rails car 4.0.2 et jusqu' (mais il devrait être corrigé dans les derniers rails de la version 4.1).
Apparemment le comportement a changé et que le gestionnaire d'exception est ignoré maintenant.
Options disponibles:
raise: true
ce qui va forcer le exceptionhandler à être utilisé. E. g.t('.missing', raise: true)
.config.action_view.raise_on_missing_translations = true
(voir fusion billet pour plus d'info)t('.missing', default: 'use this instead')
I18n bibliothèque utilise gestionnaire d'exception de décider quoi faire avec les traductions manquantes.
Elle retourne par défaut "de la traduction manquante" message:
Vous pouvez étendre le gestionnaire d'exception à juste retour de clé de traduction lorsque la traduction est manquant:
Ensuite, en supposant que vous avez seulement des traductions en français:
Si vous ne voulez pas remplir les traductions de l'anglais, une solution possible serait ici vos traductions de secours français.
Vous pouvez atteindre cet objectif en ajoutant le code suivant à un initialiseur (eg.
config/initalizers/i18n.rb
) :Si le français est défini comme votre langue par défaut, cela devrait "fonctionne".
Sinon, vous devrez peut-être ajouter un repli de la règle de l'initialiseur :
essayer cette
et dans votre salle de.fichier yml écrire
Code est donné ci-dessous pour supprimer manque la traduction pour l'anglais, nous monkey patch MissingTranslation module I18n, en le mettant dans les initialiseurs.
Dans les Rails 4.1, je n'ai pas pu obtenir que cela fonctionne avec l'I18n gestionnaire d'exception (il y a quelques bugs, apparemment, voir nathanvda réponse.
Finalement, j'ai juste a remplacé le
message
fonction en ajoutant ceci àconfig/initializers/i18n.rb