From d6f75936804ce403fe39ad2b1fee6ecaac7dece4 Mon Sep 17 00:00:00 2001 From: Nat Date: Tue, 25 Feb 2025 12:39:26 +0800 Subject: [PATCH 1/2] FIX: Fancify titles when using experimental topic translation --- plugin.rb | 13 +++++++++---- spec/serializers/basic_topic_serializer_spec.rb | 6 +++--- spec/serializers/topic_view_serializer_spec.rb | 6 +++--- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/plugin.rb b/plugin.rb index b2d9de0a..5d7272f6 100644 --- a/plugin.rb +++ b/plugin.rb @@ -73,20 +73,25 @@ module ::DiscourseTranslator register_modifier(:topic_serializer_fancy_title) do |fancy_title, serializer| if !SiteSetting.experimental_topic_translation || serializer.scope.request.params["show"] == "original" || - serializer.object.detected_locale == I18n.locale.to_s.gsub("_", "-") + serializer.object.locale_matches?(I18n.locale) fancy_title else - serializer.object.translation_for(I18n.locale).presence + serializer.object.translation_for(I18n.locale).presence&.then { |t| (t) } end end register_modifier(:topic_view_serializer_fancy_title) do |fancy_title, serializer| if !SiteSetting.experimental_topic_translation || serializer.scope.request.params["show"] == "original" || - serializer.object.topic.detected_locale == I18n.locale.to_s.gsub("_", "-") + serializer.object.topic.locale_matches?(I18n.locale) fancy_title else - serializer.object.topic.translation_for(I18n.locale).presence + serializer + .object + .topic + .translation_for(I18n.locale) + .presence + &.then { |t| Topic.fancy_title(t) } end end end diff --git a/spec/serializers/basic_topic_serializer_spec.rb b/spec/serializers/basic_topic_serializer_spec.rb index a880e3d6..312686ed 100644 --- a/spec/serializers/basic_topic_serializer_spec.rb +++ b/spec/serializers/basic_topic_serializer_spec.rb @@ -13,8 +13,8 @@ describe "#fancy_title" do let!(:guardian) { Guardian.new(user) } - let!(:original_title) { "FUS ROH DAAHHH" } - let!(:jap_title) { "フス・ロ・ダ・ア" } + let!(:original_title) { "

FUS ROH DAAHHH

" } + let!(:jap_title) { "

フス・ロ・ダ・ア

" } before do topic.title = original_title @@ -55,7 +55,7 @@ def serialize_topic(guardian_user: user, params: {}) it "returns translated title in fancy_title when translation exists for current locale" do topic.set_translation("ja", jap_title) - expect(serialize_topic.fancy_title).to eq(jap_title) + expect(serialize_topic.fancy_title).to eq("<h1>フス・ロ・ダ・ア</h1>") end end end diff --git a/spec/serializers/topic_view_serializer_spec.rb b/spec/serializers/topic_view_serializer_spec.rb index c60f0407..62f7659c 100644 --- a/spec/serializers/topic_view_serializer_spec.rb +++ b/spec/serializers/topic_view_serializer_spec.rb @@ -36,8 +36,8 @@ fab!(:topic) let!(:guardian) { Guardian.new(user) } - let!(:original_title) { "FUS ROH DAAHHH" } - let!(:jap_title) { "フス・ロ・ダ・ア" } + let!(:original_title) { "

FUS ROH DAAHHH

" } + let!(:jap_title) { "

フス・ロ・ダ・ア

" } before do topic.title = original_title @@ -78,7 +78,7 @@ def serialize_topic(guardian_user: user, params: {}) it "returns translated title in fancy_title when translation exists for current locale" do topic.set_translation("ja", jap_title) - expect(serialize_topic.fancy_title).to eq(jap_title) + expect(serialize_topic.fancy_title).to eq("<h1>フス・ロ・ダ・ア</h1>") end end end From e1800341a9a0283f8db49a7fbf14f4d14056dbe9 Mon Sep 17 00:00:00 2001 From: Nat Date: Tue, 25 Feb 2025 13:00:21 +0800 Subject: [PATCH 2/2] Add function back, was removed for testing --- plugin.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.rb b/plugin.rb index 5d7272f6..7191efe8 100644 --- a/plugin.rb +++ b/plugin.rb @@ -76,7 +76,7 @@ module ::DiscourseTranslator serializer.object.locale_matches?(I18n.locale) fancy_title else - serializer.object.translation_for(I18n.locale).presence&.then { |t| (t) } + serializer.object.translation_for(I18n.locale).presence&.then { |t| Topic.fancy_title(t) } end end