1 /*  RetroArch - A frontend for libretro.
2  *  Copyright (C) 2011-2017 - Daniel De Matteis
3  *  Copyright (C) 2018 - Alfredo Monclus
4  *  Copyright (C) 2019-2020 - Víctor González Fraile
5  *
6  *  RetroArch is free software: you can redistribute it and/or modify it under the terms
7  *  of the GNU General Public License as published by the Free Software Found-
8  *  ation, either version 3 of the License, or (at your option) any later version.
9  *
10  *  RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11  *  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  *  PURPOSE.  See the GNU General Public License for more details.
13  *
14  *  You should have received a copy of the GNU General Public License along with RetroArch.
15  *  If not, see <http://www.gnu.org/licenses/>.
16  *
17  * CHARACTER/LINES HARD LIMIT (MEASURED BY THE LOWEST COMMON DENOMINATOR, THE RGUI INTERFACE):
18  * 48 CHARACTERS PER LINE
19  * 20 LINES PER SCREEN
20  *
21  * LÍMITES FIJOS DE CARACTERES/LÍNEAS (MEDIDOS SEGÚN EL DENOMINADOR COMÚN MÁS BAJO, LA INTERFAZ RGUI):
22  * 48 CARACTERES POR LÍNEA
23  * 20 LÍNEAS POR PANTALLA
24  */
25 
26 #include <stdio.h>
27 #include <stdint.h>
28 #include <stddef.h>
29 
30 #include <compat/strl.h>
31 #include <string/stdstring.h>
32 
33 #include "../msg_hash.h"
34 #include "../verbosity.h"
35 
36 #ifdef RARCH_INTERNAL
37 #include "../configuration.h"
38 
39 #if defined(_MSC_VER) && !defined(_XBOX) && (_MSC_VER >= 1500 && _MSC_VER < 1900)
40 #if (_MSC_VER >= 1700)
41 /* https://support.microsoft.com/en-us/kb/980263 */
42 #pragma execution_character_set("utf-8")
43 #endif
44 #pragma warning(disable:4566)
45 #endif
46 
msg_hash_get_help_es_enum(enum msg_hash_enums msg,char * s,size_t len)47 int msg_hash_get_help_es_enum(enum msg_hash_enums msg, char *s, size_t len)
48 {
49     settings_t *settings = config_get_ptr();
50 
51     if (msg == MENU_ENUM_LABEL_CONNECT_NETPLAY_ROOM)
52     {
53        snprintf(s, len,
54              "PENDIENTE: Rellenar este mensaje."
55              );
56        return 0;
57     }
58     if (msg <= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_END &&
59         msg >= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN)
60     {
61        unsigned idx = msg - MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN;
62 
63        switch (idx)
64        {
65           case RARCH_FAST_FORWARD_KEY:
66              snprintf(s, len,
67                    "Alterna entre la velocidad normal y\n"
68                    "el avance rápido."
69                    );
70              break;
71           case RARCH_FAST_FORWARD_HOLD_KEY:
72              snprintf(s, len,
73                    "Mantén pulsado este botón para usar\n"
74                    "el avance rápido."
75                    );
76              break;
77           case RARCH_SLOWMOTION_KEY:
78              snprintf(s, len,
79                    "Alterna la cámara lenta.");
80              break;
81           case RARCH_SLOWMOTION_HOLD_KEY:
82              snprintf(s, len,
83                    "Mantén pulsado este botón para usar\n"
84                    "la cámara lenta.");
85              break;
86           case RARCH_PAUSE_TOGGLE:
87              snprintf(s, len,
88                    "Alterna el uso de la pausa.");
89              break;
90           case RARCH_FRAMEADVANCE:
91              snprintf(s, len,
92                    "Avanza fotogramas mientras el contenido\n"
93                    "está pausado.");
94              break;
95           case RARCH_SHADER_NEXT:
96              snprintf(s, len,
97                    "Aplica el siguiente shader de la carpeta.");
98              break;
99           case RARCH_SHADER_PREV:
100              snprintf(s, len,
101                    "Aplica el shader anterior de la carpeta.");
102              break;
103           case RARCH_CHEAT_INDEX_PLUS:
104           case RARCH_CHEAT_INDEX_MINUS:
105           case RARCH_CHEAT_TOGGLE:
106              snprintf(s, len,
107                    "Trucos.");
108              break;
109           case RARCH_RESET:
110              snprintf(s, len,
111                    "Reinicia el contenido.");
112              break;
113           case RARCH_SCREENSHOT:
114              snprintf(s, len,
115                    "Captura la pantalla.");
116              break;
117           case RARCH_MUTE:
118              snprintf(s, len,
119                    "Silencia o no el audio.");
120              break;
121           case RARCH_OSK:
122              snprintf(s, len,
123                    "Alterna el teclado en pantalla.");
124              break;
125           case RARCH_FPS_TOGGLE:
126              snprintf(s, len,
127                    "Muestra o no el contador de fotogramas\n"
128                    "por segundo.");
129              break;
130           case RARCH_SEND_DEBUG_INFO:
131              snprintf(s, len,
132                    "Envía información de diagnóstico de\n"
133                    "tu dispositivo y la configuración de RetroArch\n"
134                    "a nuestros servidores para su posterior\n"
135                    "análisis.");
136              break;
137           case RARCH_NETPLAY_HOST_TOGGLE:
138              snprintf(s, len,
139                    "Activa o desactiva el servidor de juego en red.");
140              break;
141           case RARCH_NETPLAY_GAME_WATCH:
142              snprintf(s, len,
143                    "Cambia entre los modos de jugador o espectador\n"
144                    "en el juego en red.");
145              break;
146           case RARCH_ENABLE_HOTKEY:
147              snprintf(s, len,
148                    "Activa otras teclas rápidas.\n"
149                    " \n"
150                    "Si esta tecla rápida está asignada a un\n"
151                    "teclado, un botón o un eje de un mando,\n"
152                    "el resto de teclas rápidas se desactivarán\n"
153                    "a menos que esta tecla sea pulsada\n"
154                    "al mismo tiempo.\n"
155                    " \n"
156                    "Por otro lado, el usuario puede desactivar\n"
157                    "todas las teclas rápidas del teclado.");
158              break;
159           case RARCH_VOLUME_UP:
160              snprintf(s, len,
161                      "Aumenta el volumen del audio.");
162              break;
163           case RARCH_VOLUME_DOWN:
164              snprintf(s, len,
165                      "Disminuye el volumen del audio.");
166              break;
167           case RARCH_OVERLAY_NEXT:
168              snprintf(s, len,
169                      "Cambia a la siguiente superposición.\n"
170                      " \n"
171                      "Se expandirá sobre la pantalla.");
172              break;
173           case RARCH_DISK_EJECT_TOGGLE:
174              snprintf(s, len,
175                      "Alterna el botón de expulsión\n"
176                      "de discos.\n"
177                      " \n"
178                      "Se utiliza para contenidos\n"
179                      "que utilicen varios discos.");
180              break;
181           case RARCH_DISK_NEXT:
182           case RARCH_DISK_PREV:
183              snprintf(s, len,
184                    "Cambia de imagen de disco.\n"
185                    "Utilízalo tras expulsar un disco.\n"
186                    " \n"
187                    "Termina la operación volviendo a pulsar\n"
188                    "el botón de expulsión.");
189              break;
190           case RARCH_GRAB_MOUSE_TOGGLE:
191              snprintf(s, len,
192                    "Permite o no capturar el ratón.\n"
193                    " \n"
194                    "Al capturar el ratón, RetroArch lo ocultará\n"
195                    "y mantendrá el puntero del ratón dentro de\n"
196                    "la ventana para que la entrada relativa\n"
197                    "del ratón funcione mejor.");
198              break;
199           case RARCH_GAME_FOCUS_TOGGLE:
200              snprintf(s, len,
201                      "Activa o desactiva la prioridad al juego.\n"
202                      " \n"
203                      "Cuando el juego tiene prioridad, RetroArch\n"
204                      "desactivará las teclas rápidas y mantendrá\n"
205                      "el puntero del ratón en el interior de\n"
206                      "la ventana.");
207              break;
208           case RARCH_MENU_TOGGLE:
209              snprintf(s, len,
210                    "Muestra u oculta el menú.");
211              break;
212           case RARCH_LOAD_STATE_KEY:
213              snprintf(s, len,
214                    "Carga el guardado rápido.");
215              break;
216           case RARCH_FULLSCREEN_TOGGLE_KEY:
217              snprintf(s, len,
218                    "Alterna entre los modos\n"
219                    "de pantalla completa y ventana.");
220              break;
221           case RARCH_QUIT_KEY:
222              snprintf(s, len,
223                "Asigna una tecla para abandonar RetroArch\n"
224                "limpiamente.\n"
225                " \n"
226                "Si cierras el programa de cualquier forma\n"
227                "brusca (SIGKILL, etc.) no se guardarán los\n"
228                "progresos, la RAM, etc.\n"
229 #ifdef __unix__
230                "\nEn sistemas Unix, SIGINT/SIGTERM permite\n"
231                "un cierre limpio."
232 #endif
233                    "");
234              break;
235           case RARCH_STATE_SLOT_PLUS:
236           case RARCH_STATE_SLOT_MINUS:
237              snprintf(s, len,
238                "Posiciones de guardados rápidos.\n"
239                " \n"
240                "Si se selecciona la posición 0, el nombre del\n"
241                "guardado rápido será *.state (o lo que esté\n"
242                "definido en la línea de comandos).\n"
243                " \n"
244                "Si la ranura es un valor distinto a 0, la ruta\n"
245                "será (path)(d), siendo (d) el número de\n"
246                "la posición.");
247              break;
248           case RARCH_SAVE_STATE_KEY:
249              snprintf(s, len,
250                    "Guarda rápidamente la partida.");
251              break;
252           case RARCH_REWIND:
253              snprintf(s, len,
254                      "Mantén pulsado este botón para rebobinar.\n"
255                      " \n"
256                      "Para que este botón funcione, debes tener\n"
257                      "activada la opción de rebobinar.");
258              break;
259           case RARCH_BSV_RECORD_TOGGLE:
260              snprintf(s, len,
261                "Activa o desactiva la grabación.");
262              break;
263           default:
264              if (string_is_empty(s))
265                 strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);
266              break;
267        }
268 
269        return 0;
270     }
271 
272     switch (msg)
273     {
274         case MENU_ENUM_LABEL_ACCOUNTS_RETRO_ACHIEVEMENTS:
275             snprintf(s, len,
276                     "Los datos para iniciar sesión con\n"
277                     "tu cuenta de Retro Achievements.\n"
278                     " \n"
279                     "Visita retroachievements.org para\n"
280                     "registrarte de forma gratuita.\n"
281                     " \n"
282                     "Una vez te hayas registrado, tendrás que\n"
283                     "introducir tu nombre de usuario y tu\n"
284                     "contraseña en RetroArch.");
285             break;
286         case MENU_ENUM_LABEL_CHEEVOS_USERNAME:
287             snprintf(s, len,
288                     "El nombre de usuario de tu cuenta\n"
289                     "de Retro Achievements.");
290             break;
291         case MENU_ENUM_LABEL_CHEEVOS_PASSWORD:
292             snprintf(s, len,
293                     "La contraseña de tu cuenta\n"
294                     "de Retro Achievements.");
295             break;
296         case MENU_ENUM_LABEL_USER_LANGUAGE:
297             snprintf(s, len,
298                     "Traduce el menú y todos los mensajes\n"
299                     "en pantalla al idioma que hayas seleccionado.\n"
300                     " \n"
301                     "Para aplicar los cambios es necesario\n"
302                     "reiniciar.\n"
303                     " \n"
304                     "Nota: Puede que todos los idiomas\n"
305                     "no estén implementados.\n"
306                     " \n"
307                     "Si un idioma no está implementado,\n"
308                     "se traducirá al inglés por defecto.");
309             break;
310         case MENU_ENUM_LABEL_VIDEO_FONT_PATH:
311             snprintf(s, len,
312 			        "Cambia la fuente de letra utilizada\n"
313                     "en los mensajes en pantalla.");
314             break;
315         case MENU_ENUM_LABEL_GAME_SPECIFIC_OPTIONS:
316             snprintf(s, len, "Carga automáticamente las opciones del núcleo\n"
317                     "específicas para cada contenido.");
318             break;
319         case MENU_ENUM_LABEL_AUTO_OVERRIDES_ENABLE:
320             snprintf(s, len, "Carga automáticamente las configuraciones\n"
321                     "personalizadas.");
322             break;
323         case MENU_ENUM_LABEL_AUTO_REMAPS_ENABLE:
324             snprintf(s, len, "Carga automáticamente los archivos\n"
325                     "de reasignación de entrada.");
326             break;
327         case MENU_ENUM_LABEL_SORT_SAVESTATES_ENABLE:
328             snprintf(s, len, "Ordena los guardados rápidos mediante\n"
329                     "carpetas con el nombre del núcleo libretro\n"
330                     "correspondiente.");
331             break;
332         case MENU_ENUM_LABEL_SORT_SAVEFILES_ENABLE:
333             snprintf(s, len, "Ordena los guardados rápidos mediante\n"
334                     "carpetas con el nombre del núcleo libretro\n"
335                     "correspondiente.");
336             break;
337         case MENU_ENUM_LABEL_RESUME_CONTENT:
338             snprintf(s, len, "Abandona el menú y vuelve al contenido.");
339             break;
340         case MENU_ENUM_LABEL_RESTART_CONTENT:
341             snprintf(s, len, "Reinicia el contenido desde el principio.");
342             break;
343         case MENU_ENUM_LABEL_CLOSE_CONTENT:
344             snprintf(s, len, "Cierra el contenido\n"
345                     "y lo descarga de la memoria.");
346             break;
347         case MENU_ENUM_LABEL_UNDO_LOAD_STATE:
348             snprintf(s, len, "Si se ha cargado un guardado rápido,\n"
349                     "el contenido volverá al estado anterior\n"
350                     "a dicha carga.");
351             break;
352         case MENU_ENUM_LABEL_UNDO_SAVE_STATE:
353             snprintf(s, len, "Si se ha sobrescrito un guardado rápido,\n"
354                     "este volverá a su estado anterior.");
355             break;
356         case MENU_ENUM_LABEL_TAKE_SCREENSHOT:
357             snprintf(s, len, "Captura la pantalla en una imagen.\n"
358                     " \n"
359                     "La imagen se almacenará dentro de la carpeta\n"
360                     "de capturas de pantalla.");
361             break;
362         case MENU_ENUM_LABEL_ADD_TO_FAVORITES:
363             snprintf(s, len, "Agrega esta entrada a tus favoritos.");
364             break;
365         case MENU_ENUM_LABEL_RUN:
366             snprintf(s, len, "Inicia el contenido.");
367             break;
368         case MENU_ENUM_LABEL_INFORMATION:
369             snprintf(s, len, "Muestra información adicional\n"
370                      "de los metadatos del contenido.");
371             break;
372         case MENU_ENUM_LABEL_FILE_BROWSER_CONFIG:
373             snprintf(s, len, "Archivo de configuración.");
374             break;
375         case MENU_ENUM_LABEL_FILE_BROWSER_COMPRESSED_ARCHIVE:
376             snprintf(s, len, "Archivo comprimido.");
377             break;
378         case MENU_ENUM_LABEL_FILE_BROWSER_RECORD_CONFIG:
379             snprintf(s, len, "Archivo de configuración de grabaciones.");
380             break;
381         case MENU_ENUM_LABEL_FILE_BROWSER_CURSOR:
382             snprintf(s, len, "Archivos de base de datos de cursores.");
383             break;
384         case MENU_ENUM_LABEL_FILE_CONFIG:
385             snprintf(s, len, "Archivo de configuración.");
386             break;
387         case MENU_ENUM_LABEL_SCAN_THIS_DIRECTORY:
388             snprintf(s, len,
389                      "Selecciona esta opción para buscar contenidos\n"
390                      "en la carpeta actual.");
391             break;
392         case MENU_ENUM_LABEL_USE_THIS_DIRECTORY:
393             snprintf(s, len,
394                      "Selecciona esta opción para asignar\n"
395                      "esta carpeta.");
396             break;
397         case MENU_ENUM_LABEL_CONTENT_DATABASE_DIRECTORY:
398             snprintf(s, len,
399                      "Carpeta de la base de datos de contenidos.\n"
400                      " \n"
401                      "La ruta de la carpeta con la base de datos\n"
402                      "de contenidos.");
403             break;
404         case MENU_ENUM_LABEL_THUMBNAILS_DIRECTORY:
405             snprintf(s, len,
406                      "Carpeta de miniaturas.\n"
407                      " \n"
408                      "Almacena los archivos de las miniaturas.");
409             break;
410         case MENU_ENUM_LABEL_LIBRETRO_INFO_PATH:
411             snprintf(s, len,
412                      "Carpeta de información de núcleos.\n"
413                      " \n"
414                      "La carpeta donde se buscará la información\n"
415                      "de los núcleos libretro.");
416             break;
417         case MENU_ENUM_LABEL_PLAYLIST_DIRECTORY:
418             snprintf(s, len,
419                      "Carpeta de listas de reproducción.\n"
420                      " \n"
421                      "En esta carpeta se guardarán todos los archivos\n"
422                      "de listas de reproducción.");
423             break;
424         case MENU_ENUM_LABEL_DUMMY_ON_CORE_SHUTDOWN:
425             snprintf(s, len,
426                      "Algunos núcleos son capaces de apagarse.\n"
427                      " \n"
428                      "Si desactivas esta opción, al apagar el núcleo\n"
429                      "también se cerrará RetroArch.\n"
430                      " \n"
431                      "De lo contrario, en vez de cerrar RetroArch\n"
432                      "se cargará un núcleo vacío, lo que te permitirá\n"
433                      "seguir en el menú.");
434             break;
435         case MENU_ENUM_LABEL_CHECK_FOR_MISSING_FIRMWARE:
436             snprintf(s, len,
437                      "Algunos núcleos pueden necesitar archivos\n"
438                      "de firmware o de BIOS.\n"
439                      " \n"
440                      "Si desactivas esta opción, el núcleo intentará\n"
441                      "arrancar aunque falten dichos archivos.");
442             break;
443         case MENU_ENUM_LABEL_PARENT_DIRECTORY:
444             snprintf(s, len,
445                      "Vuelve a la carpeta superior.");
446             break;
447         case MENU_ENUM_LABEL_FILE_BROWSER_OPEN_UWP_PERMISSIONS:
448             snprintf(s, len,
449                      "Abre la configuración de permisos de Windows\n"
450                      "para activar la característica\n"
451                      "broadFileSystemAccess.");
452             break;
453         case MENU_ENUM_LABEL_FILE_BROWSER_OPEN_PICKER:
454            snprintf(s, len,
455                      "Abre el selector de archivos del sistema\n"
456                      "para acceder a carpetas adicionales.");
457            break;
458         case MENU_ENUM_LABEL_FILE_BROWSER_SHADER_PRESET:
459             snprintf(s, len,
460                      "Archivo de preset de shaders.");
461             break;
462         case MENU_ENUM_LABEL_FILE_BROWSER_SHADER:
463             snprintf(s, len,
464                      "Archivo de shader.");
465             break;
466         case MENU_ENUM_LABEL_FILE_BROWSER_REMAP:
467             snprintf(s, len,
468                      "Archivo de reasignación de controles.");
469             break;
470         case MENU_ENUM_LABEL_FILE_BROWSER_CHEAT:
471             snprintf(s, len,
472                      "Archivo de trucos.");
473             break;
474         case MENU_ENUM_LABEL_FILE_BROWSER_OVERLAY:
475             snprintf(s, len,
476                      "Archivo de superposición.");
477             break;
478         case MENU_ENUM_LABEL_FILE_BROWSER_RDB:
479             snprintf(s, len,
480                      "Archivo de base de datos.");
481             break;
482         case MENU_ENUM_LABEL_FILE_BROWSER_FONT:
483             snprintf(s, len,
484                      "Archivo de fuente TrueType.");
485             break;
486         case MENU_ENUM_LABEL_FILE_BROWSER_PLAIN_FILE:
487             snprintf(s, len,
488                      "Archivo de texto simple.");
489             break;
490         case MENU_ENUM_LABEL_FILE_BROWSER_MOVIE_OPEN:
491             snprintf(s, len,
492                      "Vídeo.\n"
493                      " \n"
494                      "Selecciónalo para abrirlo con el reproductor\n"
495                      "de vídeo.");
496             break;
497         case MENU_ENUM_LABEL_FILE_BROWSER_MUSIC_OPEN:
498             snprintf(s, len,
499                      "Música.\n"
500                      " \n"
501                      "Selecciónala para abrirla con el reproductor\n"
502                      "de música.");
503             break;
504         case MENU_ENUM_LABEL_FILE_BROWSER_IMAGE:
505             snprintf(s, len,
506                      "Archivo de imagen.");
507             break;
508         case MENU_ENUM_LABEL_FILE_BROWSER_IMAGE_OPEN_WITH_VIEWER:
509             snprintf(s, len,
510                      "Imagen.\n"
511                      " \n"
512                      "Selecciónala para abrirla con el visor\n"
513                      "de imágenes.");
514             break;
515         case MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION:
516             snprintf(s, len,
517                      "Núcleo libretro.\n"
518                      " \n"
519                      "Al seleccionar este núcleo lo asociarás\n"
520                      "con el juego.");
521             break;
522         case MENU_ENUM_LABEL_FILE_BROWSER_CORE:
523             snprintf(s, len,
524                      "Núcleo libretro.\n"
525                      " \n"
526                      "Selecciona este archivo para que RetroArch\n"
527                      "cargue este núcleo.");
528             break;
529         case MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY:
530             snprintf(s, len,
531                      "Carpeta.\n"
532                      " \n"
533                      "Selecciónala para abrirla.");
534             break;
535         case MENU_ENUM_LABEL_CACHE_DIRECTORY:
536             snprintf(s, len,
537                      "Carpeta de caché.\n"
538                      " \n"
539                      "Los contenidos descomprimidos por RetroArch\n"
540                      "se guardarán temporalmente en esta carpeta.");
541             break;
542         case MENU_ENUM_LABEL_HISTORY_LIST_ENABLE:
543             snprintf(s, len,
544                      "Si esta opción está activada, todos los\n"
545                      "contenidos cargados en RetroArch se agregarán\n"
546                      "automáticamente al historial reciente.");
547             break;
548         case MENU_ENUM_LABEL_RGUI_BROWSER_DIRECTORY:
549             snprintf(s, len,
550                      "Carpeta del explorador de archivos.\n"
551                      " \n"
552                      "Indica la carpeta de inicio para el explorador\n"
553                      "de archivos del menú.");
554             break;
555         case MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR:
556             snprintf(s, len,
557                      "Influencia la forma de sondear la entrada\n"
558                      "en RetroArch.\n"
559                      " \n"
560                      "Temprano: El sondeo se realizará antes\n"
561                      "de procesar el fotograma.\n"
562                      "Normal: El sondeo se realizará cuando\n"
563                      "se solicite.\n"
564                      "Tardío: El sondeo se realizará tras\n"
565                      "la primera petición de estado de entrada\n"
566                      "de cada fotograma.\n"
567                      " \n"
568                      "«Temprano» o «Tardío» pueden reducir\n"
569                      "la latencia según tu configuración.\n"
570                      "Esta opción será ignorada durante\n"
571                      "el juego en red.");
572             break;
573         case MENU_ENUM_LABEL_INPUT_DESCRIPTOR_HIDE_UNBOUND:
574             snprintf(s, len,
575                      "Oculta las descripciones de entrada que\n"
576                      "no estén configuradas en el núcleo.");
577             break;
578         case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE:
579             snprintf(s, len,
580                      "La frecuencia de actualización de tu monitor.\n"
581                      "Se utiliza para calcular la frecuencia de\n"
582                      "audio más apropiada.");
583             break;
584         case MENU_ENUM_LABEL_VIDEO_FORCE_SRGB_DISABLE:
585             snprintf(s, len,
586                      "Fuerza la desactivación del soporte FBO sRGB.\n"
587                      "Algunos controladores OpenGL de Intel para\n"
588                      "Windows dan problemas de vídeo al activar el\n"
589                      "soporte de FBO sRGB.");
590             break;
591         case MENU_ENUM_LABEL_AUDIO_ENABLE:
592             snprintf(s, len,
593                      "Activa la salida de audio.");
594             break;
595         case MENU_ENUM_LABEL_AUDIO_SYNC:
596             snprintf(s, len,
597                      "Sincroniza el audio con el vídeo (recomendado).");
598             break;
599         case MENU_ENUM_LABEL_AUDIO_LATENCY:
600             snprintf(s, len,
601                      "Latencia de audio deseada en milisegundos.\n"
602                      "Si el controlador de audio no es capaz de\n"
603                      "generar dicha latencia, este valor podría\n"
604                      "ser ignorado.");
605             break;
606         case MENU_ENUM_LABEL_VIDEO_ALLOW_ROTATE:
607             snprintf(s, len,
608                      "Permite que los núcleos puedan rotar la imagen.\n"
609                      "Si esta opción está desactivada, las peticiones\n"
610                      "de rotación serán reconocidas pero ignoradas.\n"
611                      "Útil en aquellas configuraciones donde se\n"
612                      "pueda rotar el monitor de forma manual.");
613             break;
614         case MENU_ENUM_LABEL_INPUT_DESCRIPTOR_LABEL_SHOW:
615             snprintf(s, len,
616                      "Muestra las descripciones de entrada que\n"
617                      "estén configuradas en el núcleo en lugar\n"
618                      "de las predeterminadas.");
619             break;
620         case MENU_ENUM_LABEL_CONTENT_HISTORY_SIZE:
621             snprintf(s, len,
622                      "El número de entradas que contendrá la lista\n"
623                      "de reproducción con el historial de contenidos.");
624             break;
625         case MENU_ENUM_LABEL_VIDEO_WINDOWED_FULLSCREEN:
626             snprintf(s, len,
627                      "Usar el modo en ventana al cambiar\n"
628                      "a pantalla completa.");
629             break;
630         case MENU_ENUM_LABEL_VIDEO_FONT_SIZE:
631             snprintf(s, len,
632                      "Cambia el tamaño de la fuente\n"
633                      "de los mensajes en pantalla.");
634             break;
635         case MENU_ENUM_LABEL_SAVESTATE_AUTO_INDEX:
636             snprintf(s, len,
637                      "Aumenta automáticamente el número de la\n"
638                      "posición con cada guardado rápido, lo que\n"
639                      "generará varios archivos.\n"
640                      "Al cargar el contenido, se seleccionará la\n"
641                      "posición de guardado con el valor más alto\n"
642                      "disponible (el último guardado rápido).");
643             break;
644         case MENU_ENUM_LABEL_FPS_SHOW:
645             snprintf(s, len,
646                      "Muestra la velocidad de fotogramas\n"
647                      "por segundo actual.");
648             break;
649         case MENU_ENUM_LABEL_MEMORY_SHOW:
650             snprintf(s, len,
651                      "Incorpora la información con el consumo actual\n"
652                      "y total de memoria al contador de FPS/\n"
653                      "fotogramas.");
654             break;
655         case MENU_ENUM_LABEL_VIDEO_FONT_ENABLE:
656             snprintf(s, len,
657                      "Muestra los mensajes en pantalla.");
658             break;
659         case MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_X:
660         case MENU_ENUM_LABEL_VIDEO_MESSAGE_POS_Y:
661             snprintf(s, len,
662                      "Indica la posición de los mensajes en pantalla.\n"
663                      "Los valores utilizan el rango [0.0, 1.0].");
664             break;
665         case MENU_ENUM_LABEL_INPUT_OVERLAY_ENABLE:
666             snprintf(s, len,
667                      "Activa o desactiva la superposición actual.");
668             break;
669         case MENU_ENUM_LABEL_INPUT_OVERLAY_HIDE_IN_MENU:
670             snprintf(s, len,
671                      "Oculta la superposición actual en el menú.");
672             break;
673         case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS:
674             snprintf(s, len,
675                       "Muestra las pulsaciones de los botones\n"
676                       "del mando o las teclas del teclado\n"
677                       "en la superposición.");
678             break;
679         case MENU_ENUM_LABEL_INPUT_OVERLAY_SHOW_PHYSICAL_INPUTS_PORT:
680             snprintf(s, len,
681                       "Selecciona el puerto en el que detectar\n"
682                       "la entrada del controlador y mostrarla\n"
683                       "en la superposición.");
684             break;
685         case MENU_ENUM_LABEL_OVERLAY_PRESET:
686             snprintf(s, len,
687                      "Ruta a la superposición de entrada.");
688             break;
689         case MENU_ENUM_LABEL_OVERLAY_OPACITY:
690             snprintf(s, len,
691                      "Opacidad de la superposición.");
692             break;
693 #ifdef HAVE_VIDEO_LAYOUT
694         case MENU_ENUM_LABEL_VIDEO_LAYOUT_ENABLE:
695             snprintf(s, len,
696                      "Activa o desactiva el diseño de vídeo actual.");
697             break;
698         case MENU_ENUM_LABEL_VIDEO_LAYOUT_PATH:
699             snprintf(s, len,
700                      "Ruta del diseño de vídeo.");
701             break;
702         case MENU_ENUM_LABEL_VIDEO_LAYOUT_SELECTED_VIEW:
703             snprintf(s, len,
704                      "Los diseños pueden contener múltiples vistas.\n"
705                      "Selecciona una.");
706             break;
707 #endif
708         case MENU_ENUM_LABEL_INPUT_BIND_TIMEOUT:
709             snprintf(s, len,
710                      "Tiempo de espera para asignar una función\n"
711                      "de entrada (en segundos).\n"
712                      "Indica los segundos que se esperarán hasta\n"
713                      "pasar a la siguiente asignación.");
714             break;
715         case MENU_ENUM_LABEL_INPUT_BIND_HOLD:
716             snprintf(s, len,
717                      "Tiempo de pulsación para asignar una función\n"
718                      "de entrada (en segundos).\n"
719                      "Indica los segundos que deben pasar al mantener\n"
720                      "una entrada para asignarla.");
721             break;
722         case MENU_ENUM_LABEL_OVERLAY_SCALE:
723             snprintf(s, len,
724                      "Escala de la superposición.");
725             break;
726         case MENU_ENUM_LABEL_OVERLAY_CENTER_X:
727             snprintf(s, len,
728                      "Compensación horizontal de la superposición.");
729             break;
730         case MENU_ENUM_LABEL_OVERLAY_CENTER_Y:
731             snprintf(s, len,
732                      "Compensación vertical de la superposición.");
733             break;
734         case MENU_ENUM_LABEL_AUDIO_OUTPUT_RATE:
735             snprintf(s, len,
736                      "Frecuencia de muestreo de la salida de audio.");
737             break;
738         case MENU_ENUM_LABEL_VIDEO_SHARED_CONTEXT:
739             snprintf(s, len,
740                      "Activa esta opción para que los núcleos\n"
741                      "renderizados por hardware tengan un contexto\n"
742                      "privado. Evita tener que asumir cambios en\n"
743                      "el estado del hardware entre fotogramas.");
744             break;
745         case MENU_ENUM_LABEL_CORE_LIST:
746             snprintf(s, len,
747                      "Carga un núcleo.\n"
748                      " \n"
749                      "Busca una implementación de un núcleo libretro.\n"
750                      "La posición inicial del explorador dependerá\n"
751                      "de la ruta de la carpeta de núcleos.\n"
752                      "Si está en blanco, empezará desde la raíz.\n"
753                      " \n"
754                      "Si la carpeta de núcleos es una carpeta,\n"
755                      "se utilizará como posición inicial.\n"
756                      "Si la carpeta es una ruta completa,\n"
757                      "la posición será la carpeta donde\n"
758                      "se encuentre el archivo.");
759             break;
760         case MENU_ENUM_LABEL_VALUE_MENU_ENUM_CONTROLS_PROLOG:
761             snprintf(s, len,
762                      "Puedes utilizar los siguientes controles,\n"
763                      "tanto con el mando como con el teclado,\n"
764                      "para controlar el menú:\n"
765                      " \n");
766             break;
767         case MENU_ENUM_LABEL_WELCOME_TO_RETROARCH:
768             snprintf(s, len,
769                      "Te damos la bienvenida a RetroArch.\n");
770             break;
771         case MENU_ENUM_LABEL_VALUE_HELP_AUDIO_VIDEO_TROUBLESHOOTING_DESC: {
772             /* Work around C89 limitations */
773             /* Arreglo para saltarse la limitación de 509 caracteres por cadena. */
774             char u[501];
775             const char *t =
776                      "RetroArch utiliza un formato único para\n"
777                      "sincronizar el audio y el vídeo. Necesita\n"
778                      "calibrarse con la frecuencia de actualización\n"
779                      "del monitor para obtener los mejores resultados.\n"
780                      " \n"
781                      "Si notas cortes en el audio o la imagen,\n"
782                      "lo normal es que necesites calibrar estos\n"
783                      "ajustes. Prueba estas opciones:\n"
784                      " \n";
785             snprintf(u, sizeof(u), /* can't inline this due to the printf arguments */
786                      "a) Ve a «%s» -> «%s» y activa\n"
787                      "«Vídeo multihilos». En este modo la frecuencia\n"
788                      "de actualización es irrelevante, aumentarán\n"
789                      "los FPS pero la imagen será menos fluida.\n"
790                      " \n"
791                      "b) Ve a «%s» -> «%s» y comprueba\n"
792                      "«%s».\n"
793                      "Deja que se ejecute durante 2048 fotogramas\n"
794                      "y luego selecciona Aceptar.",
795                      msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS),
796                      msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS),
797                      msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS),
798                      msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS),
799                      msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_REFRESH_RATE_AUTO));
800             strlcpy(s, t, len);
801             strlcat(s, u, len);
802         }
803             break;
804         case MENU_ENUM_LABEL_VALUE_HELP_SCANNING_CONTENT_DESC:
805             snprintf(s, len,
806                      "Para escanear contenidos ve\n"
807                      "a «%s» y selecciona\n"
808                      "«%s» o «%s».\n"
809                      " \n"
810                      "Los archivos serán contrastados con\n"
811                      "las entradas en la base de datos.\n"
812                      "Si hay una coincidencia, se añadirá\n"
813                      "una entrada en una lista de reproducción.\n"
814                      " \n"
815                      "Podrás acceder fácilmente a estos contenidos\n"
816                      "a través de «%s» ->\n"
817                      "«%s» en vez de tener que pasar\n"
818                      "por el explorador de archivos\n"
819                      "constantemente.\n"
820                      " \n"
821                      "NOTA: El contenido de algunos núcleos podría\n"
822                      "no ser localizable.",
823                      msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ADD_CONTENT_LIST),
824                      msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCAN_DIRECTORY),
825                      msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SCAN_FILE),
826                      msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST),
827                      msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PLAYLISTS_TAB)
828             );
829             break;
830         case MENU_ENUM_LABEL_VALUE_EXTRACTING_PLEASE_WAIT:
831             snprintf(s, len,
832                      "Te damos la bienvenida a RetroArch.\n"
833                      " \n"
834                      "Extrayendo recursos. Espera, por favor.\n"
835                      "Este proceso puede llevar un tiempo...\n"
836             );
837             break;
838         case MENU_ENUM_LABEL_INPUT_DRIVER:
839             {
840                const char *lbl = settings ? settings->arrays.input_driver : NULL;
841 
842                if (string_is_equal(lbl, msg_hash_to_str(MENU_ENUM_LABEL_INPUT_DRIVER_UDEV)))
843                      snprintf(s, len,
844                            "Controlador de entrada udev.\n"
845                            " \n"
846                            "Utiliza la API evdev más reciente para dar\n"
847                            "soporte para mandos. Permite hotplug\n"
848                            "(conexión en caliente) y force feedback\n"
849                            "(fuerza de respuesta).\n"
850                            " \n"
851                            "El controlador lee los eventos evdev para ser\n"
852                            "compatible con teclados. También es compatible\n"
853                            "con callbacks de teclado, ratones y pantallas\n"
854                            "táctiles.\n"
855                            " \n"
856                            "La mayoría de las distros tienen los nodos\n"
857                            "/dev/input en modo solo root (modo 600).\n"
858                            "Puedes configurar una regla udev que los haga\n"
859                            "accesibles a otros usuarios."
860                            );
861                else if (string_is_equal(lbl,
862                         msg_hash_to_str(MENU_ENUM_LABEL_INPUT_DRIVER_LINUXRAW)))
863                      snprintf(s, len,
864                            "Controlador de entrada linuxraw.\n"
865                            " \n"
866                            "Este controlador necesita un TTY activo.\n"
867                            "Los eventos de teclado se leen directamente\n"
868                            "desde el TTY, lo que es más simple pero\n"
869                            "no tan flexible como udev.\n"
870                            "No es compatible con ratones, etc.\n"
871                            " \n"
872                            "Este controlador utiliza la antigua API\n"
873                            "de mandos (/dev/input/js*).");
874                else
875                      snprintf(s, len,
876                            "Controlador de entrada.\n"
877                            " \n"
878                            "El controlador de vídeo podría forzar el uso\n"
879                            "de un controlador de entrada distinto.");
880             }
881             break;
882         case MENU_ENUM_LABEL_LOAD_CONTENT_LIST:
883             snprintf(s, len,
884                      "Carga contenidos.\n"
885                      "Busca contenidos.\n"
886                      " \n"
887                      "Para cargar contenidos necesitas un «núcleo»\n"
888                      "y un archivo de contenido.\n"
889                      " \n"
890                      "Para controlar el lugar donde el menú\n"
891                      "empezará a buscar contenidos, cambia\n"
892                      "la carpeta del explorador de archivos.\n"
893                      "En caso de que no esté configurada,\n"
894                      "empezará a buscar desde la raíz.\n"
895                      " \n"
896                      "El explorador filtrará las extensiones\n"
897                      "del último núcleo seleccionado en Cargar núcleo\n"
898                      "y lo utilizará al cargar un contenido."
899             );
900             break;
901         case MENU_ENUM_LABEL_LOAD_CONTENT_HISTORY:
902             snprintf(s, len,
903                      "Carga el contenido del historial.\n"
904                      " \n"
905                      "Cuando se cargan contenidos, se guardan\n"
906                      "en el historial junto con las combinaciones\n"
907                      "de núcleos de libretro.\n"
908                      " \n"
909                      "El historial se guarda en un archivo de la\n"
910                      "carpeta donde está el archivo de configuración\n"
911                      "de RetroArch. Si no se ha cargado un archivo\n"
912                      "al iniciar RetroArch, no se guardará ni cargará\n"
913                      "el historial, y la opción desaparecerá del\n"
914                      "menú principal."
915             );
916             break;
917         case MENU_ENUM_LABEL_VIDEO_DRIVER:
918             {
919                const char *video_driver = settings->arrays.video_driver;
920 
921                snprintf(s, len,
922                      "Controlador de vídeo actual.");
923 
924                if (string_is_equal(video_driver, "gl"))
925                {
926                   snprintf(s, len,
927                         "Controlador de vídeo OpenGL.\n"
928                         " \n"
929                         "Este controlador permite utilizar núcleos\n"
930                         "OpenGL de libretro, más las implementaciones\n"
931                         "renderizadas por software.\n"
932                         " \n"
933                         "El rendimiento de las implementaciones\n"
934                         "libretro por software y OpenGL dependen\n"
935                         "del controlador OpenGL de la tarjeta gráfica.");
936                }
937                else if (string_is_equal(video_driver, "sdl2"))
938                {
939                   snprintf(s, len,
940                         "Controlador de vídeo SDL 2.\n"
941                         " \n"
942                         "Este es un controlador de vídeo por software.\n"
943                         " \n"
944                         "El rendimiento para las implementaciones\n"
945                         "libretro por software depende de\n"
946                         "la implementación SDL de la plataforma.");
947                }
948                else if (string_is_equal(video_driver, "sdl1"))
949                {
950                   snprintf(s, len,
951                         "Controlador de vídeo SDL 1.2.\n"
952                         " \n"
953                         "Este es un controlador de vídeo por software.\n"
954                         " \n"
955                         "Su rendimiento es considerado inferior.\n"
956                         "Utilízalo únicamente como último recurso.");
957                }
958                else if (string_is_equal(video_driver, "d3d"))
959                {
960                   snprintf(s, len,
961                         "Controlador de vídeo Direct3D.\n"
962                         " \n"
963                         "El rendimiento de los núcleos que rendericen\n"
964                         "por software dependerá del controlador D3D\n"
965                         "de tu tarjeta gráfica.");
966                }
967                else if (string_is_equal(video_driver, "exynos"))
968                {
969                   snprintf(s, len,
970                         "Controlador de vídeo Exynos-G2D.\n"
971                         " \n"
972                         "Este es un controlador de vídeo Exynos\n"
973                         "de bajo nivel. Utiliza el bloque G2D\n"
974                         "del SoC Exynos de Samsung para las operaciones\n"
975                         "de blit.\n"
976                         " \n"
977                         "El rendimiento de los núcleos renderizados\n"
978                         "por software debería ser óptimo.");
979                }
980                else if (string_is_equal(video_driver, "drm"))
981                {
982                   snprintf(s, len,
983                         "Controlador de vídeo de DRM simple.\n"
984                         " \n"
985                         "Este es un controlador de vídeo que usa\n"
986                         "libdrm para escalado por hardware\n"
987                         "mediante las superposiciones de la GPU.\n");
988                }
989                else if (string_is_equal(video_driver, "sunxi"))
990                {
991                   snprintf(s, len,
992                         "Controlador de vídeo Sunxi-G2D.\n"
993                         " \n"
994                         "Este es un controlador de vídeo Sunxi\n"
995                         "de bajo nivel. Utiliza el bloque G2D\n"
996                         "de los SoC Allwinner.");
997                }
998             }
999             break;
1000         case MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN:
1001             snprintf(s, len,
1002                "Plugin de audio DSP.\n"
1003                "Procesa el audio antes de enviarlo\n"
1004                "al controlador."
1005             );
1006             break;
1007         case MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER:
1008             {
1009                const char *lbl = settings ? settings->arrays.audio_resampler : NULL;
1010 
1011                if (string_is_equal(lbl, msg_hash_to_str(
1012                            MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER_SINC)))
1013                   strlcpy(s,
1014                      "Implementación de ventana SINC.", len);
1015                else if (string_is_equal(lbl, msg_hash_to_str(
1016                            MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER_CC)))
1017                   strlcpy(s,
1018                      "Implementación de cosenos complejos.", len);
1019                else if (string_is_empty(s))
1020                   strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);
1021             }
1022             break;
1023 
1024 		case MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION: snprintf(s, len, "Asignar CRT");
1025 			break;
1026 
1027 		case MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION_SUPER: snprintf(s, len, "Asignar CRT SUPER");
1028 			break;
1029 
1030         case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET:
1031             snprintf(s, len,
1032                "Carga presets de shaders.\n"
1033                " \n"
1034                "Carga un preset de shaders directamente.\n"
1035                "El menú de shaders se actualizará.\n"
1036                " \n"
1037                "Si el CGP utiliza métodos de escalado complejos\n"
1038                "(por ejemplo, escalado de origen, el mismo\n"
1039                "factor para X/Y), el menú podría mostrar\n"
1040                "un factor de escalado incorrecto."
1041             );
1042             break;
1043         case MENU_ENUM_LABEL_VIDEO_SHADER_SCALE_PASS:
1044             snprintf(s, len,
1045                "La escala de esta pasada.\n"
1046                " \n"
1047                "El factor de escala es acumulativo,\n"
1048                "por ejemplo: 2x para el primer pase y 2x\n"
1049                "para el segundo dará una escala total de 4x.\n"
1050                " \n"
1051                "Si el último pase tiene un factor de escala,\n"
1052                "el resultado se estirará por toda la pantalla\n"
1053                "con el filtro predeterminado.\n"
1054                " \n"
1055                "Si has seleccionado «No importa», se utilizará\n"
1056                "o bien la escala 1x o se estirará a pantalla\n"
1057                "completa dependiendo de si es el último pase\n"
1058                "o no."
1059             );
1060             break;
1061         case MENU_ENUM_LABEL_VIDEO_SHADER_NUM_PASSES:
1062             snprintf(s, len,
1063                "Pases de shaders.\n"
1064                " \n"
1065                "RetroArch permite combinar diversos shaders\n"
1066                "con pasadas arbitrarias, filtros personales\n"
1067                "de hardware y factores de escala.\n"
1068                " \n"
1069                "Esta opción especifica la cantidad de pasadas\n"
1070                "de shaders a utilizar. Si seleccionas 0 y luego\n"
1071                "«Aplicar cambios en shaders», utilizarás\n"
1072                "un shader «en blanco».\n"
1073                " \n"
1074                "La opción Filtro predeterminado cambiará\n"
1075                "el filtro de escalado.");
1076             break;
1077         case MENU_ENUM_LABEL_VIDEO_SHADER_PARAMETERS:
1078             snprintf(s, len,
1079                "Parámetros de shaders.\n"
1080                " \n"
1081                "Modifica directamente el shader actual.\n"
1082                "No se guardará en el preset CGP/GLSLP.");
1083             break;
1084         case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_PARAMETERS:
1085             snprintf(s, len,
1086                "Parámetros del preset de shaders.\n"
1087                " \n"
1088                "Modifica el preset de shaders\n"
1089                "que se encuentra actualmente en el menú."
1090             );
1091             break;
1092         case MENU_ENUM_LABEL_VIDEO_SHADER_PASS:
1093             snprintf(s, len,
1094                "Ruta al shader.\n"
1095                " \n"
1096                "Todos los shaders deben ser del mismo tipo\n"
1097                "(por ejemplo: CG, GLSL o HLSL).\n"
1098                " \n"
1099                "Modifica la carpeta de shaders para indicar\n"
1100                "la ruta en la que el navegador comenzará\n"
1101                "a buscar shaders."
1102             );
1103             break;
1104         case MENU_ENUM_LABEL_CONFIGURATION_SETTINGS:
1105             snprintf(s, len,
1106                "Determina el orden de carga de los archivos\n"
1107                "de configuración.");
1108             break;
1109         case MENU_ENUM_LABEL_CONFIG_SAVE_ON_EXIT:
1110             snprintf(s, len,
1111                "Guarda la configuración al salir.\n"
1112                "Es útil para el menú, ya que los ajustes\n"
1113                "pueden ser modificados. Sobrescribirá\n"
1114                "la configuración existente.\n"
1115                " \n"
1116                "No se preservarán los #include y\n"
1117                "los comentarios.\n"
1118                " \n"
1119                "El archivo de configuración se considera\n"
1120                "inmutable por diseño, ya que es probable\n"
1121                "que esté gestionado por el usuario,\n"
1122                "por lo que no debería ser sobrescrito\n"
1123                "sin el consentimiento del mismo."
1124 #if defined(RARCH_CONSOLE) || defined(RARCH_MOBILE)
1125                "\nSin embargo, este no suele ser el caso\n"
1126                "en consolas, donde no es posible examinar\n"
1127                "el archivo de configuración de forma manual."
1128 #endif
1129             );
1130             break;
1131         case MENU_ENUM_LABEL_CONFIRM_ON_EXIT:
1132             snprintf(s, len, "¿Seguro que quieres salir?");
1133             break;
1134         case MENU_ENUM_LABEL_SHOW_HIDDEN_FILES:
1135             snprintf(s, len, "Mostrar archivos y carpetas ocultos.");
1136             break;
1137         case MENU_ENUM_LABEL_VIDEO_SHADER_FILTER_PASS:
1138             snprintf(s, len,
1139                "Filtro de hardware para esta pasada.\n"
1140                " \n"
1141                "Si se ha seleccionado «No importa»,\n"
1142                "se utilizará el predeterminado."
1143             );
1144             break;
1145         case MENU_ENUM_LABEL_AUTOSAVE_INTERVAL:
1146             snprintf(s, len,
1147                "Guarda automáticamente la SaveRAM no volátil\n"
1148                "en intervalos regulares.\n"
1149                " \n"
1150                "Esta opción está desactivada por defecto\n"
1151                "a menos que se haya configurado lo contrario.\n"
1152                "El intervalo se mide en segundos.\n"
1153                " \n"
1154                "Si utilizas 0, desactivarás\n"
1155                "el guardado automático.");
1156             break;
1157         case MENU_ENUM_LABEL_INPUT_BIND_DEVICE_TYPE:
1158             snprintf(s, len,
1159                "Tipo de dispositivo de entrada.\n"
1160                " \n"
1161                "Selecciona el tipo de dispositivo a utilizar.\n"
1162                "Afecta al núcleo libretro."
1163             );
1164             break;
1165         case MENU_ENUM_LABEL_LIBRETRO_LOG_LEVEL:
1166             snprintf(s, len,
1167                "Ajusta el nivel de registro de los\n"
1168                "núcleos libretro (GET_LOG_INTERFACE).\n"
1169                " \n"
1170                " Si el nivel de un registro de un núcleo\n"
1171                " libretro está por debajo del nivel indicado\n"
1172                " en libretro_log, será ignorado.\n"
1173                " \n"
1174                " Los registros DEBUG siempre son ignorados\n"
1175                " a menos que esté activado el modo de verbosidad\n"
1176                " (--verbose).\n"
1177                " \n"
1178                " DEBUG = 0\n"
1179                " INFO  = 1\n"
1180                " WARN  = 2\n"
1181                " ERROR = 3"
1182             );
1183             break;
1184         case MENU_ENUM_LABEL_STATE_SLOT_INCREASE:
1185         case MENU_ENUM_LABEL_STATE_SLOT_DECREASE:
1186             snprintf(s, len,
1187                "Posiciones de guardados rápidos.\n"
1188                " \n"
1189                " Si se selecciona la posición 0, el nombre\n"
1190                " del guardado rápido será *.state (o lo que\n"
1191                " esté definido en la línea de comandos).\n"
1192                "Si la ranura es un valor distinto a 0,\n"
1193                "la ruta será (path)(d), siendo (d) el número\n"
1194                "de la posición.");
1195             break;
1196         case MENU_ENUM_LABEL_SHADER_APPLY_CHANGES:
1197             snprintf(s, len,
1198                "Aplica los cambios en los shaders.\n"
1199                " \n"
1200                "Cuando cambies los ajustes de shaders,\n"
1201                "puedes usar esta opción para aplicar\n"
1202                "los cambios.\n"
1203                " \n"
1204                "El cambio en los shaders es una operación\n"
1205                "que consume bastantes recursos, así que\n"
1206                "debe hacerse de forma explícita.\n"
1207                " \n"
1208                "Al aplicar shaders, se guarda su configuración\n"
1209                "en un archivo temporal (menu.cgp o menu.glslp)\n"
1210                "y se cargan. El archivo persistirá al abandonar\n"
1211                "RetroArch y se guardará en la carpeta Shader."
1212             );
1213             break;
1214         case MENU_ENUM_LABEL_SHADER_WATCH_FOR_CHANGES:
1215             snprintf(s, len,
1216                "Busca cambios en los archivos de shaders.\n"
1217                " \n"
1218                "Una vez hayas guardado los cambios\n"
1219                "de un shader del disco, el shader\n"
1220                "se recompilará automáticamente\n"
1221                "y se aplicará al contenido ejecutado."
1222             );
1223             break;
1224         case MENU_ENUM_LABEL_MENU_TOGGLE:
1225             snprintf(s, len,
1226                "Muestra u oculta el menú.");
1227             break;
1228         case MENU_ENUM_LABEL_GRAB_MOUSE_TOGGLE:
1229             snprintf(s, len,
1230                "Permite o no capturar el ratón.\n"
1231                " \n"
1232                "Al capturar el ratón, RetroArch lo ocultará\n"
1233                "y mantendrá el puntero del ratón dentro\n"
1234                "de la ventana para que la entrada relativa\n"
1235                "del ratón funcione mejor.");
1236             break;
1237         case MENU_ENUM_LABEL_GAME_FOCUS_TOGGLE:
1238             snprintf(s, len,
1239                "Activa o desactiva la prioridad al juego.\n"
1240                " \n"
1241                "Cuando el juego tiene prioridad, RetroArch\n"
1242                "desactivará las teclas rápidas y mantendrá\n"
1243                "el puntero del ratón en el interior\n"
1244                "de la ventana.");
1245             break;
1246         case MENU_ENUM_LABEL_DISK_NEXT:
1247             snprintf(s, len,
1248                "Cambia de imagen de disco.\n"
1249                "Utiliza esta opción tras expulsar un disco.\n"
1250                " \n"
1251                "Termina la operación volviendo a pulsar\n"
1252                "el botón de expulsión.");
1253             break;
1254         case MENU_ENUM_LABEL_VIDEO_FILTER:
1255 #ifdef HAVE_FILTERS_BUILTIN
1256             snprintf(s, len,
1257                   "Filtro de vídeo basado en la CPU.");
1258 #else
1259             snprintf(s, len,
1260                      "Filtro de vídeo basado en la CPU.\n"
1261                      " \n"
1262                      "Ruta a una librería dinámica.");
1263 #endif
1264             break;
1265         case MENU_ENUM_LABEL_AUDIO_DEVICE:
1266             snprintf(s, len,
1267                      "Anula el dispositivo de audio predeterminado\n"
1268                      "que utiliza el controlador de audio.\n"
1269                      "Esta opción depende del controlador.\n"
1270                      "Por ejemplo:\n"
1271 #ifdef HAVE_ALSA
1272             " \n"
1273             "ALSA necesita un dispositivo PCM."
1274 #endif
1275 #ifdef HAVE_OSS
1276             " \n"
1277             "OSS necesita una ruta (por ejemplo: /dev/dsp)."
1278 #endif
1279 #ifdef HAVE_JACK
1280             " \n"
1281             "JACK necesita nombres de puertos (por ejemplo:\n"
1282             "system:playback1,system:playback_2)."
1283 #endif
1284 #ifdef HAVE_RSOUND
1285             " \n"
1286             "RSound necesita una dirección IP\n"
1287             "de un servidor RSound."
1288 #endif
1289             );
1290             break;
1291         case MENU_ENUM_LABEL_DISK_EJECT_TOGGLE:
1292             snprintf(s, len,
1293                      "Alterna el botón de expulsión de discos.\n"
1294                      " \n"
1295                      "Sirve para contenidos que utilicen\n"
1296                      "varios discos.");
1297             break;
1298         case MENU_ENUM_LABEL_ENABLE_HOTKEY:
1299             snprintf(s, len,
1300                      "Activa otras teclas rápidas.\n"
1301                      " \n"
1302                      "Si esta tecla rápida está asignada a un\n"
1303                      "teclado, un botón o un eje de un mando,\n"
1304                      "el resto de teclas rápidas se desactivarán\n"
1305                      "a menos que esta tecla sea pulsada\n"
1306                      "al mismo tiempo.\n"
1307                      " \n"
1308                      "Esto sirve para implementaciones centradas\n"
1309                      "en RETRO_KEYBOARD, que ocupan una gran porción\n"
1310                      "del teclado y en las que no conviene\n"
1311                      "que las teclas rápidas interfieran con\n"
1312                      "el funcionamiento normal.");
1313             break;
1314         case MENU_ENUM_LABEL_REWIND_ENABLE:
1315             snprintf(s, len,
1316                      "Activa el rebobinado.\n"
1317                      " \n"
1318                      "Esta función afecta al rendimiento,\n"
1319                      "así que está desactivada por defecto.");
1320             break;
1321         case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_TOGGLE:
1322             snprintf(s, len,
1323                      "Aplica el truco nada más activarlo.");
1324             break;
1325         case MENU_ENUM_LABEL_CHEAT_APPLY_AFTER_LOAD:
1326             snprintf(s, len,
1327                      "Aplica automáticamente los trucos nada más\n"
1328                      "cargar el juego.");
1329             break;
1330         case MENU_ENUM_LABEL_LIBRETRO_DIR_PATH:
1331             snprintf(s, len,
1332                "Carpeta de núcleos.\n"
1333                " \n"
1334                "La carpeta donde se buscarán\n"
1335                "las implementaciones de núcleos libretro.");
1336             break;
1337         case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE_AUTO: {
1338             /* Work around C89 limitations */
1339             /* Arreglo para saltarse la limitación de 509 caracteres por cadena. */
1340             char u[501];
1341             const char *t =
1342                      "La frecuencia de actualización precisa del\n"
1343                      "monitor (en Hz). Se utiliza para calcular\n"
1344                      "la frecuencia de entrada de audio con esta\n"
1345                      "fórmula:\n"
1346                      " \n"
1347                      "frecuencia de entrada de audio =\n"
1348                      "velocidad de entrada de juego *\n"
1349                      "frecuencia de actualización de pantalla /\n"
1350                      "frecuencia de actualización de juego\n";
1351             snprintf(u, sizeof(u), /* can't inline this due to the printf arguments */
1352                      " \n"
1353                      "Si la implementación no indica un valor,\n"
1354                      "se asumirá el sistema NTSC de forma\n"
1355                      "predeterminada por motivos de compatibilidad.\n"
1356                      " \n"
1357                      "Este valor debería ser lo más similar a 60 Hz\n"
1358                      "para evitar cambios en el tono. Si tu monitor\n"
1359                      "no puede funcionar a una frecuencia igual\n"
1360                      "o similar a 60 Hz, desactiva la sincronía\n"
1361                      "vertical y deja esta opción en su valor\n"
1362                      "predeterminado.");
1363             strlcpy(s, t, len);
1364             strlcat(s, u, len);
1365         }
1366             break;
1367         case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE_POLLED:
1368             snprintf(s, len,
1369                      "Asigna la frecuencia de actualización\n"
1370                      "sondeada.\n"
1371                      " \n"
1372                      "Cambia la frecuencia de actualización al valor\n"
1373                      "obtenido a través del controlador de vídeo.");
1374             break;
1375         case MENU_ENUM_LABEL_VIDEO_ROTATION:
1376             snprintf(s, len,
1377                      "Fuerza una rotación concreta de la pantalla.\n"
1378                      " \n"
1379                      "La rotación se añade a las rotaciones\n"
1380                      "que indique el núcleo libretro (ver\n"
1381                      "Rotación de vídeo).");
1382             break;
1383         case MENU_ENUM_LABEL_VIDEO_SCALE:
1384             snprintf(s, len,
1385                      "Resolución en pantalla completa.\n"
1386                      " \n"
1387                      "Si se indica 0, se utilizará la resolución\n"
1388                      "del entorno.");
1389             break;
1390         case MENU_ENUM_LABEL_FASTFORWARD_RATIO:
1391             snprintf(s, len,
1392                      "Ajusta la proporción del avance rápido."
1393                      " \n"
1394                      "Indica la velocidad máxima a la que se ejecutará\n"
1395                      "el contenido durante el avance rápido.\n"
1396                      " \n"
1397                      "(Por ejemplo, 5.0 para un contenido a 60 FPS =>\n"
1398                      "máximo de 300 FPS).\n"
1399                      " \n"
1400                      "RetroArch pasará a segundo plano para asegurarse\n"
1401                      "de que no se supere la velocidad máxima.\n"
1402                      "Este límite no es completamente preciso.");
1403             break;
1404         case MENU_ENUM_LABEL_VRR_RUNLOOP_ENABLE:
1405             snprintf(s, len,
1406                      "Sincroniza los FPS al contenido.\n"
1407                      " \n"
1408                      "Esta opción es la equivalente a forzar\n"
1409                      "una velocidad de 1x en el avance rápido.\n"
1410                      "No habrá alteraciones respecto a la frecuencia\n"
1411                      "de actualización solicitada por el núcleo\n"
1412                      "ni control dinámico de la frecuencia de sonido.");
1413             break;
1414         case MENU_ENUM_LABEL_VIDEO_MONITOR_INDEX:
1415             snprintf(s, len,
1416                      "Monitor preferido.\n"
1417                      " \n"
1418                      "0 (predeterminado) significa que no hay\n"
1419                      "preferencia alguna y de 1 en adelante\n"
1420                      "(siendo 1 el primer monitor) sugiere\n"
1421                      "a RetroArch que utilice ese monitor específico.");
1422             break;
1423         case MENU_ENUM_LABEL_VIDEO_CROP_OVERSCAN:
1424             snprintf(s, len,
1425                      "Fuerza a recortar los fotogramas con overscan.\n"
1426                      " \n"
1427                      "El comportamiento exacto de esta opción\n"
1428                      "depende de la implementación del núcleo.");
1429             break;
1430         case MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER:
1431             snprintf(s, len,
1432                      "Limita el escalado del vídeo a números enteros.\n"
1433                      " \n"
1434                      "El tamaño base depende de la geometría\n"
1435                      "que indique el sistema y de la relación\n"
1436                      "de aspecto.\n"
1437                      " \n"
1438                      "Si no se ha configurado la opción\n"
1439                      "Forzar proporción, los valores X/Y\n"
1440                      "se escalarán de forma independiente\n"
1441                      "utilizando números enteros.");
1442             break;
1443         case MENU_ENUM_LABEL_AUDIO_VOLUME:
1444             snprintf(s, len,
1445                      "Volumen de audio expresado en dB.\n"
1446                      " \n"
1447                      "0 dB es el volumen normal sin ganancia\n"
1448                      "aplicada. La ganancia se puede controlar\n"
1449                      "en tiempo real con los botones\n"
1450                      "de Subir volumen/Bajar volumen.");
1451             break;
1452         case MENU_ENUM_LABEL_AUDIO_RATE_CONTROL_DELTA:
1453             snprintf(s, len,
1454                      "Control de la frecuencia de audio.\n"
1455                      " \n"
1456                      "Si seleccionas 0, desactivarás el control\n"
1457                      "de la frecuencia. Cualquier otro valor cambiará\n"
1458                      "el delta de control de la frecuencia de audio.\n"
1459                      " \n"
1460                      "Define cuánta frecuencia de entrada puede\n"
1461                      "ajustarse de forma dinámica.\n"
1462                      " \n"
1463                      " La frecuencia de entrada se define como:\n"
1464                      " frecuencia de entrada * (1.0 +/-\n"
1465                      " (delta de control de frecuencia))");
1466             break;
1467         case MENU_ENUM_LABEL_AUDIO_MAX_TIMING_SKEW:
1468             snprintf(s, len,
1469                "Variación máxima en la sincronía de audio.\n"
1470                " \n"
1471                "Define la variación máxima de la frecuencia\n"
1472                "de entrada. Podrías aumentar el valor\n"
1473                "para cambiar la sincronía (por ejemplo,\n"
1474                "si ejecutas núcleos PAL en monitores NTSC)\n"
1475                "a cambio de alterar el tono de audio.\n"
1476                " \n"
1477                " La frecuencia de entrada se calcula así:\n"
1478                " frecuencia de entrada * (1.0 +/-\n"
1479                " (variación máxima de sincronía))");
1480             break;
1481         case MENU_ENUM_LABEL_OVERLAY_NEXT:
1482             snprintf(s, len,
1483                      "Cambia a la siguiente superposición.\n"
1484                      " \n"
1485                      "Se expandirá sobre la pantalla.");
1486             break;
1487         case MENU_ENUM_LABEL_LOG_VERBOSITY:
1488             snprintf(s, len,
1489                      "Activa o desactiva el nivel\n"
1490                      "de verbosidad de la interfaz.");
1491             break;
1492         case MENU_ENUM_LABEL_VOLUME_UP:
1493             snprintf(s, len,
1494                      "Aumenta el volumen del audio.");
1495             break;
1496         case MENU_ENUM_LABEL_VOLUME_DOWN:
1497             snprintf(s, len,
1498                      "Disminuye el volumen del audio.");
1499             break;
1500         case MENU_ENUM_LABEL_VIDEO_DISABLE_COMPOSITION:
1501             snprintf(s, len,
1502                      "Fuerza la desactivación de la composición.\n"
1503                      "Actualmente solo funciona en Windows Vista/7.");
1504             break;
1505         case MENU_ENUM_LABEL_PERFCNT_ENABLE:
1506             snprintf(s, len,
1507                      "Activa o desactiva los contadores\n"
1508                      "de rendimiento de la interfaz.");
1509             break;
1510         case MENU_ENUM_LABEL_SYSTEM_DIRECTORY:
1511             snprintf(s, len,
1512                      "Carpeta del sistema.\n"
1513                      " \n"
1514                      "Asigna la carpeta «system».\n"
1515                      "Los núcleos pueden utilizarla para cargar BIOS,\n"
1516                      "configuraciones específicas de un sistema, etc.");
1517             break;
1518         case MENU_ENUM_LABEL_SAVESTATE_AUTO_SAVE:
1519         case MENU_ENUM_LABEL_SAVESTATE_AUTO_LOAD:
1520             snprintf(s, len,
1521                      "Guarda automáticamente un guardado rápido\n"
1522                      "al cerrar RetroArch.\n"
1523                      " \n"
1524                      "RetroArch cargará al arrancar cualquier\n"
1525                      "guardado rápido que se encuentre en esa ruta\n"
1526                      "si la opción «Cargar guardado rápido\n"
1527                      "automáticamente» está activada.");
1528             break;
1529         case MENU_ENUM_LABEL_VIDEO_THREADED:
1530             snprintf(s, len,
1531                      "Utiliza un controlador de vídeo multihilos.\n"
1532                      " \n"
1533                      "Esta opción podría mejorar el rendimiento\n"
1534                      "a costa de ganar retraso y perder fluidez\n"
1535                      "de vídeo.");
1536             break;
1537         case MENU_ENUM_LABEL_VIDEO_VSYNC:
1538             snprintf(s, len,
1539                      "Sincronía vertical de la señal de vídeo.");
1540             break;
1541         case MENU_ENUM_LABEL_VIDEO_HARD_SYNC:
1542             snprintf(s, len,
1543                      "Intenta sincronizar la CPU y la GPU\n"
1544                      "de una forma más estricta.\n"
1545                      " \n"
1546                      "Puede reducir el retraso a costa\n"
1547                      "de perder rendimiento.");
1548             break;
1549         case MENU_ENUM_LABEL_REWIND_GRANULARITY:
1550             snprintf(s, len,
1551                      "Nivel de detalle del rebobinado.\n"
1552                      " \n"
1553                      "Cuando se rebobina un número determinado\n"
1554                      "de fotogramas, puedes rebobinar varios\n"
1555                      "fotogramas a la vez, aumentando la velocidad\n"
1556                      "de rebobinado.");
1557             break;
1558         case MENU_ENUM_LABEL_REWIND_BUFFER_SIZE:
1559             snprintf(s, len,
1560                      "Tamaño del búfer de rebobinado (en MB).\n"
1561                      " \n"
1562                      "La cantidad de memoria a reservar para\n"
1563                      "la función de rebobinado. Al aumentar\n"
1564                      "este valor se incrementará la longitud\n"
1565                      "del historial de rebobinado.");
1566             break;
1567         case MENU_ENUM_LABEL_REWIND_BUFFER_SIZE_STEP:
1568             snprintf(s, len,
1569                      "Tamaño de los pasos del búfer de rebobinado\n"
1570                      "(en MB).\n"
1571                      " \n"
1572                      "Cada vez que modifiques el valor del tamaño\n"
1573                      "del búfer de rebobinado a través de esta\n"
1574                      "interfaz, cambiará utilizando este valor.");
1575             break;
1576         case MENU_ENUM_LABEL_SCREENSHOT:
1577             snprintf(s, len,
1578                      "Captura la pantalla.");
1579             break;
1580         case MENU_ENUM_LABEL_VIDEO_FRAME_DELAY:
1581             snprintf(s, len,
1582                      "Ajusta la cantidad de retraso en milisegundos\n"
1583                      "posteriores a la sincronía vertical con la que\n"
1584                      "se ejecutará el núcleo.\n"
1585                      " \n"
1586                      "Puede reducir el retraso a costa de aumentar\n"
1587                      "la probabilidad de perder fluidez.\n"
1588                      " \n"
1589                      "El valor máximo es 15.");
1590             break;
1591         case MENU_ENUM_LABEL_VIDEO_SHADER_DELAY:
1592             snprintf(s, len,
1593                      "Ajusta la cantidad de milisegundos de retraso\n"
1594                      "previos a la carga automática de shaders.\n"
1595                      " \n"
1596                      "Esto puede evitar defectos gráficos provocados\n"
1597                      "por aplicaciones de captura de pantalla, como\n"
1598                      "el software para streaming.");
1599             break;
1600         case MENU_ENUM_LABEL_VIDEO_HARD_SYNC_FRAMES:
1601             snprintf(s, len,
1602                      "Ajusta la cantidad de fotogramas que puede\n"
1603                      "adelantar la CPU a la GPU al utilizar\n"
1604                      "«Sincronía estricta de CPU».\n"
1605                      " \n"
1606                      "El valor máximo es 3.\n"
1607                      " \n"
1608                      " 0: Sincroniza inmediatamente a GPU.\n"
1609                      " 1: Sincroniza con el fotograma anterior.\n"
1610                      " 2: Etcétera.");
1611             break;
1612         case MENU_ENUM_LABEL_VIDEO_BLACK_FRAME_INSERTION:
1613             snprintf(s, len,
1614                      "Introduce fotogramas negros entre fotogramas.\n"
1615                      " \n"
1616                      "Es útil para los monitores que funcionan\n"
1617                      "a 120 Hz y quieren jugar a contenidos a 60 Hz\n"
1618                      "eliminando el efecto ghosting.\n"
1619                      " \n"
1620                      "La frecuencia de actualización de vídeo\n"
1621                      "aún debe configurarse como si utilizaras\n"
1622                      "un monitor de 60 Hz (divide la frecuencia\n"
1623                      "de actualización entre 2).");
1624             break;
1625         case MENU_ENUM_LABEL_RGUI_SHOW_START_SCREEN:
1626             snprintf(s, len,
1627                      "Muestra la pantalla de inicio en el menú.\n"
1628                      "Esta pantalla se desactiva automáticamente\n"
1629                      "cuando se ha visto por primera vez.\n"
1630                      " \n"
1631                      "Esta opción solo se actualizará dentro\n"
1632                      "de la configuración si «Guardar configuración\n"
1633                      "al salir» está activada.");
1634             break;
1635         case MENU_ENUM_LABEL_VIDEO_FULLSCREEN:
1636             snprintf(s, len,
1637                      "Activa o desactiva el modo\n"
1638                      "de pantalla completa.");
1639             break;
1640         case MENU_ENUM_LABEL_BLOCK_SRAM_OVERWRITE:
1641             snprintf(s, len,
1642                      "Impide que la SaveRAM sea sobrescrita\n"
1643                      "al cargar un guardado rápido.\n"
1644                      " \n"
1645                      "Podría provocar defectos en los juegos.");
1646             break;
1647         case MENU_ENUM_LABEL_PAUSE_NONACTIVE:
1648             snprintf(s, len,
1649                      "Pausa el juego cuando la ventana\n"
1650                      "pasa a estar en segundo plano.");
1651             break;
1652         case MENU_ENUM_LABEL_VIDEO_GPU_SCREENSHOT:
1653             snprintf(s, len,
1654                      "Si es posible, las capturas de pantalla\n"
1655                      "utilizarán la imagen de la GPU con los shaders\n"
1656                      "ya aplicados.");
1657             break;
1658         case MENU_ENUM_LABEL_SCREENSHOT_DIRECTORY:
1659             snprintf(s, len,
1660                      "Carpeta de capturas de pantalla.\n"
1661                      " \n"
1662                      "En esta carpeta se guardarán\n"
1663                      "las capturas de pantalla."
1664             );
1665             break;
1666         case MENU_ENUM_LABEL_VIDEO_SWAP_INTERVAL:
1667             snprintf(s, len,
1668                      "Intervalo de cambio de la sincronía vertical.\n"
1669                      " \n"
1670                      "Utiliza un intervalo personalizado\n"
1671                      "para la sincronía vertical.\n"
1672                      "Configúralo para reducir a la mitad\n"
1673                      "la frecuencia de actualización del monitor.");
1674             break;
1675         case MENU_ENUM_LABEL_SAVEFILE_DIRECTORY:
1676             snprintf(s, len,
1677                      "Carpeta de partidas guardadas.\n"
1678                      " \n"
1679                      "Almacena todas las partidas guardadas (*.srm)\n"
1680                      "en esta carpeta. Incluye los archivos\n"
1681                      "relacionados, como .bsv, .rt, .psrm, etcétera.\n"
1682                      " \n"
1683                      "Esta carpeta será ignorada si se utilizan\n"
1684                      "explícitamente las opciones por línea\n"
1685                      "de comandos.");
1686             break;
1687         case MENU_ENUM_LABEL_SAVESTATE_DIRECTORY:
1688             snprintf(s, len,
1689                      "Carpeta de guardados rápidos.\n"
1690                      " \n"
1691                      "Almacena todos los guardados rápidos\n"
1692                      "(*.state) en esta carpeta.\n"
1693                      " \n"
1694                      "Esta carpeta será ignorada si se utilizan\n"
1695                      "explícitamente las opciones por línea\n"
1696                      "de comandos.");
1697             break;
1698         case MENU_ENUM_LABEL_ASSETS_DIRECTORY:
1699             snprintf(s, len,
1700                      "Carpeta de recursos.\n"
1701                      " \n"
1702                      "Esta ubicación es donde las interfaces\n"
1703                      "de menús buscarán de forma predeterminada\n"
1704                      "los recursos a cargar, etc.");
1705             break;
1706         case MENU_ENUM_LABEL_DYNAMIC_WALLPAPERS_DIRECTORY:
1707             snprintf(s, len,
1708                      "Carpeta de fondos dinámicos de pantalla.\n"
1709                      " \n"
1710                      "Aquí se almacenan los fondos de pantalla\n"
1711                      "que el menú cargará de forma dinámica\n"
1712                      "según el contexto.");
1713             break;
1714         case MENU_ENUM_LABEL_SLOWMOTION_RATIO:
1715             snprintf(s, len,
1716                      "Proporción de la cámara lenta.\n"
1717                      " \n"
1718                      "Al usar la cámara lenta, el contenido\n"
1719                      "se ralentizará según este factor.");
1720             break;
1721         case MENU_ENUM_LABEL_INPUT_BUTTON_AXIS_THRESHOLD:
1722             snprintf(s, len,
1723                      "Define el umbral de los ejes.\n"
1724                      " \n"
1725                      "Indica la distancia que debe alcanzar un eje\n"
1726                      "para que el botón se considere presionado.\n"
1727                      "Los valores disponibles son [0.0, 1.0].");
1728             break;
1729         case MENU_ENUM_LABEL_INPUT_TURBO_PERIOD:
1730             snprintf(s, len,
1731                      "Duración del turbo.\n"
1732                      " \n"
1733                      "Indica la velocidad con la que se pulsan\n"
1734                      "los botones en el modo turbo (en fotogramas)."
1735             );
1736             break;
1737         case MENU_ENUM_LABEL_INPUT_TURBO_MODE:
1738             snprintf(s, len,
1739                   "Modo turbo.\n"
1740                   " \n"
1741                   "Selecciona el comportamiento básico\n"
1742                   "del modo turbo."
1743                   );
1744             break;
1745         case MENU_ENUM_LABEL_INPUT_TURBO_DEFAULT_BUTTON:
1746             snprintf(s, len,
1747                   "Botón predeterminado del modo turbo.\n"
1748                   " \n"
1749                   "El botón individual predeterminado\n"
1750                   "para el modo turbo.\n"
1751                   );
1752             break;
1753         case MENU_ENUM_LABEL_INPUT_DUTY_CYCLE:
1754             snprintf(s, len,
1755                      "Cambia el ciclo de trabajo.\n"
1756                      " \n"
1757                      "Describe la duración de un periodo\n"
1758                      "de pulsación con turbo (en fotogramas)."
1759             );
1760             break;
1761         case MENU_ENUM_LABEL_INPUT_TOUCH_ENABLE:
1762             snprintf(s, len, "Activa el soporte táctil.");
1763             break;
1764         case MENU_ENUM_LABEL_INPUT_PREFER_FRONT_TOUCH:
1765             snprintf(s, len, "Utiliza la pantalla frontal\n"
1766                      "en lugar de la trasera.");
1767             break;
1768         case MENU_ENUM_LABEL_MOUSE_ENABLE:
1769             snprintf(s, len, "Permite usar el ratón dentro del menú.");
1770             break;
1771         case MENU_ENUM_LABEL_POINTER_ENABLE:
1772             snprintf(s, len, "Permite usar la pantalla táctil\n"
1773                      "dentro del menú.");
1774             break;
1775         case MENU_ENUM_LABEL_MENU_WALLPAPER:
1776             snprintf(s, len, "Ruta de la imagen que se usará\n"
1777                      "como fondo de pantalla.");
1778             break;
1779         case MENU_ENUM_LABEL_NAVIGATION_WRAPAROUND:
1780             snprintf(s, len,
1781                      "Indica si se debe volver al principio\n"
1782                      "de una lista tras llegar a su final.");
1783             break;
1784         case MENU_ENUM_LABEL_PAUSE_LIBRETRO:
1785             snprintf(s, len,
1786                      "Si desactivas esta opción, el juego\n"
1787                      "seguirá en marcha en segundo plano\n"
1788                      "mientras estás en el menú.");
1789             break;
1790         case MENU_ENUM_LABEL_SUSPEND_SCREENSAVER_ENABLE:
1791             snprintf(s, len,
1792                      "Suspende el protector de pantalla.\n"
1793                      "Es posible que el controlador de vídeo\n"
1794                      "no respete este ajuste.");
1795             break;
1796         case MENU_ENUM_LABEL_NETPLAY_MODE:
1797             snprintf(s, len,
1798                      "Ajusta el modo del cliente de juego en red\n"
1799                      "para el usuario actual. Si esta opción está\n"
1800                      "desactivada, se utilizará el modo servidor.");
1801             break;
1802         case MENU_ENUM_LABEL_NETPLAY_DELAY_FRAMES:
1803             snprintf(s, len,
1804                      "Cantidad de fotogramas retrasados\n"
1805                      "para el juego en red.\n"
1806                      " \n"
1807                      "Un valor elevado mejorará el rendimiento\n"
1808                      "a costa de aumentar la latencia.");
1809             break;
1810         case MENU_ENUM_LABEL_NETPLAY_PUBLIC_ANNOUNCE:
1811             snprintf(s, len,
1812                      "Indica si las partidas de juego en red\n"
1813                      "serán anunciadas de forma pública.\n"
1814                      " \n"
1815                      "Si esta opción está desactivada,\n"
1816                      "los clientes no podrán acceder mediante\n"
1817                      "la sala pública, sino que deberán\n"
1818                      "conectarse manualmente.");
1819             break;
1820         case MENU_ENUM_LABEL_NETPLAY_START_AS_SPECTATOR:
1821             snprintf(s, len,
1822                      "Indica si se debe empezar el juego en red\n"
1823                      "en modo espectador.\n"
1824                      " \n"
1825                      "Si esta opción está activada, el juego en red\n"
1826                      "comenzará en modo espectador.\n"
1827                      "Es posible cambiar el modo a posteriori.");
1828             break;
1829         case MENU_ENUM_LABEL_NETPLAY_ALLOW_SLAVES:
1830             snprintf(s, len,
1831                      "Permite las conexiones en modo esclavo.\n"
1832                      " \n"
1833                      "Los clientes en modo esclavo consumen\n"
1834                      "pocos recursos de CPU en ambos lados,\n"
1835                      "pero tendrán más problemas de latencia\n"
1836                      "de red.");
1837             break;
1838         case MENU_ENUM_LABEL_NETPLAY_REQUIRE_SLAVES:
1839             snprintf(s, len,
1840                      "Bloquea las conexiones que no utilicen\n"
1841                      "el modo esclavo.\n"
1842                      " \n"
1843                      "No se recomienda su uso salvo en redes\n"
1844                      "muy rápidas con máquinas poco potentes.");
1845             break;
1846         case MENU_ENUM_LABEL_NETPLAY_STATELESS_MODE:
1847             snprintf(s, len,
1848                      "Ejecuta el juego en red en un modo\n"
1849                      "que no utiliza guardados rápidos.\n"
1850                      " \n"
1851                      "La activación de esta opción requiere\n"
1852                      "de una red muy rápida, pero no se realizarán\n"
1853                      "rebobinados, de modo que no habrá tirones\n"
1854                      "durante la sesión.");
1855             break;
1856         case MENU_ENUM_LABEL_NETPLAY_CHECK_FRAMES: {
1857             /* Work around C89 limitations */
1858             /* Arreglo para saltarse la limitación de 509 caracteres por cadena. */
1859             char u[501];
1860             const char *t =
1861                      "Indica la frecuencia (en fotogramas) con la que\n"
1862                      "el servidor del juego en red verificará\n"
1863                      "que está sincronizado con el cliente.\n"
1864                      " \n"
1865                      "Este valor no tiene efectos visibles en\n"
1866                      "la mayoría de los núcleos y puede ser ignorado.\n"
1867                      "En el caso de los núcleos no deterministas,\n"
1868                      "este valor determina las veces en las que los\n"
1869                      "clientes de juego en red serán sincronizados.\n";
1870             snprintf(u, sizeof(u), /* can't inline this due to the printf arguments */
1871                      "En el caso de los núcleos con fallos, asignar\n"
1872                      "un valor que no sea cero provocará problemas\n"
1873                      "graves de rendimiento.\n"
1874                      "Selecciona cero para no hacer comprobaciones.\n"
1875                      "Este valor es usado únicamente por el servidor\n"
1876                      "de juego en red.");
1877             strlcpy(s, t, len);
1878             strlcat(s, u, len);
1879         }
1880             break;
1881         case MENU_ENUM_LABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN:
1882             snprintf(s, len,
1883                      "El número de fotogramas de retraso\n"
1884                      "en la entrada que utilizará el juego en red\n"
1885                      "para ocultar la latencia de red.\n"
1886                      " \n"
1887                      "Esta opción retrasa la entrada local en\n"
1888                      "el juego en red para que el fotograma ejecutado\n"
1889                      "sea más próximo a los fotogramas que se reciben\n"
1890                      "a través de la red, reduciendo los tirones\n"
1891                      "y el consumo de la CPU, pero genera un retraso\n"
1892                      "en la entrada visible.");
1893             break;
1894         case MENU_ENUM_LABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE:
1895             snprintf(s, len,
1896                      "El rango de fotogramas de retraso de entrada\n"
1897                      "que puede utilizar el juego en red para\n"
1898                      "camuflar la latencia de red.\n"
1899                      " \n"
1900                      "Si esta opción está activada, el juego en red\n"
1901                      "ajustará de forma dinámica el número de\n"
1902                      "fotogramas de retraso en la entrada para\n"
1903                      "equilibrar el tiempo de la CPU; el retraso\n"
1904                      "de entrada y la latencia de red. Esto reduce\n"
1905                      "los tirones y el consumo de la CPU, pero\n"
1906                      "genera un retraso en la entrada impredecible.");
1907             break;
1908         case MENU_ENUM_LABEL_NETPLAY_NAT_TRAVERSAL:
1909             snprintf(s, len,
1910                      "Al alojar un servidor, se intentará buscar\n"
1911                      "conexiones de forma pública a través de\n"
1912                      "Internet mediante UPnP u otras tecnologías\n"
1913                      "pensadas para salir de redes locales.");
1914             break;
1915         case MENU_ENUM_LABEL_NETPLAY_USE_MITM_SERVER:
1916             snprintf(s, len,
1917                      "Al alojar una sesión de juego en red, se\n"
1918                      "retransmitirá la conexión a un servidor\n"
1919                      "intermediario (man-in-the-middle) para sortear\n"
1920                      "cortafuegos o problemas de NAT/UPnP.");
1921             break;
1922         case MENU_ENUM_LABEL_NETPLAY_MITM_SERVER:
1923             snprintf(s, len,
1924                      "Especifica el servidor intermediario (man-\n"
1925                      "in-the-middle) para el juego en red.\n"
1926                      "Un servidor que esté físicamente más cerca\n"
1927                      "de ti puede tener menos latencia.");
1928             break;
1929         case MENU_ENUM_LABEL_VIDEO_MAX_SWAPCHAIN_IMAGES:
1930             snprintf(s, len,
1931                      "Indica la cantidad máxima de imágenes en\n"
1932                      "swapchain. Esto indica al controlador de vídeo\n"
1933                      "que utilice un búfer de vídeo concreto.\n"
1934                      " \n"
1935                      "Búfer simple: 1\n"
1936                      "Búfer doble:  2\n"
1937                      "Búfer triple: 3\n"
1938                      " \n"
1939                      "Si seleccionas el búfer más adecuado,\n"
1940                      "podrás alterar la latencia.");
1941             break;
1942         case MENU_ENUM_LABEL_VIDEO_SMOOTH:
1943             snprintf(s, len,
1944                      "Suaviza la imagen con un filtro bilineal.\n"
1945                      "Desactiva esta opción si utilizas shaders.");
1946             break;
1947       case MENU_ENUM_LABEL_VIDEO_CTX_SCALING:
1948          snprintf(s, len,
1949 #ifdef HAVE_ODROIDGO2
1950                "Escalado RGA y filtrado bicúbico.\n"
1951                "Podría inutilizar los widgets."
1952 #else
1953                "Escalado según contexto del hardware\n"
1954                "(si existe)."
1955 #endif
1956          );
1957          break;
1958         case MENU_ENUM_LABEL_TIMEDATE_ENABLE:
1959             snprintf(s, len,
1960                      "Muestra la fecha o la hora actuales\n"
1961                      "en el menú.");
1962             break;
1963         case MENU_ENUM_LABEL_TIMEDATE_STYLE:
1964            snprintf(s, len,
1965                      "Indica el formato de la fecha o la hora.");
1966            break;
1967         case MENU_ENUM_LABEL_BATTERY_LEVEL_ENABLE:
1968             snprintf(s, len,
1969                      "Muestra la carga actual de la batería\n"
1970                      "en el menú.");
1971             break;
1972         case MENU_ENUM_LABEL_CORE_ENABLE:
1973             snprintf(s, len,
1974                      "Muestra el núcleo cargado actualmente\n"
1975                      "en el menú.");
1976             break;
1977         case MENU_ENUM_LABEL_NETPLAY_ENABLE_HOST:
1978             snprintf(s, len,
1979                      "Activa el juego en red utilizando\n"
1980                      "el modo servidor.");
1981             break;
1982         case MENU_ENUM_LABEL_NETPLAY_ENABLE_CLIENT:
1983             snprintf(s, len,
1984                      "Activa el juego en red utilizando\n"
1985                      "el modo cliente.");
1986             break;
1987         case MENU_ENUM_LABEL_NETPLAY_DISCONNECT:
1988             snprintf(s, len,
1989                      "Desconecta una sesión activa\n"
1990                      "de juego en red.");
1991             break;
1992         case MENU_ENUM_LABEL_NETPLAY_LAN_SCAN_SETTINGS:
1993             snprintf(s, len,
1994                      "Busca sesiones de juego en red\n"
1995                      "en la red local.");
1996             break;
1997         case MENU_ENUM_LABEL_NETPLAY_SETTINGS:
1998             snprintf(s, len,
1999                      "Este ajuste está relacionado\n"
2000                      "con el juego en red.");
2001             break;
2002         case MENU_ENUM_LABEL_DYNAMIC_WALLPAPER:
2003             snprintf(s, len,
2004                      "Carga fondos de pantalla de forma dinámica\n"
2005                      "según el contexto.");
2006             break;
2007         case MENU_ENUM_LABEL_CORE_UPDATER_BUILDBOT_URL:
2008             snprintf(s, len,
2009                      "La dirección URL al directorio del actualizador\n"
2010                      "de núcleos del buildbot libretro.");
2011             break;
2012         case MENU_ENUM_LABEL_BUILDBOT_ASSETS_URL:
2013             snprintf(s, len,
2014                      "La dirección URL al directorio del actualizador\n"
2015                      "de recursos del buildbot libretro.");
2016             break;
2017         case MENU_ENUM_LABEL_INPUT_REMAP_BINDS_ENABLE:
2018             snprintf(s, len,
2019                      "Esta opción reemplaza las asignaciones\n"
2020                      "de entrada con las reasignaciones\n"
2021                      "del núcleo actual.");
2022             break;
2023         case MENU_ENUM_LABEL_OVERLAY_DIRECTORY:
2024             snprintf(s, len,
2025                      "Carpeta de superposiciones.\n"
2026                      " \n"
2027                      "Define la carpeta que contiene\n"
2028                      "las superposiciones.");
2029             break;
2030         case MENU_ENUM_LABEL_VIDEO_LAYOUT_DIRECTORY:
2031             snprintf(s, len,
2032                      "Carpeta de diseños de vídeo.\n"
2033                      " \n"
2034                      "Define la carpeta que contiene\n"
2035                      "los diseños de vídeo.");
2036             break;
2037         case MENU_ENUM_LABEL_INPUT_MAX_USERS:
2038             snprintf(s, len,
2039                      "Indica el número máximo de usuarios\n"
2040                      "que puede alojar RetroArch.");
2041             break;
2042         case MENU_ENUM_LABEL_CORE_UPDATER_AUTO_EXTRACT_ARCHIVE:
2043             snprintf(s, len,
2044                      "Extrae automáticamente los contenidos\n"
2045                      "de los archivos comprimidos que\n"
2046                      "se hayan descargado.");
2047             break;
2048         case MENU_ENUM_LABEL_NAVIGATION_BROWSER_FILTER_SUPPORTED_EXTENSIONS_ENABLE:
2049             snprintf(s, len,
2050                      "Filtra los archivos que se muestren\n"
2051                      "por sus extensiones.");
2052             break;
2053         case MENU_ENUM_LABEL_NETPLAY_NICKNAME:
2054             snprintf(s, len,
2055                      "El nombre de usuario de la persona que esté\n"
2056                      "utilizando RetroArch. Este nombre se utilizará\n"
2057                      "en las partidas de juego en red.");
2058             break;
2059         case MENU_ENUM_LABEL_NETPLAY_TCP_UDP_PORT:
2060             snprintf(s, len,
2061                      "El puerto de la dirección IP del servidor.\n"
2062                      "Puede ser TCP o UDP.");
2063             break;
2064         case MENU_ENUM_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE:
2065             snprintf(s, len,
2066                      "Activa o desactiva el modo espectador\n"
2067                      "para el juego en red.");
2068             break;
2069         case MENU_ENUM_LABEL_NETPLAY_IP_ADDRESS:
2070             snprintf(s, len,
2071                      "La dirección del servidor\n"
2072                      "al que quieres conectarte.");
2073             break;
2074         case MENU_ENUM_LABEL_NETPLAY_PASSWORD:
2075             snprintf(s, len,
2076                      "La contraseña del servidor de juego en red.\n"
2077                      "Solo se utiliza en el modo servidor.");
2078             break;
2079         case MENU_ENUM_LABEL_NETPLAY_SPECTATE_PASSWORD:
2080             snprintf(s, len,
2081                      "La contraseña del servidor de juego en red\n"
2082                      "para acceder con solo privilegios de espectador.\n"
2083                      "Solo se utiliza en el modo servidor.");
2084             break;
2085         case MENU_ENUM_LABEL_STDIN_CMD_ENABLE:
2086             snprintf(s, len,
2087                      "Activa la interfaz de comandos stdin.");
2088             break;
2089         case MENU_ENUM_LABEL_UI_COMPANION_START_ON_BOOT:
2090             snprintf(s, len,
2091                      "Inicia el asistente de la interfaz al arrancar\n"
2092                      "(si está disponible).");
2093             break;
2094         case MENU_ENUM_LABEL_MENU_DRIVER:
2095             snprintf(s, len,
2096                      "Selecciona el controlador de menú a utilizar.");
2097             break;
2098         case MENU_ENUM_LABEL_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO:
2099             snprintf(s, len,
2100                      "Selecciona la combinación de botones del mando\n"
2101                      "para abrir o cerrar el menú.\n"
2102                      " \n"
2103                      "0: Desactivar\n"
2104                      "1: L + R + Cruceta abajo a la vez.\n"
2105                      "2: L3 + R3 a la vez.\n"
2106                      "3: Start + Select a la vez.");
2107             break;
2108         case MENU_ENUM_LABEL_INPUT_ALL_USERS_CONTROL_MENU:
2109             snprintf(s, len,
2110                     "Permite que cualquier usuario\n"
2111                     "pueda controlar el menú.\n"
2112                     " \n"
2113                     "Si esta opción está desactivada,\n"
2114                     "solo podrá ser controlado por el usuario 1.");
2115             break;
2116         case MENU_ENUM_LABEL_INPUT_AUTODETECT_ENABLE:
2117             snprintf(s, len,
2118                      "Activa la detección automática\n"
2119                      "de dispositivos de entrada.\n"
2120                      " \n"
2121                      "Intentará configurar de forma automática\n"
2122                      "los mandos que se conecten, de forma similar\n"
2123                      "al sistema Plug-and-play.");
2124             break;
2125         case MENU_ENUM_LABEL_CAMERA_ALLOW:
2126             snprintf(s, len,
2127                      "Permite el acceso a la cámara\n"
2128                      "por parte de los núcleos.");
2129             break;
2130         case MENU_ENUM_LABEL_LOCATION_ALLOW:
2131             snprintf(s, len,
2132                      "Permite el uso de los servicios\n"
2133                      "de localización por parte de los núcleos.");
2134             break;
2135         case MENU_ENUM_LABEL_TURBO:
2136             snprintf(s, len,
2137                      "Activa la función de turbo.\n"
2138                      " \n"
2139                      "Si mantienes pulsado el botón de turbo\n"
2140                      "mientras pulsas otro botón, este último entrará\n"
2141                      "en un modo turbo en el que el estado del botón\n"
2142                      "se modula mediante una señal periódica.\n"
2143                      " \n"
2144                      "La modulación se detiene cuando se deja\n"
2145                      "de pulsar el botón original (no el botón\n"
2146                      "de turbo).");
2147             break;
2148         case MENU_ENUM_LABEL_OSK_ENABLE:
2149             snprintf(s, len,
2150                      "Activa el teclado en pantalla.");
2151             break;
2152         case MENU_ENUM_LABEL_AUDIO_MUTE:
2153             snprintf(s, len,
2154                      "Silencia o no el audio.");
2155             break;
2156         case MENU_ENUM_LABEL_REWIND:
2157             snprintf(s, len,
2158                      "Mantén pulsado este botón para rebobinar.\n"
2159                      " \n"
2160                      "Para que este botón funcione, debes tener\n"
2161                      "activada la opción de rebobinar.");
2162             break;
2163         case MENU_ENUM_LABEL_EXIT_EMULATOR:
2164             snprintf(s, len,
2165                "Asigna una tecla para abandonar\n"
2166                "RetroArch limpiamente."
2167 #if !defined(RARCH_MOBILE) && !defined(RARCH_CONSOLE)
2168                "\nSi cierras el programa de cualquier\n"
2169                "forma brusca (SIGKILL, etc.) no se guardarán\n"
2170                "los progresos, la RAM, etc.\n"
2171                "En sistemas Unix, SIGINT/SIGTERM permite\n"
2172                "un cierre limpio."
2173 #endif
2174             );
2175             break;
2176         case MENU_ENUM_LABEL_LOAD_STATE:
2177             snprintf(s, len,
2178                      "Carga el guardado rápido.");
2179             break;
2180         case MENU_ENUM_LABEL_SAVE_STATE:
2181             snprintf(s, len,
2182                      "Guarda rápidamente la partida.");
2183             break;
2184         case MENU_ENUM_LABEL_NETPLAY_GAME_WATCH:
2185             snprintf(s, len,
2186                    "Cambia entre los modos de jugador o espectador\n"
2187                    "en el juego en red.");
2188             break;
2189         case MENU_ENUM_LABEL_CHEAT_INDEX_PLUS:
2190             snprintf(s, len,
2191                      "Aumenta el índice de trucos.");
2192             break;
2193         case MENU_ENUM_LABEL_CHEAT_INDEX_MINUS:
2194             snprintf(s, len,
2195                      "Disminuye el índice de trucos.");
2196             break;
2197         case MENU_ENUM_LABEL_SHADER_PREV:
2198             snprintf(s, len,
2199                      "Aplica el shader anterior de la carpeta.");
2200             break;
2201         case MENU_ENUM_LABEL_SHADER_NEXT:
2202             snprintf(s, len,
2203                      "Aplica el siguiente shader de la carpeta.");
2204             break;
2205         case MENU_ENUM_LABEL_RESET:
2206             snprintf(s, len,
2207                      "Reinicia el contenido.");
2208             break;
2209         case MENU_ENUM_LABEL_PAUSE_TOGGLE:
2210             snprintf(s, len,
2211                      "Alterna el estado en pausa.");
2212             break;
2213         case MENU_ENUM_LABEL_CHEAT_TOGGLE:
2214             snprintf(s, len,
2215                      "Alterna el índice de trucos.");
2216             break;
2217         case MENU_ENUM_LABEL_CHEAT_IDX:
2218             snprintf(s, len,
2219                      "Muestra la posición en el índice de la lista.");
2220             break;
2221         case MENU_ENUM_LABEL_CHEAT_ADDRESS_BIT_POSITION:
2222             snprintf(s, len,
2223                      "Bitmask de la dirección cuando el tamaño\n"
2224                      "de la búsqueda de memoria es menor a 8 bits.");
2225             break;
2226         case MENU_ENUM_LABEL_CHEAT_REPEAT_COUNT:
2227             snprintf(s, len,
2228                      "Indica la cantidad de veces\n"
2229                      "que se aplicará el truco.\n"
2230                      "Usar con las otras dos opciones\n"
2231                      "de iteración para cubrir\n"
2232                      "regiones grandes de memoria.");
2233             break;
2234         case MENU_ENUM_LABEL_CHEAT_REPEAT_ADD_TO_ADDRESS:
2235             snprintf(s, len,
2236                      "Tras cada «Número de iteraciones»,\n"
2237                      "se incrementará la dirección de memoria\n"
2238                      "con este valor multiplicado por el tamaño\n"
2239                      "de búsqueda de memoria.");
2240             break;
2241         case MENU_ENUM_LABEL_CHEAT_REPEAT_ADD_TO_VALUE:
2242             snprintf(s, len,
2243                      "Tras cada «Número de iteraciones»,\n"
2244                      "se incrementará el valor con esta cantidad.");
2245             break;
2246         case MENU_ENUM_LABEL_CHEAT_MATCH_IDX:
2247             snprintf(s, len,
2248                      "Selecciona una coincidencia.");
2249             break;
2250         case MENU_ENUM_LABEL_CHEAT_START_OR_CONT:
2251             snprintf(s, len,
2252                      "Busca en la memoria para crear trucos nuevos.");
2253             break;
2254         case MENU_ENUM_LABEL_CHEAT_START_OR_RESTART:
2255             snprintf(s, len,
2256                      "Izquierda/Derecha para cambiar el bit-size.");
2257             break;
2258         case MENU_ENUM_LABEL_CHEAT_SEARCH_EXACT:
2259             snprintf(s, len,
2260                      "Izquierda/Derecha para cambiar el valor.");
2261             break;
2262         case MENU_ENUM_LABEL_CHEAT_SEARCH_LT:
2263             snprintf(s, len,
2264                      " ");
2265             break;
2266         case MENU_ENUM_LABEL_CHEAT_SEARCH_GT:
2267             snprintf(s, len,
2268                      " ");
2269             break;
2270         case MENU_ENUM_LABEL_CHEAT_SEARCH_EQ:
2271             snprintf(s, len,
2272                      " ");
2273             break;
2274         case MENU_ENUM_LABEL_CHEAT_SEARCH_NEQ:
2275             snprintf(s, len,
2276                      " ");
2277             break;
2278         case MENU_ENUM_LABEL_CHEAT_SEARCH_EQPLUS:
2279             snprintf(s, len,
2280                      "Izquierda/Derecha para cambiar el valor.");
2281             break;
2282         case MENU_ENUM_LABEL_CHEAT_SEARCH_EQMINUS:
2283             snprintf(s, len,
2284                      "Izquierda/Derecha para cambiar el valor.");
2285             break;
2286         case MENU_ENUM_LABEL_CHEAT_ADD_MATCHES:
2287             snprintf(s, len,
2288                      " ");
2289             break;
2290         case MENU_ENUM_LABEL_CHEAT_VIEW_MATCHES:
2291             snprintf(s, len,
2292                      " ");
2293             break;
2294         case MENU_ENUM_LABEL_CHEAT_CREATE_OPTION:
2295             snprintf(s, len,
2296                      " ");
2297             break;
2298         case MENU_ENUM_LABEL_CHEAT_DELETE_OPTION:
2299             snprintf(s, len,
2300                      " ");
2301             break;
2302         case MENU_ENUM_LABEL_CHEAT_ADD_NEW_TOP:
2303             snprintf(s, len,
2304                      " ");
2305             break;
2306         case MENU_ENUM_LABEL_CHEAT_RELOAD_CHEATS:
2307             snprintf(s, len,
2308                      " ");
2309             break;
2310         case MENU_ENUM_LABEL_CHEAT_ADD_NEW_BOTTOM:
2311             snprintf(s, len,
2312                      " ");
2313             break;
2314         case MENU_ENUM_LABEL_CHEAT_DELETE_ALL:
2315             snprintf(s, len,
2316                      " ");
2317             break;
2318         case MENU_ENUM_LABEL_CHEAT_BIG_ENDIAN:
2319             snprintf(s, len,
2320                      "Big endian    : 258 = 0x0102\n"
2321                      "Little endian : 258 = 0x0201");
2322             break;
2323         case MENU_ENUM_LABEL_HOLD_FAST_FORWARD:
2324             snprintf(s, len,
2325                      "Mantén pulsado este botón para\n"
2326                      "avanzar rápidamente. Suéltalo\n"
2327                      "para volver a la velocidad normal.");
2328             break;
2329         case MENU_ENUM_LABEL_SLOWMOTION_HOLD:
2330             snprintf(s, len,
2331                      "Mantén pulsado este botón para ir\n"
2332                      "a cámara lenta.");
2333             break;
2334         case MENU_ENUM_LABEL_FRAME_ADVANCE:
2335             snprintf(s, len,
2336                      "Avanza un fotograma mientras\n"
2337                      "el contenido esté en pausa.");
2338             break;
2339         case MENU_ENUM_LABEL_BSV_RECORD_TOGGLE:
2340             snprintf(s, len,
2341                "Activa o desactiva la grabación.");
2342             break;
2343         case MENU_ENUM_LABEL_L_X_PLUS:
2344         case MENU_ENUM_LABEL_L_X_MINUS:
2345         case MENU_ENUM_LABEL_L_Y_PLUS:
2346         case MENU_ENUM_LABEL_L_Y_MINUS:
2347         case MENU_ENUM_LABEL_R_X_PLUS:
2348         case MENU_ENUM_LABEL_R_X_MINUS:
2349         case MENU_ENUM_LABEL_R_Y_PLUS:
2350         case MENU_ENUM_LABEL_R_Y_MINUS:
2351             snprintf(s, len,
2352                      "El eje de un mando analógico\n"
2353                      "(estilo DualShock).\n"
2354                      " \n"
2355                      "Se asigna como siempre, sin embargo, si se\n"
2356                      "asigna un eje analógico real, puede leerse\n"
2357                      "de forma analógica.\n"
2358                      " \n"
2359                      "El eje X positivo es hacia la derecha.\n"
2360                      "El eje Y positivo es hacia abajo.");
2361             break;
2362         case MENU_ENUM_LABEL_VALUE_WHAT_IS_A_CORE_DESC:
2363             snprintf(s, len,
2364                      "RetroArch, por sí solo, no hace nada.\n"
2365                      " \n"
2366                      "Para que haga algo necesitas cargar\n"
2367                      "programas que llamamos «núcleos libretro»,\n"
2368                      "o núcleos a secas.\n"
2369                      " \n"
2370                      "Para cargar un núcleo, selecciona uno\n"
2371                      "en «Cargar núcleo».\n"
2372                      " \n"
2373 #ifdef HAVE_NETWORKING
2374                      "Puedes conseguir núcleos de varias formas:\n"
2375                      "* Descárgalos en «%s» ->\n"
2376                      "«%s».\n"
2377                      "* Cópialos manualmente a la carpeta de núcleos.",
2378                     msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER),
2379                     msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_UPDATER_LIST)
2380 #else
2381                      "Puedes conseguir núcleos si los copias\n"
2382                      "en la carpeta de %s.",
2383                      msg_hash_to_str(MENU_ENUM_LABEL_VALUE_LIBRETRO_DIR_PATH)
2384 #endif
2385             );
2386             break;
2387         case MENU_ENUM_LABEL_VALUE_HELP_CHANGE_VIRTUAL_GAMEPAD_DESC:
2388             snprintf(s, len,
2389                      "Puedes cambiar la superposición del mando\n"
2390                      "virtual si vas a «%s» ->\n"
2391                      "«%s».\n"
2392                      " \n"
2393                      "Allí podrás cambiar la superposición,\n"
2394                      "el tamaño y opacidad de sus botones, etc.\n"
2395                      " \n"
2396                      "NOTA: Las superposiciones de mandos virtuales\n"
2397                      "están ocultas de forma predeterminada\n"
2398                      "dentro del menú. Si quieres cambiar este\n"
2399                      "comportamiento, desactiva\n"
2400                      "«%s».",
2401                      msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SETTINGS),
2402                      msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OVERLAY_SETTINGS),
2403                      msg_hash_to_str(MENU_ENUM_LABEL_VALUE_INPUT_OVERLAY_HIDE_IN_MENU)
2404             );
2405             break;
2406         case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_ENABLE:
2407             snprintf(s, len,
2408                      "Elige un color para el fondo\n"
2409                      "de los mensajes en pantalla.");
2410             break;
2411         case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_RED:
2412             snprintf(s, len,
2413                      "Ajusta el componente rojo del color\n"
2414                      "de fondo de los mensajes en pantalla.\n"
2415                      "Los valores válidos son de 0 a 255.");
2416             break;
2417         case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_GREEN:
2418             snprintf(s, len,
2419                      "Ajusta el componente verde del color\n"
2420                      "de fondo de los mensajes en pantalla.\n"
2421                      "Los valores válidos son de 0 a 255.");
2422             break;
2423         case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_BLUE:
2424             snprintf(s, len,
2425                      "Ajusta el componente azul del color\n"
2426                      "de fondo de los mensajes en pantalla.\n"
2427                      "Los valores válidos son de 0 a 255.");
2428             break;
2429         case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_BGCOLOR_OPACITY:
2430             snprintf(s, len,
2431                      "Ajusta la opacidad del color de fondo\n"
2432                      "de los mensajes en pantalla.\n"
2433                      "Los valores válidos son de 0.0 a 1.0.");
2434             break;
2435         case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_RED:
2436             snprintf(s, len,
2437                      "Ajusta el componente rojo del color\n"
2438                      "de los textos de los mensajes en pantalla.\n"
2439                      "Los valores válidos son de 0 a 255.");
2440             break;
2441         case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_GREEN:
2442             snprintf(s, len,
2443                      "Ajusta el componente verde del color\n"
2444                      "de los textos de los mensajes en pantalla.\n"
2445                      "Los valores válidos son de 0 a 255.");
2446             break;
2447         case MENU_ENUM_LABEL_VALUE_VIDEO_MESSAGE_COLOR_BLUE:
2448             snprintf(s, len,
2449                      "Ajusta el componente azul del color\n"
2450                      "de los textos de los mensajes en pantalla.\n"
2451                      "Los valores válidos son de 0 a 255.");
2452             break;
2453         case MENU_ENUM_LABEL_MIDI_DRIVER:
2454             snprintf(s, len,
2455                      "Selecciona el controlador MIDI.");
2456             break;
2457         case MENU_ENUM_LABEL_MIDI_INPUT:
2458             snprintf(s, len,
2459                      "Asigna el dispositivo de entrada\n"
2460                      "(específico para el controlador).\n"
2461                      "La entrada de sonido MIDI se desactivará\n"
2462                      "al desactivar esta opción. También se puede\n"
2463                      "introducir el nombre del dispositivo de\n"
2464                      "forma manual.");
2465             break;
2466         case MENU_ENUM_LABEL_MIDI_OUTPUT:
2467             snprintf(s, len,
2468                      "Asigna el dispositivo de salida\n"
2469                      "(específico para el controlador).\n"
2470                      "La salida de sonido MIDI se desactivará\n"
2471                      "al desactivar esta opción. También se puede\n"
2472                      "introducir el nombre del dispositivo de\n"
2473                      "forma manual.\n"
2474                      " \n"
2475                      "Al activar la salida MIDI y si el núcleo\n"
2476                      "y el juego o aplicación son compatibles\n"
2477                      "con la salida MIDI, algunos o todos los sonidos\n"
2478                      "(según el programa) serán generados por\n"
2479                      "el dispositivo MIDI.\n"
2480                      "Si se utiliza el controlador MIDI «vacío»,\n"
2481                      "esos sonidos no se reproducirán.");
2482             break;
2483         case MENU_ENUM_LABEL_MIDI_VOLUME:
2484             snprintf(s, len,
2485                      "Ajusta el volumen maestro\n"
2486                      "del dispositivo de salida.");
2487             break;
2488         default:
2489             if (string_is_empty(s))
2490                 strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);
2491             return -1;
2492     }
2493 
2494     return 0;
2495 }
2496 #endif
2497 
2498 #ifdef HAVE_MENU
menu_hash_to_str_es_label_enum(enum msg_hash_enums msg)2499 static const char *menu_hash_to_str_es_label_enum(enum msg_hash_enums msg)
2500 {
2501    if (msg <= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_END &&
2502          msg >= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN)
2503    {
2504       static char hotkey_lbl[128] = {0};
2505       unsigned idx = msg - MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN;
2506       snprintf(hotkey_lbl, sizeof(hotkey_lbl), "input_hotkey_binds_%d", idx);
2507       return hotkey_lbl;
2508    }
2509 
2510    switch (msg)
2511    {
2512 #include "msg_hash_lbl.h"
2513       default:
2514 #if 0
2515          RARCH_LOG("Sin implementar: [%d]\n", msg);
2516 #endif
2517          break;
2518    }
2519 
2520    return "null";
2521 }
2522 #endif
2523 
msg_hash_to_str_es(enum msg_hash_enums msg)2524 const char *msg_hash_to_str_es(enum msg_hash_enums msg) {
2525 #ifdef HAVE_MENU
2526     const char *ret = menu_hash_to_str_es_label_enum(msg);
2527 
2528     if (ret && !string_is_equal(ret, "null"))
2529        return ret;
2530 #endif
2531 
2532     switch (msg) {
2533 #include "msg_hash_es.h"
2534         default:
2535 #if 0
2536             RARCH_LOG("Sin implementar: [%d]\n", msg);
2537             {
2538                RARCH_LOG("[%d] : %s\n", msg - 1, msg_hash_to_str(((enum msg_hash_enums)(msg - 1))));
2539             }
2540 #endif
2541             break;
2542     }
2543 
2544     return "null";
2545 }
2546