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