Для локализации шаблонов (и вообще любого текста, хранящегося непосредственно в коде) наиболее удобным инструментом, на мой взгляд, является плагин под названием Gibberish.
Использование
Пользоваться Gibberish проще некуда. Допустим, нужно в шаблоне локализовать некую строку "Hello world". В этом случае мы делаем так:
По дефолту будет выводиться строка как она указана в кавычках. Однако, стоит нам сменить текущую локализацию, как вместо значения в кавычках будет подставлено значение из файла локализации, соответствующее ключу в квадратных скобках.
Файл локализации
Локализованные строки хранятся в YAML-файлах в папке RAILS_ROOT/lang. Названия файлов соответствуют названиям локализаций. Например, ru.yml:
В этом случае будут использоваться строки локализации из файла RAILS_ROOT/lang/ru.yml. Кроме того, язык можно переключить только для выполнения конкретного блока, например, в составе фильтра:
Gibberish поддерживает замечательную возможность - поздняя вставка текста в строки локализации. Например, нам нужно локализовать приветственное сообщение. В русском языке оно должно выглядеть как "DEkart, добро пожаловать", а в английском как "Welcome, DEkart". В этом случае мы задем строку локализации следующим образом:
Подстрока {user} будет автоматически заменена на current_user.login. Если после ключа в квадратных скобках передается массив, то подстроки в фигурных скобках будут заменяться последовательно. Если же передан Hash, то замена произойдет в соответствии с ключами:
Плагин очень прост и понятен. Я использую его для локализации всех строковых значений в шаблонах, моделях, контроллерах: текстов ссылок, flash-сообщений, сообщений об ошибках валидации, даже форматов дат. Конечно, с помощью gibberish не реализовать перевод данных в моделях, но этого и не требуется. Перевод моделей - это совсем другая история.