Ruby on Rails compatible japonais-anglais i18n

environnement

politique

Aperçu

  1. Placez un bouton de changement de langue dans l'en-tête
  2. Stockez les informations locales dans la variable de session session [: locale] etc. dans le contrôleur
  3. Utilisez before_action pour définir la langue avant de charger chaque page
  4. Écrivez la traduction dans le fichier yml
  5. Utilisé dans View etc.

la mise en oeuvre

1. Placez un bouton de changement de langue dans l'en-tête

Un bouton a été installé sur l'en-tête pour une commutation facile.

erb:application.html.erb


Installez ce qui suit dans l'en-tête
<% if session[:locale] == "en" || session[:locale].blank? %>
   <%= link_to "/home/change_language/ja" do %>
Japonais
   <% end %>
<% elsif session[:locale] == "ja" %>
   <%= link_to "/home/change_language/en" do %>
    English
   <% end %>
<% end %>

Cette fois, seuls le japonais et l'anglais sont pris en charge

Est affiché.

2. Stockez la variable de session dans le contrôleur

routes.rb


get "/home/change_language/:language" => "home#change_language"

home_controller.rb


  def change_language
    session[:locale] = params[:language]
    redirect_back(fallback_location: "/")
  end

3. Avant de charger chaque page, définissez local sur I18n avec before_action

En le définissant sur before_action, les informations de langue seront définies en premier, quelle que soit la page à laquelle vous accédez.

application.rb


before_action :set_locale

private
  def set_locale
    if %w(ja en).include?(session[:locale])
      I18n.locale = session[:locale]
    end
  end

  1. app>config>locales>

J'ai rédigé la traduction séparément. Exemple) L'anglais change uniquement de ja en en.

ja.yml


ja:
  #Mots couramment utilisés
  dictionary:
    words:
      hello: "Bonjour"
  activerecord:
    #Nom du modèle
    model:
      user: "utilisateur"
    #Nom de colonne
    attributes:
      user_name: "Nom d'utilisateur"
      password: "mot de passe"
  #Définir pour chaque vue
  users:
    show:
      profile: "profil"
      picture: "Photo"
    form:
      required_field: "Article requis"

5. Utilisé dans View etc.

erb:show.html.erb


 <%= t("dictionary.words.hello") %>  =>Bonjour
 <%= t("activerecord.attributes.user_name") %>  =>Nom d'utilisateur

#Lorsque View is users show, il peut être omis comme suit.
 <%= t(".profile") %>  =>profil
 <%= t(".picture") %>  =>Photo

#Si vous définissez le nom de la colonne, même l'assistant de formulaire basculera automatiquement en fonction de la langue.
<%= form_with scope: @user ,,,,,%>
<%= form.label :user_name %> =>Nom d'utilisateur
<% end %>

erb:_form.html.erb


#Partiel est utilisé sans trait de soulignement View is users_form.html.Pour erb
 <%= t(".required_field") %>  =>Article requis

#Ce partiel est montré par les utilisateurs.html.Même s'il est utilisé dans erb
 <%= t(".picture") %>  =>× Ce n'est pas disponible.


Recommended Posts

Ruby on Rails compatible japonais-anglais i18n
Ruby on Rails dans les espaces de codes Visual Studio
Débutant a créé un portfolio avec Ruby on Rails
Ruby on Rails élémentaire
Principes de base de Ruby on Rails
Association Ruby On Rails
Recommandation de classe de service dans Ruby on Rails
Rails nouveau dans Ruby on Rails ~ Mémorandum jusqu'au déploiement 2
Rails nouveau dans Ruby on Rails ~ Mémorandum jusqu'au déploiement 1
(Ruby on Rails6) Création de données dans une table
Record d'apprentissage de Ruby on rails -2020.10.03
Création de portfolio Ruby on Rails
Record d'apprentissage Ruby on rails -2020.10.04
[Ruby on Rails] Debuck (binding.pry)
Record d'apprentissage de Ruby on rails -2020.10.05
Record d'apprentissage de Ruby on rails -2020.10.09
Record d'apprentissage Ruby on rails-2020.10.07 ②
Record d'apprentissage Ruby on rails-2020.10.07 ①
Annuler la migration de Ruby on Rails
Record d'apprentissage de Ruby on rails -2020.10.06
Résumé de la validation Ruby on Rails
Mémorandum de base Ruby on Rails
[Ruby on Rails] Comment écrire enum en japonais
[Ruby On Rails] Comment réinitialiser DB dans Heroku
[Ruby on Rails] Fonction de prévisualisation de l'image dans le fichier
[Ruby on Rails] Read try (: [] ,: key)
Difficultés à créer un environnement Ruby on Rails (Windows 10) (SQLite3)
Variables Ruby on Rails, résumé constant
Installation de Ruby + Rails sur Ubuntu 18.04 (rbenv)
[Ruby on Rails] Introduction de la fonction de pagination
Connaissance de base de Ruby on Rails
Progatez Ruby on Rails
Comment utiliser Ruby on Rails
(Ruby on Rails6) "Effacer" le contenu publié
[Ruby on Rails] Fonction de sortie CSV
Mémo de construction de l'environnement Ruby on Rails 6.0
[Ruby on Rails] Création de la page de confirmation
Comment afficher des graphiques dans Ruby on Rails (LazyHighChart)
Ruby On Rails conçoit un conflit de routage
[Ruby on Rails] Implémentation de la fonction de commentaire
[Ruby on Rails] DM, fonction de chat
Appliquer le CSS à une vue spécifique dans Ruby on Rails
[Ruby on Rails] Méthode d'aide pratique
Méthodes Ruby souvent utilisées dans Rails
[Ruby on Rails] Arrêtez de "boucler jusqu'à ce que ..."
Où j'étais intéressé par le cours Ruby on Rails de Progate [params]
(Ruby on Rails6) Créer une base de données et l'afficher dans une vue
Effacer N + 1 dans les actes_as_tree de l'arborescence Ruby on Rails Gem
J'ai résumé le flux jusqu'à l'implémentation de simple_calendar dans Ruby on Rails.
Points à retenir et concepts dans le didacticiel Ruby on Rails