]> git.openstreetmap.org Git - rails.git/blob - app/models/osm_community_index.rb
Refactor osm-community-index and local chapters models
[rails.git] / app / models / osm_community_index.rb
1 class OsmCommunityIndex
2   require "yaml"
3
4   @localised_strings = {}
5
6   def self.community_index
7     @community_index ||= community_index_from_json
8   end
9
10   def self.localised_strings(locale)
11     @localised_strings[locale] ||= locale_hash_from_json(locale)
12   end
13
14   protected
15
16   def self.community_index_from_json
17     json_file = Rails.root.join("node_modules/osm-community-index/dist/resources.json")
18     JSON.parse(File.read(json_file))
19   end
20
21   def self.locale_hash_from_json(locale_in)
22     locale = locale_in.to_s.tr("-", "_")
23     # try the passed in locale
24     json = load_locale_json(locale)
25     unless json.nil?
26       return json
27     end
28
29     # now try it without it's country part (eg 'en' instead of 'en_GB')
30     shortened_locale = locale.split("_").first
31     unless shortened_locale === locale
32       json = load_locale_json(shortened_locale)
33       unless json.nil?
34         return json
35       end
36     end
37
38     # if nothing else works, then return "en"
39     load_locale_json("en")
40   end
41
42   def self.load_locale_json(locale)
43     json_path = Rails.root.join("node_modules/osm-community-index/i18n/#{locale}.yaml")
44     if File.exist?(json_path)
45       response = YAML.safe_load(File.read(json_path))[locale]
46     else
47       response = nil
48     end
49     response
50   end
51
52 end