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")