代码之家  ›  专栏  ›  技术社区  ›  Max Williams

使用I18n重写模型属性名-无法使其工作

  •  6
  • Max Williams  · 技术社区  · 14 年前

    我试图将用于描述用户模型的“login”属性的字符串重写为“User name”。我以为这是有预谋的 vendor/rails/activerecord/lib/active_record/locale/en.yml . 我试着在这里和我的 config/locales/en.yml 文件,在这两种情况下都不起作用(每次更改后我都会重新启动服务器)。

    en:
    ...
      activerecord:
        attributes:
             user:
               login: User Name
    

    4 回复  |  直到 14 年前
        1
  •  2
  •   Community Mike Kinghan    7 年前

    如果你们中的任何人在翻译没有加载时遇到问题,我会这样调试:

    首先我在 https://stackoverflow.com/a/10211540/474597 设置日志记录。


    一个陷阱是,第一把钥匙不一定是他们要用的钥匙。我见过这样的情况:它加载正确的键,然后寻找另一个没有翻译的键,从而得到英文翻译。我不得不在这两个键中输入译文。

    例如:我的Foo有多个Bar,Bar有多个Duu,Duu有一个price列。 为了翻译价格栏,我必须具备以下条件:

      activerecord:
        attributes:
          'foo/bar/duu':
            price: "price"
    

    :duu
    :"activerecord.attributes.duu.text"
    :"activerecord.errors.models.duu.attributes.text.blank"
    :"activerecord.errors.models.duu.blank"
    :"activerecord.errors.messages.blank"
    :"errors.attributes.text.blank"
    :"errors.messages.blank"
    :"activerecord.attributes.foo/bars/duus.text"
    
        2
  •  2
  •   Max Williams    9 年前

    我是应某人的要求在这里回答这个。。。我已经解决了这个问题,没有更新我的问题,抱歉。我的问题是对的,但没有正确的“路径”指向键:字段的名称在显示时被称为“标签”,它们在yaml树的:activerecord部分之外有自己的部分。

    正确的方法是

    en:
      user:
        labels:
          login: "User Name"
          email: "Email Address"
    

    其中“user”是小写的型号名称,login和email是字段。

        3
  •  1
  •   dquimper    12 年前
        4
  •  0
  •   Yannis    14 年前

    您可以将“用户名”字符串存储在英语单词文件:

    en:
     user:
       user_name: User Name
    

    <%= f.label :login, t('user.user_name') %>