UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ICUCulture.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "CoreTypes.h"
7#include "Containers/Set.h"
8#include "Containers/Map.h"
13
15
16#if UE_ENABLE_ICU
18 #include <unicode/locid.h>
19 #include <unicode/brkiter.h>
20 #include <unicode/coll.h>
21 #include <unicode/numfmt.h>
22 #include <unicode/decimfmt.h>
24 #include <unicode/datefmt.h> // icu::Calendar can be affected by the non-standard packing UE4 uses, so force the platform default
26 #include <unicode/plurrule.h>
28
30
32
34{
36 switch(ComparisonLevel)
37 {
39 Value = UColAttributeValue::UCOL_DEFAULT;
40 break;
42 Value = UColAttributeValue::UCOL_PRIMARY;
43 break;
45 Value = UColAttributeValue::UCOL_SECONDARY;
46 break;
48 Value = UColAttributeValue::UCOL_TERTIARY;
49 break;
51 Value = UColAttributeValue::UCOL_QUATERNARY;
52 break;
54 Value = UColAttributeValue::UCOL_IDENTICAL;
55 break;
56 default:
57 Value = UColAttributeValue::UCOL_DEFAULT;
58 break;
59 }
60 return Value;
61}
62
63inline icu::DateFormat::EStyle UEToICU(const EDateTimeStyle::Type DateTimeStyle)
64{
65 icu::DateFormat::EStyle Value;
66 switch(DateTimeStyle)
67 {
69 Value = icu::DateFormat::kShort;
70 break;
72 Value = icu::DateFormat::kMedium;
73 break;
75 Value = icu::DateFormat::kLong;
76 break;
78 Value = icu::DateFormat::kFull;
79 break;
81 Value = icu::DateFormat::kDefault;
82 break;
83 default:
84 Value = icu::DateFormat::kDefault;
85 break;
86 }
87 return Value;
88}
89
90inline icu::DecimalFormat::ERoundingMode UEToICU(const ERoundingMode RoundingMode)
91{
92 icu::DecimalFormat::ERoundingMode Value;
93 switch(RoundingMode)
94 {
96 Value = icu::DecimalFormat::ERoundingMode::kRoundHalfEven;
97 break;
99 Value = icu::DecimalFormat::ERoundingMode::kRoundHalfUp;
100 break;
102 Value = icu::DecimalFormat::ERoundingMode::kRoundHalfDown;
103 break;
105 Value = icu::DecimalFormat::ERoundingMode::kRoundUp;
106 break;
108 Value = icu::DecimalFormat::ERoundingMode::kRoundDown;
109 break;
111 Value = icu::DecimalFormat::ERoundingMode::kRoundFloor;
112 break;
114 Value = icu::DecimalFormat::ERoundingMode::kRoundCeiling;
115 break;
116 default:
117 Value = icu::DecimalFormat::ERoundingMode::kRoundHalfEven;
118 break;
119 }
120 return Value;
121}
122
123inline ERoundingMode ICUToUE(const icu::DecimalFormat::ERoundingMode RoundingMode)
124{
126 switch(RoundingMode)
127 {
128 case icu::DecimalFormat::ERoundingMode::kRoundHalfEven:
130 break;
131 case icu::DecimalFormat::ERoundingMode::kRoundHalfUp:
133 break;
134 case icu::DecimalFormat::ERoundingMode::kRoundHalfDown:
136 break;
137 case icu::DecimalFormat::ERoundingMode::kRoundUp:
139 break;
140 case icu::DecimalFormat::ERoundingMode::kRoundDown:
142 break;
143 case icu::DecimalFormat::ERoundingMode::kRoundFloor:
145 break;
146 case icu::DecimalFormat::ERoundingMode::kRoundCeiling:
148 break;
149 default:
151 break;
152 }
153 return Value;
154}
155
156enum class EBreakIteratorType
157{
158 Grapheme,
159 Word,
160 Line,
161 Sentence,
162 Title
163};
164
166{
167 friend class FCulture;
168 friend class FText;
169 friend class FTextChronoFormatter;
170 friend class FICUBreakIteratorManager;
171
172public:
173 explicit FICUCultureImplementation(const FString& LocaleName);
174 virtual ~FICUCultureImplementation() = default;
175
176 //~ ICultureImplementation interface
177 virtual FString GetDisplayName() const override;
178 virtual FString GetEnglishName() const override;
179 virtual int GetKeyboardLayoutId() const override;
180 virtual int GetLCID() const override;
181 virtual FString GetName() const override;
182 virtual FString GetNativeName() const override;
183 virtual FString GetUnrealLegacyThreeLetterISOLanguageName() const override;
184 virtual FString GetThreeLetterISOLanguageName() const override;
185 virtual FString GetTwoLetterISOLanguageName() const override;
186 virtual FString GetNativeLanguage() const override;
187 virtual FString GetNativeRegion() const override;
188 virtual FString GetRegion() const override;
189 virtual FString GetScript() const override;
190 virtual FString GetVariant() const override;
191 virtual bool IsRightToLeft() const override;
194 virtual const FDecimalNumberFormattingRules& GetCurrencyFormattingRules(const FString& InCurrencyCode) override;
195 virtual ETextPluralForm GetPluralForm(int32 Val, const ETextPluralType PluralType) const override;
196 virtual ETextPluralForm GetPluralForm(double Val, const ETextPluralType PluralType) const override;
197 virtual const TArray<ETextPluralForm>& GetValidPluralForms(const ETextPluralType PluralType) const override;
198
199 static FString GetCanonicalName(const FString& Name, FInternationalization& I18N);
200
207 TSharedRef<const icu::DateFormat, ESPMode::ThreadSafe> GetDateTimeFormatter(const FString& CustomPattern, const FString& TimeZone);
208
209private:
210 icu::Locale ICULocale;
217
222
223 const icu::PluralRules* ICUCardinalPluralRules;
224 const icu::PluralRules* ICUOrdinalPluralRules;
225
228
231
234
237
238 TMap<FString, TSharedPtr<const FDecimalNumberFormattingRules>> UEAlternateCurrencyFormattingRules;
239 FCriticalSection UEAlternateCurrencyFormattingRulesCS;
240};
241#endif
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define THIRD_PARTY_INCLUDES_START
Definition GenericPlatformCompilerPreSetup.h:63
#define PRAGMA_POP_PLATFORM_DEFAULT_PACKING
Definition MSVCPlatformCompilerPreSetup.h:229
#define PRAGMA_PUSH_PLATFORM_DEFAULT_PACKING
Definition MSVCPlatformCompilerPreSetup.h:223
ETextPluralType
Definition Text.h:95
ETextPluralForm
Definition Text.h:101
ERoundingMode
Definition Text.h:166
@ ToNegativeInfinity
Definition Text.h:178
@ HalfFromZero
Definition Text.h:170
@ FromZero
Definition Text.h:174
@ HalfToZero
Definition Text.h:172
@ ToPositiveInfinity
Definition Text.h:180
@ ToZero
Definition Text.h:176
@ HalfToEven
Definition Text.h:168
float Val(const FString &Value)
Definition UnrealMath.cpp:3163
Definition Culture.h:31
Definition Internationalization.h:24
Definition TextChronoFormatter.h:13
Definition Text.h:385
Definition CultureImplementation.h:18
virtual FString GetUnrealLegacyThreeLetterISOLanguageName() const =0
virtual const FDecimalNumberFormattingRules & GetPercentFormattingRules()=0
virtual FString GetTwoLetterISOLanguageName() const =0
virtual bool IsRightToLeft() const =0
virtual int GetKeyboardLayoutId() const =0
virtual FString GetEnglishName() const =0
virtual FString GetVariant() const =0
virtual FString GetNativeRegion() const =0
virtual FString GetScript() const =0
virtual const FDecimalNumberFormattingRules & GetCurrencyFormattingRules(const FString &InCurrencyCode)=0
virtual const FDecimalNumberFormattingRules & GetDecimalNumberFormattingRules()=0
virtual FString GetDisplayName() const =0
virtual FString GetNativeName() const =0
virtual FString GetRegion() const =0
virtual FString GetNativeLanguage() const =0
virtual FString GetThreeLetterISOLanguageName() const =0
virtual const TArray< ETextPluralForm > & GetValidPluralForms(const ETextPluralType PluralType) const =0
virtual int GetLCID() const =0
virtual FString GetName() const =0
virtual ETextPluralForm GetPluralForm(int32 Val, const ETextPluralType PluralType) const =0
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Type
Definition Text.h:127
@ Medium
Definition Text.h:130
@ Full
Definition Text.h:132
@ Long
Definition Text.h:131
@ Default
Definition Text.h:128
@ Short
Definition Text.h:129
Type
Definition TextComparison.h:11
@ Default
Definition TextComparison.h:12
@ Quaternary
Definition TextComparison.h:16
@ Primary
Definition TextComparison.h:13
@ Secondary
Definition TextComparison.h:14
@ Quinary
Definition TextComparison.h:17
@ Tertiary
Definition TextComparison.h:15
Definition Voronoi.cpp:10
Definition FastDecimalFormat.h:16