Commit 6686f090f4f8e77d0215e1825bb62f29f4c0c054

Authored by Antonio Terceiro
1 parent 7d06b77b

Support compiling translations without Rails environment

$ rake -f Rakefile.translations

The above invocation will work without a full rails environment, which
requires a config/database.yml, an actual database to connect to, plus
loading all the Rails stack which is painfully slow.

This can now be used by distribution packages to compile translations
during package build without worrying much.
Rakefile.translations 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +# This Rakefile is intentionally independent from Rails to it can be used to
  2 +# handle translations without having to load the entire Rails environment
  3 +# (which is slow, requires a database connection and several other
  4 +# inconveniences).
  5 +
  6 +$: << 'lib'
  7 +load 'lib/tasks/gettext.rake'
  8 +load 'lib/tasks/doc.rake'
  9 +load 'lib/tasks/translation.rake'
  10 +
  11 +task :default => 'noosfero:translations:compile'
lib/noosfero/version.rb
@@ -3,6 +3,7 @@ module Noosfero @@ -3,6 +3,7 @@ module Noosfero
3 VERSION = '1.1~rc1' 3 VERSION = '1.1~rc1'
4 end 4 end
5 5
6 -if File.exist?(File.join(Rails.root, '.git'))  
7 - Noosfero::VERSION.clear << Dir.chdir(Rails.root) { `git describe --tags`.strip } 6 +root = File.expand_path(File.dirname(__FILE__) + '/../..')
  7 +if File.exist?(File.join(root, '.git'))
  8 + Noosfero::VERSION.clear << Dir.chdir(root) { `git describe --tags`.strip }
8 end 9 end
lib/tasks/doc.rake
  1 +require 'noosfero'
  2 +require 'pathname'
  3 +
1 namespace :noosfero do 4 namespace :noosfero do
2 namespace :doc do 5 namespace :doc do
3 def plugins_textiles 6 def plugins_textiles
@@ -9,8 +12,9 @@ namespace :noosfero do @@ -9,8 +12,9 @@ namespace :noosfero do
9 end 12 end
10 end 13 end
11 task :unlink_plugins_textiles do 14 task :unlink_plugins_textiles do
12 - rm_f Dir.glob(Rails.root.join('doc/noosfero/plugins/*.textile')) -  
13 - [Rails.root.join('doc/noosfero/plugins/index.textile')] 15 + root = Pathname.new(File.dirname(__FILE__) + '/../..').expand_path
  16 + rm_f Dir.glob(root.join('doc/noosfero/plugins/*.textile')) -
  17 + [root.join('doc/noosfero/plugins/index.textile')]
14 end 18 end
15 input = Dir.glob('doc/noosfero/**/*.textile') + plugins_textiles.map{|i| "doc/noosfero/plugins/#{File.basename(i)}"} 19 input = Dir.glob('doc/noosfero/**/*.textile') + plugins_textiles.map{|i| "doc/noosfero/plugins/#{File.basename(i)}"}
16 topics_xhtml = input.map { |item| item.sub('.textile', '.en.xhtml') }.uniq 20 topics_xhtml = input.map { |item| item.sub('.textile', '.en.xhtml') }.uniq
lib/tasks/gettext.rake
@@ -2,6 +2,8 @@ @@ -2,6 +2,8 @@
2 # Added for Ruby-GetText-Package 2 # Added for Ruby-GetText-Package
3 # 3 #
4 4
  5 +require 'pathname'
  6 +
5 makemo_stamp = 'tmp/makemo.stamp' 7 makemo_stamp = 'tmp/makemo.stamp'
6 desc "Create mo-files for L10n" 8 desc "Create mo-files for L10n"
7 task :makemo => makemo_stamp 9 task :makemo => makemo_stamp
@@ -37,14 +39,15 @@ task :symlinkmo do @@ -37,14 +39,15 @@ task :symlinkmo do
37 langmap = { 39 langmap = {
38 'pt' => 'pt_BR', 40 'pt' => 'pt_BR',
39 } 41 }
40 - mkdir_p(Rails.root.join('locale'))  
41 - Dir.glob(Rails.root.join('po/*/')).each do |dir| 42 + root = Pathname.new(File.dirname(__FILE__) + '/../..').expand_path
  43 + mkdir_p(root.join('locale'))
  44 + Dir.glob(root.join('po/*/')).each do |dir|
42 lang = File.basename(dir) 45 lang = File.basename(dir)
43 orig_lang = langmap[lang] || lang 46 orig_lang = langmap[lang] || lang
44 - mkdir_p(Rails.root.join('locale', "#{lang}", 'LC_MESSAGES')) 47 + mkdir_p(root.join('locale', "#{lang}", 'LC_MESSAGES'))
45 ['iso_3166'].each do |domain| 48 ['iso_3166'].each do |domain|
46 origin = "/usr/share/locale/#{orig_lang}/LC_MESSAGES/#{domain}.mo" 49 origin = "/usr/share/locale/#{orig_lang}/LC_MESSAGES/#{domain}.mo"
47 - target = Rails.root.join('locale', "#{lang}", 'LC_MESSAGES', "#{domain}.mo") 50 + target = root.join('locale', "#{lang}", 'LC_MESSAGES', "#{domain}.mo")
48 if !File.symlink?(target) 51 if !File.symlink?(target)
49 ln_s origin, target 52 ln_s origin, target
50 end 53 end
lib/tasks/translation.rake
@@ -5,7 +5,7 @@ namespace :noosfero do @@ -5,7 +5,7 @@ namespace :noosfero do
5 task :update => ['updatepo', 'noosfero:doc:rebuild'] 5 task :update => ['updatepo', 'noosfero:doc:rebuild']
6 6
7 desc 'Compiles all translations' 7 desc 'Compiles all translations'
8 - task :compile => ['makemo', 'environment', 'noosfero:doc:translate'] 8 + task :compile => ['makemo', 'noosfero:doc:translate']
9 9
10 end 10 end
11 end 11 end