class Tr8n::Decorators::Html

Public Instance Methods

decorate(translated_label, translation_language, target_language, translation_key, options = {}) click to toggle source
# File lib/tr8n/decorators/html.rb, line 35
def decorate(translated_label, translation_language, target_language, translation_key, options = {})
  #Tr8n.logger.info("Decorating #{translated_label} of #{translation_language.locale} to #{target_language.locale}")

  # skip decoration if instructed so
  return translated_label if options[:skip_decorations]

  # if translation key language is the same as target language - skip decorations
  return translated_label if translation_key.language == target_language
  return translated_label unless inline_mode?
  return translated_label if translation_key.locked? and not Tr8n.session.current_translator.manager?

  classes = %w(tr8n_translatable)
  
  if translation_key.locked?
    # must be a manager and enabling locking feature
    # return translated_label unless Tr8n.session.current_translator.feature_enabled?(:show_locked_keys)
    classes << 'tr8n_locked'
  elsif translation_language == translation_key.language
    classes << 'tr8n_not_translated'
  elsif translation_language == target_language
    classes << 'tr8n_translated'
  else
    classes << 'tr8n_fallback'
  end

  element = 'span'
  element = 'div' if options[:use_div]

  html = "<#{element} class='#{classes.join(' ')}' data-translation_key='#{translation_key.key}' data-target_locale='#{target_language.locale}'>"
  html << translated_label
  html << "</#{element}>"
  html
end
decorate_language_case(language_case, rule, original, transformed, options = {}) click to toggle source
# File lib/tr8n/decorators/html.rb, line 69
def decorate_language_case(language_case, rule, original, transformed, options = {})
  return transformed if options[:skip_decorations] or language_case.language.default?
  return transformed unless inline_mode?

  data = {
    'keyword'       => language_case.keyword,
    'language_name' => language_case.language.english_name,
    'latin_name'    => language_case.latin_name,
    'native_name'   => language_case.native_name,
    'conditions'    => (rule ? rule.conditions : ''),
    'operations'    => (rule ? rule.operations : ''),
    'original'      => original,
    'transformed'   => transformed
  }

  attrs = []
  {
    'class'             => 'tr8n_language_case',
    'data-locale'       => language_case.language.locale,
    'data-rule'         => CGI::escape(Base64.encode64(data.to_json).gsub("\n", ''))
  }.each do |key, value|
    attrs << "#{key}=\"#{value.to_s.gsub('"', "\"")}\""
  end

  element = 'span'
  element = 'div' if options[:use_div]

  html = "<#{element} #{attrs.join(' ')}>"
  html << transformed
  html << "</#{element}>"
  html
end