Skip to content

Commit 781f64f

Browse files
authored
Merge pull request #852 from angebrandsoftware/preferred-languages
Preferred languages
2 parents 6669880 + 3bb76ce commit 781f64f

2 files changed

Lines changed: 14 additions & 5 deletions

File tree

src/canmatrix/cli/convert.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ def get_formats():
9595
@click.option('--arxmlExportVersion', 'arVersion', default="4.1.0", help="Set output AUTOSAR version\ncurrently only 3.2.3 and 4.1.0 are supported\ndefault 4.1.0")
9696
@click.option('--arxmlFlexray/--no-arxmlFlexray', 'decode_flexray', default = False, help="EXPERIMENTAL: import basic flexray data from ARXML")
9797
@click.option('--arxmlEthernet/--no-arxmlEthernet', 'decode_ethernet', default = False, help="EXPERIMENTAL: import basic ethernet data from ARXML")
98+
@click.option('--preferred-languages', 'preferred_languages', default = "EN,DE", help="the preferred languages will be given priority when there are comments or descriptions available in multiple languages\ndefault EN,DE")
9899

99100

100101
# dbc switches

src/canmatrix/formats/arxml.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,11 @@
5353

5454

5555
class Earxml:
56-
def __init__(self):
56+
def __init__(self, preferred_languages):
5757
self.xml_element_cache = dict() # type: typing.Dict[str, _Element]
5858
self.path_cache = {}
5959
self.sn_cache = {}
60+
self.preferred_languages = preferred_languages
6061

6162
def fill_caches(self, start_element=None, ar_path=""):
6263
if start_element is None:
@@ -226,9 +227,12 @@ def get_element_desc(self, element):
226227
# type: (_Element, _DocRoot) -> str
227228
"""Get element description from XML."""
228229
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
232236
if txt is None:
233237
txt = self.get_child(desc, 'L-2')
234238
if txt is not None:
@@ -2180,10 +2184,14 @@ def load(file, **options):
21802184
decode_ethernet = options.get("decode_ethernet", False)
21812185
decode_flexray = options.get("decode_flexray", False)
21822186

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+
21832191
result = {}
21842192
logger.debug("Read arxml ...")
21852193

2186-
ea = Earxml()
2194+
ea = Earxml(preferred_languages = preferred_languages)
21872195
ea.open(file)
21882196

21892197
com_module = ea.get_short_name_path("/ActiveEcuC/Com")

0 commit comments

Comments
 (0)