When creating a wikipedia link from a tag, the function
is (correctly) appending "?userlang=#{I18N.lang}" to the URL,
but doing this breaks the reference to a specific section
of a wikipedia article (if there is any).
For example, if the tag is "wikipedia=Article#Section", the function
would create a link to "../Article#Section?uselang=xx", and then the
browser wouldn't be able to correctly find the section. The correct
link result should be "../Article?uselang=xx#Section".
This commit fixes this by verifying if there is a reference to a
specific section of the article, and then putting "?uselang=#{I18N.lang}"
between the article's name and the section name.
lang = 'en'
end
elsif key =~ /^wikipedia:(\S+)$/
lang = 'en'
end
elsif key =~ /^wikipedia:(\S+)$/
- # Language is in the key, so assume value is a simple title
+ # Language is in the key, so assume value is the title
lang = $1
else
# Not a wikipedia key!
return nil
end
lang = $1
else
# Not a wikipedia key!
return nil
end
+ if value =~ /^([^#]*)(#.*)/ then
+ # Contains a reference to a section of the wikipedia article
+ # Must break it up to correctly build the url
+ value = $1
+ section = $2
+ else
+ section = ""
+ end
+
- :url => "http://#{lang}.wikipedia.org/wiki/#{value}?uselang=#{I18n.locale}",
- :title => value
+ :url => "http://#{lang}.wikipedia.org/wiki/#{value}?uselang=#{I18n.locale}#{section}",
+ :title => value + section