From b041c275347e82a66b6e60adeb925dc824deff4f Mon Sep 17 00:00:00 2001 From: Jan Holthuis Date: Thu, 25 Jun 2015 18:13:33 +0200 Subject: [PATCH 1/5] (menu/intl/menu_hash_de) Add some more translations --- menu/intl/menu_hash_de.c | 75 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 3 deletions(-) diff --git a/menu/intl/menu_hash_de.c b/menu/intl/menu_hash_de.c index 039a49fbff..a2c05246a5 100644 --- a/menu/intl/menu_hash_de.c +++ b/menu/intl/menu_hash_de.c @@ -17,7 +17,10 @@ #include #include +#include + #include "../menu_hash.h" +#include "../../configuration.h" /* IMPORTANT: * For non-english characters to work without proper unicode support, @@ -467,8 +470,6 @@ const char *menu_hash_to_str_de(uint32_t hash) return "Datenbankmanager"; case MENU_LABEL_VALUE_CURSOR_MANAGER: return "Cursormanager"; - case MENU_LABEL_VALUE_RECORDING_SETTINGS: - return "Aufnahmeeinstellungen"; case MENU_VALUE_MAIN_MENU: return "Main Menu"; // Don't change. Breaks everything. (Would be: "Hauptmenü") case MENU_LABEL_VALUE_SETTINGS: @@ -741,6 +742,74 @@ const char *menu_hash_to_str_de(uint32_t hash) return "Ja"; case MENU_LABEL_VALUE_NO: return "Nein"; + case MENU_VALUE_BACK: + return "ZURÜCK"; + case MENU_LABEL_VALUE_SCREEN_RESOLUTION: + return "Bildschirmauflösung"; + case MENU_VALUE_DISABLED: + return "Deaktiviert"; + case MENU_VALUE_PORT: + return "Port"; + case MENU_VALUE_NONE: + return "Keins"; + case MENU_LABEL_VALUE_RDB_ENTRY_DEVELOPER: + return "Entwickler"; + case MENU_LABEL_VALUE_RDB_ENTRY_PUBLISHER: + return "Publisher"; + case MENU_LABEL_VALUE_RDB_ENTRY_DESCRIPTION: + return "Beschreibung"; + case MENU_LABEL_VALUE_RDB_ENTRY_NAME: + return "Name"; + case MENU_LABEL_VALUE_RDB_ENTRY_ORIGIN: + return "Herkunft"; + case MENU_LABEL_VALUE_RDB_ENTRY_FRANCHISE: + return "Franchise"; + case MENU_LABEL_VALUE_RDB_ENTRY_RELEASE_MONTH: + return "Veröffentlichungsmonat"; + case MENU_LABEL_VALUE_RDB_ENTRY_RELEASE_YEAR: + return "Veröffentlichungsjahr"; + case MENU_VALUE_TRUE: + return "True"; + case MENU_VALUE_FALSE: + return "False"; + case MENU_VALUE_MISSING: + return "Fehlt"; + case MENU_VALUE_PRESENT: + return "Vorhanden"; + case MENU_VALUE_OPTIONAL: + return "Optional"; + case MENU_VALUE_REQUIRED: + return "Notwendig"; + case MENU_VALUE_STATUS: + return "Status"; + case MENU_LABEL_VALUE_AUDIO_SETTINGS: + return "Audio-Einstellungen"; + case MENU_LABEL_VALUE_INPUT_SETTINGS: + return "Eingabe-Einstellungen"; + case MENU_LABEL_VALUE_ONSCREEN_DISPLAY_SETTINGS: + return "OSD-Einstellungen"; + case MENU_LABEL_VALUE_OVERLAY_SETTINGS: + return "Overlay-Einstellungen"; + case MENU_LABEL_VALUE_MENU_SETTINGS: + return "Menü-Einstellungen"; + case MENU_LABEL_VALUE_MEDIA_PLAYER_SETTINGS: + return "Media-Player-Einstellungen"; + case MENU_LABEL_VALUE_UI_SETTINGS: + return "Benutzeroberflächen-Einstellungen"; + case MENU_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS: + return "Menü-Dateibrowser-Einstellungen"; + case MENU_LABEL_VALUE_CORE_UPDATER_SETTINGS: + return "Core-Updater-Einstellungen"; + case MENU_LABEL_VALUE_NETWORK_SETTINGS: + return "Netzwerk-Einstellungen"; + case MENU_LABEL_VALUE_PLAYLIST_SETTINGS: + return "Wiedergabelisten-Einstellungen"; + case MENU_LABEL_VALUE_USER_SETTINGS: + return "Benutzer-Einstellungen"; + case MENU_LABEL_VALUE_DIRECTORY_SETTINGS: + return "Verzeichnis-Einstellungen"; + case MENU_LABEL_VALUE_RECORDING_SETTINGS: + return "Aufnahme-Einstellungen"; default: break; } @@ -757,4 +826,4 @@ int menu_hash_get_help_de(uint32_t hash, char *s, size_t len) } return 0; -} +} \ No newline at end of file From a0473ad2ff5640b630c03ea989ac16a996cc9fc9 Mon Sep 17 00:00:00 2001 From: Jan Holthuis Date: Fri, 26 Jun 2015 03:11:34 +0200 Subject: [PATCH 2/5] (menu/intl/menu_hash_de) Translation of menu_hash_get_help_de started --- menu/intl/menu_hash_de.c | 326 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 326 insertions(+) diff --git a/menu/intl/menu_hash_de.c b/menu/intl/menu_hash_de.c index a2c05246a5..f2c4ebdd7b 100644 --- a/menu/intl/menu_hash_de.c +++ b/menu/intl/menu_hash_de.c @@ -819,8 +819,334 @@ const char *menu_hash_to_str_de(uint32_t hash) int menu_hash_get_help_de(uint32_t hash, char *s, size_t len) { + uint32_t driver_hash = 0; + settings_t *settings = config_get_ptr(); + switch (hash) { + case MENU_LABEL_INPUT_DRIVER: + driver_hash = menu_hash_calculate(settings->input.driver); + + switch (driver_hash) + { + case MENU_LABEL_INPUT_DRIVER_UDEV: + snprintf(s, len, + "udev-Eingabetreiber. \n" + " \n" + "Dieser Treiber kann ohne X ausgeführt werden. \n" + " \n" + "Er verwende die neue evdev-Joypad-API \n" + "für die Joystick-Unterstützung und unterstützt \n" + "auch Hotplugging und Force-Feedback (wenn das \n" + "Gerät dies unterstützt). \n" + " \n" + "Der Treiber liest evdev-Ereigniss für Tastatur- \n" + "Unterstützung und kann auch mit Tastatur-Callbacks, \n" + "Mäusen und Touchpads umgehen. \n" + " \n" + "Standardmäßig sind die /dev/input-Dateien in den \n" + "meisten Linux-Distribution nur für den Root- \n" + "Benutzer lesbar (mode 600). Du kannst eine udev- \n" + "Regel erstellen, die auch den Zugriff für andere \n" + "Benutzer erlaubt." + ); + break; + case MENU_LABEL_INPUT_DRIVER_LINUXRAW: + snprintf(s, len, + "linuxraw-Eingabetreiber. \n" + " \n" + "Dieser Treiber erforder eine aktive TTY-Schnittstelle. \n" + "Tastatur-Ereignisse werden direkt von der TTY gelesen, \n" + "was es einfacher, aber weniger flexibel als udev macht. \n" + "Mäuse, etc, werden nicht unterstützt. \n" + " \n" + "Dieser Treiber verwendet die alte Joystick-API \n" + "(/dev/input/js*)."); + break; + default: + snprintf(s, len, + "Eingabetreiber.\n" + " \n" + "Abhängig vom Grafiktreiber kann ein anderer Eingabe- \n" + "treiber erzwungen werden."); + break; + } + break; + case MENU_LABEL_LOAD_CONTENT: + snprintf(s, len, + "Lade Content. \n" + "Suche nach Content. \n" + " \n" + "Um Content zu laden benötigst du den passenden \n" + "Libretro-Core und die Content-Datei. \n" + " \n" + "Um einzustellen, welcher Ordner standardmäßig \n" + "geöffnet wird, um nach Content zu suchen, solltest \n" + "du das Content-Verzeichnis setzen. Wenn es nicht \n" + "gesetzt ist, wird es im Root-Verzeichen starten. \n" + " \n" + "Der Browser wird nur Dateierweiterungen des \n" + "zuletzt geladenen Cores zeigen und diesen Core \n" + "nutzen, wenn Content geladen wird." + ); + break; + case MENU_LABEL_CORE_LIST: + snprintf(s, len, + "Lade Core. \n" + " \n" + "Suche nach einer Libretro-Core- \n" + "Implementierung. In welchem Verzeichnis der \n" + "Browser startet, hängt vom deinem Core-Verzeichnis \n" + "ab. Falls du es nicht eingestellt hast, wird er \n" + "im Root-Verzeichnis starten. \n" + " \n" + "Ist das Core-Verzeichnis ein Ordner, wird das \n" + "Menü diesen als Startverzeichnis nutzen. Ist \n" + "das Core-Verzeichnis ein Pfad zu einer Datei, \n" + "wird es in dem Verzeichnis starten, in dem \n" + "sich die Datei befindet."); + break; + case MENU_LABEL_LOAD_CONTENT_HISTORY: + snprintf(s, len, + "Lade Content aus dem Verlauf. \n" + " \n" + "Wenn Content geladen wird, wird der Content \n" + "sowie der dazugehörige Core im Verlauf gespeichert. \n" + " \n" + "Der Verlauf wird im selben Verzeichnis wie die \n" + "RetroArch-Konfigurationsdatei gespeicher. Wenn \n" + "beim Start keine Konfigurationsdatei geladen wurde, \n" + "wird keine Verlauf geladen oder gespeichert und nicht \n" + "im Hauptmenü angezeigt." + ); + break; + case MENU_LABEL_VIDEO_DRIVER: + driver_hash = menu_hash_calculate(settings->video.driver); + + switch (driver_hash) + { + case MENU_LABEL_VIDEO_DRIVER_GL: + snprintf(s, len, + "OpenGL-Grafiktreiber. \n" + " \n" + "Dieser Treiber erlaubt es, neben software- \n" + "gerenderten Cores aus Libretro-GL-Cores zu \n" + "verwenden. \n" + " \n" + "Die Leistung, sowohl bei software-gerenderten, \n" + "als auch bei Libretro-GL-Cores, hängt von dem \n" + "GL-Treiber deiner Grafikkarte ab."); + break; + case MENU_LABEL_VIDEO_DRIVER_SDL2: + snprintf(s, len, + "SDL2-Grafiktreiber.\n" + " \n" + "Dies ist ein SDL2-Grafiktreiber \n" + "mit Software-Rendering." + " \n" + "Die Leistung hängt von der SDL- \n" + "Implementierung deiner Plattform ab."); + break; + case MENU_LABEL_VIDEO_DRIVER_SDL1: + snprintf(s, len, + "SDL-Grafiktreiber.\n" + " \n" + "Dies ist ein SDL1.2-Grafiktreiber \n" + "mit Software-Rendering." + " \n" + "Die Leistung ist suboptimal und du \n" + "solltest ihn nur als letzte \n" + "Möglichkeit verwenden."); + break; + case MENU_LABEL_VIDEO_DRIVER_D3D: + snprintf(s, len, + "Direct3D-Grafiktreiber. \n" + " \n" + "Die Leistung bei software-gerenderten \n" + "Cores hängt von dem D3D-Treiber deiner \n" + "Grafikkarte ab."); + break; + case MENU_LABEL_VIDEO_DRIVER_EXYNOS: + snprintf(s, len, + "Exynos-G2D-Grafiktreiber. \n" + " \n" + "Dies ist ein Low-Level-Exynos-Grafiktreiber. \n" + "Er verwendet den G2D-Block in Samsung-Exynos-SoCs. \n" + "für Blitting-Operationen. \n" + " \n" + "Die Leistung bei software-gerendeten Cores sollte \n" + "optimal sein."); + break; + case MENU_LABEL_VIDEO_DRIVER_SUNXI: + snprintf(s, len, + "Sunxi-G2D-Grafiktreiber\n" + " \n" + "Dies ist ein Low-Level-Sunxi-Grafiktreiber. \n" + "Er verwendet den G2D-Block in Allwinnder-SoCs."); + break; + default: + snprintf(s, len, + "Momentaner Grafiktreiber."); + break; + } + break; + case MENU_LABEL_AUDIO_DSP_PLUGIN: + snprintf(s, len, + "Audio-DSP-Plugin.\n" + " Verarbeitet Audiodaten, bevor \n" + "sie zum Treiber gesendet werden." + ); + break; + case MENU_LABEL_AUDIO_RESAMPLER_DRIVER: + driver_hash = menu_hash_calculate(settings->audio.resampler); + + switch (driver_hash) + { + case MENU_LABEL_AUDIO_RESAMPLER_DRIVER_SINC: + snprintf(s, len, + "Windowed-SINC-Implementierung."); + break; + case MENU_LABEL_AUDIO_RESAMPLER_DRIVER_CC: + snprintf(s, len, + "Convoluted-Kosinus-Implementierung."); + break; + } + break; + case MENU_LABEL_VIDEO_SHADER_PRESET: + snprintf(s, len, + "Lade Shader-Voreinstellung. \n" + " \n" + " Lade eine " +#ifdef HAVE_CG + "Cg" +#endif +#ifdef HAVE_GLSL +#ifdef HAVE_CG + "/" +#endif + "GLSL" +#endif +#ifdef HAVE_HLSL +#if defined(HAVE_CG) || defined(HAVE_HLSL) + "/" +#endif + "HLSL" +#endif + "-Voreinstellung. \n" + "Das Menüshader-Menü wird entsprechend \n" + "aktualisiert." + " \n" + "Wenn der CGP komplexe Methoden verwendet, \n" + "(also andere als Quellskalierung mit dem \n" + "selben Faktor für X/Y) kann der im Menü \n" + "angezeigte Skalierungsfaktor inkorrekt sein." + ); + break; + /* + * FIXME: Some stuff still missing here. + */ + case MENU_LABEL_OSK_ENABLE: + snprintf(s, len, + "(De-)Aktiviere die Bildschirmtastatur."); + break; + case MENU_LABEL_AUDIO_MUTE: + snprintf(s, len, + "Audio stummschalten."); + break; + case MENU_LABEL_REWIND: + snprintf(s, len, + "Halte die Taste zum Zurückspulen gedrückt.\n" + " \n" + "Die Zurückspulfunktion muss eingeschaltet \n" + "sein."); + break; + case MENU_LABEL_EXIT_EMULATOR: + snprintf(s, len, + "Taste zum Beenden von RetroArch." +#if !defined(RARCH_MOBILE) && !defined(RARCH_CONSOLE) + "\nWenn du es stattdessen mittels SIGKILL \n" + "beendest, wird RetroArch nicht den RAM \n" + "sichern. Bei unixoiden Betriebssystemen \n" + "erlaubt SIGINT/SIGTERM ein sauberes \n" + "Beenden." +#endif + ); + break; + case MENU_LABEL_LOAD_STATE: + snprintf(s, len, + "Lädt einen Savestate."); + break; + case MENU_LABEL_SAVE_STATE: + snprintf(s, len, + "Speichert einen Savestate."); + break; + case MENU_LABEL_NETPLAY_FLIP_PLAYERS: + snprintf(s, len, + "Netplay-Spieler tauschen."); + break; + case MENU_LABEL_CHEAT_INDEX_PLUS: + snprintf(s, len, + "Erhöht den Cheat-Index.\n"); + break; + case MENU_LABEL_CHEAT_INDEX_MINUS: + snprintf(s, len, + "Verringert den Cheat-Index.\n"); + break; + case MENU_LABEL_SHADER_PREV: + snprintf(s, len, + "Wendet vorherigen Shader im Verzeichnis an."); + break; + case MENU_LABEL_SHADER_NEXT: + snprintf(s, len, + "Wendet nächsten Shader im Verzeichnis an."); + break; + case MENU_LABEL_RESET: + snprintf(s, len, + "Setzt den Content zurück.\n"); + break; + case MENU_LABEL_PAUSE_TOGGLE: + snprintf(s, len, + "Pausiert den Content und setzt ihn wieder fort."); + break; + case MENU_LABEL_CHEAT_TOGGLE: + snprintf(s, len, + "Schaltet den Cheat-Index ein und aus.\n"); + break; + case MENU_LABEL_HOLD_FAST_FORWARD: + snprintf(s, len, + "Halte den Knopf gedrückt, um vorzuspulen. Beim Loslassen \n" + "wird das Vorspulen beendet."); + break; + case MENU_LABEL_SLOWMOTION: + snprintf(s, len, + "Halte den Knopf gedrückt, um die Zeitlupe einzuschalten."); + break; + case MENU_LABEL_FRAME_ADVANCE: + snprintf(s, len, + "Frame-Advance, wenn der Content pausiert ist."); + break; + case MENU_LABEL_MOVIE_RECORD_TOGGLE: + snprintf(s, len, + "Aufnahme ein- und ausschalten."); + break; + case MENU_LABEL_L_X_PLUS: + case MENU_LABEL_L_X_MINUS: + case MENU_LABEL_L_Y_PLUS: + case MENU_LABEL_L_Y_MINUS: + case MENU_LABEL_R_X_PLUS: + case MENU_LABEL_R_X_MINUS: + case MENU_LABEL_R_Y_PLUS: + case MENU_LABEL_R_Y_MINUS: + snprintf(s, len, + "Achse für Analog-Stick (DualShock-artig).\n" + " \n" + "Zugewiesen wie gewöhnlich, wenn jedoch eine echte \n" + "Analogachse zugewiesen wird, kann sie auch wirklich \n" + "analog gelesen werden.\n" + " \n" + "Positive X-Achse ist rechts. \n" + "Positive Y-Achse ist unten."); + break; default: return -1; } From f669c8a49c252089c7ff1c6c263462c14630489b Mon Sep 17 00:00:00 2001 From: Jan Holthuis Date: Fri, 26 Jun 2015 03:26:55 +0200 Subject: [PATCH 3/5] (menu/intl/menu_hash_us) Make "No information available" translateable This adds the ability to translate the "No information is available" string in the menu_hash_get_help_us() function translateable without removing the possibility to fall back to english if a string is not translated. --- menu/intl/menu_hash_de.c | 2 ++ menu/intl/menu_hash_us.c | 4 +++- menu/menu_hash.h | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/menu/intl/menu_hash_de.c b/menu/intl/menu_hash_de.c index f2c4ebdd7b..8f6a0bea8b 100644 --- a/menu/intl/menu_hash_de.c +++ b/menu/intl/menu_hash_de.c @@ -810,6 +810,8 @@ const char *menu_hash_to_str_de(uint32_t hash) return "Verzeichnis-Einstellungen"; case MENU_LABEL_VALUE_RECORDING_SETTINGS: return "Aufnahme-Einstellungen"; + case MENU_LABEL_VALUE_NO_INFORMATION_AVAILABLE: + return "Keine Informationen verfügbar."; default: break; } diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c index 7c2e897cde..45d23fb9db 100644 --- a/menu/intl/menu_hash_us.c +++ b/menu/intl/menu_hash_us.c @@ -1364,6 +1364,8 @@ const char *menu_hash_to_str_us(uint32_t hash) return "Directory Settings"; case MENU_LABEL_VALUE_RECORDING_SETTINGS: return "Recording Settings"; + case MENU_LABEL_VALUE_NO_INFORMATION_AVAILABLE: + return "No information is available."; default: break; } @@ -2314,7 +2316,7 @@ int menu_hash_get_help_us(uint32_t hash, char *s, size_t len) break; default: if (s[0] == '\0') - strlcpy(s, "No information is available.", len); + strlcpy(s, menu_hash_to_str(MENU_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len); return -1; } diff --git a/menu/menu_hash.h b/menu/menu_hash.h index e84fe0dd57..77125c271d 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -930,6 +930,8 @@ extern "C" { #define MENU_VALUE_NONE 0x7c89bbd5U +#define MENU_LABEL_VALUE_NO_INFORMATION_AVAILABLE 0xbae2c7f6U + const char *menu_hash_to_str_de(uint32_t hash); int menu_hash_get_help_de(uint32_t hash, char *s, size_t len); From 5657e50dd1f8c3b9552da61289ae3802653e3921 Mon Sep 17 00:00:00 2001 From: Jan Holthuis Date: Fri, 26 Jun 2015 03:48:21 +0200 Subject: [PATCH 4/5] Make "Input User %u Binds" translateable --- menu/intl/menu_hash_de.c | 2 ++ menu/intl/menu_hash_us.c | 2 ++ menu/menu_hash.h | 2 ++ menu/menu_setting.c | 2 +- 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/menu/intl/menu_hash_de.c b/menu/intl/menu_hash_de.c index 8f6a0bea8b..075076baf4 100644 --- a/menu/intl/menu_hash_de.c +++ b/menu/intl/menu_hash_de.c @@ -812,6 +812,8 @@ const char *menu_hash_to_str_de(uint32_t hash) return "Aufnahme-Einstellungen"; case MENU_LABEL_VALUE_NO_INFORMATION_AVAILABLE: return "Keine Informationen verfügbar."; + case MENU_LABEL_VALUE_INPUT_USER_BINDS: + return "Spieler %u Tastenbelegung"; default: break; } diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c index 45d23fb9db..1ef3ea33fa 100644 --- a/menu/intl/menu_hash_us.c +++ b/menu/intl/menu_hash_us.c @@ -1366,6 +1366,8 @@ const char *menu_hash_to_str_us(uint32_t hash) return "Recording Settings"; case MENU_LABEL_VALUE_NO_INFORMATION_AVAILABLE: return "No information is available."; + case MENU_LABEL_VALUE_INPUT_USER_BINDS: + return "Input User %u Binds"; default: break; } diff --git a/menu/menu_hash.h b/menu/menu_hash.h index 77125c271d..8a7d71e956 100644 --- a/menu/menu_hash.h +++ b/menu/menu_hash.h @@ -932,6 +932,8 @@ extern "C" { #define MENU_LABEL_VALUE_NO_INFORMATION_AVAILABLE 0xbae2c7f6U +#define MENU_LABEL_VALUE_INPUT_USER_BINDS 0x75fda711U + const char *menu_hash_to_str_de(uint32_t hash); int menu_hash_get_help_de(uint32_t hash, char *s, size_t len); diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 32f067dcda..9bb4ae3ad5 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -5925,7 +5925,7 @@ static bool setting_append_list_input_player_options( snprintf(buffer[user], sizeof(buffer[user]), "%s %u", menu_hash_to_str(MENU_VALUE_USER), user + 1); snprintf(group_lbl[user], sizeof(group_lbl[user]), - "Input %s Binds", buffer[user]); + menu_hash_to_str(MENU_LABEL_VALUE_INPUT_USER_BINDS), user + 1); START_GROUP(group_info, group_lbl[user], parent_group); From 470d093b279bc4099a38964cb2cd18969b65501c Mon Sep 17 00:00:00 2001 From: Jan Holthuis Date: Fri, 26 Jun 2015 03:58:06 +0200 Subject: [PATCH 5/5] (menu/menu_setting) Increase string size for "User %u" buffer" Currently, the string gets cut off in german, because "Benutzer %u" doesn't fit in. --- menu/menu_setting.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 9bb4ae3ad5..7bbd226c38 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -5911,7 +5911,7 @@ static bool setting_append_list_input_player_options( * Keep it up to date or you'll get some really obvious bugs. * 2 is the length of '99'; we don't need more users than that. */ - static char buffer[MAX_USERS][7+2+1]; + static char buffer[MAX_USERS][13+2+1]; static char group_lbl[MAX_USERS][PATH_MAX_LENGTH]; unsigned i; rarch_setting_group_info_t group_info = {0};