Files
FlaxEngine/Source/Engine/Localization/Localization.cpp
2021-04-16 15:46:42 +02:00

90 lines
2.1 KiB
C++

// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
#include "Localization.h"
#include "CultureInfo.h"
#include "LocalizationSettings.h"
#include "Engine/Core/Log.h"
#include "Engine/Core/Config/GameSettings.h"
#include "Engine/Engine/EngineService.h"
#include "Engine/Content/Content.h"
#include "Engine/Serialization/Serialization.h"
class LocalizationService : public EngineService
{
public:
LocalizationService()
: EngineService(TEXT("Localization"), -950)
{
}
bool Init() override;
};
namespace
{
CultureInfo CurrentCulture(0);
CultureInfo CurrentLanguage(0);
LocalizationService LocalizationServiceInstance;
IMPLEMENT_SETTINGS_GETTER(LocalizationSettings, Localization);
void LocalizationSettings::Apply()
{
}
void LocalizationSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
{
DESERIALIZE(LocalizedStringTables);
}
}
bool LocalizationService::Init()
{
CurrentLanguage = CurrentCulture = CultureInfo(Platform::GetUserLocaleName());
return false;
}
Delegate<> Localization::LocalizationChanged;
const CultureInfo& Localization::GetCurrentCulture()
{
return CurrentCulture;
}
void Localization::SetCurrentCulture(const CultureInfo& value)
{
if (CurrentCulture == value)
return;
LOG(Info, "Changing current culture to: {0} ({1})", value.GetName(), value.GetLCID());
CurrentCulture = value;
LocalizationChanged();
}
const CultureInfo& Localization::GetCurrentLanguage()
{
return CurrentLanguage;
}
void Localization::SetCurrentLanguage(const CultureInfo& value)
{
if (CurrentLanguage == value)
return;
LOG(Info, "Changing current language to: {0} ({1})", value.GetName(), value.GetLCID());
CurrentLanguage = value;
LocalizationChanged();
}
void Localization::SetCurrentLanguageCulture(const CultureInfo& value)
{
if (CurrentCulture == value && CurrentLanguage == value)
return;
LOG(Info, "Changing current language and culture to: {0} ({1})", value.GetName(), value.GetLCID());
CurrentCulture = value;
CurrentLanguage = value;
LocalizationChanged();
}