Module: UaEnv::Transliteration::ISO9

Defined in:
lib/transliteration/iso9.rb

Overview

Норма ISO 9, 1995 р. Зокрема, застосовується в Німеччині для обов‘язкового транслітерування українських прізвищ та імен в офіційних документах (паперів при виїзді з України в Німеччину для постійного проживання). Приклад транслітерації: «Олександр Віталійович Рибальченко» = “Oleksandr Vìtalìjovič Ribal´čenko”

Constant Summary collapse

UA_UPPER =
%w{ А Б В Г Ґ Д Е Є Ж З И І Ї Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ю Я Ь ' }
UA_LOWER =
%w{ а б в г ґ д е є ж з и і ї й к л м н о п р с т у ф х ц ч ш щ ю я ь ' }
UA =
UA_LOWER + UA_UPPER
ISO9_LOWER =
['a', 'b', 'v', 'g', 'ģ', 'd', 'e', 'ê', 'ž', 'z', 'i', 'ì', 'ï', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'č', 'š', 'ŝ', 'û', 'â', '´', '"']
ISO9_UPPER =

VIM : select text and gU

['A', 'B', 'V', 'G', 'Ģ', 'D', 'E', 'Ê', 'Ž', 'Z', 'I', 'Ì', 'Ï', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Č', 'Š', 'Ŝ', 'Û', 'Â', '´', '"']
ISO9 =
ISO9_LOWER + ISO9_UPPER
TABLE =
{}

Class Method Summary collapse

Class Method Details

.translify(str) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/transliteration/iso9.rb', line 23

def self.translify(str)
  chars = str.split(//)

  result = ''
  chars.each_with_index do |char, index|
    variant = (index != 0 ? ( chars[index - 1] == " " ? 1 : 0 ) : 1) # Воно ту нафік не здалось :)

    if UA_UPPER.include?(char) && UA_LOWER.include?(chars[index+1])
      # "Яна" => "Âna"
      ch = (TABLE[char].is_a?(Array) ? TABLE[char][variant].downcase.capitalize : TABLE[char].downcase.capitalize)
      result << ch

    elsif UA_UPPER.include?(char)
      # "ЯНА" => "ÂNA"
      ch = (TABLE[char].is_a?(Array) ? TABLE[char][variant] : TABLE[char] )
      result << ch

    elsif UA_LOWER.include?(char)
      # "яна" => "âna"
      ch = (TABLE[char].is_a?(Array) ? TABLE[char][variant] : TABLE[char] )
      result << ch

    else
      result << char
    end

  end
  return result
end