﻿# © 2016 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html#License
#
# File: mn_mn_Latn_BGN.txt
# Generated from CLDR
#

########################################################################
# BGN/PCGN 1964 System
#
# The BGN/PCGN system for Mongolian was adopted by the BGN in 1957
# and by the PCGN in 1964 for use in romanizing names written in
# the Mongolian Cyrillic alphabet. The Mongolian Cyrillic alphabet
# contains two letters not present in the Russian alphabet, Өө
# and Үү. Names written in the indigenous Mongolian alphabet, which
# is still utilized in the Inner Mongolia Autonomous Region of China,
# are not romanized by BGN and PCGN. Instead, for such names,
# BGN and PCGN utilize the Roman-script spellings appearing in
# official sources published by the People's Republic of China
#
# The Mongolian Alphabet as defined by the BGN (Page 73):
#
#   АБВГДЕЁЖЗИЙКЛМНОӨПРСТУҮФХЦЧШЩЪЫЬЭЮЯ
#   абвгдеёжзийклмноөпрстуүфхцчшщъыьэюя
#
# Originally prepared by Michael Everson <everson@evertype.com>
########################################################################
#
# MINIMAL FILTER: Mongolian-Latin, works both in NFC and NFD
::[АБВГДЕЁЖЗИЙКЛМНОӨПРСТУҮФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмноөпрстуүфхцчшщъыьэюя\u0308];
::NFC;
########################################################################
#
# Define All Transformation Variables
#
########################################################################
#
$prime  = ʹ ;
$upperConsonants = [БВГДЖЙКЛМНПРСТФХЦЧШЩЭ] ;
$lowerConsonants = [бвгджйклмнпрстфхцчшщэ] ;
$consonants = [$upperConsonants $lowerConsonants] ;
$upperVowels = [АЕЁЭИОУЫЮЯ] ;
$lowerVowels = [аеёэиоуыюя] ;
$vowels = [$upperVowels $lowerVowels] ;
$lower = [$lowerConsonants $lowerVowels] ;
# Use this $wordBoundary until bug 2034 is fixed in ICU:
# http://bugs.icu-project.org/cgi-bin/icu-bugs/transliterate?id=2034;expression=boundary;user=guest
$wordBoundary =  [^[:L:][:M:][:N:]] ;
########################################################################
# Start of Alphabetic Transformations
########################################################################
А → A ; # CYRILLIC CAPITAL LETTER A
а → a ; # CYRILLIC SMALL LETTER A
Б → B ; # CYRILLIC CAPITAL LETTER BE
б → b ; # CYRILLIC SMALL LETTER BE
В → V ; # CYRILLIC CAPITAL LETTER VE
в → v ; # CYRILLIC SMALL LETTER VE
Г → G ; # CYRILLIC CAPITAL LETTER GHE
г → g ; # CYRILLIC SMALL LETTER GHE
Д → D ; # CYRILLIC CAPITAL LETTER DE
д → d ; # CYRILLIC SMALL LETTER DE
Е} $lower → Yö ; # CYRILLIC CAPITAL LETTER IE
Е → YÖ ; # CYRILLIC CAPITAL LETTER IE
е → yö ; # CYRILLIC SMALL LETTER IE
Ё} $lower → Yo ; # CYRILLIC CAPITAL LETTER IO
Ё → YO ; # CYRILLIC CAPITAL LETTER IO
ё → yo ; # CYRILLIC SMALL LETTER IO
Ж → J ; # CYRILLIC CAPITAL LETTER ZHE
ж → j ; # CYRILLIC SMALL LETTER ZHE
З} $lower → Dz ; # CYRILLIC CAPITAL LETTER ZE
З → DZ ; # CYRILLIC CAPITAL LETTER ZE
з → dz ; # CYRILLIC SMALL LETTER ZE
И → I ; # CYRILLIC CAPITAL LETTER I
и → i ; # CYRILLIC SMALL LETTER I
Й → Y ; # CYRILLIC CAPITAL LETTER I
й → y ; # CYRILLIC SMALL LETTER I
К → K ; # CYRILLIC CAPITAL LETTER KA
к → k ; # CYRILLIC SMALL LETTER KA
Л → L ; # CYRILLIC CAPITAL LETTER EL
л → l ; # CYRILLIC SMALL LETTER EL
М → M ; # CYRILLIC CAPITAL LETTER EM
м → m ; # CYRILLIC SMALL LETTER EM
Н → N ; # CYRILLIC CAPITAL LETTER EN
н → n ; # CYRILLIC SMALL LETTER EN
О → O ; # CYRILLIC CAPITAL LETTER O
о → o ; # CYRILLIC SMALL LETTER O
Ө → Ö ; # CYRILLIC CAPITAL LETTER BARRED O
ө → ö ; # CYRILLIC SMALL LETTER BARRED O
П → P ; # CYRILLIC CAPITAL LETTER PE
п → p ; # CYRILLIC SMALL LETTER PE
Р → R ; # CYRILLIC CAPITAL LETTER ER
р → r ; # CYRILLIC SMALL LETTER ER
С → S ; # CYRILLIC CAPITAL LETTER ES
с → s ; # CYRILLIC SMALL LETTER ES
Т → T ; # CYRILLIC CAPITAL LETTER TE
т → t ; # CYRILLIC SMALL LETTER TE
У → U ; # CYRILLIC CAPITAL LETTER U
у → u ; # CYRILLIC SMALL LETTER U
Ү → Ü ; # CYRILLIC CAPITAL LETTER STRAIGHT U
ү → ü ; # CYRILLIC SMALL LETTER STRAIGHT U
Ф → F ; # CYRILLIC CAPITAL LETTER EF
ф → f ; # CYRILLIC SMALL LETTER EF
Х → H ; # CYRILLIC CAPITAL LETTER HA
х → h ; # CYRILLIC SMALL LETTER HA
Ц} $lower → Ts ; # CYRILLIC CAPITAL LETTER TSE
Ц → TS ; # CYRILLIC CAPITAL LETTER TSE
ц → ts ; # CYRILLIC SMALL LETTER TSE
Ч} $lower → Ch ; # CYRILLIC CAPITAL LETTER CHE
Ч → CH ; # CYRILLIC CAPITAL LETTER CHE
ч → ch ; # CYRILLIC SMALL LETTER CHE
########################################################################
# Implied rule from BGN Russian-Latin transliteration (Page 94 Note 3.6).
# шч becomes sh·ch
########################################################################
ШЧ → SH·CH ; # CYRILLIC CAPITAL LETTER SHA
Шч → Sh·ch ; # CYRILLIC CAPITAL LETTER SHA
шч → sh·ch ; # CYRILLIC SMALL LETTER SHA
Ш} $lower → Sh ; # CYRILLIC CAPITAL LETTER SHA
Ш → SH ; # CYRILLIC CAPITAL LETTER SHA
ш → sh ; # CYRILLIC SMALL LETTER SHA
Щ} $lower → Shch ; # CYRILLIC CAPITAL LETTER SHCHA
Щ → SHCH ; # CYRILLIC CAPITAL LETTER SHCHA
щ → shch ; # CYRILLIC SMALL LETTER SHCHA
########################################################################
# End Implied rule
########################################################################
Ъ → $prime ; # CYRILLIC CAPITAL LETTER HARD SIGN
ъ → $prime ; # CYRILLIC SMALL LETTER HARD SIGN
Ы → Ï ; # CYRILLIC CAPITAL LETTER YERU
ы → ï ; # CYRILLIC SMALL LETTER YERU
Ь → Ĭ ; # CYRILLIC CAPITAL LETTER SOFT SIGN
ь → ĭ ; # CYRILLIC SMALL LETTER SOFT SIGN
Э → E ; # CYRILLIC CAPITAL LETTER E
э → e ; # CYRILLIC SMALL LETTER E
########################################################################
#
# BGN Page 74 Rule 7
#
# In monosyllables, the character ю is romanized yu or yü depending on
# pronunciation; in polysyllables, it is romanized yu when followed by
# a, o, or u, buy yü when followed by i, e, ö, or ü.
#
# This rule is lexical and has not been implemented in this file.
#
########################################################################
Ю} $lower → Yu ; # CYRILLIC CAPITAL LETTER YU
Ю → YU ; # CYRILLIC CAPITAL LETTER YU
ю → yu ; # CYRILLIC SMALL LETTER YU
########################################################################
#
# End Rule 7
#
########################################################################
Я} $lower → Ya ; # CYRILLIC CAPITAL LETTER YA
Я → YA ; # CYRILLIC CAPITAL LETTER YA
я → ya ; # CYRILLIC SMALL LETTER YA

