QString Localization::GetLanguage(int index) { if (GetNumLanguages() == 0) { URHO3D_LOGWARNING("Localization::GetLanguage(index): no loaded languages"); return s_dummy; } if (index < 0 || index >= GetNumLanguages()) { URHO3D_LOGWARNING("Localization::GetLanguage(index): index out of range"); return s_dummy; } return languages_[index]; }
/*********************************************************************\ Function name : CLanguageList::Init Description : Created at : 26.09.01, @ 16:11:23 Created by : Thomas Kunert Modified by : \*********************************************************************/ void CLanguageList::Init() { Filename resourcepath = GeGetStartupPath() + Filename("resource"); if (GetC4DVersion() >= 16000) { // R16 has a new resource directory structure. The c4d_language.str // files we are searching for are in resource/modules/c4dplugin/strings_xx. // Fix for https://github.com/nr-plugins/resedit/issues/4 resourcepath = resourcepath + "modules" + "c4dplugin"; } AutoAlloc <BrowseFiles> pBrowse; pBrowse->Init(resourcepath, false); while (pBrowse->GetNext()) { if (pBrowse->IsDir()) { Filename fn = pBrowse->GetFilename(); if (fn.GetString().SubStr(0, 8).ToLower() == "strings_") { String idx = fn.GetString(); idx.Delete(0, 8); Filename stringname = resourcepath + fn+Filename("c4d_language.str"); AutoAlloc <BaseFile> pFile; if (!pFile) return; if (!GeFExist(stringname)) { GeOutString("Missing c4d_language.str to identify the string directory!!!", GEMB_ICONEXCLAMATION); } else if (pFile->Open(stringname)) { Int32 len = pFile->GetLength(); Char *buffer = NewMemClear(Char,len + 2); if (buffer) { pFile->ReadBytes(buffer,len); buffer[len]=0; Int32 i; for (i = 0; i < len && buffer[i] >= ' '; i++) { } buffer[i] = 0; for (i--; i > 0 && buffer[i]== ' '; i--) { } buffer[i + 1] = 0; AddLanguage(buffer, idx); DeleteMem(buffer); } } } } } CriticalAssert(GetNumLanguages() > 0); }
void Localization::SetLanguage(int index) { if (GetNumLanguages() == 0) { URHO3D_LOGWARNING("Localization::SetLanguage(index): no loaded languages"); return; } if (index < 0 || index >= GetNumLanguages()) { URHO3D_LOGWARNING("Localization::SetLanguage(index): index out of range"); return; } if (index != languageIndex_) { languageIndex_ = index; g_resourceSignals.changeLanguage(); } }
int Localization::GetLanguageIndex(const QString& language) { if (language.isEmpty()) { URHO3D_LOGWARNING("Localization::GetLanguageIndex(language): language name is empty"); return -1; } if (GetNumLanguages() == 0) { URHO3D_LOGWARNING("Localization::GetLanguageIndex(language): no loaded languages"); return -1; } for (int i = 0; i < GetNumLanguages(); i++) { if (languages_[i] == language) return i; } return -1; }
void Localization::SetLanguage(int index) { if (GetNumLanguages() == 0) { LOGWARNING("Localization::SetLanguage(index): no loaded languages"); return; } if (index < 0 || index >= GetNumLanguages()) { LOGWARNING("Localization::SetLanguage(index): index out of range"); return; } if (index != languageIndex_) { languageIndex_ = index; VariantMap& eventData = GetEventDataMap(); SendEvent(E_CHANGELANGUAGE, eventData); } }
QString Localization::Get(const QString& id) { if (id.isEmpty()) return s_dummy; if (GetNumLanguages() == 0) { URHO3D_LOGWARNING("Localization::Get(id): no loaded languages"); return id; } QString result = strings_[StringHash(GetLanguage())][StringHash(id)]; if (result.isEmpty()) { URHO3D_LOGWARNING("Localization::Get(\"" + id + "\") not found translation, language=\"" + GetLanguage() + "\""); return id; } return result; }
String Localization::Get(const String& id) { if (id.Empty()) return String::EMPTY; if (GetNumLanguages() == 0) { LOGWARNING("Localization::Get(id): no loaded languages"); return id; } String result = strings_[StringHash(GetLanguage())][StringHash(id)]; if (result.Empty()) { LOGWARNING("Localization::Get(\"" + id + "\") not found translation, language=\"" + GetLanguage() + "\""); return id; } return result; }
void Localization::SetLanguage(const QString& language) { if (language.isEmpty()) { URHO3D_LOGWARNING("Localization::SetLanguage(language): language name is empty"); return; } if (GetNumLanguages() == 0) { URHO3D_LOGWARNING("Localization::SetLanguage(language): no loaded languages"); return; } int index = GetLanguageIndex(language); if (index == -1) { URHO3D_LOGWARNING("Localization::SetLanguage(language): language not found"); return; } SetLanguage(index); }