diff --git a/lib/tasks/gettext.rake b/lib/tasks/gettext.rake index b3c3b9ced..f883091b7 100644 --- a/lib/tasks/gettext.rake +++ b/lib/tasks/gettext.rake @@ -8,21 +8,27 @@ if gettext_find_task namespace :gettext do task :store_action_names => :environment do storage_file = "#{locale_path}/action_names.rb" - klasses = Actions::EntryAction - .subclasses - .uniq - .select do |action| - src, = Object.const_source_location(action.to_s) - src.start_with? @engine.root.to_s + method_names = [:plan, :run, :finalize] + instances = Actions::EntryAction + .descendants + .uniq + .map(&:allocate) + .select do |action| + method_names.any? do |method_name| + if action.respond_to?(method_name) + src, = action.method(method_name).source_location + src.start_with? @engine.root.to_s + end + end end - if klasses.any? + if instances.any? puts "writing action translations to: #{storage_file}" File.write storage_file, "# Autogenerated!\n" + - klasses - .map { |klass| %[_("#{klass.allocate.humanized_name}")] } + instances + .map { |instance| %[_("#{instance.humanized_name}")] } .sort .join("\n") + "\n" elsif File.exist? storage_file