diff --git a/locales/rn/de.json b/locales/rn/de.json index 7c8e1686..9cce5e08 100644 --- a/locales/rn/de.json +++ b/locales/rn/de.json @@ -78,6 +78,7 @@ "clear_title": "Alle Termine entfernen?", "delete_description": "Der Kalender und alle seine Termine werden gelöscht. Dies kann nicht rückgängig gemacht werden.", "delete_title": "Kalender löschen?", + "description_field": "Beschreibung", "description_placeholder": "Optional", "edit_calendar": "Kalender bearbeiten", "new_calendar": "Neuer Kalender" diff --git a/locales/rn/en.json b/locales/rn/en.json index fb90bce8..a819ca55 100644 --- a/locales/rn/en.json +++ b/locales/rn/en.json @@ -99,6 +99,7 @@ "custom_color": "Custom color (hex)", "delete_description": "The calendar and all of its events will be deleted. This cannot be undone.", "delete_title": "Delete calendar?", + "description_field": "Description", "description_placeholder": "Optional", "edit_calendar": "Edit calendar", "fewer_colors": "Fewer colors", diff --git a/src/components/calendar/CalendarEditSheet.tsx b/src/components/calendar/CalendarEditSheet.tsx index 67d9f5c3..2c1fcf94 100644 --- a/src/components/calendar/CalendarEditSheet.tsx +++ b/src/components/calendar/CalendarEditSheet.tsx @@ -307,9 +307,11 @@ export function CalendarEditSheet({ visible, calendar, onSave, onClose }: Calend ))} )} - {t('calendar.management.description', 'Description')} + {/* Not calendar.management.description: in the webmail's + catalog that is the management page's desktop help text. */} + {t('calendar.management.description_field', 'Description')} JSON.parse(fs.readFileSync(path.join(root, file), 'utf8')); +const common = catalog('locales/en/common.json'); +const overlay = catalog('locales/rn/en.json'); + +function lookup(tree: Record, key: string): unknown { + return key.split('.').reduce((node, part) => (node as Record | undefined)?.[part], tree); +} + +// The app reads the overlay over the webmail's catalog. +const english = (key: string) => (lookup(overlay, key) ?? lookup(common, key)) as string | undefined; + +describe('the calendar sheet’s description field', () => { + it('is named "Description", not by the webmail’s desktop help text', () => { + const before = source.slice(0, source.indexOf('value={description}')); + const input = before.slice(before.lastIndexOf('\{t\('([^']+)'/g)]; + expect(english(labels[labels.length - 1][1])).toBe('Description'); + }); +});