feat: add runtime i18n API with manifest translations
This commit is contained in:
@@ -181,6 +181,25 @@ class FlameLuaGame extends FlameGame with PanDetector, ScrollDetector {
|
||||
_resources = activation.resources;
|
||||
_audio = activation.audio ?? _createAudioManager();
|
||||
_scriptEngine = activation.scriptEngine;
|
||||
|
||||
// 合并所有包的翻译字典,框架包先、游戏包后,后加载的覆盖先加载的。
|
||||
final mergedTranslations = <String, Map<String, String>>{};
|
||||
for (final package in activation.packages) {
|
||||
for (final entry in package.manifest.translations.entries) {
|
||||
mergedTranslations.putIfAbsent(entry.key, () => {})
|
||||
.addAll(entry.value);
|
||||
}
|
||||
}
|
||||
final resolvedLocale = RuntimeLocaleResolver.resolve(
|
||||
requested: _localeOverride ?? PlatformDispatcher.instance.locale,
|
||||
defaultLocale: activation.package.manifest.defaultLocale,
|
||||
supportedLocales: activation.package.manifest.supportedLocales,
|
||||
);
|
||||
_scriptEngine.setTranslations(
|
||||
locale: resolvedLocale.resolved,
|
||||
translations: mergedTranslations,
|
||||
);
|
||||
|
||||
_viewportConfig = activation.package.manifest.display.toViewportConfig();
|
||||
_viewportRoot = PositionComponent();
|
||||
add(_viewportRoot);
|
||||
|
||||
Reference in New Issue
Block a user