commit: 629d35e6f5d353d30661c1af7bbcc8aa6411e698
parent: 67dea31b0f83eb711bbd49a7b893d04ca16c56fa
Author: Matt Jankowski <mjankowski@thoughtbot.com>
Date: Fri, 21 Apr 2017 22:26:25 -0400
[WIP] Html lang on statuses (#2297)
* Add html lang attributes around statuses
* Remove urls from language detection
Diffstat:
4 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/app/lib/language_detector.rb b/app/lib/language_detector.rb
@@ -9,11 +9,19 @@ class LanguageDetector
end
def to_iso_s
- WhatLanguage.new(:all).language_iso(text) || default_locale.to_sym
+ WhatLanguage.new(:all).language_iso(text_without_urls) || default_locale.to_sym
end
private
+ def text_without_urls
+ text.dup.tap do |new_text|
+ URI.extract(new_text).each do |url|
+ new_text.gsub!(url, '')
+ end
+ end
+ end
+
def default_locale
account&.user&.locale || I18n.default_locale
end
diff --git a/app/views/stream_entries/_detailed_status.html.haml b/app/views/stream_entries/_detailed_status.html.haml
@@ -12,7 +12,7 @@
%p{ style: 'margin-bottom: 0' }<
%span.p-summary>= "#{status.spoiler_text} "
%a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
- %div.e-content{ style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl?(status.content) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status)
+ %div.e-content{ lang: status.language, style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl?(status.content) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status)
- unless status.media_attachments.empty?
diff --git a/app/views/stream_entries/_simple_status.html.haml b/app/views/stream_entries/_simple_status.html.haml
@@ -17,7 +17,7 @@
%p{ style: 'margin-bottom: 0' }<
%span.p-summary>= "#{status.spoiler_text} "
%a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
- %div.e-content{ style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl?(status.content) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status)
+ %div.e-content{ lang: status.language, style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl?(status.content) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status)
- unless status.media_attachments.empty?
.status__attachments
diff --git a/spec/lib/language_detector_spec.rb b/spec/lib/language_detector_spec.rb
@@ -23,6 +23,18 @@ describe LanguageDetector do
expect(result).to be_nil
end
+ describe 'because of a URL' do
+ it 'uses default locale when sent just a URL' do
+ string = 'http://example.com/media/2kFTgOJLXhQf0g2nKB4'
+ wl_result = WhatLanguage.new(:all).language_iso(string)
+ expect(wl_result).not_to eq :en
+
+ result = described_class.new(string).to_iso_s
+
+ expect(result).to eq :en
+ end
+ end
+
describe 'with an account' do
it 'uses the account locale when present' do
user = double(:user, locale: 'fr')