locale.rb 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # Copyright (C) 2012-2014 Zammad Foundation, http://zammad-foundation.org/
  2. class Locale < ApplicationModel
  3. def self.to_sync
  4. locales = Locale.where(active: true)
  5. if Rails.env.test?
  6. locales = Locale.where(active: true, locale: ['en-us'])
  7. end
  8. # read used locales based on env, e. g. export Z_LOCALES='en-us:de-de'
  9. if ENV['Z_LOCALES']
  10. locales = Locale.where(active: true, locale: ENV['Z_LOCALES'].split(':') )
  11. end
  12. locales
  13. end
  14. def self.load
  15. url = 'https://i18n.zammad.com/api/v1/locales'
  16. result = UserAgent.get(
  17. url,
  18. {},
  19. {
  20. json: true,
  21. }
  22. )
  23. raise "Can't load locales from #{url}" if !result
  24. raise "Can't load locales from #{url}: #{result.error}" if !result.success?
  25. ActiveRecord::Base.transaction do
  26. result.data.each {|locale|
  27. exists = Locale.find_by(locale: locale['locale'])
  28. if exists
  29. exists.update(locale.symbolize_keys!)
  30. else
  31. Locale.create(locale.symbolize_keys!)
  32. end
  33. }
  34. end
  35. true
  36. end
  37. end