Localisation japonaise des messages d'erreur Rails [objets de conception / formulaire, etc.]

Contexte

J'étudie pour devenir ingénieur sans expérience.

Lorsque j'écrivais une application simple, le message d'erreur de validation est resté bloqué en anglais Lorsque j'étudiais comment traduire le message d'erreur en japonais, Je n'ai pas trouvé d'article contenant toutes les informations que je souhaite connaître. J'ai créé un article en guise de mémorandum, en espérant qu'il sera utile à ceux qui étudient la programmation de la même manière. Je suis sûr qu'il y a encore des points qui n'ont pas encore été atteints, mais si vous avez des avis, veuillez nous le faire savoir dans les commentaires.

environnement

Écran avant changement (exemple)

Si rien n'est défini, le message d'erreur de validation sera affiché en anglais, comme indiqué dans l'image ci-dessous. スクリーンショット 2020-10-28 13.30.14.png

Écran après modification (exemple)

Après la modification, un message d'erreur sera émis en japonais, comme indiqué dans l'image ci-dessous. スクリーンショット 2020-10-28 13.33.32.png

Préparation à la localisation japonaise

・ Préparation ① (Installation de Gem)

Pour traduire le message d'erreur en japonais, utilisez le gem rails-i18n. Ajoutez la phrase suivante au Gemfile et exécutez l'installation du bundle dans le terminal.

gem 'rails-i18n'
#Mettez le code ci-dessus dans Gemfile

・ Préparation ② (changer le réglage de la langue locale)

Ensuite, ajoutez la phrase suivante à config / application.rb pour modifier le paramètre de langue. Si vous redémarrez le serveur après l'ajout, une partie du message d'erreur sera traduite en japonais, comme indiqué dans l'image ci-dessous.

config/application.rb


class Application < Rails::Application
    config.load_defaults 6.0
    #Ci-dessous, le code ci-dessous
    config.i18n.default_locale = :ja
    #Décrivez le code ci-dessus
  end

スクリーンショット 2020-10-28 13.55.18.png

Cependant, tel quel, le nom d'attribut du modèle reste en anglais. Donc, la prochaine fois, je le changerai en japonais.

・ Changez le nom de la colonne en japonais

Afin de changer le nom d'attribut du modèle, il est nécessaire de créer une table de correspondance en japonais. Créez un fichier appelé ja.yml dans config / locales / models / et décrivez le nom de la colonne et le japonais correspondant comme indiqué ci-dessous.

config/locales/models/ja.yml


ja:
  activerecord:
    models:
      item:Produit
    attributes:
      item:
        image:Image du produit
        name:Nom du produit
        details:Description du produit
        price:prix

Je voulais changer le nom d'attribut du modèle appelé item, donc je l'ai mis comme item dans le code. ** Veuillez modifier l'article dans le code ci-dessus en fonction du modèle que vous souhaitez modifier **.

・ Lisez le tableau de correspondance ci-dessus

Le fichier défini ci-dessus ne sera pas lu automatiquement. Alors, ajoutez une phrase pour lire ce fichier yml dans config / application.rb.

config/application.rb


class Application < Rails::Application
    config.load_defaults 6.0
    config.i18n.default_locale = :ja
#Ci-dessous, le code ci-dessous
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.yml').to_s]
#Décrivez le code ci-dessus
  end

Si vous avez configuré jusqu'à présent, tout doit être changé en notation japonaise comme indiqué ci-dessous.

スクリーンショット 2020-10-28 13.33.32.png

・ Passez à un message d'erreur facile à comprendre

Si vous utilisez un gem appelé rails-i18n, il convertira la plupart des messages d'erreur en japonais, Lorsque vous définissez vous-même la validation, comme indiqué ci-dessous La sortie peut ne pas être évidente à première vue. Dans ce cas, définissez vous-même le message d'erreur. Ce qui suit est un exemple.

[Exemple]

Lorsque vous utilisez ActiveHash pour sélectionner le nom de la préfecture dans un format déroulant et le valider vous-même スクリーンショット 2020-10-28 15.14.20.png

"Changer avant"

スクリーンショット 2020-10-28 15.09.18.png

Code dans le modèle validé


   #réduction
with_options presence: true do
   #réduction
    validates :prefecture_id, numericality: { other_than: 1 }
   #réduction
  end

«Après le changement»

スクリーンショット 2020-10-28 15.14.02.png

Code dans le modèle validé


   #réduction
with_options presence: true do
   #réduction
    validates :prefecture_id, numericality: { other_than: 1 ,message: 'Choisissez s'il vous plaît'}
   #réduction
  end

Vous pouvez le changer en japonais plus facile à comprendre en définissant des options telles que ** message: 'message content' ** comme décrit ci-dessus.

・ Si vous souhaitez ajouter plus de noms de colonnes

Si vous souhaitez ajouter d'autres noms de colonnes, ajoutez-les vous-même comme indiqué ci-dessous.

config/locales/models/ja.yml


ja:
  activerecord:
    models:
      item:Produit
    attributes:
      item:
        image:Image du produit
        name:Nom du produit
        details:Description du produit
        price:prix
        #À partir de là, écrivez vous-même la table de correspondance entre le nom de la colonne et le japonais, comme indiqué ci-dessous.
        category_id:Catégorie
        status_id:État du produit
        prefecture_id:Zone d'expedition

Lors de la traduction d'un objet Form défini indépendamment en japonais

・ Préparation

Si vous avez effectué les réglages ci-dessus, vous n'avez rien à faire. Sinon, suivez la procédure ci-dessus pour préparer (installer Gem, etc.) et créer une table de correspondance (ja.yml). Lisons la table de correspondance (ajoutée à config / application.rb).

-Edit config / locales / models / ja.yml

Ajoutez config / locales / models / ja.yml comme suit.

config/locales/models/ja.yml


ja:
  activerecord:
    models:
      item:Produit
    attributes:
      item:
        image:Image du produit
        name:Nom du produit
        price:prix
        details:Description du produit
#Ajoutez le code suivant ci-dessous à partir d'ici
  activemodel:
    attributes:
      user_purchase:
        city:Municipalité
        postal_code:Code postal
        phone_number:numéro de téléphone
        prefecture_id:Préfectures
        house_number:adresse
        building:Nom du bâtiment
#Ajoutez le code ci-dessus (veuillez changer le nom de la colonne, etc. par vous-même)

Pour traduire l'objet Form que vous avez défini vous-même en japonais, écrivez ** activemodel: ** et placez-le en dessous. Si vous ne le définissez pas correctement, il ne sera pas modifié en japonais.

Supplément

Puisqu'il est défini comme ActiveModel :: Model, il ne répond pas même si vous mettez le code dans les attributs: sous activerecord:.

Code dans le modèle qui définit l'objet Form


class UserPurchase
  include ActiveModel::Model #ActiveModel en lui-même::Le modèle est défini
  #réduction
end

config/locales/models/ja.yml


ja:
  activerecord:
    models:
      item:Produit
    attributes:
      item:
        image:Image du produit
        name:Nom du produit
        price:prix
        details:Description du produit
#Étant donné que le paramètre n'est pas ActiveRecord, l'écriture du code ci-dessous à partir d'ici ne répond pas

Japaneseisation de la devise

Le paramètre par défaut de périphérique, qui vous permet d'implémenter facilement les fonctions d'enregistrement des utilisateurs, est l'anglais. Cela peut également être changé en japonais.

Écran avant changement (exemple)

スクリーンショット 2020-10-28 16.08.08.png

Écran après modification (exemple)

スクリーンショット 2020-10-28 16.08.16.png

・ Installation de Gem

Pour traduire les messages d'erreur de conception en japonais, utilisez les gemmes devise-i18n et devise-i18n-views. Ajoutez la phrase suivante au Gemfile et exécutez l'installation du bundle dans le terminal.

gem 'devise-i18n'
gem 'devise-i18n-views'
#Mettez le code ci-dessus dans Gemfile

・ Création d'une table de correspondance japonaise

Générez un fichier de traduction japonais avec la commande. Exécutez la commande suivante dans le terminal.

rails g devise:views:locale ja
#Si le résultat de l'exécution est affiché comme indiqué ci-dessous, il réussit.
  create  config/locales/devise.views.ja.yml

Assurez-vous que le fichier est généré correctement.

ruby:config/locales/devise.views.ja.yml


ja:
  activerecord:
    errors:
      models:
        user:
          attributes:
            email:
              taken: "Est déjà en cours d'utilisation."
              #Omis car il est trop long
    unlocks:
      new:
        resend_unlock_instructions: "Renvoyer la méthode de dégel du compte"
              #Ce qui précède est la dernière ligne

・ Changer le paramètre de langue des paramètres régionaux

Si vous l'avez déjà défini, cette étape n'est pas nécessaire. Sinon, ajoutez le code ci-dessous

config/application.rb


class Application < Rails::Application
    config.load_defaults 6.0
    #Ci-dessous, le code ci-dessous
    config.i18n.default_locale = :ja
    #Décrivez le code ci-dessus
  end

Lorsque vous avez terminé, redémarrez le serveur et il devrait être changé en japonais.

・ Si vous souhaitez ajouter plus de noms de colonnes

Si vous souhaitez ajouter d'autres noms de colonnes, ajoutez-les vous-même comme indiqué ci-dessous.

config/locales/models/ja.yml


ja:
  activerecord:
    errors:
      #Puisqu'il est long en dessous, il est omis
              confirmation: "Ne correspond pas au contenu."
    attributes:
      user:
        current_password: "Mot de passe actuel"
        name:Nom
        email: "adresse mail"
        password: "mot de passe"
        password_confirmation: "Confirmation du mot de passe"
        remember_me: "connectez-vous automatiquement à partir de maintenant"
     #Ajoutez votre propre nom de colonne et le japonais correspondant si nécessaire ci-dessous
        nickname: "surnom"
        first_name: "Nom"
        last_name: "Nom de famille"
        birthday: "Anniversaire"
     #Décrit comme ci-dessus
    models:
       user: "Utilisateur"
     #Puisqu'il est long en dessous, il est omis

Sommaire

Ce qui précède est la localisation japonaise du message d'erreur que j'ai créé. Si nécessaire, nous apporterons des corrections et des ajouts. Merci de visiter notre site. Si vous avez des questions, veuillez nous le faire savoir dans les commentaires.

Références

Message d'erreur de validation de la localisation japonaise de Rails Japaneseization of Rails Form objects Changer le format du message d'erreur affiché par Validates of ActiveRecord [Rails5] Japaneseize avec Devise-i18n J'ai fait référence à l'article ci-dessus. Cet article peut être écrit plus en détail, donc Veuillez vous y référer également.

Recommended Posts

Localisation japonaise des messages d'erreur Rails [objets de conception / formulaire, etc.]
[Rails] Localisation japonaise des messages d'erreur
[Rails] Afficher les messages d'erreur du formulaire de manière asynchrone
La route vers la japonaisisation des rails conçoit des messages d'erreur
[Ruby on Rails] Affichage individuel des messages d'erreur
Localisation japonaise du message d'erreur
[rails] erreur lors de l'installation du périphérique
[Rails] Localisation japonaise du message d'erreur lors de l'utilisation de l'objet Form
[Rails] Comment afficher les messages d'erreur individuellement
Test des messages d'erreur: Notes du didacticiel Rails - Chapitre 7
[Rails] concevoir
[Ruby on Rails] Comment japonaisiser le message d'erreur de l'objet Form (ActiveModel)
Introduction de Rspec et de la localisation japonaise des messages d'erreur
[Rails] Comment émettre des messages de réussite et d'erreur