added japanese language
[openemr.git] / phpmyadmin / libraries / mysql_charsets.lib.php
blob87610a6fc44936593c93a173378cdce896baf0d8
1 <?php
2 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 /**
4 * Shared code for mysql charsets
6 * @package PhpMyAdmin
7 */
8 if (! defined('PHPMYADMIN')) {
9 exit;
12 /**
13 * Generate charset dropdown box
15 * @param int $type Type
16 * @param null|string $name Element name
17 * @param null|string $id Element id
18 * @param null|string $default Default value
19 * @param bool $label Label
20 * @param int $indent Indent
21 * @param bool $submitOnChange Submit on change
22 * @param bool $displayUnavailable Display unavailable
24 * @return string
26 function PMA_generateCharsetDropdownBox($type = PMA_CSDROPDOWN_COLLATION,
27 $name = null, $id = null, $default = null, $label = true, $indent = 0,
28 $submitOnChange = false, $displayUnavailable = false
29 ) {
30 global $mysql_charsets, $mysql_charsets_descriptions,
31 $mysql_charsets_available, $mysql_collations, $mysql_collations_available;
33 if (empty($name)) {
34 if ($type == PMA_CSDROPDOWN_COLLATION) {
35 $name = 'collation';
36 } else {
37 $name = 'character_set';
41 $return_str = '<select lang="en" dir="ltr" name="'
42 . htmlspecialchars($name) . '"'
43 . (empty($id) ? '' : ' id="' . htmlspecialchars($id) . '"')
44 . ($submitOnChange ? ' class="autosubmit"' : '') . '>' . "\n";
45 if ($label) {
46 $return_str .= '<option value="">'
47 . ($type == PMA_CSDROPDOWN_COLLATION ? __('Collation') : __('Charset'))
48 . '</option>' . "\n";
50 $return_str .= '<option value=""></option>' . "\n";
51 foreach ($mysql_charsets as $current_charset) {
52 if (!$mysql_charsets_available[$current_charset]) {
53 continue;
55 $current_cs_descr
56 = empty($mysql_charsets_descriptions[$current_charset])
57 ? $current_charset
58 : $mysql_charsets_descriptions[$current_charset];
60 if ($type == PMA_CSDROPDOWN_COLLATION) {
61 $return_str .= '<optgroup label="' . $current_charset
62 . '" title="' . $current_cs_descr . '">' . "\n";
63 foreach ($mysql_collations[$current_charset] as $current_collation) {
64 if (!$mysql_collations_available[$current_collation]) {
65 continue;
67 $return_str .= '<option value="' . $current_collation
68 . '" title="' . PMA_getCollationDescr($current_collation) . '"'
69 . ($default == $current_collation ? ' selected="selected"' : '')
70 . '>'
71 . $current_collation . '</option>' . "\n";
73 $return_str .= '</optgroup>' . "\n";
74 } else {
75 $return_str .= '<option value="' . $current_charset
76 . '" title="' . $current_cs_descr . '"'
77 . ($default == $current_charset ? ' selected="selected"' : '') . '>'
78 . $current_charset . '</option>' . "\n";
81 $return_str .= '</select>' . "\n";
83 return $return_str;
86 /**
87 * Generate the charset query part
89 * @param string $collation Collation
91 * @return string
93 function PMA_generateCharsetQueryPart($collation)
95 if (!PMA_DRIZZLE) {
96 list($charset) = explode('_', $collation);
97 return ' CHARACTER SET ' . $charset
98 . ($charset == $collation ? '' : ' COLLATE ' . $collation);
99 } else {
100 return ' COLLATE ' . $collation;
105 * returns collation of given db
107 * @param string $db name of db
109 * @return string collation of $db
111 function PMA_getDbCollation($db)
113 if ($GLOBALS['dbi']->isSystemSchema($db)) {
114 // We don't have to check the collation of the virtual
115 // information_schema database: We know it!
116 return 'utf8_general_ci';
119 $sql = PMA_DRIZZLE
120 ? 'SELECT DEFAULT_COLLATION_NAME FROM data_dictionary.SCHEMAS'
121 . ' WHERE SCHEMA_NAME = \'' . PMA_Util::sqlAddSlashes($db)
122 . '\' LIMIT 1'
123 : 'SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA'
124 . ' WHERE SCHEMA_NAME = \'' . PMA_Util::sqlAddSlashes($db)
125 . '\' LIMIT 1';
126 return $GLOBALS['dbi']->fetchValue($sql);
130 * returns default server collation from show variables
132 * @return string $server_collation
134 function PMA_getServerCollation()
136 return $GLOBALS['dbi']->fetchValue(
137 'SHOW VARIABLES LIKE \'collation_server\'', 0, 1
142 * returns description for given collation
144 * @param string $collation MySQL collation string
146 * @return string collation description
148 function PMA_getCollationDescr($collation)
150 if ($collation == 'binary') {
151 return __('Binary');
153 $parts = explode('_', $collation);
154 if (count($parts) == 1) {
155 $parts[1] = 'general';
156 } elseif ($parts[1] == 'ci' || $parts[1] == 'cs') {
157 $parts[2] = $parts[1];
158 $parts[1] = 'general';
160 $descr = '';
161 switch ($parts[1]) {
162 case 'bulgarian':
163 $descr = __('Bulgarian');
164 break;
165 case 'chinese':
166 if ($parts[0] == 'gb2312' || $parts[0] == 'gbk') {
167 $descr = __('Simplified Chinese');
168 } elseif ($parts[0] == 'big5') {
169 $descr = __('Traditional Chinese');
171 break;
172 case 'ci':
173 $descr = __('case-insensitive');
174 break;
175 case 'cs':
176 $descr = __('case-sensitive');
177 break;
178 case 'croatian':
179 $descr = __('Croatian');
180 break;
181 case 'czech':
182 $descr = __('Czech');
183 break;
184 case 'danish':
185 $descr = __('Danish');
186 break;
187 case 'english':
188 $descr = __('English');
189 break;
190 case 'esperanto':
191 $descr = __('Esperanto');
192 break;
193 case 'estonian':
194 $descr = __('Estonian');
195 break;
196 case 'german1':
197 $descr = __('German') . ' (' . __('dictionary') . ')';
198 break;
199 case 'german2':
200 $descr = __('German') . ' (' . __('phone book') . ')';
201 break;
202 case 'hungarian':
203 $descr = __('Hungarian');
204 break;
205 case 'icelandic':
206 $descr = __('Icelandic');
207 break;
208 case 'japanese':
209 $descr = __('Japanese');
210 break;
211 case 'latvian':
212 $descr = __('Latvian');
213 break;
214 case 'lithuanian':
215 $descr = __('Lithuanian');
216 break;
217 case 'korean':
218 $descr = __('Korean');
219 break;
220 case 'persian':
221 $descr = __('Persian');
222 break;
223 case 'polish':
224 $descr = __('Polish');
225 break;
226 case 'roman':
227 $descr = __('West European');
228 break;
229 case 'romanian':
230 $descr = __('Romanian');
231 break;
232 case 'slovak':
233 $descr = __('Slovak');
234 break;
235 case 'slovenian':
236 $descr = __('Slovenian');
237 break;
238 case 'spanish':
239 $descr = __('Spanish');
240 break;
241 case 'spanish2':
242 $descr = __('Traditional Spanish');
243 break;
244 case 'swedish':
245 $descr = __('Swedish');
246 break;
247 case 'thai':
248 $descr = __('Thai');
249 break;
250 case 'turkish':
251 $descr = __('Turkish');
252 break;
253 case 'ukrainian':
254 $descr = __('Ukrainian');
255 break;
256 case 'unicode':
257 $descr = __('Unicode') . ' (' . __('multilingual') . ')';
258 break;
259 case 'bin':
260 $is_bin = true;
261 // no break; statement here, continuing with 'general' section:
262 case 'general':
263 switch ($parts[0]) {
264 // Unicode charsets
265 case 'ucs2':
266 case 'utf8':
267 case 'utf8mb4':
268 $descr = __('Unicode') . ' (' . __('multilingual') . ')';
269 break;
270 // West European charsets
271 case 'ascii':
272 case 'cp850':
273 case 'dec8':
274 case 'hp8':
275 case 'latin1':
276 case 'macroman':
277 $descr = __('West European') . ' (' . __('multilingual') . ')';
278 break;
279 // Central European charsets
280 case 'cp1250':
281 case 'cp852':
282 case 'latin2':
283 case 'macce':
284 $descr = __('Central European') . ' (' . __('multilingual') . ')';
285 break;
286 // Russian charsets
287 case 'cp866':
288 case 'koi8r':
289 $descr = __('Russian');
290 break;
291 // Simplified Chinese charsets
292 case 'gb2312':
293 case 'gbk':
294 $descr = __('Simplified Chinese');
295 break;
296 // Japanese charsets
297 case 'sjis':
298 case 'ujis':
299 case 'cp932':
300 case 'eucjpms':
301 $descr = __('Japanese');
302 break;
303 // Baltic charsets
304 case 'cp1257':
305 case 'latin7':
306 $descr = __('Baltic') . ' (' . __('multilingual') . ')';
307 break;
308 // Other
309 case 'armscii8':
310 case 'armscii':
311 $descr = __('Armenian');
312 break;
313 case 'big5':
314 $descr = __('Traditional Chinese');
315 break;
316 case 'cp1251':
317 $descr = __('Cyrillic') . ' (' . __('multilingual') . ')';
318 break;
319 case 'cp1256':
320 $descr = __('Arabic');
321 break;
322 case 'euckr':
323 $descr = __('Korean');
324 break;
325 case 'hebrew':
326 $descr = __('Hebrew');
327 break;
328 case 'geostd8':
329 $descr = __('Georgian');
330 break;
331 case 'greek':
332 $descr = __('Greek');
333 break;
334 case 'keybcs2':
335 $descr = __('Czech-Slovak');
336 break;
337 case 'koi8u':
338 $descr = __('Ukrainian');
339 break;
340 case 'latin5':
341 $descr = __('Turkish');
342 break;
343 case 'swe7':
344 $descr = __('Swedish');
345 break;
346 case 'tis620':
347 $descr = __('Thai');
348 break;
349 default:
350 $descr = __('unknown');
351 break;
353 if (!empty($is_bin)) {
354 $descr .= ', ' . __('Binary');
356 break;
357 default: $descr = __('unknown');
359 if (!empty($parts[2])) {
360 if ($parts[2] == 'ci') {
361 $descr .= ', ' . __('case-insensitive');
362 } elseif ($parts[2] == 'cs') {
363 $descr .= ', ' . __('case-sensitive');
367 return $descr;