Add sm_reload_translations command (bug 5750, r=asherkin).
This commit is contained in:
parent
2c399ec441
commit
563dd617af
@ -728,10 +728,7 @@ ConfigResult Translator::OnSourceModConfigChanged(const char *key,
|
|||||||
|
|
||||||
void Translator::OnSourceModLevelChange(const char *mapName)
|
void Translator::OnSourceModLevelChange(const char *mapName)
|
||||||
{
|
{
|
||||||
/* Refresh language stuff */
|
RebuildLanguageDatabase();
|
||||||
char path[PLATFORM_MAX_PATH];
|
|
||||||
g_pSM->BuildPath(Path_SM, path, sizeof(path), "configs/languages.cfg");
|
|
||||||
RebuildLanguageDatabase(path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Translator::OnSourceModAllInitialized()
|
void Translator::OnSourceModAllInitialized()
|
||||||
@ -807,7 +804,7 @@ unsigned int Translator::FindOrAddPhraseFile(const char *phrase_file)
|
|||||||
return idx;
|
return idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Translator::RebuildLanguageDatabase(const char *lang_header_file)
|
void Translator::RebuildLanguageDatabase()
|
||||||
{
|
{
|
||||||
/* Erase everything we have */
|
/* Erase everything we have */
|
||||||
m_LCodeLookup.clear();
|
m_LCodeLookup.clear();
|
||||||
@ -821,9 +818,12 @@ void Translator::RebuildLanguageDatabase(const char *lang_header_file)
|
|||||||
m_Languages.clear();
|
m_Languages.clear();
|
||||||
|
|
||||||
/* Start anew */
|
/* Start anew */
|
||||||
|
char path[PLATFORM_MAX_PATH];
|
||||||
|
g_pSM->BuildPath(Path_SM, path, sizeof(path), "configs/languages.cfg");
|
||||||
|
|
||||||
SMCError err;
|
SMCError err;
|
||||||
SMCStates states;
|
SMCStates states;
|
||||||
if ((err=textparsers->ParseFile_SMC(lang_header_file, this, &states)) != SMCError_Okay)
|
if ((err=textparsers->ParseFile_SMC(path, this, &states)) != SMCError_Okay)
|
||||||
{
|
{
|
||||||
const char *str_err = textparsers->GetSMCErrorString(err);
|
const char *str_err = textparsers->GetSMCErrorString(err);
|
||||||
if (!str_err)
|
if (!str_err)
|
||||||
@ -831,7 +831,7 @@ void Translator::RebuildLanguageDatabase(const char *lang_header_file)
|
|||||||
str_err = m_CustomError.c_str();
|
str_err = m_CustomError.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
smcore.LogError("[SM] Failed to parse language header file: \"%s\"", lang_header_file);
|
smcore.LogError("[SM] Failed to parse language header file: \"%s\"", path);
|
||||||
smcore.LogError("[SM] Parse error (line %d, column %d): %s", states.line, states.col, str_err);
|
smcore.LogError("[SM] Parse error (line %d, column %d): %s", states.line, states.col, str_err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,7 +115,6 @@ public: // ITextListener_SMC
|
|||||||
SMCResult ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value);
|
SMCResult ReadSMC_KeyValue(const SMCStates *states, const char *key, const char *value);
|
||||||
SMCResult ReadSMC_LeavingSection(const SMCStates *states);
|
SMCResult ReadSMC_LeavingSection(const SMCStates *states);
|
||||||
public:
|
public:
|
||||||
void RebuildLanguageDatabase(const char *lang_header_file);
|
|
||||||
unsigned int FindOrAddPhraseFile(const char *phrase_file);
|
unsigned int FindOrAddPhraseFile(const char *phrase_file);
|
||||||
BaseStringTable *GetStringTable();
|
BaseStringTable *GetStringTable();
|
||||||
unsigned int GetLanguageCount();
|
unsigned int GetLanguageCount();
|
||||||
@ -146,6 +145,7 @@ public: //ITranslator
|
|||||||
size_t *pOutLength,
|
size_t *pOutLength,
|
||||||
const char **pFailPhrase);
|
const char **pFailPhrase);
|
||||||
bool GetLanguageInfo(unsigned int number, const char **code, const char **name);
|
bool GetLanguageInfo(unsigned int number, const char **code, const char **name);
|
||||||
|
void RebuildLanguageDatabase();
|
||||||
private:
|
private:
|
||||||
bool AddLanguage(const char *langcode, const char *description);
|
bool AddLanguage(const char *langcode, const char *description);
|
||||||
private:
|
private:
|
||||||
|
@ -414,3 +414,8 @@ CON_COMMAND(sm_dump_handles, "Dumps Handle usage to a file for finding Handle le
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CON_COMMAND(sm_reload_translations, "Reparses all loaded translation files")
|
||||||
|
{
|
||||||
|
translator->RebuildLanguageDatabase();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
#include <IShareSys.h>
|
#include <IShareSys.h>
|
||||||
|
|
||||||
#define SMINTERFACE_TRANSLATOR_NAME "ITranslator"
|
#define SMINTERFACE_TRANSLATOR_NAME "ITranslator"
|
||||||
#define SMINTERFACE_TRANSLATOR_VERSION 3
|
#define SMINTERFACE_TRANSLATOR_VERSION 4
|
||||||
|
|
||||||
#define MAX_TRANSLATE_PARAMS 32
|
#define MAX_TRANSLATE_PARAMS 32
|
||||||
#define CORELANG_ENGLISH 0
|
#define CORELANG_ENGLISH 0
|
||||||
@ -351,6 +351,11 @@ namespace SourceMod
|
|||||||
* @return True if language number is valid, false otherwise.
|
* @return True if language number is valid, false otherwise.
|
||||||
*/
|
*/
|
||||||
virtual bool GetLanguageInfo(unsigned int number, const char **code, const char **name) =0;
|
virtual bool GetLanguageInfo(unsigned int number, const char **code, const char **name) =0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Reparses all loaded translations files.
|
||||||
|
*/
|
||||||
|
virtual void RebuildLanguageDatabase() =0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user