Files
jobtrackingapp/docs/i18n/00/SURFACE_INVENTORY.md
T

3.9 KiB

Surface inventory and message accounting

All rows need a source-bound contextual census before I18N-00 acceptance. Existing-catalogue inventory is in MESSAGE_INVENTORY.json; a non-catalogue literal inventory is still PENDING and no LITERAL_CANDIDATES.json was produced. This is not a 100% coverage claim. Namespace assignments remain provisional until caller review; translator context cannot be inferred safely from key names alone. The AST inventory identifies syntactically named t calls, not symbol-resolved calls; context fields explicitly remain pending.

Surface / proposed namespace Source owner / inspection target Content boundary and required evidence
Account, onboarding, recovery / auth views LoginPage, ForgotPasswordPage, ResetPasswordPage, VerifyEmailPage; AuthController Forms, ARIA, errors, consent, email templates, multi-device hydration; preserve token URLs
Dashboard, navigation, mobile / app App routing, dashboard components Hidden/empty/loading/error states, keyboard labels, tooltips and layout expansion
Jobs, discovery, applications / jobs JobDiscoveryPage, ApplicationWorkspacePage; JobPipeline Translate controlled status labels, never stored identity/status codes or original advertisements
Career facts, imports / career CareerProfilePage, career/CvImportReview, CvImportMappingEditor; CareerProfileService; Python app.py Original facts and uncertainty remain; parser/script quality separate from UI coverage
CV editor, templates, letters / documents CvBuilderEditor, DocumentsPage; ThemedCvRenderer, CoverLetterDocumentRenderer, ApplicationAssetsService Output locale independent; headings, dates, filename labels; preserve null-as-inherit and JobApplication.Version
PDF, public CV / exports PublicCvPage, PlaywrightCvPdfExporter, CvDocumentFonts Font licence/glyph matrix, selectable text, physical print, frozen snapshots and public access
Email, inbox, reminders / communications CorrespondenceInboxPage, GmailReviewPage, SmtpEmailSender, FollowUpReminderHostedService User correspondence is private content; subject/preheader/plain/HTML copy and queued locale policy
Settings, linked accounts / settings ConnectedAccountsPage, EmailProviderConnections Provider names stay proper nouns; OAuth errors and cancellation need usable fallback
Billing, subscriptions / billing StripeBillingGateway, entitlement UI Amount and currency invariant; legal/tax wording needs qualified approval
Admin and operations / admin AdminUsersPage, AdminSystemPage, AdminProcessingPage, AdminAuditPage, OperationsPage; OperationEventLog Stable diagnostic codes; localized presentation without multilingual log parsing or PII leaks
Analytics, comparisons / analytics AnalyticsPage, OfferComparisonPage Plurals, dates, currency and accessible chart/table labels
Marketing, SEO, legal / public LandingPage, RouteErrorPage, NotFoundPage; future Launch Site No locale claims, hreflang or indexing for draft pages; owner mockup gate untouched
Backend/API/queues / errors Controllers, UserNotificationStore, AiOperationQueue, CvProcessingQueue Stable code plus typed parameters; UTC storage; deterministic queue-recipient locale
Python/AI / processing tools/summarizer/app.py Machine codes vs user text, validation and document-language metadata; no live-model qualification

For each required message record: stable ID, namespace, exact source, source hash/line, all callers, English text, context/screenshot, typed placeholders, plural/select variants, sensitivity, owner, translator and independent review state. Sensitive values are runtime parameters, never translation exports. Static public UI text is eligible; names, CV facts, messages, tokens, job ads and employer claims are not automatically translated. Existing flat keys remain stable through migration; do not bulk rename for aesthetics.