From b4390183420a0b6082497e8de1f7d30f73d8e6b2 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 9 Jun 2017 12:09:37 -0400 Subject: [PATCH] Language detection defaults to nil (#3666) * Default to nil for statuses.language * Language detection defaults to nil instead of instance UI default --- app/lib/language_detector.rb | 4 ++-- app/models/status.rb | 2 +- ...6_remove_default_language_from_statuses.rb | 5 +++++ db/schema.rb | 4 ++-- spec/lib/language_detector_spec.rb | 22 +++++++++---------- 5 files changed, 21 insertions(+), 16 deletions(-) create mode 100644 db/migrate/20170609145826_remove_default_language_from_statuses.rb diff --git a/app/lib/language_detector.rb b/app/lib/language_detector.rb index 0d087f8d1e..6d6ae2fb31 100644 --- a/app/lib/language_detector.rb +++ b/app/lib/language_detector.rb @@ -10,7 +10,7 @@ class LanguageDetector end def to_iso_s - detected_language_code || default_locale.to_sym + detected_language_code || default_locale end def prepared_text @@ -43,6 +43,6 @@ class LanguageDetector end def default_locale - account&.user_locale || I18n.default_locale + account&.user_locale&.to_sym || nil end end diff --git a/app/models/status.rb b/app/models/status.rb index af9f7524e2..24d3db2bf4 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -20,7 +20,7 @@ # reply :boolean default(FALSE) # favourites_count :integer default(0), not null # reblogs_count :integer default(0), not null -# language :string default("en"), not null +# language :string # conversation_id :integer # diff --git a/db/migrate/20170609145826_remove_default_language_from_statuses.rb b/db/migrate/20170609145826_remove_default_language_from_statuses.rb new file mode 100644 index 0000000000..46b90ae892 --- /dev/null +++ b/db/migrate/20170609145826_remove_default_language_from_statuses.rb @@ -0,0 +1,5 @@ +class RemoveDefaultLanguageFromStatuses < ActiveRecord::Migration[5.1] + def change + change_column :statuses, :language, :string, default: nil, null: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 712f62ea68..ba6c0e876f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170606113804) do +ActiveRecord::Schema.define(version: 20170609145826) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -277,7 +277,7 @@ ActiveRecord::Schema.define(version: 20170606113804) do t.boolean "reply", default: false t.integer "favourites_count", default: 0, null: false t.integer "reblogs_count", default: 0, null: false - t.string "language", default: "en", null: false + t.string "language" t.bigint "conversation_id" t.index ["account_id"], name: "index_statuses_on_account_id" t.index ["conversation_id"], name: "index_statuses_on_conversation_id" diff --git a/spec/lib/language_detector_spec.rb b/spec/lib/language_detector_spec.rb index ace7a326af..ec39cb6a08 100644 --- a/spec/lib/language_detector_spec.rb +++ b/spec/lib/language_detector_spec.rb @@ -43,7 +43,7 @@ describe LanguageDetector do describe 'to_iso_s' do it 'detects english language for basic strings' do strings = [ - "Hello and welcome to mastodon", + "Hello and welcome to mastodon how are you today?", "I'd rather not!", "a lot of people just want to feel righteous all the time and that's all that matters", ] @@ -62,20 +62,20 @@ describe LanguageDetector do end describe 'when language can\'t be detected' do - it 'uses default locale when sent an empty document' do + it 'uses nil when sent an empty document' do result = described_class.new('').to_iso_s - expect(result).to eq :en + expect(result).to eq nil end describe 'because of a URL' do - it 'uses default locale when sent just a URL' do + it 'uses nil when sent just a URL' do string = 'http://example.com/media/2kFTgOJLXhQf0g2nKB4' cld_result = CLD3::NNetLanguageIdentifier.new(0, 2048).find_language(string) expect(cld_result).not_to eq :en result = described_class.new(string).to_iso_s - expect(result).to eq :en + expect(result).to eq nil end end @@ -87,20 +87,20 @@ describe LanguageDetector do expect(result).to eq :fr end - it 'uses default locale when account is present but has no locale' do + it 'uses nil when account is present but has no locale' do account = double(user_locale: nil) result = described_class.new('', account).to_iso_s - expect(result).to eq :en + expect(result).to eq nil end end describe 'with an `en` default locale' do - it 'uses the default locale' do + it 'uses nil for undetectable string' do string = '' result = described_class.new(string).to_iso_s - expect(result).to eq :en + expect(result).to eq nil end end @@ -112,11 +112,11 @@ describe LanguageDetector do I18n.default_locale = before end - it 'uses the default locale' do + it 'uses nil for undetectable string' do string = '' result = described_class.new(string).to_iso_s - expect(result).to eq :ja + expect(result).to eq nil end end end