class SgtnClient::Translation

Public Class Methods

getString(component, key, locale) click to toggle source
# File lib/sgtn-client/api/translation.rb, line 14
def self.getString(component, key, locale)
  flocale = SgtnClient::LocaleUtil.fallback(locale)
  cache_key = SgtnClient::CacheUtil.get_cachekey(component, flocale)
  items = SgtnClient::CacheUtil.get_cache(cache_key)
  if items.nil?
    items = getTranslations(component, flocale)
    SgtnClient::CacheUtil.write_cache(cache_key, items)
  else
    SgtnClient.logger.debug "Getting translations from cache with key: " + cache_key
  end

  default = SgtnClient::Config.configurations.default
  if items.nil? || items["messages"] == nil
    return SgtnClient::Source.getSource(component, key, default)
  end
  str = items["messages"][key]
  if str.nil?
    return SgtnClient::Source.getSource(component, key, default)
  else
    return str
  end
 end
getString_f(component, key, args, locale) click to toggle source
# File lib/sgtn-client/api/translation.rb, line 37
def self.getString_f(component, key, args, locale)
   s = getString(component, key, locale)
   if args.is_a?(Hash)
    args.each do |source, arg|
      s.gsub! "{#{source}}", arg
    end
   elsif args.is_a?(Array)
    s = sprintf s % args
   end
   return s
end
getStrings(component, locale) click to toggle source
# File lib/sgtn-client/api/translation.rb, line 49
def self.getStrings(component, locale)
  flocale = SgtnClient::LocaleUtil.fallback(locale)
  cache_key = SgtnClient::CacheUtil.get_cachekey(component, flocale)
  items = SgtnClient::CacheUtil.get_cache(cache_key)
  if items.nil?
    items = getTranslations(component, flocale)
    SgtnClient::CacheUtil.write_cache(cache_key, items)
  else
    SgtnClient.logger.debug "Getting translations from cache with key: " + cache_key
  end

  default = SgtnClient::Config.configurations.default
  if items.nil? || items["messages"] == nil
    items = {}
    s = SgtnClient::Source.getSources(component, default)
    default_component, value = s.first
    items["component"] = default_component
    items["messages"] = value
    items["locale"] = 'source'
  end
  return items
 end

Private Class Methods

getTranslations(component, locale) click to toggle source
# File lib/sgtn-client/api/translation.rb, line 75
def self.getTranslations(component, locale)
  env = SgtnClient::Config.default_environment
  mode = SgtnClient::Config.configurations[env]["bundle_mode"]
  if mode == 'offline'
    return get_offbundle(component, locale)
  else
    return get_server(component, locale)
  end
end
get_offbundle(component, locale) click to toggle source
# File lib/sgtn-client/api/translation.rb, line 85
def self.get_offbundle(component, locale)
  env = SgtnClient::Config.default_environment
  product_name = SgtnClient::Config.configurations[env]["product_name"]
  version = SgtnClient::Config.configurations[env]["version"].to_s
  translation_bundle = SgtnClient::Config.configurations[env]["translation_bundle"]
  bundlepath = translation_bundle + "/" + product_name + "/" + version + "/" + component + "/messages_" + locale + ".json"
  SgtnClient.logger.debug "Getting translations from offline bundle: " + bundlepath
  begin
    file = File.read(bundlepath)
    data_hash = MultiJson.load(file)
  rescue => exception
    SgtnClient.logger.error exception.message
  end
  return data_hash
end
get_server(component, locale) click to toggle source
# File lib/sgtn-client/api/translation.rb, line 101
def self.get_server(component, locale)
  env = SgtnClient::Config.default_environment
  product_name = SgtnClient::Config.configurations[env]["product_name"]
  vip_server = SgtnClient::Config.configurations[env]["vip_server"]
  SgtnClient.logger.debug "Getting translations from server: " + vip_server
  version = SgtnClient::Config.configurations[env]["version"].to_s
  url = vip_server + "/i18n/api/v2/translation/products/" + product_name + "/versions/" + version + "/locales/" + locale + "/components/" + component+ "?checkTranslationStatus=false&machineTranslation=false&pseudo=false"
  SgtnClient.logger.debug url
  begin
    obj = SgtnClient::Core::Request.get(url)
  rescue => exception
    SgtnClient.logger.error exception.message
  end
  if obj != nil
    obj = obj["data"]
  end
  return obj
end