Commit 59117175a37f4314d25e11ce789de6f4b0e545c0
1 parent
8b08c90f
Exists in
master
and in
28 other branches
Avoid generating documentation if not needed
Showing
1 changed file
with
30 additions
and
7 deletions
Show diff stats
lib/tasks/doc.rake
... | ... | @@ -101,23 +101,46 @@ namespace :noosfero do |
101 | 101 | desc "Rebuild Noosfero online documentation" |
102 | 102 | task :rebuild => [:clean, :build] |
103 | 103 | |
104 | + def percent_translated(po_file) | |
105 | + if !File.exists?(po_file) | |
106 | + raise "#{po_file}: not found" | |
107 | + end | |
108 | + output = `LANG=C msgfmt --output /dev/null --statistics #{po_file} 2>&1` | |
109 | + puts output | |
110 | + translated = (output =~ /([0-9]+) translated messages/) ? $1.to_i : 0 | |
111 | + untranslated = (output =~ /([0-9]+) untranslated messages/) ? $1.to_i : 0 | |
112 | + fuzzy = (output =~ /([0-9]+) fuzzy translations/) ? $1.to_i : 0 | |
113 | + | |
114 | + 100 * translated / (translated + untranslated + fuzzy) | |
115 | + end | |
116 | + | |
104 | 117 | desc "Translates Noosfero online documentation (does not touch PO files)" |
105 | 118 | task :translate => english_xhtml do |
106 | 119 | languages = Noosfero.locales.keys - ['en'] |
107 | 120 | languages.each do |lang| |
108 | 121 | po = "po/#{lang}/noosfero-doc.po" |
122 | + percent = percent_translated(po) | |
123 | + if percent < 80 | |
124 | + puts "Skipping #{lang} translation, only #{percent}% translated (needs 80%)" | |
125 | + next | |
126 | + end | |
109 | 127 | if File.exists?(po) |
110 | 128 | puts "Translating: #{lang}" |
111 | 129 | Dir['doc/noosfero/**/*.en.xhtml'].each do |doc| |
112 | 130 | target = doc.sub('.en.xhtml', ".#{lang}.xhtml") |
113 | - command = "po4a-translate -f xhtml -M utf8 -m #{doc} -p #{po} -L utf8 -l #{target} >/dev/null 2>&1" | |
114 | - unless system(command) | |
115 | - puts "Failed in #{lang} translation!" | |
116 | - puts "Run the command manually to check:" | |
117 | - puts "$ #{command}" | |
118 | - raise "Failed." | |
131 | + test = "test ! -e #{target} || test #{target} -ot #{doc} || test #{target} -ot #{po}" | |
132 | + command = "po4a-translate -f xhtml -M utf8 -m #{doc} -p #{po} -L utf8 -l #{target}" | |
133 | + if system(test) | |
134 | + unless system("#{command} >/dev/null 2>&1") | |
135 | + puts "Failed in #{lang} translation!" | |
136 | + puts "Run the command manually to check:" | |
137 | + puts "$ #{command}" | |
138 | + raise "Failed." | |
139 | + end | |
140 | + print "." | |
141 | + else | |
142 | + print "#" | |
119 | 143 | end |
120 | - print "." | |
121 | 144 | $stdout.flush |
122 | 145 | end |
123 | 146 | puts | ... | ... |