-
Add r18n-rails
gem to your Gemfile
:
gem 'r18n-rails'
Now R18n will auto-detect user locales.
-
Define your way to set locale manually. R18n will find it in
params[:locale]
or session[:locale]
. Best way is a put optional
locale prefix to URLs:
match ':controller/:action'
match ':locale/:controller/:action'
-
Print available translations, to choose from them manually (and to help
search engines):
%ul
- r18n.available_locales.each do |locale|
%li
%a( href="/#{locale.code}/" )= locale.title
-
Translations in I18n format are stored in
config/locales/%{locale}.yml
:
en:
user:
name: "User name is %{name}"
count:
zero: "No users"
one: "One user"
many: "%{count} users"
Translations in R18n format go to app/i18n/%{locale}.yml
:
user:
name: User name is %1
count: !!pl
0: No users
1: 1 user
n: '%1 users'
-
Use translated messages in views. You can use Rails I18n syntax:
t 'user.name', name: 'John'
t 'user.count', count: 5
or R18n syntax:
t.user.name(name: 'John')
t.user.name('John')
t.user.count(5)
-
Print dates and numbers in user's tradition:
l Date.today, :standard
l Time.now, :full
l 1234.5
-
Translate models. You can use R18n::Translated
mixin for any Ruby class,
not only for ActiveRecord models
-
Add to migration columns for each of the supported locales, named as
%{name}_%{locale}
:
t.string :title_en
t.string :title_ru
t.string :text_en
t.string :text_ru
-
Add R18n::Translated
mixin to model:
class Post < ActiveRecord::Base
include R18n::Translated
-
Call translations
method in model with all columns to be translated:
translations :title, :text
Now model will have virtual methods title
, text
, title=
and text=
, which will call title_ru
or title_en
and etc based
on current user locales.
-
Download translations for Rails system messages (validation, etc) from
svenfuchs/rails-i18n
and put them to config/locales/
(because them use Rails I18n format).
-
Add your own translations filters to app/i18n/filters.rb
:
R18n::Filters.add('gender') do |translation, config, user|
translation[user.gender]
end
And use in translations:
log:
signup: !!gender
male: Он зарегистрировался
female: Она зарегистрировалась
and application:
t.log.signup(user)
R18n is licensed under the GNU Lesser General Public License version 3.
You can read it in LICENSE file or in www.gnu.org/licenses/lgpl-3.0.html.