@@ -57,35 +57,47 @@ def _translation(translation: Optional[Path] = None):
5757 return {}
5858
5959
60+ def _translated_keywords (translation_data : dict ) -> list :
61+ return [item .get ("name" ) for item in translation_data .values () if item .get ("name" )]
62+
63+
6064class HybridCore :
6165 def __init__ (self , library_components : List , translation : Optional [Path ] = None ) -> None :
6266 self .keywords = {}
6367 self .keywords_spec = {}
6468 self .attributes = {}
6569 translation_data = _translation (translation )
66- self .add_library_components (library_components , translation_data )
67- self .add_library_components ([self ], translation_data )
70+ translated_kw_names = _translated_keywords (translation_data )
71+ self .add_library_components (library_components , translation_data , translated_kw_names )
72+ self .add_library_components ([self ], translation_data , translated_kw_names )
6873 self .__set_library_listeners (library_components )
6974
70- def add_library_components (self , library_components : List , translation : Optional [dict ] = None ):
75+ def add_library_components (
76+ self ,
77+ library_components : List ,
78+ translation : Optional [dict ] = None ,
79+ translated_kw_names : Optional [list ] = None ,
80+ ):
7181 translation = translation if translation else {}
82+ translated_kw_names = translated_kw_names if translated_kw_names else []
7283 self .keywords_spec ["__init__" ] = KeywordBuilder .build (self .__init__ , translation ) # type: ignore
7384 self .__replace_intro_doc (translation )
7485 for component in library_components :
7586 for name , func in self .__get_members (component ):
7687 if callable (func ) and hasattr (func , "robot_name" ):
7788 kw = getattr (component , name )
78- kw_name = self .__get_keyword_name (func , name , translation )
89+ kw_name = self .__get_keyword_name (func , name , translation , translated_kw_names )
7990 self .keywords [kw_name ] = kw
8091 self .keywords_spec [kw_name ] = KeywordBuilder .build (kw , translation )
8192 # Expose keywords as attributes both using original
8293 # method names as well as possible custom names.
8394 self .attributes [name ] = self .attributes [kw_name ] = kw
8495
85- def __get_keyword_name (self , func : Callable , name : str , translation : dict ):
86- if name in translation : # noqa: SIM102
87- if new_name := translation [name ].get ("name" ):
88- return new_name
96+ def __get_keyword_name (self , func : Callable , name : str , translation : dict , translated_kw_names : list ):
97+ if name in translated_kw_names :
98+ return name
99+ if name in translation and translation [name ].get ("name" ):
100+ return translation [name ].get ("name" )
89101 return func .robot_name or name
90102
91103 def __replace_intro_doc (self , translation : dict ):
0 commit comments