i18n-migrations 0.2.5 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/example/.i18n-migrations.yml +27 -0
- data/example/config/es_notes.yml +6 -0
- data/example/config/locales/en.yml +7 -0
- data/example/config/locales/es.yml +7 -0
- data/example/i18n/migrate/201901311613_add_colors.rb +9 -0
- data/lib/i18n/migrations/config.rb +28 -14
- data/lib/i18n/migrations/migrator.rb +6 -4
- data/lib/i18n/migrations/version.rb +1 -1
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f50a6b0b64079bf6a368d78ee8bca1aad59934c08c7a197bae01781dd5e9907e
|
4
|
+
data.tar.gz: 878543ee25ad4aec558ae25cb3ec31d76ad78419024f4620f06912bcdf37d0b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ac50b979c48e11b06286f95892a1fd827f6baad49359c53da3e39b4905d527fe8c0941361df48c7ebded46f40594852c8f29e5b6ad18d2e23301d18be23632a
|
7
|
+
data.tar.gz: 8311e93c074438ae29cace119a3f8bf2953b2d77f00510fafbe640c9c2301de76c082030e524fb4ece0e1ad12f4a76a4c0153bf5674aea24bd64b3eb87fd9df1
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# this is where your migration files will live. it will be relative to your config file
|
2
|
+
migration_dir: i18n/migrate
|
3
|
+
|
4
|
+
# this is where your locale files will live (en.yml, es.yml, etc). it will be relative to your config file
|
5
|
+
locales_dir: config/locales
|
6
|
+
|
7
|
+
# this is the locale you will be translating from
|
8
|
+
main_locale: en
|
9
|
+
|
10
|
+
# put all other locales you want to use here, if they don't already exist, add them with i18n-migrations new_locale es
|
11
|
+
# each locale needs:
|
12
|
+
other_locales:
|
13
|
+
es:
|
14
|
+
name: Spanish
|
15
|
+
# a spreadsheet that translators will use to do their work, these are the links to them
|
16
|
+
google_spreadsheet: https://docs.google.com/spreadsheets/d/GOOGLE_SPREADSHEET_ID/edit
|
17
|
+
# put things like your product name here along with any possible mistranslations
|
18
|
+
do_not_translate:
|
19
|
+
"Transparent Classroom":
|
20
|
+
- Aula Transparente
|
21
|
+
- clase transparente
|
22
|
+
|
23
|
+
# you need a service account key in order to access google spreadsheets. This is the path to it, relative to your config file
|
24
|
+
google_service_account_key_path: i18n/google_drive_key.json
|
25
|
+
|
26
|
+
# this is your api key to use google translate
|
27
|
+
google_translate_api_key: [INSERT_GOOGLE_TRANSLATE_API_KEY]
|
@@ -5,6 +5,10 @@ module I18n
|
|
5
5
|
class Config
|
6
6
|
CONFIG_FILE_NAME = '.i18n-migrations.yml'
|
7
7
|
|
8
|
+
def initialize(config_file_name = CONFIG_FILE_NAME)
|
9
|
+
@config_file_name = config_file_name
|
10
|
+
end
|
11
|
+
|
8
12
|
def migration_dir
|
9
13
|
get_file(:migration_dir)
|
10
14
|
end
|
@@ -18,29 +22,31 @@ module I18n
|
|
18
22
|
end
|
19
23
|
|
20
24
|
def other_locales
|
21
|
-
get_value(:other_locales)
|
25
|
+
get_value(:other_locales).keys
|
22
26
|
end
|
23
27
|
|
24
28
|
def google_service_account_key_path
|
25
29
|
get_file(:google_service_account_key_path)
|
26
30
|
end
|
27
31
|
|
28
|
-
def
|
29
|
-
get_value(:
|
32
|
+
def google_spreadsheet(locale)
|
33
|
+
get_value([:other_locales, locale, :google_spreadsheet])
|
30
34
|
end
|
31
35
|
|
32
|
-
def
|
33
|
-
|
36
|
+
def do_not_translate(locale)
|
37
|
+
return {} if locale.to_s == main_locale
|
38
|
+
|
39
|
+
get_value([:other_locales, locale])['do_not_translate'] || {}
|
34
40
|
end
|
35
41
|
|
36
|
-
def
|
37
|
-
get_value(:
|
42
|
+
def google_translate_api_key
|
43
|
+
get_value(:google_translate_api_key)
|
38
44
|
end
|
39
45
|
|
40
46
|
def read!
|
41
|
-
yaml_file = find_config_file(
|
47
|
+
yaml_file = find_config_file(@config_file_name)
|
42
48
|
unless yaml_file
|
43
|
-
STDERR.puts "Can't find a #{
|
49
|
+
STDERR.puts "Can't find a #{@config_file_name} file. Try running 'i18n-migrations setup'"
|
44
50
|
exit(1)
|
45
51
|
end
|
46
52
|
|
@@ -67,19 +73,27 @@ module I18n
|
|
67
73
|
private
|
68
74
|
|
69
75
|
def get_value(key)
|
70
|
-
if
|
76
|
+
if key.is_a?(Array)
|
77
|
+
value = @config
|
78
|
+
key.each do |key_part|
|
79
|
+
if value&.has_key?(key_part.to_s)
|
80
|
+
value = value[key_part.to_s]
|
81
|
+
else
|
82
|
+
raise ArgumentError, "You must have defined #{key.join('/')} in #{@root_dir}/#{@config_file_name}"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
value
|
86
|
+
elsif @config.has_key?(key.to_s)
|
71
87
|
@config[key.to_s]
|
72
88
|
else
|
73
|
-
|
74
|
-
exit(1)
|
89
|
+
raise ArgumentError, "You must have defined #{key} in #{@root_dir}/#{@config_file_name}"
|
75
90
|
end
|
76
91
|
end
|
77
92
|
|
78
93
|
def get_file(key)
|
79
94
|
file = File.join(@root_dir, get_value(key))
|
80
95
|
unless File.exist?(file)
|
81
|
-
|
82
|
-
exit(1)
|
96
|
+
raise ArgumentError, "#{File.expand_path(file)} does not exist, please create it."
|
83
97
|
end
|
84
98
|
file
|
85
99
|
end
|
@@ -115,9 +115,11 @@ end
|
|
115
115
|
private
|
116
116
|
|
117
117
|
def each_locale(name = 'all')
|
118
|
-
(name == 'all' ? all_locale_names : [name]).
|
119
|
-
|
118
|
+
threads = (name == 'all' ? all_locale_names : [name]).map do |l|
|
119
|
+
locale = locale_for(l)
|
120
|
+
Thread.new {yield locale}
|
120
121
|
end
|
122
|
+
threads.each(&:join)
|
121
123
|
end
|
122
124
|
|
123
125
|
def all_locale_names
|
@@ -126,7 +128,7 @@ end
|
|
126
128
|
|
127
129
|
def get_google_spreadsheet(locale)
|
128
130
|
GoogleSpreadsheet.new(locale,
|
129
|
-
config.
|
131
|
+
config.google_spreadsheet(locale),
|
130
132
|
config.google_service_account_key_path).sheet
|
131
133
|
end
|
132
134
|
|
@@ -134,7 +136,7 @@ end
|
|
134
136
|
GoogleTranslateDictionary.new(from_locale: config.main_locale,
|
135
137
|
to_locale: locale,
|
136
138
|
key: config.google_translate_api_key,
|
137
|
-
do_not_translate: config.do_not_translate)
|
139
|
+
do_not_translate: config.main_locale == locale ? {} : config.do_not_translate(locale))
|
138
140
|
end
|
139
141
|
end
|
140
142
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n-migrations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Lightsmith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -117,6 +117,11 @@ files:
|
|
117
117
|
- bin/console
|
118
118
|
- bin/i18n-migrate
|
119
119
|
- bin/setup
|
120
|
+
- example/.i18n-migrations.yml
|
121
|
+
- example/config/es_notes.yml
|
122
|
+
- example/config/locales/en.yml
|
123
|
+
- example/config/locales/es.yml
|
124
|
+
- example/i18n/migrate/201901311613_add_colors.rb
|
120
125
|
- i18n-migrations.gemspec
|
121
126
|
- lib/i18n-migrations.rb
|
122
127
|
- lib/i18n/migrations/config.rb
|