[agent/codex:gpt-5.4-mini] Read ~/spec/code/core/go/i18n/RFC.md fully. Find features de... #146
2 changed files with 32 additions and 1 deletions
19
localise.go
19
localise.go
|
|
@ -114,7 +114,12 @@ func CurrentPluralCategory(n int) PluralCategory {
|
|||
}
|
||||
|
||||
func detectLanguage(supported []language.Tag) string {
|
||||
for _, langEnv := range []string{os.Getenv("LC_ALL"), os.Getenv("LC_MESSAGES"), os.Getenv("LANG")} {
|
||||
for _, langEnv := range []string{
|
||||
os.Getenv("LC_ALL"),
|
||||
firstLocaleFromList(os.Getenv("LANGUAGE")),
|
||||
os.Getenv("LC_MESSAGES"),
|
||||
os.Getenv("LANG"),
|
||||
} {
|
||||
if langEnv == "" {
|
||||
continue
|
||||
}
|
||||
|
|
@ -145,6 +150,18 @@ func detectLanguageFromEnv(langEnv string, supported []language.Tag) string {
|
|||
return bestMatch.String()
|
||||
}
|
||||
|
||||
func firstLocaleFromList(langList string) string {
|
||||
if langList == "" {
|
||||
return ""
|
||||
}
|
||||
for _, lang := range core.Split(langList, ":") {
|
||||
if trimmed := core.Trim(lang); trimmed != "" {
|
||||
return trimmed
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func normalizeLanguageTag(lang string) string {
|
||||
lang = core.Trim(lang)
|
||||
if lang == "" {
|
||||
|
|
|
|||
|
|
@ -279,6 +279,20 @@ func TestDetectLanguage_SkipsInvalidHigherPriorityLocale(t *testing.T) {
|
|||
assert.Equal(t, "fr", result, "invalid LC_ALL should not block a valid lower-priority locale")
|
||||
}
|
||||
|
||||
func TestDetectLanguage_PrefersLanguageList(t *testing.T) {
|
||||
t.Setenv("LANGUAGE", "fr_FR.UTF-8:de_DE.UTF-8")
|
||||
t.Setenv("LANG", "en_US.UTF-8")
|
||||
|
||||
supported := []language.Tag{
|
||||
language.AmericanEnglish,
|
||||
language.French,
|
||||
language.German,
|
||||
}
|
||||
|
||||
result := detectLanguage(supported)
|
||||
assert.Equal(t, "fr", result, "LANGUAGE should be considered before LANG")
|
||||
}
|
||||
|
||||
// --- Mode.String() ---
|
||||
|
||||
func TestMode_String_Good(t *testing.T) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue