module SgtnClient::Translation

Public Class Methods

getString(component, key, locale) click to toggle source
# File lib/sgtn-client/api/translation.rb, line 16
def self.getString(component, key, locale)
  SgtnClient.logger.debug "[Translation.getString]component: #{component}, key: #{key}, locale: #{locale}"
  str = getTranslation(component, key, locale)
  if str.nil? && !LocaleUtil.is_source_locale(locale)
    str = getTranslation(component, key, LocaleUtil.get_source_locale)
  end
  str
end
getString_f(component, key, args, locale, *optionals) click to toggle source
# File lib/sgtn-client/api/translation.rb, line 39
def self.getString_f(component, key, args, locale, *optionals)
  SgtnClient.logger.debug "[Translation][getString_f]component=#{component}, key=#{key}, locale=#{locale}"
  s = getString(component, key, locale, *optionals)
  return nil if s.nil?

  if args.is_a?(Hash)
    args.each do |source, arg|
      s.gsub! "{#{source}}", arg
    end
  elsif args.is_a?(Array)
    s = s % args
  end
  s
end
getString_p(component, key, plural_args, locale) click to toggle source
# File lib/sgtn-client/api/translation.rb, line 25
def self.getString_p(component, key, plural_args, locale)
  SgtnClient.logger.debug "[Translation][getString_p]component=#{component}, key=#{key}, locale=#{locale}"
  str = getTranslation(component, key, locale)
  if str.nil?
    unless LocaleUtil.is_source_locale(locale)
      str = getTranslation(component, key, LocaleUtil.get_source_locale)
      str.to_plural_s(LocaleUtil.get_source_locale, plural_args) if str
    end
  else
    locale = str.locale if str.is_a?(SgtnClient::StringUtil)
    str.to_plural_s(locale, plural_args)
  end
end
getStrings(component, locale) click to toggle source
# File lib/sgtn-client/api/translation.rb, line 54
def self.getStrings(component, locale)
  SgtnClient.logger.debug "[Translation][getStrings]component=#{component}, locale=#{locale}"
  locale = SgtnClient::LocaleUtil.get_best_locale(locale)
  items = get_cs(component, locale)
  if (items.nil? || items['messages'].nil?) && !LocaleUtil.is_source_locale(locale)
    items = get_cs(component, LocaleUtil.get_source_locale)
  end

  items
end
init_translations() click to toggle source
# File lib/sgtn-client/api/translation.rb, line 86
def init_translations
  # TODO: Lock to initialize?
  env = SgtnClient::Config.default_environment
  mode = SgtnClient::Config.configurations[env]['bundle_mode']
  SgtnClient.logger.debug "[Translation][init_translations]mode=#{mode}"

  if mode == 'offline'
    extend SgtnClient::TranslationLoader::LocalBundle
  else
    extend SgtnClient::TranslationLoader::ServerBundle
  end

  extend SgtnClient::TranslationLoader::SourceComparer
  extend SgtnClient::TranslationLoader::Cache

  load_translations
  @initialized = true
end

Private Class Methods

getTranslation(component, key, locale) click to toggle source
# File lib/sgtn-client/api/translation.rb, line 65
def self.getTranslation(component, key, locale)
  locale = SgtnClient::LocaleUtil.get_best_locale(locale)
  items = get_cs(component, locale)
  items&.dig('messages', key)
end
get_cs(component, locale) click to toggle source
# File lib/sgtn-client/api/translation.rb, line 71
def self.get_cs(component, locale)
  cache_item = load_bundle(component, locale)
  cache_item&.dig(:items)
end
initialized?() click to toggle source
# File lib/sgtn-client/api/translation.rb, line 82
def initialized?
  @initialized ||= false
end
load_bundle(component, locale) click to toggle source
Calls superclass method
# File lib/sgtn-client/api/translation.rb, line 76
def self.load_bundle(component, locale)
  init_translations unless initialized?
  super
end
load_translations() click to toggle source
# File lib/sgtn-client/api/translation.rb, line 105
def load_translations; end