1

私は自分の Rails アプリケーション (pt.yml) の翻訳を書いています。これは、すべてのアクティブ レコード エラー メッセージをポルトガル語に翻訳するものです。

  activerecord:
    models:
      user: Usuário
      feedback: Contato
  attributes:
    user:
      password: "senha"
      phone_number: "celular"
      first_name: "nome"
      last_name: "sobrenome"
      password_confirmation: "Confirmação de senha"
    feedback:
      title: "Título"
      name: "Nome"
      message: "Mensagem"
    report:
      before_photo: "A foto do foco"
  errors:
    template:
      header:
        one: "1 erro impediu que o %{model.model_name.human} fosse salvo"
        other: "%{count} erros impediram que o %{model}  fosse salvo"
    messages:
      blank: "é obrigatório."
      confirmation: "não confere."
      empty: "é obrigatório."
      exclusion: "está reservado."
      invalid: "não é válido."
      taken: "já está em uso."
      too_long: "é muito longo. (mínimo de %{count} caracteres)"
      too_short: "é muito curto. (mínimo de %{count} caracteres)"
      not_a_number: "não é um número."

問題は、属性が男性的または女性的である可能性があり、エラー メッセージが性別に依存する必要があることです。たとえば、「é obrigatório または é obrigatória」です。エラーメッセージを生成するときに属性の性別を処理する簡単な解決策はありますか?

4

2 に答える 2

2

各モデルの属性ごとに異なるエラー メッセージを使用できることに気付きました。config/locales/pt.yml は次のようになります。

pt:
    activerecord:
        models:
            user: Usuário
        attributes:
            password: "Senha"
            first_name: "Nome"
        errors:
            models:
                user:
                    attributes:
                        password:
                            blank: "é obrigatória."
                        first_name:
                            blank: "é obrigatório."

したがって、pt -> エラー -> モデル -> #{model_name} -> 属性 -> #{attribute_name} は、属性ごとにこれらのカスタムの性別固有のエラー メッセージの場所を指定します。これが誰にも役立つことを願っています:)

于 2013-11-04T13:58:44.603 に答える
0

これは、問題の適切な解決策というよりは回避策ですが、あまり気にしなければ、ラテン語派生言語の良いヒントになるかもしれません。

また、形容詞を属性の性別に一致させるのに苦労しました (英語には存在しない問題)。その後、常にフィールドを参照する必要があることがわかりました。

Female attribute -> The field must not be blank
Male attribute -> The field must be whatever

そうすることで、DRY er アプローチを実現できます。

特にポルトガル語の場合、私の場合は次のようになります。

  # ActiveRecord
  errors:
    messages:
      empty: "O campo é obrigatório."
      blank: "é campo obrigatório." # another idea
于 2014-10-27T12:20:23.453 に答える