Adjust translation logic for gender in vue components

This commit is contained in:
Julie Lenaerts 2024-10-01 13:35:06 +02:00
parent 05d56c6eeb
commit 06cb3ddcd1
9 changed files with 13 additions and 44 deletions

View File

@ -26,6 +26,7 @@ class Gender
private bool $active = true; private bool $active = true;
#[Assert\NotNull(message: 'You must choose a gender translation')] #[Assert\NotNull(message: 'You must choose a gender translation')]
#[Serializer\Groups(['read'])]
#[ORM\Column(type: \Doctrine\DBAL\Types\Types::STRING, enumType: GenderEnum::class)] #[ORM\Column(type: \Doctrine\DBAL\Types\Types::STRING, enumType: GenderEnum::class)]
private GenderEnum $genderTranslation; private GenderEnum $genderTranslation;

View File

@ -38,7 +38,8 @@ const messages = {
person: "Usager", person: "Usager",
birthday: { birthday: {
man: "Né le", man: "Né le",
woman: "Née le" woman: "Née le",
neutral: "Né·e le"
}, },
deathdate: "Date de décès", deathdate: "Date de décès",
household_without_address: "Le ménage de l'usager est sans adresse", household_without_address: "Le ménage de l'usager est sans adresse",

View File

@ -8,7 +8,7 @@
{{ $t('household_members_editor.holder') }} {{ $t('household_members_editor.holder') }}
</span> </span>
</div> </div>
<div v-if="conc.person.birthdate !== null">{{ $t('person.born', {'gender': conc.person.gender} ) }}</div> <div v-if="conc.person.birthdate !== null">{{ $t('person.born', {'gender': conc.person.gender.genderTranslation} ) }}</div>
</div> </div>
<div class="item-col"> <div class="item-col">
<ul class="list-content fa-ul"> <ul class="list-content fa-ul">

View File

@ -12,10 +12,6 @@ const visMessages = {
Holder: 'Titulaire', Holder: 'Titulaire',
Legend: 'Calques', Legend: 'Calques',
concerned: 'concerné', concerned: 'concerné',
// both: 'neutre, non binaire',
woman: 'féminin',
man: 'masculin',
undefined: "genre non précisé",
years: 'ans', years: 'ans',
click_to_expand: 'cliquez pour étendre', click_to_expand: 'cliquez pour étendre',
add_relationship_link: "Créer un lien de filiation", add_relationship_link: "Créer un lien de filiation",
@ -64,7 +60,7 @@ const visMessages = {
placeholder: "Choisissez le genre de l'usager", placeholder: "Choisissez le genre de l'usager",
woman: "Féminin", woman: "Féminin",
man: "Masculin", man: "Masculin",
both: "Neutre, non binaire", neutral: "Neutre, non binaire",
undefined: "Non renseigné", undefined: "Non renseigné",
unknown: "Non renseigné" unknown: "Non renseigné"
} }

View File

@ -1,6 +1,6 @@
import { createStore } from 'vuex' import { createStore } from 'vuex'
import { getHouseholdByPerson, getCoursesByPerson, getRelationshipsByPerson } from './api' import { getHouseholdByPerson, getCoursesByPerson, getRelationshipsByPerson } from './api'
import { getHouseholdLabel, getHouseholdWidth, getRelationshipLabel, getRelationshipTitle, getRelationshipDirection, splitId, getGender, getAge } from './vis-network' import { getHouseholdLabel, getHouseholdWidth, getRelationshipLabel, getRelationshipTitle, getRelationshipDirection, splitId, getAge } from './vis-network'
import {visMessages} from "./i18n"; import {visMessages} from "./i18n";
import { darkBlue, darkBrown, darkGreen, lightBlue, lightBrown, lightGreen } from './colors'; import { darkBlue, darkBrown, darkGreen, lightBlue, lightBrown, lightGreen } from './colors';
@ -148,7 +148,7 @@ const store = createStore({
person.group = person.type person.group = person.type
person._id = person.id person._id = person.id
person.id = `person_${person.id}` person.id = `person_${person.id}`
person.label = `*${person.text}${person.deathdate ? ' (‡)' : ''}*\n_${getGender(person.gender)}${age}_${debug}` person.label = `*${person.text}${person.deathdate ? ' (‡)' : ''}*\n_${person.gender.label.fr}${age}_${debug}`
person.folded = false person.folded = false
// folded is used for missing persons // folded is used for missing persons
if (options.folded) { if (options.folded) {

View File

@ -141,25 +141,6 @@ window.options = {
} }
} }
/**
* @param gender
* @returns {string}
*/
const getGender = (gender) => {
switch (gender) {
case 'both':
return visMessages.fr.visgraph.both
case 'woman':
return visMessages.fr.visgraph.woman
case 'man':
return visMessages.fr.visgraph.man
case 'unknown':
return visMessages.fr.visgraph.unknown
default:
return visMessages.fr.visgraph.undefined
}
}
/** /**
* TODO only one abstract function (-> getAge() is repeated in PersonRenderBox.vue) * TODO only one abstract function (-> getAge() is repeated in PersonRenderBox.vue)
* @param person * @param person
@ -251,7 +232,6 @@ const splitId = (id, position) => {
} }
export { export {
getGender,
getAge, getAge,
getHouseholdLabel, getHouseholdLabel,
getHouseholdWidth, getHouseholdWidth,

View File

@ -39,7 +39,7 @@
<p v-if="options.addInfo === true" class="moreinfo"> <p v-if="options.addInfo === true" class="moreinfo">
<gender-icon-render-box v-if="person.gender" :gender="person.gender"></gender-icon-render-box> <gender-icon-render-box v-if="person.gender" :gender="person.gender"></gender-icon-render-box>
<time v-if="person.birthdate && !person.deathdate" :datetime="person.birthdate" :title="birthdate"> <time v-if="person.birthdate && !person.deathdate" :datetime="person.birthdate" :title="birthdate">
{{ $t(getGenderTranslation) + ' ' + $d(birthdate, 'text') }} {{ $t(`renderbox.birthday.${person.gender.genderTranslation}`) + ' ' + $d(birthdate, 'text') }}
</time> </time>
<time v-else-if="person.birthdate && person.deathdate" :datetime="person.deathdate" <time v-else-if="person.birthdate && person.deathdate" :datetime="person.deathdate"
@ -223,15 +223,6 @@ export default {
return false return false
} }
}, },
/* getGenderIcon: function () {
return this.person.gender === 'woman' ? 'fa-venus' : this.person.gender === 'man' ? 'fa-mars' : this.person.gender === 'both' ? 'fa-neuter' : 'fa-genderless';
},*/
getGenderTranslation: function () {
return this.person.gender === 'woman' ? 'renderbox.birthday.woman' : 'renderbox.birthday.man';
},
getGender() {
return this.person.gender === 'woman' ? 'person.gender.woman' : this.person.gender === 'man' ? 'person.gender.man' : this.person.gender === 'both' ? 'person.gender.both' : 'person.gender.undefined';
},
birthdate: function () { birthdate: function () {
if (this.person.birthdate !== null || this.person.birthdate === "undefined") { if (this.person.birthdate !== null || this.person.birthdate === "undefined") {
return ISOToDate(this.person.birthdate.datetime); return ISOToDate(this.person.birthdate.datetime);

View File

@ -300,13 +300,13 @@ export default {
} }
}, },
genderTranslation() { genderTranslation() {
switch (this.person.gender) { switch (this.person.gender.genderTranslation) {
case 'woman': case 'woman':
return 'person.gender.woman'; return 'person.gender.woman';
case 'man': case 'man':
return 'person.gender.man'; return 'person.gender.man';
case 'both': case 'neutral':
return 'person.gender.both'; return 'person.gender.neutral';
case 'unknown': case 'unknown':
return 'person.gender.unknown'; return 'person.gender.unknown';
default: default:

View File

@ -15,7 +15,7 @@ const personMessages = {
person: { person: {
firstname: "Prénom", firstname: "Prénom",
lastname: "Nom", lastname: "Nom",
born: (ctx: {gender: "man"|"woman"|"unknown"}) => { born: (ctx: {gender: "man"|"woman"|"neutral"}) => {
if (ctx.gender === 'man') { if (ctx.gender === 'man') {
return 'Né le'; return 'Né le';
} else if (ctx.gender === 'woman') { } else if (ctx.gender === 'woman') {
@ -36,7 +36,7 @@ const personMessages = {
placeholder: "Choisissez le genre de l'usager", placeholder: "Choisissez le genre de l'usager",
woman: "Féminin", woman: "Féminin",
man: "Masculin", man: "Masculin",
both: "Neutre, non binaire", neutral: "Neutre, non binaire",
unknown: "Non renseigné", unknown: "Non renseigné",
undefined: "Non renseigné" undefined: "Non renseigné"
}, },