From 06698a4e6f7d41c8b2e58445d9c5250961e94ff6 Mon Sep 17 00:00:00 2001
From: Jan Holthuis <jan.holthuis@ruhr-uni-bochum.de>
Date: Wed, 24 Jun 2015 19:37:55 +0200
Subject: [PATCH 1/4] (menu/menu_displaylist) Make more string translateable

This concerns strings in the "Core Information" and "System Information"
section of the Menu.
---
 menu/intl/menu_hash_us.c | 142 ++++++++++++++++++++++
 menu/menu_displaylist.c  | 249 ++++++++++++++++++++++++++-------------
 menu/menu_hash.h         |  73 ++++++++++++
 3 files changed, 384 insertions(+), 80 deletions(-)

diff --git a/menu/intl/menu_hash_us.c b/menu/intl/menu_hash_us.c
index cb78d3044c..8fd875177c 100644
--- a/menu/intl/menu_hash_us.c
+++ b/menu/intl/menu_hash_us.c
@@ -1151,6 +1151,148 @@ const char *menu_hash_to_str_us(uint32_t hash)
          return "Update Cg Shaders";
       case MENU_LABEL_VALUE_UPDATE_GLSL_SHADERS:
          return "Update GLSL Shaders";
+      case MENU_LABEL_VALUE_CORE_INFO_CORE_NAME:
+         return "Core name";
+      case MENU_LABEL_VALUE_CORE_INFO_CORE_LABEL:
+         return "Core label";
+      case MENU_LABEL_VALUE_CORE_INFO_SYSTEM_NAME:
+         return "System name";
+      case MENU_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER:
+         return "System manufacturer";
+      case MENU_LABEL_VALUE_CORE_INFO_CATEGORIES:
+         return "Categories";
+      case MENU_LABEL_VALUE_CORE_INFO_AUTHORS:
+         return "Authors";
+      case MENU_LABEL_VALUE_CORE_INFO_PERMISSIONS:
+         return "Permissions";
+      case MENU_LABEL_VALUE_CORE_INFO_LICENSES:
+         return "License(s)";
+      case MENU_LABEL_VALUE_CORE_INFO_SUPPORTED_EXTENSIONS:
+         return "Supported extensions";
+      case MENU_LABEL_VALUE_CORE_INFO_FIRMWARE:
+         return "Firmware";
+      case MENU_LABEL_VALUE_CORE_INFO_CORE_NOTES:
+         return "Core notes";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE:
+         return "Build date";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION:
+         return "Git version";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES:
+         return "CPU Features";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER:
+         return "Frontend identifier";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME:
+         return "Frontend name";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_OS:
+         return "Frontend OS";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL:
+         return "RetroRating level";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE:
+         return "Power source";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE:
+         return "No source";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING:
+         return "Charging";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED:
+         return "Charged";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING:
+         return "Discharging";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_VIDEO_CONTEXT_DRIVER:
+         return "Video context driver";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH:
+         return "Display metric width (mm)";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_HEIGHT:
+         return "Display metric height (mm)";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI:
+         return "Display metric DPI";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT:
+         return "LibretroDB support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT:
+         return "Overlay support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_COMMAND_IFACE_SUPPORT:
+         return "Command interface support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_NETWORK_COMMAND_IFACE_SUPPORT:
+         return "Network Command interface support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_COCOA_SUPPORT:
+         return "Cocoa support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_RPNG_SUPPORT:
+         return "PNG support (RPNG)";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_SDL_SUPPORT:
+         return "SDL1.2 support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_SDL2_SUPPORT:
+         return "SDL2 support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_OPENGL_SUPPORT:
+         return "OpenGL support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_OPENGLES_SUPPORT:
+         return "OpenGL ES support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_THREADING_SUPPORT:
+         return "Threading support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT:
+         return "KMS/EGL support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_UDEV_SUPPORT:
+         return "Udev support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_OPENVG_SUPPORT:
+         return "OpenVG support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_EGL_SUPPORT:
+         return "EGL support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_X11_SUPPORT:
+         return "X11 support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_WAYLAND_SUPPORT:
+         return "Wayland support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_XVIDEO_SUPPORT:
+         return "XVideo support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_ALSA_SUPPORT:
+         return "ALSA support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_OSS_SUPPORT:
+         return "OSS support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_OPENAL_SUPPORT:
+         return "OpenAL support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_OPENSL_SUPPORT:
+         return "OpenSL support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_RSOUND_SUPPORT:
+         return "RSound support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_ROARAUDIO_SUPPORT:
+         return "RoarAudio support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_JACK_SUPPORT:
+         return "JACK support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_PULSEAUDIO_SUPPORT:
+         return "PulseAudio support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_DSOUND_SUPPORT:
+         return "DirectSound support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_XAUDIO2_SUPPORT:
+         return "XAudio2 support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_ZLIB_SUPPORT:
+         return "Zlib support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_7ZIP_SUPPORT:
+         return "7zip support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT:
+         return "Dynamic library support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_CG_SUPPORT:
+         return "Cg support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_GLSL_SUPPORT:
+         return "GLSL support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_HLSL_SUPPORT:
+         return "HLSL support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT:
+         return "libxml2 XML parsing support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_SDL_IMAGE_SUPPORT:
+         return "SDL image support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_FBO_SUPPORT:
+         return "OpenGL/Direct3D render-to-texture (multi-pass shaders) support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_FFMPEG_SUPPORT:
+         return "FFmpeg support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_CORETEXT_SUPPORT:
+         return "CoreText support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_FREETYPE_SUPPORT:
+         return "FreeType support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_NETPLAY_SUPPORT:
+         return "Netplay (peer-to-peer) support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_PYTHON_SUPPORT:
+         return "Python (script support in shaders) support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_V4L2_SUPPORT:
+         return "Video4Linux2 support";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT:
+         return "Libusb support";
       default:
          break;
    }
diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c
index 74cea93717..8493cc9be9 100644
--- a/menu/menu_displaylist.c
+++ b/menu/menu_displaylist.c
@@ -121,7 +121,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
       return 0;
    }
 
-   strlcpy(tmp, "Core name", sizeof(tmp));
+   strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INFO_CORE_NAME), sizeof(tmp));
    strlcat(tmp, ": ", sizeof(tmp));
    if (core_info->core_name)
       strlcat(tmp, core_info->core_name, sizeof(tmp));
@@ -129,7 +129,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
    menu_list_push(info->list, tmp, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
-   strlcpy(tmp, "Core label", sizeof(tmp));
+   strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INFO_CORE_LABEL), sizeof(tmp));
    strlcat(tmp, ": ", sizeof(tmp));
    if (core_info->display_name)
       strlcat(tmp, core_info->display_name, sizeof(tmp));
@@ -138,7 +138,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
 
    if (core_info->systemname)
    {
-      strlcpy(tmp, "System name", sizeof(tmp));
+      strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INFO_SYSTEM_NAME), sizeof(tmp));
       strlcat(tmp, ": ", sizeof(tmp));
       strlcat(tmp, core_info->systemname, sizeof(tmp));
       menu_list_push(info->list, tmp, "",
@@ -147,7 +147,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
 
    if (core_info->system_manufacturer)
    {
-      strlcpy(tmp, "System manufacturer", sizeof(tmp));
+      strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER), sizeof(tmp));
       strlcat(tmp, ": ", sizeof(tmp));
       strlcat(tmp, core_info->system_manufacturer, sizeof(tmp));
       menu_list_push(info->list, tmp, "",
@@ -156,7 +156,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
 
    if (core_info->categories_list)
    {
-      strlcpy(tmp, "Categories", sizeof(tmp));
+      strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INFO_CATEGORIES), sizeof(tmp));
       strlcat(tmp, ": ", sizeof(tmp));
       string_list_join_concat(tmp, sizeof(tmp),
             core_info->categories_list, ", ");
@@ -166,7 +166,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
 
    if (core_info->authors_list)
    {
-      strlcpy(tmp, "Authors", sizeof(tmp));
+      strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INFO_AUTHORS), sizeof(tmp));
       strlcat(tmp, ": ", sizeof(tmp));
       string_list_join_concat(tmp, sizeof(tmp),
             core_info->authors_list, ", ");
@@ -176,7 +176,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
 
    if (core_info->permissions_list)
    {
-      strlcpy(tmp, "Permissions", sizeof(tmp));
+      strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INFO_PERMISSIONS), sizeof(tmp));
       strlcat(tmp, ": ", sizeof(tmp));
       string_list_join_concat(tmp, sizeof(tmp),
             core_info->permissions_list, ", ");
@@ -186,7 +186,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
 
    if (core_info->licenses_list)
    {
-      strlcpy(tmp, "License(s)", sizeof(tmp));
+      strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INFO_LICENSES), sizeof(tmp));
       strlcat(tmp, ": ", sizeof(tmp));
       string_list_join_concat(tmp, sizeof(tmp),
             core_info->licenses_list, ", ");
@@ -196,7 +196,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
 
    if (core_info->supported_extensions_list)
    {
-      strlcpy(tmp, "Supported extensions", sizeof(tmp));
+      strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INFO_SUPPORTED_EXTENSIONS), sizeof(tmp));
       strlcat(tmp, ": ", sizeof(tmp));
       string_list_join_concat(tmp, sizeof(tmp),
             core_info->supported_extensions_list, ", ");
@@ -210,10 +210,11 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
             global->core_info, core_info->path,
             settings->system_directory);
 
-      strlcpy(tmp, "Firmware", sizeof(tmp));
+      strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INFO_FIRMWARE), sizeof(tmp));
       strlcat(tmp, ": ", sizeof(tmp));
       menu_list_push(info->list, tmp, "",
             MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
+      /* FIXME: This looks hacky and probably needs to be improved for good translation support. */
       for (i = 0; i < core_info->firmware_count; i++)
       {
          if (core_info->firmware[i].desc)
@@ -237,7 +238,7 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
 
    if (core_info->notes)
    {
-      strlcpy(tmp, "Core notes", sizeof(tmp));
+      strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_CORE_INFO_CORE_NOTES), sizeof(tmp));
       strlcat(tmp, ": ", sizeof(tmp));
       menu_list_push(info->list, tmp, "",
             MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
@@ -262,14 +263,14 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info)
    const char *tmp_string                = NULL;
    const frontend_ctx_driver_t *frontend = frontend_get_ptr();
 
-   snprintf(tmp, sizeof(tmp), "%s: %s", "Build date", __DATE__);
+   snprintf(tmp, sizeof(tmp), "%s: %s", menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE), __DATE__);
    menu_list_push(info->list, tmp, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    (void)tmp_string;
 
 #ifdef HAVE_GIT_VERSION
-   strlcpy(tmp, "Git version", sizeof(tmp));
+   strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION), sizeof(tmp));
    strlcat(tmp, ": ", sizeof(tmp));
    strlcat(tmp, rarch_git_version, sizeof(tmp));
    menu_list_push(info->list, tmp, "",
@@ -282,7 +283,7 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info)
    {
       char cpu_str[PATH_MAX_LENGTH] = {0};
 
-      strlcpy(cpu_str, "CPU Features", sizeof(cpu_str));
+      strlcpy(cpu_str, menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES), sizeof(cpu_str));
       strlcat(cpu_str, ": ", sizeof(cpu_str));
 
       rarch_info_get_capabilities(RARCH_CAPABILITIES_CPU, cpu_str, sizeof(cpu_str));
@@ -293,7 +294,7 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info)
    {
       int major = 0, minor = 0;
 
-      strlcpy(tmp, "Frontend identifier", sizeof(tmp));
+      strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER), sizeof(tmp));
       strlcat(tmp, ": ", sizeof(tmp));
       strlcat(tmp, frontend->ident, sizeof(tmp));
       menu_list_push(info->list, tmp, "",
@@ -302,9 +303,9 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info)
       if (frontend->get_name)
       {
          frontend->get_name(tmp2, sizeof(tmp2));
-         strlcpy(tmp, "Frontend name", sizeof(tmp));
+         strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME), sizeof(tmp));
          strlcat(tmp, ": ", sizeof(tmp));
-         strlcat(tmp, frontend->get_name ? tmp2 : "N/A", sizeof(tmp));
+         strlcat(tmp, frontend->get_name ? tmp2 : menu_hash_to_str(MENU_VALUE_NOT_AVAILABLE), sizeof(tmp));
          menu_list_push(info->list, tmp, "",
                MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
       }
@@ -313,14 +314,14 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info)
       {
          frontend->get_os(tmp2, sizeof(tmp2), &major, &minor);
          snprintf(tmp, sizeof(tmp), "%s : %s %d.%d",
-               "Frontend OS",
-               frontend->get_os ? tmp2 : "N/A", major, minor);
+               menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_OS),
+               frontend->get_os ? tmp2 : menu_hash_to_str(MENU_VALUE_NOT_AVAILABLE), major, minor);
          menu_list_push(info->list, tmp, "",
                MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
       }
 
       snprintf(tmp, sizeof(tmp), "%s : %d",
-            "RetroRating level",
+            menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL),
             frontend->get_rating ? frontend->get_rating() : -1);
       menu_list_push(info->list, tmp, "",
             MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
@@ -338,23 +339,31 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info)
          switch (state)
          {
             case FRONTEND_POWERSTATE_NONE:
-               strlcat(tmp2, " N/A", sizeof(tmp));
+               strlcat(tmp2, menu_hash_to_str(MENU_VALUE_NOT_AVAILABLE), sizeof(tmp));
                break;
             case FRONTEND_POWERSTATE_NO_SOURCE:
-               strlcat(tmp2, " (No source)", sizeof(tmp));
+               strlcat(tmp2, " (", sizeof(tmp));
+               strlcat(tmp2, menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE), sizeof(tmp));
+               strlcat(tmp2, ")", sizeof(tmp));
                break;
             case FRONTEND_POWERSTATE_CHARGING:
-               strlcat(tmp2, " (Charging)", sizeof(tmp));
+               strlcat(tmp2, " (", sizeof(tmp));
+               strlcat(tmp2, menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING), sizeof(tmp));
+               strlcat(tmp2, ")", sizeof(tmp));
                break;
             case FRONTEND_POWERSTATE_CHARGED:
-               strlcat(tmp2, " (Charged)", sizeof(tmp));
+               strlcat(tmp2, " (", sizeof(tmp));
+               strlcat(tmp2, menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED), sizeof(tmp));
+               strlcat(tmp2, ")", sizeof(tmp));
                break;
             case FRONTEND_POWERSTATE_ON_POWER_SOURCE:
-               strlcat(tmp2, " (Discharging)", sizeof(tmp));
+               strlcat(tmp2, " (", sizeof(tmp));
+               strlcat(tmp2, menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING), sizeof(tmp));
+               strlcat(tmp2, ")", sizeof(tmp));
                break;
          }
 
-         strlcpy(tmp, "Power source", sizeof(tmp));
+         strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE), sizeof(tmp));
          strlcat(tmp, ": ", sizeof(tmp));
          strlcat(tmp, tmp2, sizeof(tmp));
          menu_list_push(info->list, tmp, "",
@@ -365,9 +374,9 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info)
 #if defined(HAVE_OPENGL) || defined(HAVE_GLES)
    tmp_string = gfx_ctx_get_ident();
 
-   strlcpy(tmp, "Video context driver", sizeof(tmp));
+   strlcpy(tmp, menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_VIDEO_CONTEXT_DRIVER), sizeof(tmp));
    strlcat(tmp, ": ", sizeof(tmp));
-   strlcat(tmp, tmp_string ? tmp_string : "N/A", sizeof(tmp));
+   strlcat(tmp, tmp_string ? tmp_string : menu_hash_to_str(MENU_VALUE_NOT_AVAILABLE), sizeof(tmp));
    menu_list_push(info->list, tmp, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
@@ -375,43 +384,43 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info)
       float val = 0.0f;
       if (gfx_ctx_get_metrics(DISPLAY_METRIC_MM_WIDTH, &val))
       {
-         snprintf(tmp, sizeof(tmp), "%s : %.2f",
-               "Display metric width (mm)", val);
+         snprintf(tmp, sizeof(tmp), "%s: %.2f",
+               menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH), val);
          menu_list_push(info->list, tmp, "",
                MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
       }
 
       if (gfx_ctx_get_metrics(DISPLAY_METRIC_MM_HEIGHT, &val))
       {
-         snprintf(tmp, sizeof(tmp), "Display metric height (mm): %.2f",
-               val);
+         snprintf(tmp, sizeof(tmp), "%s: %.2f",
+               menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH), val);
          menu_list_push(info->list, tmp, "",
                MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
       }
 
       if (gfx_ctx_get_metrics(DISPLAY_METRIC_DPI, &val))
       {
-         snprintf(tmp, sizeof(tmp), "Display metric DPI: %.2f",
-               val);
+         snprintf(tmp, sizeof(tmp), "%s: %.2f",
+               menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI), val);
          menu_list_push(info->list, tmp, "",
                MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
       }
    }
 #endif
 
-   strlcpy(feat_str, "LibretroDB support", sizeof(feat_str));
+   strlcpy(feat_str, menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT), sizeof(feat_str));
    strlcat(feat_str, ": ", sizeof(feat_str));
    strlcat(feat_str, _libretrodb_supp ? "true" : "false", sizeof(feat_str));
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
-   strlcpy(feat_str, "Overlay support", sizeof(feat_str));
+   strlcpy(feat_str, menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT), sizeof(feat_str));
    strlcat(feat_str, ": ", sizeof(feat_str));
    strlcat(feat_str, _overlay_supp ? "true" : "false", sizeof(feat_str));
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
-   strlcpy(feat_str, "Command interface support", sizeof(feat_str));
+   strlcpy(feat_str, menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_COMMAND_IFACE_SUPPORT), sizeof(feat_str));
    strlcat(feat_str, ": ", sizeof(feat_str));
    strlcat(feat_str, _command_supp ? "true" : "false", sizeof(feat_str));
    menu_list_push(info->list, feat_str, "",
@@ -419,209 +428,289 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info)
 
    snprintf(feat_str, sizeof(feat_str),
          "%s : %s",
-         "Network Command interface support",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_NETWORK_COMMAND_IFACE_SUPPORT),
          _network_command_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "Cocoa support: %s", _cocoa_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_COCOA_SUPPORT),
+          _cocoa_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "PNG support (RPNG): %s", _rpng_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_RPNG_SUPPORT),
+         _rpng_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "SDL1.2 support: %s", _sdl_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_SDL_SUPPORT),
+         _sdl_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "SDL2 support: %s", _sdl2_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_SDL2_SUPPORT),
+         _sdl2_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
 
    snprintf(feat_str, sizeof(feat_str),
-         "OpenGL support: %s", _opengl_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_OPENGL_SUPPORT),
+         _opengl_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "OpenGL ES support: %s", _opengles_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_OPENGLES_SUPPORT),
+         _opengles_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "Threading support: %s", _thread_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_THREADING_SUPPORT),
+         _thread_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "KMS/EGL support: %s", _kms_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT),
+         _kms_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "Udev support: %s", _udev_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_UDEV_SUPPORT),
+         _udev_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "OpenVG support: %s", _vg_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_OPENVG_SUPPORT),
+         _vg_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "EGL support: %s", _egl_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_EGL_SUPPORT),
+         _egl_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "X11 support: %s", _x11_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_X11_SUPPORT),
+         _x11_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "Wayland support: %s", _wayland_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_WAYLAND_SUPPORT),
+         _wayland_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "XVideo support: %s", _xvideo_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_XVIDEO_SUPPORT),
+         _xvideo_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "ALSA support: %s", _alsa_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_ALSA_SUPPORT),
+         _alsa_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "OSS support: %s", _oss_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_OSS_SUPPORT),
+         _oss_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "OpenAL support: %s", _al_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_OPENAL_SUPPORT),
+         _al_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "OpenSL support: %s", _sl_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_OPENSL_SUPPORT),
+         _sl_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "RSound support: %s", _rsound_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_RSOUND_SUPPORT),
+         _rsound_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "RoarAudio support: %s", _roar_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_ROARAUDIO_SUPPORT),
+         _roar_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "JACK support: %s", _jack_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_JACK_SUPPORT),
+         _jack_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "PulseAudio support: %s", _pulse_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_PULSEAUDIO_SUPPORT),
+         _pulse_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "DirectSound support: %s", _dsound_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_DSOUND_SUPPORT),
+         _dsound_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "XAudio2 support: %s", _xaudio_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_XAUDIO2_SUPPORT),
+         _xaudio_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "Zlib support: %s", _zlib_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_ZLIB_SUPPORT),
+         _zlib_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "7zip support: %s", _7zip_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_7ZIP_SUPPORT),
+         _7zip_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "Dynamic library support: %s", _dylib_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT),
+         _dylib_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "Cg support: %s", _cg_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_CG_SUPPORT),
+         _cg_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "GLSL support: %s", _glsl_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_GLSL_SUPPORT),
+         _glsl_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "HLSL support: %s", _hlsl_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_HLSL_SUPPORT),
+         _hlsl_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "libxml2 XML parsing support: %s", _libxml2_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT),
+         _libxml2_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "SDL image support: %s", _sdl_image_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_SDL_IMAGE_SUPPORT),
+         _sdl_image_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "OpenGL/Direct3D render-to-texture (multi-pass shaders) support: %s", _fbo_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_FBO_SUPPORT),
+         _fbo_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "FFmpeg support: %s", _ffmpeg_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_FFMPEG_SUPPORT),
+         _ffmpeg_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "CoreText support: %s", _coretext_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_CORETEXT_SUPPORT),
+         _coretext_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "FreeType support: %s", _freetype_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_FREETYPE_SUPPORT),
+         _freetype_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "Netplay (peer-to-peer) support: %s", _netplay_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_NETPLAY_SUPPORT),
+         _netplay_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "Python (script support in shaders) support: %s", _python_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_PYTHON_SUPPORT),
+         _python_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "Video4Linux2 support: %s", _v4l2_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_V4L2_SUPPORT),
+         _v4l2_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
    snprintf(feat_str, sizeof(feat_str),
-         "Libusb support: %s", _libusb_supp ? "true" : "false");
+         "%s: %s",
+         menu_hash_to_str(MENU_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT),
+         _libusb_supp ? "true" : "false");
    menu_list_push(info->list, feat_str, "",
          MENU_SETTINGS_CORE_INFO_NONE, 0, 0);
 
@@ -1130,7 +1219,7 @@ static int menu_displaylist_parse_database_entry(menu_displaylist_info_t *info)
             "%s : %s",
             "Analog supported",
             (db_info_entry->analog_supported == 1)  ? "true" :
-            (db_info_entry->analog_supported == -1) ? "N/A"  : "false");
+            (db_info_entry->analog_supported == -1) ? menu_hash_to_str(MENU_VALUE_NOT_AVAILABLE)  : "false");
       menu_list_push(info->list, tmp,
             menu_hash_to_str(MENU_LABEL_RDB_ENTRY_ANALOG),
             0, 0, 0);
@@ -1138,7 +1227,7 @@ static int menu_displaylist_parse_database_entry(menu_displaylist_info_t *info)
             "%s : %s",
             "Rumble supported",
             (db_info_entry->rumble_supported == 1)  ? "true" :
-            (db_info_entry->rumble_supported == -1) ? "N/A"  :  "false");
+            (db_info_entry->rumble_supported == -1) ? menu_hash_to_str(MENU_VALUE_NOT_AVAILABLE)  :  "false");
       menu_list_push(info->list, tmp,
             menu_hash_to_str(MENU_LABEL_RDB_ENTRY_RUMBLE),
             0, 0, 0);
diff --git a/menu/menu_hash.h b/menu/menu_hash.h
index c977c07f95..f6f0d4eae6 100644
--- a/menu/menu_hash.h
+++ b/menu/menu_hash.h
@@ -822,6 +822,79 @@ extern "C" {
 
 #define MENU_VALUE_SECONDS                                                     0x8b0028d4U
 
+#define MENU_LABEL_VALUE_CORE_INFO_CORE_NAME                                   0x2a031110U
+#define MENU_LABEL_VALUE_CORE_INFO_CORE_LABEL                                  0x6a40d38fU
+#define MENU_LABEL_VALUE_CORE_INFO_SYSTEM_NAME                                 0xaff88f0cU
+#define MENU_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER                         0x03be7018U
+#define MENU_LABEL_VALUE_CORE_INFO_CATEGORIES                                  0xac3a39edU
+#define MENU_LABEL_VALUE_CORE_INFO_AUTHORS                                     0x7167c44dU
+#define MENU_LABEL_VALUE_CORE_INFO_PERMISSIONS                                 0x25d21423U
+#define MENU_LABEL_VALUE_CORE_INFO_LICENSES                                    0x019b14bdU
+#define MENU_LABEL_VALUE_CORE_INFO_SUPPORTED_EXTENSIONS                        0xb8ff231cU
+#define MENU_LABEL_VALUE_CORE_INFO_FIRMWARE                                    0x9ba2e164U
+#define MENU_LABEL_VALUE_CORE_INFO_CORE_NOTES                                  0x6a6cfe78U
+
+#define MENU_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE                                0xbab040f0U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION                               0x333df14cU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES                              0x9515e369U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER                       0x35817c25U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME                             0x45d9b0e3U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_OS                               0x412e46a4U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL                         0xcc6a17ebU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE                              0xcda91ae0U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE                    0x0ed5776cU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING                     0x2b226d62U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED                      0x75abb52dU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING                  0x48c36402U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_VIDEO_CONTEXT_DRIVER                      0x32f901e9U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH                   0x86a53f14U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_HEIGHT                  0x3809e50dU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI                        0xaf2540b8U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT                        0x3e91f988U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT                           0x9e893c21U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_COMMAND_IFACE_SUPPORT                     0x91a47d95U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_NETWORK_COMMAND_IFACE_SUPPORT             0x9c9c8e3eU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_COCOA_SUPPORT                             0x89849204U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_RPNG_SUPPORT                              0xe1dcea36U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_SDL_SUPPORT                               0xf9bc2a42U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_SDL2_SUPPORT                              0x3c2d6134U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_OPENGL_SUPPORT                            0xa4d164a4U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_OPENGLES_SUPPORT                          0xe2e627dcU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_THREADING_SUPPORT                         0x282bf995U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT                               0x229cb16aU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_UDEV_SUPPORT                              0xe34a0833U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_OPENVG_SUPPORT                            0x9b01b08eU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_EGL_SUPPORT                               0xbac9f417U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_X11_SUPPORT                               0xfea303f9U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_WAYLAND_SUPPORT                           0xd590cd8fU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_XVIDEO_SUPPORT                            0x79dc360eU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_ALSA_SUPPORT                              0xe58b1160U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_OSS_SUPPORT                               0x504eed34U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_OPENAL_SUPPORT                            0x8c91fddeU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_OPENSL_SUPPORT                            0xd5503230U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_RSOUND_SUPPORT                            0x4c20387aU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_ROARAUDIO_SUPPORT                         0xb7793da5U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_JACK_SUPPORT                              0x2f50e7f8U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_PULSEAUDIO_SUPPORT                        0xe8d32f1aU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_DSOUND_SUPPORT                            0x0e9d11acU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_XAUDIO2_SUPPORT                           0xb1f1735bU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_ZLIB_SUPPORT                              0xf961f590U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_7ZIP_SUPPORT                              0xf1fc48e9U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT                             0xcee4aad3U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_CG_SUPPORT                                0xef0baba9U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_GLSL_SUPPORT                              0x0c981cb1U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_HLSL_SUPPORT                              0x3d8b7a12U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT                           0xdce2d3f9U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_SDL_IMAGE_SUPPORT                         0x98b4d864U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_FBO_SUPPORT                               0x896726b6U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_FFMPEG_SUPPORT                            0xb9a9fd34U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_CORETEXT_SUPPORT                          0x7d248acdU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_FREETYPE_SUPPORT                          0x00f65983U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_NETPLAY_SUPPORT                           0x50a8ce7cU
+#define MENU_LABEL_VALUE_SYSTEM_INFO_PYTHON_SUPPORT                            0x71cc9801U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_V4L2_SUPPORT                              0x793c2547U
+#define MENU_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT                            0x7dc8b560U
+
 const char *menu_hash_to_str_de(uint32_t hash);
 
 const char *menu_hash_to_str_en(uint32_t hash);

From 97e483e7922652b95e965477c9f185b97575c2d1 Mon Sep 17 00:00:00 2001
From: Jan Holthuis <jan.holthuis@ruhr-uni-bochum.de>
Date: Wed, 24 Jun 2015 19:40:08 +0200
Subject: [PATCH 2/4] (menu/intl/menu_hash_de) Translate new strings from
 commit 06698a4 to german

---
 menu/intl/menu_hash_de.c | 142 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 142 insertions(+)

diff --git a/menu/intl/menu_hash_de.c b/menu/intl/menu_hash_de.c
index 5b710ee1c7..d299c897d2 100644
--- a/menu/intl/menu_hash_de.c
+++ b/menu/intl/menu_hash_de.c
@@ -587,6 +587,148 @@ const char *menu_hash_to_str_de(uint32_t hash)
          return "Aktualisiere CG-Shader";
       case MENU_LABEL_VALUE_UPDATE_GLSL_SHADERS:
          return "Aktualisiere GLSL-Shader";
+      case MENU_LABEL_VALUE_CORE_INFO_CORE_NAME:
+         return "Core-Name";
+      case MENU_LABEL_VALUE_CORE_INFO_CORE_LABEL:
+         return "Core-Beschriftung";
+      case MENU_LABEL_VALUE_CORE_INFO_SYSTEM_NAME:
+         return "System-Name";
+      case MENU_LABEL_VALUE_CORE_INFO_SYSTEM_MANUFACTURER:
+         return "System-Hersteller";
+      case MENU_LABEL_VALUE_CORE_INFO_CATEGORIES:
+         return "Kategorien";
+      case MENU_LABEL_VALUE_CORE_INFO_AUTHORS:
+         return "Autoren";
+      case MENU_LABEL_VALUE_CORE_INFO_PERMISSIONS:
+         return "Berechtigungen";
+      case MENU_LABEL_VALUE_CORE_INFO_LICENSES:
+         return "Lizenz(en)";
+      case MENU_LABEL_VALUE_CORE_INFO_SUPPORTED_EXTENSIONS:
+         return "Unterst�tze Erweiterungen";
+      case MENU_LABEL_VALUE_CORE_INFO_FIRMWARE:
+         return "Firmware";
+      case MENU_LABEL_VALUE_CORE_INFO_CORE_NOTES:
+         return "Core-Hinweise";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE:
+         return "Build-Datum";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_GIT_VERSION:
+         return "Git-Version";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES:
+         return "CPU-Eigenschaften";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER:
+         return "Frontend-Kennung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_NAME:
+         return "Frontend-Name";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_FRONTEND_OS:
+         return "Frontend-Betriebssystem";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL:
+         return "RetroRating-Stufe";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE:
+         return "Energiequelle";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE:
+         return "Keine Quelle";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING:
+         return "L�dt";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED:
+         return "Geladen";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING:
+         return "Entl�dt";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_VIDEO_CONTEXT_DRIVER:
+         return "Video-Context-Treiber";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_WIDTH:
+         return "Bildschirmbreite (mm)";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_MM_HEIGHT:
+         return "Bildschirmh�he (mm)";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_DISPLAY_METRIC_DPI:
+         return "Bildschirm-DPI";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_LIBRETRODB_SUPPORT:
+         return "LibretroDB-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_OVERLAY_SUPPORT:
+         return "Overlay-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_COMMAND_IFACE_SUPPORT:
+         return "Befehlsinterface-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_NETWORK_COMMAND_IFACE_SUPPORT:
+         return "Netzwerk-Befehlsinterface-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_COCOA_SUPPORT:
+         return "Cocoa-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_RPNG_SUPPORT:
+         return "PNG-Unterst�tzung (RPNG)";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_SDL_SUPPORT:
+         return "SDL1.2-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_SDL2_SUPPORT:
+         return "SDL2-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_OPENGL_SUPPORT:
+         return "OpenGL-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_OPENGLES_SUPPORT:
+         return "OpenGL-ES-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_THREADING_SUPPORT:
+         return "Threading-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_KMS_SUPPORT:
+         return "KMS/EGL-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_UDEV_SUPPORT:
+         return "Udev-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_OPENVG_SUPPORT:
+         return "OpenVG-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_EGL_SUPPORT:
+         return "EGL-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_X11_SUPPORT:
+         return "X11-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_WAYLAND_SUPPORT:
+         return "Wayland-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_XVIDEO_SUPPORT:
+         return "XVideo-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_ALSA_SUPPORT:
+         return "ALSA-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_OSS_SUPPORT:
+         return "OSS-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_OPENAL_SUPPORT:
+         return "OpenAL-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_OPENSL_SUPPORT:
+         return "OpenSL-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_RSOUND_SUPPORT:
+         return "RSound-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_ROARAUDIO_SUPPORT:
+         return "RoarAudio-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_JACK_SUPPORT:
+         return "JACK-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_PULSEAUDIO_SUPPORT:
+         return "PulseAudio-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_DSOUND_SUPPORT:
+         return "DirectSound-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_XAUDIO2_SUPPORT:
+         return "XAudio2-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_ZLIB_SUPPORT:
+         return "Zlib-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_7ZIP_SUPPORT:
+         return "7zip-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_DYLIB_SUPPORT:
+         return "Dynamic-Library-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_CG_SUPPORT:
+         return "Cg-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_GLSL_SUPPORT:
+         return "GLSL-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_HLSL_SUPPORT:
+         return "HLSL-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_LIBXML2_SUPPORT:
+         return "Libxml2-XML-Parsing-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_SDL_IMAGE_SUPPORT:
+         return "SDL-Image-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_FBO_SUPPORT:
+         return "Unterst�tzung f�r OpenGL/Direct3D Render-to-Texture (Multi-Pass Shader)";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_FFMPEG_SUPPORT:
+         return "FFmpeg-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_CORETEXT_SUPPORT:
+         return "CoreText-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_FREETYPE_SUPPORT:
+         return "FreeType-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_NETPLAY_SUPPORT:
+         return "Netplay-Unterst�tzung (Peer-to-Peer)";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_PYTHON_SUPPORT:
+         return "Python-Unterst�tzung (Script-Unterst�tzung in Shadern)";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_V4L2_SUPPORT:
+         return "Video4Linux2-Unterst�tzung";
+      case MENU_LABEL_VALUE_SYSTEM_INFO_LIBUSB_SUPPORT:
+         return "Libusb-Unterst�tzung";
       default:
          break;
    }

From c094af6fe5e746c5fc6f1ac613e71f0d55010c6e Mon Sep 17 00:00:00 2001
From: Jan Holthuis <jan.holthuis@ruhr-uni-bochum.de>
Date: Wed, 24 Jun 2015 19:44:11 +0200
Subject: [PATCH 3/4] (menu/intl/menu_hash_de) Fix one fuzzy translation

---
 menu/intl/menu_hash_de.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/menu/intl/menu_hash_de.c b/menu/intl/menu_hash_de.c
index d299c897d2..a1db8cab17 100644
--- a/menu/intl/menu_hash_de.c
+++ b/menu/intl/menu_hash_de.c
@@ -390,7 +390,7 @@ const char *menu_hash_to_str_de(uint32_t hash)
       case MENU_LABEL_VALUE_DETECT_CORE_LIST:
          return "Lade Content (Core erkennen)";  /* FIXME */
       case MENU_LABEL_VALUE_LOAD_CONTENT_HISTORY:
-         return "Lade Content (Historie)";
+         return "Lade Content (Verlauf)";
       case MENU_LABEL_VALUE_AUDIO_ENABLE:
          return "Aktiviere Audio";
       case MENU_LABEL_VALUE_FPS_SHOW:

From c3446fdd1c9462f4f9f62e0d345dbfd0d6be9e6f Mon Sep 17 00:00:00 2001
From: Jan Holthuis <jan.holthuis@ruhr-uni-bochum.de>
Date: Wed, 24 Jun 2015 19:44:53 +0200
Subject: [PATCH 4/4] (menu/intl/menu_hash_de) Fix indentation

---
 menu/intl/menu_hash_de.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/menu/intl/menu_hash_de.c b/menu/intl/menu_hash_de.c
index a1db8cab17..26dade2319 100644
--- a/menu/intl/menu_hash_de.c
+++ b/menu/intl/menu_hash_de.c
@@ -23,7 +23,7 @@ const char *menu_hash_to_str_de(uint32_t hash)
 {
    switch (hash)
    {
-         case MENU_LABEL_VALUE_INFORMATION_LIST:
+      case MENU_LABEL_VALUE_INFORMATION_LIST:
          return "Information";
       case MENU_LABEL_VALUE_USE_BUILTIN_PLAYER:
          return "Verwende integrierten Player";