bisu 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -2
- data/bin/bisu +1 -1
- data/bisu.gemspec +4 -2
- data/lib/bisu/translator.rb +4 -4
- data/lib/bisu/version.rb +4 -0
- data/lib/bisu.rb +31 -4
- data/test/test_bisu_translator.rb +26 -5
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26ad7d61670e9ff3ad16fd40743a7d3d9a7543ba
|
4
|
+
data.tar.gz: 257a0a78ac010b9be31fbf1f4e76676189b50419
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2e4b66ceac94f6b4d2274225af7e4780c9c6b85e64a9e38cd403aa447d54f27c078cf7683ecadd86cbd7e2089575ca12e44c296056dc5a1bac848587b9e1acf
|
7
|
+
data.tar.gz: 81eff7ef5103393fb0fbc7295c70a9c1dedbb9b224491e7a68d18ebdc9b0e9fee1616d080d6809a1c492f7f2d492c4294bc43c0a2d020d35ad00823ee6a3ba6d
|
data/README.md
CHANGED
@@ -60,8 +60,7 @@ Configuration
|
|
60
60
|
"klGeneral_Delete" = "$kDelete$";
|
61
61
|
"klGeneral_Cancel" = "$kCancel$";
|
62
62
|
"klGeneral_Close" = "$kClose$";
|
63
|
-
|
64
|
-
"klRequestName" = "$kRequestName%{user_name: %@}$";
|
63
|
+
"klRequestName" = "$kRequestName%{user_name: %@}$";
|
65
64
|
```
|
66
65
|
|
67
66
|
1. Create a \*.translatable version for your **Android** localization files:
|
data/bin/bisu
CHANGED
data/bisu.gemspec
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
require_relative "lib/bisu/version"
|
2
|
+
|
1
3
|
Gem::Specification.new do |s|
|
2
4
|
s.name = 'bisu'
|
3
|
-
s.version =
|
4
|
-
s.date =
|
5
|
+
s.version = Bisu::VERSION
|
6
|
+
s.date = Bisu::VERSION_UPDATED_AT
|
5
7
|
s.summary = 'A localization automation service'
|
6
8
|
s.description = 'Bisu manages your app iOS and Android localization files for you. No more copy+paste induced errors!'
|
7
9
|
s.authors = ['joaoffcosta']
|
data/lib/bisu/translator.rb
CHANGED
@@ -12,7 +12,7 @@ module Bisu
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
def translate(language, locale, in_path, out_path)
|
15
|
+
def translate(language, locale, in_path, out_path, default_language=nil)
|
16
16
|
unless @kb.has_language?(language)
|
17
17
|
Logger.error("Unknown language #{language}")
|
18
18
|
return false
|
@@ -24,7 +24,7 @@ module Bisu
|
|
24
24
|
Logger.info("Translating #{in_path} to #{language} > #{out_path}...")
|
25
25
|
|
26
26
|
in_file.each_line do |line|
|
27
|
-
out_file.write(localize(line, language, locale))
|
27
|
+
out_file.write(localize(line, language, locale, default_language))
|
28
28
|
end
|
29
29
|
|
30
30
|
out_file.flush
|
@@ -49,7 +49,7 @@ module Bisu
|
|
49
49
|
File.open(File.expand_path(file_name), method)
|
50
50
|
end
|
51
51
|
|
52
|
-
def localize(text, language, locale)
|
52
|
+
def localize(text, language, locale, default_language=nil)
|
53
53
|
t = text
|
54
54
|
t = t.gsub("$specialKLanguage$", language)
|
55
55
|
t = t.gsub("$specialKLocale$", locale)
|
@@ -57,7 +57,7 @@ module Bisu
|
|
57
57
|
t = t.gsub("$specialKComment2$", "Remember to CHANGE THE TEMPLATE and not this file!")
|
58
58
|
|
59
59
|
if l = localization_params(t)
|
60
|
-
if localized = @kb.localize(l[:loc_key], language)
|
60
|
+
if localized = @kb.localize(l[:loc_key], language) || @kb.localize(l[:loc_key], default_language)
|
61
61
|
l[:loc_vars].each do |param, value|
|
62
62
|
localized = localized.gsub("%{#{param}}", value)
|
63
63
|
end
|
data/lib/bisu/version.rb
ADDED
data/lib/bisu.rb
CHANGED
@@ -2,18 +2,22 @@ require 'bisu/logger'
|
|
2
2
|
require 'bisu/config'
|
3
3
|
require 'bisu/knowledge_base'
|
4
4
|
require 'bisu/translator'
|
5
|
+
require 'bisu/version'
|
6
|
+
require 'optparse'
|
5
7
|
|
6
8
|
module Bisu
|
7
9
|
extend self
|
8
10
|
|
9
|
-
def run
|
11
|
+
def run(opts)
|
12
|
+
options = command_line_options(opts)
|
13
|
+
|
10
14
|
if config = Bisu::Config.parse("translatable.yml")
|
11
15
|
kbase = Bisu::GoogleDriveKB.new(config[:sheet_id], config[:keys_column])
|
12
16
|
translator = Bisu::Translator.new(kbase, config[:type])
|
13
17
|
|
14
18
|
config[:in].each do |in_path|
|
15
19
|
config[:out].each do |out|
|
16
|
-
localize(translator, out[:locale], out[:kb_language], in_path, out[:path] || config[:out_path])
|
20
|
+
localize(translator, out[:locale], out[:kb_language], options[:default_language], in_path, out[:path] || config[:out_path])
|
17
21
|
end
|
18
22
|
end
|
19
23
|
end
|
@@ -23,7 +27,30 @@ module Bisu
|
|
23
27
|
|
24
28
|
private
|
25
29
|
|
26
|
-
def
|
30
|
+
def command_line_options(options)
|
31
|
+
options = {}
|
32
|
+
|
33
|
+
opts_parser = OptionParser.new do |opts|
|
34
|
+
opts.on("-d LANGUAGE", "--default LANGUAGE", "Language to use when there is no available translation") do |language|
|
35
|
+
options[:default_language] = language
|
36
|
+
end
|
37
|
+
|
38
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
39
|
+
puts opts
|
40
|
+
exit
|
41
|
+
end
|
42
|
+
|
43
|
+
opts.on_tail("-v", "--version", "Show version") do
|
44
|
+
puts Bisu::VERSION
|
45
|
+
exit
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
opts_parser.parse!(ARGV)
|
50
|
+
options
|
51
|
+
end
|
52
|
+
|
53
|
+
def localize(translator, locale, language, default_language, in_path, out_path)
|
27
54
|
in_name = File.basename(in_path)
|
28
55
|
out_name = in_name.gsub(/\.translatable$/, "")
|
29
56
|
|
@@ -34,7 +61,7 @@ module Bisu
|
|
34
61
|
|
35
62
|
out_path = out_path % { locale: locale, android_locale: locale.gsub("-", "-r"), out_name: out_name }
|
36
63
|
|
37
|
-
translator.translate(language, locale, in_path, out_path)
|
64
|
+
translator.translate(language, locale, in_path, out_path, default_language)
|
38
65
|
end
|
39
66
|
|
40
67
|
end
|
@@ -4,13 +4,15 @@ require 'bisu/translator'
|
|
4
4
|
class BisuTranslatorTest < Minitest::Test
|
5
5
|
|
6
6
|
def setup
|
7
|
-
@lang
|
8
|
-
@
|
7
|
+
@lang = "portuguese"
|
8
|
+
@incomplete_lang = "english"
|
9
|
+
@locale = "PT-PT"
|
9
10
|
|
10
11
|
kb = Bisu::KnowledgeBase.new({
|
11
|
-
languages: [@lang],
|
12
|
+
languages: [@lang, @missing_lang],
|
12
13
|
keys: {
|
13
|
-
"
|
14
|
+
"kRegularKey1" => { @lang => "Não sabes nada João das Neves", @incomplete_lang => "You know nothing John Snow" },
|
15
|
+
"kRegularKey2" => { @lang => "Não sabes isto João das Neves" },
|
14
16
|
"kIOSKey" => { @lang => "Não sabes nada \"João das Neves\"" },
|
15
17
|
"kAndroidKey1" => { @lang => "Não sabes nada 'João das Neves'" },
|
16
18
|
"kAndroidKey2" => { @lang => "Não sabes nada João das Neves..." },
|
@@ -23,20 +25,31 @@ class BisuTranslatorTest < Minitest::Test
|
|
23
25
|
@tios = Bisu::Translator.new(kb, :ios)
|
24
26
|
@tand = Bisu::Translator.new(kb, :android)
|
25
27
|
@tror = Bisu::Translator.new(kb, :ror)
|
28
|
+
|
29
|
+
Bisu::Logger.silent_mode = true
|
30
|
+
end
|
31
|
+
|
32
|
+
def teardown
|
33
|
+
Bisu::Logger.silent_mode = false
|
26
34
|
end
|
27
35
|
|
28
36
|
def test_simple_translate
|
37
|
+
orig0 = "0: $kUnknownKey$"
|
29
38
|
orig1 = "1: $specialKComment1$"
|
30
39
|
orig2 = "2: $specialKComment2$"
|
31
40
|
orig3 = "3: $specialKLanguage$"
|
32
41
|
orig4 = "4: $specialKLocale$"
|
33
|
-
orig5 = "5: $
|
42
|
+
orig5 = "5: $kRegularKey1$"
|
34
43
|
orig6_1 = "6.1: $k1ParameterKey$"
|
35
44
|
orig6_2 = "6.2: $k1ParameterKey{name:%1$s}$"
|
36
45
|
orig7_1 = "7.1: $k2ParametersKey$"
|
37
46
|
orig7_2 = "7.2: $k2ParametersKey{percentage:%2$d, name:%1$s}$"
|
38
47
|
orig7_3 = "7.3: $k2ParametersKey{name:%1$s, percentage:%2$d}$"
|
48
|
+
orig8_1 = "8.1: $kRegularKey1$"
|
49
|
+
orig8_2 = "8.2: $kRegularKey2$"
|
50
|
+
orig8_3 = "8.3: $kRegularKey2$"
|
39
51
|
|
52
|
+
loc0 = "0: $kUnknownKey$"
|
40
53
|
loc1 = "1: This file was automatically generated based on a translation template."
|
41
54
|
loc2 = "2: Remember to CHANGE THE TEMPLATE and not this file!"
|
42
55
|
loc3 = "3: #{@lang}"
|
@@ -47,8 +60,12 @@ class BisuTranslatorTest < Minitest::Test
|
|
47
60
|
loc7_1 = "7.1: Sabes %{percentage} por cento %{name}."
|
48
61
|
loc7_2 = "7.2: Sabes %2$d por cento %1$s."
|
49
62
|
loc7_3 = "7.3: Sabes %2$d por cento %1$s."
|
63
|
+
loc8_1 = "8.1: You know nothing John Snow"
|
64
|
+
loc8_2 = "8.2: Não sabes isto João das Neves"
|
65
|
+
loc8_3 = "8.3: $kRegularKey2$"
|
50
66
|
|
51
67
|
[@tios, @tand, @tror].each do |translator|
|
68
|
+
assert_equal translator.send(:localize, orig0, @lang, @locale), loc0
|
52
69
|
assert_equal translator.send(:localize, orig1, @lang, @locale), loc1
|
53
70
|
assert_equal translator.send(:localize, orig2, @lang, @locale), loc2
|
54
71
|
assert_equal translator.send(:localize, orig3, @lang, @locale), loc3
|
@@ -59,6 +76,10 @@ class BisuTranslatorTest < Minitest::Test
|
|
59
76
|
assert_equal translator.send(:localize, orig7_1, @lang, @locale), loc7_1
|
60
77
|
assert_equal translator.send(:localize, orig7_2, @lang, @locale), loc7_2
|
61
78
|
assert_equal translator.send(:localize, orig7_3, @lang, @locale), loc7_3
|
79
|
+
|
80
|
+
assert_equal translator.send(:localize, orig8_1, @incomplete_lang, @locale, @lang), loc8_1
|
81
|
+
assert_equal translator.send(:localize, orig8_2, @incomplete_lang, @locale, @lang), loc8_2
|
82
|
+
assert_equal translator.send(:localize, orig8_3, @incomplete_lang, @locale ), loc8_3
|
62
83
|
end
|
63
84
|
end
|
64
85
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bisu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- joaoffcosta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: safe_yaml
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- lib/bisu/knowledge_base.rb
|
85
85
|
- lib/bisu/logger.rb
|
86
86
|
- lib/bisu/translator.rb
|
87
|
+
- lib/bisu/version.rb
|
87
88
|
- test/support/sample_kb_public_info.html
|
88
89
|
- test/support/sample_kb_public_sheet.html
|
89
90
|
- test/support/sample_translatable.yml
|