mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-08 12:07:03 -06:00
101 lines
2.1 KiB
C++
Executable File
101 lines
2.1 KiB
C++
Executable File
// LangUtils.cpp
|
|
|
|
#include "StdAfx.h"
|
|
|
|
#include "LangUtils.h"
|
|
#include "Common/StringConvert.h"
|
|
#include "Windows/ResourceString.h"
|
|
#include "Windows/Synchronization.h"
|
|
#include "Windows/Window.h"
|
|
#include "RegistryUtils.h"
|
|
#include "ProgramLocation.h"
|
|
|
|
using namespace NWindows;
|
|
|
|
static CLang g_Lang;
|
|
CSysString g_LangID;
|
|
|
|
void ReloadLang()
|
|
{
|
|
ReadRegLang(g_LangID);
|
|
g_Lang.Clear();
|
|
if (!g_LangID.IsEmpty())
|
|
{
|
|
CSysString langPath = g_LangID;
|
|
if (langPath.Find('\\') < 0)
|
|
{
|
|
if (langPath.Find('.') < 0)
|
|
langPath += TEXT(".txt");
|
|
UString folderPath;
|
|
if (GetProgramFolderPath(folderPath))
|
|
langPath = GetSystemString(folderPath) + CSysString(TEXT("Lang\\")) + langPath;
|
|
}
|
|
g_Lang.Open(langPath);
|
|
}
|
|
}
|
|
|
|
static bool g_Loaded = false;
|
|
static NSynchronization::CCriticalSection g_CriticalSection;
|
|
|
|
void LoadLangOneTime()
|
|
{
|
|
NSynchronization::CCriticalSectionLock lock(g_CriticalSection);
|
|
if (g_Loaded)
|
|
return;
|
|
g_Loaded = true;
|
|
ReloadLang();
|
|
}
|
|
|
|
/*
|
|
class CLangLoader
|
|
{
|
|
public:
|
|
CLangLoader() { ReloadLang(); }
|
|
} g_LangLoader;
|
|
*/
|
|
|
|
void LangSetDlgItemsText(HWND dialogWindow, CIDLangPair *idLangPairs, int numItems)
|
|
{
|
|
for (int i = 0; i < numItems; i++)
|
|
{
|
|
const CIDLangPair &idLangPair = idLangPairs[i];
|
|
UString message;
|
|
if (g_Lang.GetMessage(idLangPair.LangID, message))
|
|
{
|
|
NWindows::CWindow window(GetDlgItem(dialogWindow, idLangPair.ControlID));
|
|
window.SetText(message);
|
|
}
|
|
}
|
|
}
|
|
|
|
void LangSetWindowText(HWND window, UInt32 langID)
|
|
{
|
|
UString message;
|
|
if (g_Lang.GetMessage(langID, message))
|
|
SetWindowText(window, GetSystemString(message));
|
|
}
|
|
|
|
UString LangLoadString(UInt32 langID)
|
|
{
|
|
UString message;
|
|
if (g_Lang.GetMessage(langID, message))
|
|
return message;
|
|
return UString();
|
|
}
|
|
|
|
CSysString LangLoadString(UINT resourceID, UInt32 langID)
|
|
{
|
|
UString message;
|
|
if (g_Lang.GetMessage(langID, message))
|
|
return GetSystemString(message);
|
|
return NWindows::MyLoadString(resourceID);
|
|
}
|
|
|
|
UString LangLoadStringW(UINT resourceID, UInt32 langID)
|
|
{
|
|
UString message;
|
|
if (g_Lang.GetMessage(langID, message))
|
|
return message;
|
|
return NWindows::MyLoadStringW(resourceID);
|
|
}
|