ソースを参照

Language detection defaults to nil (#3666)

* Default to nil for statuses.language

* Language detection defaults to nil instead of instance UI default
Matt Jankowski 7 年 前
コミット
022008a2a6

+ 2 - 2
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

+ 1 - 1
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
 #
 

+ 5 - 0
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

+ 2 - 2
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"

+ 11 - 11
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