RetroArch/intl/msg_hash_de.c
2017-01-15 20:56:04 +01:00

452 lines
17 KiB
C

/* RetroArch - A frontend for libretro.
* Copyright (C) 2011-2016 - Daniel De Matteis
*
* RetroArch is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Found-
* ation, either version 3 of the License, or (at your option) any later version.
*
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with RetroArch.
* If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdint.h>
#include <string.h>
#include <compat/strl.h>
#include <string/stdstring.h>
#include "../msg_hash.h"
#include "../configuration.h"
#ifdef __clang__
#pragma clang diagnostic ignored "-Winvalid-source-encoding"
#endif
int menu_hash_get_help_de_enum(enum msg_hash_enums msg, char *s, size_t len)
{
uint32_t driver_hash = 0;
settings_t *settings = config_get_ptr();
switch (msg)
{
case MENU_ENUM_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_ENUM_LABEL_INPUT_DRIVER:
if (settings)
driver_hash = msg_hash_calculate(settings->input.driver);
switch (driver_hash)
{
case MENU_LABEL_INPUT_DRIVER_UDEV:
{
/* Work around C89 limitations */
const char * t =
"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";
const char * u =
"Der Treiber liest evdev-Ereignisse für die 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 vom Root- \n"
"Benutzer lesbar (mode 600). Du kannst eine udev- \n"
"Regel erstellen, die auch den Zugriff für andere \n"
"Benutzer erlaubt.";
strlcpy(s, t, len);
strlcat(s, u, len);
}
break;
case MENU_LABEL_INPUT_DRIVER_LINUXRAW:
snprintf(s, len,
"linuxraw-Eingabetreiber. \n"
" \n"
"Dieser Treiber erfordert 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_ENUM_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 gespeichert. Wenn \n"
"beim Start keine Konfigurationsdatei geladen wurde, \n"
"wird keine Verlauf geladen oder gespeichert und nicht \n"
"im Hauptmenü angezeigt."
);
break;
case MENU_ENUM_LABEL_VIDEO_DRIVER:
snprintf(s, len,
"Momentaner Grafiktreiber.");
if (string_is_equal(settings->video.driver, "gl"))
{
snprintf(s, len,
"OpenGL-Grafiktreiber. \n"
" \n"
"Dieser Treiber erlaubt es, neben software- \n"
"gerenderten Cores auch 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.");
}
else if (string_is_equal(settings->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.");
}
else if (string_is_equal(settings->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.");
}
else if (string_is_equal(settings->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.");
}
else if (string_is_equal(settings->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.");
}
else if (string_is_equal(settings->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 Allwinner-SoCs.");
}
break;
case MENU_ENUM_LABEL_AUDIO_DSP_PLUGIN:
snprintf(s, len,
"Audio-DSP-Plugin.\n"
" Verarbeitet Audiodaten, bevor \n"
"sie zum Treiber gesendet werden."
);
break;
case MENU_ENUM_LABEL_AUDIO_RESAMPLER_DRIVER:
if (settings)
driver_hash = msg_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_ENUM_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;
case MENU_ENUM_LABEL_VIDEO_SHADER_SCALE_PASS:
snprintf(s, len,
"Für diesen Durchgang skalieren. \n"
" \n"
"Der Skalierungsfaktor wird multipliziert, \n"
"d.h. 2x im ersten Durchgang und 2x im \n"
"zweiten Durchgang bedeute eine 4x Gesamt- \n"
"Skalierung."
" \n"
"Wenn es im letzten Durchgang einen \n"
"Skalierungsfaktor gibt, wird das Ergebnis \n"
"mit dem als 'Standardfilter' eingestellten \n"
"Filter auf die Bildschirmgröße gestreckt. \n"
" \n"
"Wenn 'Mir egal' eingestellt ist, wird \n"
"entweder einfache Skalierung or Vollbild- \n"
"Streckung verwendet - abhängig davon, ob \n"
"es der letzte Durchgang ist oder nicht."
);
break;
case MENU_ENUM_LABEL_VIDEO_SHADER_NUM_PASSES:
snprintf(s, len,
"Shader-Durchgänge. \n"
" \n"
"RetroArch erlaubt es dir, verschiedene Shader \n"
"in verschiedenen Durchgängen miteinander zu \n"
"kombinieren. \n"
" \n"
"Diese Option legt die Anzahl der Shader- \n"
"Durchgänge fest. Wenn du die Anzahl auf 0 setzt, \n"
"verwendest du einen 'leeren' Shader."
" \n"
"Die 'Standardfilter'-Option beeinflusst den \n"
"Streckungsfilter");
break;
case MENU_ENUM_LABEL_VIDEO_SHADER_PARAMETERS:
snprintf(s, len,
"Shader-Parameter. \n"
" \n"
"Verändert den momentanen Shader. Wird nicht in \n"
"der CGP/GLSLP-Voreinstellungs-Datei gespeichert.");
break;
case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_PARAMETERS:
snprintf(s, len,
"Shader-Voreinstellung-Parameter. \n"
" \n"
"Verändert die Shader-Voreinstellung, die aktuell \n"
"im Menü aktiv ist."
);
break;
/*
* FIXME: Some stuff still missing here.
*/
case MENU_ENUM_LABEL_OSK_ENABLE:
snprintf(s, len,
"(De-)Aktiviere die Bildschirmtastatur.");
break;
case MENU_ENUM_LABEL_AUDIO_MUTE:
snprintf(s, len,
"Audio stummschalten.");
break;
case MENU_ENUM_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_ENUM_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_ENUM_LABEL_LOAD_STATE:
snprintf(s, len,
"Lädt einen Savestate.");
break;
case MENU_ENUM_LABEL_SAVE_STATE:
snprintf(s, len,
"Speichert einen Savestate.");
break;
case MENU_ENUM_LABEL_NETPLAY_FLIP_PLAYERS:
snprintf(s, len,
"Netplay-Spieler tauschen.");
break;
case MENU_ENUM_LABEL_CHEAT_INDEX_PLUS:
snprintf(s, len,
"Erhöht den Cheat-Index.\n");
break;
case MENU_ENUM_LABEL_CHEAT_INDEX_MINUS:
snprintf(s, len,
"Verringert den Cheat-Index.\n");
break;
case MENU_ENUM_LABEL_SHADER_PREV:
snprintf(s, len,
"Wendet vorherigen Shader im Verzeichnis an.");
break;
case MENU_ENUM_LABEL_SHADER_NEXT:
snprintf(s, len,
"Wendet nächsten Shader im Verzeichnis an.");
break;
case MENU_ENUM_LABEL_RESET:
snprintf(s, len,
"Setzt den Content zurück.\n");
break;
case MENU_ENUM_LABEL_PAUSE_TOGGLE:
snprintf(s, len,
"Pausiert den Content und setzt ihn wieder fort.");
break;
case MENU_ENUM_LABEL_CHEAT_TOGGLE:
snprintf(s, len,
"Schaltet den Cheat-Index ein und aus.\n");
break;
case MENU_ENUM_LABEL_HOLD_FAST_FORWARD:
snprintf(s, len,
"Halte den Knopf gedrückt, um vorzuspulen. Beim Loslassen \n"
"wird das Vorspulen beendet.");
break;
case MENU_ENUM_LABEL_SLOWMOTION:
snprintf(s, len,
"Halte den Knopf gedrückt, um die Zeitlupe einzuschalten.");
break;
case MENU_ENUM_LABEL_FRAME_ADVANCE:
snprintf(s, len,
"Frame-Advance, wenn der Content pausiert ist.");
break;
case MENU_ENUM_LABEL_MOVIE_RECORD_TOGGLE:
snprintf(s, len,
"Aufnahme ein- und ausschalten.");
break;
case MENU_ENUM_LABEL_L_X_PLUS:
case MENU_ENUM_LABEL_L_X_MINUS:
case MENU_ENUM_LABEL_L_Y_PLUS:
case MENU_ENUM_LABEL_L_Y_MINUS:
case MENU_ENUM_LABEL_R_X_PLUS:
case MENU_ENUM_LABEL_R_X_MINUS:
case MENU_ENUM_LABEL_R_Y_PLUS:
case MENU_ENUM_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;
case MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST:
snprintf(s, len, "Erfolgsliste");
break;
case MENU_ENUM_LABEL_VALUE_ACHIEVEMENT_LIST_HARDCORE:
snprintf(s, len, "Erfolgsliste (Hardcore)");
break;
case MENU_ENUM_LABEL_VALUE_MENU_ENUM_CONTROLS_PROLOG:
snprintf(s, len,
"Du kannst folgende Steuerelemente mit\n"
"deinem Controller oder deiner Tastatur verwenden\n"
"um durch das Menü zu navigieren: \n"
" \n"
);
break;
case MENU_ENUM_LABEL_VALUE_PARENT_DIRECTORY:
snprintf(s, len, "Übergeordnetes Verzeichnis");
break;
case MENU_ENUM_LABEL_VALUE_SAMBA_ENABLE:
snprintf(s, len, "SAMBA aktivieren");
break;
case MENU_ENUM_LABEL_VALUE_SHUTDOWN:
snprintf(s, len, "Herunterfahren");
break;
case MENU_ENUM_LABEL_VALUE_SSH_ENABLE:
snprintf(s, len, "SSH aktivieren");
break;
case MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST:
snprintf(s, len, "Vorschaubilder aktualisieren");
break;
case MENU_ENUM_LABEL_VALUE_UPDATE_LAKKA:
snprintf(s, len, "Lakka aktualisieren");
break;
case MSG_UNKNOWN:
default:
/* TODO/FIXME - translate */
if (string_is_empty(s))
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);
return -1;
}
return 0;
}
const char *msg_hash_to_str_de(enum msg_hash_enums msg)
{
switch (msg)
{
#include "msg_hash_de.h"
default:
break;
}
return "null";
}