############# Localization Hub ############# Strings and Word Lists specific to supported languages languages := [ English: [ code : "en", spellcheck_code : "en_US", fallback : "English", pt_separator : "/", type_separator : " — ", subtype_separator : " ", is_battle : match@(match: "(?i)Battle") is_creature : match@(match: "(?i)Creature") is_dungeon : match@(match: "(?i)Dungeon") is_tribal : match@(match: "(?i)Tribal|Kindred") is_kindred : match@(match: "(?i)Tribal|Kindred") is_artifact : match@(match: "(?i)Artifact") is_land : match@(match: "(?i)Land") is_enchantment : match@(match: "(?i)Enchantment") is_spell : match@(match: "(?i)Instant|Sorcery") is_instant : match@(match: "(?i)Instant") is_sorcery : match@(match: "(?i)Sorcery") is_planeswalker : match@(match: "(?i)Planeswalker") is_plane : match@(match: "(?i)Plane(?!swalker)") is_nonstandard : match@(match: "(?i)(Token|Emblem|Dungeon|Hero|Conspiracy|Vanguard|Scheme|Phenomenon|Plane\\b)") is_token : match@(match: "(?i)Token") is_basic : match@(match: "(?i)Basic") is_conspiracy : match@(match: "(?i)Conspiracy") is_emblem : match@(match: "(?i)Emblem") is_hero : match@(match: "(?i)Hero") is_phenomenon : match@(match: "(?i)Phenomenon") is_scheme : match@(match: "(?i)Scheme") is_vanguard : match@(match: "(?i)Vanguard") is_legendary : match@(match: "(?i)Legendary") is_snow : match@(match: "(?i)Snow") is_vehicle : match@(match: "(?i)Vehicle") is_elite : match@(match: "(?i)Elite") is_host : match@(match: "(?i)Host") is_ongoing : match@(match: "(?i)Ongoing") is_world : match@(match: "(?i)World") is_plains : match@(match: "(?i)Plains") is_island : match@(match: "(?i)Island") is_swamp : match@(match: "(?i)Swamp") is_mountain : match@(match: "(?i)Mountain") is_forest : match@(match: "(?i)Forest") is_wastes : match@(match: "(?i)Wastes") get_supertypes : filter_text@(match: "(?i)(Legendary|Basic|Snow|Token|World|Ongoing|Elite|Host)\\b ?") remove_supertypes : replace_text@(match: "(?i)(Legendary|Basic|Snow|Token|World|Ongoing|Elite|Host)\\b ?", replace:"") base_supertypes : "Legendary|Basic|Snow|Token|World|Ongoing|Elite|Host" mana_symbol_production : filter_text@(match:"]*>[^<]+<\\/sym[^>]*>", in_context:"\\b[Aa]dd [^(\n|^).]*") gold_mana_production : filter_text@(match:"(any( one)?|different|combination of) color", in_context:"\\b[Aa]dd [^(\n|^).]*") chosen_mana_production : filter_text@(match:"that color|chosen color", in_context:"\\b[Aa]dd [^(\n|^).]*") word_list : "word_list", word_list_artifact: "Attraction," + "Blood," + "Clue," + "Contraption," + "Equipment," + "Food," + "Fortification," + "Gold," + "Incubator," + "Junk," + "Map," + "Powerstone," + "Treasure," + "Vehicle" word_list_battle: "Siege" word_list_dungeon: "Undercity" word_list_land: "Cave," + "Desert," + "Gate," + "Lair," + "Locus," + "Mine," + "Power-Plant," + "Sphere," + "Tower," + "Urza's" word_list_enchantment: "Aura," + "Background," + "Cartouche," + "Class," + "Curse," + "Role," + "Rune," + "Saga," + "Shard," + "Shrine" word_list_spell: "Adventure," + "Arcane," + "Lesson," + "Trap" word_list_planeswalker: "Ajani," + "Aminatou," + "Angrath," + "Arlinn," + "Ashiok," + "Bahamut," + "Basri," + "Bolas," + "Calix," + "Chandra," + "Comet," + "Dack," + "Dakkon," + "Daretti," + "Davriel," + "Dihada," + "Domri," + "Dovin," + "Ellywick," + "Elminister," + "Elspeth," + "Estrid," + "Freyalise," + "Garruk," + "Gideon," + "Grist," + "Guff," + "Huatli," + "Jace," + "Jared," + "Jaya," + "Jeska," + "Kaito," + "Karn," + "Kasmina," + "Kaya," + "Kiora," + "Koth," + "Liliana," + "Lolth," + "Lukka," + "Minsc," + "Mordenkainen," + "Nahiri," + "Narset," + "Niko," + "Nissa," + "Nixilis," + "Oko," + "Quintorius," + "Ral," + "Rowan," + "Saheeli," + "Samut," + "Sarkhan," + "Serra," + "Sivitri," + "Sorin," + "Szat," + "Tamiyo," + "Tasha," + "Teferi," + "Teyo," + "Tezzeret," + "Tibalt," + "Tyvar," + "Ugin," + "Urza," + "Venser," + "Vivien," + "Vraska," + "Vronos," + "Will," + "Windgrace," + "Wrenn," + "Xenagos," + "Yanggu," + "Yanling," + "Zariel" ############# Very Long Word Lists ############# Split into array of strings for submenus ############# Used directly by the localized word_lists ############# Combined for the upgraded stats page word_lists_basic: ["Plains", "Island", "Swamp", "Mountain", "Forest"] word_lists_race: [ "Aetherborn," + "Alien," + "Angel," + "Antelope," + "Ape," + "Archon," + "Assembly-Worker," + "Astartes," + "Atog," + "Aurochs," + "Avatar," + "Azra", "Badger," + "Balloon," + "Basilisk," + "Bat," + "Bear," + "Beast," + "Beeble," + "Beholder," + "Bird," + "Blinkmoth," + "Boar," + "Bringer," + "Brushwagg", "C'tan," + "Camarid," + "Camel," + "Capybara," + "Caribou," + "Carrier," + "Cat," + "Centaur," + "Cephalid," + "Chimera," + "Cockatrice," + "Construct," + "Crab," + "Crocodile," + "Custodes," + "Cyberman," + "Cyclops", "Dalek," + "Dauthi," + "Demigod," + "Demon," + "Devil," + "Dinosaur," + "Djinn," + "Dog," + "Dragon," + "Drake," + "Dreadnought," + "Drone," + "Dryad," + "Dwarf", "Efreet," + "Egg," + "Eldrazi," + "Elemental," + "Elephant," + "Elf," + "Elk," + "Eye", "Faerie," + "Ferret," + "Fish," + "Fox," + "Fractal," + "Frog," + "Fungus", "Gargoyle," + "Germ," + "Giant," + "Gith," + "Gnoll," + "Gnome," + "Goat," + "Goblin," + "God," + "Golem," + "Gorgon," + "Graveborn," + "Gremlin," + "Griffin", "Hag," + "Halfling," + "Hamster," + "Harpy," + "Hellion," + "Hippo," + "Hippogriff," + "Homarid," + "Homunculus," + "Horror," + "Horse," + "Hound," + "Human," + "Hydra," + "Hyena", "Illusion," + "Imp," + "Incarnation," + "Inkling," + "Insect", "Jackal," + "Jellyfish," + "Juggernaut", "Kavu," + "Kirin," + "Kithkin," + "Kobold," + "Kor," + "Kraken", "Lamia," + "Lammasu," + "Leech," + "Leviathan," + "Lhurgoyf," + "Licid," + "Lizard," + "Llama", "Manticore," + "Masticore," + "Merfolk," + "Metathran," + "Minotaur," + "Mite," + "Mole," + "Mongoose," + "Monkey," + "Moonfolk," + "Mouse," + "Mutant," + "Myr", "Nautilus," + "Necron," + "Nephilim," + "Nightmare," + "Nightstalker," + "Noggle," + "Nymph", "Octopus," + "Ogre," + "Ooze," + "Orb," + "Orc," + "Orgg," + "Otter," + "Ouphe," + "Ox," + "Oyster", "Pangolin," + "Pegasus," + "Pentavite," + "Pest," + "Phelddagrif," + "Phoenix," + "Phyrexian," + "Pincher," + "Plant," + "Prism", "Rabbit," + "Raccoon," + "Rat," + "Reflection," + "Rhino," + "Robot", "Sable," + "Salamander," + "Sand," + "Saproling," + "Satyr," + "Scarecrow," + "Scorpion," + "Sculpture," + "Serpent," + "Servo," + "Shade," + "Shapeshifter," + "Shark," + "Sheep," + "Siren," + "Skeleton," + "Slith," + "Sliver," + "Slug", "Snail," + "Snake," + "Soltari," + "Spawn," + "Specter," + "Sphinx," + "Spider," + "Spike," + "Spirit," + "Splinter," + "Sponge," + "Squid," + "Squirrel," + "Starfish," + "Surrakar", "Tentacle," + "Tetravite," + "Thalakos," + "Thopter," + "Thrull," + "Tiefling," + "Time Lord," + "Treefolk," + "Trilobite," + "Triskelavite," + "Troll," + "Turtle," + "Tyranid", "Unicorn", "Vampire," + "Vedalken," + "Viashino," + "Volver", "Wall," + "Walrus," + "Weird," + "Werewolf," + "Whale," + "Wolf," + "Wolverine," + "Wombat," + "Worm," + "Wraith," + "Wurm", "Yeti", "Zombie," + "Zubera" ] word_lists_class: [ "Advisor," + "Ally," + "Archer," + "Archon," + "Army," + "Artificer," + "Assassin," + "Barbarian," + "Bard," + "Beast," + "Berserker," + "Carrier," + "Child," + "Citizen," + "Cleric," + "Clown," + "Coward", "Deserter," + "Detective," + "Doctor," + "Dreadnought," + "Drone," + "Druid," + "Egg," + "Elder," + "Employee," + "Flagbearer," + "Gamer," + "Guest," + "Horror," + "Incarnation," + "Inquisitor," + "Juggernaut," + "Knight", "Leviathan," + "Mercenary," + "Minion," + "Monger," + "Monk," + "Mutant," + "Mystic," + "Ninja," + "Noble," + "Nomad," + "Peasant," + "Performer," + "Pilot," + "Pirate," + "Praetor," + "Primarch," + "Processor", "Ranger," + "Rebel," + "Reflection," + "Rigger," + "Rogue," + "Samurai," + "Scientist," + "Scion," + "Scout," + "Serf," + "Shaman," + "Skeleton," + "Soldier," + "Spawn," + "Spellshaper," + "Spirit," + "Survivor", "Thopter," + "Vampire," + "Warlock," + "Warrior," + "Werewolf," + "Wizard," + "Zombie" ] word_lists_plane: [ "Alara," + "Amonkhet," + "Arcavios," + "Bloomburrow," + "Capenna," + "Dominaria," + "Duskmourn," + "Eldraine," + "Ikoria," + "Innistrad," + "Ixalan," + "Kaladesh," + "Kaldheim," + "Kamigawa," + "Lorwyn," + "Mercadia," + "Mirrodin," + "New Phyrexia," + "Rath," + "Ravnica," + "Shadowmoor," + "Tarkir," + "Theros," + "Thunder Junction," + "Ulgrotha," + "Zendikar", "The Abyss," + "Antausia," + "Arkhos," + "Azgol," + "Belenon," + "Bolas's Meditation Realm," + "Cridhe," + "Echoir," + "Equilor," + "Ergamon," + "Fabacin," + "Fiora," + "Gargantikar," + "Gobakhan," + "Iquatana," + "Ir," + "Karsus," + "Kephalai," + "Kinshala," + "Kolbahan," + "Kylem," + "Kyneth," + "Luvion," + "Moag," + "Mongseng," + "Muraganda," + "Phyrexia," + "Pyrulea," + "Rabiah," + "Regatha," + "Segovia," + "Serra's Realm," + "Shandalar," + "Shenmeng," + "Valla," + "Vryn," + "Wildfire," + "Xerex," + "Zhalfir", "Alkabah," + "Aranzhur," + "Diraden," + "Kodisha," + "Metal Island," + "Skalla," + "Tavelia," + "Tolvada", "Azoria," + "Cabralin," + "Celesta," + "Gastal," + "Ilcae," + "Mirrankkar," + "Nether Void," + "Obsidias," + "Torwynn," + "Vatraquaz", "Alfava Metraxis," + "Androzani Minor," + "Apalapucia," + "The Dalek Asylum," + "Darillium," + "Earth," + "Gallifrey," + "Horsehead Nebula," + "Kandoka," + "The Library," + "Mars," + "Moon," + "Necros," + "New Earth," + "Outside Mutter's Spiral," + "Skaro," + "Spacecraft," + "Time," + "Trenzalore," + "Unknown Planet" ] ], "English (British)": [ code : "en", spellcheck_code : "en_GB", fallback : "English", pt_separator : "/", type_separator : " — ", subtype_separator : " ", is_creature : match@(match: "(?i)Creature") is_tribal : match@(match: "(?i)Tribal") is_artifact : match@(match: "(?i)Artifact") is_land : match@(match: "(?i)Land") is_enchantment : match@(match: "(?i)Enchantment") is_spell : match@(match: "(?i)Instant|Sorcery") is_planeswalkish : match@(match: "(?i)Planeswalker|Emblem") is_plane : match@(match: "(?i)Plane(?!swalker)") word_list : "word_list" ], "English (Canadian)": [ code : "en", spellcheck_code : "en_CA", fallback : "English", pt_separator : "/", type_separator : " — ", subtype_separator : " ", is_creature : match@(match: "(?i)Creature") is_tribal : match@(match: "(?i)Tribal") is_artifact : match@(match: "(?i)Artifact") is_land : match@(match: "(?i)Land") is_enchantment : match@(match: "(?i)Enchantment") is_spell : match@(match: "(?i)Instant|Sorcery") is_planeswalkish : match@(match: "(?i)Planeswalker|Emblem") is_plane : match@(match: "(?i)Plane(?!swalker)") word_list : "word_list" ], Russian: [ code : "ru", spellcheck_code : "ru_RU", fallback : "English", pt_separator : "/", type_separator : " — ", subtype_separator : " ", is_creature : match@(match: "(?i)Существо") is_tribal : match@(match: "(?i)Племенное") is_artifact : match@(match: "(?i)Артефакт") is_land : match@(match: "(?i)Земля") is_enchantment : match@(match: "(?i)Чары") is_spell : match@(match: "(?i)Мгновенное заклинание|Волшебство") is_planeswalkish : match@(match: "(?i)Planeswalker|Emblem") is_plane : match@(match: "(?i)Plane(?!swalker)") word_list : "word_list_ru" ], Italiano: [ code : "it", spellcheck_code : "it_IT", fallback : "English", pt_separator : "/", type_separator : " — ", subtype_separator : " ", is_creature : match@(match: "(?i)Creatura") is_tribal : match@(match: "(?i)Tribale") is_artifact : match@(match: "(?i)Artefatto") is_land : match@(match: "(?i)Terra") is_enchantment : match@(match: "(?i)Incantesimo") is_spell : match@(match: "(?i)Istantaneo|Stregoneria") is_planeswalkish : match@(match: "(?i)Planeswalker|Emblem") is_plane : match@(match: "(?i)Plane(?!swalker)") word_list : "word_list_it" ], "Português do Brasil" : [ code : "pt-br", spellcheck_code : "pt_BR", fallback : "English", pt_separator : "/", type_separator : " — ", subtype_separator : " ", is_creature : match@(match: "(?i)Criatura") is_tribal : match@(match: "(?i)Tribal") is_artifact : match@(match: "(?i)Artefato") is_land : match@(match: "(?i)Terreno") is_enchantment : match@(match: "(?i)Encantamento") is_spell : match@(match: "(?i)Mágica Instantânea|Feitiço") is_planeswalkish : match@(match: "(?i)Planeswalker|Emblem") is_plane : match@(match: "(?i)Plane(?!swalker)") word_list : "word_list_pt" ], Français: [ code : "fr", spellcheck_code : "fr_FR", fallback : "English", pt_separator : "/", type_separator : " : " subtype_separator : " et ", is_creature : match@(match: "(?i)Creature|Créature") is_tribal : match@(match: "(?i)tribal") is_artifact : match@(match: "(?i)Artefact") is_land : match@(match: "(?i)Terrain") is_enchantment : match@(match: "(?i)Enchantement") is_spell : match@(match: "(?i)Éphémère|Rituel") is_planeswalkish : match@(match: "(?i)Planeswalker") is_plane : match@(match: "(?i)Plane(?!swalker)") word_list : "word_list", word_lists_basic: ["Plaine", "Île", "Marais", "Montagne", "Forêt"] word_list_artifact: "Attraction," + "Sang," + "Indice," + "Appareil," + "Équipement," + "Nourriture," + "Fortification," + "Or," + "Incubateur," + "Lithoforce," + "Trésor," + "Véhicule" word_list_land: "Grotte," + "Désert," + "Porte," + "Repaire," + "Site," + "Mine," + "Centrale énergétique," + "Sphère," + "Tour," + "D'urza" ] ] # 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 "" } # 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"]() } 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"]() }