瀏覽代碼

Leave unknown language as nil if account is remote (#8861)

* Force use language detector if account is remote

* Set unknown remote toot's language as nil
master
Jeong Arm 5 年之前
committed by Eugen Rochko
父節點
當前提交
144d73730d
共有 2 個文件被更改,包括 13 次插入1 次删除
  1. +3
    -1
      app/lib/language_detector.rb
  2. +10
    -0
      spec/lib/language_detector_spec.rb

+ 3
- 1
app/lib/language_detector.rb 查看文件

@@ -12,6 +12,7 @@ class LanguageDetector
def detect(text, account)
input_text = prepare_text(text)
return if input_text.blank?

detect_language_code(input_text) || default_locale(account)
end

@@ -33,6 +34,7 @@ class LanguageDetector

def detect_language_code(text)
return if unreliable_input?(text)

result = @identifier.find_language(text)
iso6391(result.language.to_s).to_sym if result.reliable?
end
@@ -75,6 +77,6 @@ class LanguageDetector
end

def default_locale(account)
account.user_locale&.to_sym || I18n.default_locale
return account.user_locale&.to_sym || I18n.default_locale if account.local?
end
end

+ 10
- 0
spec/lib/language_detector_spec.rb 查看文件

@@ -42,6 +42,7 @@ describe LanguageDetector do

describe 'detect' do
let(:account_without_user_locale) { Fabricate(:user, locale: nil).account }
let(:account_remote) { Fabricate(:account, domain: 'joinmastodon.org') }

it 'detects english language for basic strings' do
strings = [
@@ -104,6 +105,15 @@ describe LanguageDetector do
end
end

describe 'remote user' do
it 'nil for foreign user when language is not present' do
string = '안녕하세요'
result = described_class.instance.detect(string, account_remote)

expect(result).to eq nil
end
end

describe 'with a non-`en` default locale' do
around(:each) do |example|
before = I18n.default_locale


Loading…
取消
儲存