| 14.2.1-translate-plugin |
01 |
i18n |
| translate |
| sm-translate-plugin |
| gormigrate |
| LocaleResolver |
| towel.WithLocale |
| golem15_translate |
|
| phase |
provides |
| 01-framework-kernel-foundation |
compiled party.Register plugins, backpack Publish/Lookup |
|
| phase |
provides |
| 04-cli-scaffolding-i18n-and-mail |
towel.WithLocale request locale bag |
|
| phase |
provides |
| 06-http-middleware-and-openapi |
surf wrap locale() house middleware and BuildRouter |
|
|
| Module git.golem15.com/golem15/sm-translate-plugin, package translate, plugin ID golem15.translate |
| gormigrate tables golem15_translate_locales, golem15_translate_attributes, golem15_translate_indexes, empty golem15_translate_messages |
| Idempotent en/pl Locale seed (en default sort_order 1, pl Polski enabled non-default sort_order 2) |
| classes.Translator context-only Locale(ctx); surf.LocaleResolver published at Boot |
| Optional surf resolver seam: URL prefix rewrite before routing, validated towel.WithLocale; Accept-Language fallback when unpublished |
|
| 14.2.1-02 Translatable API and Locales admin |
| 14.2.1-03 proof host mount |
| 15-journal-plugin |
|
| tokens |
tasks |
commits |
| 29734 |
3 |
3 |
|
e88007aa76 |
b2ce986604 |
f6cf99c00b2d2b1951d2971e574acf0ff724daad |
| added |
patterns |
|
|
| Go translate tables are golem15_translate_*; PHP pin keeps winter_translate_* and is not copied into Go DDL |
| surf.LocaleResolver lives in the framework; the plugin Boot-publishes it; hosts without translate keep Accept-Language |
| Request locale is context-only (KERN-07); locale_manually_set is a flag cookie with value 1 |
|
|
| created |
modified |
| ../sm-translate-plugin/go.mod |
| ../sm-translate-plugin/plugin.go |
| ../sm-translate-plugin/README.md |
| ../sm-translate-plugin/config/config.yaml |
| ../sm-translate-plugin/models/registry.go |
| ../sm-translate-plugin/models/locale.go |
| ../sm-translate-plugin/updates/registry.go |
| ../sm-translate-plugin/updates/202610060001_create_golem15_translate_locales.go |
| ../sm-translate-plugin/updates/202610060002_create_golem15_translate_attributes.go |
| ../sm-translate-plugin/updates/202610060003_create_golem15_translate_indexes.go |
| ../sm-translate-plugin/updates/202610060004_create_golem15_translate_messages.go |
| ../sm-translate-plugin/updates/202610060005_seed_en_pl_locales.go |
| ../sm-translate-plugin/classes/translator.go |
| modules/surf/locale_resolver.go |
| modules/surf/locale_resolver_test.go |
|
| modules/surf/router.go |
| modules/surf/README.md |
| docs/architecture/request-lifecycle.md |
| docs/services/localization.md |
| docs/services/routing.md |
|
|
| Task 2 locked golem15-prefix: Go tables are golem15_translate_locales, golem15_translate_attributes, golem15_translate_indexes, golem15_translate_messages. PHP at SHA 725d547 still uses winter_translate_*; those names are not copied into Go DDL. No rainlab_translate_* tables. No JSON-column storage. |
| Sibling plugin go.mod replaces the framework with ../summercms.go so isolated go test in the D-16 checkout passes; a host mount supplies its own go.work replace. |
|
| Squashed gormigrate files named 202610060001_create_golem15_translate_* through 005 seed; never AutoMigrate |
| Translator.Rewrite strips an enabled first path segment before ServeMux; Resolve order is URL, principal, remembered cookie, cookie-gated Accept-Language, default |
| surf stores app on Router at BuildRouter and Lookup[LocaleResolver] without importing the plugin |
|
| D-01 |
| D-02 |
| D-03 |
| D-04 |
| D-07 |
| D-08 |
| D-10 |
| D-12 |
| D-15 |
| D-16 |
|
| id |
description |
verification |
human_judgment |
| D1 |
Compiled sm-translate-plugin module with ID golem15.translate publishes surf.LocaleResolver at Boot |
| kind |
ref |
status |
| unit |
sm-translate-plugin#TestPluginID |
pass |
|
| kind |
ref |
status |
| other |
go -C ../sm-translate-plugin vet ./... && go -C ../sm-translate-plugin test ./... -short -count=1 |
pass |
|
|
false |
|
| id |
description |
verification |
human_judgment |
| D2 |
Four golem15_translate_* tables plus empty messages and idempotent en/pl seed via gormigrate |
| kind |
ref |
status |
| other |
rg golem15_translate_ updates/202610060001..004; seed file has English/Polski and no Deutsch |
pass |
|
|
false |
|
| id |
description |
verification |
human_judgment |
| D3 |
Optional surf LocaleResolver seam writes a validated code with towel.WithLocale and keeps Accept-Language when unpublished |
| kind |
ref |
status |
| unit |
modules/surf#TestLocaleResolverWritesValidatedCodeAndStripsPrefix |
pass |
|
| kind |
ref |
status |
| unit |
modules/surf#TestLocaleAbsentResolverKeepsAcceptLanguage |
pass |
|
| kind |
ref |
status |
| other |
go vet ./modules/surf/... && go test ./modules/surf -short -count=1 |
pass |
|
|
false |
|
| id |
description |
verification |
human_judgment |
| D4 |
PHP translate tree at SHA 725d547 is unchanged |
| kind |
ref |
status |
| other |
git -C /media/nvme/dev/golem15/fonoteka/plugins/golem15/translate status --short (empty) and rev-parse HEAD |
pass |
|
|
false |
|
|
16min |
2026-10-06 |
complete |