Module: Ember::I18n
- Extended by:
- I18n
- Included in:
- I18n
- Defined in:
- lib/ember-i18n-rails.rb,
lib/ember/i18n/engine.rb,
lib/ember/i18n/railtie.rb,
lib/ember/i18n/version.rb
Defined Under Namespace
Modules: Version Classes: Engine, Railtie
Instance Method Summary collapse
-
#assert_usable_configuration! ⇒ Object
Under rails 3.1.1 and higher, perform a check to ensure that the full environment will be available during asset compilation.
-
#config ⇒ Object
Load configuration file for partial exporting and custom output directory.
-
#config? ⇒ Boolean
Check if configuration file exist.
- #config_file ⇒ Object
- #default_locales_path ⇒ Object
-
#export! ⇒ Object
Export translations to JavaScript, considering settings from configuration file.
- #export_dir ⇒ Object
- #flat_hash(data, prefix = '', result = {}) ⇒ Object
- #has_asset_pipeline? ⇒ Boolean
- #javascript_file ⇒ Object
-
#save(translations, file) ⇒ Object
Convert translations to JSON string and save file.
-
#setup! ⇒ Object
Copy configuration and JavaScript library files to config/ember-i18n.yml and public/javascripts/i18n.js.
-
#translations ⇒ Object
Initialize and return translations.
-
#update! ⇒ Object
Retrieve an updated JavaScript library from Github.
Instance Method Details
#assert_usable_configuration! ⇒ Object
Under rails 3.1.1 and higher, perform a check to ensure that the full environment will be available during asset compilation. This is required to ensure I18n is loaded.
13 14 15 16 17 |
# File 'lib/ember-i18n-rails.rb', line 13 def assert_usable_configuration! @usable_configuration ||= Rails.version >= "3.1.1" && Rails.configuration.assets.initialize_on_precompile || raise("Cannot precompile ember-i18n translations unless environment is initialized. Please set config.assets.initialize_on_precompile to true.") end |
#config ⇒ Object
Load configuration file for partial exporting and custom output directory
67 68 69 70 71 72 73 |
# File 'lib/ember-i18n-rails.rb', line 67 def config if config? (YAML.load_file(config_file) || {}).with_indifferent_access else {} end end |
#config? ⇒ Boolean
Check if configuration file exist
76 77 78 |
# File 'lib/ember-i18n-rails.rb', line 76 def config? File.file? config_file end |
#config_file ⇒ Object
23 24 25 |
# File 'lib/ember-i18n-rails.rb', line 23 def config_file Rails.root.join("config/ember-i18n.yml") end |
#default_locales_path ⇒ Object
117 118 119 |
# File 'lib/ember-i18n-rails.rb', line 117 def default_locales_path Dir[Rails.root.join('config', 'locales', '*.yml').to_s] end |
#export! ⇒ Object
Export translations to JavaScript, considering settings from configuration file
41 42 43 44 45 46 47 48 49 |
# File 'lib/ember-i18n-rails.rb', line 41 def export! if config[:split] translations.keys.each do |locale| save(flat_hash(translations[locale]), File.join(export_dir, "translations_#{locale}.js")) end else save(flat_hash(translations), File.join(export_dir, "translations.js")) end end |
#export_dir ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/ember-i18n-rails.rb', line 27 def export_dir if has_asset_pipeline? "app/assets/javascripts/i18n" else "public/javascripts" end end |
#flat_hash(data, prefix = '', result = {}) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/ember-i18n-rails.rb', line 51 def flat_hash(data, prefix = '', result = {}) data.each do |key, value| current_prefix = prefix.present? ? "#{prefix}.#{key}" : key if !value.is_a?(Hash) result[current_prefix] = value.respond_to?(:stringify_keys) ? value.stringify_keys : value else flat_hash(value, current_prefix, result) end end result.stringify_keys end |
#has_asset_pipeline? ⇒ Boolean
19 20 21 |
# File 'lib/ember-i18n-rails.rb', line 19 def has_asset_pipeline? Rails.configuration.respond_to?(:assets) && Rails.configuration.assets.enabled end |
#javascript_file ⇒ Object
35 36 37 |
# File 'lib/ember-i18n-rails.rb', line 35 def javascript_file Rails.root.join(export_dir, "ember-i18n.js") end |
#save(translations, file) ⇒ Object
Convert translations to JSON string and save file.
97 98 99 100 101 102 103 104 105 106 |
# File 'lib/ember-i18n-rails.rb', line 97 def save(translations, file) file = Rails.root.join(file) FileUtils.mkdir_p File.dirname(file) File.open(file, "w+") do |f| f << 'Em.I18n.translations = ' f << JSON.pretty_generate(translations).html_safe f << ';' end end |
#setup! ⇒ Object
Copy configuration and JavaScript library files to config/ember-i18n.yml and public/javascripts/i18n.js.
82 83 84 85 86 |
# File 'lib/ember-i18n-rails.rb', line 82 def setup! FileUtils.mkdir_p(export_dir) FileUtils.cp(File.dirname(__FILE__) + "/../vendor/assets/javascripts/ember-i18n.js", javascript_file) FileUtils.cp(File.dirname(__FILE__) + "/../config/ember-i18n.yml", config_file) unless config? end |
#translations ⇒ Object
Initialize and return translations
109 110 111 112 113 114 115 |
# File 'lib/ember-i18n-rails.rb', line 109 def translations ::I18n.load_path = default_locales_path ::I18n.backend.instance_eval do init_translations unless initialized? translations end end |
#update! ⇒ Object
Retrieve an updated JavaScript library from Github.
89 90 91 92 93 94 |
# File 'lib/ember-i18n-rails.rb', line 89 def update! FileUtils.mkdir_p(export_dir) require "open-uri" contents = open("https://raw.github.com/jamesarosen/ember-i18n/master/lib/i18n.js").read File.open(javascript_file, "w+") {|f| f << contents} end |