Fallback to english locale when looking for community index templates
Starting with the v5.8.0 release osm-community-index has removed strings from translations which are identical to the engish version which mostly causes no problem except for some of the template values that don't involve any localised text.
This commit is contained in:
parent
2f66877696
commit
f9ea6aa718
2 changed files with 13 additions and 7 deletions
|
@ -2,6 +2,7 @@ module OsmCommunityIndex
|
|||
def self.add_to_i18n
|
||||
# Filter the communities here to avoid loading excessive numbers of translations
|
||||
communities = Community.where(:type => "osm-lc").where.not(:id => "OSMF")
|
||||
community_en_yaml = YAML.safe_load_file("node_modules/osm-community-index/i18n/en.yaml")["en"]
|
||||
|
||||
files = Rails.root.glob("node_modules/osm-community-index/i18n/*.yaml")
|
||||
files.each do |file|
|
||||
|
@ -14,7 +15,7 @@ module OsmCommunityIndex
|
|||
id = community.id
|
||||
|
||||
strings = community_locale_yaml[id] || {}
|
||||
strings["name"] = resolve_name(community, community_locale_yaml)
|
||||
strings["name"] = resolve_name(community, community_locale_yaml, community_en_yaml)
|
||||
|
||||
obj.deep_merge!("osm_community_index" => { "communities" => { id => strings } })
|
||||
end
|
||||
|
@ -23,13 +24,14 @@ module OsmCommunityIndex
|
|||
end
|
||||
end
|
||||
|
||||
def self.resolve_name(community, community_locale_yaml)
|
||||
def self.resolve_name(community, community_locale_yaml, community_en_yaml)
|
||||
# If theres an explicitly translated name then use that
|
||||
translated_name = community_locale_yaml.dig(community.id, "name")
|
||||
return translated_name if translated_name
|
||||
|
||||
# If not, then look up the default translated name for this type of community, and interpolate the template
|
||||
template = community_locale_yaml.dig("_defaults", community.type, "name")
|
||||
template = community_locale_yaml.dig("_defaults", community.type, "name") ||
|
||||
community_en_yaml.dig("_defaults", community.type, "name")
|
||||
community_name = community_locale_yaml.dig("_communities", community.strings["communityID"])
|
||||
# Change the `{community}` placeholder to `%{community}` and use Ruby's Kernel.format to fill it in.
|
||||
translated_name = format(template.gsub("{", "%{"), { :community => community_name }) if template && community_name
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue