Make default attribute (`model/itext/translation[@default]`) behaviour more consistent
lindsay-stevens opened this issue · 0 comments
The XForms spec says this about languages:
<itext>
<translation lang="[language name]" default="true()">
A default=”” attribute can be added to a to make it the default language, otherwise the first listed is used as the default
So the attribute is optional. In a multi-language form with no default_language
setting, the first encountered language in the model would be used as the default for Collect, while Enketo would default to the browser locale first.
The following table describes current pyxform behaviour in various scenarios as of f4cbc67 (~v1.7.0). Many of these scenarios correspond to tests in test_translations.py
, the rest were checked manually.
The assumed problem is that the @default="true"
attribute is not set in a minority of cases, when it could be set for consistency. The proposed change would be to set @default="true"
for (en) for cases 5, 7, 15, 17, and 19. For case 15, this may be dependent on #584 to ensure that the (en) lang has itext for the label.
Alternatively, it may be assumed that the problem is that pyxform emits a @default="true"
when no default_language
setting is present. In which case the proposed change would be to ensure that cases 3, 9, 11, 13, 15 do not set @default="true"
for any language.
case | langs | cols | default_lang | @default="true()" |
---|---|---|---|---|
1 | unnamed | label + hint | none | none (no itext) |
2 | unnamed | label + hint | unnamed | none (no itext) |
3 | unnamed | label + hint + media::image | none | unnamed |
4 | unnamed | label + hint + media::image | unnamed | unnamed |
5 | (en) | label::en + hint::en | none | none |
6 | (en) | label::en + hint::en | (en) | (en) |
7 | (en) | label::en + hint::en + media::image::en | none | none |
8 | (en) | label::en + hint::en + media::image::en | (en) | (en) |
9 | unnamed + (en) | label + label::en | none | unnamed |
10 | unnamed + (en) | label + label::en | (en) | (en) |
11 | unnamed + (en) | label + label::en + media::image | none | unnamed |
12 | unnamed + (en) | label + label::en + media::image | (en) | (en) |
13 | (en) + unnamed | label::en + label | none | (en) |
14 | (en) + unnamed | label::en + label | (en) | (en) |
15 | (en) + unnamed | label::en + label + media::image | none | unnamed |
16 | (en) + unnamed | label::en + label + media::image | (en) | (en) |
17 | (en) + (fr) | label::en + label::fr | none | none |
18 | (en) + (fr) | label::en + label::fr | (en) | (en) |
19 | (en) + (fr) | label::en + label::fr + media::image::en | none | none |
20 | (en) + (fr) | label::en + label::fr + media::image::en | (en) | (en) |