@@ -539,6 +539,36 @@ def translate(key: str, **kwargs) -> str:
539539 return translate
540540
541541
542+ def build_strategy_display_name (lang : str , translate_fn ):
543+ """Build a strategy display name resolver consistent with other platforms.
544+
545+ Returns a callable that resolves a strategy's display name using catalog
546+ metadata (if available) or the legacy i18n dictionary fallback.
547+ """
548+ def strategy_display_name (
549+ profile : str ,
550+ * ,
551+ fallback_name : str | None = None ,
552+ metadata = None ,
553+ ) -> str :
554+ if metadata is not None :
555+ from quant_platform_kit .common .notification_localization import (
556+ resolve_strategy_display_name ,
557+ )
558+ return resolve_strategy_display_name (
559+ lang , metadata , translator = translate_fn ,
560+ )
561+ key = f"strategy_name_{ str (profile or '' ).strip ()} "
562+ translated = translate_fn (key )
563+ if translated != key :
564+ return translated
565+ fallback = str (fallback_name or "" ).strip ()
566+ if fallback :
567+ return fallback
568+ return str (profile or "" ).strip ()
569+ return strategy_display_name
570+
571+
542572def build_sender (token : str | None , chat_id : str | None , * , requests_module = None ):
543573 if requests_module is None :
544574 import requests as requests_module
@@ -1158,9 +1188,18 @@ def render_cycle_summary(result: Mapping[str, Any], *, lang: str = "en") -> str:
11581188 has_rebalance_attempt = bool (submitted or target_diff_lines or has_meaningful_skip )
11591189 strategy_profile = str (result .get ("strategy_profile" ) or "" ).strip ()
11601190 strategy_name = str (result .get ("strategy_display_name" ) or strategy_profile ).strip ()
1161- translated_strategy_name = translator (f"strategy_name_{ strategy_profile } " ) if strategy_profile else ""
1162- if translated_strategy_name and translated_strategy_name != f"strategy_name_{ strategy_profile } " :
1163- strategy_name = translated_strategy_name
1191+ strategy_metadata = result .get ("strategy_metadata" )
1192+ if strategy_metadata is not None :
1193+ from quant_platform_kit .common .notification_localization import (
1194+ resolve_strategy_display_name ,
1195+ )
1196+ strategy_name = resolve_strategy_display_name (
1197+ lang , strategy_metadata , translator = translator ,
1198+ )
1199+ else :
1200+ translated_strategy_name = translator (f"strategy_name_{ strategy_profile } " ) if strategy_profile else ""
1201+ if translated_strategy_name and translated_strategy_name != f"strategy_name_{ strategy_profile } " :
1202+ strategy_name = translated_strategy_name
11641203 account = str (result .get ("account" ) or "" ).strip ()
11651204 lines = [translator ("rebalance_title" if has_rebalance_attempt else "heartbeat_title" )]
11661205 if strategy_name :
0 commit comments