[agent/codex:gpt-5.4-mini] Read ~/spec/code/core/go/i18n/RFC.md fully. Find features de... #146

Merged
Virgil merged 1 commit from agent/read---spec-code-core-go-i18n-rfc-md-ful into dev 2026-04-02 07:05:07 +00:00
2 changed files with 32 additions and 1 deletions

View file

@ -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 == "" {

View file

@ -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) {