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