Change interpolation syntax to %{key}

This commit is contained in:
Simon Eskildsen
2013-08-21 13:18:08 -04:00
parent 5ee4f960e8
commit df5980f23f
3 changed files with 7 additions and 15 deletions

View File

@@ -24,10 +24,10 @@ module Liquid
private
def interpolate(name, vars)
name.gsub(/([^\\]):(\w+)/) {
raise TranslationError, translate("errors.i18n.undefined_interpolation", :key => $1, :name => name) unless vars[$2.to_sym]
"#{$1}#{vars[$2.to_sym]}"
}.gsub("\\:", ":")
name.gsub(/%{(\w+)}/) {
raise TranslationError, translate("errors.i18n.undefined_interpolation", :key => $1, :name => name) unless vars[$1.to_sym]
"#{vars[$1.to_sym]}"
}
end
def deep_fetch_translation(name)

View File

@@ -1,9 +1,9 @@
---
simple: "less is more"
whatever: "something :something"
whatever: "something %{something}"
errors:
i18n:
undefined_interpolation: "undefined key :key"
unknown_translation: "translation ':name' wasn't found"
undefined_interpolation: "undefined key %{key}"
unknown_translation: "translation '%{name}' wasn't found"
syntax:
oops: "something wasn't right"

View File

@@ -34,12 +34,4 @@ class I18nTest < Test::Unit::TestCase
def test_sets_default_path_to_en
assert_equal I18n::DEFAULT_LOCALE, I18n.new.path
end
def test_escaping_of_symbols
assert_equal "do replaced! not :gsub", @i18n.send(:interpolate,
'do :replace not \\:gsub',
{
:replace => "replaced!"
})
end
end