Sha256: 30946f5078d2ea0472c28dab983dbcd084b9bf2ad42e76c9d3e54f6ad51a06ab
Contents?: true
Size: 1.28 KB
Versions: 3
Compression:
Stored size: 1.28 KB
Contents
module Locomotive module Steam class TranslatorService < Struct.new(:repository, :current_locale) # Return the translation described by a key. # # @param [ String ] key The key of the translation. # @param [ String ] locale The locale we want the translation in # @param [ String ] scope If specified, instead of looking in the translations, it will use I18n instead. # # @return [ String ] the translated text or nil if not found # def translate(input, locale, scope = nil) locale ||= self.current_locale if scope.blank? values = repository.by_key(input).try(:values) || {} # FIXME: important to check if the returned value is nil (instead of nil + false) # false being reserved for an existing key but without provided translation) if (translation = values[locale.to_s]).present? translation else Locomotive::Common::Logger.warn "Missing translation '#{input}' for the '#{locale}' locale".yellow ActiveSupport::Notifications.instrument('steam.missing_translation', input: input, locale: locale) input end else I18n.t(input, scope: scope.split('.'), locale: locale) end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems