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é.
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
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
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"
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