From 3ff2ad33032ccf53aefff535296be334e8a3e33e Mon Sep 17 00:00:00 2001 From: Gabriel Sobrinho Date: Tue, 23 Sep 2025 10:35:28 -0300 Subject: [PATCH] Add support to not replace non-ASCII chars not in map --- lib/i18n/backend/transliterator.rb | 2 +- test/backend/transliterator_test.rb | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/i18n/backend/transliterator.rb b/lib/i18n/backend/transliterator.rb index 70c0df3d..07ef6d05 100644 --- a/lib/i18n/backend/transliterator.rb +++ b/lib/i18n/backend/transliterator.rb @@ -80,7 +80,7 @@ def initialize(rule = nil) def transliterate(string, replacement = nil) replacement ||= DEFAULT_REPLACEMENT_CHAR string.gsub(/[^\x00-\x7f]/u) do |char| - approximations[char] || replacement + approximations[char] || (replacement == :none ? char : replacement) end end diff --git a/test/backend/transliterator_test.rb b/test/backend/transliterator_test.rb index 4c2bc226..8f136861 100644 --- a/test/backend/transliterator_test.rb +++ b/test/backend/transliterator_test.rb @@ -56,6 +56,10 @@ def setup assert_equal "abc#", @transliterator.transliterate("abcſ", "#") end + test "can keep non-ASCII chars not in map with :none" do + assert_equal "abcſ", @transliterator.transliterate("abcſ", :none) + end + test "default transliterator raises errors for invalid UTF-8" do assert_raises ArgumentError do @transliterator.transliterate("a\x92b")