Module: HaveAPI::Client::I18n
- Defined in:
- lib/haveapi/client/i18n.rb
Constant Summary collapse
- DEFAULT_LOCALE =
:en- DEFAULT_LANGUAGE_HEADER =
'Accept-Language'.freeze
- HEADER_NAME =
/\A[A-Za-z0-9!#$%&'*+\-.^_`|~]+\z/- HEADER_VALUE_UNSAFE =
/[\x00\r\n]/
Class Method Summary collapse
- .assert_header_name!(header) ⇒ Object
- .assert_header_value!(value) ⇒ Object
- .locale_for(language) ⇒ Object
- .request_headers(language, language_header = DEFAULT_LANGUAGE_HEADER) ⇒ Object
- .t(language, key, values = {}) ⇒ Object
Class Method Details
.assert_header_name!(header) ⇒ Object
37 38 39 40 41 |
# File 'lib/haveapi/client/i18n.rb', line 37 def assert_header_name!(header) return if header.is_a?(String) && header.match?(HEADER_NAME) raise ArgumentError, "invalid language HTTP header name: #{header.inspect}" end |
.assert_header_value!(value) ⇒ Object
43 44 45 46 47 |
# File 'lib/haveapi/client/i18n.rb', line 43 def assert_header_value!(value) return if value.is_a?(String) && !value.match?(HEADER_VALUE_UNSAFE) raise ArgumentError, "invalid language HTTP header value: #{value.inspect}" end |
.locale_for(language) ⇒ Object
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/haveapi/client/i18n.rb', line 26 def locale_for(language) return DEFAULT_LOCALE if language.nil? || language.to_s.empty? parse_accept_language(language).each do |tag| normalized = normalize_locale(tag) return normalized if normalized && .has_key?(normalized) end DEFAULT_LOCALE end |
.request_headers(language, language_header = DEFAULT_LANGUAGE_HEADER) ⇒ Object
17 18 19 20 21 22 23 24 |
# File 'lib/haveapi/client/i18n.rb', line 17 def request_headers(language, language_header = DEFAULT_LANGUAGE_HEADER) return {} if language.nil? || language.to_s.empty? assert_header_name!(language_header) assert_header_value!(language) { language_header => language.to_s } end |
.t(language, key, values = {}) ⇒ Object
11 12 13 14 15 |
# File 'lib/haveapi/client/i18n.rb', line 11 def t(language, key, values = {}) = lookup(locale_for(language), key) || lookup(DEFAULT_LOCALE, key) || key.to_s interpolate(, values) end |