Files
tibi-docs/src/content/docs/nova/test-plans/35-entry-i18n.md
T

4.6 KiB

title
title
Entry I18n

Entry I18n

Scope

  • Entry-level i18n collections in project t1
  • Create flow for collections that store one language per entry
  • Draft language selection before the first save

Prerequisites

  • Run in mock mode only
  • Use project t1
  • Collections:
    • articles_i18n for default-language create flow
    • articles_i18n_picklang for explicit language picker flow
    • articles_i18n_nested for nested languageField/groupField tests

Test Cases

ID Description Expected Result Priority
EI18N-06 Open /entries/new for articles_i18n Draft language switcher is visible, default language is preselected, hidden system fields stay hidden High
EI18N-07 Change draft language before first save Selected draft language becomes active and remains active after save High
EI18N-08 Create from collection without usable default language Language picker appears before navigation and selected language is prefilled in the draft High
EI18N-08b Duplicate an existing translated entry from EntryView New draft keeps the source language active and visible translatable fields are prefilled from the source entry High
EI18N-09 Run AI translate on an existing target-language entry Best sibling source is picked by content score and language order, translatable fields update, non-translatable fields stay unchanged High
EI18N-24 Use the Nova icon inside the create-language menu The normal row still creates a copy, the Nova action creates the target language and immediately starts translation from the currently open source entry High
EI18N-13 Edit a normal field in an existing translated entry TranslationBar state stays stable and no extra sibling list GET is triggered while typing High
EI18N-12 Press Ctrl+L on an existing translated entry Entry view navigates to the next sibling language instead of only flashing the shortcut highlight High
EI18N-25 Create translation from existing entry navigates to create mode with pre-filled fields After clicking a target language in the create menu, the browser navigates to /entries/new?lang=; required fields from the source entry are preserved, non-required clearFields are emptied High
EI18N-26 Create translation with unsaved changes shows dirty guard first If the source entry has unsaved changes, a discard dialog appears before navigating to create mode Medium
EI18N-60 Nested i18n: details.lang and details.translationGroup are hidden from form The object field "details" is visible but the sub-fields "lang" and "translationGroup" are not rendered High
EI18N-61 Nested i18n: regular fields are visible title, slug, summary, body are visible and editable High
EI18N-62 Nested i18n: TranslationBar shows language tabs TranslationBar renders with DE active, EN/FR siblings visible High
EI18N-63 Nested i18n: create translation from existing entry Creating a translation navigates to create mode with pre-filled fields, details.lang is set to the target language High

Edge Cases

  • Direct deeplink to /entries/new should still get a usable default if one exists
  • Collections without a default language must not silently create the wrong language
  • Duplicating an EN or FR entry must not reopen the draft in the collection default language and hide the copied values in another language tab
  • When multiple sibling source entries have equal content, the earlier configured language should win as deterministic fallback
  • The Nova action in the create menu must keep the source pinned to the currently open language entry, even if another sibling would score higher globally
  • Ctrl+L must not be swallowed by field-i18n logic when the collection only uses entry-level i18n
  • Unsaved typing in non-language fields must not re-request sibling translations for the current translation group
  • Nested i18n config (languageField inside an object field): the parent object stays visible but system sub-fields (lang, translationGroup) are filtered out in FieldRenderer
  • Creating a translation in nested config: clone must correctly handle dotted clearField paths (e.g. empty nested title/body)
  • Unterbrochener Create-Mode (Benutzer navigiert weg vor dem Speichern) muss keine verwaisten POSTs hinterlassen — der create-mode Clone-Flow erzeugt erst beim expliziten Speichern einen POST

Accessibility

  • Language picker must be a modal dialog with focus trap and ESC close
  • Draft language controls must stay keyboard accessible
  • Existing-entry language switching via Ctrl+L must remain keyboard accessible and trigger real navigation