72{
73
74
75
76 ByteStringBuilder sb;
77 char* lang = getenv("LANG");
78 if (!lang) {
79
80 lang = setlocale(LC_CTYPE,
NULL);
81 if (!(lang && strchr(lang, '.'))) {
82
83 lang = setlocale(LC_ALL, "");
84 }
85 }
86 if (lang) {
87 ByteString lang_ = ByteString(lang);
88 ByteString lower = lang_.toLowerCase();
89 if (!lower.contains("utf8")) {
90 if (lower.contains("ko") || lower.contains("kr")) {
91 sb.append("ko_KR");
92 }
93 else {
94 size_t index = lang_.indexOf(L'.');
95 sb.append(index == (size_t)-1 ?
96 lang_ : lang_.substring(0, index));
97 }
98 sb.append(".UTF-8");
99 }
100 }
101 else {
102 sb = "C.UTF-8";
103 }
104
105 if (sb.length() > 0) {
106 ByteString langUTF8 = sb.toByteString();
108 return setenv("LANG", langUTF8, 1) == 0;;
109 }
110 return true;
111}
#define __DCL_TRACE1_N(fmt, arg)