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; }