From e2bc82726dc05609398895145bcf09b7e3b14683 Mon Sep 17 00:00:00 2001 From: user Date: Wed, 24 Dec 2025 22:50:25 +0900 Subject: [PATCH 1/6] Add unit tests for `to_html_lang` filter to ensure correctness and Liquid integration --- test/test_plugin_html_lang.rb | 39 +++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 test/test_plugin_html_lang.rb diff --git a/test/test_plugin_html_lang.rb b/test/test_plugin_html_lang.rb new file mode 100644 index 0000000000..fe44575ec1 --- /dev/null +++ b/test/test_plugin_html_lang.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +require "helper" +require "liquid" +require_relative "../_plugins/html_lang" + +describe Jekyll::HtmlLangFilter do + include Jekyll::HtmlLangFilter + + describe "#to_html_lang" do + it "returns the same string if no underscore is present" do + _(to_html_lang("en")).must_equal "en" + _(to_html_lang("fr")).must_equal "fr" + end + + it "converts Jekyll locale with underscore to BCP 47 format" do + _(to_html_lang("zh_cn")).must_equal "zh-CN" + _(to_html_lang("zh_tw")).must_equal "zh-TW" + _(to_html_lang("pt_br")).must_equal "pt-BR" + end + + it "returns the input as is if it is not a string" do + _(to_html_lang(nil)).must_be_nil + _(to_html_lang(123)).must_equal 123 + end + end + + describe "integration with Liquid" do + it "is registered as a liquid filter" do + template = Liquid::Template.parse("{{ 'zh_cn' | to_html_lang }}") + _(template.render).must_equal "zh-CN" + end + + it "works correctly in a liquid template for simple lang" do + template = Liquid::Template.parse("{{ 'en' | to_html_lang }}") + _(template.render).must_equal "en" + end + end +end From 261ef89682228d1f5d1bc7720eb274c2bb3f23b6 Mon Sep 17 00:00:00 2001 From: user Date: Wed, 24 Dec 2025 22:55:10 +0900 Subject: [PATCH 2/6] Add `lang` attributes to language selector for improved accessibility --- _includes/language_selector.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_includes/language_selector.html b/_includes/language_selector.html index be50b0988c..1c9c6c0ac9 100644 --- a/_includes/language_selector.html +++ b/_includes/language_selector.html @@ -17,9 +17,9 @@