Γρήγορη αναφορά

Συνοπτικός οδηγός διεθνοποίησης Rails (i18n)

Ένας γρήγορος οδηγός αναφοράς για το Rails i18n: μεταφράσεις, τοπικοποιημένες ημερομηνίες, πληθυντικοί αριθμοί και λεξικά YAML.

· Δημοσιεύτηκε

Το πλαίσιο διεθνοποίησης Rails (i18n) παρέχει τοπικοποίηση για συμβολοσειρές, αριθμούς, νομίσματα και ημερομηνίες μέσω καταλόγων YAML.

Βασικοί βοηθοί μετάφρασης και ημερομηνίας

<!-- Μετάφραση κλειδιού -->
<%= t('welcome.title') %>

<!-- Lazy scoped μετάφραση βάσει τρέχοντος controller/action -->
<!-- Στο app/views/articles/index.html.erb: αναζητά το articles.index.heading -->
<%= t('.heading') %>

<!-- Τοπικοποίηση ημερομηνιών και ωρών -->
<%= l(Time.now, format: :short) %>
<%= l(Date.today, format: :long) %>

Παρεμβολή μεταβλητών & Πληθυντικός αριθμός

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

Στο πρότυπο:

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

Ορισμός τρέχουσας γλώσσας (Locale)

Στο 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

Μεταφράσεις μοντέλων Active Record

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

Στις όψεις:

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

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

Πηγές & Αναφορές

Σχετικά θέματα