Par exemple:Comment utiliser la clé i18n comme traduction par défaut dans Rails 3?
I18n.t('something')
devrait afficher uniquement
something
si la traduction manquante.
Par exemple:Comment utiliser la clé i18n comme traduction par défaut dans Rails 3?
I18n.t('something')
devrait afficher uniquement
something
si la traduction manquante.
non, pas possible. Si vous utilisez I18, vous devez avoir un fichier correspondant à la langue sinon I18n se plaindra.
Bien sûr, vous pouvez définir la langue par défaut dans votre fichier environment.rb. Devrait être près du fond et vous pouvez définir cela pour la langue que vous voulez, mais dans votre dossier locales/
, vous aurez besoin d'avoir une traduction correspondante yml
.
Il est possible: Voir la section 4.1.2 par défaut à Rails Internationalization (I18n) API.
I18n.t :missing, :default => 'Not here'
# => 'Not here'
côté Nota: cela pourrait aider à comprendre ce que Rails pense que le champ d'application actuel est (par exemple lors de l'utilisation « .quelquechose »)
http://unixgods.org/~tilo/Rails/which_l10n_strings_is_rails_trying_to_lookup.html
cette façon, vous pouvez mieux éviter d'avoir manquer traductions en raison d'une mauvaise insertion des chaînes de traduction dans le fichier L10n/clés incorrectes
La réponse de David est la bonne solution à la question, une autre façon (plus verbeuse) de le faire est de re sculptez et renvoyez la clé:
def translate_nicely(key)
begin
I18n.translate!(key)
rescue
key
end
end
Sur les rails 4, vous pouvez modifier le gestionnaire d'exceptions.
Ajouter ce qui suit à config/initializers/i18n.rb
:
module I18n
class MissingTranslationExceptionHandler < ExceptionHandler
def call(exception, locale, key, options)
if exception.is_a?(MissingTranslation)
key
else
super
end
end
end
end
I18n.exception_handler = I18n::MissingTranslationExceptionHandler.new
maintenant vous vues que vous pouvez juste faire:
<p><%= t "Not translated!" %></p>
Guide sur le sujet: http://guides.rubyonrails.org/i18n.html#using-different-exception-handlers
On pourrait vouloir ceci seulement pour un environnement spécifique seulement. L'ajouter en tant qu'initialiseur limite les possibilités. Mais merci pour le lien. –
Utilisation de la logique d'exception pour le débit conditionnel est généralement mauvaise pratique. Extrait du livre Refactoring: http://www.refactoring.com/catalog/replaceExceptionWithTest.html –
Je serais d'accord pour dire que c'est généralement une mauvaise pratique, je tiens également à dire que la solution de David est la bonne façon de se replier sur une valeur par défaut. Bien sûr, il y a aussi des cas (pragmatiques) où vous ne voulez pas que l'application expose une erreur et utilise une valeur par défaut raisonnable pour fournir une meilleure expérience utilisateur. Je dirais qu'il est juste de s'éloigner des lignes directrices et de gérer les erreurs bien quand c'est le cas. – Steventux