class Onesky::Rails::Client
Attributes
base_locale[RW]
client[RW]
config[RW]
onesky_locales[RW]
project[RW]
Public Class Methods
new(config_hash)
click to toggle source
# File lib/onesky/rails/client.rb, line 9 def initialize(config_hash) unless is_valid_config! config_hash raise ArgumentError, 'Invalid config. Please check if `api_key`, `api_secret` and `project_id` exist.' end @config = config_hash @client = ::Onesky::Client.new(@config['api_key'], @config['api_secret']) @client.plugin_code = 'rails-string' @project = @client.project(@config['project_id'].to_i) @base_locale = config_hash.fetch('base_locale', ::I18n.default_locale) @onesky_locales = [] end
Public Instance Methods
to_onesky_locale(locale)
click to toggle source
# File lib/onesky/rails/client.rb, line 34 def to_onesky_locale(locale) locale.gsub('_', '-') end
to_rails_locale(locale)
click to toggle source
# File lib/onesky/rails/client.rb, line 38 def to_rails_locale(locale) locale.gsub('-', '_') end
verify_languages!()
click to toggle source
# File lib/onesky/rails/client.rb, line 22 def verify_languages! languages = get_languages_from_onesky! languages.each do |language| locale = language['custom_locale'] || to_rails_locale(language['code']) if (language['is_base_language']) verify_base_locale!(locale) else @onesky_locales << locale end end end
Private Instance Methods
get_languages_from_onesky!()
click to toggle source
# File lib/onesky/rails/client.rb, line 48 def get_languages_from_onesky! JSON.parse(@project.list_language)['data'] end
is_valid_config!(config)
click to toggle source
# File lib/onesky/rails/client.rb, line 44 def is_valid_config!(config) config.has_key?('api_key') && config.has_key?('api_secret') && config.has_key?('project_id') end
verify_base_locale!(locale)
click to toggle source
# File lib/onesky/rails/client.rb, line 52 def verify_base_locale!(locale) if (locale != @base_locale.to_s) raise BaseLanguageNotMatchError, "The default locale (#{@base_locale.to_s}) of your Rails app doesn't match the base language (#{locale}) of the OneSky project" end end