From 5912845f29721ec1b5e9f453e2630afaeecd7ee6 Mon Sep 17 00:00:00 2001 From: nillerusr Date: Sat, 10 Sep 2022 03:30:28 +0300 Subject: [PATCH] engine: fix audio language setting --- engine/cl_main.cpp | 14 +++++++++++--- engine/common.cpp | 9 +++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/engine/cl_main.cpp b/engine/cl_main.cpp index 16ddddf4..f6247226 100644 --- a/engine/cl_main.cpp +++ b/engine/cl_main.cpp @@ -2738,6 +2738,7 @@ static ConCommand startupmenu( "startupmenu", &CL_CheckToDisplayStartupMenus, "O ConVar cl_language( "cl_language", "english", FCVAR_USERINFO, "Language (from HKCU\\Software\\Valve\\Steam\\Language)" ); void CL_InitLanguageCvar() { + Msg("CL_InitLanguageCvar\n"); if ( Steam3Client().SteamApps() ) { cl_language.SetValue( Steam3Client().SteamApps()->GetCurrentGameLanguage() ); @@ -2747,15 +2748,22 @@ void CL_InitLanguageCvar() char *szLang = getenv("LANG"); if ( CommandLine()->CheckParm( "-language" ) ) + { cl_language.SetValue( CommandLine()->ParmValue( "-language", "english") ); + return; + } else if( szLang ) { ELanguage lang = PchLanguageICUCodeToELanguage(szLang, k_Lang_English); const char *szShortLang = GetLanguageShortName(lang); - cl_language.SetValue( szShortLang ); + if( Q_strncmp(szShortLang, "none", 4) != 0 ) + { + cl_language.SetValue( szShortLang ); + return; + } } - else - cl_language.SetValue( "english" ); + + cl_language.SetValue( "english" ); } } diff --git a/engine/common.cpp b/engine/common.cpp index f9348c95..c0646734 100644 --- a/engine/common.cpp +++ b/engine/common.cpp @@ -900,11 +900,20 @@ void COM_InitFilesystem( const char *pFullModPath ) } else { + char *szLang = getenv("LANG"); + // still allow command line override even when not running steam if (CommandLine()->CheckParm("-audiolanguage")) { Q_strncpy(language, CommandLine()->ParmValue("-audiolanguage", "english"), sizeof( language ) - 1); } + else if( szLang ) + { + ELanguage lang = PchLanguageICUCodeToELanguage(szLang, k_Lang_English); + const char *szShortLang = GetLanguageShortName(lang); + if( Q_strncmp(szShortLang, "none", 4) != 0 ) + Q_strncpy(language, szShortLang, sizeof( language ) - 1); + } } if ( ( Q_strlen(language) > 0 ) && ( Q_stricmp(language, "english") ) )