summaryrefslogtreecommitdiff
path: root/vendor/bundle/ruby/3.4.0/gems/liquid-4.0.4/lib/liquid/i18n.rb
diff options
context:
space:
mode:
authorBenjamin Sanders <ben@Benjamins-MacBook-Pro.local>2025-10-11 10:34:24 -0400
committerBenjamin Sanders <ben@Benjamins-MacBook-Pro.local>2025-10-11 10:34:24 -0400
commit5571dc766e2143e39762ff0b47c41d1c2e154f4c (patch)
treef4f124d314a7e76c04484515aa0fd1f2e271a601 /vendor/bundle/ruby/3.4.0/gems/liquid-4.0.4/lib/liquid/i18n.rb
parent359f3309c97fc894b63e0a295c76ab298504d635 (diff)
Vendor bundled gems for deployment
Diffstat (limited to 'vendor/bundle/ruby/3.4.0/gems/liquid-4.0.4/lib/liquid/i18n.rb')
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/liquid-4.0.4/lib/liquid/i18n.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/vendor/bundle/ruby/3.4.0/gems/liquid-4.0.4/lib/liquid/i18n.rb b/vendor/bundle/ruby/3.4.0/gems/liquid-4.0.4/lib/liquid/i18n.rb
new file mode 100644
index 0000000..2671507
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/liquid-4.0.4/lib/liquid/i18n.rb
@@ -0,0 +1,39 @@
+require 'yaml'
+
+module Liquid
+ class I18n
+ DEFAULT_LOCALE = File.join(File.expand_path(__dir__), "locales", "en.yml")
+
+ TranslationError = Class.new(StandardError)
+
+ attr_reader :path
+
+ def initialize(path = DEFAULT_LOCALE)
+ @path = path
+ end
+
+ def translate(name, vars = {})
+ interpolate(deep_fetch_translation(name), vars)
+ end
+ alias_method :t, :translate
+
+ def locale
+ @locale ||= YAML.load_file(@path)
+ end
+
+ private
+
+ def interpolate(name, vars)
+ name.gsub(/%\{(\w+)\}/) do
+ # raise TranslationError, "Undefined key #{$1} for interpolation in translation #{name}" unless vars[$1.to_sym]
+ (vars[$1.to_sym]).to_s
+ end
+ end
+
+ def deep_fetch_translation(name)
+ name.split('.'.freeze).reduce(locale) do |level, cur|
+ level[cur] or raise TranslationError, "Translation for #{name} does not exist in locale #{path}"
+ end
+ end
+ end
+end