def format_value(key, value)
if wp = wikipedia_link(key, value)
- link_to h(wp['title']), wp['url'], :title => t('browse.tag_details.wiki_link.wikipedia', :page => wp['title'])
+ link_to h(wp[:title]), wp[:url], :title => t('browse.tag_details.wikipedia_link', :page => wp[:title])
elsif url = wiki_link("tag", "#{key}=#{value}")
link_to h(value), url, :title => t('browse.tag_details.wiki_link.tag', :key => key, :value => value)
else
end
def wikipedia_link(key, value)
- # English Wikipedia by default
- lang = 'en'
+ # Some k/v's are wikipedia=http://en.wikipedia.org/wiki/Full%20URL
+ return nil if value =~ /^http:\/\//
- if key == 'wikipedia' or key =~ /^wikipedia:(\S+)$/
- mylang = $1
-
- # Some k/v's are wikipedia=http://en.wikipedia.org/wiki/Full%20URL
- return nil if value =~ /^http:\/\//
-
- if mylang
- lang = mylang
+ if key == "wikipedia"
# This regex should match Wikipedia language codes, everything
# from de to zh-classical
- elsif value =~ /^([a-z-]{2,12}):(.+)$/
+ if value =~ /^([a-z-]{2,12}):(.+)$/
+ # Value is <lang>:<title> so split it up
lang = $1
- # Don't display e.g. "en:Foobar" as the title, just "Foobar"
value = $2
+ else
+ # Value is <title> so default to English Wikipedia
+ lang = 'en'
end
-
- locale = I18n.locale.to_s
- return {
- 'url' => "http://#{lang}.wikipedia.org/wiki/#{value}?uselang=#{locale}",
- 'title' => value
- }
+ elsif key =~ /^wikipedia:(\S+)$/
+ # Language is in the key, so assume value is a simple title
+ lang = $1
else
+ # Not a wikipedia key!
return nil
end
+
+ return {
+ :url => "http://#{lang}.wikipedia.org/wiki/#{value}?uselang=#{I18n.locale}",
+ :title => value
+ }
end
end