Module: Tcl::Msgcat
- Defined in:
- lib/tcl/msgcat.rb,
lib/tcl/msgcat/parser.rb,
lib/tcl/msgcat/catalog.rb,
lib/tcl/msgcat/version.rb,
lib/tcl/msgcat/renderer.rb,
lib/tcl/msgcat/paddable_string.rb
Defined Under Namespace
Modules: PaddableString
Classes: Catalog, Parser, Renderer
Constant Summary
collapse
- VERSION =
"1.2.3"
Class Method Summary
collapse
Class Method Details
.compile(source, target) ⇒ Object
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/tcl/msgcat.rb', line 53
def compile(source, target)
raise ArgumentError, "Not a directory: #{source}" unless File.directory? source
raise ArgumentError, "Not a directory: #{target}" unless File.directory? target
Dir["#{source}/*.json"].each do |src|
dst = File.basename(src, ".json")+".msg"
print "Compiling #{src} to #{target}/#{dst}... "
begin
File.open("#{target}/#{dst}", "w") {|f| f.write render(src) }
puts "done"
rescue ArgumentError => e
puts e.message
end
end
end
|
.merge(root_file, translation_files = []) ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/tcl/msgcat.rb', line 28
def merge(root_file, translation_files=[])
if translation_files.is_a? String
translation_files = Dir[translation_files]
end
begin
root = Tcl::Msgcat::Catalog.load(root_file)
rescue MultiJson::ParseError => e
raise MultiJson::ParseError, "Failed to parse #{root_file}: #{e.message}"
end
translation_files.each do |file|
begin
next if File.basename(file) == File.basename(root_file)
print "Merging new translations into #{file}... "
catalog = Tcl::Msgcat::Catalog.load(file)
catalog.merge!(root)
File.open(file, "w") {|f| f.write catalog.to_json }
puts "done"
rescue MultiJson::ParseError => e
raise MultiJson::ParseError, "Failed to parse #{file}: #{e.message}"
end
end
end
|
.parse(msgcat_file) ⇒ Object
.render(json_file) ⇒ Object
21
22
23
24
25
26
|
# File 'lib/tcl/msgcat.rb', line 21
def render(json_file)
raise ArgumentError, "File not found: #{json_file}" unless File.exist? json_file
msgs = MultiJson.load(File.read(json_file))
lang = File.basename(json_file, File.extname(json_file))
Tcl::Msgcat::Renderer.new(msgs, lang).render
end
|