diff --git a/Makefile.common b/Makefile.common
index ec0f61840a..cf690c9017 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -113,6 +113,15 @@ OBJ += frontend/frontend.o \
system.o \
retroarch_info.o \
command_event.o \
+ msg_hash.o \
+ intl/msg_hash_de.o \
+ intl/msg_hash_eo.o \
+ intl/msg_hash_es.o \
+ intl/msg_hash_fr.o \
+ intl/msg_hash_it.o \
+ intl/msg_hash_nl.o \
+ intl/msg_hash_pt.o \
+ intl/msg_hash_us.o \
runloop.o \
runloop_data.o \
runloop_msg.o \
diff --git a/griffin/griffin.c b/griffin/griffin.c
index 6ad67347ec..5fa1d7fd9c 100644
--- a/griffin/griffin.c
+++ b/griffin/griffin.c
@@ -671,6 +671,16 @@ RETROARCH
#include "../runloop_msg.c"
#include "../system.c"
+#include "../msg_hash.c"
+#include "../intl/msg_hash_de.c"
+#include "../intl/msg_hash_es.c"
+#include "../intl/msg_hash_eo.c"
+#include "../intl/msg_hash_fr.c"
+#include "../intl/msg_hash_it.c"
+#include "../intl/msg_hash_nl.c"
+#include "../intl/msg_hash_pt.c"
+#include "../intl/msg_hash_us.c"
+
/*============================================================
RECORDING
diff --git a/intl/msg_hash_de.c b/intl/msg_hash_de.c
new file mode 100644
index 0000000000..986c2aa1b8
--- /dev/null
+++ b/intl/msg_hash_de.c
@@ -0,0 +1,29 @@
+/* RetroArch - A frontend for libretro.
+ * Copyright (C) 2011-2015 - 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 .
+ */
+
+#include "../msg_hash.h"
+
+const char *msg_hash_to_str_de(uint32_t hash)
+{
+ switch (hash)
+ {
+ case 0:
+ default:
+ break;
+ }
+
+ return "null";
+}
diff --git a/intl/msg_hash_eo.c b/intl/msg_hash_eo.c
new file mode 100644
index 0000000000..cb75a5cd4e
--- /dev/null
+++ b/intl/msg_hash_eo.c
@@ -0,0 +1,29 @@
+/* RetroArch - A frontend for libretro.
+ * Copyright (C) 2011-2015 - 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 .
+ */
+
+#include "../msg_hash.h"
+
+const char *msg_hash_to_str_eo(uint32_t hash)
+{
+ switch (hash)
+ {
+ case 0:
+ default:
+ break;
+ }
+
+ return "null";
+}
diff --git a/intl/msg_hash_es.c b/intl/msg_hash_es.c
new file mode 100644
index 0000000000..b04b463150
--- /dev/null
+++ b/intl/msg_hash_es.c
@@ -0,0 +1,29 @@
+/* RetroArch - A frontend for libretro.
+ * Copyright (C) 2011-2015 - 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 .
+ */
+
+#include "../msg_hash.h"
+
+const char *msg_hash_to_str_es(uint32_t hash)
+{
+ switch (hash)
+ {
+ case 0:
+ default:
+ break;
+ }
+
+ return "null";
+}
diff --git a/intl/msg_hash_fr.c b/intl/msg_hash_fr.c
new file mode 100644
index 0000000000..d4fe550d3b
--- /dev/null
+++ b/intl/msg_hash_fr.c
@@ -0,0 +1,29 @@
+/* RetroArch - A frontend for libretro.
+ * Copyright (C) 2011-2015 - 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 .
+ */
+
+#include "../msg_hash.h"
+
+const char *msg_hash_to_str_fr(uint32_t hash)
+{
+ switch (hash)
+ {
+ case 0:
+ default:
+ break;
+ }
+
+ return "null";
+}
diff --git a/intl/msg_hash_it.c b/intl/msg_hash_it.c
new file mode 100644
index 0000000000..0834b2d689
--- /dev/null
+++ b/intl/msg_hash_it.c
@@ -0,0 +1,29 @@
+/* RetroArch - A frontend for libretro.
+ * Copyright (C) 2011-2015 - 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 .
+ */
+
+#include "../msg_hash.h"
+
+const char *msg_hash_to_str_it(uint32_t hash)
+{
+ switch (hash)
+ {
+ case 0:
+ default:
+ break;
+ }
+
+ return "null";
+}
diff --git a/intl/msg_hash_nl.c b/intl/msg_hash_nl.c
new file mode 100644
index 0000000000..254059e266
--- /dev/null
+++ b/intl/msg_hash_nl.c
@@ -0,0 +1,29 @@
+/* RetroArch - A frontend for libretro.
+ * Copyright (C) 2011-2015 - 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 .
+ */
+
+#include "../msg_hash.h"
+
+const char *msg_hash_to_str_nl(uint32_t hash)
+{
+ switch (hash)
+ {
+ case 0:
+ default:
+ break;
+ }
+
+ return "null";
+}
diff --git a/intl/msg_hash_pt.c b/intl/msg_hash_pt.c
new file mode 100644
index 0000000000..773b4d6fa4
--- /dev/null
+++ b/intl/msg_hash_pt.c
@@ -0,0 +1,29 @@
+/* RetroArch - A frontend for libretro.
+ * Copyright (C) 2011-2015 - 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 .
+ */
+
+#include "../msg_hash.h"
+
+const char *msg_hash_to_str_pt(uint32_t hash)
+{
+ switch (hash)
+ {
+ case 0:
+ default:
+ break;
+ }
+
+ return "null";
+}
diff --git a/msg_hash.c b/msg_hash.c
new file mode 100644
index 0000000000..7ceed3a28b
--- /dev/null
+++ b/msg_hash.c
@@ -0,0 +1,66 @@
+/* RetroArch - A frontend for libretro.
+ * Copyright (C) 2011-2015 - 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 .
+ */
+
+#include
+
+#include "msg_hash.h"
+
+#include "configuration.h"
+
+const char *msg_hash_to_str(uint32_t hash)
+{
+ const char *ret = NULL;
+ settings_t *settings = config_get_ptr();
+
+ if (!settings)
+ return "null";
+
+ switch (settings->user_language)
+ {
+ case RETRO_LANGUAGE_FRENCH:
+ ret = msg_hash_to_str_fr(hash);
+ break;
+ case RETRO_LANGUAGE_GERMAN:
+ ret = msg_hash_to_str_de(hash);
+ break;
+ case RETRO_LANGUAGE_SPANISH:
+ ret = msg_hash_to_str_es(hash);
+ break;
+ case RETRO_LANGUAGE_ITALIAN:
+ ret = msg_hash_to_str_it(hash);
+ break;
+ case RETRO_LANGUAGE_PORTUGUESE:
+ ret = msg_hash_to_str_pt(hash);
+ break;
+ case RETRO_LANGUAGE_DUTCH:
+ ret = msg_hash_to_str_nl(hash);
+ break;
+ case RETRO_LANGUAGE_ESPERANTO:
+ ret = msg_hash_to_str_eo(hash);
+ default:
+ break;
+ }
+
+ if (ret && strcmp(ret, "null") != 0)
+ return ret;
+
+ return msg_hash_to_str_us(hash);
+}
+
+uint32_t msg_hash_calculate(const char *s)
+{
+ return djb2_calculate(s);
+}