Improve selection of name to display in data browser
If the user is logged in then consider all their preferred languages rather than just the UI language, and use the full locale matching algorithm instead of just checking parents. Fixes #2636
This commit is contained in:
parent
bf22c69286
commit
768a792a61
2 changed files with 24 additions and 2 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue