diff --git a/core/logic/Translator.cpp b/core/logic/Translator.cpp
index 5106b269..e68016b8 100644
--- a/core/logic/Translator.cpp
+++ b/core/logic/Translator.cpp
@@ -750,6 +750,12 @@ void Translator::OnSourceModAllInitialized()
 {
 	AddLanguage("en", "English");
 
+	const char* lang = smcore.GetCoreConfigValue("ServerLang");
+	if (lang)
+	{
+		strncpy(m_InitialLang, lang, sizeof(m_InitialLang));
+	}
+
 	g_pCorePhrases = CreatePhraseCollection();
 	g_pCorePhrases->AddPhraseFile("core.phrases");
 
diff --git a/core/logic/intercom.h b/core/logic/intercom.h
index 4e007881..d2c968d0 100644
--- a/core/logic/intercom.h
+++ b/core/logic/intercom.h
@@ -42,7 +42,7 @@ using namespace SourceMod;
  * Add 1 to the RHS of this expression to bump the intercom file
  * This is to prevent mismatching core/logic binaries
  */
-#define SM_LOGIC_MAGIC		(0x0F47C0DE - 16)
+#define SM_LOGIC_MAGIC		(0x0F47C0DE - 17)
 
 #if defined SM_LOGIC
 class IVEngineServer
@@ -115,6 +115,7 @@ struct sm_core_t
 	const char *    (*GetGameDescription)();
 	const char *    (*GetSourceEngineName)();
 	bool            (*SymbolsAreHidden)();
+	const char *	(*GetCoreConfigValue)(const char*);
 	/* Data */
 	ServerGlobals   *serverGlobals;
 	void *          serverFactory;
diff --git a/core/logic_bridge.cpp b/core/logic_bridge.cpp
index bd44e32f..4904be13 100644
--- a/core/logic_bridge.cpp
+++ b/core/logic_bridge.cpp
@@ -49,6 +49,7 @@
 #include "PlayerManager.h"
 #include "AdminCache.h"
 #include "HalfLife2.h"
+#include "CoreConfig.h"
 
 #if defined _WIN32
 	#define MATCHMAKINGDS_SUFFIX	""
@@ -176,6 +177,11 @@ static bool symbols_are_hidden()
 #endif
 }
 
+static const char* get_core_config_value(const char* key)
+{
+	return g_CoreConfig.GetCoreConfigValue(key);
+}	
+
 static ServerGlobals serverGlobals;
 
 static sm_core_t core_bridge =
@@ -209,6 +215,7 @@ static sm_core_t core_bridge =
 	get_game_description,
 	get_source_engine_name,
 	symbols_are_hidden,
+	get_core_config_value,
 	&serverGlobals
 };