lang: convertits els fitxers de text a json

This commit is contained in:
2025-06-06 23:59:27 +02:00
parent 2512345b2c
commit 767d38e170
22 changed files with 26093 additions and 1367 deletions

139
data/lang/ba_BA.json Normal file
View File

@@ -0,0 +1,139 @@
{
"MENU_TITLE_0": "JUGAR",
"MENU_TITLE_1": "OPCIONS",
"MENU_TITLE_2": "INSTRUCCIONS",
"MENU_TITLE_3": "EIXIR",
"MENU_OPTIONS_4": "FINESTRA",
"MENU_OPTIONS_5": "PANTALLA COMPLETA",
"MENU_OPTIONS_6": "PANTALLA COMPLETA FALSA",
"MENU_OPTIONS_7": "TAMANY DE FINESTRA",
"MENU_OPTIONS_8": "IDIOMA",
"MENU_OPTIONS_9": "[ ACEPTAR ]",
"MENU_OPTIONS_10": "[ CANCELAR ]",
"INSTRUCTIONS_11": "Objectiu",
"INSTRUCTIONS_12": "HAS D'EXPLOTAR",
"INSTRUCTIONS_13": "TANTS GLOBUS COM PUGUES",
"INSTRUCTIONS_14": "LA DIFICULTAT AUGMENTA",
"INSTRUCTIONS_15": "A MESURA QUE VAS PUNTUANT",
"INSTRUCTIONS_16": "Objectes",
"INSTRUCTIONS_17": "1.000 PUNTS",
"INSTRUCTIONS_18": "2.500 PUNTS",
"INSTRUCTIONS_19": "5.000 PUNTS",
"INSTRUCTIONS_20": "PARA EL TEMPS",
"INSTRUCTIONS_21": "VIDA EXTRA",
"INSTRUCTIONS_22": "PREM UNA TECLA PER A TORNAR",
"TITLE_23": "PULSA PER JUGAR",
"LANGUAGE_MENU_24": "ESPA{OL (ESPANYOL)",
"LANGUAGE_MENU_25": "BALOONCIA",
"LANGUAGE_MENU_26": "ENGLISH (ANGLES)",
"INTRO_27": "Un dia qualsevol de l'any 2000",
"INTRO_28": "Tot esta tranquil a la UPV",
"INTRO_29": "Fins que un desaprensiu...",
"INTRO_30": "HEY! ME ANE A FERME UN CORTAET...",
"INTRO_31": "UAAAAAAAAAAAAA!!!",
"INTRO_32": "Espera un moment...",
"INTRO_33": "Si resulta que no tinc solt!",
"INTRO_34": "VAJA BIRRIA DE MAQUINA !!!",
"INTRO_35": "blop... blop... blop...",
"GAME_TEXT_36": "Temps detes: ",
"GAME_TEXT_37": "D E M O",
"GAME_TEXT_38": " fases mes!",
"PLAYER_SELECTION_MENU_39": "Selecciona personatge",
"PLAYER_SELECTION_MENU_40": "Enrere",
"PAUSE_MENU_41": "Menu de pausa",
"HIGHSCORE_TABLE_42": "Millors puntuacions",
"GAME_OVER_SCREEN_43": "FI DEL JOC",
"GAME_OVER_SCREEN_44": "ELS TEUS PUNTS: ",
"GAME_OVER_SCREEN_45": "CONTINUAR?",
"PAUSE_MENU_46": "CONTINUAR",
"PAUSE_MENU_47": "EIXIR DEL JOC",
"GAME_OVER_MENU_48": "SI",
"GAME_OVER_MENU_49": "NO",
"GAME_COMPLETION_TEXT_50": "Felicitats!!",
"MENU_TITLE_51": "1 JUGADOR",
"MENU_TITLE_52": "2 JUGADORS",
"SCOREBOARD_53": "Jugador 1",
"SCOREBOARD_54": "Jugador 2",
"SCOREBOARD_55": "Multiplicador",
"SCOREBOARD_56": "Max. puntuacio",
"SCOREBOARD_57": "Fase ",
"MENU_OPTIONS_58": "MODE DE VISUALITZACIO",
"MENU_OPTIONS_59": "DIFICULTAT",
"MENU_OPTIONS_60": "FILTRE",
"MENU_OPTIONS_61": "SINC. VERTICAL",
"MENU_OPTIONS_62": "CONTROLS DEL JUGADOR 1",
"MENU_OPTIONS_63": "CONTROLS DEL JUGADOR 2",
"MENU_OPTIONS_64": "(FORA DE LINEA)",
"MISC_65": "-",
"MENU_OPTIONS_66": "FACIL",
"MENU_OPTIONS_67": "NORMAL",
"MENU_OPTIONS_68": "DIFICIL",
"MENU_OPTIONS_69": "Teclat",
"MENU_OPTIONS_70": "MANDO",
"MENU_OPTIONS_71": "LINEAL",
"MENU_OPTIONS_72": "NEAREST",
"MENU_OPTIONS_73": "ACTIVADA",
"MENU_OPTIONS_74": "DESACTIVADA",
"GAMEPLAY_75": "Endavant!",
"GAMEPLAY_76": "1.000.000 de punts!",
"GAME_OVER_SCREEN_77": "PUNTS J1: ",
"GAME_OVER_SCREEN_78": "PUNTS J2: ",
"GAME_TEXT_79": "Ultima fase!",
"NOTIFICATIONS_80": "Fallo al conectar a",
"NOTIFICATIONS_81": "No s'ha pogut obtenir",
"NOTIFICATIONS_82": "la puntuacio online",
"NOTIFICATIONS_83": "No ha especificat",
"NOTIFICATIONS_84": "cap jailerID",
"NOTIFICATIONS_85": "ha iniciat la sesio",
"NOTIFICATIONS_86": "Punts enviats: ",
"NOTIFICATIONS_87": "No s'ha pogut",
"NOTIFICATIONS_88": "enviar la puntuacio",
"ENTER_ID_89": "CONFIGURACIO EN LINEA",
"ENTER_ID_90": "INTRODUEIX UN JAILER_ID",
"ENTER_ID_91": "DEIXA BUIT PER A",
"ENTER_ID_92": "MODE FORA DE LINEA",
"MENU_OPTIONS_93": "TAULER DE PUNTS",
"NOTIFICATIONS_94": "Torna a polsar per eixir",
"DEFINE_BUTTONS_95": "Disparar cap a l'esquerra",
"DEFINE_BUTTONS_96": "Disparar cap amunt",
"DEFINE_BUTTONS_97": "Disparar cap a la dreta",
"DEFINE_BUTTONS_98": "Start",
"DEFINE_BUTTONS_99": "Servei",
"DEFINE_BUTTONS_100": "Jugador ",
"SCOREBOARD_101": "Mode demostracio",
"SCOREBOARD_102": "Game Over",
"SCOREBOARD_103": "Pulsa START",
"SCOREBOARD_104": "per jugar",
"SCOREBOARD_105": "Continuar?",
"SCOREBOARD_106": "Posa el nom",
"HELP_107": "Intercanviar mandos",
"HELP_108": "Configuracio",
"HELP_109": "Alternar el audio",
"HELP_110": "Filtres",
"HELP_111": "Reiniciar",
"HELP_112": "Pausar",
"HELP_113": "Eixir",
"SCOREBOARD_114": "Per favor",
"SCOREBOARD_115": "espere",
"NOTIFICATIONS_116": "Torna a polsar per apagar el sistema",
"GAME_TEXT_117": "SuperPoder!",
"GAME_TEXT_118": "+1 Colp",
"GAME_TEXT_119": "Temps!",
"SCOREBOARD_120": "Puntuacio",
"CREDITS_121": "PROGRAMAT I DISSENYAT PER",
"CREDITS_122": "GRAFICS DIBUIXATS PER",
"CREDITS_123": "MUSICA COMPOSADA PER",
"CREDITS_124": "EFECTES DE SO",
"NOTIFICATIONS_125": "Torna a polsar per reiniciar",
"NOTIFICATIONS_126": "Torna a polsar per canviar el idioma a",
"NOTIFICATIONS_127": "Idioma canviat a",
"MISC_128": "activat",
"MISC_129": "desactivat",
"MISC_130": "Dispar automatic",
"MISC_131": "Zoom de finestra",
"MISC_132": "Mode finestra",
"MISC_133": "Mode pantalla completa",
"MISC_134": "Mode d'escalat sencer",
"MISC_135": "Filtre",
"MISC_136": "Sincronisme vertical"
}

View File

@@ -1,410 +0,0 @@
## 0 - MENU DEL TITULO
JUGAR
## 1 - MENU DEL TITULO
OPCIONS
## 2 - MENU DEL TITULO
INSTRUCCIONS
## 3 - MENU DEL TITULO
EIXIR
## 4 - MENU DE OPCIONES
FINESTRA
## 5 - MENU DE OPCIONES
PANTALLA COMPLETA
## 6 - MENU DE OPCIONES
PANTALLA COMPLETA FALSA
## 7 - MENU DE OPCIONES
TAMANY DE FINESTRA
## 8 - MENU DE OPCIONES
IDIOMA
## 9 - MENU DE OPCIONES
[ ACEPTAR ]
## 10 - MENU DE OPCIONES
[ CANCELAR ]
## 11 - INSTRUCCIONES
Objectiu
## 12 - INSTRUCCIONES
HAS D'EXPLOTAR
## 13 - INSTRUCCIONES
TANTS GLOBUS COM PUGUES
## 14 - INSTRUCCIONES
LA DIFICULTAT AUGMENTA
## 15 - INSTRUCCIONES
A MESURA QUE VAS PUNTUANT
## 16 - INSTRUCCIONES
Objectes
## 17 - INSTRUCCIONES
1.000 PUNTS
## 18 - INSTRUCCIONES
2.500 PUNTS
## 19 - INSTRUCCIONES
5.000 PUNTS
## 20 - INSTRUCCIONES
PARA EL TEMPS
## 21 - INSTRUCCIONES
VIDA EXTRA
## 22 - INSTRUCCIONES
PREM UNA TECLA PER A TORNAR
## 23 - TITULO
PULSA PER JUGAR
## 24 - MENU SELECCION DE IDIOMA
ESPA{OL (ESPANYOL)
## 25 - MENU SELECCION DE IDIOMA
BALOONCIA
## 26 - MENU SELECCION DE IDIOMA
ENGLISH (ANGLES)
## 27 - INTRO
Un dia qualsevol de l'any 2000
## 28 - INTRO
Tot esta tranquil a la UPV
## 29 - INTRO
Fins que un desaprensiu...
## 30 - INTRO
HEY! ME ANE A FERME UN CORTAET...
## 31 - INTRO
UAAAAAAAAAAAAA!!!
## 32 - INTRO
Espera un moment...
## 33 - INTRO
Si resulta que no tinc solt!
## 34 - INTRO
VAJA BIRRIA DE MAQUINA !!!
## 35 - INTRO
blop... blop... blop...
## 36 - TEXTOS DEL JUEGO
Temps detes:
## 37 - TEXTOS DEL JUEGO
D E M O
## 38 - TEXTOS DEL JUEGO
fases mes!
## 39 - MENU SELECCION DE JUGADOR
Selecciona personatge
## 40 - MENU SELECCION DE JUGADOR
Enrere
## 41 - MENU DE PAUSA
Menu de pausa
## 42 - TABLA DE RECORDS
Millors puntuacions
## 43 - PANTALLA DE GAME OVER
FI DEL JOC
## 44 - PANTALLA DE GAME OVER
ELS TEUS PUNTS:
## 45 - PANTALLA DE GAME OVER
CONTINUAR?
## 46 - MENU DE PAUSA
CONTINUAR
## 47 - MENU DE PAUSA
EIXIR DEL JOC
## 48 - MENU GAME OVER
SI
## 49 - MENU GAME OVER
NO
## 50 - TEXTO DE COMPLETAR EL JUEGO
Felicitats!!
## 51 - MENU DEL TITULO
1 JUGADOR
## 52 - MENU DEL TITULO
2 JUGADORS
## 53 MARCADOR
Jugador 1
## 54 MARCADOR
Jugador 2
## 55 MARCADOR
Multiplicador
## 56 MARCADOR
Max. puntuacio
## 57 MARCADOR
Fase
## 58 - MENU DE OPCIONES
MODE DE VISUALITZACIO
## 59 - MENU DE OPCIONES
DIFICULTAT
## 60 - MENU DE OPCIONES
FILTRE
## 61 - MENU DE OPCIONES
SINC. VERTICAL
## 62 - MENU DE OPCIONES
CONTROLS DEL JUGADOR 1
## 63 - MENU DE OPCIONES
CONTROLS DEL JUGADOR 2
## 64 - MENU DE OPCIONES
(FORA DE LINEA)
## 65 -
-
## 66 - MENU DE OPCIONES
FACIL
## 67 - MENU DE OPCIONES
NORMAL
## 68 - MENU DE OPCIONES
DIFICIL
## 69 - MENU DE OPCIONES
Teclat
## 70 - MENU DE OPCIONES
MANDO
## 71 - MENU DE OPCIONES
LINEAL
## 72 - MENU DE OPCIONES
NEAREST
## 73 - MENU DE OPCIONES
ACTIVADA
## 74 - MENU DE OPCIONES
DESACTIVADA
## 75 - JUEGO
Endavant!
## 76 - JUEGO
1.000.000 de punts!
## 77 - PANTALLA DE GAME OVER
PUNTS J1:
## 78 - PANTALLA DE GAME OVER
PUNTS J2:
## 79 - TEXTOS DEL JUEGO
Ultima fase!
## 80 - NOTIFICACIONES
Fallo al conectar a
## 81 - NOTIFICACIONES
No s'ha pogut obtenir
## 82 - NOTIFICACIONES
la puntuacio online
## 83 - NOTIFICACIONES
No ha especificat
## 84 - NOTIFICACIONES
cap jailerID
## 85 - NOTIFICACIONES
ha iniciat la sesio
## 86 - NOTIFICACIONES
Punts enviats:
## 87 - NOTIFICACIONES
No s'ha pogut
## 88 - NOTIFICACIONES
enviar la puntuacio
## 89 - ENTER ID
CONFIGURACIO EN LINEA
## 90 - ENTER ID
INTRODUEIX UN JAILER_ID
## 91 - ENTER ID
DEIXA BUIT PER A
## 92 - ENTER ID
MODE FORA DE LINEA
## 93 - MENU OPCIONES
TAULER DE PUNTS
## 94 - NOTIFICACIONES
Torna a polsar per eixir
## 95 - DEFINE BUTTONS
Disparar cap a l'esquerra
## 96 - DEFINE BUTTONS
Disparar cap amunt
## 97 - DEFINE BUTTONS
Disparar cap a la dreta
## 98 - DEFINE BUTTONS
Start
## 99 - DEFINE BUTTONS
Servei
## 100 - DEFINE BUTTONS
Jugador
## 101 - MARCADOR
Mode demostracio
## 102 - MARCADOR
Game Over
## 103 - MARCADOR
Pulsa START
## 104 - MARCADOR
per jugar
## 105 - MARCADOR
Continuar?
## 106 - MARCADOR
Posa el nom
## 107 - AJUDA
Intercanviar mandos
## 108 - AJUDA
Configuracio
## 109 - AJUDA
Alternar el audio
## 110 - AJUDA
Filtres
## 111 - AJUDA
Reiniciar
## 112 - AJUDA
Pausar
## 113 - AJUDA
Eixir
## 114 - MARCADOR
Per favor
## 115 - MARCADOR
espere
## 116 - NOTIFICACIONES
Torna a polsar per apagar el sistema
## 117 - GAME TEXT
SuperPoder!
## 118 - GAME TEXT
+1 Colp
## 119 - GAME TEXT
Temps!
## 120 - SCOREBOARD
Puntuacio
## 121 - CREDITS
PROGRAMAT I DISSENYAT PER
## 122 - CREDITS
GRAFICS DIBUIXATS PER
## 123 - CREDITS
MUSICA COMPOSADA PER
## 124 - CREDITS
EFECTES DE SO
## 125 - NOTIFICACIONES
Torna a polsar per reiniciar
## 126 - NOTIFICACIONES
Torna a polsar per canviar el idioma a
## 127 - NOTIFICACIONES
Idioma canviat a
## 128 - VARIOS
activat
## 129 - VARIOS
desactivat
## 130 - VARIOS
Dispar automatic
## 131 - VARIOS
Zoom de finestra
## 132 - VARIOS
Mode finestra
## 133 - VARIOS
Mode pantalla completa
## 134 - VARIOS
Mode d'escalat sencer
## 135 - VARIOS
Filtre
## 136 - VARIOS
Sincronisme vertical

139
data/lang/en_UK.json Normal file
View File

@@ -0,0 +1,139 @@
{
"MENU_TITLE_0": "PLAY",
"MENU_TITLE_1": "OPTIONS",
"MENU_TITLE_2": "HOW TO PLAY",
"MENU_TITLE_3": "QUIT",
"MENU_OPTIONS_4": "WINDOW",
"MENU_OPTIONS_5": "FULLSCREEN",
"MENU_OPTIONS_6": "FAKE FULLSCREEN",
"MENU_OPTIONS_7": "WINDOW SIZE",
"MENU_OPTIONS_8": "LANGUAGE",
"MENU_OPTIONS_9": "[ ACCEPT ]",
"MENU_OPTIONS_10": "[ CANCEL ]",
"INSTRUCTIONS_11": "OBJECTIVE",
"INSTRUCTIONS_12": "YOU HAVE TO POP AS MANY",
"INSTRUCTIONS_13": "BALLOONS AS YOU CAN",
"INSTRUCTIONS_14": "DIFFICULTY WILL BE INCREASED",
"INSTRUCTIONS_15": "AS YOU SCORE POINTS",
"INSTRUCTIONS_16": "ITEMS",
"INSTRUCTIONS_17": "1.000 POINTS",
"INSTRUCTIONS_18": "2.500 POINTS",
"INSTRUCTIONS_19": "5.000 POINTS",
"INSTRUCTIONS_20": "TIME STOPPER",
"INSTRUCTIONS_21": "EXTRA HIT",
"INSTRUCTIONS_22": "PRESS ANY KEY TO RETURN",
"TITLE_23": "PRESS START BUTTON TO PLAY",
"LANGUAGE_MENU_24": "ESPA{OL (SPANISH)",
"LANGUAGE_MENU_25": "BALOONCIA (VALENCIAN)",
"LANGUAGE_MENU_26": "ENGLISH",
"INTRO_27": "Any day of the year 2000",
"INTRO_28": "Everything is quiet at the UPV",
"INTRO_29": "Until a bastard arrives...",
"INTRO_30": " YO! GONNA TAKE A CAFELITO... ",
"INTRO_31": "AAAAAAAARGHHHH!!!",
"INTRO_32": "Wait a moment...",
"INTRO_33": " I don't have any loose! ",
"INTRO_34": "FUCKING MACHINE!",
"INTRO_35": "Blop... blop... blop...",
"GAME_TEXT_36": "Time stopped: ",
"GAME_TEXT_37": "D E M O",
"GAME_TEXT_38": " stages left!",
"PLAYER_SELECTION_MENU_39": "Select Player",
"PLAYER_SELECTION_MENU_40": "Back",
"PAUSE_MENU_41": "Pause Menu",
"HIGHSCORE_TABLE_42": "Best scores",
"GAME_OVER_SCREEN_43": "GAME OVER",
"GAME_OVER_SCREEN_44": "YOUR SCORE: ",
"GAME_OVER_SCREEN_45": "CONTINUE?",
"PAUSE_MENU_46": "CONTINUE",
"PAUSE_MENU_47": "LEAVE GAME",
"GAME_OVER_MENU_48": "YES",
"GAME_OVER_MENU_49": "NO",
"GAME_COMPLETION_TEXT_50": "Congratulations!!",
"MENU_TITLE_51": "1 PLAYER",
"MENU_TITLE_52": "2 PLAYERS",
"SCOREBOARD_53": "Player 1",
"SCOREBOARD_54": "Player 2",
"SCOREBOARD_55": "Multiplier",
"SCOREBOARD_56": "High Score",
"SCOREBOARD_57": "Stage ",
"MENU_OPTIONS_58": "DISPLAY MODE",
"MENU_OPTIONS_59": "DIFFICULTY",
"MENU_OPTIONS_60": "FILTER",
"MENU_OPTIONS_61": "VSYNC",
"MENU_OPTIONS_62": "PLAYER 1 CONTROLS",
"MENU_OPTIONS_63": "PLAYER 2 CONTROLS",
"MENU_OPTIONS_64": "(OFFLINE MODE)",
"MISC_65": "-",
"MENU_OPTIONS_66": "EASY",
"MENU_OPTIONS_67": "NORMAL",
"MENU_OPTIONS_68": "HARD",
"MENU_OPTIONS_69": "Keyboard",
"MENU_OPTIONS_70": "GAME CONTROLLER",
"MENU_OPTIONS_71": "LINEAL",
"MENU_OPTIONS_72": "NEAREST",
"MENU_OPTIONS_73": "ON",
"MENU_OPTIONS_74": "OFF",
"GAMEPLAY_75": "Get Ready!",
"GAMEPLAY_76": "1.000.000 points!",
"GAME_OVER_SCREEN_77": "PLAYER1 SCORE: ",
"GAME_OVER_SCREEN_78": "PLAYER2 SCORE: ",
"GAME_TEXT_79": "Last stage!",
"NOTIFICATIONS_80": "Failed connecting to",
"NOTIFICATIONS_81": "Can't get",
"NOTIFICATIONS_82": "online scores",
"NOTIFICATIONS_83": "No JailerID",
"NOTIFICATIONS_84": "name was set",
"NOTIFICATIONS_85": "is logged in",
"NOTIFICATIONS_86": "Score submitted",
"NOTIFICATIONS_87": "Failed to send",
"NOTIFICATIONS_88": "score to online server",
"ENTER_ID_89": "ONLINE CONFIGURATION",
"ENTER_ID_90": "PLEASE ENTER AN ID",
"ENTER_ID_91": "LEAVE BLANK FOR",
"ENTER_ID_92": "OFFLINE MODE",
"MENU_OPTIONS_93": "HISCORE TABLE",
"NOTIFICATIONS_94": "Press again to quit",
"DEFINE_BUTTONS_95": "Fire left",
"DEFINE_BUTTONS_96": "Fire up",
"DEFINE_BUTTONS_97": "Fire right",
"DEFINE_BUTTONS_98": "Start",
"DEFINE_BUTTONS_99": "Service",
"DEFINE_BUTTONS_100": "Player",
"SCOREBOARD_101": "Demo mode",
"SCOREBOARD_102": "Game Over",
"SCOREBOARD_103": "Press START",
"SCOREBOARD_104": "to play",
"SCOREBOARD_105": "Continue?",
"SCOREBOARD_106": "Enter name",
"HELP_107": "Swap Controllers",
"HELP_108": "Configuration",
"HELP_109": "Toggle audio",
"HELP_110": "Shaders",
"HELP_111": "Reset",
"HELP_112": "Pause",
"HELP_113": "Exit",
"SCOREBOARD_114": "Please",
"SCOREBOARD_115": "wait",
"NOTIFICATIONS_116": "Press again to shutdown system",
"GAME_TEXT_117": "PowerUp",
"GAME_TEXT_118": "+1 Hit",
"GAME_TEXT_119": "Stop!",
"SCOREBOARD_120": "Score",
"CREDITS_121": "PROGRAMMED AND DESIGNED BY",
"CREDITS_122": "PIXELART DRAWN BY",
"CREDITS_123": "MUSIC COMPOSED BY",
"CREDITS_124": "SOUND EFFECTS",
"NOTIFICATIONS_125": "Press again to reset",
"NOTIFICATIONS_126": "Press again to change languaje to",
"NOTIFICATIONS_127": "Language set to",
"MISC_128": "on",
"MISC_129": "off",
"MISC_130": "Autofire",
"MISC_131": "Window zoom",
"MISC_132": "Window mode",
"MISC_133": "Fullscreen mode",
"MISC_134": "Integer scale",
"MISC_135": "Filter",
"MISC_136": "Vertical Sync"
}

View File

@@ -1,410 +0,0 @@
## 0 - MENU DEL TITULO
PLAY
## 1 - MENU DEL TITULO
OPTIONS
## 2 - MENU DEL TITULO
HOW TO PLAY
## 3 - MENU DEL TITULO
QUIT
## 4 - MENU DE OPCIONES
WINDOW
## 5 - MENU DE OPCIONES
FULLSCREEN
## 6 - MENU DE OPCIONES
FAKE FULLSCREEN
## 7 - MENU DE OPCIONES
WINDOW SIZE
## 8 - MENU DE OPCIONES
LANGUAGE
## 9 - MENU DE OPCIONES
[ ACCEPT ]
## 10 - MENU DE OPCIONES
[ CANCEL ]
## 11 - INSTRUCCIONES
OBJECTIVE
## 12 - INSTRUCCIONES
YOU HAVE TO POP AS MANY
## 13 - INSTRUCCIONES
BALLOONS AS YOU CAN
## 14 - INSTRUCCIONES
DIFFICULTY WILL BE INCREASED
## 15 - INSTRUCCIONES
AS YOU SCORE POINTS
## 16 - INSTRUCCIONES
ITEMS
## 17 - INSTRUCCIONES
1.000 POINTS
## 18 - INSTRUCCIONES
2.500 POINTS
## 19 - INSTRUCCIONES
5.000 POINTS
## 20 - INSTRUCCIONES
TIME STOPPER
## 21 - INSTRUCCIONES
EXTRA HIT
## 22 - INSTRUCCIONES
PRESS ANY KEY TO RETURN
## 23 - TITULO
PRESS START BUTTON TO PLAY
## 24 - MENU SELECCION DE IDIOMA
ESPA{OL (SPANISH)
## 25 - MENU SELECCION DE IDIOMA
BALOONCIA (VALENCIAN)
## 26 - MENU SELECCION DE IDIOMA
ENGLISH
## 27 - INTRO
Any day of the year 2000
## 28 - INTRO
Everything is quiet at the UPV
## 29 - INTRO
Until a bastard arrives...
## 30 - INTRO
YO! GONNA TAKE A CAFELITO...
## 31 - INTRO
AAAAAAAARGHHHH!!!
## 32 - INTRO
Wait a moment...
## 33 - INTRO
I don't have any loose!
## 34 - INTRO
FUCKING MACHINE!
## 35 - INTRO
Blop... blop... blop...
## 36 - TEXTOS DEL JUEGO
Time stopped:
## 37 - TEXTOS DEL JUEGO
D E M O
## 38 - TEXTOS DEL JUEGO
stages left!
## 39 - MENU SELECCION DE JUGADOR
Select Player
## 40 - MENU SELECCION DE JUGADOR
Back
## 41 - MENU DE PAUSA
Pause Menu
## 42 - TABLA DE RECORDS
Best scores
## 43 - PANTALLA DE GAME OVER
GAME OVER
## 44 - PANTALLA DE GAME OVER
YOUR SCORE:
## 45 - PANTALLA DE GAME OVER
CONTINUE?
## 46 - MENU DE PAUSA
CONTINUE
## 47 - MENU DE PAUSA
LEAVE GAME
## 48 - MENU GAME OVER
YES
## 49 - MENU GAME OVER
NO
## 50 - TEXTO DE COMPLETAR EL JUEGO
Congratulations!!
## 51 - MENU DEL TITULO
1 PLAYER
## 52 - MENU DEL TITULO
2 PLAYERS
## 53 - MARCADOR
Player 1
## 54 - MARCADOR
Player 2
## 55 - MARCADOR
Multiplier
## 56 - MARCADOR
High Score
## 57 - MARCADOR
Stage
## 58 - MENU DE OPCIONES
DISPLAY MODE
## 59 - MENU DE OPCIONES
DIFFICULTY
## 60 - MENU DE OPCIONES
FILTER
## 61 - MENU DE OPCIONES
VSYNC
## 62 - MENU DE OPCIONES
PLAYER 1 CONTROLS
## 63 - MENU DE OPCIONES
PLAYER 2 CONTROLS
## 64 - MENU DE OPCIONES
(OFFLINE MODE)
## 65 -
-
## 66 - MENU DE OPCIONES
EASY
## 67 - MENU DE OPCIONES
NORMAL
## 68 - MENU DE OPCIONES
HARD
## 69 - MENU DE OPCIONES
Keyboard
## 70 - MENU DE OPCIONES
GAME CONTROLLER
## 71 - MENU DE OPCIONES
LINEAL
## 72 - MENU DE OPCIONES
NEAREST
## 73 - MENU DE OPCIONES
ON
## 74 - MENU DE OPCIONES
OFF
## 75 - JUEGO
Get Ready!
## 76 - JUEGO
1.000.000 points!
## 77 - PANTALLA DE GAME OVER
PLAYER1 SCORE:
## 78 - PANTALLA DE GAME OVER
PLAYER2 SCORE:
## 79 - TEXTOS DEL JUEGO
Last stage!
## 80 - NOTIFICACIONES
Failed connecting to
## 81 - NOTIFICACIONES
Can't get
## 82 - NOTIFICACIONES
online scores
## 83 - NOTIFICACIONES
No JailerID
## 84 - NOTIFICACIONES
name was set
## 85 - NOTIFICACIONES
is logged in
## 86 - NOTIFICACIONES
Score submitted
## 87 - NOTIFICACIONES
Failed to send
## 88 - NOTIFICACIONES
score to online server
## 89 - ENTER ID
ONLINE CONFIGURATION
## 90 - ENTER ID
PLEASE ENTER AN ID
## 91 - ENTER ID
LEAVE BLANK FOR
## 92 - ENTER ID
OFFLINE MODE
## 93 - MENU OPCIONES
HISCORE TABLE
## 94 - NOTIFICACIONES
Press again to quit
## 95 - DEFINE BUTTONS
Fire left
## 96 - DEFINE BUTTONS
Fire up
## 97 - DEFINE BUTTONS
Fire right
## 98 - DEFINE BUTTONS
Start
## 99 - DEFINE BUTTONS
Service
## 100 - DEFINE BUTTONS
Player
## 101 - MARCADOR
Demo mode
## 102 - MARCADOR
Game Over
## 103 - MARCADOR
Press START
## 104 - MARCADOR
to play
## 105 - MARCADOR
Continue?
## 106 - MARCADOR
Enter name
## 107 - AJUDA
Swap Controllers
## 108 - AJUDA
Configuration
## 109 - AJUDA
Toggle audio
## 110 - AJUDA
Shaders
## 111 - AJUDA
Reset
## 112 - AJUDA
Pause
## 113 - AJUDA
Exit
## 114 - MARCADOR
Please
## 115 - MARCADOR
wait
## 116 - NOTIFICACIONES
Press again to shutdown system
## 117 - GAME TEXT
PowerUp
## 118 - GAME TEXT
+1 Hit
## 119 - GAME TEXT
Stop!
## 120 - SCOREBOARD
Score
## 121 - CREDITS
PROGRAMMED AND DESIGNED BY
## 122 - CREDITS
PIXELART DRAWN BY
## 123 - CREDITS
MUSIC COMPOSED BY
## 124 - CREDITS
SOUND EFFECTS
## 125 - NOTIFICACIONES
Press again to reset
## 126 - NOTIFICACIONES
Press again to change languaje to
## 127 - NOTIFICACIONES
Language set to
## 128 - VARIOS
on
## 129 - VARIOS
off
## 130 - VARIOS
Autofire
## 131 - VARIOS
Window zoom
## 132 - VARIOS
Window mode
## 133 - VARIOS
Fullscreen mode
## 134 - VARIOS
Integer scale
## 135 - VARIOS
Filter
## 136 - VARIOS
Vertical Sync

139
data/lang/es_ES.json Normal file
View File

@@ -0,0 +1,139 @@
{
"MENU_TITLE_0": "JUGAR",
"MENU_TITLE_1": "OPCIONES",
"MENU_TITLE_2": "INSTRUCCIONES",
"MENU_TITLE_3": "SALIR",
"MENU_OPTIONS_4": "VENTANA",
"MENU_OPTIONS_5": "PANTALLA COMPLETA",
"MENU_OPTIONS_6": "PANTALLA COMPLETA FALSA",
"MENU_OPTIONS_7": "TAMA{O DE VENTANA",
"MENU_OPTIONS_8": "IDIOMA",
"MENU_OPTIONS_9": "[ ACEPTAR ]",
"MENU_OPTIONS_10": "[ CANCELAR ]",
"INSTRUCTIONS_11": "OBJETIVO",
"INSTRUCTIONS_12": "TIENES QUE EXPLOTAR",
"INSTRUCTIONS_13": "TANTOS GLOBOS COMO PUEDAS",
"INSTRUCTIONS_14": "LA DIFICULTAD SE INCREMENTA",
"INSTRUCTIONS_15": "A MEDIDA QUE VAS PUNTUANDO",
"INSTRUCTIONS_16": "OBJETOS",
"INSTRUCTIONS_17": "1.000 PUNTOS",
"INSTRUCTIONS_18": "2.500 PUNTOS",
"INSTRUCTIONS_19": "5.000 PUNTOS",
"INSTRUCTIONS_20": "DETIENE EL TIEMPO",
"INSTRUCTIONS_21": "VIDA EXTRA",
"INSTRUCTIONS_22": "PULSA UNA TECLA PARA VOLVER",
"TITLE_23": "PULSA UN BOTON PARA JUGAR",
"LANGUAGE_MENU_24": "ESPA{OL",
"LANGUAGE_MENU_25": "BALOONCIA (VALENCIANO)",
"LANGUAGE_MENU_26": "ENGLISH (INGLES)",
"INTRO_27": "Un dia cualquiera del a{o 2000",
"INTRO_28": "Todo esta tranquilo en la UPV",
"INTRO_29": "Hasta que un desaprensivo...",
"INTRO_30": "HEY! VOY A SACARME UN TALLADET...",
"INTRO_31": "UAAAAAAAAAAAAA!!!",
"INTRO_32": "Espera un momento...",
"INTRO_33": "Si no llevo suelto encima!",
"INTRO_34": "MIERDA DE MAQUINA!",
"INTRO_35": "Blop... blop... blop...",
"GAME_TEXT_36": "Tiempo: ",
"GAME_TEXT_37": "D E M O",
"GAME_TEXT_38": " fases mas!",
"PLAYER_SELECTION_MENU_39": "Selecciona jugador",
"PLAYER_SELECTION_MENU_40": "Volver",
"PAUSE_MENU_41": "Menu de pausa",
"HIGHSCORE_TABLE_42": "Mejores puntuaciones",
"GAME_OVER_SCREEN_43": "FIN DE JUEGO",
"GAME_OVER_SCREEN_44": "TU PUNTUACION: ",
"GAME_OVER_SCREEN_45": "CONTINUAR?",
"PAUSE_MENU_46": "CONTINUAR",
"PAUSE_MENU_47": "SALIR DEL JUEGO",
"GAME_OVER_MENU_48": "SI",
"GAME_OVER_MENU_49": "NO",
"GAME_COMPLETION_TEXT_50": "Felicidades!!",
"MENU_TITLE_51": "1 JUGADOR",
"MENU_TITLE_52": "2 JUGADORES",
"SCOREBOARD_53": "Jugador 1",
"SCOREBOARD_54": "Jugador 2",
"SCOREBOARD_55": "Multiplicador",
"SCOREBOARD_56": "Max. puntuacion",
"SCOREBOARD_57": "Fase ",
"MENU_OPTIONS_58": "MODO DE VISUALIZACION",
"MENU_OPTIONS_59": "DIFICULTAD",
"MENU_OPTIONS_60": "FILTRO",
"MENU_OPTIONS_61": "SINC. VERTICAL",
"MENU_OPTIONS_62": "CONTROLES DEL JUGADOR 1",
"MENU_OPTIONS_63": "CONTROLES DEL JUGADOR 2",
"MENU_OPTIONS_64": "(MODO OFFLINE)",
"MISC_65": "-",
"MENU_OPTIONS_66": "FACIL",
"MENU_OPTIONS_67": "NORMAL",
"MENU_OPTIONS_68": "DIFICIL",
"MENU_OPTIONS_69": "Teclado",
"MENU_OPTIONS_70": "MANDO",
"MENU_OPTIONS_71": "LINEAL",
"MENU_OPTIONS_72": "NEAREST",
"MENU_OPTIONS_73": "ACTIVADA",
"MENU_OPTIONS_74": "DESACTIVADA",
"GAMEPLAY_75": "Adelante!",
"GAMEPLAY_76": "1.000.000 de puntos!",
"GAME_OVER_SCREEN_77": "PUNTUACION J1: ",
"GAME_OVER_SCREEN_78": "PUNTUACION J2: ",
"GAME_TEXT_79": "Ultima fase!",
"NOTIFICATIONS_80": "Fallo al conectar a ",
"NOTIFICATIONS_81": "No se ha podido obtener",
"NOTIFICATIONS_82": "la puntuacion online",
"NOTIFICATIONS_83": "No se ha especificado",
"NOTIFICATIONS_84": "ningun jailerID",
"NOTIFICATIONS_85": "ha iniciado la sesion",
"NOTIFICATIONS_86": "Puntos enviados: ",
"NOTIFICATIONS_87": "No se ha podido",
"NOTIFICATIONS_88": "enviar la puntuacion",
"ENTER_ID_89": "CONFIGURACION ONLNE",
"ENTER_ID_90": "INTRODUCE UN JAILER_ID",
"ENTER_ID_91": "DEJA EN BLANCO PARA",
"ENTER_ID_92": "MODO SIN CONEXION",
"MENU_OPTIONS_93": "TABLA DE PUNTUACIONES",
"NOTIFICATIONS_94": "Pulsa otra vez para salir",
"DEFINE_BUTTONS_95": "Disparar a la izquierda",
"DEFINE_BUTTONS_96": "Disparar hacia arriba",
"DEFINE_BUTTONS_97": "Disparar hacia la derecha",
"DEFINE_BUTTONS_98": "Start",
"DEFINE_BUTTONS_99": "Servicio",
"DEFINE_BUTTONS_100": "Jugador ",
"SCOREBOARD_101": "Mode demostracion",
"SCOREBOARD_102": "Game Over",
"SCOREBOARD_103": "Pulsa START",
"SCOREBOARD_104": "para jugar",
"SCOREBOARD_105": "Continuar?",
"SCOREBOARD_106": "Pon tu nombre",
"HELP_107": "Intercambiar mandos",
"HELP_108": "Configuracion",
"HELP_109": "Alternar el audio",
"HELP_110": "Filtros",
"HELP_111": "Reiniciar",
"HELP_112": "Pausar",
"HELP_113": "Salir",
"SCOREBOARD_114": "Por favor",
"SCOREBOARD_115": "espere",
"NOTIFICATIONS_116": "Pulsa otra vez para apagar el sistema",
"GAME_TEXT_117": "Potenciador",
"GAME_TEXT_118": "+1 Golpe",
"GAME_TEXT_119": "Tiempo!",
"SCOREBOARD_120": "Puntuacion",
"CREDITS_121": "PROGRAMADO Y DISE{ADO POR",
"CREDITS_122": "GRAFICOS DIBUJADOS POR",
"CREDITS_123": "MUSICA COMPUESTA POR",
"CREDITS_124": "EFECTOS DE SONIDO",
"NOTIFICATIONS_125": "Vuelve a pulsar para reiniciar",
"NOTIFICATIONS_126": "Vuelve a pulsar para cambiar el idioma a",
"NOTIFICATIONS_127": "Idioma cambiado a",
"MISC_128": "activado",
"MISC_129": "desactivado",
"MISC_130": "Disparo automático",
"MISC_131": "Zoom de ventana",
"MISC_132": "Modo ventana",
"MISC_133": "Modo pantalla completa",
"MISC_134": "Modo de escalado entero",
"MISC_135": "Filtro",
"MISC_136": "Sincronismo vertical"
}

View File

@@ -1,410 +0,0 @@
## 0 - MENU DEL TITULO
JUGAR
## 1 - MENU DEL TITULO
OPCIONES
## 2 - MENU DEL TITULO
INSTRUCCIONES
## 3 - MENU DEL TITULO
SALIR
## 4 - MENU DE OPCIONES
VENTANA
## 5 - MENU DE OPCIONES
PANTALLA COMPLETA
## 6 - MENU DE OPCIONES
PANTALLA COMPLETA FALSA
## 7 - MENU DE OPCIONES
TAMA{O DE VENTANA
## 8 - MENU DE OPCIONES
IDIOMA
## 9 - MENU DE OPCIONES
[ ACEPTAR ]
## 10 - MENU DE OPCIONES
[ CANCELAR ]
## 11 - INSTRUCCIONES
OBJETIVO
## 12 - INSTRUCCIONES
TIENES QUE EXPLOTAR
## 13 - INSTRUCCIONES
TANTOS GLOBOS COMO PUEDAS
## 14 - INSTRUCCIONES
LA DIFICULTAD SE INCREMENTA
## 15 - INSTRUCCIONES
A MEDIDA QUE VAS PUNTUANDO
## 16 - INSTRUCCIONES
OBJETOS
## 17 - INSTRUCCIONES
1.000 PUNTOS
## 18 - INSTRUCCIONES
2.500 PUNTOS
## 19 - INSTRUCCIONES
5.000 PUNTOS
## 20 - INSTRUCCIONES
DETIENE EL TIEMPO
## 21 - INSTRUCCIONES
VIDA EXTRA
## 22 - INSTRUCCIONES
PULSA UNA TECLA PARA VOLVER
## 23 - TITULO
PULSA UN BOTON PARA JUGAR
## 24 - MENU SELECCION DE IDIOMA
ESPA{OL
## 25 - MENU SELECCION DE IDIOMA
BALOONCIA (VALENCIANO)
## 26 - MENU SELECCION DE IDIOMA
ENGLISH (INGLES)
## 27 - INTRO
Un dia cualquiera del a{o 2000
## 28 - INTRO
Todo esta tranquilo en la UPV
## 29 - INTRO
Hasta que un desaprensivo...
## 30 - INTRO
HEY! VOY A SACARME UN TALLADET...
## 31 - INTRO
UAAAAAAAAAAAAA!!!
## 32 - INTRO
Espera un momento...
## 33 - INTRO
Si no llevo suelto encima!
## 34 - INTRO
MIERDA DE MAQUINA!
## 35 - INTRO
Blop... blop... blop...
## 36 - TEXTOS DEL JUEGO
Tiempo:
## 37 - TEXTOS DEL JUEGO
D E M O
## 38 - TEXTOS DEL JUEGO
fases mas!
## 39 - MENU SELECCION DE JUGADOR
Selecciona jugador
## 40 - MENU SELECCION DE JUGADOR
Volver
## 41 - MENU DE PAUSA
Menu de pausa
## 42 - TABLA DE RECORDS
Mejores puntuaciones
## 43 - PANTALLA DE GAME OVER
FIN DE JUEGO
## 44 - PANTALLA DE GAME OVER
TU PUNTUACION:
## 45 - PANTALLA DE GAME OVER
CONTINUAR?
## 46 - MENU DE PAUSA
CONTINUAR
## 47 - MENU DE PAUSA
SALIR DEL JUEGO
## 48 - MENU GAME OVER
SI
## 49 - MENU GAME OVER
NO
## 50 - TEXTO DE COMPLETAR EL JUEGO
Felicidades!!
## 51 - MENU DEL TITULO
1 JUGADOR
## 52 - MENU DEL TITULO
2 JUGADORES
## 53 - MARCADOR
Jugador 1
## 54 - MARCADOR
Jugador 2
## 55 - MARCADOR
Multiplicador
## 56 - MARCADOR
Max. puntuacion
## 57 - MARCADOR
Fase
## 58 - MENU DE OPCIONES
MODO DE VISUALIZACION
## 59 - MENU DE OPCIONES
DIFICULTAD
## 60 - MENU DE OPCIONES
FILTRO
## 61 - MENU DE OPCIONES
SINC. VERTICAL
## 62 - MENU DE OPCIONES
CONTROLES DEL JUGADOR 1
## 63 - MENU DE OPCIONES
CONTROLES DEL JUGADOR 2
## 64 - MENU DE OPCIONES
(MODO OFFLINE)
## 65 -
-
## 66 - MENU DE OPCIONES
FACIL
## 67 - MENU DE OPCIONES
NORMAL
## 68 - MENU DE OPCIONES
DIFICIL
## 69 - MENU DE OPCIONES
Teclado
## 70 - MENU DE OPCIONES
MANDO
## 71 - MENU DE OPCIONES
LINEAL
## 72 - MENU DE OPCIONES
NEAREST
## 73 - MENU DE OPCIONES
ACTIVADA
## 74 - MENU DE OPCIONES
DESACTIVADA
## 75 - JUEGO
Adelante!
## 76 - JUEGO
1.000.000 de puntos!
## 77 - PANTALLA DE GAME OVER
PUNTUACION J1:
## 78 - PANTALLA DE GAME OVER
PUNTUACION J2:
## 79 - TEXTOS DEL JUEGO
Ultima fase!
## 80 - NOTIFICACIONES
Fallo al conectar a
## 81 - NOTIFICACIONES
No se ha podido obtener
## 82 - NOTIFICACIONES
la puntuacion online
## 83 - NOTIFICACIONES
No se ha especificado
## 84 - NOTIFICACIONES
ningun jailerID
## 85 - NOTIFICACIONES
ha iniciado la sesion
## 86 - NOTIFICACIONES
Puntos enviados:
## 87 - NOTIFICACIONES
No se ha podido
## 88 - NOTIFICACIONES
enviar la puntuacion
## 89 - ENTER ID
CONFIGURACION ONLNE
## 90 - ENTER ID
INTRODUCE UN JAILER_ID
## 91 - ENTER ID
DEJA EN BLANCO PARA
## 92 - ENTER ID
MODO SIN CONEXION
## 93 - MENU OPCIONES
TABLA DE PUNTUACIONES
## 94 - NOTIFICACIONES
Pulsa otra vez para salir
## 95 - DEFINE BUTTONS
Disparar a la izquierda
## 96 - DEFINE BUTTONS
Disparar hacia arriba
## 97 - DEFINE BUTTONS
Disparar hacia la derecha
## 98 - DEFINE BUTTONS
Start
## 99 - DEFINE BUTTONS
Servicio
## 100 - DEFINE BUTTONS
Jugador
## 101 - MARCADOR
Mode demostracion
## 102 - MARCADOR
Game Over
## 103 - MARCADOR
Pulsa START
## 104 - MARCADOR
para jugar
## 105 - MARCADOR
Continuar?
## 106 - MARCADOR
Pon tu nombre
## 107 - AJUDA
Intercambiar mandos
## 108 - AJUDA
Configuracion
## 109 - AJUDA
Alternar el audio
## 110 - AJUDA
Filtros
## 111 - AJUDA
Reiniciar
## 112 - AJUDA
Pausar
## 113 - AJUDA
Salir
## 114 - MARCADOR
Por favor
## 115 - MARCADOR
espere
## 94 - NOTIFICACIONES
Pulsa otra vez para apagar el sistema
## 117 - GAME TEXT
Potenciador
## 118 - GAME TEXT
+1 Golpe
## 119 - GAME TEXT
Tiempo!
## 120 - SCOREBOARD
Puntuacion
## 121 - CREDITS
PROGRAMADO Y DISE{ADO POR
## 122 - CREDITS
GRAFICOS DIBUJADOS POR
## 123 - CREDITS
MUSICA COMPUESTA POR
## 124 - CREDITS
EFECTOS DE SONIDO
## 125 - NOTIFICACIONES
Vuelve a pulsar para reiniciar
## 126 - NOTIFICACIONES
Vuelve a pulsar para cambiar el idioma a
## 127 - NOTIFICACIONES
Idioma cambiado a
## 128 - VARIOS
activado
## 129 - VARIOS
desactivado
## 130 - VARIOS
Disparo automático
## 131 - VARIOS
Zoom de ventana
## 132 - VARIOS
Modo ventana
## 133 - VARIOS
Modo pantalla completa
## 134 - VARIOS
Modo de escalado entero
## 135 - VARIOS
Filtro
## 136 - VARIOS
Sincronismo vertical

View File

@@ -169,10 +169,10 @@ void Credits::fillTextTexture()
SDL_RenderClear(Screen::get()->getRenderer()); SDL_RenderClear(Screen::get()->getRenderer());
const std::array<std::string, 10> TEXTS = { const std::array<std::string, 10> TEXTS = {
lang::getText(121), lang::getText("CREDITS_121"),
lang::getText(122), lang::getText("CREDITS_122"),
lang::getText(123), lang::getText("CREDITS_123"),
lang::getText(124), lang::getText("CREDITS_124"),
"JAILDESIGNER", "JAILDESIGNER",
"JAILDOCTOR (INTRO)", "JAILDOCTOR (INTRO)",
"ERIC MATYAS (SOUNDIMAGE.ORG)", "ERIC MATYAS (SOUNDIMAGE.ORG)",

View File

@@ -28,7 +28,7 @@ void DefineButtons::render()
{ {
if (enabled_) if (enabled_)
{ {
text_->writeCentered(x_, y_ - 10, lang::getText(100) + std::to_string(options.controllers.at(index_controller_).player_id)); text_->writeCentered(x_, y_ - 10, lang::getText("DEFINE_BUTTONS_100") + std::to_string(options.controllers.at(index_controller_).player_id));
text_->writeCentered(x_, y_, controller_names_.at(index_controller_)); text_->writeCentered(x_, y_, controller_names_.at(index_controller_));
text_->writeCentered(x_, y_ + 10, buttons_.at(index_button_).label); text_->writeCentered(x_, y_ + 10, buttons_.at(index_button_).label);
} }
@@ -135,9 +135,9 @@ bool DefineButtons::checkButtonNotInUse(SDL_GamepadButton button)
void DefineButtons::clearButtons() void DefineButtons::clearButtons()
{ {
buttons_.clear(); buttons_.clear();
buttons_.emplace_back(lang::getText(95), InputAction::FIRE_LEFT, SDL_GAMEPAD_BUTTON_INVALID); buttons_.emplace_back(lang::getText("DEFINE_BUTTONS_95"), InputAction::FIRE_LEFT, SDL_GAMEPAD_BUTTON_INVALID);
buttons_.emplace_back(lang::getText(96), InputAction::FIRE_CENTER, SDL_GAMEPAD_BUTTON_INVALID); buttons_.emplace_back(lang::getText("DEFINE_BUTTONS_96"), InputAction::FIRE_CENTER, SDL_GAMEPAD_BUTTON_INVALID);
buttons_.emplace_back(lang::getText(97), InputAction::FIRE_RIGHT, SDL_GAMEPAD_BUTTON_INVALID); buttons_.emplace_back(lang::getText("DEFINE_BUTTONS_97"), InputAction::FIRE_RIGHT, SDL_GAMEPAD_BUTTON_INVALID);
buttons_.emplace_back(lang::getText(98), InputAction::START, SDL_GAMEPAD_BUTTON_INVALID); buttons_.emplace_back(lang::getText("DEFINE_BUTTONS_98"), InputAction::START, SDL_GAMEPAD_BUTTON_INVALID);
buttons_.emplace_back(lang::getText(99), InputAction::SERVICE, SDL_GAMEPAD_BUTTON_INVALID); buttons_.emplace_back(lang::getText("DEFINE_BUTTONS_99"), InputAction::SERVICE, SDL_GAMEPAD_BUTTON_INVALID);
} }

View File

@@ -460,9 +460,9 @@ void Director::setFileList()
Asset::get()->add(prefix + "/data/font/04b_25_reversed_2x.png", AssetType::BITMAP); Asset::get()->add(prefix + "/data/font/04b_25_reversed_2x.png", AssetType::BITMAP);
// Textos // Textos
Asset::get()->add(prefix + "/data/lang/es_ES.txt", AssetType::LANG); Asset::get()->add(prefix + "/data/lang/es_ES.json", AssetType::LANG);
Asset::get()->add(prefix + "/data/lang/en_UK.txt", AssetType::LANG); Asset::get()->add(prefix + "/data/lang/en_UK.json", AssetType::LANG);
Asset::get()->add(prefix + "/data/lang/ba_BA.txt", AssetType::LANG); Asset::get()->add(prefix + "/data/lang/ba_BA.json", AssetType::LANG);
// Si falta algun fichero, sale del programa // Si falta algun fichero, sale del programa
if (!Asset::get()->check()) if (!Asset::get()->check())
@@ -692,20 +692,20 @@ std::string Director::getLangFile(lang::Code code)
{ {
switch (code) switch (code)
{ {
case lang::Code::ba_BA: case lang::Code::VALENCIAN:
return Asset::get()->get("ba_BA.txt"); return Asset::get()->get("ba_BA.json");
break; break;
case lang::Code::es_ES: case lang::Code::SPANISH:
return Asset::get()->get("es_ES.txt"); return Asset::get()->get("es_ES.json");
break; break;
case lang::Code::en_UK: case lang::Code::ENGLISH:
return Asset::get()->get("en_UK.txt"); return Asset::get()->get("en_UK.json");
break; break;
default: default:
break; break;
} }
return Asset::get()->get("en_UK.txt"); return Asset::get()->get("en_UK.json");
} }
#ifdef ARCADE #ifdef ARCADE

View File

@@ -276,7 +276,7 @@ void Game::updateStage()
else else
{ {
auto text = Resource::get()->getText("04b_25_2x"); auto text = Resource::get()->getText("04b_25_2x");
const std::string caption = std::to_string(10 - Stage::number) + lang::getText(38); const std::string caption = std::to_string(10 - Stage::number) + lang::getText("GAME_TEXT_38");
createMessage(paths, text->writeToTexture(caption, 1, -4)); createMessage(paths, text->writeToTexture(caption, 1, -4));
} }
} }
@@ -1727,12 +1727,12 @@ void Game::initPlayers(int player_id)
const int y = param.game.play_area.rect.h - 30; const int y = param.game.play_area.rect.h - 30;
players_.emplace_back(std::make_unique<Player>(1, param.game.play_area.first_quarter_x - 15, y, demo_.enabled, param.game.play_area.rect, player_textures_[0], player_animations_)); players_.emplace_back(std::make_unique<Player>(1, param.game.play_area.first_quarter_x - 15, y, demo_.enabled, param.game.play_area.rect, player_textures_[0], player_animations_));
players_.back()->setScoreBoardPanel(SCOREBOARD_LEFT_PANEL); players_.back()->setScoreBoardPanel(SCOREBOARD_LEFT_PANEL);
players_.back()->setName(lang::getText(53)); players_.back()->setName(lang::getText("SCOREBOARD_53"));
players_.back()->setController(getController(players_.back()->getId())); players_.back()->setController(getController(players_.back()->getId()));
players_.emplace_back(std::make_unique<Player>(2, param.game.play_area.third_quarter_x - 15, y, demo_.enabled, param.game.play_area.rect, player_textures_[1], player_animations_)); players_.emplace_back(std::make_unique<Player>(2, param.game.play_area.third_quarter_x - 15, y, demo_.enabled, param.game.play_area.rect, player_textures_[1], player_animations_));
players_.back()->setScoreBoardPanel(SCOREBOARD_RIGHT_PANEL); players_.back()->setScoreBoardPanel(SCOREBOARD_RIGHT_PANEL);
players_.back()->setName(lang::getText(54)); players_.back()->setName(lang::getText("SCOREBOARD_53"));
players_.back()->setController(getController(players_.back()->getId())); players_.back()->setController(getController(players_.back()->getId()));
// Activa el jugador que coincide con el "player_id" // Activa el jugador que coincide con el "player_id"

View File

@@ -30,10 +30,10 @@ namespace globalInputs
{ {
// Si la notificación de salir no está activa, muestra la notificación // Si la notificación de salir no está activa, muestra la notificación
#ifdef ARCADE #ifdef ARCADE
const int INDEX = code == section::Options::QUIT_WITH_CONTROLLER ? 116 : 94; const std::string TEXT = code == section::Options::QUIT_WITH_CONTROLLER ? lang::getText("NOTIFICATIONS_116") : lang::getText("NOTIFICATIONS_94");
Notifier::get()->show({lang::getText(INDEX), std::string()}, -1, CODE); Notifier::get()->show(TEXT, std::string()}, -1, CODE);
#else #else
Notifier::get()->show({lang::getText(94), std::string()}, -1, CODE); Notifier::get()->show({lang::getText("NOTIFICATIONS_94"), std::string()}, -1, CODE);
#endif #endif
} }
} }
@@ -45,11 +45,11 @@ namespace globalInputs
if (Notifier::get()->checkCode(CODE)) if (Notifier::get()->checkCode(CODE))
{ {
section::name = section::Name::INIT; section::name = section::Name::INIT;
Notifier::get()->show({lang::getText(111)}); Notifier::get()->show({lang::getText("HELP_111")});
} }
else else
{ {
Notifier::get()->show({lang::getText(125), std::string()}, -1, CODE); Notifier::get()->show({lang::getText("NOTIFICATIONS_125"), std::string()}, -1, CODE);
} }
} }
@@ -65,21 +65,21 @@ namespace globalInputs
void toggleIntegerScale() void toggleIntegerScale()
{ {
Screen::get()->toggleIntegerScale(); Screen::get()->toggleIntegerScale();
Notifier::get()->show({lang::getText(134) + " " + boolToOnOff(options.video.integer_scale)}); Notifier::get()->show({lang::getText("MISC_134") + " " + boolToOnOff(options.video.integer_scale)});
} }
// Activa / desactiva el vsync // Activa / desactiva el vsync
void toggleVSync() void toggleVSync()
{ {
Screen::get()->toggleVSync(); Screen::get()->toggleVSync();
Notifier::get()->show({lang::getText(136) + " " + boolToOnOff(options.video.v_sync)}); Notifier::get()->show({lang::getText("MISC_136") + " " + boolToOnOff(options.video.v_sync)});
} }
// Activa o desactiva los shaders // Activa o desactiva los shaders
void toggleShaders() void toggleShaders()
{ {
Screen::get()->toggleShaders(); Screen::get()->toggleShaders();
Notifier::get()->show({lang::getText(135) + " " + boolToOnOff(options.video.shaders)}); Notifier::get()->show({lang::getText("MISC_135") + " " + boolToOnOff(options.video.shaders)});
} }
// Obtiene una fichero a partir de un lang::Code // Obtiene una fichero a partir de un lang::Code
@@ -87,14 +87,14 @@ namespace globalInputs
{ {
switch (code) switch (code)
{ {
case lang::Code::ba_BA: case lang::Code::VALENCIAN:
return Asset::get()->get("ba_BA.txt"); return Asset::get()->get("ba_BA.json");
break; break;
case lang::Code::es_ES: case lang::Code::SPANISH:
return Asset::get()->get("es_ES.txt"); return Asset::get()->get("es_ES.json");
break; break;
default: default:
return Asset::get()->get("en_UK.txt"); return Asset::get()->get("en_UK.json");
break; break;
} }
} }
@@ -104,10 +104,10 @@ namespace globalInputs
{ {
switch (code) switch (code)
{ {
case lang::Code::ba_BA: case lang::Code::VALENCIAN:
return " \"ba_BA\""; return " \"ba_BA\"";
break; break;
case lang::Code::es_ES: case lang::Code::SPANISH:
return " \"es_ES\""; return " \"es_ES\"";
break; break;
default: default:
@@ -126,12 +126,12 @@ namespace globalInputs
lang::loadFromFile(getLangFile(static_cast<lang::Code>(options.game.language))); lang::loadFromFile(getLangFile(static_cast<lang::Code>(options.game.language)));
section::name = section::Name::INIT; section::name = section::Name::INIT;
section::options = section::Options::RELOAD; section::options = section::Options::RELOAD;
Notifier::get()->show({lang::getText(127) + getLangName(options.game.language)}); Notifier::get()->show({lang::getText("NOTIFICATIONS_127") + getLangName(options.game.language)});
} }
else else
{ {
const auto NEXT = lang::getNextLangCode(options.game.language); const auto NEXT = lang::getNextLangCode(options.game.language);
Notifier::get()->show({lang::getText(126) + getLangName(NEXT), std::string()}, -1, CODE); Notifier::get()->show({lang::getText("NOTIFICATIONS_126") + getLangName(NEXT), std::string()}, -1, CODE);
} }
} }
@@ -139,7 +139,7 @@ namespace globalInputs
void toggleFireMode() void toggleFireMode()
{ {
options.game.autofire = !options.game.autofire; options.game.autofire = !options.game.autofire;
Notifier::get()->show({lang::getText(130) + " " + boolToOnOff(options.game.autofire)}); Notifier::get()->show({lang::getText("MISC_130") + " " + boolToOnOff(options.game.autofire)});
} }
// Salta una sección del juego // Salta una sección del juego
@@ -271,7 +271,7 @@ namespace globalInputs
if (Input::get()->checkInput(InputAction::WINDOW_FULLSCREEN, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD)) if (Input::get()->checkInput(InputAction::WINDOW_FULLSCREEN, INPUT_DO_NOT_ALLOW_REPEAT, InputDeviceToUse::KEYBOARD))
{ {
Screen::get()->toggleFullscreen(); Screen::get()->toggleFullscreen();
const std::string MODE = options.video.fullscreen ? lang::getText(133) : lang::getText(132); const std::string MODE = options.video.fullscreen ? lang::getText("MISC_133") : lang::getText("MISC_132");
Notifier::get()->show({MODE}); Notifier::get()->show({MODE});
return; return;
} }
@@ -281,7 +281,7 @@ namespace globalInputs
{ {
if (Screen::get()->decWindowZoom()) if (Screen::get()->decWindowZoom())
{ {
Notifier::get()->show({lang::getText(131) + " x" + std::to_string(options.window.size)}); Notifier::get()->show({lang::getText("MISC_131") + " x" + std::to_string(options.window.size)});
} }
return; return;
} }
@@ -291,7 +291,7 @@ namespace globalInputs
{ {
if (Screen::get()->incWindowZoom()) if (Screen::get()->incWindowZoom())
{ {
Notifier::get()->show({lang::getText(131) + " x" + std::to_string(options.window.size)}); Notifier::get()->show({lang::getText("MISC_131") + " x" + std::to_string(options.window.size)});
} }
return; return;
} }

View File

@@ -221,7 +221,7 @@ void HiScoreTable::createSprites()
const int first_line = (param.game.height - size) / 2; const int first_line = (param.game.height - size) / 2;
// Crea el sprite para el texto de cabecera // Crea el sprite para el texto de cabecera
header_ = std::make_unique<Sprite>(header_text->writeDXToTexture(TEXT_COLOR, lang::getText(42), -2, background_fade_color_.getInverse().lighten(25))); header_ = std::make_unique<Sprite>(header_text->writeDXToTexture(TEXT_COLOR, lang::getText("HIGHSCORE_TABLE_42"), -2, background_fade_color_.getInverse().lighten(25)));
header_->setPosition(param.game.game_area.center_x - (header_->getWidth() / 2), first_line); header_->setPosition(param.game.game_area.center_x - (header_->getWidth() / 2), first_line);
// Crea los sprites para las entradas en la tabla de puntuaciones // Crea los sprites para las entradas en la tabla de puntuaciones

View File

@@ -139,38 +139,45 @@ void Instructions::fillTexture()
// Calcula cual es el texto más largo de las descripciones de los items // Calcula cual es el texto más largo de las descripciones de los items
int lenght = 0; int lenght = 0;
for (int i = 17; i <= 21; ++i) const std::array<std::string, 5> ITEM_DESCRIPTIONS = {
lang::getText("INSTRUCTIONS_17"),
lang::getText("INSTRUCTIONS_18"),
lang::getText("INSTRUCTIONS_19"),
lang::getText("INSTRUCTIONS_20"),
lang::getText("INSTRUCTIONS_21")
};
for (const auto& desc : ITEM_DESCRIPTIONS)
{ {
const int l = text_->lenght(lang::getText(i)); const int l = text_->lenght(desc);
lenght = l > lenght ? l : lenght; lenght = l > lenght ? l : lenght;
} }
const int anchor_item = (param.game.width - (lenght + desp_x)) / 2; const int ANCHOR_ITEM = (param.game.width - (lenght + desp_x)) / 2;
// Escribe el texto de las instrucciones // Escribe el texto de las instrucciones
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, first_line, lang::getText(11), 1, ORANGE_COLOR, 1, SHADOW_TEXT_COLOR); text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, first_line, lang::getText("INSTRUCTIONS_11"), 1, ORANGE_COLOR, 1, SHADOW_TEXT_COLOR);
const int anchor1 = first_line + space_post_header; const int anchor1 = first_line + space_post_header;
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_between_lines * 0, lang::getText(12), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR); text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_between_lines * 0, lang::getText("INSTRUCTIONS_12"), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR);
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_between_lines * 1, lang::getText(13), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR); text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_between_lines * 1, lang::getText("INSTRUCTIONS_13"), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR);
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_new_paragraph + space_between_lines * 2, lang::getText(14), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR); text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_new_paragraph + space_between_lines * 2, lang::getText("INSTRUCTIONS_14"), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR);
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_new_paragraph + space_between_lines * 3, lang::getText(15), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR); text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor1 + space_new_paragraph + space_between_lines * 3, lang::getText("INSTRUCTIONS_15"), 1, NO_COLOR, 1, SHADOW_TEXT_COLOR);
// Escribe el texto de los objetos y sus puntos // Escribe el texto de los objetos y sus puntos
const int anchor2 = anchor1 + space_pre_header + space_new_paragraph + space_between_lines * 3; const int anchor2 = anchor1 + space_pre_header + space_new_paragraph + space_between_lines * 3;
text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor2, lang::getText(16), 1, ORANGE_COLOR, 1, SHADOW_TEXT_COLOR); text_->writeDX(TEXT_CENTER | TEXT_COLOR | TEXT_SHADOW, param.game.game_area.center_x, anchor2, lang::getText("INSTRUCTIONS_16"), 1, ORANGE_COLOR, 1, SHADOW_TEXT_COLOR);
const int anchor3 = anchor2 + space_post_header; const int anchor3 = anchor2 + space_post_header;
text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 0, lang::getText(17), SHADOW_TEXT_COLOR); text_->writeShadowed(ANCHOR_ITEM + desp_x, anchor3 + space_between_item_lines * 0, lang::getText("INSTRUCTIONS_17"), SHADOW_TEXT_COLOR);
text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 1, lang::getText(18), SHADOW_TEXT_COLOR); text_->writeShadowed(ANCHOR_ITEM + desp_x, anchor3 + space_between_item_lines * 1, lang::getText("INSTRUCTIONS_18"), SHADOW_TEXT_COLOR);
text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 2, lang::getText(19), SHADOW_TEXT_COLOR); text_->writeShadowed(ANCHOR_ITEM + desp_x, anchor3 + space_between_item_lines * 2, lang::getText("INSTRUCTIONS_19"), SHADOW_TEXT_COLOR);
text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 3, lang::getText(20), SHADOW_TEXT_COLOR); text_->writeShadowed(ANCHOR_ITEM + desp_x, anchor3 + space_between_item_lines * 3, lang::getText("INSTRUCTIONS_20"), SHADOW_TEXT_COLOR);
text_->writeShadowed(anchor_item + desp_x, anchor3 + space_between_item_lines * 4, lang::getText(21), SHADOW_TEXT_COLOR); text_->writeShadowed(ANCHOR_ITEM + desp_x, anchor3 + space_between_item_lines * 4, lang::getText("INSTRUCTIONS_21"), SHADOW_TEXT_COLOR);
// Deja el renderizador como estaba // Deja el renderizador como estaba
SDL_SetRenderTarget(renderer_, temp); SDL_SetRenderTarget(renderer_, temp);
// Da valor a la variable // Da valor a la variable
sprite_pos_.x = anchor_item; sprite_pos_.x = ANCHOR_ITEM;
sprite_pos_.y = anchor3 - ((param.game.item_size - text_->getCharacterSize()) / 2); sprite_pos_.y = anchor3 - ((param.game.item_size - text_->getCharacterSize()) / 2);
} }

View File

@@ -396,39 +396,39 @@ void Intro::initTexts()
} }
// Un dia qualsevol de l'any 2000 // Un dia qualsevol de l'any 2000
texts_.at(0)->setCaption(lang::getText(27)); texts_.at(0)->setCaption(lang::getText("INTRO_27"));
texts_.at(0)->setSpeed(8); texts_.at(0)->setSpeed(8);
// Tot esta tranquil a la UPV // Tot esta tranquil a la UPV
texts_.at(1)->setCaption(lang::getText(28)); texts_.at(1)->setCaption(lang::getText("INTRO_28"));
texts_.at(1)->setSpeed(8); texts_.at(1)->setSpeed(8);
// Fins que un desaprensiu... // Fins que un desaprensiu...
texts_.at(2)->setCaption(lang::getText(29)); texts_.at(2)->setCaption(lang::getText("INTRO_29"));
texts_.at(2)->setSpeed(12); texts_.at(2)->setSpeed(12);
// HEY! ME ANE A FERME UN CORTAET... // HEY! ME ANE A FERME UN CORTAET...
texts_.at(3)->setCaption(lang::getText(30)); texts_.at(3)->setCaption(lang::getText("INTRO_30"));
texts_.at(3)->setSpeed(8); texts_.at(3)->setSpeed(8);
// UAAAAAAAAAAAAA!!! // UAAAAAAAAAAAAA!!!
texts_.at(4)->setCaption(lang::getText(31)); texts_.at(4)->setCaption(lang::getText("INTRO_31"));
texts_.at(4)->setSpeed(1); texts_.at(4)->setSpeed(1);
// Espera un moment... // Espera un moment...
texts_.at(5)->setCaption(lang::getText(32)); texts_.at(5)->setCaption(lang::getText("INTRO_32"));
texts_.at(5)->setSpeed(16); texts_.at(5)->setSpeed(16);
// Si resulta que no tinc solt! // Si resulta que no tinc solt!
texts_.at(6)->setCaption(lang::getText(33)); texts_.at(6)->setCaption(lang::getText("INTRO_33"));
texts_.at(6)->setSpeed(2); texts_.at(6)->setSpeed(2);
// MERDA DE MAQUINA! // MERDA DE MAQUINA!
texts_.at(7)->setCaption(lang::getText(34)); texts_.at(7)->setCaption(lang::getText("INTRO_34"));
texts_.at(7)->setSpeed(3); texts_.at(7)->setSpeed(3);
// Blop... blop... blop... // Blop... blop... blop...
texts_.at(8)->setCaption(lang::getText(35)); texts_.at(8)->setCaption(lang::getText("INTRO_35"));
texts_.at(8)->setSpeed(20); texts_.at(8)->setSpeed(20);
for (auto &text : texts_) for (auto &text : texts_)

25526
source/json.hpp Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,47 +1,53 @@
#include "lang.h" #include "lang.h"
#include <fstream> // Para basic_ifstream, basic_istream, ifstream #include <fstream>
#include <vector> // Para vector #include <unordered_map>
#include "json.hpp"
using json = nlohmann::json;
namespace lang namespace lang
{ {
std::vector<std::string> texts; // Vector con los textos std::unordered_map<std::string, std::string> texts;
// Inicializa los textos del juego en el idioma seleccionado // Inicializa los textos del juego en el idioma seleccionado
bool loadFromFile(const std::string &file_path) bool loadFromFile(const std::string &file_path)
{ {
texts.clear(); texts.clear();
bool success = false;
std::ifstream rfile(file_path); std::ifstream rfile(file_path);
if (rfile.is_open() && rfile.good()) if (!rfile.is_open())
{ return false;
success = true;
std::string line;
// Lee el resto de datos del fichero try
while (std::getline(rfile, line)) {
json j;
rfile >> j;
for (auto &el : j.items())
{ {
// Almacena solo las lineas que no empiezan por # o no esten vacias texts[el.key()] = el.value();
const bool TEST1 = line.substr(0, 1) != "#"; }
const bool TEST2 = !line.empty(); }
if (TEST1 && TEST2) catch (const std::exception &e)
{ {
texts.push_back(line); // Puedes loguear el error si quieres
} return false;
};
} }
return success; return true;
} }
// Obtiene la cadena de texto del indice // Obtiene el texto por clave
std::string getText(int index) std::string getText(const std::string &key)
{ {
return texts.at(index); auto it = texts.find(key);
if (it != texts.end())
return it->second;
else
return "[missing text: " + key + "]";
} }
// Obtiene el codigo del idioma del siguiente idioma // Obtiene el código del siguiente idioma disponible
Code getNextLangCode(Code lang) Code getNextLangCode(Code lang)
{ {
auto index = static_cast<int>(lang); auto index = static_cast<int>(lang);

View File

@@ -1,23 +1,23 @@
#pragma once #pragma once
#include <string> // Para std::string #include <string>
namespace lang namespace lang
{ {
// --- Códigos de idioma soportados --- // --- Códigos de idioma soportados ---
enum class Code : int enum class Code : int
{ {
es_ES = 0, // Español SPANISH = 0,
ba_BA = 1, // Bable/Asturiano VALENCIAN = 1,
en_UK = 2, // Inglés (Reino Unido) ENGLISH = 2
}; };
// Inicializa los textos del juego en el idioma seleccionado // Carga los textos desde el fichero JSON especificado
bool loadFromFile(const std::string &file_path); bool loadFromFile(const std::string &file_path);
// Obtiene la cadena de texto correspondiente al índice // Obtiene un texto a partir de una clave
std::string getText(int index); std::string getText(const std::string &key);
// Obtiene el código del siguiente idioma disponible // Obtiene el código del siguiente idioma (circular)
Code getNextLangCode(Code lang); Code getNextLangCode(Code lang);
} }

View File

@@ -37,7 +37,7 @@ void initOptions()
// Opciones de juego // Opciones de juego
options.game.difficulty = GameDifficulty::NORMAL; options.game.difficulty = GameDifficulty::NORMAL;
options.game.language = lang::Code::ba_BA; options.game.language = lang::Code::VALENCIAN;
options.game.autofire = true; options.game.autofire = true;
options.game.clear_last_hi_score_entries(); options.game.clear_last_hi_score_entries();
@@ -92,11 +92,11 @@ bool loadOptionsFile(std::string file_path)
} }
// Normaliza los valores // Normaliza los valores
if (options.game.language != lang::Code::en_UK && if (options.game.language != lang::Code::ENGLISH &&
options.game.language != lang::Code::ba_BA && options.game.language != lang::Code::VALENCIAN &&
options.game.language != lang::Code::es_ES) options.game.language != lang::Code::SPANISH)
{ {
options.game.language = lang::Code::en_UK; options.game.language = lang::Code::ENGLISH;
} }
return success; return success;

View File

@@ -282,10 +282,10 @@ void Resource::createTextures()
{"game_text_1000_points", "1.000"}, {"game_text_1000_points", "1.000"},
{"game_text_2500_points", "2.500"}, {"game_text_2500_points", "2.500"},
{"game_text_5000_points", "5.000"}, {"game_text_5000_points", "5.000"},
{"game_text_powerup", lang::getText(117)}, {"game_text_powerup", lang::getText("GAME_TEXT_117")},
{"game_text_one_hit", lang::getText(118)}, {"game_text_one_hit", lang::getText("GAME_TEXT_118")},
{"game_text_stop", lang::getText(119)}, {"game_text_stop", lang::getText("GAME_TEXT_119")},
{"game_text_1000000_points", lang::getText(76)}}; {"game_text_1000000_points", lang::getText("GAMEPLAY_76")}};
auto text = getText("04b_25"); auto text = getText("04b_25");
for (const auto &s : strings) for (const auto &s : strings)
@@ -297,9 +297,9 @@ void Resource::createTextures()
// Tamaño doble // Tamaño doble
std::vector<NameAndText> strings2X = { std::vector<NameAndText> strings2X = {
{"game_text_100000_points", "100.000"}, {"game_text_100000_points", "100.000"},
{"game_text_get_ready", lang::getText(75)}, {"game_text_get_ready", lang::getText("GAMEPLAY_75")},
{"game_text_last_stage", lang::getText(79)}, {"game_text_last_stage", lang::getText("GAME_TEXT_79")},
{"game_text_congratulations", lang::getText(50)}, {"game_text_congratulations", lang::getText("GAME_COMPLETION_TEXT_50")},
{"game_text_game_over", "Game Over"}}; {"game_text_game_over", "Game Over"}};
auto text2 = getText("04b_25_2x"); auto text2 = getText("04b_25_2x");

View File

@@ -177,7 +177,7 @@ void Scoreboard::fillPanelTextures()
text_scoreboard_->writeCentered(slot4_2_.x, slot4_2_.y, updateScoreText(score_[i])); text_scoreboard_->writeCentered(slot4_2_.x, slot4_2_.y, updateScoreText(score_[i]));
// MULT // MULT
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText(55)); text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText("SCOREBOARD_55"));
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y, "x" + std::to_string(mult_[i]).substr(0, 3)); text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y, "x" + std::to_string(mult_[i]).substr(0, 3));
break; break;
} }
@@ -185,13 +185,13 @@ void Scoreboard::fillPanelTextures()
case ScoreboardMode::DEMO: case ScoreboardMode::DEMO:
{ {
// DEMO MODE // DEMO MODE
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText(101)); text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText("SCOREBOARD_101"));
// PRESS START TO PLAY // PRESS START TO PLAY
if (time_counter_ % 10 < 8) if (time_counter_ % 10 < 8)
{ {
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText(103)); text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText("SCOREBOARD_103"));
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, lang::getText(104)); text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, lang::getText("SCOREBOARD_104"));
} }
break; break;
} }
@@ -199,13 +199,13 @@ void Scoreboard::fillPanelTextures()
case ScoreboardMode::WAITING: case ScoreboardMode::WAITING:
{ {
// GAME OVER // GAME OVER
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText(102)); text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText("SCOREBOARD_102"));
// PRESS START TO PLAY // PRESS START TO PLAY
if (time_counter_ % 10 < 8) if (time_counter_ % 10 < 8)
{ {
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText(103)); text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText("SCOREBOARD_103"));
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, lang::getText(104)); text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, lang::getText("SCOREBOARD_104"));
} }
break; break;
} }
@@ -213,13 +213,13 @@ void Scoreboard::fillPanelTextures()
case ScoreboardMode::GAME_OVER: case ScoreboardMode::GAME_OVER:
{ {
// GAME OVER // GAME OVER
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText(102)); text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText("SCOREBOARD_102"));
// PLEASE WAIT // PLEASE WAIT
if (time_counter_ % 10 < 8) if (time_counter_ % 10 < 8)
{ {
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText(114)); text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText("SCOREBOARD_114"));
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, lang::getText(115)); text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, lang::getText("SCOREBOARD_115"));
} }
break; break;
} }
@@ -227,7 +227,7 @@ void Scoreboard::fillPanelTextures()
case ScoreboardMode::STAGE_INFO: case ScoreboardMode::STAGE_INFO:
{ {
// STAGE // STAGE
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y, lang::getText(57) + std::to_string(stage_)); text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y, lang::getText("SCOREBOARD_57") + std::to_string(stage_));
// POWERMETER // POWERMETER
power_meter_sprite_->setSpriteClip(0, 0, 40, 7); power_meter_sprite_->setSpriteClip(0, 0, 40, 7);
@@ -236,7 +236,7 @@ void Scoreboard::fillPanelTextures()
power_meter_sprite_->render(); power_meter_sprite_->render();
// HI-SCORE // HI-SCORE
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText(56)); text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText("SCOREBOARD_56"));
const std::string name = hi_score_name_ == "" ? "" : hi_score_name_ + " - "; const std::string name = hi_score_name_ == "" ? "" : hi_score_name_ + " - ";
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y, name + updateScoreText(hi_score_)); text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y, name + updateScoreText(hi_score_));
break; break;
@@ -249,7 +249,7 @@ void Scoreboard::fillPanelTextures()
text_scoreboard_->writeCentered(slot4_2_.x, slot4_2_.y, updateScoreText(score_[i])); text_scoreboard_->writeCentered(slot4_2_.x, slot4_2_.y, updateScoreText(score_[i]));
// CONTINUE // CONTINUE
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText(105)); text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText("SCOREBOARD_105"));
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y, std::to_string(continue_counter_[i])); text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y, std::to_string(continue_counter_[i]));
break; break;
} }
@@ -262,7 +262,7 @@ void Scoreboard::fillPanelTextures()
// ENTER NAME // ENTER NAME
{ {
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText(106)); text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText("SCOREBOARD_106"));
SDL_FRect rect = {enter_name_pos_.x, enter_name_pos_.y, 5.0f, 7.0f}; SDL_FRect rect = {enter_name_pos_.x, enter_name_pos_.y, 5.0f, 7.0f};
// Recorre todos los slots de letras del nombre // Recorre todos los slots de letras del nombre
@@ -298,7 +298,7 @@ void Scoreboard::fillPanelTextures()
text_scoreboard_->writeCentered(slot4_2_.x, slot4_2_.y, updateScoreText(score_[i])); text_scoreboard_->writeCentered(slot4_2_.x, slot4_2_.y, updateScoreText(score_[i]));
// NAME // NAME
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText(106)); text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y, lang::getText("SCOREBOARD_106"));
/* TEXTO CENTRADO */ /* TEXTO CENTRADO */
// text_scoreboard_->writeDX(TEXT_CENTER | TEXT_COLOR, slot4_4_.x, slot4_4_.y, record_name_[i], 1, getColorLikeKnightRider(name_colors_, loop_counter_ / 5)); // text_scoreboard_->writeDX(TEXT_CENTER | TEXT_COLOR, slot4_4_.x, slot4_4_.y, record_name_[i], 1, getColorLikeKnightRider(name_colors_, loop_counter_ / 5));
@@ -309,12 +309,12 @@ void Scoreboard::fillPanelTextures()
case ScoreboardMode::GAME_COMPLETED: case ScoreboardMode::GAME_COMPLETED:
{ {
// GAME OVER // GAME OVER
text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText(102)); text_scoreboard_->writeCentered(slot4_1_.x, slot4_1_.y + 4, lang::getText("SCOREBOARD_102"));
// SCORE // SCORE
if (time_counter_ % 10 < 8) if (time_counter_ % 10 < 8)
{ {
text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText(120)); text_scoreboard_->writeCentered(slot4_3_.x, slot4_3_.y - 2, lang::getText("SCOREBOARD_120"));
text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, updateScoreText(score_[i])); text_scoreboard_->writeCentered(slot4_4_.x, slot4_4_.y - 2, updateScoreText(score_[i]));
} }
} }

View File

@@ -112,7 +112,7 @@ void Title::render()
// 'PRESS TO PLAY' // 'PRESS TO PLAY'
if (counter_ % 50 > 14 && !define_buttons_->isEnabled()) if (counter_ % 50 > 14 && !define_buttons_->isEnabled())
{ {
text_->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, param.title.press_start_position, lang::getText(23), 1, NO_COLOR, 1, shadow); text_->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, param.title.press_start_position, lang::getText("TITLE_23"), 1, NO_COLOR, 1, shadow);
} }
} }
@@ -121,7 +121,7 @@ void Title::render()
// 'PRESS TO PLAY' // 'PRESS TO PLAY'
if (counter_ % 10 > 4 && !define_buttons_->isEnabled()) if (counter_ % 10 > 4 && !define_buttons_->isEnabled())
{ {
text_->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, param.title.press_start_position, lang::getText(23), 1, NO_COLOR, 1, shadow); text_->writeDX(TEXT_CENTER | TEXT_SHADOW, param.game.game_area.center_x, param.title.press_start_position, lang::getText("TITLE_23"), 1, NO_COLOR, 1, shadow);
} }
} }
@@ -277,7 +277,7 @@ void Title::swapControllers()
void Title::swapKeyboard() void Title::swapKeyboard()
{ {
swapOptionsKeyboard(); swapOptionsKeyboard();
std::string text = lang::getText(100) + std::to_string(getPlayerWhoUsesKeyboard()) + ": " + lang::getText(69); std::string text = lang::getText("DEFINE_BUTTONS_100") + std::to_string(getPlayerWhoUsesKeyboard()) + ": " + lang::getText("MENU_OPTIONS_69");
Notifier::get()->show({text}); Notifier::get()->show({text});
} }
@@ -302,7 +302,7 @@ void Title::showControllers()
const size_t index = player_controller_index.at(i); const size_t index = player_controller_index.at(i);
if (options.controllers.at(index).plugged) if (options.controllers.at(index).plugged)
{ {
text.at(i) = lang::getText(100) + std::to_string(i + 1) + ": " + options.controllers.at(index).name; text.at(i) = lang::getText("DEFINE_BUTTONS_100") + std::to_string(i + 1) + ": " + options.controllers.at(index).name;
} }
} }

View File

@@ -129,7 +129,7 @@ std::string boolToString(bool value)
// Convierte un valor booleano en una cadena "on" o "off" // Convierte un valor booleano en una cadena "on" o "off"
std::string boolToOnOff(bool value) std::string boolToOnOff(bool value)
{ {
return value ? lang::getText(128) : lang::getText(129); return value ? lang::getText("MISC_128") : lang::getText("MISC_129");
} }
// Convierte una cadena a minusculas // Convierte una cadena a minusculas