Posterous theme by Cory Watilo

Rails and multilingual site

Надо сделать сайт с поддержкой многоязычности. И вот к чему я пришел. Во-первых, структура публикаций выходит одинаковая (новости, статьи...). То есть для использования прекрасно подходит SingleTableInheritance. При таком подходе все поля очень близких по структуре классов сводятся в одну таблицу в БД. Также надо добавить поле "type" - тип публикации. Он будет содержать имя класса, на самом деле.
Далее, надо что-то сделать с языком. Вариант №1 - сделать композитный первичный ключ, который будет состоять из id + language. Но мне больше нравится вариант с разделением локализуемой части и нелокализуемой:
И далее по ссылкам: compositekeys gem и ее практическое использование в rails Также для Content задействовал Scope-out. Чтобы модель "знала" какой язык сейчас запрошен: [cc lang="ruby"] ## config/environment.rb ... $language = 'ru' ... ## config/initializers/activerecord_localized.rb class ActiveRecord::Base def self.set_language(lang) @@language = lang end end ## app/controllers/application.rb class ApplicationController ['language=?', defined?(@@language) ? @@language : $language] ... end [/cc] Задумался, как бы получше сделать локализацию Views. Пока думаю о написании helper'а, который будет подставлять из конфига стоки вместо констант - как упрощенный вариант ActiveCulture. Кто чего подскажет?
| Viewed
times
Filed under: