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
48 using LockedCurrentLanguageInfo =
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 virtual void clearLanguages() /*override*/;
79
80 virtual ::std::vector<::std::string>
81 findAvailableLanguages(::ResourcePackManager& resourcePackManager) /*override*/;
82
83 virtual ::std::unordered_map<::std::string, ::std::string>
84 findAvailableLanguageNames(::ResourcePackManager& resourcePackManager) /*override*/;
85
86 virtual ::Bedrock::Threading::Async<void> loadLanguages(
87 ::ResourcePackManager& resourcePackManager,
88 ::Bedrock::NotNullNonOwnerPtr<::ResourceLoadManager> resourceLoadManager,
89 ::std::string const& initLang
90 ) /*override*/;
91
92 virtual void loadAllLanguages(::ResourcePackManager& resourcePackManager) /*override*/;
93
94 virtual ::std::vector<::std::string>
95 getLanguageCodesFromPack(::PackAccessStrategy const& accessStrategy) /*override*/;
96
97 virtual void loadLanguageKeywordsFromPack(
98 ::PackManifest const& manifest,
99 ::PackAccessStrategy const& accessStrategy
100 ) /*override*/;
101
102 virtual void loadLanguageKeywordsFromPack(
103 ::PackManifest const& manifest,
104 ::PackAccessStrategy const& accessStrategy,
105 ::std::vector<::std::string> const& languageCodes,
106 ::std::optional<::std::vector<::std::string>> const& additionalLocKeys
107 ) /*override*/;
108
109 virtual void appendLanguageStringsFromPack(
110 ::PackManifest const& manifest,
111 ::std::multimap<::std::string, ::std::pair<::std::string, ::std::string>> const& localizationMapping
112 ) /*override*/;
113
114 virtual ::std::unordered_map<::std::string, ::std::string>
115 getLanguageKeywordsFromPack(::PackManifest const& manifest, ::std::string const& keyword) /*override*/;
116
117 virtual void loadLangaugesByLocale(
118 ::std::unordered_multimap<::std::string, ::std::pair<::std::string, ::std::string>> const& storeLocalization
119 ) /*override*/;
120
121 virtual void appendAdditionalTranslations(
122 ::std::unordered_map<::std::string, ::std::string> const& translations,
123 ::std::string const& keyPrefix
124 ) /*override*/;
125
126 virtual void appendLanguageStrings(::PackAccessStrategy* accessStrategy) /*override*/;
127
128 virtual void addI18nObserver(::I18nObserver& observer) /*override*/;
129
130 virtual void chooseLanguage(::std::string const& code) /*override*/;
131
132 virtual ::std::string
133 get(::std::string const& id,
134 ::std::vector<::std::string> const& params,
135 ::std::shared_ptr<::Localization const> const locale) /*override*/;
136
137 virtual ::std::string
138 get(::std::string const& langString, ::std::shared_ptr<::Localization const> const locale) /*override*/;
139
140 virtual ::std::string getPackKeywordValue(::PackManifest const& manifest, ::std::string const& key) /*override*/;
141
142 virtual ::std::string
143 getPackKeywordValueForTelemetry(::PackManifest const& manifest, ::std::string const& key) /*override*/;
144
145 virtual bool hasPackKeyEntry(::PackManifest const& manifest, ::std::string const& key) /*override*/;
146
147 virtual ::std::vector<::std::string> const& getSupportedLanguageCodes() /*override*/;
148
149 virtual ::std::string const& getLanguageName(::std::string const& code) /*override*/;
150
151 virtual ::std::shared_ptr<::Localization const> const getLocaleFor(::std::string const& code) /*override*/;
152
153 virtual ::std::string const& getLocaleCodeFor(::std::string const& code) /*override*/;
154
155 virtual ::gsl::not_null<::std::shared_ptr<::Localization const>> getCurrentLanguage() /*override*/;
156
157 virtual bool languageSupportsHypenSplitting() /*override*/;
158
159 virtual ::std::string getLocalizedAssetFileWithFallback(
160 ::std::string const& fileNamePrefix,
161 ::std::string const& fileNameSuffix
162 ) /*override*/;
163
164 virtual bool isPackKeyword(::std::string const& key) /*override*/;
165 // NOLINTEND
166
167public:
168 // member functions
169 // NOLINTBEGIN
170 MCAPI I18nImpl();
171
172 MCAPI void _chooseLanguage(::std::shared_ptr<::ImmutableLocalization> chosen, ::I18nImpl::NotifyMode notify);
173
174 MCAPI void _findAvailableLanguageNames(
175 ::Json::Value const& root,
176 ::std::unordered_map<::std::string, ::std::string>& destination
177 );
178
179 MCAPI void _findAvailableLanguages(::Json::Value const& root, ::std::vector<::std::string>& destination);
180
181 MCAPI ::std::shared_ptr<::ImmutableLocalization> _findLocaleFor(::std::string const& code);
182
183 MCAPI ::std::string _generatePackKeyPrefix(::PackManifest const& manifest);
184
185 MCAPI ::std::string& _getLocaleCodeFor(::std::string const& code);
186
187 MCAPI ::gsl::not_null<::std::shared_ptr<::ImmutableLocalization>>
188 _getPackKeywordLocale(::std::string const& langCode);
189
190 MCAPI void _setLanguageSupportsHypenSplitting(::Localization const& localization);
191 // NOLINTEND
192
193public:
194 // constructor thunks
195 // NOLINTBEGIN
196 MCAPI void* $ctor();
197 // NOLINTEND
198
199public:
200 // virtual function thunks
201 // NOLINTBEGIN
202 MCAPI void $clearLanguages();
203
204 MCAPI ::std::vector<::std::string> $findAvailableLanguages(::ResourcePackManager& resourcePackManager);
205
206 MCAPI ::std::unordered_map<::std::string, ::std::string>
207 $findAvailableLanguageNames(::ResourcePackManager& resourcePackManager);
208
209 MCAPI ::Bedrock::Threading::Async<void> $loadLanguages(
210 ::ResourcePackManager& resourcePackManager,
211 ::Bedrock::NotNullNonOwnerPtr<::ResourceLoadManager> resourceLoadManager,
212 ::std::string const& initLang
213 );
214
215 MCAPI void $loadAllLanguages(::ResourcePackManager& resourcePackManager);
216
217 MCAPI ::std::vector<::std::string> $getLanguageCodesFromPack(::PackAccessStrategy const& accessStrategy);
218
219 MCAPI void
220 $loadLanguageKeywordsFromPack(::PackManifest const& manifest, ::PackAccessStrategy const& accessStrategy);
221
222 MCAPI void $loadLanguageKeywordsFromPack(
223 ::PackManifest const& manifest,
224 ::PackAccessStrategy const& accessStrategy,
225 ::std::vector<::std::string> const& languageCodes,
226 ::std::optional<::std::vector<::std::string>> const& additionalLocKeys
227 );
228
229 MCAPI void $appendLanguageStringsFromPack(
230 ::PackManifest const& manifest,
231 ::std::multimap<::std::string, ::std::pair<::std::string, ::std::string>> const& localizationMapping
232 );
233
234 MCAPI ::std::unordered_map<::std::string, ::std::string>
235 $getLanguageKeywordsFromPack(::PackManifest const& manifest, ::std::string const& keyword);
236
237 MCAPI void $loadLangaugesByLocale(
238 ::std::unordered_multimap<::std::string, ::std::pair<::std::string, ::std::string>> const& storeLocalization
239 );
240
241 MCAPI void $appendAdditionalTranslations(
242 ::std::unordered_map<::std::string, ::std::string> const& translations,
243 ::std::string const& keyPrefix
244 );
245
246 MCAPI void $appendLanguageStrings(::PackAccessStrategy* accessStrategy);
247
248 MCAPI void $addI18nObserver(::I18nObserver& observer);
249
250 MCAPI void $chooseLanguage(::std::string const& code);
251
252 MCAPI ::std::string $get(
253 ::std::string const& id,
254 ::std::vector<::std::string> const& params,
255 ::std::shared_ptr<::Localization const> const locale
256 );
257
258 MCAPI ::std::string $get(::std::string const& langString, ::std::shared_ptr<::Localization const> const locale);
259
260 MCAPI ::std::string $getPackKeywordValue(::PackManifest const& manifest, ::std::string const& key);
261
262 MCAPI ::std::string $getPackKeywordValueForTelemetry(::PackManifest const& manifest, ::std::string const& key);
263
264 MCAPI bool $hasPackKeyEntry(::PackManifest const& manifest, ::std::string const& key);
265
266 MCFOLD ::std::vector<::std::string> const& $getSupportedLanguageCodes();
267
268 MCAPI ::std::string const& $getLanguageName(::std::string const& code);
269
270 MCAPI ::std::shared_ptr<::Localization const> const $getLocaleFor(::std::string const& code);
271
272 MCAPI ::std::string const& $getLocaleCodeFor(::std::string const& code);
273
274 MCAPI ::gsl::not_null<::std::shared_ptr<::Localization const>> $getCurrentLanguage();
275
276 MCAPI bool $languageSupportsHypenSplitting();
277
278 MCAPI ::std::string
279 $getLocalizedAssetFileWithFallback(::std::string const& fileNamePrefix, ::std::string const& fileNameSuffix);
280
281 MCAPI bool $isPackKeyword(::std::string const& key);
282
283
284 // NOLINTEND
285
286public:
287 // vftables
288 // NOLINTBEGIN
289 MCNAPI static void** $vftable();
290 // NOLINTEND
291};
Definition Mutex.h:10
Definition SharedLockbox.h:8
static MCAPI void ** $vftable()
Definition I18nObserver.h:14
Definition I18n.h:19
Definition ImmutableLocalization.h:15
Definition Value.h:16
Definition Localization.h:15
Definition PackAccessStrategy.h:26
Definition PackManifest.h:38
Definition ResourceLoadManager.h:19
Definition ResourcePackManager.h:35
Definition I18nImpl.h:39
Definition code.h:5