[Ruby on Rails] Comment japonaisiser le message d'erreur de l'objet Form (ActiveModel)

Résumé de cet article

-J'étais préoccupé par le problème que l'erreur de validation de l'objet Form n'a pas été traduite en japonais, je vais donc le laisser comme un mémorandum. ・ + Α En passant, j'ai abordé la différence entre ActiveRecord et ActiveModel.

Environnement de développement

Mac OS Catalina 10.15.4 série ruby 2.6 rails série 6.0

Conditions préalables

Nous avons introduit gem'rails-i18n 'et le paramètre de langue par défaut est déjà japonais. De plus, un fichier ja.yml a été créé dans le répertoire local de config.

Causes de l'échec de la traduction des messages d'erreur en japonais et contre-mesures

En conclusion, l'objet Form créé cette fois-ci est un modèle qui hérite du modèle actif par include ActiveModel: Model. Il semble que le problème était d'essayer de le traduire en japonais comme un modèle héritant d'activerecord.

ja.yml


ja:
  activerecord:
    models:
      detail:Des informations détaillées
      posts_tag:Publier
    attributes:
      user:
        name:Nom
      detail:
        age:âge
        pr:Déclaration PR
        area_id:résidence
        occupation_id:Métier
        interest_id:Intérêt
      posts_tag: 
        title:Titre
        content:Aperçu
        name:marque

ja.yml



ja:
  activerecord:
    models:
      detail:Des informations détaillées
    attributes:
      user:
        name:Nom
      detail:
        age:âge
        pr:Déclaration PR
        area_id:résidence
        occupation_id:Métier
        interest_id:Intérêt
  
  activemodel:
    models:
      posts_tag:Publier
    attributes:
      posts_tag: 
        title:Titre
        content:Aperçu
        name:marque

De côté

À propos, la différence entre ActiveRecord et ActiveModel héritée du modèle par défaut généré par rails g model``` est de savoir s'il est possible ou non de communiquer avec DB.

Le premier est possible, vous pouvez donc extraire les données déjà enregistrées avec le nom du modèle.find etc., mais le dernier ActiveModel ne peut généralement pas utiliser la méthode find.

D'ailleurs, en validation```validates uniqueness: true``Etc. ne peut pas être décrit dans ActiveModel car il est jugé s'il est unique en se référant aux données stockées dans la base de données.

Bien que ce soit pratique comme ça, Active Model est plutôt compliqué.... Quoi qu'il en soit, merci d'avoir lu jusqu'au bout!

Recommended Posts