Class: R18n::Untranslated

Inherits:
Object
  • Object
show all
Defined in:
lib/r18n-core/untranslated.rb

Overview

Return if translation isn’t exists. Unlike nil, it didn’t raise error when you try to access for subtranslations.

You can set format to print untranslated string by filters. For example: Disable standart output:

R18n::Filters.off(:untranslated)

For development environment:

R18n::Filters.add(R18n::Untranslated, :untranslated_html) do
  |content, config, translated_path, untranslated_path, path|
  "#{translated_path}<span style='color: red'>#{untranslated_path}</span>"
end

For production environment:

R18n::Filters.add(R18n::Untranslated, :hide_untranslated) { '' }

Constant Summary collapse

NON_KEYS_METHODS =
%i[
  to_ary
  to_hash
  marshal_dump
  marshal_load
].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(translated_path, untranslated_path, locale, filters) ⇒ Untranslated

Returns a new instance of Untranslated.



49
50
51
52
53
54
# File 'lib/r18n-core/untranslated.rb', line 49

def initialize(translated_path, untranslated_path, locale, filters)
  @translated_path   = translated_path
  @untranslated_path = untranslated_path
  @locale            = locale
  @filters           = filters
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *_params) ⇒ Object



83
84
85
86
87
88
# File 'lib/r18n-core/untranslated.rb', line 83

def method_missing(name, *_params)
  # It is need to fix some hack in specs
  return super if NON_KEYS_METHODS.include?(name)

  self[name]
end

Instance Attribute Details

#localeObject (readonly)

Main locale, where string was try to find



47
48
49
# File 'lib/r18n-core/untranslated.rb', line 47

def locale
  @locale
end

#translated_pathObject (readonly)

Path, that exists in translation.



44
45
46
# File 'lib/r18n-core/untranslated.rb', line 44

def translated_path
  @translated_path
end

#untranslated_pathObject (readonly)

Path, that isn’t in translation.



41
42
43
# File 'lib/r18n-core/untranslated.rb', line 41

def untranslated_path
  @untranslated_path
end

Class Method Details

._load(str) ⇒ Object

Load object from Marshalizing.



71
72
73
74
# File 'lib/r18n-core/untranslated.rb', line 71

def self._load(str)
  arr = str.split(':', 3)
  new arr[1], arr[2], R18n.locale(arr[0]), GlobalFilterList.instance
end

Instance Method Details

#==(other) ⇒ Object

Is another locale has same code.



119
120
121
122
123
124
125
126
# File 'lib/r18n-core/untranslated.rb', line 119

def ==(other)
  return false unless other.is_a? Untranslated
  return false unless locale            == other.locale
  return false unless translated_path   == other.translated_path
  return false unless untranslated_path == other.untranslated_path

  true
end

#[](*params) ⇒ Object



96
97
98
99
100
101
102
103
# File 'lib/r18n-core/untranslated.rb', line 96

def [](*params)
  Untranslated.new(
    translated_path,
    "#{@untranslated_path}.#{params.first}",
    @locale,
    @filters
  )
end

#_dump(_limit) ⇒ Object

Override marshal_dump to avoid Marshalizing filter procs



66
67
68
# File 'lib/r18n-core/untranslated.rb', line 66

def _dump(_limit)
  [@locale.code, @translated_path, @untranslated_path].join(':')
end

#pathObject

Path to translation.



57
58
59
# File 'lib/r18n-core/untranslated.rb', line 57

def path
  "#{@translated_path}#{@untranslated_path}"
end

#respond_to_missing?(name, *args) ⇒ Boolean

Returns:

  • (Boolean)


90
91
92
93
94
# File 'lib/r18n-core/untranslated.rb', line 90

def respond_to_missing?(name, *args)
  return super if NON_KEYS_METHODS.include?(name)

  true
end

#to_sObject Also known as: to_str



109
110
111
112
113
114
# File 'lib/r18n-core/untranslated.rb', line 109

def to_s
  @filters.process(
    :all, Untranslated, path, @locale, path,
    [@translated_path, @untranslated_path, path]
  ).to_s
end

#translated?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/r18n-core/untranslated.rb', line 61

def translated?
  false
end

#|(other) ⇒ Object



105
106
107
# File 'lib/r18n-core/untranslated.rb', line 105

def |(other)
  other
end