Class: GettextSimpleRails::Translators::GlobalizeTranslator

Inherits:
Object
  • Object
show all
Defined in:
lib/gettext_simple_rails/translators/globalize_translator.rb

Instance Method Summary collapse

Instance Method Details

#detected?Boolean

Returns:

  • (Boolean)


2
3
4
# File 'lib/gettext_simple_rails/translators/globalize_translator.rb', line 2

def detected?
  return ::Kernel.const_defined?("Globalize")
end

#translationsObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/gettext_simple_rails/translators/globalize_translator.rb', line 6

def translations
  @translations_hash = {
    "activerecord" => {
      "attributes" => {}
    }
  }
  attributes = @translations_hash["activerecord"]["attributes"]

  GettextSimpleRails::ModelInspector.model_classes do |inspector|
    next unless inspector.clazz.respond_to?(:globalize_migrator)

    class_lower_name = StringCases.camel_to_snake(inspector.clazz.name)
    translate_class_name = "#{inspector.clazz.name}::Translation"
    translate_class = translate_class_name.constantize

    id_column_name = "#{class_lower_name}_id"

    begin
      column_names = translate_class.column_names
    rescue ActiveRecord::StatementInvalid
      puts "GettextSimpleRails: Translator class could not be found: '#{translate_class_name}' - skipping translations for this class."
      next
    end

    translate_columns = column_names - ["id", "locale", "created_at", "updated_at", id_column_name]

    translate_columns.each do |column_name|
      attributes[class_lower_name] = {} unless attributes.key?(class_lower_name)
      attributes[class_lower_name][column_name] = column_name
    end
  end

  return @translations_hash
end