ad_localize 3.4.0 → 3.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +1 -1
- data/.gitignore +2 -1
- data/CHANGELOG.md +14 -0
- data/Gemfile.lock +78 -0
- data/Makefile +11 -0
- data/README.md +13 -3
- data/ad_localize.gemspec +7 -4
- data/lib/ad_localize.rb +2 -0
- data/lib/ad_localize/csv_file_manager.rb +19 -2
- data/lib/ad_localize/csv_parser.rb +1 -1
- data/lib/ad_localize/option_handler.rb +6 -1
- data/lib/ad_localize/platform/ios_formatter.rb +5 -0
- data/lib/ad_localize/platform/platform_formatter.rb +5 -4
- data/lib/ad_localize/runner.rb +12 -3
- data/lib/ad_localize/version.rb +1 -1
- metadata +26 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e814ce7a840c1c9da11fc1f34574929e7ad4805f410319b3c6f79e8f8027024e
|
4
|
+
data.tar.gz: 65864cb313e53121a7d9fc06028f944853f3842ee3eb060b7ccdff099b3477a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f84b9f8ef16b073e98c4e41a87575e35c5881586e1bebe44c226005bbdcf3b9704bc6b869ae4cb6fb4162866560a2e6c69e154b505b058f6923d852093ba1624
|
7
|
+
data.tar.gz: 02fe755026fad1ef4bca910a6457ef7d2806b40077fe3acbfc4d7b469372b7382bb7c98098c3220d6fc977cef40255e2c3cf85cc8f927cc1b3f78d9bf7ff31b7
|
data/.github/workflows/ruby.yml
CHANGED
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,20 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
5
5
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
## [3.5.0] - 2020-05-12
|
8
|
+
### Added
|
9
|
+
- add support for private spreadsheet using google service acccount by [@sjcqs](https://github.com/sjcqs). Fixes [#31](https://github.com/applidium/ad_localize/issues/31)
|
10
|
+
- add makefile for easier testing by [@felginep](https://github.com/felginep)
|
11
|
+
|
12
|
+
### Changed
|
13
|
+
- improve error message to have useful information in case of google spreadsheet use by [@felginep](https://github.com/felginep). Fixes [#27](https://github.com/applidium/ad_localize/issues/27)
|
14
|
+
- platform folder is no longer generated when there is only one platform selected. The files are directly generated in the output path. By [@felginep](https://github.com/felginep). Fixes [#29](https://github.com/applidium/ad_localize/issues/29)
|
15
|
+
- raise error when google spreadsheet key is invalid by [@felginep](https://github.com/felginep)
|
16
|
+
|
17
|
+
### Fixed
|
18
|
+
- auto escape strings in Localizable.strings by [@felginep](https://github.com/felginep). Fixes [#26](https://github.com/applidium/ad_localize/issues/26)
|
19
|
+
- trim keys to prevent user error by [@felginep](https://github.com/felginep). Fixes [#16](https://github.com/applidium/ad_localize/issues/16)
|
20
|
+
|
7
21
|
## [3.4.0] - 2019-02-10
|
8
22
|
### Added
|
9
23
|
- Rails folks, [@epaillous](https://github.com/epaillous) has improved the YAML support. You can now have multi-level wording.
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
ad_localize (3.4.0)
|
5
|
+
activesupport (>= 4.2.10)
|
6
|
+
colorize (~> 0.8)
|
7
|
+
googleauth (~> 0.12.0)
|
8
|
+
nokogiri (~> 1.8, >= 1.8.2)
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: https://rubygems.org/
|
12
|
+
specs:
|
13
|
+
activesupport (6.0.2.2)
|
14
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
15
|
+
i18n (>= 0.7, < 2)
|
16
|
+
minitest (~> 5.1)
|
17
|
+
tzinfo (~> 1.1)
|
18
|
+
zeitwerk (~> 2.2)
|
19
|
+
addressable (2.7.0)
|
20
|
+
public_suffix (>= 2.0.2, < 5.0)
|
21
|
+
ansi (1.5.0)
|
22
|
+
builder (3.2.4)
|
23
|
+
byebug (11.1.3)
|
24
|
+
colorize (0.8.1)
|
25
|
+
concurrent-ruby (1.1.6)
|
26
|
+
diffy (3.3.0)
|
27
|
+
faraday (0.17.3)
|
28
|
+
multipart-post (>= 1.2, < 3)
|
29
|
+
googleauth (0.12.0)
|
30
|
+
faraday (>= 0.17.3, < 2.0)
|
31
|
+
jwt (>= 1.4, < 3.0)
|
32
|
+
memoist (~> 0.16)
|
33
|
+
multi_json (~> 1.11)
|
34
|
+
os (>= 0.9, < 2.0)
|
35
|
+
signet (~> 0.14)
|
36
|
+
i18n (1.8.2)
|
37
|
+
concurrent-ruby (~> 1.0)
|
38
|
+
jwt (2.1.0)
|
39
|
+
memoist (0.16.2)
|
40
|
+
mini_portile2 (2.4.0)
|
41
|
+
minitest (5.14.0)
|
42
|
+
minitest-reporters (1.4.2)
|
43
|
+
ansi
|
44
|
+
builder
|
45
|
+
minitest (>= 5.0)
|
46
|
+
ruby-progressbar
|
47
|
+
multi_json (1.14.1)
|
48
|
+
multipart-post (2.0.0)
|
49
|
+
nokogiri (1.10.9)
|
50
|
+
mini_portile2 (~> 2.4.0)
|
51
|
+
os (1.1.0)
|
52
|
+
public_suffix (2.0.5)
|
53
|
+
rake (12.3.3)
|
54
|
+
ruby-progressbar (1.10.1)
|
55
|
+
signet (0.14.0)
|
56
|
+
addressable (~> 2.3)
|
57
|
+
faraday (>= 0.17.3, < 2.0)
|
58
|
+
jwt (>= 1.5, < 3.0)
|
59
|
+
multi_json (~> 1.10)
|
60
|
+
thread_safe (0.3.6)
|
61
|
+
tzinfo (1.2.7)
|
62
|
+
thread_safe (~> 0.1)
|
63
|
+
zeitwerk (2.3.0)
|
64
|
+
|
65
|
+
PLATFORMS
|
66
|
+
ruby
|
67
|
+
|
68
|
+
DEPENDENCIES
|
69
|
+
ad_localize!
|
70
|
+
bundler (>= 1.12.0, < 3.0.0)
|
71
|
+
byebug (~> 11.0)
|
72
|
+
diffy (~> 3.3)
|
73
|
+
minitest (~> 5.11)
|
74
|
+
minitest-reporters (~> 1.3)
|
75
|
+
rake (~> 12.3)
|
76
|
+
|
77
|
+
BUNDLED WITH
|
78
|
+
2.1.4
|
data/Makefile
ADDED
data/README.md
CHANGED
@@ -29,15 +29,22 @@ $ gem install ad_localize
|
|
29
29
|
$ bundle exec ad_localize -h
|
30
30
|
```
|
31
31
|
|
32
|
-
* Export wording from a google
|
32
|
+
* Export wording from a google spreadsheet, using the file key. Make sure to enable _Allow external access_ in sharing options.
|
33
33
|
```
|
34
34
|
$ bundle exec ad_localize -k <your-spreadsheet-drive-key>
|
35
35
|
```
|
36
|
-
|
36
|
+
|
37
|
+
* Export wording from a google spreadsheet, using the file key and specifying a sheet (useful when your file has multiple sheets)
|
37
38
|
```
|
38
39
|
$ bundle exec ad_localize -k <your-spreadsheet-drive-key> -s <your-specific-sheet-id>
|
39
40
|
```
|
40
41
|
|
42
|
+
* Export wording from a private google spreadsheet using an authorized google account
|
43
|
+
```
|
44
|
+
$ export GCLOUD_CLIENT_SECRET=$(cat <client-secret.json>)
|
45
|
+
$ bundle exec ad_localize -k <your-spreadsheet-drive-key> -a
|
46
|
+
```
|
47
|
+
|
41
48
|
* Only generate wording files for the specified platforms
|
42
49
|
```
|
43
50
|
$ bundle exec ad_localize -o ios
|
@@ -62,10 +69,11 @@ $ bundle exec ad_localize -d
|
|
62
69
|
| favorites | Mes favoris | My favorites |
|
63
70
|
| from_to | du %1$@ au %2$@ | from %1$@ to %2$@ |
|
64
71
|
|
65
|
-
- Any column after the `key` column will be considered as a locale column (except from the optional `comment columns)
|
72
|
+
- Any column after the `key` column will be considered as a locale column (except from the optional `comment columns)
|
66
73
|
- Keys should be written in Android format : [a-z0-9_]+
|
67
74
|
- Format specifiers must be numeroted if there are more than one in a translation string (eg: "%1$@ %2$@'s report").
|
68
75
|
|
76
|
+
|
69
77
|
#### Comment columns
|
70
78
|
|
71
79
|
In iOS (and only iOS) you can add a comment to a missing translation.
|
@@ -111,6 +119,8 @@ exports/
|
|
111
119
|
└── fr.yml
|
112
120
|
```
|
113
121
|
|
122
|
+
NB: If you select only one platform, the wording files will directly be generated in the output path. The output path is the `exports` folder in the current directory by default and you can change it using the option `-o`.
|
123
|
+
|
114
124
|
## Plurals
|
115
125
|
|
116
126
|
Plurals are supported for iOS and Android.
|
data/ad_localize.gemspec
CHANGED
@@ -19,14 +19,16 @@ Gem::Specification.new do |spec|
|
|
19
19
|
'Nicolas Braun',
|
20
20
|
'Corentin Huard',
|
21
21
|
'Claire Peyron',
|
22
|
-
'Claire Dufetrelle'
|
22
|
+
'Claire Dufetrelle',
|
23
|
+
'Pierre Felgines',
|
24
|
+
'Satyan Jacquens'
|
23
25
|
]
|
24
26
|
spec.email = %w(joanna.vigne@fabernovel.com hugo.hache@fabernovel.com edouard.siegel@fabernovel.com)
|
25
27
|
|
26
28
|
spec.summary = %q{AdLocalize helps with mobile and web applications wording}
|
27
29
|
spec.description = %q{AdLocalize produces localization files from platform agnostic wording.
|
28
30
|
Supported wording format : CSV. Supported export format: iOS, Android, JSON and YAML}
|
29
|
-
spec.homepage = 'https://
|
31
|
+
spec.homepage = 'https://github.com/applidium/ad_localize'
|
30
32
|
|
31
33
|
# Specify which files should be added to the gem when it is released.
|
32
34
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -44,9 +46,10 @@ Gem::Specification.new do |spec|
|
|
44
46
|
spec.add_development_dependency 'minitest-reporters', '~> 1.3'
|
45
47
|
spec.add_development_dependency 'diffy', '~> 3.3'
|
46
48
|
|
47
|
-
spec.add_dependency 'activesupport', '
|
48
|
-
spec.add_dependency 'nokogiri', '~> 1.
|
49
|
+
spec.add_dependency 'activesupport', '~> 5.2'
|
50
|
+
spec.add_dependency 'nokogiri', '~> 1.10'
|
49
51
|
spec.add_dependency 'colorize', '~> 0.8'
|
52
|
+
spec.add_dependency 'googleauth', '~> 0.12'
|
50
53
|
|
51
54
|
spec.required_ruby_version = '~> 2.3'
|
52
55
|
end
|
data/lib/ad_localize.rb
CHANGED
@@ -8,13 +8,20 @@ module AdLocalize
|
|
8
8
|
end
|
9
9
|
|
10
10
|
# Returns the downloaded file name (it is located in the current directory)
|
11
|
-
def download_from_drive(key, sheet)
|
11
|
+
def download_from_drive(key, sheet, use_service_account=false)
|
12
12
|
LOGGER.log(:info, :green, "Downloading file from google drive...")
|
13
13
|
download_string_path = "./#{key}.csv"
|
14
14
|
begin
|
15
15
|
File.open(download_string_path, "wb") do |saved_file|
|
16
|
+
download_url = drive_download_url(key, sheet)
|
17
|
+
headers = {}
|
18
|
+
if use_service_account
|
19
|
+
LOGGER.log(:debug, :green, "Using a service account...")
|
20
|
+
token = service_account_access_token()
|
21
|
+
headers["Authorization"] = "#{token["token_type"]} #{token["access_token"]}"
|
22
|
+
end
|
16
23
|
# the following "open" is provided by open-uri
|
17
|
-
open(
|
24
|
+
open(download_url, "rb", headers) do |read_file|
|
18
25
|
saved_file.write(read_file.read)
|
19
26
|
end
|
20
27
|
File.basename saved_file
|
@@ -42,6 +49,16 @@ module AdLocalize
|
|
42
49
|
query_id = sheet ? "gid=#{sheet}" : "id=#{key}"
|
43
50
|
"https://docs.google.com/spreadsheets/d/#{key}/export?format=csv&#{query_id}"
|
44
51
|
end
|
52
|
+
private
|
53
|
+
def service_account_access_token()
|
54
|
+
scope = "https://www.googleapis.com/auth/drive.readonly"
|
55
|
+
json_key_io = StringIO.new ENV["GCLOUD_CLIENT_SECRET"]
|
56
|
+
authorizer = Google::Auth::ServiceAccountCredentials.make_creds(
|
57
|
+
json_key_io: json_key_io,
|
58
|
+
scope: scope
|
59
|
+
)
|
60
|
+
authorizer.fetch_access_token!
|
61
|
+
end
|
45
62
|
end
|
46
63
|
end
|
47
64
|
end
|
@@ -20,11 +20,15 @@ module AdLocalize
|
|
20
20
|
end
|
21
21
|
opts.on("-k", "--drive-key #{GOOGLE_DRIVE_DOCUMENT_ID.dig(:length)}_characters", String, "Use google drive spreadsheets") do |key|
|
22
22
|
is_valid_drive_key = !!(key =~ GOOGLE_DRIVE_DOCUMENT_ID.dig(:regexp)) && (key.size >= GOOGLE_DRIVE_DOCUMENT_ID.dig(:length))
|
23
|
-
|
23
|
+
raise ArgumentError.new("Invalid google drive spreadsheet key \"#{key}\"") unless is_valid_drive_key
|
24
|
+
args[:drive_key] = key
|
24
25
|
end
|
25
26
|
opts.on("-s", "--drive-sheet SHEET_ID", String, "Use a specific sheet id for Google Drive spreadsheets with several sheets") do |value|
|
26
27
|
args[:sheet_id] = value
|
27
28
|
end
|
29
|
+
opts.on("-a", "--use-service-account", "Use a Google Cloud Service Account to access the file. An GCLOUD_CLIENT_SECRET environment variable containting the client_secret.json content is needed.") do
|
30
|
+
args[:use_service_account] = true
|
31
|
+
end
|
28
32
|
opts.on("-o", "--only platform1,platform2", Array, "Only generate localisation files for the specified platforms. Supported platforms : #{Constant::SUPPORTED_PLATFORMS.join(', ')}") do |platforms|
|
29
33
|
args[:only] = filter_option_args("-o", platforms) { |platform| !!Constant::SUPPORTED_PLATFORMS.index(platform) }
|
30
34
|
end
|
@@ -44,6 +48,7 @@ module AdLocalize
|
|
44
48
|
LOGGER.log(:error, :red, "Missing argument for option #{e.args.join(',')}")
|
45
49
|
rescue ArgumentError => e
|
46
50
|
LOGGER.log(:error, :red, e.message)
|
51
|
+
raise e
|
47
52
|
end
|
48
53
|
args
|
49
54
|
end
|
@@ -90,11 +90,16 @@ module AdLocalize::Platform
|
|
90
90
|
|
91
91
|
private
|
92
92
|
|
93
|
+
def escape_quotes_if_needed(value)
|
94
|
+
value.gsub(/(?<!\\)\"/, "\\\"") # match " unless there is a \ before
|
95
|
+
end
|
96
|
+
|
93
97
|
def write_localizable(locale:, singulars:, wording_type:, filename:)
|
94
98
|
locale = locale.to_sym
|
95
99
|
|
96
100
|
singulars.each do |key, locales_wording|
|
97
101
|
value = locales_wording.dig(locale, wording_type)
|
102
|
+
value = escape_quotes_if_needed(value)
|
98
103
|
comment = locales_wording.dig(locale, AdLocalize::Constant::COMMENT_KEY_SYMBOL)
|
99
104
|
export_dir(locale).join(filename).open("a") do |file|
|
100
105
|
line = ""
|
@@ -5,12 +5,13 @@ module AdLocalize::Platform
|
|
5
5
|
OPTIONS = {output_path: ".."}
|
6
6
|
|
7
7
|
attr_accessor :platform_dir
|
8
|
-
attr_reader :default_locale, :output_path
|
8
|
+
attr_reader :default_locale, :output_path, :add_intermediate_platform_dir
|
9
9
|
|
10
|
-
def initialize(default_locale, output_path)
|
10
|
+
def initialize(default_locale, output_path, add_intermediate_platform_dir)
|
11
11
|
@default_locale = default_locale.to_sym
|
12
12
|
@output_path = output_path # Must be set before platform_dir
|
13
|
-
@platform_dir = export_base_directory.join(platform.to_s)
|
13
|
+
@platform_dir = add_intermediate_platform_dir ? export_base_directory.join(platform.to_s) : export_base_directory
|
14
|
+
@add_intermediate_platform_dir = add_intermediate_platform_dir
|
14
15
|
create_platform_dir
|
15
16
|
end
|
16
17
|
|
@@ -52,7 +53,7 @@ module AdLocalize::Platform
|
|
52
53
|
end
|
53
54
|
|
54
55
|
def create_platform_dir
|
55
|
-
if platform_dir.directory?
|
56
|
+
if platform_dir.directory? && add_intermediate_platform_dir
|
56
57
|
FileUtils.rm_rf("#{platform_dir}/.", secure: true)
|
57
58
|
else
|
58
59
|
platform_dir.mkpath
|
data/lib/ad_localize/runner.rb
CHANGED
@@ -15,10 +15,14 @@ module AdLocalize
|
|
15
15
|
file_to_parse = args.first
|
16
16
|
LOGGER.log(:warn, :yellow, "Only one CSV can be treated - the priority goes to #{file_to_parse}") if input_files.length > 1
|
17
17
|
if args.empty?
|
18
|
-
options[:drive_file] = CsvFileManager.download_from_drive(options.dig(:drive_key), options.dig(:sheet_id))
|
18
|
+
options[:drive_file] = CsvFileManager.download_from_drive(options.dig(:drive_key), options.dig(:sheet_id), options.dig(:use_service_account))
|
19
19
|
file_to_parse = options.dig(:drive_file)
|
20
20
|
end
|
21
|
-
CsvFileManager.csv?(file_to_parse)
|
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
|
22
26
|
CsvFileManager.delete_drive_file(options[:drive_file]) if options[:drive_file]
|
23
27
|
end
|
24
28
|
end
|
@@ -34,8 +38,13 @@ module AdLocalize
|
|
34
38
|
LOGGER.log(:error, :red, "No data were found in the file - check if there is a key column in the file")
|
35
39
|
else
|
36
40
|
export_platforms = options.dig(:only) || Constant::SUPPORTED_PLATFORMS
|
41
|
+
add_intermediate_platform_dir = export_platforms.length > 1
|
37
42
|
export_platforms.each do |platform|
|
38
|
-
platform_formatter = "AdLocalize::Platform::#{platform.to_s.camelize}Formatter".constantize.new(
|
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
|
+
)
|
39
48
|
parser.locales.each do |locale|
|
40
49
|
platform_formatter.export(locale, data)
|
41
50
|
end
|
data/lib/ad_localize/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ad_localize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Edouard Siegel
|
@@ -15,6 +15,8 @@ authors:
|
|
15
15
|
- Corentin Huard
|
16
16
|
- Claire Peyron
|
17
17
|
- Claire Dufetrelle
|
18
|
+
- Pierre Felgines
|
19
|
+
- Satyan Jacquens
|
18
20
|
autorequire:
|
19
21
|
bindir: exe
|
20
22
|
cert_chain: []
|
@@ -114,36 +116,30 @@ dependencies:
|
|
114
116
|
name: activesupport
|
115
117
|
requirement: !ruby/object:Gem::Requirement
|
116
118
|
requirements:
|
117
|
-
- - "
|
119
|
+
- - "~>"
|
118
120
|
- !ruby/object:Gem::Version
|
119
|
-
version:
|
121
|
+
version: '5.2'
|
120
122
|
type: :runtime
|
121
123
|
prerelease: false
|
122
124
|
version_requirements: !ruby/object:Gem::Requirement
|
123
125
|
requirements:
|
124
|
-
- - "
|
126
|
+
- - "~>"
|
125
127
|
- !ruby/object:Gem::Version
|
126
|
-
version:
|
128
|
+
version: '5.2'
|
127
129
|
- !ruby/object:Gem::Dependency
|
128
130
|
name: nokogiri
|
129
131
|
requirement: !ruby/object:Gem::Requirement
|
130
132
|
requirements:
|
131
133
|
- - "~>"
|
132
134
|
- !ruby/object:Gem::Version
|
133
|
-
version: '1.
|
134
|
-
- - ">="
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
version: 1.8.2
|
135
|
+
version: '1.10'
|
137
136
|
type: :runtime
|
138
137
|
prerelease: false
|
139
138
|
version_requirements: !ruby/object:Gem::Requirement
|
140
139
|
requirements:
|
141
140
|
- - "~>"
|
142
141
|
- !ruby/object:Gem::Version
|
143
|
-
version: '1.
|
144
|
-
- - ">="
|
145
|
-
- !ruby/object:Gem::Version
|
146
|
-
version: 1.8.2
|
142
|
+
version: '1.10'
|
147
143
|
- !ruby/object:Gem::Dependency
|
148
144
|
name: colorize
|
149
145
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,6 +154,20 @@ dependencies:
|
|
158
154
|
- - "~>"
|
159
155
|
- !ruby/object:Gem::Version
|
160
156
|
version: '0.8'
|
157
|
+
- !ruby/object:Gem::Dependency
|
158
|
+
name: googleauth
|
159
|
+
requirement: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - "~>"
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0.12'
|
164
|
+
type: :runtime
|
165
|
+
prerelease: false
|
166
|
+
version_requirements: !ruby/object:Gem::Requirement
|
167
|
+
requirements:
|
168
|
+
- - "~>"
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: '0.12'
|
161
171
|
description: |-
|
162
172
|
AdLocalize produces localization files from platform agnostic wording.
|
163
173
|
Supported wording format : CSV. Supported export format: iOS, Android, JSON and YAML
|
@@ -176,7 +186,9 @@ files:
|
|
176
186
|
- CHANGELOG.md
|
177
187
|
- CODE_OF_CONDUCT.md
|
178
188
|
- Gemfile
|
189
|
+
- Gemfile.lock
|
179
190
|
- LICENSE.txt
|
191
|
+
- Makefile
|
180
192
|
- README.md
|
181
193
|
- Rakefile
|
182
194
|
- ad_localize.gemspec
|
@@ -197,7 +209,7 @@ files:
|
|
197
209
|
- lib/ad_localize/platform/yml_formatter.rb
|
198
210
|
- lib/ad_localize/runner.rb
|
199
211
|
- lib/ad_localize/version.rb
|
200
|
-
homepage: https://
|
212
|
+
homepage: https://github.com/applidium/ad_localize
|
201
213
|
licenses:
|
202
214
|
- MIT
|
203
215
|
metadata: {}
|