about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatt Jankowski <mjankowski@thoughtbot.com>2017-06-09 12:09:37 -0400
committerEugen Rochko <eugen@zeonfederated.com>2017-06-09 18:09:37 +0200
commit022008a2a6fb5fe872b04009e1029e2a904bafcc (patch)
treeb660e05c42166a38eb48b0daf095eb37fb79cf4c
parenta3715598cc888db462205d74a8b83e57e885dec8 (diff)
Language detection defaults to nil (#3666)
* Default to nil for statuses.language

* Language detection defaults to nil instead of instance UI default
-rw-r--r--app/lib/language_detector.rb4
-rw-r--r--app/models/status.rb2
-rw-r--r--db/migrate/20170609145826_remove_default_language_from_statuses.rb5
-rw-r--r--db/schema.rb4
-rw-r--r--spec/lib/language_detector_spec.rb22
5 files changed, 21 insertions, 16 deletions
diff --git a/app/lib/language_detector.rb b/app/lib/language_detector.rb
index 0d087f8d1..6d6ae2fb3 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 af9f7524e..24d3db2bf 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 000000000..46b90ae89
--- /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 712f62ea6..ba6c0e876 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 ace7a326a..ec39cb6a0 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