File tree Expand file tree Collapse file tree 3 files changed +45
-4
lines changed
app/services/discourse_translator Expand file tree Collapse file tree 3 files changed +45
-4
lines changed Original file line number Diff line number Diff line change @@ -60,5 +60,12 @@ def self.get_text(topic_or_post)
6060 topic_or_post . title
6161 end
6262 end
63+
64+ def self . language_supported? ( detected_lang )
65+ raise NotImplementedError unless self . const_defined? ( :SUPPORTED_LANG_MAPPING )
66+ supported_lang = const_get ( :SUPPORTED_LANG_MAPPING )
67+ return false if supported_lang [ I18n . locale ] . nil?
68+ detected_lang != supported_lang [ I18n . locale ]
69+ end
6370 end
6471end
Original file line number Diff line number Diff line change @@ -50,10 +50,9 @@ module ::DiscourseTranslator
5050 Discourse . redis . sadd? ( DiscourseTranslator ::LANG_DETECT_NEEDED , object . id )
5151 false
5252 else
53- detected_lang !=
54- "DiscourseTranslator::#{ SiteSetting . translator } ::SUPPORTED_LANG_MAPPING" . constantize [
55- I18n . locale
56- ]
53+ "DiscourseTranslator::#{ SiteSetting . translator } " . constantize . language_supported? (
54+ detected_lang ,
55+ )
5756 end
5857 end
5958end
Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ require "rails_helper"
4+
5+ describe DiscourseTranslator ::Base do
6+ class TestTranslator < DiscourseTranslator ::Base
7+ SUPPORTED_LANG_MAPPING = { en : "en" , ar : "ar" , es_MX : "es-MX" , pt : "pt" }
8+ end
9+
10+ class EmptyTranslator < DiscourseTranslator ::Base
11+ end
12+
13+ describe ".language_supported?" do
14+ it "raises an error when the method is not implemented" do
15+ expect { EmptyTranslator . language_supported? ( "en" ) } . to raise_error ( NotImplementedError )
16+ end
17+
18+ it "returns false when the locale is not supported" do
19+ I18n . stubs ( :locale ) . returns ( :xx )
20+ expect ( TestTranslator . language_supported? ( "en" ) ) . to eq ( false )
21+ end
22+
23+ it "returns true when the detected language is not the current locale" do
24+ I18n . locale = :pt
25+ expect ( TestTranslator . language_supported? ( "en" ) ) . to eq ( true )
26+ expect ( TestTranslator . language_supported? ( "ar" ) ) . to eq ( true )
27+ expect ( TestTranslator . language_supported? ( "es-MX" ) ) . to eq ( true )
28+ end
29+
30+ it "returns false when the detected language is the detected locale" do
31+ I18n . locale = :pt
32+ expect ( TestTranslator . language_supported? ( "pt" ) ) . to eq ( false )
33+ end
34+ end
35+ end
You can’t perform that action at this time.
0 commit comments