A LANGUAGE-profile mod filling the `strings` registry -- the seam #791 opened
up, used for the thing it was opened for. 566 keys: the launcher, OPTIONS,
the save-slot and profile screens, the mod manager, the naming screen, and
the battle menu.
WHAT IT DOES NOT TOUCH is the cartridge. Dialogue, species, items, moves and
places all come out of the player's ROM and stay exactly as they are, so an
English cartridge is still an English adventure with Spanish menus around
it. The lang/ tables for those ship empty on purpose rather than absent:
they are where a full translation would go, and an empty value falls through
to English, so anyone continuing this can fill one row at a time and the
game stays playable throughout.
THE FONT IS THE CONSTRAINT, and it decided the wording. The 8x8 charmap has
no N-tilde, no accented vowels and no inverted punctuation -- the sole
exception in the whole atlas is the small e-acute of POKeMON. So every value
on an 8x8 surface is plain A-Z: DISENO COMBATE, MESETA ANIL, SEGURO? OTRA
VEZ. Not a spelling preference; a glyph that is missing renders as a hole,
which is how the first cut of this shipped "ESPA OL" to a phone. The
launcher draws with a real font and keeps proper Spanish, inverted marks and
all -- the split is by surface, not by taste.
Adding the glyphs to the atlas would let the 8x8 side read properly too, and
lang/font.lua and lang/charmap.lua are already the place that would hook
into. I have not done it here: it is a separate change with its own taste
questions, and it should not ride in on a catalog.
Tested end to end on iOS and macOS.
["%s\ndid not learn\v%s!"]="¡%s no\naprendió\v%s!",
["Which move should"]="¿Qué movimiento",
["be forgotten?"]="hay que olvidar?",
["YOUR NAME?"]="TU NOMBRE?",
["NEW NAME"]="NUEVO NOMBRE",
["Hello there!\nWelcome to the\vworld of POKéMON!\fMy name is OAK!\nPeople call me\vthe POKéMON PROF!"]="¡Hola!\n¡Bienvenido al\vmundo POKéMON!\fMe llamo OAK.\nMe llaman el\vPROF. POKéMON.",
["This world is\ninhabited by\vcreatures called\vPOKéMON!"]="¡Este mundo está\nhabitado por unas\vcriaturas llamadas\vPOKéMON!",
["\fFor some people,\nPOKéMON are\vpets. Others use\vthem for fights.\fMyself...\fI study POKéMON\nas a profession."]="\fPara algunos, los\nPOKéMON son masco-\vtas. Otros luchan\vcon ellos.\fYo...\fEstudio los POKéMON\ncomo profesión.",
["{PLAYER}!\fYour very own\nPOKéMON legend is\vabout to unfold!\fA world of dreams\nand adventures\vwith POKéMON\vawaits! Let's go!"]="¡{PLAYER}!\f¡Tu propia leyenda\nPOKéMON está a\vpunto de comenzar!\f¡Un mundo de sueños\ny aventuras con\vPOKéMON te espera!\v¡Vamos!",
["First, what is\nyour name?"]="¿Cómo te llamas?",
["This is my grand-\nson. He's been\vyour rival since\vyou were a baby.\f...Erm, what is\nhis name again?"]="Este es mi nieto.\nHa sido tu rival\vdesde que erais\vbebés.\f...Mmm, ¿cómo se\nllamaba?",
["HIS NAME?"]="SU NOMBRE?",
["_OakSpeechText2A"]="",
["TEXT SPEED"]="VEL TEXTO",
["BATTLE ANIMATION"]="ANIMACIONES",
["OFF"]="NO",
["ON"]="SI",
["BATTLE STYLE"]="ESTILO COMBATE",
["SET"]="FIJO",
["SHIFT"]="CAMBIO",
["BATTLE LAYOUT"]="DISENO COMBATE",
["WIDE"]="ANCHO",
["OG"]="OG",
["RULESET"]="REGLAS",
["MUSIC VOL"]="VOL MUSICA",
["SFX VOL"]="VOL SONIDO",
["PIKACHU VOL"]="VOL PIKACHU",
["MUSIC FILTER"]="FILTRO MUSICA",
["COLORS"]="COLORES",
["TILT"]="INCLINACION",
["GBC FX"]="EFECTO GBC",
["ZOOM"]="ZOOM",
["VOID FILL"]="RELLENO VACIO",
["VIDEO MODE"]="MODO VIDEO",
["MAX FPS"]="FPS MAXIMO",
["GAME SPEED"]="VELOCIDAD JUEGO",
["MODS"]="MODS",
["%d INSTALLED"]="%d INSTALADOS",
["CONTROLS"]="CONTROLES",
["TOUCH PAD"]="CONTROL TACTIL",
["SURE? AGAIN"]="SEGURO? OTRA VEZ",
["AUTO HIDE PAD"]="OCULTAR AUTO",
["A blinding FLASH\nlights the area!"]="¡Un DESTELLO\nilumina la zona!",
["No SURFing here!"]="¡Aquí no se puede\nSURFEAR!",
["Nope, there's\nonly trash here."]="No, aquí solo hay\nbasura.",
["Darn! It needs a\nCARD KEY!"]="¡Vaya! ¡Necesita\nuna LLAVE MAGNET.!",
["Bingo!"]="¡Bingo!",
["\nThe CARD KEY\nopened the door!"]="\n¡La LLAVE MAGNET.\nabrió la puerta!",
["Hey! There's a\nswitch under the\ntrash!\fThe 1st electric\nlock opened!"]="¡Hay un interruptor\nbajo la basura!\f¡Se abrió el 1er\ncierre eléctrico!",
["Nope! There's\nonly trash here.\fHey! The electric\nlocks were reset!"]="¡No! Aquí solo hay\nbasura.\f¡Los cierres se\nreiniciaron!",
["TELEPORTER is\ndisplayed on the\nPC monitor."]="El TELETRANSPORTE\naparece en el\nmonitor del PC.",
["{PLAYER} initiated\nTELEPORTER's Cell\nSeparator!"]="¡{PLAYER} activó el\nSeparador de Células\ndel TELETRANSPORTE!",
["BILL's favorite\nPOKéMON list!"]="¡La lista de POKéMON\nfavoritos de BILL!",
["{PLAYER} got on\n{RAM:wNameBuffer}!"]="¡{PLAYER} se subió\na {RAM:wNameBuffer}!",
["{RAM:wNameBuffer} hacked\naway with CUT!"]="¡{RAM:wNameBuffer} cortó\ncon CORTE!",
["Gyaoo!"]="¡Gyaoo!",
["Hi there!\nMay I help you?"]="¡Hola!\n¿Puedo ayudarte?",
["SOMEONE'S PC"]="EL PC DE ALGUIEN",
["PROF.OAK's PC"]="EL PC DEL PROF.OAK",
["POKéDEX comp-\nletion is:\f{NUM:hDexRatingNumMonsSeen} POKéMON seen\n{NUM:hDexRatingNumMonsOwned} POKéMON owned\fPROF.OAK's\nRating:"]="La POKéDEX está\nasí:\f{NUM:hDexRatingNumMonsSeen} POKéMON vistos\n{NUM:hDexRatingNumMonsOwned} POKéMON capturados\fNota del\nPROF.OAK:",
["We hope to see\nyou again!"]="¡Esperamos verte\nde nuevo!",
["Welcome to our\nPOKéMON CENTER!"]="¡Bienvenido a\nnuestro CENTRO\nPOKéMON!",
["Shall we heal your\nPOKéMON?"]="¿Curamos a tus\nPOKéMON?",
["Your POKéMON are\nfighting fit!"]="¡Tus POKéMON están\nen plena forma!",
["Welcome to the\nCable Club!"]="¡Bienvenido al Club\nde Cable!",
["We're making\npreparations.\vPlease wait."]="Estamos preparando\ntodo.\vEspera un momento.",
["Please apply here.\fBefore opening\nthe link, we have\vto save the game."]="Solicítalo aquí.\fAntes de abrir el\nlink hay que\vguardar la partida.",
["Please come\nagain!"]="¡Vuelve pronto!",
["I like shorts!\nThey're comfy and\neasy to wear!"]="¡Me gustan los\npantalones cortos!\n¡Son cómodos!",
["%s received\nthe %s!"]="¡%s recibió\nel %s!",
["%s received\n%s!"]="¡%s recibió\n%s!",
["REPEL's effect\nwore off."]="El efecto del REPEL\nse ha pasado.",
["Go right ahead!"]="¡Adelante!",
["You don't have the\nBOULDERBADGE yet!"]="¡Aún no tienes la\nMEDALLA ROCA!",
["Oh! That is the\n{RAM}!"]="¡Oh! ¡Eso es el\n{RAM}!",
["You don't have the\n{RAM} yet!"]="¡Aún no tienes el\n{RAM}!",
["You need a\nBICYCLE for the\nCycling Road!"]="¡Necesitas una\nBICICLETA para el\nCarril Bici!",
["The boulder fell\nthrough the hole!"]="¡La roca cayó por\nel agujero!",
["PA: Ding-dong!\nTime's up!"]="AV: ¡Ding-dong!\n¡Se acabó el tiempo!",
["PA: Your SAFARI\nGAME is over!"]="AV: ¡Tu JUEGO\nSAFARI ha terminado!",
["PA: You're out of\nSAFARI BALLs!"]="AV: ¡No te quedan\nSAFARI BALLs!",
["{PLAYER} got\n%s!"]="¡{PLAYER} consiguió\n%s!",
["There's no more\nroom for POKéMON!\v%s was\vsent to POKéMON\vBOX %s on PC!"]="¡No hay sitio para\nmás POKéMON!\v¡%s fue\venviado a la CAJA\vPOKéMON %s del PC!",
["contribution is not a table"]="",
[" [%s %s.%s]"]=" [%s %s.%s]",
["Link battle needs\nthe same mods on\nboth games."]="El combate link\nnecesita los mismos\nmods en los dos\njuegos.",
["Your %s can't\nbattle on the\nother game."]="Tu %s no puede\nluchar en el otro\njuego.",
["Their %s isn't\nin this game.\n(%s)"]="Su %s no está\nen este juego.\n(%s)",
["%s wants\nto battle!"]="¡%s quiere\nluchar!",
["Link desync!\n%s differs.\fAre both games\nrunning the same\nmods?"]="¡Link desincroni-\nzado!\n%s difiere.\f¿Están los dos\njuegos con los\nmismos mods?",
["%s ran from\nthe battle!"]="¡%s huyó del\ncombate!",
["Items can't be\nused in a link\nbattle!"]="¡No se pueden usar\nobjetos en un\ncombate link!",
["%s is out of\nPOKéMON!\f%s wins!"]="¡%s no tiene\nPOKéMON!\f¡%s gana!",
["%s left the\nbattle."]="%s dejó el\ncombate.",
["%s ran out of\ntime!"]="¡%s se quedó\nsin tiempo!",
["Time's up! You\nforfeit the match."]="¡Se acabó el tiempo!\nPierdes el combate.",
["%s's %s can't\nbattle on this\ngame."]="El %s de %s\nno puede luchar en\neste juego.",
["%s's %s can't\nbattle on this\ngame.\n(%s)"]="El %s de %s\nno puede luchar en\neste juego.\n(%s)",
["%s vs %s!"]="¡%s contra %s!",
["Link error:\n%s"]="Error de link:\n%s",
["Online play runs\nvanilla for both\nplayers.\fTurn off %s\nand restart?"]="El juego en línea\nva sin mods para\nlos dos jugadores.\f¿Desactivar %s\ny reiniciar?",
["The link was\nbroken."]="Se ha perdido el\nlink.",
["Link battle\ncan't start."]="El combate link no\npuede empezar.",
["Mods here are listed, not reviewed - read the source and trust the author."]="Los mods aquí se listan, no se revisan - lee el código y confía en el autor.",
["No mod index added"]="No hay índice de mods",
["Add an index to browse mods. An index is a published list; paste its URL or its owner/repo."]="Añade un índice para explorar mods. Un índice es una lista publicada; pega su URL o su owner/repo.",
["Search mods"]="Buscar mods",
["This index lists no mods yet."]="Este índice aún no lista mods.",
["No mods match that search."]="Ningún mod coincide con esa búsqueda.",
"description":"Spanish for the app's own settings and menus. The game's text comes from your ROM and is untouched, so an English cartridge stays an English adventure with Spanish menus."
}
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.