icapps-translations 0.1.1 → 0.2.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/README.md +3 -1
- data/lib/icapps/translations.rb +20 -3
- data/lib/icapps/translations/cli.rb +1 -0
- data/lib/icapps/translations/import/base.rb +40 -0
- data/lib/icapps/translations/import/gradle.rb +44 -0
- data/lib/icapps/translations/import/xcode.rb +28 -0
- data/lib/icapps/translations/version.rb +1 -1
- metadata +5 -3
- data/lib/icapps/translations/strings.rb +0 -55
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 43a4c063cd284480ac0ba00710f15b9ee3dc66a0
|
|
4
|
+
data.tar.gz: 18501eeac2975dbe452748dd98d508a7d6fe1d92
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 452909028b55b33562ddb0e126dd3cf1850a996f475c50f8066c416292c891c9ba0686d6a6e561abe069ed179c87d7fd483e6a2b95d61a09fb03a3325d6c3dd7
|
|
7
|
+
data.tar.gz: f4b52bf360483b47acff530231299d5b44be5eb62d109c7115c093df1e2a94705db959f8df80b44d2f3855690ae69eb07aaa39050832890cd293c3d05f8e6fe9
|
data/README.md
CHANGED
|
@@ -23,6 +23,8 @@ Or install it yourself as:
|
|
|
23
23
|
- `translations init`: Run from your project root in order to setup the translations configuration.
|
|
24
24
|
- `translations import`: Run from your project root in order to import the translations into the matching _.strings_ files.
|
|
25
25
|
|
|
26
|
+
_You can pass the `--verbose` parameter to both commands in order to get more detailed information on what is happening._
|
|
27
|
+
|
|
26
28
|
## Build gem
|
|
27
29
|
|
|
28
30
|
Start by updating the version number in the `lib/icapps/translations/version.rb` file.
|
|
@@ -34,7 +36,7 @@ Then build the gem by running the following commands:
|
|
|
34
36
|
|
|
35
37
|
## Contributing
|
|
36
38
|
|
|
37
|
-
1. Fork it ( https://github.com/
|
|
39
|
+
1. Fork it ( https://github.com/icapps/translations/fork )
|
|
38
40
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
39
41
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
40
42
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/lib/icapps/translations.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require "icapps/translations/version"
|
|
2
2
|
require "icapps/translations/cli"
|
|
3
|
-
require "icapps/translations/
|
|
3
|
+
require "icapps/translations/import/xcode"
|
|
4
|
+
require "icapps/translations/import/gradle"
|
|
4
5
|
|
|
5
6
|
module Icapps
|
|
6
7
|
module Translations
|
|
@@ -15,8 +16,24 @@ module Icapps
|
|
|
15
16
|
# Validate the configuration file. Abort when invalid.
|
|
16
17
|
config.validate
|
|
17
18
|
|
|
18
|
-
# Import the
|
|
19
|
-
|
|
19
|
+
# Import the files.
|
|
20
|
+
if is_xcode?
|
|
21
|
+
puts "[VERBOSE] Detected an Xcode project.".colorize(:white) if options[:verbose]
|
|
22
|
+
Import::Xcode.import
|
|
23
|
+
elsif is_android?
|
|
24
|
+
puts "[VERBOSE] Detected an Android project with a .gradle file.".colorize(:white) if options[:verbose]
|
|
25
|
+
Import::Gradle.import
|
|
26
|
+
else
|
|
27
|
+
abort '[ERROR] No Xcode or Android gradle file detected.'.colorize(:red) unless @project_key
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def is_android?
|
|
32
|
+
Dir.glob("**/*.gradle").count > 0
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def is_xcode?
|
|
36
|
+
Dir.glob("**/*.xcodeproj").count > 0
|
|
20
37
|
end
|
|
21
38
|
end
|
|
22
39
|
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'colorize'
|
|
2
|
+
|
|
3
|
+
require "icapps/translations/http"
|
|
4
|
+
|
|
5
|
+
module Icapps
|
|
6
|
+
module Translations
|
|
7
|
+
module Import
|
|
8
|
+
class Base
|
|
9
|
+
class << self
|
|
10
|
+
def import
|
|
11
|
+
puts "[VERBOSE] Importing translations from project with key #{options.project_key}".colorize(:white) if options[:verbose]
|
|
12
|
+
|
|
13
|
+
languages_json = fetch_languages
|
|
14
|
+
puts "[VERBOSE] There are currently #{languages_json.count} language(s) for this project.".colorize(:white) if options[:verbose]
|
|
15
|
+
|
|
16
|
+
languages_json.each { |language| fetch_language_file language }
|
|
17
|
+
puts "[MESSAGE] Finished importing translation.".colorize(:green)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def options
|
|
21
|
+
::Icapps::Translations.options
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def config
|
|
25
|
+
::Icapps::Translations.config
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def fetch_languages
|
|
29
|
+
::Icapps::Translations::Http.authenticated_response('languages.json', true)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def write_to_file(content, files, language)
|
|
33
|
+
File.open(files.first, 'w+') { |file| file.puts content }
|
|
34
|
+
puts "[VERBOSE] Written #{language['short_name']} translations to #{files.first}.".colorize(:green) if options[:verbose]
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'colorize'
|
|
2
|
+
|
|
3
|
+
require "icapps/translations/http"
|
|
4
|
+
require "icapps/translations/import/base"
|
|
5
|
+
|
|
6
|
+
module Icapps
|
|
7
|
+
module Translations
|
|
8
|
+
module Import
|
|
9
|
+
class Gradle < Base
|
|
10
|
+
class << self
|
|
11
|
+
def fetch_language_file(language)
|
|
12
|
+
short_name = language['short_name']
|
|
13
|
+
puts "[VERBOSE] Fetching #{short_name} translations.".colorize(:white) if options[:verbose]
|
|
14
|
+
|
|
15
|
+
file_path = "app/src/main/res/#{values_name(short_name)}/#{config.filename}"
|
|
16
|
+
xml_files = Dir.glob(file_path)
|
|
17
|
+
|
|
18
|
+
if xml_files.count == 0
|
|
19
|
+
puts "[WARNING] No '#{file_path}' file found for the #{short_name} language.".colorize(:yellow)
|
|
20
|
+
elsif xml_files.count > 1
|
|
21
|
+
puts "[WARNING] Multiple '#{file_path}' files found for the #{short_name} language.".colorize(:yellow)
|
|
22
|
+
else
|
|
23
|
+
xml = ::Icapps::Translations::Http.authenticated_response("translations/#{language['id']}.xml")
|
|
24
|
+
write_to_file xml, xml_files, language
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def values_name(short_name)
|
|
31
|
+
if short_name == 'en'
|
|
32
|
+
# Default language is English.
|
|
33
|
+
'values'
|
|
34
|
+
else
|
|
35
|
+
# Android requires the country code to be prefixed with an 'r'.
|
|
36
|
+
# ex. nl-BE becomes nl-rBE
|
|
37
|
+
"values-#{short_name.gsub('-', '-r')}"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'colorize'
|
|
2
|
+
|
|
3
|
+
require "icapps/translations/http"
|
|
4
|
+
require "icapps/translations/import/base"
|
|
5
|
+
|
|
6
|
+
module Icapps
|
|
7
|
+
module Translations
|
|
8
|
+
module Import
|
|
9
|
+
class Xcode < Base
|
|
10
|
+
class << self
|
|
11
|
+
def fetch_language_file(language)
|
|
12
|
+
short_name = language['short_name']
|
|
13
|
+
puts "[VERBOSE] Fetching #{short_name} translations.".colorize(:white) if options[:verbose]
|
|
14
|
+
string_files = Dir.glob("**/#{short_name}.lproj/#{config.filename}")
|
|
15
|
+
if string_files.count == 0
|
|
16
|
+
puts "[WARNING] No 'Localizable.string' file found for the #{short_name} language.".colorize(:yellow)
|
|
17
|
+
elsif string_files.count > 1
|
|
18
|
+
puts "[WARNING] Multiple 'Localizable.string' files found for the #{short_name} language.".colorize(:yellow)
|
|
19
|
+
else
|
|
20
|
+
strings = ::Icapps::Translations::Http.authenticated_response("translations/#{language['id']}.strings")
|
|
21
|
+
write_to_file strings, string_files, language
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: icapps-translations
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jelle Vandebeeck
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-10-
|
|
11
|
+
date: 2015-10-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -85,7 +85,9 @@ files:
|
|
|
85
85
|
- lib/icapps/translations/cli.rb
|
|
86
86
|
- lib/icapps/translations/configuration.rb
|
|
87
87
|
- lib/icapps/translations/http.rb
|
|
88
|
-
- lib/icapps/translations/
|
|
88
|
+
- lib/icapps/translations/import/base.rb
|
|
89
|
+
- lib/icapps/translations/import/gradle.rb
|
|
90
|
+
- lib/icapps/translations/import/xcode.rb
|
|
89
91
|
- lib/icapps/translations/version.rb
|
|
90
92
|
homepage: https://github.com/icapps/translations
|
|
91
93
|
licenses:
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
require 'colorize'
|
|
2
|
-
|
|
3
|
-
require "icapps/translations/http"
|
|
4
|
-
|
|
5
|
-
module Icapps
|
|
6
|
-
module Translations
|
|
7
|
-
class Strings
|
|
8
|
-
class << self
|
|
9
|
-
def import
|
|
10
|
-
puts "[VERBOSE] Importing translations from project with key #{options.project_key}".colorize(:white) if options[:verbose]
|
|
11
|
-
|
|
12
|
-
languages_json = fetch_languages
|
|
13
|
-
puts "[VERBOSE] There are currently #{languages_json.count} language(s) for this project.".colorize(:white) if options[:verbose]
|
|
14
|
-
|
|
15
|
-
languages_json.each { |language| fetch_language_strings_file language }
|
|
16
|
-
puts "[MESSAGE] Finished importing translation.".colorize(:green)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
private
|
|
20
|
-
|
|
21
|
-
def options
|
|
22
|
-
::Icapps::Translations.options
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def config
|
|
26
|
-
::Icapps::Translations.config
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def fetch_languages
|
|
30
|
-
::Icapps::Translations::Http.authenticated_response('languages.json', true)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def fetch_language_strings_file(language)
|
|
34
|
-
short_name = language['short_name']
|
|
35
|
-
puts "[VERBOSE] Fetching #{short_name} translations.".colorize(:white) if options[:verbose]
|
|
36
|
-
string_files = Dir.glob("**/#{short_name}.lproj/#{config.filename}")
|
|
37
|
-
if string_files.count == 0
|
|
38
|
-
puts "[WARNING] No 'Localizable.string' file found for the #{short_name} language.".colorize(:yellow)
|
|
39
|
-
elsif string_files.count > 1
|
|
40
|
-
puts "[WARNING] Multiple 'Localizable.string' files found for the #{short_name} language.".colorize(:yellow)
|
|
41
|
-
else
|
|
42
|
-
strings = ::Icapps::Translations::Http.authenticated_response("translations/#{language['id']}.strings")
|
|
43
|
-
write_to_strings_file strings, string_files, language
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def write_to_strings_file(strings, string_files, language)
|
|
48
|
-
path = string_files.first
|
|
49
|
-
File.open(path, 'w+') { |file| file.puts strings }
|
|
50
|
-
puts "[VERBOSE] Written #{language['short_name']} translations to #{path}.".colorize(:green) if options[:verbose]
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|