class SgtnClient::Translation
Public Class Methods
getString(component, key, locale)
click to toggle source
# File lib/sgtn-client/api/translation.rb, line 17 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? str = SgtnClient::Source.getSource(component, key, SgtnClient::Config.configurations.default) if str.nil? SgtnClient.logger.debug "[Translation][getString] Missing source string with key: #{key}, component: #{component}, locale: #{locale}" end end str end
getString_f(component, key, args, locale, *optionals)
click to toggle source
# File lib/sgtn-client/api/translation.rb, line 44 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) if s.nil? return nil end 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
getString_p(component, key, plural_args, locale)
click to toggle source
# File lib/sgtn-client/api/translation.rb, line 29 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? str = SgtnClient::Source.getSource(component, key, SgtnClient::Config.configurations.default) if str.nil? SgtnClient.logger.debug "[Translation][getString_p] Missing source string with key: #{key}, component: #{component}, locale: #{locale}" return nil end str.to_plural_s(:en, plural_args) else str.to_plural_s(locale, plural_args) end end
getStrings(component, locale)
click to toggle source
# File lib/sgtn-client/api/translation.rb, line 60 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) default = SgtnClient::Config.configurations.default if items.nil? || items["messages"] == nil items = {} s = SgtnClient::Source.getSources(component, default) if s.nil? SgtnClient.logger.error "[Translation][getStrings] Missing component: #{component}, locale: #{locale}" else default_component, value = s.first items["component"] = component items["messages"] = value items["locale"] = 'source' end end return items end
Private Class Methods
getTranslation(component, key, locale)
click to toggle source
# File lib/sgtn-client/api/translation.rb, line 83 def self.getTranslation(component, key, locale) locale = SgtnClient::LocaleUtil.get_best_locale(locale) items = get_cs(component, locale) if items.nil? || items["messages"] == nil nil else items["messages"][key] end end
get_cs(component, locale)
click to toggle source
# File lib/sgtn-client/api/translation.rb, line 93 def self.get_cs(component, locale) # source locale always return source bundle if locale == LocaleUtil.get_source_locale sources = SgtnClient::Source.getSources(component, SgtnClient::Config.configurations.default) messages = sources&.first&.last return {'locale' => locale, 'component' => component, 'messages' => messages} if messages end cache_key = SgtnClient::CacheUtil.get_cachekey(component, locale) SgtnClient.logger.debug "[Translation][get_cs]cache_key=#{cache_key}" expired, items = SgtnClient::CacheUtil.get_cache(cache_key) if items.nil? || expired items = load(component, locale) if items.nil? items = SgtnClient::Source.getSources(component, SgtnClient::Config.configurations.default) SgtnClient::Core::Cache.put(cache_key, items, 60) else SgtnClient::CacheUtil.write_cache(cache_key, items) end else SgtnClient.logger.debug "[Translation]get translations from cache with key: " + cache_key end return items end
load(component, locale)
click to toggle source
# File lib/sgtn-client/api/translation.rb, line 119 def self.load(component, locale) env = SgtnClient::Config.default_environment mode = SgtnClient::Config.configurations[env]["bundle_mode"] SgtnClient.logger.debug "[Translation][load]mode=#{mode}" if mode == 'offline' return load_o(component, locale) else return load_s(component, locale) end end
load_o(component, locale)
click to toggle source
# File lib/sgtn-client/api/translation.rb, line 130 def self.load_o(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::FileUtil.read_json(bundlepath) end
load_s(component, locale)
click to toggle source
# File lib/sgtn-client/api/translation.rb, line 139 def self.load_s(component, locale) env = SgtnClient::Config.default_environment product_name = SgtnClient::Config.configurations[env]["product_name"] vip_server = SgtnClient::Config.configurations[env]["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" 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