From 08e2fc8debb363388780e25d9b674aeb44f98ccb Mon Sep 17 00:00:00 2001 From: David Anderson Date: Sun, 28 Dec 2008 02:38:53 -0500 Subject: [PATCH] Support for 3-letter language codes (bug 3526, r=ds). --- core/Translator.cpp | 8 +++----- core/Translator.h | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/core/Translator.cpp b/core/Translator.cpp index 8aad2eeb4..49f1e2711 100644 --- a/core/Translator.cpp +++ b/core/Translator.cpp @@ -487,7 +487,7 @@ SMCResult CPhraseFile::ReadSMC_KeyValue(const SMCStates *states, const char *key else { size_t len = strlen(key); - if (len != 2) + if (len < 2 || len > 3) { ParseWarning("Ignoring translation to invalid language \"%s\" on line %d.", key, states->line); return SMCResult_Continue; @@ -936,7 +936,7 @@ SMCResult Translator::ReadSMC_KeyValue(const SMCStates *states, const char *key, { size_t len = strlen(key); - if (len != 2) + if (len < 2 || len > 3) { g_Logger.LogError("[SM] Warning encountered parsing languages.cfg file."); g_Logger.LogError("[SM] Invalid language code \"%s\" is being ignored.", key); @@ -957,9 +957,7 @@ bool Translator::AddLanguage(const char *langcode, const char *description) Language *pLanguage = new Language; unsigned int idx = m_Languages.size(); - pLanguage->m_code2[0] = langcode[0]; - pLanguage->m_code2[1] = langcode[1]; - pLanguage->m_code2[2] = langcode[2]; + UTIL_Format(pLanguage->m_code2, sizeof(pLanguage->m_code2), "%s", langcode); pLanguage->m_FullName = m_pStringTab->AddString(description); sm_trie_insert(m_pLCodeLookup, langcode, reinterpret_cast(idx)); diff --git a/core/Translator.h b/core/Translator.h index c003cf6af..255739188 100644 --- a/core/Translator.h +++ b/core/Translator.h @@ -57,7 +57,7 @@ enum PhraseParseState struct Language { - char m_code2[3]; + char m_code2[4]; int m_FullName; }; @@ -159,7 +159,7 @@ private: bool m_InLanguageSection; String m_CustomError; unsigned int m_ServerLang; - char m_InitialLang[3]; + char m_InitialLang[4]; }; /* Nice little wrapper to handle error logging and whatnot */