Repository: apertium/apertium-init (language: python)

Issue:
.deps/spellrelax.hfst should be .deps/$(LANG1).spellrelax.hfst
This issue was automatically made by begiak, Apertium's beloved IRC bot, by the order of firespeaker on #apertium. A human is yet to update the description.
Separate embedded resources from source code
This PR renames `apertium-init.py` to `main.py` and has `make` generate `apertium-init.py` from `main.py` and the various `updateBootstraper.py` scripts.

My reason for proposing this is that having the compressed file data in the source code is philosophically ugly and requires every open PR to be redone every time any other change is pushed, even if it's unrelated.

According to @TinoDidriksen, it should be straightforward to replace the download link in the readme with one that points to a copy of the script in nightly builds so that nothing needs to change externally.


Discussion / hints:

I had forgotten `.gitignore`.

I was planning to also incorporate updating the download instructions both here and on the wiki, I just didn't know what the new download link would be yet.
If we go ahead with this, then when I know what the new link would be, my plan is to combine all changes into the first commit, except for deleting the data lines from the source file (so that git can keep track of the renaming).

Also, so that they don't get lost, here are all the wiki pages that would need download links changed:
- https://wiki.apertium.org/wiki/Apertium-init
- https://wiki.apertium.org/wiki/How_to_bootstrap_a_new_pair
- https://wiki.apertium.org/wiki/The_quick_and_dirty_guide_to_making_a_new_language_pair
- https://wiki.apertium.org/wiki/Як_створити_нову_мовну_пару
[apertium-init is now packaged](https://github.com/apertium/apertium-packaging/commit/390a76451e644c4b23df807b6279c27554276d7a) and will appear on https://apertium.projectjj.com/apt/nightly/ and https://apertium.projectjj.com/apt/release/ after successful builds. Right now there's a nightly build.

This also means people can get apertium-init via nightly repo and apt-get.
## Pull Request Test Coverage Report for [Build 183](https://coveralls.io/builds/33539537)

* **0** of **0**   changed or added relevant lines in **0** files are covered.
* No unchanged relevant lines lost coverage.
* Overall coverage remained the same at **83.636%**

---



|  Totals | [![Coverage Status](https://coveralls.io/builds/33539537/badge)](https://coveralls.io/builds/33539537) |
| :-- | --: |
| Change from base [Build 182](https://coveralls.io/builds/33485586): |  0.0% |
| Covered Lines: | 322 |
| Relevant Lines: | 385 |

---
##### 💛  - [Coveralls](https://coveralls.io)

## Pull Request Test Coverage Report for [Build 187](https://coveralls.io/builds/33563027)

* **0** of **0**   changed or added relevant lines in **0** files are covered.
* No unchanged relevant lines lost coverage.
* Overall coverage remained the same at **83.636%**

---



|  Totals | [![Coverage Status](https://coveralls.io/builds/33563027/badge)](https://coveralls.io/builds/33563027) |
| :-- | --: |
| Change from base [Build 182](https://coveralls.io/builds/33485586): |  0.0% |
| Covered Lines: | 322 |
| Relevant Lines: | 385 |

---
##### 💛  - [Coveralls](https://coveralls.io)

Prettier URL: https://apertium.org/apertium-init
I've got everything in 2 commits now and I also fixed a typo that caused `make test` to fail on newer versions of mypy, so this should be ready to merge if the concept is agreeable.
Reminder to self: Use rebase and merge for this PR, not squash and merge.
Thanks @sushain97!

Fix patch:
diff --git a/Makefile b/Makefile
index 4adb0b0..eb23ad8 100644
--- a/Makefile
+++ b/Makefile
@@ -8,8 +8,9 @@ all:
 	./bilingual-module/updateBootstraper.py
 	./hfst-language-module/updateBootstraper.py
 	./lttoolbox-language-module/updateBootstraper.py
+	./updateBootstrapper.py
 
-apertium_init.py: apertium-init.py
+apertium_init.py: apertium-init.py all
 	cp $< $@
 
 dist: all apertium_init.py
@@ -32,7 +33,7 @@ test: all
 		git diff --exit-code apertium-init.py; \
 	fi
 
-install:
+install: all
 	@install -d $(DESTDIR)$(PREFIX)/bin
 	install -m755 apertium-init.py $(DESTDIR)$(PREFIX)/bin/apertium-init
 
diff --git a/README.md b/README.md
index 8dfce5f..615c4d7 100644
--- a/README.md
+++ b/README.md
@@ -7,10 +7,16 @@
 
 Bootstrap Apertium language modules and pairs using `apertium-init.py`.
 
-## Usage
+## Installation
+
+There are 3 ways to obtain Apertium-Init:
+* Download the script from https://apertium.org/apertium-init to your local directory
+* Clone this repository and run `make install`
+* Install from [PyPi](https://pypi.org/project/apertium-init/) with `pip install apertium-init`
 
-First, <a href="https://apertium.org/apertium-init" download>download the script</a>
-or install from [PyPi](https://pypi.org/project/apertium-init/) with `pip install apertium-init`.
+If the script was downloaded directly, it can be run with `python3 apertium-init.py`. Otherwise it will be installed as `apertium-init`.
+
+## Usage
 
 Usage depends on the desired module and is described below. Remember to
 search for `TODO` in the generated module to add example sentences, etc.
@@ -27,7 +33,7 @@ $ python3 apertium-init.py foo
 To bootstrap and compile it at the same time,
 
 ```bash
-$ python3 apertium-init.py foo && ( cd apertium-foo/ && ./autogen.sh && make )
+$ python3 apertium-init.py foo && ( cd apertium-foo/ && make )
 ```
 
 ### Monlingual HFST module
@@ -42,7 +48,7 @@ $ python3 apertium-init.py foo --analyser=hfst
 To bootstrap and compile it at the same time,
 
 ```bash
-$ python3 apertium-init.py foo --analyser=hfst && ( cd apertium-foo/ && ./autogen.sh && make )
+$ python3 apertium-init.py foo --analyser=hfst && ( cd apertium-foo/ && make )
 ```
 
 To include a twoc file for handling prefixes,
diff --git a/bilingual-module/MANIFEST.txt b/bilingual-module/MANIFEST.txt
new file mode 100644
index 0000000..87d135b
--- /dev/null
+++ b/bilingual-module/MANIFEST.txt
@@ -0,0 +1,30 @@
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.lrx
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.lrx
+{{if_chunk
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.t1x
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.t1x
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.t2x
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.t2x
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.t3x
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.t3x
+if_chunk}}
+{{if_lsx
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.lsx
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.lsx
+if_lsx}}
+{{if_rtx
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.rtx
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.rtx
+if_rtx}}
+{{if_anaphora
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.arx
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.arx
+if_anaphora}}
+modes.xml
+apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.dix
+Makefile.am
+README
+configure.ac
+{{if_giella
+gt2apertium.cg3r
+if_giella}}
\ No newline at end of file
diff --git a/bilingual-module/Makefile.am b/bilingual-module/Makefile.am
index 82c17db..363271c 100644
--- a/bilingual-module/Makefile.am
+++ b/bilingual-module/Makefile.am
@@ -9,15 +9,25 @@ PREFIX2=$(LANG2)-$(LANG1)
 
 BASENAME=apertium-$(PREFIX1)
 
-TARGETS_COMMON =		\
-	$(PREFIX1).automorf.bin	\{{if_prob1
+TARGETS_COMMON =		\{{ifnot_giella1
+	$(PREFIX1).automorf.bin	\
+ifnot_giella1}}{{if_giella1
+	$(PREFIX1).automorf.hfst \
+	$(PREFIX1).automorf-untrimmed.hfst \
+if_giella1}}{{if_prob1
 	$(PREFIX1).prob		\
 if_prob1}}{{if_rlx1
 	$(PREFIX1).rlx.bin	\
-if_rlx1}}
+if_rlx1}}{{if_giella1
+	$(PREFIX1).mor.rlx.bin  \
+	$(PREFIX1).syn.rlx.bin  \
+if_giella1}}
 	$(PREFIX1).autobil.bin	\
-	$(PREFIX1).autolex.bin	\
-	$(PREFIX1).autogen.bin	\{{if_pgen2
+	$(PREFIX1).autolex.bin	\{{ifnot_giella1
+	$(PREFIX1).autogen.bin	\
+ifnot_giella1}}{{if_giella1
+	$(PREFIX1).autogen.hfst \
+if_giella1}}{{if_pgen2
 	$(PREFIX1).autopgen.bin	\
 if_pgen2}}{{if_lsx
 	$(PREFIX1).autoseq.bin	\
@@ -28,15 +38,25 @@ if_lsx}}{{if_chunk
 	$(PREFIX1).t3x.bin	\
 if_chunk}}{{if_rtx
 	$(PREFIX1).rtx.bin	\
-if_rtx}}
-	$(PREFIX2).automorf.bin	\{{if_prob2
+if_rtx}}{{ifnot_giella2
+	$(PREFIX2).automorf.bin	\
+ifnot_giella2}}{{if_giella2
+	$(PREFIX2).automorf.hfst \
+	$(PREFIX2).automorf-untrimmed.hfst \
+if_giella2}}{{if_prob2
 	$(PREFIX2).prob		\
 if_prob2}}{{if_rlx2
 	$(PREFIX2).rlx.bin	\
-if_rlx2}}
+if_rlx2}}{{if_giella2
+	$(PREFIX2).mor.rlx.bin  \
+	$(PREFIX2).syn.rlx.bin  \
+if_giella2}}
 	$(PREFIX2).autobil.bin	\
-	$(PREFIX2).autolex.bin	\
-	$(PREFIX2).autogen.bin	\{{if_pgen1
+	$(PREFIX2).autolex.bin	\{{ifnot_giella2
+	$(PREFIX2).autogen.bin	\
+ifnot_giella2}}{{if_giella2
+	$(PREFIX2).autogen.hfst \
+if_giella2}}{{if_pgen1
 	$(PREFIX2).autopgen.bin	\
 if_pgen1}}{{if_lsx
 	$(PREFIX2).autoseq.bin	\
@@ -56,6 +76,19 @@ if_rtx}}
 ## Monolingual transducers
 ###############################################################################
 
+{{if_giella
+.deps/%.autobil.prefixes: %.autobil.bin .deps/.d
+	lt-print -H $< .deps/$*.autobil.att
+	hfst-txt2fst .deps/$*.autobil.att -o .deps/$*.autobil.hfst
+	hfst-project -p upper .deps/$*.autobil.hfst -o .deps/$*.autobil.upper                                     # bidix
+	echo ' [ ? - %+ ]* ' | hfst-regexp2fst > .deps/$*.any-nonplus.hfst                                        # [^+]*
+	hfst-concatenate -1 .deps/$*.autobil.upper -2 .deps/$*.any-nonplus.hfst -o .deps/$*.autobil.nonplussed    # bidix [^+]*
+	echo ' %+ ' | hfst-regexp2fst > .deps/$*.single-plus.hfst                                                 # +
+	hfst-concatenate -1 .deps/$*.single-plus.hfst -2 .deps/$*.autobil.nonplussed -o .deps/$*.autobil.postplus # + bidix [^+]*
+	hfst-repeat -f0 -t1 -i .deps/$*.autobil.postplus -o .deps/$*.autobil.postplus.0,1                         # (+ bidix [^+]*){0,1} -- gives at most one +
+	hfst-concatenate -1 .deps/$*.autobil.nonplussed -2 .deps/$*.autobil.postplus.0,1 -o $@                    # bidix [^+]* (+ bidix [^+]*){0,1}
+if_giella}}
+
 # -------------------
 # {{languageName1}} analysis:
 # -------------------
@@ -85,7 +118,19 @@ if_hfst1}}{{if_lttoolbox1
 
 $(PREFIX1).automorf.bin: .deps/$(LANG1).automorf.bin $(PREFIX1).autobil.bin
 	lt-trim $^ $@
-if_lttoolbox1}}
+if_lttoolbox1}}{{if_giella1
+.deps/$(LANG1).automorf.hfst: $(AP_SRC1)/apertium-und.$(LANG1)-und.LR.att.gz .deps/.d
+	$(ZCAT) $< | hfst-txt2fst > $@
+
+.deps/$(PREFIX1).automorf-trimmed.hfst: .deps/$(LANG1).automorf.hfst .deps/$(PREFIX1).autobil.prefixes
+	hfst-compose-intersect -1 $< -2 .deps/$(PREFIX1).autobil.prefixes -o $@
+
+$(PREFIX1).automorf.hfst: .deps/$(PREFIX1).automorf-trimmed.hfst
+	hfst-fst2fst -w -i $< -o $@
+
+$(PREFIX1).automorf-untrimmed.hfst: .deps/$(LANG1).automorf.hfst
+	hfst-fst2fst -w -i $< -o $@
+if_giella1}}
 
 # -------------------
 # {{languageName1}} generation:
@@ -95,8 +140,16 @@ $(PREFIX2).autogen.hfst: $(AP_SRC1)/$(LANG1).autogen.hfst
 	cp $< $@
 if_hfst1}}
 
+{{ifnot_giella1
 $(PREFIX2).autogen.bin: $(AP_SRC1)/$(LANG1).autogen.bin
 	cp $< $@
+ifnot_giella1}}{{if_giella1
+.deps/$(LANG1).autogen.hfst: $(AP_SRC1)/apertium-$(LANG1).$(LANG1).RL.att.gz .deps/.d
+	$(ZCAT) $< | hfst-txt2fst > $@
+
+$(PREFIX2).autogen.hfst: .deps/$(LANG1).autogen.hfst
+	hfst-fst2fst -O -i $< -o $@
+if_giella1}}
 
 # -------------------
 # {{languageName2}} analysis:
@@ -127,7 +180,19 @@ if_hfst2}}{{if_lttoolbox2
 
 $(PREFIX2).automorf.bin: .deps/$(LANG2).automorf.bin $(PREFIX2).autobil.bin
 	lt-trim $^ $@
-if_lttoolbox2}}
+if_lttoolbox2}}{{if_giella2
+.deps/$(LANG2).automorf.hfst: $(AP_SRC2)/apertium-und.$(LANG2)-und.LR.att.gz .deps/.d
+	$(ZCAT) $< | hfst-txt2fst > $@
+
+.deps/$(PREFIX2).automorf-trimmed.hfst: .deps/$(LANG2).automorf.hfst .deps/$(PREFIX2).autobil.prefixes
+	hfst-compose-intersect -1 $< -2 .deps/$(PREFIX2).autobil.prefixes -o $@
+
+$(PREFIX2).automorf.hfst: .deps/$(PREFIX2).automorf-trimmed.hfst
+	hfst-fst2fst -w -i $< -o $@
+
+$(PREFIX2).automorf-untrimmed.hfst: .deps/$(LANG2).automorf.hfst
+	hfst-fst2fst -w -i $< -o $@
+if_giella2}}
 
 # -------------------
 # {{languageName2}} generation:
@@ -137,8 +202,16 @@ $(PREFIX1).autogen.hfst: $(AP_SRC2)/$(LANG2).autogen.hfst
 	cp $< $@
 if_hfst2}}
 
+{{ifnot_giella2
 $(PREFIX1).autogen.bin: $(AP_SRC2)/$(LANG2).autogen.bin
 	cp $< $@
+ifnot_giella2}}{{if_giella2
+.deps/$(LANG2).autogen.hfst: $(AP_SRC2)/apertium-$(LANG2).$(LANG2).RL.att.gz .deps/.d
+	$(ZCAT) $< | hfst-txt2fst > $@
+
+$(PREFIX1).autogen.hfst: .deps/$(LANG2).autogen.hfst
+	hfst-fst2fst -O -i $< -o $@
+if_giella2}}
 
 ###############################################################################
 ## Tagger models
@@ -154,11 +227,27 @@ $(PREFIX2).prob: $(AP_SRC2)/$(LANG2).prob
 ## Disambiguation rules
 ###############################################################################
 
+{{ifnot_giella1
 $(PREFIX1).rlx.bin: $(AP_SRC1)/apertium-$(LANG1).$(LANG1).rlx
 	cg-comp $< $@
+ifnot_giella1}}{{if_giella1
+$(PREFIX1).mor.rlx.bin: $(AP_SRC1)/$(LANG1).mor.rlx.bin gt2apertium.cg3r
+	cg-relabel $^ $@
 
+$(PREFIX1).syn.rlx.bin: $(AP_SRC1)/$(LANG1).syn.rlx.bin gt2apertium.cg3r
+	cg-relabel $^ $@
+if_giella1}}
+
+{{ifnot_giella2
 $(PREFIX2).rlx.bin: $(AP_SRC2)/apertium-$(LANG2).$(LANG2).rlx
 	cg-comp $< $@
+ifnot_giella2}}{{if_giella2
+$(PREFIX2).mor.rlx.bin: $(AP_SRC2)/$(LANG2).mor.rlx.bin gt2apertium.cg3r
+	cg-relabel $^ $@
+
+$(PREFIX2).syn.rlx.bin: $(AP_SRC2)/$(LANG2).syn.rlx.bin gt2apertium.cg3r
+	cg-relabel $^ $@
+if_giella2}}
 
 ###############################################################################
 ## Bilingual dictionaries
@@ -311,10 +400,10 @@ clean-local:
 ###############################################################################
 
 test: all
-	echo "house" | apertium -d . {{languageCode1}}-{{languageCode2}} | tee .test-mt
+	echo "house" | apertium -d . -f line {{languageCode1}}-{{languageCode2}} | tee .test-mt
 	@echo "house" > .test-ref
 	@diff .test-ref .test-mt
-	echo "house" | apertium -d . {{languageCode2}}-{{languageCode1}} | tee .test-mt
+	echo "house" | apertium -d . -f line {{languageCode2}}-{{languageCode1}} | tee .test-mt
 	@echo "house" > .test-ref
 	@diff .test-ref .test-mt
 	@rm .test-ref .test-mt
diff --git a/bilingual-module/README b/bilingual-module/README
index 434a075..2a7d042 100644
--- a/bilingual-module/README
+++ b/bilingual-module/README
@@ -16,13 +16,22 @@ Requirements
 
 You will need the following software installed:
 
+* autoconf
+* automake
+* pkg-config
 * lttoolbox (>= 3.5.1)
 * apertium (>= 3.6.1)
 * vislcg3 (>= 1.3.1){{if_hfst
 * hfst (>= 3.15.1)
-if_hfst}}
+if_hfst}}{{ifnot_giella1
 * apertium-{{languageCode1}}
+ifnot_giella1}}{{if_giella1
+* giella-{{languageCode1}}
+if_giella1}}{{ifnot_giella2
 * apertium-{{languageCode2}}
+ifnot_giella2}}{{if_giella2
+* giella-{{languageCode2}}
+if_giella2}}
 
 If this does not make any sense, we recommend you look at: www.apertium.org.
 
@@ -32,16 +41,19 @@ Compiling
 Given the requirements being installed, you should be able to just run:
 
 ```console
+$ autoreconf -fvi
 $ ./configure
 $ make
 # make install
 ```
 
-You can use `./autogen.sh` instead of `./configure` in case you're compiling
+You can use `./autogen.sh` instead of `autoreconf` and `./configure` in case you're compiling
 from source. If you installed any prerequisite language packages using a
 `--prefix` with `./configure`, make sure to use the same `--prefix` when running
 `./configure` here.
 
+If any of this doesn't make sense or doesn't work, see https://wiki.apertium.org/wiki/Install_language_data_by_compiling
+
 Testing
 -------------------------------------------------------------------------------
 
diff --git a/bilingual-module/apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.dix b/bilingual-module/apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.dix
index 700cebd..ae29297 100644
--- a/bilingual-module/apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.dix
+++ b/bilingual-module/apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.dix
@@ -108,4 +108,5 @@
 Resources:
     http://wiki.apertium.org/wiki/Bilingual_dictionary
     http://wiki.apertium.org/wiki/Apertium_New_Language_Pair_HOWTO#Bilingual_dictionary
+    https://wiki.apertium.org/wiki/List_of_symbols
 -->
diff --git a/bilingual-module/apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.rtx b/bilingual-module/apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.rtx
index 2b4884d..5a832e8 100644
--- a/bilingual-module/apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.rtx
+++ b/bilingual-module/apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.rtx
@@ -37,7 +37,7 @@ det: (if (1.det_type = def or 1.det_type = ind)
 !! REDUCTION RULES
 !!!!!!!!!!!!!!!
 
-NP -> n.$number adj { 2[gender=1.gender, number=1.number] _1 1 } ;
+NP -> n.$number adj { 2[gender=1.gender, number=1.number] _ 1 } ;
 
 ! Resources:
 ! http://wiki.apertium.org/wiki/Apertium-recursive
diff --git a/bilingual-module/apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.rtx b/bilingual-module/apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.rtx
index 2b4884d..5a832e8 100644
--- a/bilingual-module/apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.rtx
+++ b/bilingual-module/apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.rtx
@@ -37,7 +37,7 @@ det: (if (1.det_type = def or 1.det_type = ind)
 !! REDUCTION RULES
 !!!!!!!!!!!!!!!
 
-NP -> n.$number adj { 2[gender=1.gender, number=1.number] _1 1 } ;
+NP -> n.$number adj { 2[gender=1.gender, number=1.number] _ 1 } ;
 
 ! Resources:
 ! http://wiki.apertium.org/wiki/Apertium-recursive
diff --git a/bilingual-module/configure.ac b/bilingual-module/configure.ac
index c3b7b37..bfb9657 100644
--- a/bilingual-module/configure.ac
+++ b/bilingual-module/configure.ac
@@ -28,8 +28,16 @@ AS_IF([test x$ZCAT = xfalse], [AC_MSG_ERROR([You don't have zcat nor gzcat insta
 
 m4_ifdef([AP_CHECK_LING],[],[AC_MSG_ERROR([AP_CHECK_LING not defined, is apertium.m4 in ACLOCAL_PATH? See: http://wiki.apertium.org/wiki/Installation_troubleshooting])])
 
+{{if_giella1
+AP_CHECK_LING([1], [giella-{{languageCode1}}])
+if_giella1}}{{ifnot_giella1
 AP_CHECK_LING([1], [apertium-{{languageCode1}}])
+ifnot_giella1}}
+{{if_giella2
+AP_CHECK_LING([2], [giella-{{languageCode2}}])
+if_giella2}}{{ifnot_giella2
 AP_CHECK_LING([2], [apertium-{{languageCode2}}])
+ifnot_giella2}}
 
 AP_MKINCLUDE
 
diff --git a/bilingual-module/gt2apertium.cg3r b/bilingual-module/gt2apertium.cg3r
new file mode 100644
index 0000000..a0e18dd
--- /dev/null
+++ b/bilingual-module/gt2apertium.cg3r
@@ -0,0 +1,578 @@
+# Language-specific tags (<-gttags.txt)
+MAP (A) (adj);
+MAP (ACR) (acr);
+MAP (Abe) (abe);
+MAP (Abl) (abl);
+MAP (Acc) (acc);
+MAP (Act) (actv);
+MAP (Ade) (ade);
+MAP (Adp) (adp);
+MAP (Adv) (adv);
+MAP (AgPrc) (agprc);
+MAP (All) (all);
+MAP (CC) (cnjcoo);
+MAP (CS) (cnjsub);
+MAP (Card) (card);
+MAP (Com) (com);
+MAP (Comp) (comp);
+MAP (ConNeg) (conneg);
+MAP (Cond) (cond);
+MAP (Dem) (dem);
+MAP (Der/inen) (der_inen);
+MAP (Der/ja) (der_ja);
+MAP (Der/maisilla) (der_maisilla);
+MAP (Der/minen) (der_minen);
+MAP (Der/s) (der_s);
+MAP (Der/sti) (der_sti);
+MAP (Der/ttain) (der_ttain);
+MAP (Dial) (dial);
+MAP (Dial/East) (dial_east);
+MAP (Dial/Standard) (dial_standard);
+MAP (Dial/West) (dial_west);
+MAP (Ela) (ela);
+MAP (Err/Orth) (err_orth);
+MAP (Ess) (ess);
+MAP (Foc/han) (foc_han);
+MAP (Foc/ka) (foc_ka);
+MAP (Foc/kaan) (foc_kaan);
+MAP (Foc/kin) (foc_kin);
+MAP (Foc/pa) (foc_pa);
+MAP (Foc/s) (foc);
+MAP (Gen) (gen);
+MAP (Ill) (ill);
+MAP (Imprt) (imp);
+MAP (Ind) (ind);
+MAP (Indef) (indef);
+MAP (Ine) (ine);
+MAP (InfA) (infa);
+MAP (InfE) (infe);
+MAP (InfMa) (infma);
+MAP (Ins) (ins);
+MAP (Interj) (ij);
+MAP (Interr) (itg);
+MAP (Lat) (lat);
+MAP (N) (n) OR (np);
+MAP (Neg) (neg);
+MAP (NegPrc) (negprc);
+MAP (Nom) (nom);
+MAP (Num) (num);
+MAP (Ord) (ord);
+MAP (Par) (par);
+MAP (Pcle) (part);
+MAP (Pe4) (pe4);
+MAP (Pers) (pers);
+MAP (Pl) (pl);
+MAP (Pl1) (p1 pl);
+MAP (Pl2) (p2 pl);
+MAP (Pl3) (p3 pl);
+MAP (Po) (post);
+MAP (Pot) (pot);
+MAP (Pr) (pr);
+MAP (Pref) (pref);
+MAP (PrfPrc) (prfprc);
+MAP (Pron) (prn);
+MAP (Prop) (np);
+MAP (Prs) (prs);
+MAP (PrsPrc) (prsprc);
+MAP (Prt) (prt);
+MAP (Pss) (pasv);
+MAP (Punct) (punct);
+MAP (Px3) (px3);
+MAP (PxPl1) (pxpl1);
+MAP (PxPl2) (pxpl2);
+MAP (PxPl3) (pxpl3);
+MAP (PxSg1) (pxsg1);
+MAP (PxSg2) (pxsg2);
+MAP (PxSg3) (pxsg3);
+MAP (Qnt) (qnt);
+MAP (Qst) (qst);
+MAP (Qu) (qnt);
+MAP (Recipr) (recip);
+MAP (Refl) (ref);
+MAP (Rel) (rel);
+MAP (Sem/Geo) (sem_geo);
+MAP (Sem/Human) (sem_human);
+MAP (Sem/Org) (sem_org);
+MAP (Sg) (sg);
+MAP (Sg1) (p1 sg);
+MAP (Sg2) (p2 sg);
+MAP (Sg3) (p3 sg);
+MAP (Sup) (sup);
+MAP (Tempr) (tempr);
+MAP (Tra) (tra);
+MAP (Use/Circ) (use_circ);
+MAP (Use/Hyphen) (use_hyphen);
+MAP (Use/Marg) (use_marg);
+MAP (Use/NG) (use_ng);
+MAP (Use/NoHyphens) (use_nohyphens);
+MAP (Use/Rare) (use_rare);
+MAP (V) (vblex);
+MAP (<clash>) (clash);
+MAP (Pref-) (pref-);
+MAP (Roman) (roman);
+MAP (Digit) (digit);
+MAP (P1) (p1);
+MAP (P2) (p2);
+MAP (P3) (p3);
+
+# DEFAULTs Exceptional relabellings (incomplete):
+MAP (Ind) (ind);
+MAP (Pron) (prn);
+MAP (V) (vblex);
+MAP (CC) (cnjcoo);
+MAP (CS) (cnjsub);
+MAP (<hom1>) (¹);
+MAP (<hom2>) (²);
+MAP (<hom3>) (³);
+MAP (<hom4>) (⁴);
+MAP (<hom5>) (⁵);
+MAP (<hom6>) (⁶);
+MAP (<hom7>) (⁷);
+MAP (<hom8>) (⁸);
+MAP (<hom9>) (⁹);
+MAP (Der/goahti) ("goahti");
+MAP (Foc/ba) ("ba" pcle);
+MAP (Foc/bat) ("bat" pcle);
+MAP (Foc/be) ("be" pcle);
+MAP (Foc/ge) ("ge" pcle);
+MAP (Foc/gen) ("gen" pcle);
+MAP (Foc/ges) ("ges" pcle);
+MAP (Foc/gis) ("gis" pcle);
+MAP (Foc/hal) ("hal" pcle);
+MAP (Foc/han) ("han" pcle);
+MAP (Foc/naj) ("naj" pcle);
+MAP (Foc/son) ("son" pcle);
+MAP (Superl) (sup);
+MAP (Sup) (supn);
+MAP (Interr) (itg);
+MAP (Prt) (pret);
+MAP (Prs) (pres);
+MAP (A) (adj);
+MAP (Refl) (ref);
+MAP (Interj) (ij);
+MAP (Indef) (indef);
+MAP (Inan) (nn);
+MAP (Comma) (cm);
+MAP (Cmpnd) (cmp);
+MAP (Cmpar) (comp);
+
+MAP (Prop) (np);
+MAP (N)    (n) OR (np);
+
+MAP (<hab>) (←hab→);
+MAP (<sme>) (←sme→);
+MAP (<sma>) (←sma→);
+MAP (<smj>) (←smj→);
+MAP (<ext>) (←ext→);
+MAP (<vdic>) (←vdic→);
+
+# DEFAULTs The rest are simply lowercasing and s/>/→/;s/</←/;s/\//_/
+MAP (@>A) (@→A);
+MAP (@A<) (@A←);
+MAP (@<ADVL) (@←ADVL);
+MAP (@>ADVL) (@→ADVL);
+MAP (@ADVL<) (@ADVL←);
+MAP (@ADVL>) (@ADVL→);
+MAP (@<ADVLcoor) (@←ADVLcoor);
+MAP (@ADVL>CS) (@ADVL→CS);
+MAP (@APP-ADVL<) (@APP-ADVL←);
+MAP (@APP-N<) (@APP-N←);
+MAP (@APP-Num<) (@APP-Num←);
+MAP (@APP>Pron) (@APP→Pron);
+MAP (@APP-Pron<) (@APP-Pron←);
+MAP (@>CC) (@→CC);
+MAP (@COMP-CS<) (@COMP-CS←);
+MAP (@>CS) (@→CS);
+MAP (@-F<ADVL) (@-F←ADVL);
+MAP (@-FADVL>) (@-FADVL→);
+MAP (@-F<OBJ) (@-F←OBJ);
+MAP (@-FOBJ>) (@-FOBJ→);
+MAP (@-F<OPRED) (@-F←OPRED);
+MAP (@-FOPRED>) (@-FOPRED→);
+MAP (@-F<SPRED) (@-F←SPRED);
+MAP (@-FSPRED>) (@-FSPRED→);
+MAP (@-FSPRED<OBJ) (@-FSPRED←OBJ);
+MAP (@-F<SUBJ) (@-F←SUBJ);
+MAP (@-FSUBJ>) (@-FSUBJ→);
+MAP (@<HAB) (@←HAB);
+MAP (@HAB>) (@HAB→);
+MAP (@>Interj) (@→Interj);
+MAP (@>N) (@→N);
+MAP (@N<) (@N←);
+MAP (@>Num) (@→Num);
+MAP (@Num<) (@Num←);
+MAP (@<OBJ) (@←OBJ);
+MAP (@OBJ>) (@OBJ→);
+MAP (@<OPRED) (@←OPRED);
+MAP (@OPRED>) (@OPRED→);
+MAP (@>P) (@→P);
+MAP (@P<) (@P←);
+MAP (@<PPRED) (@←PPRED);
+MAP (@>Pron) (@→Pron);
+MAP (@Pron<) (@Pron←);
+MAP (@<SPRED) (@←SPRED);
+MAP (@SPRED>) (@SPRED→);
+MAP (@SPRED<OBJ) (@SPRED←OBJ);
+MAP (@<SUBJ) (@←SUBJ);
+MAP (@SUBJ>) (@SUBJ→);
+
+MAP (ABBR) (abbr);
+MAP (Acc) (acc);
+MAP (ACR) (acr);
+MAP (Actio) (actio);
+MAP (Adv) (adv);
+MAP (Attr) (attr);
+MAP (CLB) (clb);
+MAP (Cmpnd) (cmpnd);
+MAP (Coll) (coll);
+MAP (Com) (com);
+MAP (Comp) (comp);
+MAP (Cond) (cond);
+MAP (ConNeg) (conneg);
+MAP (Dem) (dem);
+MAP (Der/A) (der_a);
+MAP (Der/adda) (der_adda);
+MAP (Der/ahtti) (der_ahtti);
+MAP (Der/alla) (der_alla);
+MAP (Der/amoš) (der_amoš);
+MAP (Der/asti) (der_asti);
+MAP (Der/at) (der_at);
+MAP (Der/čalmmat) (der_čalmmat);
+MAP (Der/d) (der_d);
+MAP (Der/dássásaš) (der_dássásaš);
+MAP (Der/diibmosaš) (der_diibmosaš);
+MAP (Der/Dimin) (der_dimin);
+MAP (Der/duohkai) (der_duohkai);
+MAP (Der/duohke) (der_duohke);
+MAP (Der/eaddji) (der_eaddji);
+MAP (Der/eamoš) (der_eamoš);
+MAP (Der/eapmi) (der_eapmi);
+MAP (Der/easti) (der_easti);
+MAP (Der/g) (der_g);
+MAP (Der/geahtes) (der_geahtes);
+MAP (Der/gielat) (der_gielat);
+MAP (Der/h) (der_h);
+MAP (Der/halla) (der_halla);
+MAP (Der/hat) (der_hat);
+MAP (Der/heapmi) (der_heapmi);
+MAP (Der/hudda) (der_hudda);
+MAP (Der/huhtti) (der_huhtti);
+MAP (Der/huvva) (der_huvva);
+MAP (Der/j) (der_j);
+MAP (Der/jagáš) (der_jagáš);
+MAP (Der/jahkásaš) (der_jahkásaš);
+MAP (Der/keahtes) (der_keahtes);
+MAP (Der/kultuvrrat) (der_kultuvrrat);
+MAP (Der/l) (der_l);
+MAP (Der/lágan) (der_lágan);
+MAP (Der/lágán) (der_lágán);
+MAP (Der/lágaš) (der_lágaš);
+MAP (Der/las) (der_las);
+MAP (Der/laš) (der_laš);
+MAP (Der/mállet) (der_mállet);
+MAP (Der/meahttun) (der_meahttun);
+MAP (Der/muš) (der_muš);
+MAP (Der/n) (der_n);
+MAP (Der/NomAct) (der_nomact);
+MAP (Der/NomAg) (der_nomag);
+MAP (Der/NuA) (der_nua);
+MAP (Der/NumAg) (der_numag);
+MAP (Der/PassL) (der_passl);
+MAP (Der/PassS) (der_passs);
+MAP (Der/š) (der_š);
+MAP (Der/st) (der_st);
+MAP (Der/stuvva) (der_stuvva);
+MAP (Der/supmi) (der_supmi);
+MAP (Der/upmi) (der_upmi);
+MAP (Der/us) (der_us);
+MAP (Der/veara) (der_veara);
+MAP (Der/viđá) (der_viđá);
+MAP (Der/viđi) (der_viđi);
+MAP (Der/vuohta) (der_vuohta);
+MAP (Der/vuolde) (der_vuolde);
+MAP (Der/vuollai) (der_vuollai);
+MAP (Der/vuolle) (der_vuolle);
+MAP (Der/vuovttat) (der_vuovttat);
+MAP (Du) (du);
+MAP (Du1) (du1);
+MAP (Du2) (du2);
+MAP (Du3) (du3);
+MAP (Ela) (ela);
+MAP (Err/Orth) (err_orth);
+MAP (Ess) (ess);
+MAP (G3) (g3);
+MAP (Gen) (gen);
+MAP (Ger) (ger);
+MAP (Ill) (ill);
+MAP (Imprt) (imprt);
+MAP (ImprtII) (imprtii);
+MAP (Ine) (ine);
+MAP (Inf) (inf);
+MAP (IV) (iv);
+MAP (LEFT) (left);
+MAP (Loc) (loc);
+MAP (Neg) (neg);
+MAP (Nom) (nom);
+MAP (NomAg) (nomag);
+MAP (Num) (num);
+MAP (NumAg) (numag);
+MAP (Ord) (ord);
+MAP (Pcle) (pcle);
+MAP (Pers) (pers);
+MAP (Pl) (pl);
+MAP (Pl1) (pl1);
+MAP (Pl2) (pl2);
+MAP (Pl3) (pl3);
+MAP (Po) (po);
+MAP (Pot) (pot);
+MAP (Pr) (pr);
+MAP (PrfPrc) (prfprc);
+MAP (PrsPrc) (prsprc);
+MAP (PUNCT) (punct);
+MAP (PxDu1) (pxdu1);
+MAP (PxDu2) (pxdu2);
+MAP (PxDu3) (pxdu3);
+MAP (PxPl1) (pxpl1);
+MAP (PxPl2) (pxpl2);
+MAP (PxPl3) (pxpl3);
+MAP (PxSg1) (pxsg1);
+MAP (PxSg2) (pxsg2);
+MAP (PxSg3) (pxsg3);
+MAP (Qst) (qst);
+MAP (RCmpnd) (rcmpnd);
+MAP (Recipr) (recipr);
+MAP (Rel) (rel);
+MAP (RIGHT) (right);
+MAP (Sem/Act) (sem_act);
+MAP (Sem/Act_Group) (sem_act_group);
+MAP (Sem/Act_Plc) (sem_act_plc);
+MAP (Sem/Act_Route) (sem_act_route);
+MAP (Sem/Adr) (sem_adr);
+MAP (Sem/Amount) (sem_amount);
+MAP (Sem/Amount_Build) (sem_amount_build);
+MAP (Sem/Amount_Semcon) (sem_amount_semcon);
+MAP (Sem/Ani) (sem_ani);
+MAP (Sem/Ani_Body-abstr_Hum) (sem_ani_body-abstr_hum);
+MAP (Sem/Ani_Build) (sem_ani_build);
+MAP (Sem/Ani_Build_Hum_Txt) (sem_ani_build_hum_txt);
+MAP (Sem/Ani_Build-part) (sem_ani_build-part);
+MAP (Sem/Ani_Group) (sem_ani_group);
+MAP (Sem/Ani_Group_Hum) (sem_ani_group_hum);
+MAP (Sem/Ani_Hum) (sem_ani_hum);
+MAP (Sem/Ani_Hum_Plc) (sem_ani_hum_plc);
+MAP (Sem/Ani_Hum_Time) (sem_ani_hum_time);
+MAP (Sem/Ani_Plc) (sem_ani_plc);
+MAP (Sem/Ani_Plc_Txt) (sem_ani_plc_txt);
+MAP (Sem/Aniprod) (sem_aniprod);
+MAP (Sem/Aniprod_Hum) (sem_aniprod_hum);
+MAP (Sem/Aniprod_Obj-clo) (sem_aniprod_obj-clo);
+MAP (Sem/Aniprod_Perc-phys) (sem_aniprod_perc-phys);
+MAP (Sem/Aniprod_Plc) (sem_aniprod_plc);
+MAP (Sem/Ani_Time) (sem_ani_time);
+MAP (Sem/Ani_Veh) (sem_ani_veh);
+MAP (Sem/Body) (sem_body);
+MAP (Sem/Body-abstr) (sem_body-abstr);
+MAP (Sem/Body-abstr_Prod-audio_Semcon) (sem_body-abstr_prod-audio_semcon);
+MAP (Sem/Body_Body-abstr) (sem_body_body-abstr);
+MAP (Sem/Body_Clth) (sem_body_clth);
+MAP (Sem/Body_Food) (sem_body_food);
+MAP (Sem/Body_Group_Hum) (sem_body_group_hum);
+MAP (Sem/Body_Hum) (sem_body_hum);
+MAP (Sem/Body_Mat) (sem_body_mat);
+MAP (Sem/Body_Measr) (sem_body_measr);
+MAP (Sem/Body_Obj_Tool-catch) (sem_body_obj_tool-catch);
+MAP (Sem/Body_Plc) (sem_body_plc);
+MAP (Sem/Body_Time) (sem_body_time);
+MAP (Sem/Build) (sem_build);
+MAP (Sem/Build_Build-part) (sem_build_build-part);
+MAP (Sem/Build_Clth-part) (sem_build_clth-part);
+MAP (Sem/Build_Edu_Org) (sem_build_edu_org);
+MAP (Sem/Build_Event_Org) (sem_build_event_org);
+MAP (Sem/Build_Org) (sem_build_org);
+MAP (Sem/Build-part) (sem_build-part);
+MAP (Sem/Build-part_Plc) (sem_build-part_plc);
+MAP (Sem/Build_Route) (sem_build_route);
+MAP (Sem/Cat) (sem_cat);
+MAP (Sem/Clth) (sem_clth);
+MAP (Sem/Clth_Hum) (sem_clth_hum);
+MAP (Sem/Clth-jewl) (sem_clth-jewl);
+MAP (Sem/Clth-jewl_Curr) (sem_clth-jewl_curr);
+MAP (Sem/Clth-jewl_Money) (sem_clth-jewl_money);
+MAP (Sem/Clth-jewl_Org) (sem_clth-jewl_org);
+MAP (Sem/Clth-jewl_Plant) (sem_clth-jewl_plant);
+MAP (Sem/Clth-part) (sem_clth-part);
+MAP (Sem/Ctain) (sem_ctain);
+MAP (Sem/Ctain-abstr) (sem_ctain-abstr);
+MAP (Sem/Ctain-abstr_Org) (sem_ctain-abstr_org);
+MAP (Sem/Ctain-clth) (sem_ctain-clth);
+MAP (Sem/Ctain-clth_Plant) (sem_ctain-clth_plant);
+MAP (Sem/Ctain-clth_Veh) (sem_ctain-clth_veh);
+MAP (Sem/Ctain_Feat-phys) (sem_ctain_feat-phys);
+MAP (Sem/Ctain_Furn) (sem_ctain_furn);
+MAP (Sem/Ctain_Tool) (sem_ctain_tool);
+MAP (Sem/Ctain_Tool-measr) (sem_ctain_tool-measr);
+MAP (Sem/Curr) (sem_curr);
+MAP (Sem/Curr_Org) (sem_curr_org);
+MAP (Sem/Dance) (sem_dance);
+MAP (Sem/Dance_Org) (sem_dance_org);
+MAP (Sem/Dance_Prod-audio) (sem_dance_prod-audio);
+MAP (Sem/Date) (sem_date);
+MAP (Sem/Dir) (sem_dir);
+MAP (Sem/Domain) (sem_domain);
+MAP (Sem/Domain_Food-med) (sem_domain_food-med);
+MAP (Sem/Domain_Prod-audio) (sem_domain_prod-audio);
+MAP (Sem/Drink) (sem_drink);
+MAP (Sem/Edu) (sem_edu);
+MAP (Sem/Edu_Event) (sem_edu_event);
+MAP (Sem/Edu_Group_Hum) (sem_edu_group_hum);
+MAP (Sem/Edu_Mat) (sem_edu_mat);
+MAP (Sem/Edu_Org) (sem_edu_org);
+MAP (Sem/Event) (sem_event);
+MAP (Sem/Event_Food) (sem_event_food);
+MAP (Sem/Event_Hum) (sem_event_hum);
+MAP (Sem/Event_Plc) (sem_event_plc);
+MAP (Sem/Event_Time) (sem_event_time);
+MAP (Sem/Feat) (sem_feat);
+MAP (Sem/Feat-measr) (sem_feat-measr);
+MAP (Sem/Feat-phys) (sem_feat-phys);
+MAP (Sem/Feat-phys_Tool-write) (sem_feat-phys_tool-write);
+MAP (Sem/Feat-phys_Veh) (sem_feat-phys_veh);
+MAP (Sem/Feat-phys_Wthr) (sem_feat-phys_wthr);
+MAP (Sem/Feat_Plant) (sem_feat_plant);
+MAP (Sem/Feat-psych) (sem_feat-psych);
+MAP (Sem/Feat-psych_Hum) (sem_feat-psych_hum);
+MAP (Sem/Fem) (sem_fem);
+MAP (Sem/Food) (sem_food);
+MAP (Sem/Food-med) (sem_food-med);
+MAP (Sem/Food_Perc-phys) (sem_food_perc-phys);
+MAP (Sem/Food_Plant) (sem_food_plant);
+MAP (Sem/Furn) (sem_furn);
+MAP (Sem/Game) (sem_game);
+MAP (Sem/Game_Obj-play) (sem_game_obj-play);
+MAP (Sem/Geom) (sem_geom);
+MAP (Sem/Geom_Obj) (sem_geom_obj);
+MAP (Sem/Group) (sem_group);
+MAP (Sem/Group_Hum) (sem_group_hum);
+MAP (Sem/Group_Hum_Org) (sem_group_hum_org);
+MAP (Sem/Group_Hum_Plc) (sem_group_hum_plc);
+MAP (Sem/Group_Hum_Prod-vis) (sem_group_hum_prod-vis);
+MAP (Sem/Group_Org) (sem_group_org);
+MAP (Sem/Group_Sign) (sem_group_sign);
+MAP (Sem/Group_Txt) (sem_group_txt);
+MAP (Sem/Hum) (sem_hum);
+MAP (Sem/Hum-abstr) (sem_hum-abstr);
+MAP (Sem/Hum_Lang) (sem_hum_lang);
+MAP (Sem/Hum_Lang_Plc) (sem_hum_lang_plc);
+MAP (Sem/Hum_Lang_Time) (sem_hum_lang_time);
+MAP (Sem/Hum_Obj) (sem_hum_obj);
+MAP (Sem/Hum_Org) (sem_hum_org);
+MAP (Sem/Hum_Plant) (sem_hum_plant);
+MAP (Sem/Hum_Plc) (sem_hum_plc);
+MAP (Sem/Hum_Tool) (sem_hum_tool);
+MAP (Sem/Hum_Veh) (sem_hum_veh);
+MAP (Sem/Hum_Wthr) (sem_hum_wthr);
+MAP (Sem/Ideol) (sem_ideol);
+MAP (Sem/Lang) (sem_lang);
+MAP (Sem/Lang_Tool) (sem_lang_tool);
+MAP (Sem/Mal) (sem_mal);
+MAP (Sem/Mat) (sem_mat);
+MAP (Sem/Mat_Plant) (sem_mat_plant);
+MAP (Sem/Mat_Txt) (sem_mat_txt);
+MAP (Sem/Measr) (sem_measr);
+MAP (Sem/Measr_Time) (sem_measr_time);
+MAP (Sem/Money) (sem_money);
+MAP (Sem/Money_Obj) (sem_money_obj);
+MAP (Sem/Money_Txt) (sem_money_txt);
+MAP (Sem/Obj) (sem_obj);
+MAP (Sem/Obj-clo) (sem_obj-clo);
+MAP (Sem/Obj-cogn) (sem_obj-cogn);
+MAP (Sem/Obj-el) (sem_obj-el);
+MAP (Sem/Obj-ling) (sem_obj-ling);
+MAP (Sem/Obj-play) (sem_obj-play);
+MAP (Sem/Obj-play_Sport) (sem_obj-play_sport);
+MAP (Sem/Obj-rope) (sem_obj-rope);
+MAP (Sem/Obj_Semcon) (sem_obj_semcon);
+MAP (Sem/Obj_State) (sem_obj_state);
+MAP (Sem/Obj-surfc) (sem_obj-surfc);
+MAP (Sem/Org) (sem_org);
+MAP (Sem/Org_Clth-jewl) (sem_org_clth-jewl);
+MAP (Sem/Org_Rule) (sem_org_rule);
+MAP (Sem/Org_Txt) (sem_org_txt);
+MAP (Sem/Org_Veh) (sem_org_veh);
+MAP (Sem/Part) (sem_part);
+MAP (Sem/Part_Prod-cogn) (sem_part_prod-cogn);
+MAP (Sem/Perc-cogn) (sem_perc-cogn);
+MAP (Sem/Perc-emo) (sem_perc-emo);
+MAP (Sem/Perc-emo_Wthr) (sem_perc-emo_wthr);
+MAP (Sem/Perc-phys) (sem_perc-phys);
+MAP (Sem/Perc-psych) (sem_perc-psych);
+MAP (Sem/Plant) (sem_plant);
+MAP (Sem/Plant-part) (sem_plant-part);
+MAP (Sem/Plant_Plant-part) (sem_plant_plant-part);
+MAP (Sem/Plant_Tool) (sem_plant_tool);
+MAP (Sem/Plant_Tool-measr) (sem_plant_tool-measr);
+MAP (Sem/Plc) (sem_plc);
+MAP (Sem/Plc-abstr) (sem_plc-abstr);
+MAP (Sem/Plc-abstr_Rel_State) (sem_plc-abstr_rel_state);
+MAP (Sem/Plc-abstr_Route) (sem_plc-abstr_route);
+MAP (Sem/Plc-elevate) (sem_plc-elevate);
+MAP (Sem/Plc-line) (sem_plc-line);
+MAP (Sem/Plc_Pos) (sem_plc_pos);
+MAP (Sem/Plc_Route) (sem_plc_route);
+MAP (Sem/Plc_Substnc) (sem_plc_substnc);
+MAP (Sem/Plc_Substnc_Wthr) (sem_plc_substnc_wthr);
+MAP (Sem/Plc_Time) (sem_plc_time);
+MAP (Sem/Plc_Tool-catch) (sem_plc_tool-catch);
+MAP (Sem/Plc-water) (sem_plc-water);
+MAP (Sem/Plc_Wthr) (sem_plc_wthr);
+MAP (Sem/Pos) (sem_pos);
+MAP (Sem/Process) (sem_process);
+MAP (Sem/Prod) (sem_prod);
+MAP (Sem/Prod-audio) (sem_prod-audio);
+MAP (Sem/Prod-audio_Txt) (sem_prod-audio_txt);
+MAP (Sem/Prod-cogn) (sem_prod-cogn);
+MAP (Sem/Prod-cogn_Txt) (sem_prod-cogn_txt);
+MAP (Sem/Prod-ling) (sem_prod-ling);
+MAP (Sem/Prod-vis) (sem_prod-vis);
+MAP (Sem/Rel) (sem_rel);
+MAP (Sem/Route) (sem_route);
+MAP (Sem/Rule) (sem_rule);
+MAP (Sem/Semcon) (sem_semcon);
+MAP (Sem/Semcon_Txt) (sem_semcon_txt);
+MAP (Sem/Sign) (sem_sign);
+MAP (Sem/Sport) (sem_sport);
+MAP (Sem/State) (sem_state);
+MAP (Sem/State-sick) (sem_state-sick);
+MAP (Sem/Substnc) (sem_substnc);
+MAP (Sem/Substnc_Wthr) (sem_substnc_wthr);
+MAP (Sem/Sur) (sem_sur);
+MAP (Sem/Symbol) (sem_symbol);
+MAP (Sem/Time) (sem_time);
+MAP (Sem/Time_Wthr) (sem_time_wthr);
+MAP (Sem/Tool) (sem_tool);
+MAP (Sem/Tool-catch) (sem_tool-catch);
+MAP (Sem/Tool-clean) (sem_tool-clean);
+MAP (Sem/Tool-it) (sem_tool-it);
+MAP (Sem/Tool-measr) (sem_tool-measr);
+MAP (Sem/Tool-music) (sem_tool-music);
+MAP (Sem/Tool-write) (sem_tool-write);
+MAP (Sem/Txt) (sem_txt);
+MAP (Sem/Veh) (sem_veh);
+MAP (Sem/Wpn) (sem_wpn);
+MAP (Sem/Wthr) (sem_wthr);
+MAP (Sem/Year) (sem_year);
+MAP (Sg) (sg);
+MAP (Sg1) (sg1);
+MAP (Sg2) (sg2);
+MAP (Sg3) (sg3);
+MAP (SgGenCmp) (sggencmp);
+MAP (SgNomCmp) (sgnomcmp);
+MAP (Cmp/SgNom) (cmp_sgnom);
+MAP (Cmp/SgGen) (cmp_sggen);
+MAP (ShCmp) (shcmp);
+MAP (TV) (tv);
+MAP (VAbess) (vabess);
+MAP (VGen) (vgen);
+MAP (WEB) (web);
+
+
diff --git a/bilingual-module/modes.xml b/bilingual-module/modes.xml
index e50d213..6a8b539 100644
--- a/bilingual-module/modes.xml
+++ b/bilingual-module/modes.xml
@@ -5,9 +5,21 @@
 
   <mode name="{{languageCode1}}-{{languageCode2}}" install="yes" gendebug="yes">
     <pipeline>
+{{if_giella1
+      <program name="hfst-proc --weight-classes 1 -w -e">
+	<file name="{{languageCode1}}-{{languageCode2}}.automorf.hfst"/>
+      </program>
+      <program name="cg-proc -w">
+        <file name="{{languageCode1}}-{{languageCode2}}.mor.rlx.bin"/>
+      </program>
+      <program name="cg-proc -n -1 -w">
+        <file name="{{languageCode1}}-{{languageCode2}}.syn.rlx.bin"/>
+      </program>
+if_giella1}}{{ifnot_giella1
       <program name="lt-proc -w">
         <file name="{{languageCode1}}-{{languageCode2}}.automorf.bin"/>
       </program>
+ifnot_giella1}}
 {{if_prob1
 {{if_rlx1
       <program name="cg-proc -w">
@@ -18,9 +30,11 @@ if_rlx1}}
         <file name="{{languageCode1}}-{{languageCode2}}.prob"/>
       </program>
 if_prob1}}{{ifnot_prob1
+{{if_rlx1
       <program name="cg-proc -w -1 -n">
         <file name="{{languageCode1}}-{{languageCode2}}.rlx.bin"/>
       </program>
+if_rlx1}}
 ifnot_prob1}}{{if_lsx
       <program name="lsx-proc">
         <file name="{{languageCode1}}-{{languageCode2}}.autoseq.bin"/>
@@ -63,10 +77,15 @@ if_rtx}}{{if_lsx
         <file name="{{languageCode1}}-{{languageCode2}}.revautoseq.bin"/>
       </program>
 if_lsx}}
+{{ifnot_giella2
       <program name="lt-proc $1">
         <file name="{{languageCode1}}-{{languageCode2}}.autogen.bin"/>
       </program>
-{{if_pgen2
+ifnot_giella2}}{{if_giella2
+      <program name="hfst-proc $1">
+	<file name="{{languageCode1}}-{{languageCode2}}.autogen.hfst"/>
+      </program>
+if_giella2}}{{if_pgen2
       <program name="lt-proc -p">
         <file name="{{languageCode1}}-{{languageCode2}}.autopgen.bin"/>
       </program>
@@ -78,9 +97,21 @@ if_pgen2}}
 
   <mode name="{{languageCode2}}-{{languageCode1}}" install="yes" gendebug="yes">
     <pipeline>
+{{if_giella2
+      <program name="hfst-proc --weight-classes 1 -w -e">
+	<file name="{{languageCode2}}-{{languageCode1}}.automorf.hfst"/>
+      </program>
+      <program name="cg-proc -w">
+        <file name="{{languageCode2}}-{{languageCode1}}.mor.rlx.bin"/>
+      </program>
+      <program name="cg-proc -n -1 -w">
+        <file name="{{languageCode2}}-{{languageCode1}}.syn.rlx.bin"/>
+      </program>
+if_giella2}}{{ifnot_giella2
       <program name="lt-proc -w">
         <file name="{{languageCode2}}-{{languageCode1}}.automorf.bin"/>
       </program>
+ifnot_giella2}}
 {{if_prob2
 {{if_rlx2
       <program name="cg-proc -w">
@@ -91,9 +122,11 @@ if_rlx2}}
         <file name="{{languageCode2}}-{{languageCode1}}.prob"/>
       </program>
 if_prob2}}{{ifnot_prob2
+{{if_rlx2
       <program name="cg-proc -w -1 -n">
         <file name="{{languageCode2}}-{{languageCode1}}.rlx.bin"/>
       </program>
+if_rlx2}}
 ifnot_prob2}}
 {{if_lsx
       <program name="lsx-proc">
@@ -137,10 +170,15 @@ if_rtx}}{{if_lsx
         <file name="{{languageCode2}}-{{languageCode1}}.revautoseq.bin"/>
       </program>
 if_lsx}}
+{{ifnot_giella1
       <program name="lt-proc $1">
         <file name="{{languageCode2}}-{{languageCode1}}.autogen.bin"/>
       </program>
-{{if_pgen1
+ifnot_giella1}}{{if_giella1
+      <program name="hfst-proc $1">
+	<file name="{{languageCode2}}-{{languageCode1}}.autogen.hfst"/>
+      </program>
+if_giella1}}{{if_pgen1
       <program name="lt-proc -p">
         <file name="{{languageCode2}}-{{languageCode1}}.autopgen.bin"/>
       </program>
diff --git a/bilingual-module/updateBootstraper.py b/bilingual-module/updateBootstraper.py
index e6c728a..e370deb 100755
--- a/bilingual-module/updateBootstraper.py
+++ b/bilingual-module/updateBootstraper.py
@@ -28,6 +28,8 @@
     'Makefile.am',
     'README',
     'configure.ac',
+    'gt2apertium.cg3r',
+    'MANIFEST.txt',
 ]
 
 if __name__ == '__main__':
diff --git a/hfst-language-module/MANIFEST.txt b/hfst-language-module/MANIFEST.txt
new file mode 100644
index 0000000..8e6af68
--- /dev/null
+++ b/hfst-language-module/MANIFEST.txt
@@ -0,0 +1,23 @@
+{{languageCode}}.prob
+{{ifnot_lexd
+apertium-{{languageCode}}.{{languageCode}}.lexc
+ifnot_lexd}}
+{{if_lexd
+apertium-{{languageCode}}.{{languageCode}}.lexd
+if_lexd}}
+apertium-{{languageCode}}.{{languageCode}}.twol
+{{if_twoc
+apertium-{{languageCode}}.{{languageCode}}.twoc
+if_twoc}}
+apertium-{{languageCode}}.{{languageCode}}.rlx
+apertium-{{languageCode}}.post-{{languageCode}}.dix
+apertium-{{languageCode}}.pc.in
+{{if_spellrelax
+apertium-{{languageCode}}.{{languageCode}}.spellrelax
+if_spellrelax}}
+configure.ac
+Makefile.am
+modes.xml
+corpus/{{languageCode}}.tagged
+apertium-{{languageCode}}.{{languageCode}}.udx
+README
diff --git a/hfst-language-module/Makefile.am b/hfst-language-module/Makefile.am
index 0bc5adc..0ac4475 100644
--- a/hfst-language-module/Makefile.am
+++ b/hfst-language-module/Makefile.am
@@ -19,6 +19,8 @@ TARGETS_COMMON =			\
 # This include defines goals for install-modes, .deps/.d, autobil.prefixes and .mode files:
 @ap_include@
 
+LEXCFLAGS=-v --Werror
+
 ###############################################################################
 ## {{languageName}} transducer
 ###############################################################################
@@ -29,7 +31,19 @@ TARGETS_COMMON =			\
 .deps/$(LANG1).twoc.hfst: $(BASENAME).$(LANG1).twoc .deps/.d
 	hfst-twolc $< -o $@
 
-if_twoc}}
+if_twoc}}{{if_lexd
+.deps/$(LANG1).RL.lexd: $(BASENAME).$(LANG1).lexd .deps/.d
+	cat $< | grep -v 'Dir/LR' > $@
+
+.deps/$(LANG1).LR.lexd: $(BASENAME).$(LANG1).lexd .deps/.d
+	cat $< | grep -v 'Dir/RL' > $@
+
+.deps/$(LANG1).RL.lexd.hfst: .deps/$(LANG1).RL.lexd
+	lexd $< | hfst-txt2fst -o $@
+
+.deps/$(LANG1).LR.lexd.hfst: .deps/$(LANG1).LR.lexd
+	lexd $< | hfst-txt2fst -o $@
+if_lexd}}{{ifnot_lexd
 .deps/$(LANG1).RL.lexc: $(BASENAME).$(LANG1).lexc .deps/.d
 	cat $< | grep -v 'Dir/LR' > $@
 
@@ -37,16 +51,26 @@ if_twoc}}
 	cat $< | grep -v 'Dir/RL' > $@
 
 .deps/$(LANG1).RL.lexc.hfst: .deps/$(LANG1).RL.lexc
-	hfst-lexc $< -o $@ -v --Werror
+	hfst-lexc $< -o $@ $(LEXCFLAGS)
 
 .deps/$(LANG1).LR.lexc.hfst: .deps/$(LANG1).LR.lexc
-	hfst-lexc $< -o $@ -v --Werror{{ifnot_twoc
+	hfst-lexc $< -o $@ $(LEXCFLAGS)
+ifnot_lexd}}{{ifnot_twoc
+{{if_lexd
+
+.deps/$(LANG1).RL.hfst: .deps/$(LANG1).RL.lexd.hfst .deps/$(LANG1).twol.hfst
+	hfst-compose-intersect -1 .deps/$(LANG1).RL.lexd.hfst -2 .deps/$(LANG1).twol.hfst -o $@
+
+.deps/$(LANG1).LR.hfst: .deps/$(LANG1).LR.lexd.hfst .deps/$(LANG1).twol.hfst
+	hfst-compose-intersect -1 .deps/$(LANG1).LR.lexd.hfst -2 .deps/$(LANG1).twol.hfst -o $@
+if_lexd}}{{ifnot_lexd
 
 .deps/$(LANG1).RL.hfst: .deps/$(LANG1).RL.lexc.hfst .deps/$(LANG1).twol.hfst
 	hfst-compose-intersect -1 .deps/$(LANG1).RL.lexc.hfst -2 .deps/$(LANG1).twol.hfst -o $@
 
 .deps/$(LANG1).LR.hfst: .deps/$(LANG1).LR.lexc.hfst .deps/$(LANG1).twol.hfst
 	hfst-compose-intersect -1 .deps/$(LANG1).LR.lexc.hfst -2 .deps/$(LANG1).twol.hfst -o $@
+ifnot_lexd}}
 ifnot_twoc}}{{if_twoc
 
 .deps/$(LANG1).RL.lexc-twoc.hfst: .deps/$(LANG1).RL.lexc.hfst .deps/$(LANG1).twoc.hfst
@@ -65,11 +89,11 @@ if_twoc}}
 $(LANG1).autogen.hfst: .deps/$(LANG1).RL.hfst
 	hfst-fst2fst -O $< -o $@{{if_spellrelax
 
-.deps/spellrelax.hfst: $(BASENAME).$(LANG1).spellrelax .deps/.d
-	hfst-twolc $< -o $@
+.deps/$(LANG1).spellrelax.hfst: $(BASENAME).$(LANG1).spellrelax .deps/.d
+	hfst-regexp2fst -S -o $@ $<
 
-$(LANG1).automorf.hfst: .deps/$(LANG1).LR.hfst .deps/spellrelax.hfst
-	hfst-compose-intersect -1 $< -2 .deps/spellrelax.hfst | hfst-invert | hfst-fst2fst -O -o $@
+$(LANG1).automorf.hfst: .deps/$(LANG1).LR.hfst .deps/$(LANG1).spellrelax.hfst
+	hfst-compose -1 $< -2 .deps/$(LANG1).spellrelax.hfst | hfst-invert | hfst-fst2fst -O -o $@
 if_spellrelax}}{{ifnot_spellrelax
 
 $(LANG1).automorf.hfst: .deps/$(LANG1).LR.hfst
@@ -97,16 +121,29 @@ $(LANG1).autopgen.bin: $(BASENAME).post-$(LANG1).dix
 ## Debugging transducers (for testvoc)
 ###############################################################################
 
+{{ifnot_lexd
 debug: .deps/$(LANG1).LR-debug.hfst .deps/$(LANG1).lexc.hfst
+ifnot_lexd}}{{if_lexd
+debug: .deps/$(LANG1).LR-debug.hfst .deps/$(LANG1).lexd.hfst
+if_lexd}}
 
+{{ifnot_lexd
 .deps/$(LANG1).LR-debug.hfst: $(BASENAME).$(LANG1).lexc .deps/.d
 	cat $< | grep -v 'Dir/RL' | grep -v 'Use/Circ' > .deps/$(LANG1).LR-debug.lexc
-	hfst-lexc .deps/$(LANG1).LR-debug.lexc -o .deps/$(LANG1).LR-debug.lexc.hfst -v
+	hfst-lexc .deps/$(LANG1).LR-debug.lexc -o .deps/$(LANG1).LR-debug.lexc.hfst $(LEXCFLAGS)
 	hfst-compose-intersect -1 .deps/$(LANG1).LR-debug.lexc.hfst -2 .deps/$(LANG1).twol.hfst -o $@
 
 .deps/$(LANG1).lexc.hfst: .deps/$(LANG1).RL.lexc.hfst
 	hfst-fst2fst -O -i $< -o $@
+ifnot_lexd}}{{if_lexd
+.deps/$(LANG1).LR-debug.hfst: $(BASENAME).$(LANG1).lexd .deps/.d
+	cat $< | grep -v 'Dir/RL' | grep -v 'Use/Circ' > .deps/$(LANG1).LR-debug.lexd
+	lexd .deps/$(LANG1).LR-debug.lexd | hfst-txt2fst -o .deps/$(LANG1).LR-debug.lexd.hfst
+	hfst-compose-intersect -1 .deps/$(LANG1).LR-debug.lexd.hfst -2 .deps/$(LANG1).twol.hfst -o $@
 
+.deps/$(LANG1).lexd.hfst: .deps/$(LANG1).RL.lexd.hfst
+	hfst-fst2fst -O -i $< -o $@
+if_lexd}}
 ###############################################################################
 ## Disambiguation rules
 ###############################################################################
@@ -155,7 +192,11 @@ $(LANG1).prob: corpus/$(LANG1).tagged
 ## Distribution
 ###############################################################################
 
-EXTRA_DIST=$(BASENAME).$(LANG1).lexc		\
+EXTRA_DIST= \{{ifnot_lexd
+		$(BASENAME).$(LANG1).lexc	\
+ifnot_lexd}}{{if_lexd
+		$(BASENAME).$(LANG1).lexd	\
+if_lexd}}
 		$(BASENAME).$(LANG1).twol	\
 		$(BASENAME).$(LANG1).rlx	\
 		$(BASENAME).post-$(LANG1).dix	\
@@ -204,7 +245,7 @@ clean-local:
 ###############################################################################
 
 test: all
-	echo "TODO test sentence" | apertium -d . {{languageCode}}-morph | tee .test-mt
+	echo "TODO test sentence" | apertium -d . -f line {{languageCode}}-morph | tee .test-mt
 	@echo "TODO test analysis results" > .test-ref
 	@diff .test-ref .test-mt
 	@rm .test-ref .test-mt
diff --git a/hfst-language-module/README b/hfst-language-module/README
index 198cf69..f7a3c83 100644
--- a/hfst-language-module/README
+++ b/hfst-language-module/README
@@ -13,10 +13,15 @@ Requirements
 
 You will need the following software installed:
 
+* autoconf
+* automake
+* pkg-config
 * lttoolbox (>= 3.5.1)
 * apertium (>= 3.6.1)
 * vislcg3 (>= 1.3.1)
-* hfst (>= 3.15.1)
+* hfst (>= 3.15.1){{if_lexd
+* lexd (>= 0.0.1)
+if_lexd}}
 
 If this does not make any sense, we recommend you look at: www.apertium.org.
 
@@ -26,11 +31,12 @@ Compiling
 Given the requirements being installed, you should be able to just run:
 
 ```bash
+$ autoreconf -fvi
 $ ./configure
 $ make
 ```
 
-You can use `./autogen.sh` instead of `./configure` if you're compiling
+You can use `./autogen.sh` instead of `autoreconf` and `./configure` if you're compiling
 from source.
 
 If you're doing development, you don't have to install the data, you
@@ -47,6 +53,8 @@ You can use a `--prefix` with `./configure` to install as a non-root user,
 but make sure to use the same prefix when installing the translation
 pair and any other language packages.
 
+If any of this doesn't make sense or doesn't work, see https://wiki.apertium.org/wiki/Install_language_data_by_compiling
+
 Testing
 -------------------------------------------------------------------------------
 
@@ -64,8 +72,11 @@ TODO: test tagger result
 Files and data
 -------------------------------------------------------------------------------
 
+{{ifnot_lexd
 * [`apertium-{{languageCode}}.{{languageCode}}.lexc`](apertium-{{languageCode}}.{{languageCode}}.lexc) - Morphotactic dictionary
-* [`apertium-{{languageCode}}.{{languageCode}}.twol`](apertium-{{languageCode}}.{{languageCode}}.twol) - Morphophonological rules{{if_twoc
+ifnot_lexd}}{{if_lexd
+* [`apertium-{{languageCode}}.{{languageCode}}.lexd`](apertium-{{languageCode}}.{{languageCode}}.lexd) - Morphotactic dictionary
+if_lexd}}* [`apertium-{{languageCode}}.{{languageCode}}.twol`](apertium-{{languageCode}}.{{languageCode}}.twol) - Morphophonological rules{{if_twoc
 * [`apertium-{{languageCode}}.{{languageCode}}.twoc`](apertium-{{languageCode}}.{{languageCode}}.twoc) - Path-restriction rules for prefixes
 if_twoc}}
 * [`apertium-{{languageCode}}.{{languageCode}}.rlx`](apertium-{{languageCode}}.{{languageCode}}.rlx) - Constraint Grammar disambiguation rules
@@ -73,6 +84,7 @@ if_twoc}}
 * [`{{languageCode}}.prob`]({{languageCode}}.prob) - Tagger model{{if_spellrelax
 * [`apertium-{{languageCode}}.{{languageCode}}.spellrelax`](apertium-{{languageCode}}.{{languageCode}}.spellrelax) - Typographical variance rules
 if_spellrelax}}
+* [`apertium-{{languageCode}}.{{languageCode}}.udx`](apertium-{{languageCode}}.{{languageCode}}.udx) - Mappings from Apertium tags to Universal Dependencies features
 * [`modes.xml`](modes.xml) - Translation modes
 
 For more information
diff --git a/hfst-language-module/apertium-{{languageCode}}.{{languageCode}}.lexc b/hfst-language-module/apertium-{{languageCode}}.{{languageCode}}.lexc
index 55fe6ab..2d44a94 100644
--- a/hfst-language-module/apertium-{{languageCode}}.{{languageCode}}.lexc
+++ b/hfst-language-module/apertium-{{languageCode}}.{{languageCode}}.lexc
@@ -85,6 +85,7 @@ LEXICON Punctuation
 
 ! Resources:
 ! http://wiki.apertium.org/wiki/Starting_a_new_language_with_HFST#Lexicon
+! https://wiki.apertium.org/wiki/List_of_symbols
 ! http://wiki.apertium.org/wiki/Lttoolbox_and_lexc
 ! http://wiki.apertium.org/wiki/Apertium-specific_conventions_for_lexc
 ! https://kitwiki.csc.fi/twiki/bin/view/KitWiki/HfstHome
diff --git a/hfst-language-module/apertium-{{languageCode}}.{{languageCode}}.lexd b/hfst-language-module/apertium-{{languageCode}}.{{languageCode}}.lexd
new file mode 100644
index 0000000..bdde5ba
--- /dev/null
+++ b/hfst-language-module/apertium-{{languageCode}}.{{languageCode}}.lexd
@@ -0,0 +1,84 @@
+# Morphological Transducer for {{languageName}}
+
+# Part of speech categories
+# <n>      # Noun
+# <v>      # Verb
+# <adj>    # Adjective
+
+# <sent>   # Sentence-ending punctuation
+# <guio>   # Hyphen
+# <cm>     # Comma
+# <apos>   # Apostrophe
+# <quot>   # Quotation mark
+# <lquot>  # Left quotation mark
+# <rquot>  # Right quotation mark
+# <lpar>   # Left parenthesis
+# <rpar>   # Right parenthesis
+
+# Number morphology
+# <pl>  # Plural
+# <sg>  # Singular
+
+# Other symbols
+# >      # Morpheme boundary
+
+###############################################################################
+###                       M O R P H O T A C T I C S                         ###
+###############################################################################
+
+PATTERNS
+NounRoot RegNounInfl
+Punctuation
+
+
+LEXICON RegNounInfl
+
+<n><sg>:
+<n><pl>:>s
+
+
+###############################################################################
+###                          L E X I C O N                                  ###
+###############################################################################
+
+LEXICON NounRoot
+
+house:house   # A noun
+
+
+LEXICON Punctuation
+
+.<sent>:.
+..<sent>:..
+...<sent>:...
+;<sent>:;
+\:<sent>:\:
+!<sent>:!
+-<guio>:-
+—<guio>:—
+,<cm>:,
+?<sent>:? 
+'<apos>:'
+"<quot>:"
+«<lquot>:«
+»<rquot>:»
+”<rquot>:”
+“<lquot>:“
+(<lpar>:(
+\]<rpar>:\]
+\[<lpar>:\[
+)<rpar>:)
+\\<sent>:\\
+/<sent>:/
+
+
+# Resources:
+# https://github.com/apertium/lexd/blob/master/Usage.md
+# https://wiki.apertium.org/wiki/List_of_symbols
+# http://wiki.apertium.org/wiki/Starting_a_new_language_with_HFST#Lexicon
+# http://wiki.apertium.org/wiki/Lttoolbox_and_lexc
+# http://wiki.apertium.org/wiki/Apertium-specific_conventions_for_lexc
+# https://kitwiki.csc.fi/twiki/bin/view/KitWiki/HfstHome
+# https://github.com/hfst/
+# http://wiki.apertium.org/wiki/Hfst
+
diff --git a/hfst-language-module/apertium-{{languageCode}}.{{languageCode}}.spellrelax b/hfst-language-module/apertium-{{languageCode}}.{{languageCode}}.spellrelax
index badfd81..9a47f22 100644
--- a/hfst-language-module/apertium-{{languageCode}}.{{languageCode}}.spellrelax
+++ b/hfst-language-module/apertium-{{languageCode}}.{{languageCode}}.spellrelax
@@ -1,13 +1,7 @@
-Alphabet
+[
+	! Unify apostrophe styles
+	[ ?* [ ' (->) [ %` | ʻ | ’ | ‘ | ʼ ] ] ?* ] .o.
 
-%':%'
-%`:%` %ʻ:%`
-%ʻ:%ʻ %ʻ:%ʻ
-%’:%’ %ʻ:%’
-%‘:%‘ %ʻ:%‘
-%ʼ:%ʼ %ʻ:%ʼ ;
-
-Rules
-
-"Unify apostrophe styles"
-a => _ ;
+	! Accept input without diacritics
+	[ ?* [ á (->) a ] ?* ]
+]
\ No newline at end of file
diff --git a/hfst-language-module/apertium-{{languageCode}}.{{languageCode}}.udx b/hfst-language-module/apertium-{{languageCode}}.{{languageCode}}.udx
new file mode 100644
index 0000000..c74d3df
--- /dev/null
+++ b/hfst-language-module/apertium-{{languageCode}}.{{languageCode}}.udx
@@ -0,0 +1,71 @@
+_	_	m	_	_	_	Gender=Masc	_
+_	_	f	_	_	_	Gender=Fem	_
+_	_	mf	_	_	_	Gender=Masc,Fem	_
+_	_	sg	_	_	_	Number=Sing	_
+_	_	pl	_	_	_	Number=Plur	_
+_	_	pri	_	_	_	Mood=Ind|Tense=Pres	_
+_	_	past	_	_	_	Mood=Ind|Tense=Past	_
+_	_	pres	_	_	_	Mood=Ind|Tense=Pres	_
+_	_	inf	_	_	_	VerbForm=Inf	_
+_	_	itg	_	_	_	PronType=Itg	_
+_	_	neg	_	_	_	Negative=Yes	_
+_	_	p1	_	_	_	Person=1	_
+_	_	p2	_	_	_	Person=2	_
+_	_	p3	_	_	_	Person=3	_
+_	_	comp	_	_	_	Degree=Cmp	_
+_	_	sup	_	_	_	Degree=Sup	_
+_	_	ord	_	_	_	NumType=Ord	_
+_	_	ind	_	_	_	Definite=Ind	_
+_	_	dem	_	_	_	PronType=Dem	_
+_	_	def	_	_	_	Definite=Def	_
+_	_	ger	_	_	_	VerbForm=Ger	_
+_	_	pp	_	_	_	VerbForm=Part|Tense=Past	_
+_	_	ifi	_	_	_	Mood=Ind|Tense=Past	_
+_	_	pii	_	_	_	Mood=Ind|Tense=Past|Aspect=Imp	_
+_	_	fti	_	_	_	Mood=Ind|Tense=Fut	_
+_	_	cni	_	_	_	Mood=Cnd|Tense=Past|Aspect=Imp	_
+_	_	cns	_	_	_	Mood=Cnd	_
+_	_	prs	_	_	_	Mood=Sub|Tense=Pres	_
+_	_	pis	_	_	_	Mood=Sub|Tense=Past|Aspect=Imp	_
+_	_	imp	_	_	_	Mood=Imp	_
+_	_	plu	_	_	_	Mood=Ind|Tense=Plu	_
+_	_	fut	_	_	_	Mood=Ind|Tense=Fut	_
+_	_	pos	_	_	_	PronType=Pos	_
+_	_	gen	_	_	_	Case=Gen	_
+_	_	nom	_	_	_	Case=Nom	_
+_	_	sp	_	_	_	Number=Sing,Plur	_
+_	_	ref	_	_	_	Reflexive=Yes	_
+_	_	pprs	_	_	_	VerbForm=Part|Tense=Pres	_
+_	num	_	_	_	NUM	_	_
+_	ij	_	_	_	INTJ	_	_
+_	sent	_	_	_	PUNCT	_	_
+_	cm	_	_	_	PUNCT	_	_
+_	lpar	_	_	_	PUNCT	_	_
+_	rpar	_	_	_	PUNCT	_	_
+_	lquest	_	_	_	PUNCT	_	_
+_	web	_	_	_	SYM	_	_
+_	guio	_	_	_	PUNCT	_	_
+_	vbdo	_	_	_	VERB	_	_
+_	apos	_	_	_	PUNCT	_	_
+_	abbr	_	_	_	SYM	_	_
+_	part	_	_	_	PART	_	_
+_	vpart	_	_	_	PART	_	_
+_	n	_	_	_	NOUN	_	_
+_	prn	_	_	_	PRON	_	_
+_	pr	_	_	_	ADP	_	_
+_	cnjcoo	_	_	_	CCONJ	_	_
+_	cnjsub	_	_	_	SCONJ	_	_
+_	cnjadv	_	_	_	SCONJ	_	_
+_	vbser	_	_	_	AUX	_	_
+_	vblex	_	_	_	VERB	_	_
+_	vaux	_	_	_	AUX	_	_
+_	vbhaver	_	_	_	AUX	_	_
+_	vbmod	_	_	_	VERB	_	_
+_	adj	_	_	_	ADJ	_	_
+_	np	_	_	_	PROPN	_	_
+_	adv	_	_	_	ADV	_	_
+_	preadv	_	_	_	ADV	_	_
+_	detnt	_	_	_	DET	_	_
+_	predet	_	_	_	DET	_	_
+_	rel	_	_	_	PRON	_	_
+_	det	_	_	_	DET	_	_
diff --git a/hfst-language-module/configure.ac b/hfst-language-module/configure.ac
index fafa9be..f9a4589 100644
--- a/hfst-language-module/configure.ac
+++ b/hfst-language-module/configure.ac
@@ -20,7 +20,9 @@ AM_CONDITIONAL([HAVE_HFSTOSPELL], [test x$hfstospell = xyes])
 
 PKG_CHECK_MODULES(APERTIUM, apertium >= 3.6.1)
 PKG_CHECK_MODULES(HFST, hfst >= 3.15.1)
-PKG_CHECK_MODULES(CG3, cg3 >= 1.3.1)
+PKG_CHECK_MODULES(CG3, cg3 >= 1.3.1){{if_lexd
+PKG_CHECK_MODULES(LEXD, lexd >= 0.0.1)
+if_lexd}}
 
 AP_MKINCLUDE
 
diff --git a/hfst-language-module/updateBootstraper.py b/hfst-language-module/updateBootstraper.py
index d297539..36e8a99 100755
--- a/hfst-language-module/updateBootstraper.py
+++ b/hfst-language-module/updateBootstraper.py
@@ -11,6 +11,7 @@
 files = [
     '{{languageCode}}.prob',
     'apertium-{{languageCode}}.{{languageCode}}.lexc',
+    'apertium-{{languageCode}}.{{languageCode}}.lexd',
     'apertium-{{languageCode}}.{{languageCode}}.twol',
     'apertium-{{languageCode}}.{{languageCode}}.twoc',
     'apertium-{{languageCode}}.{{languageCode}}.rlx',
@@ -22,6 +23,8 @@
     'modes.xml',
     'corpus/{{languageCode}}.tagged',
     'README',
+    'apertium-{{languageCode}}.{{languageCode}}.udx',
+    'MANIFEST.txt',
 ]
 
 if __name__ == '__main__':
diff --git a/languages.tsv b/languages.tsv
new file mode 100644
index 0000000..bd576da
--- /dev/null
+++ b/languages.tsv
@@ -0,0 +1,7864 @@
+aaa		Ghotuo
+aab		Alumu-Tesu
+aac		Ari
+aad		Amal
+aae		Arbëreshë Albanian
+aaf		Aranadan
+aag		Ambrak
+aah		Abu' Arapesh
+aai		Arifama-Miniafia
+aak		Ankave
+aal		Afade
+aan		Anambé
+aao		Algerian Saharan Arabic
+aap		Pará Arára
+aaq		Eastern Abnaki
+aar	aa	Afar
+aas		Aasáx
+aat		Arvanitika Albanian
+aau		Abau
+aaw		Solong
+aax		Mandobo Atas
+aaz		Amarasi
+aba		Abé
+abb		Bankon
+abc		Ambala Ayta
+abd		Manide
+abe		Western Abnaki
+abf		Abai Sungai
+abg		Abaga
+abh		Tajiki Arabic
+abi		Abidji
+abj		Aka-Bea
+abk	ab	Abkhazian
+abl		Lampung Nyo
+abm		Abanyom
+abn		Abua
+abo		Abon
+abp		Abellen Ayta
+abq		Abaza
+abr		Abron
+abs		Ambonese Malay
+abt		Ambulas
+abu		Abure
+abv		Baharna Arabic
+abw		Pal
+abx		Inabaknon
+aby		Aneme Wake
+abz		Abui
+aca		Achagua
+acb		Áncá
+acd		Gikyode
+ace		Achinese
+acf		Saint Lucian Creole French
+ach		Acoli
+aci		Aka-Cari
+ack		Aka-Kora
+acl		Akar-Bale
+acm		Mesopotamian Arabic
+acn		Achang
+acp		Eastern Acipa
+acq		Ta'izzi-Adeni Arabic
+acr		Achi
+acs		Acroá
+act		Achterhoeks
+acu		Achuar-Shiwiar
+acv		Achumawi
+acw		Hijazi Arabic
+acx		Omani Arabic
+acy		Cypriot Arabic
+acz		Acheron
+ada		Adangme
+adb		Adabe
+add		Lidzonka
+ade		Adele
+adf		Dhofari Arabic
+adg		Andegerebinha
+adh		Adhola
+adi		Adi
+adj		Adioukrou
+adl		Galo
+adn		Adang
+ado		Abu
+adq		Adangbe
+adr		Adonara
+ads		Adamorobe Sign Language
+adt		Adnyamathanha
+adu		Aduge
+adw		Amundava
+adx		Amdo Tibetan
+ady		Adyghe
+adz		Adzera
+aea		Areba
+aeb		Tunisian Arabic
+aec		Saidi Arabic
+aed		Argentine Sign Language
+aee		Northeast Pashai
+aek		Haeke
+ael		Ambele
+aem		Arem
+aen		Armenian Sign Language
+aeq		Aer
+aer		Eastern Arrernte
+aes		Alsea
+aeu		Akeu
+aew		Ambakich
+aey		Amele
+aez		Aeka
+afb		Gulf Arabic
+afd		Andai
+afe		Putukwam
+afg		Afghan Sign Language
+afh		Afrihili
+afi		Akrukay
+afk		Nanubae
+afn		Defaka
+afo		Eloyi
+afp		Tapei
+afr	af	Afrikaans
+afs		Afro-Seminole Creole
+aft		Afitti
+afu		Awutu
+afz		Obokuitai
+aga		Aguano
+agb		Legbo
+agc		Agatu
+agd		Agarabi
+age		Angal
+agf		Arguni
+agg		Angor
+agh		Ngelima
+agi		Agariya
+agj		Argobba
+agk		Isarog Agta
+agl		Fembe
+agm		Angaataha
+agn		Agutaynen
+ago		Tainae
+agq		Aghem
+agr		Aguaruna
+ags		Esimbi
+agt		Central Cagayan Agta
+agu		Aguacateco
+agv		Remontado Dumagat
+agw		Kahua
+agx		Aghul
+agy		Southern Alta
+agz		Mt. Iriga Agta
+aha		Ahanta
+ahb		Axamb
+ahg		Qimant
+ahh		Aghu
+ahi		Tiagbamrin Aizi
+ahk		Akha
+ahl		Igo
+ahm		Mobumrin Aizi
+ahn		Àhàn
+aho		Ahom
+ahp		Aproumu Aizi
+ahr		Ahirani
+ahs		Ashe
+aht		Ahtena
+aia		Arosi
+aib		Ainu
+aic		Ainbai
+aid		Alngith
+aie		Amara
+aif		Agi
+aig		Antigua and Barbuda Creole English
+aih		Ai-Cham
+aii		Assyrian Neo-Aramaic
+aij		Lishanid Noshan
+aik		Ake
+ail		Aimele
+aim		Aimol
+ain		Ainu
+aio		Aiton
+aip		Burumakok
+aiq		Aimaq
+air		Airoran
+ait		Arikem
+aiw		Aari
+aix		Aighon
+aiy		Ali
+aja		Aja
+ajg		Aja
+aji		Ajië
+ajn		Andajin
+ajp		South Levantine Arabic
+ajt		Judeo-Tunisian Arabic
+aju		Judeo-Moroccan Arabic
+ajw		Ajawa
+ajz		Amri Karbi
+aka	ak	Akan
+akb		Batak Angkola
+akc		Mpur
+akd		Ukpet-Ehom
+ake		Akawaio
+akf		Akpa
+akg		Anakalangu
+akh		Angal Heneng
+aki		Aiome
+akj		Aka-Jeru
+akk		Akkadian
+akl		Aklanon
+akm		Aka-Bo
+ako		Akurio
+akp		Siwu
+akq		Ak
+akr		Araki
+aks		Akaselem
+akt		Akolet
+aku		Akum
+akv		Akhvakh
+akw		Akwa
+akx		Aka-Kede
+aky		Aka-Kol
+akz		Alabama
+ala		Alago
+alc		Qawasqar
+ald		Alladian
+ale		Aleut
+alf		Alege
+alh		Alawa
+ali		Amaimon
+alj		Alangan
+alk		Alak
+all		Allar
+alm		Amblong
+aln		Gheg Albanian
+alo		Larike-Wakasihu
+alp		Alune
+alq		Algonquin
+alr		Alutor
+als		Tosk Albanian
+alt		Southern Altai
+alu		'Are'are
+alw		Alaba-K’abeena
+alx		Amol
+aly		Alyawarr
+alz		Alur
+ama		Amanayé
+amb		Ambo
+amc		Amahuaca
+ame		Yanesha'
+amf		Hamer-Banna
+amg		Amurdak
+amh	am	Amharic
+ami		Amis
+amj		Amdang
+amk		Ambai
+aml		War-Jaintia
+amm		Ama
+amn		Amanab
+amo		Amo
+amp		Alamblak
+amq		Amahai
+amr		Amarakaeri
+ams		Southern Amami-Oshima
+amt		Amto
+amu		Guerrero Amuzgo
+amv		Ambelau
+amw		Western Neo-Aramaic
+amx		Anmatyerre
+amy		Ami
+amz		Atampaya
+ana		Andaqui
+anb		Andoa
+anc		Ngas
+and		Ansus
+ane		Xârâcùù
+anf		Animere
+ang		Old English
+anh		Nend
+ani		Andi
+anj		Anor
+ank		Goemai
+anl		Anu-Hkongso Chin
+anm		Anal
+ann		Obolo
+ano		Andoque
+anp		Angika
+anq		Jarawa
+anr		Andh
+ans		Anserma
+ant		Antakarinya
+anu		Anuak
+anv		Denya
+anw		Anaang
+anx		Andra-Hus
+any		Anyin
+anz		Anem
+aoa		Angolar
+aob		Abom
+aoc		Pemon
+aod		Andarum
+aoe		Angal Enen
+aof		Bragat
+aog		Angoram
+aoh		Arma
+aoi		Anindilyakwa
+aoj		Mufian
+aok		Arhö
+aol		Alor
+aom		Ömie
+aon		Bumbita Arapesh
+aor		Aore
+aos		Taikat
+aot		Atong
+aou		A'ou
+aox		Atorada
+aoz		Uab Meto
+apb		Sa'a
+apc		North Levantine Arabic
+apd		Sudanese Arabic
+ape		Bukiyip
+apf		Pahanan Agta
+apg		Ampanang
+aph		Athpariya
+api		Apiaká
+apj		Jicarilla Apache
+apk		Kiowa Apache
+apl		Lipan Apache
+apm		Mescalero-Chiricahua Apache
+apn		Apinayé
+apo		Ambul
+app		Apma
+apq		A-Pucikwar
+apr		Arop-Lokep
+aps		Arop-Sissano
+apt		Apatani
+apu		Apurinã
+apv		Alapmunte
+apw		Western Apache
+apx		Aputai
+apy		Apalaí
+apz		Safeyoka
+aqc		Archi
+aqd		Ampari Dogon
+aqg		Arigidi
+aqm		Atohwaim
+aqn		Northern Alta
+aqp		Atakapa
+aqr		Arhâ
+aqt		Angaité
+aqz		Akuntsu
+ara	ar	Arabic
+arb		Standard Arabic
+arc		Aramaic
+ard		Arabana
+are		Western Arrarnta
+arg	an	Aragonese
+arh		Arhuaco
+ari		Arikara
+arj		Arapaso
+ark		Arikapú
+arl		Arabela
+arn		Mapuche
+aro		Araona
+arp		Arapaho
+arq		Algerian Arabic
+arr		Karo
+ars		Najdi Arabic
+aru		Aruá
+arv		Arbore
+arw		Arawak
+arx		Aruá
+ary		Moroccan Arabic
+arz		Egyptian Arabic
+asa		Asu
+asb		Assiniboine
+asc		Casuarina Coast Asmat
+ase		American Sign Language
+asf		Auslan
+asg		Cishingini
+ash		Abishira
+asi		Buruwai
+asj		Sari
+ask		Ashkun
+asl		Asilulu
+asm	as	Assamese
+asn		Xingú Asuriní
+aso		Dano
+asp		Algerian Sign Language
+asq		Austrian Sign Language
+asr		Asuri
+ass		Ipulo
+ast		Asturian
+asu		Tocantins Asurini
+asv		Asoa
+asw		Australian Aborigines Sign Language
+asx		Muratayak
+asy		Yaosakor Asmat
+asz		As
+ata		Pele-Ata
+atb		Zaiwa
+atc		Atsahuaca
+atd		Ata Manobo
+ate		Atemble
+atg		Ivbie North-Okpela-Arhe
+ati		Attié
+atj		Atikamekw
+atk		Ati
+atl		Mt. Iraya Agta
+atm		Ata
+atn		Ashtiani
+ato		Atong
+atp		Pudtol Atta
+atq		Aralle-Tabulahan
+atr		Waimiri-Atroari
+ats		Gros Ventre
+att		Pamplona Atta
+atu		Reel
+atv		Northern Altai
+atw		Atsugewi
+atx		Arutani
+aty		Aneityum
+atz		Arta
+aua		Asumboa
+aub		Alugu
+auc		Waorani
+aud		Anuta
+aug		Aguna
+auh		Aushi
+aui		Anuki
+auj		Awjilah
+auk		Heyo
+aul		Aulua
+aum		Asu
+aun		Molmo One
+auo		Auyokawa
+aup		Makayam
+auq		Anus
+aur		Aruek
+aut		Austral
+auu		Auye
+auw		Awyi
+aux		Aurá
+auy		Awiyaana
+auz		Uzbeki Arabic
+ava	av	Avaric
+avb		Avau
+avd		Alviri-Vidari
+ave	ae	Avestan
+avi		Avikam
+avk		Kotava
+avl		Eastern Egyptian Bedawi Arabic
+avm		Angkamuthi
+avn		Avatime
+avo		Agavotaguerra
+avs		Aushiri
+avt		Au
+avu		Avokaya
+avv		Avá-Canoeiro
+awa		Awadhi
+awb		Awa
+awc		Cicipu
+awe		Awetí
+awg		Anguthimri
+awh		Awbono
+awi		Aekyom
+awk		Awabakal
+awm		Arawum
+awn		Awngi
+awo		Awak
+awr		Awera
+aws		South Awyu
+awt		Araweté
+awu		Central Awyu
+awv		Jair Awyu
+aww		Awun
+awx		Awara
+awy		Edera Awyu
+axb		Abipon
+axe		Ayerrerenge
+axg		Mato Grosso Arára
+axk		Yaka
+axl		Lower Southern Aranda
+axm		Middle Armenian
+axx		Xârâgurè
+aya		Awar
+ayb		Ayizo Gbe
+ayc		Southern Aymara
+ayd		Ayabadhu
+aye		Ayere
+ayg		Ginyanga
+ayh		Hadrami Arabic
+ayi		Leyigha
+ayk		Akuku
+ayl		Libyan Arabic
+aym	ay	Aymara
+ayn		Sanaani Arabic
+ayo		Ayoreo
+ayp		North Mesopotamian Arabic
+ayq		Ayi
+ayr		Central Aymara
+ays		Sorsogon Ayta
+ayt		Magbukun Ayta
+ayu		Ayu
+ayy		Tayabas Ayta
+ayz		Mai Brat
+aza		Azha
+azb		South Azerbaijani
+azd		Eastern Durango Nahuatl
+aze	az	Azerbaijani
+azg		San Pedro Amuzgos Amuzgo
+azj		North Azerbaijani
+azm		Ipalapa Amuzgo
+azn		Western Durango Nahuatl
+azo		Awing
+azt		Faire Atta
+azz		Highland Puebla Nahuatl
+baa		Babatana
+bab		Bainouk-Gunyuño
+bac		Badui
+bae		Baré
+baf		Nubaca
+bag		Tuki
+bah		Bahamas Creole English
+baj		Barakai
+bak	ba	Bashkir
+bal		Baluchi
+bam	bm	Bambara
+ban		Balinese
+bao		Waimaha
+bap		Bantawa
+bar		Bavarian
+bas		Basaa
+bau		Bada
+bav		Vengo
+baw		Bambili-Bambui
+bax		Bamun
+bay		Batuley
+bba		Baatonum
+bbb		Barai
+bbc		Batak Toba
+bbd		Bau
+bbe		Bangba
+bbf		Baibai
+bbg		Barama
+bbh		Bugan
+bbi		Barombi
+bbj		Ghomala
+bbk		Babanki
+bbl		Bats
+bbm		Babango
+bbn		Uneapa
+bbo		Northern Bobo Madaré
+bbp		West Central Banda
+bbq		Bamali
+bbr		Girawa
+bbs		Bakpinka
+bbt		Mburku
+bbu		Kulung
+bbv		Karnai
+bbw		Baba
+bbx		Bubia
+bby		Befang
+bbz		Babalia Creole Arabic
+bca		Central Bai
+bcb		Bainouk-Samik
+bcc		Southern Balochi
+bcd		North Babar
+bce		Bamenyam
+bcf		Bamu
+bcg		Baga Pokur
+bch		Bariai
+bci		Baoulé
+bcj		Bardi
+bck		Bunuba
+bcl		Central Bikol
+bcm		Bannoni
+bcn		Bali
+bco		Kaluli
+bcp		Bali
+bcq		Bench
+bcr		Babine
+bcs		Kohumono
+bct		Bendi
+bcu		Awad Bing
+bcv		Shoo-Minda-Nye
+bcw		Bana
+bcy		Bacama
+bcz		Bainouk-Gunyaamolo
+bda		Bayot
+bdb		Basap
+bdc		Emberá-Baudó
+bdd		Bunama
+bde		Bade
+bdf		Biage
+bdg		Bonggi
+bdh		Baka
+bdi		Burun
+bdj		Bai
+bdk		Budukh
+bdl		Indonesian Bajau
+bdm		Buduma
+bdn		Baldemu
+bdo		Morom
+bdp		Bende
+bdq		Bahnar
+bdr		West Coast Bajau
+bds		Burunge
+bdt		Bokoto
+bdu		Oroko
+bdv		Bodo Parja
+bdw		Baham
+bdx		Budong-Budong
+bdy		Bandjalang
+bdz		Badeshi
+bea		Beaver
+beb		Bebele
+bec		Iceve-Maci
+bed		Bedoanas
+bee		Byangsi
+bef		Benabena
+beg		Belait
+beh		Biali
+bei		Bekati'
+bej		Beja
+bek		Bebeli
+bel	be	Belarusian
+bem		Bemba
+ben	bn	Bengali
+beo		Beami
+bep		Besoa
+beq		Beembe
+bes		Besme
+bet		Guiberoua Béte
+beu		Blagar
+bev		Daloa Bété
+bew		Betawi
+bex		Jur Modo
+bey		Beli
+bez		Bena
+bfa		Bari
+bfb		Pauri Bareli
+bfc		Panyi Bai
+bfd		Bafut
+bfe		Betaf
+bff		Bofi
+bfg		Busang Kayan
+bfh		Blafe
+bfi		British Sign Language
+bfj		Bafanji
+bfk		Ban Khor Sign Language
+bfl		Banda-Ndélé
+bfm		Mmen
+bfn		Bunak
+bfo		Malba Birifor
+bfp		Beba
+bfq		Badaga
+bfr		Bazigar
+bfs		Southern Bai
+bft		Balti
+bfu		Gahri
+bfw		Bondo
+bfx		Bantayanon
+bfy		Bagheli
+bfz		Mahasu Pahari
+bga		Gwamhi-Wuri
+bgb		Bobongko
+bgc		Haryanvi
+bgd		Rathwi Bareli
+bge		Bauria
+bgf		Bangandu
+bgg		Bugun
+bgi		Giangan
+bgj		Bangolan
+bgk		Bit
+bgl		Bo
+bgn		Western Balochi
+bgo		Baga Koga
+bgp		Eastern Balochi
+bgq		Bagri
+bgr		Bawm Chin
+bgs		Tagabawa
+bgt		Bughotu
+bgu		Mbongno
+bgv		Warkay-Bipim
+bgw		Bhatri
+bgx		Balkan Gagauz Turkish
+bgy		Benggoi
+bgz		Banggai
+bha		Bharia
+bhb		Bhili
+bhc		Biga
+bhd		Bhadrawahi
+bhe		Bhaya
+bhf		Odiai
+bhg		Binandere
+bhh		Bukharic
+bhi		Bhilali
+bhj		Bahing
+bhl		Bimin
+bhm		Bathari
+bhn		Bohtan Neo-Aramaic
+bho		Bhojpuri
+bhp		Bima
+bhq		Tukang Besi South
+bhr		Bara Malagasy
+bhs		Buwal
+bht		Bhattiyali
+bhu		Bhunjia
+bhv		Bahau
+bhw		Biak
+bhx		Bhalay
+bhy		Bhele
+bhz		Bada
+bia		Badimaya
+bib		Bissa
+bic		Bikaru
+bid		Bidiyo
+bie		Bepour
+bif		Biafada
+big		Biangai
+bij		Vaghat-Ya-Bijim-Legeri
+bik		Bikol
+bil		Bile
+bim		Bimoba
+bin		Bini
+bio		Nai
+bip		Bila
+biq		Bipi
+bir		Bisorio
+bis	bi	Bislama
+bit		Berinomo
+biu		Biete
+biv		Southern Birifor
+biw		Kol
+bix		Bijori
+biy		Birhor
+biz		Baloi
+bja		Budza
+bjb		Banggarla
+bjc		Bariji
+bje		Biao-Jiao Mien
+bjf		Barzani Jewish Neo-Aramaic
+bjg		Bidyogo
+bjh		Bahinemo
+bji		Burji
+bjj		Kanauji
+bjk		Barok
+bjl		Bulu
+bjm		Bajelani
+bjn		Banjar
+bjo		Mid-Southern Banda
+bjp		Fanamaket
+bjr		Binumarien
+bjs		Bajan
+bjt		Balanta-Ganja
+bju		Busuu
+bjv		Bedjond
+bjw		Bakwé
+bjx		Banao Itneg
+bjy		Bayali
+bjz		Baruga
+bka		Kyak
+bkc		Baka
+bkd		Binukid
+bkf		Beeke
+bkg		Buraka
+bkh		Bakoko
+bki		Baki
+bkj		Pande
+bkk		Brokskat
+bkl		Berik
+bkm		Kom
+bkn		Bukitan
+bko		Kwa'
+bkp		Boko
+bkq		Bakairí
+bkr		Bakumpai
+bks		Northern Sorsoganon
+bkt		Boloki
+bku		Buhid
+bkv		Bekwarra
+bkw		Bekwel
+bkx		Baikeno
+bky		Bokyi
+bkz		Bungku
+bla		Siksika
+blb		Bilua
+blc		Bella Coola
+bld		Bolango
+ble		Balanta-Kentohe
+blf		Buol
+blg		Balau
+blh		Kuwaa
+bli		Bolia
+blj		Bolongan
+blk		Pa'o Karen
+bll		Biloxi
+blm		Beli
+bln		Southern Catanduanes Bikol
+blo		Anii
+blp		Blablanga
+blq		Baluan-Pam
+blr		Blang
+bls		Balaesang
+blt		Tai Dam
+blv		Kibala
+blw		Balangao
+blx		Mag-Indi Ayta
+bly		Notre
+blz		Balantak
+bma		Lame
+bmb		Bembe
+bmc		Biem
+bmd		Baga Manduri
+bme		Limassa
+bmf		Bom-Kim
+bmg		Bamwe
+bmh		Kein
+bmi		Bagirmi
+bmj		Bote-Majhi
+bmk		Ghayavi
+bml		Bomboli
+bmm		Northern Betsimisaraka Malagasy
+bmn		Bina
+bmo		Bambalang
+bmp		Bulgebi
+bmq		Bomu
+bmr		Muinane
+bms		Bilma Kanuri
+bmt		Biao Mon
+bmu		Somba-Siawari
+bmv		Bum
+bmw		Bomwali
+bmx		Baimak
+bmz		Baramu
+bna		Bonerate
+bnb		Bookan
+bnc		Bontok
+bnd		Banda
+bne		Bintauna
+bnf		Masiwang
+bng		Benga
+bni		Bangi
+bnj		Eastern Tawbuid
+bnk		Bierebo
+bnl		Boon
+bnm		Batanga
+bnn		Bunun
+bno		Bantoanon
+bnp		Bola
+bnq		Bantik
+bnr		Butmas-Tur
+bns		Bundeli
+bnu		Bentong
+bnv		Bonerif
+bnw		Bisis
+bnx		Bangubangu
+bny		Bintulu
+bnz		Beezen
+boa		Bora
+bob		Aweer
+bod	bo	Tibetan
+boe		Mundabli
+bof		Bolon
+bog		Bamako Sign Language
+boh		Boma
+boi		Barbareño
+boj		Anjam
+bok		Bonjo
+bol		Bole
+bom		Berom
+bon		Bine
+boo		Tiemacèwè Bozo
+bop		Bonkiman
+boq		Bogaya
+bor		Borôro
+bos	bs	Bosnian
+bot		Bongo
+bou		Bondei
+bov		Tuwuli
+bow		Rema
+box		Buamu
+boy		Bodo
+boz		Tiéyaxo Bozo
+bpa		Daakaka
+bpb		Barbacoas
+bpd		Banda-Banda
+bpg		Bonggo
+bph		Botlikh
+bpi		Bagupi
+bpj		Binji
+bpk		Orowe
+bpl		Broome Pearling Lugger Pidgin
+bpm		Biyom
+bpn		Dzao Min
+bpo		Anasi
+bpp		Kaure
+bpq		Banda Malay
+bpr		Koronadal Blaan
+bps		Sarangani Blaan
+bpt		Barrow Point
+bpu		Bongu
+bpv		Bian Marind
+bpw		Bo
+bpx		Palya Bareli
+bpy		Bishnupriya
+bpz		Bilba
+bqa		Tchumbuli
+bqb		Bagusa
+bqc		Boko
+bqd		Bung
+bqf		Baga Kaloum
+bqg		Bago-Kusuntu
+bqh		Baima
+bqi		Bakhtiari
+bqj		Bandial
+bqk		Banda-Mbrès
+bql		Bilakura
+bqm		Wumboko
+bqn		Bulgarian Sign Language
+bqo		Balo
+bqp		Busa
+bqq		Biritai
+bqr		Burusu
+bqs		Bosngun
+bqt		Bamukumbit
+bqu		Boguru
+bqv		Koro Wachi
+bqw		Buru
+bqx		Baangi
+bqy		Bengkala Sign Language
+bqz		Bakaka
+bra		Braj
+brb		Lave
+brc		Berbice Creole Dutch
+brd		Baraamu
+bre	br	Breton
+brf		Bera
+brg		Baure
+brh		Brahui
+bri		Mokpwe
+brj		Bieria
+brk		Birked
+brl		Birwa
+brm		Barambu
+brn		Boruca
+bro		Brokkat
+brp		Barapasi
+brq		Breri
+brr		Birao
+brs		Baras
+brt		Bitare
+bru		Eastern Bru
+brv		Western Bru
+brw		Bellari
+brx		Bodo
+bry		Burui
+brz		Bilbil
+bsa		Abinomn
+bsb		Brunei Bisaya
+bsc		Bassari
+bse		Wushi
+bsf		Bauchi
+bsg		Bashkardi
+bsh		Kati
+bsi		Bassossi
+bsj		Bangwinji
+bsk		Burushaski
+bsl		Basa-Gumna
+bsm		Busami
+bsn		Barasana-Eduria
+bso		Buso
+bsp		Baga Sitemu
+bsq		Bassa
+bsr		Bassa-Kontagora
+bss		Akoose
+bst		Basketo
+bsu		Bahonsuai
+bsv		Baga Sobané
+bsw		Baiso
+bsx		Yangkam
+bsy		Sabah Bisaya
+bta		Bata
+btc		Bati
+btd		Batak Dairi
+bte		Gamo-Ningi
+btf		Birgit
+btg		Gagnoa Bété
+bth		Biatah Bidayuh
+bti		Burate
+btj		Bacanese Malay
+btm		Batak Mandailing
+btn		Ratagnon
+bto		Rinconada Bikol
+btp		Budibud
+btq		Batek
+btr		Baetora
+bts		Batak Simalungun
+btt		Bete-Bendi
+btu		Batu
+btv		Bateri
+btw		Butuanon
+btx		Batak Karo
+bty		Bobot
+btz		Batak Alas-Kluet
+bua		Buriat
+bub		Bua
+buc		Bushi
+bud		Ntcham
+bue		Beothuk
+buf		Bushoong
+bug		Buginese
+buh		Younuo Bunu
+bui		Bongili
+buj		Basa-Gurmana
+buk		Bugawac
+bul	bg	Bulgarian
+bum		Bulu
+bun		Sherbro
+buo		Terei
+bup		Busoa
+buq		Brem
+bus		Bokobaru
+but		Bungain
+buu		Budu
+buv		Bun
+buw		Bubi
+bux		Boghom
+buy		Bullom So
+buz		Bukwen
+bva		Barein
+bvb		Bube
+bvc		Baelelea
+bvd		Baeggu
+bve		Berau Malay
+bvf		Boor
+bvg		Bonkeng
+bvh		Bure
+bvi		Belanda Viri
+bvj		Baan
+bvk		Bukat
+bvl		Bolivian Sign Language
+bvm		Bamunka
+bvn		Buna
+bvo		Bolgo
+bvp		Bumang
+bvq		Birri
+bvr		Burarra
+bvt		Bati
+bvu		Bukit Malay
+bvv		Baniva
+bvw		Boga
+bvx		Dibole
+bvy		Baybayanon
+bvz		Bauzi
+bwa		Bwatoo
+bwb		Namosi-Naitasiri-Serua
+bwc		Bwile
+bwd		Bwaidoka
+bwe		Bwe Karen
+bwf		Boselewa
+bwg		Barwe
+bwh		Bishuo
+bwi		Baniwa
+bwj		Láá Láá Bwamu
+bwk		Bauwaki
+bwl		Bwela
+bwm		Biwat
+bwn		Wunai Bunu
+bwo		Boro
+bwp		Mandobo Bawah
+bwq		Southern Bobo Madaré
+bwr		Bura-Pabir
+bws		Bomboma
+bwt		Bafaw-Balong
+bwu		Buli
+bww		Bwa
+bwx		Bu-Nao Bunu
+bwy		Cwi Bwamu
+bwz		Bwisi
+bxa		Tairaha
+bxb		Belanda Bor
+bxc		Molengue
+bxd		Pela
+bxe		Birale
+bxf		Bilur
+bxg		Bangala
+bxh		Buhutu
+bxi		Pirlatapa
+bxj		Bayungu
+bxk		Bukusu
+bxl		Jalkunan
+bxm		Mongolia Buriat
+bxn		Burduna
+bxo		Barikanchi
+bxp		Bebil
+bxq		Beele
+bxr		Russia Buriat
+bxs		Busam
+bxu		China Buriat
+bxv		Berakou
+bxw		Bankagooma
+bxz		Binahari
+bya		Batak
+byb		Bikya
+byc		Ubaghara
+byd		Benyadu'
+bye		Pouye
+byf		Bete
+byg		Baygo
+byh		Bhujel
+byi		Buyu
+byj		Bina
+byk		Biao
+byl		Bayono
+bym		Bidjara
+byn		Blin
+byo		Biyo
+byp		Bumaji
+byq		Basay
+byr		Baruya
+bys		Burak
+byt		Berti
+byv		Medumba
+byw		Belhariya
+byx		Qaqet
+byz		Banaro
+bza		Bandi
+bzb		Andio
+bzc		Southern Betsimisaraka Malagasy
+bzd		Bribri
+bze		Jenaama Bozo
+bzf		Boikin
+bzg		Babuza
+bzh		Mapos Buang
+bzi		Bisu
+bzj		Belize Kriol English
+bzk		Nicaragua Creole English
+bzl		Boano
+bzm		Bolondo
+bzn		Boano
+bzo		Bozaba
+bzp		Kemberano
+bzq		Buli
+bzr		Biri
+bzs		Brazilian Sign Language
+bzt		Brithenig
+bzu		Burmeso
+bzv		Naami
+bzw		Basa
+bzx		Kɛlɛngaxo Bozo
+bzy		Obanliku
+bzz		Evant
+caa		Chortí
+cab		Garifuna
+cac		Chuj
+cad		Caddo
+cae		Lehar
+caf		Southern Carrier
+cag		Nivaclé
+cah		Cahuarano
+caj		Chané
+cak		Kaqchikel
+cal		Carolinian
+cam		Cemuhî
+can		Chambri
+cao		Chácobo
+cap		Chipaya
+caq		Car Nicobarese
+car		Carib
+cas		Tsimané
+cat	ca	Catalan
+cav		Cavineña
+caw		Callawalla
+cax		Chiquitano
+cay		Cayuga
+caz		Canichana
+cbb		Cabiyarí
+cbc		Carapana
+cbd		Carijona
+cbg		Chimila
+cbi		Chachi
+cbj		Ede Cabe
+cbk		Chavacano
+cbl		Bualkhaw Chin
+cbn		Nyahkur
+cbo		Izora
+cbq		Tsucuba
+cbr		Cashibo-Cacataibo
+cbs		Cashinahua
+cbt		Chayahuita
+cbu		Candoshi-Shapra
+cbv		Cacua
+cbw		Kinabalian
+cby		Carabayo
+cca		Cauca
+ccc		Chamicuro
+ccd		Cafundo Creole
+cce		Chopi
+ccg		Samba Daka
+cch		Atsam
+ccj		Kasanga
+ccl		Cutchi-Swahili
+ccm		Malaccan Creole Malay
+cco		Comaltepec Chinantec
+ccp		Chakma
+ccr		Cacaopera
+cda		Choni
+cde		Chenchu
+cdf		Chiru
+cdg		Chamari
+cdh		Chambeali
+cdi		Chodri
+cdj		Churahi
+cdm		Chepang
+cdn		Chaudangsi
+cdo		Min Dong Chinese
+cdr		Cinda-Regi-Tiyal
+cds		Chadian Sign Language
+cdy		Chadong
+cdz		Koda
+cea		Lower Chehalis
+ceb		Cebuano
+ceg		Chamacoco
+cek		Eastern Khumi Chin
+cen		Cen
+ces	cs	Czech
+cet		Centúúm
+cey		Ekai Chin
+cfa		Dijim-Bwilim
+cfd		Cara
+cfg		Como Karim
+cfm		Falam Chin
+cga		Changriwa
+cgc		Kagayanen
+cgg		Chiga
+cgk		Chocangacakha
+cha	ch	Chamorro
+chb		Chibcha
+chc		Catawba
+chd		Highland Oaxaca Chontal
+che	ce	Chechen
+chf		Tabasco Chontal
+chg		Chagatai
+chh		Chinook
+chj		Ojitlán Chinantec
+chk		Chuukese
+chl		Cahuilla
+chm		Mari
+chn		Chinook Jargon
+cho		Choctaw
+chp		Chipewyan
+chq		Quiotepec Chinantec
+chr		Cherokee
+cht		Cholón
+chu	cu	Church Slavic
+chv	cv	Chuvash
+chw		Chuwabu
+chx		Chantyal
+chy		Cheyenne
+chz		Ozumacín Chinantec
+cia		Cia-Cia
+cib		Ci Gbe
+cic		Chickasaw
+cid		Chimariko
+cie		Cineni
+cih		Chinali
+cik		Chitkuli Kinnauri
+cim		Cimbrian
+cin		Cinta Larga
+cip		Chiapanec
+cir		Tiri
+ciw		Chippewa
+ciy		Chaima
+cja		Western Cham
+cje		Chru
+cjh		Upper Chehalis
+cji		Chamalal
+cjk		Chokwe
+cjm		Eastern Cham
+cjn		Chenapian
+cjo		Ashéninka Pajonal
+cjp		Cabécar
+cjs		Shor
+cjv		Chuave
+cjy		Jinyu Chinese
+ckb		Sorani Kurdish
+ckh		Chak
+ckl		Cibak
+ckn		Kaang Chin
+cko		Anufo
+ckq		Kajakse
+ckr		Kairak
+cks		Tayo
+ckt		Chukot
+cku		Koasati
+ckv		Kavalan
+ckx		Caka
+cky		Cakfem-Mushere
+ckz		Cakchiquel-Quiché Mixed Language
+cla		Ron
+clc		Chilcotin
+cld		Chaldean Neo-Aramaic
+cle		Lealao Chinantec
+clh		Chilisso
+cli		Chakali
+clj		Laitu Chin
+clk		Idu-Mishmi
+cll		Chala
+clm		Clallam
+clo		Lowland Oaxaca Chontal
+clt		Lautu Chin
+clu		Caluyanun
+clw		Chulym
+cly		Eastern Highland Chatino
+cma		Maa
+cme		Cerma
+cmg		Classical Mongolian
+cmi		Emberá-Chamí
+cml		Campalagian
+cmm		Michigamea
+cmn		Mandarin Chinese
+cmo		Central Mnong
+cmr		Mro-Khimi Chin
+cms		Messapic
+cmt		Camtho
+cna		Changthang
+cnb		Chinbon Chin
+cnc		Côông
+cng		Northern Qiang
+cnh		Hakha Chin
+cni		Asháninka
+cnk		Khumi Chin
+cnl		Lalana Chinantec
+cno		Con
+cnr		Montenegrin
+cns		Central Asmat
+cnt		Tepetotutla Chinantec
+cnu		Chenoua
+cnw		Ngawn Chin
+cnx		Middle Cornish
+coa		Cocos Islands Malay
+cob		Chicomuceltec
+coc		Cocopa
+cod		Cocama-Cocamilla
+coe		Koreguaje
+cof		Colorado
+cog		Chong
+coh		Chonyi-Dzihana-Kauma
+coj		Cochimi
+cok		Santa Teresa Cora
+col		Columbia-Wenatchi
+com		Comanche
+con		Cofán
+coo		Comox
+cop		Coptic
+coq		Coquille
+cor	kw	Cornish
+cos	co	Corsican
+cot		Caquinte
+cou		Wamey
+cov		Cao Miao
+cow		Cowlitz
+cox		Nanti
+coz		Chochotec
+cpa		Palantla Chinantec
+cpb		Ucayali-Yurúa Ashéninka
+cpc		Ajyíninka Apurucayali
+cpg		Cappadocian Greek
+cpi		Chinese Pidgin English
+cpn		Cherepon
+cpo		Kpeego
+cps		Capiznon
+cpu		Pichis Ashéninka
+cpx		Pu-Xian Chinese
+cpy		South Ucayali Ashéninka
+cqd		Chuanqiandian Cluster Miao
+cra		Chara
+crb		Island Carib
+crc		Lonwolwol
+crd		Coeur d'Alene
+cre	cr	Cree
+crf		Caramanta
+crg		Michif
+crh		Crimean Tatar
+cri		Sãotomense
+crj		Southern East Cree
+crk		Plains Cree
+crl		Northern East Cree
+crm		Moose Cree
+crn		El Nayar Cora
+cro		Crow
+crq		Iyo'wujwa Chorote
+crr		Carolina Algonquian
+crs		Seselwa Creole French
+crt		Iyojwa'ja Chorote
+crv		Chaura
+crw		Chrau
+crx		Carrier
+cry		Cori
+crz		Cruzeño
+csa		Chiltepec Chinantec
+csb		Kashubian
+csc		Catalan Sign Language
+csd		Chiangmai Sign Language
+cse		Czech Sign Language
+csf		Cuba Sign Language
+csg		Chilean Sign Language
+csh		Asho Chin
+csi		Coast Miwok
+csj		Songlai Chin
+csk		Jola-Kasa
+csl		Chinese Sign Language
+csm		Central Sierra Miwok
+csn		Colombian Sign Language
+cso		Sochiapam Chinantec
+csq		Croatia Sign Language
+csr		Costa Rican Sign Language
+css		Southern Ohlone
+cst		Northern Ohlone
+csv		Sumtu Chin
+csw		Swampy Cree
+csy		Siyin Chin
+csz		Coos
+cta		Tataltepec Chatino
+ctc		Chetco
+ctd		Tedim Chin
+cte		Tepinapa Chinantec
+ctg		Chittagonian
+cth		Thaiphum Chin
+ctl		Tlacoatzintepec Chinantec
+ctm		Chitimacha
+ctn		Chhintange
+cto		Emberá-Catío
+ctp		Western Highland Chatino
+cts		Northern Catanduanes Bikol
+ctt		Wayanad Chetti
+ctu		Chol
+ctz		Zacatepec Chatino
+cua		Cua
+cub		Cubeo
+cuc		Usila Chinantec
+cug		Chungmboko
+cuh		Chuka
+cui		Cuiba
+cuj		Mashco Piro
+cuk		San Blas Kuna
+cul		Culina
+cuo		Cumanagoto
+cup		Cupeño
+cuq		Cun
+cur		Chhulung
+cut		Teutila Cuicatec
+cuu		Tai Ya
+cuv		Cuvok
+cuw		Chukwa
+cux		Tepeuxila Cuicatec
+cuy		Cuitlatec
+cvg		Chug
+cvn		Valle Nacional Chinantec
+cwa		Kabwa
+cwb		Maindo
+cwd		Woods Cree
+cwe		Kwere
+cwg		Chewong
+cwt		Kuwaataay
+cya		Nopala Chatino
+cyb		Cayubaba
+cym	cy	Welsh
+cyo		Cuyonon
+czh		Huizhou Chinese
+czk		Knaanic
+czn		Zenzontepec Chatino
+czo		Min Zhong Chinese
+czt		Zotung Chin
+daa		Dangaléat
+dac		Dambi
+dad		Marik
+dae		Duupa
+dag		Dagbani
+dah		Gwahatike
+dai		Day
+daj		Dar Fur Daju
+dak		Dakota
+dal		Dahalo
+dam		Damakawa
+dan	da	Danish
+dao		Daai Chin
+daq		Dandami Maria
+dar		Dargwa
+das		Daho-Doo
+dau		Dar Sila Daju
+dav		Taita
+daw		Davawenyo
+dax		Dayi
+daz		Dao
+dba		Bangime
+dbb		Deno
+dbd		Dadiya
+dbe		Dabe
+dbf		Edopi
+dbg		Dogul Dom Dogon
+dbi		Doka
+dbj		Ida'an
+dbl		Dyirbal
+dbm		Duguri
+dbn		Duriankere
+dbo		Dulbu
+dbp		Duwai
+dbq		Daba
+dbr		Dabarre
+dbt		Ben Tey Dogon
+dbu		Bondum Dom Dogon
+dbv		Dungu
+dbw		Bankan Tey Dogon
+dby		Dibiyaso
+dcc		Deccan
+dcr		Negerhollands
+dda		Dadi Dadi
+ddd		Dongotono
+dde		Doondo
+ddg		Fataluku
+ddi		West Goodenough
+ddj		Jaru
+ddn		Dendi
+ddo		Dido
+ddr		Dhudhuroa
+dds		Donno So Dogon
+ddw		Dawera-Daweloor
+dec		Dagik
+ded		Dedua
+dee		Dewoin
+def		Dezfuli
+deg		Degema
+deh		Dehwari
+dei		Demisa
+dek		Dek
+del		Delaware
+dem		Dem
+den		Slave
+dep		Pidgin Delaware
+deq		Dendi
+der		Deori
+des		Desano
+deu	de	German
+dev		Domung
+dez		Dengese
+dga		Southern Dagaare
+dgb		Bunoge Dogon
+dgc		Casiguran Dumagat Agta
+dgd		Dagaari Dioula
+dge		Degenan
+dgg		Doga
+dgh		Dghwede
+dgi		Northern Dagara
+dgk		Dagba
+dgl		Andaandi
+dgn		Dagoman
+dgo		Dogri
+dgr		Dogrib
+dgs		Dogoso
+dgt		Ndra'ngith
+dgu		Degaru
+dgw		Daungwurrung
+dgx		Doghoro
+dgz		Daga
+dhd		Dhundari
+dhg		Dhangu-Djangu
+dhi		Dhimal
+dhl		Dhalandji
+dhm		Zemba
+dhn		Dhanki
+dho		Dhodia
+dhr		Dhargari
+dhs		Dhaiso
+dhu		Dhurga
+dhv		Dehu
+dhw		Dhanwar
+dhx		Dhungaloo
+dia		Dia
+dib		South Central Dinka
+dic		Lakota Dida
+did		Didinga
+dif		Dieri
+dig		Digo
+dih		Kumiai
+dii		Dimbong
+dij		Dai
+dik		Southwestern Dinka
+dil		Dilling
+dim		Dime
+din		Dinka
+dio		Dibo
+dip		Northeastern Dinka
+diq		Dimli
+dir		Dirim
+dis		Dimasa
+diu		Diriku
+div	dv	Divehi
+diw		Northwestern Dinka
+dix		Dixon Reef
+diy		Diuwe
+diz		Ding
+dja		Djadjawurrung
+djb		Djinba
+djc		Dar Daju Daju
+djd		Djamindjung
+dje		Zarma
+djf		Djangun
+dji		Djinang
+djj		Djeebbana
+djk		Eastern Maroon Creole
+djm		Jamsay Dogon
+djn		Jawoyn
+djo		Jangkang
+djr		Djambarrpuyngu
+dju		Kapriman
+djw		Djawi
+dka		Dakpakha
+dkk		Dakka
+dkr		Kuijau
+dks		Southeastern Dinka
+dkx		Mazagway
+dlg		Dolgan
+dlk		Dahalik
+dlm		Dalmatian
+dln		Darlong
+dma		Duma
+dmb		Mombo Dogon
+dmc		Gavak
+dmd		Madhi Madhi
+dme		Dugwor
+dmg		Upper Kinabatangan
+dmk		Domaaki
+dml		Dameli
+dmm		Dama
+dmo		Kemedzung
+dmr		East Damar
+dms		Dampelas
+dmu		Dubu
+dmv		Dumpas
+dmw		Mudburra
+dmx		Dema
+dmy		Demta
+dna		Upper Grand Valley Dani
+dnd		Daonda
+dne		Ndendeule
+dng		Dungan
+dni		Lower Grand Valley Dani
+dnj		Dan
+dnk		Dengka
+dnn		Dzùùngoo
+dno		Ndrulo
+dnr		Danaru
+dnt		Mid Grand Valley Dani
+dnu		Danau
+dnv		Danu
+dnw		Western Dani
+dny		Dení
+doa		Dom
+dob		Dobu
+doc		Northern Dong
+doe		Doe
+dof		Domu
+doh		Dong
+doi		Dogri
+dok		Dondo
+dol		Doso
+don		Toura
+doo		Dongo
+dop		Lukpa
+doq		Dominican Sign Language
+dor		Dori'o
+dos		Dogosé
+dot		Dass
+dov		Dombe
+dow		Doyayo
+dox		Bussa
+doy		Dompo
+doz		Dorze
+dpp		Papar
+drb		Dair
+drc		Minderico
+drd		Darmiya
+dre		Dolpo
+drg		Rungus
+dri		C'Lela
+drl		Paakantyi
+drn		West Damar
+dro		Daro-Matu Melanau
+drq		Dura
+drr		Dororo
+drs		Gedeo
+drt		Drents
+dru		Rukai
+dry		Darai
+dsb		Lower Sorbian
+dse		Dutch Sign Language
+dsh		Daasanach
+dsi		Disa
+dsl		Danish Sign Language
+dsn		Dusner
+dso		Desiya
+dsq		Tadaksahak
+dta		Daur
+dtb		Labuk-Kinabatangan Kadazan
+dtd		Ditidaht
+dth		Adithinngithigh
+dti		Ana Tinga Dogon
+dtk		Tene Kan Dogon
+dtm		Tomo Kan Dogon
+dtn		Daatsʼíin
+dto		Tommo So Dogon
+dtp		Kadazan Dusun
+dtr		Lotud
+dts		Toro So Dogon
+dtt		Toro Tegu Dogon
+dtu		Tebul Ure Dogon
+dty		Dotyali
+dua		Duala
+dub		Dubli
+duc		Duna
+due		Umiray Dumaget Agta
+duf		Dumbea
+dug		Duruma
+duh		Dungra Bhil
+dui		Dumun
+duk		Uyajitaya
+dul		Alabat Island Agta
+dum		Middle Dutch
+dun		Dusun Deyah
+duo		Dupaninan Agta
+dup		Duano
+duq		Dusun Malang
+dur		Dii
+dus		Dumi
+duu		Drung
+duv		Duvle
+duw		Dusun Witu
+dux		Duungooma
+duy		Dicamay Agta
+duz		Duli-Gey
+dva		Duau
+dwa		Diri
+dwr		Dawro
+dws		Dutton World Speedwords
+dwu		Dhuwal
+dww		Dawawa
+dwy		Dhuwaya
+dwz		Dewas Rai
+dya		Dyan
+dyb		Dyaberdyaber
+dyd		Dyugun
+dyg		Villa Viciosa Agta
+dyi		Djimini Senoufo
+dym		Yanda Dom Dogon
+dyn		Dyangadi
+dyo		Jola-Fonyi
+dyu		Dyula
+dyy		Djabugay
+dza		Tunzu
+dze		Djiwarli
+dzg		Dazaga
+dzl		Dzalakha
+dzn		Dzando
+dzo	dz	Dzongkha
+eaa		Karenggapa
+ebg		Ebughu
+ebk		Eastern Bontok
+ebo		Teke-Ebo
+ebr		Ebrié
+ebu		Embu
+ecr		Eteocretan
+ecs		Ecuadorian Sign Language
+ecy		Eteocypriot
+eee		E
+efa		Efai
+efe		Efe
+efi		Efik
+ega		Ega
+egl		Emilian
+ego		Eggon
+egy		Ancient Egyptian
+ehu		Ehueun
+eip		Eipomek
+eit		Eitiep
+eiv		Askopan
+eja		Ejamat
+eka		Ekajuk
+ekc		Eastern Karnic
+eke		Ekit
+ekg		Ekari
+eki		Eki
+ekk		Standard Estonian
+ekl		Kol
+ekm		Elip
+eko		Koti
+ekp		Ekpeye
+ekr		Yace
+eky		Eastern Kayah
+ele		Elepi
+elh		El Hugeirat
+eli		Nding
+elk		Elkei
+ell	el	Greek
+elm		Eleme
+elo		El Molo
+elu		Elu
+elx		Elamite
+ema		Emai-Iuleha-Ora
+emb		Embaloh
+eme		Emerillon
+emg		Eastern Meohang
+emi		Mussau-Emira
+emk		Eastern Maninkakan
+emm		Mamulique
+emn		Eman
+emp		Northern Emberá
+ems		Pacific Gulf Yupik
+emu		Eastern Muria
+emw		Emplawas
+emx		Erromintxela
+emy		Epigraphic Mayan
+ena		Apali
+enb		Markweeta
+enc		En
+end		Ende
+enf		Forest Enets
+eng	en	English
+enh		Tundra Enets
+enl		Enlhet
+enm		Middle English
+enn		Engenni
+eno		Enggano
+enq		Enga
+enr		Emumu
+enu		Enu
+env		Enwan
+enw		Enwan
+enx		Enxet
+eot		Beti
+epi		Epie
+epo	eo	Esperanto
+era		Eravallan
+erg		Sie
+erh		Eruwa
+eri		Ogea
+erk		South Efate
+ero		Horpa
+err		Erre
+ers		Ersu
+ert		Eritai
+erw		Erokwanas
+ese		Ese Ejja
+esg		Aheri Gondi
+esh		Eshtehardi
+esi		North Alaskan Inupiatun
+esk		Northwest Alaska Inupiatun
+esl		Egypt Sign Language
+esm		Esuma
+esn		Salvadoran Sign Language
+eso		Estonian Sign Language
+esq		Esselen
+ess		Central Siberian Yupik
+est	et	Estonian
+esu		Central Yupik
+esy		Eskayan
+etb		Etebi
+etc		Etchemin
+eth		Ethiopian Sign Language
+etn		Eton
+eto		Eton
+etr		Edolo
+ets		Yekhee
+ett		Etruscan
+etu		Ejagham
+etx		Eten
+etz		Semimi
+eus	eu	Basque
+eve		Even
+evh		Uvbie
+evn		Evenki
+ewe	ee	Ewe
+ewo		Ewondo
+ext		Extremaduran
+eya		Eyak
+eyo		Keiyo
+eza		Ezaa
+eze		Uzekwe
+faa		Fasu
+fab		Fa d'Ambu
+fad		Wagi
+faf		Fagani
+fag		Finongan
+fah		Baissa Fali
+fai		Faiwol
+faj		Faita
+fak		Fang
+fal		South Fali
+fam		Fam
+fan		Fang
+fao	fo	Faroese
+fap		Paloor
+far		Fataleka
+fas	fa	Persian
+fat		Fanti
+fau		Fayu
+fax		Fala
+fay		Southwestern Fars
+faz		Northwestern Fars
+fbl		West Albay Bikol
+fcs		Quebec Sign Language
+fer		Feroge
+ffi		Foia Foia
+ffm		Maasina Fulfulde
+fgr		Fongoro
+fia		Nobiin
+fie		Fyer
+fij	fj	Fijian
+fil		Filipino
+fin	fi	Finnish
+fip		Fipa
+fir		Firan
+fit		Tornedalen Finnish
+fiw		Fiwaga
+fkk		Kirya-Konzəl
+fkv		Kven Finnish
+fla		Kalispel-Pend d'Oreille
+flh		Foau
+fli		Fali
+fll		North Fali
+fln		Flinders Island
+flr		Fuliiru
+fly		Flaaitaal
+fmp		Fe'fe'
+fmu		Far Western Muria
+fnb		Fanbak
+fng		Fanagalo
+fni		Fania
+fod		Foodo
+foi		Foi
+fom		Foma
+fon		Fon
+for		Fore
+fos		Siraya
+fpe		Fernando Po Creole English
+fqs		Fas
+fra	fr	French
+frc		Cajun French
+frd		Fordata
+frk		Frankish
+frm		Middle French
+fro		Old French
+frp		Arpitan
+frq		Forak
+frr		Northern Frisian
+frs		Eastern Frisian
+frt		Fortsenal
+fry	fy	Western Frisian
+fse		Finnish Sign Language
+fsl		French Sign Language
+fss		Finland-Swedish Sign Language
+fub		Adamawa Fulfulde
+fuc		Pulaar
+fud		East Futuna
+fue		Borgu Fulfulde
+fuf		Pular
+fuh		Western Niger Fulfulde
+fui		Bagirmi Fulfulde
+fuj		Ko
+ful	ff	Fulah
+fum		Fum
+fun		Fulniô
+fuq		Central-Eastern Niger Fulfulde
+fur		Friulian
+fut		Futuna-Aniwa
+fuu		Furu
+fuv		Nigerian Fulfulde
+fuy		Fuyug
+fvr		Fur
+fwa		Fwâi
+fwe		Fwe
+gaa		Ga
+gab		Gabri
+gac		Mixed Great Andamanese
+gad		Gaddang
+gae		Guarequena
+gaf		Gende
+gag		Gagauz
+gah		Alekano
+gai		Borei
+gaj		Gadsup
+gak		Gamkonora
+gal		Galolen
+gam		Kandawo
+gan		Gan Chinese
+gao		Gants
+gap		Gal
+gaq		Gata'
+gar		Galeya
+gas		Adiwasi Garasia
+gat		Kenati
+gau		Mudhili Gadaba
+gaw		Nobonob
+gax		Borana-Arsi-Guji Oromo
+gay		Gayo
+gaz		West Central Oromo
+gba		Gbaya
+gbb		Kaytetye
+gbd		Karajarri
+gbe		Niksek
+gbf		Gaikundi
+gbg		Gbanziri
+gbh		Defi Gbe
+gbi		Galela
+gbj		Bodo Gadaba
+gbk		Gaddi
+gbl		Gamit
+gbm		Garhwali
+gbn		Mo'da
+gbo		Northern Grebo
+gbp		Gbaya-Bossangoa
+gbq		Gbaya-Bozoum
+gbr		Gbagyi
+gbs		Gbesi Gbe
+gbu		Gagadu
+gbv		Gbanu
+gbw		Gabi-Gabi
+gbx		Eastern Xwla Gbe
+gby		Gbari
+gbz		Zoroastrian Dari
+gcc		Mali
+gcd		Ganggalida
+gce		Galice
+gcf		Guadeloupean Creole French
+gcl		Grenadian Creole English
+gcn		Gaina
+gcr		Guianese Creole French
+gct		Colonia Tovar German
+gda		Gade Lohar
+gdb		Pottangi Ollar Gadaba
+gdc		Gugu Badhun
+gdd		Gedaged
+gde		Gude
+gdf		Guduf-Gava
+gdg		Ga'dang
+gdh		Gadjerawang
+gdi		Gundi
+gdj		Gurdjar
+gdk		Gadang
+gdl		Dirasha
+gdm		Laal
+gdn		Umanakaina
+gdo		Ghodoberi
+gdq		Mehri
+gdr		Wipi
+gds		Ghandruk Sign Language
+gdt		Kungardutyi
+gdu		Gudu
+gdx		Godwari
+gea		Geruma
+geb		Kire
+gec		Gboloo Grebo
+ged		Gade
+geg		Gengle
+geh		Hutterite German
+gei		Gebe
+gej		Gen
+gek		Ywom
+gel		ut-Ma'in
+geq		Geme
+ges		Geser-Gorom
+gev		Eviya
+gew		Gera
+gex		Garre
+gey		Enya
+gez		Geez
+gfk		Patpatar
+gft		Gafat
+gga		Gao
+ggb		Gbii
+ggd		Gugadj
+gge		Gurr-goni
+ggg		Gurgula
+ggk		Kungarakany
+ggl		Ganglau
+ggt		Gitua
+ggu		Gagu
+ggw		Gogodala
+gha		Ghadamès
+ghc		Hiberno-Scottish Gaelic
+ghe		Southern Ghale
+ghh		Northern Ghale
+ghk		Geko Karen
+ghl		Ghulfan
+ghn		Ghanongga
+gho		Ghomara
+ghr		Ghera
+ghs		Guhu-Samane
+ght		Kuke
+gia		Kija
+gib		Gibanawa
+gic		Gail
+gid		Gidar
+gie		Gaɓogbo
+gig		Goaria
+gih		Githabul
+gil		Gilbertese
+gim		Gimi
+gin		Hinukh
+gip		Gimi
+giq		Green Gelao
+gir		Red Gelao
+gis		North Giziga
+git		Gitxsan
+giu		Mulao
+giw		White Gelao
+gix		Gilima
+giy		Giyug
+giz		South Giziga
+gji		Geji
+gjk		Kachi Koli
+gjm		Gunditjmara
+gjn		Gonja
+gjr		Gurindji Kriol
+gju		Gujari
+gka		Guya
+gkd		Magɨ
+gke		Ndai
+gkn		Gokana
+gko		Kok-Nar
+gkp		Guinea Kpelle
+gku		ǂUngkue
+gla	gd	Scottish Gaelic
+glc		Bon Gula
+gld		Nanai
+gle	ga	Irish
+glg	gl	Galician
+glh		Northwest Pashai
+gli		Guliguli
+glj		Gula Iro
+glk		Gilaki
+gll		Garlali
+glo		Galambu
+glr		Glaro-Twabo
+glu		Gula
+glv	gv	Manx
+glw		Glavda
+gly		Gule
+gma		Gambera
+gmb		Gula'alaa
+gmd		Mághdì
+gmg		Magɨyi
+gmh		Middle High German
+gml		Middle Low German
+gmm		Gbaya-Mbodomo
+gmn		Gimnime
+gmu		Gumalu
+gmv		Gamo
+gmx		Magoma
+gmy		Mycenaean Greek
+gmz		Mgbolizhia
+gna		Kaansa
+gnb		Gangte
+gnc		Guanche
+gnd		Zulgo-Gemzek
+gne		Ganang
+gng		Ngangam
+gnh		Lere
+gni		Gooniyandi
+gnj		Ngen
+gnk		ǁGana
+gnl		Gangulu
+gnm		Ginuman
+gnn		Gumatj
+gno		Northern Gondi
+gnq		Gana
+gnr		Gureng Gureng
+gnt		Guntai
+gnu		Gnau
+gnw		Western Bolivian Guaraní
+gnz		Ganzi
+goa		Guro
+gob		Playero
+goc		Gorakor
+god		Godié
+goe		Gongduk
+gof		Gofa
+gog		Gogo
+goh		Old High German
+goi		Gobasi
+goj		Gowlan
+gok		Gowli
+gol		Gola
+gom		Goan Konkani
+gon		Gondi
+goo		Gone Dau
+gop		Yeretuar
+goq		Gorap
+gor		Gorontalo
+gos		Gronings
+got		Gothic
+gou		Gavar
+gow		Gorowa
+gox		Gobu
+goy		Goundo
+goz		Gozarkhani
+gpa		Gupa-Abawa
+gpe		Ghanaian Pidgin English
+gpn		Taiap
+gqa		Ga'anda
+gqi		Guiqiong
+gqn		Guana
+gqr		Gor
+gqu		Qau
+gra		Rajput Garasia
+grb		Grebo
+grc		Ancient Greek
+grd		Guruntum-Mbaaru
+grg		Madi
+grh		Gbiri-Niragu
+gri		Ghari
+grj		Southern Grebo
+grm		Kota Marudu Talantang
+grn	gn	Guarani
+gro		Groma
+grq		Gorovu
+grr		Taznatit
+grs		Gresi
+grt		Garo
+gru		Kistane
+grv		Central Grebo
+grw		Gweda
+grx		Guriaso
+gry		Barclayville Grebo
+grz		Guramalum
+gse		Ghanaian Sign Language
+gsg		German Sign Language
+gsl		Gusilay
+gsm		Guatemalan Sign Language
+gsn		Nema
+gso		Southwest Gbaya
+gsp		Wasembo
+gss		Greek Sign Language
+gsw		Swiss German
+gta		Guató
+gtu		Aghu-Tharnggala
+gua		Shiki
+gub		Guajajára
+guc		Wayuu
+gud		Yocoboué Dida
+gue		Gurindji
+guf		Gupapuyngu
+gug		Paraguayan Guaraní
+guh		Guahibo
+gui		Eastern Bolivian Guaraní
+guj	gu	Gujarati
+guk		Gumuz
+gul		Sea Island Creole English
+gum		Guambiano
+gun		Mbyá Guaraní
+guo		Guayabero
+gup		Gunwinggu
+guq		Aché
+gur		Farefare
+gus		Guinean Sign Language
+gut		Maléku Jaíka
+guu		Yanomamö
+guw		Gun
+gux		Gourmanchéma
+guz		Gusii
+gva		Guana
+gvc		Guanano
+gve		Duwet
+gvf		Golin
+gvj		Guajá
+gvl		Gulay
+gvm		Gurmana
+gvn		Kuku-Yalanji
+gvo		Gavião Do Jiparaná
+gvp		Pará Gavião
+gvr		Gurung
+gvs		Gumawana
+gvy		Guyani
+gwa		Mbato
+gwb		Gwa
+gwc		Kalami
+gwd		Gawwada
+gwe		Gweno
+gwf		Gowro
+gwg		Moo
+gwi		Gwichʼin
+gwj		ǀGwi
+gwm		Awngthim
+gwn		Gwandara
+gwr		Gwere
+gwt		Gawar-Bati
+gwu		Guwamu
+gww		Kwini
+gwx		Gua
+gxx		Wè Southern
+gya		Northwest Gbaya
+gyb		Garus
+gyd		Kayardild
+gye		Gyem
+gyf		Gungabula
+gyg		Gbayi
+gyi		Gyele
+gyl		Gayil
+gym		Ngäbere
+gyn		Guyanese Creole English
+gyo		Gyalsumdo
+gyr		Guarayu
+gyy		Gunya
+gza		Ganza
+gzi		Gazi
+gzn		Gane
+haa		Han
+hab		Hanoi Sign Language
+hac		Gurani
+had		Hatam
+hae		Eastern Oromo
+haf		Haiphong Sign Language
+hag		Hanga
+hah		Hahon
+hai		Haida
+haj		Hajong
+hak		Hakka Chinese
+hal		Halang
+ham		Hewa
+han		Hangaza
+hao		Hakö
+hap		Hupla
+haq		Ha
+har		Harari
+has		Haisla
+hat	ht	Haitian
+hau	ha	Hausa
+hav		Havu
+haw		Hawaiian
+hax		Southern Haida
+hay		Haya
+haz		Hazaragi
+hba		Hamba
+hbb		Huba
+hbn		Heiban
+hbo		Ancient Hebrew
+hbs	sh	Serbo-Croatian
+hbu		Habu
+hca		Andaman Creole Hindi
+hch		Huichol
+hdn		Northern Haida
+hds		Honduras Sign Language
+hdy		Hadiyya
+hea		Northern Qiandong Miao
+heb	he	Hebrew
+hed		Herdé
+heg		Helong
+heh		Hehe
+hei		Heiltsuk
+hem		Hemba
+her	hz	Herero
+hgm		Haiǁom
+hgw		Haigwai
+hhi		Hoia Hoia
+hhr		Kerak
+hhy		Hoyahoya
+hia		Lamang
+hib		Hibito
+hid		Hidatsa
+hif		Fiji Hindi
+hig		Kamwe
+hih		Pamosu
+hii		Hinduri
+hij		Hijuk
+hik		Seit-Kaitetu
+hil		Hiligaynon
+hin	hi	Hindi
+hio		Tsoa
+hir		Himarimã
+hit		Hittite
+hiw		Hiw
+hix		Hixkaryána
+hji		Haji
+hka		Kahe
+hke		Hunde
+hkk		Hunjara-Kaina Ke
+hkn		Mel-Khaonh
+hks		Hong Kong Sign Language
+hla		Halia
+hlb		Halbi
+hld		Halang Doan
+hle		Hlersu
+hlt		Matu Chin
+hlu		Hieroglyphic Luwian
+hma		Southern Mashan Hmong
+hmb		Humburi Senni Songhay
+hmc		Central Huishui Hmong
+hmd		Large Flowery Miao
+hme		Eastern Huishui Hmong
+hmf		Hmong Don
+hmg		Southwestern Guiyang Hmong
+hmh		Southwestern Huishui Hmong
+hmi		Northern Huishui Hmong
+hmj		Ge
+hmk		Maek
+hml		Luopohe Hmong
+hmm		Central Mashan Hmong
+hmn		Hmong
+hmo	ho	Hiri Motu
+hmp		Northern Mashan Hmong
+hmq		Eastern Qiandong Miao
+hmr		Hmar
+hms		Southern Qiandong Miao
+hmt		Hamtai
+hmu		Hamap
+hmv		Hmong Dô
+hmw		Western Mashan Hmong
+hmy		Southern Guiyang Hmong
+hmz		Hmong Shua
+hna		Mina
+hnd		Southern Hindko
+hne		Chhattisgarhi
+hnh		ǁAni
+hni		Hani
+hnj		Hmong Njua
+hnn		Hanunoo
+hno		Northern Hindko
+hns		Caribbean Hindustani
+hnu		Hung
+hoa		Hoava
+hob		Mari
+hoc		Ho
+hod		Holma
+hoe		Horom
+hoh		Hobyót
+hoi		Holikachuk
+hoj		Hadothi
+hol		Holu
+hom		Homa
+hoo		Holoholo
+hop		Hopi
+hor		Horo
+hos		Ho Chi Minh City Sign Language
+hot		Hote
+hov		Hovongan
+how		Honi
+hoy		Holiya
+hoz		Hozo
+hpo		Hpon
+hps		Hawai'i Sign Language
+hra		Hrangkhol
+hrc		Niwer Mil
+hre		Hre
+hrk		Haruku
+hrm		Horned Miao
+hro		Haroi
+hrp		Nhirrpi
+hrt		Hértevin
+hru		Hruso
+hrv	hr	Croatian
+hrw		Warwar Feni
+hrx		Hunsrik
+hrz		Harzani
+hsb		Upper Sorbian
+hsh		Hungarian Sign Language
+hsl		Hausa Sign Language
+hsn		Xiang Chinese
+hss		Harsusi
+hti		Hoti
+hto		Minica Huitoto
+hts		Hadza
+htu		Hitu
+htx		Middle Hittite
+hub		Huambisa
+huc		ǂHua
+hud		Huaulu
+hue		San Francisco Del Mar Huave
+huf		Humene
+hug		Huachipaeri
+huh		Huilliche
+hui		Huli
+huj		Northern Guiyang Hmong
+huk		Hulung
+hul		Hula
+hum		Hungana
+hun	hu	Hungarian
+huo		Hu
+hup		Hupa
+huq		Tsat
+hur		Halkomelem
+hus		Huastec
+hut		Humla
+huu		Murui Huitoto
+huv		San Mateo Del Mar Huave
+huw		Hukumina
+hux		Nüpode Huitoto
+huy		Hulaulá
+huz		Hunzib
+hvc		Haitian Vodoun Culture Language
+hve		San Dionisio Del Mar Huave
+hvk		Haveke
+hvn		Sabu
+hvv		Santa María Del Mar Huave
+hwa		Wané
+hwc		Hawai'i Creole English
+hwo		Hwana
+hya		Hya
+hye	hy	Armenian
+hyw		Western Armenian
+iai		Iaai
+ian		Iatmul
+iar		Purari
+iba		Iban
+ibb		Ibibio
+ibd		Iwaidja
+ibe		Akpes
+ibg		Ibanag
+ibh		Bih
+ibl		Ibaloi
+ibm		Agoi
+ibn		Ibino
+ibo	ig	Igbo
+ibr		Ibuoro
+ibu		Ibu
+iby		Ibani
+ica		Ede Ica
+ich		Etkywan
+icl		Icelandic Sign Language
+icr		Islander Creole English
+ida		Idakho-Isukha-Tiriki
+idb		Indo-Portuguese
+idc		Idon
+idd		Ede Idaca
+ide		Idere
+idi		Idi
+ido	io	Ido
+idr		Indri
+ids		Idesa
+idt		Idaté
+idu		Idoma
+ifa		Amganad Ifugao
+ifb		Batad Ifugao
+ife		Ifè
+iff		Ifo
+ifk		Tuwali Ifugao
+ifm		Teke-Fuumu
+ifu		Mayoyao Ifugao
+ify		Keley-I Kallahan
+igb		Ebira
+ige		Igede
+igg		Igana
+igl		Igala
+igm		Kanggape
+ign		Ignaciano
+igo		Isebe
+igs		Interglossa
+igw		Igwe
+ihb		Iha Based Pidgin
+ihi		Ihievbe
+ihp		Iha
+ihw		Bidhawal
+iii	ii	Sichuan Yi
+iin		Thiin
+ijc		Izon
+ije		Biseni
+ijj		Ede Ije
+ijn		Kalabari
+ijs		Southeast Ijo
+ike		Eastern Canadian Inuktitut
+iki		Iko
+ikk		Ika
+ikl		Ikulu
+iko		Olulumo-Ikom
+ikp		Ikpeshi
+ikr		Ikaranggal
+iks		Inuit Sign Language
+ikt		Inuinnaqtun
+iku	iu	Inuktitut
+ikv		Iku-Gora-Ankwa
+ikw		Ikwere
+ikx		Ik
+ikz		Ikizu
+ila		Ile Ape
+ilb		Ila
+ile	ie	Interlingue
+ilg		Garig-Ilgar
+ili		Ili Turki
+ilk		Ilongot
+ilm		Iranun
+ilo		Iloko
+ilp		Iranun
+ils		International Sign
+ilu		Ili'uun
+ilv		Ilue
+ima		Mala Malasar
+imi		Anamgura
+iml		Miluk
+imn		Imonda
+imo		Imbongu
+imr		Imroing
+ims		Marsian
+imy		Milyan
+ina	ia	Interlingua
+inb		Inga
+ind	id	Indonesian
+ing		Degexit'an
+inh		Ingush
+inj		Jungle Inga
+inl		Indonesian Sign Language
+inm		Minaean
+inn		Isinai
+ino		Inoke-Yate
+inp		Iñapari
+ins		Indian Sign Language
+int		Intha
+inz		Ineseño
+ior		Inor
+iou		Tuma-Irumu
+iow		Iowa-Oto
+ipi		Ipili
+ipk	ik	Inupiaq
+ipo		Ipiko
+iqu		Iquito
+iqw		Ikwo
+ire		Iresim
+irh		Irarutu
+iri		Rigwe
+irk		Iraqw
+irn		Irántxe
+irr		Ir
+iru		Irula
+irx		Kamberau
+iry		Iraya
+isa		Isabi
+isc		Isconahua
+isd		Isnag
+ise		Italian Sign Language
+isg		Irish Sign Language
+ish		Esan
+isi		Nkem-Nkum
+isk		Ishkashimi
+isl	is	Icelandic
+ism		Masimasi
+isn		Isanzu
+iso		Isoko
+isr		Israeli Sign Language
+ist		Istriot
+isu		Isu
+ita	it	Italian
+itb		Binongan Itneg
+itd		Southern Tidung
+ite		Itene
+iti		Inlaod Itneg
+itk		Judeo-Italian
+itl		Itelmen
+itm		Itu Mbon Uzo
+ito		Itonama
+itr		Iteri
+its		Isekiri
+itt		Maeng Itneg
+itv		Itawit
+itw		Ito
+itx		Itik
+ity		Moyadan Itneg
+itz		Itzá
+ium		Iu Mien
+ivb		Ibatan
+ivv		Ivatan
+iwk		I-Wak
+iwm		Iwam
+iwo		Iwur
+iws		Sepik Iwam
+ixc		Ixcatec
+ixl		Ixil
+iya		Iyayu
+iyo		Mesaka
+iyx		Yaka
+izh		Ingrian
+izr		Izere
+izz		Izii
+jaa		Jamamadí
+jab		Hyam
+jac		Popti'
+jad		Jahanka
+jae		Yabem
+jaf		Jara
+jah		Jah Hut
+jaj		Zazao
+jak		Jakun
+jal		Yalahatan
+jam		Jamaican Creole English
+jan		Jandai
+jao		Yanyuwa
+jaq		Yaqay
+jas		New Caledonian Javanese
+jat		Jakati
+jau		Yaur
+jav	jv	Javanese
+jax		Jambi Malay
+jay		Yan-nhangu
+jaz		Jawe
+jbe		Judeo-Berber
+jbi		Badjiri
+jbj		Arandai
+jbk		Barikewa
+jbn		Nafusi
+jbo		Lojban
+jbr		Jofotek-Bromnya
+jbt		Jabutí
+jbu		Jukun Takum
+jbw		Yawijibaya
+jcs		Jamaican Country Sign Language
+jct		Krymchak
+jda		Jad
+jdg		Jadgali
+jdt		Judeo-Tat
+jeb		Jebero
+jee		Jerung
+jeh		Jeh
+jei		Yei
+jek		Jeri Kuo
+jel		Yelmek
+jen		Dza
+jer		Jere
+jet		Manem
+jeu		Jonkor Bourmataguil
+jgb		Ngbee
+jge		Judeo-Georgian
+jgk		Gwak
+jgo		Ngomba
+jhi		Jehai
+jhs		Jhankot Sign Language
+jia		Jina
+jib		Jibu
+jic		Tol
+jid		Bu
+jie		Jilbe
+jig		Jingulu
+jih		sTodsde
+jii		Jiiddu
+jil		Jilim
+jim		Jimi
+jio		Jiamao
+jiq		Guanyinqiao
+jit		Jita
+jiu		Youle Jinuo
+jiv		Shuar
+jiy		Buyuan Jinuo
+jje		Jejueo
+jjr		Bankal
+jka		Kaera
+jkm		Mobwa Karen
+jko		Kubo
+jkp		Paku Karen
+jkr		Koro
+jku		Labir
+jle		Ngile
+jls		Jamaican Sign Language
+jma		Dima
+jmb		Zumbun
+jmc		Machame
+jmd		Yamdena
+jmi		Jimi
+jml		Jumli
+jmn		Makuri Naga
+jmr		Kamara
+jms		Mashi
+jmw		Mouwase
+jmx		Western Juxtlahuaca Mixtec
+jna		Jangshung
+jnd		Jandavra
+jng		Yangman
+jni		Janji
+jnj		Yemsa
+jnl		Rawat
+jns		Jaunsari
+job		Joba
+jod		Wojenaka
+jog		Jogi
+jor		Jorá
+jos		Jordanian Sign Language
+jow		Jowulu
+jpa		Jewish Palestinian Aramaic
+jpn	ja	Japanese
+jpr		Judeo-Persian
+jqr		Jaqaru
+jra		Jarai
+jrb		Judeo-Arabic
+jrr		Jiru
+jrt		Jorto
+jru		Japrería
+jsl		Japanese Sign Language
+jua		Júma
+jub		Wannu
+juc		Jurchen
+jud		Worodougou
+juh		Hõne
+jui		Ngadjuri
+juk		Wapan
+jul		Jirel
+jum		Jumjum
+jun		Juang
+juo		Jiba
+jup		Hupdë
+jur		Jurúna
+jus		Jumla Sign Language
+jut		Jutish
+juu		Ju
+juw		Wãpha
+juy		Juray
+jvd		Javindo
+jvn		Caribbean Javanese
+jwi		Jwira-Pepesa
+jya		Jiarong
+jye		Judeo-Yemeni Arabic
+jyy		Jaya
+kaa		Kara-Kalpak
+kab		Kabyle
+kac		Kachin
+kad		Adara
+kae		Ketangalan
+kaf		Katso
+kag		Kajaman
+kah		Kara
+kai		Karekare
+kaj		Jju
+kak		Kalanguya
+kal	kl	Kalaallisut
+kam		Kamba
+kan	kn	Kannada
+kao		Xaasongaxango
+kap		Bezhta
+kaq		Capanahua
+kas	ks	Kashmiri
+kat	ka	Georgian
+kau	kr	Kanuri
+kav		Katukína
+kaw		Kawi
+kax		Kao
+kay		Kamayurá
+kaz	kk	Kazakh
+kba		Kalarko
+kbb		Kaxuiâna
+kbc		Kadiwéu
+kbd		Kabardian
+kbe		Kanju
+kbg		Khamba
+kbh		Camsá
+kbi		Kaptiau
+kbj		Kari
+kbk		Grass Koiari
+kbl		Kanembu
+kbm		Iwal
+kbn		Kare
+kbo		Keliko
+kbp		Kabiyè
+kbq		Kamano
+kbr		Kafa
+kbs		Kande
+kbt		Abadi
+kbu		Kabutra
+kbv		Dera
+kbw		Kaiep
+kbx		Ap Ma
+kby		Manga Kanuri
+kbz		Duhwa
+kca		Khanty
+kcb		Kawacha
+kcc		Lubila
+kcd		Ngkâlmpw Kanum
+kce		Kaivi
+kcf		Ukaan
+kcg		Tyap
+kch		Vono
+kci		Kamantan
+kcj		Kobiana
+kck		Kalanga
+kcl		Kela
+kcm		Gula
+kcn		Nubi
+kco		Kinalakna
+kcp		Kanga
+kcq		Kamo
+kcr		Katla
+kcs		Koenoem
+kct		Kaian
+kcu		Kami
+kcv		Kete
+kcw		Kabwari
+kcx		Kachama-Ganjule
+kcy		Korandje
+kcz		Konongo
+kda		Worimi
+kdc		Kutu
+kdd		Yankunytjatjara
+kde		Makonde
+kdf		Mamusi
+kdg		Seba
+kdh		Tem
+kdi		Kumam
+kdj		Karamojong
+kdk		Numèè
+kdl		Tsikimba
+kdm		Kagoma
+kdn		Kunda
+kdp		Kaningdon-Nindem
+kdq		Koch
+kdr		Karaim
+kdt		Kuy
+kdu		Kadaru
+kdw		Koneraw
+kdx		Kam
+kdy		Keder
+kdz		Kwaja
+kea		Kabuverdianu
+keb		Kélé
+kec		Keiga
+ked		Kerewe
+kee		Eastern Keres
+kef		Kpessi
+keg		Tese
+keh		Keak
+kei		Kei
+kej		Kadar
+kek		Kekchí
+kel		Kela
+kem		Kemak
+ken		Kenyang
+keo		Kakwa
+kep		Kaikadi
+keq		Kamar
+ker		Kera
+kes		Kugbo
+ket		Ket
+keu		Akebu
+kev		Kanikkaran
+kew		West Kewa
+kex		Kukna
+key		Kupia
+kez		Kukele
+kfa		Kodava
+kfb		Northwestern Kolami
+kfc		Konda-Dora
+kfd		Korra Koraga
+kfe		Kota
+kff		Koya
+kfg		Kudiya
+kfh		Kurichiya
+kfi		Kannada Kurumba
+kfj		Kemiehua
+kfk		Kinnauri
+kfl		Kung
+kfm		Khunsari
+kfn		Kuk
+kfo		Koro
+kfp		Korwa
+kfq		Korku
+kfr		Kachhi
+kfs		Bilaspuri
+kft		Kanjari
+kfu		Katkari
+kfv		Kurmukar
+kfw		Kharam Naga
+kfx		Kullu Pahari
+kfy		Kumaoni
+kfz		Koromfé
+kga		Koyaga
+kgb		Kawe
+kge		Komering
+kgf		Kube
+kgg		Kusunda
+kgi		Selangor Sign Language
+kgj		Gamale Kham
+kgk		Kaiwá
+kgl		Kunggari
+kgm		Karipúna
+kgn		Karingani
+kgo		Krongo
+kgp		Kaingang
+kgq		Kamoro
+kgr		Abun
+kgs		Kumbainggar
+kgt		Somyev
+kgu		Kobol
+kgv		Karas
+kgw		Karon Dori
+kgx		Kamaru
+kgy		Kyerung
+kha		Khasi
+khb		Lü
+khc		Tukang Besi North
+khd		Bädi Kanum
+khe		Korowai
+khf		Khuen
+khg		Khams Tibetan
+khh		Kehu
+khj		Kuturmi
+khk		Halh Mongolian
+khl		Lusi
+khm	km	Khmer
+khn		Khandesi
+kho		Khotanese
+khp		Kapori
+khq		Koyra Chiini
+khr		Kharia
+khs		Kasua
+kht		Khamti
+khu		Nkhumbi
+khv		Khvarshi
+khw		Khowar
+khx		Kanu
+khy		Kele
+khz		Keapara
+kia		Kim
+kib		Koalib
+kic		Kickapoo
+kid		Koshin
+kie		Kibet
+kif		Eastern Parbate Kham
+kig		Kimaama
+kih		Kilmeri
+kii		Kitsai
+kij		Kilivila
+kik	ki	Kikuyu
+kil		Kariya
+kim		Karagas
+kin	rw	Kinyarwanda
+kio		Kiowa
+kip		Sheshi Kham
+kiq		Kosadle
+kir	ky	Kyrgyz
+kis		Kis
+kit		Agob
+kiu		Kirmanjki
+kiv		Kimbu
+kiw		Northeast Kiwai
+kix		Khiamniungan Naga
+kiy		Kirikiri
+kiz		Kisi
+kja		Mlap
+kjb		Q'anjob'al
+kjc		Coastal Konjo
+kjd		Southern Kiwai
+kje		Kisar
+kjf		Khalaj
+kjg		Khmu
+kjh		Khakas
+kji		Zabana
+kjj		Khinalugh
+kjk		Highland Konjo
+kjl		Western Parbate Kham
+kjm		Kháng
+kjn		Kunjen
+kjo		Harijan Kinnauri
+kjp		Pwo Eastern Karen
+kjq		Western Keres
+kjr		Kurudu
+kjs		East Kewa
+kjt		Phrae Pwo Karen
+kju		Kashaya
+kjv		Kaikavian Literary Language
+kjx		Ramopa
+kjy		Erave
+kjz		Bumthangkha
+kka		Kakanda
+kkb		Kwerisa
+kkc		Odoodee
+kkd		Kinuku
+kke		Kakabe
+kkf		Kalaktang Monpa
+kkg		Mabaka Valley Kalinga
+kkh		Khün
+kki		Kagulu
+kkj		Kako
+kkk		Kokota
+kkl		Kosarek Yale
+kkm		Kiong
+kkn		Kon Keu
+kko		Karko
+kkp		Gugubera
+kkq		Kaiku
+kkr		Kir-Balar
+kks		Giiwo
+kkt		Koi
+kku		Tumi
+kkv		Kangean
+kkw		Teke-Kukuya
+kkx		Kohin
+kky		Guugu Yimidhirr
+kkz		Kaska
+kla		Klamath-Modoc
+klb		Kiliwa
+klc		Kolbila
+kld		Gamilaraay
+kle		Kulung
+klf		Kendeje
+klg		Tagakaulo
+klh		Weliki
+kli		Kalumpang
+klj		Turkic Khalaj
+klk		Kono
+kll		Kagan Kalagan
+klm		Migum
+kln		Kalenjin
+klo		Kapya
+klp		Kamasa
+klq		Rumu
+klr		Khaling
+kls		Kalasha
+klt		Nukna
+klu		Klao
+klv		Maskelynes
+klw		Tado
+klx		Koluwawa
+kly		Kalao
+klz		Kabola
+kma		Konni
+kmb		Kimbundu
+kmc		Southern Dong
+kmd		Majukayang Kalinga
+kme		Bakole
+kmf		Kare
+kmg		Kâte
+kmh		Kalam
+kmi		Kami
+kmj		Kumarbhag Paharia
+kmk		Limos Kalinga
+kml		Tanudan Kalinga
+kmm		Kom
+kmn		Awtuw
+kmo		Kwoma
+kmp		Gimme
+kmq		Kwama
+kmr		Northern Kurdish
+kms		Kamasau
+kmt		Kemtuik
+kmu		Kanite
+kmv		Karipúna Creole French
+kmw		Komo
+kmx		Waboda
+kmy		Koma
+kmz		Khorasani Turkish
+kna		Dera
+knb		Lubuagan Kalinga
+knc		Central Kanuri
+knd		Konda
+kne		Kankanaey
+knf		Mankanya
+kng		Koongo
+kni		Kanufi
+knj		Western Kanjobal
+knk		Kuranko
+knl		Keninjal
+knm		Kanamarí
+knn		Konkani
+kno		Kono
+knp		Kwanja
+knq		Kintaq
+knr		Kaningra
+kns		Kensiu
+knt		Panoan Katukína
+knu		Kono
+knv		Tabo
+knw		Kung-Ekoka
+knx		Kendayan
+kny		Kanyok
+knz		Kalamsé
+koa		Konomala
+koc		Kpati
+kod		Kodi
+koe		Kacipo-Balesi
+kof		Kubi
+kog		Cogui
+koh		Koyo
+koi		Komi-Permyak
+kok		Konkani
+kol		Kol
+kom	kv	Komi
+kon	kg	Kongo
+koo		Konzo
+kop		Waube
+koq		Kota
+kor	ko	Korean
+kos		Kosraean
+kot		Lagwan
+kou		Koke
+kov		Kudu-Camo
+kow		Kugama
+koy		Koyukon
+koz		Korak
+kpa		Kutto
+kpb		Mullu Kurumba
+kpc		Curripaco
+kpd		Koba
+kpe		Kpelle
+kpf		Komba
+kpg		Kapingamarangi
+kph		Kplang
+kpi		Kofei
+kpj		Karajá
+kpk		Kpan
+kpl		Kpala
+kpm		Koho
+kpn		Kepkiriwát
+kpo		Ikposo
+kpq		Korupun-Sela
+kpr		Korafe-Yegha
+kps		Tehit
+kpt		Karata
+kpu		Kafoa
+kpv		Komi-Zyrian
+kpw		Kobon
+kpx		Mountain Koiali
+kpy		Koryak
+kpz		Kupsabiny
+kqa		Mum
+kqb		Kovai
+kqc		Doromu-Koki
+kqd		Koy Sanjaq Surat
+kqe		Kalagan
+kqf		Kakabai
+kqg		Khe
+kqh		Kisankasa
+kqi		Koitabu
+kqj		Koromira
+kqk		Kotafon Gbe
+kql		Kyenele
+kqm		Khisa
+kqn		Kaonde
+kqo		Eastern Krahn
+kqp		Kimré
+kqq		Krenak
+kqr		Kimaragang
+kqs		Northern Kissi
+kqt		Klias River Kadazan
+kqu		Seroa
+kqv		Okolod
+kqw		Kandas
+kqx		Mser
+kqy		Koorete
+kqz		Korana
+kra		Kumhali
+krb		Karkin
+krc		Karachay-Balkar
+krd		Kairui-Midiki
+kre		Panará
+krf		Koro
+krh		Kurama
+kri		Krio
+krj		Kinaray-A
+krk		Kerek
+krl		Karelian
+krn		Sapo
+krp		Korop
+krr		Krung
+krs		Gbaya
+krt		Tumari Kanuri
+kru		Kurukh
+krv		Kavet
+krw		Western Krahn
+krx		Karon
+kry		Kryts
+krz		Sota Kanum
+ksa		Shuwa-Zamani
+ksb		Shambala
+ksc		Southern Kalinga
+ksd		Kuanua
+kse		Kuni
+ksf		Bafia
+ksg		Kusaghe
+ksh		Colognian
+ksi		Krisa
+ksj		Uare
+ksk		Kansa
+ksl		Kumalu
+ksm		Kumba
+ksn		Kasiguranin
+kso		Kofa
+ksp		Kaba
+ksq		Kwaami
+ksr		Borong
+kss		Southern Kisi
+kst		Winyé
+ksu		Khamyang
+ksv		Kusu
+ksw		S'gaw Karen
+ksx		Kedang
+ksy		Kharia Thar
+ksz		Kodaku
+kta		Katua
+ktb		Kambaata
+ktc		Kholok
+ktd		Kokata
+kte		Nubri
+ktf		Kwami
+ktg		Kalkutung
+kth		Karanga
+kti		North Muyu
+ktj		Plapo Krumen
+ktk		Kaniet
+ktl		Koroshi
+ktm		Kurti
+ktn		Karitiâna
+kto		Kuot
+ktp		Kaduo
+ktq		Katabaga
+kts		South Muyu
+ktt		Ketum
+ktu		Kituba
+ktv		Eastern Katu
+ktw		Kato
+ktx		Kaxararí
+kty		Kango
+ktz		Juǀʼhoan
+kua	kj	Kuanyama
+kub		Kutep
+kuc		Kwinsu
+kud		'Auhelawa
+kue		Kuman
+kuf		Western Katu
+kug		Kupa
+kuh		Kushi
+kui		Kuikúro-Kalapálo
+kuj		Kuria
+kuk		Kepo'
+kul		Kulere
+kum		Kumyk
+kun		Kunama
+kuo		Kumukio
+kup		Kunimaipa
+kuq		Karipuna
+kur	ku	Kurdish
+kus		Kusaal
+kut		Kutenai
+kuu		Upper Kuskokwim
+kuv		Kur
+kuw		Kpagua
+kux		Kukatja
+kuy		Kuuku-Ya'u
+kuz		Kunza
+kva		Bagvalal
+kvb		Kubu
+kvc		Kove
+kvd		Kui
+kve		Kalabakan
+kvf		Kabalai
+kvg		Kuni-Boazi
+kvh		Komodo
+kvi		Kwang
+kvj		Psikye
+kvk		Korean Sign Language
+kvl		Kayaw
+kvm		Kendem
+kvn		Border Kuna
+kvo		Dobel
+kvp		Kompane
+kvq		Geba Karen
+kvr		Kerinci
+kvt		Lahta Karen
+kvu		Yinbaw Karen
+kvv		Kola
+kvw		Wersing
+kvx		Parkari Koli
+kvy		Yintale Karen
+kvz		Tsakwambo
+kwa		Dâw
+kwb		Kwa
+kwc		Likwala
+kwd		Kwaio
+kwe		Kwerba
+kwf		Kwara'ae
+kwg		Sara Kaba Deme
+kwh		Kowiai
+kwi		Awa-Cuaiquer
+kwj		Kwanga
+kwk		Kwakiutl
+kwl		Kofyar
+kwm		Kwambi
+kwn		Kwangali
+kwo		Kwomtari
+kwp		Kodia
+kwr		Kwer
+kws		Kwese
+kwt		Kwesten
+kwu		Kwakum
+kwv		Sara Kaba Náà
+kww		Kwinti
+kwx		Khirwar
+kwy		San Salvador Kongo
+kwz		Kwadi
+kxa		Kairiru
+kxb		Krobu
+kxc		Konso
+kxd		Brunei
+kxf		Manumanaw Karen
+kxh		Karo
+kxi		Keningau Murut
+kxj		Kulfa
+kxk		Zayein Karen
+kxl		Nepali Kurux
+kxm		Northern Khmer
+kxn		Kanowit-Tanjong Melanau
+kxo		Kanoé
+kxp		Wadiyara Koli
+kxq		Smärky Kanum
+kxr		Koro
+kxs		Kangjia
+kxt		Koiwat
+kxu		Kui
+kxv		Kuvi
+kxw		Konai
+kxx		Likuba
+kxy		Kayong
+kxz		Kerewo
+kya		Kwaya
+kyb		Butbut Kalinga
+kyc		Kyaka
+kyd		Karey
+kye		Krache
+kyf		Kouya
+kyg		Keyagana
+kyh		Karok
+kyi		Kiput
+kyj		Karao
+kyk		Kamayo
+kyl		Kalapuya
+kym		Kpatili
+kyn		Northern Binukidnon
+kyo		Kelon
+kyp		Kang
+kyq		Kenga
+kyr		Kuruáya
+kys		Baram Kayan
+kyt		Kayagar
+kyu		Western Kayah
+kyv		Kayort
+kyw		Kudmali
+kyx		Rapoisi
+kyy		Kambaira
+kyz		Kayabí
+kza		Western Karaboro
+kzb		Kaibobo
+kzc		Bondoukou Kulango
+kzd		Kadai
+kze		Kosena
+kzf		Da'a Kaili
+kzg		Kikai
+kzi		Kelabit
+kzk		Kazukuru
+kzl		Kayeli
+kzm		Kais
+kzn		Kokola
+kzo		Kaningi
+kzp		Kaidipang
+kzq		Kaike
+kzr		Karang
+kzs		Sugut Dusun
+kzu		Kayupulau
+kzv		Komyandaret
+kzw		Karirí-Xocó
+kzx		Kamarian
+kzy		Kango
+kzz		Kalabra
+laa		Southern Subanen
+lab		Linear A
+lac		Lacandon
+lad		Ladino
+lae		Pattani
+laf		Lafofa
+lag		Langi
+lah		Lahnda
+lai		Lambya
+laj		Lango
+lak		Laka
+lal		Lalia
+lam		Lamba
+lan		Laru
+lao	lo	Lao
+lap		Laka
+laq		Qabiao
+lar		Larteh
+las		Lama
+lat	la	Latin
+lau		Laba
+lav	lv	Latvian
+law		Lauje
+lax		Tiwa
+lay		Lama Bai
+laz		Aribwatsa
+lbb		Label
+lbc		Lakkia
+lbe		Lak
+lbf		Tinani
+lbg		Laopang
+lbi		La'bi
+lbj		Ladakhi
+lbk		Central Bontok
+lbl		Libon Bikol
+lbm		Lodhi
+lbn		Rmeet
+lbo		Laven
+lbq		Wampar
+lbr		Lohorung
+lbs		Libyan Sign Language
+lbt		Lachi
+lbu		Labu
+lbv		Lavatbura-Lamusong
+lbw		Tolaki
+lbx		Lawangan
+lby		Lamalama
+lbz		Lardil
+lcc		Legenyem
+lcd		Lola
+lce		Loncong
+lcf		Lubu
+lch		Luchazi
+lcl		Lisela
+lcm		Tungag
+lcp		Western Lawa
+lcq		Luhu
+lcs		Lisabata-Nuniali
+lda		Kla-Dan
+ldb		Dũya
+ldd		Luri
+ldg		Lenyima
+ldh		Lamja-Dengsa-Tola
+ldi		Laari
+ldj		Lemoro
+ldk		Leelau
+ldl		Kaan
+ldm		Landoma
+ldn		Láadan
+ldo		Loo
+ldp		Tso
+ldq		Lufu
+lea		Lega-Shabunda
+leb		Lala-Bisa
+lec		Leco
+led		Lendu
+lee		Lyélé
+lef		Lelemi
+leh		Lenje
+lei		Lemio
+lej		Lengola
+lek		Leipon
+lel		Lele
+lem		Nomaande
+len		Lenca
+leo		Leti
+lep		Lepcha
+leq		Lembena
+ler		Lenkau
+les		Lese
+let		Lesing-Gelimi
+leu		Kara
+lev		Lamma
+lew		Ledo Kaili
+lex		Luang
+ley		Lemolang
+lez		Lezghian
+lfa		Lefa
+lfn		Lingua Franca Nova
+lga		Lungga
+lgb		Laghu
+lgg		Lugbara
+lgh		Laghuu
+lgi		Lengilu
+lgk		Lingarak
+lgl		Wala
+lgm		Lega-Mwenga
+lgn		T'apo
+lgq		Logba
+lgr		Lengo
+lgt		Pahi
+lgu		Longgu
+lgz		Ligenza
+lha		Laha
+lhh		Laha
+lhi		Lahu Shi
+lhl		Lahul Lohar
+lhm		Lhomi
+lhn		Lahanan
+lhp		Lhokpu
+lhs		Mlahsö
+lht		Lo-Toga
+lhu		Lahu
+lia		West-Central Limba
+lib		Likum
+lic		Hlai
+lid		Nyindrou
+lie		Likila
+lif		Limbu
+lig		Ligbi
+lih		Lihir
+lij		Ligurian
+lik		Lika
+lil		Lillooet
+lim	li	Limburgish
+lin	ln	Lingala
+lio		Liki
+lip		Sekpele
+liq		Libido
+lir		Liberian English
+lis		Lisu
+lit	lt	Lithuanian
+liu		Logorik
+liv		Liv
+liw		Col
+lix		Liabuku
+liy		Banda-Bambari
+liz		Libinza
+lja		Golpa
+lje		Rampi
+lji		Laiyolo
+ljl		Li'o
+ljp		Lampung Api
+ljw		Yirandali
+ljx		Yuru
+lka		Lakalei
+lkb		Kabras
+lkc		Kucong
+lkd		Lakondê
+lke		Kenyi
+lkh		Lakha
+lki		Laki
+lkj		Remun
+lkl		Laeko-Libuat
+lkm		Kalaamaya
+lkn		Lakon
+lko		Khayo
+lkr		Päri
+lks		Kisa
+lkt		Lakota
+lku		Kungkari
+lky		Lokoya
+lla		Lala-Roba
+llb		Lolo
+llc		Lele
+lld		Ladin
+lle		Lele
+llf		Hermit
+llg		Lole
+llh		Lamu
+lli		Teke-Laali
+llj		Ladji Ladji
+llk		Lelak
+lll		Lilau
+llm		Lasalimu
+lln		Lele
+llp		North Efate
+llq		Lolak
+lls		Lithuanian Sign Language
+llu		Lau
+llx		Lauan
+lma		East Limba
+lmb		Merei
+lmc		Limilngan
+lmd		Lumun
+lme		Pévé
+lmf		South Lembata
+lmg		Lamogai
+lmh		Lambichhong
+lmi		Lombi
+lmj		West Lembata
+lmk		Lamkang
+lml		Hano
+lmn		Lambadi
+lmo		Lombard
+lmp		Limbum
+lmq		Lamatuka
+lmr		Lamalera
+lmu		Lamenu
+lmv		Lomaiviti
+lmw		Lake Miwok
+lmx		Laimbue
+lmy		Lamboya
+lmz		Lumbee
+lna		Langbashe
+lnb		Mbalanhu
+lnd		Lundayeh
+lng		Langobardic
+lnh		Lanoh
+lni		Daantanai'
+lnj		Leningitij
+lnl		South Central Banda
+lnm		Langam
+lnn		Lorediakarkar
+lno		Lango
+lns		Lamnso'
+lnu		Longuda
+lnw		Lanima
+lnz		Lonzo
+loa		Loloda
+lob		Lobi
+loc		Inonhan
+loe		Saluan
+lof		Logol
+log		Logo
+loh		Narim
+loi		Loma
+loj		Lou
+lok		Loko
+lol		Mongo
+lom		Loma
+lon		Malawi Lomwe
+loo		Lombo
+lop		Lopa
+loq		Lobala
+lor		Téén
+los		Loniu
+lot		Otuho
+lou		Louisiana Creole
+lov		Lopi
+low		Tampias Lobu
+lox		Loun
+loy		Loke
+loz		Lozi
+lpa		Lelepa
+lpe		Lepki
+lpn		Long Phuri Naga
+lpo		Lipo
+lpx		Lopit
+lra		Rara Bakati'
+lrc		Northern Luri
+lre		Laurentian
+lrg		Laragia
+lri		Marachi
+lrk		Loarki
+lrl		Lari
+lrm		Marama
+lrn		Lorang
+lro		Laro
+lrr		Southern Yamphu
+lrt		Larantuka Malay
+lrv		Larevat
+lrz		Lemerig
+lsa		Lasgerdi
+lsd		Lishana Deni
+lse		Lusengo
+lsh		Lish
+lsi		Lashi
+lsl		Latvian Sign Language
+lsm		Saamia
+lsn		Tibetan Sign Language
+lso		Laos Sign Language
+lsp		Panamanian Sign Language
+lsr		Aruop
+lss		Lasi
+lst		Trinidad and Tobago Sign Language
+lsv		Sivia Sign Language
+lsy		Mauritian Sign Language
+ltc		Late Middle Chinese
+ltg		Latgalian
+lth		Thur
+lti		Leti
+ltn		Latundê
+lto		Tsotso
+lts		Tachoni
+ltu		Latu
+ltz	lb	Luxembourgish
+lua		Luba-Lulua
+lub	lu	Luba-Katanga
+luc		Aringa
+lud		Ludian
+lue		Luvale
+luf		Laua
+lug	lg	Ganda
+lui		Luiseno
+luj		Luna
+luk		Lunanakha
+lul		Olu'bo
+lum		Luimbi
+lun		Lunda
+luo		Luo
+lup		Lumbu
+luq		Lucumi
+lur		Laura
+lus		Mizo
+lut		Lushootseed
+luu		Lumba-Yakkha
+luv		Luwati
+luw		Luo
+luy		Luyia
+luz		Southern Luri
+lva		Maku'a
+lvi		Lavi
+lvk		Lavukaleve
+lvs		Standard Latvian
+lvu		Levuka
+lwa		Lwalu
+lwe		Lewo Eleng
+lwg		Wanga
+lwh		White Lachi
+lwl		Eastern Lawa
+lwm		Laomian
+lwo		Luwo
+lws		Malawian Sign Language
+lwt		Lewotobi
+lwu		Lawu
+lww		Lewo
+lya		Layakha
+lyg		Lyngngam
+lyn		Luyana
+lzh		Literary Chinese
+lzl		Litzlitz
+lzn		Leinong Naga
+lzz		Laz
+maa		San Jerónimo Tecóatl Mazatec
+mab		Yutanduchi Mixtec
+mad		Madurese
+mae		Bo-Rukul
+maf		Mafa
+mag		Magahi
+mah	mh	Marshallese
+mai		Maithili
+maj		Jalapa De Díaz Mazatec
+mak		Makasar
+mal	ml	Malayalam
+mam		Mam
+man		Mandingo
+maq		Chiquihuitlán Mazatec
+mar	mr	Marathi
+mas		Masai
+mat		San Francisco Matlatzinca
+mau		Huautla Mazatec
+mav		Sateré-Mawé
+maw		Mampruli
+max		North Moluccan Malay
+maz		Central Mazahua
+mba		Higaonon
+mbb		Western Bukidnon Manobo
+mbc		Macushi
+mbd		Dibabawon Manobo
+mbe		Molale
+mbf		Baba Malay
+mbh		Mangseng
+mbi		Ilianen Manobo
+mbj		Nadëb
+mbk		Malol
+mbl		Maxakalí
+mbm		Ombamba
+mbn		Macaguán
+mbo		Mbo
+mbp		Malayo
+mbq		Maisin
+mbr		Nukak Makú
+mbs		Sarangani Manobo
+mbt		Matigsalug Manobo
+mbu		Mbula-Bwazza
+mbv		Mbulungish
+mbw		Maring
+mbx		Mari
+mby		Memoni
+mbz		Amoltepec Mixtec
+mca		Maca
+mcb		Machiguenga
+mcc		Bitur
+mcd		Sharanahua
+mce		Itundujia Mixtec
+mcf		Matsés
+mcg		Mapoyo
+mch		Maquiritari
+mci		Mese
+mcj		Mvanip
+mck		Mbunda
+mcl		Macaguaje
+mcm		Malaccan Creole Portuguese
+mcn		Masana
+mco		Coatlán Mixe
+mcp		Makaa
+mcq		Ese
+mcr		Menya
+mcs		Mambai
+mct		Mengisa
+mcu		Cameroon Mambila
+mcv		Minanibai
+mcw		Mawa
+mcx		Mpiemo
+mcy		South Watut
+mcz		Mawan
+mda		Mada
+mdb		Morigi
+mdc		Male
+mdd		Mbum
+mde		Maba
+mdf		Moksha
+mdg		Massalat
+mdh		Maguindanaon
+mdi		Mamvu
+mdj		Mangbetu
+mdk		Mangbutu
+mdl		Maltese Sign Language
+mdm		Mayogo
+mdn		Mbati
+mdp		Mbala
+mdq		Mbole
+mdr		Mandar
+mds		Maria
+mdt		Mbere
+mdu		Mboko
+mdv		Santa Lucía Monteverde Mixtec
+mdw		Mbosi
+mdx		Dizin
+mdy		Male
+mdz		Suruí Do Pará
+mea		Menka
+meb		Ikobi
+mec		Marra
+med		Melpa
+mee		Mengen
+mef		Megam
+meh		Southwestern Tlaxiaco Mixtec
+mei		Midob
+mej		Meyah
+mek		Mekeo
+mel		Central Melanau
+mem		Mangala
+men		Mende
+meo		Kedah Malay
+mep		Miriwoong
+meq		Merey
+mer		Meru
+mes		Masmaje
+met		Mato
+meu		Motu
+mev		Mano
+mew		Maaka
+mey		Hassaniyya
+mez		Menominee
+mfa		Pattani Malay
+mfb		Bangka
+mfc		Mba
+mfd		Mendankwe-Nkwen
+mfe		Morisyen
+mff		Naki
+mfg		Mogofin
+mfh		Matal
+mfi		Wandala
+mfj		Mefele
+mfk		North Mofu
+mfl		Putai
+mfm		Marghi South
+mfn		Cross River Mbembe
+mfo		Mbe
+mfp		Makassar Malay
+mfq		Moba
+mfr		Marrithiyel
+mfs		Mexican Sign Language
+mft		Mokerang
+mfu		Mbwela
+mfv		Mandjak
+mfw		Mulaha
+mfx		Melo
+mfy		Mayo
+mfz		Mabaan
+mga		Middle Irish
+mgb		Mararit
+mgc		Morokodo
+mgd		Moru
+mge		Mango
+mgf		Maklew
+mgg		Mpumpong
+mgh		Makhuwa-Meetto
+mgi		Lijili
+mgj		Abureni
+mgk		Mawes
+mgl		Maleu-Kilenge
+mgm		Mambae
+mgn		Mbangi
+mgo		Meta'
+mgp		Eastern Magar
+mgq		Malila
+mgr		Mambwe-Lungu
+mgs		Manda
+mgt		Mongol
+mgu		Mailu
+mgv		Matengo
+mgw		Matumbi
+mgy		Mbunga
+mgz		Mbugwe
+mha		Manda
+mhb		Mahongwe
+mhc		Mocho
+mhd		Mbugu
+mhe		Besisi
+mhf		Mamaa
+mhg		Margu
+mhi		Ma'di
+mhj		Mogholi
+mhk		Mungaka
+mhl		Mauwake
+mhm		Makhuwa-Moniga
+mhn		Mócheno
+mho		Mashi
+mhp		Balinese Malay
+mhq		Mandan
+mhr		Eastern Mari
+mhs		Buru
+mht		Mandahuaca
+mhu		Digaro-Mishmi
+mhw		Mbukushu
+mhx		Maru
+mhy		Ma'anyan
+mhz		Mor
+mia		Miami
+mib		Atatláhuca Mixtec
+mic		Micmac
+mid		Mandaic
+mie		Ocotepec Mixtec
+mif		Mofu-Gudur
+mig		San Miguel El Grande Mixtec
+mih		Chayuco Mixtec
+mii		Chigmecatitlán Mixtec
+mij		Abar
+mik		Mikasuki
+mil		Peñoles Mixtec
+mim		Alacatlatzala Mixtec
+min		Minangkabau
+mio		Pinotepa Nacional Mixtec
+mip		Apasco-Apoala Mixtec
+miq		Mískito
+mir		Isthmus Mixe
+mis		Uncoded languages
+mit		Southern Puebla Mixtec
+miu		Cacaloxtepec Mixtec
+miw		Akoye
+mix		Mixtepec Mixtec
+miy		Ayutla Mixtec
+miz		Coatzospan Mixtec
+mjb		Makalero
+mjc		San Juan Colorado Mixtec
+mjd		Northwest Maidu
+mje		Muskum
+mjg		Tu
+mjh		Mwera
+mji		Kim Mun
+mjj		Mawak
+mjk		Matukar
+mjl		Mandeali
+mjm		Medebur
+mjn		Ma
+mjo		Malankuravan
+mjp		Malapandaram
+mjq		Malaryan
+mjr		Malavedan
+mjs		Miship
+mjt		Sauria Paharia
+mju		Manna-Dora
+mjv		Mannan
+mjw		Karbi
+mjx		Mahali
+mjy		Mahican
+mjz		Majhi
+mka		Mbre
+mkb		Mal Paharia
+mkc		Siliput
+mkd	mk	Macedonian
+mke		Mawchi
+mkf		Miya
+mkg		Mak
+mki		Dhatki
+mkj		Mokilese
+mkk		Byep
+mkl		Mokole
+mkm		Moklen
+mkn		Kupang Malay
+mko		Mingang Doso
+mkp		Moikodi
+mkq		Bay Miwok
+mkr		Malas
+mks		Silacayoapan Mixtec
+mkt		Vamale
+mku		Konyanka Maninka
+mkv		Mafea
+mkw		Kituba
+mkx		Kinamiging Manobo
+mky		East Makian
+mkz		Makasae
+mla		Malo
+mlb		Mbule
+mlc		Cao Lan
+mle		Manambu
+mlf		Mal
+mlg	mg	Malagasy
+mlh		Mape
+mli		Malimpung
+mlj		Miltu
+mlk		Ilwana
+mll		Malua Bay
+mlm		Mulam
+mln		Malango
+mlo		Mlomp
+mlp		Bargam
+mlq		Western Maninkakan
+mlr		Vame
+mls		Masalit
+mlt	mt	Maltese
+mlu		To'abaita
+mlv		Motlav
+mlw		Moloko
+mlx		Malfaxal
+mlz		Malaynon
+mma		Mama
+mmb		Momina
+mmc		Michoacán Mazahua
+mmd		Maonan
+mme		Mae
+mmf		Mundat
+mmg		North Ambrym
+mmh		Mehináku
+mmi		Musar
+mmj		Majhwar
+mmk		Mukha-Dora
+mml		Man Met
+mmm		Maii
+mmn		Mamanwa
+mmo		Mangga Buang
+mmp		Siawi
+mmq		Musak
+mmr		Western Xiangxi Miao
+mmt		Malalamai
+mmu		Mmaala
+mmv		Miriti
+mmw		Emae
+mmx		Madak
+mmy		Migaama
+mmz		Mabaale
+mna		Mbula
+mnb		Muna
+mnc		Manchu
+mnd		Mondé
+mne		Naba
+mnf		Mundani
+mng		Eastern Mnong
+mnh		Mono
+mni		Manipuri
+mnj		Munji
+mnk		Mandinka
+mnl		Tiale
+mnm		Mapena
+mnn		Southern Mnong
+mnp		Min Bei Chinese
+mnq		Minriq
+mnr		Mono
+mns		Mansi
+mnu		Mer
+mnv		Rennell-Bellona
+mnw		Mon
+mnx		Manikion
+mny		Manyawa
+mnz		Moni
+moa		Mwan
+moc		Mocoví
+mod		Mobilian
+moe		Montagnais
+mog		Mongondow
+moh		Mohawk
+moi		Mboi
+moj		Monzombo
+mok		Morori
+mom		Mangue
+mon	mn	Mongolian
+moo		Monom
+mop		Mopán Maya
+moq		Mor
+mor		Moro
+mos		Mossi
+mot		Barí
+mou		Mogum
+mov		Mohave
+mow		Moi
+mox		Molima
+moy		Shekkacho
+moz		Mukulu
+mpa		Mpoto
+mpb		Malak Malak
+mpc		Mangarrayi
+mpd		Machinere
+mpe		Majang
+mpg		Marba
+mph		Maung
+mpi		Mpade
+mpj		Martu Wangka
+mpk		Mbara
+mpl		Middle Watut
+mpm		Yosondúa Mixtec
+mpn		Mindiri
+mpo		Miu
+mpp		Migabac
+mpq		Matís
+mpr		Vangunu
+mps		Dadibi
+mpt		Mian
+mpu		Makuráp
+mpv		Mungkip
+mpw		Mapidian
+mpx		Misima-Panaeati
+mpy		Mapia
+mpz		Mpi
+mqa		Maba
+mqb		Mbuko
+mqc		Mangole
+mqe		Matepi
+mqf		Momuna
+mqg		Kota Bangun Kutai Malay
+mqh		Tlazoyaltepec Mixtec
+mqi		Mariri
+mqj		Mamasa
+mqk		Rajah Kabunsuwan Manobo
+mql		Mbelime
+mqm		South Marquesan
+mqn		Moronene
+mqo		Modole
+mqp		Manipa
+mqq		Minokok
+mqr		Mander
+mqs		West Makian
+mqt		Mok
+mqu		Mandari
+mqv		Mosimo
+mqw		Murupi
+mqx		Mamuju
+mqy		Manggarai
+mqz		Pano
+mra		Mlabri
+mrb		Marino
+mrc		Maricopa
+mrd		Western Magar
+mre		Martha's Vineyard Sign Language
+mrf		Elseng
+mrg		Mising
+mrh		Mara Chin
+mri	mi	Maori
+mrj		Western Mari
+mrk		Hmwaveke
+mrl		Mortlockese
+mrm		Merlav
+mrn		Cheke Holo
+mro		Mru
+mrp		Morouas
+mrq		North Marquesan
+mrr		Maria
+mrs		Maragus
+mrt		Marghi Central
+mru		Mono
+mrv		Mangareva
+mrw		Maranao
+mrx		Maremgi
+mry		Mandaya
+mrz		Marind
+msa	ms	Malay
+msb		Masbatenyo
+msc		Sankaran Maninka
+msd		Yucatec Maya Sign Language
+mse		Musey
+msf		Mekwei
+msg		Moraid
+msh		Masikoro Malagasy
+msi		Sabah Malay
+msj		Ma
+msk		Mansaka
+msl		Molof
+msm		Agusan Manobo
+msn		Vurës
+mso		Mombum
+msp		Maritsauá
+msq		Caac
+msr		Mongolian Sign Language
+mss		West Masela
+msu		Musom
+msv		Maslam
+msw		Mansoanka
+msx		Moresada
+msy		Aruamu
+msz		Momare
+mta		Cotabato Manobo
+mtb		Anyin Morofo
+mtc		Munit
+mtd		Mualang
+mte		Mono
+mtf		Murik
+mtg		Una
+mth		Munggui
+mti		Maiwa
+mtj		Moskona
+mtk		Mbe'
+mtl		Montol
+mtm		Mator
+mtn		Matagalpa
+mto		Totontepec Mixe
+mtp		Wichí Lhamtés Nocten
+mtq		Muong
+mtr		Mewari
+mts		Yora
+mtt		Mota
+mtu		Tututepec Mixtec
+mtv		Asaro'o
+mtw		Southern Binukidnon
+mtx		Tidaá Mixtec
+mty		Nabi
+mua		Mundang
+mub		Mubi
+muc		Ajumbu
+mud		Mednyj Aleut
+mue		Media Lengua
+mug		Musgu
+muh		Mündü
+mui		Musi
+muj		Mabire
+muk		Mugom
+mul		Multiple Languages
+mum		Maiwala
+muo		Nyong
+mup		Malvi
+muq		Eastern Xiangxi Miao
+mur		Murle
+mus		Creek
+mut		Western Muria
+muu		Yaaku
+muv		Muthuvan
+mux		Bo-Ung
+muy		Muyang
+muz		Mursi
+mva		Manam
+mvb		Mattole
+mvd		Mamboru
+mve		Marwari
+mvf		Peripheral Mongolian
+mvg		Yucuañe Mixtec
+mvh		Mulgi
+mvi		Miyako
+mvk		Mekmek
+mvl		Mbara
+mvm		Muya
+mvn		Minaveha
+mvo		Marovo
+mvp		Duri
+mvq		Moere
+mvr		Marau
+mvs		Massep
+mvt		Mpotovoro
+mvu		Marfa
+mvv		Tagal Murut
+mvw		Machinga
+mvx		Meoswar
+mvy		Indus Kohistani
+mvz		Mesqan
+mwa		Mwatebu
+mwb		Juwal
+mwc		Are
+mwe		Mwera
+mwf		Murrinh-Patha
+mwg		Aiklep
+mwh		Mouk-Aria
+mwi		Labo
+mwk		Kita Maninkakan
+mwl		Mirandese
+mwm		Sar
+mwn		Nyamwanga
+mwo		Central Maewo
+mwp		Kala Lagaw Ya
+mwq		Mün Chin
+mwr		Marwari
+mws		Mwimbi-Muthambi
+mwt		Moken
+mwu		Mittu
+mwv		Mentawai
+mww		Hmong Daw
+mwz		Moingi
+mxa		Northwest Oaxaca Mixtec
+mxb		Tezoatlán Mixtec
+mxc		Manyika
+mxd		Modang
+mxe		Mele-Fila
+mxf		Malgbe
+mxg		Mbangala
+mxh		Mvuba
+mxi		Mozarabic
+mxj		Miju-Mishmi
+mxk		Monumbo
+mxl		Maxi Gbe
+mxm		Meramera
+mxn		Moi
+mxo		Mbowe
+mxp		Tlahuitoltepec Mixe
+mxq		Juquila Mixe
+mxr		Murik
+mxs		Huitepec Mixtec
+mxt		Jamiltepec Mixtec
+mxu		Mada
+mxv		Metlatónoc Mixtec
+mxw		Namo
+mxx		Mahou
+mxy		Southeastern Nochixtlán Mixtec
+mxz		Central Masela
+mya	my	Burmese
+myb		Mbay
+myc		Mayeka
+mye		Myene
+myf		Bambassi
+myg		Manta
+myh		Makah
+myj		Mangayat
+myk		Mamara Senoufo
+myl		Moma
+mym		Me'en
+myo		Anfillo
+myp		Pirahã
+myr		Muniche
+mys		Mesmes
+myu		Mundurukú
+myv		Erzya
+myw		Muyuw
+myx		Masaaba
+myy		Macuna
+myz		Classical Mandaic
+mza		Santa María Zacatepec Mixtec
+mzb		Tumzabt
+mzc		Madagascar Sign Language
+mzd		Malimba
+mze		Morawa
+mzg		Monastic Sign Language
+mzh		Wichí Lhamtés Güisnay
+mzi		Ixcatlán Mazatec
+mzj		Manya
+mzk		Nigeria Mambila
+mzl		Mazatlán Mixe
+mzm		Mumuye
+mzn		Mazanderani
+mzo		Matipuhy
+mzp		Movima
+mzq		Mori Atas
+mzr		Marúbo
+mzs		Macanese
+mzt		Mintil
+mzu		Inapang
+mzv		Manza
+mzw		Deg
+mzx		Mawayana
+mzy		Mozambican Sign Language
+mzz		Maiadomu
+naa		Namla
+nab		Southern Nambikuára
+nac		Narak
+nae		Naka'ela
+naf		Nabak
+nag		Naga Pidgin
+naj		Nalu
+nak		Nakanai
+nal		Nalik
+nam		Ngan'gityemerri
+nan		Min Nan Chinese
+nao		Naaba
+nap		Neapolitan
+naq		Nama
+nar		Iguta
+nas		Naasioi
+nat		Ca̱hungwa̱rya̱
+nau	na	Nauru
+nav	nv	Navajo
+naw		Nawuri
+nax		Nakwi
+nay		Ngarrindjeri
+naz		Coatepec Nahuatl
+nba		Nyemba
+nbb		Ndoe
+nbc		Chang Naga
+nbd		Ngbinda
+nbe		Konyak Naga
+nbg		Nagarchal
+nbh		Ngamo
+nbi		Mao Naga
+nbj		Ngarinyman
+nbk		Nake
+nbl	nr	South Ndebele
+nbm		Ngbaka Ma'bo
+nbn		Kuri
+nbo		Nkukoli
+nbp		Nnam
+nbq		Nggem
+nbr		Numana
+nbs		Namibian Sign Language
+nbt		Na
+nbu		Rongmei Naga
+nbv		Ngamambo
+nbw		Southern Ngbandi
+nby		Ningera
+nca		Iyo
+ncb		Central Nicobarese
+ncc		Ponam
+ncd		Nachering
+nce		Yale
+ncf		Notsi
+ncg		Nisga'a
+nch		Central Huasteca Nahuatl
+nci		Classical Nahuatl
+ncj		Northern Puebla Nahuatl
+nck		Na-kara
+ncl		Michoacán Nahuatl
+ncm		Nambo
+ncn		Nauna
+nco		Sibe
+ncq		Northern Katang
+ncr		Ncane
+ncs		Nicaraguan Sign Language
+nct		Chothe Naga
+ncu		Chumburung
+ncx		Central Puebla Nahuatl
+ncz		Natchez
+nda		Ndasa
+ndb		Kenswei Nsei
+ndc		Ndau
+ndd		Nde-Nsele-Nta
+nde	nd	North Ndebele
+ndf		Nadruvian
+ndg		Ndengereko
+ndh		Ndali
+ndi		Samba Leko
+ndj		Ndamba
+ndk		Ndaka
+ndl		Ndolo
+ndm		Ndam
+ndn		Ngundi
+ndo	ng	Ndonga
+ndp		Ndo
+ndq		Ndombe
+ndr		Ndoola
+nds		Low German
+ndt		Ndunga
+ndu		Dugun
+ndv		Ndut
+ndw		Ndobo
+ndx		Nduga
+ndy		Lutos
+ndz		Ndogo
+nea		Eastern Ngad'a
+neb		Toura
+nec		Nedebang
+ned		Nde-Gbite
+nee		Nêlêmwa-Nixumwak
+nef		Nefamese
+neg		Negidal
+neh		Nyenkha
+nei		Neo-Hittite
+nej		Neko
+nek		Neku
+nem		Nemi
+nen		Nengone
+neo		Ná-Meo
+nep	ne	Nepali
+neq		North Central Mixe
+ner		Yahadian
+nes		Bhoti Kinnauri
+net		Nete
+neu		Neo
+nev		Nyaheun
+new		Newari
+nex		Neme
+ney		Neyo
+nez		Nez Perce
+nfa		Dhao
+nfd		Ahwai
+nfl		Ayiwo
+nfr		Nafaanra
+nfu		Mfumte
+nga		Ngbaka
+ngb		Northern Ngbandi
+ngc		Ngombe
+ngd		Ngando
+nge		Ngemba
+ngg		Ngbaka Manza
+ngh		Nǁng
+ngi		Ngizim
+ngj		Ngie
+ngk		Dalabon
+ngl		Lomwe
+ngm		Ngatik Men's Creole
+ngn		Ngwo
+ngo		Ngoni
+ngp		Ngulu
+ngq		Ngurimi
+ngr		Engdewu
+ngs		Gvoko
+ngt		Kriang
+ngu		Guerrero Nahuatl
+ngv		Nagumi
+ngw		Ngwaba
+ngx		Nggwahyi
+ngy		Tibea
+ngz		Ngungwel
+nha		Nhanda
+nhb		Beng
+nhc		Tabasco Nahuatl
+nhd		Chiripá
+nhe		Eastern Huasteca Nahuatl
+nhf		Nhuwala
+nhg		Tetelcingo Nahuatl
+nhh		Nahari
+nhi		Zacatlán-Ahuacatlán-Tepetzintla Nahuatl
+nhk		Isthmus-Cosoleacaque Nahuatl
+nhm		Morelos Nahuatl
+nhn		Central Nahuatl
+nho		Takuu
+nhp		Isthmus-Pajapan Nahuatl
+nhq		Huaxcaleca Nahuatl
+nhr		Naro
+nht		Ometepec Nahuatl
+nhu		Noone
+nhv		Temascaltepec Nahuatl
+nhw		Western Huasteca Nahuatl
+nhx		Isthmus-Mecayapan Nahuatl
+nhy		Northern Oaxaca Nahuatl
+nhz		Santa María La Alta Nahuatl
+nia		Nias
+nib		Nakame
+nid		Ngandi
+nie		Niellim
+nif		Nek
+nig		Ngalakgan
+nih		Nyiha
+nii		Nii
+nij		Ngaju
+nik		Southern Nicobarese
+nil		Nila
+nim		Nilamba
+nin		Ninzo
+nio		Nganasan
+niq		Nandi
+nir		Nimboran
+nis		Nimi
+nit		Southeastern Kolami
+niu		Niuean
+niv		Gilyak
+niw		Nimo
+nix		Hema
+niy		Ngiti
+niz		Ningil
+nja		Nzanyi
+njb		Nocte Naga
+njd		Ndonde Hamba
+njh		Lotha Naga
+nji		Gudanji
+njj		Njen
+njl		Njalgulgule
+njm		Angami Naga
+njn		Liangmai Naga
+njo		Ao Naga
+njr		Njerep
+njs		Nisa
+njt		Ndyuka-Trio Pidgin
+nju		Ngadjunmaya
+njx		Kunyi
+njy		Njyem
+njz		Nyishi
+nka		Nkoya
+nkb		Khoibu Naga
+nkc		Nkongho
+nkd		Koireng
+nke		Duke
+nkf		Inpui Naga
+nkg		Nekgini
+nkh		Khezha Naga
+nki		Thangal Naga
+nkj		Nakai
+nkk		Nokuku
+nkm		Namat
+nkn		Nkangala
+nko		Nkonya
+nkp		Niuatoputapu
+nkq		Nkami
+nkr		Nukuoro
+nks		North Asmat
+nkt		Nyika
+nku		Bouna Kulango
+nkv		Nyika
+nkw		Nkutu
+nkx		Nkoroo
+nkz		Nkari
+nla		Ngombale
+nlc		Nalca
+nld	nl	Dutch
+nle		East Nyala
+nlg		Gela
+nli		Grangali
+nlj		Nyali
+nlk		Ninia Yali
+nll		Nihali
+nlm		Mankiyali
+nlo		Ngul
+nlq		Lao Naga
+nlu		Nchumbulu
+nlv		Orizaba Nahuatl
+nlw		Walangama
+nlx		Nahali
+nly		Nyamal
+nlz		Nalögo
+nma		Maram Naga
+nmb		Big Nambas
+nmc		Ngam
+nmd		Ndumu
+nme		Mzieme Naga
+nmf		Tangkhul Naga
+nmg		Kwasio
+nmh		Monsang Naga
+nmi		Nyam
+nmj		Ngombe
+nmk		Namakura
+nml		Ndemli
+nmm		Manangba
+nmn		ǃXóõ
+nmo		Moyon Naga
+nmp		Nimanbur
+nmq		Nambya
+nmr		Nimbari
+nms		Letemboi
+nmt		Namonuito
+nmu		Northeast Maidu
+nmv		Ngamini
+nmw		Nimoa
+nmx		Nama
+nmy		Namuyi
+nmz		Nawdm
+nna		Nyangumarta
+nnb		Nande
+nnc		Nancere
+nnd		West Ambae
+nne		Ngandyera
+nnf		Ngaing
+nng		Maring Naga
+nnh		Ngiemboon
+nni		North Nuaulu
+nnj		Nyangatom
+nnk		Nankina
+nnl		Northern Rengma Naga
+nnm		Namia
+nnn		Ngete
+nno	nn	Norwegian Nynorsk
+nnp		Wancho Naga
+nnq		Ngindo
+nnr		Narungga
+nnt		Nanticoke
+nnu		Dwang
+nnv		Nugunu
+nnw		Southern Nuni
+nny		Nyangga
+nnz		Nda'nda'
+noa		Woun Meu
+nob	nb	Norwegian Bokmål
+noc		Nuk
+nod		Northern Thai
+noe		Nimadi
+nof		Nomane
+nog		Nogai
+noh		Nomu
+noi		Noiri
+noj		Nonuya
+nok		Nooksack
+nol		Nomlaki
+nom		Nocamán
+non		Old Norse
+nop		Numanggang
+noq		Ngongo
+nor	no	Norwegian
+nos		Eastern Nisu
+not		Nomatsiguenga
+nou		Ewage-Notu
+nov		Novial
+now		Nyambo
+noy		Noy
+noz		Nayi
+npa		Nar Phu
+npb		Nupbikha
+npg		Ponyo-Gongwang Naga
+nph		Phom Naga
+npi		Nepali
+npl		Southeastern Puebla Nahuatl
+npn		Mondropolon
+npo		Pochuri Naga
+nps		Nipsan
+npu		Puimei Naga
+npx		Noipx
+npy		Napu
+nqg		Southern Nago
+nqk		Kura Ede Nago
+nql		Ngendelengo
+nqm		Ndom
+nqn		Nen
+nqo		N’Ko
+nqq		Kyan-Karyaw Naga
+nqy		Akyaung Ari Naga
+nra		Ngom
+nrb		Nara
+nrc		Noric
+nre		Southern Rengma Naga
+nrf		Jèrriais
+nrg		Narango
+nri		Chokri Naga
+nrk		Ngarla
+nrl		Ngarluma
+nrm		Narom
+nrn		Norn
+nrp		North Picene
+nrr		Norra
+nrt		Northern Kalapuya
+nru		Narua
+nrx		Ngurmbur
+nrz		Lala
+nsa		Sangtam Naga
+nsc		Nshi
+nsd		Southern Nisu
+nse		Nsenga
+nsf		Northwestern Nisu
+nsg		Ngasa
+nsh		Ngoshie
+nsi		Nigerian Sign Language
+nsk		Naskapi
+nsl		Norwegian Sign Language
+nsm		Sumi Naga
+nsn		Nehan
+nso		Northern Sotho
+nsp		Nepalese Sign Language
+nsq		Northern Sierra Miwok
+nsr		Maritime Sign Language
+nss		Nali
+nst		Tase Naga
+nsu		Sierra Negra Nahuatl
+nsv		Southwestern Nisu
+nsw		Navut
+nsx		Nsongo
+nsy		Nasal
+nsz		Nisenan
+ntd		Northern Tidung
+nte		Nathembo
+ntg		Ngantangarra
+nti		Natioro
+ntj		Ngaanyatjarra
+ntk		Ikoma-Nata-Isenye
+ntm		Nateni
+nto		Ntomba
+ntp		Northern Tepehuan
+ntr		Delo
+ntu		Natügu
+ntw		Nottoway
+ntx		Tangkhul Naga
+nty		Mantsi
+ntz		Natanzi
+nua		Yuanga
+nuc		Nukuini
+nud		Ngala
+nue		Ngundu
+nuf		Nusu
+nug		Nungali
+nuh		Ndunda
+nui		Ngumbi
+nuj		Nyole
+nuk		Nuu-chah-nulth
+nul		Nusa Laut
+num		Niuafo'ou
+nun		Anong
+nuo		Nguôn
+nup		Nupe-Nupe-Tako
+nuq		Nukumanu
+nur		Nukuria
+nus		Nuer
+nut		Nung
+nuu		Ngbundu
+nuv		Northern Nuni
+nuw		Nguluwan
+nux		Mehek
+nuy		Nunggubuyu
+nuz		Tlamacazapa Nahuatl
+nvh		Nasarian
+nvm		Namiae
+nvo		Nyokon
+nwa		Nawathinehena
+nwb		Nyabwa
+nwc		Classical Newari
+nwe		Ngwe
+nwg		Ngayawung
+nwi		Southwest Tanna
+nwm		Nyamusa-Molo
+nwo		Nauo
+nwr		Nawaru
+nwx		Middle Newar
+nwy		Nottoway-Meherrin
+nxa		Nauete
+nxd		Ngando
+nxe		Nage
+nxg		Ngad'a
+nxi		Nindi
+nxk		Koki Naga
+nxl		South Nuaulu
+nxm		Numidian
+nxn		Ngawun
+nxo		Ndambomo
+nxq		Naxi
+nxr		Ninggerum
+nxu		Narau
+nxx		Nafri
+nya	ny	Nyanja
+nyb		Nyangbo
+nyc		Nyanga-li
+nyd		Nyore
+nye		Nyengo
+nyf		Giryama
+nyg		Nyindu
+nyh		Nyikina
+nyi		Ama
+nyj		Nyanga
+nyk		Nyaneka
+nyl		Nyeu
+nym		Nyamwezi
+nyn		Nyankole
+nyo		Nyoro
+nyp		Nyang'i
+nyq		Nayini
+nyr		Nyiha
+nys		Nyungar
+nyt		Nyawaygi
+nyu		Nyungwe
+nyv		Nyulnyul
+nyw		Nyaw
+nyx		Nganyaywana
+nyy		Nyakyusa-Ngonde
+nza		Tigon Mbembe
+nzb		Njebi
+nzd		Nzadi
+nzi		Nzima
+nzk		Nzakara
+nzm		Zeme Naga
+nzs		New Zealand Sign Language
+nzu		Teke-Nzikou
+nzy		Nzakambay
+nzz		Nanga Dama Dogon
+oaa		Orok
+oac		Oroch
+oar		Old Aramaic
+oav		Old Avar
+obi		Obispeño
+obk		Southern Bontok
+obl		Oblo
+obm		Moabite
+obo		Obo Manobo
+obr		Old Burmese
+obt		Old Breton
+obu		Obulom
+oca		Ocaina
+och		Old Chinese
+oci	oc	Occitan
+oco		Old Cornish
+ocu		Atzingo Matlatzinca
+oda		Odut
+odk		Od
+odt		Old Dutch
+odu		Odual
+ofo		Ofo
+ofs		Old Frisian
+ofu		Efutop
+ogb		Ogbia
+ogc		Ogbah
+oge		Old Georgian
+ogg		Ogbogolo
+ogo		Khana
+ogu		Ogbronuagum
+oht		Old Hittite
+ohu		Old Hungarian
+oia		Oirata
+oin		Inebu One
+ojb		Northwestern Ojibwa
+ojc		Central Ojibwa
+ojg		Eastern Ojibwa
+oji	oj	Ojibwa
+ojp		Old Japanese
+ojs		Severn Ojibwa
+ojv		Ontong Java
+ojw		Western Ojibwa
+oka		Okanagan
+okb		Okobo
+okd		Okodia
+oke		Okpe
+okg		Koko Babangk
+okh		Koresh-e Rostam
+oki		Okiek
+okj		Oko-Juwoi
+okk		Kwamtim One
+okl		Old Kentish Sign Language
+okm		Middle Korean
+okn		Oki-No-Erabu
+oko		Old Korean
+okr		Kirike
+oks		Oko-Eni-Osayen
+oku		Oku
+okv		Orokaiva
+okx		Okpe
+ola		Walungge
+old		Mochi
+ole		Olekha
+olk		Olkol
+olm		Oloma
+olo		Livvi
+olr		Olrat
+olt		Old Lithuanian
+olu		Kuvale
+oma		Omaha-Ponca
+omb		East Ambae
+omc		Mochica
+omg		Omagua
+omi		Omi
+omk		Omok
+oml		Ombo
+omn		Minoan
+omo		Utarmbung
+omp		Old Manipuri
+omr		Old Marathi
+omt		Omotik
+omu		Omurano
+omw		South Tairora
+omx		Old Mon
+ona		Ona
+onb		Lingao
+one		Oneida
+ong		Olo
+oni		Onin
+onj		Onjob
+onk		Kabore One
+onn		Onobasulu
+ono		Onondaga
+onp		Sartang
+onr		Northern One
+ons		Ono
+ont		Ontenu
+onu		Unua
+onw		Old Nubian
+onx		Onin Based Pidgin
+ood		Tohono O'odham
+oog		Ong
+oon		Önge
+oor		Oorlams
+oos		Old Ossetic
+opa		Okpamheri
+opk		Kopkaka
+opm		Oksapmin
+opo		Opao
+opt		Opata
+opy		Ofayé
+ora		Oroha
+orc		Orma
+ore		Orejón
+org		Oring
+orh		Oroqen
+ori	or	Oriya
+orm	om	Oromo
+orn		Orang Kanaq
+oro		Orokolo
+orr		Oruma
+ors		Orang Seletar
+ort		Adivasi Oriya
+oru		Ormuri
+orv		Old Russian
+orw		Oro Win
+orx		Oro
+ory		Odia
+orz		Ormu
+osa		Osage
+osc		Oscan
+osi		Osing
+oso		Ososo
+osp		Old Spanish
+oss	os	Ossetic
+ost		Osatu
+osu		Southern One
+osx		Old Saxon
+ota		Ottoman Turkish
+otb		Old Tibetan
+otd		Ot Danum
+ote		Mezquital Otomi
+oti		Oti
+otk		Old Turkish
+otl		Tilapa Otomi
+otm		Eastern Highland Otomi
+otn		Tenango Otomi
+otq		Querétaro Otomi
+otr		Otoro
+ots		Estado de México Otomi
+ott		Temoaya Otomi
+otu		Otuke
+otw		Ottawa
+otx		Texcatepec Otomi
+oty		Old Tamil
+otz		Ixtenco Otomi
+oua		Tagargrent
+oub		Glio-Oubi
+oue		Oune
+oui		Old Uighur
+oum		Ouma
+ovd		Elfdalian
+owi		Owiniga
+owl		Old Welsh
+oyb		Oy
+oyd		Oyda
+oym		Wayampi
+oyy		Oya'oya
+ozm		Koonzime
+pab		Parecís
+pac		Pacoh
+pad		Paumarí
+pae		Pagibete
+paf		Paranawát
+pag		Pangasinan
+pah		Tenharim
+pai		Pe
+pak		Parakanã
+pal		Pahlavi
+pam		Pampanga
+pan	pa	Punjabi
+pao		Northern Paiute
+pap		Papiamento
+paq		Parya
+par		Panamint
+pas		Papasena
+pat		Papitalai
+pau		Palauan
+pav		Pakaásnovos
+paw		Pawnee
+pax		Pankararé
+pay		Pech
+paz		Pankararú
+pbb		Páez
+pbc		Patamona
+pbe		Mezontla Popoloca
+pbf		Coyotepec Popoloca
+pbg		Paraujano
+pbh		E'ñapa Woromaipu
+pbi		Parkwa
+pbl		Mak
+pbm		Puebla Mazatec
+pbn		Kpasam
+pbo		Papel
+pbp		Badyara
+pbr		Pangwa
+pbs		Central Pame
+pbt		Southern Pashto
+pbu		Northern Pashto
+pbv		Pnar
+pby		Pyu
+pca		Santa Inés Ahuatempan Popoloca
+pcb		Pear
+pcc		Bouyei
+pcd		Picard
+pce		Ruching Palaung
+pcf		Paliyan
+pcg		Paniya
+pch		Pardhan
+pci		Duruwa
+pcj		Parenga
+pck		Paite Chin
+pcl		Pardhi
+pcm		Nigerian Pidgin
+pcn		Piti
+pcp		Pacahuara
+pcw		Pyapun
+pda		Anam
+pdc		Pennsylvania German
+pdi		Pa Di
+pdn		Podena
+pdo		Padoe
+pdt		Plautdietsch
+pdu		Kayan
+pea		Peranakan Indonesian
+peb		Eastern Pomo
+ped		Mala
+pee		Taje
+pef		Northeastern Pomo
+peg		Pengo
+peh		Bonan
+pei		Chichimeca-Jonaz
+pej		Northern Pomo
+pek		Penchal
+pel		Pekal
+pem		Phende
+peo		Old Persian
+pep		Kunja
+peq		Southern Pomo
+pes		Iranian Persian
+pev		Pémono
+pex		Petats
+pey		Petjo
+pez		Eastern Penan
+pfa		Pááfang
+pfe		Peere
+pfl		Pfaelzisch
+pga		Sudanese Creole Arabic
+pgd		Gāndhārī
+pgg		Pangwali
+pgi		Pagi
+pgk		Rerep
+pgl		Primitive Irish
+pgn		Paelignian
+pgs		Pangseng
+pgu		Pagu
+pgz		Papua New Guinean Sign Language
+pha		Pa-Hng
+phd		Phudagi
+phg		Phuong
+phh		Phukha
+phk		Phake
+phl		Phalura
+phm		Phimbi
+phn		Phoenician
+pho		Phunoi
+phq		Phana'
+phr		Pahari-Potwari
+pht		Phu Thai
+phu		Phuan
+phv		Pahlavani
+phw		Phangduwali
+pia		Pima Bajo
+pib		Yine
+pic		Pinji
+pid		Piaroa
+pie		Piro
+pif		Pingelapese
+pig		Pisabo
+pih		Pitcairn-Norfolk
+pii		Pini
+pij		Pijao
+pil		Yom
+pim		Powhatan
+pin		Piame
+pio		Piapoco
+pip		Pero
+pir		Piratapuyo
+pis		Pijin
+pit		Pitta Pitta
+piu		Pintupi-Luritja
+piv		Pileni
+piw		Pimbwe
+pix		Piu
+piy		Piya-Kwonci
+piz		Pije
+pjt		Pitjantjatjara
+pka		Ardhamāgadhī Prākrit
+pkb		Pokomo
+pkc		Paekche
+pkg		Pak-Tong
+pkh		Pankhu
+pkn		Pakanha
+pko		Pökoot
+pkp		Pukapuka
+pkr		Attapady Kurumba
+pks		Pakistan Sign Language
+pkt		Maleng
+pku		Paku
+pla		Miani
+plb		Polonombauk
+plc		Central Palawano
+pld		Polari
+ple		Palu'e
+plg		Pilagá
+plh		Paulohi
+pli	pi	Pali
+plj		Polci
+plk		Kohistani Shina
+pll		Shwe Palaung
+pln		Palenquero
+plo		Oluta Popoluca
+plp		Palpa
+plq		Palaic
+plr		Palaka Senoufo
+pls		San Marcos Tlacoyalco Popoloca
+plt		Plateau Malagasy
+plu		Palikúr
+plv		Southwest Palawano
+plw		Brooke's Point Palawano
+ply		Bolyu
+plz		Paluan
+pma		Paama
+pmb		Pambia
+pmd		Pallanganmiddang
+pme		Pwaamei
+pmf		Pamona
+pmh		Māhārāṣṭri Prākrit
+pmi		Northern Pumi
+pmj		Southern Pumi
+pmk		Pamlico
+pml		Lingua Franca
+pmm		Pomo
+pmn		Pam
+pmo		Pom
+pmq		Northern Pame
+pmr		Paynamar
+pms		Piemontese
+pmt		Tuamotuan
+pmw		Plains Miwok
+pmx		Poumei Naga
+pmy		Papuan Malay
+pmz		Southern Pame
+pna		Punan Bah-Biau
+pnb		Western Panjabi
+pnc		Pannei
+pnd		Mpinda
+pne		Western Penan
+png		Pongu
+pnh		Penrhyn
+pni		Aoheng
+pnj		Pinjarup
+pnk		Paunaka
+pnl		Paleni
+pnm		Punan Batu 1
+pnn		Pinai-Hagahai
+pno		Panobo
+pnp		Pancana
+pnq		Pana
+pnr		Panim
+pns		Ponosakan
+pnt		Pontic
+pnu		Jiongnai Bunu
+pnv		Pinigura
+pnw		Banyjima
+pnx		Phong-Kniang
+pny		Pinyin
+pnz		Pana
+poc		Poqomam
+poe		San Juan Atzingo Popoloca
+pof		Poke
+pog		Potiguára
+poh		Poqomchi'
+poi		Highland Popoluca
+pok		Pokangá
+pol	pl	Polish
+pom		Southeastern Pomo
+pon		Pohnpeian
+poo		Central Pomo
+pop		Pwapwâ
+poq		Texistepec Popoluca
+por	pt	Portuguese
+pos		Sayula Popoluca
+pot		Potawatomi
+pov		Upper Guinea Crioulo
+pow		San Felipe Otlaltepec Popoloca
+pox		Polabian
+poy		Pogolo
+ppe		Papi
+ppi		Paipai
+ppk		Uma
+ppl		Pipil
+ppm		Papuma
+ppn		Papapana
+ppo		Folopa
+ppp		Pelende
+ppq		Pei
+pps		San Luís Temalacayuca Popoloca
+ppt		Pare
+ppu		Papora
+pqa		Pa'a
+pqm		Malecite-Passamaquoddy
+prc		Parachi
+prd		Parsi-Dari
+pre		Principense
+prf		Paranan
+prg		Prussian
+prh		Porohanon
+pri		Paicî
+prk		Parauk
+prl		Peruvian Sign Language
+prm		Kibiri
+prn		Prasuni
+pro		Old Provençal
+prp		Parsi
+prq		Ashéninka Perené
+prr		Puri
+prs		Dari
+prt		Phai
+pru		Puragi
+prw		Parawen
+prx		Purik
+prz		Providencia Sign Language
+psa		Asue Awyu
+psc		Persian Sign Language
+psd		Plains Indian Sign Language
+pse		Central Malay
+psg		Penang Sign Language
+psh		Southwest Pashai
+psi		Southeast Pashai
+psl		Puerto Rican Sign Language
+psm		Pauserna
+psn		Panasuan
+pso		Polish Sign Language
+psp		Philippine Sign Language
+psq		Pasi
+psr		Portuguese Sign Language
+pss		Kaulong
+pst		Central Pashto
+psu		Sauraseni Prākrit
+psw		Port Sandwich
+psy		Piscataway
+pta		Pai Tavytera
+pth		Pataxó Hã-Ha-Hãe
+pti		Pindiini
+ptn		Patani
+pto		Zo'é
+ptp		Patep
+ptq		Pattapu
+ptr		Piamatsina
+ptt		Enrekang
+ptu		Bambam
+ptv		Port Vato
+ptw		Pentlatch
+pty		Pathiya
+pua		Western Highland Purepecha
+pub		Purum
+puc		Punan Merap
+pud		Punan Aput
+pue		Puelche
+puf		Punan Merah
+pug		Phuie
+pui		Puinave
+puj		Punan Tubu
+pum		Puma
+puo		Puoc
+pup		Pulabu
+puq		Puquina
+pur		Puruborá
+pus	ps	Pashto
+put		Putoh
+puu		Punu
+puw		Puluwatese
+pux		Puare
+puy		Purisimeño
+pwa		Pawaia
+pwb		Panawa
+pwg		Gapapaiwa
+pwi		Patwin
+pwm		Molbog
+pwn		Paiwan
+pwo		Pwo Western Karen
+pwr		Powari
+pww		Pwo Northern Karen
+pxm		Quetzaltepec Mixe
+pye		Pye Krumen
+pym		Fyam
+pyn		Poyanáwa
+pys		Paraguayan Sign Language
+pyu		Puyuma
+pyx		Pyu
+pyy		Pyen
+pzn		Para Naga
+qua		Quapaw
+qub		Huallaga Huánuco Quechua
+quc		K'iche'
+qud		Calderón Highland Quichua
+que	qu	Quechua
+quf		Lambayeque Quechua
+qug		Chimborazo Highland Quichua
+quh		South Bolivian Quechua
+qui		Quileute
+quk		Chachapoyas Quechua
+qul		North Bolivian Quechua
+qum		Sipacapense
+qun		Quinault
+qup		Southern Pastaza Quechua
+quq		Quinqui
+qur		Yanahuanca Pasco Quechua
+qus		Santiago del Estero Quichua
+quv		Sacapulteco
+quw		Tena Lowland Quichua
+qux		Yauyos Quechua
+quy		Ayacucho Quechua
+quz		Cusco Quechua
+qva		Ambo-Pasco Quechua
+qvc		Cajamarca Quechua
+qve		Eastern Apurímac Quechua
+qvh		Huamalíes-Dos de Mayo Huánuco Quechua
+qvi		Imbabura Highland Quichua
+qvj		Loja Highland Quichua
+qvl		Cajatambo North Lima Quechua
+qvm		Margos-Yarowilca-Lauricocha Quechua
+qvn		North Junín Quechua
+qvo		Napo Lowland Quechua
+qvp		Pacaraos Quechua
+qvs		San Martín Quechua
+qvw		Huaylla Wanca Quechua
+qvy		Queyu
+qvz		Northern Pastaza Quichua
+qwa		Corongo Ancash Quechua
+qwc		Classical Quechua
+qwh		Huaylas Ancash Quechua
+qwm		Kuman
+qws		Sihuas Ancash Quechua
+qwt		Kwalhioqua-Tlatskanai
+qxa		Chiquián Ancash Quechua
+qxc		Chincha Quechua
+qxh		Panao Huánuco Quechua
+qxl		Salasaca Highland Quichua
+qxn		Northern Conchucos Ancash Quechua
+qxo		Southern Conchucos Ancash Quechua
+qxp		Puno Quechua
+qxq		Qashqa'i
+qxr		Cañar Highland Quichua
+qxs		Southern Qiang
+qxt		Santa Ana de Tusi Pasco Quechua
+qxu		Arequipa-La Unión Quechua
+qxw		Jauja Wanca Quechua
+qya		Quenya
+qyp		Quiripi
+raa		Dungmali
+rab		Camling
+rac		Rasawa
+rad		Rade
+raf		Western Meohang
+rag		Logooli
+rah		Rabha
+rai		Ramoaaina
+raj		Rajasthani
+rak		Tulu-Bohuai
+ral		Ralte
+ram		Canela
+ran		Riantana
+rao		Rao
+rap		Rapanui
+raq		Saam
+rar		Rarotongan
+ras		Tegali
+rat		Razajerdi
+rau		Raute
+rav		Sampang
+raw		Rawang
+rax		Rang
+ray		Rapa
+raz		Rahambuu
+rbb		Rumai Palaung
+rbk		Northern Bontok
+rbl		Miraya Bikol
+rbp		Barababaraba
+rcf		Réunion Creole French
+rdb		Rudbari
+rea		Rerau
+reb		Rembong
+ree		Rejang Kayan
+reg		Kara
+rei		Reli
+rej		Rejang
+rel		Rendille
+rem		Remo
+ren		Rengao
+rer		Rer Bare
+res		Reshe
+ret		Retta
+rey		Reyesano
+rga		Roria
+rge		Romano-Greek
+rgk		Rangkas
+rgn		Romagnol
+rgr		Resígaro
+rgs		Southern Roglai
+rgu		Ringgou
+rhg		Rohingya
+rhp		Yahang
+ria		Riang
+rif		Tarifit
+ril		Riang Lang
+rim		Nyaturu
+rin		Nungu
+rir		Ribun
+rit		Ritharrngu
+riu		Riung
+rjg		Rajong
+rji		Raji
+rjs		Rajbanshi
+rka		Kraol
+rkb		Rikbaktsa
+rkh		Rakahanga-Manihiki
+rki		Rakhine
+rkm		Marka
+rkt		Rangpuri
+rkw		Arakwal
+rma		Rama
+rmb		Rembarrnga
+rmc		Carpathian Romani
+rmd		Traveller Danish
+rme		Angloromani
+rmf		Kalo Finnish Romani
+rmg		Traveller Norwegian
+rmh		Murkim
+rmi		Lomavren
+rmk		Romkun
+rml		Baltic Romani
+rmm		Roma
+rmn		Balkan Romani
+rmo		Sinte Romani
+rmp		Rempi
+rmq		Caló
+rms		Romanian Sign Language
+rmt		Domari
+rmu		Tavringer Romani
+rmv		Romanova
+rmw		Welsh Romani
+rmx		Romam
+rmy		Vlax Romani
+rmz		Marma
+rnd		Ruund
+rng		Ronga
+rnl		Ranglong
+rnn		Roon
+rnp		Rongpo
+rnr		Nari Nari
+rnw		Rungwa
+rob		Tae'
+roc		Cacgia Roglai
+rod		Rogo
+roe		Ronji
+rof		Rombo
+rog		Northern Roglai
+roh	rm	Romansh
+rol		Romblomanon
+rom		Romany
+ron	ro	Romanian
+roo		Rotokas
+rop		Kriol
+ror		Rongga
+rou		Runga
+row		Dela-Oenale
+rpn		Repanbitip
+rpt		Rapting
+rri		Ririo
+rro		Waima
+rrt		Arritinngithigh
+rsb		Romano-Serbian
+rsl		Russian Sign Language
+rsm		Miriwoong Sign Language
+rtc		Rungtu Chin
+rth		Ratahan
+rtm		Rotuman
+rts		Yurats
+rtw		Rathawi
+rub		Gungu
+ruc		Ruuli
+rue		Rusyn
+ruf		Luguru
+rug		Roviana
+ruh		Ruga
+rui		Rufiji
+ruk		Che
+run	rn	Rundi
+ruo		Istro Romanian
+rup		Aromanian
+ruq		Megleno Romanian
+rus	ru	Russian
+rut		Rutul
+ruu		Lanas Lobu
+ruy		Mala
+ruz		Ruma
+rwa		Rawo
+rwk		Rwa
+rwm		Amba
+rwo		Rawa
+rwr		Marwari
+rxd		Ngardi
+rxw		Karuwali
+ryn		Northern Amami-Oshima
+rys		Yaeyama
+ryu		Central Okinawan
+rzh		Rāziḥī
+saa		Saba
+sab		Buglere
+sac		Meskwaki
+sad		Sandawe
+sae		Sabanê
+saf		Safaliba
+sag	sg	Sango
+sah		Sakha
+saj		Sahu
+sak		Sake
+sam		Samaritan Aramaic
+san	sa	Sanskrit
+sao		Sause
+saq		Samburu
+sar		Saraveca
+sas		Sasak
+sat		Santali
+sau		Saleman
+sav		Saafi-Saafi
+saw		Sawi
+sax		Sa
+say		Saya
+saz		Saurashtra
+sba		Ngambay
+sbb		Simbo
+sbc		Kele
+sbd		Southern Samo
+sbe		Saliba
+sbf		Chabu
+sbg		Seget
+sbh		Sori-Harengan
+sbi		Seti
+sbj		Surbakhal
+sbk		Safwa
+sbl		Botolan Sambal
+sbm		Sagala
+sbn		Sindhi Bhil
+sbo		Sabüm
+sbp		Sangu
+sbq		Sileibi
+sbr		Sembakung Murut
+sbs		Subiya
+sbt		Kimki
+sbu		Stod Bhoti
+sbv		Sabine
+sbw		Simba
+sbx		Seberuang
+sby		Soli
+sbz		Sara Kaba
+scb		Chut
+sce		Dongxiang
+scf		San Miguel Creole French
+scg		Sanggau
+sch		Sakachep
+sci		Sri Lankan Creole Malay
+sck		Sadri
+scl		Shina
+scn		Sicilian
+sco		Scots
+scp		Hyolmo
+scq		Sa'och
+scs		North Slavey
+sct		Southern Katang
+scu		Shumcho
+scv		Sheni
+scw		Sha
+scx		Sicel
+sda		Toraja-Sa'dan
+sdb		Shabak
+sdc		Sassarese Sardinian
+sde		Surubu
+sdf		Sarli
+sdg		Savi
+sdh		Southern Kurdish
+sdj		Suundi
+sdk		Sos Kundi
+sdl		Saudi Arabian Sign Language
+sdm		Semandang
+sdn		Gallurese Sardinian
+sdo		Bukar-Sadung Bidayuh
+sdp		Sherdukpen
+sdr		Oraon Sadri
+sds		Sened
+sdt		Shuadit
+sdu		Sarudu
+sdx		Sibu Melanau
+sdz		Sallands
+sea		Semai
+seb		Shempire Senoufo
+sec		Sechelt
+sed		Sedang
+see		Seneca
+sef		Cebaara Senoufo
+seg		Segeju
+seh		Sena
+sei		Seri
+sej		Sene
+sek		Sekani
+sel		Selkup
+sen		Nanerigé Sénoufo
+seo		Suarmin
+sep		Sìcìté Sénoufo
+seq		Senara Sénoufo
+ser		Serrano
+ses		Koyraboro Senni
+set		Sentani
+seu		Serui-Laut
+sev		Nyarafolo Senoufo
+sew		Sewa Bay
+sey		Secoya
+sez		Senthang Chin
+sfb		Langue des signes de Belgique Francophone
+sfe		Eastern Subanen
+sfm		Small Flowery Miao
+sfs		South African Sign Language
+sfw		Sehwi
+sga		Old Irish
+sgb		Mag-antsi Ayta
+sgc		Kipsigis
+sgd		Surigaonon
+sge		Segai
+sgg		Swiss-German Sign Language
+sgh		Shughni
+sgi		Suga
+sgj		Surgujia
+sgk		Sangkong
+sgm		Singa
+sgp		Singpho
+sgr		Sangisari
+sgs		Samogitian
+sgt		Brokpake
+sgu		Salas
+sgw		Sebat Bet Gurage
+sgx		Sierra Leone Sign Language
+sgy		Sanglechi
+sgz		Sursurunga
+sha		Shall-Zwall
+shb		Ninam
+shc		Sonde
+shd		Kundal Shahi
+she		Sheko
+shg		Shua
+shh		Shoshoni
+shi		Tachelhit
+shj		Shatt
+shk		Shilluk
+shl		Shendu
+shm		Shahrudi
+shn		Shan
+sho		Shanga
+shp		Shipibo-Conibo
+shq		Sala
+shr		Shi
+shs		Shuswap
+sht		Shasta
+shu		Chadian Arabic
+shv		Shehri
+shw		Shwai
+shx		She
+shy		Tachawit
+shz		Syenara Senoufo
+sia		Akkala Sami
+sib		Sebop
+sid		Sidamo
+sie		Simaa
+sif		Siamou
+sig		Paasaal
+sih		Zire
+sii		Shom Peng
+sij		Numbami
+sik		Sikiana
+sil		Tumulung Sisaala
+sim		Mende
+sin	si	Sinhala
+sip		Sikkimese
+siq		Sonia
+sir		Siri
+sis		Siuslaw
+siu		Sinagen
+siv		Sumariup
+siw		Siwai
+six		Sumau
+siy		Sivandi
+siz		Siwi
+sja		Epena
+sjb		Sajau Basap
+sjd		Kildin Sami
+sje		Pite Sami
+sjg		Assangori
+sjk		Kemi Sami
+sjl		Sajalong
+sjm		Mapun
+sjn		Sindarin
+sjo		Xibe
+sjp		Surjapuri
+sjr		Siar-Lak
+sjs		Senhaja De Srair
+sjt		Ter Sami
+sju		Ume Sami
+sjw		Shawnee
+ska		Skagit
+skb		Saek
+skc		Ma Manda
+skd		Southern Sierra Miwok
+ske		Seke
+skf		Sakirabiá
+skg		Sakalava Malagasy
+skh		Sikule
+ski		Sika
+skj		Seke
+skm		Kutong
+skn		Kolibugan Subanon
+sko		Seko Tengah
+skp		Sekapan
+skq		Sininkere
+skr		Saraiki
+sks		Maia
+skt		Sakata
+sku		Sakao
+skv		Skou
+skw		Skepi Creole Dutch
+skx		Seko Padang
+sky		Sikaiana
+skz		Sekar
+slc		Sáliba
+sld		Sissala
+sle		Sholaga
+slf		Swiss-Italian Sign Language
+slg		Selungai Murut
+slh		Southern Puget Sound Salish
+sli		Lower Silesian
+slj		Salumá
+slk	sk	Slovak
+sll		Salt-Yui
+slm		Pangutaran Sama
+sln		Salinan
+slp		Lamaholot
+slq		Salchuq
+slr		Salar
+sls		Singapore Sign Language
+slt		Sila
+slu		Selaru
+slv	sl	Slovenian
+slw		Sialum
+slx		Salampasu
+sly		Selayar
+slz		Ma'ya
+sma		Southern Sami
+smb		Simbari
+smc		Som
+smd		Sama
+sme	se	Northern Sami
+smf		Auwe
+smg		Simbali
+smh		Samei
+smj		Lule Sami
+smk		Bolinao
+sml		Central Sama
+smm		Musasa
+smn		Inari Sami
+smo	sm	Samoan
+smp		Samaritan
+smq		Samo
+smr		Simeulue
+sms		Skolt Sami
+smt		Simte
+smu		Somray
+smv		Samvedi
+smw		Sumbawa
+smx		Samba
+smy		Semnani
+smz		Simeku
+sna	sn	Shona
+snb		Sebuyau
+snc		Sinaugoro
+snd	sd	Sindhi
+sne		Bau Bidayuh
+snf		Noon
+sng		Sanga
+sni		Sensi
+snj		Riverain Sango
+snk		Soninke
+snl		Sangil
+snm		Southern Ma'di
+snn		Siona
+sno		Snohomish
+snp		Siane
+snq		Sangu
+snr		Sihan
+sns		South West Bay
+snu		Senggi
+snv		Sa'ban
+snw		Selee
+snx		Sam
+sny		Saniyo-Hiyewe
+snz		Kou
+soa		Thai Song
+sob		Sobei
+soc		So
+sod		Songoora
+soe		Songomeno
+sog		Sogdien
+soh		Aka
+soi		Sonha
+soj		Soi
+sok		Sokoro
+sol		Solos
+som	so	Somali
+soo		Songo
+sop		Songe
+soq		Kanasi
+sor		Somrai
+sos		Seeku
+sot	st	Southern Sotho
+sou		Southern Thai
+sov		Sonsorol
+sow		Sowanda
+sox		Swo
+soy		Miyobe
+soz		Temi
+spa	es	Spanish
+spb		Sepa
+spc		Sapé
+spd		Saep
+spe		Sepa
+spg		Sian
+spi		Saponi
+spk		Sengo
+spl		Selepet
+spm		Akukem
+spn		Sanapaná
+spo		Spokane
+spp		Supyire Senoufo
+spq		Loreto-Ucayali Spanish
+spr		Saparua
+sps		Saposa
+spt		Spiti Bhoti
+spu		Sapuan
+spv		Sambalpuri
+spx		South Picene
+spy		Sabaot
+sqa		Shama-Sambuga
+sqh		Shau
+sqi	sq	Albanian
+sqk		Albanian Sign Language
+sqm		Suma
+sqn		Susquehannock
+sqo		Sorkhei
+sqq		Sou
+sqr		Siculo Arabic
+sqs		Sri Lankan Sign Language
+sqt		Soqotri
+squ		Squamish
+sra		Saruga
+srb		Sora
+src		Logudorese Sardinian
+srd	sc	Sardinian
+sre		Sara
+srf		Nafi
+srg		Sulod
+srh		Sarikoli
+sri		Siriano
+srk		Serudung Murut
+srl		Isirawa
+srm		Saramaccan
+srn		Sranan Tongo
+sro		Campidanese Sardinian
+srp	sr	Serbian
+srq		Sirionó
+srr		Serer
+srs		Sarsi
+srt		Sauri
+sru		Suruí
+srv		Southern Sorsoganon
+srw		Serua
+srx		Sirmauri
+sry		Sera
+srz		Shahmirzadi
+ssb		Southern Sama
+ssc		Suba-Simbiti
+ssd		Siroi
+sse		Balangingi
+ssf		Thao
+ssg		Seimat
+ssh		Shihhi Arabic
+ssi		Sansi
+ssj		Sausi
+ssk		Sunam
+ssl		Western Sisaala
+ssm		Semnam
+ssn		Waata
+sso		Sissano
+ssp		Spanish Sign Language
+ssq		So'a
+ssr		Swiss-French Sign Language
+sss		Sô
+sst		Sinasina
+ssu		Susuami
+ssv		Shark Bay
+ssw	ss	Swati
+ssx		Samberigi
+ssy		Saho
+ssz		Sengseng
+sta		Settla
+stb		Northern Subanen
+std		Sentinel
+ste		Liana-Seti
+stf		Seta
+stg		Trieng
+sth		Shelta
+sti		Bulo Stieng
+stj		Matya Samo
+stk		Arammba
+stl		Stellingwerfs
+stm		Setaman
+stn		Owa
+sto		Stoney
+stp		Southeastern Tepehuan
+stq		Saterfriesisch
+str		Straits Salish
+sts		Shumashti
+stt		Budeh Stieng
+stu		Samtao
+stv		Silt'e
+stw		Satawalese
+sty		Siberian Tatar
+sua		Sulka
+sub		Suku
+suc		Western Subanon
+sue		Suena
+sug		Suganga
+sui		Suki
+suj		Shubi
+suk		Sukuma
+sun	su	Sundanese
+suq		Suri
+sur		Mwaghavul
+sus		Susu
+sut		Subtiaba
+suv		Puroik
+suw		Sumbwa
+sux		Sumerian
+suy		Suyá
+suz		Sunwar
+sva		Svan
+svb		Ulau-Suain
+svc		Vincentian Creole English
+sve		Serili
+svk		Slovakian Sign Language
+svm		Slavomolisano
+svs		Savosavo
+svx		Skalvian
+swa	sw	Swahili
+swb		Comorian
+swc		Congo Swahili
+swe	sv	Swedish
+swf		Sere
+swg		Swabian
+swh		Swahili
+swi		Sui
+swj		Sira
+swk		Malawi Sena
+swl		Swedish Sign Language
+swm		Samosa
+swn		Sawknah
+swo		Shanenawa
+swp		Suau
+swq		Sharwa
+swr		Saweru
+sws		Seluwasan
+swt		Sawila
+swu		Suwawa
+swv		Shekhawati
+sww		Sowa
+swx		Suruahá
+swy		Sarua
+sxb		Suba
+sxc		Sicanian
+sxe		Sighu
+sxg		Shuhi
+sxk		Southern Kalapuya
+sxl		Selian
+sxm		Samre
+sxn		Sangir
+sxo		Sorothaptic
+sxr		Saaroa
+sxs		Sasaru
+sxu		Upper Saxon
+sxw		Saxwe Gbe
+sya		Siang
+syb		Central Subanen
+syc		Classical Syriac
+syi		Seki
+syk		Sukur
+syl		Sylheti
+sym		Maya Samo
+syn		Senaya
+syo		Suoy
+syr		Syriac
+sys		Sinyar
+syw		Kagate
+syx		Samay
+syy		Al-Sayyid Bedouin Sign Language
+sza		Semelai
+szb		Ngalum
+szc		Semaq Beri
+szd		Seru
+sze		Seze
+szg		Sengele
+szl		Silesian
+szn		Sula
+szp		Suabo
+szs		Solomon Islands Sign Language
+szv		Isu
+szw		Sawai
+szy		Sakizaya
+taa		Lower Tanana
+tab		Tabassaran
+tac		Lowland Tarahumara
+tad		Tause
+tae		Tariana
+taf		Tapirapé
+tag		Tagoi
+tah	ty	Tahitian
+taj		Eastern Tamang
+tak		Tala
+tal		Tal
+tam	ta	Tamil
+tan		Tangale
+tao		Yami
+tap		Taabwa
+taq		Tamasheq
+tar		Central Tarahumara
+tas		Tay Boi
+tat	tt	Tatar
+tau		Upper Tanana
+tav		Tatuyo
+taw		Tai
+tax		Tamki
+tay		Atayal
+taz		Tocho
+tba		Aikanã
+tbb		Tapeba
+tbc		Takia
+tbd		Kaki Ae
+tbe		Tanimbili
+tbf		Mandara
+tbg		North Tairora
+tbh		Dharawal
+tbi		Gaam
+tbj		Tiang
+tbk		Calamian Tagbanwa
+tbl		Tboli
+tbm		Tagbu
+tbn		Barro Negro Tunebo
+tbo		Tawala
+tbp		Taworta
+tbr		Tumtum
+tbs		Tanguat
+tbt		Tembo
+tbu		Tubar
+tbv		Tobo
+tbw		Tagbanwa
+tbx		Kapin
+tby		Tabaru
+tbz		Ditammari
+tca		Ticuna
+tcb		Tanacross
+tcc		Datooga
+tcd		Tafi
+tce		Southern Tutchone
+tcf		Malinaltepec Me'phaa
+tcg		Tamagario
+tch		Turks And Caicos Creole English
+tci		Wára
+tck		Tchitchege
+tcl		Taman
+tcm		Tanahmerah
+tcn		Tichurong
+tco		Taungyo
+tcp		Tawr Chin
+tcq		Kaiy
+tcs		Torres Strait Creole
+tct		T'en
+tcu		Southeastern Tarahumara
+tcw		Tecpatlán Totonac
+tcx		Toda
+tcy		Tulu
+tcz		Thado Chin
+tda		Tagdal
+tdb		Panchpargania
+tdc		Emberá-Tadó
+tdd		Tai Nüa
+tde		Tiranige Diga Dogon
+tdf		Talieng
+tdg		Western Tamang
+tdh		Thulung
+tdi		Tomadino
+tdj		Tajio
+tdk		Tambas
+tdl		Sur
+tdm		Taruma
+tdn		Tondano
+tdo		Teme
+tdq		Tita
+tdr		Todrah
+tds		Doutai
+tdt		Tetun Dili
+tdv		Toro
+tdx		Tandroy-Mahafaly Malagasy
+tdy		Tadyawan
+tea		Temiar
+teb		Tetete
+tec		Terik
+ted		Tepo Krumen
+tee		Huehuetla Tepehua
+tef		Teressa
+teg		Teke-Tege
+teh		Tehuelche
+tei		Torricelli
+tek		Ibali Teke
+tel	te	Telugu
+tem		Timne
+ten		Tama
+teo		Teso
+tep		Tepecano
+teq		Temein
+ter		Tereno
+tes		Tengger
+tet		Tetum
+teu		Soo
+tev		Teor
+tew		Tewa
+tex		Tennet
+tey		Tulishi
+tez		Tetserret
+tfi		Tofin Gbe
+tfn		Tanaina
+tfo		Tefaro
+tfr		Teribe
+tft		Ternate
+tga		Sagalla
+tgb		Tobilung
+tgc		Tigak
+tgd		Ciwogai
+tge		Eastern Gorkha Tamang
+tgf		Chalikha
+tgh		Tobagonian Creole English
+tgi		Lawunuia
+tgj		Tagin
+tgk	tg	Tajik
+tgl	tl	Tagalog
+tgn		Tandaganon
+tgo		Sudest
+tgp		Tangoa
+tgq		Tring
+tgr		Tareng
+tgs		Nume
+tgt		Central Tagbanwa
+tgu		Tanggu
+tgv		Tingui-Boto
+tgw		Tagwana Senoufo
+tgx		Tagish
+tgy		Togoyo
+tgz		Tagalaka
+tha	th	Thai
+thd		Kuuk Thaayorre
+the		Chitwania Tharu
+thf		Thangmi
+thh		Northern Tarahumara
+thi		Tai Long
+thk		Tharaka
+thl		Dangaura Tharu
+thm		Aheu
+thn		Thachanadan
+thp		Thompson
+thq		Kochila Tharu
+thr		Rana Tharu
+ths		Thakali
+tht		Tahltan
+thu		Thuri
+thv		Tahaggart Tamahaq
+thw		Thudam
+thy		Tha
+thz		Tayart Tamajeq
+tia		Tidikelt Tamazight
+tic		Tira
+tif		Tifal
+tig		Tigre
+tih		Timugon Murut
+tii		Tiene
+tij		Tilung
+tik		Tikar
+til		Tillamook
+tim		Timbe
+tin		Tindi
+tio		Teop
+tip		Trimuris
+tiq		Tiéfo
+tir	ti	Tigrinya
+tis		Masadiit Itneg
+tit		Tinigua
+tiu		Adasen
+tiv		Tiv
+tiw		Tiwi
+tix		Southern Tiwa
+tiy		Tiruray
+tiz		Tai Hongjin
+tja		Tajuasohn
+tjg		Tunjung
+tji		Northern Tujia
+tjj		Tjungundji
+tjl		Tai Laing
+tjm		Timucua
+tjn		Tonjon
+tjo		Temacine Tamazight
+tjp		Tjupany
+tjs		Southern Tujia
+tju		Tjurruru
+tjw		Djabwurrung
+tka		Truká
+tkb		Buksa
+tkd		Tukudede
+tke		Takwane
+tkf		Tukumanféd
+tkg		Tesaka Malagasy
+tkl		Tokelau
+tkm		Takelma
+tkn		Toku-No-Shima
+tkp		Tikopia
+tkq		Tee
+tkr		Tsakhur
+tks		Takestani
+tkt		Kathoriya Tharu
+tku		Upper Necaxa Totonac
+tkv		Mur Pano
+tkw		Teanu
+tkx		Tangko
+tkz		Takua
+tla		Southwestern Tepehuan
+tlb		Tobelo
+tlc		Yecuatla Totonac
+tld		Talaud
+tlf		Telefol
+tlg		Tofanma
+tlh		Klingon
+tli		Tlingit
+tlj		Talinga-Bwisi
+tlk		Taloki
+tll		Tetela
+tlm		Tolomako
+tln		Talondo'
+tlo		Talodi
+tlp		Filomena Mata-Coahuitlán Totonac
+tlq		Tai Loi
+tlr		Talise
+tls		Tambotalo
+tlt		Sou Nama
+tlu		Tulehu
+tlv		Taliabu
+tlx		Khehek
+tly		Talysh
+tma		Tama
+tmb		Katbol
+tmc		Tumak
+tmd		Haruai
+tme		Tremembé
+tmf		Toba-Maskoy
+tmg		Ternateño
+tmh		Tamashek
+tmi		Tutuba
+tmj		Samarokena
+tmk		Northwestern Tamang
+tml		Tamnim Citak
+tmm		Tai Thanh
+tmn		Taman
+tmo		Temoq
+tmq		Tumleo
+tmr		Jewish Babylonian Aramaic
+tms		Tima
+tmt		Tasmate
+tmu		Iau
+tmv		Tembo
+tmw		Temuan
+tmy		Tami
+tmz		Tamanaku
+tna		Tacana
+tnb		Western Tunebo
+tnc		Tanimuca-Retuarã
+tnd		Angosturas Tunebo
+tng		Tobanga
+tnh		Maiani
+tni		Tandia
+tnk		Kwamera
+tnl		Lenakel
+tnm		Tabla
+tnn		North Tanna
+tno		Toromono
+tnp		Whitesands
+tnq		Taino
+tnr		Ménik
+tns		Tenis
+tnt		Tontemboan
+tnu		Tay Khang
+tnv		Tangchangya
+tnw		Tonsawang
+tnx		Tanema
+tny		Tongwe
+tnz		Ten'edn
+tob		Toba
+toc		Coyutla Totonac
+tod		Toma
+tof		Gizrra
+tog		Nyasa Tonga
+toh		Gitonga
+toi		Tonga
+toj		Tojolabal
+tol		Tolowa
+tom		Tombulu
+ton	to	Tongan
+too		Xicotepec De Juárez Totonac
+top		Papantla Totonac
+toq		Toposa
+tor		Togbo-Vara Banda
+tos		Highland Totonac
+tou		Tho
+tov		Upper Taromi
+tow		Jemez
+tox		Tobian
+toy		Topoiyo
+toz		To
+tpa		Taupota
+tpc		Azoyú Me'phaa
+tpe		Tippera
+tpf		Tarpia
+tpg		Kula
+tpi		Tok Pisin
+tpj		Tapieté
+tpk		Tupinikin
+tpl		Tlacoapa Me'phaa
+tpm		Tampulma
+tpn		Tupinambá
+tpo		Tai Pao
+tpp		Pisaflores Tepehua
+tpq		Tukpa
+tpr		Tuparí
+tpt		Tlachichilco Tepehua
+tpu		Tampuan
+tpv		Tanapag
+tpw		Tupí
+tpx		Acatepec Me'phaa
+tpy		Trumai
+tpz		Tinputz
+tqb		Tembé
+tql		Lehali
+tqm		Turumsa
+tqn		Tenino
+tqo		Toaripi
+tqp		Tomoip
+tqq		Tunni
+tqr		Torona
+tqt		Western Totonac
+tqu		Touo
+tqw		Tonkawa
+tra		Tirahi
+trb		Terebu
+trc		Copala Triqui
+trd		Turi
+tre		East Tarangan
+trf		Trinidadian Creole English
+trg		Lishán Didán
+trh		Turaka
+tri		Trió
+trj		Toram
+trl		Traveller Scottish
+trm		Tregami
+trn		Trinitario
+tro		Tarao Naga
+trp		Kok Borok
+trq		San Martín Itunyoso Triqui
+trr		Taushiro
+trs		Chicahuaxtla Triqui
+trt		Tunggare
+tru		Turoyo
+trv		Taroko
+trw		Torwali
+trx		Tringgus-Sembaan Bidayuh
+try		Turung
+trz		Torá
+tsa		Tsaangi
+tsb		Tsamai
+tsc		Tswa
+tsd		Tsakonian
+tse		Tunisian Sign Language
+tsg		Tausug
+tsh		Tsuvan
+tsi		Tsimshian
+tsj		Tshangla
+tsk		Tseku
+tsl		Ts'ün-Lao
+tsm		Turkish Sign Language
+tsn	tn	Tswana
+tso	ts	Tsonga
+tsp		Northern Toussian
+tsq		Thai Sign Language
+tsr		Akei
+tss		Taiwan Sign Language
+tst		Tondi Songway Kiini
+tsu		Tsou
+tsv		Tsogo
+tsw		Tsishingini
+tsx		Mubami
+tsy		Tebul Sign Language
+tsz		Purepecha
+tta		Tutelo
+ttb		Gaa
+ttc		Tektiteko
+ttd		Tauade
+tte		Bwanabwana
+ttf		Tuotomb
+ttg		Tutong
+tth		Upper Ta'oih
+tti		Tobati
+ttj		Tooro
+ttk		Totoro
+ttl		Totela
+ttm		Northern Tutchone
+ttn		Towei
+tto		Lower Ta'oih
+ttp		Tombelala
+ttq		Tawallammat Tamajaq
+ttr		Tera
+tts		Northeastern Thai
+ttt		Muslim Tat
+ttu		Torau
+ttv		Titan
+ttw		Long Wat
+tty		Sikaritai
+ttz		Tsum
+tua		Wiarumus
+tub		Tübatulabal
+tuc		Mutu
+tud		Tuxá
+tue		Tuyuca
+tuf		Central Tunebo
+tug		Tunia
+tuh		Taulil
+tui		Tupuri
+tuj		Tugutil
+tuk	tk	Turkmen
+tul		Tula
+tum		Tumbuka
+tun		Tunica
+tuo		Tucano
+tuq		Tedaga
+tur	tr	Turkish
+tus		Tuscarora
+tuu		Tututni
+tuv		Turkana
+tux		Tuxináwa
+tuy		Tugen
+tuz		Turka
+tva		Vaghua
+tvd		Tsuvadi
+tve		Te'un
+tvk		Southeast Ambrym
+tvl		Tuvalu
+tvm		Tela-Masbuar
+tvn		Tavoyan
+tvo		Tidore
+tvs		Taveta
+tvt		Tutsa Naga
+tvu		Tunen
+tvw		Sedoa
+tvx		Taivoan
+tvy		Timor Pidgin
+twa		Twana
+twb		Western Tawbuid
+twc		Teshenawa
+twd		Twents
+twe		Tewa
+twf		Northern Tiwa
+twg		Tereweng
+twh		Tai Dón
+twi	tw	Twi
+twl		Tawara
+twm		Tawang Monpa
+twn		Twendi
+two		Tswapong
+twp		Ere
+twq		Tasawaq
+twr		Southwestern Tarahumara
+twt		Turiwára
+twu		Termanu
+tww		Tuwari
+twx		Tewe
+twy		Tawoyan
+txa		Tombonuo
+txb		Tokharian B
+txc		Tsetsaut
+txe		Totoli
+txg		Tangut
+txh		Thracian
+txi		Ikpeng
+txj		Tarjumo
+txm		Tomini
+txn		West Tarangan
+txo		Toto
+txq		Tii
+txr		Tartessian
+txs		Tonsea
+txt		Citak
+txu		Kayapó
+txx		Tatana
+txy		Tanosy Malagasy
+tya		Tauya
+tye		Kyanga
+tyh		O'du
+tyi		Teke-Tsaayi
+tyj		Tai Do
+tyl		Thu Lao
+tyn		Kombai
+typ		Thaypan
+tyr		Tai Daeng
+tys		Tày Sa Pa
+tyt		Tày Tac
+tyu		Kua
+tyv		Tuvinian
+tyx		Teke-Tyee
+tyz		Tày
+tza		Tanzanian Sign Language
+tzh		Tzeltal
+tzj		Tz'utujil
+tzl		Talossan
+tzm		Central Atlas Tamazight
+tzn		Tugun
+tzo		Tzotzil
+tzx		Tabriak
+uam		Uamué
+uan		Kuan
+uar		Tairuma
+uba		Ubang
+ubi		Ubi
+ubl		Buhi'non Bikol
+ubr		Ubir
+ubu		Umbu-Ungu
+uby		Ubykh
+uda		Uda
+ude		Udihe
+udg		Muduga
+udi		Udi
+udj		Ujir
+udl		Wuzlam
+udm		Udmurt
+udu		Uduk
+ues		Kioko
+ufi		Ufim
+uga		Ugaritic
+ugb		Kuku-Ugbanh
+uge		Ughele
+ugn		Ugandan Sign Language
+ugo		Ugong
+ugy		Uruguayan Sign Language
+uha		Uhami
+uhn		Damal
+uig	ug	Uyghur
+uis		Uisai
+uiv		Iyive
+uji		Tanjijili
+uka		Kaburi
+ukg		Ukuriguma
+ukh		Ukhwejo
+ukk		Muak Sa-aak
+ukl		Ukrainian Sign Language
+ukp		Ukpe-Bayobiri
+ukq		Ukwa
+ukr	uk	Ukrainian
+uks		Urubú-Kaapor Sign Language
+uku		Ukue
+ukw		Ukwuani-Aboh-Ndoni
+uky		Kuuk-Yak
+ula		Fungwa
+ulb		Ulukwumi
+ulc		Ulch
+ule		Lule
+ulf		Usku
+uli		Ulithian
+ulk		Meriam Mir
+ull		Ullatan
+ulm		Ulumanda'
+uln		Unserdeutsch
+ulu		Uma' Lung
+ulw		Ulwa
+uma		Umatilla
+umb		Umbundu
+umc		Marrucinian
+umd		Umbindhamu
+umg		Morrobalama
+umi		Ukit
+umm		Umon
+umn		Makyan Naga
+umo		Umotína
+ump		Umpila
+umr		Umbugarla
+ums		Pendau
+umu		Munsee
+una		North Watut
+und		Undetermined
+une		Uneme
+ung		Ngarinyin
+unk		Enawené-Nawé
+unm		Unami
+unn		Kurnai
+unr		Mundari
+unu		Unubahe
+unx		Munda
+unz		Unde Kaili
+upi		Umeda
+upv		Uripiv-Wala-Rano-Atchin
+ura		Urarina
+urb		Urubú-Kaapor
+urc		Urningangg
+urd	ur	Urdu
+ure		Uru
+urf		Uradhi
+urg		Urigina
+urh		Urhobo
+uri		Urim
+urk		Urak Lawoi'
+url		Urali
+urm		Urapmin
+urn		Uruangnirin
+uro		Ura
+urp		Uru-Pa-In
+urr		Lehalurup
+urt		Urat
+uru		Urumi
+urv		Uruava
+urw		Sop
+urx		Urimo
+ury		Orya
+urz		Uru-Eu-Wau-Wau
+usa		Usarufa
+ush		Ushojo
+usi		Usui
+usk		Usaghade
+usp		Uspanteco
+uss		us-Saare
+usu		Uya
+uta		Otank
+ute		Ute-Southern Paiute
+uth		ut-Hun
+utp		Amba
+utr		Etulo
+utu		Utu
+uum		Urum
+uun		Kulon-Pazeh
+uur		Ura
+uuu		U
+uve		West Uvean
+uvh		Uri
+uvl		Lote
+uwa		Kuku-Uwanh
+uya		Doko-Uyanga
+uzb	uz	Uzbek
+uzn		Northern Uzbek
+uzs		Southern Uzbek
+vaa		Vaagri Booli
+vae		Vale
+vaf		Vafsi
+vag		Vagla
+vah		Varhadi-Nagpuri
+vai		Vai
+vaj		Sekele
+val		Vehes
+vam		Vanimo
+van		Valman
+vao		Vao
+vap		Vaiphei
+var		Huarijio
+vas		Vasavi
+vau		Vanuma
+vav		Varli
+vay		Wayu
+vbb		Southeast Babar
+vbk		Southwestern Bontok
+vec		Venetian
+ved		Veddah
+vel		Veluws
+vem		Vemgo-Mabas
+ven	ve	Venda
+veo		Ventureño
+vep		Veps
+ver		Mom Jango
+vgr		Vaghri
+vgt		Vlaamse Gebarentaal
+vic		Virgin Islands Creole English
+vid		Vidunda
+vie	vi	Vietnamese
+vif		Vili
+vig		Viemo
+vil		Vilela
+vin		Vinza
+vis		Vishavan
+vit		Viti
+viv		Iduna
+vka		Kariyarra
+vki		Ija-Zuba
+vkj		Kujarge
+vkk		Kaur
+vkl		Kulisusu
+vkm		Kamakan
+vko		Kodeoha
+vkp		Korlai Creole Portuguese
+vkt		Tenggarong Kutai Malay
+vku		Kurrama
+vlp		Valpei
+vls		Vlaams
+vma		Martuyhunira
+vmb		Barbaram
+vmc		Juxtlahuaca Mixtec
+vmd		Mudu Koraga
+vme		East Masela
+vmf		Mainfränkisch
+vmg		Lungalunga
+vmh		Maraghei
+vmi		Miwa
+vmj		Ixtayutla Mixtec
+vmk		Makhuwa-Shirima
+vml		Malgana
+vmm		Mitlatongo Mixtec
+vmp		Soyaltepec Mazatec
+vmq		Soyaltepec Mixtec
+vmr		Marenje
+vms		Moksela
+vmu		Muluridyi
+vmv		Valley Maidu
+vmw		Makhuwa
+vmx		Tamazola Mixtec
+vmy		Ayautla Mazatec
+vmz		Mazatlán Mazatec
+vnk		Vano
+vnm		Vinmavis
+vnp		Vunapu
+vol	vo	Volapük
+vor		Voro
+vot		Votic
+vra		Vera'a
+vro		Võro
+vrs		Varisi
+vrt		Burmbar
+vsi		Moldova Sign Language
+vsl		Venezuelan Sign Language
+vsv		Valencian Sign Language
+vto		Vitou
+vum		Vumbu
+vun		Vunjo
+vut		Vute
+vwa		Awa
+waa		Walla Walla
+wab		Wab
+wac		Wasco-Wishram
+wad		Wandamen
+wae		Walser
+waf		Wakoná
+wag		Wa'ema
+wah		Watubela
+wai		Wares
+waj		Waffa
+wal		Wolaytta
+wam		Wampanoag
+wan		Wan
+wao		Wappo
+wap		Wapishana
+waq		Wagiman
+war		Waray
+was		Washo
+wat		Kaninuwa
+wau		Waurá
+wav		Waka
+waw		Waiwai
+wax		Watam
+way		Wayana
+waz		Wampur
+wba		Warao
+wbb		Wabo
+wbe		Waritai
+wbf		Wara
+wbh		Wanda
+wbi		Vwanji
+wbj		Alagwa
+wbk		Waigali
+wbl		Wakhi
+wbm		Wa
+wbp		Warlpiri
+wbq		Waddar
+wbr		Wagdi
+wbs		West Bengal Sign Language
+wbt		Warnman
+wbv		Wajarri
+wbw		Woi
+wca		Yanomámi
+wci		Waci Gbe
+wdd		Wandji
+wdg		Wadaginam
+wdj		Wadjiginy
+wdk		Wadikali
+wdu		Wadjigu
+wdy		Wadjabangayi
+wea		Wewaw
+wec		Wè Western
+wed		Wedau
+weg		Wergaia
+weh		Weh
+wei		Kiunum
+wem		Weme Gbe
+weo		Wemale
+wep		Westphalien
+wer		Weri
+wes		Cameroon Pidgin
+wet		Perai
+weu		Rawngtu Chin
+wew		Wejewa
+wfg		Yafi
+wga		Wagaya
+wgb		Wagawaga
+wgg		Wangkangurru
+wgi		Wahgi
+wgo		Waigeo
+wgu		Wirangu
+wgy		Warrgamay
+wha		Sou Upaa
+whg		North Wahgi
+whk		Wahau Kenyah
+whu		Wahau Kayan
+wib		Southern Toussian
+wic		Wichita
+wie		Wik-Epa
+wif		Wik-Keyangan
+wig		Wik Ngathan
+wih		Wik-Me'anha
+wii		Minidien
+wij		Wik-Iiyanh
+wik		Wikalkan
+wil		Wilawila
+wim		Wik-Mungkan
+win		Ho-Chunk
+wir		Wiraféd
+wiu		Wiru
+wiv		Vitu
+wiy		Wiyot
+wja		Waja
+wji		Warji
+wka		Kw'adza
+wkb		Kumbaran
+wkd		Wakde
+wkl		Kalanadi
+wkr		Keerray-Woorroong
+wku		Kunduvadi
+wkw		Wakawaka
+wky		Wangkayutyuru
+wla		Walio
+wlc		Mwali Comorian
+wle		Wolane
+wlg		Kunbarlang
+wli		Waioli
+wlk		Wailaki
+wll		Wali
+wlm		Middle Welsh
+wln	wa	Walloon
+wlo		Wolio
+wlr		Wailapa
+wls		Wallisian
+wlu		Wuliwuli
+wlv		Wichí Lhamtés Vejoz
+wlw		Walak
+wlx		Wali
+wly		Waling
+wma		Mawa
+wmb		Wambaya
+wmc		Wamas
+wmd		Mamaindé
+wme		Wambule
+wmh		Waima'a
+wmi		Wamin
+wmm		Maiwa
+wmn		Waamwang
+wmo		Wom
+wms		Wambon
+wmt		Walmajarri
+wmw		Mwani
+wmx		Womo
+wnb		Wanambre
+wnc		Wantoat
+wnd		Wandarang
+wne		Waneci
+wng		Wanggom
+wni		Ndzwani Comorian
+wnk		Wanukaka
+wnm		Wanggamala
+wnn		Wunumara
+wno		Wano
+wnp		Wanap
+wnu		Usan
+wnw		Wintu
+wny		Wanyi
+woa		Kuwema
+wob		Wè Northern
+woc		Wogeo
+wod		Wolani
+woe		Woleaian
+wof		Gambian Wolof
+wog		Wogamusin
+woi		Kamang
+wok		Longto
+wol	wo	Wolof
+wom		Wom
+won		Wongo
+woo		Manombai
+wor		Woria
+wos		Hanga Hundi
+wow		Wawonii
+woy		Weyto
+wpc		Maco
+wra		Warapu
+wrb		Waluwarra
+wrd		Warduji
+wrg		Warungu
+wrh		Wiradjuri
+wri		Wariyangga
+wrk		Garrwa
+wrl		Warlmanpa
+wrm		Warumungu
+wrn		Warnang
+wro		Worrorra
+wrp		Waropen
+wrr		Wardaman
+wrs		Waris
+wru		Waru
+wrv		Waruna
+wrw		Gugu Warra
+wrx		Wae Rana
+wry		Merwari
+wrz		Waray
+wsa		Warembori
+wsg		Adilabad Gondi
+wsi		Wusi
+wsk		Waskia
+wsr		Owenia
+wss		Wasa
+wsu		Wasu
+wsv		Wotapuri-Katarqalai
+wtf		Watiwa
+wth		Wathawurrung
+wti		Berta
+wtk		Watakataui
+wtm		Mewati
+wtw		Wotu
+wua		Wikngenchera
+wub		Wunambal
+wud		Wudu
+wuh		Wutunhua
+wul		Silimo
+wum		Wumbvu
+wun		Bungu
+wur		Wurrugu
+wut		Wutung
+wuu		Wu Chinese
+wuv		Wuvulu-Aua
+wux		Wulna
+wuy		Wauyai
+wwa		Waama
+wwb		Wakabunga
+wwo		Wetamut
+wwr		Warrwa
+www		Wawa
+wxa		Waxianghua
+wxw		Wardandi
+wya		Wyandot
+wyb		Wangaaybuwan-Ngiyambaa
+wyi		Woiwurrung
+wym		Wymysorys
+wyr		Wayoró
+wyy		Western Fijian
+xaa		Andalusian Arabic
+xab		Sambe
+xac		Kachari
+xad		Adai
+xae		Aequian
+xag		Aghwan
+xai		Kaimbé
+xaj		Ararandewára
+xak		Máku
+xal		Kalmyk
+xam		ǀXam
+xan		Xamtanga
+xao		Khao
+xap		Apalachee
+xaq		Aquitanian
+xar		Karami
+xas		Kamas
+xat		Katawixi
+xau		Kauwera
+xav		Xavánte
+xaw		Kawaiisu
+xay		Kayan Mahakam
+xbb		Lower Burdekin
+xbc		Bactrian
+xbd		Bindal
+xbe		Bigambal
+xbg		Bunganditj
+xbi		Kombio
+xbj		Birrpayi
+xbm		Middle Breton
+xbn		Kenaboi
+xbo		Bolgarian
+xbp		Bibbulman
+xbr		Kambera
+xbw		Kambiwá
+xby		Batjala
+xcb		Cumbric
+xcc		Camunic
+xce		Celtiberian
+xcg		Cisalpine Gaulish
+xch		Chemakum
+xcl		Classical Armenian
+xcm		Comecrudo
+xcn		Cotoname
+xco		Chorasmian
+xcr		Carian
+xct		Classical Tibetan
+xcu		Curonian
+xcv		Chuvantsy
+xcw		Coahuilteco
+xcy		Cayuse
+xda		Darkinyung
+xdc		Dacian
+xdk		Dharuk
+xdm		Edomite
+xdo		Kwandu
+xdy		Malayic Dayak
+xeb		Eblan
+xed		Hdi
+xeg		ǁXegwi
+xel		Kelo
+xem		Kembayan
+xep		Epi-Olmec
+xer		Xerénte
+xes		Kesawai
+xet		Xetá
+xeu		Keoru-Ahia
+xfa		Faliscan
+xga		Galatian
+xgb		Gbin
+xgd		Gudang
+xgf		Gabrielino-Fernandeño
+xgg		Goreng
+xgi		Garingbal
+xgl		Galindan
+xgm		Dharumbal
+xgr		Garza
+xgu		Unggumi
+xgw		Guwa
+xha		Harami
+xhc		Hunnic
+xhd		Hadrami
+xhe		Khetrani
+xho	xh	Xhosa
+xhr		Hernican
+xht		Hattic
+xhu		Hurrian
+xhv		Khua
+xib		Iberian
+xii		Xiri
+xil		Illyrian
+xin		Xinca
+xir		Xiriâna
+xis		Kisan
+xiv		Indus Valley Language
+xiy		Xipaya
+xjb		Minjungbal
+xjt		Jaitmatang
+xka		Kalkoti
+xkb		Northern Nago
+xkc		Kho'ini
+xkd		Mendalam Kayan
+xke		Kereho
+xkf		Khengkha
+xkg		Kagoro
+xki		Kenyan Sign Language
+xkj		Kajali
+xkk		Kaco'
+xkl		Mainstream Kenyah
+xkn		Kayan River Kayan
+xko		Kiorr
+xkp		Kabatei
+xkq		Koroni
+xkr		Xakriabá
+xks		Kumbewaha
+xkt		Kantosi
+xku		Kaamba
+xkv		Kgalagadi
+xkw		Kembra
+xkx		Karore
+xky		Uma' Lasan
+xkz		Kurtokha
+xla		Kamula
+xlb		Loup B
+xlc		Lycian
+xld		Lydian
+xle		Lemnian
+xlg		Ligurian
+xli		Liburnian
+xln		Alanic
+xlo		Loup A
+xlp		Lepontic
+xls		Lusitanian
+xlu		Cuneiform Luwian
+xly		Elymian
+xma		Mushungulu
+xmb		Mbonga
+xmc		Makhuwa-Marrevone
+xmd		Mbudum
+xme		Median
+xmf		Mingrelian
+xmg		Mengaka
+xmh		Kugu-Muminh
+xmj		Majera
+xmk		Ancient Macedonian
+xml		Malaysian Sign Language
+xmm		Manado Malay
+xmn		Manichaean Middle Persian
+xmo		Morerebi
+xmp		Kuku-Mu'inh
+xmq		Kuku-Mangk
+xmr		Meroitic
+xms		Moroccan Sign Language
+xmt		Matbat
+xmu		Kamu
+xmv		Antankarana Malagasy
+xmw		Tsimihety Malagasy
+xmx		Maden
+xmy		Mayaguduna
+xmz		Mori Bawah
+xna		Ancient North Arabian
+xnb		Kanakanabu
+xng		Middle Mongolian
+xnh		Kuanhua
+xni		Ngarigu
+xnk		Nganakarti
+xnn		Northern Kankanay
+xno		Anglo-Norman
+xnr		Kangri
+xns		Kanashi
+xnt		Narragansett
+xnu		Nukunul
+xny		Nyiyaparli
+xnz		Kenzi
+xoc		O'chi'chi'
+xod		Kokoda
+xog		Soga
+xoi		Kominimung
+xok		Xokleng
+xom		Komo
+xon		Konkomba
+xoo		Xukurú
+xop		Kopar
+xor		Korubo
+xow		Kowaki
+xpa		Pirriya
+xpc		Pecheneg
+xpe		Liberia Kpelle
+xpg		Phrygian
+xpi		Pictish
+xpj		Mpalitjanh
+xpk		Kulina Pano
+xpm		Pumpokol
+xpn		Kapinawá
+xpo		Pochutec
+xpp		Puyo-Paekche
+xpq		Mohegan-Pequot
+xpr		Parthian
+xps		Pisidian
+xpt		Punthamara
+xpu		Punic
+xpy		Puyo
+xqa		Karakhanid
+xqt		Qatabanian
+xra		Krahô
+xrb		Eastern Karaboro
+xrd		Gundungurra
+xre		Kreye
+xrg		Minang
+xri		Krikati-Timbira
+xrm		Armazic
+xrn		Arin
+xrq		Karranga
+xrr		Raetic
+xrt		Aranama-Tamique
+xru		Marriammu
+xrw		Karawa
+xsa		Sabaean
+xsb		Sambal
+xsc		Scythian
+xsd		Sidetic
+xse		Sempan
+xsh		Shamang
+xsi		Sio
+xsj		Subi
+xsl		South Slavey
+xsm		Kasem
+xsn		Sanga
+xso		Solano
+xsp		Silopi
+xsq		Makhuwa-Saka
+xsr		Sherpa
+xss		Assan
+xsu		Sanumá
+xsv		Sudovian
+xsy		Saisiyat
+xta		Alcozauca Mixtec
+xtb		Chazumba Mixtec
+xtc		Katcha-Kadugli-Miri
+xtd		Diuxi-Tilantongo Mixtec
+xte		Ketengban
+xtg		Transalpine Gaulish
+xth		Yitha Yitha
+xti		Sinicahua Mixtec
+xtj		San Juan Teita Mixtec
+xtl		Tijaltepec Mixtec
+xtm		Magdalena Peñasco Mixtec
+xtn		Northern Tlaxiaco Mixtec
+xto		Tokharian A
+xtp		San Miguel Piedras Mixtec
+xtq		Tumshuqese
+xtr		Early Tripuri
+xts		Sindihui Mixtec
+xtt		Tacahua Mixtec
+xtu		Cuyamecalco Mixtec
+xtv		Thawa
+xtw		Tawandê
+xty		Yoloxochitl Mixtec
+xtz		Tasmanian
+xua		Alu Kurumba
+xub		Betta Kurumba
+xud		Umiida
+xug		Kunigami
+xuj		Jennu Kurumba
+xul		Ngunawal
+xum		Umbrian
+xun		Unggaranggu
+xuo		Kuo
+xup		Upper Umpqua
+xur		Urartian
+xut		Kuthant
+xuu		Kxoe
+xve		Venetic
+xvi		Kamviri
+xvn		Vandalic
+xvo		Volscian
+xvs		Vestinian
+xwa		Kwaza
+xwc		Woccon
+xwd		Wadi Wadi
+xwe		Xwela Gbe
+xwg		Kwegu
+xwj		Wajuk
+xwk		Wangkumara
+xwl		Western Xwla Gbe
+xwo		Written Oirat
+xwr		Kwerba Mamberamo
+xwt		Wotjobaluk
+xww		Wemba Wemba
+xxb		Boro
+xxk		Ke'o
+xxm		Minkin
+xxr		Koropó
+xxt		Tambora
+xya		Yaygir
+xyb		Yandjibara
+xyj		Mayi-Yapi
+xyk		Mayi-Kulan
+xyl		Yalakalore
+xyt		Mayi-Thakurti
+xyy		Yorta Yorta
+xzh		Zhang-Zhung
+xzm		Zemgalian
+xzp		Ancient Zapotec
+yaa		Yaminahua
+yab		Yuhup
+yac		Pass Valley Yali
+yad		Yagua
+yae		Pumé
+yaf		Yaka
+yag		Yámana
+yah		Yazgulyam
+yai		Yagnobi
+yaj		Banda-Yangere
+yak		Yakama
+yal		Yalunka
+yam		Yamba
+yan		Mayangna
+yao		Yao
+yap		Yapese
+yaq		Yaqui
+yar		Yabarana
+yas		Nugunu
+yat		Yambeta
+yau		Yuwana
+yav		Yangben
+yaw		Yawalapití
+yax		Yauma
+yay		Agwagwune
+yaz		Lokaa
+yba		Yala
+ybb		Yemba
+ybe		West Yugur
+ybh		Yakha
+ybi		Yamphu
+ybj		Hasha
+ybk		Bokha
+ybl		Yukuben
+ybm		Yaben
+ybn		Yabaâna
+ybo		Yabong
+ybx		Yawiyo
+yby		Yaweyuha
+ych		Chesu
+ycl		Lolopo
+ycn		Yucuna
+ycp		Chepya
+yda		Yanda
+ydd		Eastern Yiddish
+yde		Yangum Dey
+ydg		Yidgha
+ydk		Yoidik
+yea		Ravula
+yec		Yeniche
+yee		Yimas
+yei		Yeni
+yej		Yevanic
+yel		Yela
+yer		Tarok
+yes		Nyankpa
+yet		Yetfa
+yeu		Yerukula
+yev		Yapunda
+yey		Yeyi
+yga		Malyangapa
+ygi		Yiningayi
+ygl		Yangum Gel
+ygm		Yagomi
+ygp		Gepo
+ygr		Yagaria
+ygs		Yolŋu Sign Language
+ygu		Yugul
+ygw		Yagwoia
+yha		Baha Buyang
+yhd		Judeo-Iraqi Arabic
+yhl		Hlepho Phowa
+yhs		Yan-nhaŋu Sign Language
+yia		Yinggarda
+yid	yi	Yiddish
+yif		Ache
+yig		Wusa Nasu
+yih		Western Yiddish
+yii		Yidiny
+yij		Yindjibarndi
+yik		Dongshanba Lalo
+yil		Yindjilandji
+yim		Yimchungru Naga
+yin		Riang Lai
+yip		Pholo
+yiq		Miqie
+yir		North Awyu
+yis		Yis
+yit		Eastern Lalu
+yiu		Awu
+yiv		Northern Nisu
+yix		Axi Yi
+yiz		Azhe
+yka		Yakan
+ykg		Northern Yukaghir
+yki		Yoke
+ykk		Yakaikeke
+ykl		Khlula
+ykm		Kap
+ykn		Kua-nsi
+yko		Yasa
+ykr		Yekora
+ykt		Kathu
+yku		Kuamasi
+yky		Yakoma
+yla		Yaul
+ylb		Yaleba
+yle		Yele
+ylg		Yelogu
+yli		Angguruk Yali
+yll		Yil
+ylm		Limi
+yln		Langnian Buyang
+ylo		Naluo Yi
+ylr		Yalarnnga
+ylu		Aribwaung
+yly		Nyâlayu
+ymb		Yambes
+ymc		Southern Muji
+ymd		Muda
+yme		Yameo
+ymg		Yamongeri
+ymh		Mili
+ymi		Moji
+ymk		Makwe
+yml		Iamalele
+ymm		Maay
+ymn		Yamna
+ymo		Yangum Mon
+ymp		Yamap
+ymq		Qila Muji
+ymr		Malasar
+yms		Mysian
+ymx		Northern Muji
+ymz		Muzi
+yna		Aluo
+ynd		Yandruwandha
+yne		Lang'e
+yng		Yango
+ynk		Naukan Yupik
+ynl		Yangulam
+ynn		Yana
+yno		Yong
+ynq		Yendang
+yns		Yansi
+ynu		Yahuna
+yob		Yoba
+yog		Yogad
+yoi		Yonaguni
+yok		Yokuts
+yol		Yola
+yom		Yombe
+yon		Yongkom
+yor	yo	Yoruba
+yot		Yotti
+yox		Yoron
+yoy		Yoy
+ypa		Phala
+ypb		Labo Phowa
+ypg		Phola
+yph		Phupha
+ypm		Phuma
+ypn		Ani Phowa
+ypo		Alo Phola
+ypp		Phupa
+ypz		Phuza
+yra		Yerakai
+yrb		Yareba
+yre		Yaouré
+yrk		Nenets
+yrl		Nhengatu
+yrm		Yirrk-Mel
+yrn		Yerong
+yro		Yaroamë
+yrs		Yarsun
+yrw		Yarawata
+yry		Yarluyandi
+ysc		Yassic
+ysd		Samatao
+ysg		Sonaga
+ysl		Yugoslavian Sign Language
+ysn		Sani
+yso		Nisi
+ysp		Southern Lolopo
+ysr		Sirenik Yupik
+yss		Yessan-Mayo
+ysy		Sanie
+yta		Talu
+ytl		Tanglang
+ytp		Thopho
+ytw		Yout Wam
+yty		Yatay
+yua		Yucateco
+yub		Yugambal
+yuc		Yuchi
+yud		Judeo-Tripolitanian Arabic
+yue		Cantonese
+yuf		Havasupai-Walapai-Yavapai
+yug		Yug
+yui		Yurutí
+yuj		Karkar-Yuri
+yuk		Yuki
+yul		Yulu
+yum		Quechan
+yun		Bena
+yup		Yukpa
+yuq		Yuqui
+yur		Yurok
+yut		Yopno
+yuw		Yau
+yux		Southern Yukaghir
+yuy		East Yugur
+yuz		Yuracare
+yva		Yawa
+yvt		Yavitero
+ywa		Kalou
+ywg		Yinhawangka
+ywl		Western Lalu
+ywn		Yawanawa
+ywq		Wuding-Luquan Yi
+ywr		Yawuru
+ywt		Xishanba Lalo
+ywu		Wumeng Nasu
+yww		Yawarawarga
+yxa		Mayawali
+yxg		Yagara
+yxl		Yardliyawarra
+yxm		Yinwum
+yxu		Yuyu
+yxy		Yabula Yabula
+yyr		Yir Yoront
+yyu		Yau
+yyz		Ayizi
+yzg		E'ma Buyang
+yzk		Zokhuo
+zaa		Sierra de Juárez Zapotec
+zab		Western Tlacolula Valley Zapotec
+zac		Ocotlán Zapotec
+zad		Cajonos Zapotec
+zae		Yareni Zapotec
+zaf		Ayoquesco Zapotec
+zag		Zaghawa
+zah		Zangwal
+zai		Isthmus Zapotec
+zaj		Zaramo
+zak		Zanaki
+zal		Zauzou
+zam		Miahuatlán Zapotec
+zao		Ozolotepec Zapotec
+zap		Zapotec
+zaq		Aloápam Zapotec
+zar		Rincón Zapotec
+zas		Santo Domingo Albarradas Zapotec
+zat		Tabaa Zapotec
+zau		Zangskari
+zav		Yatzachi Zapotec
+zaw		Mitla Zapotec
+zax		Xadani Zapotec
+zay		Zayse-Zergulla
+zaz		Zari
+zbc		Central Berawan
+zbe		East Berawan
+zbl		Blissymbols
+zbt		Batui
+zbw		West Berawan
+zca		Coatecas Altas Zapotec
+zch		Central Hongshuihe Zhuang
+zdj		Ngazidja Comorian
+zea		Zeeuws
+zeg		Zenag
+zeh		Eastern Hongshuihe Zhuang
+zen		Zenaga
+zga		Kinga
+zgb		Guibei Zhuang
+zgh		Standard Moroccan Tamazight
+zgm		Minz Zhuang
+zgn		Guibian Zhuang
+zgr		Magori
+zha	za	Zhuang
+zhb		Zhaba
+zhd		Dai Zhuang
+zhi		Zhire
+zhn		Nong Zhuang
+zho	zh	Chinese
+zhw		Zhoa
+zia		Zia
+zib		Zimbabwe Sign Language
+zik		Zimakani
+zil		Zialo
+zim		Mesme
+zin		Zinza
+zir		Ziriya
+ziw		Zigula
+ziz		Zizilivakan
+zka		Kaimbulawa
+zkb		Koibal
+zkd		Kadu
+zkg		Koguryo
+zkh		Khorezmian
+zkk		Karankawa
+zkn		Kanan
+zko		Kott
+zkp		São Paulo Kaingáng
+zkr		Zakhring
+zkt		Kitan
+zku		Kaurna
+zkv		Krevinian
+zkz		Khazar
+zlj		Liujiang Zhuang
+zlm		Malay
+zln		Lianshan Zhuang
+zlq		Liuqian Zhuang
+zma		Manda
+zmb		Zimba
+zmc		Margany
+zmd		Maridan
+zme		Mangerr
+zmf		Mfinu
+zmg		Marti Ke
+zmh		Makolkol
+zmi		Negeri Sembilan Malay
+zmj		Maridjabin
+zmk		Mandandanyi
+zml		Matngala
+zmm		Marimanindji
+zmn		Mbangwe
+zmo		Molo
+zmp		Mpuono
+zmq		Mituku
+zmr		Maranunggu
+zms		Mbesa
+zmt		Maringarr
+zmu		Muruwari
+zmv		Mbariman-Gudhinma
+zmw		Mbo
+zmx		Bomitaba
+zmy		Mariyedi
+zmz		Mbandja
+zna		Zan Gula
+zne		Zande
+zng		Mang
+znk		Manangkari
+zns		Mangas
+zoc		Copainalá Zoque
+zoh		Chimalapa Zoque
+zom		Zou
+zoo		Asunción Mixtepec Zapotec
+zoq		Tabasco Zoque
+zor		Rayón Zoque
+zos		Francisco León Zoque
+zpa		Lachiguiri Zapotec
+zpb		Yautepec Zapotec
+zpc		Choapan Zapotec
+zpd		Southeastern Ixtlán Zapotec
+zpe		Petapa Zapotec
+zpf		San Pedro Quiatoni Zapotec
+zpg		Guevea De Humboldt Zapotec
+zph		Totomachapan Zapotec
+zpi		Santa María Quiegolani Zapotec
+zpj		Quiavicuzas Zapotec
+zpk		Tlacolulita Zapotec
+zpl		Lachixío Zapotec
+zpm		Mixtepec Zapotec
+zpn		Santa Inés Yatzechi Zapotec
+zpo		Amatlán Zapotec
+zpp		El Alto Zapotec
+zpq		Zoogocho Zapotec
+zpr		Santiago Xanica Zapotec
+zps		Coatlán Zapotec
+zpt		San Vicente Coatlán Zapotec
+zpu		Yalálag Zapotec
+zpv		Chichicapan Zapotec
+zpw		Zaniza Zapotec
+zpx		San Baltazar Loxicha Zapotec
+zpy		Mazaltepec Zapotec
+zpz		Texmelucan Zapotec
+zqe		Qiubei Zhuang
+zra		Kara
+zrg		Mirgan
+zrn		Zerenkel
+zro		Záparo
+zrp		Zarphatic
+zrs		Mairasi
+zsa		Sarasira
+zsk		Kaskean
+zsl		Zambian Sign Language
+zsm		Standard Malay
+zsr		Southern Rincon Zapotec
+zsu		Sukurum
+zte		Elotepec Zapotec
+ztg		Xanaguía Zapotec
+ztl		Lapaguía-Guivini Zapotec
+ztm		San Agustín Mixtepec Zapotec
+ztn		Santa Catarina Albarradas Zapotec
+ztp		Loxicha Zapotec
+ztq		Quioquitani-Quierí Zapotec
+zts		Tilquiapan Zapotec
+ztt		Tejalapan Zapotec
+ztu		Güilá Zapotec
+ztx		Zaachila Zapotec
+zty		Yatee Zapotec
+zua		Zeem
+zuh		Tokano
+zul	zu	Zulu
+zum		Kumzari
+zun		Zuni
+zuy		Zumaya
+zwa		Zay
+zxx		No linguistic content
+zyb		Yongbei Zhuang
+zyg		Yang Zhuang
+zyj		Youjiang Zhuang
+zyn		Yongnan Zhuang
+zyp		Zyphe Chin
+zza		Zaza
+zzj		Zuojiang Zhuang
+
diff --git a/lttoolbox-language-module/Makefile.am b/lttoolbox-language-module/Makefile.am
index bc3f8a1..75e8ab2 100644
--- a/lttoolbox-language-module/Makefile.am
+++ b/lttoolbox-language-module/Makefile.am
@@ -93,7 +93,7 @@ clean-local:
 ###############################################################################
 
 test: all
-	echo "TODO test sentence" | apertium -d . {{languageCode}}-morph | tee .test-mt
+	echo "TODO test sentence" | apertium -d . -f line {{languageCode}}-morph | tee .test-mt
 	@echo "TODO test analysis results" > .test-ref
 	@diff .test-ref .test-mt
 	@rm .test-ref .test-mt
diff --git a/lttoolbox-language-module/README b/lttoolbox-language-module/README
index f77747d..45d648c 100644
--- a/lttoolbox-language-module/README
+++ b/lttoolbox-language-module/README
@@ -25,11 +25,12 @@ Compiling
 Given the requirements being installed, you should be able to just run:
 
 ```bash
+$ autoreconf -fvi
 $ ./configure
 $ make
 ```
 
-You can use `./autogen.sh` instead of `./configure` if you're compiling
+You can use `./autogen.sh` instead of `autoreconf` and `./configure` if you're compiling
 from source.
 
 If you're doing development, you don't have to install the data, you
@@ -46,6 +47,8 @@ You can use a `--prefix` with `./configure` to install as a non-root user,
 but make sure to use the same prefix when installing the translation
 pair and any other language packages.
 
+If any of this doesn't make sense or doesn't work, see https://wiki.apertium.org/wiki/Install_language_data_by_compiling
+
 Testing
 -------------------------------------------------------------------------------
 
@@ -67,6 +70,7 @@ Files and data
 * [`{{languageCode}}.prob`]({{languageCode}}.prob) - Tagger model
 * [`apertium-{{languageCode}}.{{languageCode}}.rlx`](apertium-{{languageCode}}.{{languageCode}}.rlx) - Constraint Grammar disambiguation rules
 * [`apertium-{{languageCode}}.post-{{languageCode}}.dix`](apertium-{{languageCode}}.post-{{languageCode}}.dix) - Post-generator
+* [`apertium-{{languageCode}}.{{languageCode}}.udx`](apertium-{{languageCode}}.{{languageCode}}.udx) - Mappings from Apertium tags to Universal Dependencies features
 * [`modes.xml`](modes.xml) - Translation modes
 
 For more information
diff --git a/lttoolbox-language-module/apertium-{{languageCode}}.{{languageCode}}.dix b/lttoolbox-language-module/apertium-{{languageCode}}.{{languageCode}}.dix
index 220e5c9..df16df6 100644
--- a/lttoolbox-language-module/apertium-{{languageCode}}.{{languageCode}}.dix
+++ b/lttoolbox-language-module/apertium-{{languageCode}}.{{languageCode}}.dix
@@ -121,4 +121,5 @@
 Resources:
     http://wiki.apertium.org/wiki/Monodix_basics
     http://wiki.apertium.org/wiki/Apertium_New_Language_Pair_HOWTO#Monolingual_dictionaries
+    https://wiki.apertium.org/wiki/List_of_symbols
 -->
diff --git a/lttoolbox-language-module/apertium-{{languageCode}}.{{languageCode}}.udx b/lttoolbox-language-module/apertium-{{languageCode}}.{{languageCode}}.udx
new file mode 100644
index 0000000..c74d3df
--- /dev/null
+++ b/lttoolbox-language-module/apertium-{{languageCode}}.{{languageCode}}.udx
@@ -0,0 +1,71 @@
+_	_	m	_	_	_	Gender=Masc	_
+_	_	f	_	_	_	Gender=Fem	_
+_	_	mf	_	_	_	Gender=Masc,Fem	_
+_	_	sg	_	_	_	Number=Sing	_
+_	_	pl	_	_	_	Number=Plur	_
+_	_	pri	_	_	_	Mood=Ind|Tense=Pres	_
+_	_	past	_	_	_	Mood=Ind|Tense=Past	_
+_	_	pres	_	_	_	Mood=Ind|Tense=Pres	_
+_	_	inf	_	_	_	VerbForm=Inf	_
+_	_	itg	_	_	_	PronType=Itg	_
+_	_	neg	_	_	_	Negative=Yes	_
+_	_	p1	_	_	_	Person=1	_
+_	_	p2	_	_	_	Person=2	_
+_	_	p3	_	_	_	Person=3	_
+_	_	comp	_	_	_	Degree=Cmp	_
+_	_	sup	_	_	_	Degree=Sup	_
+_	_	ord	_	_	_	NumType=Ord	_
+_	_	ind	_	_	_	Definite=Ind	_
+_	_	dem	_	_	_	PronType=Dem	_
+_	_	def	_	_	_	Definite=Def	_
+_	_	ger	_	_	_	VerbForm=Ger	_
+_	_	pp	_	_	_	VerbForm=Part|Tense=Past	_
+_	_	ifi	_	_	_	Mood=Ind|Tense=Past	_
+_	_	pii	_	_	_	Mood=Ind|Tense=Past|Aspect=Imp	_
+_	_	fti	_	_	_	Mood=Ind|Tense=Fut	_
+_	_	cni	_	_	_	Mood=Cnd|Tense=Past|Aspect=Imp	_
+_	_	cns	_	_	_	Mood=Cnd	_
+_	_	prs	_	_	_	Mood=Sub|Tense=Pres	_
+_	_	pis	_	_	_	Mood=Sub|Tense=Past|Aspect=Imp	_
+_	_	imp	_	_	_	Mood=Imp	_
+_	_	plu	_	_	_	Mood=Ind|Tense=Plu	_
+_	_	fut	_	_	_	Mood=Ind|Tense=Fut	_
+_	_	pos	_	_	_	PronType=Pos	_
+_	_	gen	_	_	_	Case=Gen	_
+_	_	nom	_	_	_	Case=Nom	_
+_	_	sp	_	_	_	Number=Sing,Plur	_
+_	_	ref	_	_	_	Reflexive=Yes	_
+_	_	pprs	_	_	_	VerbForm=Part|Tense=Pres	_
+_	num	_	_	_	NUM	_	_
+_	ij	_	_	_	INTJ	_	_
+_	sent	_	_	_	PUNCT	_	_
+_	cm	_	_	_	PUNCT	_	_
+_	lpar	_	_	_	PUNCT	_	_
+_	rpar	_	_	_	PUNCT	_	_
+_	lquest	_	_	_	PUNCT	_	_
+_	web	_	_	_	SYM	_	_
+_	guio	_	_	_	PUNCT	_	_
+_	vbdo	_	_	_	VERB	_	_
+_	apos	_	_	_	PUNCT	_	_
+_	abbr	_	_	_	SYM	_	_
+_	part	_	_	_	PART	_	_
+_	vpart	_	_	_	PART	_	_
+_	n	_	_	_	NOUN	_	_
+_	prn	_	_	_	PRON	_	_
+_	pr	_	_	_	ADP	_	_
+_	cnjcoo	_	_	_	CCONJ	_	_
+_	cnjsub	_	_	_	SCONJ	_	_
+_	cnjadv	_	_	_	SCONJ	_	_
+_	vbser	_	_	_	AUX	_	_
+_	vblex	_	_	_	VERB	_	_
+_	vaux	_	_	_	AUX	_	_
+_	vbhaver	_	_	_	AUX	_	_
+_	vbmod	_	_	_	VERB	_	_
+_	adj	_	_	_	ADJ	_	_
+_	np	_	_	_	PROPN	_	_
+_	adv	_	_	_	ADV	_	_
+_	preadv	_	_	_	ADV	_	_
+_	detnt	_	_	_	DET	_	_
+_	predet	_	_	_	DET	_	_
+_	rel	_	_	_	PRON	_	_
+_	det	_	_	_	DET	_	_
diff --git a/lttoolbox-language-module/updateBootstraper.py b/lttoolbox-language-module/updateBootstraper.py
index 3078442..1e92638 100755
--- a/lttoolbox-language-module/updateBootstraper.py
+++ b/lttoolbox-language-module/updateBootstraper.py
@@ -19,6 +19,7 @@
     'Makefile.am',
     'modes.xml',
     'corpus/{{languageCode}}.tagged',
+    'apertium-{{languageCode}}.{{languageCode}}.udx',
     'README',
 ]
 
diff --git a/main.py b/main.py
index df7d50f..b6d5b49 100755
--- a/main.py
+++ b/main.py
@@ -1,11 +1,11 @@
 #!/usr/bin/env python3
 
 __author__ = 'Sushain K. Cherivirala, Kevin Brubeck Unhammer'
-__copyright__ = 'Copyright 2014--2018, Sushain K. Cherivirala, Kevin Brubeck Unhammer'
-__credits__ = ['Sushain K. Cherivirala', 'Kevin Brubeck Unhammer', 'Jonathan North Washington', 'Shardul Chiplunkar']
+__copyright__ = 'Copyright 2014--2021, Sushain K. Cherivirala, Kevin Brubeck Unhammer'
+__credits__ = ['Sushain K. Cherivirala', 'Kevin Brubeck Unhammer', 'Jonathan North Washington', 'Shardul Chiplunkar', 'Daniel Swanson']
 __license__ = 'GPLv3+'
 __status__ = 'Production'
-__version__ = '2.3.0'
+__version__ = '3.0.0'
 
 import argparse
 import base64
@@ -22,17 +22,17 @@
 
 if False:  # for mypy
     import http.client  # noqa: F401
-    from typing import Dict, List, Tuple  # noqa: F401
+    from typing import Dict, List, Optional, Tuple  # noqa: F401
 
 # DO NOT MODIFY, USE `make` which calls `./updateBoostraper.py`
 any_module_files = {}  # noqa: E501
 lttoolbox_language_module_files = {}  # noqa: E501
 hfst_language_module_files = {}  # noqa: E501
 bilingual_module_files = {}  # noqa: E501
+english_lang_names = {}  # noqa: E501
+iso639_codes = {}  # noqa: E501
 # DO NOT MODIFY, USE `make` which calls `./updateBoostraper.py`
 
-english_lang_names = {'aa': 'Afar', 'ab': 'Abkhazian', 'ace': 'Achinese', 'ach': 'Acoli', 'ada': 'Adangme', 'ady': 'Adyghe', 'ae': 'Avestan', 'af': 'Afrikaans', 'afh': 'Afrihili', 'agq': 'Aghem', 'ain': 'Ainu', 'ak': 'Akan', 'akk': 'Akkadian', 'ale': 'Aleut', 'alt': 'Southern Altai', 'am': 'Amharic', 'an': 'Aragonese', 'ang': 'Old English', 'anp': 'Angika', 'ar': 'Arabic', 'ar-001': 'Modern Standard Arabic', 'arc': 'Aramaic', 'arn': 'Mapuche', 'arp': 'Arapaho', 'arw': 'Arawak', 'as': 'Assamese', 'asa': 'Asu', 'ast': 'Asturian', 'av': 'Avaric', 'awa': 'Awadhi', 'ay': 'Aymara', 'az': 'Azerbaijani', 'az-alt-short': 'Azeri', 'ba': 'Bashkir', 'bal': 'Baluchi', 'ban': 'Balinese', 'bas': 'Basaa', 'bax': 'Bamun', 'bbj': 'Ghomala', 'be': 'Belarusian', 'bej': 'Beja', 'bem': 'Bemba', 'bez': 'Bena', 'bfd': 'Bafut', 'bg': 'Bulgarian', 'bho': 'Bhojpuri', 'bi': 'Bislama', 'bik': 'Bikol', 'bin': 'Bini', 'bkm': 'Kom', 'bla': 'Siksika', 'bm': 'Bambara', 'bn': 'Bengali', 'bo': 'Tibetan', 'br': 'Breton', 'bra': 'Braj', 'brx': 'Bodo', 'bs': 'Bosnian', 'bss': 'Akoose', 'bua': 'Buriat', 'bug': 'Buginese', 'bum': 'Bulu', 'byn': 'Blin', 'byv': 'Medumba', 'ca': 'Catalan', 'cad': 'Caddo', 'car': 'Carib', 'cay': 'Cayuga', 'cch': 'Atsam', 'ce': 'Chechen', 'ceb': 'Cebuano', 'cgg': 'Chiga', 'ch': 'Chamorro', 'chb': 'Chibcha', 'chg': 'Chagatai', 'chk': 'Chuukese', 'chm': 'Mari', 'chn': 'Chinook Jargon', 'cho': 'Choctaw', 'chp': 'Chipewyan', 'chr': 'Cherokee', 'chy': 'Cheyenne', 'ckb': 'Sorani Kurdish', 'co': 'Corsican', 'cop': 'Coptic', 'cr': 'Cree', 'crh': 'Crimean Turkish', 'cs': 'Czech', 'csb': 'Kashubian', 'cu': 'Church Slavic', 'cv': 'Chuvash', 'cy': 'Welsh', 'da': 'Danish', 'dak': 'Dakota', 'dar': 'Dargwa', 'dav': 'Taita', 'de': 'German', 'de-AT': 'Austrian German', 'de-CH': 'Swiss High German', 'del': 'Delaware', 'den': 'Slave', 'dgr': 'Dogrib', 'din': 'Dinka', 'dje': 'Zarma', 'doi': 'Dogri', 'dsb': 'Lower Sorbian', 'dua': 'Duala', 'dum': 'Middle Dutch', 'dv': 'Divehi', 'dyo': 'Jola-Fonyi', 'dyu': 'Dyula', 'dz': 'Dzongkha', 'dzg': 'Dazaga', 'ebu': 'Embu', 'ee': 'Ewe', 'efi': 'Efik', 'egy': 'Ancient Egyptian', 'eka': 'Ekajuk', 'el': 'Greek', 'elx': 'Elamite', 'en': 'English', 'en-AU': 'Australian English', 'en-CA': 'Canadian English', 'en-GB': 'British English', 'en-GB-alt-short': 'U.K. English', 'en-US': 'American English', 'en-US-alt-short': 'U.S. English', 'enm': 'Middle English', 'eo': 'Esperanto', 'es': 'Spanish', 'es-419': 'Latin American Spanish', 'es-ES': 'European Spanish', 'es-MX': 'Mexican Spanish', 'et': 'Estonian', 'eu': 'Basque', 'ewo': 'Ewondo', 'fa': 'Persian', 'fan': 'Fang', 'fat': 'Fanti', 'ff': 'Fulah', 'fi': 'Finnish', 'fil': 'Filipino', 'fj': 'Fijian', 'fo': 'Faroese', 'fon': 'Fon', 'fr': 'French', 'fr-CA': 'Canadian French', 'fr-CH': 'Swiss French', 'frm': 'Middle French', 'fro': 'Old French', 'frr': 'Northern Frisian', 'frs': 'Eastern Frisian', 'fur': 'Friulian', 'fy': 'Western Frisian', 'ga': 'Irish', 'gaa': 'Ga', 'gay': 'Gayo', 'gba': 'Gbaya', 'gd': 'Scottish Gaelic', 'gez': 'Geez', 'gil': 'Gilbertese', 'gl': 'Galician', 'gmh': 'Middle High German', 'gn': 'Guarani', 'goh': 'Old High German', 'gon': 'Gondi', 'gor': 'Gorontalo', 'got': 'Gothic', 'grb': 'Grebo', 'grc': 'Ancient Greek', 'gsw': 'Swiss German', 'gu': 'Gujarati', 'guz': 'Gusii', 'gv': 'Manx', 'gwi': 'Gwichʼin', 'ha': 'Hausa', 'hai': 'Haida', 'haw': 'Hawaiian', 'he': 'Hebrew', 'hi': 'Hindi', 'hil': 'Hiligaynon', 'hit': 'Hittite', 'hmn': 'Hmong', 'ho': 'Hiri Motu', 'hr': 'Croatian', 'hsb': 'Upper Sorbian', 'ht': 'Haitian', 'hu': 'Hungarian', 'hup': 'Hupa', 'hy': 'Armenian', 'hz': 'Herero', 'ia': 'Interlingua', 'iba': 'Iban', 'ibb': 'Ibibio', 'id': 'Indonesian', 'ie': 'Interlingue', 'ig': 'Igbo', 'ii': 'Sichuan Yi', 'ik': 'Inupiaq', 'ilo': 'Iloko', 'inh': 'Ingush', 'io': 'Ido', 'is': 'Icelandic', 'it': 'Italian', 'iu': 'Inuktitut', 'ja': 'Japanese', 'jbo': 'Lojban', 'jgo': 'Ngomba', 'jmc': 'Machame', 'jpr': 'Judeo-Persian', 'jrb': 'Judeo-Arabic', 'jv': 'Javanese', 'ka': 'Georgian', 'kaa': 'Kara-Kalpak', 'kab': 'Kabyle', 'kac': 'Kachin', 'kaj': 'Jju', 'kam': 'Kamba', 'kaw': 'Kawi', 'kbd': 'Kabardian', 'kbl': 'Kanembu', 'kcg': 'Tyap', 'kde': 'Makonde', 'kea': 'Kabuverdianu', 'kfo': 'Koro', 'kg': 'Kongo', 'kha': 'Khasi', 'kho': 'Khotanese', 'khq': 'Koyra Chiini', 'ki': 'Kikuyu', 'kj': 'Kuanyama', 'kk': 'Kazakh', 'kkj': 'Kako', 'kl': 'Kalaallisut', 'kln': 'Kalenjin', 'km': 'Khmer', 'kmb': 'Kimbundu', 'kn': 'Kannada', 'ko': 'Korean', 'kok': 'Konkani', 'kos': 'Kosraean', 'kpe': 'Kpelle', 'kr': 'Kanuri', 'krc': 'Karachay-Balkar', 'krl': 'Karelian', 'kru': 'Kurukh', 'ks': 'Kashmiri', 'ksb': 'Shambala', 'ksf': 'Bafia', 'ksh': 'Colognian', 'ku': 'Kurdish', 'kum': 'Kumyk', 'kut': 'Kutenai', 'kv': 'Komi', 'kw': 'Cornish', 'ky': 'Kyrgyz', 'ky-alt-variant': 'Kirghiz', 'la': 'Latin', 'lad': 'Ladino', 'lag': 'Langi', 'lah': 'Lahnda', 'lam': 'Lamba', 'lb': 'Luxembourgish', 'lez': 'Lezghian', 'lg': 'Ganda', 'li': 'Limburgish', 'lkt': 'Lakota', 'ln': 'Lingala', 'lo': 'Lao', 'lol': 'Mongo', 'loz': 'Lozi', 'lt': 'Lithuanian', 'lu': 'Luba-Katanga', 'lua': 'Luba-Lulua', 'lui': 'Luiseno', 'lun': 'Lunda', 'luo': 'Luo', 'lus': 'Mizo', 'luy': 'Luyia', 'lv': 'Latvian', 'mad': 'Madurese', 'maf': 'Mafa', 'mag': 'Magahi', 'mai': 'Maithili', 'mak': 'Makasar', 'man': 'Mandingo', 'mas': 'Masai', 'mde': 'Maba', 'mdf': 'Moksha', 'mdr': 'Mandar', 'men': 'Mende', 'mer': 'Meru', 'mfe': 'Morisyen', 'mg': 'Malagasy', 'mga': 'Middle Irish', 'mgh': 'Makhuwa-Meetto', 'mgo': 'Meta\'', 'mh': 'Marshallese', 'mi': 'Maori', 'mic': 'Micmac', 'min': 'Minangkabau', 'mk': 'Macedonian', 'ml': 'Malayalam', 'mn': 'Mongolian', 'mnc': 'Manchu', 'mni': 'Manipuri', 'moh': 'Mohawk', 'mos': 'Mossi', 'mr': 'Marathi', 'ms': 'Malay', 'mt': 'Maltese', 'mua': 'Mundang', 'mul': 'Multiple Languages', 'mus': 'Creek', 'mwl': 'Mirandese', 'mwr': 'Marwari', 'my': 'Burmese', 'mye': 'Myene', 'myv': 'Erzya', 'na': 'Nauru', 'nap': 'Neapolitan', 'naq': 'Nama', 'nb': 'Norwegian Bokmål', 'nd': 'North Ndebele', 'nds': 'Low German', 'ne': 'Nepali', 'new': 'Newari', 'ng': 'Ndonga', 'nia': 'Nias', 'niu': 'Niuean', 'nl': 'Dutch', 'nl-BE': 'Flemish', 'nmg': 'Kwasio', 'nn': 'Norwegian Nynorsk', 'nnh': 'Ngiemboon', 'no': 'Norwegian', 'nog': 'Nogai', 'non': 'Old Norse', 'nqo': 'N’Ko', 'nr': 'South Ndebele', 'nso': 'Northern Sotho', 'nus': 'Nuer', 'nv': 'Navajo', 'nwc': 'Classical Newari', 'ny': 'Nyanja', 'nym': 'Nyamwezi', 'nyn': 'Nyankole', 'nyo': 'Nyoro', 'nzi': 'Nzima', 'oc': 'Occitan', 'oj': 'Ojibwa', 'om': 'Oromo', 'or': 'Oriya', 'os': 'Ossetic', 'osa': 'Osage', 'ota': 'Ottoman Turkish', 'pa': 'Punjabi', 'pag': 'Pangasinan', 'pal': 'Pahlavi', 'pam': 'Pampanga', 'pap': 'Papiamento', 'pau': 'Palauan', 'peo': 'Old Persian', 'pes': 'Iranian Persian', 'phn': 'Phoenician', 'pi': 'Pali', 'pl': 'Polish', 'pon': 'Pohnpeian', 'pro': 'Old Provençal', 'ps': 'Pashto', 'ps-alt-variant': 'Pushto', 'pt': 'Portuguese', 'pt-BR': 'Brazilian Portuguese', 'pt-PT': 'European Portuguese', 'qu': 'Quechua', 'raj': 'Rajasthani', 'rap': 'Rapanui', 'rar': 'Rarotongan', 'rm': 'Romansh', 'rn': 'Rundi', 'ro': 'Romanian', 'ro-MD': 'Moldavian', 'rof': 'Rombo', 'rom': 'Romany', 'root': 'Root', 'ru': 'Russian', 'rup': 'Aromanian', 'rw': 'Kinyarwanda', 'rwk': 'Rwa', 'sa': 'Sanskrit', 'sad': 'Sandawe', 'sah': 'Sakha', 'sam': 'Samaritan Aramaic', 'saq': 'Samburu', 'sas': 'Sasak', 'sat': 'Santali', 'sba': 'Ngambay', 'sbp': 'Sangu', 'sc': 'Sardinian', 'scn': 'Sicilian', 'sco': 'Scots', 'sd': 'Sindhi', 'se': 'Northern Sami', 'see': 'Seneca', 'seh': 'Sena', 'sel': 'Selkup', 'ses': 'Koyraboro Senni', 'sg': 'Sango', 'sga': 'Old Irish', 'sh': 'Serbo-Croatian', 'shi': 'Tachelhit', 'shn': 'Shan', 'shu': 'Chadian Arabic', 'si': 'Sinhala', 'sid': 'Sidamo', 'sk': 'Slovak', 'sl': 'Slovenian', 'sm': 'Samoan', 'sma': 'Southern Sami', 'smj': 'Lule Sami', 'smn': 'Inari Sami', 'sms': 'Skolt Sami', 'sn': 'Shona', 'snk': 'Soninke', 'so': 'Somali', 'sog': 'Sogdien', 'sq': 'Albanian', 'sr': 'Serbian', 'srn': 'Sranan Tongo', 'srr': 'Serer', 'ss': 'Swati', 'ssy': 'Saho', 'st': 'Southern Sotho', 'su': 'Sundanese', 'suk': 'Sukuma', 'sus': 'Susu', 'sux': 'Sumerian', 'sv': 'Swedish', 'sw': 'Swahili', 'swb': 'Comorian', 'swc': 'Congo Swahili', 'syc': 'Classical Syriac', 'syr': 'Syriac', 'ta': 'Tamil', 'te': 'Telugu', 'tem': 'Timne', 'teo': 'Teso', 'ter': 'Tereno', 'tet': 'Tetum', 'tg': 'Tajik', 'th': 'Thai', 'ti': 'Tigrinya', 'tig': 'Tigre', 'tiv': 'Tiv', 'tk': 'Turkmen', 'tkl': 'Tokelau', 'tl': 'Tagalog', 'tlh': 'Klingon', 'tli': 'Tlingit', 'tmh': 'Tamashek', 'tn': 'Tswana', 'to': 'Tongan', 'tog': 'Nyasa Tonga', 'tpi': 'Tok Pisin', 'tr': 'Turkish', 'trv': 'Taroko', 'ts': 'Tsonga', 'tsi': 'Tsimshian', 'tt': 'Tatar', 'tum': 'Tumbuka', 'tvl': 'Tuvalu', 'tw': 'Twi', 'twq': 'Tasawaq', 'ty': 'Tahitian', 'tyv': 'Tuvinian', 'tzm': 'Central Atlas Tamazight', 'udm': 'Udmurt', 'ug': 'Uyghur', 'ug-alt-variant': 'Uighur', 'uga': 'Ugaritic', 'uk': 'Ukrainian', 'umb': 'Umbundu', 'und': 'Unknown Language', 'ur': 'Urdu', 'uz': 'Uzbek', 'vai': 'Vai', 've': 'Venda', 'vi': 'Vietnamese', 'vo': 'Volapük', 'vot': 'Votic', 'vun': 'Vunjo', 'wa': 'Walloon', 'wae': 'Walser', 'wal': 'Wolaytta', 'war': 'Waray', 'was': 'Washo', 'wo': 'Wolof', 'xal': 'Kalmyk', 'xh': 'Xhosa', 'xog': 'Soga', 'yao': 'Yao', 'yap': 'Yapese', 'yav': 'Yangben', 'ybb': 'Yemba', 'yi': 'Yiddish', 'yo': 'Yoruba', 'yue': 'Cantonese', 'za': 'Zhuang', 'zap': 'Zapotec', 'zbl': 'Blissymbols', 'zen': 'Zenaga', 'zgh': 'Standard Moroccan Tamazight', 'zh': 'Chinese', 'zh-Hans': 'Simplified Chinese', 'zh-Hant': 'Traditional Chinese', 'zu': 'Zulu', 'zun': 'Zuni', 'zxx': 'No linguistic content', 'zza': 'Zaza'}  # noqa: E501
-iso639_codes = {'roh': 'rm', 'gv': 'glv', 'gu': 'guj', 'ron': 'ro', 'oss': 'os', 'gd': 'gla', 'nld': 'nl', 'ga': 'gle', 'se': 'sme', 'gl': 'glg', 'oji': 'oj', 'oci': 'oc', 'ty': 'tah', 'jav': 'jv', 'tw': 'twi', 'tt': 'tat', 'hrv': 'hr', 'tr': 'tur', 'ts': 'tso', 'tn': 'tsn', 'to': 'ton', 'tl': 'tgl', 'tk': 'tuk', 'th': 'tha', 'ti': 'tir', 'ven': 've', 'tg': 'tgk', 'te': 'tel', 'ta': 'tam', 'fas': 'fa', 'ssw': 'ss', 'de': 'deu', 'da': 'dan', 'ay': 'aym', 'dz': 'dzo', 'fao': 'fo', 'dv': 'div', 'rn': 'run', 'hin': 'hi', 'qu': 'que', 'hye': 'hy', 'guj': 'gu', 'kua': 'kj', 'cre': 'cr', 'div': 'dv', 'bam': 'bm', 'bak': 'ba', 'tel': 'te', 'mi': 'mri', 'za': 'zha', 'mh': 'mah', 'ara': 'ar', 'ce': 'che', 'nbl': 'nr', 'zu': 'zul', 'wa': 'wln', 'sun': 'su', 'abk': 'ab', 'kur': 'ku', 'wol': 'wo', 'lub': 'lu', 'gn': 'grn', 'lug': 'lg', 'jv': 'jav', 'nep': 'ne', 'ms': 'msa', 'iku': 'iu', 'lg': 'lug', 'wo': 'wol', 'tur': 'tr', 'mr': 'mar', 'tuk': 'tk', 'ja': 'jpn', 'cos': 'co', 'ile': 'ie', 'gla': 'gd', 'bos': 'bs', 'gle': 'ga', 'glg': 'gl', 'aka': 'ak', 'bod': 'bo', 'glv': 'gv', 'aa': 'aar', 'ch': 'cha', 'co': 'cos', 'vie': 'vi', 'ipk': 'ik', 'ca': 'cat', 'bs': 'bos', 'por': 'pt', 'uzb': 'uz', 'na': 'nau', 'pol': 'pl', 'cs': 'ces', 'tgk': 'tg', 'bre': 'br', 'cv': 'chv', 'tgl': 'tl', 'aym': 'ay', 'cha': 'ch', 'fra': 'fr', 'che': 'ce', 'pt': 'por', 'swa': 'sw', 'twi': 'tw', 'swe': 'sv', 'pa': 'pan', 'chu': 'cu', 'chv': 'cv', 'vi': 'vie', 'fry': 'fy', 'pi': 'pli', 'msa': 'ms', 'am': 'amh', 'hmo': 'ho', 'iii': 'ii', 'ml': 'mal', 'mg': 'mlg', 'mlg': 'mg', 'ibo': 'ig', 'hat': 'ht', 'slv': 'sl', 'mn': 'mon', 'xho': 'xh', 'deu': 'de', 'mk': 'mkd', 'cat': 'ca', 'mt': 'mlt', 'mlt': 'mt', 'slk': 'sk', 'ful': 'ff', 'my': 'mya', 'tat': 'tt', 've': 'ven', 'jpn': 'ja', 'vol': 'vo', 'oc': 'oci', 'is': 'isl', 'iu': 'iku', 'it': 'ita', 'vo': 'vol', 'ii': 'iii', 'mya': 'my', 'ik': 'ipk', 'io': 'ido', 'spa': 'es', 'ia': 'ina', 'ave': 'ae', 'tah': 'ty', 'ava': 'av', 'ig': 'ibo', 'yo': 'yor', 'eng': 'en', 'ie': 'ile', 'ewe': 'ee', 'id': 'ind', 'nya': 'ny', 'sin': 'si', 'pan': 'pa', 'snd': 'sd', 'mar': 'mr', 'sna': 'sn', 'kir': 'ky', 'kik': 'ki', 'fa': 'fas', 'kin': 'rw', 'ff': 'ful', 'lat': 'la', 'mah': 'mh', 'lav': 'lv', 'mal': 'ml', 'fo': 'fao', 'ss': 'ssw', 'sr': 'srp', 'sq': 'sqi', 'sw': 'swa', 'sv': 'swe', 'su': 'sun', 'st': 'sot', 'sk': 'slk', 'epo': 'eo', 'si': 'sin', 'so': 'som', 'sn': 'sna', 'sm': 'smo', 'sl': 'slv', 'sc': 'srd', 'sa': 'san', 'ido': 'io', 'sg': 'sag', 'nb': 'nob', 'tha': 'th', 'sd': 'snd', 'ita': 'it', 'tsn': 'tn', 'tso': 'ts', 'lb': 'ltz', 'ell': 'el', 'la': 'lat', 'ln': 'lin', 'lo': 'lao', 'li': 'lim', 'lv': 'lav', 'lt': 'lit', 'lu': 'lub', 'fij': 'fj', 'fin': 'fi', 'hau': 'ha', 'eus': 'eu', 'yi': 'yid', 'amh': 'am', 'bih': 'bh', 'dan': 'da', 'nob': 'nb', 'ces': 'cs', 'mon': 'mn', 'bis': 'bi', 'nor': 'no', 'cy': 'cym', 'afr': 'af', 'el': 'ell', 'eo': 'epo', 'en': 'eng', 'ee': 'ewe', 'fr': 'fra', 'lao': 'lo', 'cr': 'cre', 'eu': 'eus', 'et': 'est', 'es': 'spa', 'ru': 'rus', 'est': 'et', 'smo': 'sm', 'cu': 'chu', 'fy': 'fry', 'rm': 'roh', 'sme': 'se', 'ro': 'ron', 'be': 'bel', 'bg': 'bul', 'run': 'rn', 'ba': 'bak', 'ps': 'pus', 'bm': 'bam', 'bn': 'ben', 'bo': 'bod', 'bh': 'bih', 'bi': 'bis', 'orm': 'om', 'que': 'qu', 'br': 'bre', 'ori': 'or', 'rus': 'ru', 'pli': 'pi', 'pus': 'ps', 'om': 'orm', 'oj': 'oji', 'srd': 'sc', 'ltz': 'lb', 'nde': 'nd', 'dzo': 'dz', 'ndo': 'ng', 'srp': 'sr', 'wln': 'wa', 'isl': 'is', 'os': 'oss', 'or': 'ori', 'zul': 'zu', 'xh': 'xho', 'som': 'so', 'sot': 'st', 'fi': 'fin', 'zh': 'zho', 'fj': 'fij', 'yid': 'yi', 'mkd': 'mk', 'kom': 'kv', 'her': 'hz', 'kon': 'kg', 'ukr': 'uk', 'ton': 'to', 'heb': 'he', 'kor': 'ko', 'hz': 'her', 'hy': 'hye', 'hr': 'hrv', 'hun': 'hu', 'ht': 'hat', 'hu': 'hun', 'hi': 'hin', 'ho': 'hmo', 'bul': 'bg', 'ha': 'hau', 'cym': 'cy', 'he': 'heb', 'ben': 'bn', 'bel': 'be', 'uz': 'uzb', 'azb': 'az', 'aze': 'az', 'ur': 'urd', 'zha': 'za', 'pl': 'pol', 'uk': 'ukr', 'aar': 'aa', 'ug': 'uig', 'zho': 'zh', 'nno': 'nn', 'ab': 'abk', 'ae': 'ave', 'san': 'sa', 'uig': 'ug', 'af': 'afr', 'ak': 'aka', 'arg': 'an', 'sag': 'sg', 'an': 'arg', 'as': 'asm', 'ar': 'ara', 'khm': 'km', 'av': 'ava', 'ind': 'id', 'az': 'aze', 'ina': 'ia', 'asm': 'as', 'nl': 'nld', 'nn': 'nno', 'no': 'nor', 'lim': 'li', 'lin': 'ln', 'nd': 'nde', 'ne': 'nep', 'tir': 'ti', 'ng': 'ndo', 'lit': 'lt', 'ny': 'nya', 'nav': 'nv', 'nau': 'na', 'grn': 'gn', 'nr': 'nbl', 'yor': 'yo', 'nv': 'nav', 'kv': 'kom', 'tam': 'ta', 'cor': 'kw', 'kan': 'kn', 'kal': 'kl', 'kas': 'ks', 'sqi': 'sq', 'rw': 'kin', 'kau': 'kr', 'kat': 'ka', 'kaz': 'kk', 'urd': 'ur', 'ka': 'kat', 'kg': 'kon', 'kk': 'kaz', 'kj': 'kua', 'ki': 'kik', 'ko': 'kor', 'kn': 'kan', 'km': 'khm', 'kl': 'kal', 'ks': 'kas', 'kr': 'kau', 'kw': 'cor', 'mri': 'mi', 'ku': 'kur', 'ky': 'kir', 'hbs': 'sh', 'sh': 'hbs'}  # noqa: E501
 organization_name = 'apertium'
 default_prefix = 'apertium'
 default_email = 'apertium-stuff@lists.sourceforge.net'
@@ -47,6 +47,15 @@ def get_lang_name(code):  # type: (str) -> str
         return code
 
 
+def read_manifest(files, conditionals):  # type: (Dict[str, bytes], List[str]) -> None
+    manifest_byt = zlib.decompress(base64.b85decode(files['MANIFEST.txt']))
+    manifest_txt = manifest_byt.decode('utf-8')
+    manifest_ls = make_replacements(manifest_txt, {}, conditionals).splitlines()
+    for f in list(files.keys()):
+        if f not in any_module_files and f not in manifest_ls:
+            del files[f]
+
+
 def init_pair(args, email):  # type: (argparse.Namespace, str) -> Tuple[Dict[str, bytes], Dict[str, str], List[str]]
     language_code_1, language_code_2 = args.name.split('-')
     replacements = {
@@ -57,14 +66,24 @@ def init_pair(args, email):  # type: (argparse.Namespace, str) -> Tuple[Dict[str
         'email': email,
     }
 
-    if args.analyser == 'hfst' or (args.analyser1 == 'hfst' and args.analyser2 == 'hfst'):
-        conditionals = ['hfst', 'hfst1', 'hfst2']
-    elif args.analyser1 == 'hfst' and args.analyser2 in ['lt', 'lttoolbox']:
-        conditionals = ['hfst', 'hfst1', 'lttoolbox2']
-    elif args.analyser1 in ['lt', 'lttoolbox'] and args.analyser2 == 'hfst':
-        conditionals = ['hfst', 'lttoolbox1', 'hfst2']
+    conditionals = []
+    if args.analyser == 'giella' or args.analyser1 == 'giella':
+        conditionals.append('giella1')
+    elif args.analyser in ['hfst', 'lexd'] or args.analyser1 in ['hfst', 'lexd']:
+        conditionals.append('hfst1')
+    else:
+        conditionals.append('lttoolbox1')
+    if args.analyser == 'giella' or args.analyser2 == 'giella':
+        conditionals.append('giella2')
+    elif args.analyser in ['hfst', 'lexd'] or args.analyser2 in ['hfst', 'lexd']:
+        conditionals.append('hfst2')
     else:
-        conditionals = ['lttoolbox1', 'lttoolbox2']
+        conditionals.append('lttoolbox2')
+    if conditionals != ['lttoolbox1', 'lttoolbox2']:
+        conditionals.append('hfst')
+
+    conditionals += args.pair_conds or []
+    conditionals.append(args.transfer)
 
     if not args.no_prob1:
         conditionals.append('prob1')
@@ -82,31 +101,7 @@ def init_pair(args, email):  # type: (argparse.Namespace, str) -> Tuple[Dict[str
         conditionals.append('pgen2')
 
     files = dict(bilingual_module_files, **any_module_files)
-
-    if args.with_lsx:
-        conditionals.append('lsx')
-    else:
-        del files['apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.lsx']
-        del files['apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.lsx']
-
-    if args.with_anaphora:
-        conditionals.append('anaphora')
-    else:
-        del files['apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.arx']
-        del files['apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.arx']
-
-    if args.transfer == 'chunk':
-        conditionals.append('chunk')
-        del files['apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.rtx']
-        del files['apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.rtx']
-    else:
-        conditionals.append('rtx')
-        del files['apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.t1x']
-        del files['apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.t2x']
-        del files['apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode1}}-{{languageCode2}}.t3x']
-        del files['apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.t1x']
-        del files['apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.t2x']
-        del files['apertium-{{languageCode1}}-{{languageCode2}}.{{languageCode2}}-{{languageCode1}}.t3x']
+    read_manifest(files, conditionals)
 
     return files, replacements, conditionals
 
@@ -118,20 +113,15 @@ def init_lang_module(args, email):  # type: (argparse.Namespace, str) -> Tuple[D
         'email': email,
     }
 
-    conditionals = []
+    conditionals = args.lang_conds or []
 
     if args.analyser in ['lt', 'lttoolbox']:
         files = dict(lttoolbox_language_module_files, **any_module_files)
-    elif args.analyser == 'hfst':
+    elif args.analyser in ['hfst', 'lexd']:
+        if args.analyser == 'lexd':
+            conditionals.append('lexd')
         files = dict(hfst_language_module_files, **any_module_files)
-        if args.with_twoc:
-            conditionals.append('twoc')
-        else:
-            del files['apertium-{{languageCode}}.{{languageCode}}.twoc']
-        if args.with_spellrelax:
-            conditionals.append('spellrelax')
-        else:
-            del files['apertium-{{languageCode}}.{{languageCode}}.spellrelax']
+        read_manifest(files, conditionals)
     else:
         raise Exception('Unrecognized analyser: ' % args.analyser)
 
@@ -215,21 +205,23 @@ def create_github_repository():  # type: () -> http.client.HTTPResponse
         sys.stderr.write('Pushing to remote {} failed: {}'.format(remote_name, e.output))
 
 
-def main(cli_args):  # type: (List[str]) -> None
-    parser = argparse.ArgumentParser(description='Bootstrap an Apertium language module/pair')
+def main(cli_args=None):  # type: (Optional[List[str]]) -> None
+    parser = argparse.ArgumentParser(description='Bootstrap an Apertium language module/pair', allow_abbrev=True)
     parser.add_argument('name', help='name of new Apertium language module/pair using ISO-639-3 language code(s)')
     parser.add_argument('-d', '--destination', help='destination directory for new language module/pair (default: cwd)', default=os.getcwd())
     parser.add_argument('-p', '--push-new-to-github', help='push newly created repository to incubator on the Apertium organisation on GitHub (use with -u)',
                         action='store_true', default=False)
-    parser.add_argument('-pe', '--push-existing-to-github', help='push existing repository to incubator on the Apertium organisation on GitHub', default=None)
+    parser.add_argument('--push-existing-to-github', '--pe', help='push existing repository to incubator on the Apertium organisation on GitHub', default=None)
     parser.add_argument('-u', '--username', help='override GitHub username (for pushing repository to GitHub); otherwise git config is used', default=None)
     parser.add_argument('--prefix', help='directory prefix (default: {})'.format(default_prefix), default=default_prefix)
     parser.add_argument('-r', '--rebuild', help='construct module or pair with different features using existing files',
                         action='store_true', default=False)
 
-    parser.add_argument('-a', '--analyser', help='analyser to use for all languages', choices=['lt', 'lttoolbox', 'hfst'], default='lt')
-    parser.add_argument('-a1', '--analyser1', help='analyser to use for first language of pair', choices=['lt', 'lttoolbox', 'hfst'], default='lt')
-    parser.add_argument('-a2', '--analyser2', help='analyser to use for second language of pair', choices=['lt', 'lttoolbox', 'hfst'], default='lt')
+    parser.add_argument('-a', '--analyser', help='analyser to use for all languages', choices=['lt', 'lttoolbox', 'hfst', 'lexd', 'giella'], default='lt')
+    parser.add_argument('--analyser1', '--a1', help='analyser to use for first language of pair', choices=['lt', 'lttoolbox', 'hfst', 'lexd', 'giella'],
+                        default='lt')
+    parser.add_argument('--analyser2', '--a2', help='analyser to use for second language of pair', choices=['lt', 'lttoolbox', 'hfst', 'lexd', 'giella'],
+                        default='lt')
 
     parser.add_argument('-t', '--transfer', help='structural transfer module to use', choices=['chunk', 'rtx'], default='chunk')
 
@@ -247,19 +239,17 @@ def main(cli_args):  # type: (List[str]) -> None
 
     parser.add_argument('--no-pgen1', help='no post-dix present in first language of pair (only used for bilingual pairs)', action='store_true', default=False)
     parser.add_argument('--no-pgen2', help='no post-dix present in second language of pair (only used for bilingual pairs)', action='store_true', default=False)
-    parser.add_argument('--with-twoc', help='include .twoc file (only used for monolingual hfst modules)', action='store_true', default=False)
+    parser.add_argument('--with-twoc', help='include .twoc file (only used for monolingual hfst modules)', action='append_const',
+                        const='twoc', dest='lang_conds')
     parser.add_argument('--with-lsx', '--with-separable', help='include apertium-separable .lsx files (only used for bilingual pairs)',
-                        action='store_true', default=False)
-    parser.add_argument('--with-spellrelax', help='include spellrelax file (only used for monolingual hfst modules)', action='store_true', default=False)
-    parser.add_argument('--with-anaphora', help='include anaphora resolution file (only used for bilingual pairs)', action='store_true', default=False)
+                        action='append_const', const='lsx', dest='pair_conds')
+    parser.add_argument('--with-spellrelax', help='include spellrelax file (only used for monolingual hfst modules)', action='append_const',
+                        const='spellrelax', dest='lang_conds')
+    parser.add_argument('--with-anaphora', help='include anaphora resolution file (only used for bilingual pairs)', action='append_const',
+                        const='anaphora', dest='pair_conds')
 
     args = parser.parse_args(cli_args)
 
-    if args.analyser in ['lt', 'lttoolbox'] and args.with_twoc:
-        parser.error('--with-twoc can only be used in hfst modules')
-    if args.analyser in ['lt', 'lttoolbox'] and args.with_spellrelax:
-        parser.error('--with-spellrelax can only be used in hfst modules')
-
     try:
         email = subprocess.check_output(shlex.split('git config user.email')).decode('utf-8').strip()
     except subprocess.CalledProcessError as e:
@@ -278,8 +268,24 @@ def main(cli_args):  # type: (List[str]) -> None
         return
 
     if '-' in args.name and args.name.count('-') == 1:
+        if args.lang_conds:
+            parser.error('--with-%s can only be used with monolingual modules' % args.lang_conds[0])
+        if (args.analyser == 'giella' or args.analyser1 == 'giella') and (args.no_rlx1 or args.no_prob1):
+            parser.error('--analyser=giella specifies the tagger')
+        if (args.analyser == 'giella' or args.analyser2 == 'giella') and (args.no_rlx2 or args.no_prob2):
+            parser.error('--analyser=giella specifies the tagger')
         files, replacements, conditionals = init_pair(args, email)
     elif '-' not in args.name:
+        if args.pair_conds:
+            parser.error('--with-%s can only be used with bilingual pairs' % args.pair_conds[0])
+        if args.lang_conds:
+            if args.analyser in ['lt', 'lttoolbox']:
+                parser.error('--with-%s can only be used with hfst modules' % args.lang_conds[0])
+                # this will have to be changed if we have options for lttoolbox modules
+            elif args.analyser == 'lexd' and 'twoc' in args.lang_conds:
+                parser.error('--analyser=lexd is not compatible with --with-twoc')
+        if args.analyser == 'giella':
+            parser.error('cannot generate Giella language modules')
         files, replacements, conditionals = init_lang_module(args, email)
     else:
         parser.error('Invalid language module name: %s' % args.name)
@@ -339,11 +345,33 @@ def main(cli_args):  # type: (List[str]) -> None
         sys.stderr.write('Unable to add/commit files to git repository {}: {}'.format(repository_name, e.output))
         sys.exit(-1)
 
+    if '-' not in args.name:
+        try:
+            subprocess.check_output('./autogen.sh', cwd=args.destination, universal_newlines=True, stderr=subprocess.STDOUT, shell=True)
+            print('Successfully configure Makefile.')
+        except subprocess.CalledProcessError as e:
+            sys.stderr.write('Unable to configure Makefile, you may be missing some of the required tools: {}'.format(e.output))
+            # don't exit here, since failing this doesn't interfere with pushing to github
+
     if args.push_new_to_github:
         push_to_github(args, args.destination, username)
     else:
         print('To push your new local repository to incubator in the {} organisation on GitHub:'.format(organization_name))
-        print('\tapertium-init.py -pe {} {}'.format(args.destination, repository_name))
+        print('\tapertium-init.py --pe {} {}'.format(args.destination, repository_name))
+
+    push_hook = os.path.join(args.destination, '.git/hooks/pre-push')
+    with open(push_hook, 'w') as f:
+        f.write("""#!/bin/bash
+todos=`grep "TODO" README | grep -v "TODO("`
+if [ ! -z "$todos" ]; then
+        echo ""
+        echo "WARNING: You have unresolved TODOs in your README."
+        echo "You can resolve this message by replacing the TODOs with example"
+        echo "sentences or by assigning them like TODO(Albert)"
+        echo ""
+fi
+""")
+        os.chmod(push_hook, os.stat(push_hook).st_mode | stat.S_IEXEC)
 
 
 if __name__ == '__main__':
diff --git a/updateBootstrapper.py b/updateBootstrapper.py
new file mode 100755
index 0000000..51f8b46
--- /dev/null
+++ b/updateBootstrapper.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python3
+
+import argparse
+import fileinput
+import os
+import re
+import sys
+
+if __name__ == '__main__':
+    script_path = os.path.dirname(os.path.realpath(__file__))
+    init_script_path = os.path.join(script_path, 'apertium-init.py')
+
+    parser = argparse.ArgumentParser(description='Update the bootstraper script for an Apertium bilingual language modules')
+    parser.add_argument('-d', '--vanillaDirectory', help='location of directory with vanilla files', default=script_path)
+    parser.add_argument('-f', '--bootstraperScript', help='location of bootstraper script', default=init_script_path)
+    args = parser.parse_args()
+
+    names = {}
+    codes = {}
+
+    lang_file = os.path.join(args.vanillaDirectory, 'languages.tsv')
+    for line in fileinput.input([lang_file], inplace=False):
+        if '\t' in line:
+            code3, code2, name = line.strip().split('\t')
+            names[code3] = name
+            codes[code2] = code3
+
+    for line in fileinput.input([args.bootstraperScript], inplace=True):
+        line = re.sub(r'^english_lang_names = {.*?}  # noqa: E501$', 'english_lang_names = %s  # noqa: E501' % repr(names), line)
+        line = re.sub(r'^iso639_codes = {.*?}  # noqa: E501$', 'iso639_codes = %s  # noqa: E501' % repr(codes), line)
+        sys.stdout.write(line)
diff --git a/updateLanguageList.sh b/updateLanguageList.sh
new file mode 100755
index 0000000..92a1a9f
--- /dev/null
+++ b/updateLanguageList.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+mv languages.tsv languages.tsv.bak
+wget -O - https://iso639-3.sil.org/sites/iso639-3/files/downloads/iso-639-3.tab | cut -f "1,4,7" | tail -n +2 > languages.tsv


Test patch:
diff --git a/test.py b/test.py
index 2d46fcb..a51a95e 100755
--- a/test.py
+++ b/test.py
@@ -13,13 +13,15 @@ def make_path(name, prefix=apertium_init.default_prefix):
     return '{}-{}'.format(prefix, name)
 
 
-def build(path, autogen_args=[]):
+def autogen(path, autogen_args):
     try:
         subprocess.check_output(['./autogen.sh'] + autogen_args, cwd=path, stderr=subprocess.STDOUT, universal_newlines=True)
     except subprocess.CalledProcessError as error:
         print(error.output)
         raise
 
+
+def build(path):
     try:
         subprocess.check_output('make', cwd=path, stderr=subprocess.STDOUT, universal_newlines=True)
     except subprocess.CalledProcessError as error:
@@ -57,12 +59,32 @@ def test_rejects_spellrelax_without_hfst(self):
 
     def test_no_rlx_and_no_prob(self):
         with self.assertRaises(SystemExit):
-            apertium_init.main(['eng', '--no-rlx1', '--no-prob1'])
+            apertium_init.main(['eng-cat', '--no-rlx1', '--no-prob1'])
 
     def test_invalid_analyser(self):
         with self.assertRaises(SystemExit):
             apertium_init.main(['eng', '--analyser=bloop'])
 
+    def test_lexd_twoc(self):
+        with self.assertRaises(SystemExit):
+            apertium_init.main(['eng', '--analyser=lexd', '--with-twoc'])
+
+    def test_lang_with_pair_options(self):
+        with self.assertRaises(SystemExit):
+            apertium_init.main(['eng', '--with-anaphora'])
+
+    def test_pair_with_lang_options(self):
+        with self.assertRaises(SystemExit):
+            apertium_init.main(['eng-cat', '--with-spellrelax'])
+
+    def test_no_mono_giella(self):
+        with self.assertRaises(SystemExit):
+            apertium_init.main(['eng', '--analyser=giella'])
+
+    def test_rebuild_nonexistent(self):
+        with self.assertRaises(SystemExit):
+            apertium_init.main(['eng', '--rebuild'])
+
     def test_dir_already_exists(self):
         path = make_path('eng')
         os.makedirs(path)
@@ -101,8 +123,14 @@ def setUpClass(cls):
         apertium_init.main([cls.name, '--analyser=hfst', '--with-twoc', '--with-spellrelax'])
 
 
+class TestLexdModule(TestModule, unittest.TestCase):
+    @classmethod
+    def setUpClass(cls):
+        apertium_init.main([cls.name, '--analyser=lexd'])
+
+
 class TestUnknownCodeModule(TestModule, unittest.TestCase):
-    name = 'bkl'
+    name = 'qaa'
     path = make_path(name)
 
     @classmethod
@@ -153,7 +181,8 @@ def tearDownClass(cls):
 
     def test_builds(self):
         autogen_args = ['--with-lang1=../{}'.format(self.path1), '--with-lang2=../{}'.format(self.path2)]
-        build(self.path, autogen_args=autogen_args)
+        autogen(self.path, autogen_args)
+        build(self.path)
 
 
 class TestDefaultPair(TestPair, unittest.TestCase):