28 lines
966 B
Ruby
28 lines
966 B
Ruby
class Locale < ApplicationRecord
|
|
belongs_to :language
|
|
validates_presence_of :iso
|
|
validates :iso, uniqueness: true
|
|
validates_presence_of :name
|
|
|
|
scope :default_order, -> { order(:iso) }
|
|
|
|
def to_param
|
|
iso
|
|
end
|
|
|
|
def self.default
|
|
language = Language.default
|
|
Locale.set_base_locale(iso: ArchiveConfig.DEFAULT_LOCALE_ISO, name: ArchiveConfig.DEFAULT_LOCALE_NAME, language_id: language.id)
|
|
end
|
|
|
|
def self.set_base_locale(locale={iso: "en", name: "English"})
|
|
language = Language.find_by(short: ArchiveConfig.DEFAULT_LANGUAGE_SHORT)
|
|
Locale.find_by(iso: locale[:iso].to_s) || language.locales.create(iso: locale[:iso].to_s, name: locale[:name].to_s, main: 1)
|
|
end
|
|
|
|
after_update :update_translations, if: :saved_change_to_iso?
|
|
def update_translations
|
|
ArchiveFaq::Translation.where(locale: iso_before_last_save).update_all(locale: iso)
|
|
Question::Translation.where(locale: iso_before_last_save).update_all(locale: iso)
|
|
end
|
|
end
|