https://wayneprecht.org/wiki3/api.php?action=feedcontributions&user=Wprecht&feedformat=atom
Wayne's Dusty Box of Words - User contributions [en]
2024-03-28T18:21:15Z
User contributions
MediaWiki 1.39.1
https://wayneprecht.org/wiki3/index.php?title=Woodworking&diff=2489
Woodworking
2023-08-28T20:11:50Z
<p>Wprecht: Update portfolio link and text</p>
<hr />
<div>[[File:20081001-Bowsaw-1589.jpg|350px|right|A Cabinetmaker, Nuremberg, Germany (1589)]] I have had a lifelong interest in woodworking. It's been a long and sometimes winding road: gathering tools, equipment, wood, and most importantly, skills. I would describe myself as an amateur professional hobbyist woodworker. Amateur in the fact I have not had any formal training in woodworking. It's mostly been trial and error, researching in books, magazines, the internet, antique shops, and furniture auctions. I am professional in that I sell what I make and have a stable client base of repeat customers, though it's not my "day job." I'm a hobbyist because I started this as therapy for myself from my IT career.<br />
<br />
A fairly small shop still constrains me, but I can make most of the things on my to-do list now.<br />
<br />
== Direction ==<br />
My interest is in 15<sup>th</sup> Century to the early 20<sup>th</sup> Century Anglo-American furniture, woodworking tools, and techniques.<br />
<br />
I know; this covers a pretty wide range. But, as you'll see, woodworking tools changed very little from Roman times to the late 18th Century. The quality of steel (steel at all) improved over time, and the design aesthetic certainly evolved, but the kit of an 18<sup>th</sup>-century American cabinetmaker would be completely familiar to the medieval cabinetmaker.<br />
<br />
For those of you coming here to see my SCA work specifically, know there's a fair bit of later stuff. I'll label the sections to make it easier to find. But, my house is slowly being furnished with Arts & Crafts and Shaker-style furniture, so there's also some support for those activities.<br />
<br />
== Links ==<br />
* '''SCA Projects, Documentation, and Articles'''<br />
** A&S Project [[Documentation]]<br />
*** 15<sup>th</sup> Century [[Ambry]] Project<br />
*** Medieval [[Folding Chairs]] Research Project<br />
** Pre-Industrial [[Hand Tool Research]] (from Antiquity to the 18<sup>th</sup> Century)<br />
**[[Essays]] on woodworking (''mostly'' SCA-related, but aren't specific project documentation)<br />
* '''Woodworking & Historical Furniture Articles, References, and Research Information'''<br />
** Random Collection of [[Woodworking Knowledgebase|Woodworking]] Articles and Links<br />
** Selected [[Bibliography]] of useful furniture references (in progress)<br />
** [[Chemistry in the Workshop]] (cleaning old tools/furniture and making finishes)<br />
** [[American Period Furniture Online Resources]]<br />
* '''Project Portfolio and Woodworking Bio'''<br />
** My Project [https://www.wayneprecht.org/blogs/readings/?page_id=423 Portfolio] (a Google album containing both SCA and modern projects)<br />
** My woodworking [[History]]<br />
** My woodworking [[Education]]<br />
* '''My Vintage Woodworking Tool Resale Business'''<br />
**[[Tool Identification]] References (Late 18<sup>th</sup> Century to Mid-20<sup>th</sup> Century)<br />
** My eBay '''Vintage Tool [https://stores.ebay.com/dukegsvintagetoolemporium Store]'''<br />
* '''Custom / Commissioned Woodworking'''<br />
** [https://www.etsy.com/shop/DukeGWoodCrafts My Esty Store]<br />
<br />
[[Category:Woodworking]]</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=17th_Century_American_Furnituremaking&diff=2488
17th Century American Furnituremaking
2022-04-18T16:49:06Z
<p>Wprecht: /* Technical or How-To Books */</p>
<hr />
<div><br />
== Tools for 18th and 19th Century ==<br />
;'''Jay Gaynor and Nancy Hagedorn'''<br />
:Tools: Working Wood in Eighteenth Century America (1993)<br />
<br />
;'''William Goodman'''<br />
:The History of Woodworking Tools (1964)<br />
<br />
;'''Henry Mercer'''<br />
:American Carpenter's Tools (1929; reprinted 1960)<br />
<br />
;'''R.A. Salamon'''<br />
:Dictionary of Tools Used in Woodworking and Allied Trades, c. 1700-1970 (1964)<br />
<br />
== Material Culture ==<br />
;'''Victor Chinnery'''<br />
The canonical reference for English Oak furniture from the 15th Century onward. There's a recent second edition and it's worth the extra cost to get that version though there's nothing wrong with the first one if that's what you can get.<br />
<br />
:''Oak Furniture: The British Tradition 2nd Ed.'' (2016)<br />
<br />
;'''Albert Cummings'''<br />
:The Framed Houses of Massachusetts Bay (1979)<br />
<br />
;'''Wallace Nutting'''<br />
The canonical visual reference of early American furniture. It's gone through various printings and some are better than others when it comes to the clarity of the photos.<br />
<br />
:''Furniture of the Pilgrim Century 2 volumes'' (1924, reprint 1965)<br />
<br />
;'''Timothy Rieman and Jean Burks'''<br />
:''The Shaker Furniture Handbook'' (2004)<br />
<br />
;'''Robert F Trent and Jonathan Fairbanks'''<br />
Hard to find, supposed to be excellent, we'll see. One Day.<br />
<br />
:''New England Begins'' (1982)<br />
<br />
== Technical or How-To Books ==<br />
<br />
;'''Jennie Alexander'''<br />
Alexander and Peter Follansbee did much original forensic woodworking examining surviving joined furniture and attempting to reproduce the items not just visually, but deduce the tooling and techniques. The third edition completed after Alexander's death by Peter and others is the culmination of decades of research and well worth reading.<br />
:''[https://lostartpress.com/collections/books/products/make-a-chair-from-a-tree Make a Chair from a Tree 3rd Ed.]'' (2021)<br />
<br />
;'''Peter Follansbee'''<br />
Where Alexander is known for his chairs, Peter is best known for his joined furniture, especially stools, chests and boxes carved in the Mannerist style of 17th Century Devonshire/New England. This book is an excellent introduction to the joiner's trade and the construction and decoration of 17th Century furniture.<br />
:''[https://lostartpress.com/collections/books/products/joiners-work Joiner's Work]'' (2018)<br />
<br />
;'''Peter Galbert'''<br />
If Windsor chairs are your thing, this is the only book you need. Galbert is a master craftsman turning out amazing chairs. He's also a gifted teacher and illustrator. This book is easily the most attractive and well-designed book I have ever seen on woodworking. There are literally 100s of drawings illuminating every step of the chair making process. Even though Windsor chairs are not my thing, I found this an excellent read.<br />
:''[https://lostartpress.com/collections/books/products/chairmakers-notebook Chairmaker's Notebook]'' (2018)<br />
<br />
;'''Charles Hayward'''<br />
Charles Hayward was the longtime editor of the UK magazine The Woodworker and a resource of woodworking information. His Woodwork Joints book is excellent and the collection of editorial material assembled by Lost Art Press is a treasure trove of information.<br />
* ''Woodwork Joints'' (1970)<br />
* [https://lostartpress.com/search?type=product%2Cpage&q=hayward LAP Collection]<br />
<br />
;'''Joseph Moxon'''<br />
Moxon wrote the earliest known treatise on woodworking in English and stand as a foundational text in many ways. Not the easiest read in the original, but the LAP editions are worth reading.<br />
:''Mechanick Exercises: or the Doctrine of Handy-Works'' (1703)<br />
* Entire original text (in PDF) from [https://babel.hathitrust.org/cgi/pt?id=mdp.39015028306002&view=1up&seq=7 UMich]<br />
* LAP reprinted the section on joinery with commentary: ''[https://lostartpress.com/collections/books/products/artofjoinery The Art of Joinery, Revised]'' (2013)<br />
* LAP will release a cleaned up reprint of the whole thing in 2022<br />
<br />
;'''Roy Underhill'''<br />
Roy Underhill, former Master Carpenter @ Williamsburg and longtime fixture on PBS's The Woodwright's Workshop, explored all facets of pre-industrial and vernacular woodworking over the 30+ year run of his show. He has published 6 related books, the first 5 are companions to the show, the last is more of a collected wisdom volume. Any of them are worth having.<br />
<br />
* ''[https://uncpress.org/woodwright/ The Woodwright's Shop]'' (1981)<br />
* ''[https://uncpress.org/woodwright/ The Woodwright's Companion]'' (1983)<br />
* ''[https://uncpress.org/woodwright/ The Woodwright's Workbook]'' (1986)<br />
* Also available as a 3 in 1 eBook (2011)<br />
<br />
* ''[https://uncpress.org/woodwright/ The Woodwright's Apprentice]'' (1996)<br />
* ''[https://uncpress.org/woodwright/ The Woodwright's Eclectic Workshop]'' (1991)<br />
* ''[https://uncpress.org/woodwright/ The Woodwright's Guide]'' (2008)<br />
* These available as a 3 in 1 eBook (2011)<br />
<br />
;'''Drew Langsner'''<br />
Drew along with his wife ran The Country Workshop in rural North Carolina for over 30 years and held classes on all sorts of green wooding and country craft. If you had to pick just one book, choose the 2021 Country Woodcraft volume.<br />
<br />
* ''[http://drewlangsner.com/Purchase_Books.html The Chairmaker's Workshop]'' (1997)<br />
* ''[https://lostartpress.com/collections/books/products/country-woodcraft-then-now Country Woodcraft: Then & Now]'' (2021)<br />
* ''[http://drewlangsner.com/Purchase_Books.html Green Woodworking: A Hands-On Approach, 3rd Ed.]'' (2013)<br />
<br />
== Shop Life ==<br />
<br />
;'''Charles Hummel'''<br />
:''With Hammer in Hand'' (1968)<br />
<br />
;'''Walter Rose'''<br />
:''The Village Carpenter'' (1937)<br />
<br />
;'''George Sturt'''<br />
:''The Wheelwrights's Shop'' (1923)<br />
<br />
;'''Robert Tarule'''<br />
Read my blog post review [https://www.wayneprecht.org/blogs/readings/?p=711 here].<br />
:''The Artisan of Ipswitch'' (2012)</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=17th_Century_American_Furnituremaking&diff=2487
17th Century American Furnituremaking
2022-04-18T16:38:47Z
<p>Wprecht: /* Technical or How-To Books */</p>
<hr />
<div><br />
== Tools for 18th and 19th Century ==<br />
;'''Jay Gaynor and Nancy Hagedorn'''<br />
:Tools: Working Wood in Eighteenth Century America (1993)<br />
<br />
;'''William Goodman'''<br />
:The History of Woodworking Tools (1964)<br />
<br />
;'''Henry Mercer'''<br />
:American Carpenter's Tools (1929; reprinted 1960)<br />
<br />
;'''R.A. Salamon'''<br />
:Dictionary of Tools Used in Woodworking and Allied Trades, c. 1700-1970 (1964)<br />
<br />
== Material Culture ==<br />
;'''Victor Chinnery'''<br />
The canonical reference for English Oak furniture from the 15th Century onward. There's a recent second edition and it's worth the extra cost to get that version though there's nothing wrong with the first one if that's what you can get.<br />
<br />
:''Oak Furniture: The British Tradition 2nd Ed.'' (2016)<br />
<br />
;'''Albert Cummings'''<br />
:The Framed Houses of Massachusetts Bay (1979)<br />
<br />
;'''Wallace Nutting'''<br />
The canonical visual reference of early American furniture. It's gone through various printings and some are better than others when it comes to the clarity of the photos.<br />
<br />
:''Furniture of the Pilgrim Century 2 volumes'' (1924, reprint 1965)<br />
<br />
;'''Timothy Rieman and Jean Burks'''<br />
:''The Shaker Furniture Handbook'' (2004)<br />
<br />
;'''Robert F Trent and Jonathan Fairbanks'''<br />
Hard to find, supposed to be excellent, we'll see. One Day.<br />
<br />
:''New England Begins'' (1982)<br />
<br />
== Technical or How-To Books ==<br />
<br />
;'''Jennie Alexander'''<br />
Alexander and Peter Follansbee did much original forensic woodworking examining surviving joined furniture and attempting to reproduce the items not just visually, but deduce the tooling and techniques. The third edition completed after Alexander's death by Peter and others is the culmination of decades of research and well worth reading.<br />
:''Make a Chair from a Tree 3rd Ed.'' (2021)<br />
<br />
;'''Peter Follansbee'''<br />
Where Alexander is known for his chairs, Peter is best known for his joined furniture, especially stools, chests and boxes carved in the Mannerist style of 17th Century Devonshire/New England. This book is an excellent introduction to the joiner's trade and the construction and decoration of 17th Century furniture.<br />
:''Joiner's Work'' (2018)<br />
<br />
;'''Peter Galbert'''<br />
If Windsor chairs are your thing, this is the only book you need. Galbert is a master craftsman turning out amazing chairs. He's also a gifted teacher and illustrator. This book is easily the most attractive and well-designed book I have ever seen on woodworking. There are literally 100s of drawings illuminating every step of the chair making process. Even though Windsor chairs are not my thing, I found this an excellent read.<br />
:''Chairmaker's Notebook'' (2018)<br />
<br />
;'''Charles Hayward'''<br />
Charles Hayward was the longtime editor of the UK magazine The Woodworker and a resource of woodworking information. His Woodwork Joints book is excellent and the collection of editorial material assembled by Lost Art Press is a treasure trove of information.<br />
<br />
- ''Woodwork Joints'' (1970)<br />
- LAP Collection<br />
<br />
;'''Joseph Moxon'''<br />
Moxon wrote the earliest known treatise on woodworking in English and stand as a foundational text in many ways. Not the easiest read in the original, but the LAP editions are worth reading.<br />
:''Mechanick Exercises: or the Doctrine of Handy-Works'' (1703)<br />
<br />
Entire original text (in PDF) from UMich<br />
<br />
LAP reprinted the section on joinery with commentary: The Art of Joinery, Revised (2013)<br />
<br />
LAP will release a cleaned up reprint of the whole thing in 2022<br />
<br />
;'''Roy Underhill'''<br />
Roy Underhill, former Master Carpenter @ Williamsburg and longtime fixture on PBS's The Woodwright's Workshop, explored all facets of pre-industrial and vernacular woodworking over the 30+ year run of his show. He has published 6 related books, the first 5 are companions to the show, the last is more of a collected wisdom volume. Any of them are worth having.<br />
<br />
- ''The Woodwright's Shop'' (1981)<br />
- ''The Woodwright's Companion'' (1983)<br />
- ''The Woodwright's Workbook'' (1986)<br />
- Also available as a 3 in 1 eBook (2011)<br />
<br />
- ''The Woodwright's Apprentice'' (1996)<br />
- ''The Woodwright's Eclectic Workshop'' (1991)<br />
- ''The Woodwright's Guide'' (2008)<br />
- These available as a 3 in 1 eBook (2011)<br />
<br />
;'''Drew Langsner'''<br />
Drew along with his wife ran The Country Workshop in rural North Carolina for over 30 years and held classes on all sorts of green wooding and country craft. If you had to pick just one book, choose the 2021 Country Woodcraft volume.<br />
<br />
- ''The Chairmaker's Workshop'' (1997)<br />
- ''Country Woodcraft: Then & Now'' (2021)<br />
- ''Green Woodworking: A Hands-On Approach, 3rd Ed.'' (2013)<br />
<br />
== Shop Life ==<br />
<br />
;'''Charles Hummel'''<br />
:''With Hammer in Hand'' (1968)<br />
<br />
;'''Walter Rose'''<br />
:''The Village Carpenter'' (1937)<br />
<br />
;'''George Sturt'''<br />
:''The Wheelwrights's Shop'' (1923)<br />
<br />
;'''Robert Tarule'''<br />
Read my blog post review [https://www.wayneprecht.org/blogs/readings/?p=711 here].<br />
:''The Artisan of Ipswitch'' (2012)</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=17th_Century_American_Furnituremaking&diff=2486
17th Century American Furnituremaking
2022-04-18T16:34:27Z
<p>Wprecht: /* Shop Life */</p>
<hr />
<div><br />
== Tools for 18th and 19th Century ==<br />
;'''Jay Gaynor and Nancy Hagedorn'''<br />
:Tools: Working Wood in Eighteenth Century America (1993)<br />
<br />
;'''William Goodman'''<br />
:The History of Woodworking Tools (1964)<br />
<br />
;'''Henry Mercer'''<br />
:American Carpenter's Tools (1929; reprinted 1960)<br />
<br />
;'''R.A. Salamon'''<br />
:Dictionary of Tools Used in Woodworking and Allied Trades, c. 1700-1970 (1964)<br />
<br />
== Material Culture ==<br />
;'''Victor Chinnery'''<br />
The canonical reference for English Oak furniture from the 15th Century onward. There's a recent second edition and it's worth the extra cost to get that version though there's nothing wrong with the first one if that's what you can get.<br />
<br />
:''Oak Furniture: The British Tradition 2nd Ed.'' (2016)<br />
<br />
;'''Albert Cummings'''<br />
:The Framed Houses of Massachusetts Bay (1979)<br />
<br />
;'''Wallace Nutting'''<br />
The canonical visual reference of early American furniture. It's gone through various printings and some are better than others when it comes to the clarity of the photos.<br />
<br />
:''Furniture of the Pilgrim Century 2 volumes'' (1924, reprint 1965)<br />
<br />
;'''Timothy Rieman and Jean Burks'''<br />
:''The Shaker Furniture Handbook'' (2004)<br />
<br />
;'''Robert F Trent and Jonathan Fairbanks'''<br />
Hard to find, supposed to be excellent, we'll see. One Day.<br />
<br />
:''New England Begins'' (1982)<br />
<br />
== Technical or How-To Books ==<br />
<br />
<br />
Jennie Alexander<br />
<br />
Alexander and Peter Follansbee did much original forensic woodworking examining surviving joined furniture and attempting to reproduce the items not just visually, but deduce the tooling and techniques. The third edition completed after Alexander's death by Peter and others is the culmination of decades of research and well worth reading.<br />
<br />
<br />
Make a Chair from a Tree 3rd Ed (2021)<br />
<br />
<br />
<br />
Peter Follansbee<br />
<br />
Where Alexander is known for his chairs, Peter is best known for his joined furniture, especially stools, chests and boxes carved in the Mannerist style of 17th Century Devonshire/New England. This book is an excellent introduction to the joiner's trade and the construction and decoration of 17th Century furniture.<br />
<br />
<br />
Joiner's Work (2018)<br />
<br />
<br />
<br />
Peter Galbert<br />
<br />
If Windsor chairs are your thing, this is the only book you need. Galbert is a master craftsman turning out amazing chairs. He's also a gifted teacher and illustrator. This book is easily the most attractive and well-designed book I have ever seen on woodworking. There are literally 100s of drawings illuminating every step of the chair making process. Even though Windsor chairs are not my thing, I found this an excellent read.<br />
<br />
<br />
Chairmaker's Notebook (2018)<br />
<br />
<br />
<br />
Charles Hayward<br />
<br />
Charles Hayward was the longtime editor of the UK magazine The Woodworker and a resource of woodworking information. His Woodwork Joints book is excellent and the collection of editorial material assembled by Lost Art Press is a treasure trove of information.<br />
<br />
<br />
Woodwork Joints (1970)<br />
<br />
LAP Collection<br />
<br />
<br />
<br />
Joseph Moxon<br />
<br />
Moxon wrote the earliest known treatise on woodworking in English and stand as a foundational text in many ways. Not the easiest read in the original, but the LAP editions are worth reading.<br />
<br />
<br />
Mechanick Exercises: or the Doctrine of Handy-Works (1703)<br />
<br />
Entire original text (in PDF) from UMich<br />
<br />
LAP reprinted the section on joinery with commentary: The Art of Joinery, Revised (2013)<br />
<br />
LAP will release a cleaned up reprint of the whole thing in 2022<br />
<br />
<br />
<br />
Roy Underhill<br />
<br />
Roy Underhill, former Master Carpenter @ Williamsburg and longtime fixture on PBS's The Woodwright's Workshop, explored all facets of pre-industrial and vernacular woodworking over the 30+ year run of his show. He has published 6 related books, the first 5 are companions to the show, the last is more of a collected wisdom volume. Any of them are worth having.<br />
<br />
<br />
The Woodwright's Shop (1981)<br />
<br />
The Woodwright's Companion (1983)<br />
<br />
The Woodwright's Workbook (1986)<br />
<br />
These available as a 3 in 1 eBook (2011)<br />
<br />
<br />
The Woodwright's Apprentice (1996)<br />
<br />
The Woodwright's Eclectic Workshop (1991)<br />
<br />
The Woodwright's Guide (2008)<br />
<br />
These available as a 3 in 1 eBook (2011)<br />
<br />
<br />
Drew Langsner<br />
<br />
Drew along with his wife ran The Country Workshop in rural North Carolina for over 30 years and held classes on all sorts of green wooding and country craft. If you had to pick just one book, choose the 2021 Country Woodcraft volume.<br />
<br />
<br />
The Chairmaker's Workshop (1997)<br />
<br />
Country Woodcraft: Then & Now (2021)<br />
<br />
Green Woodworking: A Hands-On Approach, 3rd Ed. (2013)<br />
<br />
<br />
== Shop Life ==<br />
<br />
;'''Charles Hummel'''<br />
:''With Hammer in Hand'' (1968)<br />
<br />
;'''Walter Rose'''<br />
:''The Village Carpenter'' (1937)<br />
<br />
;'''George Sturt'''<br />
:''The Wheelwrights's Shop'' (1923)<br />
<br />
;'''Robert Tarule'''<br />
Read my blog post review [https://www.wayneprecht.org/blogs/readings/?p=711 here].<br />
:''The Artisan of Ipswitch'' (2012)</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=17th_Century_American_Furnituremaking&diff=2485
17th Century American Furnituremaking
2022-04-18T16:34:03Z
<p>Wprecht: /* Shop Life */</p>
<hr />
<div><br />
== Tools for 18th and 19th Century ==<br />
;'''Jay Gaynor and Nancy Hagedorn'''<br />
:Tools: Working Wood in Eighteenth Century America (1993)<br />
<br />
;'''William Goodman'''<br />
:The History of Woodworking Tools (1964)<br />
<br />
;'''Henry Mercer'''<br />
:American Carpenter's Tools (1929; reprinted 1960)<br />
<br />
;'''R.A. Salamon'''<br />
:Dictionary of Tools Used in Woodworking and Allied Trades, c. 1700-1970 (1964)<br />
<br />
== Material Culture ==<br />
;'''Victor Chinnery'''<br />
The canonical reference for English Oak furniture from the 15th Century onward. There's a recent second edition and it's worth the extra cost to get that version though there's nothing wrong with the first one if that's what you can get.<br />
<br />
:''Oak Furniture: The British Tradition 2nd Ed.'' (2016)<br />
<br />
;'''Albert Cummings'''<br />
:The Framed Houses of Massachusetts Bay (1979)<br />
<br />
;'''Wallace Nutting'''<br />
The canonical visual reference of early American furniture. It's gone through various printings and some are better than others when it comes to the clarity of the photos.<br />
<br />
:''Furniture of the Pilgrim Century 2 volumes'' (1924, reprint 1965)<br />
<br />
;'''Timothy Rieman and Jean Burks'''<br />
:''The Shaker Furniture Handbook'' (2004)<br />
<br />
;'''Robert F Trent and Jonathan Fairbanks'''<br />
Hard to find, supposed to be excellent, we'll see. One Day.<br />
<br />
:''New England Begins'' (1982)<br />
<br />
== Technical or How-To Books ==<br />
<br />
<br />
Jennie Alexander<br />
<br />
Alexander and Peter Follansbee did much original forensic woodworking examining surviving joined furniture and attempting to reproduce the items not just visually, but deduce the tooling and techniques. The third edition completed after Alexander's death by Peter and others is the culmination of decades of research and well worth reading.<br />
<br />
<br />
Make a Chair from a Tree 3rd Ed (2021)<br />
<br />
<br />
<br />
Peter Follansbee<br />
<br />
Where Alexander is known for his chairs, Peter is best known for his joined furniture, especially stools, chests and boxes carved in the Mannerist style of 17th Century Devonshire/New England. This book is an excellent introduction to the joiner's trade and the construction and decoration of 17th Century furniture.<br />
<br />
<br />
Joiner's Work (2018)<br />
<br />
<br />
<br />
Peter Galbert<br />
<br />
If Windsor chairs are your thing, this is the only book you need. Galbert is a master craftsman turning out amazing chairs. He's also a gifted teacher and illustrator. This book is easily the most attractive and well-designed book I have ever seen on woodworking. There are literally 100s of drawings illuminating every step of the chair making process. Even though Windsor chairs are not my thing, I found this an excellent read.<br />
<br />
<br />
Chairmaker's Notebook (2018)<br />
<br />
<br />
<br />
Charles Hayward<br />
<br />
Charles Hayward was the longtime editor of the UK magazine The Woodworker and a resource of woodworking information. His Woodwork Joints book is excellent and the collection of editorial material assembled by Lost Art Press is a treasure trove of information.<br />
<br />
<br />
Woodwork Joints (1970)<br />
<br />
LAP Collection<br />
<br />
<br />
<br />
Joseph Moxon<br />
<br />
Moxon wrote the earliest known treatise on woodworking in English and stand as a foundational text in many ways. Not the easiest read in the original, but the LAP editions are worth reading.<br />
<br />
<br />
Mechanick Exercises: or the Doctrine of Handy-Works (1703)<br />
<br />
Entire original text (in PDF) from UMich<br />
<br />
LAP reprinted the section on joinery with commentary: The Art of Joinery, Revised (2013)<br />
<br />
LAP will release a cleaned up reprint of the whole thing in 2022<br />
<br />
<br />
<br />
Roy Underhill<br />
<br />
Roy Underhill, former Master Carpenter @ Williamsburg and longtime fixture on PBS's The Woodwright's Workshop, explored all facets of pre-industrial and vernacular woodworking over the 30+ year run of his show. He has published 6 related books, the first 5 are companions to the show, the last is more of a collected wisdom volume. Any of them are worth having.<br />
<br />
<br />
The Woodwright's Shop (1981)<br />
<br />
The Woodwright's Companion (1983)<br />
<br />
The Woodwright's Workbook (1986)<br />
<br />
These available as a 3 in 1 eBook (2011)<br />
<br />
<br />
The Woodwright's Apprentice (1996)<br />
<br />
The Woodwright's Eclectic Workshop (1991)<br />
<br />
The Woodwright's Guide (2008)<br />
<br />
These available as a 3 in 1 eBook (2011)<br />
<br />
<br />
Drew Langsner<br />
<br />
Drew along with his wife ran The Country Workshop in rural North Carolina for over 30 years and held classes on all sorts of green wooding and country craft. If you had to pick just one book, choose the 2021 Country Woodcraft volume.<br />
<br />
<br />
The Chairmaker's Workshop (1997)<br />
<br />
Country Woodcraft: Then & Now (2021)<br />
<br />
Green Woodworking: A Hands-On Approach, 3rd Ed. (2013)<br />
<br />
<br />
== Shop Life ==<br />
<br />
;'''Charles Hummel'''<br />
:With Hammer in Hand (1968)<br />
<br />
;'''Walter Rose'''<br />
:''The Village Carpenter'' (1937)<br />
<br />
;'''George Sturt'''<br />
:''The Wheelwrights's Shop'' (1923)<br />
<br />
;'''Robert Tarule'''<br />
Read my blog post review [https://www.wayneprecht.org/blogs/readings/?p=711 here].<br />
:''The Artisan of Ipswitch'' (2012)</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=17th_Century_American_Furnituremaking&diff=2484
17th Century American Furnituremaking
2022-04-18T16:31:19Z
<p>Wprecht: /* Material Culture */</p>
<hr />
<div><br />
== Tools for 18th and 19th Century ==<br />
;'''Jay Gaynor and Nancy Hagedorn'''<br />
:Tools: Working Wood in Eighteenth Century America (1993)<br />
<br />
;'''William Goodman'''<br />
:The History of Woodworking Tools (1964)<br />
<br />
;'''Henry Mercer'''<br />
:American Carpenter's Tools (1929; reprinted 1960)<br />
<br />
;'''R.A. Salamon'''<br />
:Dictionary of Tools Used in Woodworking and Allied Trades, c. 1700-1970 (1964)<br />
<br />
== Material Culture ==<br />
;'''Victor Chinnery'''<br />
The canonical reference for English Oak furniture from the 15th Century onward. There's a recent second edition and it's worth the extra cost to get that version though there's nothing wrong with the first one if that's what you can get.<br />
<br />
:''Oak Furniture: The British Tradition 2nd Ed.'' (2016)<br />
<br />
;'''Albert Cummings'''<br />
:The Framed Houses of Massachusetts Bay (1979)<br />
<br />
;'''Wallace Nutting'''<br />
The canonical visual reference of early American furniture. It's gone through various printings and some are better than others when it comes to the clarity of the photos.<br />
<br />
:''Furniture of the Pilgrim Century 2 volumes'' (1924, reprint 1965)<br />
<br />
;'''Timothy Rieman and Jean Burks'''<br />
:''The Shaker Furniture Handbook'' (2004)<br />
<br />
;'''Robert F Trent and Jonathan Fairbanks'''<br />
Hard to find, supposed to be excellent, we'll see. One Day.<br />
<br />
:''New England Begins'' (1982)<br />
<br />
== Technical or How-To Books ==<br />
<br />
<br />
Jennie Alexander<br />
<br />
Alexander and Peter Follansbee did much original forensic woodworking examining surviving joined furniture and attempting to reproduce the items not just visually, but deduce the tooling and techniques. The third edition completed after Alexander's death by Peter and others is the culmination of decades of research and well worth reading.<br />
<br />
<br />
Make a Chair from a Tree 3rd Ed (2021)<br />
<br />
<br />
<br />
Peter Follansbee<br />
<br />
Where Alexander is known for his chairs, Peter is best known for his joined furniture, especially stools, chests and boxes carved in the Mannerist style of 17th Century Devonshire/New England. This book is an excellent introduction to the joiner's trade and the construction and decoration of 17th Century furniture.<br />
<br />
<br />
Joiner's Work (2018)<br />
<br />
<br />
<br />
Peter Galbert<br />
<br />
If Windsor chairs are your thing, this is the only book you need. Galbert is a master craftsman turning out amazing chairs. He's also a gifted teacher and illustrator. This book is easily the most attractive and well-designed book I have ever seen on woodworking. There are literally 100s of drawings illuminating every step of the chair making process. Even though Windsor chairs are not my thing, I found this an excellent read.<br />
<br />
<br />
Chairmaker's Notebook (2018)<br />
<br />
<br />
<br />
Charles Hayward<br />
<br />
Charles Hayward was the longtime editor of the UK magazine The Woodworker and a resource of woodworking information. His Woodwork Joints book is excellent and the collection of editorial material assembled by Lost Art Press is a treasure trove of information.<br />
<br />
<br />
Woodwork Joints (1970)<br />
<br />
LAP Collection<br />
<br />
<br />
<br />
Joseph Moxon<br />
<br />
Moxon wrote the earliest known treatise on woodworking in English and stand as a foundational text in many ways. Not the easiest read in the original, but the LAP editions are worth reading.<br />
<br />
<br />
Mechanick Exercises: or the Doctrine of Handy-Works (1703)<br />
<br />
Entire original text (in PDF) from UMich<br />
<br />
LAP reprinted the section on joinery with commentary: The Art of Joinery, Revised (2013)<br />
<br />
LAP will release a cleaned up reprint of the whole thing in 2022<br />
<br />
<br />
<br />
Roy Underhill<br />
<br />
Roy Underhill, former Master Carpenter @ Williamsburg and longtime fixture on PBS's The Woodwright's Workshop, explored all facets of pre-industrial and vernacular woodworking over the 30+ year run of his show. He has published 6 related books, the first 5 are companions to the show, the last is more of a collected wisdom volume. Any of them are worth having.<br />
<br />
<br />
The Woodwright's Shop (1981)<br />
<br />
The Woodwright's Companion (1983)<br />
<br />
The Woodwright's Workbook (1986)<br />
<br />
These available as a 3 in 1 eBook (2011)<br />
<br />
<br />
The Woodwright's Apprentice (1996)<br />
<br />
The Woodwright's Eclectic Workshop (1991)<br />
<br />
The Woodwright's Guide (2008)<br />
<br />
These available as a 3 in 1 eBook (2011)<br />
<br />
<br />
Drew Langsner<br />
<br />
Drew along with his wife ran The Country Workshop in rural North Carolina for over 30 years and held classes on all sorts of green wooding and country craft. If you had to pick just one book, choose the 2021 Country Woodcraft volume.<br />
<br />
<br />
The Chairmaker's Workshop (1997)<br />
<br />
Country Woodcraft: Then & Now (2021)<br />
<br />
Green Woodworking: A Hands-On Approach, 3rd Ed. (2013)<br />
<br />
<br />
== Shop Life ==<br />
<br />
<br />
Charles Hummel<br />
<br />
With Hammer in Hand (1968)<br />
<br />
<br />
Walter Rose<br />
<br />
The Village Carpenter (1937)<br />
<br />
<br />
George Sturt<br />
<br />
The Wheelwrights's Shop (1923)<br />
<br />
<br />
Robert Tarule<br />
<br />
The Artisan of Ipswitch (2012)</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=17th_Century_American_Furnituremaking&diff=2483
17th Century American Furnituremaking
2022-04-18T16:30:57Z
<p>Wprecht: /* Material Culture */</p>
<hr />
<div><br />
== Tools for 18th and 19th Century ==<br />
;'''Jay Gaynor and Nancy Hagedorn'''<br />
:Tools: Working Wood in Eighteenth Century America (1993)<br />
<br />
;'''William Goodman'''<br />
:The History of Woodworking Tools (1964)<br />
<br />
;'''Henry Mercer'''<br />
:American Carpenter's Tools (1929; reprinted 1960)<br />
<br />
;'''R.A. Salamon'''<br />
:Dictionary of Tools Used in Woodworking and Allied Trades, c. 1700-1970 (1964)<br />
<br />
== Material Culture ==<br />
;'''Victor Chinnery'''<br />
The canonical reference for English Oak furniture from the 15th Century onward. There's a recent second edition and it's worth the extra cost to get that version though there's nothing wrong with the first one if that's what you can get.<br />
<br />
:''Oak Furniture: The British Tradition 2nd Ed.'' (2016)<br />
<br />
;'''Albert Cummings'''<br />
:The Framed Houses of Massachusetts Bay (1979)<br />
<br />
;'''Wallace Nutting'''<br />
The canonical visual reference of early American furniture. It's gone through various printings and some are better than others when it comes to the clarity of the photos.<br />
<br />
:''Furniture of the Pilgrim Century 2 volumes'' (1924, reprint 1965)<br />
<br />
;'''Timothy Rieman and Jean Burks'''<br />
:The Shaker Furniture Handbook (2004)<br />
<br />
;'''Robert F Trent and Jonathan Fairbanks'''<br />
Hard to find, supposed to be excellent, we'll see. One Day.<br />
<br />
:''New England Begins'' (1982)<br />
<br />
== Technical or How-To Books ==<br />
<br />
<br />
Jennie Alexander<br />
<br />
Alexander and Peter Follansbee did much original forensic woodworking examining surviving joined furniture and attempting to reproduce the items not just visually, but deduce the tooling and techniques. The third edition completed after Alexander's death by Peter and others is the culmination of decades of research and well worth reading.<br />
<br />
<br />
Make a Chair from a Tree 3rd Ed (2021)<br />
<br />
<br />
<br />
Peter Follansbee<br />
<br />
Where Alexander is known for his chairs, Peter is best known for his joined furniture, especially stools, chests and boxes carved in the Mannerist style of 17th Century Devonshire/New England. This book is an excellent introduction to the joiner's trade and the construction and decoration of 17th Century furniture.<br />
<br />
<br />
Joiner's Work (2018)<br />
<br />
<br />
<br />
Peter Galbert<br />
<br />
If Windsor chairs are your thing, this is the only book you need. Galbert is a master craftsman turning out amazing chairs. He's also a gifted teacher and illustrator. This book is easily the most attractive and well-designed book I have ever seen on woodworking. There are literally 100s of drawings illuminating every step of the chair making process. Even though Windsor chairs are not my thing, I found this an excellent read.<br />
<br />
<br />
Chairmaker's Notebook (2018)<br />
<br />
<br />
<br />
Charles Hayward<br />
<br />
Charles Hayward was the longtime editor of the UK magazine The Woodworker and a resource of woodworking information. His Woodwork Joints book is excellent and the collection of editorial material assembled by Lost Art Press is a treasure trove of information.<br />
<br />
<br />
Woodwork Joints (1970)<br />
<br />
LAP Collection<br />
<br />
<br />
<br />
Joseph Moxon<br />
<br />
Moxon wrote the earliest known treatise on woodworking in English and stand as a foundational text in many ways. Not the easiest read in the original, but the LAP editions are worth reading.<br />
<br />
<br />
Mechanick Exercises: or the Doctrine of Handy-Works (1703)<br />
<br />
Entire original text (in PDF) from UMich<br />
<br />
LAP reprinted the section on joinery with commentary: The Art of Joinery, Revised (2013)<br />
<br />
LAP will release a cleaned up reprint of the whole thing in 2022<br />
<br />
<br />
<br />
Roy Underhill<br />
<br />
Roy Underhill, former Master Carpenter @ Williamsburg and longtime fixture on PBS's The Woodwright's Workshop, explored all facets of pre-industrial and vernacular woodworking over the 30+ year run of his show. He has published 6 related books, the first 5 are companions to the show, the last is more of a collected wisdom volume. Any of them are worth having.<br />
<br />
<br />
The Woodwright's Shop (1981)<br />
<br />
The Woodwright's Companion (1983)<br />
<br />
The Woodwright's Workbook (1986)<br />
<br />
These available as a 3 in 1 eBook (2011)<br />
<br />
<br />
The Woodwright's Apprentice (1996)<br />
<br />
The Woodwright's Eclectic Workshop (1991)<br />
<br />
The Woodwright's Guide (2008)<br />
<br />
These available as a 3 in 1 eBook (2011)<br />
<br />
<br />
Drew Langsner<br />
<br />
Drew along with his wife ran The Country Workshop in rural North Carolina for over 30 years and held classes on all sorts of green wooding and country craft. If you had to pick just one book, choose the 2021 Country Woodcraft volume.<br />
<br />
<br />
The Chairmaker's Workshop (1997)<br />
<br />
Country Woodcraft: Then & Now (2021)<br />
<br />
Green Woodworking: A Hands-On Approach, 3rd Ed. (2013)<br />
<br />
<br />
== Shop Life ==<br />
<br />
<br />
Charles Hummel<br />
<br />
With Hammer in Hand (1968)<br />
<br />
<br />
Walter Rose<br />
<br />
The Village Carpenter (1937)<br />
<br />
<br />
George Sturt<br />
<br />
The Wheelwrights's Shop (1923)<br />
<br />
<br />
Robert Tarule<br />
<br />
The Artisan of Ipswitch (2012)</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=17th_Century_American_Furnituremaking&diff=2482
17th Century American Furnituremaking
2022-04-18T16:27:01Z
<p>Wprecht: /* Material Culture */</p>
<hr />
<div><br />
== Tools for 18th and 19th Century ==<br />
;'''Jay Gaynor and Nancy Hagedorn'''<br />
:Tools: Working Wood in Eighteenth Century America (1993)<br />
<br />
;'''William Goodman'''<br />
:The History of Woodworking Tools (1964)<br />
<br />
;'''Henry Mercer'''<br />
:American Carpenter's Tools (1929; reprinted 1960)<br />
<br />
;'''R.A. Salamon'''<br />
:Dictionary of Tools Used in Woodworking and Allied Trades, c. 1700-1970 (1964)<br />
<br />
== Material Culture ==<br />
;'''Victor Chinnery'''<br />
:The canonical reference for English Oak furniture from the 15th Century onward. There's a recent second edition and it's worth the extra cost to get that version though there's nothing wrong with the first one if that's what you can get.<br />
<br />
Oak Furniture: The British Tradition (2nd Ed; 2016)<br />
<br />
;'''Albert Cummings'''<br />
:The Framed Houses of Massachusetts Bay (1979)<br />
<br />
;'''Wallace Nutting'''<br />
:The canonical visual reference of early American furniture. It's gone through various printings and some are better than others when it comes to the clarity of the photos.<br />
<br />
Furniture of the Pilgrim Century (2 vol; 1924, reprint 1965)<br />
<br />
;'''Timothy Rieman and Jean Burks'''<br />
:The Shaker Furniture Handbook (2004)<br />
<br />
;'''Robert F Trent and Jonathan Fairbanks'''<br />
:Hard to find, supposed to be excellent, we'll see. One Day.<br />
<br />
New England Begins (1982)<br />
<br />
== Technical or How-To Books ==<br />
<br />
<br />
Jennie Alexander<br />
<br />
Alexander and Peter Follansbee did much original forensic woodworking examining surviving joined furniture and attempting to reproduce the items not just visually, but deduce the tooling and techniques. The third edition completed after Alexander's death by Peter and others is the culmination of decades of research and well worth reading.<br />
<br />
<br />
Make a Chair from a Tree 3rd Ed (2021)<br />
<br />
<br />
<br />
Peter Follansbee<br />
<br />
Where Alexander is known for his chairs, Peter is best known for his joined furniture, especially stools, chests and boxes carved in the Mannerist style of 17th Century Devonshire/New England. This book is an excellent introduction to the joiner's trade and the construction and decoration of 17th Century furniture.<br />
<br />
<br />
Joiner's Work (2018)<br />
<br />
<br />
<br />
Peter Galbert<br />
<br />
If Windsor chairs are your thing, this is the only book you need. Galbert is a master craftsman turning out amazing chairs. He's also a gifted teacher and illustrator. This book is easily the most attractive and well-designed book I have ever seen on woodworking. There are literally 100s of drawings illuminating every step of the chair making process. Even though Windsor chairs are not my thing, I found this an excellent read.<br />
<br />
<br />
Chairmaker's Notebook (2018)<br />
<br />
<br />
<br />
Charles Hayward<br />
<br />
Charles Hayward was the longtime editor of the UK magazine The Woodworker and a resource of woodworking information. His Woodwork Joints book is excellent and the collection of editorial material assembled by Lost Art Press is a treasure trove of information.<br />
<br />
<br />
Woodwork Joints (1970)<br />
<br />
LAP Collection<br />
<br />
<br />
<br />
Joseph Moxon<br />
<br />
Moxon wrote the earliest known treatise on woodworking in English and stand as a foundational text in many ways. Not the easiest read in the original, but the LAP editions are worth reading.<br />
<br />
<br />
Mechanick Exercises: or the Doctrine of Handy-Works (1703)<br />
<br />
Entire original text (in PDF) from UMich<br />
<br />
LAP reprinted the section on joinery with commentary: The Art of Joinery, Revised (2013)<br />
<br />
LAP will release a cleaned up reprint of the whole thing in 2022<br />
<br />
<br />
<br />
Roy Underhill<br />
<br />
Roy Underhill, former Master Carpenter @ Williamsburg and longtime fixture on PBS's The Woodwright's Workshop, explored all facets of pre-industrial and vernacular woodworking over the 30+ year run of his show. He has published 6 related books, the first 5 are companions to the show, the last is more of a collected wisdom volume. Any of them are worth having.<br />
<br />
<br />
The Woodwright's Shop (1981)<br />
<br />
The Woodwright's Companion (1983)<br />
<br />
The Woodwright's Workbook (1986)<br />
<br />
These available as a 3 in 1 eBook (2011)<br />
<br />
<br />
The Woodwright's Apprentice (1996)<br />
<br />
The Woodwright's Eclectic Workshop (1991)<br />
<br />
The Woodwright's Guide (2008)<br />
<br />
These available as a 3 in 1 eBook (2011)<br />
<br />
<br />
Drew Langsner<br />
<br />
Drew along with his wife ran The Country Workshop in rural North Carolina for over 30 years and held classes on all sorts of green wooding and country craft. If you had to pick just one book, choose the 2021 Country Woodcraft volume.<br />
<br />
<br />
The Chairmaker's Workshop (1997)<br />
<br />
Country Woodcraft: Then & Now (2021)<br />
<br />
Green Woodworking: A Hands-On Approach, 3rd Ed. (2013)<br />
<br />
<br />
== Shop Life ==<br />
<br />
<br />
Charles Hummel<br />
<br />
With Hammer in Hand (1968)<br />
<br />
<br />
Walter Rose<br />
<br />
The Village Carpenter (1937)<br />
<br />
<br />
George Sturt<br />
<br />
The Wheelwrights's Shop (1923)<br />
<br />
<br />
Robert Tarule<br />
<br />
The Artisan of Ipswitch (2012)</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=17th_Century_American_Furnituremaking&diff=2481
17th Century American Furnituremaking
2022-04-18T16:25:26Z
<p>Wprecht: /* Tools for 18th and 19th Century */</p>
<hr />
<div><br />
== Tools for 18th and 19th Century ==<br />
;'''Jay Gaynor and Nancy Hagedorn'''<br />
:Tools: Working Wood in Eighteenth Century America (1993)<br />
<br />
;'''William Goodman'''<br />
:The History of Woodworking Tools (1964)<br />
<br />
;'''Henry Mercer'''<br />
:American Carpenter's Tools (1929; reprinted 1960)<br />
<br />
;'''R.A. Salamon'''<br />
:Dictionary of Tools Used in Woodworking and Allied Trades, c. 1700-1970 (1964)<br />
<br />
== Material Culture ==<br />
Victor Chinnery<br />
<br />
The canonical reference for English Oak furniture from the 15th Century onward. There's a recent second edition and it's worth the extra cost to get that version though there's nothing wrong with the first one if that's what you can get.<br />
<br />
<br />
Oak Furniture: The British Tradition (2nd Ed; 2016)<br />
<br />
<br />
<br />
Albert Cummings<br />
<br />
The Framed Houses of Massachusetts Bay (1979)<br />
<br />
<br />
<br />
Wallace Nutting<br />
<br />
The canonical visual reference of early American furniture. It's gone through various printings and some are better than others when it comes to the clarity of the photos.<br />
<br />
<br />
Furniture of the Pilgrim Century (2 vol; 1924, reprint 1965)<br />
<br />
<br />
<br />
Timothy Rieman and Jean Burks<br />
<br />
The Shaker Furniture Handbook (2004)<br />
<br />
<br />
<br />
Robert F Trent and Jonathan Fairbanks<br />
<br />
Hard to find, supposed to be excellent, we'll see. One Day.<br />
<br />
New England Begins (1982)<br />
<br />
<br />
<br />
== Technical or How-To Books ==<br />
<br />
<br />
Jennie Alexander<br />
<br />
Alexander and Peter Follansbee did much original forensic woodworking examining surviving joined furniture and attempting to reproduce the items not just visually, but deduce the tooling and techniques. The third edition completed after Alexander's death by Peter and others is the culmination of decades of research and well worth reading.<br />
<br />
<br />
Make a Chair from a Tree 3rd Ed (2021)<br />
<br />
<br />
<br />
Peter Follansbee<br />
<br />
Where Alexander is known for his chairs, Peter is best known for his joined furniture, especially stools, chests and boxes carved in the Mannerist style of 17th Century Devonshire/New England. This book is an excellent introduction to the joiner's trade and the construction and decoration of 17th Century furniture.<br />
<br />
<br />
Joiner's Work (2018)<br />
<br />
<br />
<br />
Peter Galbert<br />
<br />
If Windsor chairs are your thing, this is the only book you need. Galbert is a master craftsman turning out amazing chairs. He's also a gifted teacher and illustrator. This book is easily the most attractive and well-designed book I have ever seen on woodworking. There are literally 100s of drawings illuminating every step of the chair making process. Even though Windsor chairs are not my thing, I found this an excellent read.<br />
<br />
<br />
Chairmaker's Notebook (2018)<br />
<br />
<br />
<br />
Charles Hayward<br />
<br />
Charles Hayward was the longtime editor of the UK magazine The Woodworker and a resource of woodworking information. His Woodwork Joints book is excellent and the collection of editorial material assembled by Lost Art Press is a treasure trove of information.<br />
<br />
<br />
Woodwork Joints (1970)<br />
<br />
LAP Collection<br />
<br />
<br />
<br />
Joseph Moxon<br />
<br />
Moxon wrote the earliest known treatise on woodworking in English and stand as a foundational text in many ways. Not the easiest read in the original, but the LAP editions are worth reading.<br />
<br />
<br />
Mechanick Exercises: or the Doctrine of Handy-Works (1703)<br />
<br />
Entire original text (in PDF) from UMich<br />
<br />
LAP reprinted the section on joinery with commentary: The Art of Joinery, Revised (2013)<br />
<br />
LAP will release a cleaned up reprint of the whole thing in 2022<br />
<br />
<br />
<br />
Roy Underhill<br />
<br />
Roy Underhill, former Master Carpenter @ Williamsburg and longtime fixture on PBS's The Woodwright's Workshop, explored all facets of pre-industrial and vernacular woodworking over the 30+ year run of his show. He has published 6 related books, the first 5 are companions to the show, the last is more of a collected wisdom volume. Any of them are worth having.<br />
<br />
<br />
The Woodwright's Shop (1981)<br />
<br />
The Woodwright's Companion (1983)<br />
<br />
The Woodwright's Workbook (1986)<br />
<br />
These available as a 3 in 1 eBook (2011)<br />
<br />
<br />
The Woodwright's Apprentice (1996)<br />
<br />
The Woodwright's Eclectic Workshop (1991)<br />
<br />
The Woodwright's Guide (2008)<br />
<br />
These available as a 3 in 1 eBook (2011)<br />
<br />
<br />
Drew Langsner<br />
<br />
Drew along with his wife ran The Country Workshop in rural North Carolina for over 30 years and held classes on all sorts of green wooding and country craft. If you had to pick just one book, choose the 2021 Country Woodcraft volume.<br />
<br />
<br />
The Chairmaker's Workshop (1997)<br />
<br />
Country Woodcraft: Then & Now (2021)<br />
<br />
Green Woodworking: A Hands-On Approach, 3rd Ed. (2013)<br />
<br />
<br />
== Shop Life ==<br />
<br />
<br />
Charles Hummel<br />
<br />
With Hammer in Hand (1968)<br />
<br />
<br />
Walter Rose<br />
<br />
The Village Carpenter (1937)<br />
<br />
<br />
George Sturt<br />
<br />
The Wheelwrights's Shop (1923)<br />
<br />
<br />
Robert Tarule<br />
<br />
The Artisan of Ipswitch (2012)</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=17th_Century_American_Furnituremaking&diff=2480
17th Century American Furnituremaking
2022-04-18T16:23:47Z
<p>Wprecht: Created page with " == Tools for 18th and 19th Century == Jay Gaynor and Nancy Hagedorn Tools: Working Wood in Eighteenth Century America (1993) William Goodman The History of Woodworking Tools (1964) Henry Mercer American Carpenter's Tools (1929; reprinted 1960) R.A. Salamon Dictionary of Tools Used in Woodworking and Allied Trades, c. 1700-1970 (1964) == Material Culture == Victor Chinnery The canonical reference for English Oak furniture from the 15th Century onward. There'..."</p>
<hr />
<div><br />
== Tools for 18th and 19th Century ==<br />
Jay Gaynor and Nancy Hagedorn<br />
<br />
Tools: Working Wood in Eighteenth Century America (1993)<br />
<br />
<br />
William Goodman<br />
<br />
The History of Woodworking Tools (1964)<br />
<br />
<br />
Henry Mercer<br />
<br />
American Carpenter's Tools (1929; reprinted 1960)<br />
<br />
<br />
R.A. Salamon<br />
<br />
Dictionary of Tools Used in Woodworking and Allied Trades, c. 1700-1970 (1964)<br />
<br />
<br />
== Material Culture ==<br />
Victor Chinnery<br />
<br />
The canonical reference for English Oak furniture from the 15th Century onward. There's a recent second edition and it's worth the extra cost to get that version though there's nothing wrong with the first one if that's what you can get.<br />
<br />
<br />
Oak Furniture: The British Tradition (2nd Ed; 2016)<br />
<br />
<br />
<br />
Albert Cummings<br />
<br />
The Framed Houses of Massachusetts Bay (1979)<br />
<br />
<br />
<br />
Wallace Nutting<br />
<br />
The canonical visual reference of early American furniture. It's gone through various printings and some are better than others when it comes to the clarity of the photos.<br />
<br />
<br />
Furniture of the Pilgrim Century (2 vol; 1924, reprint 1965)<br />
<br />
<br />
<br />
Timothy Rieman and Jean Burks<br />
<br />
The Shaker Furniture Handbook (2004)<br />
<br />
<br />
<br />
Robert F Trent and Jonathan Fairbanks<br />
<br />
Hard to find, supposed to be excellent, we'll see. One Day.<br />
<br />
New England Begins (1982)<br />
<br />
<br />
<br />
== Technical or How-To Books ==<br />
<br />
<br />
Jennie Alexander<br />
<br />
Alexander and Peter Follansbee did much original forensic woodworking examining surviving joined furniture and attempting to reproduce the items not just visually, but deduce the tooling and techniques. The third edition completed after Alexander's death by Peter and others is the culmination of decades of research and well worth reading.<br />
<br />
<br />
Make a Chair from a Tree 3rd Ed (2021)<br />
<br />
<br />
<br />
Peter Follansbee<br />
<br />
Where Alexander is known for his chairs, Peter is best known for his joined furniture, especially stools, chests and boxes carved in the Mannerist style of 17th Century Devonshire/New England. This book is an excellent introduction to the joiner's trade and the construction and decoration of 17th Century furniture.<br />
<br />
<br />
Joiner's Work (2018)<br />
<br />
<br />
<br />
Peter Galbert<br />
<br />
If Windsor chairs are your thing, this is the only book you need. Galbert is a master craftsman turning out amazing chairs. He's also a gifted teacher and illustrator. This book is easily the most attractive and well-designed book I have ever seen on woodworking. There are literally 100s of drawings illuminating every step of the chair making process. Even though Windsor chairs are not my thing, I found this an excellent read.<br />
<br />
<br />
Chairmaker's Notebook (2018)<br />
<br />
<br />
<br />
Charles Hayward<br />
<br />
Charles Hayward was the longtime editor of the UK magazine The Woodworker and a resource of woodworking information. His Woodwork Joints book is excellent and the collection of editorial material assembled by Lost Art Press is a treasure trove of information.<br />
<br />
<br />
Woodwork Joints (1970)<br />
<br />
LAP Collection<br />
<br />
<br />
<br />
Joseph Moxon<br />
<br />
Moxon wrote the earliest known treatise on woodworking in English and stand as a foundational text in many ways. Not the easiest read in the original, but the LAP editions are worth reading.<br />
<br />
<br />
Mechanick Exercises: or the Doctrine of Handy-Works (1703)<br />
<br />
Entire original text (in PDF) from UMich<br />
<br />
LAP reprinted the section on joinery with commentary: The Art of Joinery, Revised (2013)<br />
<br />
LAP will release a cleaned up reprint of the whole thing in 2022<br />
<br />
<br />
<br />
Roy Underhill<br />
<br />
Roy Underhill, former Master Carpenter @ Williamsburg and longtime fixture on PBS's The Woodwright's Workshop, explored all facets of pre-industrial and vernacular woodworking over the 30+ year run of his show. He has published 6 related books, the first 5 are companions to the show, the last is more of a collected wisdom volume. Any of them are worth having.<br />
<br />
<br />
The Woodwright's Shop (1981)<br />
<br />
The Woodwright's Companion (1983)<br />
<br />
The Woodwright's Workbook (1986)<br />
<br />
These available as a 3 in 1 eBook (2011)<br />
<br />
<br />
The Woodwright's Apprentice (1996)<br />
<br />
The Woodwright's Eclectic Workshop (1991)<br />
<br />
The Woodwright's Guide (2008)<br />
<br />
These available as a 3 in 1 eBook (2011)<br />
<br />
<br />
Drew Langsner<br />
<br />
Drew along with his wife ran The Country Workshop in rural North Carolina for over 30 years and held classes on all sorts of green wooding and country craft. If you had to pick just one book, choose the 2021 Country Woodcraft volume.<br />
<br />
<br />
The Chairmaker's Workshop (1997)<br />
<br />
Country Woodcraft: Then & Now (2021)<br />
<br />
Green Woodworking: A Hands-On Approach, 3rd Ed. (2013)<br />
<br />
<br />
== Shop Life ==<br />
<br />
<br />
Charles Hummel<br />
<br />
With Hammer in Hand (1968)<br />
<br />
<br />
Walter Rose<br />
<br />
The Village Carpenter (1937)<br />
<br />
<br />
George Sturt<br />
<br />
The Wheelwrights's Shop (1923)<br />
<br />
<br />
Robert Tarule<br />
<br />
The Artisan of Ipswitch (2012)</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Bibliography&diff=2479
Bibliography
2022-04-18T16:22:35Z
<p>Wprecht: </p>
<hr />
<div>The books in this list are ones I recommend specifically to period furniture makers.<br />
<br />
This is distinct from the [[Links|Selected Resources]] page which lists general furniture related reference books, tool histories, and resources, links to museums and historical organizations. <br />
<br />
To further muddy the waters, I have an annotated bibliography specifically for [[17th Century American Furnituremaking|17<sup>th</sup> Century American furnituremaking]].<br />
<br />
<br />
<br />
== Recommended Books ==<br />
In the list below, you will notice a lot from Lost Art Press. You could do a lot worse than just buying most of their catalog. They focus on pre-Industrial woodworking and while most if it is out of the SCA period, it's all great information and much of it unchanged from previous centuries. <br />
<br />
;Alexander, Jennie & Follansbee, Peter (2011). '''Make a Joint Stool from a Tree'''. Covington, KY&#58; Lost Art Press. ISBN&#58; 978-0985077709<br />
:This book is the best reference for this form. The joint stool was pretty popular in Elizabethan England, especially in the West Country (Devon, Kent, etc.). It is very easy to build, using a small kit of tools and greenwood. When joiners emigrated to the Colonies, this was one of the forms they first produced. Examples from the mid to late 17<sup>th</sup> Century abound in the Massachusetts area.<br />
<br />
;Conybeare, A.J. (1991). '''Trees, Chests & Boxes of the Sixteenth and Seventeenth Centuries'''. London&#58; The Self Publishing Association. ISBN&#58; 978-1-85421-1422<br />
:This is a hard to find book. It was self-published by a British enthusiast of carved oak boxes. He was a Forestry Consultant in the Westlands of England and looks at the items from the perspective of the wood used. He instigated a movement in English Historical Furniture circles to attempt to localize the origin of items based on the wood used and it's characteristics (e.g., annual growth rings). This 224-page book is loaded with illustrations, all B&W unfortunately. Many have at least some details: timber type, dimensions, etc. It also touches upon molding profiles, hardware, and carving elements.<br />
<br />
;Conybeare, A.J. (1993). '''A Discourse on Boxes of the Sixteenth, Seventeenth and Eighteenth Centuries'''. Worchestershire&#58; ROSCA Publications. ISBN&#58; 0-9517678-1-X<br />
:Another hard to find book. This one is focused on smaller carved boxes, hardware, and the design motifs. You see essentially the same boxes showing up in New England at the and of the 17<sup>th</sup> Century as the craftsman from the west of England, particularly Devonshire emigrate to the colonies. <br />
<br />
;Chinnery, Victor. (2016). '''Oak Furniture - The British Tradition''' 2<sup>nd</sup> Ed. London&#58; Antique Collectors Club. ISBN&#58; 978-1851497157<br />
:This book is the canonical reference for English Oak furniture from the Middle Age to the start of the 19<sup>th</sup> Century. It's 552 pages are packed with photos. This one is not hard to find, but it's way cheaper to order it from the UK even though it's a weighty tome (8 lbs.)<br />
<br />
;Follansbee, Peter. (2019). '''Joiner's Work'''. Covington, KY&#58; Lost Art Press. ISBN&#58; 978-1-7322100-5-9<br />
:This book focuses heavily on the making of carved boxes and chests from green oak. The forms Follansbee uses are from extant examples in the New England area from the end of the 17th Century. These are essentially identical to those produced earlier in the century in England, especially Devon. Though the English ones are more likely to be from sawn wood than green (see Conybeare and Chinnery).<br />
<br />
;Klien, Joshua A. (2018). '''Hands Employed Aright'''. Covington, KY&#58; Lost Art Press. ISBN&#58; 978-1-7322100-5-9<br />
:Klien examines what might be the most complete record of the life of an early 19<sup>th</sup> Century American craftsman living on the frontier with limited resources. Using Fisher’s papers, his tools and the surviving furniture we get a glimpse into this remarkable man who made most of his own tools, a kit that would be familiar to furnituremakers from centuries before.<br />
<br />
;Williams, Donald C., Pietryka-Pagán, Michele, Lafargue, Philippe. '''With All the Precision Possible: Roubo on Furniture'''.<br />
:This book is the first English translation of the 18th-century masterpiece: “l’art du Menuisier” by André-Jacob Roubo. Williams and his team translated the text from Medieval French, a process that took 10 years to get right. This book is actually just the sections on woodworking tools, the workshop, joinery and building furniture. What sets this text apart from other early texts is that Roubo was a trained woodworker and drew the art himself giving this text far more validity than many of the others from the period.<br />
<br />
;Viires, Ants. Trans Mart Aru (2016). '''Woodworking in Estonia'''. Covington, KY&#58; Lost Art Press. ISBN&#58; 978-9780990626<br />
:An unusual book in that it was written in the 1960s but documents the folkways of rural Estonia, a place that might as well have been in the Middle Ages at the time. Viires covers, in detail, the hand tools used by the Estonian. He discusses all the different products Estonians made for their own use and for sale in the markets, including bent-wood boxes, chairs, chests, tables, sleds, carriages, spinning wheels, spoons, tobacco pipes, bowls, and beer tankards.<br />
<br />
== Other Books ==<br />
This is the second tier of furniture making or tool making books. Nice-to-have, but not must-have.<br />
<br />
;Diehl, Daniel. 1996. '''Constructing Medieval Furniture&#58; Plans and Instructions with Historical Notes.''' Mechanicsburg, Pennsylvania&#58; Stackpole Books ISBN&#58; 978-0811727952<br />
:A good survey of some medieval furniture with enough information to get you started. These are NOT plans per se, they are measured drawings of items in museums, so details are spotty depending on access. I've used this to make a couple of projects with mixed results. Not a beginning woodworker reference, proceed with caution.<br />
<br />
;Diehl, Daniel. 1999. '''Medieval Furniture&#58; Plans and Instructions for Historical Reproductions.''' Mechanicsburg, Pennsylvania&#58; Stackpole Books ISBN&#58; 978-0811728546<br />
:A second set of medieval furniture along the lines of the previous book. And the previous cautions apply. You can get both books under one cover by looking up&#58; Medieval & Renaissance Furniture&#58; Plans & Instructions for Historical Reproductions (2012) ISBN&#58; 978-0811710237<br />
<br />
;Greber, Josef M. 1991. '''The History of the Woodworking Plane: (Die Geschichte des Hobels).''' Translated by Seth W. Burchard. Early American Industries Association.<br />
:The English translation of Greber (1989). Probably the best coverage available of medieval and Renaissance planes. Extremely hard to find, the EAIA prints one book a year and mails to all members. Find one that died and get it from his widow. I have been unable to locate either edition. '''Note:''' that the English translation contains the text only; the illustrations are in the German volume.<br />
<br />
;Norman, Gustav Adolf. 1954. '''Hovelens historie'''. Lillehammer, Norway.<br />
:A Norwegian history of planes with some interesting tidbits on Scandinavian usages. Very hard to find at less than astronomical prices.<br />
<br />
[[Category:Woodworking]]<br />
[[Category:Books]]</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Auftragstaktik&diff=2478
Auftragstaktik
2022-02-08T20:41:56Z
<p>Wprecht: </p>
<hr />
<div>=== How the Germans Defined Auftragstaktik<sup>i</sup> ===<br />
by Donald E. Vandergriff<br />
<br />
<br />
''In general, one does well to order no more than is absolutely necessary and to avoid planning beyond the situation one can foresee. These change very rapidly in war. Seldom will orders that anticipate far in advance and in detail succeed completely to execution.''<br><br />
''The higher the authority, the shorter and more general will the orders be. The next lower command adds what further precision appears necessary. The detail of execution is left to the verbal order, to the command. Each thereby retains freedom of action and decision within his authority.''<br><br />
-- Helmut Karl Bernhard von Moltke, ''Instructions for Large Unit Commanders'' (1869)<sup>ii</sup><br />
<br />
<br />
''Auftragstaktik'' or ''Mission Command'',<br><br />
Is not a Command and Control doctrine.<br><br />
It is not a Command and Control system.<br><br />
It is not a technology.<br><br />
It is not a ticket to a “free for all.”<br><br />
It is not a way to write short or no orders or to rely on verbal orders.<br><br><br />
<br />
''Auftragstaktik'' is a cultural philosophy. It is the highest form of military professionalism. The overall commander’s intent is for the member to strive for professionalism, in return, the individual will be given latitude in the accomplishment of their given missions. Strenuous, but proven and defensible standards will be used to identify those few capable of serving in the profession of arms. Once an individual has been accepted into the profession, a special bond forms with their comrades, which enables team work and the solving of complex tasks. This kind of command culture cannot be comprehensively conveyed in a sole block of official instruction. Instead, Mission Command must be integrated into all education and training from the very beginning of basic training. Even more importantly, it must be integrated into all aspects of so-called “garrison” life, in everything the military does.<br />
<br />
Yet the ultimate command culture—because it empowers by trust the individual to best solve problems after extensive professional development—did not come into official being until the publication of the German ''1888 Drill Regulations''.<sup>iii</sup> The reform process that led to the first formal adoption of Mission Command by an armed force began with Gerhard Johann David von Scharnhorst, (1755—1813) in the early 1800s and was taken up by August von Gneisenau (1760–1831) after his mentor’s untimely death in 1813, and later Leopold Hermann Ludwig von Boyen (1771–1848).<sup>iv</sup> This continued after decades of professional debate, implementation in officer development, and real-world application in three wars: the Danish-Prussian War of 1864, the Austro-Prussian War of 1866 and the Franco-Prussian War of 1870.<sup>v</sup><br />
<br />
In parallel, the U.S. Army has some great examples of similar command climates and approaches. As an institution, the U.S. Army has yet to see ''Mission Command'' as what it really is - a culture of professionalism. All too often, we have sought tangible metrics at the expense of holistic understanding. As a great practitioner, LTC Chad R. Foster says,<br />
<br />
''The intent behind changing the terminology was to get away from viewing the application of command merely in terms of technical systems and tasks. As usual, we seem to be missing the mark—Mission Command as we SAY we want it to be is a cultural concept, and one that can't be quantified in an easy metric. It also can't be standardized, at least not in the sense of specific step-by-step processes (our institutional favorite, of course).''<sup>vi</sup><br />
<br />
Since the 1870s, when General Philip Sheridan and Lieutenant Colonel Emory Upton were sent by the U.S. Army to study the Prussian military system and other international militaries, we have failed to understand and apply the meaning of ''Auftragstaktik'' to our own organizational cultures. The U.S. Army like many other nations, copied the verbiage of ''Auftragstaktik'' verbatim, but failed to operationalize the concept. The same holds true today. The U.S. Army has always conflated ''Mission Command'' with bureaucratic efficiency, stemming from a time when the theories of Max Weber were emerging in Europe and the United States. As Muth writes,<br />
<br />
''Auftragstaktik. The word sounds cool even when mangled by an American tongue. What it means, however, has always been elusive to Americans. The problematic translation of that core German military word into 'mission type orders' completely distorts its meaning. Auftragstaktik does not denote a certain style of giving orders or a certain way of phrasing them; it is a whole command philosophy.''<sup>vii</sup><br />
<br />
German officers who served in U.S. Army schools and observed the U.S. at war, sometimes tried to explain their command culture to their American counterparts. Captain Adolf von Schell, an exchange officer to the U.S. Army Infantry School at Fort Benning, Georgia in the 1930s, translated ''Auftragstaktik'' into mission tactics:<br />
<br />
''In the German Army we use what we term “mission tactics”; orders are not written out in the minutest detail, a mission is merely given to a commander. How it shall be carried out is his problem. This is done because the commander on the ground is the only one who can correctly judge existing conditions and take proper action if a change occurs in the situation.''<sup>viii</sup><br />
<br />
Although it has been translated into English in several different ways, it is difficult to understand unless one strenuously researches the origins of the concept. That research shows that the Prussian/German concept is interesting for two reasons.<br />
<br />
First, it explains how the Germans believed they could operate mentally faster than their enemies. The Germans mean “faster” not just in terms of raw, physical speed, but “faster” in terms of making better decisions. Timely and better decisions results in better physical speed relative to the enemy. The German armed forces accomplished this with a progressive and innovative approach to leader development. Technology was only viewed in terms of enhancing their leader’s abilities make more effective decisions.<sup>ix</sup><br />
<br />
Secondly and more importantly, it defines what kind of officers and soldiers a military needs in order to operate successfully under this concept. This is key to understanding what kind of culture a military force must cultivate in order to be successful.<br />
<br />
U.S. historians have long explained away German victories in the early years of World War II with tales of superior German equipment and numbers. Nothing could be further from the truth. As prominent historian Dr. James Corum explains in the introduction of Condell and Zabecki’s book ''On the German Art of War: Truppenführung:''<br />
<br />
''For years after the 1940 campaign the German victory was explained by Germany’s employment of masses of tanks, motorized forces and aircraft against an enemy bound to the Maginot Line and a defensive strategy. However, we know now that in terms of numbers of troops and weapons, the Wehrmacht in 1940 held few advantages. Indeed, it was often at a disadvantage against the Allied forces.''<sup>x</sup><br />
<br />
Dr. James Corum dismissed the Western or Industrial-age tactical principle that an attacking force must have a force ratio advantage of 3:1 to defeat an enemy in a prepared defensive position. He explains the German success in terms of the intangibles of leadership and good ideas, rather than raw numbers of men and material. What counted more was how the Germans developed and nurtured leadership. It was not the content of their training courses, but the environment in which leadership was taught and developed. This is a foreign concept to the U.S. Military, which prefers to focus on content, time, and inputs, rather than outcomes or results. To effectively practice ''Auftragstaktik'' a military force must incorporate these ideas every day in everything they do, in war and in peace.<sup>xi</sup><br />
<br />
''Auftragstaktik is a, broad concept...embracing aspects of...a theory of the nature of war, character and leadership traits, tactics, command and control, senior subordinate relationships, and training and education. It...[is] a comprehensive approach to warfighting.''<br><br />
''The common translation of Auftragstaktik as “mission-type orders” or as “mission command” can be misleading. This focuses attention on the mission statement of the U.S. Operations Order. A true understanding of Auftragstaktik would focus attention on Paragraphs 3a (Concept of the Operation) and 3b (Coordinating Instructions).''<sup>xii</sup><br />
<br />
''Auftragstaktik'' emphasizes commander’s intent, which provides subordinates a framework for making their own decisions in harmony with the overall plan: ''“The German Army used mission statements...in the form of the commander’s intent...The commander then assigned tasks (Aufträge) to subordinate units to carry out his superior’s intent. The subordinate commander decided upon a specific course of action which became his resolution (Entschluss).”''<sup>xiii</sup><br />
<br />
''Auftragstaktik'' “explains basic principles of giving orders for operations.”<br />
<br />
Fostering this kind of individual initiative was the guiding principle of German military education. In short, officers were taught how to think, not what to think. Generals Hermann Balck, and von Mellenthin, during discussions with Col. John Boyd and Pierre Sprey in 1979, said they “considered the individuality of the German fighting man—his freedom to take initiative and the system which engendered these policies and attributes—to be the key to superlative German performance.”<sup>xiv</sup><br />
<br />
In the German Army culture, a commander rarely, if ever, reproached a subordinate for showing initiative. This is where the term ''Selbständichkeit'' (to change an order) is important. According to military historian and author Dr. Rob Citino, this was the term that the Germans used, while ''Auftragstaktik'' was hardly discussed, if at all. The culture of ''Auftragstaktik'' created the conditions for adaptability, while with ''Selbständichkeit'' a leader could change their order based on the circumstances of the moment guided by the higher commander’s intent. They believed it was better to make a good decision immediately than to wait and make a better decision later, possibly missing a fleeting battlefield opportunity.<sup>xv</sup> An unforgivable mistake in such a culture is one of inaction. Waiting for perfect information before making any decision was not tolerated. This attitude extended down through the ranks, to the individual soldier. As Dr. Bruce I. Gudmundsson has written, the German Army was, since the days of Frederick the Great, one of “the most decentralized ones in Europe.”<sup>xvi</sup><br />
<br />
In situations where contact with the higher commander was lost, subordinates could be trusted to take the action he thought appropriate, rather than stopping and waiting until contact could be re-established. This aggressive attitude allowed units to take advantage of fleeting opportunities and local successes. In short, ''“... nothing laid down from above in advance is sacrosanct. A subordinate commander ... is justified ... in modifying or even changing the task assigned him”'' as long as his action supports the higher commander’s intent.<sup>xvii</sup><br />
<br />
The core of the success of ''Auftragstaktik'' was the strenuous selection and development of German leaders. There were three personal qualities the Germans clearly valued in their officers: knowledge, independence, and the joy of taking responsibility. Knowledge served at least two purposes. First of all, knowledge was what made the officer know what to do, a foundation for making a decision. At the same time, it generated trust among your subordinates. Independence was related to decision making. Independence matters as an officer may be the only one present with the authority to make a decision at a given time. One cannot always wait for others to tell you what to do and when to do it. The last and the most important personal quality was the joy of taking responsibility. The joy of taking responsibility was what kept you on the battlefield. “It was what forced you to stay despite the horrors you were experiencing. It was what made you endure.”<sup>xviii</sup><br />
<br />
The best way to separate the great from the average is to hold everyone—from the top commander down to each individual soldier—responsible for their actions. Not only are you responsible for their own units but for “service to the people.” This leads to the introduction of the term ''Verantwortungsfreudigkeit''.<sup>xix</sup> The 1921 manual of ''Führung und Gefecht der Verbundenen Waffen'' in 1921-23, says that “the most distinguished leaders’ quality is the joy of taking responsibility.” German doctrine used this term as early as World War I, but it is emphasized in the 1933 ''Truppenführung''.<br />
<br />
''Truppenführung'' delves thoroughly into the concept by stating that ''“all leaders must in all situations without fearing responsibility exert his whole personality. The joy of taking responsibility is the most distinguished leadership quality.”'' This clearly states how important the Germans viewed responsibility. They strove to cultivate officers who not only accepted responsibility, but actually thrived and excelled in situations where great responsibility was suddenly thrust upon them.<sup>xx</sup><br />
<br />
Why is it important for an officer to enjoy responsibility? Independence equips an officer to handle uncertainty and make good decisions in the absence of direction. When faced with the horrors of the battlefield, an officer needs more than just independence to reach his or her potential. When everything is difficult and everyone around him seems to have given up, that is when the feeling of responsibility kicks in. It is the feeling that no one else can determine the outcome of the engagement, when one must face the “emptiness of the battlefield.”<sup>xxi</sup> This is why ''“Verantwortungsfreudigkeit”'' is what makes the officer “endure the situation” on the battlefield and is the most important quality for a leader.<sup>xxii</sup><br />
<br />
One may note that there is no discussion of a single individual in this examination of Mission Command. I do not write about leadership with discussions of a George Patton or Ulysses Grant. Individual personalities do not play a major role in ''Auftragstaktik''. The Germans were able to teach it to a great many officers and NCOs. They discovered a way to make it stick as their culture. The culture matters more than the individual personalities involved.<br />
<br />
<br />
[i] Thanks to my wife Lorraine Vandergriff for assisting me with the translation of German documents.<br />
<br />
[ii] Helmut Karl Bernhard von Moltke, “Aus den Verordnungen fur die hoheren Truppenfuhrer vom 24. Juni 1869,” in ''Moltkes Militarische Werke, Zweiter Theil, Die Tatigkeit als Chef des Generalstabs im Frieden'', Preubischer Generalstab, (Berlin, Germany: Ernst Siegfried Mittler und Sohn, 1900), 178.<br />
<br />
[iii] Preubisches Kriegsministerium, Exerzir-Regelement fur die Infanterie (signed 1888), (Berlin, Germany: Ernst Siegfried Mittler und Sohn, 1889), 109.<br />
<br />
[iv] Gordon A. Craig, ''The Politics of the Prussian Army 1640-1945'', (New York: Oxford University Press, 1964), chapters 2-4.<br />
<br />
[v] Robert M. Citino, ''The German Way of War, From the Thirty Years’ War to the Third Reich'', (Lawrence, KS: University Press of Kansas, 2005), 116-117.<br />
<br />
[vi] Lieutenant Colonel Chad Foster USA, e-mail message to author, April 27, 2015.<br />
<br />
[vii] Jörg Muth, “[http://foreignpolicy.com/2011/09/09/an-elusive-command-philosophy-and-a-different-command-culture/ An elusive command philosophy and a different command culture],” ''Foreign Policy'', September 9, 2011.<br />
<br />
[viii]Adolf Von Schell, ''Battle Leadership'', (Quantico, VA: The Marine Corps Association, 1988), 17.<br />
<br />
[ix] Ola, Kjoerstad, ''German Officer Education in the Interwar Years'', (Glasgow, Scotland: University of Glasgow, 2010), 2-5. (Hereinafter Germen Officer Education)<br />
<br />
[x]James S. Corum, Condell, Zabecki (eds), ''On the German Art of War'', Truppenführung, (Colorado: Lynne Rienner Publishers, 2001), ix.<br />
<br />
[xi] Several books on the subject, as well as even US Doctrine allude to this fact, but very few seem to grasp the significance of it, because so few practice it in times of “peace”.<br />
<br />
[xii] Richard E. Simpkin, ''Race to the Swift: Thoughts on Twenty-First Century Warfare'', (London: Brassey’s Defense Publishers, 1985), 18.<br />
<br />
[xiii] John T. Nelson II, “Auftragstaktik: A Case for Decentralized Battle,” ''Parameters'', Carlisle, PA: US War College, September 1987, p. 21.<br />
<br />
[xiv] Pierre Sprey and Franklin C. Spinney, personnel communication with author, December 4, 2007.<br />
<br />
[xv] Dr. Rob Citino, lecture, "Death of the Wehrmacht: The German Campaigns of 1942" The USAHEC. ... The German Army in 1943" by Dr. Robert Citino. Assessed 13 DEC 16. Also based on many discussions with Palle Rasmussen, Danish teacher, also assessed on 17 DEC 17 at http://vikingekamp.blogspot.com/. This is from a lecture that Palle gives on Auftragstaktik.<br />
<br />
[xvi] Bruce I. Gudmundsson, ''Stormtroop Tactics: Innovation in the German Army 1914-1918'', Westport, CT: Praeger, 1995, p. 18<br />
<br />
[xvii] Richard E. Simpkin, “Command from the Bottom,” ''Infantry'', (Vol. 75, No. 2, March-April 1985), 34.<br />
<br />
[xviii] H. Dv. 487 ''Führung und Gefecht der verbundenen Waffen (F.u.G.)'', Neudruck der Ausgabe 1921-1924 in 3 teilen, Osnabrück, Biblio Verlag, 1994.<br />
<br />
[xix] H.Dv. 300/1 ''Truppenführung'', p. 3.<br />
<br />
[xx] Quote is from Ola Kjoerstad, “German Officer Education”, and p. 67. Also see, Oberleutnant Hauck, “Wissen und Können”, ''MW'' 1927, no 38, column 1395.<br />
<br />
[xxi] German Officer Education, pp. 64-69.<br />
<br />
[xxii] Major General von Haeften,”Heerführung im Weltkriege” MW 1920, no 18, column 389.</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:In5/doc&diff=2477
Module:In5/doc
2022-02-08T20:16:39Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>{{module rating|alpha}}<br />
<br />
This is a Lua implementation of the {{tl|in5}} template. Please see the template page for documentation.</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Anchor/doc&diff=2475
Module:Anchor/doc
2022-02-08T20:16:36Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>{{used in system}}<br />
{{Module rating|protected}}<br />
This module implements {{tl|anchor}}. Please see the [[Template:Anchor/doc]] page for documentation.</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:For_loop/doc&diff=2473
Module:For loop/doc
2022-02-08T20:16:33Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>{{module rating|release}}<br />
{{Module rating|protected}}<br />
{{High-use|39469}}<br />
This module implements {{lt|For loop}}. Please see the template page for documentation.</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Lx&diff=2471
Module:Lx
2022-02-08T20:16:27Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div><includeonly><span class="plainlinks nourlexpansion lx"><!--<br />
-->[[{{{1}}}{{{2}}}]]&nbsp;<!--<br />
--><span style="font-size:90%;">(<!--<br />
-->{{#if:{{{noedit|}}}||[{{fullurl:{{{1}}}{{{2}}}|action=edit}} edit] &#124;}} <!--<br />
-->{{#if:{{{notalk|}}}||[[{{{3}}}{{{5|:}}}{{{2}}}|{{{4}}}]] &#124;}} <!--<br />
-->{{#if:{{{nohistory|}}}||[{{fullurl:{{{1}}}{{{2}}}|action=history}} history] &#124;}} <!--<br />
-->{{#if:{{{nolinks|}}}||[{{fullurl:Special:Whatlinkshere/{{{1}}}{{{2}}}}} links] &#124;}} <!--<br />
-->{{#if:{{{nowatch|}}}||[{{fullurl:{{{1}}}{{{2}}}|action=watch}} watch] &#124;}} <!--<br />
-->{{#if:{{{nologs|}}}||[{{fullurl:Special:Log|page={{urlencode:{{{1}}}{{{2}}}}}}} logs]}}<!--<br />
-->)</span></span><!--<br />
--></includeonly><noinclude><br />
{{Documentation}}<br />
</noinclude></div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Lt&diff=2469
Module:Lt
2022-02-08T20:16:26Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>{{lx|1=Template:|2={{ucfirst:{{{1}}}}}|3=Template talk|4=talk}}<noinclude><br />
{{documentation|Template:Ln/doc}}<br />
</noinclude></div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Transclusion_count/data/F&diff=2467
Module:Transclusion count/data/F
2022-02-08T20:16:26Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>return {<br />
["F1"] = 4400,<br />
["FA-Class"] = 16000,<br />
["FAA-airport"] = 3700,<br />
["FACClosed"] = 4400,<br />
["FAC_link"] = 95000,<br />
["FAR_link"] = 95000,<br />
["FCC-LMS-Facility"] = 4200,<br />
["FCC-TV-Station-profile"] = 2100,<br />
["FCC_station_profile"] = 2100,<br />
["FIFA_player"] = 10000,<br />
["FIN"] = 8700,<br />
["FJC_Bio"] = 4000,<br />
["FL-Class"] = 12000,<br />
["FLCClosed"] = 2100,<br />
["FM-Class"] = 2600,<br />
["FMA"] = 3300,<br />
["FMARB"] = 10000,<br />
["FML"] = 9100,<br />
["FMQ"] = 12000,<br />
["FMXL"] = 2200,<br />
["FM_station_data"] = 8700,<br />
["FPCnom/VotingEnds"] = 8800,<br />
["FPCresult"] = 15000,<br />
["FRA"] = 19000,<br />
["FRG"] = 3500,<br />
["FULLBASEPAGENAME"] = 5900,<br />
["FULLROOTPAGENAME"] = 1810000,<br />
["Facebook"] = 13000,<br />
["Facepalm"] = 2400,<br />
["Facl"] = 95000,<br />
["Fact"] = 34000,<br />
["FadedPage"] = 2200,<br />
["FailedGA"] = 2900,<br />
["Failed_verification"] = 13000,<br />
["Family_name_hatnote"] = 67000,<br />
["Family_name_hatnote/core"] = 67000,<br />
["Farl"] = 95000,<br />
["Fb"] = 23000,<br />
["Fb-rt"] = 5300,<br />
["Fb_cs_footer"] = 2600,<br />
["Fb_gd"] = 6900,<br />
["Fb_rs"] = 6600,<br />
["Fb_rs_footer"] = 6400,<br />
["Fba/core"] = 21000,<br />
["Fba/list"] = 25000,<br />
["Fbaicon"] = 4600,<br />
["Fbaicon/core"] = 5600,<br />
["Fbicon"] = 2500,<br />
["Fbu"] = 3400,<br />
["Fbu-rt"] = 2200,<br />
["Fbw"] = 3800,<br />
["Fdacite"] = 12000,<br />
["FeaturedPicture"] = 5800,<br />
["Featured_article"] = 6400,<br />
["Featured_article_tools"] = 11000,<br />
["Featured_list"] = 4000,<br />
["Featured_picture"] = 7200,<br />
["Featured_topic_box"] = 2800,<br />
["Feedback_link"] = 6000,<br />
["File-Class"] = 12000,<br />
["File_other"] = 917000,<br />
["Film"] = 57000,<br />
["Film_date"] = 111000,<br />
["Film_lists_by_country"] = 2300,<br />
["Film_name"] = 3400,<br />
["Find"] = 7300,<br />
["FindYDCportal"] = 159000,<br />
["Find_a_Grave"] = 36000,<br />
["Find_country"] = 5500,<br />
["Find_general_sources"] = 799000,<br />
["Find_medical_sources"] = 6700,<br />
["Find_page_text"] = 598000,<br />
["Find_sources"] = 598000,<br />
["Find_sources/proj/is_biography"] = 587000,<br />
["Find_sources/proj/is_med"] = 598000,<br />
["Find_sources/proj/is_video"] = 591000,<br />
["Find_sources/top_proj"] = 598000,<br />
["Find_sources_AFD"] = 165000,<br />
["Find_sources_mainspace"] = 674000,<br />
["Find_video_game_sources"] = 4700,<br />
["Find_video_game_sources_short"] = 3100,<br />
["Findagrave"] = 3600,<br />
["Findsources"] = 42000,<br />
["First_nonempty"] = 13000,<br />
["First_word"] = 280000,<br />
["FishBase"] = 13000,<br />
["FishBase_genus"] = 4200,<br />
["FishBase_species"] = 2200,<br />
["Fishbase"] = 2100,<br />
["Fishproject"] = 10000,<br />
["Fix"] = 816000,<br />
["Fix-span"] = 48000,<br />
["Fix/category"] = 776000,<br />
["Fixed"] = 8100,<br />
["Flag"] = 560000,<br />
["Flag/core"] = 560000,<br />
["FlagIOC"] = 11000,<br />
["FlagIOC2"] = 13000,<br />
["FlagIOC2athlete"] = 9500,<br />
["FlagIOC2medalist"] = 4100,<br />
["FlagIOC2team"] = 6800,<br />
["FlagIOCathlete"] = 17000,<br />
["FlagIOCteam"] = 2700,<br />
["FlagIPC"] = 3900,<br />
["FlagPASO"] = 2100,<br />
["FlagPASOathlete"] = 2300,<br />
["Flag_data"] = 5000,<br />
["Flag_icon"] = 33000,<br />
["Flagathlete"] = 24000,<br />
["Flagbig"] = 4200,<br />
["Flagbig/core"] = 10000,<br />
["Flagcountry"] = 36000,<br />
["Flagcountry/core"] = 36000,<br />
["Flagdeco"] = 120000,<br />
["Flagdeco/core"] = 120000,<br />
["Flagicon"] = 632000,<br />
["Flagicon/core"] = 632000,<br />
["Flagicon/nt"] = 3700,<br />
["Flagicon_image"] = 46000,<br />
["Flaglink/core"] = 75000,<br />
["Flagmedalist"] = 2200,<br />
["Flagmedalist/core"] = 2200,<br />
["Flagright/core"] = 23000,<br />
["Flagteam"] = 5700,<br />
["Flagu"] = 18000,<br />
["Flagu/core"] = 18000,<br />
["Flat_list"] = 8200,<br />
["Flatlist"] = 299000,<br />
["FloraBase"] = 4900,<br />
["Floruit"] = 2900,<br />
["Fmbox"] = 17000,<br />
["Font"] = 6300,<br />
["Font_color"] = 42000,<br />
["Fontcolor"] = 9600,<br />
["Fooian_expatriate_sportspeople_in_Bar_cat"] = 8100,<br />
["Fooian_expatriate_sportspeople_in_Bar_cat/core"] = 8100,<br />
["Fooian_expatriate_sportspeople_in_Bar_cat/sortname"] = 8100,<br />
["Fooian_fooers"] = 13000,<br />
["Football"] = 61000,<br />
["FootballDatabase.eu"] = 6700,<br />
["FootballFacts.ru"] = 4600,<br />
["Football_box"] = 23000,<br />
["Football_box_collapsible"] = 20000,<br />
["Football_kit"] = 43000,<br />
["Football_manager_history"] = 19000,<br />
["Football_squad"] = 49000,<br />
["Football_squad2_player"] = 52000,<br />
["Football_squad_end"] = 17000,<br />
["Football_squad_manager"] = 49000,<br />
["Football_squad_mid"] = 15000,<br />
["Football_squad_player"] = 17000,<br />
["Football_squad_player/role"] = 5800,<br />
["Football_squad_player/styles.css"] = 17000,<br />
["Football_squad_start"] = 17000,<br />
["Footballbox"] = 7300,<br />
["Footballbox_collapsible"] = 9600,<br />
["Footballstats"] = 2200,<br />
["Foo–Bar_relations_category"] = 8800,<br />
["Foo–Bar_relations_category/core"] = 8800,<br />
["Foo–Bar_relations_category/countrynamesortfix"] = 8800,<br />
["Foo–Bar_relations_category/fixcountryname"] = 8800,<br />
["Foo–Bar_relations_category/inner_core"] = 8800,<br />
["Foo–Bar_relations_category/mapname"] = 8800,<br />
["For"] = 171000,<br />
["For_loop"] = 576000,<br />
["For_multi"] = 2400,<br />
["For_nowiki"] = 8300,<br />
["ForaDeJogo"] = 4200,<br />
["Format_linkr"] = 3900,<br />
["Format_numeric_span"] = 3000,<br />
["Format_price"] = 3900,<br />
["Format_price/digits"] = 3800,<br />
["Formatprice"] = 2600,<br />
["Fossil_range"] = 11000,<br />
["Fossil_range/bar"] = 19000,<br />
["Fossil_range/marker"] = 19000,<br />
["Fossilrange"] = 5300,<br />
["Frac"] = 26000,<br />
["Fraction"] = 29000,<br />
["Fraction/styles.css"] = 85000,<br />
["France_metadata_Wikidata"] = 36000,<br />
["Free_access"] = 3400,<br />
["Free_in_US_media"] = 13000,<br />
["Free_media"] = 187000,<br />
["Frequency"] = 3200,<br />
["Friday"] = 2600,<br />
["Fs_end"] = 16000,<br />
["Fs_mid"] = 14000,<br />
["Fs_player"] = 16000,<br />
["Fs_start"] = 16000,<br />
["Full_citation_needed"] = 7700,<br />
["Further"] = 53000,<br />
["Fussballdaten"] = 4400,<br />
["Future-Class"] = 2200,<br />
["Module:FeaturedTopicSum"] = 6500,<br />
["Module:Fiction_redirect_category_handler"] = 2400,<br />
["Module:File_link"] = 61000,<br />
["Module:FindYDCportal"] = 291000,<br />
["Module:Find_country"] = 5500,<br />
["Module:Find_sources"] = 1480000,<br />
["Module:Find_sources/config"] = 1480000,<br />
["Module:Find_sources/links"] = 1480000,<br />
["Module:Find_sources/templates/Find_general_sources"] = 799000,<br />
["Module:Find_sources/templates/Find_sources_mainspace"] = 674000,<br />
["Module:Find_sources/templates/Find_sources_medical"] = 6800,<br />
["Module:Find_sources/templates/Find_sources_video_games"] = 4700,<br />
["Module:FishRef"] = 3300,<br />
["Module:Football_box"] = 23000,<br />
["Module:Football_box/styles.css"] = 23000,<br />
["Module:Football_box_collapsible"] = 20000,<br />
["Module:Football_manager_history"] = 19000,<br />
["Module:Footnotes"] = 253000,<br />
["Module:Footnotes/anchor_id_list"] = 179000,<br />
["Module:Footnotes/anchor_id_list/data"] = 179000,<br />
["Module:Footnotes/whitelist"] = 179000,<br />
["Module:For"] = 171000,<br />
["Module:For_loop"] = 576000,<br />
["Module:For_nowiki"] = 8300,<br />
["Module:Format_link"] = 1120000,<br />
["Module:Formatted_appearance"] = 4900,<br />
}</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Hatnote_list&diff=2465
Module:Hatnote list
2022-02-08T20:16:25Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>--------------------------------------------------------------------------------<br />
-- Module:Hatnote list --<br />
-- --<br />
-- This module produces and formats lists for use in hatnotes. In particular, --<br />
-- it implements the for-see list, i.e. lists of "For X, see Y" statements, --<br />
-- as used in {{about}}, {{redirect}}, and their variants. Also introduced --<br />
-- are andList & orList helpers for formatting lists with those conjunctions. --<br />
--------------------------------------------------------------------------------<br />
<br />
local mArguments --initialize lazily<br />
local mFormatLink = require('Module:Format link')<br />
local mHatnote = require('Module:Hatnote')<br />
local libraryUtil = require('libraryUtil')<br />
local checkType = libraryUtil.checkType<br />
local p = {}<br />
<br />
--------------------------------------------------------------------------------<br />
-- List stringification helper functions<br />
--<br />
-- These functions are used for stringifying lists, usually page lists inside<br />
-- the "Y" portion of "For X, see Y" for-see items.<br />
--------------------------------------------------------------------------------<br />
<br />
--default options table used across the list stringification functions<br />
local stringifyListDefaultOptions = {<br />
conjunction = "and",<br />
separator = ",",<br />
altSeparator = ";",<br />
space = " ",<br />
formatted = false<br />
}<br />
<br />
--Searches display text only<br />
local function searchDisp(haystack, needle)<br />
return string.find(<br />
string.sub(haystack, (string.find(haystack, '|') or 0) + 1), needle<br />
)<br />
end<br />
<br />
-- Stringifies a list generically; probably shouldn't be used directly<br />
local function stringifyList(list, options)<br />
-- Type-checks, defaults, and a shortcut<br />
checkType("stringifyList", 1, list, "table")<br />
if #list == 0 then return nil end<br />
checkType("stringifyList", 2, options, "table", true)<br />
options = options or {}<br />
for k, v in pairs(stringifyListDefaultOptions) do<br />
if options[k] == nil then options[k] = v end<br />
end<br />
local s = options.space<br />
-- Format the list if requested<br />
if options.formatted then<br />
list = mFormatLink.formatPages(<br />
{categorizeMissing = mHatnote.missingTargetCat}, list<br />
)<br />
end<br />
-- Set the separator; if any item contains it, use the alternate separator<br />
local separator = options.separator<br />
for k, v in pairs(list) do<br />
if searchDisp(v, separator) then<br />
separator = options.altSeparator<br />
break<br />
end<br />
end<br />
-- Set the conjunction, apply Oxford comma, and force a comma if #1 has "§"<br />
local conjunction = s .. options.conjunction .. s<br />
if #list == 2 and searchDisp(list[1], "§") or #list > 2 then<br />
conjunction = separator .. conjunction<br />
end<br />
-- Return the formatted string<br />
return mw.text.listToText(list, separator .. s, conjunction)<br />
end<br />
<br />
--DRY function<br />
function p.conjList (conj, list, fmt)<br />
return stringifyList(list, {conjunction = conj, formatted = fmt})<br />
end<br />
<br />
-- Stringifies lists with "and" or "or"<br />
function p.andList (...) return p.conjList("and", ...) end<br />
function p.orList (...) return p.conjList("or", ...) end<br />
<br />
--------------------------------------------------------------------------------<br />
-- For see<br />
--<br />
-- Makes a "For X, see [[Y]]." list from raw parameters. Intended for the<br />
-- {{about}} and {{redirect}} templates and their variants.<br />
--------------------------------------------------------------------------------<br />
<br />
--default options table used across the forSee family of functions<br />
local forSeeDefaultOptions = {<br />
andKeyword = 'and',<br />
title = mw.title.getCurrentTitle().text,<br />
otherText = 'other uses',<br />
forSeeForm = 'For %s, see %s.',<br />
}<br />
<br />
--Collapses duplicate punctuation<br />
local function punctuationCollapse (text)<br />
local replacements = {<br />
["%.%.$"] = ".",<br />
["%?%.$"] = "?",<br />
["%!%.$"] = "!",<br />
["%.%]%]%.$"] = ".]]",<br />
["%?%]%]%.$"] = "?]]",<br />
["%!%]%]%.$"] = "!]]"<br />
}<br />
for k, v in pairs(replacements) do text = string.gsub(text, k, v) end<br />
return text<br />
end<br />
<br />
-- Structures arguments into a table for stringification, & options<br />
function p.forSeeArgsToTable (args, from, options)<br />
-- Type-checks and defaults<br />
checkType("forSeeArgsToTable", 1, args, 'table')<br />
checkType("forSeeArgsToTable", 2, from, 'number', true)<br />
from = from or 1<br />
checkType("forSeeArgsToTable", 3, options, 'table', true)<br />
options = options or {}<br />
for k, v in pairs(forSeeDefaultOptions) do<br />
if options[k] == nil then options[k] = v end<br />
end<br />
-- maxArg's gotten manually because getArgs() and table.maxn aren't friends<br />
local maxArg = 0<br />
for k, v in pairs(args) do<br />
if type(k) == 'number' and k > maxArg then maxArg = k end<br />
end<br />
-- Structure the data out from the parameter list:<br />
-- * forTable is the wrapper table, with forRow rows<br />
-- * Rows are tables of a "use" string & a "pages" table of pagename strings<br />
-- * Blanks are left empty for defaulting elsewhere, but can terminate list<br />
local forTable = {}<br />
local i = from<br />
local terminated = false<br />
-- If there is extra text, and no arguments are given, give nil value<br />
-- to not produce default of "For other uses, see foo (disambiguation)"<br />
if options.extratext and i > maxArg then return nil end<br />
-- Loop to generate rows<br />
repeat<br />
-- New empty row<br />
local forRow = {}<br />
-- On blank use, assume list's ended & break at end of this loop<br />
forRow.use = args[i]<br />
if not args[i] then terminated = true end<br />
-- New empty list of pages<br />
forRow.pages = {}<br />
-- Insert first pages item if present<br />
table.insert(forRow.pages, args[i + 1])<br />
-- If the param after next is "and", do inner loop to collect params<br />
-- until the "and"'s stop. Blanks are ignored: "1|and||and|3" → {1, 3}<br />
while args[i + 2] == options.andKeyword do<br />
if args[i + 3] then <br />
table.insert(forRow.pages, args[i + 3])<br />
end<br />
-- Increment to next "and"<br />
i = i + 2<br />
end<br />
-- Increment to next use<br />
i = i + 2<br />
-- Append the row<br />
table.insert(forTable, forRow)<br />
until terminated or i > maxArg<br />
<br />
return forTable<br />
end<br />
<br />
-- Stringifies a table as formatted by forSeeArgsToTable<br />
function p.forSeeTableToString (forSeeTable, options)<br />
-- Type-checks and defaults<br />
checkType("forSeeTableToString", 1, forSeeTable, "table", true)<br />
checkType("forSeeTableToString", 2, options, "table", true)<br />
options = options or {}<br />
for k, v in pairs(forSeeDefaultOptions) do<br />
if options[k] == nil then options[k] = v end<br />
end<br />
-- Stringify each for-see item into a list<br />
local strList = {}<br />
if forSeeTable then<br />
for k, v in pairs(forSeeTable) do<br />
local useStr = v.use or options.otherText<br />
local pagesStr =<br />
p.andList(v.pages, true) or<br />
mFormatLink._formatLink{<br />
categorizeMissing = mHatnote.missingTargetCat,<br />
link = mHatnote.disambiguate(options.title)<br />
}<br />
local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr)<br />
forSeeStr = punctuationCollapse(forSeeStr)<br />
table.insert(strList, forSeeStr)<br />
end<br />
end<br />
if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..'.')) end<br />
-- Return the concatenated list<br />
return table.concat(strList, ' ')<br />
end<br />
<br />
-- Produces a "For X, see [[Y]]" string from arguments. Expects index gaps<br />
-- but not blank/whitespace values. Ignores named args and args < "from".<br />
function p._forSee (args, from, options)<br />
local forSeeTable = p.forSeeArgsToTable(args, from, options)<br />
return p.forSeeTableToString(forSeeTable, options)<br />
end<br />
<br />
-- As _forSee, but uses the frame.<br />
function p.forSee (frame, from, options)<br />
mArguments = require('Module:Arguments')<br />
return p._forSee(mArguments.getArgs(frame), from, options)<br />
end<br />
<br />
return p</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Format_link&diff=2463
Module:Format link
2022-02-08T20:16:25Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>--------------------------------------------------------------------------------<br />
-- Format link<br />
--<br />
-- Makes a wikilink from the given link and display values. Links are escaped<br />
-- with colons if necessary, and links to sections are detected and displayed<br />
-- with " § " as a separator rather than the standard MediaWiki "#". Used in<br />
-- the {{format link}} template.<br />
--------------------------------------------------------------------------------<br />
local libraryUtil = require('libraryUtil')<br />
local checkType = libraryUtil.checkType<br />
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg<br />
local mArguments -- lazily initialise [[Module:Arguments]]<br />
local mError -- lazily initialise [[Module:Error]]<br />
local yesno -- lazily initialise [[Module:Yesno]]<br />
<br />
local p = {}<br />
<br />
--------------------------------------------------------------------------------<br />
-- Helper functions<br />
--------------------------------------------------------------------------------<br />
<br />
local function getArgs(frame)<br />
-- Fetches the arguments from the parent frame. Whitespace is trimmed and<br />
-- blanks are removed.<br />
mArguments = require('Module:Arguments')<br />
return mArguments.getArgs(frame, {parentOnly = true})<br />
end<br />
<br />
local function removeInitialColon(s)<br />
-- Removes the initial colon from a string, if present.<br />
return s:match('^:?(.*)')<br />
end<br />
<br />
local function maybeItalicize(s, shouldItalicize)<br />
-- Italicize s if s is a string and the shouldItalicize parameter is true.<br />
if s and shouldItalicize then<br />
return '<i>' .. s .. '</i>'<br />
else<br />
return s<br />
end<br />
end<br />
<br />
local function parseLink(link)<br />
-- Parse a link and return a table with the link's components.<br />
-- These components are:<br />
-- - link: the link, stripped of any initial colon (always present)<br />
-- - page: the page name (always present)<br />
-- - section: the page name (may be nil)<br />
-- - display: the display text, if manually entered after a pipe (may be nil)<br />
link = removeInitialColon(link)<br />
<br />
-- Find whether a faux display value has been added with the {{!}} magic<br />
-- word.<br />
local prePipe, display = link:match('^(.-)|(.*)$')<br />
link = prePipe or link<br />
<br />
-- Find the page, if it exists.<br />
-- For links like [[#Bar]], the page will be nil.<br />
local preHash, postHash = link:match('^(.-)#(.*)$')<br />
local page<br />
if not preHash then<br />
-- We have a link like [[Foo]].<br />
page = link<br />
elseif preHash ~= '' then<br />
-- We have a link like [[Foo#Bar]].<br />
page = preHash<br />
end<br />
<br />
-- Find the section, if it exists.<br />
local section<br />
if postHash and postHash ~= '' then<br />
section = postHash<br />
end<br />
<br />
return {<br />
link = link,<br />
page = page,<br />
section = section,<br />
display = display,<br />
}<br />
end<br />
<br />
local function formatDisplay(parsed, options)<br />
-- Formats a display string based on a parsed link table (matching the<br />
-- output of parseLink) and an options table (matching the input options for<br />
-- _formatLink).<br />
local page = maybeItalicize(parsed.page, options.italicizePage)<br />
local section = maybeItalicize(parsed.section, options.italicizeSection)<br />
if (not section) then<br />
return page<br />
elseif (not page) then<br />
return mw.ustring.format('§&nbsp;%s', section)<br />
else<br />
return mw.ustring.format('%s §&nbsp;%s', page, section)<br />
end<br />
end<br />
<br />
local function missingArgError(target)<br />
mError = require('Module:Error')<br />
return mError.error{message =<br />
'Error: no link or target specified! ([[' .. target .. '#Errors|help]])'<br />
}<br />
end<br />
<br />
--------------------------------------------------------------------------------<br />
-- Main functions<br />
--------------------------------------------------------------------------------<br />
<br />
function p.formatLink(frame)<br />
-- The formatLink export function, for use in templates.<br />
yesno = require('Module:Yesno')<br />
local args = getArgs(frame)<br />
local link = args[1] or args.link<br />
local target = args[3] or args.target<br />
if not (link or target) then<br />
return missingArgError('Template:Format link')<br />
end<br />
<br />
return p._formatLink{<br />
link = link,<br />
display = args[2] or args.display,<br />
target = target,<br />
italicizePage = yesno(args.italicizepage),<br />
italicizeSection = yesno(args.italicizesection),<br />
categorizeMissing = args.categorizemissing<br />
}<br />
end<br />
<br />
function p._formatLink(options)<br />
-- The formatLink export function, for use in modules.<br />
checkType('_formatLink', 1, options, 'table')<br />
local function check(key, expectedType) --for brevity<br />
checkTypeForNamedArg(<br />
'_formatLink', key, options[key], expectedType or 'string', true<br />
)<br />
end<br />
check('link')<br />
check('display')<br />
check('target')<br />
check('italicizePage', 'boolean')<br />
check('italicizeSection', 'boolean')<br />
check('categorizeMissing')<br />
<br />
-- Normalize link and target and check that at least one is present<br />
if options.link == '' then options.link = nil end<br />
if options.target == '' then options.target = nil end<br />
if not (options.link or options.target) then<br />
return missingArgError('Module:Format link')<br />
end<br />
<br />
local parsed = parseLink(options.link)<br />
local display = options.display or parsed.display<br />
local catMissing = options.categorizeMissing<br />
local category = ''<br />
<br />
-- Find the display text<br />
if not display then display = formatDisplay(parsed, options) end<br />
<br />
-- Handle the target option if present<br />
if options.target then<br />
local parsedTarget = parseLink(options.target)<br />
parsed.link = parsedTarget.link<br />
parsed.page = parsedTarget.page<br />
end<br />
<br />
-- Test if page exists if a diagnostic category is specified<br />
if catMissing and (mw.ustring.len(catMissing) > 0) then<br />
local title = nil<br />
if parsed.page then title = mw.title.new(parsed.page) end<br />
if title and (not title.isExternal) and (not title.exists) then<br />
category = mw.ustring.format('[[Category:%s]]', catMissing)<br />
end<br />
end<br />
<br />
-- Format the result as a link<br />
if parsed.link == display then<br />
return mw.ustring.format('[[:%s]]%s', parsed.link, category)<br />
else<br />
return mw.ustring.format('[[:%s|%s]]%s', parsed.link, display, category)<br />
end<br />
end<br />
<br />
--------------------------------------------------------------------------------<br />
-- Derived convenience functions<br />
--------------------------------------------------------------------------------<br />
<br />
function p.formatPages(options, pages)<br />
-- Formats an array of pages using formatLink and the given options table,<br />
-- and returns it as an array. Nil values are not allowed.<br />
local ret = {}<br />
for i, page in ipairs(pages) do<br />
ret[i] = p._formatLink{<br />
link = page,<br />
categorizeMissing = options.categorizeMissing,<br />
italicizePage = options.italicizePage,<br />
italicizeSection = options.italicizeSection<br />
}<br />
end<br />
return ret<br />
end<br />
<br />
return p</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:For/doc&diff=2461
Module:For/doc
2022-02-08T20:16:25Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>{{high-risk}}<br />
{{Module rating|protected}}<br />
<br />
Implements {{tl|for}}.<br />
<br />
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |<br />
<!-- Categories below this line, please; interwikis at Wikidata --><br />
[[Category:Hatnote modules]]<br />
}}</includeonly></div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Uses_TemplateStyles/doc&diff=2459
Module:Uses TemplateStyles/doc
2022-02-08T20:16:21Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>{{Lua|Module:Uses TemplateStyles/config|Module:Yesno|Module:List|Module:TableTools|Module:Message box|Module:TNT}}<br />
<!-- uses data [[c:Data:I18n/Uses_TemplateStyles.tab]] --><br />
<br />
Implements {{tl|Uses TemplateStyles}}</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Hatnote_inline/doc&diff=2457
Module:Hatnote inline/doc
2022-02-08T20:16:21Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>{{module rating|release|note=Could be merged into Module:Hatnote, if templates that invoke it called a particular function.}}<br />
{{Lua|Module:Hatnote|Module:Yesno|Module:Arguments}}<br />
<br />
This module produces hatnote-style notes ≠ [[WP:SELFREF|self-references and notes-to-reader]] – usually to related articles or a section/anchor at the same page. It does this inside a {{tag|span}}, instead of the {{tag|div}} used by Module:Hatnote. It implements the {{tlx|hatnote inline}} meta-template.<br />
<br />
== Usage ==<br />
<br />
&#123;{#invoke:{{BASEPAGENAME}}|''hatnote''|''text''}}<br />
<br />
<includeonly>{{sandbox other||<br />
<!-- Categories go here and interwikis go in Wikidata. --><br />
[[Category:Hatnote modules| ]]<br />
}}</includeonly></div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Tlx&diff=2455
Module:Tlx
2022-02-08T20:16:16Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>#REDIRECT [[Template:Template link expanded]]<br />
<br />
{{Redirect category shell|<br />
{{R from move}}<br />
}}</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Template_link_expanded&diff=2453
Module:Template link expanded
2022-02-08T20:16:15Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>{{#Invoke:Template link general|main|code=on}}<noinclude><br />
{{Documentation|1=Template:Tlg/doc<br />
|content = {{tlg/doc|tlx}}<br />
}}<br />
<!-- Add categories to the /doc subpage, not here! --><br />
</noinclude></div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Shortcut/doc&diff=2451
Module:Shortcut/doc
2022-02-08T20:16:11Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>{{Module rating|protected}}<br />
{{Uses TemplateStyles|Template:Shortcut/styles.css}}<br />
{{Lua sidebar}}<br />
This module makes a box showing the shortcut links to a page.<br />
<br />
== Usage ==<br />
<br />
=== From wikitext ===<br />
<br />
From wikitext, this module should be called from a template, usually {{tl|shortcut}}. Please see the template page for documentation. However, it can also be called using the syntax <code><nowiki>{{#invoke:shortcut|main|</nowiki>''arguments''<nowiki>}}</nowiki></code>.<br />
<br />
=== From Lua ===<br />
<br />
To use this module from Lua, first load it.<br />
<br />
<syntaxhighlight lang="lua"><br />
local mShortcut = require('Module:Shortcut')<br />
</syntaxhighlight><br />
<br />
Then you can create shortcut boxes with the following syntax:<br />
<br />
<syntaxhighlight lang="lua"><br />
mShortcut._main(shortcuts, options, frame, cfg)<br />
</syntaxhighlight><br />
<br />
* <var>shortcuts</var> is an array of shortcut page names. (required)<br />
* <var>options</var> is a table of options. The following keys are supported:<br />
** <code>msg</code> - a message to leave after the list of shortcuts.<br />
** <code>category</code> - if set to false (or a value regarded as false by [[Module:Yesno]], such as "no"), categories are suppressed.<br />
* <var>frame</var> a frame object. This is optional, and only intended to be used internally.<br />
* <var>cfg</var> a table of config values. This is optional, and is only intended for testing.<br />
<br />
== Technical details ==<br />
<br />
This module has a configuration file at [[Module:Shortcut/config]]. It can be used to translate this module into different languages or to change details like category names.<br />
<br />
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||<br />
<!-- Categories go here and interwikis go in Wikidata. --><br />
<br />
}}</includeonly></div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Shortcut/styles.css&diff=2449
Module:Shortcut/styles.css
2022-02-08T20:16:04Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>/* {{pp-template}} */<br />
.module-shortcutboxplain {<br />
float: right;<br />
margin: 0 0 0 1em;<br />
border: 1px solid #aaa;<br />
background: #fff;<br />
padding: 0.3em 0.6em 0.2em 0.6em;<br />
text-align: center;<br />
font-size: 85%;<br />
}<br />
<br />
.module-shortcutboxleft {<br />
float: left;<br />
margin: 0 1em 0 0;<br />
}<br />
<br />
.module-shortcutlist {<br />
display: inline-block;<br />
border-bottom: 1px solid #aaa;<br />
margin-bottom: 0.2em;<br />
}<br />
<br />
.module-shortcutboxplain > ul {<br />
font-weight: bold;<br />
}<br />
<br />
.module-shortcutanchordiv {<br />
position: relative;<br />
top: -3em;<br />
}<br />
<br />
li .module-shortcutanchordiv {<br />
float: right; /* IE/Edge in list items */<br />
}<br />
<br />
.mbox-imageright .module-shortcutboxplain {<br />
padding: 0.4em 1em 0.4em 1em;<br />
line-height: 1.3;<br />
}</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Unicode_data&diff=2447
Module:Unicode data
2022-02-08T20:15:58Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>local p = {}<br />
<br />
local floor = math.floor<br />
<br />
local function errorf(level, ...)<br />
if type(level) == "number" then<br />
return error(string.format(...), level + 1)<br />
else -- level is actually the format string.<br />
return error(string.format(level, ...), 2)<br />
end<br />
end<br />
<br />
local function binary_range_search(codepoint, ranges)<br />
local low, mid, high<br />
low, high = 1, ranges.length or require "Module:TableTools".length(ranges)<br />
while low <= high do<br />
mid = floor((low + high) / 2)<br />
local range = ranges[mid]<br />
if codepoint < range[1] then<br />
high = mid - 1<br />
elseif codepoint <= range[2] then<br />
return range, mid<br />
else<br />
low = mid + 1<br />
end<br />
end<br />
return nil, mid<br />
end<br />
p.binary_range_search = binary_range_search<br />
<br />
--[[<br />
local function linear_range_search(codepoint, ranges)<br />
for i, range in ipairs(ranges) do<br />
if range[1] <= codepoint and codepoint <= range[2] then<br />
return range<br />
end<br />
end<br />
end<br />
--]]<br />
<br />
-- Load a module by indexing "loader" with the name of the module minus the<br />
-- "Module:Unicode data/" part. For instance, loader.blocks returns<br />
-- [[Module:Unicode data/blocks]]. If a module cannot be loaded, false will be<br />
-- returned.<br />
local loader = setmetatable({}, {<br />
__index = function (self, key)<br />
local success, data = pcall(mw.loadData, "Module:Unicode data/" .. key)<br />
if not success then<br />
data = false<br />
end<br />
self[key] = data<br />
return data<br />
end<br />
})<br />
<br />
-- For the algorithm used to generate Hangul Syllable names,<br />
-- see "Hangul Syllable Name Generation" in section 3.12 of the<br />
-- Unicode Specification:<br />
-- https://www.unicode.org/versions/Unicode11.0.0/ch03.pdf<br />
local name_hooks = {<br />
{ 0x00, 0x1F, "<control-%04X>" }, -- C0 control characters<br />
{ 0x7F, 0x9F, "<control-%04X>" }, -- DEL and C1 control characters<br />
{ 0x3400, 0x4DBF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension A<br />
{ 0x4E00, 0x9FFF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph<br />
{ 0xAC00, 0xD7A3, function (codepoint) -- Hangul Syllables<br />
local Hangul_data = loader.Hangul<br />
local syllable_index = codepoint - 0xAC00<br />
<br />
return ("HANGUL SYLLABLE %s%s%s"):format(<br />
Hangul_data.leads[floor(syllable_index / Hangul_data.final_count)],<br />
Hangul_data.vowels[floor((syllable_index % Hangul_data.final_count)<br />
/ Hangul_data.trail_count)],<br />
Hangul_data.trails[syllable_index % Hangul_data.trail_count]<br />
)<br />
end },<br />
-- High Surrogates, High Private Use Surrogates, Low Surrogates<br />
{ 0xD800, 0xDFFF, "<surrogate-%04X>" },<br />
{ 0xE000, 0xF8FF, "<private-use-%04X>" }, -- Private Use<br />
-- CJK Compatibility Ideographs<br />
{ 0xF900, 0xFA6D, "CJK COMPATIBILITY IDEOGRAPH-%04X" },<br />
{ 0xFA70, 0xFAD9, "CJK COMPATIBILITY IDEOGRAPH-%04X" },<br />
{ 0x17000, 0x187F7, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph<br />
{ 0x18800, 0x18AFF, function (codepoint)<br />
return ("TANGUT COMPONENT-%03d"):format(codepoint - 0x187FF)<br />
end },<br />
{ 0x18D00, 0x18D08, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph Supplement<br />
{ 0x1B170, 0x1B2FB, "NUSHU CHARACTER-%04X" }, -- Nushu<br />
{ 0x20000, 0x2A6DF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension B<br />
{ 0x2A700, 0x2B738, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension C<br />
{ 0x2B740, 0x2B81D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension D<br />
{ 0x2B820, 0x2CEA1, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension E<br />
{ 0x2CEB0, 0x2EBE0, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension F<br />
-- CJK Compatibility Ideographs Supplement (Supplementary Ideographic Plane)<br />
{ 0x2F800, 0x2FA1D, "CJK COMPATIBILITY IDEOGRAPH-%04X" },<br />
{ 0xE0100, 0xE01EF, function (codepoint) -- Variation Selectors Supplement<br />
return ("VARIATION SELECTOR-%d"):format(codepoint - 0xE0100 + 17)<br />
end},<br />
{ 0x30000, 0x3134A, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension G<br />
{ 0xF0000, 0xFFFFD, "<private-use-%04X>" }, -- Plane 15 Private Use<br />
{ 0x100000, 0x10FFFD, "<private-use-%04X>" } -- Plane 16 Private Use<br />
}<br />
name_hooks.length = #name_hooks<br />
<br />
local name_range_cache<br />
<br />
local function generate_name(data, codepoint)<br />
if type(data) == "string" then<br />
return data:format(codepoint)<br />
else<br />
return data(codepoint)<br />
end<br />
end<br />
<br />
--[[<br />
-- Checks that the code point is a number and in range.<br />
-- Does not check whether code point is an integer.<br />
-- Not used<br />
local function check_codepoint(funcName, argIdx, val)<br />
require 'libraryUtil'.checkType(funcName, argIdx, val, 'number')<br />
if codepoint < 0 or 0x10FFFF < codepoint then<br />
errorf("Codepoint %04X out of range", codepoint)<br />
end<br />
end<br />
--]]<br />
<br />
-- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, section 4.8<br />
function p.lookup_name(codepoint)<br />
-- U+FDD0-U+FDEF and all code points ending in FFFE or FFFF are Unassigned<br />
-- (Cn) and specifically noncharacters:<br />
-- https://www.unicode.org/faq/private_use.html#nonchar4<br />
if 0xFDD0 <= codepoint and (codepoint <= 0xFDEF<br />
or floor(codepoint % 0x10000) >= 0xFFFE) then<br />
return ("<noncharacter-%04X>"):format(codepoint)<br />
end<br />
<br />
if name_range_cache -- Check if previously used "name hook" applies to this code point.<br />
and codepoint >= name_range_cache[1]<br />
and codepoint <= name_range_cache[2] then<br />
return generate_name(name_range_cache[3], codepoint)<br />
end<br />
<br />
local range = binary_range_search(codepoint, name_hooks)<br />
if range then<br />
name_range_cache = range<br />
return generate_name(range[3], codepoint)<br />
end<br />
<br />
local data = loader[('names/%03X'):format(codepoint / 0x1000)]<br />
<br />
if data and data[codepoint] then<br />
return data[codepoint]<br />
<br />
-- Unassigned (Cn) consists of noncharacters and reserved characters.<br />
-- The character has been established not to be a noncharacter,<br />
-- and if it were assigned, its name would already been retrieved,<br />
-- so it must be reserved.<br />
else<br />
return ("<reserved-%04X>"):format(codepoint)<br />
end<br />
end<br />
<br />
--[[<br />
-- No image data modules on Wikipedia yet.<br />
function p.lookup_image(codepoint)<br />
local data = loader[('images/%03X'):format(codepoint / 0x1000)]<br />
<br />
if data then<br />
return data[codepoint]<br />
end<br />
end<br />
--]]<br />
<br />
local planes = {<br />
[ 0] = "Basic Multilingual Plane";<br />
[ 1] = "Supplementary Multilingual Plane";<br />
[ 2] = "Supplementary Ideographic Plane";<br />
[ 3] = "Tertiary Ideographic Plane";<br />
[14] = "Supplementary Special-purpose Plane";<br />
[15] = "Supplementary Private Use Area-A";<br />
[16] = "Supplementary Private Use Area-B";<br />
}<br />
<br />
-- Load [[Module:Unicode data/blocks]] if needed and assign it to this variable.<br />
local blocks<br />
<br />
local function block_iter(blocks, i)<br />
i = i + 1<br />
local data = blocks[i]<br />
if data then<br />
-- Unpack doesn't work on tables loaded with mw.loadData.<br />
return i, data[1], data[2], data[3]<br />
end<br />
end<br />
<br />
-- An ipairs-type iterator generator for the list of blocks.<br />
function p.enum_blocks()<br />
local blocks = loader.blocks<br />
return block_iter, blocks, 0<br />
end<br />
<br />
function p.lookup_plane(codepoint)<br />
local i = floor(codepoint / 0x10000)<br />
return planes[i] or ("Plane %u"):format(i)<br />
end<br />
<br />
function p.lookup_block(codepoint)<br />
local blocks = loader.blocks<br />
local range = binary_range_search(codepoint, blocks)<br />
if range then<br />
return range[3]<br />
else<br />
return "No Block"<br />
end<br />
end<br />
<br />
function p.get_block_info(name)<br />
for i, block in ipairs(loader.blocks) do<br />
if block[3] == name then<br />
return block<br />
end<br />
end<br />
end<br />
<br />
function p.is_valid_pagename(pagename)<br />
local has_nonws = false<br />
<br />
for cp in mw.ustring.gcodepoint(pagename) do<br />
if (cp == 0x0023) -- #<br />
or (cp == 0x005B) -- [<br />
or (cp == 0x005D) -- ]<br />
or (cp == 0x007B) -- {<br />
or (cp == 0x007C) -- |<br />
or (cp == 0x007D) -- }<br />
or (cp == 0x180E) -- MONGOLIAN VOWEL SEPARATOR<br />
or ((cp >= 0x2000) and (cp <= 0x200A)) -- spaces in General Punctuation block<br />
or (cp == 0xFFFD) -- REPLACEMENT CHARACTER<br />
then<br />
return false<br />
end<br />
<br />
local printable, result = p.is_printable(cp)<br />
if not printable then<br />
return false<br />
end<br />
<br />
if result ~= "space-separator" then<br />
has_nonws = true<br />
end<br />
end<br />
<br />
return has_nonws<br />
end<br />
<br />
local function manual_unpack(what, from)<br />
if what[from + 1] == nil then<br />
return what[from]<br />
end<br />
<br />
local result = {}<br />
from = from or 1<br />
for i, item in ipairs(what) do<br />
if i >= from then<br />
table.insert(result, item)<br />
end<br />
end<br />
return unpack(result)<br />
end<br />
<br />
local function compare_ranges(range1, range2)<br />
return range1[1] < range2[1]<br />
end<br />
<br />
-- Creates a function to look up data in a module that contains "singles" (a<br />
-- code point-to-data map) and "ranges" (an array containing arrays that contain<br />
-- the low and high code points of a range and the data associated with that<br />
-- range).<br />
-- "loader" loads and returns the "singles" and "ranges" tables.<br />
-- "match_func" is passed the code point and either the data or the "dots", and<br />
-- generates the final result of the function.<br />
-- The varargs ("dots") describes the default data to be returned if there wasn't<br />
-- a match.<br />
-- In case the function is used more than once, "cache" saves ranges that have<br />
-- already been found to match, or a range whose data is the default if there<br />
-- was no match.<br />
local function memo_lookup(data_module_subpage, match_func, ...)<br />
local dots = { ... }<br />
local cache = {}<br />
local singles, ranges<br />
<br />
return function (codepoint)<br />
if not singles then<br />
local data_module = loader[data_module_subpage]<br />
singles, ranges = data_module.singles, data_module.ranges<br />
end<br />
<br />
if singles[codepoint] then<br />
return match_func(codepoint, singles[codepoint])<br />
end<br />
<br />
local range = binary_range_search(codepoint, cache)<br />
if range then<br />
return match_func(codepoint, manual_unpack(range, 3))<br />
end<br />
<br />
local range, index = binary_range_search(codepoint, ranges)<br />
if range then<br />
table.insert(cache, range)<br />
table.sort(cache, compare_ranges)<br />
return match_func(codepoint, manual_unpack(range, 3))<br />
end<br />
<br />
if ranges[index] then<br />
local dots_range<br />
if codepoint > ranges[index][2] then<br />
dots_range = {<br />
ranges[index][2] + 1,<br />
ranges[index + 1] and ranges[index + 1][1] - 1 or 0x10FFFF,<br />
unpack(dots)<br />
}<br />
else -- codepoint < range[index][1]<br />
dots_range = {<br />
ranges[index - 1] and ranges[index - 1][2] + 1 or 0,<br />
ranges[index][1] - 1,<br />
unpack(dots)<br />
}<br />
end<br />
table.sort(cache, compare_ranges)<br />
end<br />
<br />
return match_func(codepoint)<br />
end<br />
end<br />
<br />
-- Get a code point's combining class value in [[Module:Unicode data/combining]],<br />
-- and return whether this value is not zero. Zero is assigned as the default<br />
-- if the combining class value is not found in this data module.<br />
-- That is, return true if character is combining, or false if it is not.<br />
-- See https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values for<br />
-- more information.<br />
p.is_combining = memo_lookup(<br />
"combining",<br />
function (codepoint, combining_class)<br />
return combining_class and combining_class ~= 0 or false<br />
end,<br />
0)<br />
<br />
function p.add_dotted_circle(str)<br />
return (mw.ustring.gsub(str, ".",<br />
function(char)<br />
if p.is_combining(mw.ustring.codepoint(char)) then<br />
return '◌' .. char<br />
end<br />
end))<br />
end<br />
<br />
local lookup_control = memo_lookup(<br />
"control",<br />
function (codepoint, ccc)<br />
return ccc or "assigned"<br />
end,<br />
"assigned")<br />
p.lookup_control = lookup_control<br />
<br />
function p.is_assigned(codepoint)<br />
return lookup_control(codepoint) ~= "unassigned"<br />
end<br />
<br />
function p.is_printable(codepoint)<br />
local result = lookup_control(codepoint)<br />
return (result == "assigned") or (result == "space-separator"), result<br />
end<br />
<br />
function p.is_whitespace(codepoint)<br />
local result = lookup_control(codepoint)<br />
return (result == "space-separator"), result<br />
end<br />
<br />
p.lookup_category = memo_lookup(<br />
"category",<br />
function (codepoint, category)<br />
return category<br />
end,<br />
"Cn")<br />
<br />
local lookup_script = memo_lookup(<br />
"scripts",<br />
function (codepoint, script_code)<br />
return script_code or 'Zzzz'<br />
end,<br />
"Zzzz")<br />
p.lookup_script = lookup_script<br />
<br />
function p.get_best_script(str)<br />
-- Check type of argument, because mw.text.decode coerces numbers to strings!<br />
require "libraryUtil".checkType("get_best_script", 1, str, "string")<br />
<br />
-- Convert HTML character references (including named character references,<br />
-- or character entities) to characters.<br />
str = mw.text.decode(str, true)<br />
<br />
local scripts = {}<br />
for codepoint in mw.ustring.gcodepoint(str) do<br />
local script = lookup_script(codepoint)<br />
<br />
-- Ignore "Inherited", "Undetermined", or "Uncoded" scripts.<br />
if not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then<br />
scripts[script] = true<br />
end<br />
end<br />
<br />
-- If scripts does not contain two or more keys,<br />
-- return first and only key (script code) in table.<br />
if not next(scripts, next(scripts)) then<br />
return next(scripts)<br />
end -- else return majority script, or else "Zzzz"?<br />
end<br />
<br />
function p.is_Latin(str)<br />
require "libraryUtil".checkType("get_best_script", 1, str, "string")<br />
str = mw.text.decode(str, true)<br />
<br />
-- Search for the leading bytes that introduce the UTF-8 encoding of the<br />
-- code points U+0340-U+10FFFF. If they are not found and there is at least<br />
-- one Latin-script character, the string counts as Latin, because the rest<br />
-- of the characters can only be Zyyy, Zinh, and Zzzz.<br />
-- The only scripts found below U+0370 (the first code point of the Greek<br />
-- and Coptic block) are Latn, Zyyy, Zinh, and Zzzz.<br />
-- See the codepage in the [[UTF-8]] article.<br />
if not str:find "[\205-\244]" then<br />
for codepoint in mw.ustring.gcodepoint(str) do<br />
if lookup_script(codepoint) == "Latn" then<br />
return true<br />
end<br />
end<br />
end<br />
<br />
local Latn = false<br />
<br />
for codepoint in mw.ustring.gcodepoint(str) do<br />
local script = lookup_script(codepoint)<br />
<br />
if script == "Latn" then<br />
Latn = true<br />
elseif not (script == "Zyyy" or script == "Zinh"<br />
or script == "Zzzz") then<br />
return false<br />
end<br />
end<br />
<br />
return Latn<br />
end<br />
<br />
-- Checks that a string contains only characters belonging to right-to-left<br />
-- scripts, or characters of ignorable scripts.<br />
function p.is_rtl(str)<br />
require "libraryUtil".checkType("get_best_script", 1, str, "string")<br />
str = mw.text.decode(str, true)<br />
<br />
-- Search for the leading bytes that introduce the UTF-8 encoding of the<br />
-- code points U+0580-U+10FFFF. If they are not found, the string can only<br />
-- have characters from a left-to-right script, because the first code point<br />
-- in a right-to-left script is U+0591, in the Hebrew block.<br />
if not str:find "[\214-\244]" then<br />
return false<br />
end<br />
<br />
local result = false<br />
local rtl = loader.scripts.rtl<br />
for codepoint in mw.ustring.gcodepoint(str) do<br />
local script = lookup_script(codepoint)<br />
<br />
if rtl[script] then<br />
result = true<br />
elseif not (script == "Zyyy" or script == "Zinh"<br />
or script == "Zzzz") then<br />
return false<br />
end<br />
end<br />
<br />
return result<br />
end<br />
<br />
local function get_codepoint(args, arg)<br />
local codepoint_string = args[arg]<br />
or errorf(2, "Parameter %s is required", tostring(arg))<br />
local codepoint = tonumber(codepoint_string, 16)<br />
or errorf(2, "Parameter %s is not a code point in hexadecimal base",<br />
tostring(arg))<br />
if not (0 <= codepoint and codepoint <= 0x10FFFF) then<br />
errorf(2, "code point in parameter %s out of range", tostring(arg))<br />
end<br />
return codepoint<br />
end<br />
<br />
local function get_func(args, arg, prefix)<br />
local suffix = args[arg]<br />
or errorf(2, "Parameter %s is required", tostring(arg))<br />
suffix = mw.text.trim(suffix)<br />
local func_name = prefix .. suffix<br />
local func = p[func_name]<br />
or errorf(2, "There is no function '%s'", func_name)<br />
return func<br />
end<br />
<br />
-- This function allows any of the "lookup" functions to be invoked. The first<br />
-- parameter is the word after "lookup_"; the second parameter is the code point<br />
-- in hexadecimal base.<br />
function p.lookup(frame)<br />
local func = get_func(frame.args, 1, "lookup_")<br />
local codepoint = get_codepoint(frame.args, 2)<br />
local result = func(codepoint)<br />
if func == p.lookup_name then<br />
-- Prevent code point labels such as <control-0000> from being<br />
-- interpreted as HTML tags.<br />
result = result:gsub("<", "&lt;")<br />
end<br />
return result<br />
end<br />
<br />
function p.is(frame)<br />
local func = get_func(frame.args, 1, "is_")<br />
<br />
-- is_Latin and is_valid_pagename take strings.<br />
if func == p.is_Latin or func == p.is_valid_pagename or func == p.is_rtl then<br />
return (func(frame.args[2]))<br />
else -- The rest take code points.<br />
local codepoint = get_codepoint(frame.args, 2)<br />
return (func(codepoint)) -- Adjust to one result.<br />
end<br />
end<br />
<br />
return p</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Text/doc&diff=2445
Module:Text/doc
2022-02-08T20:15:58Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>'''<code>Text</code>''' – Module containing methods for the manipulation of text, wikimarkup and some HTML.<br />
<br />
== {{Anchor|Vorlage}} Functions for templates ==<br />
<br />
All methods have an unnamed parameter containing the text.<br />
<br />
The return value is an empty string if the parameter does not meet the conditions. When the condition is matched or some result is successfully found, strings of at least one character are returned.<br />
<br />
; char {{Anchor|char}}<br />
: Creates a string from a list of character codes.<br />
::; 1<br />
::: Space-separated list of character codes<br />
::; *<br />
::: Number of repetitions of the list in parameter '''1'''; (Default 1).<br />
::; errors<br />
::: <code>0</code> – Silence errors<br />
; concatParams {{Anchor|concatParams}}<br />
: Combine any number of elements into a list, like <code>table.concat()</code> in Lua.<br />
: From a template:<br />
::; 1<br />
::: First element; missing and empty elements are ignored.<br />
::; 2 3 4 5 6 …<br />
::: Further list elements<br />
: From Lua<br />
::; args<br />
::: ''table (sequence)'' of the elements<br />
::; apply<br />
::: Separator between elements; defaults to <code>|</code><br />
::; adapt<br />
::: optional formatting, which will be applied to each element; must contain <code>%s</code>.<br />
; containsCJK {{Anchor|containsCJK}}<br />
: Returns whether the input string contains any [[CJK characters]]<br />
:* Returns nothing if there are no CJK characters<br />
; removeDelimited<br />
: Remove all text between delimiters, including the delimiters themselves.<br />
; getPlain{{Anchor|getPlain}}<br />
: Remove wikimarkup (except templates): comments, tags, bold, italic, nbsp<br />
; isLatinRange {{Anchor|isLatinRange}}<br />
: Returns some content, unless the string contains a character that would not normally be found in Latin text.<br />
:* Returns nothing if there is a non-Latin string.<br />
; isQuote {{Anchor|isQuote}}<br />
: Returns some content if the parameter passed is a single character, and that character is a quote, such as <code>'</code>.<br />
:* Returns nothing for multiple characters, or if the character passed is not a quote.<br />
; listToText {{Anchor|listToText}}<br />
: Formats list elements analogously to [[:mw:Extension:Scribunto/Lua_reference_manual#mw.text.listToText|mw.text.listToText()]].<br />
: The elements are separated by a comma and space ; the word "and" appears between the first and last.<br />
: Unnamed parameters become the list items.<br />
: Optional parameters for <code>#invoke</code>:<br />
:* <code>format</code> – Every list element will first be formatted with this format string; see [[:mw:Extension:Scribunto/Lua_reference_manual#string.format|here]] for how to construct this string. The string must contain at least one <code>%s</code> sequence.<br />
:* <code>template=1</code> – List elements should be taken from the calling template.<br />
: Returns the resulting string.<br />
; quote {{Anchor|quote}}<br />
: Wrap the string in quotes; quotes can be chosen for a specific language.<br />
::; 1<br />
::: Input text (will be automatically trimmed); may be empty.<br />
::; 2<br />
::: ''(optional)'' the [[ISO 639]] language code for the quote marks; should be one of the [[:de:Wikipedia:Lua/Modul/Text/Test#Anführungszeichen|supported languages]] {{in lang|de}}<br />
::; 3<br />
::: ''(optional)'' <code>2</code> for second level quotes. This means the single quote marks in a statement such as: Jack said, “Jill said ‘fish’ last Tuesday.”<br />
; quoteUnquoted {{Anchor|quoteUnquoted}}<br />
: <br />
: Wrap the string in quotes; quotes can be chosen for a specific language. Will not quote an empty string, and will not quote if there is a quote at the start or end of the (trimmed) string.<br />
::; 1<br />
::: Input text (will be automatically trimmed); may be empty.<br />
::; 2<br />
::: ''(optional)'' the [[ISO 639]] language code for the quote marks; should be one of the [[:de:Wikipedia:Lua/Modul/Text/Test#Anführungszeichen|supported languages]] {{in lang|de}}<br />
::; 3<br />
::: ''(optional)'' <code>2</code> for second level quotes. This means the single quote marks in a statement such as: Jack said, “Jill said ‘fish’ last Tuesday.”<br />
; removeDiacritics {{Anchor|removeDiacritics}}<br />
: Removes all [[diacritical marks]] from the input.<br />
::; 1<br />
::;: Input text<br />
; sentenceTerminated {{Anchor|sentenceTerminated}}<br />
: Is this sentence terminated? Should work with CJK, and allows quotation marks to follow.<br />
:* Returns nothing if the sentence is unterminated.<br />
; ucfirstAll {{Anchor|ucfirstAll}}<br />
: The first letter of every recognized word is converted to upper case. This contrasts with the parser function {{tlg|:mw:ucfirst|alttext=ucfirst:}} which changes only the first character of the whole string passed.<br />
: A few common HTML entities are protected; the implementation of this may mean that numerical entities passed (e.g. <code>&amp;#38;)</code> are converted to <code>&amp;amp;</code> form<br />
; uprightNonlatin {{Anchor|uprightNonlatin}}<br />
: Takes a string. Italicized non-Latin characters are un-italicized, unless they are a single Greek letter.<br />
; zip {{Anchor|zip}}<br />
: Combines a tuple of lists by [[convolution (computer science)|convolution]]. This is easiest to explain by example: given two lists, list1 = "a b c" and list2 = "1 2 3", then<br><code>zip(liste1, liste2, sep = " ", isep = "-", osep = "/")</code><br>outputs<br><code>a-1/b-2/c-3</code><br />
:* 1, 2, 3, … – Lists to be combined<br />
:* <code>sep</code> – A separator (in Lua [[regex]] form) used to split the lists. If empty, the lists are split into individual characters.<br />
:* <code>sep1</code>, <code>sep2</code>, <code>sep3</code>, … – Allows a different separator to be used for each list.<br />
:* <code>isep</code> – Output separator; placed between elements which were at the ''same'' index in their lists.<br />
:* <code>osep</code> – Output separator; placed between elements which had ''different'' original indices; i.e. between the groups joined with <code>isep</code> <br />
<br />
=== Examples and test page ===<br />
There are [[:de:Wikipedia:Lua/Modul/Text/Test|tests available]] {{in lang|de}} to illustrate this in practice.<br />
<br />
== {{Anchor|Lua}} Use in another Lua module ==<br />
<br />
All of the above functions can be called from other Lua modules. Use <code>require()</code>; the below code checks for errors loading it:<br />
<syntaxhighlight lang="lua"><br />
local lucky, Text = pcall( require, "Module:Text" )<br />
if type( Text ) == "table" then<br />
Text = Text.Text()<br />
else<br />
-- In the event of errors, Text is an error message.<br />
return "<span class=\"error\">" .. Text .. "</span>"<br />
end<br />
</syntaxhighlight><br />
You may then call:<br />
* Text.char( apply, again, accept )<br />
* Text.concatParams( args, separator, format )<br />
* Text.containsCJK( s )<br />
* Text.removeDelimited( s )<br />
* Text.getPlain( s )<br />
* Text.isLatinRange( s )<br />
* Text.isQuote( c )<br />
* Text.listToText( table, format )<br />
* Text.quote( s, lang, mode )<br />
* Text.quoteUnquoted( s, lang, mode )<br />
* Text.removeDiacritics( s )<br />
* Text.sentenceTerminated( s )<br />
* Text.ucfirstAll( s )<br />
* Text.uprightNonlatin( s )<br />
* <s>Text.zip(…)</s><br />
* ''Text.test( s )''<br />
<br />
== Usage ==<br />
This is a general library; use it anywhere.<br />
<br />
== Dependencies ==<br />
None.<br />
<br />
== See also ==<br />
{{String-handling templates}}<br />
<includeonly>{{Sandbox other||<br />
<!-- Categories below this line; interwikis at Wikidata --><br />
[[Category:Modules that manipulate strings]]<br />
}}</includeonly></div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Navbox_with_collapsible_groups&diff=2443
Module:Navbox with collapsible groups
2022-02-08T20:15:55Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>-- This module implements {{Navbox with collapsible groups}}<br />
local q = {}<br />
local Navbox = require('Module:Navbox')<br />
<br />
-- helper functions<br />
local function concatstrings(s)<br />
local r = table.concat(s, '')<br />
if r:match('^%s*$') then r = nil end<br />
return r<br />
end<br />
<br />
local function concatstyles(s)<br />
local r = table.concat(s, ';')<br />
while r:match(';%s*;') do<br />
r = mw.ustring.gsub(r, ';%s*;', ';')<br />
end<br />
if r:match('^%s*;%s*$') then r = nil end<br />
return r<br />
end<br />
<br />
function q._navbox(pargs)<br />
-- table for args passed to navbox<br />
local targs = {}<br />
<br />
-- process args<br />
local passthrough = {<br />
['name']=true,['navbar']=true,['state']=true,['border']=true,<br />
['bodyclass']=true,['groupclass']=true,['listclass']=true,<br />
['style']=true,['bodystyle']=true,['basestyle']=true,<br />
['title']=true,['titleclass']=true,['titlestyle']=true,<br />
['above']=true,['aboveclass']=true,['abovestyle']=true,<br />
['below']=true,['belowclass']=true,['belowstyle']=true,<br />
['image']=true,['imageclass']=true,['imagestyle']=true,<br />
['imageleft']=true,['imageleftstyle']=true<br />
}<br />
for k,v in pairs(pargs) do<br />
if k and type(k) == 'string' then<br />
if passthrough[k] then<br />
targs[k] = v<br />
elseif (k:match('^list[0-9][0-9]*$') <br />
or k:match('^content[0-9][0-9]*$') ) then<br />
local n = mw.ustring.gsub(k, '^[a-z]*([0-9]*)$', '%1')<br />
if (targs['list' .. n] == nil and pargs['group' .. n] == nil<br />
and pargs['sect' .. n] == nil and pargs['section' .. n] == nil) then<br />
targs['list' .. n] = concatstrings(<br />
{pargs['list' .. n] or '', pargs['content' .. n] or ''})<br />
end<br />
elseif (k:match('^group[0-9][0-9]*$') <br />
or k:match('^sect[0-9][0-9]*$') <br />
or k:match('^section[0-9][0-9]*$') ) then<br />
local n = mw.ustring.gsub(k, '^[a-z]*([0-9]*)$', '%1')<br />
if targs['list' .. n] == nil then<br />
local titlestyle = concatstyles(<br />
{pargs['groupstyle'] or '',pargs['secttitlestyle'] or '', <br />
pargs['group' .. n .. 'style'] or '', <br />
pargs['section' .. n ..'titlestyle'] or ''})<br />
local liststyle = concatstyles(<br />
{pargs['liststyle'] or '', pargs['contentstyle'] or '', <br />
pargs['list' .. n .. 'style'] or '', <br />
pargs['content' .. n .. 'style'] or ''})<br />
local title = concatstrings(<br />
{pargs['group' .. n] or '', <br />
pargs['sect' .. n] or '',<br />
pargs['section' .. n] or ''})<br />
local list = concatstrings(<br />
{pargs['list' .. n] or '', <br />
pargs['content' .. n] or ''})<br />
local state = (pargs['abbr' .. n] and pargs['abbr' .. n] == pargs['selected']) <br />
and 'uncollapsed' or pargs['state' .. n] or 'collapsed'<br />
<br />
targs['list' .. n] = Navbox._navbox(<br />
{'child', navbar = 'plain', state = state,<br />
basestyle = pargs['basestyle'],<br />
title = title, titlestyle = titlestyle,<br />
list1 = list, liststyle = liststyle,<br />
listclass = pargs['list' .. n .. 'class'],<br />
image = pargs['image' .. n],<br />
imageleft = pargs['imageleft' .. n],<br />
listpadding = pargs['listpadding']})<br />
end<br />
end<br />
end<br />
end<br />
-- ordering of style and bodystyle<br />
targs['style'] = concatstyles({targs['style'] or '', targs['bodystyle'] or ''})<br />
targs['bodystyle'] = nil<br />
<br />
-- child or subgroup<br />
if targs['border'] == nil then targs['border'] = pargs[1] end<br />
<br />
return Navbox._navbox(targs)<br />
end<br />
<br />
function q.navbox(frame)<br />
local pargs = require('Module:Arguments').getArgs(frame, {wrappers = {'Template:Navbox with collapsible groups'}})<br />
<br />
-- Read the arguments in the order they'll be output in, to make references number in the right order.<br />
local _<br />
_ = pargs.title<br />
_ = pargs.above<br />
for i = 1, 20 do<br />
_ = pargs["group" .. tostring(i)]<br />
_ = pargs["list" .. tostring(i)]<br />
end<br />
_ = pargs.below<br />
<br />
return q._navbox(pargs)<br />
end<br />
<br />
return q</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Language/data/iana_variants&diff=2441
Module:Language/data/iana variants
2022-02-08T20:15:51Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>-- File-Date: 2021-12-29<br />
return {<br />
["1606nict"] = {<br />
["descriptions"] = {"Late Middle French (to 1606)"},<br />
["prefixes"] = {"frm"},<br />
},<br />
["1694acad"] = {<br />
["descriptions"] = {"Early Modern French"},<br />
["prefixes"] = {"fr"},<br />
},<br />
["1901"] = {<br />
["descriptions"] = {"Traditional German orthography"},<br />
["prefixes"] = {"de"},<br />
},<br />
["1959acad"] = {<br />
["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"},<br />
["prefixes"] = {"be"},<br />
},<br />
["1994"] = {<br />
["descriptions"] = {"Standardized Resian orthography"},<br />
["prefixes"] = {"sl-rozaj", "sl-rozaj-biske", "sl-rozaj-njiva", "sl-rozaj-osojs", "sl-rozaj-solba"},<br />
},<br />
["1996"] = {<br />
["descriptions"] = {"German orthography of 1996"},<br />
["prefixes"] = {"de"},<br />
},<br />
["abl1943"] = {<br />
["descriptions"] = {"Orthographic formulation of 1943 - Official in Brazil (Formulário Ortográfico de 1943 - Oficial no Brasil)"},<br />
["prefixes"] = {"pt-br"},<br />
},<br />
["akuapem"] = {<br />
["descriptions"] = {"Akuapem Twi"},<br />
["prefixes"] = {"tw"},<br />
},<br />
["alalc97"] = {<br />
["descriptions"] = {"ALA-LC Romanization, 1997 edition"},<br />
["prefixes"] = {},<br />
},<br />
["aluku"] = {<br />
["descriptions"] = {"Aluku dialect", "Boni dialect"},<br />
["prefixes"] = {"djk"},<br />
},<br />
["ao1990"] = {<br />
["descriptions"] = {"Portuguese Language Orthographic Agreement of 1990 (Acordo Ortográfico da Língua Portuguesa de 1990)"},<br />
["prefixes"] = {"pt", "gl"},<br />
},<br />
["aranes"] = {<br />
["descriptions"] = {"Aranese"},<br />
["prefixes"] = {"oc"},<br />
},<br />
["arkaika"] = {<br />
["descriptions"] = {"Arcaicam Esperantom", "Arkaika Esperanto"},<br />
["prefixes"] = {"eo"},<br />
},<br />
["asante"] = {<br />
["descriptions"] = {"Asante Twi", "Ashanti Twi"},<br />
["prefixes"] = {"tw"},<br />
},<br />
["auvern"] = {<br />
["descriptions"] = {"Auvergnat"},<br />
["prefixes"] = {"oc"},<br />
},<br />
["baku1926"] = {<br />
["descriptions"] = {"Unified Turkic Latin Alphabet (Historical)"},<br />
["prefixes"] = {"az", "ba", "crh", "kk", "krc", "ky", "sah", "tk", "tt", "uz"},<br />
},<br />
["balanka"] = {<br />
["descriptions"] = {"The Balanka dialect of Anii"},<br />
["prefixes"] = {"blo"},<br />
},<br />
["barla"] = {<br />
["descriptions"] = {"The Barlavento dialect group of Kabuverdianu"},<br />
["prefixes"] = {"kea"},<br />
},<br />
["basiceng"] = {<br />
["descriptions"] = {"Basic English"},<br />
["prefixes"] = {"en"},<br />
},<br />
["bauddha"] = {<br />
["descriptions"] = {"Buddhist Hybrid Sanskrit"},<br />
["prefixes"] = {"sa"},<br />
},<br />
["biscayan"] = {<br />
["descriptions"] = {"Biscayan dialect of Basque"},<br />
["prefixes"] = {"eu"},<br />
},<br />
["biske"] = {<br />
["descriptions"] = {"The San Giorgio dialect of Resian", "The Bila dialect of Resian"},<br />
["prefixes"] = {"sl-rozaj"},<br />
},<br />
["bohoric"] = {<br />
["descriptions"] = {"Slovene in Bohorič alphabet"},<br />
["prefixes"] = {"sl"},<br />
},<br />
["boont"] = {<br />
["descriptions"] = {"Boontling"},<br />
["prefixes"] = {"en"},<br />
},<br />
["bornholm"] = {<br />
["descriptions"] = {"Bornholmsk"},<br />
["prefixes"] = {"da"},<br />
},<br />
["cisaup"] = {<br />
["descriptions"] = {"Cisalpine"},<br />
["prefixes"] = {"oc"},<br />
},<br />
["colb1945"] = {<br />
["descriptions"] = {"Portuguese-Brazilian Orthographic Convention of 1945 (Convenção Ortográfica Luso-Brasileira de 1945)"},<br />
["prefixes"] = {"pt"},<br />
},<br />
["cornu"] = {<br />
["descriptions"] = {"Cornu-English", "Cornish English", "Anglo-Cornish"},<br />
["prefixes"] = {"en"},<br />
},<br />
["creiss"] = {<br />
["descriptions"] = {"Occitan variants of the Croissant area"},<br />
["prefixes"] = {"oc"},<br />
},<br />
["dajnko"] = {<br />
["descriptions"] = {"Slovene in Dajnko alphabet"},<br />
["prefixes"] = {"sl"},<br />
},<br />
["ekavsk"] = {<br />
["descriptions"] = {"Serbian with Ekavian pronunciation"},<br />
["prefixes"] = {"sr", "sr-latn", "sr-cyrl"},<br />
},<br />
["emodeng"] = {<br />
["descriptions"] = {"Early Modern English (1500-1700)"},<br />
["prefixes"] = {"en"},<br />
},<br />
["fonipa"] = {<br />
["descriptions"] = {"International Phonetic Alphabet"},<br />
["prefixes"] = {},<br />
},<br />
["fonkirsh"] = {<br />
["descriptions"] = {"Kirshenbaum Phonetic Alphabet"},<br />
["prefixes"] = {},<br />
},<br />
["fonnapa"] = {<br />
["descriptions"] = {"North American Phonetic Alphabet", "Americanist Phonetic Notation"},<br />
["prefixes"] = {},<br />
},<br />
["fonupa"] = {<br />
["descriptions"] = {"Uralic Phonetic Alphabet"},<br />
["prefixes"] = {},<br />
},<br />
["fonxsamp"] = {<br />
["descriptions"] = {"X-SAMPA transcription"},<br />
["prefixes"] = {},<br />
},<br />
["gallo"] = {<br />
["descriptions"] = {"Gallo"},<br />
["prefixes"] = {"fr"},<br />
},<br />
["gascon"] = {<br />
["descriptions"] = {"Gascon"},<br />
["prefixes"] = {"oc"},<br />
},<br />
["grclass"] = {<br />
["descriptions"] = {"Classical Occitan orthography"},<br />
["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"},<br />
},<br />
["grital"] = {<br />
["descriptions"] = {"Italian-inspired Occitan orthography"},<br />
["prefixes"] = {"oc", "oc-cisaup", "oc-nicard", "oc-provenc"},<br />
},<br />
["grmistr"] = {<br />
["descriptions"] = {"Mistralian or Mistralian-inspired Occitan orthography"},<br />
["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"},<br />
},<br />
["hepburn"] = {<br />
["descriptions"] = {"Hepburn romanization"},<br />
["prefixes"] = {"ja-latn"},<br />
},<br />
["hognorsk"] = {<br />
["descriptions"] = {"Norwegian in Høgnorsk (High Norwegian) orthography"},<br />
["prefixes"] = {"nn"},<br />
},<br />
["hsistemo"] = {<br />
["descriptions"] = {"Standard H-system orthographic fallback for spelling Esperanto"},<br />
["prefixes"] = {"eo"},<br />
},<br />
["ijekavsk"] = {<br />
["descriptions"] = {"Serbian with Ijekavian pronunciation"},<br />
["prefixes"] = {"sr", "sr-latn", "sr-cyrl"},<br />
},<br />
["itihasa"] = {<br />
["descriptions"] = {"Epic Sanskrit"},<br />
["prefixes"] = {"sa"},<br />
},<br />
["ivanchov"] = {<br />
["descriptions"] = {"Bulgarian in 1899 orthography"},<br />
["prefixes"] = {"bg"},<br />
},<br />
["jauer"] = {<br />
["descriptions"] = {"Jauer dialect of Romansh"},<br />
["prefixes"] = {"rm"},<br />
},<br />
["jyutping"] = {<br />
["descriptions"] = {"Jyutping Cantonese Romanization"},<br />
["prefixes"] = {"yue"},<br />
},<br />
["kkcor"] = {<br />
["descriptions"] = {"Common Cornish orthography of Revived Cornish"},<br />
["prefixes"] = {"kw"},<br />
},<br />
["kociewie"] = {<br />
["descriptions"] = {"The Kociewie dialect of Polish"},<br />
["prefixes"] = {"pl"},<br />
},<br />
["kscor"] = {<br />
["descriptions"] = {"Standard Cornish orthography of Revived Cornish", "Kernowek Standard"},<br />
["prefixes"] = {"kw"},<br />
},<br />
["laukika"] = {<br />
["descriptions"] = {"Classical Sanskrit"},<br />
["prefixes"] = {"sa"},<br />
},<br />
["lemosin"] = {<br />
["descriptions"] = {"Limousin"},<br />
["prefixes"] = {"oc"},<br />
},<br />
["lengadoc"] = {<br />
["descriptions"] = {"Languedocien"},<br />
["prefixes"] = {"oc"},<br />
},<br />
["lipaw"] = {<br />
["descriptions"] = {"The Lipovaz dialect of Resian", "The Lipovec dialect of Resian"},<br />
["prefixes"] = {"sl-rozaj"},<br />
},<br />
["luna1918"] = {<br />
["descriptions"] = {"Post-1917 Russian orthography"},<br />
["prefixes"] = {"ru"},<br />
},<br />
["metelko"] = {<br />
["descriptions"] = {"Slovene in Metelko alphabet"},<br />
["prefixes"] = {"sl"},<br />
},<br />
["monoton"] = {<br />
["descriptions"] = {"Monotonic Greek"},<br />
["prefixes"] = {"el"},<br />
},<br />
["ndyuka"] = {<br />
["descriptions"] = {"Ndyuka dialect", "Aukan dialect"},<br />
["prefixes"] = {"djk"},<br />
},<br />
["nedis"] = {<br />
["descriptions"] = {"Natisone dialect", "Nadiza dialect"},<br />
["prefixes"] = {"sl"},<br />
},<br />
["newfound"] = {<br />
["descriptions"] = {"Newfoundland English"},<br />
["prefixes"] = {"en-ca"},<br />
},<br />
["nicard"] = {<br />
["descriptions"] = {"Niçard"},<br />
["prefixes"] = {"oc"},<br />
},<br />
["njiva"] = {<br />
["descriptions"] = {"The Gniva dialect of Resian", "The Njiva dialect of Resian"},<br />
["prefixes"] = {"sl-rozaj"},<br />
},<br />
["nulik"] = {<br />
["descriptions"] = {"Volapük nulik", "Volapük perevidöl", "Volapük nulädik", "de Jong's Volapük", "New Volapük", "Revised Volapük", "Modern Volapük"},<br />
["prefixes"] = {"vo"},<br />
},<br />
["osojs"] = {<br />
["descriptions"] = {"The Oseacco dialect of Resian", "The Osojane dialect of Resian"},<br />
["prefixes"] = {"sl-rozaj"},<br />
},<br />
["oxendict"] = {<br />
["descriptions"] = {"Oxford English Dictionary spelling"},<br />
["prefixes"] = {"en"},<br />
},<br />
["pahawh2"] = {<br />
["descriptions"] = {"Pahawh Hmong Second Stage Reduced orthography"},<br />
["prefixes"] = {"mww", "hnj"},<br />
},<br />
["pahawh3"] = {<br />
["descriptions"] = {"Pahawh Hmong Third Stage Reduced orthography"},<br />
["prefixes"] = {"mww", "hnj"},<br />
},<br />
["pahawh4"] = {<br />
["descriptions"] = {"Pahawh Hmong Final Version orthography"},<br />
["prefixes"] = {"mww", "hnj"},<br />
},<br />
["pamaka"] = {<br />
["descriptions"] = {"Pamaka dialect"},<br />
["prefixes"] = {"djk"},<br />
},<br />
["peano"] = {<br />
["descriptions"] = {"Latino Sine Flexione", "Interlingua de API", "Interlingua de Peano"},<br />
["prefixes"] = {"la"},<br />
},<br />
["petr1708"] = {<br />
["descriptions"] = {"Petrine orthography"},<br />
["prefixes"] = {"ru"},<br />
},<br />
["pinyin"] = {<br />
["descriptions"] = {"Pinyin romanization"},<br />
["prefixes"] = {"zh-latn", "bo-latn"},<br />
},<br />
["polyton"] = {<br />
["descriptions"] = {"Polytonic Greek"},<br />
["prefixes"] = {"el"},<br />
},<br />
["provenc"] = {<br />
["descriptions"] = {"Provençal"},<br />
["prefixes"] = {"oc"},<br />
},<br />
["puter"] = {<br />
["descriptions"] = {"Puter idiom of Romansh"},<br />
["prefixes"] = {"rm"},<br />
},<br />
["rigik"] = {<br />
["descriptions"] = {"Volapük rigik", "Schleyer's Volapük", "Original Volapük", "Classic Volapük"},<br />
["prefixes"] = {"vo"},<br />
},<br />
["rozaj"] = {<br />
["descriptions"] = {"Resian", "Resianic", "Rezijan"},<br />
["prefixes"] = {"sl"},<br />
},<br />
["rumgr"] = {<br />
["descriptions"] = {"Rumantsch Grischun"},<br />
["prefixes"] = {"rm"},<br />
},<br />
["scotland"] = {<br />
["descriptions"] = {"Scottish Standard English"},<br />
["prefixes"] = {"en"},<br />
},<br />
["scouse"] = {<br />
["descriptions"] = {"Scouse"},<br />
["prefixes"] = {"en"},<br />
},<br />
["simple"] = {<br />
["descriptions"] = {"Simplified form"},<br />
["prefixes"] = {},<br />
},<br />
["solba"] = {<br />
["descriptions"] = {"The Stolvizza dialect of Resian", "The Solbica dialect of Resian"},<br />
["prefixes"] = {"sl-rozaj"},<br />
},<br />
["sotav"] = {<br />
["descriptions"] = {"The Sotavento dialect group of Kabuverdianu"},<br />
["prefixes"] = {"kea"},<br />
},<br />
["spanglis"] = {<br />
["descriptions"] = {"Spanglish"},<br />
["prefixes"] = {"en", "es"},<br />
},<br />
["surmiran"] = {<br />
["descriptions"] = {"Surmiran idiom of Romansh"},<br />
["prefixes"] = {"rm"},<br />
},<br />
["sursilv"] = {<br />
["descriptions"] = {"Sursilvan idiom of Romansh"},<br />
["prefixes"] = {"rm"},<br />
},<br />
["sutsilv"] = {<br />
["descriptions"] = {"Sutsilvan idiom of Romansh"},<br />
["prefixes"] = {"rm"},<br />
},<br />
["synnejyl"] = {<br />
["descriptions"] = {"Synnejysk", "South Jutish"},<br />
["prefixes"] = {"da"},<br />
},<br />
["tarask"] = {<br />
["descriptions"] = {"Belarusian in Taraskievica orthography"},<br />
["prefixes"] = {"be"},<br />
},<br />
["tongyong"] = {<br />
["descriptions"] = {"Tongyong Pinyin romanization"},<br />
["prefixes"] = {"zh-latn"},<br />
},<br />
["tunumiit"] = {<br />
["descriptions"] = {"Tunumiisiut", "East Greenlandic", "Østgrønlandsk"},<br />
["prefixes"] = {"kl"},<br />
},<br />
["uccor"] = {<br />
["descriptions"] = {"Unified Cornish orthography of Revived Cornish"},<br />
["prefixes"] = {"kw"},<br />
},<br />
["ucrcor"] = {<br />
["descriptions"] = {"Unified Cornish Revised orthography of Revived Cornish"},<br />
["prefixes"] = {"kw"},<br />
},<br />
["ulster"] = {<br />
["descriptions"] = {"Ulster dialect of Scots"},<br />
["prefixes"] = {"sco"},<br />
},<br />
["unifon"] = {<br />
["descriptions"] = {"Unifon phonetic alphabet"},<br />
["prefixes"] = {"en", "hup", "kyh", "tol", "yur"},<br />
},<br />
["vaidika"] = {<br />
["descriptions"] = {"Vedic Sanskrit"},<br />
["prefixes"] = {"sa"},<br />
},<br />
["valencia"] = {<br />
["descriptions"] = {"Valencian"},<br />
["prefixes"] = {"ca"},<br />
},<br />
["vallader"] = {<br />
["descriptions"] = {"Vallader idiom of Romansh"},<br />
["prefixes"] = {"rm"},<br />
},<br />
["vecdruka"] = {<br />
["descriptions"] = {"Latvian orthography used before 1920s (\"vecā druka\")"},<br />
["prefixes"] = {"lv"},<br />
},<br />
["vivaraup"] = {<br />
["descriptions"] = {"Vivaro-Alpine"},<br />
["prefixes"] = {"oc"},<br />
},<br />
["wadegile"] = {<br />
["descriptions"] = {"Wade-Giles romanization"},<br />
["prefixes"] = {"zh-latn"},<br />
},<br />
["xsistemo"] = {<br />
["descriptions"] = {"Standard X-system orthographic fallback for spelling Esperanto"},<br />
["prefixes"] = {"eo"},<br />
}<br />
}</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Language/data/iana_suppressed_scripts&diff=2439
Module:Language/data/iana suppressed scripts
2022-02-08T20:15:51Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>-- File-Date: 2021-12-29<br />
return {<br />
["Arab"] = {"ar", "fa", "ps", "ur"},<br />
["Armn"] = {"hy"},<br />
["Beng"] = {"as", "bn"},<br />
["Blis"] = {"zbl"},<br />
["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"},<br />
["Deva"] = {"hi", "mr", "ne", "kok", "mai"},<br />
["Ethi"] = {"am", "ti"},<br />
["Geor"] = {"ka"},<br />
["Grek"] = {"el"},<br />
["Gujr"] = {"gu"},<br />
["Guru"] = {"pa"},<br />
["Hebr"] = {"he", "iw", "yi"},<br />
["Jpan"] = {"ja"},<br />
["Khmr"] = {"km"},<br />
["Knda"] = {"kn"},<br />
["Kore"] = {"ko"},<br />
["Laoo"] = {"lo"},<br />
["Latn"] = {"af", "ay", "bs", "ca", "ch", "cs", "cy", "da", "de", "en", "eo",<br />
"es", "et", "eu", "fi", "fj", "fo", "fr", "fy", "ga", "gl", "gn",<br />
"gv", "hr", "ht", "hu", "id", "in", "is", "it", "kl", "la", "lb",<br />
"ln", "lt", "lv", "mg", "mh", "mo", "ms", "mt", "na", "nb", "nd",<br />
"nl", "nn", "no", "nr", "ny", "om", "pl", "pt", "qu", "rm", "rn",<br />
"ro", "rw", "sg", "sk", "sl", "sm", "so", "sq", "ss", "st", "sv",<br />
"sw", "tl", "tn", "to", "tr", "ts", "ve", "vi", "xh", "zu", "dsb",<br />
"frr", "frs", "gsw", "hsb", "men", "nds", "niu", "nso", "tem", "tkl", "tmh",<br />
"tpi", "tvl"},<br />
["Mlym"] = {"ml"},<br />
["Mymr"] = {"my"},<br />
["Nkoo"] = {"nqo"},<br />
["Orya"] = {"or"},<br />
["Sinh"] = {"si"},<br />
["Taml"] = {"ta"},<br />
["Telu"] = {"te"},<br />
["Thaa"] = {"dv"},<br />
["Thai"] = {"th"},<br />
["Tibt"] = {"dz"}<br />
}</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Language/data/iana_scripts&diff=2437
Module:Language/data/iana scripts
2022-02-08T20:15:50Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>-- File-Date: 2021-12-29<br />
return {<br />
["Adlm"] = {"Adlam"},<br />
["Afak"] = {"Afaka"},<br />
["Aghb"] = {"Caucasian Albanian"},<br />
["Ahom"] = {"Ahom", "Tai Ahom"},<br />
["Arab"] = {"Arabic"},<br />
["Aran"] = {"Arabic (Nastaliq variant)"},<br />
["Armi"] = {"Imperial Aramaic"},<br />
["Armn"] = {"Armenian"},<br />
["Avst"] = {"Avestan"},<br />
["Bali"] = {"Balinese"},<br />
["Bamu"] = {"Bamum"},<br />
["Bass"] = {"Bassa Vah"},<br />
["Batk"] = {"Batak"},<br />
["Beng"] = {"Bengali", "Bangla"},<br />
["Bhks"] = {"Bhaiksuki"},<br />
["Blis"] = {"Blissymbols"},<br />
["Bopo"] = {"Bopomofo"},<br />
["Brah"] = {"Brahmi"},<br />
["Brai"] = {"Braille"},<br />
["Bugi"] = {"Buginese"},<br />
["Buhd"] = {"Buhid"},<br />
["Cakm"] = {"Chakma"},<br />
["Cans"] = {"Unified Canadian Aboriginal Syllabics"},<br />
["Cari"] = {"Carian"},<br />
["Cham"] = {"Cham"},<br />
["Cher"] = {"Cherokee"},<br />
["Chrs"] = {"Chorasmian"},<br />
["Cirt"] = {"Cirth"},<br />
["Copt"] = {"Coptic"},<br />
["Cpmn"] = {"Cypro-Minoan"},<br />
["Cprt"] = {"Cypriot syllabary"},<br />
["Cyrl"] = {"Cyrillic"},<br />
["Cyrs"] = {"Cyrillic (Old Church Slavonic variant)"},<br />
["Deva"] = {"Devanagari", "Nagari"},<br />
["Diak"] = {"Dives Akuru"},<br />
["Dogr"] = {"Dogra"},<br />
["Dsrt"] = {"Deseret", "Mormon"},<br />
["Dupl"] = {"Duployan shorthand", "Duployan stenography"},<br />
["Egyd"] = {"Egyptian demotic"},<br />
["Egyh"] = {"Egyptian hieratic"},<br />
["Egyp"] = {"Egyptian hieroglyphs"},<br />
["Elba"] = {"Elbasan"},<br />
["Elym"] = {"Elymaic"},<br />
["Ethi"] = {"Ethiopic", "Geʻez", "Ge'ez"},<br />
["Geok"] = {"Khutsuri (Asomtavruli and Nuskhuri)"},<br />
["Geor"] = {"Georgian (Mkhedruli and Mtavruli)"},<br />
["Glag"] = {"Glagolitic"},<br />
["Gong"] = {"Gunjala Gondi"},<br />
["Gonm"] = {"Masaram Gondi"},<br />
["Goth"] = {"Gothic"},<br />
["Gran"] = {"Grantha"},<br />
["Grek"] = {"Greek"},<br />
["Gujr"] = {"Gujarati"},<br />
["Guru"] = {"Gurmukhi"},<br />
["Hanb"] = {"Han with Bopomofo (alias for Han + Bopomofo)"},<br />
["Hang"] = {"Hangul", "Hangŭl", "Hangeul"},<br />
["Hani"] = {"Han", "Hanzi", "Kanji", "Hanja"},<br />
["Hano"] = {"Hanunoo", "Hanunóo"},<br />
["Hans"] = {"Han (Simplified variant)"},<br />
["Hant"] = {"Han (Traditional variant)"},<br />
["Hatr"] = {"Hatran"},<br />
["Hebr"] = {"Hebrew"},<br />
["Hira"] = {"Hiragana"},<br />
["Hluw"] = {"Anatolian Hieroglyphs", "Luwian Hieroglyphs", "Hittite Hieroglyphs"},<br />
["Hmng"] = {"Pahawh Hmong"},<br />
["Hmnp"] = {"Nyiakeng Puachue Hmong"},<br />
["Hrkt"] = {"Japanese syllabaries (alias for Hiragana + Katakana)"},<br />
["Hung"] = {"Old Hungarian", "Hungarian Runic"},<br />
["Inds"] = {"Indus", "Harappan"},<br />
["Ital"] = {"Old Italic (Etruscan, Oscan, etc.)"},<br />
["Jamo"] = {"Jamo (alias for Jamo subset of Hangul)"},<br />
["Java"] = {"Javanese"},<br />
["Jpan"] = {"Japanese (alias for Han + Hiragana + Katakana)"},<br />
["Jurc"] = {"Jurchen"},<br />
["Kali"] = {"Kayah Li"},<br />
["Kana"] = {"Katakana"},<br />
["Kawi"] = {"Kawi"},<br />
["Khar"] = {"Kharoshthi"},<br />
["Khmr"] = {"Khmer"},<br />
["Khoj"] = {"Khojki"},<br />
["Kitl"] = {"Khitan large script"},<br />
["Kits"] = {"Khitan small script"},<br />
["Knda"] = {"Kannada"},<br />
["Kore"] = {"Korean (alias for Hangul + Han)"},<br />
["Kpel"] = {"Kpelle"},<br />
["Kthi"] = {"Kaithi"},<br />
["Lana"] = {"Tai Tham", "Lanna"},<br />
["Laoo"] = {"Lao"},<br />
["Latf"] = {"Latin (Fraktur variant)"},<br />
["Latg"] = {"Latin (Gaelic variant)"},<br />
["Latn"] = {"Latin"},<br />
["Leke"] = {"Leke"},<br />
["Lepc"] = {"Lepcha", "Róng"},<br />
["Limb"] = {"Limbu"},<br />
["Lina"] = {"Linear A"},<br />
["Linb"] = {"Linear B"},<br />
["Lisu"] = {"Lisu", "Fraser"},<br />
["Loma"] = {"Loma"},<br />
["Lyci"] = {"Lycian"},<br />
["Lydi"] = {"Lydian"},<br />
["Mahj"] = {"Mahajani"},<br />
["Maka"] = {"Makasar"},<br />
["Mand"] = {"Mandaic", "Mandaean"},<br />
["Mani"] = {"Manichaean"},<br />
["Marc"] = {"Marchen"},<br />
["Maya"] = {"Mayan hieroglyphs"},<br />
["Medf"] = {"Medefaidrin", "Oberi Okaime", "Oberi Ɔkaimɛ"},<br />
["Mend"] = {"Mende Kikakui"},<br />
["Merc"] = {"Meroitic Cursive"},<br />
["Mero"] = {"Meroitic Hieroglyphs"},<br />
["Mlym"] = {"Malayalam"},<br />
["Modi"] = {"Modi", "Moḍī"},<br />
["Mong"] = {"Mongolian"},<br />
["Moon"] = {"Moon", "Moon code", "Moon script", "Moon type"},<br />
["Mroo"] = {"Mro", "Mru"},<br />
["Mtei"] = {"Meitei Mayek", "Meithei", "Meetei"},<br />
["Mult"] = {"Multani"},<br />
["Mymr"] = {"Myanmar", "Burmese"},<br />
["Nagm"] = {"Nag Mundari"},<br />
["Nand"] = {"Nandinagari"},<br />
["Narb"] = {"Old North Arabian", "Ancient North Arabian"},<br />
["Nbat"] = {"Nabataean"},<br />
["Newa"] = {"Newa", "Newar", "Newari", "Nepāla lipi"},<br />
["Nkdb"] = {"Naxi Dongba", "na²¹ɕi³³ to³³ba²¹", "Nakhi Tomba"},<br />
["Nkgb"] = {"Naxi Geba", "na²¹ɕi³³ gʌ²¹ba²¹", "'Na-'Khi ²Ggŏ-¹baw", "Nakhi Geba"},<br />
["Nkoo"] = {"N’Ko", "N'Ko"},<br />
["Nshu"] = {"Nüshu"},<br />
["Ogam"] = {"Ogham"},<br />
["Olck"] = {"Ol Chiki", "Ol Cemet'", "Ol", "Santali"},<br />
["Orkh"] = {"Old Turkic", "Orkhon Runic"},<br />
["Orya"] = {"Oriya", "Odia"},<br />
["Osge"] = {"Osage"},<br />
["Osma"] = {"Osmanya"},<br />
["Ougr"] = {"Old Uyghur"},<br />
["Palm"] = {"Palmyrene"},<br />
["Pauc"] = {"Pau Cin Hau"},<br />
["Pcun"] = {"Proto-Cuneiform"},<br />
["Pelm"] = {"Proto-Elamite"},<br />
["Perm"] = {"Old Permic"},<br />
["Phag"] = {"Phags-pa"},<br />
["Phli"] = {"Inscriptional Pahlavi"},<br />
["Phlp"] = {"Psalter Pahlavi"},<br />
["Phlv"] = {"Book Pahlavi"},<br />
["Phnx"] = {"Phoenician"},<br />
["Piqd"] = {"Klingon (KLI pIqaD)"},<br />
["Plrd"] = {"Miao", "Pollard"},<br />
["Prti"] = {"Inscriptional Parthian"},<br />
["Psin"] = {"Proto-Sinaitic"},<br />
["Ranj"] = {"Ranjana"},<br />
["Rjng"] = {"Rejang", "Redjang", "Kaganga"},<br />
["Rohg"] = {"Hanifi Rohingya"},<br />
["Roro"] = {"Rongorongo"},<br />
["Runr"] = {"Runic"},<br />
["Samr"] = {"Samaritan"},<br />
["Sara"] = {"Sarati"},<br />
["Sarb"] = {"Old South Arabian"},<br />
["Saur"] = {"Saurashtra"},<br />
["Sgnw"] = {"SignWriting"},<br />
["Shaw"] = {"Shavian", "Shaw"},<br />
["Shrd"] = {"Sharada", "Śāradā"},<br />
["Shui"] = {"Shuishu"},<br />
["Sidd"] = {"Siddham", "Siddhaṃ", "Siddhamātṛkā"},<br />
["Sind"] = {"Khudawadi", "Sindhi"},<br />
["Sinh"] = {"Sinhala"},<br />
["Sogd"] = {"Sogdian"},<br />
["Sogo"] = {"Old Sogdian"},<br />
["Sora"] = {"Sora Sompeng"},<br />
["Soyo"] = {"Soyombo"},<br />
["Sund"] = {"Sundanese"},<br />
["Sunu"] = {"Sunuwar"},<br />
["Sylo"] = {"Syloti Nagri"},<br />
["Syrc"] = {"Syriac"},<br />
["Syre"] = {"Syriac (Estrangelo variant)"},<br />
["Syrj"] = {"Syriac (Western variant)"},<br />
["Syrn"] = {"Syriac (Eastern variant)"},<br />
["Tagb"] = {"Tagbanwa"},<br />
["Takr"] = {"Takri", "Ṭākrī", "Ṭāṅkrī"},<br />
["Tale"] = {"Tai Le"},<br />
["Talu"] = {"New Tai Lue"},<br />
["Taml"] = {"Tamil"},<br />
["Tang"] = {"Tangut"},<br />
["Tavt"] = {"Tai Viet"},<br />
["Telu"] = {"Telugu"},<br />
["Teng"] = {"Tengwar"},<br />
["Tfng"] = {"Tifinagh", "Berber"},<br />
["Tglg"] = {"Tagalog", "Baybayin", "Alibata"},<br />
["Thaa"] = {"Thaana"},<br />
["Thai"] = {"Thai"},<br />
["Tibt"] = {"Tibetan"},<br />
["Tirh"] = {"Tirhuta"},<br />
["Tnsa"] = {"Tangsa"},<br />
["Toto"] = {"Toto"},<br />
["Ugar"] = {"Ugaritic"},<br />
["Vaii"] = {"Vai"},<br />
["Visp"] = {"Visible Speech"},<br />
["Vith"] = {"Vithkuqi"},<br />
["Wara"] = {"Warang Citi", "Varang Kshiti"},<br />
["Wcho"] = {"Wancho"},<br />
["Wole"] = {"Woleai"},<br />
["Xpeo"] = {"Old Persian"},<br />
["Xsux"] = {"Sumero-Akkadian cuneiform"},<br />
["Yezi"] = {"Yezidi"},<br />
["Yiii"] = {"Yi"},<br />
["Zanb"] = {"Zanabazar Square", "Zanabazarin Dörböljin Useg", "Xewtee Dörböljin Bicig", "Horizontal Square Script"},<br />
["Zinh"] = {"Code for inherited script"},<br />
["Zmth"] = {"Mathematical notation"},<br />
["Zsye"] = {"Symbols (Emoji variant)"},<br />
["Zsym"] = {"Symbols"},<br />
["Zxxx"] = {"Code for unwritten documents"},<br />
["Zyyy"] = {"Code for undetermined script"},<br />
["Zzzz"] = {"Code for uncoded script"}<br />
}</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Language/data/iana_regions&diff=2435
Module:Language/data/iana regions
2022-02-08T20:15:50Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>-- File-Date: 2021-12-29<br />
return {<br />
["AC"] = {"Ascension Island"},<br />
["AD"] = {"Andorra"},<br />
["AE"] = {"United Arab Emirates"},<br />
["AF"] = {"Afghanistan"},<br />
["AG"] = {"Antigua and Barbuda"},<br />
["AI"] = {"Anguilla"},<br />
["AL"] = {"Albania"},<br />
["AM"] = {"Armenia"},<br />
["AO"] = {"Angola"},<br />
["AQ"] = {"Antarctica"},<br />
["AR"] = {"Argentina"},<br />
["AS"] = {"American Samoa"},<br />
["AT"] = {"Austria"},<br />
["AU"] = {"Australia"},<br />
["AW"] = {"Aruba"},<br />
["AX"] = {"Åland Islands"},<br />
["AZ"] = {"Azerbaijan"},<br />
["BA"] = {"Bosnia and Herzegovina"},<br />
["BB"] = {"Barbados"},<br />
["BD"] = {"Bangladesh"},<br />
["BE"] = {"Belgium"},<br />
["BF"] = {"Burkina Faso"},<br />
["BG"] = {"Bulgaria"},<br />
["BH"] = {"Bahrain"},<br />
["BI"] = {"Burundi"},<br />
["BJ"] = {"Benin"},<br />
["BL"] = {"Saint Barthélemy"},<br />
["BM"] = {"Bermuda"},<br />
["BN"] = {"Brunei Darussalam"},<br />
["BO"] = {"Bolivia"},<br />
["BQ"] = {"Bonaire, Sint Eustatius and Saba"},<br />
["BR"] = {"Brazil"},<br />
["BS"] = {"Bahamas"},<br />
["BT"] = {"Bhutan"},<br />
["BV"] = {"Bouvet Island"},<br />
["BW"] = {"Botswana"},<br />
["BY"] = {"Belarus"},<br />
["BZ"] = {"Belize"},<br />
["CA"] = {"Canada"},<br />
["CC"] = {"Cocos (Keeling) Islands"},<br />
["CD"] = {"The Democratic Republic of the Congo"},<br />
["CF"] = {"Central African Republic"},<br />
["CG"] = {"Congo"},<br />
["CH"] = {"Switzerland"},<br />
["CI"] = {"Côte d'Ivoire"},<br />
["CK"] = {"Cook Islands"},<br />
["CL"] = {"Chile"},<br />
["CM"] = {"Cameroon"},<br />
["CN"] = {"China"},<br />
["CO"] = {"Colombia"},<br />
["CP"] = {"Clipperton Island"},<br />
["CR"] = {"Costa Rica"},<br />
["CU"] = {"Cuba"},<br />
["CV"] = {"Cabo Verde", "Cape Verde"},<br />
["CW"] = {"Curaçao"},<br />
["CX"] = {"Christmas Island"},<br />
["CY"] = {"Cyprus"},<br />
["CZ"] = {"Czechia", "Czech Republic"},<br />
["DE"] = {"Germany"},<br />
["DG"] = {"Diego Garcia"},<br />
["DJ"] = {"Djibouti"},<br />
["DK"] = {"Denmark"},<br />
["DM"] = {"Dominica"},<br />
["DO"] = {"Dominican Republic"},<br />
["DZ"] = {"Algeria"},<br />
["EA"] = {"Ceuta, Melilla"},<br />
["EC"] = {"Ecuador"},<br />
["EE"] = {"Estonia"},<br />
["EG"] = {"Egypt"},<br />
["EH"] = {"Western Sahara"},<br />
["ER"] = {"Eritrea"},<br />
["ES"] = {"Spain"},<br />
["ET"] = {"Ethiopia"},<br />
["EU"] = {"European Union"},<br />
["EZ"] = {"Eurozone"},<br />
["FI"] = {"Finland"},<br />
["FJ"] = {"Fiji"},<br />
["FK"] = {"Falkland Islands (Malvinas)"},<br />
["FM"] = {"Federated States of Micronesia"},<br />
["FO"] = {"Faroe Islands"},<br />
["FR"] = {"France"},<br />
["GA"] = {"Gabon"},<br />
["GB"] = {"United Kingdom"},<br />
["GD"] = {"Grenada"},<br />
["GE"] = {"Georgia"},<br />
["GF"] = {"French Guiana"},<br />
["GG"] = {"Guernsey"},<br />
["GH"] = {"Ghana"},<br />
["GI"] = {"Gibraltar"},<br />
["GL"] = {"Greenland"},<br />
["GM"] = {"Gambia"},<br />
["GN"] = {"Guinea"},<br />
["GP"] = {"Guadeloupe"},<br />
["GQ"] = {"Equatorial Guinea"},<br />
["GR"] = {"Greece"},<br />
["GS"] = {"South Georgia and the South Sandwich Islands"},<br />
["GT"] = {"Guatemala"},<br />
["GU"] = {"Guam"},<br />
["GW"] = {"Guinea-Bissau"},<br />
["GY"] = {"Guyana"},<br />
["HK"] = {"Hong Kong"},<br />
["HM"] = {"Heard Island and McDonald Islands"},<br />
["HN"] = {"Honduras"},<br />
["HR"] = {"Croatia"},<br />
["HT"] = {"Haiti"},<br />
["HU"] = {"Hungary"},<br />
["IC"] = {"Canary Islands"},<br />
["ID"] = {"Indonesia"},<br />
["IE"] = {"Ireland"},<br />
["IL"] = {"Israel"},<br />
["IM"] = {"Isle of Man"},<br />
["IN"] = {"India"},<br />
["IO"] = {"British Indian Ocean Territory"},<br />
["IQ"] = {"Iraq"},<br />
["IR"] = {"Islamic Republic of Iran"},<br />
["IS"] = {"Iceland"},<br />
["IT"] = {"Italy"},<br />
["JE"] = {"Jersey"},<br />
["JM"] = {"Jamaica"},<br />
["JO"] = {"Jordan"},<br />
["JP"] = {"Japan"},<br />
["KE"] = {"Kenya"},<br />
["KG"] = {"Kyrgyzstan"},<br />
["KH"] = {"Cambodia"},<br />
["KI"] = {"Kiribati"},<br />
["KM"] = {"Comoros"},<br />
["KN"] = {"Saint Kitts and Nevis"},<br />
["KP"] = {"Democratic People's Republic of Korea"},<br />
["KR"] = {"Republic of Korea"},<br />
["KW"] = {"Kuwait"},<br />
["KY"] = {"Cayman Islands"},<br />
["KZ"] = {"Kazakhstan"},<br />
["LA"] = {"Lao People's Democratic Republic"},<br />
["LB"] = {"Lebanon"},<br />
["LC"] = {"Saint Lucia"},<br />
["LI"] = {"Liechtenstein"},<br />
["LK"] = {"Sri Lanka"},<br />
["LR"] = {"Liberia"},<br />
["LS"] = {"Lesotho"},<br />
["LT"] = {"Lithuania"},<br />
["LU"] = {"Luxembourg"},<br />
["LV"] = {"Latvia"},<br />
["LY"] = {"Libya"},<br />
["MA"] = {"Morocco"},<br />
["MC"] = {"Monaco"},<br />
["MD"] = {"Moldova"},<br />
["ME"] = {"Montenegro"},<br />
["MF"] = {"Saint Martin (French part)"},<br />
["MG"] = {"Madagascar"},<br />
["MH"] = {"Marshall Islands"},<br />
["MK"] = {"North Macedonia"},<br />
["ML"] = {"Mali"},<br />
["MM"] = {"Myanmar"},<br />
["MN"] = {"Mongolia"},<br />
["MO"] = {"Macao"},<br />
["MP"] = {"Northern Mariana Islands"},<br />
["MQ"] = {"Martinique"},<br />
["MR"] = {"Mauritania"},<br />
["MS"] = {"Montserrat"},<br />
["MT"] = {"Malta"},<br />
["MU"] = {"Mauritius"},<br />
["MV"] = {"Maldives"},<br />
["MW"] = {"Malawi"},<br />
["MX"] = {"Mexico"},<br />
["MY"] = {"Malaysia"},<br />
["MZ"] = {"Mozambique"},<br />
["NA"] = {"Namibia"},<br />
["NC"] = {"New Caledonia"},<br />
["NE"] = {"Niger"},<br />
["NF"] = {"Norfolk Island"},<br />
["NG"] = {"Nigeria"},<br />
["NI"] = {"Nicaragua"},<br />
["NL"] = {"Netherlands"},<br />
["NO"] = {"Norway"},<br />
["NP"] = {"Nepal"},<br />
["NR"] = {"Nauru"},<br />
["NU"] = {"Niue"},<br />
["NZ"] = {"New Zealand"},<br />
["OM"] = {"Oman"},<br />
["PA"] = {"Panama"},<br />
["PE"] = {"Peru"},<br />
["PF"] = {"French Polynesia"},<br />
["PG"] = {"Papua New Guinea"},<br />
["PH"] = {"Philippines"},<br />
["PK"] = {"Pakistan"},<br />
["PL"] = {"Poland"},<br />
["PM"] = {"Saint Pierre and Miquelon"},<br />
["PN"] = {"Pitcairn"},<br />
["PR"] = {"Puerto Rico"},<br />
["PS"] = {"State of Palestine"},<br />
["PT"] = {"Portugal"},<br />
["PW"] = {"Palau"},<br />
["PY"] = {"Paraguay"},<br />
["QA"] = {"Qatar"},<br />
["RE"] = {"Réunion"},<br />
["RO"] = {"Romania"},<br />
["RS"] = {"Serbia"},<br />
["RU"] = {"Russian Federation"},<br />
["RW"] = {"Rwanda"},<br />
["SA"] = {"Saudi Arabia"},<br />
["SB"] = {"Solomon Islands"},<br />
["SC"] = {"Seychelles"},<br />
["SD"] = {"Sudan"},<br />
["SE"] = {"Sweden"},<br />
["SG"] = {"Singapore"},<br />
["SH"] = {"Saint Helena, Ascension and Tristan da Cunha"},<br />
["SI"] = {"Slovenia"},<br />
["SJ"] = {"Svalbard and Jan Mayen"},<br />
["SK"] = {"Slovakia"},<br />
["SL"] = {"Sierra Leone"},<br />
["SM"] = {"San Marino"},<br />
["SN"] = {"Senegal"},<br />
["SO"] = {"Somalia"},<br />
["SR"] = {"Suriname"},<br />
["SS"] = {"South Sudan"},<br />
["ST"] = {"Sao Tome and Principe"},<br />
["SV"] = {"El Salvador"},<br />
["SX"] = {"Sint Maarten (Dutch part)"},<br />
["SY"] = {"Syrian Arab Republic"},<br />
["SZ"] = {"Eswatini", "eSwatini", "Swaziland"},<br />
["TA"] = {"Tristan da Cunha"},<br />
["TC"] = {"Turks and Caicos Islands"},<br />
["TD"] = {"Chad"},<br />
["TF"] = {"French Southern Territories"},<br />
["TG"] = {"Togo"},<br />
["TH"] = {"Thailand"},<br />
["TJ"] = {"Tajikistan"},<br />
["TK"] = {"Tokelau"},<br />
["TL"] = {"Timor-Leste"},<br />
["TM"] = {"Turkmenistan"},<br />
["TN"] = {"Tunisia"},<br />
["TO"] = {"Tonga"},<br />
["TR"] = {"Turkey"},<br />
["TT"] = {"Trinidad and Tobago"},<br />
["TV"] = {"Tuvalu"},<br />
["TW"] = {"Taiwan, Province of China"},<br />
["TZ"] = {"United Republic of Tanzania"},<br />
["UA"] = {"Ukraine"},<br />
["UG"] = {"Uganda"},<br />
["UM"] = {"United States Minor Outlying Islands"},<br />
["UN"] = {"United Nations"},<br />
["US"] = {"United States"},<br />
["UY"] = {"Uruguay"},<br />
["UZ"] = {"Uzbekistan"},<br />
["VA"] = {"Holy See (Vatican City State)"},<br />
["VC"] = {"Saint Vincent and the Grenadines"},<br />
["VE"] = {"Venezuela"},<br />
["VG"] = {"British Virgin Islands"},<br />
["VI"] = {"U.S. Virgin Islands"},<br />
["VN"] = {"Viet Nam"},<br />
["VU"] = {"Vanuatu"},<br />
["WF"] = {"Wallis and Futuna"},<br />
["WS"] = {"Samoa"},<br />
["YE"] = {"Yemen"},<br />
["YT"] = {"Mayotte"},<br />
["ZA"] = {"South Africa"},<br />
["ZM"] = {"Zambia"},<br />
["ZW"] = {"Zimbabwe"},<br />
["001"] = {"World"},<br />
["002"] = {"Africa"},<br />
["003"] = {"North America"},<br />
["005"] = {"South America"},<br />
["009"] = {"Oceania"},<br />
["011"] = {"Western Africa"},<br />
["013"] = {"Central America"},<br />
["014"] = {"Eastern Africa"},<br />
["015"] = {"Northern Africa"},<br />
["017"] = {"Middle Africa"},<br />
["018"] = {"Southern Africa"},<br />
["019"] = {"Americas"},<br />
["021"] = {"Northern America"},<br />
["029"] = {"Caribbean"},<br />
["030"] = {"Eastern Asia"},<br />
["034"] = {"Southern Asia"},<br />
["035"] = {"South-Eastern Asia"},<br />
["039"] = {"Southern Europe"},<br />
["053"] = {"Australia and New Zealand"},<br />
["054"] = {"Melanesia"},<br />
["057"] = {"Micronesia"},<br />
["061"] = {"Polynesia"},<br />
["142"] = {"Asia"},<br />
["143"] = {"Central Asia"},<br />
["145"] = {"Western Asia"},<br />
["150"] = {"Europe"},<br />
["151"] = {"Eastern Europe"},<br />
["154"] = {"Northern Europe"},<br />
["155"] = {"Western Europe"},<br />
["202"] = {"Sub-Saharan Africa"},<br />
["419"] = {"Latin America and the Caribbean"}<br />
}</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Language/data/iana_languages&diff=2433
Module:Language/data/iana languages
2022-02-08T20:15:50Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>-- File-Date: 2021-12-29<br />
local active = {<br />
["aa"] = {"Afar"},<br />
["ab"] = {"Abkhazian"},<br />
["ae"] = {"Avestan"},<br />
["af"] = {"Afrikaans"},<br />
["ak"] = {"Akan"},<br />
["am"] = {"Amharic"},<br />
["an"] = {"Aragonese"},<br />
["ar"] = {"Arabic"},<br />
["as"] = {"Assamese"},<br />
["av"] = {"Avaric"},<br />
["ay"] = {"Aymara"},<br />
["az"] = {"Azerbaijani"},<br />
["ba"] = {"Bashkir"},<br />
["be"] = {"Belarusian"},<br />
["bg"] = {"Bulgarian"},<br />
["bh"] = {"Bihari languages"},<br />
["bi"] = {"Bislama"},<br />
["bm"] = {"Bambara"},<br />
["bn"] = {"Bengali", "Bangla"},<br />
["bo"] = {"Tibetan"},<br />
["br"] = {"Breton"},<br />
["bs"] = {"Bosnian"},<br />
["ca"] = {"Catalan", "Valencian"},<br />
["ce"] = {"Chechen"},<br />
["ch"] = {"Chamorro"},<br />
["co"] = {"Corsican"},<br />
["cr"] = {"Cree"},<br />
["cs"] = {"Czech"},<br />
["cu"] = {"Church Slavic", "Church Slavonic", "Old Bulgarian", "Old Church Slavonic", "Old Slavonic"},<br />
["cv"] = {"Chuvash"},<br />
["cy"] = {"Welsh"},<br />
["da"] = {"Danish"},<br />
["de"] = {"German"},<br />
["dv"] = {"Dhivehi", "Divehi", "Maldivian"},<br />
["dz"] = {"Dzongkha"},<br />
["ee"] = {"Ewe"},<br />
["el"] = {"Modern Greek (1453-)"},<br />
["en"] = {"English"},<br />
["eo"] = {"Esperanto"},<br />
["es"] = {"Spanish", "Castilian"},<br />
["et"] = {"Estonian"},<br />
["eu"] = {"Basque"},<br />
["fa"] = {"Persian"},<br />
["ff"] = {"Fulah"},<br />
["fi"] = {"Finnish"},<br />
["fj"] = {"Fijian"},<br />
["fo"] = {"Faroese"},<br />
["fr"] = {"French"},<br />
["fy"] = {"Western Frisian"},<br />
["ga"] = {"Irish"},<br />
["gd"] = {"Scottish Gaelic", "Gaelic"},<br />
["gl"] = {"Galician"},<br />
["gn"] = {"Guarani"},<br />
["gu"] = {"Gujarati"},<br />
["gv"] = {"Manx"},<br />
["ha"] = {"Hausa"},<br />
["he"] = {"Hebrew"},<br />
["hi"] = {"Hindi"},<br />
["ho"] = {"Hiri Motu"},<br />
["hr"] = {"Croatian"},<br />
["ht"] = {"Haitian", "Haitian Creole"},<br />
["hu"] = {"Hungarian"},<br />
["hy"] = {"Armenian"},<br />
["hz"] = {"Herero"},<br />
["ia"] = {"Interlingua (International Auxiliary Language Association)"},<br />
["id"] = {"Indonesian"},<br />
["ie"] = {"Interlingue", "Occidental"},<br />
["ig"] = {"Igbo"},<br />
["ii"] = {"Sichuan Yi", "Nuosu"},<br />
["ik"] = {"Inupiaq"},<br />
["io"] = {"Ido"},<br />
["is"] = {"Icelandic"},<br />
["it"] = {"Italian"},<br />
["iu"] = {"Inuktitut"},<br />
["ja"] = {"Japanese"},<br />
["jv"] = {"Javanese"},<br />
["ka"] = {"Georgian"},<br />
["kg"] = {"Kongo"},<br />
["ki"] = {"Kikuyu", "Gikuyu"},<br />
["kj"] = {"Kuanyama", "Kwanyama"},<br />
["kk"] = {"Kazakh"},<br />
["kl"] = {"Kalaallisut", "Greenlandic"},<br />
["km"] = {"Khmer", "Central Khmer"},<br />
["kn"] = {"Kannada"},<br />
["ko"] = {"Korean"},<br />
["kr"] = {"Kanuri"},<br />
["ks"] = {"Kashmiri"},<br />
["ku"] = {"Kurdish"},<br />
["kv"] = {"Komi"},<br />
["kw"] = {"Cornish"},<br />
["ky"] = {"Kirghiz", "Kyrgyz"},<br />
["la"] = {"Latin"},<br />
["lb"] = {"Luxembourgish", "Letzeburgesch"},<br />
["lg"] = {"Ganda", "Luganda"},<br />
["li"] = {"Limburgan", "Limburger", "Limburgish"},<br />
["ln"] = {"Lingala"},<br />
["lo"] = {"Lao"},<br />
["lt"] = {"Lithuanian"},<br />
["lu"] = {"Luba-Katanga"},<br />
["lv"] = {"Latvian"},<br />
["mg"] = {"Malagasy"},<br />
["mh"] = {"Marshallese"},<br />
["mi"] = {"Maori"},<br />
["mk"] = {"Macedonian"},<br />
["ml"] = {"Malayalam"},<br />
["mn"] = {"Mongolian"},<br />
["mr"] = {"Marathi"},<br />
["ms"] = {"Malay (macrolanguage)"},<br />
["mt"] = {"Maltese"},<br />
["my"] = {"Burmese"},<br />
["na"] = {"Nauru"},<br />
["nb"] = {"Norwegian Bokmål"},<br />
["nd"] = {"North Ndebele"},<br />
["ne"] = {"Nepali (macrolanguage)"},<br />
["ng"] = {"Ndonga"},<br />
["nl"] = {"Dutch", "Flemish"},<br />
["nn"] = {"Norwegian Nynorsk"},<br />
["no"] = {"Norwegian"},<br />
["nr"] = {"South Ndebele"},<br />
["nv"] = {"Navajo", "Navaho"},<br />
["ny"] = {"Nyanja", "Chewa", "Chichewa"},<br />
["oc"] = {"Occitan (post 1500)"},<br />
["oj"] = {"Ojibwa"},<br />
["om"] = {"Oromo"},<br />
["or"] = {"Oriya (macrolanguage)", "Odia (macrolanguage)"},<br />
["os"] = {"Ossetian", "Ossetic"},<br />
["pa"] = {"Panjabi", "Punjabi"},<br />
["pi"] = {"Pali"},<br />
["pl"] = {"Polish"},<br />
["ps"] = {"Pushto", "Pashto"},<br />
["pt"] = {"Portuguese"},<br />
["qu"] = {"Quechua"},<br />
["rm"] = {"Romansh"},<br />
["rn"] = {"Rundi"},<br />
["ro"] = {"Romanian", "Moldavian", "Moldovan"},<br />
["ru"] = {"Russian"},<br />
["rw"] = {"Kinyarwanda"},<br />
["sa"] = {"Sanskrit"},<br />
["sc"] = {"Sardinian"},<br />
["sd"] = {"Sindhi"},<br />
["se"] = {"Northern Sami"},<br />
["sg"] = {"Sango"},<br />
["sh"] = {"Serbo-Croatian"},<br />
["si"] = {"Sinhala", "Sinhalese"},<br />
["sk"] = {"Slovak"},<br />
["sl"] = {"Slovenian"},<br />
["sm"] = {"Samoan"},<br />
["sn"] = {"Shona"},<br />
["so"] = {"Somali"},<br />
["sq"] = {"Albanian"},<br />
["sr"] = {"Serbian"},<br />
["ss"] = {"Swati"},<br />
["st"] = {"Southern Sotho"},<br />
["su"] = {"Sundanese"},<br />
["sv"] = {"Swedish"},<br />
["sw"] = {"Swahili (macrolanguage)"},<br />
["ta"] = {"Tamil"},<br />
["te"] = {"Telugu"},<br />
["tg"] = {"Tajik"},<br />
["th"] = {"Thai"},<br />
["ti"] = {"Tigrinya"},<br />
["tk"] = {"Turkmen"},<br />
["tl"] = {"Tagalog"},<br />
["tn"] = {"Tswana"},<br />
["to"] = {"Tonga (Tonga Islands)"},<br />
["tr"] = {"Turkish"},<br />
["ts"] = {"Tsonga"},<br />
["tt"] = {"Tatar"},<br />
["tw"] = {"Twi"},<br />
["ty"] = {"Tahitian"},<br />
["ug"] = {"Uighur", "Uyghur"},<br />
["uk"] = {"Ukrainian"},<br />
["ur"] = {"Urdu"},<br />
["uz"] = {"Uzbek"},<br />
["ve"] = {"Venda"},<br />
["vi"] = {"Vietnamese"},<br />
["vo"] = {"Volapük"},<br />
["wa"] = {"Walloon"},<br />
["wo"] = {"Wolof"},<br />
["xh"] = {"Xhosa"},<br />
["yi"] = {"Yiddish"},<br />
["yo"] = {"Yoruba"},<br />
["za"] = {"Zhuang", "Chuang"},<br />
["zh"] = {"Chinese"},<br />
["zu"] = {"Zulu"},<br />
["aaa"] = {"Ghotuo"},<br />
["aab"] = {"Alumu-Tesu"},<br />
["aac"] = {"Ari"},<br />
["aad"] = {"Amal"},<br />
["aae"] = {"Arbëreshë Albanian"},<br />
["aaf"] = {"Aranadan"},<br />
["aag"] = {"Ambrak"},<br />
["aah"] = {"Abu' Arapesh"},<br />
["aai"] = {"Arifama-Miniafia"},<br />
["aak"] = {"Ankave"},<br />
["aal"] = {"Afade"},<br />
["aan"] = {"Anambé"},<br />
["aao"] = {"Algerian Saharan Arabic"},<br />
["aap"] = {"Pará Arára"},<br />
["aaq"] = {"Eastern Abnaki"},<br />
["aas"] = {"Aasáx"},<br />
["aat"] = {"Arvanitika Albanian"},<br />
["aau"] = {"Abau"},<br />
["aav"] = {"Austro-Asiatic languages"},<br />
["aaw"] = {"Solong"},<br />
["aax"] = {"Mandobo Atas"},<br />
["aaz"] = {"Amarasi"},<br />
["aba"] = {"Abé"},<br />
["abb"] = {"Bankon"},<br />
["abc"] = {"Ambala Ayta"},<br />
["abd"] = {"Manide"},<br />
["abe"] = {"Western Abnaki"},<br />
["abf"] = {"Abai Sungai"},<br />
["abg"] = {"Abaga"},<br />
["abh"] = {"Tajiki Arabic"},<br />
["abi"] = {"Abidji"},<br />
["abj"] = {"Aka-Bea"},<br />
["abl"] = {"Lampung Nyo"},<br />
["abm"] = {"Abanyom"},<br />
["abn"] = {"Abua"},<br />
["abo"] = {"Abon"},<br />
["abp"] = {"Abellen Ayta"},<br />
["abq"] = {"Abaza"},<br />
["abr"] = {"Abron"},<br />
["abs"] = {"Ambonese Malay"},<br />
["abt"] = {"Ambulas"},<br />
["abu"] = {"Abure"},<br />
["abv"] = {"Baharna Arabic"},<br />
["abw"] = {"Pal"},<br />
["abx"] = {"Inabaknon"},<br />
["aby"] = {"Aneme Wake"},<br />
["abz"] = {"Abui"},<br />
["aca"] = {"Achagua"},<br />
["acb"] = {"Áncá"},<br />
["acd"] = {"Gikyode"},<br />
["ace"] = {"Achinese"},<br />
["acf"] = {"Saint Lucian Creole French"},<br />
["ach"] = {"Acoli"},<br />
["aci"] = {"Aka-Cari"},<br />
["ack"] = {"Aka-Kora"},<br />
["acl"] = {"Akar-Bale"},<br />
["acm"] = {"Mesopotamian Arabic"},<br />
["acn"] = {"Achang"},<br />
["acp"] = {"Eastern Acipa"},<br />
["acq"] = {"Ta'izzi-Adeni Arabic"},<br />
["acr"] = {"Achi"},<br />
["acs"] = {"Acroá"},<br />
["act"] = {"Achterhoeks"},<br />
["acu"] = {"Achuar-Shiwiar"},<br />
["acv"] = {"Achumawi"},<br />
["acw"] = {"Hijazi Arabic"},<br />
["acx"] = {"Omani Arabic"},<br />
["acy"] = {"Cypriot Arabic"},<br />
["acz"] = {"Acheron"},<br />
["ada"] = {"Adangme"},<br />
["adb"] = {"Atauran"},<br />
["add"] = {"Lidzonka", "Dzodinka"},<br />
["ade"] = {"Adele"},<br />
["adf"] = {"Dhofari Arabic"},<br />
["adg"] = {"Andegerebinha"},<br />
["adh"] = {"Adhola"},<br />
["adi"] = {"Adi"},<br />
["adj"] = {"Adioukrou"},<br />
["adl"] = {"Galo"},<br />
["adn"] = {"Adang"},<br />
["ado"] = {"Abu"},<br />
["adq"] = {"Adangbe"},<br />
["adr"] = {"Adonara"},<br />
["ads"] = {"Adamorobe Sign Language"},<br />
["adt"] = {"Adnyamathanha"},<br />
["adu"] = {"Aduge"},<br />
["adw"] = {"Amundava"},<br />
["adx"] = {"Amdo Tibetan"},<br />
["ady"] = {"Adyghe", "Adygei"},<br />
["adz"] = {"Adzera"},<br />
["aea"] = {"Areba"},<br />
["aeb"] = {"Tunisian Arabic"},<br />
["aec"] = {"Saidi Arabic"},<br />
["aed"] = {"Argentine Sign Language"},<br />
["aee"] = {"Northeast Pashai", "Northeast Pashayi"},<br />
["aek"] = {"Haeke"},<br />
["ael"] = {"Ambele"},<br />
["aem"] = {"Arem"},<br />
["aen"] = {"Armenian Sign Language"},<br />
["aeq"] = {"Aer"},<br />
["aer"] = {"Eastern Arrernte"},<br />
["aes"] = {"Alsea"},<br />
["aeu"] = {"Akeu"},<br />
["aew"] = {"Ambakich"},<br />
["aey"] = {"Amele"},<br />
["aez"] = {"Aeka"},<br />
["afa"] = {"Afro-Asiatic languages"},<br />
["afb"] = {"Gulf Arabic"},<br />
["afd"] = {"Andai"},<br />
["afe"] = {"Putukwam"},<br />
["afg"] = {"Afghan Sign Language"},<br />
["afh"] = {"Afrihili"},<br />
["afi"] = {"Akrukay", "Chini"},<br />
["afk"] = {"Nanubae"},<br />
["afn"] = {"Defaka"},<br />
["afo"] = {"Eloyi"},<br />
["afp"] = {"Tapei"},<br />
["afs"] = {"Afro-Seminole Creole"},<br />
["aft"] = {"Afitti"},<br />
["afu"] = {"Awutu"},<br />
["afz"] = {"Obokuitai"},<br />
["aga"] = {"Aguano"},<br />
["agb"] = {"Legbo"},<br />
["agc"] = {"Agatu"},<br />
["agd"] = {"Agarabi"},<br />
["age"] = {"Angal"},<br />
["agf"] = {"Arguni"},<br />
["agg"] = {"Angor"},<br />
["agh"] = {"Ngelima"},<br />
["agi"] = {"Agariya"},<br />
["agj"] = {"Argobba"},<br />
["agk"] = {"Isarog Agta"},<br />
["agl"] = {"Fembe"},<br />
["agm"] = {"Angaataha"},<br />
["agn"] = {"Agutaynen"},<br />
["ago"] = {"Tainae"},<br />
["agq"] = {"Aghem"},<br />
["agr"] = {"Aguaruna"},<br />
["ags"] = {"Esimbi"},<br />
["agt"] = {"Central Cagayan Agta"},<br />
["agu"] = {"Aguacateco"},<br />
["agv"] = {"Remontado Dumagat"},<br />
["agw"] = {"Kahua"},<br />
["agx"] = {"Aghul"},<br />
["agy"] = {"Southern Alta"},<br />
["agz"] = {"Mt. Iriga Agta"},<br />
["aha"] = {"Ahanta"},<br />
["ahb"] = {"Axamb"},<br />
["ahg"] = {"Qimant"},<br />
["ahh"] = {"Aghu"},<br />
["ahi"] = {"Tiagbamrin Aizi"},<br />
["ahk"] = {"Akha"},<br />
["ahl"] = {"Igo"},<br />
["ahm"] = {"Mobumrin Aizi"},<br />
["ahn"] = {"Àhàn"},<br />
["aho"] = {"Ahom"},<br />
["ahp"] = {"Aproumu Aizi"},<br />
["ahr"] = {"Ahirani"},<br />
["ahs"] = {"Ashe"},<br />
["aht"] = {"Ahtena"},<br />
["aia"] = {"Arosi"},<br />
["aib"] = {"Ainu (China)"},<br />
["aic"] = {"Ainbai"},<br />
["aid"] = {"Alngith"},<br />
["aie"] = {"Amara"},<br />
["aif"] = {"Agi"},<br />
["aig"] = {"Antigua and Barbuda Creole English"},<br />
["aih"] = {"Ai-Cham"},<br />
["aii"] = {"Assyrian Neo-Aramaic"},<br />
["aij"] = {"Lishanid Noshan"},<br />
["aik"] = {"Ake"},<br />
["ail"] = {"Aimele"},<br />
["aim"] = {"Aimol"},<br />
["ain"] = {"Ainu (Japan)"},<br />
["aio"] = {"Aiton"},<br />
["aip"] = {"Burumakok"},<br />
["aiq"] = {"Aimaq"},<br />
["air"] = {"Airoran"},<br />
["ait"] = {"Arikem"},<br />
["aiw"] = {"Aari"},<br />
["aix"] = {"Aighon"},<br />
["aiy"] = {"Ali"},<br />
["aja"] = {"Aja (South Sudan)"},<br />
["ajg"] = {"Aja (Benin)"},<br />
["aji"] = {"Ajië"},<br />
["ajn"] = {"Andajin"},<br />
["ajp"] = {"South Levantine Arabic"},<br />
["ajt"] = {"Judeo-Tunisian Arabic"},<br />
["aju"] = {"Judeo-Moroccan Arabic"},<br />
["ajw"] = {"Ajawa"},<br />
["ajz"] = {"Amri Karbi"},<br />
["akb"] = {"Batak Angkola"},<br />
["akc"] = {"Mpur"},<br />
["akd"] = {"Ukpet-Ehom"},<br />
["ake"] = {"Akawaio"},<br />
["akf"] = {"Akpa"},<br />
["akg"] = {"Anakalangu"},<br />
["akh"] = {"Angal Heneng"},<br />
["aki"] = {"Aiome"},<br />
["akj"] = {"Aka-Jeru"},<br />
["akk"] = {"Akkadian"},<br />
["akl"] = {"Aklanon"},<br />
["akm"] = {"Aka-Bo"},<br />
["ako"] = {"Akurio"},<br />
["akp"] = {"Siwu"},<br />
["akq"] = {"Ak"},<br />
["akr"] = {"Araki"},<br />
["aks"] = {"Akaselem"},<br />
["akt"] = {"Akolet"},<br />
["aku"] = {"Akum"},<br />
["akv"] = {"Akhvakh"},<br />
["akw"] = {"Akwa"},<br />
["akx"] = {"Aka-Kede"},<br />
["aky"] = {"Aka-Kol"},<br />
["akz"] = {"Alabama"},<br />
["ala"] = {"Alago"},<br />
["alc"] = {"Qawasqar"},<br />
["ald"] = {"Alladian"},<br />
["ale"] = {"Aleut"},<br />
["alf"] = {"Alege"},<br />
["alg"] = {"Algonquian languages"},<br />
["alh"] = {"Alawa"},<br />
["ali"] = {"Amaimon"},<br />
["alj"] = {"Alangan"},<br />
["alk"] = {"Alak"},<br />
["all"] = {"Allar"},<br />
["alm"] = {"Amblong"},<br />
["aln"] = {"Gheg Albanian"},<br />
["alo"] = {"Larike-Wakasihu"},<br />
["alp"] = {"Alune"},<br />
["alq"] = {"Algonquin"},<br />
["alr"] = {"Alutor"},<br />
["als"] = {"Tosk Albanian"},<br />
["alt"] = {"Southern Altai"},<br />
["alu"] = {"'Are'are"},<br />
["alv"] = {"Atlantic-Congo languages"},<br />
["alw"] = {"Alaba-K’abeena", "Wanbasana"},<br />
["alx"] = {"Amol"},<br />
["aly"] = {"Alyawarr"},<br />
["alz"] = {"Alur"},<br />
["ama"] = {"Amanayé"},<br />
["amb"] = {"Ambo"},<br />
["amc"] = {"Amahuaca"},<br />
["ame"] = {"Yanesha'"},<br />
["amf"] = {"Hamer-Banna"},<br />
["amg"] = {"Amurdak"},<br />
["ami"] = {"Amis"},<br />
["amj"] = {"Amdang"},<br />
["amk"] = {"Ambai"},<br />
["aml"] = {"War-Jaintia"},<br />
["amm"] = {"Ama (Papua New Guinea)"},<br />
["amn"] = {"Amanab"},<br />
["amo"] = {"Amo"},<br />
["amp"] = {"Alamblak"},<br />
["amq"] = {"Amahai"},<br />
["amr"] = {"Amarakaeri"},<br />
["ams"] = {"Southern Amami-Oshima"},<br />
["amt"] = {"Amto"},<br />
["amu"] = {"Guerrero Amuzgo"},<br />
["amv"] = {"Ambelau"},<br />
["amw"] = {"Western Neo-Aramaic"},<br />
["amx"] = {"Anmatyerre"},<br />
["amy"] = {"Ami"},<br />
["amz"] = {"Atampaya"},<br />
["ana"] = {"Andaqui"},<br />
["anb"] = {"Andoa"},<br />
["anc"] = {"Ngas"},<br />
["and"] = {"Ansus"},<br />
["ane"] = {"Xârâcùù"},<br />
["anf"] = {"Animere"},<br />
["ang"] = {"Old English (ca. 450-1100)"},<br />
["anh"] = {"Nend"},<br />
["ani"] = {"Andi"},<br />
["anj"] = {"Anor"},<br />
["ank"] = {"Goemai"},<br />
["anl"] = {"Anu-Hkongso Chin"},<br />
["anm"] = {"Anal"},<br />
["ann"] = {"Obolo"},<br />
["ano"] = {"Andoque"},<br />
["anp"] = {"Angika"},<br />
["anq"] = {"Jarawa (India)"},<br />
["anr"] = {"Andh"},<br />
["ans"] = {"Anserma"},<br />
["ant"] = {"Antakarinya", "Antikarinya"},<br />
["anu"] = {"Anuak"},<br />
["anv"] = {"Denya"},<br />
["anw"] = {"Anaang"},<br />
["anx"] = {"Andra-Hus"},<br />
["any"] = {"Anyin"},<br />
["anz"] = {"Anem"},<br />
["aoa"] = {"Angolar"},<br />
["aob"] = {"Abom"},<br />
["aoc"] = {"Pemon"},<br />
["aod"] = {"Andarum"},<br />
["aoe"] = {"Angal Enen"},<br />
["aof"] = {"Bragat"},<br />
["aog"] = {"Angoram"},<br />
["aoi"] = {"Anindilyakwa"},<br />
["aoj"] = {"Mufian"},<br />
["aok"] = {"Arhö"},<br />
["aol"] = {"Alor"},<br />
["aom"] = {"Ömie"},<br />
["aon"] = {"Bumbita Arapesh"},<br />
["aor"] = {"Aore"},<br />
["aos"] = {"Taikat"},<br />
["aot"] = {"Atong (India)", "A'tong"},<br />
["aou"] = {"A'ou"},<br />
["aox"] = {"Atorada"},<br />
["aoz"] = {"Uab Meto"},<br />
["apa"] = {"Apache languages"},<br />
["apb"] = {"Sa'a"},<br />
["apc"] = {"North Levantine Arabic"},<br />
["apd"] = {"Sudanese Arabic"},<br />
["ape"] = {"Bukiyip"},<br />
["apf"] = {"Pahanan Agta"},<br />
["apg"] = {"Ampanang"},<br />
["aph"] = {"Athpariya"},<br />
["api"] = {"Apiaká"},<br />
["apj"] = {"Jicarilla Apache"},<br />
["apk"] = {"Kiowa Apache"},<br />
["apl"] = {"Lipan Apache"},<br />
["apm"] = {"Mescalero-Chiricahua Apache"},<br />
["apn"] = {"Apinayé"},<br />
["apo"] = {"Ambul"},<br />
["app"] = {"Apma"},<br />
["apq"] = {"A-Pucikwar"},<br />
["apr"] = {"Arop-Lokep"},<br />
["aps"] = {"Arop-Sissano"},<br />
["apt"] = {"Apatani"},<br />
["apu"] = {"Apurinã"},<br />
["apv"] = {"Alapmunte"},<br />
["apw"] = {"Western Apache"},<br />
["apx"] = {"Aputai"},<br />
["apy"] = {"Apalaí"},<br />
["apz"] = {"Safeyoka"},<br />
["aqa"] = {"Alacalufan languages"},<br />
["aqc"] = {"Archi"},<br />
["aqd"] = {"Ampari Dogon"},<br />
["aqg"] = {"Arigidi"},<br />
["aqk"] = {"Aninka"},<br />
["aql"] = {"Algic languages"},<br />
["aqm"] = {"Atohwaim"},<br />
["aqn"] = {"Northern Alta"},<br />
["aqp"] = {"Atakapa"},<br />
["aqr"] = {"Arhâ"},<br />
["aqt"] = {"Angaité"},<br />
["aqz"] = {"Akuntsu"},<br />
["arb"] = {"Standard Arabic"},<br />
["arc"] = {"Official Aramaic (700-300 BCE)", "Imperial Aramaic (700-300 BCE)"},<br />
["ard"] = {"Arabana"},<br />
["are"] = {"Western Arrarnta"},<br />
["arh"] = {"Arhuaco"},<br />
["ari"] = {"Arikara"},<br />
["arj"] = {"Arapaso"},<br />
["ark"] = {"Arikapú"},<br />
["arl"] = {"Arabela"},<br />
["arn"] = {"Mapudungun", "Mapuche"},<br />
["aro"] = {"Araona"},<br />
["arp"] = {"Arapaho"},<br />
["arq"] = {"Algerian Arabic"},<br />
["arr"] = {"Karo (Brazil)"},<br />
["ars"] = {"Najdi Arabic"},<br />
["art"] = {"Artificial languages"},<br />
["aru"] = {"Aruá (Amazonas State)", "Arawá"},<br />
["arv"] = {"Arbore"},<br />
["arw"] = {"Arawak"},<br />
["arx"] = {"Aruá (Rodonia State)"},<br />
["ary"] = {"Moroccan Arabic"},<br />
["arz"] = {"Egyptian Arabic"},<br />
["asa"] = {"Asu (Tanzania)"},<br />
["asb"] = {"Assiniboine"},<br />
["asc"] = {"Casuarina Coast Asmat"},<br />
["ase"] = {"American Sign Language"},<br />
["asf"] = {"Auslan", "Australian Sign Language"},<br />
["asg"] = {"Cishingini"},<br />
["ash"] = {"Abishira"},<br />
["asi"] = {"Buruwai"},<br />
["asj"] = {"Sari"},<br />
["ask"] = {"Ashkun"},<br />
["asl"] = {"Asilulu"},<br />
["asn"] = {"Xingú Asuriní"},<br />
["aso"] = {"Dano"},<br />
["asp"] = {"Algerian Sign Language"},<br />
["asq"] = {"Austrian Sign Language"},<br />
["asr"] = {"Asuri"},<br />
["ass"] = {"Ipulo"},<br />
["ast"] = {"Asturian", "Asturleonese", "Bable", "Leonese"},<br />
["asu"] = {"Tocantins Asurini"},<br />
["asv"] = {"Asoa"},<br />
["asw"] = {"Australian Aborigines Sign Language"},<br />
["asx"] = {"Muratayak"},<br />
["asy"] = {"Yaosakor Asmat"},<br />
["asz"] = {"As"},<br />
["ata"] = {"Pele-Ata"},<br />
["atb"] = {"Zaiwa"},<br />
["atc"] = {"Atsahuaca"},<br />
["atd"] = {"Ata Manobo"},<br />
["ate"] = {"Atemble"},<br />
["atg"] = {"Ivbie North-Okpela-Arhe"},<br />
["ath"] = {"Athapascan languages"},<br />
["ati"] = {"Attié"},<br />
["atj"] = {"Atikamekw"},<br />
["atk"] = {"Ati"},<br />
["atl"] = {"Mt. Iraya Agta"},<br />
["atm"] = {"Ata"},<br />
["atn"] = {"Ashtiani"},<br />
["ato"] = {"Atong (Cameroon)"},<br />
["atp"] = {"Pudtol Atta"},<br />
["atq"] = {"Aralle-Tabulahan"},<br />
["atr"] = {"Waimiri-Atroari"},<br />
["ats"] = {"Gros Ventre"},<br />
["att"] = {"Pamplona Atta"},<br />
["atu"] = {"Reel"},<br />
["atv"] = {"Northern Altai"},<br />
["atw"] = {"Atsugewi"},<br />
["atx"] = {"Arutani"},<br />
["aty"] = {"Aneityum"},<br />
["atz"] = {"Arta"},<br />
["aua"] = {"Asumboa"},<br />
["aub"] = {"Alugu"},<br />
["auc"] = {"Waorani"},<br />
["aud"] = {"Anuta"},<br />
["auf"] = {"Arauan languages"},<br />
["aug"] = {"Aguna"},<br />
["auh"] = {"Aushi"},<br />
["aui"] = {"Anuki"},<br />
["auj"] = {"Awjilah"},<br />
["auk"] = {"Heyo"},<br />
["aul"] = {"Aulua"},<br />
["aum"] = {"Asu (Nigeria)"},<br />
["aun"] = {"Molmo One"},<br />
["auo"] = {"Auyokawa"},<br />
["aup"] = {"Makayam"},<br />
["auq"] = {"Anus", "Korur"},<br />
["aur"] = {"Aruek"},<br />
["aus"] = {"Australian languages"},<br />
["aut"] = {"Austral"},<br />
["auu"] = {"Auye"},<br />
["auw"] = {"Awyi"},<br />
["aux"] = {"Aurá"},<br />
["auy"] = {"Awiyaana"},<br />
["auz"] = {"Uzbeki Arabic"},<br />
["avb"] = {"Avau"},<br />
["avd"] = {"Alviri-Vidari"},<br />
["avi"] = {"Avikam"},<br />
["avk"] = {"Kotava"},<br />
["avl"] = {"Eastern Egyptian Bedawi Arabic"},<br />
["avm"] = {"Angkamuthi"},<br />
["avn"] = {"Avatime"},<br />
["avo"] = {"Agavotaguerra"},<br />
["avs"] = {"Aushiri"},<br />
["avt"] = {"Au"},<br />
["avu"] = {"Avokaya"},<br />
["avv"] = {"Avá-Canoeiro"},<br />
["awa"] = {"Awadhi"},<br />
["awb"] = {"Awa (Papua New Guinea)"},<br />
["awc"] = {"Cicipu"},<br />
["awd"] = {"Arawakan languages"},<br />
["awe"] = {"Awetí"},<br />
["awg"] = {"Anguthimri"},<br />
["awh"] = {"Awbono"},<br />
["awi"] = {"Aekyom"},<br />
["awk"] = {"Awabakal"},<br />
["awm"] = {"Arawum"},<br />
["awn"] = {"Awngi"},<br />
["awo"] = {"Awak"},<br />
["awr"] = {"Awera"},<br />
["aws"] = {"South Awyu"},<br />
["awt"] = {"Araweté"},<br />
["awu"] = {"Central Awyu"},<br />
["awv"] = {"Jair Awyu"},<br />
["aww"] = {"Awun"},<br />
["awx"] = {"Awara"},<br />
["awy"] = {"Edera Awyu"},<br />
["axb"] = {"Abipon"},<br />
["axe"] = {"Ayerrerenge"},<br />
["axg"] = {"Mato Grosso Arára"},<br />
["axk"] = {"Yaka (Central African Republic)"},<br />
["axl"] = {"Lower Southern Aranda"},<br />
["axm"] = {"Middle Armenian"},<br />
["axx"] = {"Xârâgurè"},<br />
["aya"] = {"Awar"},<br />
["ayb"] = {"Ayizo Gbe"},<br />
["ayc"] = {"Southern Aymara"},<br />
["ayd"] = {"Ayabadhu"},<br />
["aye"] = {"Ayere"},<br />
["ayg"] = {"Ginyanga"},<br />
["ayh"] = {"Hadrami Arabic"},<br />
["ayi"] = {"Leyigha"},<br />
["ayk"] = {"Akuku"},<br />
["ayl"] = {"Libyan Arabic"},<br />
["ayn"] = {"Sanaani Arabic"},<br />
["ayo"] = {"Ayoreo"},<br />
["ayp"] = {"North Mesopotamian Arabic"},<br />
["ayq"] = {"Ayi (Papua New Guinea)"},<br />
["ayr"] = {"Central Aymara"},<br />
["ays"] = {"Sorsogon Ayta"},<br />
["ayt"] = {"Magbukun Ayta"},<br />
["ayu"] = {"Ayu"},<br />
["ayz"] = {"Mai Brat"},<br />
["aza"] = {"Azha"},<br />
["azb"] = {"South Azerbaijani"},<br />
["azc"] = {"Uto-Aztecan languages"},<br />
["azd"] = {"Eastern Durango Nahuatl"},<br />
["azg"] = {"San Pedro Amuzgos Amuzgo"},<br />
["azj"] = {"North Azerbaijani"},<br />
["azm"] = {"Ipalapa Amuzgo"},<br />
["azn"] = {"Western Durango Nahuatl"},<br />
["azo"] = {"Awing"},<br />
["azt"] = {"Faire Atta"},<br />
["azz"] = {"Highland Puebla Nahuatl"},<br />
["baa"] = {"Babatana"},<br />
["bab"] = {"Bainouk-Gunyuño"},<br />
["bac"] = {"Badui"},<br />
["bad"] = {"Banda languages"},<br />
["bae"] = {"Baré"},<br />
["baf"] = {"Nubaca"},<br />
["bag"] = {"Tuki"},<br />
["bah"] = {"Bahamas Creole English"},<br />
["bai"] = {"Bamileke languages"},<br />
["baj"] = {"Barakai"},<br />
["bal"] = {"Baluchi"},<br />
["ban"] = {"Balinese"},<br />
["bao"] = {"Waimaha"},<br />
["bap"] = {"Bantawa"},<br />
["bar"] = {"Bavarian"},<br />
["bas"] = {"Basa (Cameroon)"},<br />
["bat"] = {"Baltic languages"},<br />
["bau"] = {"Bada (Nigeria)"},<br />
["bav"] = {"Vengo"},<br />
["baw"] = {"Bambili-Bambui"},<br />
["bax"] = {"Bamun"},<br />
["bay"] = {"Batuley"},<br />
["bba"] = {"Baatonum"},<br />
["bbb"] = {"Barai"},<br />
["bbc"] = {"Batak Toba"},<br />
["bbd"] = {"Bau"},<br />
["bbe"] = {"Bangba"},<br />
["bbf"] = {"Baibai"},<br />
["bbg"] = {"Barama"},<br />
["bbh"] = {"Bugan"},<br />
["bbi"] = {"Barombi"},<br />
["bbj"] = {"Ghomálá'"},<br />
["bbk"] = {"Babanki"},<br />
["bbl"] = {"Bats"},<br />
["bbm"] = {"Babango"},<br />
["bbn"] = {"Uneapa"},<br />
["bbo"] = {"Northern Bobo Madaré", "Konabéré"},<br />
["bbp"] = {"West Central Banda"},<br />
["bbq"] = {"Bamali"},<br />
["bbr"] = {"Girawa"},<br />
["bbs"] = {"Bakpinka"},<br />
["bbt"] = {"Mburku"},<br />
["bbu"] = {"Kulung (Nigeria)"},<br />
["bbv"] = {"Karnai"},<br />
["bbw"] = {"Baba"},<br />
["bbx"] = {"Bubia"},<br />
["bby"] = {"Befang"},<br />
["bca"] = {"Central Bai"},<br />
["bcb"] = {"Bainouk-Samik"},<br />
["bcc"] = {"Southern Balochi"},<br />
["bcd"] = {"North Babar"},<br />
["bce"] = {"Bamenyam"},<br />
["bcf"] = {"Bamu"},<br />
["bcg"] = {"Baga Pokur"},<br />
["bch"] = {"Bariai"},<br />
["bci"] = {"Baoulé"},<br />
["bcj"] = {"Bardi"},<br />
["bck"] = {"Bunuba"},<br />
["bcl"] = {"Central Bikol"},<br />
["bcm"] = {"Bannoni"},<br />
["bcn"] = {"Bali (Nigeria)"},<br />
["bco"] = {"Kaluli"},<br />
["bcp"] = {"Bali (Democratic Republic of Congo)"},<br />
["bcq"] = {"Bench"},<br />
["bcr"] = {"Babine"},<br />
["bcs"] = {"Kohumono"},<br />
["bct"] = {"Bendi"},<br />
["bcu"] = {"Awad Bing"},<br />
["bcv"] = {"Shoo-Minda-Nye"},<br />
["bcw"] = {"Bana"},<br />
["bcy"] = {"Bacama"},<br />
["bcz"] = {"Bainouk-Gunyaamolo"},<br />
["bda"] = {"Bayot"},<br />
["bdb"] = {"Basap"},<br />
["bdc"] = {"Emberá-Baudó"},<br />
["bdd"] = {"Bunama"},<br />
["bde"] = {"Bade"},<br />
["bdf"] = {"Biage"},<br />
["bdg"] = {"Bonggi"},<br />
["bdh"] = {"Baka (South Sudan)"},<br />
["bdi"] = {"Burun"},<br />
["bdj"] = {"Bai (South Sudan)", "Bai"},<br />
["bdk"] = {"Budukh"},<br />
["bdl"] = {"Indonesian Bajau"},<br />
["bdm"] = {"Buduma"},<br />
["bdn"] = {"Baldemu"},<br />
["bdo"] = {"Morom"},<br />
["bdp"] = {"Bende"},<br />
["bdq"] = {"Bahnar"},<br />
["bdr"] = {"West Coast Bajau"},<br />
["bds"] = {"Burunge"},<br />
["bdt"] = {"Bokoto"},<br />
["bdu"] = {"Oroko"},<br />
["bdv"] = {"Bodo Parja"},<br />
["bdw"] = {"Baham"},<br />
["bdx"] = {"Budong-Budong"},<br />
["bdy"] = {"Bandjalang"},<br />
["bdz"] = {"Badeshi"},<br />
["bea"] = {"Beaver"},<br />
["beb"] = {"Bebele"},<br />
["bec"] = {"Iceve-Maci"},<br />
["bed"] = {"Bedoanas"},<br />
["bee"] = {"Byangsi"},<br />
["bef"] = {"Benabena"},<br />
["beg"] = {"Belait"},<br />
["beh"] = {"Biali"},<br />
["bei"] = {"Bekati'"},<br />
["bej"] = {"Beja", "Bedawiyet"},<br />
["bek"] = {"Bebeli"},<br />
["bem"] = {"Bemba (Zambia)"},<br />
["beo"] = {"Beami"},<br />
["bep"] = {"Besoa"},<br />
["beq"] = {"Beembe"},<br />
["ber"] = {"Berber languages"},<br />
["bes"] = {"Besme"},<br />
["bet"] = {"Guiberoua Béte"},<br />
["beu"] = {"Blagar"},<br />
["bev"] = {"Daloa Bété"},<br />
["bew"] = {"Betawi"},<br />
["bex"] = {"Jur Modo"},<br />
["bey"] = {"Beli (Papua New Guinea)"},<br />
["bez"] = {"Bena (Tanzania)"},<br />
["bfa"] = {"Bari"},<br />
["bfb"] = {"Pauri Bareli"},<br />
["bfc"] = {"Panyi Bai", "Northern Bai"},<br />
["bfd"] = {"Bafut"},<br />
["bfe"] = {"Betaf", "Tena"},<br />
["bff"] = {"Bofi"},<br />
["bfg"] = {"Busang Kayan"},<br />
["bfh"] = {"Blafe"},<br />
["bfi"] = {"British Sign Language"},<br />
["bfj"] = {"Bafanji"},<br />
["bfk"] = {"Ban Khor Sign Language"},<br />
["bfl"] = {"Banda-Ndélé"},<br />
["bfm"] = {"Mmen"},<br />
["bfn"] = {"Bunak"},<br />
["bfo"] = {"Malba Birifor"},<br />
["bfp"] = {"Beba"},<br />
["bfq"] = {"Badaga"},<br />
["bfr"] = {"Bazigar"},<br />
["bfs"] = {"Southern Bai"},<br />
["bft"] = {"Balti"},<br />
["bfu"] = {"Gahri"},<br />
["bfw"] = {"Bondo"},<br />
["bfx"] = {"Bantayanon"},<br />
["bfy"] = {"Bagheli"},<br />
["bfz"] = {"Mahasu Pahari"},<br />
["bga"] = {"Gwamhi-Wuri"},<br />
["bgb"] = {"Bobongko"},<br />
["bgc"] = {"Haryanvi"},<br />
["bgd"] = {"Rathwi Bareli"},<br />
["bge"] = {"Bauria"},<br />
["bgf"] = {"Bangandu"},<br />
["bgg"] = {"Bugun"},<br />
["bgi"] = {"Giangan"},<br />
["bgj"] = {"Bangolan"},<br />
["bgk"] = {"Bit", "Buxinhua"},<br />
["bgl"] = {"Bo (Laos)"},<br />
["bgn"] = {"Western Balochi"},<br />
["bgo"] = {"Baga Koga"},<br />
["bgp"] = {"Eastern Balochi"},<br />
["bgq"] = {"Bagri"},<br />
["bgr"] = {"Bawm Chin"},<br />
["bgs"] = {"Tagabawa"},<br />
["bgt"] = {"Bughotu"},<br />
["bgu"] = {"Mbongno"},<br />
["bgv"] = {"Warkay-Bipim"},<br />
["bgw"] = {"Bhatri"},<br />
["bgx"] = {"Balkan Gagauz Turkish"},<br />
["bgy"] = {"Benggoi"},<br />
["bgz"] = {"Banggai"},<br />
["bha"] = {"Bharia"},<br />
["bhb"] = {"Bhili"},<br />
["bhc"] = {"Biga"},<br />
["bhd"] = {"Bhadrawahi"},<br />
["bhe"] = {"Bhaya"},<br />
["bhf"] = {"Odiai"},<br />
["bhg"] = {"Binandere"},<br />
["bhh"] = {"Bukharic"},<br />
["bhi"] = {"Bhilali"},<br />
["bhj"] = {"Bahing"},<br />
["bhl"] = {"Bimin"},<br />
["bhm"] = {"Bathari"},<br />
["bhn"] = {"Bohtan Neo-Aramaic"},<br />
["bho"] = {"Bhojpuri"},<br />
["bhp"] = {"Bima"},<br />
["bhq"] = {"Tukang Besi South"},<br />
["bhr"] = {"Bara Malagasy"},<br />
["bhs"] = {"Buwal"},<br />
["bht"] = {"Bhattiyali"},<br />
["bhu"] = {"Bhunjia"},<br />
["bhv"] = {"Bahau"},<br />
["bhw"] = {"Biak"},<br />
["bhx"] = {"Bhalay"},<br />
["bhy"] = {"Bhele"},<br />
["bhz"] = {"Bada (Indonesia)"},<br />
["bia"] = {"Badimaya"},<br />
["bib"] = {"Bissa", "Bisa"},<br />
["bid"] = {"Bidiyo"},<br />
["bie"] = {"Bepour"},<br />
["bif"] = {"Biafada"},<br />
["big"] = {"Biangai"},<br />
["bik"] = {"Bikol"},<br />
["bil"] = {"Bile"},<br />
["bim"] = {"Bimoba"},<br />
["bin"] = {"Bini", "Edo"},<br />
["bio"] = {"Nai"},<br />
["bip"] = {"Bila"},<br />
["biq"] = {"Bipi"},<br />
["bir"] = {"Bisorio"},<br />
["bit"] = {"Berinomo"},<br />
["biu"] = {"Biete"},<br />
["biv"] = {"Southern Birifor"},<br />
["biw"] = {"Kol (Cameroon)"},<br />
["bix"] = {"Bijori"},<br />
["biy"] = {"Birhor"},<br />
["biz"] = {"Baloi"},<br />
["bja"] = {"Budza"},<br />
["bjb"] = {"Banggarla"},<br />
["bjc"] = {"Bariji"},<br />
["bje"] = {"Biao-Jiao Mien"},<br />
["bjf"] = {"Barzani Jewish Neo-Aramaic"},<br />
["bjg"] = {"Bidyogo"},<br />
["bjh"] = {"Bahinemo"},<br />
["bji"] = {"Burji"},<br />
["bjj"] = {"Kanauji"},<br />
["bjk"] = {"Barok"},<br />
["bjl"] = {"Bulu (Papua New Guinea)"},<br />
["bjm"] = {"Bajelani"},<br />
["bjn"] = {"Banjar"},<br />
["bjo"] = {"Mid-Southern Banda"},<br />
["bjp"] = {"Fanamaket"},<br />
["bjr"] = {"Binumarien"},<br />
["bjs"] = {"Bajan"},<br />
["bjt"] = {"Balanta-Ganja"},<br />
["bju"] = {"Busuu"},<br />
["bjv"] = {"Bedjond"},<br />
["bjw"] = {"Bakwé"},<br />
["bjx"] = {"Banao Itneg"},<br />
["bjy"] = {"Bayali"},<br />
["bjz"] = {"Baruga"},<br />
["bka"] = {"Kyak"},<br />
["bkc"] = {"Baka (Cameroon)"},<br />
["bkd"] = {"Binukid", "Talaandig"},<br />
["bkf"] = {"Beeke"},<br />
["bkg"] = {"Buraka"},<br />
["bkh"] = {"Bakoko"},<br />
["bki"] = {"Baki"},<br />
["bkj"] = {"Pande"},<br />
["bkk"] = {"Brokskat"},<br />
["bkl"] = {"Berik"},<br />
["bkm"] = {"Kom (Cameroon)"},<br />
["bkn"] = {"Bukitan"},<br />
["bko"] = {"Kwa'"},<br />
["bkp"] = {"Boko (Democratic Republic of Congo)"},<br />
["bkq"] = {"Bakairí"},<br />
["bkr"] = {"Bakumpai"},<br />
["bks"] = {"Northern Sorsoganon"},<br />
["bkt"] = {"Boloki"},<br />
["bku"] = {"Buhid"},<br />
["bkv"] = {"Bekwarra"},<br />
["bkw"] = {"Bekwel"},<br />
["bkx"] = {"Baikeno"},<br />
["bky"] = {"Bokyi"},<br />
["bkz"] = {"Bungku"},<br />
["bla"] = {"Siksika"},<br />
["blb"] = {"Bilua"},<br />
["blc"] = {"Bella Coola"},<br />
["bld"] = {"Bolango"},<br />
["ble"] = {"Balanta-Kentohe"},<br />
["blf"] = {"Buol"},<br />
["blh"] = {"Kuwaa"},<br />
["bli"] = {"Bolia"},<br />
["blj"] = {"Bolongan"},<br />
["blk"] = {"Pa'o Karen", "Pa'O"},<br />
["bll"] = {"Biloxi"},<br />
["blm"] = {"Beli (South Sudan)"},<br />
["bln"] = {"Southern Catanduanes Bikol"},<br />
["blo"] = {"Anii"},<br />
["blp"] = {"Blablanga"},<br />
["blq"] = {"Baluan-Pam"},<br />
["blr"] = {"Blang"},<br />
["bls"] = {"Balaesang"},<br />
["blt"] = {"Tai Dam"},<br />
["blv"] = {"Kibala", "Bolo"},<br />
["blw"] = {"Balangao"},<br />
["blx"] = {"Mag-Indi Ayta"},<br />
["bly"] = {"Notre"},<br />
["blz"] = {"Balantak"},<br />
["bma"] = {"Lame"},<br />
["bmb"] = {"Bembe"},<br />
["bmc"] = {"Biem"},<br />
["bmd"] = {"Baga Manduri"},<br />
["bme"] = {"Limassa"},<br />
["bmf"] = {"Bom-Kim"},<br />
["bmg"] = {"Bamwe"},<br />
["bmh"] = {"Kein"},<br />
["bmi"] = {"Bagirmi"},<br />
["bmj"] = {"Bote-Majhi"},<br />
["bmk"] = {"Ghayavi"},<br />
["bml"] = {"Bomboli"},<br />
["bmm"] = {"Northern Betsimisaraka Malagasy"},<br />
["bmn"] = {"Bina (Papua New Guinea)"},<br />
["bmo"] = {"Bambalang"},<br />
["bmp"] = {"Bulgebi"},<br />
["bmq"] = {"Bomu"},<br />
["bmr"] = {"Muinane"},<br />
["bms"] = {"Bilma Kanuri"},<br />
["bmt"] = {"Biao Mon"},<br />
["bmu"] = {"Somba-Siawari"},<br />
["bmv"] = {"Bum"},<br />
["bmw"] = {"Bomwali"},<br />
["bmx"] = {"Baimak"},<br />
["bmz"] = {"Baramu"},<br />
["bna"] = {"Bonerate"},<br />
["bnb"] = {"Bookan"},<br />
["bnc"] = {"Bontok"},<br />
["bnd"] = {"Banda (Indonesia)"},<br />
["bne"] = {"Bintauna"},<br />
["bnf"] = {"Masiwang"},<br />
["bng"] = {"Benga"},<br />
["bni"] = {"Bangi"},<br />
["bnj"] = {"Eastern Tawbuid"},<br />
["bnk"] = {"Bierebo"},<br />
["bnl"] = {"Boon"},<br />
["bnm"] = {"Batanga"},<br />
["bnn"] = {"Bunun"},<br />
["bno"] = {"Bantoanon"},<br />
["bnp"] = {"Bola"},<br />
["bnq"] = {"Bantik"},<br />
["bnr"] = {"Butmas-Tur"},<br />
["bns"] = {"Bundeli"},<br />
["bnt"] = {"Bantu languages"},<br />
["bnu"] = {"Bentong"},<br />
["bnv"] = {"Bonerif", "Beneraf", "Edwas"},<br />
["bnw"] = {"Bisis"},<br />
["bnx"] = {"Bangubangu"},<br />
["bny"] = {"Bintulu"},<br />
["bnz"] = {"Beezen"},<br />
["boa"] = {"Bora"},<br />
["bob"] = {"Aweer"},<br />
["boe"] = {"Mundabli"},<br />
["bof"] = {"Bolon"},<br />
["bog"] = {"Bamako Sign Language"},<br />
["boh"] = {"Boma"},<br />
["boi"] = {"Barbareño"},<br />
["boj"] = {"Anjam"},<br />
["bok"] = {"Bonjo"},<br />
["bol"] = {"Bole"},<br />
["bom"] = {"Berom"},<br />
["bon"] = {"Bine"},<br />
["boo"] = {"Tiemacèwè Bozo"},<br />
["bop"] = {"Bonkiman"},<br />
["boq"] = {"Bogaya"},<br />
["bor"] = {"Borôro"},<br />
["bot"] = {"Bongo"},<br />
["bou"] = {"Bondei"},<br />
["bov"] = {"Tuwuli"},<br />
["bow"] = {"Rema"},<br />
["box"] = {"Buamu"},<br />
["boy"] = {"Bodo (Central African Republic)"},<br />
["boz"] = {"Tiéyaxo Bozo"},<br />
["bpa"] = {"Daakaka"},<br />
["bpd"] = {"Banda-Banda"},<br />
["bpe"] = {"Bauni"},<br />
["bpg"] = {"Bonggo"},<br />
["bph"] = {"Botlikh"},<br />
["bpi"] = {"Bagupi"},<br />
["bpj"] = {"Binji"},<br />
["bpk"] = {"Orowe", "'Ôrôê"},<br />
["bpl"] = {"Broome Pearling Lugger Pidgin"},<br />
["bpm"] = {"Biyom"},<br />
["bpn"] = {"Dzao Min"},<br />
["bpo"] = {"Anasi"},<br />
["bpp"] = {"Kaure"},<br />
["bpq"] = {"Banda Malay"},<br />
["bpr"] = {"Koronadal Blaan"},<br />
["bps"] = {"Sarangani Blaan"},<br />
["bpt"] = {"Barrow Point"},<br />
["bpu"] = {"Bongu"},<br />
["bpv"] = {"Bian Marind"},<br />
["bpw"] = {"Bo (Papua New Guinea)"},<br />
["bpx"] = {"Palya Bareli"},<br />
["bpy"] = {"Bishnupriya"},<br />
["bpz"] = {"Bilba"},<br />
["bqa"] = {"Tchumbuli"},<br />
["bqb"] = {"Bagusa"},<br />
["bqc"] = {"Boko (Benin)", "Boo"},<br />
["bqd"] = {"Bung"},<br />
["bqf"] = {"Baga Kaloum"},<br />
["bqg"] = {"Bago-Kusuntu"},<br />
["bqh"] = {"Baima"},<br />
["bqi"] = {"Bakhtiari"},<br />
["bqj"] = {"Bandial"},<br />
["bqk"] = {"Banda-Mbrès"},<br />
["bql"] = {"Bilakura"},<br />
["bqm"] = {"Wumboko"},<br />
["bqn"] = {"Bulgarian Sign Language"},<br />
["bqo"] = {"Balo"},<br />
["bqp"] = {"Busa"},<br />
["bqq"] = {"Biritai"},<br />
["bqr"] = {"Burusu"},<br />
["bqs"] = {"Bosngun"},<br />
["bqt"] = {"Bamukumbit"},<br />
["bqu"] = {"Boguru"},<br />
["bqv"] = {"Koro Wachi", "Begbere-Ejar"},<br />
["bqw"] = {"Buru (Nigeria)"},<br />
["bqx"] = {"Baangi"},<br />
["bqy"] = {"Bengkala Sign Language"},<br />
["bqz"] = {"Bakaka"},<br />
["bra"] = {"Braj"},<br />
["brb"] = {"Lave"},<br />
["brc"] = {"Berbice Creole Dutch"},<br />
["brd"] = {"Baraamu"},<br />
["brf"] = {"Bira"},<br />
["brg"] = {"Baure"},<br />
["brh"] = {"Brahui"},<br />
["bri"] = {"Mokpwe"},<br />
["brj"] = {"Bieria"},<br />
["brk"] = {"Birked"},<br />
["brl"] = {"Birwa"},<br />
["brm"] = {"Barambu"},<br />
["brn"] = {"Boruca"},<br />
["bro"] = {"Brokkat"},<br />
["brp"] = {"Barapasi"},<br />
["brq"] = {"Breri"},<br />
["brr"] = {"Birao"},<br />
["brs"] = {"Baras"},<br />
["brt"] = {"Bitare"},<br />
["bru"] = {"Eastern Bru"},<br />
["brv"] = {"Western Bru"},<br />
["brw"] = {"Bellari"},<br />
["brx"] = {"Bodo (India)"},<br />
["bry"] = {"Burui"},<br />
["brz"] = {"Bilbil"},<br />
["bsa"] = {"Abinomn"},<br />
["bsb"] = {"Brunei Bisaya"},<br />
["bsc"] = {"Bassari", "Oniyan"},<br />
["bse"] = {"Wushi"},<br />
["bsf"] = {"Bauchi"},<br />
["bsg"] = {"Bashkardi"},<br />
["bsh"] = {"Kati"},<br />
["bsi"] = {"Bassossi"},<br />
["bsj"] = {"Bangwinji"},<br />
["bsk"] = {"Burushaski"},<br />
["bsl"] = {"Basa-Gumna"},<br />
["bsm"] = {"Busami"},<br />
["bsn"] = {"Barasana-Eduria"},<br />
["bso"] = {"Buso"},<br />
["bsp"] = {"Baga Sitemu"},<br />
["bsq"] = {"Bassa"},<br />
["bsr"] = {"Bassa-Kontagora"},<br />
["bss"] = {"Akoose"},<br />
["bst"] = {"Basketo"},<br />
["bsu"] = {"Bahonsuai"},<br />
["bsv"] = {"Baga Sobané"},<br />
["bsw"] = {"Baiso"},<br />
["bsx"] = {"Yangkam"},<br />
["bsy"] = {"Sabah Bisaya"},<br />
["bta"] = {"Bata"},<br />
["btc"] = {"Bati (Cameroon)"},<br />
["btd"] = {"Batak Dairi"},<br />
["bte"] = {"Gamo-Ningi"},<br />
["btf"] = {"Birgit"},<br />
["btg"] = {"Gagnoa Bété"},<br />
["bth"] = {"Biatah Bidayuh"},<br />
["bti"] = {"Burate"},<br />
["btj"] = {"Bacanese Malay"},<br />
["btk"] = {"Batak languages"},<br />
["btm"] = {"Batak Mandailing"},<br />
["btn"] = {"Ratagnon"},<br />
["bto"] = {"Rinconada Bikol"},<br />
["btp"] = {"Budibud"},<br />
["btq"] = {"Batek"},<br />
["btr"] = {"Baetora"},<br />
["bts"] = {"Batak Simalungun"},<br />
["btt"] = {"Bete-Bendi"},<br />
["btu"] = {"Batu"},<br />
["btv"] = {"Bateri"},<br />
["btw"] = {"Butuanon"},<br />
["btx"] = {"Batak Karo"},<br />
["bty"] = {"Bobot"},<br />
["btz"] = {"Batak Alas-Kluet"},<br />
["bua"] = {"Buriat"},<br />
["bub"] = {"Bua"},<br />
["buc"] = {"Bushi"},<br />
["bud"] = {"Ntcham"},<br />
["bue"] = {"Beothuk"},<br />
["buf"] = {"Bushoong"},<br />
["bug"] = {"Buginese"},<br />
["buh"] = {"Younuo Bunu"},<br />
["bui"] = {"Bongili"},<br />
["buj"] = {"Basa-Gurmana"},<br />
["buk"] = {"Bugawac"},<br />
["bum"] = {"Bulu (Cameroon)"},<br />
["bun"] = {"Sherbro"},<br />
["buo"] = {"Terei"},<br />
["bup"] = {"Busoa"},<br />
["buq"] = {"Brem"},<br />
["bus"] = {"Bokobaru"},<br />
["but"] = {"Bungain"},<br />
["buu"] = {"Budu"},<br />
["buv"] = {"Bun"},<br />
["buw"] = {"Bubi"},<br />
["bux"] = {"Boghom"},<br />
["buy"] = {"Bullom So"},<br />
["buz"] = {"Bukwen"},<br />
["bva"] = {"Barein"},<br />
["bvb"] = {"Bube"},<br />
["bvc"] = {"Baelelea"},<br />
["bvd"] = {"Baeggu"},<br />
["bve"] = {"Berau Malay"},<br />
["bvf"] = {"Boor"},<br />
["bvg"] = {"Bonkeng"},<br />
["bvh"] = {"Bure"},<br />
["bvi"] = {"Belanda Viri"},<br />
["bvj"] = {"Baan"},<br />
["bvk"] = {"Bukat"},<br />
["bvl"] = {"Bolivian Sign Language"},<br />
["bvm"] = {"Bamunka"},<br />
["bvn"] = {"Buna"},<br />
["bvo"] = {"Bolgo"},<br />
["bvp"] = {"Bumang"},<br />
["bvq"] = {"Birri"},<br />
["bvr"] = {"Burarra"},<br />
["bvt"] = {"Bati (Indonesia)"},<br />
["bvu"] = {"Bukit Malay"},<br />
["bvv"] = {"Baniva"},<br />
["bvw"] = {"Boga"},<br />
["bvx"] = {"Dibole"},<br />
["bvy"] = {"Baybayanon"},<br />
["bvz"] = {"Bauzi"},<br />
["bwa"] = {"Bwatoo"},<br />
["bwb"] = {"Namosi-Naitasiri-Serua"},<br />
["bwc"] = {"Bwile"},<br />
["bwd"] = {"Bwaidoka"},<br />
["bwe"] = {"Bwe Karen"},<br />
["bwf"] = {"Boselewa"},<br />
["bwg"] = {"Barwe"},<br />
["bwh"] = {"Bishuo"},<br />
["bwi"] = {"Baniwa"},<br />
["bwj"] = {"Láá Láá Bwamu"},<br />
["bwk"] = {"Bauwaki"},<br />
["bwl"] = {"Bwela"},<br />
["bwm"] = {"Biwat"},<br />
["bwn"] = {"Wunai Bunu"},<br />
["bwo"] = {"Boro (Ethiopia)", "Borna (Ethiopia)"},<br />
["bwp"] = {"Mandobo Bawah"},<br />
["bwq"] = {"Southern Bobo Madaré"},<br />
["bwr"] = {"Bura-Pabir"},<br />
["bws"] = {"Bomboma"},<br />
["bwt"] = {"Bafaw-Balong"},<br />
["bwu"] = {"Buli (Ghana)"},<br />
["bww"] = {"Bwa"},<br />
["bwx"] = {"Bu-Nao Bunu"},<br />
["bwy"] = {"Cwi Bwamu"},<br />
["bwz"] = {"Bwisi"},<br />
["bxa"] = {"Tairaha"},<br />
["bxb"] = {"Belanda Bor"},<br />
["bxc"] = {"Molengue"},<br />
["bxd"] = {"Pela"},<br />
["bxe"] = {"Birale"},<br />
["bxf"] = {"Bilur", "Minigir"},<br />
["bxg"] = {"Bangala"},<br />
["bxh"] = {"Buhutu"},<br />
["bxi"] = {"Pirlatapa"},<br />
["bxj"] = {"Bayungu"},<br />
["bxk"] = {"Bukusu", "Lubukusu"},<br />
["bxl"] = {"Jalkunan"},<br />
["bxm"] = {"Mongolia Buriat"},<br />
["bxn"] = {"Burduna"},<br />
["bxo"] = {"Barikanchi"},<br />
["bxp"] = {"Bebil"},<br />
["bxq"] = {"Beele"},<br />
["bxr"] = {"Russia Buriat"},<br />
["bxs"] = {"Busam"},<br />
["bxu"] = {"China Buriat"},<br />
["bxv"] = {"Berakou"},<br />
["bxw"] = {"Bankagooma"},<br />
["bxz"] = {"Binahari"},<br />
["bya"] = {"Batak"},<br />
["byb"] = {"Bikya"},<br />
["byc"] = {"Ubaghara"},<br />
["byd"] = {"Benyadu'"},<br />
["bye"] = {"Pouye"},<br />
["byf"] = {"Bete"},<br />
["byg"] = {"Baygo"},<br />
["byh"] = {"Bhujel"},<br />
["byi"] = {"Buyu"},<br />
["byj"] = {"Bina (Nigeria)"},<br />
["byk"] = {"Biao"},<br />
["byl"] = {"Bayono"},<br />
["bym"] = {"Bidjara"},<br />
["byn"] = {"Bilin", "Blin"},<br />
["byo"] = {"Biyo"},<br />
["byp"] = {"Bumaji"},<br />
["byq"] = {"Basay"},<br />
["byr"] = {"Baruya", "Yipma"},<br />
["bys"] = {"Burak"},<br />
["byt"] = {"Berti"},<br />
["byv"] = {"Medumba"},<br />
["byw"] = {"Belhariya"},<br />
["byx"] = {"Qaqet"},<br />
["byz"] = {"Banaro"},<br />
["bza"] = {"Bandi"},<br />
["bzb"] = {"Andio"},<br />
["bzc"] = {"Southern Betsimisaraka Malagasy"},<br />
["bzd"] = {"Bribri"},<br />
["bze"] = {"Jenaama Bozo"},<br />
["bzf"] = {"Boikin"},<br />
["bzg"] = {"Babuza"},<br />
["bzh"] = {"Mapos Buang"},<br />
["bzi"] = {"Bisu"},<br />
["bzj"] = {"Belize Kriol English"},<br />
["bzk"] = {"Nicaragua Creole English"},<br />
["bzl"] = {"Boano (Sulawesi)"},<br />
["bzm"] = {"Bolondo"},<br />
["bzn"] = {"Boano (Maluku)"},<br />
["bzo"] = {"Bozaba"},<br />
["bzp"] = {"Kemberano"},<br />
["bzq"] = {"Buli (Indonesia)"},<br />
["bzr"] = {"Biri"},<br />
["bzs"] = {"Brazilian Sign Language"},<br />
["bzt"] = {"Brithenig"},<br />
["bzu"] = {"Burmeso"},<br />
["bzv"] = {"Naami"},<br />
["bzw"] = {"Basa (Nigeria)"},<br />
["bzx"] = {"Kɛlɛngaxo Bozo"},<br />
["bzy"] = {"Obanliku"},<br />
["bzz"] = {"Evant"},<br />
["caa"] = {"Chortí"},<br />
["cab"] = {"Garifuna"},<br />
["cac"] = {"Chuj"},<br />
["cad"] = {"Caddo"},<br />
["cae"] = {"Lehar", "Laalaa"},<br />
["caf"] = {"Southern Carrier"},<br />
["cag"] = {"Nivaclé"},<br />
["cah"] = {"Cahuarano"},<br />
["cai"] = {"Central American Indian languages"},<br />
["caj"] = {"Chané"},<br />
["cak"] = {"Kaqchikel", "Cakchiquel"},<br />
["cal"] = {"Carolinian"},<br />
["cam"] = {"Cemuhî"},<br />
["can"] = {"Chambri"},<br />
["cao"] = {"Chácobo"},<br />
["cap"] = {"Chipaya"},<br />
["caq"] = {"Car Nicobarese"},<br />
["car"] = {"Galibi Carib"},<br />
["cas"] = {"Tsimané"},<br />
["cau"] = {"Caucasian languages"},<br />
["cav"] = {"Cavineña"},<br />
["caw"] = {"Callawalla"},<br />
["cax"] = {"Chiquitano"},<br />
["cay"] = {"Cayuga"},<br />
["caz"] = {"Canichana"},<br />
["cba"] = {"Chibchan languages"},<br />
["cbb"] = {"Cabiyarí"},<br />
["cbc"] = {"Carapana"},<br />
["cbd"] = {"Carijona"},<br />
["cbg"] = {"Chimila"},<br />
["cbi"] = {"Chachi"},<br />
["cbj"] = {"Ede Cabe"},<br />
["cbk"] = {"Chavacano"},<br />
["cbl"] = {"Bualkhaw Chin"},<br />
["cbn"] = {"Nyahkur"},<br />
["cbo"] = {"Izora"},<br />
["cbq"] = {"Tsucuba", "Cuba"},<br />
["cbr"] = {"Cashibo-Cacataibo"},<br />
["cbs"] = {"Cashinahua"},<br />
["cbt"] = {"Chayahuita"},<br />
["cbu"] = {"Candoshi-Shapra"},<br />
["cbv"] = {"Cacua"},<br />
["cbw"] = {"Kinabalian"},<br />
["cby"] = {"Carabayo"},<br />
["ccc"] = {"Chamicuro"},<br />
["ccd"] = {"Cafundo Creole"},<br />
["cce"] = {"Chopi"},<br />
["ccg"] = {"Samba Daka"},<br />
["cch"] = {"Atsam"},<br />
["ccj"] = {"Kasanga"},<br />
["ccl"] = {"Cutchi-Swahili"},<br />
["ccm"] = {"Malaccan Creole Malay"},<br />
["ccn"] = {"North Caucasian languages"},<br />
["cco"] = {"Comaltepec Chinantec"},<br />
["ccp"] = {"Chakma"},<br />
["ccr"] = {"Cacaopera"},<br />
["ccs"] = {"South Caucasian languages"},<br />
["cda"] = {"Choni"},<br />
["cdc"] = {"Chadic languages"},<br />
["cdd"] = {"Caddoan languages"},<br />
["cde"] = {"Chenchu"},<br />
["cdf"] = {"Chiru"},<br />
["cdh"] = {"Chambeali"},<br />
["cdi"] = {"Chodri"},<br />
["cdj"] = {"Churahi"},<br />
["cdm"] = {"Chepang"},<br />
["cdn"] = {"Chaudangsi"},<br />
["cdo"] = {"Min Dong Chinese"},<br />
["cdr"] = {"Cinda-Regi-Tiyal"},<br />
["cds"] = {"Chadian Sign Language"},<br />
["cdy"] = {"Chadong"},<br />
["cdz"] = {"Koda"},<br />
["cea"] = {"Lower Chehalis"},<br />
["ceb"] = {"Cebuano"},<br />
["ceg"] = {"Chamacoco"},<br />
["cek"] = {"Eastern Khumi Chin"},<br />
["cel"] = {"Celtic languages"},<br />
["cen"] = {"Cen"},<br />
["cet"] = {"Centúúm"},<br />
["cey"] = {"Ekai Chin"},<br />
["cfa"] = {"Dijim-Bwilim"},<br />
["cfd"] = {"Cara"},<br />
["cfg"] = {"Como Karim"},<br />
["cfm"] = {"Falam Chin"},<br />
["cga"] = {"Changriwa"},<br />
["cgc"] = {"Kagayanen"},<br />
["cgg"] = {"Chiga"},<br />
["cgk"] = {"Chocangacakha"},<br />
["chb"] = {"Chibcha"},<br />
["chc"] = {"Catawba"},<br />
["chd"] = {"Highland Oaxaca Chontal"},<br />
["chf"] = {"Tabasco Chontal"},<br />
["chg"] = {"Chagatai"},<br />
["chh"] = {"Chinook"},<br />
["chj"] = {"Ojitlán Chinantec"},<br />
["chk"] = {"Chuukese"},<br />
["chl"] = {"Cahuilla"},<br />
["chm"] = {"Mari (Russia)"},<br />
["chn"] = {"Chinook jargon"},<br />
["cho"] = {"Choctaw"},<br />
["chp"] = {"Chipewyan", "Dene Suline"},<br />
["chq"] = {"Quiotepec Chinantec"},<br />
["chr"] = {"Cherokee"},<br />
["cht"] = {"Cholón"},<br />
["chw"] = {"Chuwabu"},<br />
["chx"] = {"Chantyal"},<br />
["chy"] = {"Cheyenne"},<br />
["chz"] = {"Ozumacín Chinantec"},<br />
["cia"] = {"Cia-Cia"},<br />
["cib"] = {"Ci Gbe"},<br />
["cic"] = {"Chickasaw"},<br />
["cid"] = {"Chimariko"},<br />
["cie"] = {"Cineni"},<br />
["cih"] = {"Chinali"},<br />
["cik"] = {"Chitkuli Kinnauri"},<br />
["cim"] = {"Cimbrian"},<br />
["cin"] = {"Cinta Larga"},<br />
["cip"] = {"Chiapanec"},<br />
["cir"] = {"Tiri", "Haméa", "Méa"},<br />
["ciw"] = {"Chippewa"},<br />
["ciy"] = {"Chaima"},<br />
["cja"] = {"Western Cham"},<br />
["cje"] = {"Chru"},<br />
["cjh"] = {"Upper Chehalis"},<br />
["cji"] = {"Chamalal"},<br />
["cjk"] = {"Chokwe"},<br />
["cjm"] = {"Eastern Cham"},<br />
["cjn"] = {"Chenapian"},<br />
["cjo"] = {"Ashéninka Pajonal"},<br />
["cjp"] = {"Cabécar"},<br />
["cjs"] = {"Shor"},<br />
["cjv"] = {"Chuave"},<br />
["cjy"] = {"Jinyu Chinese"},<br />
["ckb"] = {"Central Kurdish"},<br />
["ckh"] = {"Chak"},<br />
["ckl"] = {"Cibak"},<br />
["ckm"] = {"Chakavian"},<br />
["ckn"] = {"Kaang Chin"},<br />
["cko"] = {"Anufo"},<br />
["ckq"] = {"Kajakse"},<br />
["ckr"] = {"Kairak"},<br />
["cks"] = {"Tayo"},<br />
["ckt"] = {"Chukot"},<br />
["cku"] = {"Koasati"},<br />
["ckv"] = {"Kavalan"},<br />
["ckx"] = {"Caka"},<br />
["cky"] = {"Cakfem-Mushere"},<br />
["ckz"] = {"Cakchiquel-Quiché Mixed Language"},<br />
["cla"] = {"Ron"},<br />
["clc"] = {"Chilcotin"},<br />
["cld"] = {"Chaldean Neo-Aramaic"},<br />
["cle"] = {"Lealao Chinantec"},<br />
["clh"] = {"Chilisso"},<br />
["cli"] = {"Chakali"},<br />
["clj"] = {"Laitu Chin"},<br />
["clk"] = {"Idu-Mishmi"},<br />
["cll"] = {"Chala"},<br />
["clm"] = {"Clallam"},<br />
["clo"] = {"Lowland Oaxaca Chontal"},<br />
["clt"] = {"Lautu Chin"},<br />
["clu"] = {"Caluyanun"},<br />
["clw"] = {"Chulym"},<br />
["cly"] = {"Eastern Highland Chatino"},<br />
["cma"] = {"Maa"},<br />
["cmc"] = {"Chamic languages"},<br />
["cme"] = {"Cerma"},<br />
["cmg"] = {"Classical Mongolian"},<br />
["cmi"] = {"Emberá-Chamí"},<br />
["cml"] = {"Campalagian"},<br />
["cmm"] = {"Michigamea"},<br />
["cmn"] = {"Mandarin Chinese"},<br />
["cmo"] = {"Central Mnong"},<br />
["cmr"] = {"Mro-Khimi Chin"},<br />
["cms"] = {"Messapic"},<br />
["cmt"] = {"Camtho"},<br />
["cna"] = {"Changthang"},<br />
["cnb"] = {"Chinbon Chin"},<br />
["cnc"] = {"Côông"},<br />
["cng"] = {"Northern Qiang"},<br />
["cnh"] = {"Hakha Chin", "Haka Chin"},<br />
["cni"] = {"Asháninka"},<br />
["cnk"] = {"Khumi Chin"},<br />
["cnl"] = {"Lalana Chinantec"},<br />
["cno"] = {"Con"},<br />
["cnp"] = {"Northern Ping Chinese", "Northern Pinghua"},<br />
["cnr"] = {"Montenegrin"},<br />
["cns"] = {"Central Asmat"},<br />
["cnt"] = {"Tepetotutla Chinantec"},<br />
["cnu"] = {"Chenoua"},<br />
["cnw"] = {"Ngawn Chin"},<br />
["cnx"] = {"Middle Cornish"},<br />
["coa"] = {"Cocos Islands Malay"},<br />
["cob"] = {"Chicomuceltec"},<br />
["coc"] = {"Cocopa"},<br />
["cod"] = {"Cocama-Cocamilla"},<br />
["coe"] = {"Koreguaje"},<br />
["cof"] = {"Colorado"},<br />
["cog"] = {"Chong"},<br />
["coh"] = {"Chonyi-Dzihana-Kauma", "Chichonyi-Chidzihana-Chikauma"},<br />
["coj"] = {"Cochimi"},<br />
["cok"] = {"Santa Teresa Cora"},<br />
["col"] = {"Columbia-Wenatchi"},<br />
["com"] = {"Comanche"},<br />
["con"] = {"Cofán"},<br />
["coo"] = {"Comox"},<br />
["cop"] = {"Coptic"},<br />
["coq"] = {"Coquille"},<br />
["cot"] = {"Caquinte"},<br />
["cou"] = {"Wamey"},<br />
["cov"] = {"Cao Miao"},<br />
["cow"] = {"Cowlitz"},<br />
["cox"] = {"Nanti"},<br />
["coz"] = {"Chochotec"},<br />
["cpa"] = {"Palantla Chinantec"},<br />
["cpb"] = {"Ucayali-Yurúa Ashéninka"},<br />
["cpc"] = {"Ajyíninka Apurucayali"},<br />
["cpe"] = {"English-based creoles and pidgins"},<br />
["cpf"] = {"French-based creoles and pidgins"},<br />
["cpg"] = {"Cappadocian Greek"},<br />
["cpi"] = {"Chinese Pidgin English"},<br />
["cpn"] = {"Cherepon"},<br />
["cpo"] = {"Kpeego"},<br />
["cpp"] = {"Portuguese-based creoles and pidgins"},<br />
["cps"] = {"Capiznon"},<br />
["cpu"] = {"Pichis Ashéninka"},<br />
["cpx"] = {"Pu-Xian Chinese"},<br />
["cpy"] = {"South Ucayali Ashéninka"},<br />
["cqd"] = {"Chuanqiandian Cluster Miao"},<br />
["cra"] = {"Chara"},<br />
["crb"] = {"Island Carib"},<br />
["crc"] = {"Lonwolwol"},<br />
["crd"] = {"Coeur d'Alene"},<br />
["crf"] = {"Caramanta"},<br />
["crg"] = {"Michif"},<br />
["crh"] = {"Crimean Tatar", "Crimean Turkish"},<br />
["cri"] = {"Sãotomense"},<br />
["crj"] = {"Southern East Cree"},<br />
["crk"] = {"Plains Cree"},<br />
["crl"] = {"Northern East Cree"},<br />
["crm"] = {"Moose Cree"},<br />
["crn"] = {"El Nayar Cora"},<br />
["cro"] = {"Crow"},<br />
["crp"] = {"Creoles and pidgins"},<br />
["crq"] = {"Iyo'wujwa Chorote"},<br />
["crr"] = {"Carolina Algonquian"},<br />
["crs"] = {"Seselwa Creole French"},<br />
["crt"] = {"Iyojwa'ja Chorote"},<br />
["crv"] = {"Chaura"},<br />
["crw"] = {"Chrau"},<br />
["crx"] = {"Carrier"},<br />
["cry"] = {"Cori"},<br />
["crz"] = {"Cruzeño"},<br />
["csa"] = {"Chiltepec Chinantec"},<br />
["csb"] = {"Kashubian"},<br />
["csc"] = {"Catalan Sign Language", "Lengua de señas catalana", "Llengua de Signes Catalana"},<br />
["csd"] = {"Chiangmai Sign Language"},<br />
["cse"] = {"Czech Sign Language"},<br />
["csf"] = {"Cuba Sign Language"},<br />
["csg"] = {"Chilean Sign Language"},<br />
["csh"] = {"Asho Chin"},<br />
["csi"] = {"Coast Miwok"},<br />
["csj"] = {"Songlai Chin"},<br />
["csk"] = {"Jola-Kasa"},<br />
["csl"] = {"Chinese Sign Language"},<br />
["csm"] = {"Central Sierra Miwok"},<br />
["csn"] = {"Colombian Sign Language"},<br />
["cso"] = {"Sochiapam Chinantec", "Sochiapan Chinantec"},<br />
["csp"] = {"Southern Ping Chinese", "Southern Pinghua"},<br />
["csq"] = {"Croatia Sign Language"},<br />
["csr"] = {"Costa Rican Sign Language"},<br />
["css"] = {"Southern Ohlone"},<br />
["cst"] = {"Northern Ohlone"},<br />
["csu"] = {"Central Sudanic languages"},<br />
["csv"] = {"Sumtu Chin"},<br />
["csw"] = {"Swampy Cree"},<br />
["csx"] = {"Cambodian Sign Language"},<br />
["csy"] = {"Siyin Chin"},<br />
["csz"] = {"Coos"},<br />
["cta"] = {"Tataltepec Chatino"},<br />
["ctc"] = {"Chetco"},<br />
["ctd"] = {"Tedim Chin"},<br />
["cte"] = {"Tepinapa Chinantec"},<br />
["ctg"] = {"Chittagonian"},<br />
["cth"] = {"Thaiphum Chin"},<br />
["ctl"] = {"Tlacoatzintepec Chinantec"},<br />
["ctm"] = {"Chitimacha"},<br />
["ctn"] = {"Chhintange"},<br />
["cto"] = {"Emberá-Catío"},<br />
["ctp"] = {"Western Highland Chatino"},<br />
["cts"] = {"Northern Catanduanes Bikol"},<br />
["ctt"] = {"Wayanad Chetti"},<br />
["ctu"] = {"Chol"},<br />
["cty"] = {"Moundadan Chetty"},<br />
["ctz"] = {"Zacatepec Chatino"},<br />
["cua"] = {"Cua"},<br />
["cub"] = {"Cubeo"},<br />
["cuc"] = {"Usila Chinantec"},<br />
["cug"] = {"Chungmboko", "Cung"},<br />
["cuh"] = {"Chuka", "Gichuka"},<br />
["cui"] = {"Cuiba"},<br />
["cuj"] = {"Mashco Piro"},<br />
["cuk"] = {"San Blas Kuna"},<br />
["cul"] = {"Culina", "Kulina"},<br />
["cuo"] = {"Cumanagoto"},<br />
["cup"] = {"Cupeño"},<br />
["cuq"] = {"Cun"},<br />
["cur"] = {"Chhulung"},<br />
["cus"] = {"Cushitic languages"},<br />
["cut"] = {"Teutila Cuicatec"},<br />
["cuu"] = {"Tai Ya"},<br />
["cuv"] = {"Cuvok"},<br />
["cuw"] = {"Chukwa"},<br />
["cux"] = {"Tepeuxila Cuicatec"},<br />
["cuy"] = {"Cuitlatec"},<br />
["cvg"] = {"Chug"},<br />
["cvn"] = {"Valle Nacional Chinantec"},<br />
["cwa"] = {"Kabwa"},<br />
["cwb"] = {"Maindo"},<br />
["cwd"] = {"Woods Cree"},<br />
["cwe"] = {"Kwere"},<br />
["cwg"] = {"Chewong", "Cheq Wong"},<br />
["cwt"] = {"Kuwaataay"},<br />
["cya"] = {"Nopala Chatino"},<br />
["cyb"] = {"Cayubaba"},<br />
["cyo"] = {"Cuyonon"},<br />
["czh"] = {"Huizhou Chinese"},<br />
["czk"] = {"Knaanic"},<br />
["czn"] = {"Zenzontepec Chatino"},<br />
["czo"] = {"Min Zhong Chinese"},<br />
["czt"] = {"Zotung Chin"},<br />
["daa"] = {"Dangaléat"},<br />
["dac"] = {"Dambi"},<br />
["dad"] = {"Marik"},<br />
["dae"] = {"Duupa"},<br />
["dag"] = {"Dagbani"},<br />
["dah"] = {"Gwahatike"},<br />
["dai"] = {"Day"},<br />
["daj"] = {"Dar Fur Daju"},<br />
["dak"] = {"Dakota"},<br />
["dal"] = {"Dahalo"},<br />
["dam"] = {"Damakawa"},<br />
["dao"] = {"Daai Chin"},<br />
["daq"] = {"Dandami Maria"},<br />
["dar"] = {"Dargwa"},<br />
["das"] = {"Daho-Doo"},<br />
["dau"] = {"Dar Sila Daju"},<br />
["dav"] = {"Taita", "Dawida"},<br />
["daw"] = {"Davawenyo"},<br />
["dax"] = {"Dayi"},<br />
["day"] = {"Land Dayak languages"},<br />
["daz"] = {"Dao"},<br />
["dba"] = {"Bangime"},<br />
["dbb"] = {"Deno"},<br />
["dbd"] = {"Dadiya"},<br />
["dbe"] = {"Dabe"},<br />
["dbf"] = {"Edopi"},<br />
["dbg"] = {"Dogul Dom Dogon"},<br />
["dbi"] = {"Doka"},<br />
["dbj"] = {"Ida'an"},<br />
["dbl"] = {"Dyirbal"},<br />
["dbm"] = {"Duguri"},<br />
["dbn"] = {"Duriankere"},<br />
["dbo"] = {"Dulbu"},<br />
["dbp"] = {"Duwai"},<br />
["dbq"] = {"Daba"},<br />
["dbr"] = {"Dabarre"},<br />
["dbt"] = {"Ben Tey Dogon"},<br />
["dbu"] = {"Bondum Dom Dogon"},<br />
["dbv"] = {"Dungu"},<br />
["dbw"] = {"Bankan Tey Dogon"},<br />
["dby"] = {"Dibiyaso"},<br />
["dcc"] = {"Deccan"},<br />
["dcr"] = {"Negerhollands"},<br />
["dda"] = {"Dadi Dadi"},<br />
["ddd"] = {"Dongotono"},<br />
["dde"] = {"Doondo"},<br />
["ddg"] = {"Fataluku"},<br />
["ddi"] = {"West Goodenough"},<br />
["ddj"] = {"Jaru"},<br />
["ddn"] = {"Dendi (Benin)"},<br />
["ddo"] = {"Dido"},<br />
["ddr"] = {"Dhudhuroa"},<br />
["dds"] = {"Donno So Dogon"},<br />
["ddw"] = {"Dawera-Daweloor"},<br />
["dec"] = {"Dagik"},<br />
["ded"] = {"Dedua"},<br />
["dee"] = {"Dewoin"},<br />
["def"] = {"Dezfuli"},<br />
["deg"] = {"Degema"},<br />
["deh"] = {"Dehwari"},<br />
["dei"] = {"Demisa"},<br />
["dek"] = {"Dek"},<br />
["del"] = {"Delaware"},<br />
["dem"] = {"Dem"},<br />
["den"] = {"Slave (Athapascan)"},<br />
["dep"] = {"Pidgin Delaware"},<br />
["deq"] = {"Dendi (Central African Republic)"},<br />
["der"] = {"Deori"},<br />
["des"] = {"Desano"},<br />
["dev"] = {"Domung"},<br />
["dez"] = {"Dengese"},<br />
["dga"] = {"Southern Dagaare"},<br />
["dgb"] = {"Bunoge Dogon"},<br />
["dgc"] = {"Casiguran Dumagat Agta"},<br />
["dgd"] = {"Dagaari Dioula"},<br />
["dge"] = {"Degenan"},<br />
["dgg"] = {"Doga"},<br />
["dgh"] = {"Dghwede"},<br />
["dgi"] = {"Northern Dagara"},<br />
["dgk"] = {"Dagba"},<br />
["dgl"] = {"Andaandi", "Dongolawi"},<br />
["dgn"] = {"Dagoman"},<br />
["dgo"] = {"Dogri (individual language)"},<br />
["dgr"] = {"Dogrib", "Tłı̨chǫ"},<br />
["dgs"] = {"Dogoso"},<br />
["dgt"] = {"Ndra'ngith"},<br />
["dgw"] = {"Daungwurrung"},<br />
["dgx"] = {"Doghoro"},<br />
["dgz"] = {"Daga"},<br />
["dhd"] = {"Dhundari"},<br />
["dhg"] = {"Dhangu-Djangu", "Dhangu", "Djangu"},<br />
["dhi"] = {"Dhimal"},<br />
["dhl"] = {"Dhalandji"},<br />
["dhm"] = {"Zemba"},<br />
["dhn"] = {"Dhanki"},<br />
["dho"] = {"Dhodia"},<br />
["dhr"] = {"Dhargari"},<br />
["dhs"] = {"Dhaiso"},<br />
["dhu"] = {"Dhurga"},<br />
["dhv"] = {"Dehu", "Drehu"},<br />
["dhw"] = {"Dhanwar (Nepal)"},<br />
["dhx"] = {"Dhungaloo"},<br />
["dia"] = {"Dia"},<br />
["dib"] = {"South Central Dinka"},<br />
["dic"] = {"Lakota Dida"},<br />
["did"] = {"Didinga"},<br />
["dif"] = {"Dieri", "Diyari"},<br />
["dig"] = {"Digo", "Chidigo"},<br />
["dih"] = {"Kumiai"},<br />
["dii"] = {"Dimbong"},<br />
["dij"] = {"Dai"},<br />
["dik"] = {"Southwestern Dinka"},<br />
["dil"] = {"Dilling"},<br />
["dim"] = {"Dime"},<br />
["din"] = {"Dinka"},<br />
["dio"] = {"Dibo"},<br />
["dip"] = {"Northeastern Dinka"},<br />
["diq"] = {"Dimli (individual language)"},<br />
["dir"] = {"Dirim"},<br />
["dis"] = {"Dimasa"},<br />
["diu"] = {"Diriku"},<br />
["diw"] = {"Northwestern Dinka"},<br />
["dix"] = {"Dixon Reef"},<br />
["diy"] = {"Diuwe"},<br />
["diz"] = {"Ding"},<br />
["dja"] = {"Djadjawurrung"},<br />
["djb"] = {"Djinba"},<br />
["djc"] = {"Dar Daju Daju"},<br />
["djd"] = {"Djamindjung", "Ngaliwurru"},<br />
["dje"] = {"Zarma"},<br />
["djf"] = {"Djangun"},<br />
["dji"] = {"Djinang"},<br />
["djj"] = {"Djeebbana"},<br />
["djk"] = {"Eastern Maroon Creole", "Businenge Tongo", "Nenge"},<br />
["djm"] = {"Jamsay Dogon"},<br />
["djn"] = {"Jawoyn", "Djauan"},<br />
["djo"] = {"Jangkang"},<br />
["djr"] = {"Djambarrpuyngu"},<br />
["dju"] = {"Kapriman"},<br />
["djw"] = {"Djawi"},<br />
["dka"] = {"Dakpakha"},<br />
["dkg"] = {"Kadung"},<br />
["dkk"] = {"Dakka"},<br />
["dkr"] = {"Kuijau"},<br />
["dks"] = {"Southeastern Dinka"},<br />
["dkx"] = {"Mazagway"},<br />
["dlg"] = {"Dolgan"},<br />
["dlk"] = {"Dahalik"},<br />
["dlm"] = {"Dalmatian"},<br />
["dln"] = {"Darlong"},<br />
["dma"] = {"Duma"},<br />
["dmb"] = {"Mombo Dogon"},<br />
["dmc"] = {"Gavak"},<br />
["dmd"] = {"Madhi Madhi"},<br />
["dme"] = {"Dugwor"},<br />
["dmf"] = {"Medefaidrin"},<br />
["dmg"] = {"Upper Kinabatangan"},<br />
["dmk"] = {"Domaaki"},<br />
["dml"] = {"Dameli"},<br />
["dmm"] = {"Dama"},<br />
["dmn"] = {"Mande languages"},<br />
["dmo"] = {"Kemedzung"},<br />
["dmr"] = {"East Damar"},<br />
["dms"] = {"Dampelas"},<br />
["dmu"] = {"Dubu", "Tebi"},<br />
["dmv"] = {"Dumpas"},<br />
["dmw"] = {"Mudburra"},<br />
["dmx"] = {"Dema"},<br />
["dmy"] = {"Demta", "Sowari"},<br />
["dna"] = {"Upper Grand Valley Dani"},<br />
["dnd"] = {"Daonda"},<br />
["dne"] = {"Ndendeule"},<br />
["dng"] = {"Dungan"},<br />
["dni"] = {"Lower Grand Valley Dani"},<br />
["dnj"] = {"Dan"},<br />
["dnk"] = {"Dengka"},<br />
["dnn"] = {"Dzùùngoo"},<br />
["dno"] = {"Ndrulo", "Northern Lendu"},<br />
["dnr"] = {"Danaru"},<br />
["dnt"] = {"Mid Grand Valley Dani"},<br />
["dnu"] = {"Danau"},<br />
["dnv"] = {"Danu"},<br />
["dnw"] = {"Western Dani"},<br />
["dny"] = {"Dení"},<br />
["doa"] = {"Dom"},<br />
["dob"] = {"Dobu"},<br />
["doc"] = {"Northern Dong"},<br />
["doe"] = {"Doe"},<br />
["dof"] = {"Domu"},<br />
["doh"] = {"Dong"},<br />
["doi"] = {"Dogri (macrolanguage)"},<br />
["dok"] = {"Dondo"},<br />
["dol"] = {"Doso"},<br />
["don"] = {"Toura (Papua New Guinea)"},<br />
["doo"] = {"Dongo"},<br />
["dop"] = {"Lukpa"},<br />
["doq"] = {"Dominican Sign Language"},<br />
["dor"] = {"Dori'o"},<br />
["dos"] = {"Dogosé"},<br />
["dot"] = {"Dass"},<br />
["dov"] = {"Dombe"},<br />
["dow"] = {"Doyayo"},<br />
["dox"] = {"Bussa"},<br />
["doy"] = {"Dompo"},<br />
["doz"] = {"Dorze"},<br />
["dpp"] = {"Papar"},<br />
["dra"] = {"Dravidian languages"},<br />
["drb"] = {"Dair"},<br />
["drc"] = {"Minderico"},<br />
["drd"] = {"Darmiya"},<br />
["dre"] = {"Dolpo"},<br />
["drg"] = {"Rungus"},<br />
["dri"] = {"C'Lela"},<br />
["drl"] = {"Paakantyi"},<br />
["drn"] = {"West Damar"},<br />
["dro"] = {"Daro-Matu Melanau"},<br />
["drq"] = {"Dura"},<br />
["drs"] = {"Gedeo"},<br />
["drt"] = {"Drents"},<br />
["dru"] = {"Rukai"},<br />
["dry"] = {"Darai"},<br />
["dsb"] = {"Lower Sorbian"},<br />
["dse"] = {"Dutch Sign Language"},<br />
["dsh"] = {"Daasanach"},<br />
["dsi"] = {"Disa"},<br />
["dsl"] = {"Danish Sign Language"},<br />
["dsn"] = {"Dusner"},<br />
["dso"] = {"Desiya"},<br />
["dsq"] = {"Tadaksahak"},<br />
["dta"] = {"Daur"},<br />
["dtb"] = {"Labuk-Kinabatangan Kadazan"},<br />
["dtd"] = {"Ditidaht"},<br />
["dth"] = {"Adithinngithigh"},<br />
["dti"] = {"Ana Tinga Dogon"},<br />
["dtk"] = {"Tene Kan Dogon"},<br />
["dtm"] = {"Tomo Kan Dogon"},<br />
["dtn"] = {"Daatsʼíin"},<br />
["dto"] = {"Tommo So Dogon"},<br />
["dtp"] = {"Kadazan Dusun", "Central Dusun"},<br />
["dtr"] = {"Lotud"},<br />
["dts"] = {"Toro So Dogon"},<br />
["dtt"] = {"Toro Tegu Dogon"},<br />
["dtu"] = {"Tebul Ure Dogon"},<br />
["dty"] = {"Dotyali"},<br />
["dua"] = {"Duala"},<br />
["dub"] = {"Dubli"},<br />
["duc"] = {"Duna"},<br />
["due"] = {"Umiray Dumaget Agta"},<br />
["duf"] = {"Dumbea", "Drubea"},<br />
["dug"] = {"Duruma", "Chiduruma"},<br />
["duh"] = {"Dungra Bhil"},<br />
["dui"] = {"Dumun"},<br />
["duk"] = {"Uyajitaya"},<br />
["dul"] = {"Alabat Island Agta"},<br />
["dum"] = {"Middle Dutch (ca. 1050-1350)"},<br />
["dun"] = {"Dusun Deyah"},<br />
["duo"] = {"Dupaninan Agta"},<br />
["dup"] = {"Duano"},<br />
["duq"] = {"Dusun Malang"},<br />
["dur"] = {"Dii"},<br />
["dus"] = {"Dumi"},<br />
["duu"] = {"Drung"},<br />
["duv"] = {"Duvle"},<br />
["duw"] = {"Dusun Witu"},<br />
["dux"] = {"Duungooma"},<br />
["duy"] = {"Dicamay Agta"},<br />
["duz"] = {"Duli-Gey"},<br />
["dva"] = {"Duau"},<br />
["dwa"] = {"Diri"},<br />
["dwk"] = {"Dawik Kui"},<br />
["dwr"] = {"Dawro"},<br />
["dws"] = {"Dutton World Speedwords"},<br />
["dwu"] = {"Dhuwal"},<br />
["dww"] = {"Dawawa"},<br />
["dwy"] = {"Dhuwaya"},<br />
["dwz"] = {"Dewas Rai"},<br />
["dya"] = {"Dyan"},<br />
["dyb"] = {"Dyaberdyaber"},<br />
["dyd"] = {"Dyugun"},<br />
["dyg"] = {"Villa Viciosa Agta"},<br />
["dyi"] = {"Djimini Senoufo"},<br />
["dym"] = {"Yanda Dom Dogon"},<br />
["dyn"] = {"Dyangadi", "Dhanggatti"},<br />
["dyo"] = {"Jola-Fonyi"},<br />
["dyu"] = {"Dyula"},<br />
["dyy"] = {"Djabugay", "Dyaabugay"},<br />
["dza"] = {"Tunzu"},<br />
["dze"] = {"Djiwarli"},<br />
["dzg"] = {"Dazaga"},<br />
["dzl"] = {"Dzalakha"},<br />
["dzn"] = {"Dzando"},<br />
["eaa"] = {"Karenggapa"},<br />
["ebc"] = {"Beginci"},<br />
["ebg"] = {"Ebughu"},<br />
["ebk"] = {"Eastern Bontok"},<br />
["ebo"] = {"Teke-Ebo"},<br />
["ebr"] = {"Ebrié"},<br />
["ebu"] = {"Embu", "Kiembu"},<br />
["ecr"] = {"Eteocretan"},<br />
["ecs"] = {"Ecuadorian Sign Language"},<br />
["ecy"] = {"Eteocypriot"},<br />
["eee"] = {"E"},<br />
["efa"] = {"Efai"},<br />
["efe"] = {"Efe"},<br />
["efi"] = {"Efik"},<br />
["ega"] = {"Ega"},<br />
["egl"] = {"Emilian"},<br />
["ego"] = {"Eggon"},<br />
["egx"] = {"Egyptian languages"},<br />
["egy"] = {"Egyptian (Ancient)"},<br />
["ehs"] = {"Miyakubo Sign Language"},<br />
["ehu"] = {"Ehueun"},<br />
["eip"] = {"Eipomek"},<br />
["eit"] = {"Eitiep"},<br />
["eiv"] = {"Askopan"},<br />
["eja"] = {"Ejamat"},<br />
["eka"] = {"Ekajuk"},<br />
["eke"] = {"Ekit"},<br />
["ekg"] = {"Ekari"},<br />
["eki"] = {"Eki"},<br />
["ekk"] = {"Standard Estonian"},<br />
["ekl"] = {"Kol (Bangladesh)", "Kol"},<br />
["ekm"] = {"Elip"},<br />
["eko"] = {"Koti"},<br />
["ekp"] = {"Ekpeye"},<br />
["ekr"] = {"Yace"},<br />
["eky"] = {"Eastern Kayah"},<br />
["ele"] = {"Elepi"},<br />
["elh"] = {"El Hugeirat"},<br />
["eli"] = {"Nding"},<br />
["elk"] = {"Elkei"},<br />
["elm"] = {"Eleme"},<br />
["elo"] = {"El Molo"},<br />
["elu"] = {"Elu"},<br />
["elx"] = {"Elamite"},<br />
["ema"] = {"Emai-Iuleha-Ora"},<br />
["emb"] = {"Embaloh"},<br />
["eme"] = {"Emerillon"},<br />
["emg"] = {"Eastern Meohang"},<br />
["emi"] = {"Mussau-Emira"},<br />
["emk"] = {"Eastern Maninkakan"},<br />
["emm"] = {"Mamulique"},<br />
["emn"] = {"Eman"},<br />
["emp"] = {"Northern Emberá"},<br />
["emq"] = {"Eastern Minyag"},<br />
["ems"] = {"Pacific Gulf Yupik"},<br />
["emu"] = {"Eastern Muria"},<br />
["emw"] = {"Emplawas"},<br />
["emx"] = {"Erromintxela"},<br />
["emy"] = {"Epigraphic Mayan"},<br />
["emz"] = {"Mbessa"},<br />
["ena"] = {"Apali"},<br />
["enb"] = {"Markweeta"},<br />
["enc"] = {"En"},<br />
["end"] = {"Ende"},<br />
["enf"] = {"Forest Enets"},<br />
["enh"] = {"Tundra Enets"},<br />
["enl"] = {"Enlhet"},<br />
["enm"] = {"Middle English (1100-1500)"},<br />
["enn"] = {"Engenni"},<br />
["eno"] = {"Enggano"},<br />
["enq"] = {"Enga"},<br />
["enr"] = {"Emumu", "Emem"},<br />
["enu"] = {"Enu"},<br />
["env"] = {"Enwan (Edu State)"},<br />
["enw"] = {"Enwan (Akwa Ibom State)"},<br />
["enx"] = {"Enxet"},<br />
["eot"] = {"Beti (Côte d'Ivoire)"},<br />
["epi"] = {"Epie"},<br />
["era"] = {"Eravallan"},<br />
["erg"] = {"Sie"},<br />
["erh"] = {"Eruwa"},<br />
["eri"] = {"Ogea"},<br />
["erk"] = {"South Efate"},<br />
["ero"] = {"Horpa"},<br />
["err"] = {"Erre"},<br />
["ers"] = {"Ersu"},<br />
["ert"] = {"Eritai"},<br />
["erw"] = {"Erokwanas"},<br />
["ese"] = {"Ese Ejja"},<br />
["esg"] = {"Aheri Gondi"},<br />
["esh"] = {"Eshtehardi"},<br />
["esi"] = {"North Alaskan Inupiatun"},<br />
["esk"] = {"Northwest Alaska Inupiatun"},<br />
["esl"] = {"Egypt Sign Language"},<br />
["esm"] = {"Esuma"},<br />
["esn"] = {"Salvadoran Sign Language"},<br />
["eso"] = {"Estonian Sign Language"},<br />
["esq"] = {"Esselen"},<br />
["ess"] = {"Central Siberian Yupik"},<br />
["esu"] = {"Central Yupik"},<br />
["esx"] = {"Eskimo-Aleut languages"},<br />
["esy"] = {"Eskayan"},<br />
["etb"] = {"Etebi"},<br />
["etc"] = {"Etchemin"},<br />
["eth"] = {"Ethiopian Sign Language"},<br />
["etn"] = {"Eton (Vanuatu)"},<br />
["eto"] = {"Eton (Cameroon)"},<br />
["etr"] = {"Edolo"},<br />
["ets"] = {"Yekhee"},<br />
["ett"] = {"Etruscan"},<br />
["etu"] = {"Ejagham"},<br />
["etx"] = {"Eten"},<br />
["etz"] = {"Semimi"},<br />
["euq"] = {"Basque (family)"},<br />
["eve"] = {"Even"},<br />
["evh"] = {"Uvbie"},<br />
["evn"] = {"Evenki"},<br />
["ewo"] = {"Ewondo"},<br />
["ext"] = {"Extremaduran"},<br />
["eya"] = {"Eyak"},<br />
["eyo"] = {"Keiyo"},<br />
["eza"] = {"Ezaa"},<br />
["eze"] = {"Uzekwe"},<br />
["faa"] = {"Fasu"},<br />
["fab"] = {"Fa d'Ambu"},<br />
["fad"] = {"Wagi"},<br />
["faf"] = {"Fagani"},<br />
["fag"] = {"Finongan"},<br />
["fah"] = {"Baissa Fali"},<br />
["fai"] = {"Faiwol"},<br />
["faj"] = {"Faita"},<br />
["fak"] = {"Fang (Cameroon)"},<br />
["fal"] = {"South Fali"},<br />
["fam"] = {"Fam"},<br />
["fan"] = {"Fang (Equatorial Guinea)"},<br />
["fap"] = {"Paloor"},<br />
["far"] = {"Fataleka"},<br />
["fat"] = {"Fanti"},<br />
["fau"] = {"Fayu"},<br />
["fax"] = {"Fala"},<br />
["fay"] = {"Southwestern Fars"},<br />
["faz"] = {"Northwestern Fars"},<br />
["fbl"] = {"West Albay Bikol"},<br />
["fcs"] = {"Quebec Sign Language"},<br />
["fer"] = {"Feroge"},<br />
["ffi"] = {"Foia Foia"},<br />
["ffm"] = {"Maasina Fulfulde"},<br />
["fgr"] = {"Fongoro"},<br />
["fia"] = {"Nobiin"},<br />
["fie"] = {"Fyer"},<br />
["fif"] = {"Faifi"},<br />
["fil"] = {"Filipino", "Pilipino"},<br />
["fip"] = {"Fipa"},<br />
["fir"] = {"Firan"},<br />
["fit"] = {"Tornedalen Finnish"},<br />
["fiu"] = {"Finno-Ugrian languages"},<br />
["fiw"] = {"Fiwaga"},<br />
["fkk"] = {"Kirya-Konzəl"},<br />
["fkv"] = {"Kven Finnish"},<br />
["fla"] = {"Kalispel-Pend d'Oreille"},<br />
["flh"] = {"Foau"},<br />
["fli"] = {"Fali"},<br />
["fll"] = {"North Fali"},<br />
["fln"] = {"Flinders Island"},<br />
["flr"] = {"Fuliiru"},<br />
["fly"] = {"Flaaitaal", "Tsotsitaal"},<br />
["fmp"] = {"Fe'fe'"},<br />
["fmu"] = {"Far Western Muria"},<br />
["fnb"] = {"Fanbak"},<br />
["fng"] = {"Fanagalo"},<br />
["fni"] = {"Fania"},<br />
["fod"] = {"Foodo"},<br />
["foi"] = {"Foi"},<br />
["fom"] = {"Foma"},<br />
["fon"] = {"Fon"},<br />
["for"] = {"Fore"},<br />
["fos"] = {"Siraya"},<br />
["fox"] = {"Formosan languages"},<br />
["fpe"] = {"Fernando Po Creole English"},<br />
["fqs"] = {"Fas"},<br />
["frc"] = {"Cajun French"},<br />
["frd"] = {"Fordata"},<br />
["frk"] = {"Frankish"},<br />
["frm"] = {"Middle French (ca. 1400-1600)"},<br />
["fro"] = {"Old French (842-ca. 1400)"},<br />
["frp"] = {"Arpitan", "Francoprovençal"},<br />
["frq"] = {"Forak"},<br />
["frr"] = {"Northern Frisian"},<br />
["frs"] = {"Eastern Frisian"},<br />
["frt"] = {"Fortsenal"},<br />
["fse"] = {"Finnish Sign Language"},<br />
["fsl"] = {"French Sign Language"},<br />
["fss"] = {"Finland-Swedish Sign Language", "finlandssvenskt teckenspråk", "suomenruotsalainen viittomakieli"},<br />
["fub"] = {"Adamawa Fulfulde"},<br />
["fuc"] = {"Pulaar"},<br />
["fud"] = {"East Futuna"},<br />
["fue"] = {"Borgu Fulfulde"},<br />
["fuf"] = {"Pular"},<br />
["fuh"] = {"Western Niger Fulfulde"},<br />
["fui"] = {"Bagirmi Fulfulde"},<br />
["fuj"] = {"Ko"},<br />
["fum"] = {"Fum"},<br />
["fun"] = {"Fulniô"},<br />
["fuq"] = {"Central-Eastern Niger Fulfulde"},<br />
["fur"] = {"Friulian"},<br />
["fut"] = {"Futuna-Aniwa"},<br />
["fuu"] = {"Furu"},<br />
["fuv"] = {"Nigerian Fulfulde"},<br />
["fuy"] = {"Fuyug"},<br />
["fvr"] = {"Fur"},<br />
["fwa"] = {"Fwâi"},<br />
["fwe"] = {"Fwe"},<br />
["gaa"] = {"Ga"},<br />
["gab"] = {"Gabri"},<br />
["gac"] = {"Mixed Great Andamanese"},<br />
["gad"] = {"Gaddang"},<br />
["gae"] = {"Guarequena"},<br />
["gaf"] = {"Gende"},<br />
["gag"] = {"Gagauz"},<br />
["gah"] = {"Alekano"},<br />
["gai"] = {"Borei"},<br />
["gaj"] = {"Gadsup"},<br />
["gak"] = {"Gamkonora"},<br />
["gal"] = {"Galolen"},<br />
["gam"] = {"Kandawo"},<br />
["gan"] = {"Gan Chinese"},<br />
["gao"] = {"Gants"},<br />
["gap"] = {"Gal"},<br />
["gaq"] = {"Gata'"},<br />
["gar"] = {"Galeya"},<br />
["gas"] = {"Adiwasi Garasia"},<br />
["gat"] = {"Kenati"},<br />
["gau"] = {"Mudhili Gadaba"},<br />
["gaw"] = {"Nobonob"},<br />
["gax"] = {"Borana-Arsi-Guji Oromo"},<br />
["gay"] = {"Gayo"},<br />
["gaz"] = {"West Central Oromo"},<br />
["gba"] = {"Gbaya (Central African Republic)"},<br />
["gbb"] = {"Kaytetye"},<br />
["gbd"] = {"Karajarri"},<br />
["gbe"] = {"Niksek"},<br />
["gbf"] = {"Gaikundi"},<br />
["gbg"] = {"Gbanziri"},<br />
["gbh"] = {"Defi Gbe"},<br />
["gbi"] = {"Galela"},<br />
["gbj"] = {"Bodo Gadaba"},<br />
["gbk"] = {"Gaddi"},<br />
["gbl"] = {"Gamit"},<br />
["gbm"] = {"Garhwali"},<br />
["gbn"] = {"Mo'da"},<br />
["gbo"] = {"Northern Grebo"},<br />
["gbp"] = {"Gbaya-Bossangoa"},<br />
["gbq"] = {"Gbaya-Bozoum"},<br />
["gbr"] = {"Gbagyi"},<br />
["gbs"] = {"Gbesi Gbe"},<br />
["gbu"] = {"Gagadu"},<br />
["gbv"] = {"Gbanu"},<br />
["gbw"] = {"Gabi-Gabi"},<br />
["gbx"] = {"Eastern Xwla Gbe"},<br />
["gby"] = {"Gbari"},<br />
["gbz"] = {"Zoroastrian Dari"},<br />
["gcc"] = {"Mali"},<br />
["gcd"] = {"Ganggalida"},<br />
["gce"] = {"Galice"},<br />
["gcf"] = {"Guadeloupean Creole French"},<br />
["gcl"] = {"Grenadian Creole English"},<br />
["gcn"] = {"Gaina"},<br />
["gcr"] = {"Guianese Creole French"},<br />
["gct"] = {"Colonia Tovar German"},<br />
["gda"] = {"Gade Lohar"},<br />
["gdb"] = {"Pottangi Ollar Gadaba"},<br />
["gdc"] = {"Gugu Badhun"},<br />
["gdd"] = {"Gedaged"},<br />
["gde"] = {"Gude"},<br />
["gdf"] = {"Guduf-Gava"},<br />
["gdg"] = {"Ga'dang"},<br />
["gdh"] = {"Gadjerawang", "Gajirrabeng"},<br />
["gdi"] = {"Gundi"},<br />
["gdj"] = {"Gurdjar"},<br />
["gdk"] = {"Gadang"},<br />
["gdl"] = {"Dirasha"},<br />
["gdm"] = {"Laal"},<br />
["gdn"] = {"Umanakaina"},<br />
["gdo"] = {"Ghodoberi"},<br />
["gdq"] = {"Mehri"},<br />
["gdr"] = {"Wipi"},<br />
["gds"] = {"Ghandruk Sign Language"},<br />
["gdt"] = {"Kungardutyi"},<br />
["gdu"] = {"Gudu"},<br />
["gdx"] = {"Godwari"},<br />
["gea"] = {"Geruma"},<br />
["geb"] = {"Kire"},<br />
["gec"] = {"Gboloo Grebo"},<br />
["ged"] = {"Gade"},<br />
["gef"] = {"Gerai"},<br />
["geg"] = {"Gengle"},<br />
["geh"] = {"Hutterite German", "Hutterisch"},<br />
["gei"] = {"Gebe"},<br />
["gej"] = {"Gen"},<br />
["gek"] = {"Ywom"},<br />
["gel"] = {"ut-Ma'in"},<br />
["gem"] = {"Germanic languages"},<br />
["geq"] = {"Geme"},<br />
["ges"] = {"Geser-Gorom"},<br />
["gev"] = {"Eviya"},<br />
["gew"] = {"Gera"},<br />
["gex"] = {"Garre"},<br />
["gey"] = {"Enya"},<br />
["gez"] = {"Geez"},<br />
["gfk"] = {"Patpatar"},<br />
["gft"] = {"Gafat"},<br />
["gga"] = {"Gao"},<br />
["ggb"] = {"Gbii"},<br />
["ggd"] = {"Gugadj"},<br />
["gge"] = {"Gurr-goni"},<br />
["ggg"] = {"Gurgula"},<br />
["ggk"] = {"Kungarakany"},<br />
["ggl"] = {"Ganglau"},<br />
["ggt"] = {"Gitua"},<br />
["ggu"] = {"Gagu", "Gban"},<br />
["ggw"] = {"Gogodala"},<br />
["gha"] = {"Ghadamès"},<br />
["ghc"] = {"Hiberno-Scottish Gaelic"},<br />
["ghe"] = {"Southern Ghale"},<br />
["ghh"] = {"Northern Ghale"},<br />
["ghk"] = {"Geko Karen"},<br />
["ghl"] = {"Ghulfan"},<br />
["ghn"] = {"Ghanongga"},<br />
["gho"] = {"Ghomara"},<br />
["ghr"] = {"Ghera"},<br />
["ghs"] = {"Guhu-Samane"},<br />
["ght"] = {"Kuke", "Kutang Ghale"},<br />
["gia"] = {"Kija"},<br />
["gib"] = {"Gibanawa"},<br />
["gic"] = {"Gail"},<br />
["gid"] = {"Gidar"},<br />
["gie"] = {"Gaɓogbo", "Guébie"},<br />
["gig"] = {"Goaria"},<br />
["gih"] = {"Githabul"},<br />
["gii"] = {"Girirra"},<br />
["gil"] = {"Gilbertese"},<br />
["gim"] = {"Gimi (Eastern Highlands)"},<br />
["gin"] = {"Hinukh"},<br />
["gip"] = {"Gimi (West New Britain)"},<br />
["giq"] = {"Green Gelao"},<br />
["gir"] = {"Red Gelao"},<br />
["gis"] = {"North Giziga"},<br />
["git"] = {"Gitxsan"},<br />
["giu"] = {"Mulao"},<br />
["giw"] = {"White Gelao"},<br />
["gix"] = {"Gilima"},<br />
["giy"] = {"Giyug"},<br />
["giz"] = {"South Giziga"},<br />
["gjk"] = {"Kachi Koli"},<br />
["gjm"] = {"Gunditjmara"},<br />
["gjn"] = {"Gonja"},<br />
["gjr"] = {"Gurindji Kriol"},<br />
["gju"] = {"Gujari"},<br />
["gka"] = {"Guya"},<br />
["gkd"] = {"Magɨ (Madang Province)"},<br />
["gke"] = {"Ndai"},<br />
["gkn"] = {"Gokana"},<br />
["gko"] = {"Kok-Nar"},<br />
["gkp"] = {"Guinea Kpelle"},<br />
["gku"] = {"ǂUngkue"},<br />
["glb"] = {"Belning"},<br />
["glc"] = {"Bon Gula"},<br />
["gld"] = {"Nanai"},<br />
["glh"] = {"Northwest Pashai", "Northwest Pashayi"},<br />
["glj"] = {"Gula Iro"},<br />
["glk"] = {"Gilaki"},<br />
["gll"] = {"Garlali"},<br />
["glo"] = {"Galambu"},<br />
["glr"] = {"Glaro-Twabo"},<br />
["glu"] = {"Gula (Chad)"},<br />
["glw"] = {"Glavda"},<br />
["gly"] = {"Gule"},<br />
["gma"] = {"Gambera"},<br />
["gmb"] = {"Gula'alaa"},<br />
["gmd"] = {"Mághdì"},<br />
["gme"] = {"East Germanic languages"},<br />
["gmg"] = {"Magɨyi"},<br />
["gmh"] = {"Middle High German (ca. 1050-1500)"},<br />
["gml"] = {"Middle Low German"},<br />
["gmm"] = {"Gbaya-Mbodomo"},<br />
["gmn"] = {"Gimnime"},<br />
["gmq"] = {"North Germanic languages"},<br />
["gmr"] = {"Mirning", "Mirniny"},<br />
["gmu"] = {"Gumalu"},<br />
["gmv"] = {"Gamo"},<br />
["gmw"] = {"West Germanic languages"},<br />
["gmx"] = {"Magoma"},<br />
["gmy"] = {"Mycenaean Greek"},<br />
["gmz"] = {"Mgbolizhia"},<br />
["gna"] = {"Kaansa"},<br />
["gnb"] = {"Gangte"},<br />
["gnc"] = {"Guanche"},<br />
["gnd"] = {"Zulgo-Gemzek"},<br />
["gne"] = {"Ganang"},<br />
["gng"] = {"Ngangam"},<br />
["gnh"] = {"Lere"},<br />
["gni"] = {"Gooniyandi"},<br />
["gnj"] = {"Ngen"},<br />
["gnk"] = {"ǁGana"},<br />
["gnl"] = {"Gangulu"},<br />
["gnm"] = {"Ginuman"},<br />
["gnn"] = {"Gumatj"},<br />
["gno"] = {"Northern Gondi"},<br />
["gnq"] = {"Gana"},<br />
["gnr"] = {"Gureng Gureng"},<br />
["gnt"] = {"Guntai"},<br />
["gnu"] = {"Gnau"},<br />
["gnw"] = {"Western Bolivian Guaraní"},<br />
["gnz"] = {"Ganzi"},<br />
["goa"] = {"Guro"},<br />
["gob"] = {"Playero"},<br />
["goc"] = {"Gorakor"},<br />
["god"] = {"Godié"},<br />
["goe"] = {"Gongduk"},<br />
["gof"] = {"Gofa"},<br />
["gog"] = {"Gogo"},<br />
["goh"] = {"Old High German (ca. 750-1050)"},<br />
["goi"] = {"Gobasi"},<br />
["goj"] = {"Gowlan"},<br />
["gok"] = {"Gowli"},<br />
["gol"] = {"Gola"},<br />
["gom"] = {"Goan Konkani"},<br />
["gon"] = {"Gondi"},<br />
["goo"] = {"Gone Dau"},<br />
["gop"] = {"Yeretuar"},<br />
["goq"] = {"Gorap"},<br />
["gor"] = {"Gorontalo"},<br />
["gos"] = {"Gronings"},<br />
["got"] = {"Gothic"},<br />
["gou"] = {"Gavar"},<br />
["gow"] = {"Gorowa"},<br />
["gox"] = {"Gobu"},<br />
["goy"] = {"Goundo"},<br />
["goz"] = {"Gozarkhani"},<br />
["gpa"] = {"Gupa-Abawa"},<br />
["gpe"] = {"Ghanaian Pidgin English"},<br />
["gpn"] = {"Taiap"},<br />
["gqa"] = {"Ga'anda"},<br />
["gqi"] = {"Guiqiong"},<br />
["gqn"] = {"Guana (Brazil)"},<br />
["gqr"] = {"Gor"},<br />
["gqu"] = {"Qau"},<br />
["gra"] = {"Rajput Garasia"},<br />
["grb"] = {"Grebo"},<br />
["grc"] = {"Ancient Greek (to 1453)"},<br />
["grd"] = {"Guruntum-Mbaaru"},<br />
["grg"] = {"Madi"},<br />
["grh"] = {"Gbiri-Niragu"},<br />
["gri"] = {"Ghari"},<br />
["grj"] = {"Southern Grebo"},<br />
["grk"] = {"Greek languages"},<br />
["grm"] = {"Kota Marudu Talantang"},<br />
["gro"] = {"Groma"},<br />
["grq"] = {"Gorovu"},<br />
["grr"] = {"Taznatit"},<br />
["grs"] = {"Gresi"},<br />
["grt"] = {"Garo"},<br />
["gru"] = {"Kistane"},<br />
["grv"] = {"Central Grebo"},<br />
["grw"] = {"Gweda"},<br />
["grx"] = {"Guriaso"},<br />
["gry"] = {"Barclayville Grebo"},<br />
["grz"] = {"Guramalum"},<br />
["gse"] = {"Ghanaian Sign Language"},<br />
["gsg"] = {"German Sign Language"},<br />
["gsl"] = {"Gusilay"},<br />
["gsm"] = {"Guatemalan Sign Language"},<br />
["gsn"] = {"Nema", "Gusan"},<br />
["gso"] = {"Southwest Gbaya"},<br />
["gsp"] = {"Wasembo"},<br />
["gss"] = {"Greek Sign Language"},<br />
["gsw"] = {"Swiss German", "Alemannic", "Alsatian"},<br />
["gta"] = {"Guató"},<br />
["gtu"] = {"Aghu-Tharnggala"},<br />
["gua"] = {"Shiki"},<br />
["gub"] = {"Guajajára"},<br />
["guc"] = {"Wayuu"},<br />
["gud"] = {"Yocoboué Dida"},<br />
["gue"] = {"Gurindji"},<br />
["guf"] = {"Gupapuyngu"},<br />
["gug"] = {"Paraguayan Guaraní"},<br />
["guh"] = {"Guahibo"},<br />
["gui"] = {"Eastern Bolivian Guaraní"},<br />
["guk"] = {"Gumuz"},<br />
["gul"] = {"Sea Island Creole English"},<br />
["gum"] = {"Guambiano"},<br />
["gun"] = {"Mbyá Guaraní"},<br />
["guo"] = {"Guayabero"},<br />
["gup"] = {"Gunwinggu"},<br />
["guq"] = {"Aché"},<br />
["gur"] = {"Farefare"},<br />
["gus"] = {"Guinean Sign Language"},<br />
["gut"] = {"Maléku Jaíka"},<br />
["guu"] = {"Yanomamö"},<br />
["guw"] = {"Gun"},<br />
["gux"] = {"Gourmanchéma"},<br />
["guz"] = {"Gusii", "Ekegusii"},<br />
["gva"] = {"Guana (Paraguay)"},<br />
["gvc"] = {"Guanano"},<br />
["gve"] = {"Duwet"},<br />
["gvf"] = {"Golin"},<br />
["gvj"] = {"Guajá"},<br />
["gvl"] = {"Gulay"},<br />
["gvm"] = {"Gurmana"},<br />
["gvn"] = {"Kuku-Yalanji"},<br />
["gvo"] = {"Gavião Do Jiparaná"},<br />
["gvp"] = {"Pará Gavião"},<br />
["gvr"] = {"Gurung"},<br />
["gvs"] = {"Gumawana"},<br />
["gvy"] = {"Guyani"},<br />
["gwa"] = {"Mbato"},<br />
["gwb"] = {"Gwa"},<br />
["gwc"] = {"Gawri", "Kalami"},<br />
["gwd"] = {"Gawwada"},<br />
["gwe"] = {"Gweno"},<br />
["gwf"] = {"Gowro"},<br />
["gwg"] = {"Moo"},<br />
["gwi"] = {"Gwichʼin"},<br />
["gwj"] = {"ǀGwi"},<br />
["gwm"] = {"Awngthim"},<br />
["gwn"] = {"Gwandara"},<br />
["gwr"] = {"Gwere"},<br />
["gwt"] = {"Gawar-Bati"},<br />
["gwu"] = {"Guwamu"},<br />
["gww"] = {"Kwini"},<br />
["gwx"] = {"Gua"},<br />
["gxx"] = {"Wè Southern"},<br />
["gya"] = {"Northwest Gbaya"},<br />
["gyb"] = {"Garus"},<br />
["gyd"] = {"Kayardild"},<br />
["gye"] = {"Gyem"},<br />
["gyf"] = {"Gungabula"},<br />
["gyg"] = {"Gbayi"},<br />
["gyi"] = {"Gyele"},<br />
["gyl"] = {"Gayil"},<br />
["gym"] = {"Ngäbere"},<br />
["gyn"] = {"Guyanese Creole English"},<br />
["gyo"] = {"Gyalsumdo"},<br />
["gyr"] = {"Guarayu"},<br />
["gyy"] = {"Gunya"},<br />
["gyz"] = {"Geji", "Gyaazi"},<br />
["gza"] = {"Ganza"},<br />
["gzi"] = {"Gazi"},<br />
["gzn"] = {"Gane"},<br />
["haa"] = {"Han"},<br />
["hab"] = {"Hanoi Sign Language"},<br />
["hac"] = {"Gurani"},<br />
["had"] = {"Hatam"},<br />
["hae"] = {"Eastern Oromo"},<br />
["haf"] = {"Haiphong Sign Language"},<br />
["hag"] = {"Hanga"},<br />
["hah"] = {"Hahon"},<br />
["hai"] = {"Haida"},<br />
["haj"] = {"Hajong"},<br />
["hak"] = {"Hakka Chinese"},<br />
["hal"] = {"Halang"},<br />
["ham"] = {"Hewa"},<br />
["han"] = {"Hangaza"},<br />
["hao"] = {"Hakö"},<br />
["hap"] = {"Hupla"},<br />
["haq"] = {"Ha"},<br />
["har"] = {"Harari"},<br />
["has"] = {"Haisla"},<br />
["hav"] = {"Havu"},<br />
["haw"] = {"Hawaiian"},<br />
["hax"] = {"Southern Haida"},<br />
["hay"] = {"Haya"},<br />
["haz"] = {"Hazaragi"},<br />
["hba"] = {"Hamba"},<br />
["hbb"] = {"Huba"},<br />
["hbn"] = {"Heiban"},<br />
["hbo"] = {"Ancient Hebrew"},<br />
["hbu"] = {"Habu"},<br />
["hca"] = {"Andaman Creole Hindi"},<br />
["hch"] = {"Huichol"},<br />
["hdn"] = {"Northern Haida"},<br />
["hds"] = {"Honduras Sign Language"},<br />
["hdy"] = {"Hadiyya"},<br />
["hea"] = {"Northern Qiandong Miao"},<br />
["hed"] = {"Herdé"},<br />
["heg"] = {"Helong"},<br />
["heh"] = {"Hehe"},<br />
["hei"] = {"Heiltsuk"},<br />
["hem"] = {"Hemba"},<br />
["hgm"] = {"Haiǁom"},<br />
["hgw"] = {"Haigwai"},<br />
["hhi"] = {"Hoia Hoia"},<br />
["hhr"] = {"Kerak"},<br />
["hhy"] = {"Hoyahoya"},<br />
["hia"] = {"Lamang"},<br />
["hib"] = {"Hibito"},<br />
["hid"] = {"Hidatsa"},<br />
["hif"] = {"Fiji Hindi"},<br />
["hig"] = {"Kamwe"},<br />
["hih"] = {"Pamosu"},<br />
["hii"] = {"Hinduri"},<br />
["hij"] = {"Hijuk"},<br />
["hik"] = {"Seit-Kaitetu"},<br />
["hil"] = {"Hiligaynon"},<br />
["him"] = {"Himachali languages", "Western Pahari languages"},<br />
["hio"] = {"Tsoa"},<br />
["hir"] = {"Himarimã"},<br />
["hit"] = {"Hittite"},<br />
["hiw"] = {"Hiw"},<br />
["hix"] = {"Hixkaryána"},<br />
["hji"] = {"Haji"},<br />
["hka"] = {"Kahe"},<br />
["hke"] = {"Hunde"},<br />
["hkh"] = {"Khah", "Poguli"},<br />
["hkk"] = {"Hunjara-Kaina Ke"},<br />
["hkn"] = {"Mel-Khaonh"},<br />
["hks"] = {"Hong Kong Sign Language", "Heung Kong Sau Yue"},<br />
["hla"] = {"Halia"},<br />
["hlb"] = {"Halbi"},<br />
["hld"] = {"Halang Doan"},<br />
["hle"] = {"Hlersu"},<br />
["hlt"] = {"Matu Chin"},<br />
["hlu"] = {"Hieroglyphic Luwian"},<br />
["hma"] = {"Southern Mashan Hmong", "Southern Mashan Miao"},<br />
["hmb"] = {"Humburi Senni Songhay"},<br />
["hmc"] = {"Central Huishui Hmong", "Central Huishui Miao"},<br />
["hmd"] = {"Large Flowery Miao", "A-hmaos", "Da-Hua Miao"},<br />
["hme"] = {"Eastern Huishui Hmong", "Eastern Huishui Miao"},<br />
["hmf"] = {"Hmong Don"},<br />
["hmg"] = {"Southwestern Guiyang Hmong"},<br />
["hmh"] = {"Southwestern Huishui Hmong", "Southwestern Huishui Miao"},<br />
["hmi"] = {"Northern Huishui Hmong", "Northern Huishui Miao"},<br />
["hmj"] = {"Ge", "Gejia"},<br />
["hmk"] = {"Maek"},<br />
["hml"] = {"Luopohe Hmong", "Luopohe Miao"},<br />
["hmm"] = {"Central Mashan Hmong", "Central Mashan Miao"},<br />
["hmn"] = {"Hmong", "Mong"},<br />
["hmp"] = {"Northern Mashan Hmong", "Northern Mashan Miao"},<br />
["hmq"] = {"Eastern Qiandong Miao"},<br />
["hmr"] = {"Hmar"},<br />
["hms"] = {"Southern Qiandong Miao"},<br />
["hmt"] = {"Hamtai"},<br />
["hmu"] = {"Hamap"},<br />
["hmv"] = {"Hmong Dô"},<br />
["hmw"] = {"Western Mashan Hmong", "Western Mashan Miao"},<br />
["hmx"] = {"Hmong-Mien languages"},<br />
["hmy"] = {"Southern Guiyang Hmong", "Southern Guiyang Miao"},<br />
["hmz"] = {"Hmong Shua", "Sinicized Miao"},<br />
["hna"] = {"Mina (Cameroon)"},<br />
["hnd"] = {"Southern Hindko"},<br />
["hne"] = {"Chhattisgarhi"},<br />
["hng"] = {"Hungu"},<br />
["hnh"] = {"ǁAni"},<br />
["hni"] = {"Hani"},<br />
["hnj"] = {"Hmong Njua", "Mong Leng", "Mong Njua"},<br />
["hnn"] = {"Hanunoo"},<br />
["hno"] = {"Northern Hindko"},<br />
["hns"] = {"Caribbean Hindustani"},<br />
["hnu"] = {"Hung"},<br />
["hoa"] = {"Hoava"},<br />
["hob"] = {"Mari (Madang Province)"},<br />
["hoc"] = {"Ho"},<br />
["hod"] = {"Holma"},<br />
["hoe"] = {"Horom"},<br />
["hoh"] = {"Hobyót"},<br />
["hoi"] = {"Holikachuk"},<br />
["hoj"] = {"Hadothi", "Haroti"},<br />
["hok"] = {"Hokan languages"},<br />
["hol"] = {"Holu"},<br />
["hom"] = {"Homa"},<br />
["hoo"] = {"Holoholo"},<br />
["hop"] = {"Hopi"},<br />
["hor"] = {"Horo"},<br />
["hos"] = {"Ho Chi Minh City Sign Language"},<br />
["hot"] = {"Hote", "Malê"},<br />
["hov"] = {"Hovongan"},<br />
["how"] = {"Honi"},<br />
["hoy"] = {"Holiya"},<br />
["hoz"] = {"Hozo"},<br />
["hpo"] = {"Hpon"},<br />
["hps"] = {"Hawai'i Sign Language (HSL)", "Hawai'i Pidgin Sign Language"},<br />
["hra"] = {"Hrangkhol"},<br />
["hrc"] = {"Niwer Mil"},<br />
["hre"] = {"Hre"},<br />
["hrk"] = {"Haruku"},<br />
["hrm"] = {"Horned Miao"},<br />
["hro"] = {"Haroi"},<br />
["hrp"] = {"Nhirrpi"},<br />
["hrt"] = {"Hértevin"},<br />
["hru"] = {"Hruso"},<br />
["hrw"] = {"Warwar Feni"},<br />
["hrx"] = {"Hunsrik"},<br />
["hrz"] = {"Harzani"},<br />
["hsb"] = {"Upper Sorbian"},<br />
["hsh"] = {"Hungarian Sign Language"},<br />
["hsl"] = {"Hausa Sign Language"},<br />
["hsn"] = {"Xiang Chinese"},<br />
["hss"] = {"Harsusi"},<br />
["hti"] = {"Hoti"},<br />
["hto"] = {"Minica Huitoto"},<br />
["hts"] = {"Hadza"},<br />
["htu"] = {"Hitu"},<br />
["htx"] = {"Middle Hittite"},<br />
["hub"] = {"Huambisa"},<br />
["huc"] = {"ǂHua", "ǂʼAmkhoe"},<br />
["hud"] = {"Huaulu"},<br />
["hue"] = {"San Francisco Del Mar Huave"},<br />
["huf"] = {"Humene"},<br />
["hug"] = {"Huachipaeri"},<br />
["huh"] = {"Huilliche"},<br />
["hui"] = {"Huli"},<br />
["huj"] = {"Northern Guiyang Hmong", "Northern Guiyang Miao"},<br />
["huk"] = {"Hulung"},<br />
["hul"] = {"Hula"},<br />
["hum"] = {"Hungana"},<br />
["huo"] = {"Hu"},<br />
["hup"] = {"Hupa"},<br />
["huq"] = {"Tsat"},<br />
["hur"] = {"Halkomelem"},<br />
["hus"] = {"Huastec"},<br />
["hut"] = {"Humla"},<br />
["huu"] = {"Murui Huitoto"},<br />
["huv"] = {"San Mateo Del Mar Huave"},<br />
["huw"] = {"Hukumina"},<br />
["hux"] = {"Nüpode Huitoto"},<br />
["huy"] = {"Hulaulá"},<br />
["huz"] = {"Hunzib"},<br />
["hvc"] = {"Haitian Vodoun Culture Language"},<br />
["hve"] = {"San Dionisio Del Mar Huave"},<br />
["hvk"] = {"Haveke"},<br />
["hvn"] = {"Sabu"},<br />
["hvv"] = {"Santa María Del Mar Huave"},<br />
["hwa"] = {"Wané"},<br />
["hwc"] = {"Hawai'i Creole English", "Hawai'i Pidgin"},<br />
["hwo"] = {"Hwana"},<br />
["hya"] = {"Hya"},<br />
["hyw"] = {"Western Armenian"},<br />
["hyx"] = {"Armenian (family)"},<br />
["iai"] = {"Iaai"},<br />
["ian"] = {"Iatmul"},<br />
["iar"] = {"Purari"},<br />
["iba"] = {"Iban"},<br />
["ibb"] = {"Ibibio"},<br />
["ibd"] = {"Iwaidja"},<br />
["ibe"] = {"Akpes"},<br />
["ibg"] = {"Ibanag"},<br />
["ibh"] = {"Bih"},<br />
["ibl"] = {"Ibaloi"},<br />
["ibm"] = {"Agoi"},<br />
["ibn"] = {"Ibino"},<br />
["ibr"] = {"Ibuoro"},<br />
["ibu"] = {"Ibu"},<br />
["iby"] = {"Ibani"},<br />
["ica"] = {"Ede Ica"},<br />
["ich"] = {"Etkywan"},<br />
["icl"] = {"Icelandic Sign Language"},<br />
["icr"] = {"Islander Creole English"},<br />
["ida"] = {"Idakho-Isukha-Tiriki", "Luidakho-Luisukha-Lutirichi"},<br />
["idb"] = {"Indo-Portuguese"},<br />
["idc"] = {"Idon", "Ajiya"},<br />
["idd"] = {"Ede Idaca"},<br />
["ide"] = {"Idere"},<br />
["idi"] = {"Idi"},<br />
["idr"] = {"Indri"},<br />
["ids"] = {"Idesa"},<br />
["idt"] = {"Idaté"},<br />
["idu"] = {"Idoma"},<br />
["ifa"] = {"Amganad Ifugao"},<br />
["ifb"] = {"Batad Ifugao", "Ayangan Ifugao"},<br />
["ife"] = {"Ifè"},<br />
["iff"] = {"Ifo"},<br />
["ifk"] = {"Tuwali Ifugao"},<br />
["ifm"] = {"Teke-Fuumu"},<br />
["ifu"] = {"Mayoyao Ifugao"},<br />
["ify"] = {"Keley-I Kallahan"},<br />
["igb"] = {"Ebira"},<br />
["ige"] = {"Igede"},<br />
["igg"] = {"Igana"},<br />
["igl"] = {"Igala"},<br />
["igm"] = {"Kanggape"},<br />
["ign"] = {"Ignaciano"},<br />
["igo"] = {"Isebe"},<br />
["igs"] = {"Interglossa"},<br />
["igw"] = {"Igwe"},<br />
["ihb"] = {"Iha Based Pidgin"},<br />
["ihi"] = {"Ihievbe"},<br />
["ihp"] = {"Iha"},<br />
["ihw"] = {"Bidhawal"},<br />
["iin"] = {"Thiin"},<br />
["iir"] = {"Indo-Iranian languages"},<br />
["ijc"] = {"Izon"},<br />
["ije"] = {"Biseni"},<br />
["ijj"] = {"Ede Ije"},<br />
["ijn"] = {"Kalabari"},<br />
["ijo"] = {"Ijo languages"},<br />
["ijs"] = {"Southeast Ijo"},<br />
["ike"] = {"Eastern Canadian Inuktitut"},<br />
["iki"] = {"Iko"},<br />
["ikk"] = {"Ika"},<br />
["ikl"] = {"Ikulu"},<br />
["iko"] = {"Olulumo-Ikom"},<br />
["ikp"] = {"Ikpeshi"},<br />
["ikr"] = {"Ikaranggal"},<br />
["iks"] = {"Inuit Sign Language"},<br />
["ikt"] = {"Inuinnaqtun", "Western Canadian Inuktitut"},<br />
["ikv"] = {"Iku-Gora-Ankwa"},<br />
["ikw"] = {"Ikwere"},<br />
["ikx"] = {"Ik"},<br />
["ikz"] = {"Ikizu"},<br />
["ila"] = {"Ile Ape"},<br />
["ilb"] = {"Ila"},<br />
["ilg"] = {"Garig-Ilgar"},<br />
["ili"] = {"Ili Turki"},<br />
["ilk"] = {"Ilongot"},<br />
["ilm"] = {"Iranun (Malaysia)"},<br />
["ilo"] = {"Iloko"},<br />
["ilp"] = {"Iranun (Philippines)"},<br />
["ils"] = {"International Sign"},<br />
["ilu"] = {"Ili'uun"},<br />
["ilv"] = {"Ilue"},<br />
["ima"] = {"Mala Malasar"},<br />
["imi"] = {"Anamgura"},<br />
["iml"] = {"Miluk"},<br />
["imn"] = {"Imonda"},<br />
["imo"] = {"Imbongu"},<br />
["imr"] = {"Imroing"},<br />
["ims"] = {"Marsian"},<br />
["imy"] = {"Milyan"},<br />
["inb"] = {"Inga"},<br />
["inc"] = {"Indic languages"},<br />
["ine"] = {"Indo-European languages"},<br />
["ing"] = {"Degexit'an"},<br />
["inh"] = {"Ingush"},<br />
["inj"] = {"Jungle Inga"},<br />
["inl"] = {"Indonesian Sign Language"},<br />
["inm"] = {"Minaean"},<br />
["inn"] = {"Isinai"},<br />
["ino"] = {"Inoke-Yate"},<br />
["inp"] = {"Iñapari"},<br />
["ins"] = {"Indian Sign Language"},<br />
["int"] = {"Intha"},<br />
["inz"] = {"Ineseño"},<br />
["ior"] = {"Inor"},<br />
["iou"] = {"Tuma-Irumu"},<br />
["iow"] = {"Iowa-Oto"},<br />
["ipi"] = {"Ipili"},<br />
["ipo"] = {"Ipiko"},<br />
["iqu"] = {"Iquito"},<br />
["iqw"] = {"Ikwo"},<br />
["ira"] = {"Iranian languages"},<br />
["ire"] = {"Iresim"},<br />
["irh"] = {"Irarutu"},<br />
["iri"] = {"Rigwe", "Irigwe"},<br />
["irk"] = {"Iraqw"},<br />
["irn"] = {"Irántxe"},<br />
["iro"] = {"Iroquoian languages"},<br />
["irr"] = {"Ir"},<br />
["iru"] = {"Irula"},<br />
["irx"] = {"Kamberau"},<br />
["iry"] = {"Iraya"},<br />
["isa"] = {"Isabi"},<br />
["isc"] = {"Isconahua"},<br />
["isd"] = {"Isnag"},<br />
["ise"] = {"Italian Sign Language"},<br />
["isg"] = {"Irish Sign Language"},<br />
["ish"] = {"Esan"},<br />
["isi"] = {"Nkem-Nkum"},<br />
["isk"] = {"Ishkashimi"},<br />
["ism"] = {"Masimasi"},<br />
["isn"] = {"Isanzu"},<br />
["iso"] = {"Isoko"},<br />
["isr"] = {"Israeli Sign Language"},<br />
["ist"] = {"Istriot"},<br />
["isu"] = {"Isu (Menchum Division)"},<br />
["itb"] = {"Binongan Itneg"},<br />
["itc"] = {"Italic languages"},<br />
["itd"] = {"Southern Tidung"},<br />
["ite"] = {"Itene"},<br />
["iti"] = {"Inlaod Itneg"},<br />
["itk"] = {"Judeo-Italian"},<br />
["itl"] = {"Itelmen"},<br />
["itm"] = {"Itu Mbon Uzo"},<br />
["ito"] = {"Itonama"},<br />
["itr"] = {"Iteri"},<br />
["its"] = {"Isekiri"},<br />
["itt"] = {"Maeng Itneg"},<br />
["itv"] = {"Itawit"},<br />
["itw"] = {"Ito"},<br />
["itx"] = {"Itik"},<br />
["ity"] = {"Moyadan Itneg"},<br />
["itz"] = {"Itzá"},<br />
["ium"] = {"Iu Mien"},<br />
["ivb"] = {"Ibatan"},<br />
["ivv"] = {"Ivatan"},<br />
["iwk"] = {"I-Wak"},<br />
["iwm"] = {"Iwam"},<br />
["iwo"] = {"Iwur"},<br />
["iws"] = {"Sepik Iwam"},<br />
["ixc"] = {"Ixcatec"},<br />
["ixl"] = {"Ixil"},<br />
["iya"] = {"Iyayu"},<br />
["iyo"] = {"Mesaka"},<br />
["iyx"] = {"Yaka (Congo)"},<br />
["izh"] = {"Ingrian"},<br />
["izr"] = {"Izere"},<br />
["izz"] = {"Izii"},<br />
["jaa"] = {"Jamamadí"},<br />
["jab"] = {"Hyam"},<br />
["jac"] = {"Popti'", "Jakalteko"},<br />
["jad"] = {"Jahanka"},<br />
["jae"] = {"Yabem"},<br />
["jaf"] = {"Jara"},<br />
["jah"] = {"Jah Hut"},<br />
["jaj"] = {"Zazao"},<br />
["jak"] = {"Jakun"},<br />
["jal"] = {"Yalahatan"},<br />
["jam"] = {"Jamaican Creole English"},<br />
["jan"] = {"Jandai"},<br />
["jao"] = {"Yanyuwa"},<br />
["jaq"] = {"Yaqay"},<br />
["jas"] = {"New Caledonian Javanese"},<br />
["jat"] = {"Jakati"},<br />
["jau"] = {"Yaur"},<br />
["jax"] = {"Jambi Malay"},<br />
["jay"] = {"Yan-nhangu", "Nhangu"},<br />
["jaz"] = {"Jawe"},<br />
["jbe"] = {"Judeo-Berber"},<br />
["jbi"] = {"Badjiri"},<br />
["jbj"] = {"Arandai"},<br />
["jbk"] = {"Barikewa"},<br />
["jbm"] = {"Bijim"},<br />
["jbn"] = {"Nafusi"},<br />
["jbo"] = {"Lojban"},<br />
["jbr"] = {"Jofotek-Bromnya"},<br />
["jbt"] = {"Jabutí"},<br />
["jbu"] = {"Jukun Takum"},<br />
["jbw"] = {"Yawijibaya"},<br />
["jcs"] = {"Jamaican Country Sign Language"},<br />
["jct"] = {"Krymchak"},<br />
["jda"] = {"Jad"},<br />
["jdg"] = {"Jadgali"},<br />
["jdt"] = {"Judeo-Tat"},<br />
["jeb"] = {"Jebero"},<br />
["jee"] = {"Jerung"},<br />
["jeh"] = {"Jeh"},<br />
["jei"] = {"Yei"},<br />
["jek"] = {"Jeri Kuo"},<br />
["jel"] = {"Yelmek"},<br />
["jen"] = {"Dza"},<br />
["jer"] = {"Jere"},<br />
["jet"] = {"Manem"},<br />
["jeu"] = {"Jonkor Bourmataguil"},<br />
["jgb"] = {"Ngbee"},<br />
["jge"] = {"Judeo-Georgian"},<br />
["jgk"] = {"Gwak"},<br />
["jgo"] = {"Ngomba"},<br />
["jhi"] = {"Jehai"},<br />
["jhs"] = {"Jhankot Sign Language"},<br />
["jia"] = {"Jina"},<br />
["jib"] = {"Jibu"},<br />
["jic"] = {"Tol"},<br />
["jid"] = {"Bu (Kaduna State)"},<br />
["jie"] = {"Jilbe"},<br />
["jig"] = {"Jingulu", "Djingili"},<br />
["jih"] = {"sTodsde", "Shangzhai"},<br />
["jii"] = {"Jiiddu"},<br />
["jil"] = {"Jilim"},<br />
["jim"] = {"Jimi (Cameroon)"},<br />
["jio"] = {"Jiamao"},<br />
["jiq"] = {"Guanyinqiao", "Lavrung"},<br />
["jit"] = {"Jita"},<br />
["jiu"] = {"Youle Jinuo"},<br />
["jiv"] = {"Shuar"},<br />
["jiy"] = {"Buyuan Jinuo"},<br />
["jje"] = {"Jejueo"},<br />
["jjr"] = {"Bankal"},<br />
["jka"] = {"Kaera"},<br />
["jkm"] = {"Mobwa Karen"},<br />
["jko"] = {"Kubo"},<br />
["jkp"] = {"Paku Karen"},<br />
["jkr"] = {"Koro (India)"},<br />
["jks"] = {"Amami Koniya Sign Language"},<br />
["jku"] = {"Labir"},<br />
["jle"] = {"Ngile"},<br />
["jls"] = {"Jamaican Sign Language"},<br />
["jma"] = {"Dima"},<br />
["jmb"] = {"Zumbun"},<br />
["jmc"] = {"Machame"},<br />
["jmd"] = {"Yamdena"},<br />
["jmi"] = {"Jimi (Nigeria)"},<br />
["jml"] = {"Jumli"},<br />
["jmn"] = {"Makuri Naga"},<br />
["jmr"] = {"Kamara"},<br />
["jms"] = {"Mashi (Nigeria)"},<br />
["jmw"] = {"Mouwase"},<br />
["jmx"] = {"Western Juxtlahuaca Mixtec"},<br />
["jna"] = {"Jangshung"},<br />
["jnd"] = {"Jandavra"},<br />
["jng"] = {"Yangman"},<br />
["jni"] = {"Janji"},<br />
["jnj"] = {"Yemsa"},<br />
["jnl"] = {"Rawat"},<br />
["jns"] = {"Jaunsari"},<br />
["job"] = {"Joba"},<br />
["jod"] = {"Wojenaka"},<br />
["jog"] = {"Jogi"},<br />
["jor"] = {"Jorá"},<br />
["jos"] = {"Jordanian Sign Language"},<br />
["jow"] = {"Jowulu"},<br />
["jpa"] = {"Jewish Palestinian Aramaic"},<br />
["jpr"] = {"Judeo-Persian"},<br />
["jpx"] = {"Japanese (family)"},<br />
["jqr"] = {"Jaqaru"},<br />
["jra"] = {"Jarai"},<br />
["jrb"] = {"Judeo-Arabic"},<br />
["jrr"] = {"Jiru"},<br />
["jrt"] = {"Jakattoe"},<br />
["jru"] = {"Japrería"},<br />
["jsl"] = {"Japanese Sign Language"},<br />
["jua"] = {"Júma"},<br />
["jub"] = {"Wannu"},<br />
["juc"] = {"Jurchen"},<br />
["jud"] = {"Worodougou"},<br />
["juh"] = {"Hõne"},<br />
["jui"] = {"Ngadjuri"},<br />
["juk"] = {"Wapan"},<br />
["jul"] = {"Jirel"},<br />
["jum"] = {"Jumjum"},<br />
["jun"] = {"Juang"},<br />
["juo"] = {"Jiba"},<br />
["jup"] = {"Hupdë"},<br />
["jur"] = {"Jurúna"},<br />
["jus"] = {"Jumla Sign Language"},<br />
["jut"] = {"Jutish"},<br />
["juu"] = {"Ju"},<br />
["juw"] = {"Wãpha"},<br />
["juy"] = {"Juray"},<br />
["jvd"] = {"Javindo"},<br />
["jvn"] = {"Caribbean Javanese"},<br />
["jwi"] = {"Jwira-Pepesa"},<br />
["jya"] = {"Jiarong"},<br />
["jye"] = {"Judeo-Yemeni Arabic"},<br />
["jyy"] = {"Jaya"},<br />
["kaa"] = {"Kara-Kalpak", "Karakalpak"},<br />
["kab"] = {"Kabyle"},<br />
["kac"] = {"Kachin", "Jingpho"},<br />
["kad"] = {"Adara"},<br />
["kae"] = {"Ketangalan"},<br />
["kaf"] = {"Katso"},<br />
["kag"] = {"Kajaman"},<br />
["kah"] = {"Kara (Central African Republic)"},<br />
["kai"] = {"Karekare"},<br />
["kaj"] = {"Jju"},<br />
["kak"] = {"Kalanguya", "Kayapa Kallahan"},<br />
["kam"] = {"Kamba (Kenya)"},<br />
["kao"] = {"Xaasongaxango"},<br />
["kap"] = {"Bezhta"},<br />
["kaq"] = {"Capanahua"},<br />
["kar"] = {"Karen languages"},<br />
["kav"] = {"Katukína"},<br />
["kaw"] = {"Kawi"},<br />
["kax"] = {"Kao"},<br />
["kay"] = {"Kamayurá"},<br />
["kba"] = {"Kalarko"},<br />
["kbb"] = {"Kaxuiâna"},<br />
["kbc"] = {"Kadiwéu"},<br />
["kbd"] = {"Kabardian"},<br />
["kbe"] = {"Kanju"},<br />
["kbg"] = {"Khamba"},<br />
["kbh"] = {"Camsá"},<br />
["kbi"] = {"Kaptiau"},<br />
["kbj"] = {"Kari"},<br />
["kbk"] = {"Grass Koiari"},<br />
["kbl"] = {"Kanembu"},<br />
["kbm"] = {"Iwal"},<br />
["kbn"] = {"Kare (Central African Republic)"},<br />
["kbo"] = {"Keliko"},<br />
["kbp"] = {"Kabiyè"},<br />
["kbq"] = {"Kamano"},<br />
["kbr"] = {"Kafa"},<br />
["kbs"] = {"Kande"},<br />
["kbt"] = {"Abadi"},<br />
["kbu"] = {"Kabutra"},<br />
["kbv"] = {"Dera (Indonesia)"},<br />
["kbw"] = {"Kaiep"},<br />
["kbx"] = {"Ap Ma"},<br />
["kby"] = {"Manga Kanuri"},<br />
["kbz"] = {"Duhwa"},<br />
["kca"] = {"Khanty"},<br />
["kcb"] = {"Kawacha"},<br />
["kcc"] = {"Lubila"},<br />
["kcd"] = {"Ngkâlmpw Kanum"},<br />
["kce"] = {"Kaivi"},<br />
["kcf"] = {"Ukaan"},<br />
["kcg"] = {"Tyap"},<br />
["kch"] = {"Vono"},<br />
["kci"] = {"Kamantan"},<br />
["kcj"] = {"Kobiana"},<br />
["kck"] = {"Kalanga"},<br />
["kcl"] = {"Kela (Papua New Guinea)", "Kala"},<br />
["kcm"] = {"Gula (Central African Republic)"},<br />
["kcn"] = {"Nubi"},<br />
["kco"] = {"Kinalakna"},<br />
["kcp"] = {"Kanga"},<br />
["kcq"] = {"Kamo"},<br />
["kcr"] = {"Katla"},<br />
["kcs"] = {"Koenoem"},<br />
["kct"] = {"Kaian"},<br />
["kcu"] = {"Kami (Tanzania)"},<br />
["kcv"] = {"Kete"},<br />
["kcw"] = {"Kabwari"},<br />
["kcx"] = {"Kachama-Ganjule"},<br />
["kcy"] = {"Korandje"},<br />
["kcz"] = {"Konongo"},<br />
["kda"] = {"Worimi"},<br />
["kdc"] = {"Kutu"},<br />
["kdd"] = {"Yankunytjatjara"},<br />
["kde"] = {"Makonde"},<br />
["kdf"] = {"Mamusi"},<br />
["kdg"] = {"Seba"},<br />
["kdh"] = {"Tem"},<br />
["kdi"] = {"Kumam"},<br />
["kdj"] = {"Karamojong"},<br />
["kdk"] = {"Numèè", "Kwényi"},<br />
["kdl"] = {"Tsikimba"},<br />
["kdm"] = {"Kagoma"},<br />
["kdn"] = {"Kunda"},<br />
["kdo"] = {"Kordofanian languages"},<br />
["kdp"] = {"Kaningdon-Nindem"},<br />
["kdq"] = {"Koch"},<br />
["kdr"] = {"Karaim"},<br />
["kdt"] = {"Kuy"},<br />
["kdu"] = {"Kadaru"},<br />
["kdw"] = {"Koneraw"},<br />
["kdx"] = {"Kam"},<br />
["kdy"] = {"Keder", "Keijar"},<br />
["kdz"] = {"Kwaja"},<br />
["kea"] = {"Kabuverdianu"},<br />
["keb"] = {"Kélé"},<br />
["kec"] = {"Keiga"},<br />
["ked"] = {"Kerewe"},<br />
["kee"] = {"Eastern Keres"},<br />
["kef"] = {"Kpessi"},<br />
["keg"] = {"Tese"},<br />
["keh"] = {"Keak"},<br />
["kei"] = {"Kei"},<br />
["kej"] = {"Kadar"},<br />
["kek"] = {"Kekchí"},<br />
["kel"] = {"Kela (Democratic Republic of Congo)"},<br />
["kem"] = {"Kemak"},<br />
["ken"] = {"Kenyang"},<br />
["keo"] = {"Kakwa"},<br />
["kep"] = {"Kaikadi"},<br />
["keq"] = {"Kamar"},<br />
["ker"] = {"Kera"},<br />
["kes"] = {"Kugbo"},<br />
["ket"] = {"Ket"},<br />
["keu"] = {"Akebu"},<br />
["kev"] = {"Kanikkaran"},<br />
["kew"] = {"West Kewa"},<br />
["kex"] = {"Kukna"},<br />
["key"] = {"Kupia"},<br />
["kez"] = {"Kukele"},<br />
["kfa"] = {"Kodava"},<br />
["kfb"] = {"Northwestern Kolami"},<br />
["kfc"] = {"Konda-Dora"},<br />
["kfd"] = {"Korra Koraga"},<br />
["kfe"] = {"Kota (India)"},<br />
["kff"] = {"Koya"},<br />
["kfg"] = {"Kudiya"},<br />
["kfh"] = {"Kurichiya"},<br />
["kfi"] = {"Kannada Kurumba"},<br />
["kfj"] = {"Kemiehua"},<br />
["kfk"] = {"Kinnauri"},<br />
["kfl"] = {"Kung"},<br />
["kfm"] = {"Khunsari"},<br />
["kfn"] = {"Kuk"},<br />
["kfo"] = {"Koro (Côte d'Ivoire)"},<br />
["kfp"] = {"Korwa"},<br />
["kfq"] = {"Korku"},<br />
["kfr"] = {"Kachhi", "Kutchi"},<br />
["kfs"] = {"Bilaspuri"},<br />
["kft"] = {"Kanjari"},<br />
["kfu"] = {"Katkari"},<br />
["kfv"] = {"Kurmukar"},<br />
["kfw"] = {"Kharam Naga"},<br />
["kfx"] = {"Kullu Pahari"},<br />
["kfy"] = {"Kumaoni"},<br />
["kfz"] = {"Koromfé"},<br />
["kga"] = {"Koyaga"},<br />
["kgb"] = {"Kawe"},<br />
["kge"] = {"Komering"},<br />
["kgf"] = {"Kube"},<br />
["kgg"] = {"Kusunda"},<br />
["kgi"] = {"Selangor Sign Language"},<br />
["kgj"] = {"Gamale Kham"},<br />
["kgk"] = {"Kaiwá"},<br />
["kgl"] = {"Kunggari"},<br />
["kgm"] = {"Karipúna"},<br />
["kgn"] = {"Karingani"},<br />
["kgo"] = {"Krongo"},<br />
["kgp"] = {"Kaingang"},<br />
["kgq"] = {"Kamoro"},<br />
["kgr"] = {"Abun"},<br />
["kgs"] = {"Kumbainggar"},<br />
["kgt"] = {"Somyev"},<br />
["kgu"] = {"Kobol"},<br />
["kgv"] = {"Karas"},<br />
["kgw"] = {"Karon Dori"},<br />
["kgx"] = {"Kamaru"},<br />
["kgy"] = {"Kyerung"},<br />
["kha"] = {"Khasi"},<br />
["khb"] = {"Lü"},<br />
["khc"] = {"Tukang Besi North"},<br />
["khd"] = {"Bädi Kanum"},<br />
["khe"] = {"Korowai"},<br />
["khf"] = {"Khuen"},<br />
["khg"] = {"Khams Tibetan"},<br />
["khh"] = {"Kehu"},<br />
["khi"] = {"Khoisan languages"},<br />
["khj"] = {"Kuturmi"},<br />
["khk"] = {"Halh Mongolian"},<br />
["khl"] = {"Lusi"},<br />
["khn"] = {"Khandesi"},<br />
["kho"] = {"Khotanese", "Sakan"},<br />
["khp"] = {"Kapori", "Kapauri"},<br />
["khq"] = {"Koyra Chiini Songhay"},<br />
["khr"] = {"Kharia"},<br />
["khs"] = {"Kasua"},<br />
["kht"] = {"Khamti"},<br />
["khu"] = {"Nkhumbi"},<br />
["khv"] = {"Khvarshi"},<br />
["khw"] = {"Khowar"},<br />
["khx"] = {"Kanu"},<br />
["khy"] = {"Kele (Democratic Republic of Congo)"},<br />
["khz"] = {"Keapara"},<br />
["kia"] = {"Kim"},<br />
["kib"] = {"Koalib"},<br />
["kic"] = {"Kickapoo"},<br />
["kid"] = {"Koshin"},<br />
["kie"] = {"Kibet"},<br />
["kif"] = {"Eastern Parbate Kham"},<br />
["kig"] = {"Kimaama", "Kimaghima"},<br />
["kih"] = {"Kilmeri"},<br />
["kii"] = {"Kitsai"},<br />
["kij"] = {"Kilivila"},<br />
["kil"] = {"Kariya"},<br />
["kim"] = {"Karagas"},<br />
["kio"] = {"Kiowa"},<br />
["kip"] = {"Sheshi Kham"},<br />
["kiq"] = {"Kosadle", "Kosare"},<br />
["kis"] = {"Kis"},<br />
["kit"] = {"Agob"},<br />
["kiu"] = {"Kirmanjki (individual language)"},<br />
["kiv"] = {"Kimbu"},<br />
["kiw"] = {"Northeast Kiwai"},<br />
["kix"] = {"Khiamniungan Naga"},<br />
["kiy"] = {"Kirikiri"},<br />
["kiz"] = {"Kisi"},<br />
["kja"] = {"Mlap"},<br />
["kjb"] = {"Q'anjob'al", "Kanjobal"},<br />
["kjc"] = {"Coastal Konjo"},<br />
["kjd"] = {"Southern Kiwai"},<br />
["kje"] = {"Kisar"},<br />
["kjg"] = {"Khmu"},<br />
["kjh"] = {"Khakas"},<br />
["kji"] = {"Zabana"},<br />
["kjj"] = {"Khinalugh"},<br />
["kjk"] = {"Highland Konjo"},<br />
["kjl"] = {"Western Parbate Kham"},<br />
["kjm"] = {"Kháng"},<br />
["kjn"] = {"Kunjen"},<br />
["kjo"] = {"Harijan Kinnauri"},<br />
["kjp"] = {"Pwo Eastern Karen"},<br />
["kjq"] = {"Western Keres"},<br />
["kjr"] = {"Kurudu"},<br />
["kjs"] = {"East Kewa"},<br />
["kjt"] = {"Phrae Pwo Karen"},<br />
["kju"] = {"Kashaya"},<br />
["kjv"] = {"Kaikavian Literary Language"},<br />
["kjx"] = {"Ramopa"},<br />
["kjy"] = {"Erave"},<br />
["kjz"] = {"Bumthangkha"},<br />
["kka"] = {"Kakanda"},<br />
["kkb"] = {"Kwerisa"},<br />
["kkc"] = {"Odoodee"},<br />
["kkd"] = {"Kinuku"},<br />
["kke"] = {"Kakabe"},<br />
["kkf"] = {"Kalaktang Monpa"},<br />
["kkg"] = {"Mabaka Valley Kalinga"},<br />
["kkh"] = {"Khün"},<br />
["kki"] = {"Kagulu"},<br />
["kkj"] = {"Kako"},<br />
["kkk"] = {"Kokota"},<br />
["kkl"] = {"Kosarek Yale"},<br />
["kkm"] = {"Kiong"},<br />
["kkn"] = {"Kon Keu"},<br />
["kko"] = {"Karko"},<br />
["kkp"] = {"Gugubera", "Koko-Bera"},<br />
["kkq"] = {"Kaeku"},<br />
["kkr"] = {"Kir-Balar"},<br />
["kks"] = {"Giiwo"},<br />
["kkt"] = {"Koi"},<br />
["kku"] = {"Tumi"},<br />
["kkv"] = {"Kangean"},<br />
["kkw"] = {"Teke-Kukuya"},<br />
["kkx"] = {"Kohin"},<br />
["kky"] = {"Guugu Yimidhirr", "Guguyimidjir"},<br />
["kkz"] = {"Kaska"},<br />
["kla"] = {"Klamath-Modoc"},<br />
["klb"] = {"Kiliwa"},<br />
["klc"] = {"Kolbila"},<br />
["kld"] = {"Gamilaraay"},<br />
["kle"] = {"Kulung (Nepal)"},<br />
["klf"] = {"Kendeje"},<br />
["klg"] = {"Tagakaulo"},<br />
["klh"] = {"Weliki"},<br />
["kli"] = {"Kalumpang"},<br />
["klj"] = {"Khalaj"},<br />
["klk"] = {"Kono (Nigeria)"},<br />
["kll"] = {"Kagan Kalagan"},<br />
["klm"] = {"Migum"},<br />
["kln"] = {"Kalenjin"},<br />
["klo"] = {"Kapya"},<br />
["klp"] = {"Kamasa"},<br />
["klq"] = {"Rumu"},<br />
["klr"] = {"Khaling"},<br />
["kls"] = {"Kalasha"},<br />
["klt"] = {"Nukna"},<br />
["klu"] = {"Klao"},<br />
["klv"] = {"Maskelynes"},<br />
["klw"] = {"Tado", "Lindu"},<br />
["klx"] = {"Koluwawa"},<br />
["kly"] = {"Kalao"},<br />
["klz"] = {"Kabola"},<br />
["kma"] = {"Konni"},<br />
["kmb"] = {"Kimbundu"},<br />
["kmc"] = {"Southern Dong"},<br />
["kmd"] = {"Majukayang Kalinga"},<br />
["kme"] = {"Bakole"},<br />
["kmf"] = {"Kare (Papua New Guinea)"},<br />
["kmg"] = {"Kâte"},<br />
["kmh"] = {"Kalam"},<br />
["kmi"] = {"Kami (Nigeria)"},<br />
["kmj"] = {"Kumarbhag Paharia"},<br />
["kmk"] = {"Limos Kalinga"},<br />
["kml"] = {"Tanudan Kalinga"},<br />
["kmm"] = {"Kom (India)"},<br />
["kmn"] = {"Awtuw"},<br />
["kmo"] = {"Kwoma"},<br />
["kmp"] = {"Gimme"},<br />
["kmq"] = {"Kwama"},<br />
["kmr"] = {"Northern Kurdish"},<br />
["kms"] = {"Kamasau"},<br />
["kmt"] = {"Kemtuik"},<br />
["kmu"] = {"Kanite"},<br />
["kmv"] = {"Karipúna Creole French"},<br />
["kmw"] = {"Komo (Democratic Republic of Congo)"},<br />
["kmx"] = {"Waboda"},<br />
["kmy"] = {"Koma"},<br />
["kmz"] = {"Khorasani Turkish"},<br />
["kna"] = {"Dera (Nigeria)"},<br />
["knb"] = {"Lubuagan Kalinga"},<br />
["knc"] = {"Central Kanuri"},<br />
["knd"] = {"Konda"},<br />
["kne"] = {"Kankanaey"},<br />
["knf"] = {"Mankanya"},<br />
["kng"] = {"Koongo"},<br />
["kni"] = {"Kanufi"},<br />
["knj"] = {"Western Kanjobal"},<br />
["knk"] = {"Kuranko"},<br />
["knl"] = {"Keninjal"},<br />
["knm"] = {"Kanamarí"},<br />
["knn"] = {"Konkani (individual language)"},<br />
["kno"] = {"Kono (Sierra Leone)"},<br />
["knp"] = {"Kwanja"},<br />
["knq"] = {"Kintaq"},<br />
["knr"] = {"Kaningra"},<br />
["kns"] = {"Kensiu"},<br />
["knt"] = {"Panoan Katukína"},<br />
["knu"] = {"Kono (Guinea)"},<br />
["knv"] = {"Tabo"},<br />
["knw"] = {"Kung-Ekoka"},<br />
["knx"] = {"Kendayan", "Salako"},<br />
["kny"] = {"Kanyok"},<br />
["knz"] = {"Kalamsé"},<br />
["koa"] = {"Konomala"},<br />
["koc"] = {"Kpati"},<br />
["kod"] = {"Kodi"},<br />
["koe"] = {"Kacipo-Bale Suri"},<br />
["kof"] = {"Kubi"},<br />
["kog"] = {"Cogui", "Kogi"},<br />
["koh"] = {"Koyo"},<br />
["koi"] = {"Komi-Permyak"},<br />
["kok"] = {"Konkani (macrolanguage)"},<br />
["kol"] = {"Kol (Papua New Guinea)"},<br />
["koo"] = {"Konzo"},<br />
["kop"] = {"Waube"},<br />
["koq"] = {"Kota (Gabon)"},<br />
["kos"] = {"Kosraean"},<br />
["kot"] = {"Lagwan"},<br />
["kou"] = {"Koke"},<br />
["kov"] = {"Kudu-Camo"},<br />
["kow"] = {"Kugama"},<br />
["koy"] = {"Koyukon"},<br />
["koz"] = {"Korak"},<br />
["kpa"] = {"Kutto"},<br />
["kpb"] = {"Mullu Kurumba"},<br />
["kpc"] = {"Curripaco"},<br />
["kpd"] = {"Koba"},<br />
["kpe"] = {"Kpelle"},<br />
["kpf"] = {"Komba"},<br />
["kpg"] = {"Kapingamarangi"},<br />
["kph"] = {"Kplang"},<br />
["kpi"] = {"Kofei"},<br />
["kpj"] = {"Karajá"},<br />
["kpk"] = {"Kpan"},<br />
["kpl"] = {"Kpala"},<br />
["kpm"] = {"Koho"},<br />
["kpn"] = {"Kepkiriwát"},<br />
["kpo"] = {"Ikposo"},<br />
["kpq"] = {"Korupun-Sela"},<br />
["kpr"] = {"Korafe-Yegha"},<br />
["kps"] = {"Tehit"},<br />
["kpt"] = {"Karata"},<br />
["kpu"] = {"Kafoa"},<br />
["kpv"] = {"Komi-Zyrian"},<br />
["kpw"] = {"Kobon"},<br />
["kpx"] = {"Mountain Koiali"},<br />
["kpy"] = {"Koryak"},<br />
["kpz"] = {"Kupsabiny"},<br />
["kqa"] = {"Mum"},<br />
["kqb"] = {"Kovai"},<br />
["kqc"] = {"Doromu-Koki"},<br />
["kqd"] = {"Koy Sanjaq Surat"},<br />
["kqe"] = {"Kalagan"},<br />
["kqf"] = {"Kakabai"},<br />
["kqg"] = {"Khe"},<br />
["kqh"] = {"Kisankasa"},<br />
["kqi"] = {"Koitabu"},<br />
["kqj"] = {"Koromira"},<br />
["kqk"] = {"Kotafon Gbe"},<br />
["kql"] = {"Kyenele"},<br />
["kqm"] = {"Khisa"},<br />
["kqn"] = {"Kaonde"},<br />
["kqo"] = {"Eastern Krahn"},<br />
["kqp"] = {"Kimré"},<br />
["kqq"] = {"Krenak"},<br />
["kqr"] = {"Kimaragang"},<br />
["kqs"] = {"Northern Kissi"},<br />
["kqt"] = {"Klias River Kadazan"},<br />
["kqu"] = {"Seroa"},<br />
["kqv"] = {"Okolod"},<br />
["kqw"] = {"Kandas"},<br />
["kqx"] = {"Mser"},<br />
["kqy"] = {"Koorete"},<br />
["kqz"] = {"Korana"},<br />
["kra"] = {"Kumhali"},<br />
["krb"] = {"Karkin"},<br />
["krc"] = {"Karachay-Balkar"},<br />
["krd"] = {"Kairui-Midiki"},<br />
["kre"] = {"Panará"},<br />
["krf"] = {"Koro (Vanuatu)"},<br />
["krh"] = {"Kurama"},<br />
["kri"] = {"Krio"},<br />
["krj"] = {"Kinaray-A"},<br />
["krk"] = {"Kerek"},<br />
["krl"] = {"Karelian"},<br />
["krn"] = {"Sapo"},<br />
["kro"] = {"Kru languages"},<br />
["krp"] = {"Korop"},<br />
["krr"] = {"Krung"},<br />
["krs"] = {"Gbaya (Sudan)"},<br />
["krt"] = {"Tumari Kanuri"},<br />
["kru"] = {"Kurukh"},<br />
["krv"] = {"Kavet"},<br />
["krw"] = {"Western Krahn"},<br />
["krx"] = {"Karon"},<br />
["kry"] = {"Kryts"},<br />
["krz"] = {"Sota Kanum"},<br />
["ksa"] = {"Shuwa-Zamani"},<br />
["ksb"] = {"Shambala"},<br />
["ksc"] = {"Southern Kalinga"},<br />
["ksd"] = {"Kuanua"},<br />
["kse"] = {"Kuni"},<br />
["ksf"] = {"Bafia"},<br />
["ksg"] = {"Kusaghe"},<br />
["ksh"] = {"Kölsch"},<br />
["ksi"] = {"Krisa", "I'saka"},<br />
["ksj"] = {"Uare"},<br />
["ksk"] = {"Kansa"},<br />
["ksl"] = {"Kumalu"},<br />
["ksm"] = {"Kumba"},<br />
["ksn"] = {"Kasiguranin"},<br />
["kso"] = {"Kofa"},<br />
["ksp"] = {"Kaba"},<br />
["ksq"] = {"Kwaami"},<br />
["ksr"] = {"Borong"},<br />
["kss"] = {"Southern Kisi"},<br />
["kst"] = {"Winyé"},<br />
["ksu"] = {"Khamyang"},<br />
["ksv"] = {"Kusu"},<br />
["ksw"] = {"S'gaw Karen"},<br />
["ksx"] = {"Kedang"},<br />
["ksy"] = {"Kharia Thar"},<br />
["ksz"] = {"Kodaku"},<br />
["kta"] = {"Katua"},<br />
["ktb"] = {"Kambaata"},<br />
["ktc"] = {"Kholok"},<br />
["ktd"] = {"Kokata", "Kukatha"},<br />
["kte"] = {"Nubri"},<br />
["ktf"] = {"Kwami"},<br />
["ktg"] = {"Kalkutung"},<br />
["kth"] = {"Karanga"},<br />
["kti"] = {"North Muyu"},<br />
["ktj"] = {"Plapo Krumen"},<br />
["ktk"] = {"Kaniet"},<br />
["ktl"] = {"Koroshi"},<br />
["ktm"] = {"Kurti"},<br />
["ktn"] = {"Karitiâna"},<br />
["kto"] = {"Kuot"},<br />
["ktp"] = {"Kaduo"},<br />
["ktq"] = {"Katabaga"},<br />
["kts"] = {"South Muyu"},<br />
["ktt"] = {"Ketum"},<br />
["ktu"] = {"Kituba (Democratic Republic of Congo)"},<br />
["ktv"] = {"Eastern Katu"},<br />
["ktw"] = {"Kato"},<br />
["ktx"] = {"Kaxararí"},<br />
["kty"] = {"Kango (Bas-Uélé District)"},<br />
["ktz"] = {"Juǀʼhoan", "Juǀʼhoansi"},<br />
["kub"] = {"Kutep"},<br />
["kuc"] = {"Kwinsu"},<br />
["kud"] = {"'Auhelawa"},<br />
["kue"] = {"Kuman (Papua New Guinea)"},<br />
["kuf"] = {"Western Katu"},<br />
["kug"] = {"Kupa"},<br />
["kuh"] = {"Kushi"},<br />
["kui"] = {"Kuikúro-Kalapálo", "Kalapalo"},<br />
["kuj"] = {"Kuria"},<br />
["kuk"] = {"Kepo'"},<br />
["kul"] = {"Kulere"},<br />
["kum"] = {"Kumyk"},<br />
["kun"] = {"Kunama"},<br />
["kuo"] = {"Kumukio"},<br />
["kup"] = {"Kunimaipa"},<br />
["kuq"] = {"Karipuna"},<br />
["kus"] = {"Kusaal"},<br />
["kut"] = {"Kutenai"},<br />
["kuu"] = {"Upper Kuskokwim"},<br />
["kuv"] = {"Kur"},<br />
["kuw"] = {"Kpagua"},<br />
["kux"] = {"Kukatja"},<br />
["kuy"] = {"Kuuku-Ya'u"},<br />
["kuz"] = {"Kunza"},<br />
["kva"] = {"Bagvalal"},<br />
["kvb"] = {"Kubu"},<br />
["kvc"] = {"Kove"},<br />
["kvd"] = {"Kui (Indonesia)"},<br />
["kve"] = {"Kalabakan"},<br />
["kvf"] = {"Kabalai"},<br />
["kvg"] = {"Kuni-Boazi"},<br />
["kvh"] = {"Komodo"},<br />
["kvi"] = {"Kwang"},<br />
["kvj"] = {"Psikye"},<br />
["kvk"] = {"Korean Sign Language"},<br />
["kvl"] = {"Kayaw"},<br />
["kvm"] = {"Kendem"},<br />
["kvn"] = {"Border Kuna"},<br />
["kvo"] = {"Dobel"},<br />
["kvp"] = {"Kompane"},<br />
["kvq"] = {"Geba Karen"},<br />
["kvr"] = {"Kerinci"},<br />
["kvt"] = {"Lahta Karen", "Lahta"},<br />
["kvu"] = {"Yinbaw Karen"},<br />
["kvv"] = {"Kola"},<br />
["kvw"] = {"Wersing"},<br />
["kvx"] = {"Parkari Koli"},<br />
["kvy"] = {"Yintale Karen", "Yintale"},<br />
["kvz"] = {"Tsakwambo", "Tsaukambo"},<br />
["kwa"] = {"Dâw"},<br />
["kwb"] = {"Kwa"},<br />
["kwc"] = {"Likwala"},<br />
["kwd"] = {"Kwaio"},<br />
["kwe"] = {"Kwerba"},<br />
["kwf"] = {"Kwara'ae"},<br />
["kwg"] = {"Sara Kaba Deme"},<br />
["kwh"] = {"Kowiai"},<br />
["kwi"] = {"Awa-Cuaiquer"},<br />
["kwj"] = {"Kwanga"},<br />
["kwk"] = {"Kwakiutl"},<br />
["kwl"] = {"Kofyar"},<br />
["kwm"] = {"Kwambi"},<br />
["kwn"] = {"Kwangali"},<br />
["kwo"] = {"Kwomtari"},<br />
["kwp"] = {"Kodia"},<br />
["kwr"] = {"Kwer"},<br />
["kws"] = {"Kwese"},<br />
["kwt"] = {"Kwesten"},<br />
["kwu"] = {"Kwakum"},<br />
["kwv"] = {"Sara Kaba Náà"},<br />
["kww"] = {"Kwinti"},<br />
["kwx"] = {"Khirwar"},<br />
["kwy"] = {"San Salvador Kongo"},<br />
["kwz"] = {"Kwadi"},<br />
["kxa"] = {"Kairiru"},<br />
["kxb"] = {"Krobu"},<br />
["kxc"] = {"Konso", "Khonso"},<br />
["kxd"] = {"Brunei"},<br />
["kxf"] = {"Manumanaw Karen", "Manumanaw"},<br />
["kxh"] = {"Karo (Ethiopia)"},<br />
["kxi"] = {"Keningau Murut"},<br />
["kxj"] = {"Kulfa"},<br />
["kxk"] = {"Zayein Karen"},<br />
["kxm"] = {"Northern Khmer"},<br />
["kxn"] = {"Kanowit-Tanjong Melanau"},<br />
["kxo"] = {"Kanoé"},<br />
["kxp"] = {"Wadiyara Koli"},<br />
["kxq"] = {"Smärky Kanum"},<br />
["kxr"] = {"Koro (Papua New Guinea)"},<br />
["kxs"] = {"Kangjia"},<br />
["kxt"] = {"Koiwat"},<br />
["kxv"] = {"Kuvi"},<br />
["kxw"] = {"Konai"},<br />
["kxx"] = {"Likuba"},<br />
["kxy"] = {"Kayong"},<br />
["kxz"] = {"Kerewo"},<br />
["kya"] = {"Kwaya"},<br />
["kyb"] = {"Butbut Kalinga"},<br />
["kyc"] = {"Kyaka"},<br />
["kyd"] = {"Karey"},<br />
["kye"] = {"Krache"},<br />
["kyf"] = {"Kouya"},<br />
["kyg"] = {"Keyagana"},<br />
["kyh"] = {"Karok"},<br />
["kyi"] = {"Kiput"},<br />
["kyj"] = {"Karao"},<br />
["kyk"] = {"Kamayo"},<br />
["kyl"] = {"Kalapuya"},<br />
["kym"] = {"Kpatili"},<br />
["kyn"] = {"Northern Binukidnon"},<br />
["kyo"] = {"Kelon"},<br />
["kyp"] = {"Kang"},<br />
["kyq"] = {"Kenga"},<br />
["kyr"] = {"Kuruáya"},<br />
["kys"] = {"Baram Kayan"},<br />
["kyt"] = {"Kayagar"},<br />
["kyu"] = {"Western Kayah"},<br />
["kyv"] = {"Kayort"},<br />
["kyw"] = {"Kudmali"},<br />
["kyx"] = {"Rapoisi"},<br />
["kyy"] = {"Kambaira"},<br />
["kyz"] = {"Kayabí"},<br />
["kza"] = {"Western Karaboro"},<br />
["kzb"] = {"Kaibobo"},<br />
["kzc"] = {"Bondoukou Kulango"},<br />
["kzd"] = {"Kadai"},<br />
["kze"] = {"Kosena"},<br />
["kzf"] = {"Da'a Kaili"},<br />
["kzg"] = {"Kikai"},<br />
["kzi"] = {"Kelabit"},<br />
["kzk"] = {"Kazukuru"},<br />
["kzl"] = {"Kayeli"},<br />
["kzm"] = {"Kais"},<br />
["kzn"] = {"Kokola"},<br />
["kzo"] = {"Kaningi"},<br />
["kzp"] = {"Kaidipang"},<br />
["kzq"] = {"Kaike"},<br />
["kzr"] = {"Karang"},<br />
["kzs"] = {"Sugut Dusun"},<br />
["kzu"] = {"Kayupulau"},<br />
["kzv"] = {"Komyandaret"},<br />
["kzw"] = {"Karirí-Xocó"},<br />
["kzx"] = {"Kamarian"},<br />
["kzy"] = {"Kango (Tshopo District)"},<br />
["kzz"] = {"Kalabra"},<br />
["laa"] = {"Southern Subanen"},<br />
["lab"] = {"Linear A"},<br />
["lac"] = {"Lacandon"},<br />
["lad"] = {"Ladino"},<br />
["lae"] = {"Pattani"},<br />
["laf"] = {"Lafofa"},<br />
["lag"] = {"Langi"},<br />
["lah"] = {"Lahnda"},<br />
["lai"] = {"Lambya"},<br />
["laj"] = {"Lango (Uganda)"},<br />
["lak"] = {"Laka (Nigeria)"},<br />
["lal"] = {"Lalia"},<br />
["lam"] = {"Lamba"},<br />
["lan"] = {"Laru"},<br />
["lap"] = {"Laka (Chad)"},<br />
["laq"] = {"Qabiao"},<br />
["lar"] = {"Larteh"},<br />
["las"] = {"Lama (Togo)"},<br />
["lau"] = {"Laba"},<br />
["law"] = {"Lauje"},<br />
["lax"] = {"Tiwa"},<br />
["lay"] = {"Lama Bai"},<br />
["laz"] = {"Aribwatsa"},<br />
["lbb"] = {"Label"},<br />
["lbc"] = {"Lakkia"},<br />
["lbe"] = {"Lak"},<br />
["lbf"] = {"Tinani"},<br />
["lbg"] = {"Laopang"},<br />
["lbi"] = {"La'bi"},<br />
["lbj"] = {"Ladakhi"},<br />
["lbk"] = {"Central Bontok"},<br />
["lbl"] = {"Libon Bikol"},<br />
["lbm"] = {"Lodhi"},<br />
["lbn"] = {"Rmeet"},<br />
["lbo"] = {"Laven"},<br />
["lbq"] = {"Wampar"},<br />
["lbr"] = {"Lohorung"},<br />
["lbs"] = {"Libyan Sign Language"},<br />
["lbt"] = {"Lachi"},<br />
["lbu"] = {"Labu"},<br />
["lbv"] = {"Lavatbura-Lamusong"},<br />
["lbw"] = {"Tolaki"},<br />
["lbx"] = {"Lawangan"},<br />
["lby"] = {"Lamalama", "Lamu-Lamu"},<br />
["lbz"] = {"Lardil"},<br />
["lcc"] = {"Legenyem"},<br />
["lcd"] = {"Lola"},<br />
["lce"] = {"Loncong", "Sekak"},<br />
["lcf"] = {"Lubu"},<br />
["lch"] = {"Luchazi"},<br />
["lcl"] = {"Lisela"},<br />
["lcm"] = {"Tungag"},<br />
["lcp"] = {"Western Lawa"},<br />
["lcq"] = {"Luhu"},<br />
["lcs"] = {"Lisabata-Nuniali"},<br />
["lda"] = {"Kla-Dan"},<br />
["ldb"] = {"Dũya"},<br />
["ldd"] = {"Luri"},<br />
["ldg"] = {"Lenyima"},<br />
["ldh"] = {"Lamja-Dengsa-Tola"},<br />
["ldi"] = {"Laari"},<br />
["ldj"] = {"Lemoro"},<br />
["ldk"] = {"Leelau"},<br />
["ldl"] = {"Kaan"},<br />
["ldm"] = {"Landoma"},<br />
["ldn"] = {"Láadan"},<br />
["ldo"] = {"Loo"},<br />
["ldp"] = {"Tso"},<br />
["ldq"] = {"Lufu"},<br />
["lea"] = {"Lega-Shabunda"},<br />
["leb"] = {"Lala-Bisa"},<br />
["lec"] = {"Leco"},<br />
["led"] = {"Lendu"},<br />
["lee"] = {"Lyélé"},<br />
["lef"] = {"Lelemi"},<br />
["leh"] = {"Lenje"},<br />
["lei"] = {"Lemio"},<br />
["lej"] = {"Lengola"},<br />
["lek"] = {"Leipon"},<br />
["lel"] = {"Lele (Democratic Republic of Congo)"},<br />
["lem"] = {"Nomaande"},<br />
["len"] = {"Lenca"},<br />
["leo"] = {"Leti (Cameroon)"},<br />
["lep"] = {"Lepcha"},<br />
["leq"] = {"Lembena"},<br />
["ler"] = {"Lenkau"},<br />
["les"] = {"Lese"},<br />
["let"] = {"Lesing-Gelimi", "Amio-Gelimi"},<br />
["leu"] = {"Kara (Papua New Guinea)"},<br />
["lev"] = {"Lamma"},<br />
["lew"] = {"Ledo Kaili"},<br />
["lex"] = {"Luang"},<br />
["ley"] = {"Lemolang"},<br />
["lez"] = {"Lezghian"},<br />
["lfa"] = {"Lefa"},<br />
["lfn"] = {"Lingua Franca Nova"},<br />
["lga"] = {"Lungga"},<br />
["lgb"] = {"Laghu"},<br />
["lgg"] = {"Lugbara"},<br />
["lgh"] = {"Laghuu"},<br />
["lgi"] = {"Lengilu"},<br />
["lgk"] = {"Lingarak", "Neverver"},<br />
["lgl"] = {"Wala"},<br />
["lgm"] = {"Lega-Mwenga"},<br />
["lgn"] = {"T'apo", "Opuuo"},<br />
["lgq"] = {"Logba"},<br />
["lgr"] = {"Lengo"},<br />
["lgt"] = {"Pahi"},<br />
["lgu"] = {"Longgu"},<br />
["lgz"] = {"Ligenza"},<br />
["lha"] = {"Laha (Viet Nam)"},<br />
["lhh"] = {"Laha (Indonesia)"},<br />
["lhi"] = {"Lahu Shi"},<br />
["lhl"] = {"Lahul Lohar"},<br />
["lhm"] = {"Lhomi"},<br />
["lhn"] = {"Lahanan"},<br />
["lhp"] = {"Lhokpu"},<br />
["lhs"] = {"Mlahsö"},<br />
["lht"] = {"Lo-Toga"},<br />
["lhu"] = {"Lahu"},<br />
["lia"] = {"West-Central Limba"},<br />
["lib"] = {"Likum"},<br />
["lic"] = {"Hlai"},<br />
["lid"] = {"Nyindrou"},<br />
["lie"] = {"Likila"},<br />
["lif"] = {"Limbu"},<br />
["lig"] = {"Ligbi"},<br />
["lih"] = {"Lihir"},<br />
["lij"] = {"Ligurian"},<br />
["lik"] = {"Lika"},<br />
["lil"] = {"Lillooet"},<br />
["lio"] = {"Liki"},<br />
["lip"] = {"Sekpele"},<br />
["liq"] = {"Libido"},<br />
["lir"] = {"Liberian English"},<br />
["lis"] = {"Lisu"},<br />
["liu"] = {"Logorik"},<br />
["liv"] = {"Liv"},<br />
["liw"] = {"Col"},<br />
["lix"] = {"Liabuku"},<br />
["liy"] = {"Banda-Bambari"},<br />
["liz"] = {"Libinza"},<br />
["lja"] = {"Golpa"},<br />
["lje"] = {"Rampi"},<br />
["lji"] = {"Laiyolo"},<br />
["ljl"] = {"Li'o"},<br />
["ljp"] = {"Lampung Api"},<br />
["ljw"] = {"Yirandali"},<br />
["ljx"] = {"Yuru"},<br />
["lka"] = {"Lakalei"},<br />
["lkb"] = {"Kabras", "Lukabaras"},<br />
["lkc"] = {"Kucong"},<br />
["lkd"] = {"Lakondê"},<br />
["lke"] = {"Kenyi"},<br />
["lkh"] = {"Lakha"},<br />
["lki"] = {"Laki"},<br />
["lkj"] = {"Remun"},<br />
["lkl"] = {"Laeko-Libuat"},<br />
["lkm"] = {"Kalaamaya"},<br />
["lkn"] = {"Lakon", "Vure"},<br />
["lko"] = {"Khayo", "Olukhayo"},<br />
["lkr"] = {"Päri"},<br />
["lks"] = {"Kisa", "Olushisa"},<br />
["lkt"] = {"Lakota"},<br />
["lku"] = {"Kungkari"},<br />
["lky"] = {"Lokoya"},<br />
["lla"] = {"Lala-Roba"},<br />
["llb"] = {"Lolo"},<br />
["llc"] = {"Lele (Guinea)"},<br />
["lld"] = {"Ladin"},<br />
["lle"] = {"Lele (Papua New Guinea)"},<br />
["llf"] = {"Hermit"},<br />
["llg"] = {"Lole"},<br />
["llh"] = {"Lamu"},<br />
["lli"] = {"Teke-Laali"},<br />
["llj"] = {"Ladji Ladji"},<br />
["llk"] = {"Lelak"},<br />
["lll"] = {"Lilau"},<br />
["llm"] = {"Lasalimu"},<br />
["lln"] = {"Lele (Chad)"},<br />
["llp"] = {"North Efate"},<br />
["llq"] = {"Lolak"},<br />
["lls"] = {"Lithuanian Sign Language"},<br />
["llu"] = {"Lau"},<br />
["llx"] = {"Lauan"},<br />
["lma"] = {"East Limba"},<br />
["lmb"] = {"Merei"},<br />
["lmc"] = {"Limilngan"},<br />
["lmd"] = {"Lumun"},<br />
["lme"] = {"Pévé"},<br />
["lmf"] = {"South Lembata"},<br />
["lmg"] = {"Lamogai"},<br />
["lmh"] = {"Lambichhong"},<br />
["lmi"] = {"Lombi"},<br />
["lmj"] = {"West Lembata"},<br />
["lmk"] = {"Lamkang"},<br />
["lml"] = {"Hano"},<br />
["lmn"] = {"Lambadi"},<br />
["lmo"] = {"Lombard"},<br />
["lmp"] = {"Limbum"},<br />
["lmq"] = {"Lamatuka"},<br />
["lmr"] = {"Lamalera"},<br />
["lmu"] = {"Lamenu"},<br />
["lmv"] = {"Lomaiviti"},<br />
["lmw"] = {"Lake Miwok"},<br />
["lmx"] = {"Laimbue"},<br />
["lmy"] = {"Lamboya"},<br />
["lna"] = {"Langbashe"},<br />
["lnb"] = {"Mbalanhu"},<br />
["lnd"] = {"Lundayeh", "Lun Bawang"},<br />
["lng"] = {"Langobardic"},<br />
["lnh"] = {"Lanoh"},<br />
["lni"] = {"Daantanai'"},<br />
["lnj"] = {"Leningitij"},<br />
["lnl"] = {"South Central Banda"},<br />
["lnm"] = {"Langam"},<br />
["lnn"] = {"Lorediakarkar"},<br />
["lno"] = {"Lango (South Sudan)"},<br />
["lns"] = {"Lamnso'"},<br />
["lnu"] = {"Longuda"},<br />
["lnw"] = {"Lanima"},<br />
["lnz"] = {"Lonzo"},<br />
["loa"] = {"Loloda"},<br />
["lob"] = {"Lobi"},<br />
["loc"] = {"Inonhan"},<br />
["loe"] = {"Saluan"},<br />
["lof"] = {"Logol"},<br />
["log"] = {"Logo"},<br />
["loh"] = {"Narim"},<br />
["loi"] = {"Loma (Côte d'Ivoire)"},<br />
["loj"] = {"Lou"},<br />
["lok"] = {"Loko"},<br />
["lol"] = {"Mongo"},<br />
["lom"] = {"Loma (Liberia)"},<br />
["lon"] = {"Malawi Lomwe"},<br />
["loo"] = {"Lombo"},<br />
["lop"] = {"Lopa"},<br />
["loq"] = {"Lobala"},<br />
["lor"] = {"Téén"},<br />
["los"] = {"Loniu"},<br />
["lot"] = {"Otuho"},<br />
["lou"] = {"Louisiana Creole"},<br />
["lov"] = {"Lopi"},<br />
["low"] = {"Tampias Lobu"},<br />
["lox"] = {"Loun"},<br />
["loy"] = {"Loke"},<br />
["loz"] = {"Lozi"},<br />
["lpa"] = {"Lelepa"},<br />
["lpe"] = {"Lepki"},<br />
["lpn"] = {"Long Phuri Naga"},<br />
["lpo"] = {"Lipo"},<br />
["lpx"] = {"Lopit"},<br />
["lra"] = {"Rara Bakati'"},<br />
["lrc"] = {"Northern Luri"},<br />
["lre"] = {"Laurentian"},<br />
["lrg"] = {"Laragia"},<br />
["lri"] = {"Marachi", "Olumarachi"},<br />
["lrk"] = {"Loarki"},<br />
["lrl"] = {"Lari"},<br />
["lrm"] = {"Marama", "Olumarama"},<br />
["lrn"] = {"Lorang"},<br />
["lro"] = {"Laro"},<br />
["lrr"] = {"Southern Yamphu"},<br />
["lrt"] = {"Larantuka Malay"},<br />
["lrv"] = {"Larevat"},<br />
["lrz"] = {"Lemerig"},<br />
["lsa"] = {"Lasgerdi"},<br />
["lsb"] = {"Burundian Sign Language", "Langue des Signes Burundaise"},<br />
["lsd"] = {"Lishana Deni"},<br />
["lse"] = {"Lusengo"},<br />
["lsh"] = {"Lish"},<br />
["lsi"] = {"Lashi"},<br />
["lsl"] = {"Latvian Sign Language"},<br />
["lsm"] = {"Saamia", "Olusamia"},<br />
["lsn"] = {"Tibetan Sign Language"},<br />
["lso"] = {"Laos Sign Language"},<br />
["lsp"] = {"Panamanian Sign Language", "Lengua de Señas Panameñas"},<br />
["lsr"] = {"Aruop"},<br />
["lss"] = {"Lasi"},<br />
["lst"] = {"Trinidad and Tobago Sign Language"},<br />
["lsv"] = {"Sivia Sign Language"},<br />
["lsy"] = {"Mauritian Sign Language"},<br />
["ltc"] = {"Late Middle Chinese"},<br />
["ltg"] = {"Latgalian"},<br />
["lth"] = {"Thur"},<br />
["lti"] = {"Leti (Indonesia)"},<br />
["ltn"] = {"Latundê"},<br />
["lto"] = {"Tsotso", "Olutsotso"},<br />
["lts"] = {"Tachoni", "Lutachoni"},<br />
["ltu"] = {"Latu"},<br />
["lua"] = {"Luba-Lulua"},<br />
["luc"] = {"Aringa"},<br />
["lud"] = {"Ludian"},<br />
["lue"] = {"Luvale"},<br />
["luf"] = {"Laua"},<br />
["lui"] = {"Luiseno"},<br />
["luj"] = {"Luna"},<br />
["luk"] = {"Lunanakha"},<br />
["lul"] = {"Olu'bo"},<br />
["lum"] = {"Luimbi"},<br />
["lun"] = {"Lunda"},<br />
["luo"] = {"Luo (Kenya and Tanzania)", "Dholuo"},<br />
["lup"] = {"Lumbu"},<br />
["luq"] = {"Lucumi"},<br />
["lur"] = {"Laura"},<br />
["lus"] = {"Lushai"},<br />
["lut"] = {"Lushootseed"},<br />
["luu"] = {"Lumba-Yakkha"},<br />
["luv"] = {"Luwati"},<br />
["luw"] = {"Luo (Cameroon)"},<br />
["luy"] = {"Luyia", "Oluluyia"},<br />
["luz"] = {"Southern Luri"},<br />
["lva"] = {"Maku'a"},<br />
["lvi"] = {"Lavi"},<br />
["lvk"] = {"Lavukaleve"},<br />
["lvs"] = {"Standard Latvian"},<br />
["lvu"] = {"Levuka"},<br />
["lwa"] = {"Lwalu"},<br />
["lwe"] = {"Lewo Eleng"},<br />
["lwg"] = {"Wanga", "Oluwanga"},<br />
["lwh"] = {"White Lachi"},<br />
["lwl"] = {"Eastern Lawa"},<br />
["lwm"] = {"Laomian"},<br />
["lwo"] = {"Luwo"},<br />
["lws"] = {"Malawian Sign Language"},<br />
["lwt"] = {"Lewotobi"},<br />
["lwu"] = {"Lawu"},<br />
["lww"] = {"Lewo"},<br />
["lxm"] = {"Lakurumau"},<br />
["lya"] = {"Layakha"},<br />
["lyg"] = {"Lyngngam"},<br />
["lyn"] = {"Luyana"},<br />
["lzh"] = {"Literary Chinese"},<br />
["lzl"] = {"Litzlitz"},<br />
["lzn"] = {"Leinong Naga"},<br />
["lzz"] = {"Laz"},<br />
["maa"] = {"San Jerónimo Tecóatl Mazatec"},<br />
["mab"] = {"Yutanduchi Mixtec"},<br />
["mad"] = {"Madurese"},<br />
["mae"] = {"Bo-Rukul"},<br />
["maf"] = {"Mafa"},<br />
["mag"] = {"Magahi"},<br />
["mai"] = {"Maithili"},<br />
["maj"] = {"Jalapa De Díaz Mazatec"},<br />
["mak"] = {"Makasar"},<br />
["mam"] = {"Mam"},<br />
["man"] = {"Mandingo", "Manding"},<br />
["map"] = {"Austronesian languages"},<br />
["maq"] = {"Chiquihuitlán Mazatec"},<br />
["mas"] = {"Masai"},<br />
["mat"] = {"San Francisco Matlatzinca"},<br />
["mau"] = {"Huautla Mazatec"},<br />
["mav"] = {"Sateré-Mawé"},<br />
["maw"] = {"Mampruli"},<br />
["max"] = {"North Moluccan Malay"},<br />
["maz"] = {"Central Mazahua"},<br />
["mba"] = {"Higaonon"},<br />
["mbb"] = {"Western Bukidnon Manobo"},<br />
["mbc"] = {"Macushi"},<br />
["mbd"] = {"Dibabawon Manobo"},<br />
["mbe"] = {"Molale"},<br />
["mbf"] = {"Baba Malay"},<br />
["mbh"] = {"Mangseng"},<br />
["mbi"] = {"Ilianen Manobo"},<br />
["mbj"] = {"Nadëb"},<br />
["mbk"] = {"Malol"},<br />
["mbl"] = {"Maxakalí"},<br />
["mbm"] = {"Ombamba"},<br />
["mbn"] = {"Macaguán"},<br />
["mbo"] = {"Mbo (Cameroon)"},<br />
["mbp"] = {"Malayo"},<br />
["mbq"] = {"Maisin"},<br />
["mbr"] = {"Nukak Makú"},<br />
["mbs"] = {"Sarangani Manobo"},<br />
["mbt"] = {"Matigsalug Manobo"},<br />
["mbu"] = {"Mbula-Bwazza"},<br />
["mbv"] = {"Mbulungish"},<br />
["mbw"] = {"Maring"},<br />
["mbx"] = {"Mari (East Sepik Province)"},<br />
["mby"] = {"Memoni"},<br />
["mbz"] = {"Amoltepec Mixtec"},<br />
["mca"] = {"Maca"},<br />
["mcb"] = {"Machiguenga"},<br />
["mcc"] = {"Bitur"},<br />
["mcd"] = {"Sharanahua"},<br />
["mce"] = {"Itundujia Mixtec"},<br />
["mcf"] = {"Matsés"},<br />
["mcg"] = {"Mapoyo"},<br />
["mch"] = {"Maquiritari"},<br />
["mci"] = {"Mese"},<br />
["mcj"] = {"Mvanip"},<br />
["mck"] = {"Mbunda"},<br />
["mcl"] = {"Macaguaje"},<br />
["mcm"] = {"Malaccan Creole Portuguese"},<br />
["mcn"] = {"Masana"},<br />
["mco"] = {"Coatlán Mixe"},<br />
["mcp"] = {"Makaa"},<br />
["mcq"] = {"Ese"},<br />
["mcr"] = {"Menya"},<br />
["mcs"] = {"Mambai"},<br />
["mct"] = {"Mengisa"},<br />
["mcu"] = {"Cameroon Mambila"},<br />
["mcv"] = {"Minanibai"},<br />
["mcw"] = {"Mawa (Chad)"},<br />
["mcx"] = {"Mpiemo"},<br />
["mcy"] = {"South Watut"},<br />
["mcz"] = {"Mawan"},<br />
["mda"] = {"Mada (Nigeria)"},<br />
["mdb"] = {"Morigi"},<br />
["mdc"] = {"Male (Papua New Guinea)"},<br />
["mdd"] = {"Mbum"},<br />
["mde"] = {"Maba (Chad)"},<br />
["mdf"] = {"Moksha"},<br />
["mdg"] = {"Massalat"},<br />
["mdh"] = {"Maguindanaon"},<br />
["mdi"] = {"Mamvu"},<br />
["mdj"] = {"Mangbetu"},<br />
["mdk"] = {"Mangbutu"},<br />
["mdl"] = {"Maltese Sign Language"},<br />
["mdm"] = {"Mayogo"},<br />
["mdn"] = {"Mbati"},<br />
["mdp"] = {"Mbala"},<br />
["mdq"] = {"Mbole"},<br />
["mdr"] = {"Mandar"},<br />
["mds"] = {"Maria (Papua New Guinea)"},<br />
["mdt"] = {"Mbere"},<br />
["mdu"] = {"Mboko"},<br />
["mdv"] = {"Santa Lucía Monteverde Mixtec"},<br />
["mdw"] = {"Mbosi"},<br />
["mdx"] = {"Dizin"},<br />
["mdy"] = {"Male (Ethiopia)"},<br />
["mdz"] = {"Suruí Do Pará"},<br />
["mea"] = {"Menka"},<br />
["meb"] = {"Ikobi"},<br />
["mec"] = {"Marra"},<br />
["med"] = {"Melpa"},<br />
["mee"] = {"Mengen"},<br />
["mef"] = {"Megam"},<br />
["meh"] = {"Southwestern Tlaxiaco Mixtec"},<br />
["mei"] = {"Midob"},<br />
["mej"] = {"Meyah"},<br />
["mek"] = {"Mekeo"},<br />
["mel"] = {"Central Melanau"},<br />
["mem"] = {"Mangala"},<br />
["men"] = {"Mende (Sierra Leone)"},<br />
["meo"] = {"Kedah Malay"},<br />
["mep"] = {"Miriwoong"},<br />
["meq"] = {"Merey"},<br />
["mer"] = {"Meru"},<br />
["mes"] = {"Masmaje"},<br />
["met"] = {"Mato"},<br />
["meu"] = {"Motu"},<br />
["mev"] = {"Mano"},<br />
["mew"] = {"Maaka"},<br />
["mey"] = {"Hassaniyya"},<br />
["mez"] = {"Menominee"},<br />
["mfa"] = {"Pattani Malay"},<br />
["mfb"] = {"Bangka"},<br />
["mfc"] = {"Mba"},<br />
["mfd"] = {"Mendankwe-Nkwen"},<br />
["mfe"] = {"Morisyen"},<br />
["mff"] = {"Naki"},<br />
["mfg"] = {"Mogofin"},<br />
["mfh"] = {"Matal"},<br />
["mfi"] = {"Wandala"},<br />
["mfj"] = {"Mefele"},<br />
["mfk"] = {"North Mofu"},<br />
["mfl"] = {"Putai"},<br />
["mfm"] = {"Marghi South"},<br />
["mfn"] = {"Cross River Mbembe"},<br />
["mfo"] = {"Mbe"},<br />
["mfp"] = {"Makassar Malay"},<br />
["mfq"] = {"Moba"},<br />
["mfr"] = {"Marrithiyel"},<br />
["mfs"] = {"Mexican Sign Language"},<br />
["mft"] = {"Mokerang"},<br />
["mfu"] = {"Mbwela"},<br />
["mfv"] = {"Mandjak"},<br />
["mfw"] = {"Mulaha"},<br />
["mfx"] = {"Melo"},<br />
["mfy"] = {"Mayo"},<br />
["mfz"] = {"Mabaan"},<br />
["mga"] = {"Middle Irish (900-1200)"},<br />
["mgb"] = {"Mararit"},<br />
["mgc"] = {"Morokodo"},<br />
["mgd"] = {"Moru"},<br />
["mge"] = {"Mango"},<br />
["mgf"] = {"Maklew"},<br />
["mgg"] = {"Mpumpong"},<br />
["mgh"] = {"Makhuwa-Meetto"},<br />
["mgi"] = {"Lijili"},<br />
["mgj"] = {"Abureni"},<br />
["mgk"] = {"Mawes"},<br />
["mgl"] = {"Maleu-Kilenge"},<br />
["mgm"] = {"Mambae"},<br />
["mgn"] = {"Mbangi"},<br />
["mgo"] = {"Meta'"},<br />
["mgp"] = {"Eastern Magar"},<br />
["mgq"] = {"Malila"},<br />
["mgr"] = {"Mambwe-Lungu"},<br />
["mgs"] = {"Manda (Tanzania)"},<br />
["mgt"] = {"Mongol"},<br />
["mgu"] = {"Mailu"},<br />
["mgv"] = {"Matengo"},<br />
["mgw"] = {"Matumbi"},<br />
["mgy"] = {"Mbunga"},<br />
["mgz"] = {"Mbugwe"},<br />
["mha"] = {"Manda (India)"},<br />
["mhb"] = {"Mahongwe"},<br />
["mhc"] = {"Mocho"},<br />
["mhd"] = {"Mbugu"},<br />
["mhe"] = {"Besisi", "Mah Meri"},<br />
["mhf"] = {"Mamaa"},<br />
["mhg"] = {"Margu"},<br />
["mhi"] = {"Ma'di"},<br />
["mhj"] = {"Mogholi"},<br />
["mhk"] = {"Mungaka"},<br />
["mhl"] = {"Mauwake"},<br />
["mhm"] = {"Makhuwa-Moniga"},<br />
["mhn"] = {"Mócheno"},<br />
["mho"] = {"Mashi (Zambia)"},<br />
["mhp"] = {"Balinese Malay"},<br />
["mhq"] = {"Mandan"},<br />
["mhr"] = {"Eastern Mari"},<br />
["mhs"] = {"Buru (Indonesia)"},<br />
["mht"] = {"Mandahuaca"},<br />
["mhu"] = {"Digaro-Mishmi", "Darang Deng"},<br />
["mhw"] = {"Mbukushu"},<br />
["mhx"] = {"Maru", "Lhaovo"},<br />
["mhy"] = {"Ma'anyan"},<br />
["mhz"] = {"Mor (Mor Islands)"},<br />
["mia"] = {"Miami"},<br />
["mib"] = {"Atatláhuca Mixtec"},<br />
["mic"] = {"Mi'kmaq", "Micmac"},<br />
["mid"] = {"Mandaic"},<br />
["mie"] = {"Ocotepec Mixtec"},<br />
["mif"] = {"Mofu-Gudur"},<br />
["mig"] = {"San Miguel El Grande Mixtec"},<br />
["mih"] = {"Chayuco Mixtec"},<br />
["mii"] = {"Chigmecatitlán Mixtec"},<br />
["mij"] = {"Abar", "Mungbam"},<br />
["mik"] = {"Mikasuki"},<br />
["mil"] = {"Peñoles Mixtec"},<br />
["mim"] = {"Alacatlatzala Mixtec"},<br />
["min"] = {"Minangkabau"},<br />
["mio"] = {"Pinotepa Nacional Mixtec"},<br />
["mip"] = {"Apasco-Apoala Mixtec"},<br />
["miq"] = {"Mískito"},<br />
["mir"] = {"Isthmus Mixe"},<br />
["mis"] = {"Uncoded languages"},<br />
["mit"] = {"Southern Puebla Mixtec"},<br />
["miu"] = {"Cacaloxtepec Mixtec"},<br />
["miw"] = {"Akoye"},<br />
["mix"] = {"Mixtepec Mixtec"},<br />
["miy"] = {"Ayutla Mixtec"},<br />
["miz"] = {"Coatzospan Mixtec"},<br />
["mjb"] = {"Makalero"},<br />
["mjc"] = {"San Juan Colorado Mixtec"},<br />
["mjd"] = {"Northwest Maidu"},<br />
["mje"] = {"Muskum"},<br />
["mjg"] = {"Tu"},<br />
["mjh"] = {"Mwera (Nyasa)"},<br />
["mji"] = {"Kim Mun"},<br />
["mjj"] = {"Mawak"},<br />
["mjk"] = {"Matukar"},<br />
["mjl"] = {"Mandeali"},<br />
["mjm"] = {"Medebur"},<br />
["mjn"] = {"Ma (Papua New Guinea)"},<br />
["mjo"] = {"Malankuravan"},<br />
["mjp"] = {"Malapandaram"},<br />
["mjq"] = {"Malaryan"},<br />
["mjr"] = {"Malavedan"},<br />
["mjs"] = {"Miship"},<br />
["mjt"] = {"Sauria Paharia"},<br />
["mju"] = {"Manna-Dora"},<br />
["mjv"] = {"Mannan"},<br />
["mjw"] = {"Karbi"},<br />
["mjx"] = {"Mahali"},<br />
["mjy"] = {"Mahican"},<br />
["mjz"] = {"Majhi"},<br />
["mka"] = {"Mbre"},<br />
["mkb"] = {"Mal Paharia"},<br />
["mkc"] = {"Siliput"},<br />
["mke"] = {"Mawchi"},<br />
["mkf"] = {"Miya"},<br />
["mkg"] = {"Mak (China)"},<br />
["mkh"] = {"Mon-Khmer languages"},<br />
["mki"] = {"Dhatki"},<br />
["mkj"] = {"Mokilese"},<br />
["mkk"] = {"Byep"},<br />
["mkl"] = {"Mokole"},<br />
["mkm"] = {"Moklen"},<br />
["mkn"] = {"Kupang Malay"},<br />
["mko"] = {"Mingang Doso"},<br />
["mkp"] = {"Moikodi"},<br />
["mkq"] = {"Bay Miwok"},<br />
["mkr"] = {"Malas"},<br />
["mks"] = {"Silacayoapan Mixtec"},<br />
["mkt"] = {"Vamale"},<br />
["mku"] = {"Konyanka Maninka"},<br />
["mkv"] = {"Mafea"},<br />
["mkw"] = {"Kituba (Congo)"},<br />
["mkx"] = {"Kinamiging Manobo"},<br />
["mky"] = {"East Makian"},<br />
["mkz"] = {"Makasae"},<br />
["mla"] = {"Malo"},<br />
["mlb"] = {"Mbule"},<br />
["mlc"] = {"Cao Lan"},<br />
["mle"] = {"Manambu"},<br />
["mlf"] = {"Mal"},<br />
["mlh"] = {"Mape"},<br />
["mli"] = {"Malimpung"},<br />
["mlj"] = {"Miltu"},<br />
["mlk"] = {"Ilwana", "Kiwilwana"},<br />
["mll"] = {"Malua Bay"},<br />
["mlm"] = {"Mulam"},<br />
["mln"] = {"Malango"},<br />
["mlo"] = {"Mlomp"},<br />
["mlp"] = {"Bargam"},<br />
["mlq"] = {"Western Maninkakan"},<br />
["mlr"] = {"Vame"},<br />
["mls"] = {"Masalit"},<br />
["mlu"] = {"To'abaita"},<br />
["mlv"] = {"Motlav", "Mwotlap"},<br />
["mlw"] = {"Moloko"},<br />
["mlx"] = {"Malfaxal", "Naha'ai"},<br />
["mlz"] = {"Malaynon"},<br />
["mma"] = {"Mama"},<br />
["mmb"] = {"Momina"},<br />
["mmc"] = {"Michoacán Mazahua"},<br />
["mmd"] = {"Maonan"},<br />
["mme"] = {"Mae"},<br />
["mmf"] = {"Mundat"},<br />
["mmg"] = {"North Ambrym"},<br />
["mmh"] = {"Mehináku"},<br />
["mmi"] = {"Musar"},<br />
["mmj"] = {"Majhwar"},<br />
["mmk"] = {"Mukha-Dora"},<br />
["mml"] = {"Man Met"},<br />
["mmm"] = {"Maii"},<br />
["mmn"] = {"Mamanwa"},<br />
["mmo"] = {"Mangga Buang"},<br />
["mmp"] = {"Siawi"},<br />
["mmq"] = {"Musak"},<br />
["mmr"] = {"Western Xiangxi Miao"},<br />
["mmt"] = {"Malalamai"},<br />
["mmu"] = {"Mmaala"},<br />
["mmv"] = {"Miriti"},<br />
["mmw"] = {"Emae"},<br />
["mmx"] = {"Madak"},<br />
["mmy"] = {"Migaama"},<br />
["mmz"] = {"Mabaale"},<br />
["mna"] = {"Mbula"},<br />
["mnb"] = {"Muna"},<br />
["mnc"] = {"Manchu"},<br />
["mnd"] = {"Mondé"},<br />
["mne"] = {"Naba"},<br />
["mnf"] = {"Mundani"},<br />
["mng"] = {"Eastern Mnong"},<br />
["mnh"] = {"Mono (Democratic Republic of Congo)"},<br />
["mni"] = {"Manipuri"},<br />
["mnj"] = {"Munji"},<br />
["mnk"] = {"Mandinka"},<br />
["mnl"] = {"Tiale"},<br />
["mnm"] = {"Mapena"},<br />
["mnn"] = {"Southern Mnong"},<br />
["mno"] = {"Manobo languages"},<br />
["mnp"] = {"Min Bei Chinese"},<br />
["mnq"] = {"Minriq"},<br />
["mnr"] = {"Mono (USA)"},<br />
["mns"] = {"Mansi"},<br />
["mnu"] = {"Mer"},<br />
["mnv"] = {"Rennell-Bellona"},<br />
["mnw"] = {"Mon"},<br />
["mnx"] = {"Manikion"},<br />
["mny"] = {"Manyawa"},<br />
["mnz"] = {"Moni"},<br />
["moa"] = {"Mwan"},<br />
["moc"] = {"Mocoví"},<br />
["mod"] = {"Mobilian"},<br />
["moe"] = {"Innu", "Montagnais"},<br />
["mog"] = {"Mongondow"},<br />
["moh"] = {"Mohawk"},<br />
["moi"] = {"Mboi"},<br />
["moj"] = {"Monzombo"},<br />
["mok"] = {"Morori"},<br />
["mom"] = {"Mangue"},<br />
["moo"] = {"Monom"},<br />
["mop"] = {"Mopán Maya"},<br />
["moq"] = {"Mor (Bomberai Peninsula)"},<br />
["mor"] = {"Moro"},<br />
["mos"] = {"Mossi"},<br />
["mot"] = {"Barí"},<br />
["mou"] = {"Mogum"},<br />
["mov"] = {"Mohave"},<br />
["mow"] = {"Moi (Congo)"},<br />
["mox"] = {"Molima"},<br />
["moy"] = {"Shekkacho"},<br />
["moz"] = {"Mukulu", "Gergiko"},<br />
["mpa"] = {"Mpoto"},<br />
["mpb"] = {"Malak Malak", "Mullukmulluk"},<br />
["mpc"] = {"Mangarrayi"},<br />
["mpd"] = {"Machinere"},<br />
["mpe"] = {"Majang"},<br />
["mpg"] = {"Marba"},<br />
["mph"] = {"Maung"},<br />
["mpi"] = {"Mpade"},<br />
["mpj"] = {"Martu Wangka", "Wangkajunga"},<br />
["mpk"] = {"Mbara (Chad)"},<br />
["mpl"] = {"Middle Watut"},<br />
["mpm"] = {"Yosondúa Mixtec"},<br />
["mpn"] = {"Mindiri"},<br />
["mpo"] = {"Miu"},<br />
["mpp"] = {"Migabac"},<br />
["mpq"] = {"Matís"},<br />
["mpr"] = {"Vangunu"},<br />
["mps"] = {"Dadibi"},<br />
["mpt"] = {"Mian"},<br />
["mpu"] = {"Makuráp"},<br />
["mpv"] = {"Mungkip"},<br />
["mpw"] = {"Mapidian"},<br />
["mpx"] = {"Misima-Panaeati"},<br />
["mpy"] = {"Mapia"},<br />
["mpz"] = {"Mpi"},<br />
["mqa"] = {"Maba (Indonesia)"},<br />
["mqb"] = {"Mbuko"},<br />
["mqc"] = {"Mangole"},<br />
["mqe"] = {"Matepi"},<br />
["mqf"] = {"Momuna"},<br />
["mqg"] = {"Kota Bangun Kutai Malay"},<br />
["mqh"] = {"Tlazoyaltepec Mixtec"},<br />
["mqi"] = {"Mariri"},<br />
["mqj"] = {"Mamasa"},<br />
["mqk"] = {"Rajah Kabunsuwan Manobo"},<br />
["mql"] = {"Mbelime"},<br />
["mqm"] = {"South Marquesan"},<br />
["mqn"] = {"Moronene"},<br />
["mqo"] = {"Modole"},<br />
["mqp"] = {"Manipa"},<br />
["mqq"] = {"Minokok"},<br />
["mqr"] = {"Mander"},<br />
["mqs"] = {"West Makian"},<br />
["mqt"] = {"Mok"},<br />
["mqu"] = {"Mandari"},<br />
["mqv"] = {"Mosimo"},<br />
["mqw"] = {"Murupi"},<br />
["mqx"] = {"Mamuju"},<br />
["mqy"] = {"Manggarai"},<br />
["mqz"] = {"Pano"},<br />
["mra"] = {"Mlabri"},<br />
["mrb"] = {"Marino"},<br />
["mrc"] = {"Maricopa"},<br />
["mrd"] = {"Western Magar"},<br />
["mre"] = {"Martha's Vineyard Sign Language"},<br />
["mrf"] = {"Elseng"},<br />
["mrg"] = {"Mising"},<br />
["mrh"] = {"Mara Chin"},<br />
["mrj"] = {"Western Mari"},<br />
["mrk"] = {"Hmwaveke"},<br />
["mrl"] = {"Mortlockese"},<br />
["mrm"] = {"Merlav", "Mwerlap"},<br />
["mrn"] = {"Cheke Holo"},<br />
["mro"] = {"Mru"},<br />
["mrp"] = {"Morouas"},<br />
["mrq"] = {"North Marquesan"},<br />
["mrr"] = {"Maria (India)"},<br />
["mrs"] = {"Maragus"},<br />
["mrt"] = {"Marghi Central"},<br />
["mru"] = {"Mono (Cameroon)"},<br />
["mrv"] = {"Mangareva"},<br />
["mrw"] = {"Maranao"},<br />
["mrx"] = {"Maremgi", "Dineor"},<br />
["mry"] = {"Mandaya"},<br />
["mrz"] = {"Marind"},<br />
["msb"] = {"Masbatenyo"},<br />
["msc"] = {"Sankaran Maninka"},<br />
["msd"] = {"Yucatec Maya Sign Language"},<br />
["mse"] = {"Musey"},<br />
["msf"] = {"Mekwei"},<br />
["msg"] = {"Moraid"},<br />
["msh"] = {"Masikoro Malagasy"},<br />
["msi"] = {"Sabah Malay"},<br />
["msj"] = {"Ma (Democratic Republic of Congo)"},<br />
["msk"] = {"Mansaka"},<br />
["msl"] = {"Molof", "Poule"},<br />
["msm"] = {"Agusan Manobo"},<br />
["msn"] = {"Vurës"},<br />
["mso"] = {"Mombum"},<br />
["msp"] = {"Maritsauá"},<br />
["msq"] = {"Caac"},<br />
["msr"] = {"Mongolian Sign Language"},<br />
["mss"] = {"West Masela"},<br />
["msu"] = {"Musom"},<br />
["msv"] = {"Maslam"},<br />
["msw"] = {"Mansoanka"},<br />
["msx"] = {"Moresada"},<br />
["msy"] = {"Aruamu"},<br />
["msz"] = {"Momare"},<br />
["mta"] = {"Cotabato Manobo"},<br />
["mtb"] = {"Anyin Morofo"},<br />
["mtc"] = {"Munit"},<br />
["mtd"] = {"Mualang"},<br />
["mte"] = {"Mono (Solomon Islands)"},<br />
["mtf"] = {"Murik (Papua New Guinea)"},<br />
["mtg"] = {"Una"},<br />
["mth"] = {"Munggui"},<br />
["mti"] = {"Maiwa (Papua New Guinea)"},<br />
["mtj"] = {"Moskona"},<br />
["mtk"] = {"Mbe'"},<br />
["mtl"] = {"Montol"},<br />
["mtm"] = {"Mator"},<br />
["mtn"] = {"Matagalpa"},<br />
["mto"] = {"Totontepec Mixe"},<br />
["mtp"] = {"Wichí Lhamtés Nocten"},<br />
["mtq"] = {"Muong"},<br />
["mtr"] = {"Mewari"},<br />
["mts"] = {"Yora"},<br />
["mtt"] = {"Mota"},<br />
["mtu"] = {"Tututepec Mixtec"},<br />
["mtv"] = {"Asaro'o"},<br />
["mtw"] = {"Southern Binukidnon"},<br />
["mtx"] = {"Tidaá Mixtec"},<br />
["mty"] = {"Nabi"},<br />
["mua"] = {"Mundang"},<br />
["mub"] = {"Mubi"},<br />
["muc"] = {"Ajumbu"},<br />
["mud"] = {"Mednyj Aleut"},<br />
["mue"] = {"Media Lengua"},<br />
["mug"] = {"Musgu"},<br />
["muh"] = {"Mündü"},<br />
["mui"] = {"Musi"},<br />
["muj"] = {"Mabire"},<br />
["muk"] = {"Mugom"},<br />
["mul"] = {"Multiple languages"},<br />
["mum"] = {"Maiwala"},<br />
["mun"] = {"Munda languages"},<br />
["muo"] = {"Nyong"},<br />
["mup"] = {"Malvi"},<br />
["muq"] = {"Eastern Xiangxi Miao"},<br />
["mur"] = {"Murle"},<br />
["mus"] = {"Creek"},<br />
["mut"] = {"Western Muria"},<br />
["muu"] = {"Yaaku"},<br />
["muv"] = {"Muthuvan"},<br />
["mux"] = {"Bo-Ung"},<br />
["muy"] = {"Muyang"},<br />
["muz"] = {"Mursi"},<br />
["mva"] = {"Manam"},<br />
["mvb"] = {"Mattole"},<br />
["mvd"] = {"Mamboru"},<br />
["mve"] = {"Marwari (Pakistan)"},<br />
["mvf"] = {"Peripheral Mongolian"},<br />
["mvg"] = {"Yucuañe Mixtec"},<br />
["mvh"] = {"Mulgi"},<br />
["mvi"] = {"Miyako"},<br />
["mvk"] = {"Mekmek"},<br />
["mvl"] = {"Mbara (Australia)"},<br />
["mvn"] = {"Minaveha"},<br />
["mvo"] = {"Marovo"},<br />
["mvp"] = {"Duri"},<br />
["mvq"] = {"Moere"},<br />
["mvr"] = {"Marau"},<br />
["mvs"] = {"Massep"},<br />
["mvt"] = {"Mpotovoro"},<br />
["mvu"] = {"Marfa"},<br />
["mvv"] = {"Tagal Murut"},<br />
["mvw"] = {"Machinga"},<br />
["mvx"] = {"Meoswar"},<br />
["mvy"] = {"Indus Kohistani"},<br />
["mvz"] = {"Mesqan"},<br />
["mwa"] = {"Mwatebu"},<br />
["mwb"] = {"Juwal"},<br />
["mwc"] = {"Are"},<br />
["mwe"] = {"Mwera (Chimwera)"},<br />
["mwf"] = {"Murrinh-Patha"},<br />
["mwg"] = {"Aiklep"},<br />
["mwh"] = {"Mouk-Aria"},<br />
["mwi"] = {"Labo", "Ninde"},<br />
["mwk"] = {"Kita Maninkakan"},<br />
["mwl"] = {"Mirandese"},<br />
["mwm"] = {"Sar"},<br />
["mwn"] = {"Nyamwanga"},<br />
["mwo"] = {"Central Maewo"},<br />
["mwp"] = {"Kala Lagaw Ya"},<br />
["mwq"] = {"Mün Chin"},<br />
["mwr"] = {"Marwari"},<br />
["mws"] = {"Mwimbi-Muthambi"},<br />
["mwt"] = {"Moken"},<br />
["mwu"] = {"Mittu"},<br />
["mwv"] = {"Mentawai"},<br />
["mww"] = {"Hmong Daw"},<br />
["mwz"] = {"Moingi"},<br />
["mxa"] = {"Northwest Oaxaca Mixtec"},<br />
["mxb"] = {"Tezoatlán Mixtec"},<br />
["mxc"] = {"Manyika"},<br />
["mxd"] = {"Modang"},<br />
["mxe"] = {"Mele-Fila"},<br />
["mxf"] = {"Malgbe"},<br />
["mxg"] = {"Mbangala"},<br />
["mxh"] = {"Mvuba"},<br />
["mxi"] = {"Mozarabic"},<br />
["mxj"] = {"Miju-Mishmi", "Geman Deng"},<br />
["mxk"] = {"Monumbo"},<br />
["mxl"] = {"Maxi Gbe"},<br />
["mxm"] = {"Meramera"},<br />
["mxn"] = {"Moi (Indonesia)"},<br />
["mxo"] = {"Mbowe"},<br />
["mxp"] = {"Tlahuitoltepec Mixe"},<br />
["mxq"] = {"Juquila Mixe"},<br />
["mxr"] = {"Murik (Malaysia)"},<br />
["mxs"] = {"Huitepec Mixtec"},<br />
["mxt"] = {"Jamiltepec Mixtec"},<br />
["mxu"] = {"Mada (Cameroon)"},<br />
["mxv"] = {"Metlatónoc Mixtec"},<br />
["mxw"] = {"Namo"},<br />
["mxx"] = {"Mahou", "Mawukakan"},<br />
["mxy"] = {"Southeastern Nochixtlán Mixtec"},<br />
["mxz"] = {"Central Masela"},<br />
["myb"] = {"Mbay"},<br />
["myc"] = {"Mayeka"},<br />
["mye"] = {"Myene"},<br />
["myf"] = {"Bambassi"},<br />
["myg"] = {"Manta"},<br />
["myh"] = {"Makah"},<br />
["myj"] = {"Mangayat"},<br />
["myk"] = {"Mamara Senoufo"},<br />
["myl"] = {"Moma"},<br />
["mym"] = {"Me'en"},<br />
["myn"] = {"Mayan languages"},<br />
["myo"] = {"Anfillo"},<br />
["myp"] = {"Pirahã"},<br />
["myr"] = {"Muniche"},<br />
["mys"] = {"Mesmes"},<br />
["myu"] = {"Mundurukú"},<br />
["myv"] = {"Erzya"},<br />
["myw"] = {"Muyuw"},<br />
["myx"] = {"Masaaba"},<br />
["myy"] = {"Macuna"},<br />
["myz"] = {"Classical Mandaic"},<br />
["mza"] = {"Santa María Zacatepec Mixtec"},<br />
["mzb"] = {"Tumzabt"},<br />
["mzc"] = {"Madagascar Sign Language"},<br />
["mzd"] = {"Malimba"},<br />
["mze"] = {"Morawa"},<br />
["mzg"] = {"Monastic Sign Language"},<br />
["mzh"] = {"Wichí Lhamtés Güisnay"},<br />
["mzi"] = {"Ixcatlán Mazatec"},<br />
["mzj"] = {"Manya"},<br />
["mzk"] = {"Nigeria Mambila"},<br />
["mzl"] = {"Mazatlán Mixe"},<br />
["mzm"] = {"Mumuye"},<br />
["mzn"] = {"Mazanderani"},<br />
["mzo"] = {"Matipuhy"},<br />
["mzp"] = {"Movima"},<br />
["mzq"] = {"Mori Atas"},<br />
["mzr"] = {"Marúbo"},<br />
["mzs"] = {"Macanese"},<br />
["mzt"] = {"Mintil"},<br />
["mzu"] = {"Inapang"},<br />
["mzv"] = {"Manza"},<br />
["mzw"] = {"Deg"},<br />
["mzx"] = {"Mawayana"},<br />
["mzy"] = {"Mozambican Sign Language"},<br />
["mzz"] = {"Maiadomu"},<br />
["naa"] = {"Namla"},<br />
["nab"] = {"Southern Nambikuára"},<br />
["nac"] = {"Narak"},<br />
["nae"] = {"Naka'ela"},<br />
["naf"] = {"Nabak"},<br />
["nag"] = {"Naga Pidgin"},<br />
["nah"] = {"Nahuatl languages"},<br />
["nai"] = {"North American Indian languages"},<br />
["naj"] = {"Nalu"},<br />
["nak"] = {"Nakanai"},<br />
["nal"] = {"Nalik"},<br />
["nam"] = {"Ngan'gityemerri"},<br />
["nan"] = {"Min Nan Chinese"},<br />
["nao"] = {"Naaba"},<br />
["nap"] = {"Neapolitan"},<br />
["naq"] = {"Khoekhoe", "Nama (Namibia)"},<br />
["nar"] = {"Iguta"},<br />
["nas"] = {"Naasioi"},<br />
["nat"] = {"Ca̱hungwa̱rya̱", "Hungworo"},<br />
["naw"] = {"Nawuri"},<br />
["nax"] = {"Nakwi"},<br />
["nay"] = {"Ngarrindjeri"},<br />
["naz"] = {"Coatepec Nahuatl"},<br />
["nba"] = {"Nyemba"},<br />
["nbb"] = {"Ndoe"},<br />
["nbc"] = {"Chang Naga"},<br />
["nbd"] = {"Ngbinda"},<br />
["nbe"] = {"Konyak Naga"},<br />
["nbg"] = {"Nagarchal"},<br />
["nbh"] = {"Ngamo"},<br />
["nbi"] = {"Mao Naga"},<br />
["nbj"] = {"Ngarinyman"},<br />
["nbk"] = {"Nake"},<br />
["nbm"] = {"Ngbaka Ma'bo"},<br />
["nbn"] = {"Kuri"},<br />
["nbo"] = {"Nkukoli"},<br />
["nbp"] = {"Nnam"},<br />
["nbq"] = {"Nggem"},<br />
["nbr"] = {"Numana"},<br />
["nbs"] = {"Namibian Sign Language"},<br />
["nbt"] = {"Na"},<br />
["nbu"] = {"Rongmei Naga"},<br />
["nbv"] = {"Ngamambo"},<br />
["nbw"] = {"Southern Ngbandi"},<br />
["nby"] = {"Ningera"},<br />
["nca"] = {"Iyo"},<br />
["ncb"] = {"Central Nicobarese"},<br />
["ncc"] = {"Ponam"},<br />
["ncd"] = {"Nachering"},<br />
["nce"] = {"Yale"},<br />
["ncf"] = {"Notsi"},<br />
["ncg"] = {"Nisga'a"},<br />
["nch"] = {"Central Huasteca Nahuatl"},<br />
["nci"] = {"Classical Nahuatl"},<br />
["ncj"] = {"Northern Puebla Nahuatl"},<br />
["nck"] = {"Na-kara"},<br />
["ncl"] = {"Michoacán Nahuatl"},<br />
["ncm"] = {"Nambo"},<br />
["ncn"] = {"Nauna"},<br />
["nco"] = {"Sibe"},<br />
["ncq"] = {"Northern Katang"},<br />
["ncr"] = {"Ncane"},<br />
["ncs"] = {"Nicaraguan Sign Language"},<br />
["nct"] = {"Chothe Naga"},<br />
["ncu"] = {"Chumburung"},<br />
["ncx"] = {"Central Puebla Nahuatl"},<br />
["ncz"] = {"Natchez"},<br />
["nda"] = {"Ndasa"},<br />
["ndb"] = {"Kenswei Nsei"},<br />
["ndc"] = {"Ndau"},<br />
["ndd"] = {"Nde-Nsele-Nta"},<br />
["ndf"] = {"Nadruvian"},<br />
["ndg"] = {"Ndengereko"},<br />
["ndh"] = {"Ndali"},<br />
["ndi"] = {"Samba Leko"},<br />
["ndj"] = {"Ndamba"},<br />
["ndk"] = {"Ndaka"},<br />
["ndl"] = {"Ndolo"},<br />
["ndm"] = {"Ndam"},<br />
["ndn"] = {"Ngundi"},<br />
["ndp"] = {"Ndo"},<br />
["ndq"] = {"Ndombe"},<br />
["ndr"] = {"Ndoola"},<br />
["nds"] = {"Low German", "Low Saxon"},<br />
["ndt"] = {"Ndunga"},<br />
["ndu"] = {"Dugun"},<br />
["ndv"] = {"Ndut"},<br />
["ndw"] = {"Ndobo"},<br />
["ndx"] = {"Nduga"},<br />
["ndy"] = {"Lutos"},<br />
["ndz"] = {"Ndogo"},<br />
["nea"] = {"Eastern Ngad'a"},<br />
["neb"] = {"Toura (Côte d'Ivoire)"},<br />
["nec"] = {"Nedebang"},<br />
["ned"] = {"Nde-Gbite"},<br />
["nee"] = {"Nêlêmwa-Nixumwak"},<br />
["nef"] = {"Nefamese"},<br />
["neg"] = {"Negidal"},<br />
["neh"] = {"Nyenkha"},<br />
["nei"] = {"Neo-Hittite"},<br />
["nej"] = {"Neko"},<br />
["nek"] = {"Neku"},<br />
["nem"] = {"Nemi"},<br />
["nen"] = {"Nengone"},<br />
["neo"] = {"Ná-Meo"},<br />
["neq"] = {"North Central Mixe"},<br />
["ner"] = {"Yahadian"},<br />
["nes"] = {"Bhoti Kinnauri"},<br />
["net"] = {"Nete"},<br />
["neu"] = {"Neo"},<br />
["nev"] = {"Nyaheun"},<br />
["new"] = {"Newari", "Nepal Bhasa"},<br />
["nex"] = {"Neme"},<br />
["ney"] = {"Neyo"},<br />
["nez"] = {"Nez Perce"},<br />
["nfa"] = {"Dhao"},<br />
["nfd"] = {"Ahwai"},<br />
["nfl"] = {"Ayiwo", "Äiwoo"},<br />
["nfr"] = {"Nafaanra"},<br />
["nfu"] = {"Mfumte"},<br />
["nga"] = {"Ngbaka"},<br />
["ngb"] = {"Northern Ngbandi"},<br />
["ngc"] = {"Ngombe (Democratic Republic of Congo)"},<br />
["ngd"] = {"Ngando (Central African Republic)"},<br />
["nge"] = {"Ngemba"},<br />
["ngf"] = {"Trans-New Guinea languages"},<br />
["ngg"] = {"Ngbaka Manza"},<br />
["ngh"] = {"Nǁng"},<br />
["ngi"] = {"Ngizim"},<br />
["ngj"] = {"Ngie"},<br />
["ngk"] = {"Dalabon"},<br />
["ngl"] = {"Lomwe"},<br />
["ngm"] = {"Ngatik Men's Creole"},<br />
["ngn"] = {"Ngwo"},<br />
["ngp"] = {"Ngulu"},<br />
["ngq"] = {"Ngurimi", "Ngoreme"},<br />
["ngr"] = {"Engdewu"},<br />
["ngs"] = {"Gvoko"},<br />
["ngt"] = {"Kriang", "Ngeq"},<br />
["ngu"] = {"Guerrero Nahuatl"},<br />
["ngv"] = {"Nagumi"},<br />
["ngw"] = {"Ngwaba"},<br />
["ngx"] = {"Nggwahyi"},<br />
["ngy"] = {"Tibea"},<br />
["ngz"] = {"Ngungwel"},<br />
["nha"] = {"Nhanda"},<br />
["nhb"] = {"Beng"},<br />
["nhc"] = {"Tabasco Nahuatl"},<br />
["nhd"] = {"Chiripá", "Ava Guaraní"},<br />
["nhe"] = {"Eastern Huasteca Nahuatl"},<br />
["nhf"] = {"Nhuwala"},<br />
["nhg"] = {"Tetelcingo Nahuatl"},<br />
["nhh"] = {"Nahari"},<br />
["nhi"] = {"Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"},<br />
["nhk"] = {"Isthmus-Cosoleacaque Nahuatl"},<br />
["nhm"] = {"Morelos Nahuatl"},<br />
["nhn"] = {"Central Nahuatl"},<br />
["nho"] = {"Takuu"},<br />
["nhp"] = {"Isthmus-Pajapan Nahuatl"},<br />
["nhq"] = {"Huaxcaleca Nahuatl"},<br />
["nhr"] = {"Naro"},<br />
["nht"] = {"Ometepec Nahuatl"},<br />
["nhu"] = {"Noone"},<br />
["nhv"] = {"Temascaltepec Nahuatl"},<br />
["nhw"] = {"Western Huasteca Nahuatl"},<br />
["nhx"] = {"Isthmus-Mecayapan Nahuatl"},<br />
["nhy"] = {"Northern Oaxaca Nahuatl"},<br />
["nhz"] = {"Santa María La Alta Nahuatl"},<br />
["nia"] = {"Nias"},<br />
["nib"] = {"Nakame"},<br />
["nic"] = {"Niger-Kordofanian languages"},<br />
["nid"] = {"Ngandi"},<br />
["nie"] = {"Niellim"},<br />
["nif"] = {"Nek"},<br />
["nig"] = {"Ngalakgan"},<br />
["nih"] = {"Nyiha (Tanzania)"},<br />
["nii"] = {"Nii"},<br />
["nij"] = {"Ngaju"},<br />
["nik"] = {"Southern Nicobarese"},<br />
["nil"] = {"Nila"},<br />
["nim"] = {"Nilamba"},<br />
["nin"] = {"Ninzo"},<br />
["nio"] = {"Nganasan"},<br />
["niq"] = {"Nandi"},<br />
["nir"] = {"Nimboran"},<br />
["nis"] = {"Nimi"},<br />
["nit"] = {"Southeastern Kolami"},<br />
["niu"] = {"Niuean"},<br />
["niv"] = {"Gilyak"},<br />
["niw"] = {"Nimo"},<br />
["nix"] = {"Hema"},<br />
["niy"] = {"Ngiti"},<br />
["niz"] = {"Ningil"},<br />
["nja"] = {"Nzanyi"},<br />
["njb"] = {"Nocte Naga"},<br />
["njd"] = {"Ndonde Hamba"},<br />
["njh"] = {"Lotha Naga"},<br />
["nji"] = {"Gudanji"},<br />
["njj"] = {"Njen"},<br />
["njl"] = {"Njalgulgule"},<br />
["njm"] = {"Angami Naga"},<br />
["njn"] = {"Liangmai Naga"},<br />
["njo"] = {"Ao Naga"},<br />
["njr"] = {"Njerep"},<br />
["njs"] = {"Nisa"},<br />
["njt"] = {"Ndyuka-Trio Pidgin"},<br />
["nju"] = {"Ngadjunmaya"},<br />
["njx"] = {"Kunyi"},<br />
["njy"] = {"Njyem"},<br />
["njz"] = {"Nyishi"},<br />
["nka"] = {"Nkoya"},<br />
["nkb"] = {"Khoibu Naga"},<br />
["nkc"] = {"Nkongho"},<br />
["nkd"] = {"Koireng"},<br />
["nke"] = {"Duke"},<br />
["nkf"] = {"Inpui Naga"},<br />
["nkg"] = {"Nekgini"},<br />
["nkh"] = {"Khezha Naga"},<br />
["nki"] = {"Thangal Naga"},<br />
["nkj"] = {"Nakai"},<br />
["nkk"] = {"Nokuku"},<br />
["nkm"] = {"Namat"},<br />
["nkn"] = {"Nkangala"},<br />
["nko"] = {"Nkonya"},<br />
["nkp"] = {"Niuatoputapu"},<br />
["nkq"] = {"Nkami"},<br />
["nkr"] = {"Nukuoro"},<br />
["nks"] = {"North Asmat"},<br />
["nkt"] = {"Nyika (Tanzania)"},<br />
["nku"] = {"Bouna Kulango"},<br />
["nkv"] = {"Nyika (Malawi and Zambia)"},<br />
["nkw"] = {"Nkutu"},<br />
["nkx"] = {"Nkoroo"},<br />
["nkz"] = {"Nkari"},<br />
["nla"] = {"Ngombale"},<br />
["nlc"] = {"Nalca"},<br />
["nle"] = {"East Nyala"},<br />
["nlg"] = {"Gela"},<br />
["nli"] = {"Grangali"},<br />
["nlj"] = {"Nyali"},<br />
["nlk"] = {"Ninia Yali"},<br />
["nll"] = {"Nihali"},<br />
["nlm"] = {"Mankiyali"},<br />
["nlo"] = {"Ngul"},<br />
["nlq"] = {"Lao Naga"},<br />
["nlu"] = {"Nchumbulu"},<br />
["nlv"] = {"Orizaba Nahuatl"},<br />
["nlw"] = {"Walangama"},<br />
["nlx"] = {"Nahali"},<br />
["nly"] = {"Nyamal"},<br />
["nlz"] = {"Nalögo"},<br />
["nma"] = {"Maram Naga"},<br />
["nmb"] = {"Big Nambas", "V'ënen Taut"},<br />
["nmc"] = {"Ngam"},<br />
["nmd"] = {"Ndumu"},<br />
["nme"] = {"Mzieme Naga"},<br />
["nmf"] = {"Tangkhul Naga (India)"},<br />
["nmg"] = {"Kwasio"},<br />
["nmh"] = {"Monsang Naga"},<br />
["nmi"] = {"Nyam"},<br />
["nmj"] = {"Ngombe (Central African Republic)"},<br />
["nmk"] = {"Namakura"},<br />
["nml"] = {"Ndemli"},<br />
["nmm"] = {"Manangba"},<br />
["nmn"] = {"ǃXóõ"},<br />
["nmo"] = {"Moyon Naga"},<br />
["nmp"] = {"Nimanbur"},<br />
["nmq"] = {"Nambya"},<br />
["nmr"] = {"Nimbari"},<br />
["nms"] = {"Letemboi"},<br />
["nmt"] = {"Namonuito"},<br />
["nmu"] = {"Northeast Maidu"},<br />
["nmv"] = {"Ngamini"},<br />
["nmw"] = {"Nimoa", "Rifao"},<br />
["nmx"] = {"Nama (Papua New Guinea)"},<br />
["nmy"] = {"Namuyi"},<br />
["nmz"] = {"Nawdm"},<br />
["nna"] = {"Nyangumarta"},<br />
["nnb"] = {"Nande"},<br />
["nnc"] = {"Nancere"},<br />
["nnd"] = {"West Ambae"},<br />
["nne"] = {"Ngandyera"},<br />
["nnf"] = {"Ngaing"},<br />
["nng"] = {"Maring Naga"},<br />
["nnh"] = {"Ngiemboon"},<br />
["nni"] = {"North Nuaulu"},<br />
["nnj"] = {"Nyangatom"},<br />
["nnk"] = {"Nankina"},<br />
["nnl"] = {"Northern Rengma Naga"},<br />
["nnm"] = {"Namia"},<br />
["nnn"] = {"Ngete"},<br />
["nnp"] = {"Wancho Naga"},<br />
["nnq"] = {"Ngindo"},<br />
["nnr"] = {"Narungga"},<br />
["nnt"] = {"Nanticoke"},<br />
["nnu"] = {"Dwang"},<br />
["nnv"] = {"Nugunu (Australia)"},<br />
["nnw"] = {"Southern Nuni"},<br />
["nny"] = {"Nyangga"},<br />
["nnz"] = {"Nda'nda'"},<br />
["noa"] = {"Woun Meu"},<br />
["noc"] = {"Nuk"},<br />
["nod"] = {"Northern Thai"},<br />
["noe"] = {"Nimadi"},<br />
["nof"] = {"Nomane"},<br />
["nog"] = {"Nogai"},<br />
["noh"] = {"Nomu"},<br />
["noi"] = {"Noiri"},<br />
["noj"] = {"Nonuya"},<br />
["nok"] = {"Nooksack"},<br />
["nol"] = {"Nomlaki"},<br />
["nom"] = {"Nocamán"},<br />
["non"] = {"Old Norse"},<br />
["nop"] = {"Numanggang"},<br />
["noq"] = {"Ngongo"},<br />
["nos"] = {"Eastern Nisu"},<br />
["not"] = {"Nomatsiguenga"},<br />
["nou"] = {"Ewage-Notu"},<br />
["nov"] = {"Novial"},<br />
["now"] = {"Nyambo"},<br />
["noy"] = {"Noy"},<br />
["noz"] = {"Nayi"},<br />
["npa"] = {"Nar Phu"},<br />
["npb"] = {"Nupbikha"},<br />
["npg"] = {"Ponyo-Gongwang Naga"},<br />
["nph"] = {"Phom Naga"},<br />
["npi"] = {"Nepali (individual language)"},<br />
["npl"] = {"Southeastern Puebla Nahuatl"},<br />
["npn"] = {"Mondropolon"},<br />
["npo"] = {"Pochuri Naga"},<br />
["nps"] = {"Nipsan"},<br />
["npu"] = {"Puimei Naga"},<br />
["npx"] = {"Noipx"},<br />
["npy"] = {"Napu"},<br />
["nqg"] = {"Southern Nago"},<br />
["nqk"] = {"Kura Ede Nago"},<br />
["nql"] = {"Ngendelengo"},<br />
["nqm"] = {"Ndom"},<br />
["nqn"] = {"Nen"},<br />
["nqo"] = {"N'Ko", "N’Ko"},<br />
["nqq"] = {"Kyan-Karyaw Naga"},<br />
["nqt"] = {"Nteng"},<br />
["nqy"] = {"Akyaung Ari Naga"},<br />
["nra"] = {"Ngom"},<br />
["nrb"] = {"Nara"},<br />
["nrc"] = {"Noric"},<br />
["nre"] = {"Southern Rengma Naga"},<br />
["nrf"] = {"Jèrriais", "Guernésiais"},<br />
["nrg"] = {"Narango"},<br />
["nri"] = {"Chokri Naga"},<br />
["nrk"] = {"Ngarla"},<br />
["nrl"] = {"Ngarluma"},<br />
["nrm"] = {"Narom"},<br />
["nrn"] = {"Norn"},<br />
["nrp"] = {"North Picene"},<br />
["nrr"] = {"Norra", "Nora"},<br />
["nrt"] = {"Northern Kalapuya"},<br />
["nru"] = {"Narua"},<br />
["nrx"] = {"Ngurmbur"},<br />
["nrz"] = {"Lala"},<br />
["nsa"] = {"Sangtam Naga"},<br />
["nsb"] = {"Lower Nossob"},<br />
["nsc"] = {"Nshi"},<br />
["nsd"] = {"Southern Nisu"},<br />
["nse"] = {"Nsenga"},<br />
["nsf"] = {"Northwestern Nisu"},<br />
["nsg"] = {"Ngasa"},<br />
["nsh"] = {"Ngoshie"},<br />
["nsi"] = {"Nigerian Sign Language"},<br />
["nsk"] = {"Naskapi"},<br />
["nsl"] = {"Norwegian Sign Language"},<br />
["nsm"] = {"Sumi Naga"},<br />
["nsn"] = {"Nehan"},<br />
["nso"] = {"Pedi", "Northern Sotho", "Sepedi"},<br />
["nsp"] = {"Nepalese Sign Language"},<br />
["nsq"] = {"Northern Sierra Miwok"},<br />
["nsr"] = {"Maritime Sign Language"},<br />
["nss"] = {"Nali"},<br />
["nst"] = {"Tase Naga"},<br />
["nsu"] = {"Sierra Negra Nahuatl"},<br />
["nsv"] = {"Southwestern Nisu"},<br />
["nsw"] = {"Navut"},<br />
["nsx"] = {"Nsongo"},<br />
["nsy"] = {"Nasal"},<br />
["nsz"] = {"Nisenan"},<br />
["ntd"] = {"Northern Tidung"},<br />
["nte"] = {"Nathembo"},<br />
["ntg"] = {"Ngantangarra"},<br />
["nti"] = {"Natioro"},<br />
["ntj"] = {"Ngaanyatjarra"},<br />
["ntk"] = {"Ikoma-Nata-Isenye"},<br />
["ntm"] = {"Nateni"},<br />
["nto"] = {"Ntomba"},<br />
["ntp"] = {"Northern Tepehuan"},<br />
["ntr"] = {"Delo"},<br />
["ntu"] = {"Natügu"},<br />
["ntw"] = {"Nottoway"},<br />
["ntx"] = {"Tangkhul Naga (Myanmar)"},<br />
["nty"] = {"Mantsi"},<br />
["ntz"] = {"Natanzi"},<br />
["nua"] = {"Yuanga"},<br />
["nub"] = {"Nubian languages"},<br />
["nuc"] = {"Nukuini"},<br />
["nud"] = {"Ngala"},<br />
["nue"] = {"Ngundu"},<br />
["nuf"] = {"Nusu"},<br />
["nug"] = {"Nungali"},<br />
["nuh"] = {"Ndunda"},<br />
["nui"] = {"Ngumbi"},<br />
["nuj"] = {"Nyole"},<br />
["nuk"] = {"Nuu-chah-nulth", "Nuuchahnulth"},<br />
["nul"] = {"Nusa Laut"},<br />
["num"] = {"Niuafo'ou"},<br />
["nun"] = {"Anong"},<br />
["nuo"] = {"Nguôn"},<br />
["nup"] = {"Nupe-Nupe-Tako"},<br />
["nuq"] = {"Nukumanu"},<br />
["nur"] = {"Nukuria"},<br />
["nus"] = {"Nuer"},<br />
["nut"] = {"Nung (Viet Nam)"},<br />
["nuu"] = {"Ngbundu"},<br />
["nuv"] = {"Northern Nuni"},<br />
["nuw"] = {"Nguluwan"},<br />
["nux"] = {"Mehek"},<br />
["nuy"] = {"Nunggubuyu"},<br />
["nuz"] = {"Tlamacazapa Nahuatl"},<br />
["nvh"] = {"Nasarian"},<br />
["nvm"] = {"Namiae"},<br />
["nvo"] = {"Nyokon"},<br />
["nwa"] = {"Nawathinehena"},<br />
["nwb"] = {"Nyabwa"},<br />
["nwc"] = {"Classical Newari", "Classical Nepal Bhasa", "Old Newari"},<br />
["nwe"] = {"Ngwe"},<br />
["nwg"] = {"Ngayawung"},<br />
["nwi"] = {"Southwest Tanna"},<br />
["nwm"] = {"Nyamusa-Molo"},<br />
["nwo"] = {"Nauo"},<br />
["nwr"] = {"Nawaru"},<br />
["nwx"] = {"Middle Newar"},<br />
["nwy"] = {"Nottoway-Meherrin"},<br />
["nxa"] = {"Nauete"},<br />
["nxd"] = {"Ngando (Democratic Republic of Congo)"},<br />
["nxe"] = {"Nage"},<br />
["nxg"] = {"Ngad'a"},<br />
["nxi"] = {"Nindi"},<br />
["nxk"] = {"Koki Naga"},<br />
["nxl"] = {"South Nuaulu"},<br />
["nxm"] = {"Numidian"},<br />
["nxn"] = {"Ngawun"},<br />
["nxo"] = {"Ndambomo"},<br />
["nxq"] = {"Naxi"},<br />
["nxr"] = {"Ninggerum"},<br />
["nxx"] = {"Nafri"},<br />
["nyb"] = {"Nyangbo"},<br />
["nyc"] = {"Nyanga-li"},<br />
["nyd"] = {"Nyore", "Olunyole"},<br />
["nye"] = {"Nyengo"},<br />
["nyf"] = {"Giryama", "Kigiryama"},<br />
["nyg"] = {"Nyindu"},<br />
["nyh"] = {"Nyikina"},<br />
["nyi"] = {"Ama (Sudan)"},<br />
["nyj"] = {"Nyanga"},<br />
["nyk"] = {"Nyaneka"},<br />
["nyl"] = {"Nyeu"},<br />
["nym"] = {"Nyamwezi"},<br />
["nyn"] = {"Nyankole"},<br />
["nyo"] = {"Nyoro"},<br />
["nyp"] = {"Nyang'i"},<br />
["nyq"] = {"Nayini"},<br />
["nyr"] = {"Nyiha (Malawi)"},<br />
["nys"] = {"Nyungar"},<br />
["nyt"] = {"Nyawaygi"},<br />
["nyu"] = {"Nyungwe"},<br />
["nyv"] = {"Nyulnyul"},<br />
["nyw"] = {"Nyaw"},<br />
["nyx"] = {"Nganyaywana"},<br />
["nyy"] = {"Nyakyusa-Ngonde"},<br />
["nza"] = {"Tigon Mbembe"},<br />
["nzb"] = {"Njebi"},<br />
["nzd"] = {"Nzadi"},<br />
["nzi"] = {"Nzima"},<br />
["nzk"] = {"Nzakara"},<br />
["nzm"] = {"Zeme Naga"},<br />
["nzs"] = {"New Zealand Sign Language"},<br />
["nzu"] = {"Teke-Nzikou"},<br />
["nzy"] = {"Nzakambay"},<br />
["nzz"] = {"Nanga Dama Dogon"},<br />
["oaa"] = {"Orok"},<br />
["oac"] = {"Oroch"},<br />
["oar"] = {"Old Aramaic (up to 700 BCE)", "Ancient Aramaic (up to 700 BCE)"},<br />
["oav"] = {"Old Avar"},<br />
["obi"] = {"Obispeño"},<br />
["obk"] = {"Southern Bontok"},<br />
["obl"] = {"Oblo"},<br />
["obm"] = {"Moabite"},<br />
["obo"] = {"Obo Manobo"},<br />
["obr"] = {"Old Burmese"},<br />
["obt"] = {"Old Breton"},<br />
["obu"] = {"Obulom"},<br />
["oca"] = {"Ocaina"},<br />
["och"] = {"Old Chinese"},<br />
["ocm"] = {"Old Cham"},<br />
["oco"] = {"Old Cornish"},<br />
["ocu"] = {"Atzingo Matlatzinca"},<br />
["oda"] = {"Odut"},<br />
["odk"] = {"Od"},<br />
["odt"] = {"Old Dutch"},<br />
["odu"] = {"Odual"},<br />
["ofo"] = {"Ofo"},<br />
["ofs"] = {"Old Frisian"},<br />
["ofu"] = {"Efutop"},<br />
["ogb"] = {"Ogbia"},<br />
["ogc"] = {"Ogbah"},<br />
["oge"] = {"Old Georgian"},<br />
["ogg"] = {"Ogbogolo"},<br />
["ogo"] = {"Khana"},<br />
["ogu"] = {"Ogbronuagum"},<br />
["oht"] = {"Old Hittite"},<br />
["ohu"] = {"Old Hungarian"},<br />
["oia"] = {"Oirata"},<br />
["oin"] = {"Inebu One"},<br />
["ojb"] = {"Northwestern Ojibwa"},<br />
["ojc"] = {"Central Ojibwa"},<br />
["ojg"] = {"Eastern Ojibwa"},<br />
["ojp"] = {"Old Japanese"},<br />
["ojs"] = {"Severn Ojibwa"},<br />
["ojv"] = {"Ontong Java"},<br />
["ojw"] = {"Western Ojibwa"},<br />
["oka"] = {"Okanagan"},<br />
["okb"] = {"Okobo"},<br />
["okc"] = {"Kobo"},<br />
["okd"] = {"Okodia"},<br />
["oke"] = {"Okpe (Southwestern Edo)"},<br />
["okg"] = {"Koko Babangk"},<br />
["okh"] = {"Koresh-e Rostam"},<br />
["oki"] = {"Okiek"},<br />
["okj"] = {"Oko-Juwoi"},<br />
["okk"] = {"Kwamtim One"},<br />
["okl"] = {"Old Kentish Sign Language"},<br />
["okm"] = {"Middle Korean (10th-16th cent.)"},<br />
["okn"] = {"Oki-No-Erabu"},<br />
["oko"] = {"Old Korean (3rd-9th cent.)"},<br />
["okr"] = {"Kirike"},<br />
["oks"] = {"Oko-Eni-Osayen"},<br />
["oku"] = {"Oku"},<br />
["okv"] = {"Orokaiva"},<br />
["okx"] = {"Okpe (Northwestern Edo)"},<br />
["okz"] = {"Old Khmer"},<br />
["ola"] = {"Walungge"},<br />
["old"] = {"Mochi"},<br />
["ole"] = {"Olekha"},<br />
["olk"] = {"Olkol"},<br />
["olm"] = {"Oloma"},<br />
["olo"] = {"Livvi"},<br />
["olr"] = {"Olrat"},<br />
["olt"] = {"Old Lithuanian"},<br />
["olu"] = {"Kuvale"},<br />
["oma"] = {"Omaha-Ponca"},<br />
["omb"] = {"East Ambae"},<br />
["omc"] = {"Mochica"},<br />
["omg"] = {"Omagua"},<br />
["omi"] = {"Omi"},<br />
["omk"] = {"Omok"},<br />
["oml"] = {"Ombo"},<br />
["omn"] = {"Minoan"},<br />
["omo"] = {"Utarmbung"},<br />
["omp"] = {"Old Manipuri"},<br />
["omq"] = {"Oto-Manguean languages"},<br />
["omr"] = {"Old Marathi"},<br />
["omt"] = {"Omotik"},<br />
["omu"] = {"Omurano"},<br />
["omv"] = {"Omotic languages"},<br />
["omw"] = {"South Tairora"},<br />
["omx"] = {"Old Mon"},<br />
["omy"] = {"Old Malay"},<br />
["ona"] = {"Ona"},<br />
["onb"] = {"Lingao"},<br />
["one"] = {"Oneida"},<br />
["ong"] = {"Olo"},<br />
["oni"] = {"Onin"},<br />
["onj"] = {"Onjob"},<br />
["onk"] = {"Kabore One"},<br />
["onn"] = {"Onobasulu"},<br />
["ono"] = {"Onondaga"},<br />
["onp"] = {"Sartang"},<br />
["onr"] = {"Northern One"},<br />
["ons"] = {"Ono"},<br />
["ont"] = {"Ontenu"},<br />
["onu"] = {"Unua"},<br />
["onw"] = {"Old Nubian"},<br />
["onx"] = {"Onin Based Pidgin"},<br />
["ood"] = {"Tohono O'odham"},<br />
["oog"] = {"Ong"},<br />
["oon"] = {"Önge"},<br />
["oor"] = {"Oorlams"},<br />
["oos"] = {"Old Ossetic"},<br />
["opa"] = {"Okpamheri"},<br />
["opk"] = {"Kopkaka"},<br />
["opm"] = {"Oksapmin"},<br />
["opo"] = {"Opao"},<br />
["opt"] = {"Opata"},<br />
["opy"] = {"Ofayé"},<br />
["ora"] = {"Oroha"},<br />
["orc"] = {"Orma"},<br />
["ore"] = {"Orejón"},<br />
["org"] = {"Oring"},<br />
["orh"] = {"Oroqen"},<br />
["orn"] = {"Orang Kanaq"},<br />
["oro"] = {"Orokolo"},<br />
["orr"] = {"Oruma"},<br />
["ors"] = {"Orang Seletar"},<br />
["ort"] = {"Adivasi Oriya"},<br />
["oru"] = {"Ormuri"},<br />
["orv"] = {"Old Russian"},<br />
["orw"] = {"Oro Win"},<br />
["orx"] = {"Oro"},<br />
["ory"] = {"Odia (individual language)", "Oriya (individual language)"},<br />
["orz"] = {"Ormu"},<br />
["osa"] = {"Osage"},<br />
["osc"] = {"Oscan"},<br />
["osi"] = {"Osing"},<br />
["osn"] = {"Old Sundanese"},<br />
["oso"] = {"Ososo"},<br />
["osp"] = {"Old Spanish"},<br />
["ost"] = {"Osatu"},<br />
["osu"] = {"Southern One"},<br />
["osx"] = {"Old Saxon"},<br />
["ota"] = {"Ottoman Turkish (1500-1928)"},<br />
["otb"] = {"Old Tibetan"},<br />
["otd"] = {"Ot Danum"},<br />
["ote"] = {"Mezquital Otomi"},<br />
["oti"] = {"Oti"},<br />
["otk"] = {"Old Turkish"},<br />
["otl"] = {"Tilapa Otomi"},<br />
["otm"] = {"Eastern Highland Otomi"},<br />
["otn"] = {"Tenango Otomi"},<br />
["oto"] = {"Otomian languages"},<br />
["otq"] = {"Querétaro Otomi"},<br />
["otr"] = {"Otoro"},<br />
["ots"] = {"Estado de México Otomi"},<br />
["ott"] = {"Temoaya Otomi"},<br />
["otu"] = {"Otuke"},<br />
["otw"] = {"Ottawa"},<br />
["otx"] = {"Texcatepec Otomi"},<br />
["oty"] = {"Old Tamil"},<br />
["otz"] = {"Ixtenco Otomi"},<br />
["oua"] = {"Tagargrent"},<br />
["oub"] = {"Glio-Oubi"},<br />
["oue"] = {"Oune"},<br />
["oui"] = {"Old Uighur"},<br />
["oum"] = {"Ouma"},<br />
["ovd"] = {"Elfdalian", "Övdalian"},<br />
["owi"] = {"Owiniga"},<br />
["owl"] = {"Old Welsh"},<br />
["oyb"] = {"Oy"},<br />
["oyd"] = {"Oyda"},<br />
["oym"] = {"Wayampi"},<br />
["oyy"] = {"Oya'oya"},<br />
["ozm"] = {"Koonzime"},<br />
["paa"] = {"Papuan languages"},<br />
["pab"] = {"Parecís"},<br />
["pac"] = {"Pacoh"},<br />
["pad"] = {"Paumarí"},<br />
["pae"] = {"Pagibete"},<br />
["paf"] = {"Paranawát"},<br />
["pag"] = {"Pangasinan"},<br />
["pah"] = {"Tenharim"},<br />
["pai"] = {"Pe"},<br />
["pak"] = {"Parakanã"},<br />
["pal"] = {"Pahlavi"},<br />
["pam"] = {"Pampanga", "Kapampangan"},<br />
["pao"] = {"Northern Paiute"},<br />
["pap"] = {"Papiamento"},<br />
["paq"] = {"Parya"},<br />
["par"] = {"Panamint", "Timbisha"},<br />
["pas"] = {"Papasena"},<br />
["pau"] = {"Palauan"},<br />
["pav"] = {"Pakaásnovos"},<br />
["paw"] = {"Pawnee"},<br />
["pax"] = {"Pankararé"},<br />
["pay"] = {"Pech"},<br />
["paz"] = {"Pankararú"},<br />
["pbb"] = {"Páez"},<br />
["pbc"] = {"Patamona"},<br />
["pbe"] = {"Mezontla Popoloca"},<br />
["pbf"] = {"Coyotepec Popoloca"},<br />
["pbg"] = {"Paraujano"},<br />
["pbh"] = {"E'ñapa Woromaipu"},<br />
["pbi"] = {"Parkwa"},<br />
["pbl"] = {"Mak (Nigeria)"},<br />
["pbm"] = {"Puebla Mazatec"},<br />
["pbn"] = {"Kpasam"},<br />
["pbo"] = {"Papel"},<br />
["pbp"] = {"Badyara"},<br />
["pbr"] = {"Pangwa"},<br />
["pbs"] = {"Central Pame"},<br />
["pbt"] = {"Southern Pashto"},<br />
["pbu"] = {"Northern Pashto"},<br />
["pbv"] = {"Pnar"},<br />
["pby"] = {"Pyu (Papua New Guinea)"},<br />
["pca"] = {"Santa Inés Ahuatempan Popoloca"},<br />
["pcb"] = {"Pear"},<br />
["pcc"] = {"Bouyei"},<br />
["pcd"] = {"Picard"},<br />
["pce"] = {"Ruching Palaung"},<br />
["pcf"] = {"Paliyan"},<br />
["pcg"] = {"Paniya"},<br />
["pch"] = {"Pardhan"},<br />
["pci"] = {"Duruwa"},<br />
["pcj"] = {"Parenga"},<br />
["pck"] = {"Paite Chin"},<br />
["pcl"] = {"Pardhi"},<br />
["pcm"] = {"Nigerian Pidgin"},<br />
["pcn"] = {"Piti"},<br />
["pcp"] = {"Pacahuara"},<br />
["pcw"] = {"Pyapun"},<br />
["pda"] = {"Anam"},<br />
["pdc"] = {"Pennsylvania German"},<br />
["pdi"] = {"Pa Di"},<br />
["pdn"] = {"Podena", "Fedan"},<br />
["pdo"] = {"Padoe"},<br />
["pdt"] = {"Plautdietsch"},<br />
["pdu"] = {"Kayan"},<br />
["pea"] = {"Peranakan Indonesian"},<br />
["peb"] = {"Eastern Pomo"},<br />
["ped"] = {"Mala (Papua New Guinea)"},<br />
["pee"] = {"Taje"},<br />
["pef"] = {"Northeastern Pomo"},<br />
["peg"] = {"Pengo"},<br />
["peh"] = {"Bonan"},<br />
["pei"] = {"Chichimeca-Jonaz"},<br />
["pej"] = {"Northern Pomo"},<br />
["pek"] = {"Penchal"},<br />
["pel"] = {"Pekal"},<br />
["pem"] = {"Phende"},<br />
["peo"] = {"Old Persian (ca. 600-400 B.C.)"},<br />
["pep"] = {"Kunja"},<br />
["peq"] = {"Southern Pomo"},<br />
["pes"] = {"Iranian Persian"},<br />
["pev"] = {"Pémono"},<br />
["pex"] = {"Petats"},<br />
["pey"] = {"Petjo"},<br />
["pez"] = {"Eastern Penan"},<br />
["pfa"] = {"Pááfang"},<br />
["pfe"] = {"Pere"},<br />
["pfl"] = {"Pfaelzisch"},<br />
["pga"] = {"Sudanese Creole Arabic"},<br />
["pgd"] = {"Gāndhārī"},<br />
["pgg"] = {"Pangwali"},<br />
["pgi"] = {"Pagi"},<br />
["pgk"] = {"Rerep"},<br />
["pgl"] = {"Primitive Irish"},<br />
["pgn"] = {"Paelignian"},<br />
["pgs"] = {"Pangseng"},<br />
["pgu"] = {"Pagu"},<br />
["pgz"] = {"Papua New Guinean Sign Language"},<br />
["pha"] = {"Pa-Hng"},<br />
["phd"] = {"Phudagi"},<br />
["phg"] = {"Phuong"},<br />
["phh"] = {"Phukha"},<br />
["phi"] = {"Philippine languages"},<br />
["phk"] = {"Phake"},<br />
["phl"] = {"Phalura", "Palula"},<br />
["phm"] = {"Phimbi"},<br />
["phn"] = {"Phoenician"},<br />
["pho"] = {"Phunoi"},<br />
["phq"] = {"Phana'"},<br />
["phr"] = {"Pahari-Potwari"},<br />
["pht"] = {"Phu Thai"},<br />
["phu"] = {"Phuan"},<br />
["phv"] = {"Pahlavani"},<br />
["phw"] = {"Phangduwali"},<br />
["pia"] = {"Pima Bajo"},<br />
["pib"] = {"Yine"},<br />
["pic"] = {"Pinji"},<br />
["pid"] = {"Piaroa"},<br />
["pie"] = {"Piro"},<br />
["pif"] = {"Pingelapese"},<br />
["pig"] = {"Pisabo"},<br />
["pih"] = {"Pitcairn-Norfolk"},<br />
["pii"] = {"Pini"},<br />
["pij"] = {"Pijao"},<br />
["pil"] = {"Yom"},<br />
["pim"] = {"Powhatan"},<br />
["pin"] = {"Piame"},<br />
["pio"] = {"Piapoco"},<br />
["pip"] = {"Pero"},<br />
["pir"] = {"Piratapuyo"},<br />
["pis"] = {"Pijin"},<br />
["pit"] = {"Pitta Pitta"},<br />
["piu"] = {"Pintupi-Luritja"},<br />
["piv"] = {"Pileni", "Vaeakau-Taumako"},<br />
["piw"] = {"Pimbwe"},<br />
["pix"] = {"Piu"},<br />
["piy"] = {"Piya-Kwonci"},<br />
["piz"] = {"Pije"},<br />
["pjt"] = {"Pitjantjatjara"},<br />
["pka"] = {"Ardhamāgadhī Prākrit"},<br />
["pkb"] = {"Pokomo", "Kipfokomo"},<br />
["pkc"] = {"Paekche"},<br />
["pkg"] = {"Pak-Tong"},<br />
["pkh"] = {"Pankhu"},<br />
["pkn"] = {"Pakanha"},<br />
["pko"] = {"Pökoot"},<br />
["pkp"] = {"Pukapuka"},<br />
["pkr"] = {"Attapady Kurumba"},<br />
["pks"] = {"Pakistan Sign Language"},<br />
["pkt"] = {"Maleng"},<br />
["pku"] = {"Paku"},<br />
["pla"] = {"Miani"},<br />
["plb"] = {"Polonombauk"},<br />
["plc"] = {"Central Palawano"},<br />
["pld"] = {"Polari"},<br />
["ple"] = {"Palu'e"},<br />
["plf"] = {"Central Malayo-Polynesian languages"},<br />
["plg"] = {"Pilagá"},<br />
["plh"] = {"Paulohi"},<br />
["plj"] = {"Polci"},<br />
["plk"] = {"Kohistani Shina"},<br />
["pll"] = {"Shwe Palaung"},<br />
["pln"] = {"Palenquero"},<br />
["plo"] = {"Oluta Popoluca"},<br />
["plq"] = {"Palaic"},<br />
["plr"] = {"Palaka Senoufo"},<br />
["pls"] = {"San Marcos Tlacoyalco Popoloca", "San Marcos Tlalcoyalco Popoloca"},<br />
["plt"] = {"Plateau Malagasy"},<br />
["plu"] = {"Palikúr"},<br />
["plv"] = {"Southwest Palawano"},<br />
["plw"] = {"Brooke's Point Palawano"},<br />
["ply"] = {"Bolyu"},<br />
["plz"] = {"Paluan"},<br />
["pma"] = {"Paama"},<br />
["pmb"] = {"Pambia"},<br />
["pmd"] = {"Pallanganmiddang"},<br />
["pme"] = {"Pwaamei"},<br />
["pmf"] = {"Pamona"},<br />
["pmh"] = {"Māhārāṣṭri Prākrit"},<br />
["pmi"] = {"Northern Pumi"},<br />
["pmj"] = {"Southern Pumi"},<br />
["pmk"] = {"Pamlico"},<br />
["pml"] = {"Lingua Franca"},<br />
["pmm"] = {"Pomo"},<br />
["pmn"] = {"Pam"},<br />
["pmo"] = {"Pom"},<br />
["pmq"] = {"Northern Pame"},<br />
["pmr"] = {"Paynamar"},<br />
["pms"] = {"Piemontese"},<br />
["pmt"] = {"Tuamotuan"},<br />
["pmw"] = {"Plains Miwok"},<br />
["pmx"] = {"Poumei Naga"},<br />
["pmy"] = {"Papuan Malay"},<br />
["pmz"] = {"Southern Pame"},<br />
["pna"] = {"Punan Bah-Biau"},<br />
["pnb"] = {"Western Panjabi"},<br />
["pnc"] = {"Pannei"},<br />
["pnd"] = {"Mpinda"},<br />
["pne"] = {"Western Penan"},<br />
["png"] = {"Pangu", "Pongu"},<br />
["pnh"] = {"Penrhyn"},<br />
["pni"] = {"Aoheng"},<br />
["pnj"] = {"Pinjarup"},<br />
["pnk"] = {"Paunaka"},<br />
["pnl"] = {"Paleni"},<br />
["pnm"] = {"Punan Batu 1"},<br />
["pnn"] = {"Pinai-Hagahai"},<br />
["pno"] = {"Panobo"},<br />
["pnp"] = {"Pancana"},<br />
["pnq"] = {"Pana (Burkina Faso)"},<br />
["pnr"] = {"Panim"},<br />
["pns"] = {"Ponosakan"},<br />
["pnt"] = {"Pontic"},<br />
["pnu"] = {"Jiongnai Bunu"},<br />
["pnv"] = {"Pinigura"},<br />
["pnw"] = {"Banyjima", "Panytyima"},<br />
["pnx"] = {"Phong-Kniang"},<br />
["pny"] = {"Pinyin"},<br />
["pnz"] = {"Pana (Central African Republic)"},<br />
["poc"] = {"Poqomam"},<br />
["poe"] = {"San Juan Atzingo Popoloca"},<br />
["pof"] = {"Poke"},<br />
["pog"] = {"Potiguára"},<br />
["poh"] = {"Poqomchi'"},<br />
["poi"] = {"Highland Popoluca"},<br />
["pok"] = {"Pokangá"},<br />
["pom"] = {"Southeastern Pomo"},<br />
["pon"] = {"Pohnpeian"},<br />
["poo"] = {"Central Pomo"},<br />
["pop"] = {"Pwapwâ"},<br />
["poq"] = {"Texistepec Popoluca"},<br />
["pos"] = {"Sayula Popoluca"},<br />
["pot"] = {"Potawatomi"},<br />
["pov"] = {"Upper Guinea Crioulo"},<br />
["pow"] = {"San Felipe Otlaltepec Popoloca"},<br />
["pox"] = {"Polabian"},<br />
["poy"] = {"Pogolo"},<br />
["poz"] = {"Malayo-Polynesian languages"},<br />
["ppe"] = {"Papi"},<br />
["ppi"] = {"Paipai"},<br />
["ppk"] = {"Uma"},<br />
["ppl"] = {"Pipil", "Nicarao"},<br />
["ppm"] = {"Papuma"},<br />
["ppn"] = {"Papapana"},<br />
["ppo"] = {"Folopa"},<br />
["ppp"] = {"Pelende"},<br />
["ppq"] = {"Pei"},<br />
["pps"] = {"San Luís Temalacayuca Popoloca"},<br />
["ppt"] = {"Pare"},<br />
["ppu"] = {"Papora"},<br />
["pqa"] = {"Pa'a"},<br />
["pqe"] = {"Eastern Malayo-Polynesian languages"},<br />
["pqm"] = {"Malecite-Passamaquoddy"},<br />
["pqw"] = {"Western Malayo-Polynesian languages"},<br />
["pra"] = {"Prakrit languages"},<br />
["prc"] = {"Parachi"},<br />
["prd"] = {"Parsi-Dari"},<br />
["pre"] = {"Principense"},<br />
["prf"] = {"Paranan"},<br />
["prg"] = {"Prussian"},<br />
["prh"] = {"Porohanon"},<br />
["pri"] = {"Paicî"},<br />
["prk"] = {"Parauk"},<br />
["prl"] = {"Peruvian Sign Language"},<br />
["prm"] = {"Kibiri"},<br />
["prn"] = {"Prasuni"},<br />
["pro"] = {"Old Provençal (to 1500)", "Old Occitan (to 1500)"},<br />
["prp"] = {"Parsi"},<br />
["prq"] = {"Ashéninka Perené"},<br />
["prr"] = {"Puri"},<br />
["prs"] = {"Dari", "Afghan Persian"},<br />
["prt"] = {"Phai"},<br />
["pru"] = {"Puragi"},<br />
["prw"] = {"Parawen"},<br />
["prx"] = {"Purik"},<br />
["prz"] = {"Providencia Sign Language"},<br />
["psa"] = {"Asue Awyu"},<br />
["psc"] = {"Persian Sign Language"},<br />
["psd"] = {"Plains Indian Sign Language"},<br />
["pse"] = {"Central Malay"},<br />
["psg"] = {"Penang Sign Language"},<br />
["psh"] = {"Southwest Pashai", "Southwest Pashayi"},<br />
["psi"] = {"Southeast Pashai", "Southeast Pashayi"},<br />
["psl"] = {"Puerto Rican Sign Language"},<br />
["psm"] = {"Pauserna"},<br />
["psn"] = {"Panasuan"},<br />
["pso"] = {"Polish Sign Language"},<br />
["psp"] = {"Philippine Sign Language"},<br />
["psq"] = {"Pasi"},<br />
["psr"] = {"Portuguese Sign Language"},<br />
["pss"] = {"Kaulong"},<br />
["pst"] = {"Central Pashto"},<br />
["psu"] = {"Sauraseni Prākrit"},<br />
["psw"] = {"Port Sandwich"},<br />
["psy"] = {"Piscataway"},<br />
["pta"] = {"Pai Tavytera"},<br />
["pth"] = {"Pataxó Hã-Ha-Hãe"},<br />
["pti"] = {"Pindiini", "Wangkatha"},<br />
["ptn"] = {"Patani"},<br />
["pto"] = {"Zo'é"},<br />
["ptp"] = {"Patep"},<br />
["ptq"] = {"Pattapu"},<br />
["ptr"] = {"Piamatsina"},<br />
["ptt"] = {"Enrekang"},<br />
["ptu"] = {"Bambam"},<br />
["ptv"] = {"Port Vato"},<br />
["ptw"] = {"Pentlatch"},<br />
["pty"] = {"Pathiya"},<br />
["pua"] = {"Western Highland Purepecha"},<br />
["pub"] = {"Purum"},<br />
["puc"] = {"Punan Merap"},<br />
["pud"] = {"Punan Aput"},<br />
["pue"] = {"Puelche"},<br />
["puf"] = {"Punan Merah"},<br />
["pug"] = {"Phuie"},<br />
["pui"] = {"Puinave"},<br />
["puj"] = {"Punan Tubu"},<br />
["pum"] = {"Puma"},<br />
["puo"] = {"Puoc"},<br />
["pup"] = {"Pulabu"},<br />
["puq"] = {"Puquina"},<br />
["pur"] = {"Puruborá"},<br />
["put"] = {"Putoh"},<br />
["puu"] = {"Punu"},<br />
["puw"] = {"Puluwatese"},<br />
["pux"] = {"Puare"},<br />
["puy"] = {"Purisimeño"},<br />
["pwa"] = {"Pawaia"},<br />
["pwb"] = {"Panawa"},<br />
["pwg"] = {"Gapapaiwa"},<br />
["pwi"] = {"Patwin"},<br />
["pwm"] = {"Molbog"},<br />
["pwn"] = {"Paiwan"},<br />
["pwo"] = {"Pwo Western Karen"},<br />
["pwr"] = {"Powari"},<br />
["pww"] = {"Pwo Northern Karen"},<br />
["pxm"] = {"Quetzaltepec Mixe"},<br />
["pye"] = {"Pye Krumen"},<br />
["pym"] = {"Fyam"},<br />
["pyn"] = {"Poyanáwa"},<br />
["pys"] = {"Paraguayan Sign Language", "Lengua de Señas del Paraguay"},<br />
["pyu"] = {"Puyuma"},<br />
["pyx"] = {"Pyu (Myanmar)"},<br />
["pyy"] = {"Pyen"},<br />
["pzn"] = {"Para Naga"},<br />
["qua"] = {"Quapaw"},<br />
["qub"] = {"Huallaga Huánuco Quechua"},<br />
["quc"] = {"K'iche'", "Quiché"},<br />
["qud"] = {"Calderón Highland Quichua"},<br />
["quf"] = {"Lambayeque Quechua"},<br />
["qug"] = {"Chimborazo Highland Quichua"},<br />
["quh"] = {"South Bolivian Quechua"},<br />
["qui"] = {"Quileute"},<br />
["quk"] = {"Chachapoyas Quechua"},<br />
["qul"] = {"North Bolivian Quechua"},<br />
["qum"] = {"Sipacapense"},<br />
["qun"] = {"Quinault"},<br />
["qup"] = {"Southern Pastaza Quechua"},<br />
["quq"] = {"Quinqui"},<br />
["qur"] = {"Yanahuanca Pasco Quechua"},<br />
["qus"] = {"Santiago del Estero Quichua"},<br />
["quv"] = {"Sacapulteco"},<br />
["quw"] = {"Tena Lowland Quichua"},<br />
["qux"] = {"Yauyos Quechua"},<br />
["quy"] = {"Ayacucho Quechua"},<br />
["quz"] = {"Cusco Quechua"},<br />
["qva"] = {"Ambo-Pasco Quechua"},<br />
["qvc"] = {"Cajamarca Quechua"},<br />
["qve"] = {"Eastern Apurímac Quechua"},<br />
["qvh"] = {"Huamalíes-Dos de Mayo Huánuco Quechua"},<br />
["qvi"] = {"Imbabura Highland Quichua"},<br />
["qvj"] = {"Loja Highland Quichua"},<br />
["qvl"] = {"Cajatambo North Lima Quechua"},<br />
["qvm"] = {"Margos-Yarowilca-Lauricocha Quechua"},<br />
["qvn"] = {"North Junín Quechua"},<br />
["qvo"] = {"Napo Lowland Quechua"},<br />
["qvp"] = {"Pacaraos Quechua"},<br />
["qvs"] = {"San Martín Quechua"},<br />
["qvw"] = {"Huaylla Wanca Quechua"},<br />
["qvy"] = {"Queyu"},<br />
["qvz"] = {"Northern Pastaza Quichua"},<br />
["qwa"] = {"Corongo Ancash Quechua"},<br />
["qwc"] = {"Classical Quechua"},<br />
["qwe"] = {"Quechuan (family)"},<br />
["qwh"] = {"Huaylas Ancash Quechua"},<br />
["qwm"] = {"Kuman (Russia)"},<br />
["qws"] = {"Sihuas Ancash Quechua"},<br />
["qwt"] = {"Kwalhioqua-Tlatskanai"},<br />
["qxa"] = {"Chiquián Ancash Quechua"},<br />
["qxc"] = {"Chincha Quechua"},<br />
["qxh"] = {"Panao Huánuco Quechua"},<br />
["qxl"] = {"Salasaca Highland Quichua"},<br />
["qxn"] = {"Northern Conchucos Ancash Quechua"},<br />
["qxo"] = {"Southern Conchucos Ancash Quechua"},<br />
["qxp"] = {"Puno Quechua"},<br />
["qxq"] = {"Qashqa'i"},<br />
["qxr"] = {"Cañar Highland Quichua"},<br />
["qxs"] = {"Southern Qiang"},<br />
["qxt"] = {"Santa Ana de Tusi Pasco Quechua"},<br />
["qxu"] = {"Arequipa-La Unión Quechua"},<br />
["qxw"] = {"Jauja Wanca Quechua"},<br />
["qya"] = {"Quenya"},<br />
["qyp"] = {"Quiripi"},<br />
["raa"] = {"Dungmali"},<br />
["rab"] = {"Camling"},<br />
["rac"] = {"Rasawa"},<br />
["rad"] = {"Rade"},<br />
["raf"] = {"Western Meohang"},<br />
["rag"] = {"Logooli", "Lulogooli"},<br />
["rah"] = {"Rabha"},<br />
["rai"] = {"Ramoaaina"},<br />
["raj"] = {"Rajasthani"},<br />
["rak"] = {"Tulu-Bohuai"},<br />
["ral"] = {"Ralte"},<br />
["ram"] = {"Canela"},<br />
["ran"] = {"Riantana"},<br />
["rao"] = {"Rao"},<br />
["rap"] = {"Rapanui"},<br />
["raq"] = {"Saam"},<br />
["rar"] = {"Rarotongan", "Cook Islands Maori"},<br />
["ras"] = {"Tegali"},<br />
["rat"] = {"Razajerdi"},<br />
["rau"] = {"Raute"},<br />
["rav"] = {"Sampang"},<br />
["raw"] = {"Rawang"},<br />
["rax"] = {"Rang"},<br />
["ray"] = {"Rapa"},<br />
["raz"] = {"Rahambuu"},<br />
["rbb"] = {"Rumai Palaung"},<br />
["rbk"] = {"Northern Bontok"},<br />
["rbl"] = {"Miraya Bikol"},<br />
["rbp"] = {"Barababaraba"},<br />
["rcf"] = {"Réunion Creole French"},<br />
["rdb"] = {"Rudbari"},<br />
["rea"] = {"Rerau"},<br />
["reb"] = {"Rembong"},<br />
["ree"] = {"Rejang Kayan"},<br />
["reg"] = {"Kara (Tanzania)"},<br />
["rei"] = {"Reli"},<br />
["rej"] = {"Rejang"},<br />
["rel"] = {"Rendille"},<br />
["rem"] = {"Remo"},<br />
["ren"] = {"Rengao"},<br />
["rer"] = {"Rer Bare"},<br />
["res"] = {"Reshe"},<br />
["ret"] = {"Retta"},<br />
["rey"] = {"Reyesano"},<br />
["rga"] = {"Roria"},<br />
["rge"] = {"Romano-Greek"},<br />
["rgk"] = {"Rangkas"},<br />
["rgn"] = {"Romagnol"},<br />
["rgr"] = {"Resígaro"},<br />
["rgs"] = {"Southern Roglai"},<br />
["rgu"] = {"Ringgou"},<br />
["rhg"] = {"Rohingya"},<br />
["rhp"] = {"Yahang"},<br />
["ria"] = {"Riang (India)"},<br />
["rif"] = {"Tarifit"},<br />
["ril"] = {"Riang Lang", "Riang (Myanmar)"},<br />
["rim"] = {"Nyaturu"},<br />
["rin"] = {"Nungu"},<br />
["rir"] = {"Ribun"},<br />
["rit"] = {"Ritharrngu"},<br />
["riu"] = {"Riung"},<br />
["rjg"] = {"Rajong"},<br />
["rji"] = {"Raji"},<br />
["rjs"] = {"Rajbanshi"},<br />
["rka"] = {"Kraol"},<br />
["rkb"] = {"Rikbaktsa"},<br />
["rkh"] = {"Rakahanga-Manihiki"},<br />
["rki"] = {"Rakhine"},<br />
["rkm"] = {"Marka"},<br />
["rkt"] = {"Rangpuri", "Kamta"},<br />
["rkw"] = {"Arakwal"},<br />
["rma"] = {"Rama"},<br />
["rmb"] = {"Rembarrnga"},<br />
["rmc"] = {"Carpathian Romani"},<br />
["rmd"] = {"Traveller Danish"},<br />
["rme"] = {"Angloromani"},<br />
["rmf"] = {"Kalo Finnish Romani"},<br />
["rmg"] = {"Traveller Norwegian"},<br />
["rmh"] = {"Murkim"},<br />
["rmi"] = {"Lomavren"},<br />
["rmk"] = {"Romkun"},<br />
["rml"] = {"Baltic Romani"},<br />
["rmm"] = {"Roma"},<br />
["rmn"] = {"Balkan Romani"},<br />
["rmo"] = {"Sinte Romani"},<br />
["rmp"] = {"Rempi"},<br />
["rmq"] = {"Caló"},<br />
["rms"] = {"Romanian Sign Language"},<br />
["rmt"] = {"Domari"},<br />
["rmu"] = {"Tavringer Romani"},<br />
["rmv"] = {"Romanova"},<br />
["rmw"] = {"Welsh Romani"},<br />
["rmx"] = {"Romam"},<br />
["rmy"] = {"Vlax Romani"},<br />
["rmz"] = {"Marma"},<br />
["rnd"] = {"Ruund"},<br />
["rng"] = {"Ronga"},<br />
["rnl"] = {"Ranglong"},<br />
["rnn"] = {"Roon"},<br />
["rnp"] = {"Rongpo"},<br />
["rnr"] = {"Nari Nari"},<br />
["rnw"] = {"Rungwa"},<br />
["roa"] = {"Romance languages"},<br />
["rob"] = {"Tae'"},<br />
["roc"] = {"Cacgia Roglai"},<br />
["rod"] = {"Rogo"},<br />
["roe"] = {"Ronji"},<br />
["rof"] = {"Rombo"},<br />
["rog"] = {"Northern Roglai"},<br />
["rol"] = {"Romblomanon"},<br />
["rom"] = {"Romany"},<br />
["roo"] = {"Rotokas"},<br />
["rop"] = {"Kriol"},<br />
["ror"] = {"Rongga"},<br />
["rou"] = {"Runga"},<br />
["row"] = {"Dela-Oenale"},<br />
["rpn"] = {"Repanbitip"},<br />
["rpt"] = {"Rapting"},<br />
["rri"] = {"Ririo"},<br />
["rro"] = {"Waima"},<br />
["rrt"] = {"Arritinngithigh"},<br />
["rsb"] = {"Romano-Serbian"},<br />
["rsl"] = {"Russian Sign Language"},<br />
["rsm"] = {"Miriwoong Sign Language"},<br />
["rtc"] = {"Rungtu Chin"},<br />
["rth"] = {"Ratahan"},<br />
["rtm"] = {"Rotuman"},<br />
["rts"] = {"Yurats"},<br />
["rtw"] = {"Rathawi"},<br />
["rub"] = {"Gungu"},<br />
["ruc"] = {"Ruuli"},<br />
["rue"] = {"Rusyn"},<br />
["ruf"] = {"Luguru"},<br />
["rug"] = {"Roviana"},<br />
["ruh"] = {"Ruga"},<br />
["rui"] = {"Rufiji"},<br />
["ruk"] = {"Che"},<br />
["ruo"] = {"Istro Romanian"},<br />
["rup"] = {"Macedo-Romanian", "Aromanian", "Arumanian"},<br />
["ruq"] = {"Megleno Romanian"},<br />
["rut"] = {"Rutul"},<br />
["ruu"] = {"Lanas Lobu"},<br />
["ruy"] = {"Mala (Nigeria)"},<br />
["ruz"] = {"Ruma"},<br />
["rwa"] = {"Rawo"},<br />
["rwk"] = {"Rwa"},<br />
["rwl"] = {"Ruwila"},<br />
["rwm"] = {"Amba (Uganda)"},<br />
["rwo"] = {"Rawa"},<br />
["rwr"] = {"Marwari (India)"},<br />
["rxd"] = {"Ngardi"},<br />
["rxw"] = {"Karuwali", "Garuwali"},<br />
["ryn"] = {"Northern Amami-Oshima"},<br />
["rys"] = {"Yaeyama"},<br />
["ryu"] = {"Central Okinawan"},<br />
["rzh"] = {"Rāziḥī"},<br />
["saa"] = {"Saba"},<br />
["sab"] = {"Buglere"},<br />
["sac"] = {"Meskwaki"},<br />
["sad"] = {"Sandawe"},<br />
["sae"] = {"Sabanê"},<br />
["saf"] = {"Safaliba"},<br />
["sah"] = {"Yakut"},<br />
["sai"] = {"South American Indian languages"},<br />
["saj"] = {"Sahu"},<br />
["sak"] = {"Sake"},<br />
["sal"] = {"Salishan languages"},<br />
["sam"] = {"Samaritan Aramaic"},<br />
["sao"] = {"Sause"},<br />
["saq"] = {"Samburu"},<br />
["sar"] = {"Saraveca"},<br />
["sas"] = {"Sasak"},<br />
["sat"] = {"Santali"},<br />
["sau"] = {"Saleman"},<br />
["sav"] = {"Saafi-Saafi"},<br />
["saw"] = {"Sawi"},<br />
["sax"] = {"Sa"},<br />
["say"] = {"Saya"},<br />
["saz"] = {"Saurashtra"},<br />
["sba"] = {"Ngambay"},<br />
["sbb"] = {"Simbo"},<br />
["sbc"] = {"Kele (Papua New Guinea)"},<br />
["sbd"] = {"Southern Samo"},<br />
["sbe"] = {"Saliba"},<br />
["sbf"] = {"Chabu", "Shabo"},<br />
["sbg"] = {"Seget"},<br />
["sbh"] = {"Sori-Harengan"},<br />
["sbi"] = {"Seti"},<br />
["sbj"] = {"Surbakhal"},<br />
["sbk"] = {"Safwa"},<br />
["sbl"] = {"Botolan Sambal"},<br />
["sbm"] = {"Sagala"},<br />
["sbn"] = {"Sindhi Bhil"},<br />
["sbo"] = {"Sabüm"},<br />
["sbp"] = {"Sangu (Tanzania)"},<br />
["sbq"] = {"Sileibi"},<br />
["sbr"] = {"Sembakung Murut"},<br />
["sbs"] = {"Subiya"},<br />
["sbt"] = {"Kimki"},<br />
["sbu"] = {"Stod Bhoti"},<br />
["sbv"] = {"Sabine"},<br />
["sbw"] = {"Simba"},<br />
["sbx"] = {"Seberuang"},<br />
["sby"] = {"Soli"},<br />
["sbz"] = {"Sara Kaba"},<br />
["scb"] = {"Chut"},<br />
["sce"] = {"Dongxiang"},<br />
["scf"] = {"San Miguel Creole French"},<br />
["scg"] = {"Sanggau"},<br />
["sch"] = {"Sakachep"},<br />
["sci"] = {"Sri Lankan Creole Malay"},<br />
["sck"] = {"Sadri"},<br />
["scl"] = {"Shina"},<br />
["scn"] = {"Sicilian"},<br />
["sco"] = {"Scots"},<br />
["scp"] = {"Hyolmo", "Helambu Sherpa"},<br />
["scq"] = {"Sa'och"},<br />
["scs"] = {"North Slavey"},<br />
["sct"] = {"Southern Katang"},<br />
["scu"] = {"Shumcho"},<br />
["scv"] = {"Sheni"},<br />
["scw"] = {"Sha"},<br />
["scx"] = {"Sicel"},<br />
["sda"] = {"Toraja-Sa'dan"},<br />
["sdb"] = {"Shabak"},<br />
["sdc"] = {"Sassarese Sardinian"},<br />
["sde"] = {"Surubu"},<br />
["sdf"] = {"Sarli"},<br />
["sdg"] = {"Savi"},<br />
["sdh"] = {"Southern Kurdish"},<br />
["sdj"] = {"Suundi"},<br />
["sdk"] = {"Sos Kundi"},<br />
["sdl"] = {"Saudi Arabian Sign Language"},<br />
["sdn"] = {"Gallurese Sardinian"},<br />
["sdo"] = {"Bukar-Sadung Bidayuh"},<br />
["sdp"] = {"Sherdukpen"},<br />
["sdq"] = {"Semandang"},<br />
["sdr"] = {"Oraon Sadri"},<br />
["sds"] = {"Sened"},<br />
["sdt"] = {"Shuadit"},<br />
["sdu"] = {"Sarudu"},<br />
["sdv"] = {"Eastern Sudanic languages"},<br />
["sdx"] = {"Sibu Melanau"},<br />
["sdz"] = {"Sallands"},<br />
["sea"] = {"Semai"},<br />
["seb"] = {"Shempire Senoufo"},<br />
["sec"] = {"Sechelt"},<br />
["sed"] = {"Sedang"},<br />
["see"] = {"Seneca"},<br />
["sef"] = {"Cebaara Senoufo"},<br />
["seg"] = {"Segeju"},<br />
["seh"] = {"Sena"},<br />
["sei"] = {"Seri"},<br />
["sej"] = {"Sene"},<br />
["sek"] = {"Sekani"},<br />
["sel"] = {"Selkup"},<br />
["sem"] = {"Semitic languages"},<br />
["sen"] = {"Nanerigé Sénoufo"},<br />
["seo"] = {"Suarmin"},<br />
["sep"] = {"Sìcìté Sénoufo"},<br />
["seq"] = {"Senara Sénoufo"},<br />
["ser"] = {"Serrano"},<br />
["ses"] = {"Koyraboro Senni Songhai"},<br />
["set"] = {"Sentani"},<br />
["seu"] = {"Serui-Laut"},<br />
["sev"] = {"Nyarafolo Senoufo"},<br />
["sew"] = {"Sewa Bay"},<br />
["sey"] = {"Secoya"},<br />
["sez"] = {"Senthang Chin"},<br />
["sfb"] = {"Langue des signes de Belgique Francophone", "French Belgian Sign Language"},<br />
["sfe"] = {"Eastern Subanen"},<br />
["sfm"] = {"Small Flowery Miao"},<br />
["sfs"] = {"South African Sign Language"},<br />
["sfw"] = {"Sehwi"},<br />
["sga"] = {"Old Irish (to 900)"},<br />
["sgb"] = {"Mag-antsi Ayta"},<br />
["sgc"] = {"Kipsigis"},<br />
["sgd"] = {"Surigaonon"},<br />
["sge"] = {"Segai"},<br />
["sgg"] = {"Swiss-German Sign Language"},<br />
["sgh"] = {"Shughni"},<br />
["sgi"] = {"Suga"},<br />
["sgj"] = {"Surgujia"},<br />
["sgk"] = {"Sangkong"},<br />
["sgm"] = {"Singa"},<br />
["sgn"] = {"Sign languages"},<br />
["sgp"] = {"Singpho"},<br />
["sgr"] = {"Sangisari"},<br />
["sgs"] = {"Samogitian"},<br />
["sgt"] = {"Brokpake"},<br />
["sgu"] = {"Salas"},<br />
["sgw"] = {"Sebat Bet Gurage"},<br />
["sgx"] = {"Sierra Leone Sign Language"},<br />
["sgy"] = {"Sanglechi"},<br />
["sgz"] = {"Sursurunga"},<br />
["sha"] = {"Shall-Zwall"},<br />
["shb"] = {"Ninam"},<br />
["shc"] = {"Sonde"},<br />
["shd"] = {"Kundal Shahi"},<br />
["she"] = {"Sheko"},<br />
["shg"] = {"Shua"},<br />
["shh"] = {"Shoshoni"},<br />
["shi"] = {"Tachelhit"},<br />
["shj"] = {"Shatt"},<br />
["shk"] = {"Shilluk"},<br />
["shl"] = {"Shendu"},<br />
["shm"] = {"Shahrudi"},<br />
["shn"] = {"Shan"},<br />
["sho"] = {"Shanga"},<br />
["shp"] = {"Shipibo-Conibo"},<br />
["shq"] = {"Sala"},<br />
["shr"] = {"Shi"},<br />
["shs"] = {"Shuswap"},<br />
["sht"] = {"Shasta"},<br />
["shu"] = {"Chadian Arabic"},<br />
["shv"] = {"Shehri"},<br />
["shw"] = {"Shwai"},<br />
["shx"] = {"She"},<br />
["shy"] = {"Tachawit"},<br />
["shz"] = {"Syenara Senoufo"},<br />
["sia"] = {"Akkala Sami"},<br />
["sib"] = {"Sebop"},<br />
["sid"] = {"Sidamo"},<br />
["sie"] = {"Simaa"},<br />
["sif"] = {"Siamou"},<br />
["sig"] = {"Paasaal"},<br />
["sih"] = {"Zire", "Sîshëë"},<br />
["sii"] = {"Shom Peng"},<br />
["sij"] = {"Numbami"},<br />
["sik"] = {"Sikiana"},<br />
["sil"] = {"Tumulung Sisaala"},<br />
["sim"] = {"Mende (Papua New Guinea)"},<br />
["sio"] = {"Siouan languages"},<br />
["sip"] = {"Sikkimese"},<br />
["siq"] = {"Sonia"},<br />
["sir"] = {"Siri"},<br />
["sis"] = {"Siuslaw"},<br />
["sit"] = {"Sino-Tibetan languages"},<br />
["siu"] = {"Sinagen"},<br />
["siv"] = {"Sumariup"},<br />
["siw"] = {"Siwai"},<br />
["six"] = {"Sumau"},<br />
["siy"] = {"Sivandi"},<br />
["siz"] = {"Siwi"},<br />
["sja"] = {"Epena"},<br />
["sjb"] = {"Sajau Basap"},<br />
["sjd"] = {"Kildin Sami"},<br />
["sje"] = {"Pite Sami"},<br />
["sjg"] = {"Assangori"},<br />
["sjk"] = {"Kemi Sami"},<br />
["sjl"] = {"Sajalong", "Miji"},<br />
["sjm"] = {"Mapun"},<br />
["sjn"] = {"Sindarin"},<br />
["sjo"] = {"Xibe"},<br />
["sjp"] = {"Surjapuri"},<br />
["sjr"] = {"Siar-Lak"},<br />
["sjs"] = {"Senhaja De Srair"},<br />
["sjt"] = {"Ter Sami"},<br />
["sju"] = {"Ume Sami"},<br />
["sjw"] = {"Shawnee"},<br />
["ska"] = {"Skagit"},<br />
["skb"] = {"Saek"},<br />
["skc"] = {"Ma Manda"},<br />
["skd"] = {"Southern Sierra Miwok"},<br />
["ske"] = {"Seke (Vanuatu)"},<br />
["skf"] = {"Sakirabiá"},<br />
["skg"] = {"Sakalava Malagasy"},<br />
["skh"] = {"Sikule"},<br />
["ski"] = {"Sika"},<br />
["skj"] = {"Seke (Nepal)"},<br />
["skm"] = {"Kutong"},<br />
["skn"] = {"Kolibugan Subanon"},<br />
["sko"] = {"Seko Tengah"},<br />
["skp"] = {"Sekapan"},<br />
["skq"] = {"Sininkere"},<br />
["skr"] = {"Saraiki", "Seraiki"},<br />
["sks"] = {"Maia"},<br />
["skt"] = {"Sakata"},<br />
["sku"] = {"Sakao"},<br />
["skv"] = {"Skou"},<br />
["skw"] = {"Skepi Creole Dutch"},<br />
["skx"] = {"Seko Padang"},<br />
["sky"] = {"Sikaiana"},<br />
["skz"] = {"Sekar"},<br />
["sla"] = {"Slavic languages"},<br />
["slc"] = {"Sáliba"},<br />
["sld"] = {"Sissala"},<br />
["sle"] = {"Sholaga"},<br />
["slf"] = {"Swiss-Italian Sign Language"},<br />
["slg"] = {"Selungai Murut"},<br />
["slh"] = {"Southern Puget Sound Salish"},<br />
["sli"] = {"Lower Silesian"},<br />
["slj"] = {"Salumá"},<br />
["sll"] = {"Salt-Yui"},<br />
["slm"] = {"Pangutaran Sama"},<br />
["sln"] = {"Salinan"},<br />
["slp"] = {"Lamaholot"},<br />
["slq"] = {"Salchuq"},<br />
["slr"] = {"Salar"},<br />
["sls"] = {"Singapore Sign Language"},<br />
["slt"] = {"Sila"},<br />
["slu"] = {"Selaru"},<br />
["slw"] = {"Sialum"},<br />
["slx"] = {"Salampasu"},<br />
["sly"] = {"Selayar"},<br />
["slz"] = {"Ma'ya"},<br />
["sma"] = {"Southern Sami"},<br />
["smb"] = {"Simbari"},<br />
["smc"] = {"Som"},<br />
["smd"] = {"Sama"},<br />
["smf"] = {"Auwe"},<br />
["smg"] = {"Simbali"},<br />
["smh"] = {"Samei"},<br />
["smi"] = {"Sami languages"},<br />
["smj"] = {"Lule Sami"},<br />
["smk"] = {"Bolinao"},<br />
["sml"] = {"Central Sama"},<br />
["smm"] = {"Musasa"},<br />
["smn"] = {"Inari Sami"},<br />
["smp"] = {"Samaritan"},<br />
["smq"] = {"Samo"},<br />
["smr"] = {"Simeulue"},<br />
["sms"] = {"Skolt Sami"},<br />
["smt"] = {"Simte"},<br />
["smu"] = {"Somray"},<br />
["smv"] = {"Samvedi"},<br />
["smw"] = {"Sumbawa"},<br />
["smx"] = {"Samba"},<br />
["smy"] = {"Semnani"},<br />
["smz"] = {"Simeku"},<br />
["snb"] = {"Sebuyau"},<br />
["snc"] = {"Sinaugoro"},<br />
["sne"] = {"Bau Bidayuh"},<br />
["snf"] = {"Noon"},<br />
["sng"] = {"Sanga (Democratic Republic of Congo)"},<br />
["sni"] = {"Sensi"},<br />
["snj"] = {"Riverain Sango"},<br />
["snk"] = {"Soninke"},<br />
["snl"] = {"Sangil"},<br />
["snm"] = {"Southern Ma'di"},<br />
["snn"] = {"Siona"},<br />
["sno"] = {"Snohomish"},<br />
["snp"] = {"Siane"},<br />
["snq"] = {"Sangu (Gabon)"},<br />
["snr"] = {"Sihan"},<br />
["sns"] = {"South West Bay", "Nahavaq"},<br />
["snu"] = {"Senggi", "Viid"},<br />
["snv"] = {"Sa'ban"},<br />
["snw"] = {"Selee"},<br />
["snx"] = {"Sam"},<br />
["sny"] = {"Saniyo-Hiyewe"},<br />
["snz"] = {"Kou"},<br />
["soa"] = {"Thai Song"},<br />
["sob"] = {"Sobei"},<br />
["soc"] = {"So (Democratic Republic of Congo)"},<br />
["sod"] = {"Songoora"},<br />
["soe"] = {"Songomeno"},<br />
["sog"] = {"Sogdian"},<br />
["soh"] = {"Aka"},<br />
["soi"] = {"Sonha"},<br />
["soj"] = {"Soi"},<br />
["sok"] = {"Sokoro"},<br />
["sol"] = {"Solos"},<br />
["son"] = {"Songhai languages"},<br />
["soo"] = {"Songo"},<br />
["sop"] = {"Songe"},<br />
["soq"] = {"Kanasi"},<br />
["sor"] = {"Somrai"},<br />
["sos"] = {"Seeku"},<br />
["sou"] = {"Southern Thai"},<br />
["sov"] = {"Sonsorol"},<br />
["sow"] = {"Sowanda"},<br />
["sox"] = {"Swo"},<br />
["soy"] = {"Miyobe"},<br />
["soz"] = {"Temi"},<br />
["spb"] = {"Sepa (Indonesia)"},<br />
["spc"] = {"Sapé"},<br />
["spd"] = {"Saep"},<br />
["spe"] = {"Sepa (Papua New Guinea)"},<br />
["spg"] = {"Sian"},<br />
["spi"] = {"Saponi"},<br />
["spk"] = {"Sengo"},<br />
["spl"] = {"Selepet"},<br />
["spm"] = {"Akukem"},<br />
["spn"] = {"Sanapaná"},<br />
["spo"] = {"Spokane"},<br />
["spp"] = {"Supyire Senoufo"},<br />
["spq"] = {"Loreto-Ucayali Spanish"},<br />
["spr"] = {"Saparua"},<br />
["sps"] = {"Saposa"},<br />
["spt"] = {"Spiti Bhoti"},<br />
["spu"] = {"Sapuan"},<br />
["spv"] = {"Sambalpuri", "Kosli"},<br />
["spx"] = {"South Picene"},<br />
["spy"] = {"Sabaot"},<br />
["sqa"] = {"Shama-Sambuga"},<br />
["sqh"] = {"Shau"},<br />
["sqj"] = {"Albanian languages"},<br />
["sqk"] = {"Albanian Sign Language"},<br />
["sqm"] = {"Suma"},<br />
["sqn"] = {"Susquehannock"},<br />
["sqo"] = {"Sorkhei"},<br />
["sqq"] = {"Sou"},<br />
["sqr"] = {"Siculo Arabic"},<br />
["sqs"] = {"Sri Lankan Sign Language"},<br />
["sqt"] = {"Soqotri"},<br />
["squ"] = {"Squamish"},<br />
["sqx"] = {"Kufr Qassem Sign Language (KQSL)"},<br />
["sra"] = {"Saruga"},<br />
["srb"] = {"Sora"},<br />
["src"] = {"Logudorese Sardinian"},<br />
["sre"] = {"Sara"},<br />
["srf"] = {"Nafi"},<br />
["srg"] = {"Sulod"},<br />
["srh"] = {"Sarikoli"},<br />
["sri"] = {"Siriano"},<br />
["srk"] = {"Serudung Murut"},<br />
["srl"] = {"Isirawa"},<br />
["srm"] = {"Saramaccan"},<br />
["srn"] = {"Sranan Tongo"},<br />
["sro"] = {"Campidanese Sardinian"},<br />
["srq"] = {"Sirionó"},<br />
["srr"] = {"Serer"},<br />
["srs"] = {"Sarsi"},<br />
["srt"] = {"Sauri"},<br />
["sru"] = {"Suruí"},<br />
["srv"] = {"Southern Sorsoganon"},<br />
["srw"] = {"Serua"},<br />
["srx"] = {"Sirmauri"},<br />
["sry"] = {"Sera"},<br />
["srz"] = {"Shahmirzadi"},<br />
["ssa"] = {"Nilo-Saharan languages"},<br />
["ssb"] = {"Southern Sama"},<br />
["ssc"] = {"Suba-Simbiti"},<br />
["ssd"] = {"Siroi"},<br />
["sse"] = {"Balangingi", "Bangingih Sama"},<br />
["ssf"] = {"Thao"},<br />
["ssg"] = {"Seimat"},<br />
["ssh"] = {"Shihhi Arabic"},<br />
["ssi"] = {"Sansi"},<br />
["ssj"] = {"Sausi"},<br />
["ssk"] = {"Sunam"},<br />
["ssl"] = {"Western Sisaala"},<br />
["ssm"] = {"Semnam"},<br />
["ssn"] = {"Waata"},<br />
["sso"] = {"Sissano"},<br />
["ssp"] = {"Spanish Sign Language"},<br />
["ssq"] = {"So'a"},<br />
["ssr"] = {"Swiss-French Sign Language"},<br />
["sss"] = {"Sô"},<br />
["sst"] = {"Sinasina"},<br />
["ssu"] = {"Susuami"},<br />
["ssv"] = {"Shark Bay"},<br />
["ssx"] = {"Samberigi"},<br />
["ssy"] = {"Saho"},<br />
["ssz"] = {"Sengseng"},<br />
["sta"] = {"Settla"},<br />
["stb"] = {"Northern Subanen"},<br />
["std"] = {"Sentinel"},<br />
["ste"] = {"Liana-Seti"},<br />
["stf"] = {"Seta"},<br />
["stg"] = {"Trieng"},<br />
["sth"] = {"Shelta"},<br />
["sti"] = {"Bulo Stieng"},<br />
["stj"] = {"Matya Samo"},<br />
["stk"] = {"Arammba"},<br />
["stl"] = {"Stellingwerfs"},<br />
["stm"] = {"Setaman"},<br />
["stn"] = {"Owa"},<br />
["sto"] = {"Stoney"},<br />
["stp"] = {"Southeastern Tepehuan"},<br />
["stq"] = {"Saterfriesisch"},<br />
["str"] = {"Straits Salish"},<br />
["sts"] = {"Shumashti"},<br />
["stt"] = {"Budeh Stieng"},<br />
["stu"] = {"Samtao"},<br />
["stv"] = {"Silt'e"},<br />
["stw"] = {"Satawalese"},<br />
["sty"] = {"Siberian Tatar"},<br />
["sua"] = {"Sulka"},<br />
["sub"] = {"Suku"},<br />
["suc"] = {"Western Subanon"},<br />
["sue"] = {"Suena"},<br />
["sug"] = {"Suganga"},<br />
["sui"] = {"Suki"},<br />
["suj"] = {"Shubi"},<br />
["suk"] = {"Sukuma"},<br />
["suo"] = {"Bouni"},<br />
["suq"] = {"Tirmaga-Chai Suri", "Suri"},<br />
["sur"] = {"Mwaghavul"},<br />
["sus"] = {"Susu"},<br />
["sut"] = {"Subtiaba"},<br />
["suv"] = {"Puroik"},<br />
["suw"] = {"Sumbwa"},<br />
["sux"] = {"Sumerian"},<br />
["suy"] = {"Suyá"},<br />
["suz"] = {"Sunwar"},<br />
["sva"] = {"Svan"},<br />
["svb"] = {"Ulau-Suain"},<br />
["svc"] = {"Vincentian Creole English"},<br />
["sve"] = {"Serili"},<br />
["svk"] = {"Slovakian Sign Language"},<br />
["svm"] = {"Slavomolisano"},<br />
["svs"] = {"Savosavo"},<br />
["svx"] = {"Skalvian"},<br />
["swb"] = {"Maore Comorian"},<br />
["swc"] = {"Congo Swahili"},<br />
["swf"] = {"Sere"},<br />
["swg"] = {"Swabian"},<br />
["swh"] = {"Swahili (individual language)", "Kiswahili"},<br />
["swi"] = {"Sui"},<br />
["swj"] = {"Sira"},<br />
["swk"] = {"Malawi Sena"},<br />
["swl"] = {"Swedish Sign Language"},<br />
["swm"] = {"Samosa"},<br />
["swn"] = {"Sawknah"},<br />
["swo"] = {"Shanenawa"},<br />
["swp"] = {"Suau"},<br />
["swq"] = {"Sharwa"},<br />
["swr"] = {"Saweru"},<br />
["sws"] = {"Seluwasan"},<br />
["swt"] = {"Sawila"},<br />
["swu"] = {"Suwawa"},<br />
["swv"] = {"Shekhawati"},<br />
["sww"] = {"Sowa"},<br />
["swx"] = {"Suruahá"},<br />
["swy"] = {"Sarua"},<br />
["sxb"] = {"Suba"},<br />
["sxc"] = {"Sicanian"},<br />
["sxe"] = {"Sighu"},<br />
["sxg"] = {"Shuhi", "Shixing"},<br />
["sxk"] = {"Southern Kalapuya"},<br />
["sxl"] = {"Selian"},<br />
["sxm"] = {"Samre"},<br />
["sxn"] = {"Sangir"},<br />
["sxo"] = {"Sorothaptic"},<br />
["sxr"] = {"Saaroa"},<br />
["sxs"] = {"Sasaru"},<br />
["sxu"] = {"Upper Saxon"},<br />
["sxw"] = {"Saxwe Gbe"},<br />
["sya"] = {"Siang"},<br />
["syb"] = {"Central Subanen"},<br />
["syc"] = {"Classical Syriac"},<br />
["syd"] = {"Samoyedic languages"},<br />
["syi"] = {"Seki"},<br />
["syk"] = {"Sukur"},<br />
["syl"] = {"Sylheti"},<br />
["sym"] = {"Maya Samo"},<br />
["syn"] = {"Senaya"},<br />
["syo"] = {"Suoy"},<br />
["syr"] = {"Syriac"},<br />
["sys"] = {"Sinyar"},<br />
["syw"] = {"Kagate"},<br />
["syx"] = {"Samay"},<br />
["syy"] = {"Al-Sayyid Bedouin Sign Language"},<br />
["sza"] = {"Semelai"},<br />
["szb"] = {"Ngalum"},<br />
["szc"] = {"Semaq Beri"},<br />
["szd"] = {"Seru"},<br />
["sze"] = {"Seze"},<br />
["szg"] = {"Sengele"},<br />
["szl"] = {"Silesian"},<br />
["szn"] = {"Sula"},<br />
["szp"] = {"Suabo"},<br />
["szs"] = {"Solomon Islands Sign Language"},<br />
["szv"] = {"Isu (Fako Division)"},<br />
["szw"] = {"Sawai"},<br />
["szy"] = {"Sakizaya"},<br />
["taa"] = {"Lower Tanana"},<br />
["tab"] = {"Tabassaran"},<br />
["tac"] = {"Lowland Tarahumara"},<br />
["tad"] = {"Tause"},<br />
["tae"] = {"Tariana"},<br />
["taf"] = {"Tapirapé"},<br />
["tag"] = {"Tagoi"},<br />
["tai"] = {"Tai languages"},<br />
["taj"] = {"Eastern Tamang"},<br />
["tak"] = {"Tala"},<br />
["tal"] = {"Tal"},<br />
["tan"] = {"Tangale"},<br />
["tao"] = {"Yami"},<br />
["tap"] = {"Taabwa"},<br />
["taq"] = {"Tamasheq"},<br />
["tar"] = {"Central Tarahumara"},<br />
["tas"] = {"Tay Boi"},<br />
["tau"] = {"Upper Tanana"},<br />
["tav"] = {"Tatuyo"},<br />
["taw"] = {"Tai"},<br />
["tax"] = {"Tamki"},<br />
["tay"] = {"Atayal"},<br />
["taz"] = {"Tocho"},<br />
["tba"] = {"Aikanã"},<br />
["tbc"] = {"Takia"},<br />
["tbd"] = {"Kaki Ae"},<br />
["tbe"] = {"Tanimbili"},<br />
["tbf"] = {"Mandara"},<br />
["tbg"] = {"North Tairora"},<br />
["tbh"] = {"Dharawal", "Thurawal"},<br />
["tbi"] = {"Gaam"},<br />
["tbj"] = {"Tiang"},<br />
["tbk"] = {"Calamian Tagbanwa"},<br />
["tbl"] = {"Tboli"},<br />
["tbm"] = {"Tagbu"},<br />
["tbn"] = {"Barro Negro Tunebo"},<br />
["tbo"] = {"Tawala"},<br />
["tbp"] = {"Taworta", "Diebroud"},<br />
["tbq"] = {"Tibeto-Burman languages"},<br />
["tbr"] = {"Tumtum"},<br />
["tbs"] = {"Tanguat"},<br />
["tbt"] = {"Tembo (Kitembo)"},<br />
["tbu"] = {"Tubar"},<br />
["tbv"] = {"Tobo"},<br />
["tbw"] = {"Tagbanwa"},<br />
["tbx"] = {"Kapin"},<br />
["tby"] = {"Tabaru"},<br />
["tbz"] = {"Ditammari"},<br />
["tca"] = {"Ticuna"},<br />
["tcb"] = {"Tanacross"},<br />
["tcc"] = {"Datooga"},<br />
["tcd"] = {"Tafi"},<br />
["tce"] = {"Southern Tutchone"},<br />
["tcf"] = {"Malinaltepec Me'phaa", "Malinaltepec Tlapanec"},<br />
["tcg"] = {"Tamagario"},<br />
["tch"] = {"Turks And Caicos Creole English"},<br />
["tci"] = {"Wára"},<br />
["tck"] = {"Tchitchege"},<br />
["tcl"] = {"Taman (Myanmar)"},<br />
["tcm"] = {"Tanahmerah"},<br />
["tcn"] = {"Tichurong"},<br />
["tco"] = {"Taungyo"},<br />
["tcp"] = {"Tawr Chin"},<br />
["tcq"] = {"Kaiy"},<br />
["tcs"] = {"Torres Strait Creole", "Yumplatok"},<br />
["tct"] = {"T'en"},<br />
["tcu"] = {"Southeastern Tarahumara"},<br />
["tcw"] = {"Tecpatlán Totonac"},<br />
["tcx"] = {"Toda"},<br />
["tcy"] = {"Tulu"},<br />
["tcz"] = {"Thado Chin"},<br />
["tda"] = {"Tagdal"},<br />
["tdb"] = {"Panchpargania"},<br />
["tdc"] = {"Emberá-Tadó"},<br />
["tdd"] = {"Tai Nüa"},<br />
["tde"] = {"Tiranige Diga Dogon"},<br />
["tdf"] = {"Talieng"},<br />
["tdg"] = {"Western Tamang"},<br />
["tdh"] = {"Thulung"},<br />
["tdi"] = {"Tomadino"},<br />
["tdj"] = {"Tajio"},<br />
["tdk"] = {"Tambas"},<br />
["tdl"] = {"Sur"},<br />
["tdm"] = {"Taruma"},<br />
["tdn"] = {"Tondano"},<br />
["tdo"] = {"Teme"},<br />
["tdq"] = {"Tita"},<br />
["tdr"] = {"Todrah"},<br />
["tds"] = {"Doutai"},<br />
["tdt"] = {"Tetun Dili"},<br />
["tdv"] = {"Toro"},<br />
["tdx"] = {"Tandroy-Mahafaly Malagasy"},<br />
["tdy"] = {"Tadyawan"},<br />
["tea"] = {"Temiar"},<br />
["teb"] = {"Tetete"},<br />
["tec"] = {"Terik"},<br />
["ted"] = {"Tepo Krumen"},<br />
["tee"] = {"Huehuetla Tepehua"},<br />
["tef"] = {"Teressa"},<br />
["teg"] = {"Teke-Tege"},<br />
["teh"] = {"Tehuelche"},<br />
["tei"] = {"Torricelli"},<br />
["tek"] = {"Ibali Teke"},<br />
["tem"] = {"Timne"},<br />
["ten"] = {"Tama (Colombia)"},<br />
["teo"] = {"Teso"},<br />
["tep"] = {"Tepecano"},<br />
["teq"] = {"Temein"},<br />
["ter"] = {"Tereno"},<br />
["tes"] = {"Tengger"},<br />
["tet"] = {"Tetum"},<br />
["teu"] = {"Soo"},<br />
["tev"] = {"Teor"},<br />
["tew"] = {"Tewa (USA)"},<br />
["tex"] = {"Tennet"},<br />
["tey"] = {"Tulishi"},<br />
["tez"] = {"Tetserret"},<br />
["tfi"] = {"Tofin Gbe"},<br />
["tfn"] = {"Tanaina"},<br />
["tfo"] = {"Tefaro"},<br />
["tfr"] = {"Teribe"},<br />
["tft"] = {"Ternate"},<br />
["tga"] = {"Sagalla"},<br />
["tgb"] = {"Tobilung"},<br />
["tgc"] = {"Tigak"},<br />
["tgd"] = {"Ciwogai"},<br />
["tge"] = {"Eastern Gorkha Tamang"},<br />
["tgf"] = {"Chalikha"},<br />
["tgh"] = {"Tobagonian Creole English"},<br />
["tgi"] = {"Lawunuia"},<br />
["tgj"] = {"Tagin"},<br />
["tgn"] = {"Tandaganon"},<br />
["tgo"] = {"Sudest"},<br />
["tgp"] = {"Tangoa"},<br />
["tgq"] = {"Tring"},<br />
["tgr"] = {"Tareng"},<br />
["tgs"] = {"Nume"},<br />
["tgt"] = {"Central Tagbanwa"},<br />
["tgu"] = {"Tanggu"},<br />
["tgv"] = {"Tingui-Boto"},<br />
["tgw"] = {"Tagwana Senoufo"},<br />
["tgx"] = {"Tagish"},<br />
["tgy"] = {"Togoyo"},<br />
["tgz"] = {"Tagalaka"},<br />
["thd"] = {"Kuuk Thaayorre", "Thayore"},<br />
["the"] = {"Chitwania Tharu"},<br />
["thf"] = {"Thangmi"},<br />
["thh"] = {"Northern Tarahumara"},<br />
["thi"] = {"Tai Long"},<br />
["thk"] = {"Tharaka", "Kitharaka"},<br />
["thl"] = {"Dangaura Tharu"},<br />
["thm"] = {"Aheu"},<br />
["thn"] = {"Thachanadan"},<br />
["thp"] = {"Thompson"},<br />
["thq"] = {"Kochila Tharu"},<br />
["thr"] = {"Rana Tharu"},<br />
["ths"] = {"Thakali"},<br />
["tht"] = {"Tahltan"},<br />
["thu"] = {"Thuri"},<br />
["thv"] = {"Tahaggart Tamahaq"},<br />
["thy"] = {"Tha"},<br />
["thz"] = {"Tayart Tamajeq"},<br />
["tia"] = {"Tidikelt Tamazight"},<br />
["tic"] = {"Tira"},<br />
["tif"] = {"Tifal"},<br />
["tig"] = {"Tigre"},<br />
["tih"] = {"Timugon Murut"},<br />
["tii"] = {"Tiene"},<br />
["tij"] = {"Tilung"},<br />
["tik"] = {"Tikar"},<br />
["til"] = {"Tillamook"},<br />
["tim"] = {"Timbe"},<br />
["tin"] = {"Tindi"},<br />
["tio"] = {"Teop"},<br />
["tip"] = {"Trimuris"},<br />
["tiq"] = {"Tiéfo"},<br />
["tis"] = {"Masadiit Itneg"},<br />
["tit"] = {"Tinigua"},<br />
["tiu"] = {"Adasen"},<br />
["tiv"] = {"Tiv"},<br />
["tiw"] = {"Tiwi"},<br />
["tix"] = {"Southern Tiwa"},<br />
["tiy"] = {"Tiruray"},<br />
["tiz"] = {"Tai Hongjin"},<br />
["tja"] = {"Tajuasohn"},<br />
["tjg"] = {"Tunjung"},<br />
["tji"] = {"Northern Tujia"},<br />
["tjj"] = {"Tjungundji"},<br />
["tjl"] = {"Tai Laing"},<br />
["tjm"] = {"Timucua"},<br />
["tjn"] = {"Tonjon"},<br />
["tjo"] = {"Temacine Tamazight"},<br />
["tjp"] = {"Tjupany"},<br />
["tjs"] = {"Southern Tujia"},<br />
["tju"] = {"Tjurruru"},<br />
["tjw"] = {"Djabwurrung"},<br />
["tka"] = {"Truká"},<br />
["tkb"] = {"Buksa"},<br />
["tkd"] = {"Tukudede"},<br />
["tke"] = {"Takwane"},<br />
["tkf"] = {"Tukumanféd"},<br />
["tkg"] = {"Tesaka Malagasy"},<br />
["tkl"] = {"Tokelau"},<br />
["tkm"] = {"Takelma"},<br />
["tkn"] = {"Toku-No-Shima"},<br />
["tkp"] = {"Tikopia"},<br />
["tkq"] = {"Tee"},<br />
["tkr"] = {"Tsakhur"},<br />
["tks"] = {"Takestani"},<br />
["tkt"] = {"Kathoriya Tharu"},<br />
["tku"] = {"Upper Necaxa Totonac"},<br />
["tkv"] = {"Mur Pano"},<br />
["tkw"] = {"Teanu"},<br />
["tkx"] = {"Tangko"},<br />
["tkz"] = {"Takua"},<br />
["tla"] = {"Southwestern Tepehuan"},<br />
["tlb"] = {"Tobelo"},<br />
["tlc"] = {"Yecuatla Totonac"},<br />
["tld"] = {"Talaud"},<br />
["tlf"] = {"Telefol"},<br />
["tlg"] = {"Tofanma"},<br />
["tlh"] = {"Klingon", "tlhIngan Hol"},<br />
["tli"] = {"Tlingit"},<br />
["tlj"] = {"Talinga-Bwisi"},<br />
["tlk"] = {"Taloki"},<br />
["tll"] = {"Tetela"},<br />
["tlm"] = {"Tolomako"},<br />
["tln"] = {"Talondo'"},<br />
["tlo"] = {"Talodi"},<br />
["tlp"] = {"Filomena Mata-Coahuitlán Totonac"},<br />
["tlq"] = {"Tai Loi"},<br />
["tlr"] = {"Talise"},<br />
["tls"] = {"Tambotalo"},<br />
["tlt"] = {"Sou Nama", "Teluti"},<br />
["tlu"] = {"Tulehu"},<br />
["tlv"] = {"Taliabu"},<br />
["tlx"] = {"Khehek"},<br />
["tly"] = {"Talysh"},<br />
["tma"] = {"Tama (Chad)"},<br />
["tmb"] = {"Katbol", "Avava"},<br />
["tmc"] = {"Tumak"},<br />
["tmd"] = {"Haruai"},<br />
["tme"] = {"Tremembé"},<br />
["tmf"] = {"Toba-Maskoy"},<br />
["tmg"] = {"Ternateño"},<br />
["tmh"] = {"Tamashek"},<br />
["tmi"] = {"Tutuba"},<br />
["tmj"] = {"Samarokena"},<br />
["tmk"] = {"Northwestern Tamang"},<br />
["tml"] = {"Tamnim Citak"},<br />
["tmm"] = {"Tai Thanh"},<br />
["tmn"] = {"Taman (Indonesia)"},<br />
["tmo"] = {"Temoq"},<br />
["tmq"] = {"Tumleo"},<br />
["tmr"] = {"Jewish Babylonian Aramaic (ca. 200-1200 CE)"},<br />
["tms"] = {"Tima"},<br />
["tmt"] = {"Tasmate"},<br />
["tmu"] = {"Iau"},<br />
["tmv"] = {"Tembo (Motembo)"},<br />
["tmw"] = {"Temuan"},<br />
["tmy"] = {"Tami"},<br />
["tmz"] = {"Tamanaku"},<br />
["tna"] = {"Tacana"},<br />
["tnb"] = {"Western Tunebo"},<br />
["tnc"] = {"Tanimuca-Retuarã"},<br />
["tnd"] = {"Angosturas Tunebo"},<br />
["tng"] = {"Tobanga"},<br />
["tnh"] = {"Maiani"},<br />
["tni"] = {"Tandia"},<br />
["tnk"] = {"Kwamera"},<br />
["tnl"] = {"Lenakel"},<br />
["tnm"] = {"Tabla"},<br />
["tnn"] = {"North Tanna"},<br />
["tno"] = {"Toromono"},<br />
["tnp"] = {"Whitesands"},<br />
["tnq"] = {"Taino"},<br />
["tnr"] = {"Ménik"},<br />
["tns"] = {"Tenis"},<br />
["tnt"] = {"Tontemboan"},<br />
["tnu"] = {"Tay Khang"},<br />
["tnv"] = {"Tangchangya"},<br />
["tnw"] = {"Tonsawang"},<br />
["tnx"] = {"Tanema"},<br />
["tny"] = {"Tongwe"},<br />
["tnz"] = {"Ten'edn"},<br />
["tob"] = {"Toba"},<br />
["toc"] = {"Coyutla Totonac"},<br />
["tod"] = {"Toma"},<br />
["tof"] = {"Gizrra"},<br />
["tog"] = {"Tonga (Nyasa)"},<br />
["toh"] = {"Gitonga"},<br />
["toi"] = {"Tonga (Zambia)"},<br />
["toj"] = {"Tojolabal"},<br />
["tol"] = {"Tolowa"},<br />
["tom"] = {"Tombulu"},<br />
["too"] = {"Xicotepec De Juárez Totonac"},<br />
["top"] = {"Papantla Totonac"},<br />
["toq"] = {"Toposa"},<br />
["tor"] = {"Togbo-Vara Banda"},<br />
["tos"] = {"Highland Totonac"},<br />
["tou"] = {"Tho"},<br />
["tov"] = {"Upper Taromi"},<br />
["tow"] = {"Jemez"},<br />
["tox"] = {"Tobian"},<br />
["toy"] = {"Topoiyo"},<br />
["toz"] = {"To"},<br />
["tpa"] = {"Taupota"},<br />
["tpc"] = {"Azoyú Me'phaa", "Azoyú Tlapanec"},<br />
["tpe"] = {"Tippera"},<br />
["tpf"] = {"Tarpia"},<br />
["tpg"] = {"Kula"},<br />
["tpi"] = {"Tok Pisin"},<br />
["tpj"] = {"Tapieté"},<br />
["tpk"] = {"Tupinikin"},<br />
["tpl"] = {"Tlacoapa Me'phaa", "Tlacoapa Tlapanec"},<br />
["tpm"] = {"Tampulma"},<br />
["tpn"] = {"Tupinambá"},<br />
["tpo"] = {"Tai Pao"},<br />
["tpp"] = {"Pisaflores Tepehua"},<br />
["tpq"] = {"Tukpa"},<br />
["tpr"] = {"Tuparí"},<br />
["tpt"] = {"Tlachichilco Tepehua"},<br />
["tpu"] = {"Tampuan"},<br />
["tpv"] = {"Tanapag"},<br />
["tpw"] = {"Tupí"},<br />
["tpx"] = {"Acatepec Me'phaa", "Acatepec Tlapanec"},<br />
["tpy"] = {"Trumai"},<br />
["tpz"] = {"Tinputz"},<br />
["tqb"] = {"Tembé"},<br />
["tql"] = {"Lehali"},<br />
["tqm"] = {"Turumsa"},<br />
["tqn"] = {"Tenino"},<br />
["tqo"] = {"Toaripi"},<br />
["tqp"] = {"Tomoip"},<br />
["tqq"] = {"Tunni"},<br />
["tqr"] = {"Torona"},<br />
["tqt"] = {"Western Totonac"},<br />
["tqu"] = {"Touo"},<br />
["tqw"] = {"Tonkawa"},<br />
["tra"] = {"Tirahi"},<br />
["trb"] = {"Terebu"},<br />
["trc"] = {"Copala Triqui"},<br />
["trd"] = {"Turi"},<br />
["tre"] = {"East Tarangan"},<br />
["trf"] = {"Trinidadian Creole English"},<br />
["trg"] = {"Lishán Didán"},<br />
["trh"] = {"Turaka"},<br />
["tri"] = {"Trió"},<br />
["trj"] = {"Toram"},<br />
["trk"] = {"Turkic languages"},<br />
["trl"] = {"Traveller Scottish"},<br />
["trm"] = {"Tregami"},<br />
["trn"] = {"Trinitario"},<br />
["tro"] = {"Tarao Naga"},<br />
["trp"] = {"Kok Borok"},<br />
["trq"] = {"San Martín Itunyoso Triqui"},<br />
["trr"] = {"Taushiro"},<br />
["trs"] = {"Chicahuaxtla Triqui"},<br />
["trt"] = {"Tunggare"},<br />
["tru"] = {"Turoyo", "Surayt"},<br />
["trv"] = {"Taroko"},<br />
["trw"] = {"Torwali"},<br />
["trx"] = {"Tringgus-Sembaan Bidayuh"},<br />
["try"] = {"Turung"},<br />
["trz"] = {"Torá"},<br />
["tsa"] = {"Tsaangi"},<br />
["tsb"] = {"Tsamai"},<br />
["tsc"] = {"Tswa"},<br />
["tsd"] = {"Tsakonian"},<br />
["tse"] = {"Tunisian Sign Language"},<br />
["tsg"] = {"Tausug"},<br />
["tsh"] = {"Tsuvan"},<br />
["tsi"] = {"Tsimshian"},<br />
["tsj"] = {"Tshangla"},<br />
["tsk"] = {"Tseku"},<br />
["tsl"] = {"Ts'ün-Lao"},<br />
["tsm"] = {"Turkish Sign Language", "Türk İşaret Dili"},<br />
["tsp"] = {"Northern Toussian"},<br />
["tsq"] = {"Thai Sign Language"},<br />
["tsr"] = {"Akei"},<br />
["tss"] = {"Taiwan Sign Language"},<br />
["tst"] = {"Tondi Songway Kiini"},<br />
["tsu"] = {"Tsou"},<br />
["tsv"] = {"Tsogo"},<br />
["tsw"] = {"Tsishingini"},<br />
["tsx"] = {"Mubami"},<br />
["tsy"] = {"Tebul Sign Language"},<br />
["tsz"] = {"Purepecha"},<br />
["tta"] = {"Tutelo"},<br />
["ttb"] = {"Gaa"},<br />
["ttc"] = {"Tektiteko"},<br />
["ttd"] = {"Tauade"},<br />
["tte"] = {"Bwanabwana"},<br />
["ttf"] = {"Tuotomb"},<br />
["ttg"] = {"Tutong"},<br />
["tth"] = {"Upper Ta'oih"},<br />
["tti"] = {"Tobati"},<br />
["ttj"] = {"Tooro"},<br />
["ttk"] = {"Totoro"},<br />
["ttl"] = {"Totela"},<br />
["ttm"] = {"Northern Tutchone"},<br />
["ttn"] = {"Towei"},<br />
["tto"] = {"Lower Ta'oih"},<br />
["ttp"] = {"Tombelala"},<br />
["ttq"] = {"Tawallammat Tamajaq"},<br />
["ttr"] = {"Tera"},<br />
["tts"] = {"Northeastern Thai"},<br />
["ttt"] = {"Muslim Tat"},<br />
["ttu"] = {"Torau"},<br />
["ttv"] = {"Titan"},<br />
["ttw"] = {"Long Wat"},<br />
["tty"] = {"Sikaritai"},<br />
["ttz"] = {"Tsum"},<br />
["tua"] = {"Wiarumus"},<br />
["tub"] = {"Tübatulabal"},<br />
["tuc"] = {"Mutu"},<br />
["tud"] = {"Tuxá"},<br />
["tue"] = {"Tuyuca"},<br />
["tuf"] = {"Central Tunebo"},<br />
["tug"] = {"Tunia"},<br />
["tuh"] = {"Taulil"},<br />
["tui"] = {"Tupuri"},<br />
["tuj"] = {"Tugutil"},<br />
["tul"] = {"Tula"},<br />
["tum"] = {"Tumbuka"},<br />
["tun"] = {"Tunica"},<br />
["tuo"] = {"Tucano"},<br />
["tup"] = {"Tupi languages"},<br />
["tuq"] = {"Tedaga"},<br />
["tus"] = {"Tuscarora"},<br />
["tut"] = {"Altaic languages"},<br />
["tuu"] = {"Tututni"},<br />
["tuv"] = {"Turkana"},<br />
["tuw"] = {"Tungus languages"},<br />
["tux"] = {"Tuxináwa"},<br />
["tuy"] = {"Tugen"},<br />
["tuz"] = {"Turka"},<br />
["tva"] = {"Vaghua"},<br />
["tvd"] = {"Tsuvadi"},<br />
["tve"] = {"Te'un"},<br />
["tvk"] = {"Southeast Ambrym"},<br />
["tvl"] = {"Tuvalu"},<br />
["tvm"] = {"Tela-Masbuar"},<br />
["tvn"] = {"Tavoyan"},<br />
["tvo"] = {"Tidore"},<br />
["tvs"] = {"Taveta"},<br />
["tvt"] = {"Tutsa Naga"},<br />
["tvu"] = {"Tunen"},<br />
["tvw"] = {"Sedoa"},<br />
["tvx"] = {"Taivoan"},<br />
["tvy"] = {"Timor Pidgin"},<br />
["twa"] = {"Twana"},<br />
["twb"] = {"Western Tawbuid"},<br />
["twc"] = {"Teshenawa"},<br />
["twd"] = {"Twents"},<br />
["twe"] = {"Tewa (Indonesia)"},<br />
["twf"] = {"Northern Tiwa"},<br />
["twg"] = {"Tereweng"},<br />
["twh"] = {"Tai Dón"},<br />
["twl"] = {"Tawara"},<br />
["twm"] = {"Tawang Monpa"},<br />
["twn"] = {"Twendi"},<br />
["two"] = {"Tswapong"},<br />
["twp"] = {"Ere"},<br />
["twq"] = {"Tasawaq"},<br />
["twr"] = {"Southwestern Tarahumara"},<br />
["twt"] = {"Turiwára"},<br />
["twu"] = {"Termanu"},<br />
["tww"] = {"Tuwari"},<br />
["twx"] = {"Tewe"},<br />
["twy"] = {"Tawoyan"},<br />
["txa"] = {"Tombonuo"},<br />
["txb"] = {"Tokharian B"},<br />
["txc"] = {"Tsetsaut"},<br />
["txe"] = {"Totoli"},<br />
["txg"] = {"Tangut"},<br />
["txh"] = {"Thracian"},<br />
["txi"] = {"Ikpeng"},<br />
["txj"] = {"Tarjumo"},<br />
["txm"] = {"Tomini"},<br />
["txn"] = {"West Tarangan"},<br />
["txo"] = {"Toto"},<br />
["txq"] = {"Tii"},<br />
["txr"] = {"Tartessian"},<br />
["txs"] = {"Tonsea"},<br />
["txt"] = {"Citak"},<br />
["txu"] = {"Kayapó"},<br />
["txx"] = {"Tatana"},<br />
["txy"] = {"Tanosy Malagasy"},<br />
["tya"] = {"Tauya"},<br />
["tye"] = {"Kyanga"},<br />
["tyh"] = {"O'du"},<br />
["tyi"] = {"Teke-Tsaayi"},<br />
["tyj"] = {"Tai Do", "Tai Yo"},<br />
["tyl"] = {"Thu Lao"},<br />
["tyn"] = {"Kombai"},<br />
["typ"] = {"Thaypan"},<br />
["tyr"] = {"Tai Daeng"},<br />
["tys"] = {"Tày Sa Pa"},<br />
["tyt"] = {"Tày Tac"},<br />
["tyu"] = {"Kua"},<br />
["tyv"] = {"Tuvinian"},<br />
["tyx"] = {"Teke-Tyee"},<br />
["tyy"] = {"Tiyaa"},<br />
["tyz"] = {"Tày"},<br />
["tza"] = {"Tanzanian Sign Language"},<br />
["tzh"] = {"Tzeltal"},<br />
["tzj"] = {"Tz'utujil"},<br />
["tzl"] = {"Talossan"},<br />
["tzm"] = {"Central Atlas Tamazight"},<br />
["tzn"] = {"Tugun"},<br />
["tzo"] = {"Tzotzil"},<br />
["tzx"] = {"Tabriak"},<br />
["uam"] = {"Uamué"},<br />
["uan"] = {"Kuan"},<br />
["uar"] = {"Tairuma"},<br />
["uba"] = {"Ubang"},<br />
["ubi"] = {"Ubi"},<br />
["ubl"] = {"Buhi'non Bikol"},<br />
["ubr"] = {"Ubir"},<br />
["ubu"] = {"Umbu-Ungu"},<br />
["uby"] = {"Ubykh"},<br />
["uda"] = {"Uda"},<br />
["ude"] = {"Udihe"},<br />
["udg"] = {"Muduga"},<br />
["udi"] = {"Udi"},<br />
["udj"] = {"Ujir"},<br />
["udl"] = {"Wuzlam"},<br />
["udm"] = {"Udmurt"},<br />
["udu"] = {"Uduk"},<br />
["ues"] = {"Kioko"},<br />
["ufi"] = {"Ufim"},<br />
["uga"] = {"Ugaritic"},<br />
["ugb"] = {"Kuku-Ugbanh"},<br />
["uge"] = {"Ughele"},<br />
["ugn"] = {"Ugandan Sign Language"},<br />
["ugo"] = {"Ugong"},<br />
["ugy"] = {"Uruguayan Sign Language"},<br />
["uha"] = {"Uhami"},<br />
["uhn"] = {"Damal"},<br />
["uis"] = {"Uisai"},<br />
["uiv"] = {"Iyive"},<br />
["uji"] = {"Tanjijili"},<br />
["uka"] = {"Kaburi"},<br />
["ukg"] = {"Ukuriguma"},<br />
["ukh"] = {"Ukhwejo"},<br />
["uki"] = {"Kui (India)"},<br />
["ukk"] = {"Muak Sa-aak"},<br />
["ukl"] = {"Ukrainian Sign Language"},<br />
["ukp"] = {"Ukpe-Bayobiri"},<br />
["ukq"] = {"Ukwa"},<br />
["uks"] = {"Urubú-Kaapor Sign Language", "Kaapor Sign Language"},<br />
["uku"] = {"Ukue"},<br />
["ukv"] = {"Kuku"},<br />
["ukw"] = {"Ukwuani-Aboh-Ndoni"},<br />
["uky"] = {"Kuuk-Yak"},<br />
["ula"] = {"Fungwa"},<br />
["ulb"] = {"Ulukwumi"},<br />
["ulc"] = {"Ulch"},<br />
["ule"] = {"Lule"},<br />
["ulf"] = {"Usku", "Afra"},<br />
["uli"] = {"Ulithian"},<br />
["ulk"] = {"Meriam Mir"},<br />
["ull"] = {"Ullatan"},<br />
["ulm"] = {"Ulumanda'"},<br />
["uln"] = {"Unserdeutsch"},<br />
["ulu"] = {"Uma' Lung"},<br />
["ulw"] = {"Ulwa"},<br />
["uma"] = {"Umatilla"},<br />
["umb"] = {"Umbundu"},<br />
["umc"] = {"Marrucinian"},<br />
["umd"] = {"Umbindhamu"},<br />
["umg"] = {"Morrobalama", "Umbuygamu"},<br />
["umi"] = {"Ukit"},<br />
["umm"] = {"Umon"},<br />
["umn"] = {"Makyan Naga"},<br />
["umo"] = {"Umotína"},<br />
["ump"] = {"Umpila"},<br />
["umr"] = {"Umbugarla"},<br />
["ums"] = {"Pendau"},<br />
["umu"] = {"Munsee"},<br />
["una"] = {"North Watut"},<br />
["und"] = {"Undetermined"},<br />
["une"] = {"Uneme"},<br />
["ung"] = {"Ngarinyin"},<br />
["uni"] = {"Uni"},<br />
["unk"] = {"Enawené-Nawé"},<br />
["unm"] = {"Unami"},<br />
["unn"] = {"Kurnai"},<br />
["unr"] = {"Mundari"},<br />
["unu"] = {"Unubahe"},<br />
["unx"] = {"Munda"},<br />
["unz"] = {"Unde Kaili"},<br />
["upi"] = {"Umeda"},<br />
["upv"] = {"Uripiv-Wala-Rano-Atchin"},<br />
["ura"] = {"Urarina"},<br />
["urb"] = {"Urubú-Kaapor", "Kaapor"},<br />
["urc"] = {"Urningangg"},<br />
["ure"] = {"Uru"},<br />
["urf"] = {"Uradhi"},<br />
["urg"] = {"Urigina"},<br />
["urh"] = {"Urhobo"},<br />
["uri"] = {"Urim"},<br />
["urj"] = {"Uralic languages"},<br />
["urk"] = {"Urak Lawoi'"},<br />
["url"] = {"Urali"},<br />
["urm"] = {"Urapmin"},<br />
["urn"] = {"Uruangnirin"},<br />
["uro"] = {"Ura (Papua New Guinea)"},<br />
["urp"] = {"Uru-Pa-In"},<br />
["urr"] = {"Lehalurup", "Löyöp"},<br />
["urt"] = {"Urat"},<br />
["uru"] = {"Urumi"},<br />
["urv"] = {"Uruava"},<br />
["urw"] = {"Sop"},<br />
["urx"] = {"Urimo"},<br />
["ury"] = {"Orya"},<br />
["urz"] = {"Uru-Eu-Wau-Wau"},<br />
["usa"] = {"Usarufa"},<br />
["ush"] = {"Ushojo"},<br />
["usi"] = {"Usui"},<br />
["usk"] = {"Usaghade"},<br />
["usp"] = {"Uspanteco"},<br />
["uss"] = {"us-Saare"},<br />
["usu"] = {"Uya"},<br />
["uta"] = {"Otank"},<br />
["ute"] = {"Ute-Southern Paiute"},<br />
["uth"] = {"ut-Hun"},<br />
["utp"] = {"Amba (Solomon Islands)"},<br />
["utr"] = {"Etulo"},<br />
["utu"] = {"Utu"},<br />
["uum"] = {"Urum"},<br />
["uun"] = {"Kulon-Pazeh"},<br />
["uur"] = {"Ura (Vanuatu)"},<br />
["uuu"] = {"U"},<br />
["uve"] = {"West Uvean", "Fagauvea"},<br />
["uvh"] = {"Uri"},<br />
["uvl"] = {"Lote"},<br />
["uwa"] = {"Kuku-Uwanh"},<br />
["uya"] = {"Doko-Uyanga"},<br />
["uzn"] = {"Northern Uzbek"},<br />
["uzs"] = {"Southern Uzbek"},<br />
["vaa"] = {"Vaagri Booli"},<br />
["vae"] = {"Vale"},<br />
["vaf"] = {"Vafsi"},<br />
["vag"] = {"Vagla"},<br />
["vah"] = {"Varhadi-Nagpuri"},<br />
["vai"] = {"Vai"},<br />
["vaj"] = {"Sekele", "Northwestern ǃKung", "Vasekele"},<br />
["val"] = {"Vehes"},<br />
["vam"] = {"Vanimo"},<br />
["van"] = {"Valman"},<br />
["vao"] = {"Vao"},<br />
["vap"] = {"Vaiphei"},<br />
["var"] = {"Huarijio"},<br />
["vas"] = {"Vasavi"},<br />
["vau"] = {"Vanuma"},<br />
["vav"] = {"Varli"},<br />
["vay"] = {"Wayu"},<br />
["vbb"] = {"Southeast Babar"},<br />
["vbk"] = {"Southwestern Bontok"},<br />
["vec"] = {"Venetian"},<br />
["ved"] = {"Veddah"},<br />
["vel"] = {"Veluws"},<br />
["vem"] = {"Vemgo-Mabas"},<br />
["veo"] = {"Ventureño"},<br />
["vep"] = {"Veps"},<br />
["ver"] = {"Mom Jango"},<br />
["vgr"] = {"Vaghri"},<br />
["vgt"] = {"Vlaamse Gebarentaal", "Flemish Sign Language"},<br />
["vic"] = {"Virgin Islands Creole English"},<br />
["vid"] = {"Vidunda"},<br />
["vif"] = {"Vili"},<br />
["vig"] = {"Viemo"},<br />
["vil"] = {"Vilela"},<br />
["vin"] = {"Vinza"},<br />
["vis"] = {"Vishavan"},<br />
["vit"] = {"Viti"},<br />
["viv"] = {"Iduna"},<br />
["vka"] = {"Kariyarra"},<br />
["vkj"] = {"Kujarge"},<br />
["vkk"] = {"Kaur"},<br />
["vkl"] = {"Kulisusu"},<br />
["vkm"] = {"Kamakan"},<br />
["vkn"] = {"Koro Nulu"},<br />
["vko"] = {"Kodeoha"},<br />
["vkp"] = {"Korlai Creole Portuguese"},<br />
["vkt"] = {"Tenggarong Kutai Malay"},<br />
["vku"] = {"Kurrama"},<br />
["vkz"] = {"Koro Zuba"},<br />
["vlp"] = {"Valpei"},<br />
["vls"] = {"Vlaams"},<br />
["vma"] = {"Martuyhunira"},<br />
["vmb"] = {"Barbaram"},<br />
["vmc"] = {"Juxtlahuaca Mixtec"},<br />
["vmd"] = {"Mudu Koraga"},<br />
["vme"] = {"East Masela"},<br />
["vmf"] = {"Mainfränkisch"},<br />
["vmg"] = {"Lungalunga"},<br />
["vmh"] = {"Maraghei"},<br />
["vmi"] = {"Miwa"},<br />
["vmj"] = {"Ixtayutla Mixtec"},<br />
["vmk"] = {"Makhuwa-Shirima"},<br />
["vml"] = {"Malgana"},<br />
["vmm"] = {"Mitlatongo Mixtec"},<br />
["vmp"] = {"Soyaltepec Mazatec"},<br />
["vmq"] = {"Soyaltepec Mixtec"},<br />
["vmr"] = {"Marenje"},<br />
["vms"] = {"Moksela"},<br />
["vmu"] = {"Muluridyi"},<br />
["vmv"] = {"Valley Maidu"},<br />
["vmw"] = {"Makhuwa"},<br />
["vmx"] = {"Tamazola Mixtec"},<br />
["vmy"] = {"Ayautla Mazatec"},<br />
["vmz"] = {"Mazatlán Mazatec"},<br />
["vnk"] = {"Vano", "Lovono"},<br />
["vnm"] = {"Vinmavis", "Neve'ei"},<br />
["vnp"] = {"Vunapu"},<br />
["vor"] = {"Voro"},<br />
["vot"] = {"Votic"},<br />
["vra"] = {"Vera'a"},<br />
["vro"] = {"Võro"},<br />
["vrs"] = {"Varisi"},<br />
["vrt"] = {"Burmbar", "Banam Bay"},<br />
["vsi"] = {"Moldova Sign Language"},<br />
["vsl"] = {"Venezuelan Sign Language"},<br />
["vsv"] = {"Valencian Sign Language", "Llengua de signes valenciana"},<br />
["vto"] = {"Vitou"},<br />
["vum"] = {"Vumbu"},<br />
["vun"] = {"Vunjo"},<br />
["vut"] = {"Vute"},<br />
["vwa"] = {"Awa (China)"},<br />
["waa"] = {"Walla Walla"},<br />
["wab"] = {"Wab"},<br />
["wac"] = {"Wasco-Wishram"},<br />
["wad"] = {"Wamesa", "Wondama"},<br />
["wae"] = {"Walser"},<br />
["waf"] = {"Wakoná"},<br />
["wag"] = {"Wa'ema"},<br />
["wah"] = {"Watubela"},<br />
["wai"] = {"Wares"},<br />
["waj"] = {"Waffa"},<br />
["wak"] = {"Wakashan languages"},<br />
["wal"] = {"Wolaytta", "Wolaitta"},<br />
["wam"] = {"Wampanoag"},<br />
["wan"] = {"Wan"},<br />
["wao"] = {"Wappo"},<br />
["wap"] = {"Wapishana"},<br />
["waq"] = {"Wagiman"},<br />
["war"] = {"Waray (Philippines)"},<br />
["was"] = {"Washo"},<br />
["wat"] = {"Kaninuwa"},<br />
["wau"] = {"Waurá"},<br />
["wav"] = {"Waka"},<br />
["waw"] = {"Waiwai"},<br />
["wax"] = {"Watam", "Marangis"},<br />
["way"] = {"Wayana"},<br />
["waz"] = {"Wampur"},<br />
["wba"] = {"Warao"},<br />
["wbb"] = {"Wabo"},<br />
["wbe"] = {"Waritai"},<br />
["wbf"] = {"Wara"},<br />
["wbh"] = {"Wanda"},<br />
["wbi"] = {"Vwanji"},<br />
["wbj"] = {"Alagwa"},<br />
["wbk"] = {"Waigali"},<br />
["wbl"] = {"Wakhi"},<br />
["wbm"] = {"Wa"},<br />
["wbp"] = {"Warlpiri"},<br />
["wbq"] = {"Waddar"},<br />
["wbr"] = {"Wagdi"},<br />
["wbs"] = {"West Bengal Sign Language"},<br />
["wbt"] = {"Warnman"},<br />
["wbv"] = {"Wajarri"},<br />
["wbw"] = {"Woi"},<br />
["wca"] = {"Yanomámi"},<br />
["wci"] = {"Waci Gbe"},<br />
["wdd"] = {"Wandji"},<br />
["wdg"] = {"Wadaginam"},<br />
["wdj"] = {"Wadjiginy"},<br />
["wdk"] = {"Wadikali"},<br />
["wdu"] = {"Wadjigu"},<br />
["wdy"] = {"Wadjabangayi"},<br />
["wea"] = {"Wewaw"},<br />
["wec"] = {"Wè Western"},<br />
["wed"] = {"Wedau"},<br />
["weg"] = {"Wergaia"},<br />
["weh"] = {"Weh"},<br />
["wei"] = {"Kiunum"},<br />
["wem"] = {"Weme Gbe"},<br />
["wen"] = {"Sorbian languages"},<br />
["weo"] = {"Wemale"},<br />
["wep"] = {"Westphalien"},<br />
["wer"] = {"Weri"},<br />
["wes"] = {"Cameroon Pidgin"},<br />
["wet"] = {"Perai"},<br />
["weu"] = {"Rawngtu Chin"},<br />
["wew"] = {"Wejewa"},<br />
["wfg"] = {"Yafi", "Zorop"},<br />
["wga"] = {"Wagaya"},<br />
["wgb"] = {"Wagawaga"},<br />
["wgg"] = {"Wangkangurru", "Wangganguru"},<br />
["wgi"] = {"Wahgi"},<br />
["wgo"] = {"Waigeo"},<br />
["wgu"] = {"Wirangu"},<br />
["wgy"] = {"Warrgamay"},<br />
["wha"] = {"Sou Upaa", "Manusela"},<br />
["whg"] = {"North Wahgi"},<br />
["whk"] = {"Wahau Kenyah"},<br />
["whu"] = {"Wahau Kayan"},<br />
["wib"] = {"Southern Toussian"},<br />
["wic"] = {"Wichita"},<br />
["wie"] = {"Wik-Epa"},<br />
["wif"] = {"Wik-Keyangan"},<br />
["wig"] = {"Wik Ngathan"},<br />
["wih"] = {"Wik-Me'anha"},<br />
["wii"] = {"Minidien"},<br />
["wij"] = {"Wik-Iiyanh"},<br />
["wik"] = {"Wikalkan"},<br />
["wil"] = {"Wilawila"},<br />
["wim"] = {"Wik-Mungkan"},<br />
["win"] = {"Ho-Chunk"},<br />
["wir"] = {"Wiraféd"},<br />
["wiu"] = {"Wiru"},<br />
["wiv"] = {"Vitu"},<br />
["wiy"] = {"Wiyot"},<br />
["wja"] = {"Waja"},<br />
["wji"] = {"Warji"},<br />
["wka"] = {"Kw'adza"},<br />
["wkb"] = {"Kumbaran"},<br />
["wkd"] = {"Wakde", "Mo"},<br />
["wkl"] = {"Kalanadi"},<br />
["wkr"] = {"Keerray-Woorroong"},<br />
["wku"] = {"Kunduvadi"},<br />
["wkw"] = {"Wakawaka"},<br />
["wky"] = {"Wangkayutyuru"},<br />
["wla"] = {"Walio"},<br />
["wlc"] = {"Mwali Comorian"},<br />
["wle"] = {"Wolane"},<br />
["wlg"] = {"Kunbarlang"},<br />
["wlh"] = {"Welaun"},<br />
["wli"] = {"Waioli"},<br />
["wlk"] = {"Wailaki"},<br />
["wll"] = {"Wali (Sudan)"},<br />
["wlm"] = {"Middle Welsh"},<br />
["wlo"] = {"Wolio"},<br />
["wlr"] = {"Wailapa"},<br />
["wls"] = {"Wallisian"},<br />
["wlu"] = {"Wuliwuli"},<br />
["wlv"] = {"Wichí Lhamtés Vejoz"},<br />
["wlw"] = {"Walak"},<br />
["wlx"] = {"Wali (Ghana)"},<br />
["wly"] = {"Waling"},<br />
["wma"] = {"Mawa (Nigeria)"},<br />
["wmb"] = {"Wambaya"},<br />
["wmc"] = {"Wamas"},<br />
["wmd"] = {"Mamaindé"},<br />
["wme"] = {"Wambule"},<br />
["wmg"] = {"Western Minyag"},<br />
["wmh"] = {"Waima'a"},<br />
["wmi"] = {"Wamin"},<br />
["wmm"] = {"Maiwa (Indonesia)"},<br />
["wmn"] = {"Waamwang"},<br />
["wmo"] = {"Wom (Papua New Guinea)"},<br />
["wms"] = {"Wambon"},<br />
["wmt"] = {"Walmajarri"},<br />
["wmw"] = {"Mwani"},<br />
["wmx"] = {"Womo"},<br />
["wnb"] = {"Wanambre"},<br />
["wnc"] = {"Wantoat"},<br />
["wnd"] = {"Wandarang"},<br />
["wne"] = {"Waneci"},<br />
["wng"] = {"Wanggom"},<br />
["wni"] = {"Ndzwani Comorian"},<br />
["wnk"] = {"Wanukaka"},<br />
["wnm"] = {"Wanggamala"},<br />
["wnn"] = {"Wunumara"},<br />
["wno"] = {"Wano"},<br />
["wnp"] = {"Wanap"},<br />
["wnu"] = {"Usan"},<br />
["wnw"] = {"Wintu"},<br />
["wny"] = {"Wanyi", "Waanyi"},<br />
["woa"] = {"Kuwema", "Tyaraity"},<br />
["wob"] = {"Wè Northern"},<br />
["woc"] = {"Wogeo"},<br />
["wod"] = {"Wolani"},<br />
["woe"] = {"Woleaian"},<br />
["wof"] = {"Gambian Wolof"},<br />
["wog"] = {"Wogamusin"},<br />
["woi"] = {"Kamang"},<br />
["wok"] = {"Longto"},<br />
["wom"] = {"Wom (Nigeria)"},<br />
["won"] = {"Wongo"},<br />
["woo"] = {"Manombai"},<br />
["wor"] = {"Woria"},<br />
["wos"] = {"Hanga Hundi"},<br />
["wow"] = {"Wawonii"},<br />
["woy"] = {"Weyto"},<br />
["wpc"] = {"Maco"},<br />
["wrb"] = {"Waluwarra", "Warluwara"},<br />
["wrd"] = {"Warduji"},<br />
["wrg"] = {"Warungu", "Gudjal"},<br />
["wrh"] = {"Wiradjuri"},<br />
["wri"] = {"Wariyangga"},<br />
["wrk"] = {"Garrwa"},<br />
["wrl"] = {"Warlmanpa"},<br />
["wrm"] = {"Warumungu"},<br />
["wrn"] = {"Warnang"},<br />
["wro"] = {"Worrorra"},<br />
["wrp"] = {"Waropen"},<br />
["wrr"] = {"Wardaman"},<br />
["wrs"] = {"Waris"},<br />
["wru"] = {"Waru"},<br />
["wrv"] = {"Waruna"},<br />
["wrw"] = {"Gugu Warra"},<br />
["wrx"] = {"Wae Rana"},<br />
["wry"] = {"Merwari"},<br />
["wrz"] = {"Waray (Australia)"},<br />
["wsa"] = {"Warembori"},<br />
["wsg"] = {"Adilabad Gondi"},<br />
["wsi"] = {"Wusi"},<br />
["wsk"] = {"Waskia"},<br />
["wsr"] = {"Owenia"},<br />
["wss"] = {"Wasa"},<br />
["wsu"] = {"Wasu"},<br />
["wsv"] = {"Wotapuri-Katarqalai"},<br />
["wtf"] = {"Watiwa"},<br />
["wth"] = {"Wathawurrung"},<br />
["wti"] = {"Berta"},<br />
["wtk"] = {"Watakataui"},<br />
["wtm"] = {"Mewati"},<br />
["wtw"] = {"Wotu"},<br />
["wua"] = {"Wikngenchera"},<br />
["wub"] = {"Wunambal"},<br />
["wud"] = {"Wudu"},<br />
["wuh"] = {"Wutunhua"},<br />
["wul"] = {"Silimo"},<br />
["wum"] = {"Wumbvu"},<br />
["wun"] = {"Bungu"},<br />
["wur"] = {"Wurrugu"},<br />
["wut"] = {"Wutung"},<br />
["wuu"] = {"Wu Chinese"},<br />
["wuv"] = {"Wuvulu-Aua"},<br />
["wux"] = {"Wulna"},<br />
["wuy"] = {"Wauyai"},<br />
["wwa"] = {"Waama"},<br />
["wwb"] = {"Wakabunga"},<br />
["wwo"] = {"Wetamut", "Dorig"},<br />
["wwr"] = {"Warrwa"},<br />
["www"] = {"Wawa"},<br />
["wxa"] = {"Waxianghua"},<br />
["wxw"] = {"Wardandi"},<br />
["wya"] = {"Wyandot"},<br />
["wyb"] = {"Wangaaybuwan-Ngiyambaa"},<br />
["wyi"] = {"Woiwurrung"},<br />
["wym"] = {"Wymysorys"},<br />
["wyr"] = {"Wayoró"},<br />
["wyy"] = {"Western Fijian"},<br />
["xaa"] = {"Andalusian Arabic"},<br />
["xab"] = {"Sambe"},<br />
["xac"] = {"Kachari"},<br />
["xad"] = {"Adai"},<br />
["xae"] = {"Aequian"},<br />
["xag"] = {"Aghwan"},<br />
["xai"] = {"Kaimbé"},<br />
["xaj"] = {"Ararandewára"},<br />
["xak"] = {"Máku"},<br />
["xal"] = {"Kalmyk", "Oirat"},<br />
["xam"] = {"ǀXam"},<br />
["xan"] = {"Xamtanga"},<br />
["xao"] = {"Khao"},<br />
["xap"] = {"Apalachee"},<br />
["xaq"] = {"Aquitanian"},<br />
["xar"] = {"Karami"},<br />
["xas"] = {"Kamas"},<br />
["xat"] = {"Katawixi"},<br />
["xau"] = {"Kauwera"},<br />
["xav"] = {"Xavánte"},<br />
["xaw"] = {"Kawaiisu"},<br />
["xay"] = {"Kayan Mahakam"},<br />
["xbb"] = {"Lower Burdekin"},<br />
["xbc"] = {"Bactrian"},<br />
["xbd"] = {"Bindal"},<br />
["xbe"] = {"Bigambal"},<br />
["xbg"] = {"Bunganditj"},<br />
["xbi"] = {"Kombio"},<br />
["xbj"] = {"Birrpayi"},<br />
["xbm"] = {"Middle Breton"},<br />
["xbn"] = {"Kenaboi"},<br />
["xbo"] = {"Bolgarian"},<br />
["xbp"] = {"Bibbulman"},<br />
["xbr"] = {"Kambera"},<br />
["xbw"] = {"Kambiwá"},<br />
["xby"] = {"Batjala", "Batyala"},<br />
["xcb"] = {"Cumbric"},<br />
["xcc"] = {"Camunic"},<br />
["xce"] = {"Celtiberian"},<br />
["xcg"] = {"Cisalpine Gaulish"},<br />
["xch"] = {"Chemakum", "Chimakum"},<br />
["xcl"] = {"Classical Armenian"},<br />
["xcm"] = {"Comecrudo"},<br />
["xcn"] = {"Cotoname"},<br />
["xco"] = {"Chorasmian"},<br />
["xcr"] = {"Carian"},<br />
["xct"] = {"Classical Tibetan"},<br />
["xcu"] = {"Curonian"},<br />
["xcv"] = {"Chuvantsy"},<br />
["xcw"] = {"Coahuilteco"},<br />
["xcy"] = {"Cayuse"},<br />
["xda"] = {"Darkinyung"},<br />
["xdc"] = {"Dacian"},<br />
["xdk"] = {"Dharuk"},<br />
["xdm"] = {"Edomite"},<br />
["xdo"] = {"Kwandu"},<br />
["xdy"] = {"Malayic Dayak"},<br />
["xeb"] = {"Eblan"},<br />
["xed"] = {"Hdi"},<br />
["xeg"] = {"ǁXegwi"},<br />
["xel"] = {"Kelo"},<br />
["xem"] = {"Kembayan"},<br />
["xep"] = {"Epi-Olmec"},<br />
["xer"] = {"Xerénte"},<br />
["xes"] = {"Kesawai"},<br />
["xet"] = {"Xetá"},<br />
["xeu"] = {"Keoru-Ahia"},<br />
["xfa"] = {"Faliscan"},<br />
["xga"] = {"Galatian"},<br />
["xgb"] = {"Gbin"},<br />
["xgd"] = {"Gudang"},<br />
["xgf"] = {"Gabrielino-Fernandeño"},<br />
["xgg"] = {"Goreng"},<br />
["xgi"] = {"Garingbal"},<br />
["xgl"] = {"Galindan"},<br />
["xgm"] = {"Dharumbal", "Guwinmal"},<br />
["xgn"] = {"Mongolian languages"},<br />
["xgr"] = {"Garza"},<br />
["xgu"] = {"Unggumi"},<br />
["xgw"] = {"Guwa"},<br />
["xha"] = {"Harami"},<br />
["xhc"] = {"Hunnic"},<br />
["xhd"] = {"Hadrami"},<br />
["xhe"] = {"Khetrani"},<br />
["xhr"] = {"Hernican"},<br />
["xht"] = {"Hattic"},<br />
["xhu"] = {"Hurrian"},<br />
["xhv"] = {"Khua"},<br />
["xib"] = {"Iberian"},<br />
["xii"] = {"Xiri"},<br />
["xil"] = {"Illyrian"},<br />
["xin"] = {"Xinca"},<br />
["xir"] = {"Xiriâna"},<br />
["xis"] = {"Kisan"},<br />
["xiv"] = {"Indus Valley Language"},<br />
["xiy"] = {"Xipaya"},<br />
["xjb"] = {"Minjungbal"},<br />
["xjt"] = {"Jaitmatang"},<br />
["xka"] = {"Kalkoti"},<br />
["xkb"] = {"Northern Nago"},<br />
["xkc"] = {"Kho'ini"},<br />
["xkd"] = {"Mendalam Kayan"},<br />
["xke"] = {"Kereho"},<br />
["xkf"] = {"Khengkha"},<br />
["xkg"] = {"Kagoro"},<br />
["xki"] = {"Kenyan Sign Language"},<br />
["xkj"] = {"Kajali"},<br />
["xkk"] = {"Kaco'"},<br />
["xkl"] = {"Mainstream Kenyah"},<br />
["xkn"] = {"Kayan River Kayan"},<br />
["xko"] = {"Kiorr"},<br />
["xkp"] = {"Kabatei"},<br />
["xkq"] = {"Koroni"},<br />
["xkr"] = {"Xakriabá"},<br />
["xks"] = {"Kumbewaha"},<br />
["xkt"] = {"Kantosi"},<br />
["xku"] = {"Kaamba"},<br />
["xkv"] = {"Kgalagadi"},<br />
["xkw"] = {"Kembra"},<br />
["xkx"] = {"Karore"},<br />
["xky"] = {"Uma' Lasan"},<br />
["xkz"] = {"Kurtokha"},<br />
["xla"] = {"Kamula"},<br />
["xlb"] = {"Loup B"},<br />
["xlc"] = {"Lycian"},<br />
["xld"] = {"Lydian"},<br />
["xle"] = {"Lemnian"},<br />
["xlg"] = {"Ligurian (Ancient)"},<br />
["xli"] = {"Liburnian"},<br />
["xln"] = {"Alanic"},<br />
["xlo"] = {"Loup A"},<br />
["xlp"] = {"Lepontic"},<br />
["xls"] = {"Lusitanian"},<br />
["xlu"] = {"Cuneiform Luwian"},<br />
["xly"] = {"Elymian"},<br />
["xma"] = {"Mushungulu"},<br />
["xmb"] = {"Mbonga"},<br />
["xmc"] = {"Makhuwa-Marrevone"},<br />
["xmd"] = {"Mbudum"},<br />
["xme"] = {"Median"},<br />
["xmf"] = {"Mingrelian"},<br />
["xmg"] = {"Mengaka"},<br />
["xmh"] = {"Kugu-Muminh"},<br />
["xmj"] = {"Majera"},<br />
["xmk"] = {"Ancient Macedonian"},<br />
["xml"] = {"Malaysian Sign Language"},<br />
["xmm"] = {"Manado Malay"},<br />
["xmn"] = {"Manichaean Middle Persian"},<br />
["xmo"] = {"Morerebi"},<br />
["xmp"] = {"Kuku-Mu'inh"},<br />
["xmq"] = {"Kuku-Mangk"},<br />
["xmr"] = {"Meroitic"},<br />
["xms"] = {"Moroccan Sign Language"},<br />
["xmt"] = {"Matbat"},<br />
["xmu"] = {"Kamu"},<br />
["xmv"] = {"Antankarana Malagasy", "Tankarana Malagasy"},<br />
["xmw"] = {"Tsimihety Malagasy"},<br />
["xmx"] = {"Maden"},<br />
["xmy"] = {"Mayaguduna"},<br />
["xmz"] = {"Mori Bawah"},<br />
["xna"] = {"Ancient North Arabian"},<br />
["xnb"] = {"Kanakanabu"},<br />
["xnd"] = {"Na-Dene languages"},<br />
["xng"] = {"Middle Mongolian"},<br />
["xnh"] = {"Kuanhua"},<br />
["xni"] = {"Ngarigu"},<br />
["xnj"] = {"Ngoni (Tanzania)"},<br />
["xnk"] = {"Nganakarti"},<br />
["xnm"] = {"Ngumbarl"},<br />
["xnn"] = {"Northern Kankanay"},<br />
["xno"] = {"Anglo-Norman"},<br />
["xnq"] = {"Ngoni (Mozambique)"},<br />
["xnr"] = {"Kangri"},<br />
["xns"] = {"Kanashi"},<br />
["xnt"] = {"Narragansett"},<br />
["xnu"] = {"Nukunul"},<br />
["xny"] = {"Nyiyaparli"},<br />
["xnz"] = {"Kenzi", "Mattoki"},<br />
["xoc"] = {"O'chi'chi'"},<br />
["xod"] = {"Kokoda"},<br />
["xog"] = {"Soga"},<br />
["xoi"] = {"Kominimung"},<br />
["xok"] = {"Xokleng"},<br />
["xom"] = {"Komo (Sudan)"},<br />
["xon"] = {"Konkomba"},<br />
["xoo"] = {"Xukurú"},<br />
["xop"] = {"Kopar"},<br />
["xor"] = {"Korubo"},<br />
["xow"] = {"Kowaki"},<br />
["xpa"] = {"Pirriya"},<br />
["xpb"] = {"Northeastern Tasmanian", "Pyemmairrener"},<br />
["xpc"] = {"Pecheneg"},<br />
["xpd"] = {"Oyster Bay Tasmanian"},<br />
["xpe"] = {"Liberia Kpelle"},<br />
["xpf"] = {"Southeast Tasmanian", "Nuenonne"},<br />
["xpg"] = {"Phrygian"},<br />
["xph"] = {"North Midlands Tasmanian", "Tyerrenoterpanner"},<br />
["xpi"] = {"Pictish"},<br />
["xpj"] = {"Mpalitjanh"},<br />
["xpk"] = {"Kulina Pano"},<br />
["xpl"] = {"Port Sorell Tasmanian"},<br />
["xpm"] = {"Pumpokol"},<br />
["xpn"] = {"Kapinawá"},<br />
["xpo"] = {"Pochutec"},<br />
["xpp"] = {"Puyo-Paekche"},<br />
["xpq"] = {"Mohegan-Pequot"},<br />
["xpr"] = {"Parthian"},<br />
["xps"] = {"Pisidian"},<br />
["xpt"] = {"Punthamara"},<br />
["xpu"] = {"Punic"},<br />
["xpv"] = {"Northern Tasmanian", "Tommeginne"},<br />
["xpw"] = {"Northwestern Tasmanian", "Peerapper"},<br />
["xpx"] = {"Southwestern Tasmanian", "Toogee"},<br />
["xpy"] = {"Puyo"},<br />
["xpz"] = {"Bruny Island Tasmanian"},<br />
["xqa"] = {"Karakhanid"},<br />
["xqt"] = {"Qatabanian"},<br />
["xra"] = {"Krahô"},<br />
["xrb"] = {"Eastern Karaboro"},<br />
["xrd"] = {"Gundungurra"},<br />
["xre"] = {"Kreye"},<br />
["xrg"] = {"Minang"},<br />
["xri"] = {"Krikati-Timbira"},<br />
["xrm"] = {"Armazic"},<br />
["xrn"] = {"Arin"},<br />
["xrr"] = {"Raetic"},<br />
["xrt"] = {"Aranama-Tamique"},<br />
["xru"] = {"Marriammu"},<br />
["xrw"] = {"Karawa"},<br />
["xsa"] = {"Sabaean"},<br />
["xsb"] = {"Sambal"},<br />
["xsc"] = {"Scythian"},<br />
["xsd"] = {"Sidetic"},<br />
["xse"] = {"Sempan"},<br />
["xsh"] = {"Shamang"},<br />
["xsi"] = {"Sio"},<br />
["xsj"] = {"Subi"},<br />
["xsl"] = {"South Slavey"},<br />
["xsm"] = {"Kasem"},<br />
["xsn"] = {"Sanga (Nigeria)"},<br />
["xso"] = {"Solano"},<br />
["xsp"] = {"Silopi"},<br />
["xsq"] = {"Makhuwa-Saka"},<br />
["xsr"] = {"Sherpa"},<br />
["xss"] = {"Assan"},<br />
["xsu"] = {"Sanumá"},<br />
["xsv"] = {"Sudovian"},<br />
["xsy"] = {"Saisiyat"},<br />
["xta"] = {"Alcozauca Mixtec"},<br />
["xtb"] = {"Chazumba Mixtec"},<br />
["xtc"] = {"Katcha-Kadugli-Miri"},<br />
["xtd"] = {"Diuxi-Tilantongo Mixtec"},<br />
["xte"] = {"Ketengban"},<br />
["xtg"] = {"Transalpine Gaulish"},<br />
["xth"] = {"Yitha Yitha"},<br />
["xti"] = {"Sinicahua Mixtec"},<br />
["xtj"] = {"San Juan Teita Mixtec"},<br />
["xtl"] = {"Tijaltepec Mixtec"},<br />
["xtm"] = {"Magdalena Peñasco Mixtec"},<br />
["xtn"] = {"Northern Tlaxiaco Mixtec"},<br />
["xto"] = {"Tokharian A"},<br />
["xtp"] = {"San Miguel Piedras Mixtec"},<br />
["xtq"] = {"Tumshuqese"},<br />
["xtr"] = {"Early Tripuri"},<br />
["xts"] = {"Sindihui Mixtec"},<br />
["xtt"] = {"Tacahua Mixtec"},<br />
["xtu"] = {"Cuyamecalco Mixtec"},<br />
["xtv"] = {"Thawa"},<br />
["xtw"] = {"Tawandê"},<br />
["xty"] = {"Yoloxochitl Mixtec"},<br />
["xua"] = {"Alu Kurumba"},<br />
["xub"] = {"Betta Kurumba"},<br />
["xud"] = {"Umiida"},<br />
["xug"] = {"Kunigami"},<br />
["xuj"] = {"Jennu Kurumba"},<br />
["xul"] = {"Ngunawal", "Nunukul"},<br />
["xum"] = {"Umbrian"},<br />
["xun"] = {"Unggaranggu"},<br />
["xuo"] = {"Kuo"},<br />
["xup"] = {"Upper Umpqua"},<br />
["xur"] = {"Urartian"},<br />
["xut"] = {"Kuthant"},<br />
["xuu"] = {"Kxoe", "Khwedam"},<br />
["xve"] = {"Venetic"},<br />
["xvi"] = {"Kamviri"},<br />
["xvn"] = {"Vandalic"},<br />
["xvo"] = {"Volscian"},<br />
["xvs"] = {"Vestinian"},<br />
["xwa"] = {"Kwaza"},<br />
["xwc"] = {"Woccon"},<br />
["xwd"] = {"Wadi Wadi"},<br />
["xwe"] = {"Xwela Gbe"},<br />
["xwg"] = {"Kwegu"},<br />
["xwj"] = {"Wajuk"},<br />
["xwk"] = {"Wangkumara"},<br />
["xwl"] = {"Western Xwla Gbe"},<br />
["xwo"] = {"Written Oirat"},<br />
["xwr"] = {"Kwerba Mamberamo"},<br />
["xwt"] = {"Wotjobaluk"},<br />
["xww"] = {"Wemba Wemba"},<br />
["xxb"] = {"Boro (Ghana)"},<br />
["xxk"] = {"Ke'o"},<br />
["xxm"] = {"Minkin"},<br />
["xxr"] = {"Koropó"},<br />
["xxt"] = {"Tambora"},<br />
["xya"] = {"Yaygir"},<br />
["xyb"] = {"Yandjibara"},<br />
["xyj"] = {"Mayi-Yapi"},<br />
["xyk"] = {"Mayi-Kulan"},<br />
["xyl"] = {"Yalakalore"},<br />
["xyt"] = {"Mayi-Thakurti"},<br />
["xyy"] = {"Yorta Yorta"},<br />
["xzh"] = {"Zhang-Zhung"},<br />
["xzm"] = {"Zemgalian"},<br />
["xzp"] = {"Ancient Zapotec"},<br />
["yaa"] = {"Yaminahua"},<br />
["yab"] = {"Yuhup"},<br />
["yac"] = {"Pass Valley Yali"},<br />
["yad"] = {"Yagua"},<br />
["yae"] = {"Pumé"},<br />
["yaf"] = {"Yaka (Democratic Republic of Congo)"},<br />
["yag"] = {"Yámana"},<br />
["yah"] = {"Yazgulyam"},<br />
["yai"] = {"Yagnobi"},<br />
["yaj"] = {"Banda-Yangere"},<br />
["yak"] = {"Yakama"},<br />
["yal"] = {"Yalunka"},<br />
["yam"] = {"Yamba"},<br />
["yan"] = {"Mayangna"},<br />
["yao"] = {"Yao"},<br />
["yap"] = {"Yapese"},<br />
["yaq"] = {"Yaqui"},<br />
["yar"] = {"Yabarana"},<br />
["yas"] = {"Nugunu (Cameroon)"},<br />
["yat"] = {"Yambeta"},<br />
["yau"] = {"Yuwana"},<br />
["yav"] = {"Yangben"},<br />
["yaw"] = {"Yawalapití"},<br />
["yax"] = {"Yauma"},<br />
["yay"] = {"Agwagwune"},<br />
["yaz"] = {"Lokaa"},<br />
["yba"] = {"Yala"},<br />
["ybb"] = {"Yemba"},<br />
["ybe"] = {"West Yugur"},<br />
["ybh"] = {"Yakha"},<br />
["ybi"] = {"Yamphu"},<br />
["ybj"] = {"Hasha"},<br />
["ybk"] = {"Bokha"},<br />
["ybl"] = {"Yukuben"},<br />
["ybm"] = {"Yaben"},<br />
["ybn"] = {"Yabaâna"},<br />
["ybo"] = {"Yabong"},<br />
["ybx"] = {"Yawiyo"},<br />
["yby"] = {"Yaweyuha"},<br />
["ych"] = {"Chesu"},<br />
["ycl"] = {"Lolopo"},<br />
["ycn"] = {"Yucuna"},<br />
["ycp"] = {"Chepya"},<br />
["yda"] = {"Yanda"},<br />
["ydd"] = {"Eastern Yiddish"},<br />
["yde"] = {"Yangum Dey"},<br />
["ydg"] = {"Yidgha"},<br />
["ydk"] = {"Yoidik"},<br />
["yea"] = {"Ravula"},<br />
["yec"] = {"Yeniche"},<br />
["yee"] = {"Yimas"},<br />
["yei"] = {"Yeni"},<br />
["yej"] = {"Yevanic"},<br />
["yel"] = {"Yela"},<br />
["yer"] = {"Tarok"},<br />
["yes"] = {"Nyankpa"},<br />
["yet"] = {"Yetfa"},<br />
["yeu"] = {"Yerukula"},<br />
["yev"] = {"Yapunda"},<br />
["yey"] = {"Yeyi"},<br />
["yga"] = {"Malyangapa"},<br />
["ygi"] = {"Yiningayi"},<br />
["ygl"] = {"Yangum Gel"},<br />
["ygm"] = {"Yagomi"},<br />
["ygp"] = {"Gepo"},<br />
["ygr"] = {"Yagaria"},<br />
["ygs"] = {"Yolŋu Sign Language"},<br />
["ygu"] = {"Yugul"},<br />
["ygw"] = {"Yagwoia"},<br />
["yha"] = {"Baha Buyang"},<br />
["yhd"] = {"Judeo-Iraqi Arabic"},<br />
["yhl"] = {"Hlepho Phowa"},<br />
["yhs"] = {"Yan-nhaŋu Sign Language"},<br />
["yia"] = {"Yinggarda"},<br />
["yif"] = {"Ache"},<br />
["yig"] = {"Wusa Nasu"},<br />
["yih"] = {"Western Yiddish"},<br />
["yii"] = {"Yidiny"},<br />
["yij"] = {"Yindjibarndi"},<br />
["yik"] = {"Dongshanba Lalo"},<br />
["yil"] = {"Yindjilandji"},<br />
["yim"] = {"Yimchungru Naga"},<br />
["yin"] = {"Riang Lai", "Yinchia"},<br />
["yip"] = {"Pholo"},<br />
["yiq"] = {"Miqie"},<br />
["yir"] = {"North Awyu"},<br />
["yis"] = {"Yis"},<br />
["yit"] = {"Eastern Lalu"},<br />
["yiu"] = {"Awu"},<br />
["yiv"] = {"Northern Nisu"},<br />
["yix"] = {"Axi Yi"},<br />
["yiz"] = {"Azhe"},<br />
["yka"] = {"Yakan"},<br />
["ykg"] = {"Northern Yukaghir"},<br />
["yki"] = {"Yoke"},<br />
["ykk"] = {"Yakaikeke"},<br />
["ykl"] = {"Khlula"},<br />
["ykm"] = {"Kap"},<br />
["ykn"] = {"Kua-nsi"},<br />
["yko"] = {"Yasa"},<br />
["ykr"] = {"Yekora"},<br />
["ykt"] = {"Kathu"},<br />
["yku"] = {"Kuamasi"},<br />
["yky"] = {"Yakoma"},<br />
["yla"] = {"Yaul"},<br />
["ylb"] = {"Yaleba"},<br />
["yle"] = {"Yele"},<br />
["ylg"] = {"Yelogu"},<br />
["yli"] = {"Angguruk Yali"},<br />
["yll"] = {"Yil"},<br />
["ylm"] = {"Limi"},<br />
["yln"] = {"Langnian Buyang"},<br />
["ylo"] = {"Naluo Yi"},<br />
["ylr"] = {"Yalarnnga"},<br />
["ylu"] = {"Aribwaung"},<br />
["yly"] = {"Nyâlayu", "Nyelâyu"},<br />
["ymb"] = {"Yambes"},<br />
["ymc"] = {"Southern Muji"},<br />
["ymd"] = {"Muda"},<br />
["yme"] = {"Yameo"},<br />
["ymg"] = {"Yamongeri"},<br />
["ymh"] = {"Mili"},<br />
["ymi"] = {"Moji"},<br />
["ymk"] = {"Makwe"},<br />
["yml"] = {"Iamalele"},<br />
["ymm"] = {"Maay"},<br />
["ymn"] = {"Yamna", "Sunum"},<br />
["ymo"] = {"Yangum Mon"},<br />
["ymp"] = {"Yamap"},<br />
["ymq"] = {"Qila Muji"},<br />
["ymr"] = {"Malasar"},<br />
["yms"] = {"Mysian"},<br />
["ymx"] = {"Northern Muji"},<br />
["ymz"] = {"Muzi"},<br />
["yna"] = {"Aluo"},<br />
["ynd"] = {"Yandruwandha"},<br />
["yne"] = {"Lang'e"},<br />
["yng"] = {"Yango"},<br />
["ynk"] = {"Naukan Yupik"},<br />
["ynl"] = {"Yangulam"},<br />
["ynn"] = {"Yana"},<br />
["yno"] = {"Yong"},<br />
["ynq"] = {"Yendang"},<br />
["yns"] = {"Yansi"},<br />
["ynu"] = {"Yahuna"},<br />
["yob"] = {"Yoba"},<br />
["yog"] = {"Yogad"},<br />
["yoi"] = {"Yonaguni"},<br />
["yok"] = {"Yokuts"},<br />
["yol"] = {"Yola"},<br />
["yom"] = {"Yombe"},<br />
["yon"] = {"Yongkom"},<br />
["yot"] = {"Yotti"},<br />
["yox"] = {"Yoron"},<br />
["yoy"] = {"Yoy"},<br />
["ypa"] = {"Phala"},<br />
["ypb"] = {"Labo Phowa"},<br />
["ypg"] = {"Phola"},<br />
["yph"] = {"Phupha"},<br />
["ypk"] = {"Yupik languages"},<br />
["ypm"] = {"Phuma"},<br />
["ypn"] = {"Ani Phowa"},<br />
["ypo"] = {"Alo Phola"},<br />
["ypp"] = {"Phupa"},<br />
["ypz"] = {"Phuza"},<br />
["yra"] = {"Yerakai"},<br />
["yrb"] = {"Yareba"},<br />
["yre"] = {"Yaouré"},<br />
["yrk"] = {"Nenets"},<br />
["yrl"] = {"Nhengatu"},<br />
["yrm"] = {"Yirrk-Mel"},<br />
["yrn"] = {"Yerong"},<br />
["yro"] = {"Yaroamë"},<br />
["yrs"] = {"Yarsun"},<br />
["yrw"] = {"Yarawata"},<br />
["yry"] = {"Yarluyandi"},<br />
["ysc"] = {"Yassic"},<br />
["ysd"] = {"Samatao"},<br />
["ysg"] = {"Sonaga"},<br />
["ysl"] = {"Yugoslavian Sign Language"},<br />
["ysm"] = {"Myanmar Sign Language"},<br />
["ysn"] = {"Sani"},<br />
["yso"] = {"Nisi (China)"},<br />
["ysp"] = {"Southern Lolopo"},<br />
["ysr"] = {"Sirenik Yupik"},<br />
["yss"] = {"Yessan-Mayo"},<br />
["ysy"] = {"Sanie"},<br />
["yta"] = {"Talu"},<br />
["ytl"] = {"Tanglang"},<br />
["ytp"] = {"Thopho"},<br />
["ytw"] = {"Yout Wam"},<br />
["yty"] = {"Yatay"},<br />
["yua"] = {"Yucateco", "Yucatec Maya"},<br />
["yub"] = {"Yugambal"},<br />
["yuc"] = {"Yuchi"},<br />
["yud"] = {"Judeo-Tripolitanian Arabic"},<br />
["yue"] = {"Yue Chinese", "Cantonese"},<br />
["yuf"] = {"Havasupai-Walapai-Yavapai"},<br />
["yug"] = {"Yug"},<br />
["yui"] = {"Yurutí"},<br />
["yuj"] = {"Karkar-Yuri"},<br />
["yuk"] = {"Yuki"},<br />
["yul"] = {"Yulu"},<br />
["yum"] = {"Quechan"},<br />
["yun"] = {"Bena (Nigeria)"},<br />
["yup"] = {"Yukpa"},<br />
["yuq"] = {"Yuqui"},<br />
["yur"] = {"Yurok"},<br />
["yut"] = {"Yopno"},<br />
["yuw"] = {"Yau (Morobe Province)"},<br />
["yux"] = {"Southern Yukaghir"},<br />
["yuy"] = {"East Yugur"},<br />
["yuz"] = {"Yuracare"},<br />
["yva"] = {"Yawa"},<br />
["yvt"] = {"Yavitero"},<br />
["ywa"] = {"Kalou"},<br />
["ywg"] = {"Yinhawangka"},<br />
["ywl"] = {"Western Lalu"},<br />
["ywn"] = {"Yawanawa"},<br />
["ywq"] = {"Wuding-Luquan Yi"},<br />
["ywr"] = {"Yawuru"},<br />
["ywt"] = {"Xishanba Lalo", "Central Lalo"},<br />
["ywu"] = {"Wumeng Nasu"},<br />
["yww"] = {"Yawarawarga"},<br />
["yxa"] = {"Mayawali"},<br />
["yxg"] = {"Yagara"},<br />
["yxl"] = {"Yardliyawarra"},<br />
["yxm"] = {"Yinwum"},<br />
["yxu"] = {"Yuyu"},<br />
["yxy"] = {"Yabula Yabula"},<br />
["yyr"] = {"Yir Yoront"},<br />
["yyu"] = {"Yau (Sandaun Province)"},<br />
["yyz"] = {"Ayizi"},<br />
["yzg"] = {"E'ma Buyang"},<br />
["yzk"] = {"Zokhuo"},<br />
["zaa"] = {"Sierra de Juárez Zapotec"},<br />
["zab"] = {"Western Tlacolula Valley Zapotec", "San Juan Guelavía Zapotec"},<br />
["zac"] = {"Ocotlán Zapotec"},<br />
["zad"] = {"Cajonos Zapotec"},<br />
["zae"] = {"Yareni Zapotec"},<br />
["zaf"] = {"Ayoquesco Zapotec"},<br />
["zag"] = {"Zaghawa"},<br />
["zah"] = {"Zangwal"},<br />
["zai"] = {"Isthmus Zapotec"},<br />
["zaj"] = {"Zaramo"},<br />
["zak"] = {"Zanaki"},<br />
["zal"] = {"Zauzou"},<br />
["zam"] = {"Miahuatlán Zapotec"},<br />
["zao"] = {"Ozolotepec Zapotec"},<br />
["zap"] = {"Zapotec"},<br />
["zaq"] = {"Aloápam Zapotec"},<br />
["zar"] = {"Rincón Zapotec"},<br />
["zas"] = {"Santo Domingo Albarradas Zapotec"},<br />
["zat"] = {"Tabaa Zapotec"},<br />
["zau"] = {"Zangskari"},<br />
["zav"] = {"Yatzachi Zapotec"},<br />
["zaw"] = {"Mitla Zapotec"},<br />
["zax"] = {"Xadani Zapotec"},<br />
["zay"] = {"Zayse-Zergulla", "Zaysete"},<br />
["zaz"] = {"Zari"},<br />
["zba"] = {"Balaibalan"},<br />
["zbc"] = {"Central Berawan"},<br />
["zbe"] = {"East Berawan"},<br />
["zbl"] = {"Blissymbols", "Bliss", "Blissymbolics"},<br />
["zbt"] = {"Batui"},<br />
["zbu"] = {"Bu (Bauchi State)"},<br />
["zbw"] = {"West Berawan"},<br />
["zca"] = {"Coatecas Altas Zapotec"},<br />
["zch"] = {"Central Hongshuihe Zhuang"},<br />
["zdj"] = {"Ngazidja Comorian"},<br />
["zea"] = {"Zeeuws"},<br />
["zeg"] = {"Zenag"},<br />
["zeh"] = {"Eastern Hongshuihe Zhuang"},<br />
["zen"] = {"Zenaga"},<br />
["zga"] = {"Kinga"},<br />
["zgb"] = {"Guibei Zhuang"},<br />
["zgh"] = {"Standard Moroccan Tamazight"},<br />
["zgm"] = {"Minz Zhuang"},<br />
["zgn"] = {"Guibian Zhuang"},<br />
["zgr"] = {"Magori"},<br />
["zhb"] = {"Zhaba"},<br />
["zhd"] = {"Dai Zhuang"},<br />
["zhi"] = {"Zhire"},<br />
["zhn"] = {"Nong Zhuang"},<br />
["zhw"] = {"Zhoa"},<br />
["zhx"] = {"Chinese (family)"},<br />
["zia"] = {"Zia"},<br />
["zib"] = {"Zimbabwe Sign Language"},<br />
["zik"] = {"Zimakani"},<br />
["zil"] = {"Zialo"},<br />
["zim"] = {"Mesme"},<br />
["zin"] = {"Zinza"},<br />
["ziw"] = {"Zigula"},<br />
["ziz"] = {"Zizilivakan"},<br />
["zka"] = {"Kaimbulawa"},<br />
["zkb"] = {"Koibal"},<br />
["zkd"] = {"Kadu"},<br />
["zkg"] = {"Koguryo"},<br />
["zkh"] = {"Khorezmian"},<br />
["zkk"] = {"Karankawa"},<br />
["zkn"] = {"Kanan"},<br />
["zko"] = {"Kott"},<br />
["zkp"] = {"São Paulo Kaingáng"},<br />
["zkr"] = {"Zakhring"},<br />
["zkt"] = {"Kitan"},<br />
["zku"] = {"Kaurna"},<br />
["zkv"] = {"Krevinian"},<br />
["zkz"] = {"Khazar"},<br />
["zla"] = {"Zula"},<br />
["zle"] = {"East Slavic languages"},<br />
["zlj"] = {"Liujiang Zhuang"},<br />
["zlm"] = {"Malay (individual language)"},<br />
["zln"] = {"Lianshan Zhuang"},<br />
["zlq"] = {"Liuqian Zhuang"},<br />
["zls"] = {"South Slavic languages"},<br />
["zlw"] = {"West Slavic languages"},<br />
["zma"] = {"Manda (Australia)"},<br />
["zmb"] = {"Zimba"},<br />
["zmc"] = {"Margany"},<br />
["zmd"] = {"Maridan"},<br />
["zme"] = {"Mangerr"},<br />
["zmf"] = {"Mfinu"},<br />
["zmg"] = {"Marti Ke"},<br />
["zmh"] = {"Makolkol"},<br />
["zmi"] = {"Negeri Sembilan Malay"},<br />
["zmj"] = {"Maridjabin"},<br />
["zmk"] = {"Mandandanyi"},<br />
["zml"] = {"Matngala"},<br />
["zmm"] = {"Marimanindji", "Marramaninyshi"},<br />
["zmn"] = {"Mbangwe"},<br />
["zmo"] = {"Molo"},<br />
["zmp"] = {"Mpuono"},<br />
["zmq"] = {"Mituku"},<br />
["zmr"] = {"Maranunggu"},<br />
["zms"] = {"Mbesa"},<br />
["zmt"] = {"Maringarr"},<br />
["zmu"] = {"Muruwari"},<br />
["zmv"] = {"Mbariman-Gudhinma"},<br />
["zmw"] = {"Mbo (Democratic Republic of Congo)"},<br />
["zmx"] = {"Bomitaba"},<br />
["zmy"] = {"Mariyedi"},<br />
["zmz"] = {"Mbandja"},<br />
["zna"] = {"Zan Gula"},<br />
["znd"] = {"Zande languages"},<br />
["zne"] = {"Zande (individual language)"},<br />
["zng"] = {"Mang"},<br />
["znk"] = {"Manangkari"},<br />
["zns"] = {"Mangas"},<br />
["zoc"] = {"Copainalá Zoque"},<br />
["zoh"] = {"Chimalapa Zoque"},<br />
["zom"] = {"Zou"},<br />
["zoo"] = {"Asunción Mixtepec Zapotec"},<br />
["zoq"] = {"Tabasco Zoque"},<br />
["zor"] = {"Rayón Zoque"},<br />
["zos"] = {"Francisco León Zoque"},<br />
["zpa"] = {"Lachiguiri Zapotec"},<br />
["zpb"] = {"Yautepec Zapotec"},<br />
["zpc"] = {"Choapan Zapotec"},<br />
["zpd"] = {"Southeastern Ixtlán Zapotec"},<br />
["zpe"] = {"Petapa Zapotec"},<br />
["zpf"] = {"San Pedro Quiatoni Zapotec"},<br />
["zpg"] = {"Guevea De Humboldt Zapotec"},<br />
["zph"] = {"Totomachapan Zapotec"},<br />
["zpi"] = {"Santa María Quiegolani Zapotec"},<br />
["zpj"] = {"Quiavicuzas Zapotec"},<br />
["zpk"] = {"Tlacolulita Zapotec"},<br />
["zpl"] = {"Lachixío Zapotec"},<br />
["zpm"] = {"Mixtepec Zapotec"},<br />
["zpn"] = {"Santa Inés Yatzechi Zapotec"},<br />
["zpo"] = {"Amatlán Zapotec"},<br />
["zpp"] = {"El Alto Zapotec"},<br />
["zpq"] = {"Zoogocho Zapotec"},<br />
["zpr"] = {"Santiago Xanica Zapotec"},<br />
["zps"] = {"Coatlán Zapotec"},<br />
["zpt"] = {"San Vicente Coatlán Zapotec"},<br />
["zpu"] = {"Yalálag Zapotec"},<br />
["zpv"] = {"Chichicapan Zapotec"},<br />
["zpw"] = {"Zaniza Zapotec"},<br />
["zpx"] = {"San Baltazar Loxicha Zapotec"},<br />
["zpy"] = {"Mazaltepec Zapotec"},<br />
["zpz"] = {"Texmelucan Zapotec"},<br />
["zqe"] = {"Qiubei Zhuang"},<br />
["zra"] = {"Kara (Korea)"},<br />
["zrg"] = {"Mirgan"},<br />
["zrn"] = {"Zerenkel"},<br />
["zro"] = {"Záparo"},<br />
["zrp"] = {"Zarphatic"},<br />
["zrs"] = {"Mairasi"},<br />
["zsa"] = {"Sarasira"},<br />
["zsk"] = {"Kaskean"},<br />
["zsl"] = {"Zambian Sign Language"},<br />
["zsm"] = {"Standard Malay"},<br />
["zsr"] = {"Southern Rincon Zapotec"},<br />
["zsu"] = {"Sukurum"},<br />
["zte"] = {"Elotepec Zapotec"},<br />
["ztg"] = {"Xanaguía Zapotec"},<br />
["ztl"] = {"Lapaguía-Guivini Zapotec"},<br />
["ztm"] = {"San Agustín Mixtepec Zapotec"},<br />
["ztn"] = {"Santa Catarina Albarradas Zapotec"},<br />
["ztp"] = {"Loxicha Zapotec"},<br />
["ztq"] = {"Quioquitani-Quierí Zapotec"},<br />
["zts"] = {"Tilquiapan Zapotec"},<br />
["ztt"] = {"Tejalapan Zapotec"},<br />
["ztu"] = {"Güilá Zapotec"},<br />
["ztx"] = {"Zaachila Zapotec"},<br />
["zty"] = {"Yatee Zapotec"},<br />
["zua"] = {"Zeem"},<br />
["zuh"] = {"Tokano"},<br />
["zum"] = {"Kumzari"},<br />
["zun"] = {"Zuni"},<br />
["zuy"] = {"Zumaya"},<br />
["zwa"] = {"Zay"},<br />
["zxx"] = {"No linguistic content", "Not applicable"},<br />
["zyb"] = {"Yongbei Zhuang"},<br />
["zyg"] = {"Yang Zhuang"},<br />
["zyj"] = {"Youjiang Zhuang"},<br />
["zyn"] = {"Yongnan Zhuang"},<br />
["zyp"] = {"Zyphe Chin"},<br />
["zza"] = {"Zaza", "Dimili", "Dimli (macrolanguage)", "Kirdki", "Kirmanjki (macrolanguage)", "Zazaki"},<br />
["zzj"] = {"Zuojiang Zhuang"}<br />
}<br />
<br />
local deprecated = {<br />
["in"] = {"Indonesian"},<br />
["iw"] = {"Hebrew"},<br />
["ji"] = {"Yiddish"},<br />
["jw"] = {"Javanese"},<br />
["mo"] = {"Moldavian", "Moldovan"},<br />
["aam"] = {"Aramanik"},<br />
["adp"] = {"Adap"},<br />
["agp"] = {"Paranan"},<br />
["ais"] = {"Nataoran Amis"},<br />
["aoh"] = {"Arma"},<br />
["asd"] = {"Asas"},<br />
["aue"] = {"ǂKxʼauǁʼein"},<br />
["ayx"] = {"Ayi (China)"},<br />
["ayy"] = {"Tayabas Ayta"},<br />
["baz"] = {"Tunen"},<br />
["bbz"] = {"Babalia Creole Arabic"},<br />
["bgm"] = {"Baga Mboteni"},<br />
["bhk"] = {"Albay Bicolano"},<br />
["bic"] = {"Bikaru"},<br />
["bij"] = {"Vaghat-Ya-Bijim-Legeri"},<br />
["bjd"] = {"Bandjigali"},<br />
["bjq"] = {"Southern Betsimisaraka Malagasy"},<br />
["bkb"] = {"Finallig"},<br />
["blg"] = {"Balau"},<br />
["bmy"] = {"Bemba (Democratic Republic of Congo)"},<br />
["bpb"] = {"Barbacoas"},<br />
["btb"] = {"Beti (Cameroon)"},<br />
["btl"] = {"Bhatola"},<br />
["bxx"] = {"Borna (Democratic Republic of Congo)"},<br />
["byy"] = {"Buya"},<br />
["cbe"] = {"Chipiajes"},<br />
["cbh"] = {"Cagua"},<br />
["cca"] = {"Cauca"},<br />
["ccq"] = {"Chaungtha"},<br />
["cdg"] = {"Chamari"},<br />
["cjr"] = {"Chorotega"},<br />
["cka"] = {"Khumi Awa Chin"},<br />
["cmk"] = {"Chimakum"},<br />
["coy"] = {"Coyaima"},<br />
["cqu"] = {"Chilean Quechua"},<br />
["cum"] = {"Cumeral"},<br />
["daf"] = {"Dan"},<br />
["dap"] = {"Nisi (India)"},<br />
["dgu"] = {"Degaru"},<br />
["dha"] = {"Dhanwar (India)"},<br />
["dit"] = {"Dirari"},<br />
["djl"] = {"Djiwarli"},<br />
["dkl"] = {"Kolum So Dogon"},<br />
["drh"] = {"Darkhat"},<br />
["drr"] = {"Dororo"},<br />
["drw"] = {"Darwazi"},<br />
["dud"] = {"Hun-Saare"},<br />
["duj"] = {"Dhuwal"},<br />
["dwl"] = {"Walo Kumbe Dogon"},<br />
["dzd"] = {"Daza"},<br />
["ekc"] = {"Eastern Karnic"},<br />
["elp"] = {"Elpaputih"},<br />
["emo"] = {"Emok"},<br />
["gav"] = {"Gabutamon"},<br />
["gbc"] = {"Garawa"},<br />
["gfx"] = {"Mangetti Dune ǃXung"},<br />
["ggn"] = {"Eastern Gurung"},<br />
["ggo"] = {"Southern Gondi"},<br />
["ggr"] = {"Aghu Tharnggalu"},<br />
["gio"] = {"Gelao"},<br />
["gji"] = {"Geji"},<br />
["gli"] = {"Guliguli"},<br />
["gti"] = {"Gbati-ri"},<br />
["guv"] = {"Gey"},<br />
["hrr"] = {"Horuru"},<br />
["iap"] = {"Iapama"},<br />
["ibi"] = {"Ibilo"},<br />
["ill"] = {"Iranun"},<br />
["ilw"] = {"Talur"},<br />
["ime"] = {"Imeraguen"},<br />
["izi"] = {"Izi-Ezaa-Ikwo-Mgbo"},<br />
["jar"] = {"Jarawa (Nigeria)"},<br />
["jeg"] = {"Jeng"},<br />
["kbf"] = {"Kakauhua"},<br />
["kdv"] = {"Kado"},<br />
["kgc"] = {"Kasseng"},<br />
["kgd"] = {"Kataang"},<br />
["kgh"] = {"Upper Tanudan Kalinga"},<br />
["kjf"] = {"Khalaj [Indo-Iranian]"},<br />
["koj"] = {"Sara Dunjo"},<br />
["kox"] = {"Coxima"},<br />
["kpp"] = {"Paku Karen"},<br />
["krm"] = {"Krim"},<br />
["ktr"] = {"Kota Marudu Tinagas"},<br />
["kvs"] = {"Kunggara"},<br />
["kwq"] = {"Kwak"},<br />
["kxe"] = {"Kakihum"},<br />
["kxl"] = {"Nepali Kurux"},<br />
["kxu"] = {"Kui (India)"},<br />
["kzh"] = {"Kenuzi-Dongola"},<br />
["kzj"] = {"Coastal Kadazan"},<br />
["kzt"] = {"Tambunan Dusun"},<br />
["lba"] = {"Lui"},<br />
["leg"] = {"Lengua"},<br />
["lii"] = {"Lingkhim"},<br />
["llo"] = {"Khlor"},<br />
["lmm"] = {"Lamam"},<br />
["lmz"] = {"Lumbee"},<br />
["lsg"] = {"Lyons Sign Language"},<br />
["meg"] = {"Mea"},<br />
["mgx"] = {"Omati"},<br />
["mhh"] = {"Maskoy Pidgin"},<br />
["mja"] = {"Mahei"},<br />
["mld"] = {"Malakhel"},<br />
["mnt"] = {"Maykulan"},<br />
["mof"] = {"Mohegan-Montauk-Narragansett"},<br />
["mst"] = {"Cataelano Mandaya"},<br />
["mvm"] = {"Muya"},<br />
["mwd"] = {"Mudbura"},<br />
["mwj"] = {"Maligo"},<br />
["mwx"] = {"Mediak"},<br />
["mwy"] = {"Mosiro"},<br />
["myd"] = {"Maramba"},<br />
["myi"] = {"Mina (India)"},<br />
["myq"] = {"Forest Maninka"},<br />
["myt"] = {"Sangab Mandaya"},<br />
["nad"] = {"Nijadali"},<br />
["nbf"] = {"Naxi"},<br />
["nbx"] = {"Ngura"},<br />
["ncp"] = {"Ndaktup"},<br />
["ngo"] = {"Ngoni"},<br />
["nln"] = {"Durango Nahuatl"},<br />
["nlr"] = {"Ngarla"},<br />
["nns"] = {"Ningye"},<br />
["nnx"] = {"Ngong"},<br />
["noo"] = {"Nootka"},<br />
["nts"] = {"Natagaimas"},<br />
["nxu"] = {"Narau"},<br />
["ome"] = {"Omejes"},<br />
["oun"] = {"ǃOǃung"},<br />
["pat"] = {"Papitalai"},<br />
["pbz"] = {"Palu"},<br />
["pcr"] = {"Panang"},<br />
["pgy"] = {"Pongyong"},<br />
["plp"] = {"Palpa"},<br />
["pmc"] = {"Palumata"},<br />
["pmu"] = {"Mirpur Panjabi"},<br />
["pod"] = {"Ponares"},<br />
["ppa"] = {"Pao"},<br />
["ppr"] = {"Piru"},<br />
["prb"] = {"Lua'"},<br />
["pry"] = {"Pray 3"},<br />
["puk"] = {"Pu Ko"},<br />
["puz"] = {"Purum Naga"},<br />
["rie"] = {"Rien"},<br />
["rmr"] = {"Caló"},<br />
["rna"] = {"Runa"},<br />
["rsi"] = {"Rennellese Sign Language"},<br />
["sap"] = {"Sanapaná"},<br />
["sca"] = {"Sansu"},<br />
["sdm"] = {"Semandang"},<br />
["sgl"] = {"Sanglechi-Ishkashimi"},<br />
["sgo"] = {"Songa"},<br />
["skk"] = {"Sok"},<br />
["snh"] = {"Shinabo"},<br />
["sul"] = {"Surigaonon"},<br />
["sum"] = {"Sumo-Mayangna"},<br />
["svr"] = {"Savara"},<br />
["tbb"] = {"Tapeba"},<br />
["tdu"] = {"Tempasuk Dusun"},<br />
["tgg"] = {"Tangga"},<br />
["thc"] = {"Tai Hang Tong"},<br />
["thw"] = {"Thudam"},<br />
["thx"] = {"The"},<br />
["tid"] = {"Tidong"},<br />
["tie"] = {"Tingal"},<br />
["tkk"] = {"Takpa"},<br />
["tlw"] = {"South Wemale"},<br />
["tmp"] = {"Tai Mène"},<br />
["tne"] = {"Tinoc Kallahan"},<br />
["tnf"] = {"Tangshewi"},<br />
["toe"] = {"Tomedes"},<br />
["tsf"] = {"Southwestern Tamang"},<br />
["unp"] = {"Worora"},<br />
["uok"] = {"Uokha"},<br />
["vki"] = {"Ija-Zuba"},<br />
["wgw"] = {"Wagawaga"},<br />
["wit"] = {"Wintu"},<br />
["wiw"] = {"Wirangu"},<br />
["wra"] = {"Warapu"},<br />
["xba"] = {"Kamba (Brazil)"},<br />
["xbx"] = {"Kabixí"},<br />
["xia"] = {"Xiandao"},<br />
["xip"] = {"Xipináwa"},<br />
["xkh"] = {"Karahawyana"},<br />
["xrq"] = {"Karranga"},<br />
["xtz"] = {"Tasmanian"},<br />
["ybd"] = {"Yangbye"},<br />
["yds"] = {"Yiddish Sign Language"},<br />
["yen"] = {"Yendang"},<br />
["yiy"] = {"Yir Yoront"},<br />
["yma"] = {"Yamphe"},<br />
["ymt"] = {"Mator-Taygi-Karagas"},<br />
["ynh"] = {"Yangho"},<br />
["yos"] = {"Yos"},<br />
["yri"] = {"Yarí"},<br />
["yuu"] = {"Yugh"},<br />
["zir"] = {"Ziriya"}<br />
}<br />
<br />
return {<br />
active = active,<br />
deprecated = deprecated,<br />
}</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Lang/data&diff=2431
Module:Lang/data
2022-02-08T20:15:50Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>local lang_obj = mw.language.getContentLanguage();<br />
local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag<br />
<br />
<br />
--[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------<br />
<br />
primary table of tables that decode:<br />
lang -> language tags and names<br />
script -> ISO 15924 script tags<br />
region -> ISO 3166 region tags<br />
variant -> iana registered variant tags<br />
suppressed -> map of scripts tags and their associated language tags<br />
<br />
all of these data come from separate modules that are derived from the IANA language-subtag-registry file<br />
<br />
key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes<br />
have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches<br />
the first name.<br />
<br />
]]<br />
<br />
local function key_to_lower (module, src_type)<br />
local out = {};<br />
local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module); -- fetch data from this module; require() avoids metatable trap for variant data<br />
if 'var_sup' == src_type then<br />
for k, v in pairs (source) do<br />
out[k:lower()] = v; -- for variant and suppressed everything is needed<br />
end<br />
<br />
elseif 'lang' == src_type and source.active then -- for ~/iana_languages (active)<br />
for k, v in pairs (source.active) do<br />
out[k:lower()] = v[1]; -- ignore multiple names; take first name only<br />
end<br />
<br />
elseif 'lang_dep' == src_type and source.deprecated then -- for ~/iana_languages (deprecated)<br />
for k, v in pairs (source.deprecated) do<br />
out[k:lower()] = v[1]; -- ignore multiple names; take first name only<br />
end<br />
<br />
else -- here for all other sources<br />
for k, v in pairs (source) do<br />
out[k:lower()] = v[1]; -- ignore multiple names; take first name only<br />
end<br />
end<br />
return out;<br />
end<br />
<br />
local lang_name_table_t = {<br />
lang = key_to_lower ('Module:Language/data/iana languages', 'lang'),<br />
lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'),<br />
script = key_to_lower ('Module:Language/data/iana scripts'), -- script keys are capitalized; set to lower<br />
region = key_to_lower ('Module:Language/data/iana regions'), -- region keys are uppercase; set to lower<br />
variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'),<br />
suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'), -- script keys are capitalized; set to lower<br />
}<br />
<br />
<br />
--[[--------------------------< I 1 8 N M E D I A W I K I O V E R R I D E >--------------------------------<br />
<br />
For internationalization; not used at en.wiki<br />
<br />
The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal.<br />
Translating ~8,000 language names is also not ideal. MediaWiki maintains (much) shorter lists of language names<br />
in most languages for which there is a Wikipedia edition. When desired, Module:Lang can use the MediaWiki <br />
language list for the local language.<br />
<br />
Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all.<br />
When incomplete, MediaWiki's list will 'fall back' to another language (typically English). When that happens<br />
add an appropriate entry to the override table below.<br />
<br />
Caveat lector: the list of MediaWiki language names for your language may not be correct. At en.wiki, the<br />
MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags. Often it is simply<br />
spelling differences:<br />
bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho<br />
bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym<br />
dv: IANA: Dhivehi MW: Divehi<br />
el: IANA: Modern Greek MW: Greek<br />
ht: IANA: Haitian MW: Haitian Creole<br />
ky: IANA: Kirghiz MW: Kyrgyz<br />
li: IANA: Limburgan MW: Limburgish<br />
or: IANA: Oriya MW: Odia<br />
os: IANA: Ossetian MW: Ossetic<br />
"pa: IANA: Panjabi MW: Punjabi<br />
"ps: IANA: Pushto MW: Pashto<br />
"to: IANA: Tonga MW: Tongan<br />
"ug: IANA: Uighur MW: Uyghur<br />
use the override table to override language names that are incorrect for your project<br />
<br />
To see the list of names that MediaWiki has for your language, enter this in the Debug colsole:<br />
=mw.dumpObject (mw.language.fetchLanguageNames ('<tag>', 'all'))<br />
(replacing <tag> with the language tag for your language)<br />
<br />
Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true.<br />
<br />
]]<br />
<br />
local media_wiki_override_enable = false; -- set to true to override IANA names with MediaWiki names; always false at en.wiki<br />
-- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all<br />
if true == media_wiki_override_enable then<br />
local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, 'all'); -- get a table of language tag/name pairs known to MediaWiki<br />
for tag, name in pairs (mw_languages_by_tag_t) do -- loop through each tag/name pair in the MediaWiki list<br />
if lang_name_table_t.lang[tag] then -- if the tag is in the main list<br />
lang_name_table_t.lang[tag] = name; -- overwrite exisiting name with the name from MediaWiki<br />
end<br />
end<br />
end<br />
<br />
<br />
--[[--------------------------< O V E R R I D E >--------------------------------------------------------------<br />
<br />
Language codes and names in this table override the BCP47 names in lang_name_table.<br />
<br />
indexes in this table shall always be lower case<br />
<br />
]]<br />
<br />
local override = {<br />
------------------------------< I S O _ 6 3 9 - 1 >------------------------------------------------------------<br />
<br />
["ca-valencia"] = "Valencian",<br />
["cu"] = "Church Slavonic", -- 2nd IANA name;<br />
["de-at"] = "Austrian German", -- these code-region and code-variant tags to match en.wiki article names<br />
["de-ch"] = "Swiss Standard German",<br />
["en-au"] = "Australian English",<br />
["en-ca"] = "Canadian English",<br />
["en-emodeng"] = "Early Modern English",<br />
["en-gb"] = "British English",<br />
["en-ie"] = "Irish English",<br />
["en-in"] = "Indian English",<br />
["en-nz"] = "New Zealand English",<br />
["en-us"] = "American English",<br />
["en-za"] = "South African English",<br />
["fy"] = "West Frisian", -- Western Frisian<br />
["mo"] = "Moldovan", -- Moldavian (deprecated code); to match en.wiki article title<br />
["nl-be"] = "Flemish", -- match MediaWiki<br />
["oc-provenc"] = "Provençal",<br />
["ps"] = "Pashto", -- Pushto<br />
["pt-br"] = "Brazilian Portuguese", -- match MediaWiki<br />
["tw-asante"] = "Asante Twi",<br />
<br />
-- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages<br />
--<begin do-not-edit except to comment out>--<br />
["av"] = "Avar", -- Avaric<br />
["bo"] = "Standard Tibetan", -- Tibetan<br />
["el"] = "Greek", -- Modern Greek<br />
-- ["en-SA"] = "South African English", -- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa<br />
["ff"] = "Fula", -- Fulah<br />
["ht"] = "Haitian Creole", -- Haitian<br />
["hz"] = "Otjiherero", -- Herero<br />
["ii"] = "Yi", -- Sichuan Yi<br />
["ki"] = "Gikuyu", -- Kikuyu<br />
["kl"] = "Greenlandic", -- Kalaallisut<br />
["ky"] = "Kyrgyz", -- Kirghiz<br />
["lg"] = "Luganda", -- Ganda<br />
["li"] = "Limburgish", -- Limburgan<br />
["mi"] = "Māori", -- Maori<br />
["na"] = "Nauruan", -- Nauru<br />
["nb"] = "Bokmål", -- Norwegian Bokmål<br />
["nd"] = "Northern Ndebele", -- North Ndebele<br />
["nn"] = "Nynorsk", -- Norwegian Nynorsk<br />
["nr"] = "Southern Ndebele", -- South Ndebele<br />
["ny"] = "Chichewa", -- Nyanja<br />
["oj"] = "Ojibwe", -- Ojibwa<br />
["or"] = "Odia", -- Oriya<br />
["pa"] = "Punjabi", -- Panjabi<br />
["rn"] = "Kirundi", -- Rundi<br />
["sl"] = "Slovene", -- Slovenian<br />
["ss"] = "Swazi", -- Swati<br />
["st"] = "Sotho", -- Southern Sotho<br />
["to"] = "Tongan", -- Tonga<br />
--<end do-not-edit except to comment out>--<br />
<br />
<br />
------------------------------< I S O _ 6 3 9 - 2, - 3, - 5 >----------------------------------------------<br />
<br />
["alv"] = "Atlantic–Congo languages", -- to match en.wiki article title (endash)<br />
["arc"] = "Aramaic", -- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE);<br />
["art"] = "constructed", -- to match en.wiki article; lowercase for category name<br />
["bhd"] = "Bhadarwahi", -- Bhadrawahi; to match en.wiki article title<br />
["bla"] = "Blackfoot", -- Siksika; to match en.wiki article title<br />
["bua"] = "Buryat", -- Buriat; this is a macro language; these four use wp preferred transliteration;<br />
["bxm"] = "Mongolian Buryat", -- Mongolia Buriat; these three all redirect to Buryat<br />
["bxr"] = "Russian Buryat", -- Russia Buriat;<br />
["bxu"] = "Chinese Buryat", -- China Buriat;<br />
["byr"] = "Yipma", -- Baruya, Yipma<br />
["egy"] = "Ancient Egyptian", -- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic <br />
["ems"] = "Alutiiq", -- Pacific Gulf Yupik; to match en.wiki article title<br />
["esx"] = "Eskimo–Aleut languages", -- to match en.wiki article title (endash)<br />
["frr"] = "North Frisian", -- Northern Frisian<br />
["frs"] = "East Frisian Low Saxon", -- Eastern Frisian<br />
["gsw-fr"] = "Alsatian", -- match MediaWiki<br />
["haa"] = "Hän", -- Han; to match en.wiki article title<br />
["hmx"] = "Hmong–Mien languages", -- to match en.wiki article title (endash)<br />
["ilo"] = "Ilocano", -- Iloko; to match en.wiki article title<br />
["jam"] = "Jamaican Patois", -- Jamaican Creole English<br />
["luo"] = "Dholuo", -- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo<br />
["mhr"] = "Meadow Mari", -- Eastern Mari<br />
["mid"] = "Modern Mandaic", -- Mandaic<br />
['mis'] = "uncoded", -- Uncoded languages; capitalization; special scope, not collective scope;<br />
["mkh"] = "Mon–Khmer languages", -- to match en.wiki article title (endash)<br />
["mla"] = "Tamambo", -- Malo<br />
['mte'] = "Mono-Alu", -- Mono (Solomon Islands)<br />
['mul'] = "multiple", -- Multiple languages; capitalization; special scope, not collective scope;<br />
["nan-tw"] = "Taiwanese Hokkien", -- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title<br />
["new"] = "Newar", -- Newari, Nepal Bhasa; to match en,wiki article title<br />
["ngf"] = "Trans–New Guinea languages", -- to match en.wiki article title (endash)<br />
["nic"] = "Niger–Congo languages", -- Niger-Kordofanian languages; to match en,wiki article title<br />
["nrf"] = "Norman", -- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text<br />
["nrf-gg"] = "Guernésiais", -- match MediaWiki<br />
["nrf-je"] = "Jèrriais", -- match MediaWiki<br />
["nzi"] = "Nzema", -- Nzima; to match en.wiki article title<br />
["oma"] = "Omaha–Ponca", -- to match en.wiki article title (endash)<br />
["orv"] = "Old East Slavic", -- Old Russian<br />
["pfl"] = "Palatine German", -- Pfaelzisch; to match en.wiki article<br />
["pie"] = "Piro Pueblo", -- Piro; to match en.wiki article<br />
["pms"] = "Piedmontese", -- Piemontese; to match en.wiki article title<br />
["pnb"] = "Punjabi (Western)", -- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name()<br />
["rop"] = "Australian Kriol", -- Kriol; en.wiki article is a dab; point to correct en.wiki article<br />
["sdo"] = "Bukar–Sadong", -- Bukar-Sadung Bidayuh; to match en.wiki article title<br />
["stq"] = "Saterland Frisian", -- Saterfriesisch<br />
["und"] = "undetermined", -- capitalization to match existing category<br />
["wrg"] = "Warrongo", -- Warungu<br />
["xal-ru"] = "Kalmyk", -- to match en.wiki article title<br />
["xgf"] = "Tongva", -- ISO 639-3 is Gabrielino-Fernandeño<br />
["yuf"] = "Havasupai–Hualapai", -- Havasupai-Walapai-Yavapai; to match en.wiki article title<br />
["zxx"] = "no linguistic content", -- capitalization<br />
<br />
-- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages<br />
--<begin do-not-edit except to comment out>--<br />
["ace"] = "Acehnese", -- Achinese<br />
["aec"] = "Sa'idi Arabic", -- Saidi Arabic<br />
["akl"] = "Aklan", -- Aklanon<br />
["alt"] = "Altay", -- Southern Altai<br />
["apm"] = "Mescalero-Chiricahua", -- Mescalero-Chiricahua Apache<br />
["bal"] = "Balochi", -- Baluchi<br />
-- ["bcl"] = "Central Bicolano", -- Central Bikol<br />
["bin"] = "Edo", -- Bini<br />
["bpy"] = "Bishnupriya Manipuri", -- Bishnupriya<br />
["chg"] = "Chagatay", -- Chagatai<br />
["ckb"] = "Sorani Kurdish", -- Central Kurdish<br />
["cnu"] = "Shenwa", -- Chenoua<br />
["coc"] = "Cocopah", -- Cocopa<br />
["diq"] = "Zazaki", -- Dimli<br />
["fit"] = "Meänkieli", -- Tornedalen Finnish<br />
["fkv"] = "Kven", -- Kven Finnish<br />
["frk"] = "Old Frankish", -- Frankish<br />
["gez"] = "Ge'ez", -- Geez<br />
["gju"] = "Gujari", -- Gujari<br />
["gsw"] = "Alemannic German", -- Swiss German<br />
["gul"] = "Gullah", -- Sea Island Creole English<br />
["hak"] = "Hakka", -- Hakka Chinese<br />
["hbo"] = "Biblical Hebrew", -- Ancient Hebrew<br />
["hnd"] = "Hindko", -- Southern Hindko<br />
-- ["ikt"] = "Inuvialuk", -- Inuinnaqtun<br />
["kaa"] = "Karakalpak", -- Kara-Kalpak<br />
["khb"] = "Tai Lü", -- Lü<br />
["kmr"] = "Kurmanji Kurdish", -- Northern Kurdish<br />
["kpo"] = "Kposo", -- Ikposo<br />
["krj"] = "Kinaray-a", -- Kinaray-A<br />
["ktz"] = "Juǀ'hoan", -- Juǀʼhoan<br />
["lez"] = "Lezgian", -- Lezghian<br />
["liv"] = "Livonian", -- Liv<br />
["lng"] = "Lombardic", -- Langobardic<br />
["mia"] = "Miami-Illinois", -- Miami<br />
["miq"] = "Miskito", -- Mískito<br />
["mix"] = "Mixtec", -- Mixtepec Mixtec<br />
["mni"] = "Meitei", -- Manipuri<br />
["mrj"] = "Hill Mari", -- Western Mari<br />
["mww"] = "White Hmong", -- Hmong Daw<br />
["nds-nl"] = "Dutch Low Saxon", -- Low German<br />
-- ["new"] = "Nepal Bhasa", -- Newari<br />
["nso"] = "Northern Sotho", -- Pedi<br />
-- ["nwc"] = "Classical Nepal Bhasa", -- Classical Newari, Classical Nepal Bhasa, Old Newari<br />
["ood"] = "O'odham", -- Tohono O'odham<br />
["otk"] = "Old Turkic", -- Old Turkish<br />
["pal"] = "Middle Persian", -- Pahlavi<br />
["pam"] = "Kapampangan", -- Pampanga<br />
["phr"] = "Potwari", -- Pahari-Potwari<br />
["pka"] = "Jain Prakrit", -- Ardhamāgadhī Prākrit<br />
-- ["pnb"] = "Punjabi", -- Western Panjabi<br />
["psu"] = "Shauraseni", -- Sauraseni Prākrit<br />
["rap"] = "Rapa Nui", -- Rapanui<br />
["rar"] = "Cook Islands Māori", -- Rarotongan<br />
["rmu"] = "Scandoromani", -- Tavringer Romani<br />
["rom"] = "Romani", -- Romany<br />
["rup"] = "Aromanian", -- Macedo-Romanian<br />
["ryu"] = "Okinawan", -- Central Okinawan<br />
["sdc"] = "Sassarese", -- Sassarese Sardinian<br />
["sdn"] = "Gallurese", -- Gallurese Sardinian<br />
["shp"] = "Shipibo", -- Shipibo-Conibo<br />
["src"] = "Logudorese", -- Logudorese Sardinian<br />
["sro"] = "Campidanese", -- Campidanese Sardinian<br />
["tkl"] = "Tokelauan", -- Tokelau<br />
["tvl"] = "Tuvaluan", -- Tuvalu<br />
["tyv"] = "Tuvan", -- Tuvinian<br />
["vls"] = "West Flemish", -- Vlaams<br />
["wep"] = "Westphalian", -- Westphalien<br />
["xal"] = "Oirat", -- Kalmyk<br />
["xcl"] = "Old Armenian", -- Classical Armenian<br />
["yua"] = "Yucatec Maya", -- Yucateco<br />
--<end do-not-edit except to comment out>--<br />
<br />
<br />
------------------------------< P R I V A T E _ U S E _ T A G S >----------------------------------------------<br />
<br />
["alg-x-proto"] = "Proto-Algonquian", -- alg in IANA is Algonquian languages<br />
["cel-x-proto"] = "Proto-Celtic", -- cel in IANA is Celtic languages<br />
["gem-x-proto"] = "Proto-Germanic", -- gem in IANA is Germanic languages<br />
["gmw-x-ecg"] = "East Central German",<br />
["grc-x-aeolic"] = "Aeolic Greek", -- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre<br />
["grc-x-attic"] = "Attic Greek",<br />
["grc-x-biblical"] = "Biblical Greek",<br />
["grc-x-byzant"] = "Byzantine Greek",<br />
["grc-x-classic"] = "Classical Greek",<br />
["grc-x-doric"] = "Doric Greek",<br />
["grc-x-hellen"] = "Hellenistic Greek",<br />
["grc-x-ionic"] = "Ionic Greek",<br />
["grc-x-koine"] = "Koinē Greek",<br />
["grc-x-medieval"] = "Medieval Greek",<br />
["grc-x-patris"] = "Patristic Greek",<br />
["grk-x-proto"] = "Proto-Greek", -- grk in IANA is Greek languages<br />
["iir-x-proto"] = "Proto-Indo-Iranian", -- iir in IANA is Indo-Iranian Languages<br />
["ine-x-proto"] = "Proto-Indo-European",<br />
["ira-x-proto"] = "Proto-Iranian", -- ira in IANA is Iranian languages<br />
["itc-x-proto"] = "Proto-Italic", -- itc in IANA is Italic languages<br />
["ksh-x-colog"] = "Colognian", -- en.wiki article is Colognian; ksh (Kölsch) redirects there<br />
["la-x-medieval"] = "Medieval Latin",<br />
["mis-x-ripuar"] = "Ripuarian", -- replaces improper use of ksh in wp_languages<br />
["sem-x-proto"] = "Proto-Semitic",<br />
["sla-x-proto"] = "Proto-Slavic", -- sla in IANA is Slavic languages<br />
["yuf-x-hav"] = "Havasupai", -- IANA name for these three is Havasupai-Walapai-Yavapai<br />
["yuf-x-wal"] = "Walapai",<br />
["yuf-x-yav"] = "Yavapai",<br />
}<br />
<br />
<br />
--[[--------------------------< A R T I C L E _ L I N K >------------------------------------------------------<br />
<br />
for those rare occasions when article titles don't fit with the normal '<language name>-language', this table<br />
maps language code to article title. Use of this table should be avoided and the use of redirects preferred as<br />
that is the long-standing method of handling article names that don't fit with the normal pattern<br />
<br />
]]<br />
<br />
local article_name = {<br />
["lij"] = "Ligurian (Romance language)", -- Ligurian; see Template_talk:Lang#Ligurian_dab<br />
['mnh'] = "Mono language (Congo)", -- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages<br />
['mnr'] = "Mono language (California)", -- Mono (USA)<br />
['mru'] = "Mono language (Cameroon)", -- Mono (Cameroon)<br />
["xlg"] = "Ligurian (ancient language)", -- see Template_talk:Lang#Ligurian_dab<br />
}<br />
<br />
<br />
--[=[-------------------------< R T L _ S C R I P T S >--------------------------------------------------------<br />
<br />
ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]]<br />
<br />
last update to this list: 2017-12-24<br />
<br />
]=]<br />
<br />
local rtl_scripts = {<br />
'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr',<br />
'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb',<br />
'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg',<br />
'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole',<br />
};<br />
<br />
<br />
--[[--------------------------< T R A N S L I T _ T I T L E S >------------------------------------------------<br />
<br />
This is a table of tables of transliteration standards and the language codes or language scripts that apply to<br />
those standards. This table is used to create the tool-tip text associated with the transliterated text displayed<br />
by some of the {{lang-??}} templates.<br />
<br />
These tables are more-or-less copied directly from {{transl}}. The standard 'NO_STD' is a construct to allow for<br />
the cases when no |std= parameter value is provided.<br />
<br />
]]<br />
<br />
local translit_title_table = {<br />
['ahl'] = {<br />
['default'] = 'Academy of the Hebrew Language transliteration',<br />
},<br />
<br />
['ala'] = {<br />
['default'] = 'American Library Association – Library of Congress transliteration',<br />
},<br />
<br />
['ala-lc'] = {<br />
['default'] = 'American Library Association – Library of Congress transliteration',<br />
},<br />
<br />
['batr'] = {<br />
['default'] = 'Bikdash Arabic Transliteration Rules',<br />
},<br />
<br />
['bgn/pcgn'] = {<br />
['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration',<br />
},<br />
<br />
['din'] = {<br />
['ar'] = 'DIN 31635 Arabic',<br />
['fa'] = 'DIN 31635 Arabic',<br />
['ku'] = 'DIN 31635 Arabic',<br />
['ps'] = 'DIN 31635 Arabic',<br />
['tg'] = 'DIN 31635 Arabic',<br />
['ug'] = 'DIN 31635 Arabic',<br />
['ur'] = 'DIN 31635 Arabic',<br />
['arab'] = 'DIN 31635 Arabic',<br />
<br />
['default'] = 'DIN transliteration',<br />
},<br />
<br />
['eae'] = {<br />
['default'] = 'Encyclopaedia Aethiopica transliteration',<br />
},<br />
<br />
['hepburn'] = {<br />
['default'] = 'Hepburn transliteration',<br />
},<br />
<br />
['hunterian'] = {<br />
['default'] = 'Hunterian transliteration',<br />
},<br />
<br />
['iast'] = {<br />
['default'] = 'International Alphabet of Sanskrit transliteration',<br />
},<br />
<br />
['iso'] = { -- when a transliteration standard is supplied<br />
['ab'] = 'ISO 9 Cyrillic',<br />
['ba'] = 'ISO 9 Cyrillic',<br />
['be'] = 'ISO 9 Cyrillic',<br />
['bg'] = 'ISO 9 Cyrillic',<br />
['kk'] = 'ISO 9 Cyrillic',<br />
['ky'] = 'ISO 9 Cyrillic',<br />
['mn'] = 'ISO 9 Cyrillic',<br />
['ru'] = 'ISO 9 Cyrillic',<br />
['tg'] = 'ISO 9 Cyrillic',<br />
['uk'] = 'ISO 9 Cyrillic',<br />
['bua'] = 'ISO 9 Cyrillic',<br />
['sah'] = 'ISO 9 Cyrillic',<br />
['tut'] = 'ISO 9 Cyrillic',<br />
['xal'] = 'ISO 9 Cyrillic',<br />
['cyrl'] = 'ISO 9 Cyrillic',<br />
<br />
['ar'] = 'ISO 233 Arabic',<br />
['ku'] = 'ISO 233 Arabic',<br />
['ps'] = 'ISO 233 Arabic',<br />
['ug'] = 'ISO 233 Arabic',<br />
['ur'] = 'ISO 233 Arabic',<br />
['arab'] = 'ISO 233 Arabic',<br />
<br />
['he'] = 'ISO 259 Hebrew',<br />
['yi'] = 'ISO 259 Hebrew',<br />
['hebr'] = 'ISO 259 Hebrew',<br />
<br />
['el'] = 'ISO 843 Greek',<br />
['grc'] = 'ISO 843 Greek',<br />
<br />
['ja'] = 'ISO 3602 Japanese',<br />
['hira'] = 'ISO 3602 Japanese',<br />
['hrkt'] = 'ISO 3602 Japanese',<br />
['jpan'] = 'ISO 3602 Japanese',<br />
['kana'] = 'ISO 3602 Japanese',<br />
<br />
['zh'] = 'ISO 7098 Chinese',<br />
['chi'] = 'ISO 7098 Chinese',<br />
['pny'] = 'ISO 7098 Chinese',<br />
['zho'] = 'ISO 7098 Chinese',<br />
-- ['han'] = 'ISO 7098 Chinese', -- unicode alias of Hani? doesn't belong here? should be Hani?<br />
['hans'] = 'ISO 7098 Chinese',<br />
['hant'] = 'ISO 7098 Chinese',<br />
<br />
['ka'] = 'ISO 9984 Georgian',<br />
['kat'] = 'ISO 9984 Georgian',<br />
<br />
['arm'] = 'ISO 9985 Armenian',<br />
['hy'] = 'ISO 9985 Armenian',<br />
<br />
['th'] = 'ISO 11940 Thai',<br />
['tha'] = 'ISO 11940 Thai',<br />
<br />
['ko'] = 'ISO 11941 Korean',<br />
['kor'] = 'ISO 11941 Korean',<br />
<br />
['awa'] = 'ISO 15919 Indic',<br />
['bho'] = 'ISO 15919 Indic',<br />
['bn'] = 'ISO 15919 Indic',<br />
['bra'] = 'ISO 15919 Indic',<br />
['doi'] = 'ISO 15919 Indic',<br />
['dra'] = 'ISO 15919 Indic',<br />
['gon'] = 'ISO 15919 Indic',<br />
['gu'] = 'ISO 15919 Indic',<br />
['hi'] = 'ISO 15919 Indic',<br />
['inc'] = 'ISO 15919 Indic',<br />
['kn'] = 'ISO 15919 Indic',<br />
['kok'] = 'ISO 15919 Indic',<br />
['ks'] = 'ISO 15919 Indic',<br />
['mag'] = 'ISO 15919 Indic',<br />
['mai'] = 'ISO 15919 Indic',<br />
['ml'] = 'ISO 15919 Indic',<br />
['mr'] = 'ISO 15919 Indic',<br />
['ne'] = 'ISO 15919 Indic',<br />
['new'] = 'ISO 15919 Indic',<br />
['or'] = 'ISO 15919 Indic',<br />
['pa'] = 'ISO 15919 Indic',<br />
['raj'] = 'ISO 15919 Indic',<br />
['sa'] = 'ISO 15919 Indic',<br />
['sat'] = 'ISO 15919 Indic',<br />
['sd'] = 'ISO 15919 Indic',<br />
['si'] = 'ISO 15919 Indic',<br />
['ta'] = 'ISO 15919 Indic',<br />
['tcy'] = 'ISO 15919 Indic',<br />
['te'] = 'ISO 15919 Indic',<br />
['beng'] = 'ISO 15919 Indic',<br />
['brah'] = 'ISO 15919 Indic',<br />
['deva'] = 'ISO 15919 Indic',<br />
['gujr'] = 'ISO 15919 Indic',<br />
['guru'] = 'ISO 15919 Indic',<br />
['knda'] = 'ISO 15919 Indic',<br />
['mlym'] = 'ISO 15919 Indic',<br />
['orya'] = 'ISO 15919 Indic',<br />
['sinh'] = 'ISO 15919 Indic',<br />
['taml'] = 'ISO 15919 Indic',<br />
['telu'] = 'ISO 15919 Indic',<br />
<br />
['default'] = 'ISO transliteration',<br />
},<br />
<br />
['jyutping'] = {<br />
['default'] = 'Jyutping transliteration',<br />
},<br />
<br />
['mlcts'] = {<br />
['default'] = 'Myanmar Language Commission Transcription System',<br />
},<br />
<br />
['mr'] = {<br />
['default'] = 'McCune–Reischauer transliteration',<br />
},<br />
<br />
['nihon-shiki'] = {<br />
['default'] = 'Nihon-shiki transliteration',<br />
},<br />
<br />
['no_std'] = { -- when no transliteration standard is supplied<br />
['akk'] = 'Semitic transliteration',<br />
['sem'] = 'Semitic transliteration',<br />
['phnx'] = 'Semitic transliteration',<br />
['xsux'] = 'Cuneiform transliteration',<br />
},<br />
<br />
['pinyin'] = {<br />
['default'] = 'Pinyin transliteration',<br />
},<br />
<br />
['rr'] = {<br />
['default'] = 'Revised Romanization of Korean transliteration',<br />
},<br />
<br />
['rtgs'] = {<br />
['default'] = 'Royal Thai General System of Transcription',<br />
},<br />
<br />
['satts'] = {<br />
['default'] = 'Standard Arabic Technical Transliteration System transliteration',<br />
},<br />
<br />
['scientific'] = {<br />
['default'] = 'scientific transliteration',<br />
},<br />
<br />
['ukrainian'] = {<br />
['default'] = 'Ukrainian National system of romanization',<br />
},<br />
<br />
['ungegn'] = {<br />
['default'] = 'United Nations Group of Experts on Geographical Names transliteration',<br />
},<br />
<br />
['wadegile'] = {<br />
['default'] = 'Wade–Giles transliteration',<br />
},<br />
<br />
['wehr'] = {<br />
['default'] = 'Hans Wehr transliteration',<br />
},<br />
};<br />
<br />
<br />
return<br />
{<br />
this_wiki_lang_tag = this_wiki_lang_tag,<br />
this_wiki_lang_dir = lang_obj:getDir(), -- wiki's language direction<br />
<br />
article_name = article_name,<br />
lang_name_table = lang_name_table_t,<br />
override = override,<br />
rtl_scripts = rtl_scripts,<br />
special_tags_table = special_tags_table,<br />
translit_title_table = translit_title_table,<br />
};</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Lang/ISO_639_synonyms&diff=2429
Module:Lang/ISO 639 synonyms
2022-02-08T20:15:50Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>-- File-Date: 2013-01-11<br />
return {<br />
["aar"] = "aa",<br />
["abk"] = "ab",<br />
["afr"] = "af",<br />
["aka"] = "ak",<br />
["amh"] = "am",<br />
["ara"] = "ar",<br />
["arg"] = "an",<br />
["asm"] = "as",<br />
["ava"] = "av",<br />
["ave"] = "ae",<br />
["aym"] = "ay",<br />
["aze"] = "az",<br />
["bak"] = "ba",<br />
["bam"] = "bm",<br />
["bel"] = "be",<br />
["ben"] = "bn",<br />
["bih"] = "bh",<br />
["bis"] = "bi",<br />
["bod"] = "bo",<br />
["bos"] = "bs",<br />
["bre"] = "br",<br />
["bul"] = "bg",<br />
["cat"] = "ca",<br />
["ces"] = "cs",<br />
["cha"] = "ch",<br />
["che"] = "ce",<br />
["chu"] = "cu",<br />
["chv"] = "cv",<br />
["cor"] = "kw",<br />
["cos"] = "co",<br />
["cre"] = "cr",<br />
["cym"] = "cy",<br />
["dan"] = "da",<br />
["deu"] = "de",<br />
["div"] = "dv",<br />
["dzo"] = "dz",<br />
["ell"] = "el",<br />
["eng"] = "en",<br />
["epo"] = "eo",<br />
["est"] = "et",<br />
["eus"] = "eu",<br />
["ewe"] = "ee",<br />
["fao"] = "fo",<br />
["fas"] = "fa",<br />
["fij"] = "fj",<br />
["fin"] = "fi",<br />
["fra"] = "fr",<br />
["fry"] = "fy",<br />
["ful"] = "ff",<br />
["gla"] = "gd",<br />
["gle"] = "ga",<br />
["glg"] = "gl",<br />
["glv"] = "gv",<br />
["grn"] = "gn",<br />
["guj"] = "gu",<br />
["hat"] = "ht",<br />
["hau"] = "ha",<br />
["heb"] = "he",<br />
["her"] = "hz",<br />
["hin"] = "hi",<br />
["hmo"] = "ho",<br />
["hrv"] = "hr",<br />
["hun"] = "hu",<br />
["hye"] = "hy",<br />
["ibo"] = "ig",<br />
["ido"] = "io",<br />
["iii"] = "ii",<br />
["iku"] = "iu",<br />
["ile"] = "ie",<br />
["ina"] = "ia",<br />
["ind"] = "id",<br />
["ipk"] = "ik",<br />
["isl"] = "is",<br />
["ita"] = "it",<br />
["jav"] = "jv",<br />
["jpn"] = "ja",<br />
["kal"] = "kl",<br />
["kan"] = "kn",<br />
["kas"] = "ks",<br />
["kat"] = "ka",<br />
["kau"] = "kr",<br />
["kaz"] = "kk",<br />
["khm"] = "km",<br />
["kik"] = "ki",<br />
["kin"] = "rw",<br />
["kir"] = "ky",<br />
["kom"] = "kv",<br />
["kon"] = "kg",<br />
["kor"] = "ko",<br />
["kua"] = "kj",<br />
["kur"] = "ku",<br />
["lao"] = "lo",<br />
["lat"] = "la",<br />
["lav"] = "lv",<br />
["lim"] = "li",<br />
["lin"] = "ln",<br />
["lit"] = "lt",<br />
["ltz"] = "lb",<br />
["lub"] = "lu",<br />
["lug"] = "lg",<br />
["mah"] = "mh",<br />
["mal"] = "ml",<br />
["mar"] = "mr",<br />
["mkd"] = "mk",<br />
["mlg"] = "mg",<br />
["mlt"] = "mt",<br />
["mon"] = "mn",<br />
["mri"] = "mi",<br />
["msa"] = "ms",<br />
["mya"] = "my",<br />
["nau"] = "na",<br />
["nav"] = "nv",<br />
["nbl"] = "nr",<br />
["nde"] = "nd",<br />
["ndo"] = "ng",<br />
["nep"] = "ne",<br />
["nld"] = "nl",<br />
["nno"] = "nn",<br />
["nob"] = "nb",<br />
["nor"] = "no",<br />
["nya"] = "ny",<br />
["oci"] = "oc",<br />
["oji"] = "oj",<br />
["ori"] = "or",<br />
["orm"] = "om",<br />
["oss"] = "os",<br />
["pan"] = "pa",<br />
["pli"] = "pi",<br />
["pol"] = "pl",<br />
["por"] = "pt",<br />
["pus"] = "ps",<br />
["que"] = "qu",<br />
["roh"] = "rm",<br />
["ron"] = "ro",<br />
["run"] = "rn",<br />
["rus"] = "ru",<br />
["sag"] = "sg",<br />
["san"] = "sa",<br />
["sin"] = "si",<br />
["slk"] = "sk",<br />
["slv"] = "sl",<br />
["sme"] = "se",<br />
["smo"] = "sm",<br />
["sna"] = "sn",<br />
["snd"] = "sd",<br />
["som"] = "so",<br />
["sot"] = "st",<br />
["spa"] = "es",<br />
["sqi"] = "sq",<br />
["srd"] = "sc",<br />
["srp"] = "sr",<br />
["ssw"] = "ss",<br />
["sun"] = "su",<br />
["swa"] = "sw",<br />
["swe"] = "sv",<br />
["tah"] = "ty",<br />
["tam"] = "ta",<br />
["tat"] = "tt",<br />
["tel"] = "te",<br />
["tgk"] = "tg",<br />
["tgl"] = "tl",<br />
["tha"] = "th",<br />
["tir"] = "ti",<br />
["ton"] = "to",<br />
["tsn"] = "tn",<br />
["tso"] = "ts",<br />
["tuk"] = "tk",<br />
["tur"] = "tr",<br />
["twi"] = "tw",<br />
["uig"] = "ug",<br />
["ukr"] = "uk",<br />
["urd"] = "ur",<br />
["uzb"] = "uz",<br />
["ven"] = "ve",<br />
["vie"] = "vi",<br />
["vol"] = "vo",<br />
["wln"] = "wa",<br />
["wol"] = "wo",<br />
["xho"] = "xh",<br />
["yid"] = "yi",<br />
["yor"] = "yo",<br />
["zha"] = "za",<br />
["zho"] = "zh",<br />
["zul"] = "zu"<br />
}</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Lang&diff=2427
Module:Lang
2022-02-08T20:15:49Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>--[=[<br />
<br />
Lua support for the {{lang}}, {{lang-xx}}, and {{transl}} templates and replacement of various supporting templates. <br />
<br />
]=]<br />
<br />
require('Module:No globals');<br />
<br />
local getArgs = require ('Module:Arguments').getArgs;<br />
local unicode = require ("Module:Unicode data"); -- for is_latin() and is_rtl()<br />
local yesno = require ('Module:Yesno');<br />
<br />
local lang_data = mw.loadData ('Module:Lang/data'); -- language name override and transliteration tool-tip tables<br />
local lang_name_table = lang_data.lang_name_table; -- language codes, names, regions, scripts, suppressed scripts<br />
local lang_table = lang_data.lang_name_table.lang;<br />
local lang_dep_table = lang_data.lang_name_table.lang_dep;<br />
local script_table = lang_data.lang_name_table.script;<br />
local region_table = lang_data.lang_name_table.region;<br />
local variant_table = lang_data.lang_name_table.variant;<br />
local suppressed_table = lang_data.lang_name_table.suppressed;<br />
local override_table = lang_data.override;<br />
<br />
local synonym_table = mw.loadData ('Module:Lang/ISO 639 synonyms'); -- ISO 639-2/639-2T code translation to 639-1 code<br />
<br />
local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization<br />
<br />
local content_lang = mw.language.getContentLanguage();<br />
local this_wiki_lang_tag = content_lang.code; -- get this wiki's language tag<br />
local this_wiki_lang_dir = content_lang:getDir(); -- get this wiki's language direction<br />
<br />
local initial_style_state; -- set by lang_xx_normal() and lang_xx_italic()<br />
<br />
local maint_cats = {}; -- maintenance categories go here<br />
local maint_msgs = {}; -- and their messages go here<br />
<br />
<br />
--[[--------------------------< I S _ S E T >------------------------------------------------------------------<br />
<br />
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.<br />
<br />
]]<br />
<br />
local function is_set( var )<br />
return not (var == nil or var == '');<br />
end<br />
<br />
<br />
--[[--------------------------< I N V E R T _ I T A L I C S >-------------------------------------------------<br />
<br />
This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup<br />
in args.text. Like |italic=unset, |italic=invert disables automatic italic markup. Individual leading/trailing<br />
apostrophes are converted to their html numeric entity equivalent so that the new italic markup doesn't become<br />
bold markup inadvertently.<br />
<br />
Leading and trailing wiki markup is extracted from args.text into separate table elements. Addition, removal,<br />
replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements.<br />
In the string.gsub() matching pattern, '.*' matches empty string as well as the three expected wiki markup patterns.<br />
<br />
This function expects that markup in args.text is complete and correct; if it is not, oddness may result.<br />
<br />
]]<br />
<br />
local function invert_italics (source)<br />
local invert_pattern_table = { -- leading/trailing markup add/remove/replace patterns<br />
[""]="\'\'", -- empty string becomes italic markup<br />
["\'\'"]="", -- italic markup becomes empty string<br />
["\'\'\'"]="\'\'\'\'\'", -- bold becomes bold italic<br />
["\'\'\'\'\'"]="\'\'\'", -- bold italic become bold<br />
};<br />
local seg = {};<br />
<br />
source = source:gsub ("%f[\']\'%f[^\']", '&#39;'); -- protect single quote marks from being interpreted as bold markup<br />
<br />
seg[1] = source:match ('^(\'\'+%f[^\']).+') or ''; -- get leading markup, if any; ignore single quote<br />
seg[3] = source:match ('.+(%f[\']\'\'+)$') or ''; -- get trailing markup, if any; ignore single quote<br />
<br />
if '' ~= seg[1] and '' ~= seg[3] then -- extract the 'text' <br />
seg[2] = source:match ('^\'\'+%f[^\'](.+)%f[\']\'\'+$') -- from between leading and trailing markup<br />
elseif '' ~= seg[1] then<br />
seg[2] = source:match ('^\'\'+%f[^\'](.+)') -- following leading markup<br />
elseif '' ~= seg[3] then<br />
seg[2] = source:match ('(.+)%f[\']\'\'+$') -- preceding trailing markup<br />
else<br />
seg[2] = source -- when there is no markup<br />
end<br />
<br />
seg[1] = invert_pattern_table[seg[1]] or seg[1]; -- replace leading markup according to pattern table<br />
seg[3] = invert_pattern_table[seg[3]] or seg[3]; -- replace leading markup according to pattern table<br />
<br />
return table.concat (seg); -- put it all back together and done<br />
end<br />
<br />
<br />
--[[--------------------------< V A L I D A T E _ I T A L I C >------------------------------------------------<br />
<br />
validates |italic= or |italics= assigned values.<br />
<br />
When |italic= is set and has an acceptible assigned value, return the matching css font-style property value or,<br />
for the special case 'default', return nil.<br />
<br />
When |italic= is not set, or has an unacceptible assigned value, return nil and a nil error message.<br />
<br />
When both |italic= and |italics= are set, returns nil and a 'conflicting' error message.<br />
<br />
The return value nil causes the calling lang, lang_xx, or transl function to set args.italic according to the template's<br />
defined default ('inherit' for {{lang}}, 'inherit' or 'italic' for {{lang-xx}} depending on<br />
the individual template's requirements, 'italic' for {{transl}}) or to the value appropriate to |script=, if set ({{lang}}<br />
and {{lang-xx}} only).<br />
<br />
Accepted values and the values that this function returns are are:<br />
nil - when |italic= absent or not set; returns nil<br />
default - for completeness, should rarely if ever be used; returns nil<br />
yes - force args.text to be rendered in italic font; returns 'italic'<br />
no - force args.text to be rendered in normal font; returns 'normal'<br />
unset - disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns 'inherit'<br />
invert - disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns 'invert'<br />
<br />
]]<br />
<br />
local function validate_italic (args)<br />
local properties = {['yes'] = 'italic', ['no'] = 'normal', ['unset'] = 'inherit', ['invert'] = 'invert', ['default'] = nil};<br />
<br />
local count = 0<br />
for _, arg in pairs {'italic', 'italics', 'i'} do<br />
if args[arg] then<br />
count = count + 1<br />
end<br />
end<br />
<br />
if count > 1 then -- return nil and an error message if more than one is set <br />
return nil, 'only one of |italic=, |italics=, or |i= can be specified';<br />
end<br />
<br />
return properties[args.italic or args.italics or args.i], nil; -- return an appropriate value and a nil error message<br />
end<br />
<br />
<br />
--[=[--------------------------< V A L I D A T E _ C A T _ A R G S >----------------------------------------------------------<br />
<br />
Default behavior of the {{lang}} and {{lang-xx}} templates is to add categorization when the templates are used in mainspace.<br />
This default functionality may be suppressed by setting |nocat=yes or |cat=no. This function selects one of these two parameters<br />
to control categorization.<br />
<br />
Because having two parameters with 'opposite' names and 'opposite' values is confusing, this function accepts only affirmative<br />
values for |nocat= and only negative values for |cat=; in both cases the 'other' sense (and non-sense) is not accepted and the<br />
parameter is treated as if it were not set in the template.<br />
<br />
Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply.<br />
<br />
Accepted values for |nocat= are the text strings:<br />
'yes', 'y', 'true', 't', on, '1' -- [[Module:Yesno]] returns logical true for all of these; false or nil else<br />
for |cat=<br />
'no', 'n', 'false', 'f', 'off', '0' -- [[Module:Yesno]] returns logical false for all of these; true or nil else<br />
<br />
]=]<br />
<br />
local function validate_cat_args (args)<br />
if not (args.nocat or args.cat) then -- both are nil, so categorize<br />
return;<br />
end<br />
<br />
if false == yesno (args.cat) or true == yesno (args.nocat) then<br />
args.nocat = true; -- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template)<br />
else -- args.nocat is the parameter actually used.<br />
args.nocat = nil;<br />
end<br />
end<br />
<br />
<br />
--[[--------------------------< I N _ A R R A Y >--------------------------------------------------------------<br />
<br />
Whether needle is in haystack<br />
<br />
]]<br />
<br />
local function in_array ( needle, haystack )<br />
if needle == nil then<br />
return false;<br />
end<br />
for n,v in ipairs( haystack ) do<br />
if v == needle then<br />
return n;<br />
end<br />
end<br />
return false;<br />
end<br />
<br />
<br />
--[[--------------------------< F O R M A T _ I E T F _ T A G >------------------------------------------------<br />
<br />
prettify ietf tags to use recommended subtag formats:<br />
code: lower case<br />
script: sentence case<br />
region: upper case<br />
variant: lower case<br />
private: lower case prefixed with -x-<br />
<br />
]]<br />
<br />
local function format_ietf_tag (code, script, region, variant, private)<br />
local out = {};<br />
<br />
if is_set (private) then<br />
return table.concat ({code:lower(), 'x', private:lower()}, '-'); -- if private, all other tags ignored<br />
end<br />
<br />
table.insert (out, code:lower());<br />
if is_set (script) then<br />
script = script:lower():gsub ('^%a', string.upper);<br />
table.insert (out, script);<br />
end<br />
<br />
if is_set (region) then<br />
table.insert (out, region:upper());<br />
end<br />
<br />
if is_set (variant) then<br />
table.insert (out, variant:lower());<br />
end<br />
<br />
return table.concat (out, '-');<br />
end<br />
<br />
<br />
--[[--------------------------< G E T _ I E T F _ P A R T S >--------------------------------------------------<br />
<br />
extracts and returns IETF language tag parts:<br />
primary language subtag (required) - 2 or 3 character IANA language code<br />
script subtag - four character IANA script code<br />
region subtag - two-letter or three digit IANA region code<br />
variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported<br />
private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag<br />
<br />
in any one of these forms<br />
lang lang-variant<br />
lang-script lang-script-variant<br />
lang-region lang-region-variant<br />
lang-script-region lang-script-region-variant<br />
lang-x-private <br />
<br />
each of lang, script, region, variant, and private, when used, must be valid<br />
<br />
Languages with both two- and three-character code synonyms are promoted to the two-character synonym because<br />
the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding<br />
the synonymous three-character codes in the lang= attribute.<br />
<br />
For {{lang-xx}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}}<br />
because those parameters are superfluous to the IETF subtags in |code=)<br />
<br />
returns six values; all lower case. Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid<br />
parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil.<br />
<br />
see http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1<br />
<br />
]]<br />
<br />
local function get_ietf_parts (source, args_script, args_region, args_variant)<br />
local code, script, region, variant, private; -- ietf tag parts<br />
<br />
if not is_set (source) then<br />
return nil, nil, nil, nil, nil, 'missing language tag';<br />
end<br />
<br />
local pattern = { -- table of tables holding acceptibe ietf tag patterns and short names of the ietf part captured by the pattern<br />
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 1 - ll-Ssss-RR-variant (where variant is 4 digits)<br />
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 2 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits)<br />
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 3 - ll-Ssss-RR-variant (where variant is 5-8 alnum characters)<br />
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 4 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)<br />
<br />
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$', 's', 'v'}, -- 5 - ll-Ssss-variant (where variant is 4 digits)<br />
{'^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'v'}, -- 6 - ll-Ssss-variant (where variant is 5-8 alnum characters)<br />
<br />
{'^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$', 'r', 'v'}, -- 7 - ll-RR-variant (where variant is 4 digits)<br />
{'^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$', 'r', 'v'}, -- 8 - ll-DDD-variant (where region is 3 digits; variant is 4 digits)<br />
{'^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 9 - ll-RR-variant (where variant is 5-8 alnum characters)<br />
{'^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)<br />
<br />
{'^(%a%a%a?)%-(%d%d%d%d)$', 'v'}, -- 11 - ll-variant (where variant is 4 digits)<br />
{'^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$', 'v'}, -- 12 - ll-variant (where variant is 5-8 alnum characters)<br />
<br />
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$', 's', 'r'}, -- 13 - ll-Ssss-RR<br />
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$', 's', 'r'}, -- 14 - ll-Ssss-DDD (region is 3 digits)<br />
<br />
{'^(%a%a%a?)%-(%a%a%a%a)$', 's'}, -- 15 - ll-Ssss<br />
<br />
{'^(%a%a%a?)%-(%a%a)$', 'r'}, -- 16 - ll-RR<br />
{'^(%a%a%a?)%-(%d%d%d)$', 'r'}, -- 17 - ll-DDD (region is 3 digits)<br />
<br />
{'^(%a%a%a?)$'}, -- 18 - ll<br />
<br />
{'^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$', 'p'}, -- 19 - ll-x-pppppppp (private is 1-8 alnum characters)<br />
}<br />
<br />
local t = {}; -- table of captures; serves as a translator between captured ietf tag parts and named variables<br />
<br />
for i, v in ipairs (pattern) do -- spin through the pattern table looking for a match<br />
local c1, c2, c3, c4; -- captures in the 'pattern' from the pattern table go here<br />
<br />
c1, c2, c3, c4 = source:match (pattern[i][1]); -- one or more captures set if source matches pattern[i])<br />
if c1 then -- c1 always set on match<br />
code = c1; -- first capture is always code<br />
t = {<br />
[pattern[i][2] or 'x'] = c2, -- fill the table of captures with the rest of the captures<br />
[pattern[i][3] or 'x'] = c3, -- take index names from pattern table and assign sequential captures<br />
[pattern[i][4] or 'x'] = c4, -- index name may be nil in pattern[i] table so "or 'x'" spoofs a name for this index in this table<br />
};<br />
script = t.s or ''; -- translate table contents to named variables;<br />
region = t.r or ''; -- absent table entries are nil so set named ietf parts to empty string for concatenation<br />
variant= t.v or '';<br />
private = t.p or '';<br />
break; -- and done<br />
end<br />
end<br />
<br />
if not code then<br />
return nil, nil, nil, nil, nil, table.concat ({'unrecognized language tag: ', source}); -- don't know what we got but it is malformed<br />
end<br />
<br />
code = code:lower(); -- ensure that we use and return lower case version of this<br />
<br />
if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then<br />
return nil, nil, nil, nil, nil, table.concat ({'unrecognized language code: ', code}); -- invalid language code, don't know about the others (don't care?)<br />
end<br />
<br />
if synonym_table[code] then -- if 639-2/639-2T code has a 639-1 synonym<br />
table.insert (maint_cats, table.concat ({'Lang and lang-xx code promoted to ISO 639-1|', code}));<br />
table.insert (maint_msgs, table.concat ({'code: ', code, ' promoted to code: ', synonym_table[code]}));<br />
code = synonym_table[code]; -- use the synonym<br />
end<br />
<br />
if is_set (script) then<br />
if is_set (args_script) then<br />
return code, nil, nil, nil, nil, 'redundant script tag'; -- both code with script and |script= not allowed<br />
end<br />
else<br />
script = args_script or ''; -- use args.script if provided<br />
end <br />
<br />
if is_set (script) then<br />
script = script:lower(); -- ensure that we use and return lower case version of this<br />
if not script_table[script] then<br />
return code, nil, nil, nil, nil, table.concat ({'unrecognized script: ', script, ' for code: ', code}); -- language code ok, invalid script, don't know about the others (don't care?)<br />
end<br />
end<br />
if suppressed_table[script] then -- ensure that code-script does not use a suppressed script<br />
if in_array (code, suppressed_table[script]) then<br />
return code, nil, nil, nil, nil, table.concat ({'script: ', script, ' not supported for code: ', code}); -- language code ok, script is suppressed for this code<br />
end<br />
end<br />
<br />
if is_set (region) then<br />
if is_set (args_region) then<br />
return code, nil, nil, nil, nil, 'redundant region tag'; -- both code with region and |region= not allowed<br />
end<br />
else<br />
region = args_region or ''; -- use args.region if provided<br />
end <br />
<br />
if is_set (region) then<br />
region = region:lower(); -- ensure that we use and return lower case version of this<br />
if not region_table[region] then<br />
return code, script, nil, nil, nil, table.concat ({'unrecognized region: ', region, ' for code: ', code});<br />
end<br />
end<br />
<br />
if is_set (variant) then<br />
if is_set (args_variant) then<br />
return code, nil, nil, nil, nil, 'redundant variant tag'; -- both code with variant and |variant= not allowed<br />
end<br />
else<br />
variant = args_variant or ''; -- use args.variant if provided<br />
end <br />
<br />
if is_set (variant) then<br />
variant = variant:lower(); -- ensure that we use and return lower case version of this<br />
if not variant_table[variant] then -- make sure variant is valid<br />
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant});<br />
end -- does this duplicate/replace tests in lang() and lang_xx()?<br />
if is_set (script) then -- if script set it must be part of the 'prefix'<br />
if not in_array (table.concat ({code, '-', script}), variant_table[variant]['prefixes']) then<br />
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-script pair: ', code, '-', script});<br />
end<br />
elseif is_set (region) then -- if region set, there are some prefixes that require lang code and region (en-CA-newfound)<br />
if not in_array (code, variant_table[variant]['prefixes']) then -- first see if lang code is all that's required (en-oxendict though en-GB-oxendict is preferred)<br />
if not in_array (table.concat ({code, '-', region}), variant_table[variant]['prefixes']) then -- now try for lang code and region (en-CA-newfound)<br />
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-region pair: ', code, '-', region});<br />
end<br />
end<br />
else -- cheap way to determine if there are prefixes; fonipa and others don't have prefixes; # operator always returns 0<br />
if variant_table[variant]['prefixes'][1] and not in_array (code, variant_table[variant]['prefixes']) then<br />
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code: ', code});<br />
end<br />
end<br />
end<br />
<br />
if is_set (private) then<br />
private = private:lower(); -- ensure that we use and return lower case version of this<br />
if not override_table[table.concat ({code, '-x-', private})] then -- make sure private tag is valid; note that index <br />
return code, script, region, nil, nil, table.concat ({'unrecognized private tag: ', private});<br />
end<br />
end<br />
return code, script, region, variant, private, nil; -- return the good bits; make sure that msg is nil<br />
end<br />
<br />
<br />
--[[--------------------------< M A K E _ E R R O R _ M S G >--------------------------------------------------<br />
<br />
assembles an error message from template name, message text, help link, and error category.<br />
<br />
]]<br />
<br />
local function make_error_msg (msg, args, template)<br />
local out = {};<br />
local category;<br />
<br />
if 'Transl' == template then<br />
category = 'Transl';<br />
else<br />
category = 'Lang and lang-xx'<br />
end<br />
<br />
table.insert (out, table.concat ({'[', args.text or 'undefined', '] '})); -- for error messages output args.text if available<br />
table.insert (out, table.concat ({'<span style=\"color:#d33\">Error: {{', template, '}}: '}));<br />
table.insert (out, msg);<br />
table.insert (out, table.concat ({' ([[:Category:', category, ' template errors|help]])'}));<br />
table.insert (out, '</span>');<br />
<br />
if (0 == namespace or 10 == namespace) and not args.nocat then -- categorize in article space (and template space to take care of broken usages)<br />
table.insert (out, table.concat ({'[[Category:', category, ' template errors]]'}));<br />
end<br />
<br />
return table.concat (out);<br />
end<br />
<br />
<br />
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------<br />
<br />
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only<br />
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an<br />
empty string.<br />
<br />
]=]<br />
<br />
local function make_wikilink (link, display)<br />
if is_set (link) then<br />
if is_set (display) then<br />
return table.concat ({'[[', link, '|', display, ']]'});<br />
else<br />
return table.concat ({'[[', link, ']]'});<br />
end<br />
else<br />
return '';<br />
end<br />
end<br />
<br />
<br />
--[[--------------------------< D I V _ M A R K U P _ A D D >--------------------------------------------------<br />
<br />
adds <i> and </i> tags to list-item text or to implied <p>..</p> text. mixed not supported<br />
<br />
]]<br />
<br />
local function div_markup_add (text, style)<br />
local implied_p = {};<br />
<br />
if text:find ('^\n[%*:;#]') then -- look for list markup; list markup must begin at start of text<br />
if 'italic' == style then<br />
return text:gsub ('(\n[%*:;#]+)([^\n]+)', '%1<i>%2</i>'); -- insert italic markup at each list item<br />
else<br />
return text;<br />
end<br />
end<br />
<br />
if text:find ('\n+') then -- look for any number of \n characters in text<br />
text = text:gsub ('([^\n])\n([^\n])', '%1 %2'); -- replace single newline characters with a space character which mimics mediawiki<br />
<br />
if 'italic' == style then<br />
text = text:gsub('[^\n]+', '<p><i>%1</i></p>'); -- insert p and italic markup tags at each impled p (two or more consecutive '\n\n' sequences)<br />
else<br />
text = text:gsub ('[^\n]+', '<p>%1</p>'); -- insert p markup at each impled p<br />
text = text:gsub ('\n', ''); -- strip newline characters<br />
end<br />
end<br />
<br />
return text;<br />
end<br />
<br />
<br />
--[[--------------------------< T I T L E _ W R A P P E R _ M A K E >------------------------------------------<br />
<br />
makes a <span title="<title text>"><content_text></span> or <div title="<title text>"><content_text></div> where<br />
<title text> is in the tool-tip in the wiki's local language and <content_text> is non-local-language text in<br />
html markup. This because the lang= attibute applies to the content of its enclosing tag.<br />
<br />
<tag> holds a string 'div' or 'span' used to choose the correct wrapping tag<br />
]]<br />
<br />
local function title_wrapper_make (title_text, content_text, tag)<br />
local wrapper_t = {};<br />
<br />
table.insert (wrapper_t, table.concat ({'<', tag})); -- open opening wrapper tag<br />
table.insert (wrapper_t, ' title=\"'); -- begin title attribute<br />
table.insert (wrapper_t, title_text); -- add <title_text><br />
table.insert (wrapper_t, '\">'); -- end title attribute and close opening wrapper tag<br />
table.insert (wrapper_t, content_text); -- add <content_text><br />
table.insert (wrapper_t, table.concat ({'</', tag, '>'})); -- add closing wrapper tag<br />
<br />
return table.concat (wrapper_t); -- make a big string and done<br />
end<br />
<br />
<br />
--[[--------------------------< M A K E _ T E X T _ H T M L >--------------------------------------------------<br />
<br />
Add the html markup to text according to the type of content that it is: <span> or <i> tags for inline content or<br />
<div> tags for block content<br />
<br />
The lang= attribute also applies to the content of the tag where it is placed so this is wrong because 'Spanish<br />
language text' is English:<br />
<i lang="es" title="Spanish language text">casa</i><br />
should be:<br />
<span title="Spanish language text"><i lang="es">casa</i></span><br />
or for <div>...</div>:<br />
<div title="Spanish language text"><div lang="es"><spanish-language-text></div></div><br />
<br />
]]<br />
<br />
local function make_text_html (code, text, tag, rtl, style, size, language)<br />
local html_t = {};<br />
local style_added = '';<br />
local wrapper_tag = tag; -- <tag> gets modified so save a copy for use when/if we create a wrapper span or div<br />
<br />
if text:match ('^%*') then<br />
table.insert (html_t, '&#42;'); -- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki<br />
text = text:gsub ('^%*', ''); -- remove the splat from the text<br />
end<br />
<br />
if 'span' == tag then -- default html tag for inline content<br />
if 'italic' == style then -- but if italic<br />
tag = 'i'; -- change to <i> tags<br />
end<br />
else -- must be div so go<br />
text = div_markup_add (text, style); -- handle implied <p>, implied <p> with <i>, and list markup (*;:#) with <i><br />
end<br />
<br />
table.insert (html_t, table.concat ({'<', tag})); -- open the <i>, <span>, or <div> html tag<br />
code = code:gsub ('%-x%-.*', ''); -- strip private use subtag from code tag because meaningless outside of wikipedia<br />
table.insert (html_t, table.concat ({' lang="', code, '\"'})); -- add language attribute<br />
<br />
if (rtl or unicode.is_rtl(text)) and ('ltr' == this_wiki_lang_dir) then -- text is right-to-left on a left-to-right wiki<br />
table.insert (html_t, ' dir="rtl"'); -- add direction attribute for right-to-left languages<br />
elseif not (rtl or unicode.is_rtl(text)) and ('rtl' == this_wiki_lang_dir) then -- text is left-to-right on a right-to-left wiki<br />
table.insert (html_t, ' dir="ltr"'); -- add direction attribute for left-to-right languages<br />
end<br />
<br />
if 'normal' == style then -- when |italic=no<br />
table.insert (html_t, ' style=\"font-style: normal;'); -- override external markup, if any<br />
style_added = '\"'; -- remember that style attribute added and is not yet closed<br />
end<br />
<br />
if is_set (size) then -- when |size=<something><br />
if is_set (style_added) then<br />
table.insert (html_t, table.concat ({' font-size: ', size, ';'})); -- add when style attribute already inserted<br />
else<br />
table.insert (html_t, table.concat ({' style=\"font-size: ', size, ';'})); -- create style attribute<br />
style_added = '\"'; -- remember that style attribute added and is not yet closed<br />
end<br />
end<br />
<br />
table.insert (html_t, table.concat ({style_added, '>'})); -- close the opening html tag<br />
table.insert (html_t, text); -- insert the text<br />
<br />
table.insert (html_t, table.concat ({'</', tag, '>'})); -- close the 'text' <i>, <span>, or <div> html tag<br />
<br />
if is_set (language) then -- create a <title_text> string for the title= attribute in a wrapper span or div<br />
local title_text;<br />
if 'zxx' == code then -- special case for this tag 'no linguistic content'<br />
title_text = table.concat ({language, ' text'}); -- not a language so don't use 'language' in title text<br />
elseif mw.ustring.find (language, 'languages', 1, true) then<br />
title_text = table.concat ({language, ' collective text'}); -- for collective languages<br />
else<br />
title_text = table.concat ({language, '-language text'}); -- for individual languages<br />
end<br />
<br />
return title_wrapper_make (title_text, table.concat (html_t), wrapper_tag);<br />
else<br />
return table.concat (html_t);<br />
end<br />
end<br />
<br />
<br />
--[=[-------------------------< M A K E _ C A T E G O R Y >----------------------------------------------------<br />
<br />
For individual language, <language>, returns:<br />
[[Category:Articles containing <language>-language text]]<br />
<br />
for English:<br />
[[Category:Articles containing explicitly cited English-language text]]<br />
<br />
for ISO 639-2 collective languages (and for 639-1 bh):<br />
[[Category:Articles with text in <language> languages]]<br />
<br />
]=]<br />
<br />
local function make_category (code, language_name, nocat, name_get)<br />
local cat = {};<br />
local retval;<br />
<br />
if ((0 ~= namespace) or nocat) and not name_get then -- only categorize in article space<br />
return ''; -- return empty string for concatenation<br />
end<br />
<br />
if mw.ustring.find (language_name, 'languages', 1, true) then<br />
return table.concat ({'[[Category:Articles with text in ', language_name, ']]'});<br />
end<br />
<br />
table.insert (cat, '[[Category:Articles containing ');<br />
<br />
if this_wiki_lang_tag == code then<br />
table.insert (cat, 'explicitly cited ' .. language_name); -- unique category name for the local language<br />
else<br />
table.insert (cat, language_name);<br />
end<br />
<br />
table.insert (cat, '-language text]]');<br />
<br />
return table.concat (cat);<br />
end<br />
<br />
<br />
--[[--------------------------< M A K E _ T R A N S L I T >----------------------------------------------------<br />
<br />
return translit <i lang=xx-Latn>...</i> where xx is the language code; else return empty string<br />
<br />
The value |script= is not used in {{transl}} for this purpose; instead it uses |code. Because language scripts<br />
are listed in the {{transl}} switches they are included in the data tables. The script parameter is introduced<br />
at {{Language with name and transliteration}}. If |script= is set, this function uses it in preference to code.<br />
<br />
To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed<br />
to be |translit-script= (in this function, tscript)<br />
<br />
This function is used by both lang_xx() and transl()<br />
lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style<br />
transl() always provides language_name, translit, and one of code or tscript, never both; always provides style<br />
<br />
For {{transl}}, style only applies when a language code is provided<br />
]]<br />
<br />
local function make_translit (code, language_name, translit, std, tscript, style)<br />
local title;<br />
local out_t = {};<br />
local title_t = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards<br />
local title_text = ''; -- tool tip text for title= attribute<br />
<br />
std = std and std:lower(); -- lower case for table indexing<br />
<br />
if not is_set (std) and not is_set (tscript) then -- when neither standard nor script specified<br />
title_text = language_name; -- write a generic tool tip<br />
if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name)<br />
title_text = title_text .. '-language'; -- skip this text (individual and macro languages only)<br />
end<br />
title_text = title_text .. ' romanization'; -- finish the tool tip; use romanization when neither script nor standard supplied<br />
<br />
elseif is_set (std) and is_set (tscript) then -- when both are specified<br />
if title_t[std] then -- and if standard is legitimate<br />
if title_t[std][tscript] then -- and if script for that standard is legitimate<br />
if script_table[tscript] then<br />
title_text = title_text .. table.concat ({title_t[std][tscript:lower()], ' (', script_table[tscript], ' script) transliteration'}); -- add the appropriate text to the tool tip<br />
else<br />
title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?<br />
end<br />
else<br />
title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?<br />
end<br />
else<br />
return ''; -- invalid standard, setup for error message<br />
end<br />
<br />
elseif is_set (std) then -- translit-script not set, use language code<br />
if not title_t[std] then return ''; end -- invalid standard, setup for error message<br />
<br />
if title_t[std][code] then -- if language code is in the table (transl may not provide a language code)<br />
title_text = title_text .. table.concat ({title_t[std][code:lower()], ' (', language_name, ' language) transliteration'}); -- add the appropriate text to the tool tip<br />
else -- code doesn't match<br />
title_text = title_text .. title_t[std]['default']; -- so use the standard's default<br />
end<br />
<br />
else -- here if translit-script set but translit-std not set<br />
if title_t['no_std'][tscript] then<br />
title_text = title_text .. title_t['no_std'][tscript]; -- use translit-script if set<br />
elseif title_t['no_std'][code] then<br />
title_text = title_text .. title_t['no_std'][code]; -- use language code<br />
else<br />
if is_set (tscript) then<br />
title_text = title_text .. table.concat ({language_name, '-script transliteration'}); -- write a script tool tip<br />
elseif is_set (code) then<br />
if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name)<br />
title_text = title_text .. '-language'; -- skip this text (individual and macro languages only)<br />
end<br />
title_text = title_text .. ' transliteration'; -- finish the tool tip<br />
else<br />
title_text = title_text .. ' transliteration'; -- generic tool tip (can we ever get here?)<br />
end<br />
end<br />
end<br />
<br />
local close_tag;<br />
if is_set (code) then -- when a language code is provided (always with {{lang-xx}} templates, not always with {{transl}})<br />
if not style then -- nil for the default italic style<br />
table.insert (out_t, "<i lang=\""); -- so use <i> tag<br />
close_tag = '</i>'; -- tag to be used when closing<br />
else<br />
table.insert (out_t, table.concat ({'<span style=\"font-style: ', style, '\" lang=\"'})); -- non-standard style, construct a span tag for it<br />
close_tag = '</span>'; -- tag to be used when closing<br />
end<br />
table.insert (out_t, code);<br />
table.insert (out_t, "-Latn\">"); -- transliterations are always Latin script<br />
else<br />
table.insert (out_t, "<span>"); -- when no language code: no lang= attribute, not italic ({{transl}} only)<br />
close_tag = '</span>';<br />
end<br />
<br />
table.insert (out_t, translit); -- add the translit text<br />
table.insert (out_t, close_tag); -- and add the appropriate </i> or </span><br />
<br />
if '' == title_text then -- when there is no need for a tool-tip<br />
return table.concat (out_t); -- make a string and done<br />
else<br />
return title_wrapper_make (title_text, table.concat (out_t), 'span'); -- wrap with a tool-tip span and don<br />
end<br />
end<br />
<br />
<br />
--[[--------------------------< V A L I D A T E _ T E X T >----------------------------------------------------<br />
<br />
This function checks the content of args.text and returns empty string if nothing is amiss else it returns an<br />
error message. The tests are for empty or missing text and for improper or disallowed use of apostrophe markup.<br />
<br />
Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text<br />
either as ''itself'' or as '''''bold italic''''' unless |italic=unset or |italic=invert.<br />
<br />
]]<br />
<br />
local function validate_text (template, args)<br />
if not is_set (args.text) then<br />
return make_error_msg ('no text', args, template);<br />
end<br />
<br />
if args.text:find ("%f[\']\'\'\'\'%f[^\']") or args.text:find ("\'\'\'\'\'[\']+") then -- because we're looking, look for 4 appostrophes or 6+ appostrophes<br />
return make_error_msg ('text has malformed markup', args, template);<br />
end<br />
<br />
local style = args.italic;<br />
<br />
if ('unset' ~= style) and ('invert' ~=style) then<br />
if args.text:find ("%f[\']\'\'%f[^\']") or args.text:find ("%f[\']\'\'\'\'\'%f[^\']") then -- italic but not bold, or bold italic<br />
return make_error_msg ('text has italic markup', args, template);<br />
end<br />
end<br />
end<br />
<br />
<br />
--[[--------------------------< R E N D E R _ M A I N T >------------------------------------------------------<br />
<br />
render mainenance messages and categories<br />
<br />
]]<br />
<br />
local function render_maint(nocat)<br />
local maint = {};<br />
<br />
if 0 < #maint_msgs then -- when there are maintenance messages<br />
table.insert (maint, table.concat ({'<span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">'})); -- opening <span> tag<br />
for _, msg in ipairs (maint_msgs) do<br />
table.insert (maint, table.concat ({msg, ' '})); -- add message strings<br />
end<br />
table.insert (maint, '</span>'); -- close the span<br />
end<br />
<br />
if (0 < #maint_cats) and (0 == namespace) and not nocat then -- when there are maintenance categories; article namespace only<br />
for _, cat in ipairs (maint_cats) do<br />
table.insert (maint, table.concat ({'[[Category:', cat, ']]'})); -- format and add the categories<br />
end<br />
end<br />
<br />
return table.concat (maint);<br />
end<br />
<br />
<br />
--[[--------------------------< P R O T O _ P R E F I X >------------------------------------------------------<br />
<br />
for proto languages, text is prefixed with a splat. We do that here as a flag for make_text_html() so that a splat<br />
will be rendered outside of italic markup (if used). If the first character in text here is already a splat, we<br />
do nothing<br />
<br />
proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and / or inhibits<br />
regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac<br />
<br />
]]<br />
<br />
local function proto_prefix (text, language_name, proto_param)<br />
if false == proto_param then -- when forced by |proto=no<br />
return text:gsub ('^%**', ''); -- return text without splat prefix regardless of language name or existing splat prefix in text<br />
elseif (language_name:find ('^Proto%-') or (true == proto_param)) then -- language is a proto or forced by |proto=yes<br />
return text:gsub ('^%**', '*'); -- prefix proto-language text with a splat; also removes duplicate prefixing splats<br />
end<br />
<br />
return text:gsub ('^%*+', '*'); -- return text unmolested except multiple splats reduced to one splat<br />
end<br />
<br />
<br />
--[[--------------------------< H A S _ P O E M _ T A G >------------------------------------------------------<br />
<br />
looks for a poem strip marker in text; returns true when found; false else<br />
<br />
auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know<br />
the content that will replace the stripmarker.<br />
<br />
]]<br />
<br />
local function has_poem_tag (text)<br />
return text:find ('\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127') and true or false;<br />
end<br />
<br />
<br />
--[[--------------------------< H T M L _ T A G _ S E L E C T >------------------------------------------------<br />
<br />
Inspects content of and selectively trims text. Returns text and the name of an appropriate html tag for text.<br />
<br />
If text contains:<br />
\n\n text has implied <p>..</p> tags - trim leading and trailing whitespace and return <br />
If text begins with list markup:<br />
\n* unordered<br />
\n; definition<br />
\n: definition<br />
\n# ordered<br />
trim all leading whitespace except \n and trim all trailing whitespace<br />
<br />
If text contains <poem>...</poem> stripmarker, return text unmodified and choose <div>..</div> tags because <br />
the stripmarker is replaced with text wrapped in <div>..</div> tags.<br />
<br />
]]<br />
<br />
local function html_tag_select (text)<br />
local tag;<br />
<br />
if has_poem_tag (text) then -- contains poem stripmarker (we can't know the content of that)<br />
tag = 'div'; -- poem replacement is in div tags so lang must use div tags<br />
elseif mw.text.trim (text):find ('\n\n+') then -- contains implied p tags<br />
text = mw.text.trim (text); -- trim leading and trailing whitespace characters<br />
tag = 'div'; -- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags<br />
elseif text:find ('\n[%*:;%#]') then -- if text has list markup<br />
text = text:gsub ('^[\t\r\f ]*', ''):gsub ('%s*$', ''); -- trim all whitespace except leading newline character '\n'<br />
tag = 'div'; -- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki)<br />
else<br />
text = mw.text.trim (text); -- plain text<br />
tag = 'span'; -- so span is fine<br />
end<br />
<br />
return text, tag;<br />
end<br />
<br />
<br />
--[[--------------------------< V A L I D A T E _ P R O T O >--------------------------------------------------<br />
<br />
validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false,<br />
empty string (or parameter omitted) returns as nil; any other value returns as nil with a second return value of<br />
true indicating that some other value has been assigned to |proto=<br />
<br />
]]<br />
<br />
local function validate_proto (proto_param)<br />
if 'yes' == proto_param then<br />
return true;<br />
elseif 'no' == proto_param then<br />
return false;<br />
elseif is_set (proto_param) then<br />
return nil, true; -- |proto= something other than 'yes' or 'no'<br />
else<br />
return nil; -- missing or empty<br />
end<br />
end<br />
<br />
<br />
--[[--------------------------< L A N G U A G E _ N A M E _ G E T >--------------------------------------------<br />
<br />
common function to return language name from the data set according to IETF tag<br />
<br />
returns language name if found in data tables; nil else<br />
<br />
]]<br />
<br />
local function language_name_get (ietf, code, cat)<br />
ietf = ietf:lower(); -- ietf:lower() because format_ietf_tag() returns mixed case<br />
<br />
local name; -- remains nil if not found<br />
<br />
if override_table[ietf] then -- look for whole IETF tag in override table<br />
name = override_table[ietf];<br />
elseif override_table[code] then -- not there so try basic language tag<br />
name = override_table[code];<br />
elseif lang_table[code] then -- shift to iana active tag/name table<br />
name = lang_table[code];<br />
elseif lang_dep_table[code] then -- try the iana deprecated tag/name table<br />
name = lang_dep_table[code];<br />
end<br />
<br />
if lang_dep_table[code] and cat then -- because deprecated code may have been overridden to en.wiki preferred name<br />
table.insert (maint_cats, table.concat ({'Lang and lang-xx using deprecated ISO 639 codes|', code}));<br />
table.insert (maint_msgs, table.concat ({'code: ', code, ' is deprecated'}));<br />
end<br />
<br />
return name; -- name from data tables or nil<br />
end<br />
<br />
<br />
--[[--------------------------< _ L A N G >--------------------------------------------------------------------<br />
<br />
entry point for {{lang}}<br />
<br />
there should be no reason to set parameters in the {{lang}} {{#invoke:}}<br />
<includeonly>{{#invoke:lang|lang}}</includeonly><br />
<br />
parameters are received from the template's frame (parent frame)<br />
<br />
]]<br />
<br />
local function _lang (args)<br />
local out = {};<br />
local language_name; -- used to make category names<br />
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set<br />
local subtags = {}; -- IETF subtags script, region, variant, and private<br />
local code; -- the language code<br />
local msg; -- for error messages<br />
local tag = 'span'; -- initial value for make_text_html()<br />
local template = args.template or 'Lang';<br />
<br />
validate_cat_args (args); -- determine if categorization should be suppressed<br />
<br />
if args[1] and args.code then<br />
return make_error_msg ('conflicting: {{{1}}} and |code=', args, template);<br />
else<br />
args.code = args[1] or args.code; -- prefer args.code<br />
end<br />
<br />
if args[2] and args.text then<br />
return make_error_msg ('conflicting: {{{2}}} and |text=', args, template);<br />
else<br />
args.text = args[2] or args.text; -- prefer args.text<br />
end<br />
<br />
msg = validate_text (template, args); -- ensure that |text= is set<br />
if is_set (msg) then -- msg is an already-formatted error message<br />
return msg;<br />
end<br />
<br />
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly<br />
<br />
args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false<br />
<br />
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag<br />
if msg then<br />
return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template);<br />
end<br />
<br />
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code); -- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}})<br />
<br />
if msg then<br />
return make_error_msg ( msg, args, template);<br />
end<br />
<br />
args.italic, msg = validate_italic (args);<br />
if msg then<br />
return make_error_msg (msg, args, template);<br />
end<br />
<br />
if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls<br />
if ('latn' == subtags.script) or -- script is latn<br />
(this_wiki_lang_tag ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and unicode.is_Latin (args.text)) then -- text not this wiki's language, no script specified and not in poem markup but is wholly latn script (auto-italics)<br />
args.italic = 'italic'; -- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic<br />
else<br />
args.italic = 'inherit'; -- italic not set; script not latn; inherit current style<br />
end<br />
end<br />
<br />
if is_set (subtags.script) then -- if script set, override rtl setting<br />
if in_array (subtags.script, lang_data.rtl_scripts) then<br />
args.rtl = true; -- script is an rtl script<br />
else<br />
args.rtl = false; -- script is not an rtl script<br />
end<br />
end<br />
<br />
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles<br />
language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant<br />
<br />
if 'invert' == args.italic and 'span' == tag then -- invert only supported for in-line content<br />
args.text = invert_italics (args.text)<br />
end<br />
<br />
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat<br />
<br />
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name));<br />
table.insert (out, make_category (code, language_name, args.nocat));<br />
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories<br />
<br />
return table.concat (out); -- put it all together and done<br />
end<br />
<br />
<br />
--[[--------------------------< L A N G >----------------------------------------------------------------------<br />
<br />
entry point for {{lang}}<br />
<br />
there should be no reason to set parameters in the {{lang}} {{#invoke:}}<br />
<includeonly>{{#invoke:lang|lang}}</includeonly><br />
<br />
parameters are received from the template's frame (parent frame)<br />
<br />
]]<br />
<br />
local function lang (frame)<br />
local args = getArgs (frame, { -- this code so that we can detect and handle wiki list markup in text<br />
valueFunc = function (key, value)<br />
if 2 == key or 'text' == key then -- the 'text' parameter; do not trim wite space<br />
return value; -- return untrimmed 'text'<br />
elseif value then -- all other values: if the value is not nil<br />
value = mw.text.trim (value); -- trim whitespace<br />
if '' ~= value then -- empty string when value was only whitespace<br />
return value;<br />
end<br />
end<br />
return nil; -- value was empty or contained only whitespace<br />
end -- end of valueFunc<br />
});<br />
<br />
return _lang (args);<br />
end<br />
<br />
<br />
--[[--------------------------< L A N G _ X X >----------------------------------------------------------------<br />
<br />
For the {{lang-xx}} templates, the only parameter required to be set in the template is the language code. All<br />
other parameters can, usually should, be written in the template call. For {{lang-xx}} templates for languages<br />
that can have multiple writing systems, it may be appropriate to set |script= as well.<br />
<br />
For each {{lang-xx}} template choose the appropriate entry-point function so that this function knows the default<br />
styling that should be applied to text.<br />
<br />
For normal, upright style:<br />
<includeonly>{{#invoke:lang|lang_xx_inherit|code=xx}}</includeonly><br />
For italic style:<br />
<includeonly>{{#invoke:lang|lang_xx_italic|code=xx}}</includeonly><br />
<br />
All other parameters should be received from the template's frame (parent frame)<br />
<br />
Supported parameters are:<br />
|code = (required) the IANA language code<br />
|script = IANA script code; especially for use with languages that use multiple writing systems<br />
|region = IANA region code<br />
|variant = IANA variant code<br />
|text = (required) the displayed text in language specified by code<br />
|link = boolean false ('no') does not link code-spcified language name to associated language article<br />
|rtl = boolean true ('yes') identifies the language specified by code as a right-to-left language<br />
|nocat = boolean true ('yes') inhibits normal categorization; error categories are not affected<br />
|cat = boolian false ('no') opposite form of |nocat=<br />
|italic = boolean true ('yes') renders displayed text in italic font; boolean false ('no') renders displayed text in normal font; not set renders according to initial_style_state<br />
|lit = text that is a literal translation of text<br />
|label = 'none' to suppress all labeling (language name, 'translit.', 'lit.')<br />
any other text replaces language-name label - automatic wikilinking disabled<br />
<br />
for those {{lang-xx}} templates that support transliteration (those templates where |text= is not entirely latn script):<br />
|translit = text that is a transliteration of text<br />
|translit-std = the standard that applies to the transliteration<br />
|translit-script = ISO 15924 script name; falls back to code<br />
<br />
For {{lang-xx}}, the positional parameters are:<br />
{{{1}}} text<br />
{{{2}}} transliterated text<br />
{{{3}}} literal translation text<br />
no other positional parameters are allowed<br />
<br />
]]<br />
<br />
local function _lang_xx (args)<br />
local out = {};<br />
local language_name; -- used to make display text, article links<br />
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set<br />
local subtags = {}; -- IETF subtags script, region, and variant<br />
local code; -- the language code<br />
<br />
local translit_script_name; -- name associated with IANA (ISO 15924) script code<br />
local translit;<br />
local translit_title;<br />
local msg; -- for error messages<br />
local tag = 'span'; -- initial value for make_text_html()<br />
local template = args.template or 'Lang-xx';<br />
<br />
if args[1] and args.text then<br />
return make_error_msg ('conflicting: {{{1}}} and |text=', args, template);<br />
else<br />
args.text = args[1] or args.text; -- prefer args.text<br />
end<br />
<br />
msg = validate_text (template, args); -- ensure that |text= is set, does not contain italic markup and is protected from improper bolding<br />
if is_set (msg) then<br />
return msg;<br />
end<br />
<br />
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly<br />
<br />
if args[2] and args.translit then<br />
return make_error_msg ('conflicting: {{{2}}} and |translit=', args, template);<br />
else<br />
args.translit = args[2] or args.translit -- prefer args.translit<br />
end<br />
<br />
if args[3] and (args.translation or args.lit) then<br />
return make_error_msg ('conflicting: {{{3}}} and |lit= or |translation=', args, template);<br />
elseif args.translation and args.lit then<br />
return make_error_msg ('conflicting: |lit= and |translation=', args, template);<br />
else<br />
args.translation = args[3] or args.translation or args.lit; -- prefer args.translation<br />
end<br />
<br />
if args.links and args.link then<br />
return make_error_msg ('conflicting: |links= and |link=', args, template);<br />
else<br />
args.link = args.link or args.links; -- prefer args.link<br />
end<br />
<br />
validate_cat_args (args); -- determine if categorization should be suppressed<br />
<br />
args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false<br />
<br />
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant); -- private omitted because private<br />
<br />
if msg then -- if an error detected then there is an error message<br />
return make_error_msg (msg, args, template);<br />
end<br />
<br />
args.italic, msg = validate_italic (args);<br />
if msg then<br />
return make_error_msg (msg, args, template);<br />
end<br />
<br />
if nil == args.italic then -- args.italic controls<br />
if is_set (subtags.script) then<br />
if 'latn' == subtags.script then<br />
args.italic = 'italic'; -- |script=Latn; set for font-style:italic<br />
else<br />
args.italic = initial_style_state; -- italic not set; script is not latn; set for font-style:<initial_style_state><br />
end<br />
else<br />
args.italic = initial_style_state; -- here when |italic= and |script= not set; set for font-style:<initial_style_state><br />
end<br />
end<br />
<br />
if is_set (subtags.script) then -- if script set override rtl setting<br />
if in_array (subtags.script, lang_data.rtl_scripts) then<br />
args.rtl = true; -- script is an rtl script<br />
else<br />
args.rtl = false; -- script is not an rtl script<br />
end<br />
end<br />
<br />
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag<br />
if msg then<br />
return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template);<br />
end<br />
<br />
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles<br />
language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant<br />
<br />
category_name = language_name; -- category names retain IANA parenthetical diambiguators (if any)<br />
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them<br />
<br />
if args.label then<br />
if 'none' ~= args.label then<br />
table.insert (out, table.concat ({args.label, ': '})); -- custom label<br />
end<br />
else<br />
if 'no' == args.link then<br />
table.insert (out, language_name); -- language name without wikilink<br />
else<br />
if mw.ustring.find (language_name, 'languages', 1, true) then<br />
table.insert (out, make_wikilink (language_name)); -- collective language name uses simple wikilink<br />
elseif lang_data.article_name[code] then<br />
table.insert (out, make_wikilink (lang_data.article_name[code], language_name)); -- language name with wikilink from override data<br />
else<br />
table.insert (out, make_wikilink (language_name .. ' language', language_name)); -- language name with wikilink<br />
end<br />
end<br />
table.insert (out, ': '); -- separator<br />
end<br />
<br />
if 'invert' == args.italic then<br />
args.text = invert_italics (args.text)<br />
end<br />
<br />
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat<br />
<br />
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, ('none' == args.label) and language_name or nil))<br />
<br />
if is_set (args.translit) and not unicode.is_Latin (args.text) then -- transliteration (not supported in {{lang}}); not supported when args.text is wholly latn text (this is an imperfect test)<br />
table.insert (out, ', '); -- comma to separate text from translit<br />
if 'none' ~= args.label then<br />
table.insert (out, '<small>');<br />
if script_table[args['translit-script']] then -- when |translit-script= is set, try to use the script's name<br />
translit_script_name = script_table[args['translit-script']];<br />
else<br />
translit_script_name = language_name; -- fall back on language name<br />
end<br />
translit_title = mw.title.makeTitle (0, table.concat ({'Romanization of ', translit_script_name})); -- make a title object<br />
if translit_title.exists and ('no' ~= args.link) then<br />
table.insert (out, make_wikilink ('Romanization of ' .. translit_script_name or language_name, 'romanized') .. ':'); -- make a wikilink if there is an article to link to<br />
else<br />
table.insert (out, 'romanized:'); -- else plain text<br />
end<br />
table.insert (out, '&nbsp;</small>'); -- close the small tag<br />
end<br />
<br />
translit = make_translit (args.code, language_name, args.translit, args['translit-std'], args['translit-script'])<br />
if is_set (translit) then<br />
table.insert (out, translit);<br />
else<br />
return make_error_msg (table.concat ({'invalid translit-std: \'', args['translit-std'] or '[missing]'}), args, template);<br />
end<br />
end<br />
<br />
if is_set (args.translation) then -- translation (not supported in {{lang}})<br />
table.insert (out, ', ');<br />
if 'none' ~= args.label then<br />
table.insert (out, '<small>');<br />
if 'no' == args.link then<br />
table.insert (out, '<abbr title="literal translation">lit.</abbr>');<br />
else<br />
table.insert (out, make_wikilink ('Literal translation', 'lit.'));<br />
end<br />
table.insert (out, "&thinsp;</small>");<br />
end<br />
table.insert (out, table.concat ({'&#39;', args.translation, '&#39;'})); -- use html entities to avoid wiki markup confusion<br />
end<br />
<br />
table.insert (out, make_category (code, category_name, args.nocat));<br />
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories<br />
<br />
return table.concat (out); -- put it all together and done<br />
end<br />
<br />
<br />
--[[--------------------------< L A N G _ X X _ A R G S _ G E T >----------------------------------------------<br />
<br />
common function to get args table from {{lang-??}} templates<br />
<br />
returns table of args<br />
<br />
]]<br />
<br />
local function lang_xx_args_get (frame)<br />
local args = getArgs(frame,<br />
{<br />
parentFirst= true, -- parameters in the template override parameters set in the {{#invoke:}}<br />
valueFunc = function (key, value)<br />
if 1 == key then -- the 'text' parameter; do not trim wite space<br />
return value; -- return untrimmed 'text'<br />
elseif value then -- all other values: if the value is not nil<br />
value = mw.text.trim (value); -- trim whitespace<br />
if '' ~= value then -- empty string when value was only whitespace<br />
return value;<br />
end<br />
end<br />
return nil; -- value was empty or contained only whitespace<br />
end -- end of valueFunc<br />
});<br />
<br />
return args;<br />
end<br />
<br />
<br />
--[[--------------------------< L A N G _ X X _ I T A L I C >--------------------------------------------------<br />
<br />
Entry point for those {{lang-xx}} templates that call lang_xx_italic(). Sets the initial style state to italic.<br />
<br />
]]<br />
<br />
local function lang_xx_italic (frame)<br />
local args = lang_xx_args_get (frame);<br />
<br />
initial_style_state = 'italic';<br />
return _lang_xx (args);<br />
end<br />
<br />
<br />
--[[--------------------------< _ L A N G _ X X _ I T A L I C >------------------------------------------------<br />
<br />
Entry point ffrom another module. Sets the initial style state to italic.<br />
<br />
]]<br />
<br />
local function _lang_xx_italic (args)<br />
initial_style_state = 'italic';<br />
return _lang_xx (args);<br />
end<br />
<br />
<br />
--[[--------------------------< L A N G _ X X _ I N H E R I T >------------------------------------------------<br />
<br />
Entry point for those {{lang-xx}} templates that call lang_xx_inherit(). Sets the initial style state to inherit.<br />
<br />
]]<br />
<br />
local function lang_xx_inherit (frame)<br />
local args = lang_xx_args_get (frame);<br />
<br />
initial_style_state = 'inherit';<br />
return _lang_xx (args);<br />
end<br />
<br />
<br />
--[[--------------------------< _ L A N G _ X X _ I N H E R I T >----------------------------------------------<br />
<br />
Entry point from another module. Sets the initial style state to inherit.<br />
<br />
]]<br />
<br />
local function _lang_xx_inherit (args)<br />
initial_style_state = 'inherit';<br />
return _lang_xx (args);<br />
end<br />
<br />
<br />
--[[--------------------------< _ I S _ I E T F _ T A G >------------------------------------------------------<br />
<br />
Returns true when a language name associated with IETF language tag exists; nil else. IETF language tag must be valid.<br />
<br />
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.<br />
<br />
Module entry point from another module<br />
<br />
]]<br />
<br />
local function _is_ietf_tag (tag) -- entry point when this module is require()d into another<br />
local c, s, r, v, p, err; -- code, script, region, variant, private, error message<br />
c, s, r, v, p, err = get_ietf_parts (tag); -- disassemble tag into constituent part and validate<br />
<br />
return ((c and not err) and true) or nil; -- return true when code portion has a value without error message; nil else<br />
end<br />
<br />
<br />
--[[--------------------------< I S _ I E T F _ T A G >--------------------------------------------------------<br />
<br />
Module entry point from an {{#invoke:}}<br />
<br />
]]<br />
<br />
local function is_ietf_tag (frame)<br />
return _is_ietf_tag (getArgs (frame)[1]); -- args[1] is the ietf language tag to be tested; also get parent frame<br />
end<br />
<br />
<br />
--[[--------------------------< I S _ I E T F _ T A G _ F R A M E >--------------------------------------------<br />
<br />
Module entry point from an {{#invoke:}}; same as is_ietf_tag() except does not get parameters from the parent<br />
(template) frame. This function not useful when called by {{lang|fn=is_ietf_tag_frame|<tag>}} because <tag><br />
is in the parent frame.<br />
<br />
]]<br />
<br />
local function is_ietf_tag_frame (frame)<br />
return _is_ietf_tag (getArgs (frame, {frameOnly = true,})[1]); -- args[1] is the ietf language tag to be tested; do not get parent frame<br />
end<br />
<br />
<br />
--[[--------------------------< _ N A M E _ F R O M _ T A G >--------------------------------------------------<br />
<br />
Returns language name associated with IETF language tag if valid; error message else.<br />
<br />
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.<br />
<br />
Set invoke's |link= parameter to yes to get wikilinked version of the language name.<br />
<br />
Module entry point from another module<br />
<br />
]]<br />
<br />
local function _name_from_tag (args)<br />
local subtags = {}; -- IETF subtags script, region, variant, and private<br />
local raw_code = args[1]; -- save a copy of the input IETF subtag<br />
local link = 'yes' == args['link']; -- make a boolean<br />
local label = args.label;<br />
local code; -- the language code<br />
local msg; -- gets an error message if IETF language tag is malformed or invalid<br />
local language_name = '';<br />
<br />
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);<br />
if msg then<br />
local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template)<br />
return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'});<br />
end<br />
<br />
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private<br />
language_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant<br />
<br />
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them<br />
<br />
if link then -- when |link=yes, wikilink the language name<br />
if mw.ustring.find (language_name, 'languages', 1, true) then<br />
language_name = make_wikilink (language_name, label); -- collective language name uses simple wikilink<br />
elseif lang_data.article_name[code] then<br />
language_name = make_wikilink (lang_data.article_name[code], label or language_name); -- language name with wikilink from override data<br />
else<br />
language_name = make_wikilink (language_name .. ' language', label or language_name); -- language name with wikilink<br />
end<br />
end<br />
<br />
return language_name;<br />
end<br />
<br />
<br />
--[[--------------------------< N A M E _ F R O M _ T A G >----------------------------------------------------<br />
<br />
Module entry point from an {{#invoke:}}<br />
<br />
]]<br />
<br />
local function name_from_tag (frame) -- entry point from an {{#invoke:Lang|name_from_tag|<ietf tag>|link=<yes>|template=<template name>}}<br />
return _name_from_tag (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame<br />
end<br />
<br />
<br />
--[[--------------------------< _ T A G _ F R O M _ N A M E >--------------------------------------------------<br />
<br />
Returns the ietf language tag associated with the language name. Spelling of language name must be correct<br />
according to the spelling in the source tables. When a standard language name has a parenthetical disambiguator,<br />
that disambiguator must be omitted (they are not present in the data name-to-tag tables).<br />
<br />
Module entry point from another module<br />
<br />
]]<br />
<br />
local function _tag_from_name (args) -- entry point from another module<br />
local msg;<br />
<br />
if args[1] and '' ~= args[1] then<br />
local data = mw.loadData ('Module:Lang/tag from name'); -- get the reversed data tables TODO: change when going live<br />
local lang = args[1]:lower(); -- allow any-case for the language name (speeling must till be correct)<br />
local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang]; -- get the code; look first in the override then in the standard<br />
<br />
if tag then<br />
return tag, true; -- language name found so return tag and done; second return used by is_lang_name()<br />
else<br />
msg = 'language: ' .. args[1] .. ' not found' -- language name not found, error message<br />
end<br />
else<br />
msg = 'missing language name' -- language name not provided, error message<br />
end<br />
<br />
local template = '';<br />
if args.template and '' ~= args.template then<br />
template = table.concat ({'{{', args['template'], '}}: '}); -- make template name (if provided by the template)<br />
end<br />
return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'});<br />
end<br />
<br />
<br />
--[[--------------------------< T A G _ F R O M _ N A M E >----------------------------------------------------<br />
<br />
Module entry point from an {{#invoke:}}<br />
<br />
]]<br />
<br />
local function tag_from_name (frame) -- entry point from an {{#invoke:Lang|tag_from_name|<language name>|link=<yes>|template=<template name>}}<br />
local result, _ = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name()<br />
return result; <br />
end<br />
<br />
<br />
--[[--------------------------< I S _ L A N G _ N A M E >------------------------------------------------------<br />
<br />
Module entry point from an {{#invoke:}}<br />
<br />
]]<br />
<br />
local function is_lang_name (frame)<br />
local _, result = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name()<br />
return result and true or nil; <br />
end<br />
<br />
<br />
--[[--------------------------< _ T R A N S L >----------------------------------------------------------------<br />
<br />
Module entry point from another module<br />
<br />
]]<br />
<br />
local function _transl (args)<br />
local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards<br />
local language_name; -- language name that matches language code; used for tool tip<br />
local translit; -- transliterated text to display<br />
local script; -- IANA script<br />
local msg; -- for when called functions return an error message<br />
<br />
if is_set (args[3]) then -- [3] set when {{transl|code|standard|text}}<br />
args.text = args[3]; -- get the transliterated text<br />
args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing<br />
<br />
if not title_table[args.translit_std] then<br />
return make_error_msg (table.concat ({'unrecognized transliteration standard: ', args.translit_std}), args, 'Transl');<br />
end<br />
else<br />
if is_set (args[2]) then -- [2] set when {{transl|code|text}}<br />
args.text = args[2]; -- get the transliterated text<br />
else<br />
if args[1] and args[1]:match ('^%a%a%a?%a?$') then -- args[2] missing; is args[1] a code or is it the transliterated text?<br />
return make_error_msg ('no text', args, 'Transl'); -- args[1] is a code so we're missing text<br />
else<br />
args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message<br />
return make_error_msg ('missing language / script code', args, 'Transl');<br />
end<br />
end<br />
end<br />
<br />
if is_set (args[1]) then -- IANA language code used for html lang= attribute; or ISO 15924 script code<br />
if args[1]:match ('^%a%a%a?%a?$') then -- args[1] has correct form?<br />
args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters); lower case because table indexes are lower case<br />
else<br />
return make_error_msg (table.concat ({'unrecognized language / script code: ', args[1]}), args, 'Transl'); -- invalid language / script code<br />
end<br />
else<br />
return make_error_msg ('missing language / script code', args, 'Transl'); -- missing language / script code so quit<br />
end<br />
<br />
args.italic, msg = validate_italic (args);<br />
if msg then<br />
return make_error_msg (msg, args, 'Transl');<br />
end<br />
<br />
if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default<br />
args.italic = nil; -- set to nil; <br />
end<br />
<br />
if override_table[args.code] then -- is code a language code defined in the override table?<br />
language_name = override_table[args.code];<br />
elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables?<br />
language_name = lang_table[args.code];<br />
elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables?<br />
language_name = lang_dep_table[args.code];<br />
elseif script_table[args.code] then -- if here, code is not a language code; is it a script code?<br />
language_name = script_table[args.code];<br />
script = args.code; -- code was an ISO 15924 script so use that instead<br />
args.code = ''; -- unset because not a language code<br />
else<br />
return make_error_msg (table.concat ({'unrecognized language / script code: ', args.code}), args, 'Transl'); -- invalid language / script code<br />
end<br />
-- here only when all parameters passed to make_translit() are valid<br />
return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic);<br />
end<br />
<br />
<br />
--[[--------------------------< T R A N S L >------------------------------------------------------------------<br />
<br />
Module entry point from an {{#invoke:}}<br />
<br />
]]<br />
<br />
local function transl (frame)<br />
return _transl (getArgs(frame));<br />
end<br />
<br />
<br />
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------<br />
<br />
Returns category name associated with IETF language tag if valid; error message else<br />
<br />
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.<br />
<br />
Module entry point from another module<br />
<br />
]]<br />
<br />
local function _category_from_tag (args_t)<br />
local subtags = {}; -- IETF subtags script, region, variant, and private<br />
local raw_code = args_t[1]; -- save a copy of the input IETF subtag<br />
local link = 'yes' == args_t.link; -- make a boolean<br />
local label = args_t.label;<br />
local code; -- the language code<br />
local msg; -- gets an error message if IETF language tag is malformed or invalid<br />
local category_name = '';<br />
<br />
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);<br />
if msg then<br />
local template = (args_t.template and table.concat ({'{{', args_t.template, '}}: '})) or ''; -- make template name (if provided by the template)<br />
return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'});<br />
end<br />
<br />
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private<br />
category_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant<br />
category_name = make_category (code, category_name, nil, true):gsub ('[%[%]]', '');<br />
<br />
if link then<br />
return table.concat ({'[[:', category_name, ']]'});<br />
else<br />
return category_name;<br />
end<br />
end<br />
<br />
<br />
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------<br />
<br />
Module entry point from an {{#invoke:}}<br />
<br />
]]<br />
<br />
local function category_from_tag (frame) -- entry point from an {{#invoke:Lang|category_from_tag|<ietf tag>|template=<template name>}}<br />
return _category_from_tag (getArgs (frame)); -- pass-on the args table, nothing else; getArgs() so we also get parent frame<br />
end<br />
<br />
<br />
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------<br />
]]<br />
<br />
return {<br />
category_from_tag = category_from_tag,<br />
lang = lang, -- entry point for {{lang}}<br />
lang_xx_inherit = lang_xx_inherit, -- entry points for {{lang-??}}<br />
lang_xx_italic = lang_xx_italic,<br />
is_ietf_tag = is_ietf_tag,<br />
is_ietf_tag_frame = is_ietf_tag_frame,<br />
is_lang_name = is_lang_name,<br />
tag_from_name = tag_from_name, -- returns ietf tag associated with language name<br />
name_from_tag = name_from_tag, -- used for template documentation; possible use in ISO 639 name from code templates<br />
transl = transl, -- entry point for {{transl}}<br />
<br />
_category_from_tag = _category_from_tag, -- entry points when this module is require()d into other modules<br />
_lang = _lang,<br />
_lang_xx_inherit = _lang_xx_inherit,<br />
_lang_xx_italic = _lang_xx_italic,<br />
_is_ietf_tag = _is_ietf_tag,<br />
get_ietf_parts = get_ietf_parts,<br />
_tag_from_name = _tag_from_name, <br />
_name_from_tag = _name_from_tag,<br />
_transl = _transl,<br />
};</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:In_lang&diff=2425
Module:In lang
2022-02-08T20:15:49Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>{{#invoke:In lang|in_lang|template=in lang<noinclude>|{{CONTENTLANGUAGE}}</noinclude>}}<noinclude><br />
{{documentation}}<br />
</noinclude></div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Aligned_table&diff=2423
Module:Aligned table
2022-02-08T20:15:44Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>{{<includeonly>safesubst:</includeonly>#invoke:aligned table|table}}<noinclude><br />
{{documentation}}<br />
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --><br />
</noinclude></div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Tlg&diff=2421
Module:Tlg
2022-02-08T20:15:44Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>#REDIRECT [[Template:Template link general]]<br />
<br />
{{Redirect category shell|<br />
{{R from move}}<br />
}}</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Template_link_general&diff=2419
Module:Template link general
2022-02-08T20:15:44Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>-- This implements Template:Tlg<br />
local getArgs = require('Module:Arguments').getArgs<br />
local p = {}<br />
<br />
-- Is a string non-empty?<br />
local function _ne(s) <br />
return s ~= nil and s ~= ""<br />
end<br />
<br />
local nw = mw.text.nowiki<br />
<br />
local function addTemplate(s)<br />
local i, _ = s:find(':', 1, true)<br />
if i == nil then<br />
return 'Template:' .. s<br />
end<br />
local ns = s:sub(1, i - 1)<br />
if ns == '' or mw.site.namespaces[ns] then<br />
return s<br />
else<br />
return 'Template:' .. s<br />
end<br />
end<br />
<br />
local function trimTemplate(s)<br />
local needle = 'template:'<br />
if s:sub(1, needle:len()):lower() == needle then<br />
return s:sub(needle:len() + 1) <br />
else<br />
return s<br />
end<br />
end<br />
<br />
local function linkTitle(args)<br />
if _ne(args.nolink) then<br />
return args['1']<br />
end<br />
<br />
local titleObj<br />
local titlePart = '[['<br />
if args['1'] then<br />
-- This handles :Page and other NS<br />
titleObj = mw.title.new(args['1'], 'Template')<br />
else<br />
titleObj = mw.title.getCurrentTitle()<br />
end<br />
<br />
titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or<br />
addTemplate(args['1']))<br />
<br />
local textPart = args.alttext<br />
if not _ne(textPart) then<br />
if titleObj ~= nil then<br />
textPart = titleObj:inNamespace("Template") and args['1'] or titleObj.fullText<br />
else<br />
-- redlink<br />
textPart = args['1']<br />
end<br />
end<br />
<br />
if _ne(args.subst) then<br />
-- HACK: the ns thing above is probably broken<br />
textPart = 'subst:' .. textPart<br />
end<br />
<br />
if _ne(args.brace) then<br />
textPart = nw('{{') .. textPart .. nw('}}')<br />
elseif _ne(args.braceinside) then<br />
textPart = nw('{') .. textPart .. nw('}')<br />
end<br />
<br />
titlePart = titlePart .. '|' .. textPart .. ']]'<br />
if _ne(args.braceinside) then<br />
titlePart = nw('{') .. titlePart .. nw('}')<br />
end<br />
return titlePart<br />
end<br />
<br />
function p.main(frame)<br />
local args = getArgs(frame, {<br />
trim = true,<br />
removeBlanks = false<br />
})<br />
return p._main(args)<br />
end<br />
<br />
function p._main(args)<br />
local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname)<br />
local italic = _ne(args.italic) or _ne(args.italics)<br />
local dontBrace = _ne(args.brace) or _ne(args.braceinside)<br />
local code = _ne(args.code) or _ne(args.tt)<br />
local show_result = _ne(args._show_result)<br />
<br />
-- Build the link part<br />
local titlePart = linkTitle(args)<br />
if bold then titlePart = "'''" .. titlePart .. "'''" end<br />
if _ne(args.nowrapname) then titlePart = '<span class="nowrap">' .. titlePart .. '</span>' end<br />
<br />
-- Build the arguments<br />
local textPart = ""<br />
local textPartBuffer = ""<br />
local codeArguments = {}<br />
local i = 2<br />
while args[i] do<br />
local val = args[i]<br />
textPartBuffer = textPartBuffer .. '&#124;'<br />
if val ~= "" then<br />
if _ne(args.nowiki) then<br />
-- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will<br />
-- mangle the nowiki strip marker and result in literal UNIQ...QINU showing up<br />
val = nw(mw.text.unstripNoWiki(val))<br />
end<br />
local k, v = string.match(val, "(.*)=(.*)")<br />
if not k then<br />
codeArguments[i - 1] = val<br />
else<br />
codeArguments[k] = v<br />
end<br />
if italic then val = '<span style="font-style:italic;">' .. val .. '</span>' end<br />
textPart = textPart .. textPartBuffer .. val<br />
textPartBuffer = ""<br />
end<br />
i = i+1<br />
end<br />
<br />
-- final wrap<br />
local ret = titlePart .. textPart<br />
if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end<br />
if _ne(args.a) then ret = nw('*') .. '&nbsp;' .. ret end<br />
if _ne(args.kbd) then ret = '<kbd>' .. ret .. '</kbd>' end<br />
if code then<br />
ret = '<code>' .. ret .. '</code>'<br />
elseif _ne(args.plaincode) then<br />
ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>'<br />
end<br />
if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end<br />
<br />
--[[ Wrap as html?? <br />
local span = mw.html.create('span')<br />
span:wikitext(ret)<br />
--]]<br />
if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end<br />
<br />
if show_result then<br />
local result = mw.getCurrentFrame():expandTemplate{title = "Template:" .. args[1], args = codeArguments}<br />
ret = ret .. " → " .. result<br />
end<br />
return ret<br />
end<br />
<br />
return p</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:String-handling_templates&diff=2417
Module:String-handling templates
2022-02-08T20:15:44Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>{{#invoke:Navbox with collapsible groups|navbox<br />
| name = String-handling templates<br />
| state = {{{state|expanded}}}<br />
| bodyclass = plainlist<br />
| title = String-handling templates [[Help:Manipulating_strings|(help page)]]<br />
| selected = {{{selected|{{{expanded|{{{1|}}}}}}}}}<br />
<br />
<!---------------------- Trimming -------------------------><br />
| abbr1 = sub<br />
| sect1 = Substring (select chunk of string by its position)<br />
| content1 = {{Aligned table |fullwidth=on |style=text-align:left; |col1width=50%;<br />
| {{Aligned table |style=padding-right:2em;<br />
|col1style=width:12em;text-align:right;padding-right:0.75em;<br />
| '''{{ml|string|sub|section=#sub}}<br> {{tl|str sub new}}''' | Select a substring based on starting and ending index counted in either direction.<br />
| {{tl|str left}} | Keep the first N characters of a string, or duplicate it to N characters.<br />
| {{tl|str crop}} | Return all but the last N characters of a string.<br />
| {{tl|str index}} | Return the N-th character of a string.<br />
}}<br />
| {{Aligned table<br />
|col1style=width:12em;text-align:right;padding-right:0.75em;<br />
| {{tl|str right}} | Return substring starting at N-th character to end of string.<br />
| {{tl|str rightc}} | Return the last N characters of a string; or a given value if empty.<br />
| {{tl|str sub old}} | Return substring of given length starting at N-th character.<br />
}} }}<br />
<br />
| abbr2 = trim<br />
| sect2 = Trimming (select/remove chunk of string by character type)<br />
| content2 =<br />
{{Aligned table |fullwidth=on |style=text-align:left; |col1width=50%;<br />
| {{Aligned table |style=padding-right:2em;<br />
|col1style=width:12em;text-align:right;padding-right:0.75em;<br />
| {{tl|trim}} | Trim any leading or trailing whitespace<br />
| {{tl|str letter/trim}} | Trim down to the beginning letters.<br />
| {{tl|str number/trim}} | Trim down to the beginning numbers.<br />
| {{tl|trim brackets}} | Trim any leading or trailing square brackets.<br />
| {{tl|trim quotes}} | Trim leading or trailing matching quotes.<br />
| {{tl|trim leading}} | Trim up to six instances of specified <prefix>.<br />
}}<br />
| {{Aligned table<br />
|col1style=width:12em;text-align:right;padding-right:0.75em;<br />
| {{tl|string split}} | Extract a short string from a long string.<br />
| {{tl|first word}} | Trim down to the first space.<br />
| {{tl|remove first word}} | Remove anything before the first space.<br />
| {{tl|last word}} | Trim down from the last space.<br />
| {{tl|remove last word}} | Remove anything after the last space.<br />
}} }}<br />
<br />
| abbr3 = specific<br />
| group3 = Select/remove specific item from string<br />
| content3 =<br />
{{Aligned table |fullwidth=on |style=text-align:left; |col1width=50%;<br />
| {{Aligned table |style=padding-right:2em;<br />
|col1style=width:12em;text-align:right;padding-right:0.75em;<br />
| {{tl|delink}}, {{tl|trim brackets}} | Removes wikilink brackets (wikicode); ''all'' or ''outer only''.<br />
| {{tl|remove file prefix}} | Removes "File:" (or "Image:") from filenames.<br />
| {{tl|PAGENAMEBASE}} | Trim off any parenthesis text at the end of a string (disambiguation).<br />
| {{tl|title disambig text}} | Returns text in parentheses at the end of a string (disambiguation).<br />
| {{tl|WikiProjectbasename}} | Removes "WikiProject" from a pagename.<br />
}}<br />
| {{Aligned table<br />
|col1style=width:12em;text-align:right;padding-right:0.75em;<br />
| {{tl|ship prefix}} | Returns the length of a ship's name prefix, if listed (ship names).<br />
| {{tl|title year}} | Returns the 3-or-4-digit year from a pagename, if any.<br />
| {{tl|title decade}} | Returns the 4-digit decade (e.g. "1740s") from a pagename, if any.<br />
| {{tl|title number}} | Returns any number from a pagename.<br />
}} }}<br />
<br />
<!----------- Insertion, replacement, length --------------><br />
| abbr4 = IRL<br />
| sect4 = Insertion, replacement and length<br />
| content4 =<br />
{{Aligned table |style=margin:0 auto 0;text-align:left;<br />
| <!---(Insertion, replacement)---><br />
{{Aligned table |style=padding-right:2em;<br />
|col1style=text-align:right;padding-right:0.75em;<br />
| {{tl|loop}} | Repeat character string a specified number of times.<br />
| {{tl|replace}} | Returns the string, after replacing ''all'' occurrences of a specified string with another string.<br />
| {{tl|str rep}} | Returns the string, after replacing the first occurrence of a specified string with another string.<br />
| {{tl|digits}} | Returns the string, after removing all characters that are not digits 0–9<br />
| {{tl|Plain text}}, {{tl|Nowiki}} | Strips wikicode from a string.<br />
}}<br />
| <!---(Length)---><br />
{{Aligned table<br />
|col1style=text-align:right;padding-right:0.75em;<br />
| {{tl|str len}} | Returns a string's length.<br />
| {{tl|str ≥ len}} | Check if a string is "longer or equally long" or "shorter" than a given length.<br />
| {{tl|str ≤ len}} | Check if a string is "shorter or equally long" or "longer" than a given length.<br />
| {{tl|str ≠ len}} | Check if a string is "not equal" or "equal" to a given length.<br />
}} }}<br />
<br />
<!----------------- Analysis, technical -------------------><br />
| abbr5 = anlys/tech<br />
| sect5 = Analysis and searching<br />
| content5 =<br />
{{Aligned table |style=margin:0 auto 0;text-align:left;<br />
| <!---(Analysis)---><br />
{{Aligned table |style=padding-right:2em;<br />
|col1style=text-align:right;padding-right:0.75em;<br />
| {{ml|string2|startswith}}<br>{{tl|str endswith}} | Check if a string starts or ends with a given string.<br />
| {{tl|str find}}, {{tl|strfind short}} |style2.2=vertical-align:middle;| Returns the numerical location of a given string in a string.<br />
| {{tl|in string}} | Returns optional string when given string is not found<br />
| {{tl|str count}} | Count the number of occurrences of a pattern within a string.<br />
}}<br />
| <!---(Analysis cont'd)---><br />
{{Aligned table<br />
|col1style=text-align:right;padding-right:0.75em;<br />
| {{tl|a or an}} | Takes a noun and produces the appropriate indefinite article, based on whether the first letter is a vowel.<br />
| {{tl|Isnumeric}} | Returns number when true, blank when not numeric.<br />
| {{tl|str letter}} | Returns the number of letters that begin a string.<br />
| {{tl|str number}} | Returns the number of numbers that begin a string.<br />
}} }}<br />
|state1=<noinclude>expanded</noinclude><!-- show everything on this template's page --><br />
|state2=<noinclude>expanded</noinclude><br />
|state3=<noinclude>expanded</noinclude><br />
|state4=<noinclude>expanded</noinclude><br />
|state5=<noinclude>expanded</noinclude><br />
|state6=expanded<br />
|group6=Modules and built-in functions<br />
|list6={{div col|style=text-align:left}}<br />
* [[:Module:String]], [[:Module:String2]], [[:Module:Ustring]], [[Module:Text]]: modules that together contain most necessary string functions.<br />
* [[mw:Help:Magic words|Magic words]]: About <code><nowiki>{{padleft:&#124;}}</nowiki></code>, <code><nowiki>{{lc:&#124;}}</nowiki></code>, <code><nowiki>{{formatnum:&#124;}}</nowiki></code> etc.<br />
* [[mw:Help:Extension:ParserFunctions|ParserFunctions]]: About <code><nowiki>{{#titleparts:&#124;}}, {{#expr:&#124;}}, {{#ifeq:&#124;}}, </nowiki></code> etc.{{div col end}}<br />
<!----------------------- below ---------------------------><br />
| belowclass = hlist<br />
| below =<br />
* [[:Category:String manipulation templates]] <br />
** [[:c:Category:String manipulation templates|Commons]]<br />
** [[:mw:Category:String manipulation templates|MediaWiki]]<br />
** [[:m:Category:String manipulation templates|Meta-Wiki]]<br />
** [[:d:Category:String manipulation templates|Wikidata]]<br />
<br />
| tracking = no <!--(keep all these string templates (by /doc pages) out of the tracking category)--><br />
<br />
}}<noinclude>{{documentation}}</noinclude></div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Ml&diff=2415
Module:Ml
2022-02-08T20:15:43Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>&#123;&#123;{{{{{|safesubst:}}}#invoke:Separated entries|main|[[Module:{{{1}}}{{{section|}}}|#invoke:{{{1}}}]]|{{{2|''function''}}}|separator=&#124;}}&#125;&#125;<noinclude><br />
{{documentation}}<br />
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. --><br />
</noinclude></div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:In_lang&diff=2413
Module:In lang
2022-02-08T20:15:42Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>{{#invoke:In lang|in_lang|template=in lang<noinclude>|{{CONTENTLANGUAGE}}</noinclude>}}<noinclude><br />
{{documentation}}<br />
</noinclude></div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Div_col_end&diff=2411
Module:Div col end
2022-02-08T20:15:42Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div><includeonly></div></includeonly><noinclude><br />
{{Documentation|Template:Div col/doc}}<br />
</noinclude></div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:Aligned_table&diff=2409
Module:Aligned table
2022-02-08T20:15:38Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>{{<includeonly>safesubst:</includeonly>#invoke:aligned table|table}}<noinclude><br />
{{documentation}}<br />
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --><br />
</noinclude></div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:In5&diff=2407
Module:In5
2022-02-08T20:15:38Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>-- This module implements {{in5}}.<br />
<br />
local p = {}<br />
<br />
function p.in5(frame)<br />
local indent = frame.args[1]<br />
-- Trim whitespace and convert to number. Default to 5 if not present,<br />
-- as per the template title.<br />
indent = tonumber( mw.text.trim(indent) ) or 5<br />
-- Round down to nearest integer. Decimal values produce funky results<br />
-- from the original template, but there's no need for us to replicate that.<br />
indent = math.floor( indent )<br />
-- Don't output anything for zero or less. Again, there was some funky output<br />
-- here for negatives, but now we're in Lua we should use sane defaults.<br />
if indent <= 0 then<br />
return<br />
end<br />
<br />
local base = '&nbsp; '<br />
local modulo = '&nbsp;'<br />
<br />
--[[<br />
Indent values and the corresponding values for base and modulo:<br />
<br />
indent base modulo<br />
1 0 1<br />
2 0 2<br />
3 1 1<br />
4 1 2<br />
5 2 1<br />
6 2 2<br />
7 3 1<br />
8 3 2<br />
9 4 1<br />
10 4 2<br />
]]<br />
<br />
local baseNum = math.floor( (indent - 1) / 2 )<br />
local modNum = math.fmod( indent - 1 , 2 ) + 1<br />
<br />
return mw.ustring.rep( base, baseNum) .. mw.ustring.rep( modulo, modNum )<br />
end<br />
<br />
return p</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:For_loop&diff=2405
Module:For loop
2022-02-08T20:15:37Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>-- This module implements {{for loop}}.<br />
<br />
local getArgs = require('Module:Arguments').getArgs<br />
local yesno = require('Module:Yesno')<br />
local p = {}<br />
<br />
function p.main(frame)<br />
local args = getArgs(frame, {<br />
trim = false,<br />
removeBlanks = false<br />
})<br />
return p._main(args)<br />
end<br />
<br />
function p._main(args)<br />
local template = args['call'] or 'void'<br />
local calltemplates = yesno(args.substall or "", true) or not mw.isSubsting()<br />
local variableParam = args.pv<br />
variableParam = tonumber(variableParam) or variableParam or 1 -- fix for positional parameters<br />
local variableValPrefix = args.prefix or ''<br />
local variableValPostfix = args.postfix or ''<br />
local sep = args[1] or ''<br />
local constantArgs = p.getConstants(args)<br />
local variableVals = p.getVariableVals(args)<br />
<br />
local result = ''<br />
local addSeparator = false;<br />
for _, v in ipairs(variableVals) do<br />
v = mw.text.trim(v)<br />
if #v > 0 or not yesno(args.skipBlanks) then<br />
if addSeparator then<br />
result = result .. sep<br />
end<br />
addSeparator = true;<br />
local targs = constantArgs<br />
targs[variableParam] = variableValPrefix .. v .. variableValPostfix<br />
if calltemplates then<br />
local output = p.callTemplate(template, targs)<br />
if #mw.text.trim(output) == 0 then<br />
addSeparator = false<br />
end<br />
result = result .. output<br />
else<br />
local makeTemplate = require('Module:Template invocation').invocation<br />
result = result .. makeTemplate(template, targs)<br />
end<br />
end<br />
end<br />
return result<br />
end<br />
<br />
function p.getConstants(args)<br />
local constantArgNums = p.getArgNums(args, 'pc', 'n')<br />
local constantArgs = {}<br />
for _, num in ipairs(constantArgNums) do<br />
local keyArg = 'pc' .. tostring(num) .. 'n'<br />
local valArg = 'pc' .. tostring(num) .. 'v'<br />
local key = args[keyArg]<br />
key = tonumber(key) or key<br />
local value = args[valArg]<br />
constantArgs[key] = value<br />
end<br />
return constantArgs<br />
end<br />
<br />
function p.getVariableVals(args)<br />
local variableVals = {}<br />
if args.start or args.stop or args.by then<br />
if args[2] then<br />
error("Both start/stop/by and numbered parameters specified")<br />
end<br />
local start = tonumber(args.start or 1)<br />
local stop = tonumber(args.stop or 1)<br />
local by = tonumber(args.by or 1)<br />
for i = start, stop, by do<br />
variableVals [#variableVals + 1] = i<br />
end<br />
else<br />
for i, v in ipairs(args) do<br />
if i ~= 1 then<br />
variableVals[i - 1] = v<br />
end<br />
end<br />
end<br />
return variableVals<br />
end<br />
<br />
function p.getArgNums(args, prefix, suffix)<br />
-- Returns a table containing the numbers of the arguments that exist<br />
-- for the specified prefix and suffix.<br />
local nums = {}<br />
local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'<br />
for k, _ in pairs(args) do<br />
local num = tostring(k):match(pattern)<br />
if num then<br />
nums[#nums + 1] = tonumber(num)<br />
end<br />
end<br />
table.sort(nums)<br />
return nums<br />
end<br />
<br />
function p.callTemplate(template, targs)<br />
return mw.getCurrentFrame():expandTemplate{title = template, args = targs}<br />
end<br />
<br />
return p</div>
Wprecht
https://wayneprecht.org/wiki3/index.php?title=Module:For&diff=2403
Module:For
2022-02-08T20:15:37Z
<p>Wprecht: 1 revision imported</p>
<hr />
<div>local mArguments --initialize lazily<br />
local mHatlist = require('Module:Hatnote list')<br />
local mHatnote = require('Module:Hatnote')<br />
local yesNo = require('Module:Yesno')<br />
local p = {}<br />
<br />
--Implements {{For}} from the frame<br />
--uses capitalized "For" to avoid collision with Lua reserved word "for"<br />
function p.For (frame)<br />
mArguments = require('Module:Arguments')<br />
return p._For(mArguments.getArgs(frame))<br />
end<br />
<br />
--Implements {{For}} but takes a manual arguments table<br />
function p._For (args)<br />
local use = args[1]<br />
if (not use) then<br />
return mHatnote.makeWikitextError(<br />
'no context parameter provided. Use {{other uses}} for "other uses" hatnotes.',<br />
'Template:For#Errors',<br />
args.category<br />
)<br />
end<br />
local pages = {}<br />
function two (a, b) return a, b, 1 end --lets us run ipairs from 2<br />
for k, v in two(ipairs(args)) do table.insert(pages, v) end<br />
local title = mw.title.getCurrentTitle()<br />
local skipCat = title.isTalkPage or title.namespace == 2 --don't categorise talk pages and userspace<br />
local oddCat = skipCat and '' or '[[Category:Hatnote templates using unusual parameters]]'<br />
local category = yesNo(args.category)<br />
return mHatnote._hatnote(<br />
mHatlist.forSeeTableToString({{use = use, pages = pages}}),<br />
{selfref = args.selfref}<br />
) .. (<br />
(use == 'other uses') and ((category == true) or (category == nil)) and<br />
oddCat or ''<br />
)<br />
end<br />
<br />
return p</div>
Wprecht