also localize .erb files
[opensuse:software-o-o.git] / lib / tasks / gettext.rake
1 #
2 # Added for Ruby-GetText-Package
3 #
4
5 desc "Create mo-files for L10n"
6 task :makemo do
7 require 'gettext/utils'
8 system("cd $MY_LCN_CHECKOUT && svn up")
9 files = Dir.glob(ENV["MY_LCN_CHECKOUT"] + "/*/po/software-opensuse-org*.po")
10 files.each { |file| 
11   lang=File.basename(file, ".po").split('.')[1]
12   ilang=lang
13   #puts "msgfmt -o locale/%s/LC_MESSAGES/software.mo '%s'" % [lang, file]
14   res=''
15   IO.popen( "LC_ALL=C msgfmt --statistics -o messages.mo '%s' 2>&1" % file ) { |f| res=f.gets }
16   #puts "#{lang}: #{res}"
17   # copy only if it contains non-fuzzy translations
18   if res =~ /^\w* translated messages.$/
19     #puts res
20     FileUtils.mkdir_p "locale/" + ilang + "/LC_MESSAGES"
21     puts "take %s into %s" % [lang, ilang]
22     FileUtils.mv "messages.mo", "locale/%s/LC_MESSAGES/software.mo" % ilang
23   else
24     FileUtils.rm "messages.mo"
25   end
26 }
27 end
28
29 desc "Update pot/po files to match new version."
30 task :updatepo do
31 require 'gettext/utils'
32 files = Dir.glob("{app,lib}/**/*.{rb,rhtml,erb}")
33 GetText.rgettext(files, "tmp.pot")
34 system("cd $MY_LCN_CHECKOUT && svn up")
35 system("msgmerge -o $MY_LCN_CHECKOUT/50-pot/software-opensuse-org.pot $MY_LCN_CHECKOUT/50-pot/software-opensuse-org.pot tmp.pot")
36 FileUtils.rm_f "tmp.pot"
37 system("cd $MY_LCN_CHECKOUT && sh ./50-tools/lcn-merge.sh -p software-opensuse-org.pot -s -n")
38 end