Référence rapide

Aide-mémoire internationalisation Rails (i18n)

Un guide de référence rapide pour Rails i18n : traductions, dates localisées, pluralisation, recherches ciblées et dictionnaires YAML.

· Publié le

Le framework d'internationalisation (i18n) de Rails gère la localisation des chaînes, des nombres, des devises et des dates via des catalogues YAML.

Helpers de base de traduction et de dates

<!-- Traduire une clé -->
<%= t('welcome.title') %>

<!-- Recherche ciblée selon le contrôleur/action courant -->
<!-- Dans app/views/articles/index.html.erb : cherche articles.index.heading -->
<%= t('.heading') %>

<!-- Localisation des dates et heures -->
<%= l(Time.now, format: :short) %>
<%= l(Date.today, format: :long) %>

Interpolation de variables et pluralisation

# config/locales/en.yml
en:
  greetings:
    hello: "Hello, %{name}!"
  inbox:
    unread_messages:
      one: "You have 1 unread message."
      other: "You have %{count} unread messages."
      zero: "You have no unread messages."

Dans le template :

<%= t('greetings.hello', name: current_user.name) %>
<%= t('inbox.unread_messages', count: @unread_count) %>

Définir la langue courante (Locale)

Dans ApplicationController :

class ApplicationController < ActionController::Base
  before_action :set_locale

  private

  def set_locale
    I18n.locale = params[:locale] || I18n.default_locale
  end

  def default_url_options
    { locale: I18n.locale }
  end
end

Traductions des modèles Active Record

en:
  activerecord:
    models:
      user: "Customer"
    attributes:
      user:
        email: "Email Address"
        role: "Account Role"

Dans les vues :

<%= User.model_name.human %>
<!-- => "Customer" -->

<%= User.human_attribute_name(:email) %>
<!-- => "Email Address" -->

Références

Sujets associés