UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Internationalization.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Containers/Array.h"
6#include "CoreTypes.h"
12#include "Templates/Tuple.h"
13#include "Templates/UniqueObj.h"
14#include "UObject/NameTypes.h"
15
16#define LOC_DEFINE_REGION
17
18class FCulture;
21class ICustomCulture;
22
24{
26
27public:
29
31 static CORE_API bool IsAvailable();
32
33 static CORE_API void TearDown();
34
35 UE_DEPRECATED(5.5, "FInternationalization::ForUseOnlyByLocMacroAndGraphNodeTextLiterals_CreateText is deprecated in favor of FText::AsLocalizable_Advanced (NOTE: FText::AsLocalizable_Advanced takes its arguments in a different order!).")
40
51
57 CORE_API bool SetCurrentCulture(const FString& InCultureName);
58
64 {
65 return CurrentLanguage.ToSharedRef();
66 }
67
72 CORE_API bool SetCurrentLanguage(const FString& InCultureName);
73
78 {
79 return CurrentLanguage.ToSharedRef();
80 }
81
86 CORE_API bool SetCurrentLocale(const FString& InCultureName);
87
92 {
93 return CurrentLocale.ToSharedRef();
94 }
95
100
105
111
116
122
128 {
129 return DefaultLanguage.ToSharedRef();
130 }
131
136 {
137 return DefaultLanguage.ToSharedRef();
138 }
139
144 {
145 return DefaultLocale.ToSharedRef();
146 }
147
152 {
153 return InvariantCulture.ToSharedRef();
154 }
155
160
164 CORE_API void BackupCultureState(FCultureStateSnapshot& OutSnapshot) const;
165
169 CORE_API void RestoreCultureState(const FCultureStateSnapshot& InSnapshot);
170
171 bool IsInitialized() const {return bIsInitialized;}
172
175
178
181
183 CORE_API bool IsCultureRemapped(const FString& Name, FString* OutMappedCulture);
184
186 CORE_API bool IsCultureAllowed(const FString& Name);
187
190
193
194#if ENABLE_LOC_TESTING
195 static CORE_API FString& Leetify(FString& SourceString);
196#endif
197
199
201
207 UE_DEPRECATED(4.20, "FInternationalization::GetCulturesWithAvailableLocalization is deprecated in favor of calling FTextLocalizationManager::GetLocalizedCultureNames, potentially followed by FInternationalization::GetAvailableCultures")
209
212
215 FCultureChangedEvent& OnCultureChanged() { return CultureChangedEvent; }
216
217private:
220 friend class FLazySingleton;
221
222 void BroadcastCultureChanged() { CultureChangedEvent.Broadcast(); }
223
224 void Initialize();
225 void Terminate();
226
227private:
228 bool bIsInitialized = false;
229
230 FCultureChangedEvent CultureChangedEvent;
231
232#if UE_ENABLE_ICU
233 friend class FICUInternationalization;
234 typedef FICUInternationalization FImplementation;
235#else
238#endif
239 TUniqueObj<FImplementation> Implementation;
240
244 FCulturePtr CurrentLanguage;
245
249 FCulturePtr CurrentLocale;
250
255 TArray<TTuple<FName, FCulturePtr>> CurrentAssetGroupCultures;
256
260 FCulturePtr DefaultLanguage;
261
265 FCulturePtr DefaultLocale;
266
270 FCulturePtr InvariantCulture;
271
275 TArray<FCultureRef> CustomCultures;
276};
277
279{
281 {
282 return (InCulture && *InCulture)
284 : nullptr;
285 }
286}
287
289#undef LOCTEXT_NAMESPACE
290
295#define LOCTEXT(InKey, InTextLiteral) FText::AsLocalizable_Advanced_LocText(TEXT(LOCTEXT_NAMESPACE), TEXT(InKey), TEXT(InTextLiteral))
296
300#define NSLOCTEXT(InNamespace, InKey, InTextLiteral) FText::AsLocalizable_Advanced_LocText(TEXT(InNamespace), TEXT(InKey), TEXT(InTextLiteral))
301
305#define INVTEXT(InTextLiteral) FText::AsCultureInvariant(TEXT(InTextLiteral))
306
314#define LOCGEN_NUMBER(InNum, InCulture) FText::AsNumber(InNum, nullptr, UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
315#define LOCGEN_NUMBER_GROUPED(InNum, InCulture) FText::AsNumber(InNum, &FNumberFormattingOptions::DefaultWithGrouping(), UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
316#define LOCGEN_NUMBER_UNGROUPED(InNum, InCulture) FText::AsNumber(InNum, &FNumberFormattingOptions::DefaultNoGrouping(), UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
317#define LOCGEN_NUMBER_CUSTOM(InNum, InOpts, InCulture) FText::AsNumber(InNum, &FNumberFormattingOptions().InOpts, UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
318
326#define LOCGEN_PERCENT(InNum, InCulture) FText::AsPercent(InNum, nullptr, UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
327#define LOCGEN_PERCENT_GROUPED(InNum, InCulture) FText::AsPercent(InNum, &FNumberFormattingOptions::DefaultWithGrouping(), UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
328#define LOCGEN_PERCENT_UNGROUPED(InNum, InCulture) FText::AsPercent(InNum, &FNumberFormattingOptions::DefaultNoGrouping(), UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
329#define LOCGEN_PERCENT_CUSTOM(InNum, InOpts, InCulture) FText::AsPercent(InNum, &FNumberFormattingOptions().InOpts, UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
330
338#define LOCGEN_CURRENCY(InNum, InCurrency, InCulture) FText::AsCurrencyBase(InNum, TEXT(InCurrency), UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
339
348#define LOCGEN_DATE_UTC(InUnixTime, InDateStyle, InTimeZone, InCulture) FText::AsDate(FDateTime::FromUnixTimestamp(InUnixTime), InDateStyle, TEXT(InTimeZone), UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
349#define LOCGEN_DATE_LOCAL(InUnixTime, InDateStyle, InCulture) FText::AsDate(FDateTime::FromUnixTimestamp(InUnixTime), InDateStyle, FText::GetInvariantTimeZone(), UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
350
359#define LOCGEN_TIME_UTC(InUnixTime, InTimeStyle, InTimeZone, InCulture) FText::AsTime(FDateTime::FromUnixTimestamp(InUnixTime), InTimeStyle, TEXT(InTimeZone), UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
360#define LOCGEN_TIME_LOCAL(InUnixTime, InTimeStyle, InCulture) FText::AsTime(FDateTime::FromUnixTimestamp(InUnixTime), InTimeStyle, FText::GetInvariantTimeZone(), UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
361
371#define LOCGEN_DATETIME_UTC(InUnixTime, InDateStyle, InTimeStyle, InTimeZone, InCulture) FText::AsDateTime(FDateTime::FromUnixTimestamp(InUnixTime), InDateStyle, InTimeStyle, TEXT(InTimeZone), UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
372#define LOCGEN_DATETIME_LOCAL(InUnixTime, InDateStyle, InTimeStyle, InCulture) FText::AsDateTime(FDateTime::FromUnixTimestamp(InUnixTime), InDateStyle, InTimeStyle, FText::GetInvariantTimeZone(), UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
373
382#define LOCGEN_DATETIME_CUSTOM_UTC(InUnixTime, InPattern, InTimeZone, InCulture) FText::AsDateTime(FDateTime::FromUnixTimestamp(InUnixTime), TEXT(InPattern), TEXT(InTimeZone), UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
383#define LOCGEN_DATETIME_CUSTOM_LOCAL(InUnixTime, InPattern, InCulture) FText::AsDateTime(FDateTime::FromUnixTimestamp(InUnixTime), TEXT(InPattern), FText::GetInvariantTimeZone(), UE::Private::LocGen::GetCultureByName(TEXT(InCulture)))
384
389#define LOCGEN_TOUPPER(InText) (InText).ToUpper()
390
395#define LOCGEN_TOLOWER(InText) (InText).ToLower()
396
401#define LOCGEN_FORMAT_ORDERED(InPattern, ...) FText::FormatOrdered(InPattern, __VA_ARGS__)
402
407#define LOCGEN_FORMAT_NAMED(InPattern, ...) FText::FormatNamed(InPattern, __VA_ARGS__)
408
409#undef LOC_DEFINE_REGION
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_EVENT(OwningType, EventName)
Definition DelegateCombinations.h:32
Definition Culture.h:31
Definition Internationalization.h:24
CORE_API void LoadAllCultureData()
Definition Internationalization.cpp:410
CORE_API TArray< FCultureRef > GetAvailableCultures(const TArray< FString > &InCultureNames, const bool bIncludeDerivedCultures)
Definition Internationalization.cpp:466
CORE_API bool IsCultureRemapped(const FString &Name, FString *OutMappedCulture)
Definition Internationalization.cpp:430
CORE_API bool SetCurrentLanguage(const FString &InCultureName)
Definition Internationalization.cpp:58
CORE_API FCultureRef GetCurrentAssetGroupCulture(const FName &InAssetGroupName) const
Definition Internationalization.cpp:151
CORE_API bool SetCurrentAssetGroupCulture(const FName &InAssetGroupName, const FString &InCultureName)
Definition Internationalization.cpp:114
CORE_API bool IsCultureAllowed(const FString &Name)
Definition Internationalization.cpp:435
FCultureRef GetCurrentCulture() const
Definition Internationalization.h:63
FCultureRef GetCurrentLanguage() const
Definition Internationalization.h:77
FCultureRef GetCurrentLocale() const
Definition Internationalization.h:91
CORE_API TArray< FCultureRef > GetCurrentCultures(const bool bIncludeLanguage, const bool bIncludeLocale, const bool bIncludeAssetGroups) const
Definition Internationalization.cpp:171
FCultureRef GetDefaultCulture() const
Definition Internationalization.h:127
CORE_API void AddCustomCulture(const TSharedRef< ICustomCulture > &InCustomCulture)
Definition Internationalization.cpp:416
static CORE_API FInternationalization & Get()
Definition Internationalization.cpp:21
CORE_API void GetCultureNames(TArray< FString > &CultureNames) const
Definition Internationalization.cpp:450
CORE_API bool SetCurrentCulture(const FString &InCultureName)
Definition Internationalization.cpp:37
FCultureRef GetInvariantCulture() const
Definition Internationalization.h:151
static CORE_API bool IsAvailable()
Definition Internationalization.cpp:26
CORE_API void RestoreCultureState(const FCultureStateSnapshot &InSnapshot)
Definition Internationalization.cpp:208
CORE_API void GetCulturesWithAvailableLocalization(const TArray< FString > &InLocalizationPaths, TArray< FCultureRef > &OutAvailableCultures, const bool bIncludeDerivedCultures)
Definition Internationalization.cpp:460
bool IsInitialized() const
Definition Internationalization.h:171
FCultureChangedEvent & OnCultureChanged()
Definition Internationalization.h:215
CORE_API bool SetCurrentLanguageAndLocale(const FString &InCultureName)
Definition Internationalization.cpp:94
static UE_FORCEINLINE_HINT FText ForUseOnlyByLocMacroAndGraphNodeTextLiterals_CreateText(const TCHAR *InTextLiteral, const TCHAR *InNamespace, const TCHAR *InKey)
Definition Internationalization.h:36
CORE_API FCulturePtr GetCustomCulture(const FString &InCultureName) const
Definition Internationalization.cpp:421
static CORE_API void TearDown()
Definition Internationalization.cpp:32
FCultureRef GetDefaultLocale() const
Definition Internationalization.h:143
CORE_API void RefreshCachedConfigData()
Definition Internationalization.cpp:445
CORE_API void RefreshCultureDisplayNames(const TArray< FString > &InPrioritizedDisplayCultureNames)
Definition Internationalization.cpp:440
CORE_API TArray< FString > GetPrioritizedCultureNames(const FString &Name)
Definition Internationalization.cpp:455
CORE_API FCulturePtr GetCulture(const FString &InCultureName)
Definition Internationalization.cpp:265
CORE_API void ClearCurrentAssetGroupCulture(const FName &InAssetGroupName)
Definition Internationalization.cpp:163
FCultureRef GetDefaultLanguage() const
Definition Internationalization.h:135
CORE_API bool SetCurrentLocale(const FString &InCultureName)
Definition Internationalization.cpp:77
CORE_API void BackupCultureState(FCultureStateSnapshot &OutSnapshot) const
Definition Internationalization.cpp:196
Definition LazySingleton.h:9
Definition LegacyInternationalization.h:14
Definition NameTypes.h:617
Definition TextChronoFormatter.h:13
Definition Text.h:385
static CORE_API FText AsLocalizable_Advanced(const FTextKey &Namespace, const FTextKey &Key, const TCHAR *String)
Definition Text.cpp:1226
Definition ICustomCulture.h:13
Definition Array.h:670
TSharedRef< ObjectType, Mode > ToSharedRef() const &
Definition SharedPointer.h:1028
Definition SharedPointer.h:153
Definition UniqueObj.h:13
Definition Internationalization.h:279
FCulturePtr GetCultureByName(const TCHAR *InCulture)
Definition Internationalization.h:280
Definition Internationalization.h:46
FString Language
Definition Internationalization.h:47
FString Locale
Definition Internationalization.h:48
TArray< TTuple< FName, FString > > AssetGroups
Definition Internationalization.h:49