metadata {

authority_id: bgnpcgn
id: 1947
language: iso-639-2:rus
source_script: Cyrl
destination_script: Latn
name: Romanization of Russian (1947)
url: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/807920/ROMANIZATION_OF_RUSSIAN.pdf
creation_date: 1947
confirmation_date: 2019-06
description: |
  The BGN/PCGN system for Russian was adopted by the BGN in 1944 and by the
  PCGN in 1947 for use in romanizing names written in the Russian Cyrillic
  alphabet.

notes:
  - The character e should be romanized ye initially, after the vowel
    characters a, e, ё, и, о, у, ы, э, ю, and я, and after й, ъ, and ь. In
    all other instances, it should be romanized e.

  - The character ё is not considered a separate character of the
    Russian alphabet and the dieresis is generally not shown. When the
    dieresis is shown, the character should be romanized yë initially,
    after the vowel characters a, e, ё, и, о, у, ы, э, ю, and я, and after
    й, ъ, and ь. In all other instances, it should be romanized ё. When the
    dieresis is not shown, the character may still be romanized in the
    preceding manner or, alternatively, in accordance with note 1.

  - |
    Unusual Russian character sequences occurring primarily in
    non-Russian-language names may be romanized as shown below in order to
    provide differentiation from regularly- occurring digraphs and
    character sequences.
      й before а, у, ы, or э у·
      ы before а, у, ы, or э у·
      ы after any vowel character ·у
      э after any consonant character except й ·е
      TC t·s шч sh·ch

  - Unicode values are shown with the uppercase Cyrillic character first,
    followed by the lowercase character.

  - |
    An inventory of letter-diacritic combinations, with their Unicode
    encoding, in addition to the unmodified letters of the basic Roman
    script is:
      All apostrophes appearing in romanization are U+2019 Ë (U+00CB)
      ë (U+00EB)
  - The Romanization column shows only lowercase forms but, when
    romanizing, uppercase and lowercase Roman letters as appropriate should
    be used.

}

tests {

test "Выборы депутатов Государственной Думы Федерального Собрания Российской Федерации седьмого созыва\nДата голосования: 18.09.2016\n\nНаименование Избирательной комиссии:    ЦИК России\n\nСводная таблица результатов выборов по федеральному избирательному округу\n\n\nЧисло избирателей, внесенных в список избирателей на момент окончания голосования\nЧисло избирательных бюллетеней, полученных участковой избирательной комиссией\nЧисло избирательных бюллетеней, выданных избирателям, проголосовавшим досрочно\nЧисло избирательных бюллетеней, выданных в помещении для голосования в день голосования\nЧисло избирательных бюллетеней, выданных вне помещения для голосования в день голосования\nЧисло погашенных избирательных бюллетеней\nЧисло избирательных бюллетеней, содержащихся в переносных ящиках для голосования\nЧисло избирательных бюллетеней, содержащихся в стационарных ящиках для голосования\nЧисло недействительных избирательных бюллетеней\nЧисло действительных избирательных бюллетеней\nЧисло открепительных удостоверений, полученных участковой избирательной комиссией\nЧисло открепительных удостоверений, выданных на избирательном участке до дня голосования\nЧисло избирателей, проголосовавших по открепительным удостоверениям на избирательном участке\nЧисло погашенных неиспользованных открепительных удостоверений\nЧисло открепительных удостоверений, выданных избирателям территориальной избирательной комиссией\nЧисло утраченных открепительных удостоверений\nЧисло утраченных избирательных бюллетеней\nЧисло избирательных бюллетеней, не учтенных при получении\n1. ВСЕРОССИЙСКАЯ ПОЛИТИЧЕСКАЯ ПАРТИЯ \"РОДИНА\"\n2. Политическая партия КОММУНИСТИЧЕСКАЯ ПАРТИЯ КОММУНИСТЫ РОССИИ\n3. Политическая партия \"Российская партия пенсионеров за справедливость\"\n4. Всероссийская политическая партия \"ЕДИНАЯ РОССИЯ\"\n5. Политическая партия \"Российская экологическая партия \"Зеленые\"\n6. Политическая партия \"Гражданская Платформа\"\n7. Политическая партия ЛДПР - Либерально-демократическая партия России\n8. Политическая партия \"Партия народной свободы\" (ПАРНАС)\n9. Всероссийская политическая партия \"ПАРТИЯ РОСТА\"\n10. Общественная организация Всероссийская политическая партия \"Гражданская Сила\"\n11. Политическая партия \"Российская объединенная демократическая партия \"ЯБЛОКО\"\n12. Политическая партия \"КОММУНИСТИЧЕСКАЯ ПАРТИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ\"\n13. Политическая партия \"ПАТРИОТЫ РОССИИ\"\n14. Политическая партия СПРАВЕДЛИВАЯ РОССИЯ\n\nДанные окружных избирательных комиссий о числе открепительных удостоверений\n\n\nЧисло открепительных удостоверений, полученных окружной избирательной комиссией\nЧисло открепительных удостоверений, выданных территориальным избирательным комиссиям\nЧисло неиспользованных открепительных удостоверений, погашенных окружной избирательной комиссией\nЧисло открепительных удостоверений, утраченных в окружной избирательной комиссии", "Vybory deputatov Gosudarstvennoy Dumy Federal’nogo Sobraniya Rossiyskoy Federatsii sed’mogo sozyva\nData golosovaniya: 18.09.2016\n\nNaimenovaniye Izbiratel’noy komissii:    TSIK Rossii\n\nSvodnaya tablitsa rezul’tatov vyborov po federal’nomu izbiratel’nomu okrugu\n\n\nChislo izbirateley, vnesennykh v spisok izbirateley na moment okonchaniya golosovaniya\nChislo izbiratel’nykh byulleteney, poluchennykh uchastkovoy izbiratel’noy komissiyey\nChislo izbiratel’nykh byulleteney, vydannykh izbiratelyam, progolosovavshim dosrochno\nChislo izbiratel’nykh byulleteney, vydannykh v pomeshchenii dlya golosovaniya v den’ golosovaniya\nChislo izbiratel’nykh byulleteney, vydannykh vne pomeshcheniya dlya golosovaniya v den’ golosovaniya\nChislo pogashennykh izbiratel’nykh byulleteney\nChislo izbiratel’nykh byulleteney, soderzhashchikhsya v perenosnykh yashchikakh dlya golosovaniya\nChislo izbiratel’nykh byulleteney, soderzhashchikhsya v statsionarnykh yashchikakh dlya golosovaniya\nChislo nedeystvitel’nykh izbiratel’nykh byulleteney\nChislo deystvitel’nykh izbiratel’nykh byulleteney\nChislo otkrepitel’nykh udostovereniy, poluchennykh uchastkovoy izbiratel’noy komissiyey\nChislo otkrepitel’nykh udostovereniy, vydannykh na izbiratel’nom uchastke do dnya golosovaniya\nChislo izbirateley, progolosovavshikh po otkrepitel’nym udostovereniyam na izbiratel’nom uchastke\nChislo pogashennykh neispol’zovannykh otkrepitel’nykh udostovereniy\nChislo otkrepitel’nykh udostovereniy, vydannykh izbiratelyam territorial’noy izbiratel’noy komissiyey\nChislo utrachennykh otkrepitel’nykh udostovereniy\nChislo utrachennykh izbiratel’nykh byulleteney\nChislo izbiratel’nykh byulleteney, ne uchtennykh pri poluchenii\n1. VSEROSSIYSKAYA POLITICHESKAYA PARTIYA \"RODINA\"\n2. Politicheskaya partiya KOMMUNISTICHESKAYA PARTIYA KOMMUNISTY ROSSII\n3. Politicheskaya partiya \"Rossiyskaya partiya pensionerov za spravedlivost’\"\n4. Vserossiyskaya politicheskaya partiya \"YEDINAYA ROSSIYA\"\n5. Politicheskaya partiya \"Rossiyskaya ekologicheskaya partiya \"Zelenyye\"\n6. Politicheskaya partiya \"Grazhdanskaya Platforma\"\n7. Politicheskaya partiya LDPR - Liberal’no-demokraticheskaya partiya Rossii\n8. Politicheskaya partiya \"Partiya narodnoy svobody\" (PARNAS)\n9. Vserossiyskaya politicheskaya partiya \"PARTIYA ROSTA\"\n10. Obshchestvennaya organizatsiya Vserossiyskaya politicheskaya partiya \"Grazhdanskaya Sila\"\n11. Politicheskaya partiya \"Rossiyskaya ob\"yedinennaya demokraticheskaya partiya \"YABLOKO\"\n12. Politicheskaya partiya \"KOMMUNISTICHESKAYA PARTIYA ROSSIYSKOY FEDERATSII\"\n13. Politicheskaya partiya \"PATRIOTY ROSSII\"\n14. Politicheskaya partiya SPRAVEDLIVAYA ROSSIYA\n\nDannyye okruzhnykh izbiratel’nykh komissiy o chisle otkrepitel’nykh udostovereniy\n\n\nChislo otkrepitel’nykh udostovereniy, poluchennykh okruzhnoy izbiratel’noy komissiyey\nChislo otkrepitel’nykh udostovereniy, vydannykh territorial’nym izbiratel’nym komissiyam\nChislo neispol’zovannykh otkrepitel’nykh udostovereniy, pogashennykh okruzhnoy izbiratel’noy komissiyey\nChislo otkrepitel’nykh udostovereniy, utrachennykh v okruzhnoy izbiratel’noy komissii"
test "ДЛИННОЕ ПОКРЫВАЛО", "DLINNOYE POKRYVALO"
test "Еловая шишка", "Yelovaya shishka"
test "ЕЛОВАЯ ШИШКА", "YELOVAYA SHISHKA"
test "Длинное покрывало", "Dlinnoye pokryvalo"
test "В лесу еловые шишки", "V lesu yelovyye shishki"
test "OН ВИДЕЛ ЕЁ В ПЕРВЫЙ РАЗ", "ON VIDEL YEYË V PERVYY RAZ"
test "Ёж колючий", "Yëzh kolyuchiy"
test "ЁЖ КОЛЮЧИЙ", "YËZH KOLYUCHIY"
test "Он видел её в первый раз", "On videl yeyë v pervyy raz"
test "У ёжа колючки", "U yëzha kolyuchki"
test "ЙА Йа йа", "Y·A Y·a y·a"
test "ЫУ Ыу ыу", "Y·U Y·u y·u"
test "ОЫ Оы оы", "O·Y O·y o·y"
test "ОЫУ Оыу оыу", "O·Y·U O·y·u o·y·u"
test "СЭ Сэ сэ", "S·E S·e s·e"
test "ТС тс Тс тС", "T·S t·s T·s t·S"
test "ШЧ шч Шч шЧ", "SH·CH sh·ch Sh·ch sh·Ch"

}

aliases {

def_alias rus_extvowel, any("АаЕеЁёИиОоУуЫыЭэЮюЯяЙйЪъЬь")
def_alias rus_vowel, any("АаЕеЁёИиОоУуЫыЭэЮюЯя")
def_alias rus_limvowel, any("АаУуЫыЭэ")
def_alias rus_cons, any("БбВвГгДдЖжЗзКкЛлМмНнПпРрСсТтФфХхЦцЧчШшЩщ")

def_alias rus_latupper, any([any("A".."Z"), any("Ë")])

def_alias rus_multichar, any(["Ye", "Yë", "Sh", "Ch", "Shch", "Ya", "Zh", "Yu", "Ts"])

}

stage {

# RULES
sub "\u0401", "Yë", before: rus_extvowel # Ё after a, e, ё, и, о, у, ы, э, ю, я, й, ъ, ь
sub "\u0451", "yë", before: rus_extvowel # ё after a, e, ё, и, о, у, ы, э, ю, я, й, ъ, ь
sub "\u0415", "YЕ", before: rus_extvowel # Е after a, e, ё, и, о, у, ы, э, ю, я, й, ъ, ь
sub "\u0415", "Yе", before: boundary # Е initially
sub "\u0435", "yе", before: rus_extvowel # е after a, e, ё, и, о, у, ы, э, ю, я, й, ъ, ь
sub "\u0435", "yе", before: boundary # е initially
sub "\u0401", "Yë", before: rus_extvowel # Ё after a, e, ё, и, о, у, ы, э, ю, я, й, ъ, ь
sub "\u0401", "Yë", before: boundary
sub "\u0451", "yë", before: rus_extvowel # ё after a, e, ё, и, о, у, ы, э, ю, я, й, ъ, ь
sub "\u0451", "yë", before: boundary
sub "\u0419", "Y·", after: rus_limvowel # Й before а, у, ы, or э
sub "\u0439", "y·", after: rus_limvowel # й before а, у, ы, or э
sub "\u042b", "·Y·", before: rus_vowel, after: rus_limvowel # Ы after any vowel character and before а, у, ы, or э
sub "\u044b", "·y·", before: rus_vowel, after: rus_limvowel # ы after any vowel character and before а, у, ы, or э
sub "\u042b", "Ы·", after: rus_limvowel # Ы before а, у, ы, or э
sub "\u044b", "ы·", after: rus_limvowel # ы before а, у, ы, or э
sub "\u042b", "·Y", before: any("Оо") # Ы after о
sub "\u044b", "·y", before: any("Оо") # ы after о
sub "\u0401", "Yë", before: boundary
sub "\u0451", "yë", before: boundary
sub "\u042d", "·E", before: rus_cons # Э after any consonant character except й
sub "\u044d", "·e", before: rus_cons # э after any consonant character except й
sub none, "·", before: any("Тт"), after: any("Сс") # тс => t·s
sub none, "·", before: any("Шш"), after: any("Чч") # шч => sh·ch

# CHARACTERS
parallel {
  sub "А", "A"
  sub "Б", "B"
  sub "В", "V"
  sub "Г", "G"
  sub "Д", "D"
  sub "Е", "E"
  sub "Ё", "Ë" # Ё
  sub "Ж", "Zh"
  sub "З", "Z"
  sub "И", "I"
  sub "Й", "Y"
  sub "К", "K"
  sub "Л", "L"
  sub "М", "M"
  sub "Н", "N"
  sub "О", "O"
  sub "П", "P"
  sub "Р", "R"
  sub "С", "S"
  sub "Т", "T"
  sub "У", "U"
  sub "Ф", "F"
  sub "Х", "Kh"
  sub "Ц", "Ts"
  sub "Ч", "Ch"
  sub "Ш", "Sh"
  sub "Щ", "Shch"
  sub "Ъ", "\"" # Ъ
  sub "Ы", "Y"
  sub "Ь", "’" # Ь => ’
  sub "Э", "E"
  sub "Ю", "Yu"
  sub "Я", "Ya"
  sub "а", "a"
  sub "б", "b"
  sub "в", "v"
  sub "г", "g"
  sub "д", "d"
  sub "е", "e"
  sub "ё", "ë" # ё
  sub "ж", "zh"
  sub "з", "z"
  sub "и", "i"
  sub "й", "y"
  sub "к", "k"
  sub "л", "l"
  sub "м", "m"
  sub "н", "n"
  sub "о", "o"
  sub "п", "p"
  sub "р", "r"
  sub "с", "s"
  sub "т", "t"
  sub "у", "u"
  sub "ф", "f"
  sub "х", "kh"
  sub "ц", "ts"
  sub "ч", "ch"
  sub "ш", "sh"
  sub "щ", "shch"
  sub "ъ", "\"" # ъ
  sub "ы", "y"
  sub "ь", "’" # ь => ’
  sub "э", "e"
  sub "ю", "yu"
  sub "я", "ya"
}

# POSTRULES
sub rus_multichar, upcase, before: rus_latupper
sub rus_multichar, upcase, before: rus_latupper + "·"
sub rus_multichar, upcase, after: "·" + rus_latupper
sub rus_multichar, upcase, after: rus_latupper

# Run twice to find more cases
sub rus_multichar, upcase, before: rus_latupper
sub rus_multichar, upcase, before: rus_latupper + "·"
sub rus_multichar, upcase, after: "·" + rus_latupper
sub rus_multichar, upcase, after: rus_latupper

}