ad_localize 3.6.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -1
  3. data/Gemfile.lock +34 -11
  4. data/README.md +148 -145
  5. data/ad_localize.gemspec +2 -0
  6. data/bin/console +1 -0
  7. data/exe/ad_localize +1 -1
  8. data/lib/ad_localize.rb +52 -11
  9. data/lib/ad_localize/ad_logger.rb +22 -9
  10. data/lib/ad_localize/cli.rb +10 -0
  11. data/lib/ad_localize/constant.rb +2 -21
  12. data/lib/ad_localize/entities/key.rb +74 -0
  13. data/lib/ad_localize/entities/locale_wording.rb +60 -0
  14. data/lib/ad_localize/entities/translation.rb +20 -0
  15. data/lib/ad_localize/entities/wording.rb +24 -0
  16. data/lib/ad_localize/interactors/execute_export_request.rb +43 -0
  17. data/lib/ad_localize/interactors/export_csv_files.rb +17 -0
  18. data/lib/ad_localize/interactors/export_g_spreadsheet.rb +55 -0
  19. data/lib/ad_localize/interactors/export_wording.rb +27 -0
  20. data/lib/ad_localize/interactors/merge_wordings.rb +43 -0
  21. data/lib/ad_localize/interactors/platforms/export_android_locale_wording.rb +39 -0
  22. data/lib/ad_localize/interactors/platforms/export_ios_locale_wording.rb +62 -0
  23. data/lib/ad_localize/interactors/platforms/export_json_locale_wording.rb +23 -0
  24. data/lib/ad_localize/interactors/platforms/export_platform_factory.rb +44 -0
  25. data/lib/ad_localize/interactors/platforms/export_properties_locale_wording.rb +29 -0
  26. data/lib/ad_localize/interactors/platforms/export_yaml_locale_wording.rb +23 -0
  27. data/lib/ad_localize/mappers/android_translation_mapper.rb +18 -0
  28. data/lib/ad_localize/mappers/csv_path_to_wording.rb +76 -0
  29. data/lib/ad_localize/mappers/ios_translation_mapper.rb +12 -0
  30. data/lib/ad_localize/mappers/locale_wording_to_hash.rb +25 -0
  31. data/lib/ad_localize/mappers/options_to_export_request.rb +28 -0
  32. data/lib/ad_localize/mappers/translation_group_mapper.rb +14 -0
  33. data/lib/ad_localize/mappers/translation_mapper.rb +30 -0
  34. data/lib/ad_localize/mappers/value_range_to_wording.rb +69 -0
  35. data/lib/ad_localize/option_handler.rb +30 -57
  36. data/lib/ad_localize/repositories/file_system_repository.rb +13 -0
  37. data/lib/ad_localize/repositories/g_sheets_repository.rb +44 -0
  38. data/lib/ad_localize/requests/export_request.rb +77 -0
  39. data/lib/ad_localize/requests/g_spreadsheet_options.rb +47 -0
  40. data/lib/ad_localize/requests/merge_policy.rb +28 -0
  41. data/lib/ad_localize/serializers/info_plist_serializer.rb +27 -0
  42. data/lib/ad_localize/serializers/json_serializer.rb +13 -0
  43. data/lib/ad_localize/serializers/localizable_strings_serializer.rb +27 -0
  44. data/lib/ad_localize/serializers/localizable_stringsdict_serializer.rb +35 -0
  45. data/lib/ad_localize/serializers/properties_serializer.rb +25 -0
  46. data/lib/ad_localize/serializers/strings_serializer.rb +33 -0
  47. data/lib/ad_localize/serializers/with_template.rb +19 -0
  48. data/lib/ad_localize/serializers/yaml_serializer.rb +13 -0
  49. data/lib/ad_localize/templates/android/strings.xml.erb +19 -0
  50. data/lib/ad_localize/templates/ios/InfoPlist.strings.erb +3 -0
  51. data/lib/ad_localize/templates/ios/Localizable.strings.erb +3 -0
  52. data/lib/ad_localize/templates/ios/Localizable.stringsdict.erb +41 -0
  53. data/lib/ad_localize/templates/properties/template.properties.erb +3 -0
  54. data/lib/ad_localize/version.rb +1 -1
  55. data/lib/ad_localize/view_models/translation_group_view_model.rb +15 -0
  56. data/lib/ad_localize/view_models/translation_view_model.rb +19 -0
  57. metadata +74 -11
  58. data/Makefile +0 -11
  59. data/lib/ad_localize/csv_file_manager.rb +0 -64
  60. data/lib/ad_localize/csv_parser.rb +0 -165
  61. data/lib/ad_localize/platform/android_formatter.rb +0 -70
  62. data/lib/ad_localize/platform/ios_formatter.rb +0 -143
  63. data/lib/ad_localize/platform/json_formatter.rb +0 -17
  64. data/lib/ad_localize/platform/platform_formatter.rb +0 -109
  65. data/lib/ad_localize/platform/yml_formatter.rb +0 -19
  66. data/lib/ad_localize/runner.rb +0 -55
@@ -1,19 +0,0 @@
1
- module AdLocalize::Platform
2
- class YmlFormatter < PlatformFormatter
3
- def platform
4
- :yml
5
- end
6
-
7
- def export(locale, data, export_extension = "yml", substitution_format = "yml")
8
- locale = locale.to_sym
9
- yml_data = build_platform_data_splitting_on_dots(locale, data)
10
-
11
- platform_dir.join("#{locale.to_s}.#{export_extension}").open("w") do |file|
12
- file.puts yml_data.to_yaml
13
- end
14
-
15
- AdLocalize::LOGGER.log(:debug, :green, "YAML [#{locale}] ---> DONE!")
16
- end
17
-
18
- end
19
- end
@@ -1,55 +0,0 @@
1
- module AdLocalize
2
- class Runner
3
- attr_accessor :options
4
-
5
- def initialize
6
- @options = OptionHandler.parse
7
- end
8
-
9
- def run(args = ARGV)
10
- LOGGER.log(:info, :green, "OPTIONS : #{options}")
11
- input_files = (args + [options.dig(:drive_key)]).compact # drive_key can be nil
12
- if input_files.length.zero?
13
- LOGGER.log(:error, :red, "No CSV to parse. Use option -h to see how to use this script")
14
- else
15
- file_to_parse = args.first
16
- LOGGER.log(:warn, :yellow, "Only one CSV can be treated - the priority goes to #{file_to_parse}") if input_files.length > 1
17
- if args.empty?
18
- options[:drive_file] = CsvFileManager.download_from_drive(options.dig(:drive_key), options.dig(:sheet_id), options.dig(:use_service_account))
19
- file_to_parse = options.dig(:drive_file)
20
- end
21
- if CsvFileManager.csv?(file_to_parse)
22
- export(file_to_parse)
23
- else
24
- LOGGER.log(:error, :red, "#{file_to_parse} is not a csv. Make sure to enable \"Allow external access\" in sharing options.")
25
- end
26
- CsvFileManager.delete_drive_file(options[:drive_file]) if options[:drive_file]
27
- end
28
- end
29
-
30
- private
31
-
32
- def export(file)
33
- LOGGER.log(:info, :green, "********* PARSING #{file} *********")
34
- LOGGER.log(:info, :green, "Extracting data from file...")
35
- parser = CsvParser.new
36
- data = parser.extract_data(file)
37
- if data.empty?
38
- LOGGER.log(:error, :red, "No data were found in the file - check if there is a key column in the file")
39
- else
40
- export_platforms = options.dig(:only) || Constant::SUPPORTED_PLATFORMS
41
- add_intermediate_platform_dir = export_platforms.length > 1
42
- export_platforms.each do |platform|
43
- platform_formatter = "AdLocalize::Platform::#{platform.to_s.camelize}Formatter".constantize.new(
44
- parser.locales.first,
45
- options.dig(:output_path),
46
- add_intermediate_platform_dir
47
- )
48
- parser.locales.each do |locale|
49
- platform_formatter.export(locale, data)
50
- end
51
- end
52
- end
53
- end
54
- end
55
- end