@@ -1290,6 +1290,30 @@ async def _register_platform_logo(self, platform, platform_default_tmpl) -> None
12901290 f"Unexpected error registering logo for platform { platform .name } : { e } " ,
12911291 )
12921292
1293+ def _inject_platform_metadata_with_i18n (
1294+ self , platform , metadata , platform_i18n_translations : dict
1295+ ):
1296+ """将配置元数据注入到 metadata 中并处理国际化键转换。"""
1297+ metadata ["platform_group" ]["metadata" ]["platform" ].setdefault ("items" , {})
1298+ platform_items_to_inject = copy .deepcopy (platform .config_metadata )
1299+
1300+ if platform .i18n_resources :
1301+ i18n_prefix = f"platform_group.platform.{ platform .name } "
1302+
1303+ for lang , lang_data in platform .i18n_resources .items ():
1304+ platform_i18n_translations .setdefault (lang , {}).setdefault (
1305+ "platform_group" , {}
1306+ ).setdefault ("platform" , {})[platform .name ] = lang_data
1307+
1308+ for field_key , field_value in platform_items_to_inject .items ():
1309+ for key in ("description" , "hint" , "labels" ):
1310+ if key in field_value :
1311+ field_value [key ] = f"{ i18n_prefix } .{ field_key } .{ key } "
1312+
1313+ metadata ["platform_group" ]["metadata" ]["platform" ]["items" ].update (
1314+ platform_items_to_inject
1315+ )
1316+
12931317 async def _get_astrbot_config (self ):
12941318 config = self .config
12951319 metadata = copy .deepcopy (CONFIG_METADATA_2 )
@@ -1311,11 +1335,23 @@ async def _get_astrbot_config(self):
13111335 "config_template"
13121336 ]
13131337
1338+ # 收集平台的 i18n 翻译数据
1339+ platform_i18n_translations = {}
1340+
13141341 # 收集需要注册logo的平台
13151342 logo_registration_tasks = []
13161343 for platform in platform_registry :
13171344 if platform .default_config_tmpl :
1318- platform_default_tmpl [platform .name ] = platform .default_config_tmpl
1345+ platform_default_tmpl [platform .name ] = copy .deepcopy (
1346+ platform .default_config_tmpl
1347+ )
1348+
1349+ # 注入配置元数据(在 convert_to_i18n_keys 之后,使用国际化键)
1350+ if platform .config_metadata :
1351+ self ._inject_platform_metadata_with_i18n (
1352+ platform , metadata , platform_i18n_translations
1353+ )
1354+
13191355 # 收集logo注册任务
13201356 if platform .logo_path :
13211357 logo_registration_tasks .append (
@@ -1334,7 +1370,11 @@ async def _get_astrbot_config(self):
13341370 if provider .default_config_tmpl :
13351371 provider_default_tmpl [provider .type ] = provider .default_config_tmpl
13361372
1337- return {"metadata" : metadata , "config" : config }
1373+ return {
1374+ "metadata" : metadata ,
1375+ "config" : config ,
1376+ "platform_i18n_translations" : platform_i18n_translations ,
1377+ }
13381378
13391379 async def _get_plugin_config (self , plugin_name : str ):
13401380 ret : dict = {"metadata" : None , "config" : None }
0 commit comments