[agent/codex:gpt-5.4-mini] Read ~/spec/code/core/go/i18n/RFC.md fully. Find ONE feature... #67
3 changed files with 45 additions and 0 deletions
|
|
@ -56,6 +56,11 @@ func NewCoreService(opts ServiceOptions) func(*core.Core) (any, error) {
|
|||
}
|
||||
}
|
||||
|
||||
// Preserve the same init-time locale registration behaviour used by Init().
|
||||
// Core bootstrap should not bypass packages that registered locale files
|
||||
// before the service was constructed.
|
||||
loadRegisteredLocales(svc)
|
||||
|
||||
if opts.Language != "" {
|
||||
if langErr := svc.SetLanguage(opts.Language); langErr != nil {
|
||||
return nil, core.Wrap(langErr, "NewCoreService", core.Sprintf("i18n: invalid language %q", opts.Language))
|
||||
|
|
|
|||
4
go.sum
4
go.sum
|
|
@ -15,10 +15,14 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI
|
|||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
|
||||
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
|
||||
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
||||
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
||||
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
||||
golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w=
|
||||
golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
|
||||
golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
|
||||
golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
|
||||
golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
|
|
|
|||
|
|
@ -111,6 +111,42 @@ func TestInit_LoadsRegisteredLocales(t *testing.T) {
|
|||
assert.Equal(t, "loaded on init", got)
|
||||
}
|
||||
|
||||
func TestNewCoreService_LoadsRegisteredLocales(t *testing.T) {
|
||||
registeredLocalesMu.Lock()
|
||||
savedLocales := registeredLocales
|
||||
savedLoaded := localesLoaded
|
||||
registeredLocales = nil
|
||||
localesLoaded = false
|
||||
registeredLocalesMu.Unlock()
|
||||
|
||||
prev := defaultService.Load()
|
||||
SetDefault(nil)
|
||||
|
||||
defer func() {
|
||||
registeredLocalesMu.Lock()
|
||||
registeredLocales = savedLocales
|
||||
localesLoaded = savedLoaded
|
||||
registeredLocalesMu.Unlock()
|
||||
SetDefault(prev)
|
||||
}()
|
||||
|
||||
fs := fstest.MapFS{
|
||||
"locales/en.json": &fstest.MapFile{
|
||||
Data: []byte(`{"core.registered": "loaded on core bootstrap"}`),
|
||||
},
|
||||
}
|
||||
RegisterLocales(fs, "locales")
|
||||
|
||||
factory := NewCoreService(ServiceOptions{})
|
||||
_, err := factory(nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
svc := Default()
|
||||
require.NotNil(t, svc)
|
||||
got := svc.T("core.registered")
|
||||
assert.Equal(t, "loaded on core bootstrap", got)
|
||||
}
|
||||
|
||||
func TestInit_ReDetectsRegisteredLocales(t *testing.T) {
|
||||
t.Setenv("LANG", "de_DE.UTF-8")
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue