X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/e731dd71a77ad4ad1e9db22535e89444bb98e5d9..293fe68eff1923a00992e0a195ba025ab7bd9efa:/app/helpers/browse_helper.rb?ds=sidebyside diff --git a/app/helpers/browse_helper.rb b/app/helpers/browse_helper.rb index 63f48a876..14b1f7cc2 100644 --- a/app/helpers/browse_helper.rb +++ b/app/helpers/browse_helper.rb @@ -11,9 +11,21 @@ module BrowseHelper # don't look at object tags if redacted, so as to avoid giving # away redacted version tag information. unless object.redacted? - locale = I18n.locale.to_s + available_locales = Locale::List.new(name_locales(object)) - locale = locale.sub(/-[^-]+/, "") while locale =~ /-[^-]+/ && !object.tags.include?("name:#{I18n.locale}") + Rails.logger.info "available_locales = #{available_locales.map(&:to_s)}" + + preferred_locales = if current_user + current_user.preferred_languages + else + Locale.new(I18n.locale).candidates + end + + Rails.logger.info "preferred_locales = #{preferred_locales.expand.map(&:to_s)}" + + locale = available_locales.preferred(preferred_locales) + + Rails.logger.info "locale = #{locale}" if object.tags.include? "name:#{locale}" name = t "printable_name.with_name_html", :name => content_tag(:bdi, object.tags["name:#{locale}"].to_s), :id => content_tag(:bdi, name) @@ -71,4 +83,8 @@ module BrowseHelper def icon_tags(object) object.tags.find_all { |k, _v| ICON_TAGS.include? k }.sort end + + def name_locales(object) + object.tags.keys.map { |k| Regexp.last_match(1) if k =~ /^name:(.*)$/ }.flatten + end end