76{
77
78
79
80
81
82
83
84
85
86
87
88
89 ByteStringBuilder sb;
90 char* lang = getenv("LANG");
91 if (!lang) {
92
93 lang = setlocale(LC_CTYPE,
NULL);
94 if (!(lang && strchr(lang, '.'))) {
95
96 lang = setlocale(LC_ALL, "");
97 }
98 }
99 if (lang) {
100 ByteString lang_ = ByteString(lang);
101 ByteString lower = lang_.toLowerCase();
102 if (!lower.contains("utf8")) {
103 if (lower.contains("ko") || lower.contains("kr")) {
104 sb.append("ko_KR");
105 }
106 else {
107 size_t index = lang_.indexOf(L'.');
108 sb.append(index == (size_t) -1 ?
109 lang_ : lang_.substring(0, index));
110 }
111 sb.append(".UTF-8");
112 }
113 }
114 else {
115 sb = "C.UTF-8";
116 }
117
118 setenv("CLIENT_LOCALE", "en_US.UTF8", 0);
119 setenv("NLS_LANG", "AMERICAN_AMERICA.UTF8", 0);
120
121 if (sb.length() > 0) {
122 ByteString langUTF8 = sb.toByteString();
124 return setenv("LANG", langUTF8, 1) == 0;;
125 }
126 return true;
127}
#define __DCL_TRACE1_N(fmt, arg)