Files
summercms/phrasebook/lang.go
Jakub Zych c87148a34f feat(10-02): backend strings, controller messages and declarative toolbar
- phrasebook ships the backend::lang admin strings (pl, en) with CLDR
  plural maps, loads them as namespace backend, applies
  pact.HasLangOverrides trees (lang/<locale>/<namespace>/<group>.yaml)
  after every namespace, and fails activation when a backend key cannot
  convert to plural forms
- Translator.Forms, Bundle, Resolved and Has serve keys as CLDR form maps
- Public GET /lang returns every backend::lang key for the request
  locale over the fallback locale, Cache-Control no-cache
- config_list, config_form and config_relation accept a strict messages
  block; omitted keys take framework defaults, schemas serve every message
  as CLDR forms, and activation fails on a missing phrase key
- toolbar.buttons is an ordered [create, delete] list; the Winter string
  form, duplicates, unknown actions and delete without showCheckboxes fail
  at boot, and create is dropped when the controller has no form
- Form schema serves the raw Winter redirects; scaffold emits the list
  syntax; form and relation schema routes are typed in the admin OpenAPI
2026-09-27 16:16:32 +02:00

23 lines
414 B
Go

package phrasebook
import (
"embed"
"io/fs"
)
//go:embed lang
var systemLangFS embed.FS
//go:embed backend/lang
var backendLangFS embed.FS
// backendLang is the framework admin string tree (D-20), laid out as
// lang/<locale>/lang.yaml so its keys resolve as backend::lang.<group>.<key>.
func backendLang() fs.FS {
sub, err := fs.Sub(backendLangFS, "backend")
if err != nil {
panic(err)
}
return sub
}