Add C++ current culture sync with localization system
This commit is contained in:
@@ -10,6 +10,7 @@
|
|||||||
#include "Engine/Content/Content.h"
|
#include "Engine/Content/Content.h"
|
||||||
#include "Engine/Profiler/ProfilerCPU.h"
|
#include "Engine/Profiler/ProfilerCPU.h"
|
||||||
#include "Engine/Serialization/Serialization.h"
|
#include "Engine/Serialization/Serialization.h"
|
||||||
|
#include <locale>
|
||||||
|
|
||||||
class LocalizationService : public EngineService
|
class LocalizationService : public EngineService
|
||||||
{
|
{
|
||||||
@@ -163,6 +164,31 @@ void LocalizationService::OnLocalizationChanged()
|
|||||||
Instance.LocalizedStringTables.Add(table->Get(), table->Count());
|
Instance.LocalizedStringTables.Add(table->Get(), table->Count());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Change C++ locale (eg. used by fmt lib for values formatting)
|
||||||
|
{
|
||||||
|
char localeName[100];
|
||||||
|
const auto& currentCulture = Instance.CurrentCulture.GetName();
|
||||||
|
if (currentCulture.IsEmpty())
|
||||||
|
{
|
||||||
|
localeName[0] = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StringUtils::ConvertUTF162ANSI(currentCulture.GetText(), localeName, currentCulture.Length());
|
||||||
|
for (int32 i = 0; i < currentCulture.Length(); i++)
|
||||||
|
if (localeName[i] == '-')
|
||||||
|
localeName[i] = '_';
|
||||||
|
localeName[currentCulture.Length() + 0] = '.';
|
||||||
|
localeName[currentCulture.Length() + 1] = 'U';
|
||||||
|
localeName[currentCulture.Length() + 2] = 'T';
|
||||||
|
localeName[currentCulture.Length() + 3] = 'F';
|
||||||
|
localeName[currentCulture.Length() + 4] = '-';
|
||||||
|
localeName[currentCulture.Length() + 5] = '8';
|
||||||
|
localeName[currentCulture.Length() + 6] = 0;
|
||||||
|
}
|
||||||
|
std::locale::global(std::locale(localeName));
|
||||||
|
}
|
||||||
|
|
||||||
// Send event
|
// Send event
|
||||||
Localization::LocalizationChanged();
|
Localization::LocalizationChanged();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user