- 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
23 lines
414 B
Go
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
|
|
}
|