代码之家  ›  专栏  ›  技术社区  ›  Paul Schreiber Jon Lin

如何国际化/本地化我的rails插件?

  •  3
  • Paul Schreiber Jon Lin  · 技术社区  · 14 年前

    我写了一个 validates_word_count plugin . 我想把错误信息存储在一个YAML文件中,这样就可以很容易地翻译它们。

    我的插件的文件布局如下:

    validates_word_count/
      init.rb
      lib/
        validates_word_count.rb
        locale/
          en.yml
    

    我的YAML文件如下所示:

    en:
      validates_word_count:
        errors:
          messages:
            too_few_words: "has too few words (minimum is %d words)"
            too_many_words: "has too many words (maximum is %d words)"
    

    不过,如果我打电话 I18n.translate('validates_word_count.errors.messages.too_few_words') ,我得到这个错误:

    translation missing: en, validates_word_count, errors, messages, too_few_words
    

    如何设置我的插件/区域设置以便I18n.translate()工作?

    1 回复  |  直到 14 年前
        1
  •  3
  •   Paul Schreiber Jon Lin    14 年前

    答案有两部分。
    一。使用标准目录布局:

    validates_word_count/
    init.rb
       lib/
         validates_word_count.rb
       config/
         locales/
           en.yml
    


    2。在init.rb中,添加以下行:

    Dir[File.join("#{File.dirname(__FILE__)}/config/locales/*.yml")].each do |locale|
    I18n.load_path.unshift(locale)
    end