Skip to content

Commit fa61577

Browse files
authored
Merge pull request #313 from dedis/internalization
feat: fix missing titles
2 parents 8284e45 + a3e29b5 commit fa61577

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

web/frontend/src/pages/form/components/FormRow.tsx

+13-7
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,27 @@ const FormRow: FC<FormRowProps> = ({ form }) => {
1515
useEffect(() => {
1616
if (form.Title === '') return;
1717
if (isJson(form.Title)) {
18-
const ts = JSON.parse(form.Title);
19-
setTitles(ts);
18+
setTitles(JSON.parse(form.Title));
2019
} else {
21-
const t = { en: form.Title, fr: form.TitleFr, de: form.TitleDe };
22-
setTitles(t);
20+
setTitles({ en: form.Title, fr: form.TitleFr, de: form.TitleDe });
2321
}
2422
}, [form]);
23+
// let i18next handle choosing the appropriate language
24+
const formRowI18n = i18n.createInstance();
25+
formRowI18n.init();
26+
// get current language
27+
formRowI18n.changeLanguage(i18n.language);
28+
Object.entries(titles).forEach(([lang, title]: [string, string | undefined]) => {
29+
if (title) {
30+
formRowI18n.addResource(lang, 'form', 'title', title);
31+
}
32+
});
2533
return (
2634
<tr className="bg-white border-b hover:bg-gray-50 ">
2735
<td className="px-1.5 sm:px-6 py-4 font-medium text-gray-900 whitespace-nowrap truncate">
2836
<Link className="text-gray-700 hover:text-indigo-500" to={`/forms/${form.FormID}`}>
2937
<div className="max-w-[20vw] truncate">
30-
{i18n.language === 'en' && titles.en}
31-
{i18n.language === 'fr' && titles.fr}
32-
{i18n.language === 'de' && titles.de}
38+
{formRowI18n.t('title', { ns: 'form', fallbackLng: 'en' })}
3339
</div>
3440
</Link>
3541
</td>

web/frontend/src/schema/configurationValidation.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ import * as yup from 'yup';
22

33
const idSchema = yup.string().min(1).required();
44
const titleSchema = yup.string().required();
5+
const formTitleSchema = yup.object({
6+
en: yup.string().required(),
7+
fr: yup.string(),
8+
de: yup.string(),
9+
});
510

611
const selectsSchema = yup.object({
712
ID: yup.lazy(() => idSchema),
@@ -403,7 +408,7 @@ const subjectSchema = yup.object({
403408
});
404409

405410
const configurationSchema = yup.object({
406-
MainTitle: yup.lazy(() => titleSchema),
411+
MainTitle: yup.lazy(() => formTitleSchema),
407412
Scaffold: yup.array().of(subjectSchema).required(),
408413
});
409414

0 commit comments

Comments
 (0)