diff --git a/David Engelby Foundry - CopenhagenGrotesk.otf b/David Engelby Foundry - CopenhagenGrotesk.otf new file mode 100644 index 0000000..2137dd0 Binary files /dev/null and b/David Engelby Foundry - CopenhagenGrotesk.otf differ diff --git a/David Engelby Foundry - CopenhagenGrotesk.ttf b/David Engelby Foundry - CopenhagenGrotesk.ttf new file mode 100644 index 0000000..fcfdad7 Binary files /dev/null and b/David Engelby Foundry - CopenhagenGrotesk.ttf differ diff --git a/background2.png b/background2.png new file mode 100644 index 0000000..05adf84 Binary files /dev/null and b/background2.png differ diff --git a/background3.png b/background3.png new file mode 100644 index 0000000..766d155 Binary files /dev/null and b/background3.png differ diff --git a/translate.js b/translate.js index 053653e..bd096b5 100644 --- a/translate.js +++ b/translate.js @@ -12,9 +12,52 @@ var languages = [ ]; var regional_suffix = ["Español", "Português", "Français", "Italiano"]; var no_spaces = ["日本", "简中", "繁中"]; +var fallbacks = { + "Español_Latin": "Español" +} +var currentLang = "English"; +var fav_cats = [ + "Bird", "Mammal", "RegionBug", "PseudoLegend", "PikachuClone", + "Eeveelution", "Fossil", "RegionalForm", "Gigantamax", + "BoxLegendary", "Mythical", "UltraBeast", "Paradox", + "Type", "Pokeball", "SpindaTitle", "Vivillon", "Alcremie", + "Baby", "NewEvolution" +] +var femme = { + "Português": ["-a", "Forma Regional"], + "Español": ["Eeveelución", "Poké Ball", "Forma Regional", "Ave Regional"], + "Español_Latin": ["Eeveelución", "Poké Ball", "Forma Regional", "Ave Regional"] +} +var font_sizes = { + "ShinyCharm1": { + "English": 24, + "Português": 20, + "Français": 22 + }, + "ShinyCharm2": { + "English": 24, + "Português": 20, + "Français": 22 + }, + "Favorite": { + "English": 27, + "Français": 23 + } +} +function getTranslString (check) { + if(!translatable[check]) + return ""; + var tr = translatable[check][currentLang]; + if(tr) + return tr; + tr = translatable[check][fallbacks[currentLang]]; + if(tr) + return tr; + return translatable[check]["English"]; +} var translatable = { // Strings missing translations - "Gimmick Form": { + "GimmickForm": { "English": "Gimmick Form", "Español": "Forma Especial", "Português": "Forma com Mecânica", @@ -50,7 +93,7 @@ var translatable = { "Italiano": "", "한국어": "" }, - "Download": { + "btnPrint": { "English": "Download Image", "Español": "Descargar imagen", "Português": "Baixe a imagem", @@ -74,7 +117,7 @@ var translatable = { "Italiano": "", "한국어": "" }, - "Export": { + "btnExport": { "English": "Export Choices", "Español": "Exportar selecciones", "Português": "Exportar Escolhas", @@ -86,7 +129,7 @@ var translatable = { "Italiano": "", "한국어": "" }, - "Import": { + "btnLoad": { "English": "Import Choices", "Español": "Importar selecciones", "Português": "Importar Escolhas", @@ -98,7 +141,7 @@ var translatable = { "Italiano": "", "한국어": "" }, - "gridReset": { + "btnReset": { "English": "Reset the grid!", "Español": "Reestablecer la cuadrícula", "Português": "Reset o quadro", @@ -122,7 +165,7 @@ var translatable = { "Italiano": "", "한국어": "" }, - "importExportInstructions": { + "import": { "English": "# Don't like my choices? You can overrule them here!\n# Write Code will put a text version of the grid here\n# Then you can edit the names and Import Code to replace the images.\n# Most Pokemon are just their named capitalized, like SWELLOW.\n# Alternate forms have specific tags, like MEOWTH_2 for Galarian Meowth.\n# You can also use this to keep backups", "Español": "# ¿No te gustan mis selecciones? ¡Puedes cambiarlas aquí!\n# Exportar selecciones generará una versión de texto de la cuadrícula\n# Después podrás editar los nombres y darle click a Importar selecciones para reemplazar las imágenes.\n# La mayoría de Pokémon simplemente son su nombre en mayúsculas, como SWELLOW\n# Las formas alternativas tienen etiquetas específicas, como MEOWTH_2 para Meowth de Galar.\n# También puedes usar esto para realizar respaldos", "Português": "# Não gosta das minhas escolhas? Você pode anulá-las!\n# Exportar Escolhas irá colocar uma versão em texto do quadro aqui\n# Então você poderá editar os nomes e Importar Escolhas para substituir as imagens.\n# A maioria dos Pokémon são apenas seus nomes em letra maiúscula, como SWELLOW.\n# Formas Alternativas possuem tags específicas, como MEOWTH_2 para Meowth de Galar.\n# Você também pode usar isso para guardar cópias de segurança.", @@ -134,20 +177,20 @@ var translatable = { "Italiano": "", "한국어": "" }, - "spindaInstructions": { - "English": "Spinda's spots can be randomized or manually placed.\nEach box pair in the corners moves its nearest spot.\nUp/Down on the first box moves it Right/Left.\nUp/Down on the second box moves it Up/Down.", - "Español": "Las manchas de Spinda pueden ser aleatorias o cambiadas manualmente.\nCada par de cajas en las esquinas cambian la mancha más cercana a ellas\nArriba/Abajo en la primera caja la mueve hacía la Derecha/Izquierda\nArriba/Abajo en la segunda caja la mueve hacía la Derecha/Izquierda", - "Português": "As manchas do Spinda podem ser aleatórias ou colocadas manualmente.\nCada par de caixas nos cantos da imagem movem as manchas próximas a eles.\nPara cima/Para baixo na primeira caixa move as manchas para a Direita/Esquerda.\nPara cima/Para baixo na segunda caixa move as manchas para Cima/Baixo.", + "spinda-help": { + "English": "Spinda's spots can be randomized or manually placed.
Each box pair in the corners moves its nearest spot.
Up/Down on the first box moves it Right/Left.
Up/Down on the second box moves it Up/Down.", + "Español": "Las manchas de Spinda pueden ser aleatorias o cambiadas manualmente.
Cada par de cajas en las esquinas cambian la mancha más cercana a ellas
Arriba/Abajo en la primera caja la mueve hacía la Derecha/Izquierda
Arriba/Abajo en la segunda caja la mueve hacía la Derecha/Izquierda", + "Português": "As manchas do Spinda podem ser aleatórias ou colocadas manualmente.
Cada par de caixas nos cantos da imagem movem as manchas próximas a eles.
Para cima/Para baixo na primeira caixa move as manchas para a Direita/Esquerda.
Para cima/Para baixo na segunda caixa move as manchas para Cima/Baixo.", "Deutsch": "", "日本": "", "简中": "", "繁中": "", - "Français": "Les tâches de Spinda peuvent être placées aléatoirement ou à la main\nChaque paire de chiffre dans les coins déplace la tâche la plus proche\nHaut/Bas dans la première la déplace vers la Gauche/Droite\nHaut/Bas dans la seconde la déplace vers le Haut/Bas", + "Français": "Les tâches de Spinda peuvent être placées aléatoirement ou à la main
Chaque paire de chiffre dans les coins déplace la tâche la plus proche
Haut/Bas dans la première la déplace vers la Gauche/Droite
Haut/Bas dans la seconde la déplace vers le Haut/Bas", "Italiano": "", "한국어": "" }, "teamInstructions": { - "English": "Click a team box, then a Pokemon from the grid to copy it to the box.", + "English": "Click a team box, then a Pokémon from the grid to copy it to the box.", "Español": "Haz click en la caja de equipo y después en un Pokémon de la cuadrícula para copiarlo a la caja de equipo", "Português": "Clique em um dos espaços em branco e depois em um Pokémon do quadro para colocá-lo no time", "Deutsch": "", @@ -210,7 +253,7 @@ var translatable = { "Italiano": "", "한국어": "" }, - "Randomize!": { + "btnRandom": { "English": "Randomize!", "Español": "Aleatorizar!", "Português": "Aleatório!", @@ -299,40 +342,52 @@ var translatable = { "한국어": "지닌 포켓몬" }, "Regional": { - "English": "Regional", - "Español": "Regional", - "Português": "Regional", - "Deutsch": "Regional", + "English": "Regional ", + "Español": " Regional", + "Português": " Regional", + "Deutsch": "Regional ", "日本": "地域", "简中": "地区", "繁中": "地區", - "Français": "régional", - "Italiano": "regionale", - "한국어": "지역" + "Français": " Régional", + "Italiano": " Regionale", + "한국어": "지역 " }, "Bird": { - "English": "Bird", - "Español": "Ave", - "Português": "Pássaro", - "Deutsch": "Vogel", - "日本": "鳥", - "简中": "鸟", - "繁中": "鳥", - "Français": "Oiseau", - "Italiano": "Uccello", - "한국어": "새" + "English": "Regional Bird", + "Español": "Ave Regional", + "Português": "Pássaro Regional", + "Deutsch": "Regional Vogel", + "日本": "地域鳥", + "简中": "地区鸟", + "繁中": "地區鳥", + "Français": "Oiseau Régional", + "Italiano": "Uccello Regionale", + "한국어": "지역 새" }, "Mammal": { - "English": "Mammal", - "Español": "Mamífero", - "Português": "Mamífero", - "Deutsch": "Säugetier", - "日本": "哺乳類", - "简中": "哺乳动物", - "繁中": "哺乳動物", - "Français": "Mammifère", - "Italiano": "Mammifero", - "한국어": "포유류" + "English": "Regional Mammal", + "Español": "Mamífero Regional", + "Português": "Mamífero Regional", + "Deutsch": "Regional Säugetier", + "日本": "地域哺乳類", + "简中": "地区哺乳动物", + "繁中": "地區哺乳動物", + "Français": "Mammifère Régional", + "Italiano": "Mammifero Regionale", + "한국어": "지역 포유류" + }, + "RegionBug": { + "English": "Regional Bug", + "Español": "Bicho Regional", + "Português": "Inseto Regional", + "Deutsch": "Regional Käfer", + "日本": "地域むし", + "简中": "地区虫", + "繁中": "地區蟲", + "Français": "Insecte Régional", + "Italiano": "Coleottero Regionale", + "한국어": "지역 벌레" }, "Fossil": { "English": "Fossil", @@ -373,7 +428,7 @@ var translatable = { "Mythical": { "English": "Mythical", "Español": "Pokémon Singular", - "Español_LA": "Mítico", + "Español_Latin": "Mítico", "Português": "Mítico", "Deutsch": "Mysteriöse Pokémon", "日本": "幻のポケモン", @@ -455,7 +510,7 @@ var translatable = { "Italiano": "Nuova Evoluzione", "한국어": "새로운 진화" }, - "Spinda": { + "SpindaTitle": { "English": "Spinda", "Español": "Spinda", "Português": "Spinda", @@ -491,7 +546,6 @@ var translatable = { "Italiano": "Alcremie", "한국어": "마휘핑" }, - "Normal": { "English": "Normal", "Español": "Normal", @@ -763,4 +817,59 @@ function writeEmpties() { fs.writeFile('./translating_strings/'+l+'.txt', JSON.stringify(holder[l], null, 1), function(){}) } } -writeEmpties(); \ No newline at end of file +function resolveFem(string, lang, arr) { + if(femme[lang].includes(string)) + return arr[1]; + if(femme[lang].includes("-a") && string.match(/a$/)) + return arr[1]; + return arr[0]; +} +function changeLang(lang) { + if(lang == currentLang) + return; + currentLang = lang; + var fallback = (fallbacks[lang] || "English"); + var favs = translatable["Favorite"][lang]; + if(!favs) + favs = translatable["Favorite"][fallback]; + var use_femme = femme.hasOwnProperty(lang); + for(let tr_id in translatable) { + var tr_info = translatable[tr_id]; + var tr_ele = document.getElementById(tr_id); + if(!tr_ele) + continue; + var tr_st = tr_info[lang]; + if(!tr_st) + tr_st = tr_info[fallback]; + if(fav_cats.includes(tr_id)) { + // Favorite Thing + var fn = favs[0]; + if(use_femme) + fn = resolveFem(tr_st, lang, favs) + if(no_spaces.includes(lang)) { + tr_st = fn + tr_st; + }else{ + tr_st = fn + "
" + tr_st; + } + // deal with font size + if(font_sizes["Favorite"][lang]) { + tr_ele.style.fontSize = font_sizes["Favorite"][lang]; + }else{ + tr_ele.style.fontSize = font_sizes["Favorite"]["English"] + } + } + if(tr_ele.type == "button") { + tr_ele.value = tr_st; + }else{ + tr_ele.innerHTML = tr_st; + } + // deal with font size + if(font_sizes[tr_id]) { + if(font_sizes[tr_id][lang]) { + tr_ele.style.fontSize = font_sizes[tr_id][lang]; + }else{ + tr_ele.style.fontSize = font_sizes[tr_id]["English"] + } + } + } +} \ No newline at end of file