translatomatic 0.1.1 → 0.1.2
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.
- checksums.yaml +4 -4
- data/.gitattributes +19 -0
- data/.gitignore +0 -0
- data/.travis.yml +7 -7
- data/.yardopts +9 -0
- data/Gemfile +4 -4
- data/Guardfile +0 -0
- data/README.de.md +61 -16
- data/README.es.md +60 -15
- data/README.fr.md +61 -16
- data/README.it.md +60 -15
- data/README.ja.md +59 -14
- data/README.ko.md +137 -0
- data/README.md +58 -13
- data/README.ms.md +137 -0
- data/README.pt.md +137 -0
- data/README.ru.md +137 -0
- data/README.sv.md +137 -0
- data/README.zh.md +137 -0
- data/bin/setup +8 -8
- data/bin/translatomatic +6 -6
- data/bin/travis +1 -1
- data/config/locales/translatomatic/de.yml +104 -0
- data/config/locales/translatomatic/en.yml +101 -0
- data/config/locales/translatomatic/es.yml +105 -0
- data/config/locales/translatomatic/fr.yml +105 -0
- data/config/locales/translatomatic/it.yml +103 -0
- data/config/locales/translatomatic/ja.yml +102 -0
- data/config/locales/translatomatic/ko.yml +101 -0
- data/config/locales/translatomatic/ms.yml +103 -0
- data/config/locales/translatomatic/pt.yml +105 -0
- data/config/locales/translatomatic/ru.yml +103 -0
- data/config/locales/translatomatic/sv.yml +103 -0
- data/config/locales/translatomatic/zh.yml +102 -0
- data/db/migrate/201712170000_initial.rb +2 -1
- data/lib/translatomatic/cli/base.rb +73 -0
- data/lib/translatomatic/cli/common_options.rb +14 -0
- data/lib/translatomatic/cli/config.rb +81 -0
- data/lib/translatomatic/cli/database.rb +29 -0
- data/lib/translatomatic/cli/main.rb +112 -0
- data/lib/translatomatic/cli/translate.rb +146 -0
- data/lib/translatomatic/cli.rb +8 -216
- data/lib/translatomatic/config.rb +143 -0
- data/lib/translatomatic/converter.rb +196 -149
- data/lib/translatomatic/converter_stats.rb +18 -14
- data/lib/translatomatic/database.rb +35 -37
- data/lib/translatomatic/escaped_unicode.rb +1 -1
- data/lib/translatomatic/extractor/base.rb +2 -0
- data/lib/translatomatic/extractor/ruby.rb +1 -0
- data/lib/translatomatic/extractor.rb +1 -0
- data/lib/translatomatic/http_request.rb +43 -14
- data/lib/translatomatic/locale.rb +28 -4
- data/lib/translatomatic/logger.rb +21 -13
- data/lib/translatomatic/model/locale.rb +5 -1
- data/lib/translatomatic/model/text.rb +2 -0
- data/lib/translatomatic/model.rb +1 -0
- data/lib/translatomatic/option.rb +75 -10
- data/lib/translatomatic/progress_updater.rb +7 -3
- data/lib/translatomatic/resource_file/base.rb +41 -18
- data/lib/translatomatic/resource_file/html.rb +11 -14
- data/lib/translatomatic/resource_file/markdown.rb +13 -12
- data/lib/translatomatic/resource_file/plist.rb +3 -14
- data/lib/translatomatic/resource_file/properties.rb +21 -3
- data/lib/translatomatic/resource_file/resw.rb +1 -0
- data/lib/translatomatic/resource_file/text.rb +1 -0
- data/lib/translatomatic/resource_file/xcode_strings.rb +23 -14
- data/lib/translatomatic/resource_file/xml.rb +34 -22
- data/lib/translatomatic/resource_file/yaml.rb +39 -5
- data/lib/translatomatic/resource_file.rb +7 -5
- data/lib/translatomatic/string.rb +40 -12
- data/lib/translatomatic/tmx/document.rb +11 -12
- data/lib/translatomatic/tmx/translation_unit.rb +5 -1
- data/lib/translatomatic/tmx.rb +2 -0
- data/lib/translatomatic/translation.rb +30 -0
- data/lib/translatomatic/translation_result.rb +45 -45
- data/lib/translatomatic/translator/base.rb +128 -83
- data/lib/translatomatic/translator/frengly.rb +62 -57
- data/lib/translatomatic/translator/google.rb +35 -31
- data/lib/translatomatic/translator/microsoft.rb +41 -33
- data/lib/translatomatic/translator/my_memory.rb +68 -64
- data/lib/translatomatic/translator/yandex.rb +56 -39
- data/lib/translatomatic/translator.rb +99 -63
- data/lib/translatomatic/util.rb +31 -1
- data/lib/translatomatic/version.rb +4 -1
- data/lib/translatomatic.rb +17 -0
- data/translatomatic.gemspec +5 -4
- metadata +56 -16
@@ -1,64 +1,68 @@
|
|
1
|
-
require 'bing_translator'
|
2
|
-
|
3
|
-
module Translatomatic
|
4
|
-
module Translator
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
)
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
@
|
19
|
-
@
|
20
|
-
@query_options
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
#
|
26
|
-
#
|
27
|
-
|
28
|
-
#
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
request.
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
def
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
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
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
class Yandex < Base
|
7
|
-
|
8
|
-
define_options({
|
9
|
-
name: :yandex_api_key, desc: "
|
10
|
-
})
|
11
|
-
|
12
|
-
# Create a new Yandex translator instance
|
13
|
-
def initialize(options = {})
|
14
|
-
super(options)
|
15
|
-
|
16
|
-
raise "
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
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
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
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
|
data/lib/translatomatic/util.rb
CHANGED
@@ -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
|
data/lib/translatomatic.rb
CHANGED
@@ -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'
|
data/translatomatic.gemspec
CHANGED
@@ -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.
|
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:
|
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
|