12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- class Locale < ApplicationModel
- has_many :knowledge_base_locales, inverse_of: :system_locale, dependent: :restrict_with_error,
- class_name: 'KnowledgeBase::Locale', foreign_key: :system_locale_id
- =begin
- returns the records of all locales that are to be synchronized
- =end
- def self.to_sync
- # read used locales based on env, e. g. export Z_LOCALES='en-us:de-de'
- return Locale.where(active: true, locale: ENV['Z_LOCALES'].split(':')) if ENV['Z_LOCALES']
- return Locale.where(active: true, locale: %w[en-us de-de]) if Rails.env.test?
- Locale.where(active: true)
- end
- =begin
- sync locales from config/locales.yml
- =end
- def self.sync
- file = Rails.root.join('config/locales.yml')
- return false if !File.exist?(file)
- data = YAML.load_file(file)
- to_database(data)
- true
- end
- # Default system locale
- #
- # @example
- # Locale.default
- def self.default
- Setting.get('locale_default') || 'en-us'
- end
- private_class_method def self.to_database(data)
- ActiveRecord::Base.transaction do
- data.each do |locale|
- exists = Locale.find_by(locale: locale['locale'])
- if exists
- exists.update!(locale.symbolize_keys!)
- else
- Locale.create!(locale.symbolize_keys!)
- end
- end
- end
- end
- end
|