Your details: form of address, pronouns and gender carried to their equivalent when the language changes, and kept under Other where there is none #921
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
performance
security
tier
1
tier
2
tier
3
tier/4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo#921
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
On Your details, when the language the lists are offered in changes, a chosen form of address, pronoun set or gender becomes its equivalent in the new language (he/him becomes il going from English to French). A value with no equivalent is kept as it is under Other…, not dropped or switched to something else.
What exists today
accounts/addressing.pyholds three lists per language (en,fr,pt-PT,pt-BR):FORMS_OF_ADDRESS,PRONOUNSandGENDERS. The module says they "are data, not translations" and that what is stored is the text itself, never a key ("Dr.ª" and not "pt-PT:3"), so a value survives a change of language.addressing.language_of(profile)returns the career record's language (record_language) and, when that is blank, the interface language of the request. Changing the interface language changes the lists only when the record has no language of its own.accounts/forms.py,ProfileForm._offer): the stored text is compared with the new list. If it is not in it, the menu shows Other… and the box beside it holds the old text (self.initial[name] = addressing.OTHER,initial[f"{name}_other"] = stored). So after switching English → French, he/him is shown as Other…: he/him. Nothing maps it to il, and nothing is lost. Saving the page stores he/him again. A CV prints the stored text whatever its language.LEGACY_GENDERSandcurrent_gender_word(#864) replace an old list word with the new one in the migration, the importer and the candidate reader.What would change
addressing.py: a language-neutral concept for each list entry, with that concept's word in each language._offer), a stored value that is another language's word for a concept with a word in this language selects that word in the menu. One with no equivalent stays under Other… with its text, as today.Notes
addressing.pyand are not translated through Weblate. Any new sentence (for example one saying a value was carried over from another language) is a catalogue string.record_languageand the interface language, check each list for each pair, check that a value with no equivalent survives under Other…, and check a bound form that comes back with an error (_offer's "a page that comes back keeps what it was sent").To decide
Related: #309, #681, #864.
Checked against
mainat56fc9d531.Decision (maintainer, 2026-10-15): store a language-neutral value, except for "Other".
he/him,formal), never as the words of one language.he/himwithout changing anything stored.