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