translatomatic 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +19 -0
  3. data/.gitignore +0 -0
  4. data/.travis.yml +7 -7
  5. data/.yardopts +9 -0
  6. data/Gemfile +4 -4
  7. data/Guardfile +0 -0
  8. data/README.de.md +61 -16
  9. data/README.es.md +60 -15
  10. data/README.fr.md +61 -16
  11. data/README.it.md +60 -15
  12. data/README.ja.md +59 -14
  13. data/README.ko.md +137 -0
  14. data/README.md +58 -13
  15. data/README.ms.md +137 -0
  16. data/README.pt.md +137 -0
  17. data/README.ru.md +137 -0
  18. data/README.sv.md +137 -0
  19. data/README.zh.md +137 -0
  20. data/bin/setup +8 -8
  21. data/bin/translatomatic +6 -6
  22. data/bin/travis +1 -1
  23. data/config/locales/translatomatic/de.yml +104 -0
  24. data/config/locales/translatomatic/en.yml +101 -0
  25. data/config/locales/translatomatic/es.yml +105 -0
  26. data/config/locales/translatomatic/fr.yml +105 -0
  27. data/config/locales/translatomatic/it.yml +103 -0
  28. data/config/locales/translatomatic/ja.yml +102 -0
  29. data/config/locales/translatomatic/ko.yml +101 -0
  30. data/config/locales/translatomatic/ms.yml +103 -0
  31. data/config/locales/translatomatic/pt.yml +105 -0
  32. data/config/locales/translatomatic/ru.yml +103 -0
  33. data/config/locales/translatomatic/sv.yml +103 -0
  34. data/config/locales/translatomatic/zh.yml +102 -0
  35. data/db/migrate/201712170000_initial.rb +2 -1
  36. data/lib/translatomatic/cli/base.rb +73 -0
  37. data/lib/translatomatic/cli/common_options.rb +14 -0
  38. data/lib/translatomatic/cli/config.rb +81 -0
  39. data/lib/translatomatic/cli/database.rb +29 -0
  40. data/lib/translatomatic/cli/main.rb +112 -0
  41. data/lib/translatomatic/cli/translate.rb +146 -0
  42. data/lib/translatomatic/cli.rb +8 -216
  43. data/lib/translatomatic/config.rb +143 -0
  44. data/lib/translatomatic/converter.rb +196 -149
  45. data/lib/translatomatic/converter_stats.rb +18 -14
  46. data/lib/translatomatic/database.rb +35 -37
  47. data/lib/translatomatic/escaped_unicode.rb +1 -1
  48. data/lib/translatomatic/extractor/base.rb +2 -0
  49. data/lib/translatomatic/extractor/ruby.rb +1 -0
  50. data/lib/translatomatic/extractor.rb +1 -0
  51. data/lib/translatomatic/http_request.rb +43 -14
  52. data/lib/translatomatic/locale.rb +28 -4
  53. data/lib/translatomatic/logger.rb +21 -13
  54. data/lib/translatomatic/model/locale.rb +5 -1
  55. data/lib/translatomatic/model/text.rb +2 -0
  56. data/lib/translatomatic/model.rb +1 -0
  57. data/lib/translatomatic/option.rb +75 -10
  58. data/lib/translatomatic/progress_updater.rb +7 -3
  59. data/lib/translatomatic/resource_file/base.rb +41 -18
  60. data/lib/translatomatic/resource_file/html.rb +11 -14
  61. data/lib/translatomatic/resource_file/markdown.rb +13 -12
  62. data/lib/translatomatic/resource_file/plist.rb +3 -14
  63. data/lib/translatomatic/resource_file/properties.rb +21 -3
  64. data/lib/translatomatic/resource_file/resw.rb +1 -0
  65. data/lib/translatomatic/resource_file/text.rb +1 -0
  66. data/lib/translatomatic/resource_file/xcode_strings.rb +23 -14
  67. data/lib/translatomatic/resource_file/xml.rb +34 -22
  68. data/lib/translatomatic/resource_file/yaml.rb +39 -5
  69. data/lib/translatomatic/resource_file.rb +7 -5
  70. data/lib/translatomatic/string.rb +40 -12
  71. data/lib/translatomatic/tmx/document.rb +11 -12
  72. data/lib/translatomatic/tmx/translation_unit.rb +5 -1
  73. data/lib/translatomatic/tmx.rb +2 -0
  74. data/lib/translatomatic/translation.rb +30 -0
  75. data/lib/translatomatic/translation_result.rb +45 -45
  76. data/lib/translatomatic/translator/base.rb +128 -83
  77. data/lib/translatomatic/translator/frengly.rb +62 -57
  78. data/lib/translatomatic/translator/google.rb +35 -31
  79. data/lib/translatomatic/translator/microsoft.rb +41 -33
  80. data/lib/translatomatic/translator/my_memory.rb +68 -64
  81. data/lib/translatomatic/translator/yandex.rb +56 -39
  82. data/lib/translatomatic/translator.rb +99 -63
  83. data/lib/translatomatic/util.rb +31 -1
  84. data/lib/translatomatic/version.rb +4 -1
  85. data/lib/translatomatic.rb +17 -0
  86. data/translatomatic.gemspec +5 -4
  87. metadata +56 -16
@@ -1,64 +1,68 @@
1
- require 'bing_translator'
2
-
3
- module Translatomatic
4
- module Translator
5
-
6
- class MyMemory < Base
7
-
8
- define_options(
9
- { name: :mymemory_api_key, desc: "MyMemory API key", use_env: true },
10
- { name: :mymemory_email, desc: "Email address", use_env: true }
11
- )
12
-
13
- # Create a new MyMemory translator instance
14
- def initialize(options = {})
15
- super(options)
16
- @key = options[:mymemory_api_key] || ENV["MYMEMORY_API_KEY"]
17
- @email = options[:mymemory_email] || ENV["MYMEMORY_EMAIL"]
18
- @query_options = {}
19
- @query_options.merge!(de: @email) if @email
20
- @query_options.merge!(key: @key) if @key
21
- end
22
-
23
- # TODO: implement language list
24
- # (see Translatomatic::Translator::Base#languages)
25
- #def languages
26
- #end
27
-
28
- # Upload a set of translations to MyMemory
29
- # @param [Translatomatic::TMX::Document] TMX document
30
- def upload(tmx)
31
- request = Translatomatic::HTTPRequest.new(UPLOAD_URL)
32
- request.start do |http|
33
- body = [
34
- request.file(key: :tmx, filename: "import.tmx",
35
- content: tmx.to_xml, mime_type: "application/xml"
36
- ),
37
- request.param(key: :private, value: 0)
38
- ]
39
- response = request.post(body, multipart: true)
40
- log.debug("share response: #{response.body}")
41
- end
42
- end
43
-
44
- private
45
-
46
- GET_URL = 'https://api.mymemory.translated.net/get'
47
- UPLOAD_URL = 'https://api.mymemory.translated.net/tmx/import'
48
-
49
- def perform_translate(strings, from, to)
50
- perform_fetch_translations(GET_URL, strings, from, to)
51
- end
52
-
53
- def fetch_translation(request, string, from, to)
54
- response = request.get({
55
- langpair: from.to_s + "|" + to.to_s,
56
- q: string
57
- }.merge(@query_options)
58
- )
59
- data = JSON.parse(response.body)
60
- data['responseData']['translatedText']
61
- end
62
- end
63
- end
64
- end
1
+ require 'bing_translator'
2
+
3
+ module Translatomatic
4
+ module Translator
5
+
6
+ # Interface to the MyMemory translation API
7
+ # @see https://mymemory.translated.net/doc/
8
+ class MyMemory < Base
9
+
10
+ define_options(
11
+ { name: :mymemory_api_key, desc: t("translator.mymemory_api_key"), use_env: true },
12
+ { name: :mymemory_email, desc: t("translator.email_address"), use_env: true }
13
+ )
14
+
15
+ # Create a new MyMemory translator instance
16
+ def initialize(options = {})
17
+ super(options)
18
+ @key = options[:mymemory_api_key] || ENV["MYMEMORY_API_KEY"]
19
+ @email = options[:mymemory_email] || ENV["MYMEMORY_EMAIL"]
20
+ @query_options = {}
21
+ @query_options.merge!(de: @email) if @email
22
+ @query_options.merge!(key: @key) if @key
23
+ end
24
+
25
+ # TODO: implement language list
26
+ # (see Translatomatic::Translator::Base#languages)
27
+ #def languages
28
+ #end
29
+
30
+ # Upload a set of translations to MyMemory
31
+ # @param tmx [Translatomatic::TMX::Document] TMX document
32
+ # @return [void]
33
+ def upload(tmx)
34
+ request = Translatomatic::HTTPRequest.new(UPLOAD_URL)
35
+ request.start do |http|
36
+ body = [
37
+ request.file(key: :tmx, filename: "import.tmx",
38
+ content: tmx.to_xml, mime_type: "application/xml"
39
+ ),
40
+ request.param(key: :private, value: 0)
41
+ ]
42
+ response = request.post(body, multipart: true)
43
+ log.debug(t("translator.share_response",
44
+ response: response.body.inspect))
45
+ end
46
+ end
47
+
48
+ private
49
+
50
+ GET_URL = 'https://api.mymemory.translated.net/get'
51
+ UPLOAD_URL = 'https://api.mymemory.translated.net/tmx/import'
52
+
53
+ def perform_translate(strings, from, to)
54
+ perform_fetch_translations(GET_URL, strings, from, to)
55
+ end
56
+
57
+ def fetch_translation(request, string, from, to)
58
+ response = request.get({
59
+ langpair: from.to_s + "|" + to.to_s,
60
+ q: string # multiple q strings not supported (tested 20180101)
61
+ }.merge(@query_options)
62
+ )
63
+ data = JSON.parse(response.body)
64
+ data['responseData']['translatedText']
65
+ end
66
+ end
67
+ end
68
+ end
@@ -1,39 +1,56 @@
1
- require 'yandex-translator'
2
-
3
- module Translatomatic
4
- module Translator
5
-
6
- class Yandex < Base
7
-
8
- define_options({
9
- name: :yandex_api_key, desc: "Yandex API key", use_env: true
10
- })
11
-
12
- # Create a new Yandex translator instance
13
- def initialize(options = {})
14
- super(options)
15
- key = options[:yandex_api_key] || ENV["YANDEX_API_KEY"]
16
- raise "yandex api key required" if key.nil?
17
- @impl = ::Yandex::Translator.new(key)
18
- end
19
-
20
- # (see Translatomatic::Translator::Base#languages)
21
- def languages
22
- @languages ||= @impl.langs.collect { |i| i[0, 2] }.uniq
23
- end
24
-
25
- private
26
-
27
- def perform_translate(strings, from, to)
28
- translated = []
29
- strings.each do |string|
30
- result = @impl.translate(string, from: from.language, to: to.language) || ""
31
- translated.push(result)
32
- update_translated(result)
33
- end
34
- translated
35
- end
36
-
37
- end # class
38
- end # module
39
- end
1
+ module Translatomatic
2
+ module Translator
3
+
4
+ # Interface to the Yandex translation API
5
+ # @see https://tech.yandex.com/translate/
6
+ class Yandex < Base
7
+
8
+ define_options({
9
+ name: :yandex_api_key, desc: t("translator.yandex_api_key"), use_env: true
10
+ })
11
+
12
+ # Create a new Yandex translator instance
13
+ def initialize(options = {})
14
+ super(options)
15
+ @api_key = options[:yandex_api_key] || ENV["YANDEX_API_KEY"]
16
+ raise t("translator.yandex_key_required") if @api_key.nil?
17
+ end
18
+
19
+ # (see Translatomatic::Translator::Base#languages)
20
+ def languages
21
+ @languages ||= begin
22
+ request = Translatomatic::HTTPRequest.new(LANGUAGES_URL)
23
+ response = request.post(key: @api_key, ui: "en")
24
+ data = JSON.parse(response.body) || {}
25
+ langs = data["langs"] || {}
26
+ langs.keys.flatten.uniq
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ TRANSLATE_URL = 'https://translate.yandex.net/api/v1.5/tr.json/translate'
33
+ LANGUAGES_URL = 'https://translate.yandex.net/api/v1.5/tr.json/getLangs'
34
+
35
+ def perform_translate(strings, from, to)
36
+ attempt_with_retries(3) do
37
+ fetch_translations(strings, from, to)
38
+ end
39
+ end
40
+
41
+ def fetch_translations(strings, from, to)
42
+ request = Translatomatic::HTTPRequest.new(TRANSLATE_URL)
43
+ body = {
44
+ key: @api_key,
45
+ text: strings,
46
+ lang: from.language + "-" + to.language,
47
+ format: "plain"
48
+ }
49
+ response = request.post(body)
50
+ data = JSON.parse(response.body)
51
+ data['text']
52
+ end
53
+
54
+ end # class
55
+ end # module
56
+ end
@@ -1,63 +1,99 @@
1
- require 'translatomatic/translator/base'
2
- require 'translatomatic/translator/yandex'
3
- require 'translatomatic/translator/google'
4
- require 'translatomatic/translator/microsoft'
5
- require 'translatomatic/translator/frengly'
6
- require 'translatomatic/translator/my_memory'
7
-
8
- module Translatomatic::Translator
9
-
10
- class << self
11
- include Translatomatic::Util
12
- end
13
-
14
- # @return [Class] The translator class corresponding to the given name
15
- def self.find(name)
16
- name ? self.const_get(name) : nil
17
- end
18
-
19
- # @return [List<Class>] A list of all translator classes
20
- def self.modules
21
- self.constants.collect { |c| self.const_get(c) }.select do |klass|
22
- klass.is_a?(Class) && klass != Translatomatic::Translator::Base
23
- end
24
- end
25
-
26
- # @return [List<String>] A list of all translators
27
- def self.names
28
- modules.collect { |i| i.name.demodulize }
29
- end
30
-
31
- # Find all configured translators
32
- # @param [Hash<String,String>] options Translator options
33
- # @return [Array<#translate>] A list of translator instances
34
- def self.available(options = {})
35
- available = []
36
- modules.each do |mod|
37
- begin
38
- translator = mod.new(options)
39
- available << translator
40
- rescue Exception
41
- log.debug("translator #{mod.name.demodulize} is unavailable")
42
- end
43
- end
44
- available
45
- end
46
-
47
- # @return [String] A description of all translators and options
48
- def self.list
49
- out = "Translators:\n"
50
- modules.each do |mod|
51
- out += "\n" + mod.name.demodulize + ":\n"
52
- opts = mod.options
53
- opts.each do |opt|
54
- optname = opt.name.to_s.gsub("_", "-")
55
- out += " --%-18s %18s %10s %15s\n" % [optname, opt.description,
56
- opt.required ? "(required)" : "",
57
- opt.use_env ? "ENV[#{opt.name.upcase}]" : ""]
58
- end
59
- end
60
- out + "\n"
61
- end
62
-
63
- end
1
+ require 'translatomatic/translator/base'
2
+ require 'translatomatic/translator/yandex'
3
+ require 'translatomatic/translator/google'
4
+ require 'translatomatic/translator/microsoft'
5
+ require 'translatomatic/translator/frengly'
6
+ require 'translatomatic/translator/my_memory'
7
+
8
+ # Provides methods to access and create instances of
9
+ # interfaces to translation APIs.
10
+ module Translatomatic::Translator
11
+
12
+ class << self
13
+ include Translatomatic::Util
14
+ end
15
+
16
+ # @return [Class] The translator class corresponding to the given name
17
+ def self.find(name)
18
+ name && !name.empty? ? self.const_get(name) : nil
19
+ end
20
+
21
+ # Resolve the given list of translator names to a list of translators.
22
+ # If the list is empty, return all translators that are configured.
23
+ # @param list [Array<String>] Translator names or translators
24
+ # @param options [Hash<String,String>] Translator options
25
+ # @return [Array<Translatomatic::Translator::Base>] Translators
26
+ def self.resolve(list, options = {})
27
+ list = [list] unless list.kind_of?(Array)
28
+ list = list.compact.collect do |translator|
29
+ if translator.respond_to?(:translate)
30
+ translator
31
+ else
32
+ klass = Translatomatic::Translator.find(translator)
33
+ translator = klass.new(options)
34
+ end
35
+ translator
36
+ end
37
+
38
+ if list.empty?
39
+ # find all available translators that work with the given options
40
+ list = Translatomatic::Translator.available(options)
41
+ if list.empty?
42
+ raise t("cli.no_translators")
43
+ end
44
+ end
45
+ list
46
+ end
47
+
48
+ # @return [List<Class>] A list of all translator classes
49
+ def self.modules
50
+ self.constants.collect { |c| self.const_get(c) }.select do |klass|
51
+ klass.is_a?(Class) && klass != Translatomatic::Translator::Base
52
+ end
53
+ end
54
+
55
+ # @return [List<String>] A list of all translators
56
+ def self.names
57
+ modules.collect { |i| i.name.demodulize }
58
+ end
59
+
60
+ # Find all configured translators
61
+ # @param options [Hash<String,String>] Translator options
62
+ # @return [Array<#translate>] A list of translator instances
63
+ def self.available(options = {})
64
+ available = []
65
+ modules.each do |mod|
66
+ begin
67
+ translator = mod.new(options)
68
+ available << translator
69
+ rescue Exception
70
+ log.debug(t("translator.unavailable", name: mod.name.demodulize))
71
+ end
72
+ end
73
+ available
74
+ end
75
+
76
+ # @return [String] A description of all translators and options
77
+ def self.list
78
+ out = t("translator.translators") + "\n"
79
+ modules.each do |mod|
80
+ out += "\n" + mod.name.demodulize + ":\n"
81
+ opts = mod.options
82
+ opts.each do |opt|
83
+ optname = opt.name.to_s.gsub("_", "-")
84
+ out += " --%-18s %18s %10s %15s\n" % [optname, opt.description,
85
+ opt.required ? t("translator.required_option") : "",
86
+ opt.use_env ? "ENV[#{opt.name.upcase}]" : ""]
87
+ end
88
+ end
89
+ out += "\n"
90
+ out += t("translator.configured") + "\n"
91
+ configured = available
92
+ configured.each do |translator|
93
+ out += " " + translator.name + "\n"
94
+ end
95
+ out += t("translator.no_translators") if configured.empty?
96
+ out + "\n"
97
+ end
98
+
99
+ end
@@ -1,6 +1,30 @@
1
-
1
+ # Utility functions, used internally
2
2
  module Translatomatic::Util
3
3
 
4
+ private
5
+
6
+ # @!visibility private
7
+ module CommonMethods
8
+ private
9
+ def t(key, options = {})
10
+ tkey = "translatomatic.#{key}"
11
+ raise "missing translation: #{tkey}" unless I18n.exists?(tkey)
12
+ I18n.t(tkey, options)
13
+ end
14
+ end
15
+
16
+ include CommonMethods
17
+
18
+ # @!visibility private
19
+ module ClassMethods
20
+ private
21
+ include CommonMethods
22
+ end
23
+
24
+ def self.included(klass)
25
+ klass.extend(ClassMethods)
26
+ end
27
+
4
28
  def log
5
29
  Translatomatic::Config.instance.logger
6
30
  end
@@ -12,4 +36,10 @@ module Translatomatic::Util
12
36
  def string(value, locale)
13
37
  Translatomatic::String.new(value, locale)
14
38
  end
39
+
40
+ def hashify(list)
41
+ hash = {}
42
+ list.each { |i| hash[i.to_s] = i }
43
+ hash
44
+ end
15
45
  end
@@ -1,4 +1,7 @@
1
1
  module Translatomatic
2
- VERSION = "0.1.1"
2
+ # @return [String] Gem version
3
+ VERSION = "0.1.2"
4
+
5
+ # @return [String] Homepage
3
6
  URL = "https://github.com/smugglys/translatomatic"
4
7
  end
@@ -1,7 +1,23 @@
1
+ require 'i18n'
2
+ require 'rails-i18n'
3
+
4
+ # Module containing all of the translation goodness
1
5
  module Translatomatic
6
+ # @return [Translatomatic::Config] configuration
2
7
  def self.config
3
8
  @config ||= Translatomatic::Config.new
4
9
  end
10
+
11
+ private
12
+
13
+ def self.init_i18n(lib_path)
14
+ locale_path = File.join(File.dirname(lib_path), "..", "config", "locales")
15
+ I18n.load_path += Dir[File.join(locale_path, "**", "*.yml")]
16
+ end
17
+ end
18
+
19
+ begin
20
+ Translatomatic.init_i18n(__FILE__)
5
21
  end
6
22
 
7
23
  require 'pathname'
@@ -13,6 +29,7 @@ require 'ruby-progressbar'
13
29
  require 'translatomatic/option'
14
30
  require 'translatomatic/locale'
15
31
  require 'translatomatic/string'
32
+ require 'translatomatic/translation'
16
33
  require 'translatomatic/util'
17
34
  require 'translatomatic/version'
18
35
  require 'translatomatic/logger'
@@ -27,18 +27,19 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency "rspec", "~> 3.0"
28
28
  spec.add_development_dependency "rspec-mocks", "~> 3.0"
29
29
  spec.add_development_dependency "simplecov"
30
- spec.add_development_dependency "webmock"
30
+ spec.add_development_dependency "webmock"
31
31
  spec.add_development_dependency "factory_bot" # RIP girl
32
32
 
33
33
  spec.add_dependency "thor", "~> 0.20"
34
- spec.add_dependency "yandex-translator"
35
34
  spec.add_dependency "easy_translate"
36
35
  spec.add_dependency "bing_translator", "~> 5.1.0"
37
36
  spec.add_dependency "activerecord", "~> 5.0"
38
37
  spec.add_dependency "i18n"
39
38
  spec.add_dependency "i18n_data"
39
+ spec.add_dependency "rails-i18n", '~> 5.0.0' # For 5.0.x and 5.1.x
40
40
  spec.add_dependency "nokogiri"
41
- spec.add_dependency "ruby-progressbar"
42
- spec.add_dependency "kramdown" # markdown -> html
41
+ spec.add_dependency "ruby-progressbar"
42
+ spec.add_dependency "kramdown" # markdown -> html
43
43
  spec.add_dependency "reverse_markdown" # html -> markdown
44
+ spec.add_dependency "concurrent-ruby"
44
45
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: translatomatic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-28 00:00:00.000000000 Z
11
+ date: 2018-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -122,20 +122,6 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0.20'
125
- - !ruby/object:Gem::Dependency
126
- name: yandex-translator
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
125
  - !ruby/object:Gem::Dependency
140
126
  name: easy_translate
141
127
  requirement: !ruby/object:Gem::Requirement
@@ -206,6 +192,20 @@ dependencies:
206
192
  - - ">="
207
193
  - !ruby/object:Gem::Version
208
194
  version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: rails-i18n
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: 5.0.0
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: 5.0.0
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: nokogiri
211
211
  requirement: !ruby/object:Gem::Requirement
@@ -262,6 +262,20 @@ dependencies:
262
262
  - - ">="
263
263
  - !ruby/object:Gem::Version
264
264
  version: '0'
265
+ - !ruby/object:Gem::Dependency
266
+ name: concurrent-ruby
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ version: '0'
272
+ type: :runtime
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - ">="
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
265
279
  description:
266
280
  email:
267
281
  - contact@smugglys.com
@@ -274,6 +288,7 @@ files:
274
288
  - ".gitignore"
275
289
  - ".rspec"
276
290
  - ".travis.yml"
291
+ - ".yardopts"
277
292
  - CODE_OF_CONDUCT.md
278
293
  - Gemfile
279
294
  - Guardfile
@@ -283,16 +298,40 @@ files:
283
298
  - README.fr.md
284
299
  - README.it.md
285
300
  - README.ja.md
301
+ - README.ko.md
286
302
  - README.md
303
+ - README.ms.md
304
+ - README.pt.md
305
+ - README.ru.md
306
+ - README.sv.md
307
+ - README.zh.md
287
308
  - Rakefile
288
309
  - bin/console
289
310
  - bin/setup
290
311
  - bin/translatomatic
291
312
  - bin/travis
313
+ - config/locales/translatomatic/de.yml
314
+ - config/locales/translatomatic/en.yml
315
+ - config/locales/translatomatic/es.yml
316
+ - config/locales/translatomatic/fr.yml
317
+ - config/locales/translatomatic/it.yml
318
+ - config/locales/translatomatic/ja.yml
319
+ - config/locales/translatomatic/ko.yml
320
+ - config/locales/translatomatic/ms.yml
321
+ - config/locales/translatomatic/pt.yml
322
+ - config/locales/translatomatic/ru.yml
323
+ - config/locales/translatomatic/sv.yml
324
+ - config/locales/translatomatic/zh.yml
292
325
  - db/database.yml
293
326
  - db/migrate/201712170000_initial.rb
294
327
  - lib/translatomatic.rb
295
328
  - lib/translatomatic/cli.rb
329
+ - lib/translatomatic/cli/base.rb
330
+ - lib/translatomatic/cli/common_options.rb
331
+ - lib/translatomatic/cli/config.rb
332
+ - lib/translatomatic/cli/database.rb
333
+ - lib/translatomatic/cli/main.rb
334
+ - lib/translatomatic/cli/translate.rb
296
335
  - lib/translatomatic/config.rb
297
336
  - lib/translatomatic/converter.rb
298
337
  - lib/translatomatic/converter_stats.rb
@@ -324,6 +363,7 @@ files:
324
363
  - lib/translatomatic/tmx.rb
325
364
  - lib/translatomatic/tmx/document.rb
326
365
  - lib/translatomatic/tmx/translation_unit.rb
366
+ - lib/translatomatic/translation.rb
327
367
  - lib/translatomatic/translation_result.rb
328
368
  - lib/translatomatic/translator.rb
329
369
  - lib/translatomatic/translator/base.rb