1 /* 2 * Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 20 * CA 95054 USA or visit www.sun.com if you need additional information or 21 * have any questions. 22 */ 23 /* 24 @test 25 @summary test ISO639-2 language codes 26 @compile -encoding ascii -source 1.4 -target 1.4 Bug4175998Test.java 27 @run main Bug4175998Test 28 @bug 4175998 29 */ 30 /* 31 * 32 * 33 * (C) Copyright IBM Corp. 1998 - All Rights Reserved 34 * 35 * Portions Copyright 2007 by Sun Microsystems, Inc., 36 * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. 37 * All rights reserved. 38 * 39 * This software is the confidential and proprietary information 40 * of Sun Microsystems, Inc. ("Confidential Information"). You 41 * shall not disclose such Confidential Information and shall use 42 * it only in accordance with the terms of the license agreement 43 * you entered into with Sun. 44 * 45 * The original version of this source code and documentation is 46 * copyrighted and owned by IBM. These materials are provided 47 * under terms of a License Agreement between IBM and Sun. 48 * This technology is protected by multiple US and International 49 * patents. This notice and attribution to IBM may not be removed. 50 * 51 */ 52 53 import java.util.*; 54 import java.io.*; 55 56 /** 57 * Bug4175998Test verifies that the following bug has been fixed: 58 * Bug 4175998 - The java.util.Locale.getISO3Language() returns wrong result for a locale with 59 * language code 'ta'(Tamil). 60 */ 61 public class Bug4175998Test extends LocaleTestFmwk { 62 public static void main(String[] args) throws Exception { 63 new Bug4175998Test().run(args); 64 //generateTables(); //uncomment this to regenerate data tables 65 } 66 67 public void testIt() throws Exception { 68 boolean bad = false; 69 for (int i = 0; i < CODES.length; i++) { 70 final String[] localeCodes = CODES[i]; 71 final Locale l = new Locale(localeCodes[0], ""); 72 final String iso3 = l.getISO3Language(); 73 if (!iso3.equals(localeCodes[1]) /*&& !iso3.equals(localeCodes[2])*/) { 74 logln("Locale("+l+") returned bad ISO3 language code." 75 +" Got '"+iso3+"' instead of '"+localeCodes[1]+"'"/*+" or '"+localeCodes[2]+"'"*/); 76 bad = true; 77 } 78 } 79 if (bad) { 80 errln("Bad ISO3 language codes detected."); 81 } 82 } 83 84 private static final String[][] CODES = { 85 {"pt","por","por"}, 86 {"eu","eus","baq"}, 87 {"ps","pus","pus"}, 88 {"et","est","est"}, 89 {"ka","kat","geo"}, 90 {"es","spa","spa"}, 91 {"eo","epo","epo"}, 92 {"en","eng","eng"}, 93 {"pl","pol","pol"}, 94 {"el","ell","gre"}, 95 {"uz","uzb","uzb"}, 96 {"jv","jav","jav"}, 97 {"ur","urd","urd"}, 98 {"uk","ukr","ukr"}, 99 {"ug","uig","uig"}, 100 {"zu","zul","zul"}, 101 {"ja","jpn","jpn"}, 102 {"or","ori","ori"}, 103 {"om","orm","orm"}, 104 {"zh","zho","chi"}, 105 {"tw","twi","twi"}, 106 {"de","deu","ger"}, 107 {"oc","oci","oci"}, 108 {"za","zha","zha"}, 109 {"tt","tat","tat"}, 110 {"iu","iku","iku"}, 111 {"ts","tso","tso"}, 112 {"it","ita","ita"}, 113 {"tr","tur","tur"}, 114 {"da","dan","dan"}, 115 {"is","isl","ice"}, 116 {"to","ton","ton"}, 117 {"tl","tgl","tgl"}, 118 {"tk","tuk","tuk"}, 119 {"ik","ipk","ipk"}, 120 {"ti","tir","tir"}, 121 {"th","tha","tha"}, 122 {"tg","tgk","tgk"}, 123 {"te","tel","tel"}, 124 {"cy","cym","wel"}, 125 {"ie","ile","ile"}, 126 {"id","ind","ind"}, 127 {"ta","tam","tam"}, 128 {"ia","ina","ina"}, 129 {"cs","ces","cze"}, 130 {"yo","yor","yor"}, 131 {"no","nor","nor"}, 132 {"co","cos","cos"}, 133 {"nl","nld","dut"}, 134 {"yi","yid","yid"}, 135 {"hy","hye","arm"}, 136 {"sw","swa","swa"}, 137 {"ne","nep","nep"}, 138 {"sv","swe","swe"}, 139 {"su","sun","sun"}, 140 {"hu","hun","hun"}, 141 {"na","nau","nau"}, 142 {"sr","srp","scc"}, 143 {"ca","cat","cat"}, 144 {"sq","sqi","alb"}, 145 {"hr","hrv","scr"}, 146 {"so","som","som"}, 147 {"sn","sna","sna"}, 148 {"sm","smo","smo"}, 149 {"sl","slv","slv"}, 150 {"sk","slk","slo"}, 151 {"si","sin","sin"}, 152 {"hi","hin","hin"}, 153 {"my","mya","bur"}, 154 {"sd","snd","snd"}, 155 {"he","heb","heb"}, 156 {"sa","san","san"}, 157 {"mt","mlt","mlt"}, 158 {"ms","msa","may"}, 159 {"ha","hau","hau"}, 160 {"mr","mar","mar"}, 161 {"br","bre","bre"}, 162 {"mo","mol","mol"}, 163 {"bo","bod","tib"}, 164 {"mn","mon","mon"}, 165 {"bn","ben","ben"}, 166 {"ml","mal","mal"}, 167 {"mk","mkd","mac"}, 168 {"xh","xho","xho"}, 169 {"mi","mri","mao"}, 170 {"bi","bis","bis"}, 171 {"bh","bih","bih"}, 172 {"mg","mlg","mlg"}, 173 {"bg","bul","bul"}, 174 {"rw","kin","kin"}, 175 {"be","bel","bel"}, 176 {"ru","rus","rus"}, 177 {"gu","guj","guj"}, 178 {"ba","bak","bak"}, 179 {"ro","ron","rum"}, 180 {"rm","roh","roh"}, 181 {"gn","grn","grn"}, 182 {"az","aze","aze"}, 183 {"ay","aym","aym"}, 184 {"gd","gla","gla"}, 185 {"lv","lav","lav"}, 186 {"lt","lit","lit"}, 187 {"ga","gle","gle"}, 188 {"as","asm","asm"}, 189 {"ar","ara","ara"}, 190 {"wo","wol","wol"}, 191 {"ln","lin","lin"}, 192 {"am","amh","amh"}, 193 {"fy","fry","fry"}, 194 {"af","afr","afr"}, 195 {"qu","que","que"}, 196 {"ab","abk","abk"}, 197 {"la","lat","lat"}, 198 {"aa","aar","aar"}, 199 {"fr","fra","fre"}, 200 {"fo","fao","fao"}, 201 {"fj","fij","fij"}, 202 {"fi","fin","fin"}, 203 {"ky","kir","kir"}, 204 {"ku","kur","kur"}, 205 {"fa","fas","per"}, 206 {"ks","kas","kas"}, 207 {"vo","vol","vol"}, 208 {"ko","kor","kor"}, 209 {"kn","kan","kan"}, 210 {"kk","kaz","kaz"}, 211 {"vi","vie","vie"}, 212 }; 213 214 /* 215 The following code was used to generate the table above from the two ISO standards. 216 It matches the language names (not the codes) from both standards to associate 217 the two and three letter codes. 218 219 private static final String ISO639 = "d:\\temp\\iso639.txt"; 220 private static final String ISO6392 = "d:\\temp\\iso-639-2.txt"; 221 private static void generateTables() { 222 try { 223 BufferedReader ISO639File = new BufferedReader(new FileReader(ISO639)); 224 Hashtable i639 = new Hashtable(); 225 for (String line = ISO639File.readLine(); line != null; line = ISO639File.readLine()) { 226 if (!line.startsWith("#")) { 227 final int ndx = line.indexOf(' '); 228 final String arg1 = line.substring(0, ndx); 229 final int ndx2 = line.indexOf(' ', ndx+1); 230 final String arg2 = line.substring(ndx+1, ndx2 < 0 ? line.length() : ndx2); 231 i639.put(arg1, arg2); 232 } 233 } 234 235 BufferedReader ISO6392File = new BufferedReader(new FileReader(ISO6392)); 236 Hashtable i6392 = new Hashtable(); 237 for (String line = ISO6392File.readLine(); line != null; line = ISO6392File.readLine()) { 238 final int ndx = line.indexOf(' '); 239 final int ndx2 = line.indexOf(' ', ndx+1); 240 int ndx3 = line.indexOf(' ', ndx2+1); 241 if (ndx3 < 0) ndx3 = line.length(); 242 final String arg1 = line.substring(0, ndx); 243 final String arg2 = line.substring(ndx+1, ndx2); 244 final String arg3 = line.substring(ndx2+1, ndx3); 245 i6392.put(arg3, new ISO6392Entry(arg1, arg2)); 246 } 247 248 Enumeration keys = i639.keys(); 249 while (keys.hasMoreElements()) { 250 final Object key = keys.nextElement(); 251 final Object name = i639.get(key); 252 final Object value = i6392.get(name); 253 254 if (value != null) { 255 System.out.print("{"); 256 System.out.print("\""+key+"\","); 257 System.out.print(value); 258 System.out.println("},"); 259 } 260 } 261 } catch (Exception e) { 262 System.out.println(e); 263 } 264 } 265 266 267 private static final class ISO6392Entry { 268 public final String code; 269 public final String name; 270 public ISO6392Entry(String code, String name) { 271 this.code = code; 272 this.name = name; 273 } 274 public String toString() { 275 return "\""+code+"\",\""+name+"\""; 276 } 277 278 } 279 */ 280 281 } 282 283 /* 284 285 data from ftp://dkuug.dk on March 4, 1999 286 verified by http://www.triacom.com/archive/iso639-2.en.html 287 288 iso 639 data 289 aa Afar 290 ab Abkhazian 291 af Afrikaans 292 am Amharic 293 ar Arabic 294 as Assamese 295 ay Aymara 296 az Azerbaijani 297 ba Bashkir 298 be Belarussian 299 bg Bulgarian 300 bh Bihari 301 bi Bislama 302 bn Bengali 303 bo Tibetan 304 br Breton 305 ca Catalan 306 co Corsican 307 cs Czech 308 cy Welsh 309 da Danish 310 de German 311 dz Bhutani 312 el Greek 313 en English 314 eo Esperanto 315 es Spanish 316 et Estonian 317 eu Basque 318 fa Persian 319 fi Finnish 320 fj Fijian 321 fo Faroese 322 fr French 323 fy Frisian 324 ga Irish 325 gd Gaelic 326 gl Galician 327 gn Guarani 328 gu Gujarati 329 ha Hausa 330 he Hebrew 331 hi Hindi 332 hr Croatian 333 hu Hungarian 334 hy Armenian 335 ia Interlingua 336 id Indonesian 337 ie Interlingue 338 ik Inupiak 339 is Icelandic 340 it Italian 341 iu Inuktitut 342 ja Japanese 343 jw Javanese 344 ka Georgian 345 kk Kazakh 346 kl Greenlandic 347 km Cambodian 348 kn Kannada 349 ko Korean 350 ks Kashmiri 351 ku Kurdish 352 ky Kirghiz 353 la Latin 354 ln Lingala 355 lo Laothian 356 lt Lithuanian 357 lv Latvian 358 mg Malagasy 359 mi Maori 360 mk Macedonian 361 ml Malayalam 362 mn Mongolian 363 mo Moldavian 364 mr Marathi 365 ms Malay 366 mt Maltese 367 my Burmese 368 na Nauru 369 ne Nepali 370 nl Dutch 371 no Norwegian 372 oc Occitan 373 om Oromo 374 or Oriya 375 pa Punjabi 376 pl Polish 377 ps Pushto 378 pt Portuguese 379 qu Quechua 380 rm Raeto-Romance 381 rn Kirundi 382 ro Romanian 383 ru Russian 384 rw Kinyarwanda 385 sa Sanskrit 386 sd Sindhi 387 sg Sangho 388 sh Croatian (Serbo) 389 si Sinhalese 390 sk Slovak 391 sl Slovenian 392 sm Samoan 393 sn Shona 394 so Somali 395 sq Albanian 396 sr Serbian 397 ss Siswati 398 st Sesotho 399 su Sundanese 400 sv Swedish 401 sw Swahili 402 ta Tamil 403 te Telugu 404 tg Tajik 405 th Thai 406 ti Tigrinya 407 tk Turkmen 408 tl Tagalog 409 tn Setswana 410 to Tonga 411 tr Turkish 412 ts Tsonga 413 tt Tatar 414 tw Twi 415 ug Uighur 416 uk Ukrainian 417 ur Urdu 418 uz Uzbek 419 vi Vietnamese 420 vo Volapuk 421 wo Wolof 422 xh Xhosa 423 yi Yiddish 424 yo Yoruba 425 za Zhuang 426 zh Chinese 427 zu Zulu 428 429 ISO 639-2 data 430 431 aar aar Afar 432 abk abk Abkhazian 433 ace ace Achinese 434 ach ach Acoli 435 ada ada Adangme 436 afa afa Afro-Asiatic (Other) 437 afh afh Afrihili 438 afr afr Afrikaans 439 aka aka Akan 440 akk akk Akkadian 441 ale ale Aleut 442 alg alg Algonquian languages 443 amh amh Amharic 444 ang ang English-Old (ca. 450-1100) 445 apa apa Apache languages 446 ara ara Arabic 447 arc arc Aramaic 448 arn arn Araucanian 449 arp arp Arapaho 450 art art Artificial (Other) 451 arw arw Arawak 452 asm asm Assamese 453 ath ath Athapascan languages 454 aus aus Australian languages 455 ava ava Avaric 456 ave ave Avestan 457 awa awa Awadhi 458 aym aym Aymara 459 aze aze Azerbaijani 460 bad bad Banda 461 bai bai Bamileke languages 462 bak bak Bashkir 463 bal bal Baluchi 464 bam bam Bambara 465 ban ban Balinese 466 bas bas Basa 467 bat bat Baltic (Other) 468 bej bej Beja 469 bel bel Belarussian 470 bem bem Bemba 471 ben ben Bengali 472 ber ber Berber (Other) 473 bho bho Bhojpuri 474 bih bih Bihari 475 bik bik Bikol 476 bin bin Bini 477 bis bis Bislama 478 bla bla Siksika 479 bnt bnt Bantu (Other) 480 bod tib Tibetan 481 bra bra Braj 482 bre bre Breton 483 btk btk Batak (Indonesia) 484 bua bua Buriat 485 bug bug Buginese 486 bul bul Bulgarian 487 cad cad Caddo 488 cai cai Central-American-Indian (Other) 489 car car Carib 490 cat cat Catalan 491 cau cau Caucasian (Other) 492 ceb ceb Cebuano 493 cel cel Celtic (Other) 494 ces cze Czech 495 cha cha Chamorro 496 chb chb Chibcha 497 che che Chechen 498 chg chg Chagatai 499 chk chk Chuukese 500 chm chm Mari 501 chn chn Chinook-jargon 502 cho cho Choctaw 503 chp chp Chipewyan 504 chr chr Cherokee 505 chu chu Church-Slavic 506 chv chv Chuvash 507 chy chy Cheyenne 508 cmc cmc Chamic languages 509 cop cop Coptic 510 cor cor Cornish 511 cos cos Corsican 512 cpe cpe Creoles-and-pidgins-English-based (Other) 513 cpf cpf Creoles-and-pidgins-French-based (Other) 514 cpp cpp Creoles-and-pidgins-Portuguese-based (Other) 515 cre cre Cree 516 crp crp Creoles-and-pidgins (Other) 517 cus cus Cushitic (Other) 518 cym wel Welsh 519 dak dak Dakota 520 dan dan Danish 521 day day Dayak 522 del del Delaware 523 den den Slave (Athapascan) 524 deu ger German 525 dgr dgr Dogrib 526 din din Dinka 527 div div Divehi 528 doi doi Dogri 529 dra dra Dravidian (Other) 530 dua dua Duala 531 dum dum Dutch-Middle (ca. 1050-1350) 532 dyu dyu Dyula 533 dzo dzo Dzongkha 534 efi efi Efik 535 egy egy Egyptian (Ancient) 536 eka eka Ekajuk 537 ell gre Greek Modern (post 1453) 538 elx elx Elamite 539 eng eng English 540 enm enm English-Middle (1100-1500) 541 epo epo Esperanto 542 est est Estonian 543 eus baq Basque 544 ewe ewe Ewe 545 ewo ewo Ewondo 546 fan fan Fang 547 fao fao Faroese 548 fas per Persian 549 fat fat Fanti 550 fij fij Fijian 551 fin fin Finnish 552 fiu fiu Finno-Ugrian (Other) 553 fon fon Fon 554 fra fre French 555 frm frm French-Middle (ca. 1400-1600) 556 fro fro French-Old (842-ca. 1400) 557 fry fry Frisian 558 ful ful Fulah 559 fur fur Friulian 560 gaa gaa Ga 561 gay gay Gayo 562 gba gba Gbaya 563 gem gem Germanic (Other) 564 gez gez Geez 565 gil gil Gilbertese 566 gdh gae Gaelic 567 gai iri Irish 568 glg glg Gallegan 569 glv glv Manx 570 gmh gmh German-Middle High (ca. 1050-1500) 571 goh goh German-Old High (ca. 750-1050) 572 gon gon Gondi 573 gor gor Gorontalo 574 got got Gothic 575 grb grb Grebo 576 grc grc Greek-Ancient (to 1453) 577 grn grn Guarani 578 guj guj Gujarati 579 gwi gwi Gwich'in 580 hai hai Haida 581 hau hau Hausa 582 haw haw Hawaiian 583 heb heb Hebrew 584 her her Herero 585 hil hil Hiligaynon 586 him him Himachali 587 hin hin Hindi 588 hit hit Hittite 589 hmn hmn Hmong 590 hmo hmo Hiri Motu 591 hrv scr Croatian 592 hun hun Hungarian 593 hup hup Hupa 594 hye arm Armenian 595 iba iba Iban 596 ibo ibo Igbo 597 ijo ijo Ijo 598 iku iku Inuktitut 599 ile ile Interlingue 600 ilo ilo Iloko 601 ina ina Interlingua (International Auxilary Language Association) 602 inc inc Indic (Other) 603 ind ind Indonesian 604 ine ine Indo-European (Other) 605 ipk ipk Inupiak 606 ira ira Iranian (Other) 607 iro iro Iroquoian languages 608 isl ice Icelandic 609 ita ita Italian 610 jaw jav Javanese 611 jpn jpn Japanese 612 jpr jpr Judeo-Persian 613 jrb jrb Judeo-Arabic 614 kaa kaa Kara-Kalpak 615 kab kab Kabyle 616 kac kac Kachin 617 kal kal Kalaallisut 618 kam kam Kamba 619 kan kan Kannada 620 kar kar Karen 621 kas kas Kashmiri 622 kat geo Georgian 623 kau kau Kanuri 624 kaw kaw Kawi 625 kaz kaz Kazakh 626 kha kha Khasi 627 khi khi Khoisan (Other) 628 khm khm Khmer 629 kho kho Khotanese 630 kik kik Kikuyu 631 kin kin Kinyarwanda 632 kir kir Kirghiz 633 kmb kmb Kimbundu 634 kok kok Konkani 635 kom kom Komi 636 kon kon Kongo 637 kor kor Korean 638 kos kos Kosraean 639 kpe kpe Kpelle 640 kro kro Kru 641 kru kru Kurukh 642 kua kua Kuanyama 643 kum kum Kumyk 644 kur kur Kurdish 645 kut kut Kutenai 646 lad lad Ladino 647 lah lah Lahnda 648 lam lam Lamba 649 lao lao Lao 650 lat lat Latin 651 lav lav Latvian 652 lez lez Lezghian 653 lin lin Lingala 654 lit lit Lithuanian 655 lol lol Mongo 656 loz loz Lozi 657 ltz ltz Letzeburgesch 658 lua lua Luba-Lulua 659 lub lub Luba-Katanga 660 lug lug Ganda 661 lui lui Luiseno 662 lun lun Lunda 663 luo luo Luo (Kenya and Tanzania) 664 lus lus Lushai 665 mad mad Madurese 666 mag mag Magahi 667 mah mah Marshall 668 mai mai Maithili 669 mak mak Makasar 670 mal mal Malayalam 671 man man Mandingo 672 map map Austronesian (Other) 673 mar mar Marathi 674 mas mas Masai 675 mdr mdr Mandar 676 men men Mende 677 mga mga Irish-Middle (900-1200) 678 mic mic Micmac 679 min min Minangkabau 680 mis mis Miscellaneous languages 681 mkd mac Macedonian 682 mkh mkh Mon-Khmer (Other) 683 mlg mlg Malagasy 684 mlt mlt Maltese 685 mni mni Manipuri 686 mno mno Manobo languages 687 moh moh Mohawk 688 mol mol Moldavian 689 mon mon Mongolian 690 mos mos Mossi 691 mri mao Maori 692 msa may Malay 693 mul mul Multiple languages 694 mun mun Munda languages 695 mus mus Creek 696 mwr mwr Marwari 697 mya bur Burmese 698 myn myn Mayan languages 699 nah nah Nahuatl 700 nai nai North American Indian (Other) 701 nau nau Nauru 702 nav nav Navajo 703 nbl nbl Ndebele, South 704 nde nde Ndebele, North 705 ndo ndo Ndonga 706 nep nep Nepali 707 new new Newari 708 nia nia Nias 709 nic nic Niger-Kordofanian (Other) 710 niu niu Niuean 711 nld dut Dutch 712 non non Norse, Old 713 nor nor Norwegian 714 nso nso Sohto, Northern 715 nub nub Nubian languages 716 nya nya Nyanja 717 nym nym Nyamwezi 718 nyn nyn Nyankole 719 nyo nyo Nyoro 720 nzi nzi Nzima 721 oci oci Occitan (post 1500) 722 oji oji Ojibwa 723 ori ori Oriya 724 orm orm Oromo 725 osa osa Osage 726 oss oss Ossetic 727 ota ota Turkish, Ottoman (1500-1928) 728 oto oto Otomian languages 729 paa paa Papuan (Other) 730 pag pag Pangasinan 731 pal pal Pahlavi 732 pam pam Pampanga 733 pan pan Panjabi 734 pap pap Papiamento 735 pau pau Palauan 736 peo peo Persian, Old (ca. 600-400 B.C.) 737 phi phi Philippine (Other) 738 phn phn Phoenician 739 pli pli Pali 740 pol pol Polish 741 pon pon Pohnpeian 742 por por Portuguese 743 pra pra Prakrit languages 744 pro pro Provençal, Old (to 1500) 745 pus pus Pushto 746 qaa-qtz qaa-qtz Reserved for local use 747 que que Quechua 748 raj raj Rajasthani 749 rap rap Rapanui 750 rar rar Rarotongan 751 roa roa Romance (Other) 752 roh roh Raeto-Romance 753 rom rom Romany 754 ron rum Romanian 755 run run Rundi 756 rus rus Russian 757 sad sad Sandawe 758 sag sag Sango 759 sah sah Yakut 760 sai sai South American Indian (Other) 761 sal sal Salishan languages 762 sam sam Samaritan Aramaic 763 san san Sanskrit 764 sas sas Sasak 765 sat sat Santali 766 sco sco Scots 767 sel sel Selkup 768 sem sem Semitic (Other) 769 sga sga Irish-Old (to 900) 770 shn shn Shan 771 sid sid Sidamo 772 sin sin Sinhalese 773 sio sio Siouan languages 774 sit sit Sino-Tibetan (Other) 775 sla sla Slavic (Other) 776 slk slo Slovak 777 slv slv Slovenian 778 smi smi Sami languages 779 smo smo Samoan 780 sna sna Shona 781 snd snd Sindhi 782 snk snk Soninke 783 sog sog Sogdian 784 som som Somali 785 son son Songhai 786 sot sot Sotho Southern 787 spa spa Spanish 788 sqi alb Albanian 789 srd srd Sardinian 790 srp scc Serbian 791 srr srr Serer 792 ssa ssa Nilo-Saharan (Other) 793 ssw ssw Swati 794 suk suk Sukuma 795 sun sun Sundanese 796 sus sus Susu 797 sux sux Sumerian 798 swa swa Swahili 799 swe swe Swedish 800 syr syr Syriac 801 tah tah Tahitian 802 tai tai Tai (Other) 803 tam tam Tamil 804 tat tat Tatar 805 tel tel Telugu 806 tem tem Timne 807 ter ter Tereno 808 tet tet Tetum 809 tgk tgk Tajik 810 tgl tgl Tagalog 811 tha tha Thai 812 tig tig Tigre 813 tir tir Tigrinya 814 tiv tiv Tiv 815 tkl tkl Tokelau 816 tli tli Tlingit 817 tmh tmh Tamashek 818 tog tog Tonga (Nyasa) 819 ton ton Tonga (Tonga Islands) 820 tpi tpi Tok Pisin 821 tsi tsi Tsimshian 822 tsn tsn Tswana 823 tso tso Tsonga 824 tuk tuk Turkmen 825 tum tum Tumbuka 826 tur tur Turkish 827 tut tut Altaic 828 tvl tvl Tuvalu 829 twi twi Twi 830 tyv tyv Tuvinian 831 uga uga Ugaritic 832 uig uig Uighur 833 ukr ukr Ukrainian 834 umb umb Umbundu 835 und und Undetermined 836 urd urd Urdu 837 uzb uzb Uzbek 838 vai vai Vai 839 ven ven Venda 840 vie vie Vietnamese 841 vol vol Volapuk 842 vot vot Votic 843 wak wak Wakashan 844 wal wal Walamo 845 war war Waray 846 was was Washo 847 wen wen Sorbian 848 wol wol Wolof 849 xho xho Xhosa 850 yao yao Yao 851 yap yap Yapese 852 yid yid Yiddish 853 yor yor Yoruba 854 ypk ypk Yupik 855 zap zap Zapotec 856 zen zen Zenaga 857 zha zha Zhuang 858 zho chi Chinese 859 znd znd Zande 860 zul zul Zulu 861 zun zun Zuni 862 863 */