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 */