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
166 virtual ~I18nImpl() /*override*/;
167 // NOLINTEND
168
169public:
170 // member functions
171 // NOLINTBEGIN
172 MCAPI I18nImpl();
173
174 MCAPI void _chooseLanguage(::std::shared_ptr<::ImmutableLocalization> chosen, ::I18nImpl::NotifyMode notify);
175
176 MCAPI void _findAvailableLanguageNames(
177 ::Json::Value const& root,
178 ::std::unordered_map<::std::string, ::std::string>& destination
179 );
180
181 MCAPI void _findAvailableLanguages(::Json::Value const& root, ::std::vector<::std::string>& destination);
182
183 MCAPI ::std::shared_ptr<::ImmutableLocalization> _findLocaleFor(::std::string const& code);
184
185 MCAPI ::std::string _generatePackKeyPrefix(::PackManifest const& manifest);
186
187 MCAPI ::std::string& _getLocaleCodeFor(::std::string const& code);
188
189 MCAPI void _notifyLanguagesLoaded();
190
191 MCAPI void _setLanguageSupportsHypenSplitting(::Localization const& localization);
192 // NOLINTEND
193
194public:
195 // constructor thunks
196 // NOLINTBEGIN
197 MCAPI void* $ctor();
198 // NOLINTEND
199
200public:
201 // destructor thunk
202 // NOLINTBEGIN
203 MCAPI void $dtor();
204 // NOLINTEND
205
206public:
207 // virtual function thunks
208 // NOLINTBEGIN
209 MCAPI void $clearLanguages();
210
211 MCAPI ::std::vector<::std::string> $findAvailableLanguages(::ResourcePackManager& resourcePackManager);
212
213 MCAPI ::std::unordered_map<::std::string, ::std::string>
214 $findAvailableLanguageNames(::ResourcePackManager& resourcePackManager);
215
216 MCAPI ::Bedrock::Threading::Async<void> $loadLanguages(
217 ::ResourcePackManager& resourcePackManager,
218 ::Bedrock::NotNullNonOwnerPtr<::ResourceLoadManager> resourceLoadManager,
219 ::std::string const& initLang
220 );
221
222 MCAPI void $loadAllLanguages(::ResourcePackManager& resourcePackManager);
223
224 MCAPI ::std::vector<::std::string> $getLanguageCodesFromPack(::PackAccessStrategy const& accessStrategy);
225
226 MCAPI void
227 $loadLanguageKeywordsFromPack(::PackManifest const& manifest, ::PackAccessStrategy const& accessStrategy);
228
229 MCAPI void $loadLanguageKeywordsFromPack(
230 ::PackManifest const& manifest,
231 ::PackAccessStrategy const& accessStrategy,
232 ::std::vector<::std::string> const& languageCodes,
233 ::std::optional<::std::vector<::std::string>> const& additionalLocKeys
234 );
235
236 MCAPI void $appendLanguageStringsFromPack(
237 ::PackManifest const& manifest,
238 ::std::multimap<::std::string, ::std::pair<::std::string, ::std::string>> const& localizationMapping
239 );
240
241 MCAPI ::std::unordered_map<::std::string, ::std::string>
242 $getLanguageKeywordsFromPack(::PackManifest const& manifest, ::std::string const& keyword);
243
244 MCAPI void $loadLangaugesByLocale(
245 ::std::unordered_multimap<::std::string, ::std::pair<::std::string, ::std::string>> const& storeLocalization
246 );
247
248 MCAPI void $appendAdditionalTranslations(
249 ::std::unordered_map<::std::string, ::std::string> const& translations,
250 ::std::string const& keyPrefix
251 );
252
253 MCAPI void $appendLanguageStrings(::PackAccessStrategy* accessStrategy);
254
255 MCAPI void $addI18nObserver(::I18nObserver& observer);
256
257 MCAPI void $chooseLanguage(::std::string const& code);
258
259 MCAPI ::std::string $get(
260 ::std::string const& id,
261 ::std::vector<::std::string> const& params,
262 ::std::shared_ptr<::Localization const> const locale
263 );
264
265 MCAPI ::std::string $get(::std::string const& langString, ::std::shared_ptr<::Localization const> const locale);
266
267 MCAPI ::std::string $getPackKeywordValue(::PackManifest const& manifest, ::std::string const& key);
268
269 MCAPI ::std::string $getPackKeywordValueForTelemetry(::PackManifest const& manifest, ::std::string const& key);
270
271 MCAPI bool $hasPackKeyEntry(::PackManifest const& manifest, ::std::string const& key);
272
273 MCFOLD ::std::vector<::std::string> const& $getSupportedLanguageCodes();
274
275 MCAPI ::std::string const& $getLanguageName(::std::string const& code);
276
277 MCAPI ::std::shared_ptr<::Localization const> const $getLocaleFor(::std::string const& code);
278
279 MCAPI ::std::string const& $getLocaleCodeFor(::std::string const& code);
280
281 MCAPI ::gsl::not_null<::std::shared_ptr<::Localization const>> $getCurrentLanguage();
282
283 MCFOLD bool $languageSupportsHypenSplitting();
284
285 MCAPI ::std::string
286 $getLocalizedAssetFileWithFallback(::std::string const& fileNamePrefix, ::std::string const& fileNameSuffix);
287
288 MCAPI bool $isPackKeyword(::std::string const& key);
289
290
291 // NOLINTEND
292
293public:
294 // vftables
295 // NOLINTBEGIN
296 MCNAPI static void** $vftable();
297 // NOLINTEND
298};
Definition Mutex.h:10
Definition SharedLockbox.h:8
static MCAPI void ** $vftable()
Definition I18nObserver.h:14
Definition I18n.h:19
MCAPI void $dtor()
Definition ImmutableLocalization.h:15
Definition Value.h:16
Definition Localization.h:15
Definition PackAccessStrategy.h:21
Definition PackManifest.h:37
Definition ResourceLoadManager.h:18
Definition ResourcePackManager.h:29
Definition I18nImpl.h:39
Definition code.h:5