added support for i18n (candidate for the stdlib?)
This commit is contained in:
parent
e94071b077
commit
f9525dc646
2 changed files with 768 additions and 0 deletions
152
src/i18n.nim
Normal file
152
src/i18n.nim
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
## Karax -- Single page applications for Nim.
|
||||
|
||||
## i18n support for Karax applications. We distinguish between:
|
||||
##
|
||||
## - translate: Lookup text translations
|
||||
## - localize: Localize Date and Time objects to local formats
|
||||
##
|
||||
## Localization has not yet been implemented.
|
||||
|
||||
import languages, jdict, jstrutils
|
||||
|
||||
var currentLanguage = Language.enUS
|
||||
|
||||
proc getLanguage(): cstring =
|
||||
{.emit: "`result` = (navigator.languages && navigator.languages.length) ? navigator.languages[0] : navigator.language;".}
|
||||
|
||||
proc detectLanguage*(): Language =
|
||||
let x = getLanguage()
|
||||
for i in low(Language)..high(Language):
|
||||
if languageToCode[i] == x: return i
|
||||
return Language.enUS
|
||||
|
||||
proc setCurrentLanguage*(newLanguage = detectLanguage()) =
|
||||
currentLanguage = newLanguage
|
||||
|
||||
proc getCurrentLanguage*(): Language = currentLanguage
|
||||
|
||||
type Translation* = JDict[cstring, cstring]
|
||||
|
||||
var
|
||||
translations: array[Language, Translation]
|
||||
|
||||
proc registerTranslation*(lang: Language; t: Translation) = translations[lang] = t
|
||||
|
||||
proc addTranslation*(lang: Language; key, val: cstring) =
|
||||
if translations[lang].isNil: translations[lang] = newJDict[cstring, cstring]()
|
||||
translations[lang][key] = val
|
||||
|
||||
proc translate(x: cstring): cstring =
|
||||
let y = translations[currentLanguage]
|
||||
if y != nil and y.contains(x):
|
||||
result = y[x]
|
||||
else:
|
||||
result = x
|
||||
|
||||
type TranslatedString* = distinct cstring
|
||||
|
||||
template i18n*(x: string): TranslatedString = TranslatedString(translate(cstring x))
|
||||
|
||||
proc raiseInvalidFormat(errmsg: string) =
|
||||
raise newException(ValueError, errmsg)
|
||||
|
||||
discard """
|
||||
$[1:item|items]1$ selected.
|
||||
"""
|
||||
|
||||
proc `{}`(x: cstring; i: int): char {.importcpp: "#.charCodeAt(#)".}
|
||||
proc sadd(s: JSeq[char]; c: char) {.importcpp: "#.push(String.fromCharCode(#))".}
|
||||
|
||||
proc parseChoice(f: cstring; i, choice: int,
|
||||
r: JSeq[char]) =
|
||||
var i = i
|
||||
while i < f.len:
|
||||
var n = 0
|
||||
let oldI = i
|
||||
var toAdd = false
|
||||
while i < f.len and f{i} >= '0' and f{i} <= '9':
|
||||
n = n * 10 + ord(f{i}) - ord('0')
|
||||
inc i
|
||||
if oldI != i:
|
||||
if f{i} == ':':
|
||||
inc i
|
||||
else:
|
||||
raiseInvalidFormat"':' after number expected"
|
||||
toAdd = choice == n
|
||||
else:
|
||||
# an else section does not start with a number:
|
||||
toAdd = true
|
||||
while i < f.len and f{i} != ']' and f{i} != '|':
|
||||
if toAdd: r.sadd f{i}
|
||||
inc i
|
||||
if toAdd: break
|
||||
inc i
|
||||
|
||||
proc join(x: JSeq[char]): cstring {.importcpp: "#.join(\"\")".}
|
||||
proc add(x: JSeq[char]; y: cstring) =
|
||||
for i in 0..<y.len: x.sadd y{i}
|
||||
|
||||
proc `%`*(formatString: TranslatedString; args: openArray[cstring]): cstring =
|
||||
let f = cstring(formatString)
|
||||
var i = 0
|
||||
var num = 0
|
||||
var r = newJSeq[char]()
|
||||
while i < f.len:
|
||||
if f{i} == '$' and i+1 < f.len:
|
||||
inc i
|
||||
case f{i}
|
||||
of '#':
|
||||
r.add args[num]
|
||||
inc i
|
||||
inc num
|
||||
of '1'..'9', '-':
|
||||
var j = 0
|
||||
var negative = f{i} == '-'
|
||||
if negative: inc i
|
||||
while f{i} >= '0' and f{i} <= '9':
|
||||
j = j * 10 + ord(f{i}) - ord('0')
|
||||
inc i
|
||||
let idx = if not negative: j-1 else: args.len-j
|
||||
r.add args[idx]
|
||||
of '$':
|
||||
inc(i)
|
||||
r.add '$'
|
||||
of '[':
|
||||
let start = i+1
|
||||
while i < f.len and f{i} != ']': inc i
|
||||
inc i
|
||||
if i >= f.len: raiseInvalidFormat"']' expected"
|
||||
case f{i}
|
||||
of '#':
|
||||
parseChoice(f, start, parseInt args[num], r)
|
||||
inc i
|
||||
inc num
|
||||
of '1'..'9', '-':
|
||||
var j = 0
|
||||
var negative = f{i} == '-'
|
||||
if negative: inc i
|
||||
while f{i} >= '0' and f{i} <= '9':
|
||||
j = j * 10 + ord(f{i}) - ord('0')
|
||||
inc i
|
||||
let idx = if not negative: j-1 else: args.len-j
|
||||
parseChoice(f, start, parseInt args[idx], r)
|
||||
else: raiseInvalidFormat"argument index expected after ']'"
|
||||
else:
|
||||
raiseInvalidFormat("'#', '$', or number expected")
|
||||
if i < f.len and f{i} == '$': inc i
|
||||
else:
|
||||
r.sadd f{i}
|
||||
inc i
|
||||
result = join(r)
|
||||
|
||||
|
||||
when isMainModule:
|
||||
addTranslation(Language.deDE, "$#$ -> $#$", "$2 macht $1")
|
||||
setCurrentLanguage(Language.deDE)
|
||||
|
||||
echo(i18n"$#$ -> $#$" % [cstring"1", "2"])
|
||||
echo(i18n"$[1:item |items ]1$ -> $1" % [cstring"1", "2"])
|
||||
echo(i18n"$[1:item |items ]1 -> $1" % [cstring"0", "2"])
|
||||
echo(i18n"$[1:item |items ]1 -> $1" % [cstring"2", "2"])
|
||||
echo(i18n"$[1:item |items ]1$ -> $1" % [cstring"3", "2"])
|
||||
echo(i18n"$1 $[1:item |4:huha |items ]1$ -> $1" % [cstring"4", "2"])
|
||||
616
src/languages.nim
Normal file
616
src/languages.nim
Normal file
|
|
@ -0,0 +1,616 @@
|
|||
## Karax -- Single page applications for Nim.
|
||||
|
||||
type
|
||||
Language* {.pure.} = enum ## A pure enum that contains most (all?)
|
||||
## known human languages in current use.
|
||||
afZA ## "South Africa - Afrikaans"
|
||||
amET ## "Ethiopia - Amharic"
|
||||
arAE ## "U.A.E. - Arabic"
|
||||
arBH ## "Bahrain - Arabic"
|
||||
arDZ ## "Algeria - Arabic"
|
||||
arEG ## "Egypt - Arabic"
|
||||
arIQ ## "Iraq - Arabic"
|
||||
arJO ## "Jordan - Arabic"
|
||||
arKW ## "Kuwait - Arabic"
|
||||
arLB ## "Lebanon - Arabic"
|
||||
arLY ## "Libya - Arabic"
|
||||
arMA ## "Morocco - Arabic"
|
||||
arOM ## "Oman - Arabic"
|
||||
arQA ## "Qatar - Arabic"
|
||||
arSA ## "Saudi Arabia - Arabic"
|
||||
arSY ## "Syria - Arabic"
|
||||
arTN ## "Tunisia - Arabic"
|
||||
arYE ## "Yemen - Arabic"
|
||||
arnCL ## "Chile - Mapudungun"
|
||||
asIN ## "India - Assamese"
|
||||
azAZ ## "Azerbaijan - Azeri (Cyrillic)"
|
||||
baRU ## "Russia - Bashkir"
|
||||
beBY ## "Belarus - Belarusian"
|
||||
bgBG ## "Bulgaria - Bulgarian"
|
||||
bnBD ## "Bangladesh - Bengali"
|
||||
bnIN ## "India - Bengali"
|
||||
boCN ## "People's Republic of China - Tibetan"
|
||||
brFR ## "France - Breton"
|
||||
bsBA ## "Bosnia and Herzegovina - Bosnian (Cyrillic)"
|
||||
caES ## "Spain - Catalan"
|
||||
coFR ## "France - Corsican"
|
||||
csCZ ## "Czech Republic - Czech"
|
||||
cyGB ## "United Kingdom - Welsh"
|
||||
daDK ## "Denmark - Danish"
|
||||
deAT ## "Austria - German"
|
||||
deCH ## "Switzerland - German"
|
||||
deDE ## "Germany - German"
|
||||
deLI ## "Liechtenstein - German"
|
||||
deLU ## "Luxembourg - German"
|
||||
dsbDE ## "Germany - Lower Sorbian"
|
||||
dvMV ## "Maldives - Divehi"
|
||||
elGR ## "Greece - Greek"
|
||||
en029 ## "Caribbean - English"
|
||||
enAU ## "Australia - English"
|
||||
enBZ ## "Belize - English"
|
||||
enCA ## "Canada - English"
|
||||
enGB ## "United Kingdom - English"
|
||||
enIE ## "Ireland - English"
|
||||
enIN ## "India - English"
|
||||
enJM ## "Jamaica - English"
|
||||
enMY ## "Malaysia - English"
|
||||
enNZ ## "New Zealand - English"
|
||||
enPH ## "Republic of the Philippines - English"
|
||||
enSG ## "Singapore - English"
|
||||
enTT ## "Trinidad and Tobago - English"
|
||||
enUS ## "United States - English"
|
||||
enZA ## "South Africa - English"
|
||||
enZW ## "Zimbabwe - English"
|
||||
esAR ## "Argentina - Spanish"
|
||||
esBO ## "Bolivia - Spanish"
|
||||
esCL ## "Chile - Spanish"
|
||||
esCO ## "Colombia - Spanish"
|
||||
esCR ## "Costa Rica - Spanish"
|
||||
esDO ## "Dominican Republic - Spanish"
|
||||
esEC ## "Ecuador - Spanish"
|
||||
esES ## "Spain - Spanish"
|
||||
esGT ## "Guatemala - Spanish"
|
||||
esHN ## "Honduras - Spanish"
|
||||
esMX ## "Mexico - Spanish"
|
||||
esNI ## "Nicaragua - Spanish"
|
||||
esPA ## "Panama - Spanish"
|
||||
esPE ## "Peru - Spanish"
|
||||
esPR ## "Puerto Rico - Spanish"
|
||||
esPY ## "Paraguay - Spanish"
|
||||
esSV ## "El Salvador - Spanish"
|
||||
esUS ## "United States - Spanish"
|
||||
esUY ## "Uruguay - Spanish"
|
||||
esVE ## "Bolivarian Republic of Venezuela - Spanish"
|
||||
etEE ## "Estonia - Estonian"
|
||||
euES ## "Spain - Basque"
|
||||
faIR ## "Iran - Persian"
|
||||
fiFI ## "Finland - Finnish"
|
||||
filPH ## "Philippines - Filipino"
|
||||
foFO ## "Faroe Islands - Faroese"
|
||||
frBE ## "Belgium - French"
|
||||
frCA ## "Canada - French"
|
||||
frCH ## "Switzerland - French"
|
||||
frFR ## "France - French"
|
||||
frLU ## "Luxembourg - French"
|
||||
frMC ## "Principality of Monaco - French"
|
||||
fyNL ## "Netherlands - Frisian"
|
||||
gaIE ## "Ireland - Irish"
|
||||
gdGB ## "United Kingdom - Scottish Gaelic"
|
||||
glES ## "Spain - Galician"
|
||||
gswFR ## "France - Alsatian"
|
||||
guIN ## "India - Gujarati"
|
||||
haNG ## "Nigeria - Hausa (Latin)"
|
||||
heIL ## "Israel - Hebrew"
|
||||
hiIN ## "India - Hindi"
|
||||
hrBA ## "Bosnia and Herzegovina - Croatian"
|
||||
hrHR ## "Croatia - Croatian"
|
||||
hsbDE ## "Germany - Upper Sorbian"
|
||||
huHU ## "Hungary - Hungarian"
|
||||
hyAM ## "Armenia - Armenian"
|
||||
idID ## "Indonesia - Indonesian"
|
||||
igNG ## "Nigeria - Igbo"
|
||||
iiCN ## "People's Republic of China - Yi"
|
||||
isIS ## "Iceland - Icelandic"
|
||||
itCH ## "Switzerland - Italian"
|
||||
itIT ## "Italy - Italian"
|
||||
iuCA ## "Canada - Inuktitut (Latin)"
|
||||
jaJP ## "Japan - Japanese"
|
||||
kaGE ## "Georgia - Georgian"
|
||||
kkKZ ## "Kazakhstan - Kazakh"
|
||||
klGL ## "Greenland - Greenlandic"
|
||||
kmKH ## "Cambodia - Khmer"
|
||||
knIN ## "India - Kannada"
|
||||
koKR ## "Korea - Korean"
|
||||
kokIN ## "India - Konkani"
|
||||
kyKG ## "Kyrgyzstan - Kyrgyz"
|
||||
lbLU ## "Luxembourg - Luxembourgish"
|
||||
loLA ## "Lao P.D.R. - Lao"
|
||||
ltLT ## "Lithuania - Lithuanian"
|
||||
lvLV ## "Latvia - Latvian"
|
||||
miNZ ## "New Zealand - Maori"
|
||||
mkMK ## "Macedonia (FYROM) - Macedonian (FYROM)"
|
||||
mlIN ## "India - Malayalam"
|
||||
mnCN ## "People's Republic of China - Mongolian (Traditional Mongolian)"
|
||||
mnMN ## "Mongolia - Mongolian (Cyrillic)"
|
||||
mohCA ## "Canada - Mohawk"
|
||||
mrIN ## "India - Marathi"
|
||||
msBN ## "Brunei Darussalam - Malay"
|
||||
msMY ## "Malaysia - Malay"
|
||||
mtMT ## "Malta - Maltese"
|
||||
nbNO ## "Norway - Norwegian (Bokmal)"
|
||||
neNP ## "Nepal - Nepali"
|
||||
nlBE ## "Belgium - Dutch"
|
||||
nlNL ## "Netherlands - Dutch"
|
||||
nnNO ## "Norway - Norwegian (Nynorsk)"
|
||||
nsoZA ## "South Africa - Sesotho sa Leboa"
|
||||
ocFR ## "France - Occitan"
|
||||
orIN ## "India - Oriya"
|
||||
paIN ## "India - Punjabi"
|
||||
plPL ## "Poland - Polish"
|
||||
prsAF ## "Afghanistan - Dari"
|
||||
psAF ## "Afghanistan - Pashto"
|
||||
ptBR ## "Brazil - Portuguese"
|
||||
ptPT ## "Portugal - Portuguese"
|
||||
qutGT ## "Guatemala - K'iche"
|
||||
quzBO ## "Bolivia - Quechua"
|
||||
quzEC ## "Ecuador - Quechua"
|
||||
quzPE ## "Peru - Quechua"
|
||||
rmCH ## "Switzerland - Romansh"
|
||||
roRO ## "Romania - Romanian"
|
||||
ruRU ## "Russia - Russian"
|
||||
rwRW ## "Rwanda - Kinyarwanda"
|
||||
saIN ## "India - Sanskrit"
|
||||
sahRU ## "Russia - Yakut"
|
||||
seFI ## "Finland - Sami (Northern)"
|
||||
seNO ## "Norway - Sami (Northern)"
|
||||
seSE ## "Sweden - Sami (Northern)"
|
||||
siLK ## "Sri Lanka - Sinhala"
|
||||
skSK ## "Slovakia - Slovak"
|
||||
slSI ## "Slovenia - Slovenian"
|
||||
smaNO ## "Norway - Sami (Southern)"
|
||||
smaSE ## "Sweden - Sami (Southern)"
|
||||
smjNO ## "Norway - Sami (Lule)"
|
||||
smjSE ## "Sweden - Sami (Lule)"
|
||||
smnFI ## "Finland - Sami (Inari)"
|
||||
smsFI ## "Finland - Sami (Skolt)"
|
||||
sqAL ## "Albania - Albanian"
|
||||
srBA ## "Bosnia and Herzegovina - Serbian (Cyrillic)"
|
||||
srCS ## "Serbia and Montenegro (Former) - Serbian (Cyrillic)"
|
||||
srME ## "Montenegro - Serbian (Cyrillic)"
|
||||
srRS ## "Serbia - Serbian (Cyrillic)"
|
||||
svFI ## "Finland - Swedish"
|
||||
svSE ## "Sweden - Swedish"
|
||||
swKE ## "Kenya - Kiswahili"
|
||||
syrSY ## "Syria - Syriac"
|
||||
taIN ## "India - Tamil"
|
||||
teIN ## "India - Telugu"
|
||||
tgTJ ## "Tajikistan - Tajik (Cyrillic)"
|
||||
thTH ## "Thailand - Thai"
|
||||
tkTM ## "Turkmenistan - Turkmen"
|
||||
tnZA ## "South Africa - Setswana"
|
||||
trTR ## "Turkey - Turkish"
|
||||
ttRU ## "Russia - Tatar"
|
||||
tzmDZ ## "Algeria - Tamazight (Latin)"
|
||||
ugCN ## "People's Republic of China - Uyghur"
|
||||
ukUA ## "Ukraine - Ukrainian"
|
||||
urPK ## "Islamic Republic of Pakistan - Urdu"
|
||||
uzUZ ## "Uzbekistan - Uzbek (Cyrillic)"
|
||||
viVN ## "Vietnam - Vietnamese"
|
||||
woSN ## "Senegal - Wolof"
|
||||
xhZA ## "South Africa - isiXhosa"
|
||||
yoNG ## "Nigeria - Yoruba"
|
||||
zhCN ## "People's Republic of China - Chinese (Simplified) Legacy"
|
||||
zhHK ## "Hong Kong S.A.R. - Chinese (Traditional) Legacy"
|
||||
zhMO ## "Macao S.A.R. - Chinese (Traditional) Legacy"
|
||||
zhSG ## "Singapore - Chinese (Simplified) Legacy"
|
||||
zhTW ## "Taiwan - Chinese (Traditional) Legacy"
|
||||
zuZA ## "South Africa - isiZulu"
|
||||
|
||||
const
|
||||
languageToName*: array[Language, cstring] = [
|
||||
Language.afZA: cstring"South Africa - Afrikaans",
|
||||
Language.amET: cstring"Ethiopia - Amharic",
|
||||
Language.arAE: cstring"U.A.E. - Arabic",
|
||||
Language.arBH: cstring"Bahrain - Arabic",
|
||||
Language.arDZ: cstring"Algeria - Arabic",
|
||||
Language.arEG: cstring"Egypt - Arabic",
|
||||
Language.arIQ: cstring"Iraq - Arabic",
|
||||
Language.arJO: cstring"Jordan - Arabic",
|
||||
Language.arKW: cstring"Kuwait - Arabic",
|
||||
Language.arLB: cstring"Lebanon - Arabic",
|
||||
Language.arLY: cstring"Libya - Arabic",
|
||||
Language.arMA: cstring"Morocco - Arabic",
|
||||
Language.arOM: cstring"Oman - Arabic",
|
||||
Language.arQA: cstring"Qatar - Arabic",
|
||||
Language.arSA: cstring"Saudi Arabia - Arabic",
|
||||
Language.arSY: cstring"Syria - Arabic",
|
||||
Language.arTN: cstring"Tunisia - Arabic",
|
||||
Language.arYE: cstring"Yemen - Arabic",
|
||||
Language.arnCL: cstring"Chile - Mapudungun",
|
||||
Language.asIN: cstring"India - Assamese",
|
||||
Language.azAZ: cstring"Azerbaijan - Azeri (Cyrillic)",
|
||||
Language.baRU: cstring"Russia - Bashkir",
|
||||
Language.beBY: cstring"Belarus - Belarusian",
|
||||
Language.bgBG: cstring"Bulgaria - Bulgarian",
|
||||
Language.bnBD: cstring"Bangladesh - Bengali",
|
||||
Language.bnIN: cstring"India - Bengali",
|
||||
Language.boCN: cstring"People's Republic of China - Tibetan",
|
||||
Language.brFR: cstring"France - Breton",
|
||||
Language.bsBA: cstring"Bosnia and Herzegovina - Bosnian (Cyrillic)",
|
||||
Language.caES: cstring"Spain - Catalan",
|
||||
Language.coFR: cstring"France - Corsican",
|
||||
Language.csCZ: cstring"Czech Republic - Czech",
|
||||
Language.cyGB: cstring"United Kingdom - Welsh",
|
||||
Language.daDK: cstring"Denmark - Danish",
|
||||
Language.deAT: cstring"Austria - German",
|
||||
Language.deCH: cstring"Switzerland - German",
|
||||
Language.deDE: cstring"Germany - German",
|
||||
Language.deLI: cstring"Liechtenstein - German",
|
||||
Language.deLU: cstring"Luxembourg - German",
|
||||
Language.dsbDE: cstring"Germany - Lower Sorbian",
|
||||
Language.dvMV: cstring"Maldives - Divehi",
|
||||
Language.elGR: cstring"Greece - Greek",
|
||||
Language.en029: cstring"Caribbean - English",
|
||||
Language.enAU: cstring"Australia - English",
|
||||
Language.enBZ: cstring"Belize - English",
|
||||
Language.enCA: cstring"Canada - English",
|
||||
Language.enGB: cstring"United Kingdom - English",
|
||||
Language.enIE: cstring"Ireland - English",
|
||||
Language.enIN: cstring"India - English",
|
||||
Language.enJM: cstring"Jamaica - English",
|
||||
Language.enMY: cstring"Malaysia - English",
|
||||
Language.enNZ: cstring"New Zealand - English",
|
||||
Language.enPH: cstring"Republic of the Philippines - English",
|
||||
Language.enSG: cstring"Singapore - English",
|
||||
Language.enTT: cstring"Trinidad and Tobago - English",
|
||||
Language.enUS: cstring"United States - English",
|
||||
Language.enZA: cstring"South Africa - English",
|
||||
Language.enZW: cstring"Zimbabwe - English",
|
||||
Language.esAR: cstring"Argentina - Spanish",
|
||||
Language.esBO: cstring"Bolivia - Spanish",
|
||||
Language.esCL: cstring"Chile - Spanish",
|
||||
Language.esCO: cstring"Colombia - Spanish",
|
||||
Language.esCR: cstring"Costa Rica - Spanish",
|
||||
Language.esDO: cstring"Dominican Republic - Spanish",
|
||||
Language.esEC: cstring"Ecuador - Spanish",
|
||||
Language.esES: cstring"Spain - Spanish",
|
||||
Language.esGT: cstring"Guatemala - Spanish",
|
||||
Language.esHN: cstring"Honduras - Spanish",
|
||||
Language.esMX: cstring"Mexico - Spanish",
|
||||
Language.esNI: cstring"Nicaragua - Spanish",
|
||||
Language.esPA: cstring"Panama - Spanish",
|
||||
Language.esPE: cstring"Peru - Spanish",
|
||||
Language.esPR: cstring"Puerto Rico - Spanish",
|
||||
Language.esPY: cstring"Paraguay - Spanish",
|
||||
Language.esSV: cstring"El Salvador - Spanish",
|
||||
Language.esUS: cstring"United States - Spanish",
|
||||
Language.esUY: cstring"Uruguay - Spanish",
|
||||
Language.esVE: cstring"Bolivarian Republic of Venezuela - Spanish",
|
||||
Language.etEE: cstring"Estonia - Estonian",
|
||||
Language.euES: cstring"Spain - Basque",
|
||||
Language.faIR: cstring"Iran - Persian",
|
||||
Language.fiFI: cstring"Finland - Finnish",
|
||||
Language.filPH: cstring"Philippines - Filipino",
|
||||
Language.foFO: cstring"Faroe Islands - Faroese",
|
||||
Language.frBE: cstring"Belgium - French",
|
||||
Language.frCA: cstring"Canada - French",
|
||||
Language.frCH: cstring"Switzerland - French",
|
||||
Language.frFR: cstring"France - French",
|
||||
Language.frLU: cstring"Luxembourg - French",
|
||||
Language.frMC: cstring"Principality of Monaco - French",
|
||||
Language.fyNL: cstring"Netherlands - Frisian",
|
||||
Language.gaIE: cstring"Ireland - Irish",
|
||||
Language.gdGB: cstring"United Kingdom - Scottish Gaelic",
|
||||
Language.glES: cstring"Spain - Galician",
|
||||
Language.gswFR: cstring"France - Alsatian",
|
||||
Language.guIN: cstring"India - Gujarati",
|
||||
Language.haNG: cstring"Nigeria - Hausa (Latin)",
|
||||
Language.heIL: cstring"Israel - Hebrew",
|
||||
Language.hiIN: cstring"India - Hindi",
|
||||
Language.hrBA: cstring"Bosnia and Herzegovina - Croatian",
|
||||
Language.hrHR: cstring"Croatia - Croatian",
|
||||
Language.hsbDE: cstring"Germany - Upper Sorbian",
|
||||
Language.huHU: cstring"Hungary - Hungarian",
|
||||
Language.hyAM: cstring"Armenia - Armenian",
|
||||
Language.idID: cstring"Indonesia - Indonesian",
|
||||
Language.igNG: cstring"Nigeria - Igbo",
|
||||
Language.iiCN: cstring"People's Republic of China - Yi",
|
||||
Language.isIS: cstring"Iceland - Icelandic",
|
||||
Language.itCH: cstring"Switzerland - Italian",
|
||||
Language.itIT: cstring"Italy - Italian",
|
||||
Language.iuCA: cstring"Canada - Inuktitut (Latin)",
|
||||
Language.jaJP: cstring"Japan - Japanese",
|
||||
Language.kaGE: cstring"Georgia - Georgian",
|
||||
Language.kkKZ: cstring"Kazakhstan - Kazakh",
|
||||
Language.klGL: cstring"Greenland - Greenlandic",
|
||||
Language.kmKH: cstring"Cambodia - Khmer",
|
||||
Language.knIN: cstring"India - Kannada",
|
||||
Language.koKR: cstring"Korea - Korean",
|
||||
Language.kokIN: cstring"India - Konkani",
|
||||
Language.kyKG: cstring"Kyrgyzstan - Kyrgyz",
|
||||
Language.lbLU: cstring"Luxembourg - Luxembourgish",
|
||||
Language.loLA: cstring"Lao P.D.R. - Lao",
|
||||
Language.ltLT: cstring"Lithuania - Lithuanian",
|
||||
Language.lvLV: cstring"Latvia - Latvian",
|
||||
Language.miNZ: cstring"New Zealand - Maori",
|
||||
Language.mkMK: cstring"Macedonia (FYROM) - Macedonian (FYROM)",
|
||||
Language.mlIN: cstring"India - Malayalam",
|
||||
Language.mnCN: cstring"People's Republic of China - Mongolian (Traditional Mongolian)",
|
||||
Language.mnMN: cstring"Mongolia - Mongolian (Cyrillic)",
|
||||
Language.mohCA: cstring"Canada - Mohawk",
|
||||
Language.mrIN: cstring"India - Marathi",
|
||||
Language.msBN: cstring"Brunei Darussalam - Malay",
|
||||
Language.msMY: cstring"Malaysia - Malay",
|
||||
Language.mtMT: cstring"Malta - Maltese",
|
||||
Language.nbNO: cstring"Norway - Norwegian (Bokmal)",
|
||||
Language.neNP: cstring"Nepal - Nepali",
|
||||
Language.nlBE: cstring"Belgium - Dutch",
|
||||
Language.nlNL: cstring"Netherlands - Dutch",
|
||||
Language.nnNO: cstring"Norway - Norwegian (Nynorsk)",
|
||||
Language.nsoZA: cstring"South Africa - Sesotho sa Leboa",
|
||||
Language.ocFR: cstring"France - Occitan",
|
||||
Language.orIN: cstring"India - Oriya",
|
||||
Language.paIN: cstring"India - Punjabi",
|
||||
Language.plPL: cstring"Poland - Polish",
|
||||
Language.prsAF: cstring"Afghanistan - Dari",
|
||||
Language.psAF: cstring"Afghanistan - Pashto",
|
||||
Language.ptBR: cstring"Brazil - Portuguese",
|
||||
Language.ptPT: cstring"Portugal - Portuguese",
|
||||
Language.qutGT: cstring"Guatemala - K'iche",
|
||||
Language.quzBO: cstring"Bolivia - Quechua",
|
||||
Language.quzEC: cstring"Ecuador - Quechua",
|
||||
Language.quzPE: cstring"Peru - Quechua",
|
||||
Language.rmCH: cstring"Switzerland - Romansh",
|
||||
Language.roRO: cstring"Romania - Romanian",
|
||||
Language.ruRU: cstring"Russia - Russian",
|
||||
Language.rwRW: cstring"Rwanda - Kinyarwanda",
|
||||
Language.saIN: cstring"India - Sanskrit",
|
||||
Language.sahRU: cstring"Russia - Yakut",
|
||||
Language.seFI: cstring"Finland - Sami (Northern)",
|
||||
Language.seNO: cstring"Norway - Sami (Northern)",
|
||||
Language.seSE: cstring"Sweden - Sami (Northern)",
|
||||
Language.siLK: cstring"Sri Lanka - Sinhala",
|
||||
Language.skSK: cstring"Slovakia - Slovak",
|
||||
Language.slSI: cstring"Slovenia - Slovenian",
|
||||
Language.smaNO: cstring"Norway - Sami (Southern)",
|
||||
Language.smaSE: cstring"Sweden - Sami (Southern)",
|
||||
Language.smjNO: cstring"Norway - Sami (Lule)",
|
||||
Language.smjSE: cstring"Sweden - Sami (Lule)",
|
||||
Language.smnFI: cstring"Finland - Sami (Inari)",
|
||||
Language.smsFI: cstring"Finland - Sami (Skolt)",
|
||||
Language.sqAL: cstring"Albania - Albanian",
|
||||
Language.srBA: cstring"Bosnia and Herzegovina - Serbian (Cyrillic)",
|
||||
Language.srCS: cstring"Serbia and Montenegro (Former) - Serbian (Cyrillic)",
|
||||
Language.srME: cstring"Montenegro - Serbian (Cyrillic)",
|
||||
Language.srRS: cstring"Serbia - Serbian (Cyrillic)",
|
||||
Language.svFI: cstring"Finland - Swedish",
|
||||
Language.svSE: cstring"Sweden - Swedish",
|
||||
Language.swKE: cstring"Kenya - Kiswahili",
|
||||
Language.syrSY: cstring"Syria - Syriac",
|
||||
Language.taIN: cstring"India - Tamil",
|
||||
Language.teIN: cstring"India - Telugu",
|
||||
Language.tgTJ: cstring"Tajikistan - Tajik (Cyrillic)",
|
||||
Language.thTH: cstring"Thailand - Thai",
|
||||
Language.tkTM: cstring"Turkmenistan - Turkmen",
|
||||
Language.tnZA: cstring"South Africa - Setswana",
|
||||
Language.trTR: cstring"Turkey - Turkish",
|
||||
Language.ttRU: cstring"Russia - Tatar",
|
||||
Language.tzmDZ: cstring"Algeria - Tamazight (Latin)",
|
||||
Language.ugCN: cstring"People's Republic of China - Uyghur",
|
||||
Language.ukUA: cstring"Ukraine - Ukrainian",
|
||||
Language.urPK: cstring"Islamic Republic of Pakistan - Urdu",
|
||||
Language.uzUZ: cstring"Uzbekistan - Uzbek (Cyrillic)",
|
||||
Language.viVN: cstring"Vietnam - Vietnamese",
|
||||
Language.woSN: cstring"Senegal - Wolof",
|
||||
Language.xhZA: cstring"South Africa - isiXhosa",
|
||||
Language.yoNG: cstring"Nigeria - Yoruba",
|
||||
Language.zhCN: cstring"People's Republic of China - Chinese (Simplified) Legacy",
|
||||
Language.zhHK: cstring"Hong Kong S.A.R. - Chinese (Traditional) Legacy",
|
||||
Language.zhMO: cstring"Macao S.A.R. - Chinese (Traditional) Legacy",
|
||||
Language.zhSG: cstring"Singapore - Chinese (Simplified) Legacy",
|
||||
Language.zhTW: cstring"Taiwan - Chinese (Traditional) Legacy",
|
||||
Language.zuZA: cstring"South Africa - isiZulu"]
|
||||
|
||||
languageToCode*: array[Language, cstring] = [
|
||||
Language.afZA: cstring"af-ZA",
|
||||
Language.amET: cstring"am-ET",
|
||||
Language.arAE: cstring"ar-AE",
|
||||
Language.arBH: cstring"ar-BH",
|
||||
Language.arDZ: cstring"ar-DZ",
|
||||
Language.arEG: cstring"ar-EG",
|
||||
Language.arIQ: cstring"ar-IQ",
|
||||
Language.arJO: cstring"ar-JO",
|
||||
Language.arKW: cstring"ar-KW",
|
||||
Language.arLB: cstring"ar-LB",
|
||||
Language.arLY: cstring"ar-LY",
|
||||
Language.arMA: cstring"ar-MA",
|
||||
Language.arOM: cstring"ar-OM",
|
||||
Language.arQA: cstring"ar-QA",
|
||||
Language.arSA: cstring"ar-SA",
|
||||
Language.arSY: cstring"ar-SY",
|
||||
Language.arTN: cstring"ar-TN",
|
||||
Language.arYE: cstring"ar-YE",
|
||||
Language.arnCL: cstring"arn-CL",
|
||||
Language.asIN: cstring"as-IN",
|
||||
Language.azAZ: cstring"az-AZ",
|
||||
Language.baRU: cstring"ba-RU",
|
||||
Language.beBY: cstring"be-BY",
|
||||
Language.bgBG: cstring"bg-BG",
|
||||
Language.bnBD: cstring"bn-BD",
|
||||
Language.bnIN: cstring"bn-IN",
|
||||
Language.boCN: cstring"bo-CN",
|
||||
Language.brFR: cstring"br-FR",
|
||||
Language.bsBA: cstring"bs-BA",
|
||||
Language.caES: cstring"ca-ES",
|
||||
Language.coFR: cstring"co-FR",
|
||||
Language.csCZ: cstring"cs-CZ",
|
||||
Language.cyGB: cstring"cy-GB",
|
||||
Language.daDK: cstring"da-DK",
|
||||
Language.deAT: cstring"de-AT",
|
||||
Language.deCH: cstring"de-CH",
|
||||
Language.deDE: cstring"de-DE",
|
||||
Language.deLI: cstring"de-LI",
|
||||
Language.deLU: cstring"de-LU",
|
||||
Language.dsbDE: cstring"dsb-DE",
|
||||
Language.dvMV: cstring"dv-MV",
|
||||
Language.elGR: cstring"el-GR",
|
||||
Language.en029: cstring"en-029",
|
||||
Language.enAU: cstring"en-AU",
|
||||
Language.enBZ: cstring"en-BZ",
|
||||
Language.enCA: cstring"en-CA",
|
||||
Language.enGB: cstring"en-GB",
|
||||
Language.enIE: cstring"en-IE",
|
||||
Language.enIN: cstring"en-IN",
|
||||
Language.enJM: cstring"en-JM",
|
||||
Language.enMY: cstring"en-MY",
|
||||
Language.enNZ: cstring"en-NZ",
|
||||
Language.enPH: cstring"en-PH",
|
||||
Language.enSG: cstring"en-SG",
|
||||
Language.enTT: cstring"en-TT",
|
||||
Language.enUS: cstring"en-US",
|
||||
Language.enZA: cstring"en-ZA",
|
||||
Language.enZW: cstring"en-ZW",
|
||||
Language.esAR: cstring"es-AR",
|
||||
Language.esBO: cstring"es-BO",
|
||||
Language.esCL: cstring"es-CL",
|
||||
Language.esCO: cstring"es-CO",
|
||||
Language.esCR: cstring"es-CR",
|
||||
Language.esDO: cstring"es-DO",
|
||||
Language.esEC: cstring"es-EC",
|
||||
Language.esES: cstring"es-ES",
|
||||
Language.esGT: cstring"es-GT",
|
||||
Language.esHN: cstring"es-HN",
|
||||
Language.esMX: cstring"es-MX",
|
||||
Language.esNI: cstring"es-NI",
|
||||
Language.esPA: cstring"es-PA",
|
||||
Language.esPE: cstring"es-PE",
|
||||
Language.esPR: cstring"es-PR",
|
||||
Language.esPY: cstring"es-PY",
|
||||
Language.esSV: cstring"es-SV",
|
||||
Language.esUS: cstring"es-US",
|
||||
Language.esUY: cstring"es-UY",
|
||||
Language.esVE: cstring"es-VE",
|
||||
Language.etEE: cstring"et-EE",
|
||||
Language.euES: cstring"eu-ES",
|
||||
Language.faIR: cstring"fa-IR",
|
||||
Language.fiFI: cstring"fi-FI",
|
||||
Language.filPH: cstring"fil-PH",
|
||||
Language.foFO: cstring"fo-FO",
|
||||
Language.frBE: cstring"fr-BE",
|
||||
Language.frCA: cstring"fr-CA",
|
||||
Language.frCH: cstring"fr-CH",
|
||||
Language.frFR: cstring"fr-FR",
|
||||
Language.frLU: cstring"fr-LU",
|
||||
Language.frMC: cstring"fr-MC",
|
||||
Language.fyNL: cstring"fy-NL",
|
||||
Language.gaIE: cstring"ga-IE",
|
||||
Language.gdGB: cstring"gd-GB",
|
||||
Language.glES: cstring"gl-ES",
|
||||
Language.gswFR: cstring"gsw-FR",
|
||||
Language.guIN: cstring"gu-IN",
|
||||
Language.haNG: cstring"ha-NG",
|
||||
Language.heIL: cstring"he-IL",
|
||||
Language.hiIN: cstring"hi-IN",
|
||||
Language.hrBA: cstring"hr-BA",
|
||||
Language.hrHR: cstring"hr-HR",
|
||||
Language.hsbDE: cstring"hsb-DE",
|
||||
Language.huHU: cstring"hu-HU",
|
||||
Language.hyAM: cstring"hy-AM",
|
||||
Language.idID: cstring"id-ID",
|
||||
Language.igNG: cstring"ig-NG",
|
||||
Language.iiCN: cstring"ii-CN",
|
||||
Language.isIS: cstring"is-IS",
|
||||
Language.itCH: cstring"it-CH",
|
||||
Language.itIT: cstring"it-IT",
|
||||
Language.iuCA: cstring"iu-CA",
|
||||
Language.jaJP: cstring"ja-JP",
|
||||
Language.kaGE: cstring"ka-GE",
|
||||
Language.kkKZ: cstring"kk-KZ",
|
||||
Language.klGL: cstring"kl-GL",
|
||||
Language.kmKH: cstring"km-KH",
|
||||
Language.knIN: cstring"kn-IN",
|
||||
Language.koKR: cstring"ko-KR",
|
||||
Language.kokIN: cstring"kok-IN",
|
||||
Language.kyKG: cstring"ky-KG",
|
||||
Language.lbLU: cstring"lb-LU",
|
||||
Language.loLA: cstring"lo-LA",
|
||||
Language.ltLT: cstring"lt-LT",
|
||||
Language.lvLV: cstring"lv-LV",
|
||||
Language.miNZ: cstring"mi-NZ",
|
||||
Language.mkMK: cstring"mk-MK",
|
||||
Language.mlIN: cstring"ml-IN",
|
||||
Language.mnCN: cstring"mn-CN",
|
||||
Language.mnMN: cstring"mn-MN",
|
||||
Language.mohCA: cstring"moh-CA",
|
||||
Language.mrIN: cstring"mr-IN",
|
||||
Language.msBN: cstring"ms-BN",
|
||||
Language.msMY: cstring"ms-MY",
|
||||
Language.mtMT: cstring"mt-MT",
|
||||
Language.nbNO: cstring"nb-NO",
|
||||
Language.neNP: cstring"ne-NP",
|
||||
Language.nlBE: cstring"nl-BE",
|
||||
Language.nlNL: cstring"nl-NL",
|
||||
Language.nnNO: cstring"nn-NO",
|
||||
Language.nsoZA: cstring"nso-ZA",
|
||||
Language.ocFR: cstring"oc-FR",
|
||||
Language.orIN: cstring"or-IN",
|
||||
Language.paIN: cstring"pa-IN",
|
||||
Language.plPL: cstring"pl-PL",
|
||||
Language.prsAF: cstring"prs-AF",
|
||||
Language.psAF: cstring"ps-AF",
|
||||
Language.ptBR: cstring"pt-BR",
|
||||
Language.ptPT: cstring"pt-PT",
|
||||
Language.qutGT: cstring"qut-GT",
|
||||
Language.quzBO: cstring"quz-BO",
|
||||
Language.quzEC: cstring"quz-EC",
|
||||
Language.quzPE: cstring"quz-PE",
|
||||
Language.rmCH: cstring"rm-CH",
|
||||
Language.roRO: cstring"ro-RO",
|
||||
Language.ruRU: cstring"ru-RU",
|
||||
Language.rwRW: cstring"rw-RW",
|
||||
Language.saIN: cstring"sa-IN",
|
||||
Language.sahRU: cstring"sah-RU",
|
||||
Language.seFI: cstring"se-FI",
|
||||
Language.seNO: cstring"se-NO",
|
||||
Language.seSE: cstring"se-SE",
|
||||
Language.siLK: cstring"si-LK",
|
||||
Language.skSK: cstring"sk-SK",
|
||||
Language.slSI: cstring"sl-SI",
|
||||
Language.smaNO: cstring"sma-NO",
|
||||
Language.smaSE: cstring"sma-SE",
|
||||
Language.smjNO: cstring"smj-NO",
|
||||
Language.smjSE: cstring"smj-SE",
|
||||
Language.smnFI: cstring"smn-FI",
|
||||
Language.smsFI: cstring"sms-FI",
|
||||
Language.sqAL: cstring"sq-AL",
|
||||
Language.srBA: cstring"sr-BA",
|
||||
Language.srCS: cstring"sr-CS",
|
||||
Language.srME: cstring"sr-ME",
|
||||
Language.srRS: cstring"sr-RS",
|
||||
Language.svFI: cstring"sv-FI",
|
||||
Language.svSE: cstring"sv-SE",
|
||||
Language.swKE: cstring"sw-KE",
|
||||
Language.syrSY: cstring"syr-SY",
|
||||
Language.taIN: cstring"ta-IN",
|
||||
Language.teIN: cstring"te-IN",
|
||||
Language.tgTJ: cstring"tg-TJ",
|
||||
Language.thTH: cstring"th-TH",
|
||||
Language.tkTM: cstring"tk-TM",
|
||||
Language.tnZA: cstring"tn-ZA",
|
||||
Language.trTR: cstring"tr-TR",
|
||||
Language.ttRU: cstring"tt-RU",
|
||||
Language.tzmDZ: cstring"tzm-DZ",
|
||||
Language.ugCN: cstring"ug-CN",
|
||||
Language.ukUA: cstring"uk-UA",
|
||||
Language.urPK: cstring"ur-PK",
|
||||
Language.uzUZ: cstring"uz-UZ",
|
||||
Language.viVN: cstring"vi-VN",
|
||||
Language.woSN: cstring"wo-SN",
|
||||
Language.xhZA: cstring"xh-ZA",
|
||||
Language.yoNG: cstring"yo-NG",
|
||||
Language.zhCN: cstring"zh-CN",
|
||||
Language.zhHK: cstring"zh-HK",
|
||||
Language.zhMO: cstring"zh-MO",
|
||||
Language.zhSG: cstring"zh-SG",
|
||||
Language.zhTW: cstring"zh-TW",
|
||||
Language.zuZA: cstring"zu-ZA"]
|
||||
Loading…
Add table
Add a link
Reference in a new issue