class TranslationIO::Client::BaseOperation::SaveSpecialYamlFilesStep
Public Class Methods
new(source_locale, target_locales, yaml_locales_path, yaml_file_paths)
click to toggle source
# File lib/translation_io/client/base_operation/save_special_yaml_files_step.rb, line 6 def initialize(source_locale, target_locales, yaml_locales_path, yaml_file_paths) @source_locale = source_locale @target_locales = target_locales @yaml_locales_path = yaml_locales_path @yaml_file_paths = yaml_file_paths end
top_comment()
click to toggle source
# File lib/translation_io/client/base_operation/save_special_yaml_files_step.rb, line 78 def self.top_comment <<-EOS # THIS FILE CONTAINS LOCALIZATION KEYS : date and number formats, number precisions, # number separators and all non-textual values depending on the language. # These values must not reach the translator, so they are separated in this file. # # More info here: https://translation.io/blog/gettext-is-better-than-rails-i18n#localization # # You can edit and/or add new localization keys here, they won't be touched by Translation.io. # # If you want to add a new localization key prefix, use the option described here: # https://github.com/translation/rails#custom-localization-key-prefixes # EOS end
Public Instance Methods
run()
click to toggle source
# File lib/translation_io/client/base_operation/save_special_yaml_files_step.rb, line 13 def run TranslationIO.info "Saving new localization YAML files (with non-string values)." all_flat_translations = {} @yaml_file_paths.each do |file_path| all_flat_translations.merge!( YAMLConversion.get_flat_translations_for_yaml_file(file_path) ) end all_flat_special_translations = all_flat_translations.select do |key, value| YamlEntry.localization?(key, value) end params = {} @target_locales.each do |target_locale| yaml_path = File.join(@yaml_locales_path, "localization.#{target_locale}.yml") TranslationIO.info yaml_path, 2, 2 target_flat_special_translations = all_flat_special_translations.select do |key| YamlEntry.from_locale?(key, target_locale) && !YamlEntry.ignored?(key) end yaml_data = YAMLConversion.get_yaml_data_from_flat_translations(target_flat_special_translations, **{ :force_keep_empty_keys => true # We want to keep empty keys from localization.xx.yml files (sometimes needed for delimiters!) }) params["yaml_data_#{target_locale}"] = yaml_data # To have a localization.xx.yml file during tests (without call to backend) if TranslationIO.config.test if YAML::load(yaml_data).present? File.open(yaml_path, 'wb') do |file| file.write(self.class.top_comment) file.write(yaml_data) end end end end TranslationIO.info "Collecting YAML localization entries from server." # To have a localization.xx.yml file with call to backend if !TranslationIO.config.test uri = URI("#{TranslationIO.client.endpoint}/projects/#{TranslationIO.client.api_key}/fill_yaml_localizations") parsed_response = BaseOperation.perform_request(uri, params) if !parsed_response.nil? @target_locales.each do |target_locale| yaml_path = File.join(@yaml_locales_path, "localization.#{target_locale}.yml") yaml_data = parsed_response["yaml_data_#{target_locale}"] if yaml_data.present? && YAML::load(yaml_data).present? File.open(yaml_path, 'wb') do |file| file.write(self.class.top_comment) file.write(yaml_data) end end end end end end