docs: capture todo - Translate Messages as a Nuxt i18n JSON editor

This commit is contained in:
Jakub Zych
2026-10-07 18:32:01 +02:00
parent 52eef9b43b
commit b4cc6f88e4
2 changed files with 34 additions and 3 deletions

View File

@@ -0,0 +1,31 @@
---
created: 2026-10-07T16:31:50.525Z
title: Translate Messages as a Nuxt i18n JSON editor
area: sm-translate-plugin
severity: minor
files:
- ../sm-translate-plugin/admin_settings.go
- modules/pact/capabilities.go (SettingsItem.Controller)
- ../examples/golem15-wintercms-starter/plugins/golem15/translate/Plugin.php (registerSettings: messages)
---
## Problem
WinterCMS translate registers two settings entries: Locales and Messages. Messages
manages CMS theme Twig strings such as `{{ 'x.y.z'|_ }}`, stored in a messages table.
SummerCMS apps are headless and have no server-rendered theme strings, so the Go port
(quick 261007-p4y) registers only Locales. The frontend strings live in the Nuxt app's
i18n locale JSON files, which admins currently cannot edit.
## Solution
Integrate Nuxt i18n with the translate plugin as an i18n JSON editor, not a
WinterCMS-style messages table:
- admin screen edits per-locale message keys (nested JSON, one column per enabled
Locale), with missing-key highlighting against the default locale;
- the backend serves the merged messages to the Nuxt app (e.g. a lazy-load endpoint
per locale that @nuxtjs/i18n can fetch), with the bundled JSON as fallback;
- register as a second controller-link settings entry (`pact.SettingsItem.Controller`)
under the Translate category, next to Locales.
Open questions: storage (DB rows vs. versioned JSON), how keys are discovered/synced
from the Nuxt repo, caching and invalidation on edit.