diff --git a/frontend/src/i18n/locales/ceb/falukant.json b/frontend/src/i18n/locales/ceb/falukant.json index ed9e1fe..e2e8883 100755 --- a/frontend/src/i18n/locales/ceb/falukant.json +++ b/frontend/src/i18n/locales/ceb/falukant.json @@ -234,7 +234,7 @@ }, "statusValue": { "currentAndMinimum": "{current} (minimum: {minimum})", - "office": { "none": "walay katungdanan", "minimum": "katungdanan nga ranggo {rank} o mas taas" }, + "office": { "none": "walay katungdanan", "minimum": "katungdanan nga ranggo {rank} o mas taas", "minimumList": "{offices}, o mas taas nga katungdanan" }, "house": { "none": "walay balay" } } }, diff --git a/frontend/src/i18n/locales/de/falukant.json b/frontend/src/i18n/locales/de/falukant.json index 3aa0272..d6b6c5c 100755 --- a/frontend/src/i18n/locales/de/falukant.json +++ b/frontend/src/i18n/locales/de/falukant.json @@ -220,7 +220,8 @@ "currentAndMinimum": "{current} (mindestens: {minimum})", "office": { "none": "kein Amt", - "minimum": "ein Amt ab Rang {rank}" + "minimum": "ein Amt ab Rang {rank}", + "minimumList": "{offices} oder ein höheres Amt" }, "house": { "none": "kein Haus" diff --git a/frontend/src/i18n/locales/en/falukant.json b/frontend/src/i18n/locales/en/falukant.json index ff5e23c..eb8bf8e 100755 --- a/frontend/src/i18n/locales/en/falukant.json +++ b/frontend/src/i18n/locales/en/falukant.json @@ -224,7 +224,7 @@ }, "statusValue": { "currentAndMinimum": "{current} (minimum: {minimum})", - "office": { "none": "no office", "minimum": "an office of rank {rank} or higher" }, + "office": { "none": "no office", "minimum": "an office of rank {rank} or higher", "minimumList": "{offices}, or a higher office" }, "house": { "none": "no house" } } }, diff --git a/frontend/src/i18n/locales/es/falukant.json b/frontend/src/i18n/locales/es/falukant.json index 7f8c8e0..c66de7c 100755 --- a/frontend/src/i18n/locales/es/falukant.json +++ b/frontend/src/i18n/locales/es/falukant.json @@ -217,7 +217,7 @@ }, "statusValue": { "currentAndMinimum": "{current} (mínimo: {minimum})", - "office": { "none": "sin cargo", "minimum": "un cargo de rango {rank} o superior" }, + "office": { "none": "sin cargo", "minimum": "un cargo de rango {rank} o superior", "minimumList": "{offices} o un cargo superior" }, "house": { "none": "sin casa" } } }, diff --git a/frontend/src/i18n/locales/fr/falukant.json b/frontend/src/i18n/locales/fr/falukant.json index c4e6e0e..2f3e982 100755 --- a/frontend/src/i18n/locales/fr/falukant.json +++ b/frontend/src/i18n/locales/fr/falukant.json @@ -217,7 +217,7 @@ }, "statusValue": { "currentAndMinimum": "{current} (minimum : {minimum})", - "office": { "none": "aucune fonction", "minimum": "une fonction de rang {rank} ou supérieur" }, + "office": { "none": "aucune fonction", "minimum": "une fonction de rang {rank} ou supérieur", "minimumList": "{offices}, ou une fonction supérieure" }, "house": { "none": "aucune maison" } } }, diff --git a/frontend/src/views/falukant/OverviewView.vue b/frontend/src/views/falukant/OverviewView.vue index 4c0dcda..d23326d 100755 --- a/frontend/src/views/falukant/OverviewView.vue +++ b/frontend/src/views/falukant/OverviewView.vue @@ -830,7 +830,7 @@ export default { }, certificateMinimumStatusValueLabel(type, required) { if (type === 'officePoints') { - return this.$t('falukant.overview.certificate.statusValue.office.minimum', { rank: required }); + return this.certificateMinimumOfficeStatusLabel(required); } if (type === 'nobilityPoints') { const gender = this.falukantUser?.character?.gender || 'male'; @@ -848,10 +848,28 @@ export default { certificateHouseStatusLabel(position, fallbackLabel = null) { const value = Number(position || 0); if (!value) return this.$t('falukant.overview.certificate.statusValue.house.none'); - const key = `falukant.nobility.advance.housePosition.${value}`; + const key = `falukant.nobility.housePosition.${value}`; return this.$te(key) ? this.$t(key) - : (fallbackLabel || this.$t('falukant.nobility.advance.housePosition.fallback', { level: value })); + : (fallbackLabel || this.$t('falukant.nobility.housePosition.fallback', { level: value })); + }, + certificateMinimumOfficeStatusLabel(required) { + const officesByRank = { + 1: { political: ['assessor', 'councillor'], church: ['village-priest'] }, + 2: { political: ['council', 'beadle', 'town-clerk', 'master-builder', 'village-major', 'taxman', 'hangman'], church: ['parish-priest'] }, + 3: { political: ['mayor', 'judge', 'bailif', 'sheriff', 'consultant', 'territorial-council'], church: ['dean'] }, + 4: { political: ['treasurer', 'territorial-council-speaker', 'ruler-consultant', 'state-administrator', 'ministry-helper'], church: ['archdeacon'] }, + 5: { political: ['super-state-administrator', 'governor', 'minister'], church: ['bishop'] }, + }; + const offices = officesByRank[Number(required)]; + if (!offices) return this.formatCertificateValue(required); + const labels = [ + ...offices.political.map((name) => this.$t(`falukant.politics.offices.${name}`)), + ...offices.church.map((name) => this.$t(`falukant.church.offices.${name}`)), + ]; + return this.$t('falukant.overview.certificate.statusValue.office.minimumList', { + offices: labels.join(', '), + }); }, async fetchPotentialHeirs() { this.loadingHeirs = true;