Accept LC_CTYPE without country/language codes (fixes #103)

This commit is contained in:
Marcin Kulik
2015-05-25 18:33:41 +02:00
parent e745206ea0
commit 1e2ddf018c
2 changed files with 18 additions and 3 deletions

View File

@@ -4,14 +4,29 @@ import "strings"
var usAscii = "US-ASCII" var usAscii = "US-ASCII"
func GetLocaleCharset(env map[string]string) string { func extractCharset(locale, defaultCharset string) string {
locale := FirstNonBlank(env["LC_ALL"], env["LC_CTYPE"], env["LANG"])
parts := strings.Split(locale, ".") parts := strings.Split(locale, ".")
if len(parts) == 2 { if len(parts) == 2 {
return parts[1] return parts[1]
} }
return defaultCharset
}
func GetLocaleCharset(env map[string]string) string {
if env["LC_ALL"] != "" {
return extractCharset(env["LC_ALL"], usAscii)
}
if env["LC_CTYPE"] != "" {
return extractCharset(env["LC_CTYPE"], env["LC_CTYPE"])
}
if env["LANG"] != "" {
return extractCharset(env["LANG"], usAscii)
}
return usAscii return usAscii
} }

View File

@@ -19,7 +19,7 @@ func TestGetLocaleCharset(t *testing.T) {
{"", "", "pl_PL.ISO-8859-2", "ISO-8859-2"}, {"", "", "pl_PL.ISO-8859-2", "ISO-8859-2"},
{"", "", "", "US-ASCII"}, {"", "", "", "US-ASCII"},
{"UTF-8", "pl_PL.ISO-8859-1", "pl_PL.ISO-8859-2", "US-ASCII"}, {"UTF-8", "pl_PL.ISO-8859-1", "pl_PL.ISO-8859-2", "US-ASCII"},
{"", "ISO-8859-1", "pl_PL.ISO-8859-2", "US-ASCII"}, {"", "ISO-8859-1", "pl_PL.ISO-8859-2", "ISO-8859-1"},
{"", "", "ISO-8859-2", "US-ASCII"}, {"", "", "ISO-8859-2", "US-ASCII"},
} }