LeviLamina
Loading...
Searching...
No Matches
I18nImpl.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/threading/Async.h"
7#include "mc/deps/core/threading/SharedLockbox.h"
8#include "mc/deps/core/utility/NonOwnerPointer.h"
9#include "mc/deps/core/utility/Subject.h"
10#include "mc/locale/I18n.h"
11
12// auto generated forward declare list
13// clang-format off
14class I18nObserver;
16class Localization;
18class PackManifest;
21namespace Json { class Value; }
22// clang-format on
23
24class I18nImpl : public ::I18n {
25public:
26 // I18nImpl inner types declare
27 // clang-format off
29 // clang-format on
30
31 // I18nImpl inner types define
32 enum class NotifyMode : uchar {
33 Always = 0,
34 LocaleChanged = 1,
35 };
36
38 public:
39 // member variables
40 // NOLINTBEGIN
41 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::ImmutableLocalization const>> mCurrentLanguage;
42 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::ImmutableLocalization const>> mCurrentPackMetaLanguage;
43 // NOLINTEND
44 };
45
46 using LockedCurrentLanguageInfo =
48
49public:
50 // member variables
51 // NOLINTBEGIN
52 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::Localization const>> mEmptyLanguage;
53 ::ll::TypedStorage<8, 40, ::Bedrock::Threading::SharedLockbox<::I18nImpl::CurrentLanguageInfo, ::std::shared_mutex>>
54 mCurrentLanguageInfo;
55 ::ll::TypedStorage<8, 24, ::std::vector<::std::shared_ptr<::ImmutableLocalization>>> mLanguages;
56 ::ll::TypedStorage<8, 24, ::std::vector<::std::string>> mLanguageCodes;
57 ::ll::TypedStorage<8, 64, ::std::unordered_map<::std::string, ::std::string>> mLanguageNames;
58 ::ll::TypedStorage<
59 8,
60 32,
61 ::Bedrock::Threading::
62 SharedLockbox<::std::vector<::std::shared_ptr<::ImmutableLocalization>>, ::std::shared_mutex>>
63 mPackKeywordLanguages;
64 ::ll::TypedStorage<8, 24, ::std::vector<::std::string> const> mPackReservedKeys;
65 ::ll::TypedStorage<1, 1, bool> mLanguageSupportsHypenSplitting;
66 ::ll::TypedStorage<8, 8, ::ResourcePackManager*> mResourcePackManager;
67 ::ll::TypedStorage<8, 8, ::std::shared_mutex> mAdditionalTranslationsBackupMutex;
68 ::ll::TypedStorage<8, 24, ::std::vector<::ImmutableLocalization>> mAdditionalTranslationsBackup;
69 ::ll::TypedStorage<8, 8, ::std::shared_mutex> mLocalizationMutex;
70 ::ll::TypedStorage<8, 104, ::Core::Subject<::I18nObserver, ::std::mutex>> mSubject;
71 // NOLINTEND
72
73public:
74 // virtual functions
75 // NOLINTBEGIN
76 virtual void clearLanguages() /*override*/;
77
78 virtual ::std::vector<::std::string>
79 findAvailableLanguages(::ResourcePackManager& resourcePackManager) /*override*/;
80
81 virtual ::std::unordered_map<::std::string, ::std::string>
82 findAvailableLanguageNames(::ResourcePackManager& resourcePackManager) /*override*/;
83
84 virtual ::Bedrock::Threading::Async<void> loadLanguages(
85 ::ResourcePackManager& resourcePackManager,
86 ::Bedrock::NotNullNonOwnerPtr<::ResourceLoadManager> resourceLoadManager,
87 ::std::string const& initLang
88 ) /*override*/;
89
90 virtual void loadAllLanguages(::ResourcePackManager& resourcePackManager) /*override*/;
91
92 virtual ::std::vector<::std::string>
93 getLanguageCodesFromPack(::PackAccessStrategy const& accessStrategy) /*override*/;
94
95 virtual void loadLanguageKeywordsFromPack(
96 ::PackManifest const& manifest,
97 ::PackAccessStrategy const& accessStrategy
98 ) /*override*/;
99
100 virtual void loadLanguageKeywordsFromPack(
101 ::PackManifest const& manifest,
102 ::PackAccessStrategy const& accessStrategy,
103 ::std::vector<::std::string> const& languageCodes,
104 ::std::optional<::std::vector<::std::string>> const& additionalLocKeys
105 ) /*override*/;
106
107 virtual void appendLanguageStringsFromPack(
108 ::PackManifest const& manifest,
109 ::std::multimap<::std::string, ::std::pair<::std::string, ::std::string>> const& localizationMapping
110 ) /*override*/;
111
112 virtual ::std::unordered_map<::std::string, ::std::string>
113 getLanguageKeywordsFromPack(::PackManifest const& manifest, ::std::string const& keyword) /*override*/;
114
115 virtual void loadLangaugesByLocale(
116 ::std::unordered_multimap<::std::string, ::std::pair<::std::string, ::std::string>> const& storeLocalization
117 ) /*override*/;
118
119 virtual void appendAdditionalTranslations(
120 ::std::unordered_map<::std::string, ::std::string> const& translations,
121 ::std::string const& keyPrefix
122 ) /*override*/;
123
124 virtual void appendLanguageStrings(::PackAccessStrategy* accessStrategy) /*override*/;
125
126 virtual void addI18nObserver(::I18nObserver& observer) /*override*/;
127
128 virtual void chooseLanguage(::std::string const& code) /*override*/;
129
130 virtual ::std::string
131 get(::std::string const& id,
132 ::std::vector<::std::string> const& params,
133 ::std::shared_ptr<::Localization const> const locale) /*override*/;
134
135 virtual ::std::string
136 get(::std::string const& langString, ::std::shared_ptr<::Localization const> const locale) /*override*/;
137
138 virtual ::std::string getPackKeywordValue(::PackManifest const& manifest, ::std::string const& key) /*override*/;
139
140 virtual ::std::string
141 getPackKeywordValueForTelemetry(::PackManifest const& manifest, ::std::string const& key) /*override*/;
142
143 virtual bool hasPackKeyEntry(::PackManifest const& manifest, ::std::string const& key) /*override*/;
144
145 virtual ::std::vector<::std::string> const& getSupportedLanguageCodes() /*override*/;
146
147 virtual ::std::string const& getLanguageName(::std::string const& code) /*override*/;
148
149 virtual ::std::shared_ptr<::Localization const> const getLocaleFor(::std::string const& code) /*override*/;
150
151 virtual ::std::string const& getLocaleCodeFor(::std::string const& code) /*override*/;
152
153 virtual ::gsl::not_null<::std::shared_ptr<::Localization const>> getCurrentLanguage() /*override*/;
154
155 virtual bool languageSupportsHypenSplitting() /*override*/;
156
157 virtual ::std::string getLocalizedAssetFileWithFallback(
158 ::std::string const& fileNamePrefix,
159 ::std::string const& fileNameSuffix
160 ) /*override*/;
161
162 virtual bool isPackKeyword(::std::string const& key) /*override*/;
163 // NOLINTEND
164
165public:
166 // member functions
167 // NOLINTBEGIN
168 MCAPI I18nImpl();
169
170 MCAPI void _chooseLanguage(::std::shared_ptr<::ImmutableLocalization> chosen, ::I18nImpl::NotifyMode notify);
171
172 MCAPI ::std::shared_ptr<::ImmutableLocalization> _findLocaleFor(::std::string const& code);
173
174 MCAPI ::std::string _generatePackKeyPrefix(::PackManifest const& manifest);
175
176 MCAPI ::std::string& _getLocaleCodeFor(::std::string const& code);
177
178 MCAPI ::gsl::not_null<::std::shared_ptr<::ImmutableLocalization>>
179 _getPackKeywordLocale(::std::string const& langCode);
180 // NOLINTEND
181
182public:
183 // static functions
184 // NOLINTBEGIN
185 MCAPI static void _findAvailableLanguages(::Json::Value const& root, ::std::vector<::std::string>& destination);
186 // NOLINTEND
187
188public:
189 // constructor thunks
190 // NOLINTBEGIN
191 MCAPI void* $ctor();
192 // NOLINTEND
193
194public:
195 // virtual function thunks
196 // NOLINTBEGIN
197 MCAPI void $clearLanguages();
198
199 MCAPI ::std::vector<::std::string> $findAvailableLanguages(::ResourcePackManager& resourcePackManager);
200
201 MCAPI ::std::unordered_map<::std::string, ::std::string>
202 $findAvailableLanguageNames(::ResourcePackManager& resourcePackManager);
203
204 MCAPI ::Bedrock::Threading::Async<void> $loadLanguages(
205 ::ResourcePackManager& resourcePackManager,
206 ::Bedrock::NotNullNonOwnerPtr<::ResourceLoadManager> resourceLoadManager,
207 ::std::string const& initLang
208 );
209
210 MCAPI void $loadAllLanguages(::ResourcePackManager& resourcePackManager);
211
212 MCAPI ::std::vector<::std::string> $getLanguageCodesFromPack(::PackAccessStrategy const& accessStrategy);
213
214 MCAPI void
215 $loadLanguageKeywordsFromPack(::PackManifest const& manifest, ::PackAccessStrategy const& accessStrategy);
216
217 MCAPI void $loadLanguageKeywordsFromPack(
218 ::PackManifest const& manifest,
219 ::PackAccessStrategy const& accessStrategy,
220 ::std::vector<::std::string> const& languageCodes,
221 ::std::optional<::std::vector<::std::string>> const& additionalLocKeys
222 );
223
224 MCAPI void $appendLanguageStringsFromPack(
225 ::PackManifest const& manifest,
226 ::std::multimap<::std::string, ::std::pair<::std::string, ::std::string>> const& localizationMapping
227 );
228
229 MCAPI ::std::unordered_map<::std::string, ::std::string>
230 $getLanguageKeywordsFromPack(::PackManifest const& manifest, ::std::string const& keyword);
231
232 MCAPI void $loadLangaugesByLocale(
233 ::std::unordered_multimap<::std::string, ::std::pair<::std::string, ::std::string>> const& storeLocalization
234 );
235
236 MCAPI void $appendAdditionalTranslations(
237 ::std::unordered_map<::std::string, ::std::string> const& translations,
238 ::std::string const& keyPrefix
239 );
240
241 MCAPI void $appendLanguageStrings(::PackAccessStrategy* accessStrategy);
242
243 MCAPI void $addI18nObserver(::I18nObserver& observer);
244
245 MCAPI void $chooseLanguage(::std::string const& code);
246
247 MCAPI ::std::string $get(
248 ::std::string const& id,
249 ::std::vector<::std::string> const& params,
250 ::std::shared_ptr<::Localization const> const locale
251 );
252
253 MCAPI ::std::string $get(::std::string const& langString, ::std::shared_ptr<::Localization const> const locale);
254
255 MCAPI ::std::string $getPackKeywordValue(::PackManifest const& manifest, ::std::string const& key);
256
257 MCAPI ::std::string $getPackKeywordValueForTelemetry(::PackManifest const& manifest, ::std::string const& key);
258
259 MCAPI bool $hasPackKeyEntry(::PackManifest const& manifest, ::std::string const& key);
260
261 MCFOLD ::std::vector<::std::string> const& $getSupportedLanguageCodes();
262
263 MCAPI ::std::string const& $getLanguageName(::std::string const& code);
264
265 MCAPI ::std::shared_ptr<::Localization const> const $getLocaleFor(::std::string const& code);
266
267 MCAPI ::std::string const& $getLocaleCodeFor(::std::string const& code);
268
269 MCAPI ::gsl::not_null<::std::shared_ptr<::Localization const>> $getCurrentLanguage();
270
271 MCAPI bool $languageSupportsHypenSplitting();
272
273 MCAPI ::std::string
274 $getLocalizedAssetFileWithFallback(::std::string const& fileNamePrefix, ::std::string const& fileNameSuffix);
275
276 MCAPI bool $isPackKeyword(::std::string const& key);
277
278
279 // NOLINTEND
280};
Definition SharedLockbox.h:9
Definition I18nObserver.h:13
Definition I18n.h:19
Definition ImmutableLocalization.h:15
Definition Value.h:16
Definition Localization.h:14
Definition PackAccessStrategy.h:25
Definition PackManifest.h:39
Definition ResourceLoadManager.h:18
Definition ResourcePackManager.h:36
Definition I18nImpl.h:37
Definition code.h:5