| var reLoc = regexp.MustCompile(`^[a-z][a-z][a-z]?(?:_[A-Z][A-Z])?\.(.+)`) |
| var mblenTable = map[string]int{ |
| func isEastAsian(locale string) bool { |
| charset := strings.ToLower(locale) |
| r := reLoc.FindStringSubmatch(locale) |
| charset = strings.ToLower(r[1]) |
| if strings.HasSuffix(charset, "@cjk_narrow") { |
| for pos, b := range []byte(charset) { |
| if m, ok := mblenTable[charset]; ok { |
| if max > 1 && (charset[0] != 'u' || |
| strings.HasPrefix(locale, "ja") || |
| strings.HasPrefix(locale, "ko") || |
| strings.HasPrefix(locale, "zh")) { |
| // IsEastAsian return true if the current locale is CJK |
| func IsEastAsian() bool { |
| locale := os.Getenv("LC_CTYPE") |
| locale = os.Getenv("LANG") |
| if locale == "POSIX" || locale == "C" { |
| if len(locale) > 1 && locale[0] == 'C' && (locale[1] == '.' || locale[1] == '-') { |
| return isEastAsian(locale) |