tcl-msgcat 0.5 → 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 +4 -4
- data/README.md +7 -7
- data/bin/tcl-msgcat +44 -0
- data/lib/tcl/msgcat/catalog.rb +4 -0
- data/lib/tcl/msgcat/version.rb +1 -1
- data/lib/tcl/msgcat.rb +34 -32
- metadata +4 -4
- data/bin/msgcat +0 -39
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be4b96c3cc4b7b3dc399e0c66882623e888ee087
|
4
|
+
data.tar.gz: 317497d8d0e58a1d2755e187e2179abd31c8cb3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b330d8ae54aa23d480fcf744d936574b04ccb50db2665c671c29421fe3fbecd630ca691195f24641a3df93f65efb05628be64b83bb4aed7b1ce44e7e31ab992f
|
7
|
+
data.tar.gz: 9447c6c2834895c966199dd6b76a0af0ae2710e27a03423df7ea8a275eede53ff465248d284b21cef795b9cb2dcedb073714fa6956551b56130f1356a026fe94
|
data/README.md
CHANGED
@@ -32,26 +32,26 @@ Or install it yourself as:
|
|
32
32
|
|
33
33
|
You'll want to convert your existing files first. You can do this with the following command:
|
34
34
|
|
35
|
-
msgcat parse root.msg > root.json
|
36
|
-
msgcat parse zh_tw.msg > zh_tw.json
|
35
|
+
tcl-msgcat parse root.msg > root.json
|
36
|
+
tcl-msgcat parse zh_tw.msg > zh_tw.json
|
37
37
|
|
38
38
|
And render it back to the msgcat file:
|
39
39
|
|
40
|
-
msgcat render root.json > root.test.msg
|
40
|
+
tcl-msgcat render root.json > root.test.msg
|
41
41
|
|
42
42
|
OK, now say you have added a bunch of strings to your `root.json` for some new stuff in the application. You
|
43
43
|
will want to update all your other files with those strings, and send them off to your translators. For this
|
44
44
|
there is the `merge` action with a few ways to use it:
|
45
45
|
|
46
|
-
msgcat merge root.json fr.json de.json es.json # specify files individually
|
47
|
-
msgcat merge root.json *.json # or glob them (root.json is automatically excluded)
|
46
|
+
tcl-msgcat merge root.json fr.json de.json es.json # specify files individually
|
47
|
+
tcl-msgcat merge root.json *.json # or glob them (root.json is automatically excluded)
|
48
48
|
|
49
49
|
Now you have got your files back from the translators, put them through a [linter](http://jsonlint.com/)
|
50
50
|
and found no errors. You are ready to put those new translations back into your application. Use the `compile`
|
51
51
|
action to run the render command on all your json files:
|
52
52
|
|
53
|
-
msgcat compile ui/msgs # only one arg needed if you don't segregate source/compiled
|
54
|
-
msgcat compile ui/msgs/source ui/msgs # otherwise specify the source and compile paths seperately
|
53
|
+
tcl-msgcat compile ui/msgs # only one arg needed if you don't segregate source/compiled
|
54
|
+
tcl-msgcat compile ui/msgs/source ui/msgs # otherwise specify the source and compile paths seperately
|
55
55
|
|
56
56
|
## Contributing
|
57
57
|
|
data/bin/tcl-msgcat
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'tcl/msgcat'
|
4
|
+
|
5
|
+
case ARGV[0]
|
6
|
+
when "parse", "p"
|
7
|
+
file = ARGV[1]
|
8
|
+
puts Tcl::Msgcat.parse(file).to_json
|
9
|
+
when "uglify", "u"
|
10
|
+
file = ARGV[1]
|
11
|
+
puts Tcl::Msgcat.parse(file).to_json(false)
|
12
|
+
when "render", "r"
|
13
|
+
file = ARGV[1]
|
14
|
+
puts Tcl::Msgcat.render(file).to_s
|
15
|
+
when "merge", "m"
|
16
|
+
root = ARGV[1]
|
17
|
+
files = ARGV[2..-1]
|
18
|
+
Tcl::Msgcat.merge(root, files)
|
19
|
+
when "compile"
|
20
|
+
source_path = ARGV[1]
|
21
|
+
target_path = ARGV[2] || ARGV[1]
|
22
|
+
|
23
|
+
Tcl::Msgcat.compile(source_path, target_path)
|
24
|
+
else
|
25
|
+
puts <<-EOH
|
26
|
+
Usage: msgcat <action> <arguments>
|
27
|
+
|
28
|
+
Actions:
|
29
|
+
p|parse <file> Parse a msgcat file and output JSON
|
30
|
+
u|uglify <file> Parse a msgcat file and output ugly JSON
|
31
|
+
r|render <file> Parse a JSON file and output msgcat
|
32
|
+
m|merge <root> <files> Merge new keys from root into the files (glob pattern)
|
33
|
+
c|compile <source> [target] Compile from the source into the target
|
34
|
+
|
35
|
+
Examples:
|
36
|
+
tcl-msgcat parse ROOT.msg > root.json
|
37
|
+
tcl-msgcat uglify ROOT.msg > root.json
|
38
|
+
tcl-msgcat render root.json > ROOT.msg
|
39
|
+
tcl-msgcat merge root.json path/to/translations/*.json
|
40
|
+
tcl-msgcat merge root.json zh_tw.json fr.json de.json
|
41
|
+
tcl-msgcat compile path/to/my/json/files path/to/my/msgcat/files
|
42
|
+
tcl-msgcat compile path/to/my/json/msgcat/files
|
43
|
+
EOH
|
44
|
+
end
|
data/lib/tcl/msgcat/catalog.rb
CHANGED
data/lib/tcl/msgcat/version.rb
CHANGED
data/lib/tcl/msgcat.rb
CHANGED
@@ -6,45 +6,47 @@ require "tcl/msgcat/renderer"
|
|
6
6
|
|
7
7
|
module Tcl
|
8
8
|
module Msgcat
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
def render(json_file)
|
14
|
-
raise ArgumentError, "File not found: #{json_file}" unless File.exist? json_file
|
15
|
-
msgs = JSON.parse(File.read(json_file))
|
16
|
-
Tcl::Msgcat::Renderer.new(msgs).render
|
17
|
-
end
|
9
|
+
class << self
|
10
|
+
def parse(msgcat_file)
|
11
|
+
Tcl::Msgcat::Parser.new(msgcat_file).parse
|
12
|
+
end
|
18
13
|
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
def render(json_file)
|
15
|
+
raise ArgumentError, "File not found: #{json_file}" unless File.exist? json_file
|
16
|
+
msgs = JSON.parse(File.read(json_file))
|
17
|
+
Tcl::Msgcat::Renderer.new(msgs).render
|
22
18
|
end
|
23
19
|
|
24
|
-
|
20
|
+
def merge(root_file, translation_files=[])
|
21
|
+
if translation_files.is_a? String
|
22
|
+
translation_files = Dir[translation_files]
|
23
|
+
end
|
24
|
+
|
25
|
+
root = Tcl::Msgcat::Catalog.load(root_file)
|
25
26
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
translation_files.each do |file|
|
28
|
+
next if File.basename(file) == File.basename(root_file)
|
29
|
+
print "Merging new translations into #{file}... "
|
30
|
+
catalog = Tcl::Msgcat::Catalog.load(file)
|
31
|
+
catalog.merge!(root)
|
32
|
+
File.open(file, "w") {|f| f.write catalog.to_json }
|
33
|
+
puts "done"
|
34
|
+
end
|
33
35
|
end
|
34
|
-
end
|
35
36
|
|
36
|
-
|
37
|
-
|
38
|
-
|
37
|
+
def compile(source, target)
|
38
|
+
raise ArgumentError, "Not a directory: #{source}" unless File.directory? source
|
39
|
+
raise ArgumentError, "Not a directory: #{target}" unless File.directory? target
|
39
40
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
41
|
+
Dir["#{source}/*.json"].each do |src|
|
42
|
+
dst = File.basename(src, ".json")+".msg"
|
43
|
+
print "Compiling #{src} to #{target}/#{dst}... "
|
44
|
+
msgs = JSON.parse(File.read(src))
|
45
|
+
renderer = Tcl::Msgcat::Renderer.new(msgs).render
|
46
|
+
File.write("#{target}/#{dst}") {|f| f.write renderer.to_s }
|
47
|
+
puts "done"
|
48
|
+
end
|
47
49
|
end
|
48
50
|
end
|
49
51
|
end
|
50
|
-
end
|
52
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tcl-msgcat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0
|
4
|
+
version: '1.0'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert McLeod
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -42,7 +42,7 @@ description: Library for parsing, rendering and merging TCL msgcat files
|
|
42
42
|
email:
|
43
43
|
- robert@autogrow.com
|
44
44
|
executables:
|
45
|
-
- msgcat
|
45
|
+
- tcl-msgcat
|
46
46
|
extensions: []
|
47
47
|
extra_rdoc_files: []
|
48
48
|
files:
|
@@ -51,7 +51,7 @@ files:
|
|
51
51
|
- LICENSE.txt
|
52
52
|
- README.md
|
53
53
|
- Rakefile
|
54
|
-
- bin/msgcat
|
54
|
+
- bin/tcl-msgcat
|
55
55
|
- lib/tcl/msgcat.rb
|
56
56
|
- lib/tcl/msgcat/catalog.rb
|
57
57
|
- lib/tcl/msgcat/parser.rb
|
data/bin/msgcat
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'tcl-msgcat'
|
4
|
-
|
5
|
-
case ARGV[0]
|
6
|
-
when "parse", "p"
|
7
|
-
file = ARGV[1]
|
8
|
-
puts Tcl::Msgcat.parse(file).to_json
|
9
|
-
when "render", "r"
|
10
|
-
file = ARGV[1]
|
11
|
-
puts Tcl::Msgcat.render(file).to_s
|
12
|
-
when "merge", "m"
|
13
|
-
root = ARGV[1]
|
14
|
-
files = ARGV[2..-1]
|
15
|
-
Tcl::Msgcat.merge(root, files)
|
16
|
-
when "compile"
|
17
|
-
source_path = ARGV[1]
|
18
|
-
target_path = ARGV[2] || ARGV[1]
|
19
|
-
|
20
|
-
Tcl::Msgcat.compile(source_path, target_path)
|
21
|
-
else
|
22
|
-
puts <<-EOH
|
23
|
-
Usage: msgcat <action> <arguments>
|
24
|
-
|
25
|
-
Actions:
|
26
|
-
parse <file> Parse a msgcat file and output JSON
|
27
|
-
render <file> Parse a JSON file and output msgcat
|
28
|
-
merge <root> <files> Merge new keys from root into the files (glob pattern)
|
29
|
-
compile <source> [target] Compile from the source into the target
|
30
|
-
|
31
|
-
Examples:
|
32
|
-
msgcat parse ROOT.msg > root.json
|
33
|
-
msgcat render root.json > ROOT.msg
|
34
|
-
msgcat merge root.json path/to/translations/*.json
|
35
|
-
msgcat merge root.json zh_tw.json fr.json de.json
|
36
|
-
msgcat compile path/to/my/json/files path/to/my/msgcat/files
|
37
|
-
msgcat compile path/to/my/json/msgcat/files
|
38
|
-
EOH
|
39
|
-
end
|