############# Localization Hub ############# Strings and Word Lists specific to supported languages include file: language_map # The selected language language := { languages[set.card_language] or else languages.English } # The language's name lang_name := { if languages[set.card_language].code or else false != false then set.card_language else "English" } # Get a setting from a language, or use a fallback lang_setting := { language()[input] or else languages[language().fallback][input] or else languages.English[input] or else "" } spaced_sub_type_regex := replace@(match: "'", replace: "’") + ### standardize apostrophes regex_escape + ### preemptive escape replace@(match: ",", replace: "|") + ### match any sub type replace@(match: "(^|\\|)[^ ]+(?=\\|)", replace: "") + ### eliminate sub types that don't contain spaces replace@(match: "^\\|", replace: "") + ### eliminate starting | replace@(match: "\\|$", replace: "") + ### eliminate trailing | { "^(" + input + ")" } ### only match start of string complete_sub_type_list := { input.word_list_artifact + "," + input.word_list_battle + "," + input.word_list_dungeon + "," + input.word_list_land + "," + (for each submenu in input.word_lists_basic do submenu + ",") + input.word_list_enchantment + "," + input.word_list_spell + "," + input.word_list_planeswalker + "," + (for each submenu in input.word_lists_race do submenu + ",") + (for each submenu in input.word_lists_class do submenu + ",") + (for each submenu in input.word_lists_plane do submenu + ",") } replace_spaced_sub_type_map := [ "de": replace@(replace: "", match: spaced_sub_type_regex(complete_sub_type_list(languages["Deutsch"]))) "en": replace@(replace: "", match: spaced_sub_type_regex(complete_sub_type_list(languages["English"]))) "es": replace@(replace: "", match: spaced_sub_type_regex(complete_sub_type_list(languages["Español"]))) "fr": replace@(replace: "", match: spaced_sub_type_regex(complete_sub_type_list(languages["Français"]))) "it": replace@(replace: "", match: spaced_sub_type_regex(complete_sub_type_list(languages["Italiano"]))) "ja": replace@(replace: "", match: spaced_sub_type_regex(complete_sub_type_list(languages["日本語"]))) "ko": replace@(replace: "", match: spaced_sub_type_regex(complete_sub_type_list(languages["한국어"]))) "pt-br": replace@(replace: "", match: spaced_sub_type_regex(complete_sub_type_list(languages["Português do Brasil"]))) "ru": replace@(replace: "", match: spaced_sub_type_regex(complete_sub_type_list(languages["Русский"]))) "zhs": replace@(replace: "", match: spaced_sub_type_regex(complete_sub_type_list(languages["汉语"]))) "zht": replace@(replace: "", match: spaced_sub_type_regex(complete_sub_type_list(languages["漢語"]))) "en_GB": replace@(replace: "", match: spaced_sub_type_regex(complete_sub_type_list(languages["English"]))) "en_CA": replace@(replace: "", match: spaced_sub_type_regex(complete_sub_type_list(languages["English"]))) ] # language scripts spanish_number := { input := remove_tags(input) espanol_ones_array := ["cero", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez", "once", "doce", "trece", "catorce", "quince"] espanol_tens_array := ["cero", "diec", "viente", "treinta", "cuarenta", "cincuenta", "sesenta", "setenta", "ochenta", "noventa"] function_map := [ small: {espanol_ones_array[input]}, large: { ones := input mod 10 tens := (input - ones) / 10 final_answer := espanol_tens_array[tens] + " y " + espanol_ones_array[ones] final_answer := replace(final_answer, match:" y cero", replace:"") ##remove redundant "and zero" final_answer := replace(final_answer, match:"(diec|vient)e? y ", replace:"\\1i") ##16-29 are one word final_answer }, oversized: {input} ] if input == "number" then "" else if input < 16 then function_map["small"]() else if input < 100 then function_map["large"]() else function_map["oversized"]() } #Number scripts and maps #portuguese_number := { # input := remove_tags(input) # portugues_ones_array := ["zero", "um", "dois", "três", "quatro", "cinco", "seis", "sete", "oito", "nove", "dez", "onze", "doze", "treze", "catorze", "quinze", "dezesseis", "dezessete", "dezoito", "dezenove"] # portugues_tens_array := ["zero", "deze", "vinte", "trinta", "quarenta", "cinquenta", "sessenta", "setenta", "oitenta", "noventa"] # function_map := [ # small: {portugues_ones_array[input]}, # large: { # ones := input mod 10 # tens := (input - ones) / 10 # final_answer := portugues_tens_array[tens] + " e " + portugues_ones_array[ones] # final_answer := replace(final_answer, match:" e zero", replace:"") ##remove redundant "and zero" # final_answer # }, # oversized: {input} # ] # if input == "number" then "" # else if input < 20 then function_map["small"]() # else if input < 100 then function_map["large"]() # else function_map["oversized"]() #} #french_number := { # input := remove_tags(input) # francais_ones_array := ["zéro", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "nuef", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize","dix-sept","dix-huit","dix-neuf"] # francais_tens_array := ["zéro", "dix", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante-dix", "quatre-vingts", "quatre-vingt-dix"] # function_map := [ # small: {francais_ones_array[input]}, # large: { # ones := input mod 10 # tens := (input - ones) / 10 # final_answer := francais_tens_array[tens] + "-" + francais_ones_array[ones] # final_answer := replace(final_answer, match:"-zéro", replace:"") ##remove redundant "and zero" # final_answer := replace(final_answer, match:"-un", replace:" et un") ##21, 31 et al. use "et un" # final_answer # }, # oversized: {input} # ] # if input == "number" then "" # else if input < 20 then function_map["small"]() # else if input < 100 then function_map["large"]() # else function_map["oversized"]() #} russian_number := { word := russian_number_map[remove_tags(input)] or else nil if word == nil then to_string(input) else word } italian_number := { word := italian_number_map[remove_tags(input)] or else nil if word == nil then to_string(input) else word } spanish_number := { word := spanish_number_map[remove_tags(input)] or else nil if word == nil then to_string(input) else word } portuguese_number := { word := portuguese_number_map[remove_tags(input)] or else nil if word == nil then to_string(input) else word } french_number := { word := french_number_map[remove_tags(input)] or else nil if word == nil then to_string(input) else word } french_ordinal_number := { input := remove_tags(input) if input == "1" then "premier" else ( number := french_number(input) number := replace(number, match: "f$", replace: "v") number := replace(number, match: "q$", replace: "qu") number := replace(number, match: "e$", replace: "") number + "ième" ) } german_number := { word := german_number_map[remove_tags(input)] or else nil if word == nil then to_string(input) else word } korean_number := { word := korean_native_number_map[remove_tags(input)] or else nil if word == nil then to_string(input) else word } korean_sino_number := { word := korean_sino_number_map[remove_tags(input)] or else nil if word == nil then to_string(input) else word } korean_counter_number := { word := korean_counter_number_map[remove_tags(input)] or else nil if word == nil then korean_number(input) else word } japanese_number := { number := japanese_alternate_number_map[remove_tags(input)] or else nil if number != nil then input := number word := chinese_japanese_number_map[remove_tags(input)] or else nil if word == nil then to_string(input) else word } chinese_simplified_number := { word := chinese_japanese_number_map[remove_tags(input)] or else nil if input == 2 then "两" else if input == 1000000 then "一百万" else if word == nil then to_string(input) else word } chinese_traditional_number := { word := chinese_japanese_number_map[remove_tags(input)] or else nil if input == 2 then "兩" else if input == 1000000 then "一百萬" else if word == nil then to_string(input) else word } russian_number_map := [ 0 : "ноль" 1 : "один" 2 : "два" 3 : "три" 4 : "четыре" 5 : "пять" 6 : "шесть" 7 : "семь" 8 : "восемь" 9 : "девять" 10 : "десять" 11 : "одиннадцать" 12 : "двенадцать" 13 : "тринадцать" 14 : "четырнадцать" 15 : "пятнадцать" 16 : "шестнадцать" 17 : "семнадцать" 18 : "восемнадцать" 19 : "девятнадцать" 20 : "двадцать" 21 : "двадцать один" 22 : "двадцать два" 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 : "пятьдесят один" 52 : "пятьдесят два" 53 : "пятьдесят три" 54 : "пятьдесят четыре" 55 : "пятьдесят пять" 56 : "пятьдесят шесть" 57 : "пятьдесят семь" 58 : "пятьдесят восемь" 59 : "пятьдесят девять" 60 : "шестьдесят" 61 : "шестьдесят один" 62 : "шестьдесят два" 63 : "шестьдесят три" 64 : "шестьдесят четыре" 65 : "шестьдесят пять" 66 : "шестьдесят шесть" 67 : "шестьдесят семь" 68 : "шестьдесят восемь" 69 : "шестьдесят девять" 70 : "семьдесят" 71 : "семьдесят один" 72 : "семьдесят два" 73 : "семьдесят три" 74 : "семьдесят четыре" 75 : "семьдесят пять" 76 : "семьдесят шесть" 77 : "семьдесят семь" 78 : "семьдесят восемь" 79 : "семьдесят девять" 80 : "восемьдесят" 81 : "восемьдесят один" 82 : "восемьдесят два" 83 : "восемьдесят три" 84 : "восемьдесят четыре" 85 : "восемьдесят пять" 86 : "восемьдесят шесть" 87 : "восемьдесят семь" 88 : "восемьдесят восемь" 89 : "восемьдесят девять" 90 : "девяносто" 91 : "девяносто один" 92 : "девяносто два" 93 : "девяносто три" 94 : "девяносто четыре" 95 : "девяносто пять" 96 : "девяносто шесть" 97 : "девяносто семь" 98 : "девяносто восемь" 99 : "девяносто девять" 100 : "сто" 1000 : "одна тысяча" 1000000 : "один миллион" ] italian_number_map := [ 0 : "zero" 1 : "uno" 2 : "due" 3 : "tre" 4 : "quattro" 5 : "cinque" 6 : "sei" 7 : "sette" 8 : "otto" 9 : "nove" 10 : "dieci" 11 : "undici" 12 : "dodici" 13 : "tredici" 14 : "quattordici" 15 : "quindici" 16 : "sedici" 17 : "diciassette" 18 : "diciotto" 19 : "diciannove" 20 : "venti" 21 : "ventuno" 22 : "ventidue" 23 : "ventitré" 24 : "ventiquattro" 25 : "venticinque" 26 : "ventisei" 27 : "ventisette" 28 : "ventotto" 29 : "ventinove" 30 : "trenta" 31 : "trentuno" 32 : "trentadue" 33 : "trentatré" 34 : "trentaquattro" 35 : "trentacinque" 36 : "trentasei" 37 : "trentasette" 38 : "trentotto" 39 : "trentanove" 40 : "quaranta" 41 : "quarantuno" 42 : "quarantadue" 43 : "quarantatré" 44 : "quarantaquattro" 45 : "quarantacinque" 46 : "quarantasei" 47 : "quarantasette" 48 : "quarantotto" 49 : "quarantanove" 50 : "cinquanta" 51 : "cinquantuno" 52 : "cinquantadue" 53 : "cinquantatré" 54 : "cinquantaquattro" 55 : "cinquantacinque" 56 : "cinquantasei" 57 : "cinquantasette" 58 : "cinquantotto" 59 : "cinquantanove" 60 : "sessanta" 61 : "sessantuno" 62 : "sessantadue" 63 : "sessantatré" 64 : "sessantaquattro" 65 : "sessantacinque" 66 : "sessantasei" 67 : "sessantasette" 68 : "sessantotto" 69 : "sessantanove" 70 : "settanta" 71 : "settantuno" 72 : "settantadue" 73 : "settantatré" 74 : "settantaquattro" 75 : "settantacinque" 76 : "settantasei" 77 : "settantasette" 78 : "settantotto" 79 : "settantanove" 80 : "ottanta" 81 : "ottantuno" 82 : "ottantadue" 83 : "ottantatré" 84 : "ottantaquattro" 85 : "ottantacinque" 86 : "ottantasei" 87 : "ottantasette" 88 : "ottantotto" 89 : "ottantanove" 90 : "novanta" 91 : "novantuno" 92 : "novantadue" 93 : "novantatré" 94 : "novantaquattro" 95 : "novantacinque" 96 : "novantasei" 97 : "novantasette" 98 : "novantotto" 99 : "novantanove" 100 : "cento" 1000 : "mille" 1000000 : "un milione" ] spanish_number_map := [ 0 : "cero" 1 : "uno" 2 : "dos" 3 : "tres" 4 : "cuatro" 5 : "cinco" 6 : "seis" 7 : "siete" 8 : "ocho" 9 : "nueve" 10 : "diez" 11 : "once" 12 : "doce" 13 : "trece" 14 : "catorce" 15 : "quince" 16 : "dieciséis" 17 : "diecisiete" 18 : "dieciocho" 19 : "diecinueve" 20 : "veinte" 21 : "veintiuno" 22 : "veintidós" 23 : "veintitrés" 24 : "veinticuatro" 25 : "veinticinco" 26 : "veintiséis" 27 : "veintisiete" 28 : "veintiocho" 29 : "veintinueve" 30 : "treinta" 31 : "treinta y uno" 32 : "treinta y dos" 33 : "treinta y tres" 34 : "treinta y cuatro" 35 : "treinta y cinco" 36 : "treinta y seis" 37 : "treinta y siete" 38 : "treinta y ocho" 39 : "treinta y nueve" 40 : "cuarenta" 41 : "cuarenta y uno" 42 : "cuarenta y dos" 43 : "cuarenta y tres" 44 : "cuarenta y cuatro" 45 : "cuarenta y cinco" 46 : "cuarenta y seis" 47 : "cuarenta y siete" 48 : "cuarenta y ocho" 49 : "cuarenta y nueve" 50 : "cincuenta" 51 : "cincuenta y uno" 52 : "cincuenta y dos" 53 : "cincuenta y tres" 54 : "cincuenta y cuatro" 55 : "cincuenta y cinco" 56 : "cincuenta y seis" 57 : "cincuenta y siete" 58 : "cincuenta y ocho" 59 : "cincuenta y nueve" 60 : "sesenta" 61 : "sesenta y uno" 62 : "sesenta y dos" 63 : "sesenta y tres" 64 : "sesenta y cuatro" 65 : "sesenta y cinco" 66 : "sesenta y seis" 67 : "sesenta y siete" 68 : "sesenta y ocho" 69 : "sesenta y nueve" 70 : "setenta" 71 : "setenta y uno" 72 : "setenta y dos" 73 : "setenta y tres" 74 : "setenta y cuatro" 75 : "setenta y cinco" 76 : "setenta y seis" 77 : "setenta y siete" 78 : "setenta y ocho" 79 : "setenta y nueve" 80 : "ochenta" 81 : "ochenta y uno" 82 : "ochenta y dos" 83 : "ochenta y tres" 84 : "ochenta y cuatro" 85 : "ochenta y cinco" 86 : "ochenta y seis" 87 : "ochenta y siete" 88 : "ochenta y ocho" 89 : "ochenta y nueve" 90 : "noventa" 91 : "noventa y uno" 92 : "noventa y dos" 93 : "noventa y tres" 94 : "noventa y cuatro" 95 : "noventa y cinco" 96 : "noventa y seis" 97 : "noventa y siete" 98 : "noventa y ocho" 99 : "noventa y nueve" 100 : "cien" 1000 : "mil" 1000000 : "un millón" ] portuguese_number_map := [ 0 : "zero" 1 : "um" 2 : "dois" 3 : "três" 4 : "quatro" 5 : "cinco" 6 : "seis" 7 : "sete" 8 : "oito" 9 : "nove" 10 : "dez" 11 : "onze" 12 : "doze" 13 : "treze" 14 : "catorze" 15 : "quinze" 16 : "dezesseis" 17 : "dezessete" 18 : "dezoito" 19 : "dezenove" 20 : "vinte" 21 : "vinte e um" 22 : "vinte e dois" 23 : "vinte e três" 24 : "vinte e quatro" 25 : "vinte e cinco" 26 : "vinte e seis" 27 : "vinte e sete" 28 : "vinte e oito" 29 : "vinte e nove" 30 : "trinta" 31 : "trinta e um" 32 : "trinta e dois" 33 : "trinta e três" 34 : "trinta e quatro" 35 : "trinta e cinco" 36 : "trinta e seis" 37 : "trinta e sete" 38 : "trinta e oito" 39 : "trinta e nove" 40 : "quarenta" 41 : "quarenta e um" 42 : "quarenta e dois" 43 : "quarenta e três" 44 : "quarenta e quatro" 45 : "quarenta e cinco" 46 : "quarenta e seis" 47 : "quarenta e sete" 48 : "quarenta e oito" 49 : "quarenta e nove" 50 : "cinquenta" 51 : "cinquenta e um" 52 : "cinquenta e dois" 53 : "cinquenta e três" 54 : "cinquenta e quatro" 55 : "cinquenta e cinco" 56 : "cinquenta e seis" 57 : "cinquenta e sete" 58 : "cinquenta e oito" 59 : "cinquenta e nove" 60 : "sessenta" 61 : "sessenta e um" 62 : "sessenta e dois" 63 : "sessenta e três" 64 : "sessenta e quatro" 65 : "sessenta e cinco" 66 : "sessenta e seis" 67 : "sessenta e sete" 68 : "sessenta e oito" 69 : "sessenta e nove" 70 : "setenta" 71 : "setenta e um" 72 : "setenta e dois" 73 : "setenta e três" 74 : "setenta e quatro" 75 : "setenta e cinco" 76 : "setenta e seis" 77 : "setenta e sete" 78 : "setenta e oito" 79 : "setenta e nove" 80 : "oitenta" 81 : "oitenta e um" 82 : "oitenta e dois" 83 : "oitenta e três" 84 : "oitenta e quatro" 85 : "oitenta e cinco" 86 : "oitenta e seis" 87 : "oitenta e sete" 88 : "oitenta e oito" 89 : "oitenta e nove" 90 : "noventa" 91 : "noventa e um" 92 : "noventa e dois" 93 : "noventa e três" 94 : "noventa e quatro" 95 : "noventa e cinco" 96 : "noventa e seis" 97 : "noventa e sete" 98 : "noventa e oito" 99 : "noventa e nove" 100 : "cem" 1000 : "mil" 1000000 : "um milhão" ] french_number_map := [ 0 : "zéro" 1 : "un" 2 : "deux" 3 : "trois" 4 : "quatre" 5 : "cinq" 6 : "six" 7 : "sept" 8 : "huit" 9 : "neuf" 10 : "dix" 11 : "onze" 12 : "douze" 13 : "treize" 14 : "quatorze" 15 : "quinze" 16 : "seize" 17 : "dix-sept" 18 : "dix-huit" 19 : "dix-neuf" 20 : "vingt" 21 : "vingt et un" 22 : "vingt-deux" 23 : "vingt-trois" 24 : "vingt-quatre" 25 : "vingt-cinq" 26 : "vingt-six" 27 : "vingt-sept" 28 : "vingt-huit" 29 : "vingt-neuf" 30 : "trente" 31 : "trente et un" 32 : "trente-deux" 33 : "trente-trois" 34 : "trente-quatre" 35 : "trente-cinq" 36 : "trente-six" 37 : "trente-sept" 38 : "trente-huit" 39 : "trente-neuf" 40 : "quarante" 41 : "quarante et un" 42 : "quarante-deux" 43 : "quarante-trois" 44 : "quarante-quatre" 45 : "quarante-cinq" 46 : "quarante-six" 47 : "quarante-sept" 48 : "quarante-huit" 49 : "quarante-neuf" 50 : "cinquante" 51 : "cinquante et un" 52 : "cinquante-deux" 53 : "cinquante-trois" 54 : "cinquante-quatre" 55 : "cinquante-cinq" 56 : "cinquante-six" 57 : "cinquante-sept" 58 : "cinquante-huit" 59 : "cinquante-neuf" 60 : "soixante" 61 : "soixante et un" 62 : "soixante-deux" 63 : "soixante-trois" 64 : "soixante-quatre" 65 : "soixante-cinq" 66 : "soixante-six" 67 : "soixante-sept" 68 : "soixante-huit" 69 : "soixante-neuf" 70 : "soixante-dix" 71 : "soixante-et-onze" 72 : "soixante-douze" 73 : "soixante-treize" 74 : "soixante-quatorze" 75 : "soixante-quinze" 76 : "soixante-seize" 77 : "soixante-dix-sept" 78 : "soixante-dix-huit" 79 : "soixante-dix-neuf" 80 : "quatre-vingts" 81 : "quatre-vingt-un" 82 : "quatre-vingt-deux" 83 : "quatre-vingt-trois" 84 : "quatre-vingt-quatre" 85 : "quatre-vingt-cinq" 86 : "quatre-vingt-six" 87 : "quatre-vingt-sept" 88 : "quatre-vingt-huit" 89 : "quatre-vingt-neuf" 90 : "quatre-vingt-dix" 91 : "quatre-vingt-onze" 92 : "quatre-vingt-douze" 93 : "quatre-vingt-treize" 94 : "quatre-vingt-quatorze" 95 : "quatre-vingt-quinze" 96 : "quatre-vingt-seize" 97 : "quatre-vingt-dix-sept" 98 : "quatre-vingt-dix-huit" 99 : "quatre-vingt-dix-neuf" 100 : "cent" 1000 : "mille" 1000000 : "un million" ] german_number_map := [ 0 : "null" 1 : "eins" 2 : "zwei" 3 : "drei" 4 : "vier" 5 : "fünf" 6 : "sechs" 7 : "sieben" 8 : "acht" 9 : "neun" 10 : "zehn" 11 : "elf" 12 : "zwölf" 13 : "dreizehn" 14 : "vierzehn" 15 : "fünfzehn" 16 : "sechszehn" 17 : "siebzehn" 18 : "achtzehn" 19 : "neunzehn" 20 : "zwanzig" 21 : "einundzwanzig" 22 : "zweiundzwanzig" 23 : "dreiundzwanzig" 24 : "vierundzwanzig" 25 : "fünfundzwanzig" 26 : "sechsundzwanzig" 27 : "siebenundzwanzig" 28 : "achtundzwanzig" 29 : "neunundzwanzig" 30 : "dreiβig" 31 : "einunddreiβig" 32 : "zweiunddreiβig" 33 : "dreiunddreiβig" 34 : "vierunddreiβig" 35 : "fünfunddreiβig" 36 : "sechsunddreiβig" 37 : "siebenunddreiβig" 38 : "achtunddreiβig" 39 : "neununddreiβig" 40 : "vierzig" 41 : "einundvierzig" 42 : "zweiundvierzig" 43 : "dreiundvierzig" 44 : "vierundvierzig" 45 : "fünfundvierzig" 46 : "sechsundvierzig" 47 : "siebenundvierzig" 48 : "achtundvierzig" 49 : "neunundvierzig" 50 : "fünfzig" 51 : "einundfünfzig" 52 : "zweiundfünfzig" 53 : "dreiundfünfzig" 54 : "vierundfünfzig" 55 : "fünfundfünfzig" 56 : "sechsundfünfzig" 57 : "siebenundfünfzig" 58 : "achtundfünfzig" 59 : "neunundfünfzig" 60 : "sechzig" 61 : "einundsechzig" 62 : "zweiundsechzig" 63 : "dreiundsechzig" 64 : "vierundsechzig" 65 : "fünfundsechzig" 66 : "sechsundsechzig" 67 : "siebenundsechzig" 68 : "achtundsechzig" 69 : "neunundsechzig" 70 : "siebzig" 71 : "einundsiebzig" 72 : "zweiundsiebzig" 73 : "dreiundsiebzig" 74 : "vierundsiebzig" 75 : "fünfundsiebzig" 76 : "sechsundsiebzig" 77 : "siebenundsiebzig" 78 : "achtundsiebzig" 79 : "neunundsiebzig" 80 : "achtzig" 81 : "einundachtzig" 82 : "zweiundachtzig" 83 : "dreiundachtzig" 84 : "vierundachtzig" 85 : "fünfundachtzig" 86 : "sechsundachtzig" 87 : "siebenundachtzig" 88 : "achtundachtzig" 89 : "neunundachtzig" 90 : "neunzig" 91 : "einundneunzig" 92 : "zweiundneunzig" 93 : "dreiundneunzig" 94 : "vierundneunzig" 95 : "fünfundneunzig" 96 : "sechsundneunzig" 97 : "siebenundneunzig" 98 : "achtundneunzig" 99 : "neunundneunzig" 100 : "einhundert" 1000 : "eintausend" 1000000 : "eine Million" ] korean_sino_number_map := [ 0 : "영" 1 : "일" 2 : "이" 3 : "삼" 4 : "사" 5 : "오" 6 : "육" 7 : "칠" 8 : "팔" 9 : "구" 10 : "십" 11 : "십일" 12 : "십이" 13 : "십삼" 14 : "십사" 15 : "십오" 16 : "십육" 17 : "십칠" 18 : "십팔" 19 : "십구" 20 : "이십" 21 : "이십일" 22 : "이십이" 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 : "오십일" 52 : "오십이" 53 : "오십삼" 54 : "오십사" 55 : "오십오" 56 : "오십육" 57 : "오십칠" 58 : "오십팔" 59 : "오십구" 60 : "육십" 61 : "육십일" 62 : "육십이" 63 : "육십삼" 64 : "육십사" 65 : "육십오" 66 : "육십육" 67 : "육십칠" 68 : "육십팔" 69 : "육십구" 70 : "칠십" 71 : "칠십일" 72 : "칠십이" 73 : "칠십삼" 74 : "칠십사" 75 : "칠십오" 76 : "칠십육" 77 : "칠십칠" 78 : "칠십팔" 79 : "칠십구" 80 : "팔십" 81 : "팔십일" 82 : "팔십이" 83 : "팔십삼" 84 : "팔십사" 85 : "팔십오" 86 : "팔십육" 87 : "팔십칠" 88 : "팔십팔" 89 : "팔십구" 90 : "구십" 91 : "구십일" 92 : "구십이" 93 : "구십삼" 94 : "구십사" 95 : "구십오" 96 : "구십육" 97 : "구십칠" 98 : "구십팔" 99 : "구십구" 100 : "백" 1000 : "천" 1000000 : "백만" ] korean_native_number_map := [ 0 : "공" 1 : "하나" 2 : "둘" 3 : "셋" 4 : "넷" 5 : "다섯" 6 : "여섯" 7 : "일곱" 8 : "여덟" 9 : "아홉" 10 : "열" 11 : "열하나" 12 : "열둘" 13 : "열셋" 14 : "열넷" 15 : "열다섯" 16 : "열여섯" 17 : "열일곱" 18 : "열여덟" 19 : "열아홉" 20 : "스물" 21 : "스물하나" 22 : "스물둘" 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 : "쉰하나" 52 : "쉰둘" 53 : "쉰셋" 54 : "쉰넷" 55 : "쉰다섯" 56 : "쉰여섯" 57 : "쉰일곱" 58 : "쉰여덟" 59 : "쉰아홉" 60 : "예순" 61 : "예순하나" 62 : "예순둘" 63 : "예순셋" 64 : "예순넷" 65 : "예순다섯" 66 : "예순여섯" 67 : "예순일곱" 68 : "예순여덟" 69 : "예순아홉" 70 : "일흔" 71 : "일흔하나" 72 : "일흔둘" 73 : "일흔셋" 74 : "일흔넷" 75 : "일흔다섯" 76 : "일흔여섯" 77 : "일흔일곱" 78 : "일흔여덟" 79 : "일흔아홉" 80 : "여든" 81 : "여든하나" 82 : "여든둘" 83 : "여든셋" 84 : "여든넷" 85 : "여든다섯" 86 : "여든여섯" 87 : "여든일곱" 88 : "여든여덟" 89 : "여든아홉" 90 : "아흔" 91 : "아흔하나" 92 : "아흔둘" 93 : "아흔셋" 94 : "아흔넷" 95 : "아흔다섯" 96 : "아흔여섯" 97 : "아흔일곱" 98 : "아흔여덟" 99 : "아흔아홉" 100 : "백" 1000 : "천" 1000000 : "백만" ] korean_counter_number_map := [ 1 : "한" 2 : "두" 3 : "세" 4 : "네" ] japanese_alternate_number_map := [ "0" : 0 "1" : 1 "2" : 2 "3" : 3 "4" : 4 "5" : 5 "6" : 6 "7" : 7 "8" : 8 "9" : 9 "10" : 10 "11" : 11 "12" : 12 "13" : 13 "14" : 14 "15" : 15 "16" : 16 "17" : 17 "18" : 18 "19" : 19 "20" : 20 "21" : 21 "22" : 22 "23" : 23 "24" : 24 "25" : 25 "26" : 26 "27" : 27 "28" : 28 "29" : 29 "30" : 30 "31" : 31 "32" : 32 "33" : 33 "34" : 34 "35" : 35 "36" : 36 "37" : 37 "38" : 38 "39" : 39 "40" : 40 "41" : 41 "42" : 42 "43" : 43 "44" : 44 "45" : 45 "46" : 46 "47" : 47 "48" : 48 "49" : 49 "50" : 50 "51" : 51 "52" : 52 "53" : 53 "54" : 54 "55" : 55 "56" : 56 "57" : 57 "58" : 58 "59" : 59 "60" : 60 "61" : 61 "62" : 62 "63" : 63 "64" : 64 "65" : 65 "66" : 66 "67" : 67 "68" : 68 "69" : 69 "70" : 70 "71" : 71 "72" : 72 "73" : 73 "74" : 74 "75" : 75 "76" : 76 "77" : 77 "78" : 78 "79" : 79 "80" : 80 "81" : 81 "82" : 82 "83" : 83 "84" : 84 "85" : 85 "86" : 86 "87" : 87 "88" : 88 "89" : 89 "90" : 90 "91" : 91 "92" : 92 "93" : 93 "94" : 94 "95" : 95 "96" : 96 "97" : 97 "98" : 98 "99" : 99 "100" : 100 "1000" : 1000 "1000000" : 1000000 ] chinese_japanese_number_map := [ 0 : "零" 1 : "一" 2 : "二" 3 : "三" 4 : "四" 5 : "五" 6 : "六" 7 : "七" 8 : "八" 9 : "九" 10 : "十" 11 : "十一" 12 : "十二" 13 : "十三" 14 : "十四" 15 : "十五" 16 : "十六" 17 : "十七" 18 : "十八" 19 : "十九" 20 : "二十" 21 : "二十一" 22 : "二十二" 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 : "五十一" 52 : "五十二" 53 : "五十三" 54 : "五十四" 55 : "五十五" 56 : "五十六" 57 : "五十七" 58 : "五十八" 59 : "五十九" 60 : "六十" 61 : "六十一" 62 : "六十二" 63 : "六十三" 64 : "六十四" 65 : "六十五" 66 : "六十六" 67 : "六十七" 68 : "六十八" 69 : "六十九" 70 : "七十" 71 : "七十一" 72 : "七十二" 73 : "七十三" 74 : "七十四" 75 : "七十五" 76 : "七十六" 77 : "七十七" 78 : "七十八" 79 : "七十九" 80 : "八十" 81 : "八十一" 82 : "八十二" 83 : "八十三" 84 : "八十四" 85 : "八十五" 86 : "八十六" 87 : "八十七" 88 : "八十八" 89 : "八十九" 90 : "九十" 91 : "九十一" 92 : "九十二" 93 : "九十三" 94 : "九十四" 95 : "九十五" 96 : "九十六" 97 : "九十七" 98 : "九十八" 99 : "九十九" 100 : "一百" 1000 : "一千" 1000000 : "100万" ] # Keyword helper functions. Maybe these belong in the main script file? make_list_unique := { unique_list := [] count := length(input)-1 for x from 0 to count do (if not contains_element(unique_list, element: input[x]) then unique_list := unique_list + [input[x]];0) unique_list } contains_element := { contained := false count := length(input)-1 for x from 0 to count do (if input[x] == element then contained := true;0) contained } join_list := { count := length(input)-2 if count < -1 then "" else if count == -1 then input[0] else ( joined_list := for x from 0 to count do (input[x] + glue) joined_list + input[count+1]) }@(glue: "") reverse_list := { count := length(input)-1 for x from 0 to count do [input[count-x]] } # Keyword functions. cost_parameter_script := { input := remove_tag(input, tag:"") replace(input, match:"\\b([HSVECTQXYZI0-9WUBRGO/|]+)\\b(,|,|<|$)", replace:"\\1\\2") } cost_parameter_script_nonspace := { input := remove_tag(input, tag:"") replace(input, match:"(?\\1") } cost_parameter_dash := { if language().code == "cn" then replace(input, match:"-|―|—", replace:"~") else replace(input, match:"-|―|~", replace:"—") } localized_phy_reminder := { phy_matches := break_text(card.casting_cost, match:"H(/[WUBRGOC])*") if length(phy_matches) < 1 then "" else ( multiple := length(phy_matches) > 1 phy_matches := make_list_unique(reverse_list(sort_list(phy_matches, order_by: length))) #First symbol is used for reminder text. Prefer using hybrid mana. letters := split_text(phy_matches[0], match:"/") count := length(letters) costs := if count == 1 then ["1"] else for x from 1 to count-1 do [letters[x]] if input == "de" then german_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple) else if input == "pt" then portuguese_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple) else if input == "zhs" then chinese_simplified_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple) else if input == "it" then italian_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple) else if input == "fr" then french_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple) else if input == "es" then spanish_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple) else if input == "ja" then japanese_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple) else if input == "ru" then russian_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple) else if input == "ko" then korean_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple) else if input == "zht" then chinese_traditional_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple) else english_phy_reminder(costs, phy_matches: phy_matches, multiple: multiple)) } english_phy_reminder := { "" + phy_matches[0] + " can be paid with " + join_list(costs, glue: ", ") + " or 2 life. " + if multiple then "For each " + join_list(phy_matches, glue: " or ") + " paid with life, this planeswalker enters with two fewer loyalty counters." else "If life was paid, this planeswalker enters with two fewer loyalty counters." } german_phy_reminder := { "" + phy_matches[0] + " kann entweder mit " + join_list(costs, glue: ", ") + " oder 2 Lebenspunkten bezahlt werden. " + if multiple then "Dieser Planeswalker kommt für jedes " + join_list(phy_matches, glue: " oder ") + ", das mit Lebenspunkten bezahlt wurde, mit zwei Loyalitätsmarken weniger ins Spiel." else "Falls Lebenspunkte bezahlt wurden, kommt dieser Planeswalker mit zwei Loyalitätsmarken weniger ins Spiel." } portuguese_phy_reminder := { "" + phy_matches[0] + " pode ser pago com " + join_list(costs, glue: ", ") + " ou 2 pontos de vida. " + if multiple then "Para cada " + join_list(phy_matches, glue: " ou ") + " pago com vida, este planeswalker entra com dois marcadores de lealdade a menos." else "Se foram pagos pontos de vida, este planeswalker entrará com dois marcadores de lealdade a menos." } chinese_simplified_phy_reminder := { "" + phy_matches[0] + "可用" + join_list(costs, glue: "") + "或2点生命来支付。" + if multiple then "每有一点以生命支付的" + join_list(phy_matches, glue: "") + ",此鹏洛客进战场时上面便少两个忠诚指示物。" else "如果以生命支付,则此鹏洛客进战场时上面少两个忠诚指示物。" } italian_phy_reminder := { "" + phy_matches[0] + " può essere pagato con " + join_list(costs, glue: ", ") + " o con 2 punti vita. " + if multiple then "Per ogni " + join_list(phy_matches, glue: " o ") + " pagato con punti vita, questo planeswalker entra con due segnalini fedeltà in meno." else "Se sono stati pagati punti vita, questo planeswalker entra con due segnalini fedeltà in meno." } french_phy_reminder := { "" + phy_matches[0] + " peut être payé au choix avec " + join_list(costs, glue: ", ") + " ou 2 points de vie. " + if multiple then "Pour chaque " + join_list(phy_matches, glue: " ou ") + " payé avec des points de vie, ce planeswalker arrive avec deux marqueurs « loyauté » de moins." else "Si des points de vie ont été payés, ce planeswalker arrive avec deux marqueurs « loyauté » de moins." } spanish_phy_reminder := { "" + phy_matches[0] + " puede pagarse con " + join_list(costs, glue: ", ") + " o 2 vidas. " + if multiple then "Por cada " + join_list(phy_matches, glue: " o ") + " pagado con vidas, este planeswalker entra con dos contadores de lealtad menos." else "Si se pagaron vidas, este planeswalker entra con dos contadores de lealtad menos." } japanese_phy_reminder := { "" + phy_matches[0] + "" + join_list(costs, glue: "でも") + "でも2点のライフでも支払うことができる。" + if multiple then "ライフで支払われた" + join_list(phy_matches, glue: "でも") + "につき、このプレインズウォーカーの上にある忠誠カウンターが2個少ない状態で戦場に出る。" else "ライフで支払ったなら、このプレインズウォーカーは2個少ない忠誠カウンターで戦場に出る。" } russian_phy_reminder := { "За " + phy_matches[0] + " можно заплатить " + join_list(costs, glue: ", ") + " или 2 жизни. " + "Если были заплачены жизни, то у этого planeswalker'а при выходе на поле битвы будет на два жетона верности меньше." } korean_phy_reminder := { "" + phy_matches[0] + "" + join_list(costs, glue: ", ") + " 또는 생명 2점으로 지불할 수 있다. " + "생명점이 지불되었다면, 이 플레인즈워커는 충성 카운터를 두 개 적게 가지고 들어온다." } chinese_traditional_phy_reminder := { "" + phy_matches[0] + "可用" + join_list(costs, glue: "") + "或2點生命來支付。" + "如果以生命支付,則此鵬洛客進戰場時上面少兩個忠誠指示物。" } remove_ein := replace@(match: "eine? ", replace: "")