i18n-migrations 0.2.5 → 1.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.
- 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
|