Το πλαίσιο διεθνοποίησης 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" -->