4.8 KiB
I18N-04 — Career Profile, Docling Import, CV/Letter Editors and PDF Localisation
Objective
Support European locale output for CVs and cover letters without fabricating, silently translating or overwriting user career data. Preserve previous PDF fidelity, historical versions, templates and RD21 integrity.
Tasks
- Audit Career Profile, CV editor, template captions/placeholders, import review, Docling language detection, sidecar validation, letter builder, output rendering/print pipeline and existing CV language metadata. Define which content is UI (translate) versus user-authored career facts (never automatically translate).
- Each CV/letter independently chooses its output language (e.g. an English CV and Norwegian CV can coexist regardless of interface/job-country settings). Design explicit Translate document workflow only if separately approved, with visible diff, source provenance and per-field human approval; no background rewriting of achievements or qualifications.
- Localise template built-in headings and date conventions; preserve original employer/institution/certification names, accepted per-document overrides and frozen/submitted revisions. Use actual CV language for headings, not browser language when exporting.
- Test licensed fonts and renderers for extended Latin, Greek and Cyrillic; add further scripts when approved. Verify PDF text selectable/extractable, line breaks, hyphenation, page breaks, contact information and multi-page sections. Font licensing must be reviewed; do not attach proprietary fonts.
- For source CVs in multiple languages, evaluate Docling layout/section recognition separately from AI semantic accuracy. Record unsupported languages and ambiguity; don't claim automatic CV parsing works in every European language because UI translations exist. Preserve original snippets and allow correction.
- Validate per-locale date, month names, partial date precision, country-specific address/phone conventions without inventing missing fields. Verify UI switch while editing does not mutate frozen revision or undo stack.
- Add realistic synthetic fixtures spanning occupations (teacher, chef, nurse, electrician, retail, admin, driver, developer), accents, Greek/Cyrillic, long European names and differing qualifications. Review national licensing terms cautiously.
Checkpoints
I18N-04A document locale model; 04B template/editor/import translation; 04C multi-script PDF/fonts; 04D data integrity/real MariaDB/PDF E2E; 04E human PDF qualification package.
Deliverables
docs/i18n/04/CV_LANGUAGE_MODEL.md, IMPORT_LANGUAGE_LIMITATIONS.md, FONT_SCRIPT_MATRIX.md, PDF_FIDELITY.md, MANUAL_REVIEW.md, TEST_RESULTS.md.
Acceptance
An English UI can create a Swedish CV, a Norwegian UI can create an English CV, and switching UI language changes no career fact; historical revisions remain untouched; supported scripts survive PDF; unqualified AI document translation stays disabled.
Execution and evidence rules (mandatory in every stage)
- Read the current repository, Phase 10/product-review/global-jobs/homepage acceptance and the preceding I18N stage handoff. Verify rather than assuming a historical milestone is complete.
- Use the latest accepted development integration baseline and a dedicated stage branch. Never assume
maincontains redesign work. Confirm ancestry, active worktrees and clean state; do not clobber concurrent Codex work. - Inspect existing React/.NET/MariaDB and localisation patterns before introducing packages. Choose based on verified compatibility, not guessed APIs. Preserve old English/Norwegian data and behaviour.
- Work autonomously on approved, safely executable checkpoints. For each: implement, run targeted tests, write evidence, commit and push to the development branch, verify remote HEAD. If Gitea is unreachable, preserve the commit and report publication as BLOCKED. No force push.
- Never merge into
main, trigger production deployment, touch live MariaDB/Docker/Ollama, expose production credentials, buy services, or self-approve a security/linguistic/legal exception. No production data in translation/test fixtures. - Mark each capability IMPLEMENTED, AUTOMATED-TESTED, HUMAN-REVIEWED, ACCEPTED, RELEASED or BLOCKED independently. Preserve evidence of failures and incompleteness. Stage can conditionally complete when documented and authorised; locale publication requires its own gates.
- Never modify source career facts, user-created CV text, employer descriptions, qualification titles or legal content as a side-effect of switching UI language. Human-authored content is not interface chrome.
- On completion give: branch, commit hashes, remote publication state, implemented scope, actual test counts and commands, remaining risks/owner actions, next-stage eligibility and Production NO-GO unless explicitly authorised after all release gates.