|
53 | 53 |
|
54 | 54 |
|
55 | 55 | class Earxml: |
56 | | - def __init__(self): |
| 56 | + def __init__(self, preferred_languages): |
57 | 57 | self.xml_element_cache = dict() # type: typing.Dict[str, _Element] |
58 | 58 | self.path_cache = {} |
59 | 59 | self.sn_cache = {} |
| 60 | + self.preferred_languages = preferred_languages |
60 | 61 |
|
61 | 62 | def fill_caches(self, start_element=None, ar_path=""): |
62 | 63 | if start_element is None: |
@@ -226,9 +227,12 @@ def get_element_desc(self, element): |
226 | 227 | # type: (_Element, _DocRoot) -> str |
227 | 228 | """Get element description from XML.""" |
228 | 229 | desc = self.get_child(element, "DESC") |
229 | | - txt = self.get_child(desc, 'L-2[@L="DE"]') |
230 | | - if txt is None: |
231 | | - txt = self.get_child(desc, 'L-2[@L="EN"]') |
| 230 | + txt = None |
| 231 | + for lang in self.preferred_languages: |
| 232 | + if txt is None: |
| 233 | + txt = self.get_child(desc, f'L-2[@L="{lang}"]') |
| 234 | + if txt is None: |
| 235 | + break |
232 | 236 | if txt is None: |
233 | 237 | txt = self.get_child(desc, 'L-2') |
234 | 238 | if txt is not None: |
@@ -2180,10 +2184,14 @@ def load(file, **options): |
2180 | 2184 | decode_ethernet = options.get("decode_ethernet", False) |
2181 | 2185 | decode_flexray = options.get("decode_flexray", False) |
2182 | 2186 |
|
| 2187 | + preferred_languages = options.get("preferred_languages", ["EN,DE"]).split(",") |
| 2188 | + preferred_languages.append("FOR-ALL") |
| 2189 | + logger.debug(f"preferred_languages: {preferred_languages}") |
| 2190 | + |
2183 | 2191 | result = {} |
2184 | 2192 | logger.debug("Read arxml ...") |
2185 | 2193 |
|
2186 | | - ea = Earxml() |
| 2194 | + ea = Earxml(preferred_languages = preferred_languages) |
2187 | 2195 | ea.open(file) |
2188 | 2196 |
|
2189 | 2197 | com_module = ea.get_short_name_path("/ActiveEcuC/Com") |
|
0 commit comments