Class: LocaleSiteSetting
- Inherits:
-
EnumSiteSetting
- Object
- EnumSiteSetting
- LocaleSiteSetting
- Defined in:
- app/models/locale_site_setting.rb
Constant Summary collapse
- FALLBACKS =
{ en_GB: :en }
Class Method Summary collapse
- .fallback_locale(locale) ⇒ Object
- .language_names ⇒ Object
- .reset! ⇒ Object
- .supported_locales ⇒ Object
- .valid_value?(val) ⇒ Boolean
- .values ⇒ Object
Methods inherited from EnumSiteSetting
Class Method Details
.fallback_locale(locale) ⇒ Object
58 59 60 61 62 63 64 |
# File 'app/models/locale_site_setting.rb', line 58 def self.fallback_locale(locale) fallback_locale = FALLBACKS[locale.to_sym] return fallback_locale if fallback_locale plugin_locale = DiscoursePluginRegistry.locales[locale.to_s] plugin_locale ? plugin_locale[:fallbackLocale]&.to_sym : nil end |
.language_names ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'app/models/locale_site_setting.rb', line 18 def self.language_names return @language_names if @language_names @lock.synchronize do @language_names ||= begin names = YAML.safe_load(File.read(File.join(Rails.root, "config", "locales", "names.yml"))) DiscoursePluginRegistry.locales.each do |locale, | if !names.key?(locale) && [:name] && [:nativeName] names[locale] = { "name" => [:name], "nativeName" => [:nativeName] } end end names end end end |
.reset! ⇒ Object
52 53 54 |
# File 'app/models/locale_site_setting.rb', line 52 def self.reset! @lock.synchronize { @values = @language_names = @supported_locales = nil } end |
.supported_locales ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/models/locale_site_setting.rb', line 37 def self.supported_locales @lock.synchronize do @supported_locales ||= begin locales = Dir .glob(File.join(Rails.root, "config", "locales", "client.*.yml")) .map { |x| x.split(".")[-2] } locales += DiscoursePluginRegistry.locales.keys locales.uniq.sort end end end |
.valid_value?(val) ⇒ Boolean
4 5 6 |
# File 'app/models/locale_site_setting.rb', line 4 def self.valid_value?(val) supported_locales.include?(val) end |
.values ⇒ Object
8 9 10 11 12 13 14 |
# File 'app/models/locale_site_setting.rb', line 8 def self.values @values ||= supported_locales.map do |locale| lang = language_names[locale] || language_names[locale.split("_")[0]] { name: lang ? lang["nativeName"] : locale, value: locale } end end |