1

我有一个法语申请。当我运行我的应用程序并测试一个表单时,我收到了一条英文消息“电子邮件:应该看起来像一个电子邮件地址。”。当我保存我的“fr.yml”时,我收到这条消息:“电子邮件:ne semble pas être une adresse email”,法语,就像我想要的那样。它仅出现在 authlogic 的字段中,并且在上个月使用相同的代码工作。

这是 application.rb :

  require File.expand_path('../boot', __FILE__)

  # Pick the frameworks you want:
  require "active_record/railtie"
  require "action_controller/railtie"
  require "action_mailer/railtie"
  require "active_resource/railtie"
  require "sprockets/railtie"
  # require "rails/test_unit/railtie"

  if defined?(Bundler)
    # If you precompile assets before deploying to production, use this line
    Bundler.require(*Rails.groups(:assets => %w(development test)))
    # If you want your assets lazily compiled in production, use this line
    # Bundler.require(:default, :assets, Rails.env)
  end

  module Onopia
    class Application < Rails::Application
      # Settings in config/environments/* take precedence over those specified here.
      # Application configuration should go into files in config/initializers
      # -- all .rb files in that directory are automatically loaded.

      # Custom directories with classes and modules you want to be autoloadable.
      # config.autoload_paths += %W(#{config.root}/extras)

      # Only load the plugins named here, in the order given (default is alphabetical).
      # :all can be used as a placeholder for all plugins not explicitly named.
      # config.plugins = [ :exception_notification, :ssl_requirement, :all ]

      # Activate observers that should always be running.
      # config.active_record.observers = :cacher, :garbage_collector, :forum_observer

      # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
      # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
      # config.time_zone = 'Central Time (US & Canada)'

      # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
      # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
      config.i18n.default_locale = :fr

      # Configure the default encoding used in templates for Ruby 1.9.
      config.encoding = "utf-8"

      # Configure sensitive parameters which will be filtered from the log file.
      config.filter_parameters += [:password]

      # Enable the asset pipeline
      config.assets.enabled = true

      # Version of your assets, change this if you want to expire all your assets
      config.assets.version = '1.1'

      # Configure generators values. Many other options are available,
      # be sure to check the documentation.
      #config.generators do |g|
      #  g.test_framework :rspec, :fixture => false
      #end

      config.action_mailer.default_url_options = { :host => 'localhost:3000' }
      config.assets.initialize_on_precompile = false
    end

    if defined?(Bundler)
      Bundler.require(:default, :assets, Rails.env)
    end
  end

这是我的宝石清单:

    actionmailer (3.2.2)
    actionpack (3.2.2)
    activeadmin (0.4.3)
    activemodel (3.2.2)
    activerecord (3.2.2)
    activeresource (3.2.2)
    activesupport (3.2.2)
    addressable (2.2.7)
    archive-tar-minitar (0.5.2)
    arel (3.0.2)
    authlogic (3.1.0)
    autotest-rails (4.1.1)
    bcrypt-ruby (3.0.1)
    blankslate (2.1.2.4)
    bourbon (1.4.0)
    builder (3.0.0)
    bundler (1.1.2)
    capybara (1.1.2)
    capybara-firebug (0.0.10)
    capybara-webkit (0.9.0)
    childprocess (0.3.1)
    coderay (1.0.6)
    coffee-rails (3.2.2)
    coffee-script (2.2.0)
    coffee-script-source (1.2.0)
    columnize (0.3.6)
    cucumber (1.1.9)
    cucumber-rails (1.2.1)
    database_cleaner (0.7.0)
    devise (2.0.4)
    diff-lcs (1.1.3)
    email_spec (1.2.1)
    erubis (2.7.0)
    execjs (1.3.0)
    factory_girl (2.3.2)
    factory_girl_rails (1.4.0)
    fastercsv (1.5.4)
    ffi (1.0.11)
    formtastic (2.1.1)
    galetahub-simple_captcha (0.1.3)
    gherkin (2.9.3)
    has_scope (0.5.1)
    heroku (2.24.0)
    hike (1.2.1)
    i18n (0.6.0)
    inherited_resources (1.3.1)
    jbuilder (0.4.0)
    journey (1.0.3)
    jquery-rails (2.0.2)
    json (1.6.6)
    kaminari (0.13.0)
    launchy (2.0.5)
    linecache19 (0.5.12)
    mail (2.4.4)
    meta_search (1.1.3)
    metaclass (0.0.1)
    method_source (0.7.1)
    mime-types (1.18)
    mocha (0.10.0)
    multi_json (1.0.4)
    netrc (0.7.1)
    nifty-generators (0.4.6)
    nokogiri (1.5.2)
    orm_adapter (0.0.7)
    pg (0.13.2)
    pickle (0.4.10)
    polyamorous (0.5.0)
    polyglot (0.3.3)
    prawn (0.8.4)
    prawn-core (0.8.4)
    prawn-layout (0.8.4)
    prawn-security (0.8.4)
    pry-nav (0.2.0)
    pry-remote (0.1.1)
    rack (1.4.1)
    rack-cache (1.2)
    rack-ssl (1.3.2)
    rack-test (0.6.1)
    rails (3.2.2)
    railties (3.2.2)
    rake (0.9.2.2)
    rdoc (3.12)
    responders (0.9.1)
    rest-client (1.6.7)
    rspec (2.8.0)
    rspec-core (2.8.0)
    rspec-expectations (2.8.0)
    rspec-mocks (2.8.0)
    rspec-rails (2.8.1)
    ruby-debug-base19 (0.11.25)
    ruby-debug19 (0.11.6)
    ruby_core_source (0.1.5)
    rubyzip (0.9.7)
    sass (3.1.15)
    sass-rails (3.2.5)
    selenium-webdriver (2.20.0)
    shoulda-context (1.0.0)
    shoulda-matchers (1.0.0)
    simple_form (2.0.1)
    simplecov (0.5.4)
    simplecov-html (0.5.3)
    simplecov-rcov (0.2.3)
    slop (2.4.4)
    spork (0.8.5)
    sprockets (2.1.2)
    sqlite3 (1.3.5)
    term-ansicolor (1.0.7)
    thor (0.14.6)
    tilt (1.3.3)
    treetop (1.4.10)
    tzinfo (0.3.33)
    uglifier (1.2.4)
    warden (1.1.1)
    xpath (0.1.4)
    ZenTest (4.5.0)

这是我的 fr.yml:

    # French translations for Ruby on Rails
    # by Christian Lescuyer (christian@flyingcoders.com)
    # contributors:
    # - Sebastien Grosjean - ZenCocoon.com
    # - Bruno Michel - http://github.com/nono
    # - Tsutomu Kuroda - http://github.com/kuroda (t-kuroda@oiax.jp)

    fr:
      date:
        formats:
          default: "%d/%m/%Y"
          short: "%e %b"
          long: "%e %B %Y"
        day_names:
          - lundi
          - mardi
          - mercredi
          - jeudi
          - vendredi
          - samedi
          - dimanche
        abbr_day_names:
          - lun
          - mar
          - mer
          - jeu
          - ven
          - sam
          - dim
        month_names:
          - ~
          - janvier
          - février
          - mars
          - avril
          - mai
          - juin
          - juillet
          - août
          - septembre
          - octobre
          - novembre
          - décembre
        abbr_month_names:
          - ~
          - jan.
          - fév.
          - mar.
          - avr.
          - mai
          - juin
          - juil.
          - août
          - sept.
          - oct.
          - nov.
          - déc.
        order:
          - :day
          - :month
          - :year

      time:
        formats:
          default: "%d %B %Y %H:%M:%S"
          short: "%d %b %H:%M"
          long: "%A %d %B %Y %H:%M"
        am: 'am'
        pm: 'pm'

      datetime:
        distance_in_words:
          half_a_minute: "une demi-minute"
          less_than_x_seconds:
            zero: "moins d'une seconde"
            one: "moins d'une seconde"
            other: "moins de %{count} secondes"
          x_seconds:
            one: "1 seconde"
            other: "%{count} secondes"
          less_than_x_minutes:
            zero: "moins d'une minute"
            one: "moins d'une minute"
            other: "moins de %{count} minutes"
          x_minutes:
            one: "1 minute"
            other: "%{count} minutes"
          about_x_hours:
            one: "environ une heure"
            other: "environ %{count} heures"
          x_days:
            one: "1 jour"
            other: "%{count} jours"
          about_x_months:
            one: "environ un mois"
            other: "environ %{count} mois"
          x_months:
            one: "1 mois"
            other: "%{count} mois"
          about_x_years:
            one: "environ un an"
            other: "environ %{count} ans"
          over_x_years:
            one: "plus d'un an"
            other: "plus de %{count} ans"
          almost_x_years:
            one: "presqu'un an"
            other: "presque %{count} ans"
        prompts:
          year: "Année"
          month: "Mois"
          day: "Jour"
          hour: "Heure"
          minute: "Minute"
          second: "Seconde"

      number:
        format:
          separator: ","
          delimiter: " "
          precision: 3
          significant: false
          strip_insignificant_zeros: false
        currency:
          format:
            format: "%n %u"
            unit: "€"
            separator: ","
            delimiter: " "
            precision: 2
            significant: false
            strip_insignificant_zeros: false
        percentage:
          format:
            delimiter: ""
        precision:
          format:
            delimiter: ""
        human:
          format:
            delimiter: ""
            precision: 2
            significant: true
            strip_insignificant_zeros: true
          storage_units:
            format: "%n %u"
            units:
              byte:
                one: "octet"
                other: "octets"
              kb: "ko"
              mb: "Mo"
              gb: "Go"
              tb: "To"
          decimal_units:
            format: "%n %u"
            units:
              unit: ""
              thousand: "millier"
              million: "million"
              billion: "milliard"
              trillion: "billion"
              quadrillion: "million de milliards"

      support:
        array:
          words_connector: ", "
          two_words_connector: " et "
          last_word_connector: " et "
        select:
          prompt: "Veuillez sélectionner"

      helpers:
        select:
          prompt: "Veuillez sélectionner"
        submit:
          create: "Créer un %{model}"
          update: "Modifier ce %{model}"
          submit: "Enregistrer ce %{model}"

      attributes:
        created_at: "Créé le"
        updated_at: "Modifié le"

      errors:
        format: "%{attribute} : %{message}"
        messages: &errors_messages
          inclusion: "n'est pas inclus(e) dans la liste"
          exclusion: "n'est pas disponible"
          invalid: "n'est pas valide"
          confirmation: "ne concorde pas avec la confirmation"
          accepted: "doit être accepté(e)"
          empty: "doit être rempli(e)"
          blank: "doit être rempli(e)"
          too_long: "est trop long (pas plus de %{count} caractères)"
          too_short: "est trop court (au moins %{count} caractères)"
          wrong_length: "ne fait pas la bonne longueur (doit comporter %{count} caractères)"
          not_a_number: "n'est pas un nombre"
          not_an_integer: "doit être un nombre entier"
          greater_than: "doit être supérieur à %{count}"
          greater_than_or_equal_to: "doit être supérieur ou égal à %{count}"
          equal_to: "doit être égal à %{count}"
          less_than: "doit être inférieur à %{count}"
          less_than_or_equal_to: "doit être inférieur ou égal à %{count}"
          odd: "doit être impair"
          even: "doit être pair"
        template: &errors_template
          header:
            one: "Impossible d'enregistrer ce %{model} : 1 erreur"
            other: "Impossible d'enregistrer ce %{model} : %{count} erreurs"
          body: "Veuillez vérifier les champs suivants : "

      activerecord:
        errors:
          messages:
            taken: "n'est pas disponible"
            record_invalid: "La validation a échoué : %{errors}"
            <<: *errors_messages
          template:
            <<: *errors_template
          full_messages:
            format: "%{attribute} %{message}"

        attributes:
          models:
            user: Utilisateur
            account: "Compte"
            bank: "Banque"
          user:
            username: Pseudo
            email: Email
            password: Mot de passe
          account:
            login: "Identifiant"
            password: "Mot de passe"
            account_type_id: "Type"

      home:
        successfully_updated: "Votre mot de passe a été modifié"
        index:
          submit: "Valider"
          remember: 'Me rappeler mon not de passe'

      authlogic:
        error_messages:
          login_blank: "doit être rempli(e)"
          login_not_found: "n'est pas valide"
          login_invalid: "doit contenir uniquement des lettres, des nombres, des espaces, et .-_@ s'il vous plaît."
          consecutive_failed_logins_limit_exceeded: La limit de tentatives de connexion consectuives a été dépassée. Le compte à été désactivé.
          email_invalid: ne semble pas être une adresse email
          password_blank: "doit être rempli(e)"
          password_invalid: "n'est pas valide"
          not_active: "Votre compte n'est pas actif"
          not_confirmed: "Votre compte n'est pas confirmé"
          not_approved: "Votre compte n'est pas approuvé"
          no_authentication_details: "Vous n'avez pas fournis les details pour vous authentifier."
        models:
          user: "Utilisateur"
          user_session: "Session utilisateur"
        attributes:
          user_session:
            username: Pseudo
            login: Login
            email: Email
            password: "Mot de passe"
            remember_me: "se souvenir de moi"

      simple_captcha:
        label: "Veuillez saisir le code ci-dessous:"
        message:
          user: "le code de sécurité n'est pas valide"

你能帮助我吗?

谢谢。

更新:我在这个函数的文件“authlogic/acts_as_authentic/email.rb”中放了一个断点:

    "validates_format_of_email_field_options" 

当我测试 I18n.t('error_messages.email_invalid') 我有这个消息:

    translation missing: en.authlogic.error_messages.email_invalid 

因此,authlogic 采用默认消息。当我尝试这个时:

    Onopia::Application.config.i18n.default_locale 

我有 :

    :fr

我不明白。也许在我的语言环境之前加载了 authlogic ???

4

1 回答 1

1

application.rb中,还设置当前语言环境:

i18n.config.default_locale = :fr
i18n.config.locale = :fr

只是不要问我为什么:)

于 2012-07-26T21:35:51.183 回答