| 9 | |
| 10 | |
| 11 | class Engine: |
| 12 | def __init__(self) -> None: |
| 13 | self.manager = Manager() |
| 14 | self.runner = Runner(self.manager) |
| 15 | self.chatter = Chatter(runner = self.runner, manager = self.manager) |
| 16 | |
| 17 | def _update_component( |
| 18 | self, |
| 19 | input_dict: Dict[str, Dict[str, Any]] |
| 20 | ) -> Dict["Component", "Component"]: |
| 21 | output_dict: Dict["Component", "Component"] = {} |
| 22 | for elem_id, elem_attr in input_dict.items(): |
| 23 | elem = self.manager.get_elem_by_id(elem_id) |
| 24 | output_dict[elem] = elem.__class__(**elem_attr) |
| 25 | return output_dict |
| 26 | |
| 27 | def change_lang(self, lang: str): |
| 28 | return { |
| 29 | elem: elem.__class__(**LOCALES[elem_name][lang]) |
| 30 | for elem_name, elem in self.manager.get_elem_iter() |
| 31 | if elem_name in LOCALES |
| 32 | } |
| 33 | |
| 34 | def resume(self): |
| 35 | base_lang = 'en' |
| 36 | init_dict = {'basic.lang': {'value': base_lang}} |
| 37 | yield self._update_component(init_dict) |