IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby on Rails Discussion :

Rails 3 - Traduction de 'header' de message d'erreur


Sujet :

Ruby on Rails

  1. #1
    Membre averti Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Points : 353
    Points
    353
    Par défaut Rails 3 - Traduction de 'header' de message d'erreur
    Avant de passer à la version 3.0.3 tout fonctionnait bien sous 2.3.8. Maintenant quoi que je fasse, le 'header' du message d'erreur ne 'comprend' pas l'interpolation du fichier de locale et affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "Impossible d'enregistrer %{model} : %{count} erreurs"
    Donc au lie d'afficher le nom du modèle en question et le nombre d'erreurs lors de validation, il affiche ces signes d'interpolation.
    Quelqu’un a déjà su résoudre ce problème?
    J'ai pris le dernier fichier 'YML' de locale FR sur github de I18n(ci-attaché) et juste rajouté 'autres attributs des modèles. Puis, comme j'utilise 'nifty-generators', j'ai du aussi modifier le helper 'error_messages_helper.rb':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    module ErrorMessagesHelper
      # Render error messages for the given objects. The :message and :header_message options are allowed.
      def error_messages_for(*objects)
        options = objects.extract_options!	
        options[:header_message] ||= t("activerecord.errors.template.header.other")
        options[:message] ||= t("activerecord.errors.template.body")
        messages = objects.compact.map { |o| o.errors.full_messages }.flatten
        unless messages.empty?
          content_tag(:div, :class => "error_messages") do
            list_items = messages.map { |msg| content_tag(:li, msg) }
            content_tag(:h2, options[:header_message]) + content_tag(:p, options[:message]) + content_tag(:ul, list_items.join.html_safe)
          end
        end
      end
     
      module FormBuilderAdditions
        def error_messages(options = {})
          @template.error_messages_for(@object, options)
        end
      end
    end
     
    ActionView::Helpers::FormBuilder.send(:include, ErrorMessagesHelper::FormBuilderAdditions)
    Sinon, les reste du message est correctement traduit. Bien sur, j'ai aussi modifié le fichier application.rb:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
    config.i18n.default_locale = :fr
    Rails-v : 3.0.3
    Ruby -v: 1.9.2.
    Merci d'avance.
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip fr.zip (2,8 Ko, 49 affichages)

  2. #2
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut
    Citation Envoyé par Javix Voir le message
    Avant de passer à la version 3.0.3 tout fonctionnait bien sous 2.3.8. Maintenant quoi que je fasse, le 'header' du message d'erreur ne 'comprend' pas l'interpolation du fichier de locale et affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "Impossible d'enregistrer %{model} : %{count} erreurs"
    Donc au lie d'afficher le nom du modèle en question et le nombre d'erreurs lors de validation, il affiche ces signes d'interpolation.
    Quelqu’un a déjà su résoudre ce problème?
    J'ai pris le dernier fichier 'YML' de locale FR sur github de I18n(ci-attaché) et juste rajouté 'autres attributs des modèles. Puis, comme j'utilise 'nifty-generators', j'ai du aussi modifier le helper 'error_messages_helper.rb':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    module ErrorMessagesHelper
      # Render error messages for the given objects. The :message and :header_message options are allowed.
      def error_messages_for(*objects)
        options = objects.extract_options!	
        options[:header_message] ||= t("activerecord.errors.template.header.other")
        options[:message] ||= t("activerecord.errors.template.body")
        messages = objects.compact.map { |o| o.errors.full_messages }.flatten
        unless messages.empty?
          content_tag(:div, :class => "error_messages") do
            list_items = messages.map { |msg| content_tag(:li, msg) }
            content_tag(:h2, options[:header_message]) + content_tag(:p, options[:message]) + content_tag(:ul, list_items.join.html_safe)
          end
        end
      end
     
      module FormBuilderAdditions
        def error_messages(options = {})
          @template.error_messages_for(@object, options)
        end
      end
    end
     
    ActionView::Helpers::FormBuilder.send(:include, ErrorMessagesHelper::FormBuilderAdditions)
    Sinon, les reste du message est correctement traduit. Bien sur, j'ai aussi modifié le fichier application.rb:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
    config.i18n.default_locale = :fr
    Rails-v : 3.0.3
    Ruby -v: 1.9.2.
    Merci d'avance.
    Salut!

    J'ai déjà eu un problème avec la gem I18n lorsque j'avais instalé Rails 3 et que je repassais sur Rails 2.3.x. Je devais supprimer la gem I18n pour que ne pète pas ...
    Bon ok ce n'est pas le même problème que toi

    As tu la dernière version de I18n?

  3. #3
    Membre averti Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Points : 353
    Points
    353
    Par défaut
    Avant, sous Rails 2.3.8 tout fonctionnait correctement. Dans ce cas-là, j'ai du installé I18n moi-même.
    Par contre, avec Rails > 3.0, le gem I18n est installé automatiquement et j'ai la dernière version:

  4. #4
    Membre averti Avatar de Javix
    Inscrit en
    Juin 2007
    Messages
    531
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 531
    Points : 353
    Points
    353
    Par défaut
    Il parait que personne n'a jamais rencontré ce problème ? Même le ticket que j'ai soumis sur le bugs tracker de I18n http://i18n.lighthouseapp.com/projec...-i18n/overview reste toujours non-résolu

Discussions similaires

  1. [Zend Form] Traduction des messages d'erreur
    Par Coyote Terrorist dans le forum Zend_Form
    Réponses: 8
    Dernier message: 01/08/2011, 20h33
  2. Réponses: 2
    Dernier message: 01/09/2010, 10h36
  3. Réponses: 1
    Dernier message: 23/03/2009, 16h56
  4. Messages d'erreur : traduction en français
    Par Didier Pitre dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 24/04/2008, 08h28
  5. [JpGraph] message d'erreur: HTTP headers have already been sent
    Par coco38 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 09/04/2007, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo