applocale 0.1.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 +7 -0
- data/exe/applocale +6 -0
- data/lib/applocale.rb +9 -0
- data/lib/applocale/AppLocaleFile.yaml +8 -0
- data/lib/applocale/Command/init.rb +58 -0
- data/lib/applocale/Core/ParserStringFile/parse_localized_resource.rb +92 -0
- data/lib/applocale/Core/ParserStringFile/parse_strings_file.rb +157 -0
- data/lib/applocale/Core/ParserStringFile/parse_xml_file.rb +51 -0
- data/lib/applocale/Core/client_secret.json +1 -0
- data/lib/applocale/Core/convert_to_str_file.rb +66 -0
- data/lib/applocale/Core/google_helper.rb +69 -0
- data/lib/applocale/Core/init.rb +19 -0
- data/lib/applocale/Core/parse_xlsx.rb +166 -0
- data/lib/applocale/Core/parse_xlsx_module.rb +91 -0
- data/lib/applocale/Core/setting.rb +18 -0
- data/lib/applocale/Util/color_util.rb +28 -0
- data/lib/applocale/Util/config_util.rb +169 -0
- data/lib/applocale/Util/error_util.rb +149 -0
- data/lib/applocale/Util/file_util.rb +61 -0
- data/lib/applocale/Util/lang.rb +30 -0
- data/lib/applocale/Util/platform.rb +17 -0
- data/lib/applocale/Util/regex_util.rb +110 -0
- data/lib/applocale/version.rb +3 -0
- metadata +206 -0
@@ -0,0 +1,149 @@
|
|
1
|
+
require File.expand_path('../color_util.rb', __FILE__)
|
2
|
+
|
3
|
+
|
4
|
+
module Applocale
|
5
|
+
module ErrorUtil
|
6
|
+
class CommonError < StandardError
|
7
|
+
def raise
|
8
|
+
puts "** Error: #{self.message}".red
|
9
|
+
abort("")
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_warn
|
13
|
+
puts "** Warning: #{self.message}".yellow
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class CommandError < CommonError;
|
18
|
+
end
|
19
|
+
|
20
|
+
class MissingConfigFileError < CommonError;
|
21
|
+
end
|
22
|
+
|
23
|
+
class ConfigFileValidError < CommonError
|
24
|
+
def self.raiseArr(list = nil)
|
25
|
+
if !list.nil? && list.length > 0
|
26
|
+
puts "*** ConfigError ***".red
|
27
|
+
list.each do |err|
|
28
|
+
puts "#{err.message}".red
|
29
|
+
end
|
30
|
+
abort("")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
# attr_accessor :msg
|
34
|
+
# def initialize(msg)
|
35
|
+
# self.msg = msg
|
36
|
+
# end
|
37
|
+
end
|
38
|
+
|
39
|
+
class DownloadXlsxError < CommonError
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
module ParseXlsxError
|
45
|
+
class ParseError < CommonError
|
46
|
+
|
47
|
+
attr_accessor :rowinfo, :msg
|
48
|
+
|
49
|
+
def initialize(rowinfo = nil, msg = nil)
|
50
|
+
@rowinfo = rowinfo
|
51
|
+
@msg = msg
|
52
|
+
end
|
53
|
+
|
54
|
+
def message
|
55
|
+
"#{rowinfo.to_s} - #{msg}"
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.raiseArr(list = nil)
|
59
|
+
if !list.nil? && list.length > 0
|
60
|
+
puts "*** ParseError ***".red
|
61
|
+
list.each do |err|
|
62
|
+
puts "#{err.message}".red
|
63
|
+
end
|
64
|
+
abort("")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
class HeadeNotFoundError < ParseError;
|
71
|
+
end
|
72
|
+
class ErrorDuplicateKey < ParseError;
|
73
|
+
end
|
74
|
+
class ErrorInValidKey < ParseError;
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
module ParseLocalizedError
|
79
|
+
class ParseLocalizedError < CommonError
|
80
|
+
attr_accessor :file, :lang, :row_no
|
81
|
+
|
82
|
+
def initialize(file, lang, row_no)
|
83
|
+
@file = file
|
84
|
+
@lang = lang
|
85
|
+
@row_no = row_no
|
86
|
+
end
|
87
|
+
|
88
|
+
def message
|
89
|
+
self.msg
|
90
|
+
end
|
91
|
+
|
92
|
+
def msg
|
93
|
+
return "lang: #{lang}, rowno: #{row_no}, file: #{file}"
|
94
|
+
end
|
95
|
+
|
96
|
+
def raise(is_exit = true)
|
97
|
+
puts "** Error: #{self.message}".red
|
98
|
+
abort("") if is_exit
|
99
|
+
end
|
100
|
+
|
101
|
+
def self.raiseArr(list = nil, is_exit = true)
|
102
|
+
if !list.nil? && list.length > 0
|
103
|
+
puts "*** ParseLocalizedError ***".red
|
104
|
+
list.each do |err|
|
105
|
+
puts "#{err.message}".red
|
106
|
+
end
|
107
|
+
abort("") if is_exit
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
class InvalidKey < ParseLocalizedError
|
114
|
+
attr_accessor :key
|
115
|
+
|
116
|
+
def initialize(key, file, lang, row_no)
|
117
|
+
@key = key
|
118
|
+
@file = file
|
119
|
+
@lang = lang
|
120
|
+
@row_no = row_no
|
121
|
+
end
|
122
|
+
|
123
|
+
def message
|
124
|
+
"InvalidKey [#{key}] - #{self.msg}"
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
class WrongFormat < ParseLocalizedError;
|
129
|
+
def message
|
130
|
+
"WrongFormat - #{self.msg}"
|
131
|
+
end
|
132
|
+
end
|
133
|
+
class DuplicateKey < ParseLocalizedError
|
134
|
+
attr_accessor :key, :duplicate_rowno
|
135
|
+
def initialize(key, duplicate_rowno, file, lang, row_no)
|
136
|
+
@key = key
|
137
|
+
@duplicate_rowno = duplicate_rowno
|
138
|
+
@file = file
|
139
|
+
@lang = lang
|
140
|
+
@row_no = row_no
|
141
|
+
end
|
142
|
+
|
143
|
+
def message
|
144
|
+
"DuplicateKey [#{key}] - #{self.msg} : duplicateWithRow: #{duplicate_rowno}"
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require File.expand_path('../platform.rb', __FILE__)
|
2
|
+
require File.expand_path('../lang.rb', __FILE__)
|
3
|
+
require 'pathname'
|
4
|
+
|
5
|
+
module Applocale
|
6
|
+
class FileUtil
|
7
|
+
@@dirname_main = "AppLocale"
|
8
|
+
@@dirname_ios = "IOS"
|
9
|
+
@@dirname_android = "Android"
|
10
|
+
@@filename_config = "AppLocaleFile.yaml"
|
11
|
+
@@filename_xlsx = "string.xlsx"
|
12
|
+
|
13
|
+
def self.filename_config
|
14
|
+
return @@filename_config
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.mainFolderPathStr
|
18
|
+
pathstr = File.join(Dir.pwd, @@dirname_main)
|
19
|
+
Dir.mkdir pathstr unless File.exist?(pathstr)
|
20
|
+
return pathstr
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.configFilePathStr
|
24
|
+
filename = @@filename_config
|
25
|
+
pathstr = File.join(self.mainFolderPathStr, filename)
|
26
|
+
return pathstr
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.createConfigFileIfNeed(platform)
|
30
|
+
pathstr = self.configFilePathStr
|
31
|
+
self.createConfigFile(pathstr, platform) unless File.exist?(pathstr)
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.defaultLocaleFileRelativePathStr(platform, lang)
|
35
|
+
if platform == Platform::IOS
|
36
|
+
dirname = @@dirname_ios
|
37
|
+
elsif platform == Platform::ANDROID
|
38
|
+
dirname = @@dirname_android
|
39
|
+
end
|
40
|
+
if !dirname.nil?
|
41
|
+
dirpathstr = File.join(self.mainFolderPathStr, dirname)
|
42
|
+
Dir.mkdir dirpathstr unless File.exist?(dirpathstr)
|
43
|
+
filename = Locale.filename(platform, lang)
|
44
|
+
filepathstr = File.join(dirpathstr, filename)
|
45
|
+
filepath = Pathname.new(filepathstr)
|
46
|
+
configfilepath = Pathname.new(File.dirname(self.configFilePathStr))
|
47
|
+
return filepath.relative_path_from(configfilepath).to_s
|
48
|
+
end
|
49
|
+
return nil
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.defaultXlsxRelativePathStr
|
53
|
+
filename = @@filename_xlsx
|
54
|
+
pathstr = File.join(self.mainFolderPathStr, filename)
|
55
|
+
filepath = Pathname.new(pathstr)
|
56
|
+
configfilepath = Pathname.new(File.dirname(self.configFilePathStr))
|
57
|
+
return filepath.relative_path_from(configfilepath).to_s
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
module Applocale
|
3
|
+
module Locale
|
4
|
+
ZH_TW = :zh_TW
|
5
|
+
ZH_CN = :zh_CN
|
6
|
+
EN_US = :en_US
|
7
|
+
FILENAME_IOS = {Locale::ZH_CN => 'zh_CN.strings', Locale::ZH_TW => 'zh_TW.strings', Locale::EN_US => 'en_US.strings'}
|
8
|
+
FILENAME_ANDROID = {Locale::ZH_CN => 'values-zh-rCN', Locale::ZH_TW => 'values-zh-rTW', Locale::EN_US => 'values'}
|
9
|
+
|
10
|
+
def self.filename(devicemodel, locale)
|
11
|
+
if devicemodel == Platform::IOS
|
12
|
+
return !FILENAME_IOS[locale].nil? ? FILENAME_IOS[locale] : "#{locale}.strings"
|
13
|
+
elsif devicemodel == Platform::ANDROID
|
14
|
+
return File.join(FILENAME_ANDROID[locale],"strings.xml")
|
15
|
+
end
|
16
|
+
return nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.init(langstring)
|
20
|
+
if langstring.upcase == 'ZH_TW'
|
21
|
+
return Locale::ZH_TW
|
22
|
+
elsif langstring.upcase == 'ZH_CN'
|
23
|
+
return Locale::ZH_CN
|
24
|
+
elsif langstring.upcase == 'EN_US'
|
25
|
+
return Locale::EN_US
|
26
|
+
end
|
27
|
+
return langstring
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Applocale
|
2
|
+
|
3
|
+
module Platform
|
4
|
+
IOS = :ios
|
5
|
+
ANDROID = :Android
|
6
|
+
|
7
|
+
def self.init(platform)
|
8
|
+
if platform.upcase == "IOS"
|
9
|
+
return Platform::IOS
|
10
|
+
elsif platform.upcase == "ANDROID"
|
11
|
+
return Platform::ANDROID
|
12
|
+
end
|
13
|
+
return nil
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
require 'colorize'
|
2
|
+
require File.expand_path('../platform.rb', __FILE__)
|
3
|
+
|
4
|
+
|
5
|
+
module Applocale
|
6
|
+
class ValidKey
|
7
|
+
REGEX_KEYSTR_IOS = /\A[0-9a-zA-Z\_]+\z/
|
8
|
+
|
9
|
+
def self.isValidKey(platfrom, key)
|
10
|
+
return false if key.nil?
|
11
|
+
return false if key.strip == ""
|
12
|
+
result = !REGEX_KEYSTR_IOS.match(key).nil?
|
13
|
+
return result
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class ContentUtil
|
18
|
+
REGEX_ESCAPED_QUOTE = /(?<!\\)(?:\\{2})*(\\")/
|
19
|
+
REGEX_NON_ESCAPE_QUOTE = /(?<!\\)(?:\\{2})*(")/
|
20
|
+
|
21
|
+
def self.removeEscape(platform, content)
|
22
|
+
if platform == Platform::IOS
|
23
|
+
return self.removeEscapedDoubleQuote(content)
|
24
|
+
elsif platform == Platform::ANDROID
|
25
|
+
return self.removeEscapedForAndroid(content)
|
26
|
+
end
|
27
|
+
return content
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.addEscape(platform, content)
|
31
|
+
if platform == Platform::IOS
|
32
|
+
return self.addEscapedDoubleQuote(content)
|
33
|
+
elsif platform == Platform::ANDROID
|
34
|
+
return self.addEscapedForAndroid(content)
|
35
|
+
end
|
36
|
+
return content
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.addEscapedForAndroid(content)
|
40
|
+
# \u \U \0 don't know
|
41
|
+
reg = /(?<!\\)((?:\\{2})+)*\\[c-eg-mo-qsw-zA-TW-Z!$%()*+,-.\/;:>\[\]^_`{|}~89]/
|
42
|
+
new_value = content.gsub(reg) {|match|
|
43
|
+
match.slice!(0)
|
44
|
+
match
|
45
|
+
}
|
46
|
+
reg = /(?<!\\)((?:\\{2})+)*(\\r)/
|
47
|
+
new_value = new_value.gsub(reg) {|match|
|
48
|
+
match.slice!(-1)
|
49
|
+
match + "n"
|
50
|
+
}
|
51
|
+
new_value = new_value.gsub(/&/, "&")
|
52
|
+
new_value = new_value.gsub(/</, "<")
|
53
|
+
# new_value = new_value.gsub(/>/, ">")
|
54
|
+
return new_value
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.removeEscapedForAndroid(content)
|
58
|
+
new_value = content.gsub(/</, "<")
|
59
|
+
new_value = new_value.gsub(/&/, "&")
|
60
|
+
puts "test=#{content}==#{new_value}"
|
61
|
+
return new_value
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.addEscapedDoubleQuote(content)
|
65
|
+
reg = /(?<!\\)((?:\\{2})+)"|(?<!\\)"|^"/
|
66
|
+
new_value = content.gsub(reg) {|match|
|
67
|
+
"\\" + match
|
68
|
+
}
|
69
|
+
return new_value
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.removeEscapedDoubleQuote(content)
|
73
|
+
reg = /(?<!\\)((?:\\{2})+)*\\"/
|
74
|
+
new_value = content.gsub(reg) {|match|
|
75
|
+
match.slice!(0)
|
76
|
+
match
|
77
|
+
}
|
78
|
+
return new_value
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# test = "aasb\\c"
|
85
|
+
# new = test.slice(-1)
|
86
|
+
# test.slice!(-2)
|
87
|
+
# puts test
|
88
|
+
# puts new
|
89
|
+
|
90
|
+
# ex = "\\"
|
91
|
+
# qu = "&"
|
92
|
+
#
|
93
|
+
# (0..10).each do |i|
|
94
|
+
# test = ([ex]*i).join("") + qu + "abcd" + ([ex]*i).join("") + qu + "def"
|
95
|
+
# puts "#{test}"
|
96
|
+
# puts Applocale::ContentUtil.addEscapedForAndroid(test)
|
97
|
+
# puts "------------------------------------"
|
98
|
+
# end
|
99
|
+
|
100
|
+
|
101
|
+
#
|
102
|
+
# #
|
103
|
+
# #
|
104
|
+
# # test = qu
|
105
|
+
# # test1 = ex + qu
|
106
|
+
# # test2 = ex + ex + qu
|
107
|
+
# # test3 = ex + ex + ex + qu
|
108
|
+
# # test4 = ex + ex + ex + ex + qu
|
109
|
+
# #
|
110
|
+
# # Applocale::ContentUtil.removeEscapeFroXlsx(test)
|
metadata
ADDED
@@ -0,0 +1,206 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: applocale
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kennix Chui
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-05-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.12'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.12'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: activesupport
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '5.1'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '5.1'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: thor
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.19.4
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.19.4
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: google-api-client
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.11.1
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.11.1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: google_drive
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '2.1'
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 2.1.3
|
107
|
+
type: :runtime
|
108
|
+
prerelease: false
|
109
|
+
version_requirements: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - "~>"
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '2.1'
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 2.1.3
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: colorize
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: 0.8.1
|
124
|
+
type: :runtime
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: 0.8.1
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: rubyXL
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - "~>"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '3.3'
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: 3.3.23
|
141
|
+
type: :runtime
|
142
|
+
prerelease: false
|
143
|
+
version_requirements: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - "~>"
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '3.3'
|
148
|
+
- - ">="
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: 3.3.23
|
151
|
+
description: It can convert file between string and xlsx, also support download xlsx
|
152
|
+
from google
|
153
|
+
email:
|
154
|
+
- kennixdev@gmail.com
|
155
|
+
executables:
|
156
|
+
- applocale
|
157
|
+
extensions: []
|
158
|
+
extra_rdoc_files: []
|
159
|
+
files:
|
160
|
+
- exe/applocale
|
161
|
+
- lib/applocale.rb
|
162
|
+
- lib/applocale/AppLocaleFile.yaml
|
163
|
+
- lib/applocale/Command/init.rb
|
164
|
+
- lib/applocale/Core/ParserStringFile/parse_localized_resource.rb
|
165
|
+
- lib/applocale/Core/ParserStringFile/parse_strings_file.rb
|
166
|
+
- lib/applocale/Core/ParserStringFile/parse_xml_file.rb
|
167
|
+
- lib/applocale/Core/client_secret.json
|
168
|
+
- lib/applocale/Core/convert_to_str_file.rb
|
169
|
+
- lib/applocale/Core/google_helper.rb
|
170
|
+
- lib/applocale/Core/init.rb
|
171
|
+
- lib/applocale/Core/parse_xlsx.rb
|
172
|
+
- lib/applocale/Core/parse_xlsx_module.rb
|
173
|
+
- lib/applocale/Core/setting.rb
|
174
|
+
- lib/applocale/Util/color_util.rb
|
175
|
+
- lib/applocale/Util/config_util.rb
|
176
|
+
- lib/applocale/Util/error_util.rb
|
177
|
+
- lib/applocale/Util/file_util.rb
|
178
|
+
- lib/applocale/Util/lang.rb
|
179
|
+
- lib/applocale/Util/platform.rb
|
180
|
+
- lib/applocale/Util/regex_util.rb
|
181
|
+
- lib/applocale/version.rb
|
182
|
+
homepage: https://github.com/kennix426/applocale
|
183
|
+
licenses:
|
184
|
+
- MIT
|
185
|
+
metadata: {}
|
186
|
+
post_install_message:
|
187
|
+
rdoc_options: []
|
188
|
+
require_paths:
|
189
|
+
- lib
|
190
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
196
|
+
requirements:
|
197
|
+
- - ">="
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: '0'
|
200
|
+
requirements: []
|
201
|
+
rubyforge_project:
|
202
|
+
rubygems_version: 2.6.11
|
203
|
+
signing_key:
|
204
|
+
specification_version: 4
|
205
|
+
summary: for mobile application to manage locale
|
206
|
+
test_files: []
|