Initial: Tibi-Doku auf Starlight-Basis (Nova-Theme, Docker-Stack, Sync-Skripte)
This commit is contained in:
commit
58502aa3c8
78 files changed
+22860
No files matched your search
@@ -0,0 +1,58 @@
|
||||
---
|
||||
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=<target>; 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
|
||||
Reference in new issue
Block a user