Modul:data consistency check
WT:DATACHECK
WT:FSCK
This module checks the validity and internal consistency of the language, language family, and script data used on Wiktionary: the modules in Category:Language data modules as well as Module:scripts/data.
Output
szerkesztésDiscrepancies detected:
- ausztroázsiai family (
aav
) has a canonical name that is not unique; it is also used by the codemkh
. - Kiwaian family (
paa-kiw
) has no child families or languages. - Buyang family (
qfa-buy
) has no child families or languages. - Gelao family (
qfa-gel
) has no child families or languages. - Bari family (
sdv-bri
) has no child families or languages. - Dinka-Nuer family (
sdv-dnu
) has no child families or languages. - Lotuko-Maa family (
sdv-lma
) has no child families or languages. - Northern Luo family (
sdv-lon
) has no child families or languages. - Southern Luo family (
sdv-los
) has no child families or languages. - Nandi-Markweta family (
sdv-nma
) has no child families or languages. - Teso-Turkana family (
sdv-ttu
) has no child families or languages. - Lalo family (
tbq-lal
) has no child families or languages.
- The canonical name ős-khasian (
aav-khs-pro
) is missing. - proto-khasian, the canonical name for the code
aav-khs-pro
, is wrong; it should be ős-khasian. - The canonical name ős-nicobarese (
aav-nic-pro
) is missing. - proto-nicobarese, the canonical name for the code
aav-nic-pro
, is wrong; it should be ős-nicobarese. - proto-pnar-khasi-lyngngam, the canonical name for the code
aav-pkl-pro
, is wrong; it should be ős-pnar-khasi-lyngngam. - The canonical name ős-pnar-khasi-lyngngam (
aav-pkl-pro
) is missing. - proto-austroasiatic, the canonical name for the code
aav-pro
, is wrong; it should be ős-austroasiatic. - The canonical name ős-austroasiatic (
aav-pro
) is missing. - The canonical name ős-afro-asiatic (
afa-pro
) is missing. - proto-afro-asiatic, the canonical name for the code
afa-pro
, is wrong; it should be ős-afro-asiatic. - proto-algonquian, the canonical name for the code
alg-pro
, is wrong; it should be ős-algonquian. - The canonical name ős-algonquian (
alg-pro
) is missing. - proto-bua, the canonical name for the code
alv-bua-pro
, is wrong; it should be ős-bua. - The canonical name ős-bua (
alv-bua-pro
) is missing. - proto-cangin, the canonical name for the code
alv-cng-pro
, is wrong; it should be ős-cangin. - The canonical name ős-cangin (
alv-cng-pro
) is missing. - The canonical name ős-edoid (
alv-edo-pro
) is missing. - proto-edoid, the canonical name for the code
alv-edo-pro
, is wrong; it should be ős-edoid. - proto-fali, the canonical name for the code
alv-fli-pro
, is wrong; it should be ős-fali. - The canonical name ős-fali (
alv-fli-pro
) is missing. - The canonical name ős-gbe (
alv-gbe-pro
) is missing. - proto-gbe, the canonical name for the code
alv-gbe-pro
, is wrong; it should be ős-gbe. - proto-guang, the canonical name for the code
alv-gng-pro
, is wrong; it should be ős-guang. - The canonical name ős-guang (
alv-gng-pro
) is missing. - proto-central togo, the canonical name for the code
alv-gtm-pro
, is wrong; it should be ős-central togo. - The canonical name ős-central togo (
alv-gtm-pro
) is missing. - The canonical name ős-heiban (
alv-hei-pro
) is missing. - proto-heiban, the canonical name for the code
alv-hei-pro
, is wrong; it should be ős-heiban. - The canonical name ős-igboid (
alv-igb-pro
) is missing. - proto-igboid, the canonical name for the code
alv-igb-pro
, is wrong; it should be ős-igboid. - The canonical name ős-kwa (
alv-kwa-pro
) is missing. - proto-kwa, the canonical name for the code
alv-kwa-pro
, is wrong; it should be ős-kwa. - The canonical name ős-mumuye (
alv-mum-pro
) is missing. - proto-mumuye, the canonical name for the code
alv-mum-pro
, is wrong; it should be ős-mumuye. - The canonical name ős-nupoid (
alv-nup-pro
) is missing. - proto-nupoid, the canonical name for the code
alv-nup-pro
, is wrong; it should be ős-nupoid. - proto-atlantic-congo, the canonical name for the code
alv-pro
, is wrong; it should be ős-atlantic-congo. - The canonical name ős-atlantic-congo (
alv-pro
) is missing. - The canonical name ős-yoruboid (
alv-yor-pro
) is missing. - proto-yoruboid, the canonical name for the code
alv-yor-pro
, is wrong; it should be ős-yoruboid. - proto-apachean, the canonical name for the code
apa-pro
, is wrong; it should be ős-apachean. - The canonical name ős-apachean (
apa-pro
) is missing. - proto-algic, the canonical name for the code
aql-pro
, is wrong; it should be ős-algic. - The canonical name ős-algic (
aql-pro
) is missing. - The canonical name ős-athabaskan (
ath-pro
) is missing. - proto-athabaskan, the canonical name for the code
ath-pro
, is wrong; it should be ős-athabaskan. - The canonical name ős-arawa (
auf-pro
) is missing. - proto-arawa, the canonical name for the code
auf-pro
, is wrong; it should be ős-arawa. - The canonical name ős-arnhem (
aus-arn-pro
) is missing. - proto-arnhem, the canonical name for the code
aus-arn-pro
, is wrong; it should be ős-arnhem. - The canonical name ős-central new south wales (
aus-cww-pro
) is missing. - proto-central new south wales, the canonical name for the code
aus-cww-pro
, is wrong; it should be ős-central new south wales. - The canonical name ős-daly (
aus-dal-pro
) is missing. - proto-daly, the canonical name for the code
aus-dal-pro
, is wrong; it should be ős-daly. - The canonical name ős-nyulnyulan (
aus-nyu-pro
) is missing. - proto-nyulnyulan, the canonical name for the code
aus-nyu-pro
, is wrong; it should be ős-nyulnyulan. - The canonical name ős-pama-nyungan (
aus-pam-pro
) is missing. - proto-pama-nyungan, the canonical name for the code
aus-pam-pro
, is wrong; it should be ős-pama-nyungan. - proto-iwaidjan, the canonical name for the code
aus-wdj-pro
, is wrong; it should be ős-iwaidjan. - The canonical name ős-iwaidjan (
aus-wdj-pro
) is missing. - The canonical name ős-amuesha-chamicuro (
awd-amc-pro
) is missing. - proto-amuesha-chamicuro, the canonical name for the code
awd-amc-pro
, is wrong; it should be ős-amuesha-chamicuro. - The canonical name ős-kampa (
awd-kmp-pro
) is missing. - proto-kampa, the canonical name for the code
awd-kmp-pro
, is wrong; it should be ős-kampa. - proto-nawiki, the canonical name for the code
awd-nwk-pro
, is wrong; it should be ős-nawiki. - The canonical name ős-nawiki (
awd-nwk-pro
) is missing. - The canonical name ős-arawak (
awd-pro
) is missing. - proto-arawak, the canonical name for the code
awd-pro
, is wrong; it should be ős-arawak. - proto-paresi-waura, the canonical name for the code
awd-prw-pro
, is wrong; it should be ős-paresi-waura. - The canonical name ős-paresi-waura (
awd-prw-pro
) is missing. - The canonical name ős-ta-arawak (
awd-taa-pro
) is missing. - proto-ta-arawak, the canonical name for the code
awd-taa-pro
, is wrong; it should be ős-ta-arawak. - proto-cupan, the canonical name for the code
azc-cup-pro
, is wrong; it should be ős-cupan. - The canonical name ős-cupan (
azc-cup-pro
) is missing. - The canonical name ős-nahuan (
azc-nah-pro
) is missing. - proto-nahuan, the canonical name for the code
azc-nah-pro
, is wrong; it should be ős-nahuan. - The canonical name ős-numic (
azc-num-pro
) is missing. - proto-numic, the canonical name for the code
azc-num-pro
, is wrong; it should be ős-numic. - proto-uto-aztecan, the canonical name for the code
azc-pro
, is wrong; it should be ős-uto-aztecan. - The canonical name ős-uto-aztecan (
azc-pro
) is missing. - proto-takic, the canonical name for the code
azc-tak-pro
, is wrong; it should be ős-takic. - The canonical name ős-takic (
azc-tak-pro
) is missing. - babalia creole arab, the canonical name for the code
bbz
, is wrong; it should be babalia kreol arab. - The canonical name babalia kreol arab (
bbz
) is missing. - The canonical name ős-berber (
ber-pro
) is missing. - proto-berber, the canonical name for the code
ber-pro
, is wrong; it should be ős-berber. - proto-nguni, the canonical name for the code
bnt-ngu-pro
, is wrong; it should be ős-nguni. - The canonical name ős-nguni (
bnt-ngu-pro
) is missing. - proto-bantu, the canonical name for the code
bnt-pro
, is wrong; it should be ős-bantu. - The canonical name ős-bantu (
bnt-pro
) is missing. - The canonical name ős-sotho-tswana (
bnt-sts-pro
) is missing. - proto-sotho-tswana, the canonical name for the code
bnt-sts-pro
, is wrong; it should be ős-sotho-tswana. - proto-batak, the canonical name for the code
btk-pro
, is wrong; it should be ős-batak. - The canonical name ős-batak (
btk-pro
) is missing. - proto-abkhaz-abaza, the canonical name for the code
cau-abz-pro
, is wrong; it should be ős-abkhaz-abaza. - The canonical name ős-abkhaz-abaza (
cau-abz-pro
) is missing. - The canonical name ős-avaro-andian (
cau-ava-pro
) is missing. - proto-avaro-andian, the canonical name for the code
cau-ava-pro
, is wrong; it should be ős-avaro-andian. - The canonical name ős-circassian (
cau-cir-pro
) is missing. - proto-circassian, the canonical name for the code
cau-cir-pro
, is wrong; it should be ős-circassian. - proto-dargva, the canonical name for the code
cau-drg-pro
, is wrong; it should be ős-dargva. - The canonical name ős-dargva (
cau-drg-pro
) is missing. - The canonical name ős-lezghian (
cau-lzg-pro
) is missing. - proto-lezghian, the canonical name for the code
cau-lzg-pro
, is wrong; it should be ős-lezghian. - The canonical name ős-northeast caucasian (
cau-nec-pro
) is missing. - proto-northeast caucasian, the canonical name for the code
cau-nec-pro
, is wrong; it should be ős-northeast caucasian. - The canonical name ős-nakh (
cau-nkh-pro
) is missing. - proto-nakh, the canonical name for the code
cau-nkh-pro
, is wrong; it should be ős-nakh. - proto-northwest caucasian, the canonical name for the code
cau-nwc-pro
, is wrong; it should be ős-northwest caucasian. - The canonical name ős-northwest caucasian (
cau-nwc-pro
) is missing. - The canonical name ős-tsezian (
cau-tsz-pro
) is missing. - proto-tsezian, the canonical name for the code
cau-tsz-pro
, is wrong; it should be ős-tsezian. - proto-chibchan, the canonical name for the code
cba-pro
, is wrong; it should be ős-chibchan. - The canonical name ős-chibchan (
cba-pro
) is missing. - proto-north caucasian, the canonical name for the code
ccn-pro
, is wrong; it should be ős-north caucasian. - The canonical name ős-north caucasian (
ccn-pro
) is missing. - proto-georgian-zan, the canonical name for the code
ccs-gzn-pro
, is wrong; it should be ős-georgian-zan. - The canonical name ős-georgian-zan (
ccs-gzn-pro
) is missing. - The canonical name ős-kartvelian (
ccs-pro
) is missing. - proto-kartvelian, the canonical name for the code
ccs-pro
, is wrong; it should be ős-kartvelian. - proto-central chadic, the canonical name for the code
cdc-cbm-pro
, is wrong; it should be ős-central chadic. - The canonical name ős-central chadic (
cdc-cbm-pro
) is missing. - proto-masa, the canonical name for the code
cdc-mas-pro
, is wrong; it should be ős-masa. - The canonical name ős-masa (
cdc-mas-pro
) is missing. - proto-chadic, the canonical name for the code
cdc-pro
, is wrong; it should be ős-chadic. - The canonical name ős-chadic (
cdc-pro
) is missing. - The canonical name ős-caddoan (
cdd-pro
) is missing. - proto-caddoan, the canonical name for the code
cdd-pro
, is wrong; it should be ős-caddoan. - proto-brythonic, the canonical name for the code
cel-bry-pro
, is wrong; it should be ős-brythonic. - The canonical name ős-brythonic (
cel-bry-pro
) is missing. - proto-celtic, the canonical name for the code
cel-pro
, is wrong; it should be ős-celtic. - The canonical name ős-celtic (
cel-pro
) is missing. - The canonical name ős-chimakuan (
chi-pro
) is missing. - proto-chimakuan, the canonical name for the code
chi-pro
, is wrong; it should be ős-chimakuan. - The canonical name ős-chamic (
cmc-pro
) is missing. - proto-chamic, the canonical name for the code
cmc-pro
, is wrong; it should be ős-chamic. - The canonical name ős-bongo-bagirmi (
csu-bba-pro
) is missing. - proto-bongo-bagirmi, the canonical name for the code
csu-bba-pro
, is wrong; it should be ős-bongo-bagirmi. - proto-mangbetu, the canonical name for the code
csu-maa-pro
, is wrong; it should be ős-mangbetu. - The canonical name ős-mangbetu (
csu-maa-pro
) is missing. - The canonical name ős-central sudanic (
csu-pro
) is missing. - proto-central sudanic, the canonical name for the code
csu-pro
, is wrong; it should be ős-central sudanic. - proto-sara, the canonical name for the code
csu-sar-pro
, is wrong; it should be ős-sara. - The canonical name ős-sara (
csu-sar-pro
) is missing. - proto-cushitic, the canonical name for the code
cus-pro
, is wrong; it should be ős-cushitic. - The canonical name ős-cushitic (
cus-pro
) is missing. - proto-western mande, the canonical name for the code
dmn-mdw-pro
, is wrong; it should be ős-western mande. - The canonical name ős-western mande (
dmn-mdw-pro
) is missing. - proto-mande, the canonical name for the code
dmn-pro
, is wrong; it should be ős-mande. - The canonical name ős-mande (
dmn-pro
) is missing. - proto-dravidian, the canonical name for the code
dra-pro
, is wrong; it should be ős-dravidian. - The canonical name ős-dravidian (
dra-pro
) is missing. - proto-rukai, the canonical name for the code
dru-pro
, is wrong; it should be ős-rukai. - The canonical name ős-rukai (
dru-pro
) is missing. - The canonical name ős-eskimo (
esx-esk-pro
) is missing. - proto-eskimo, the canonical name for the code
esx-esk-pro
, is wrong; it should be ős-eskimo. - proto-inuit, the canonical name for the code
esx-inu-pro
, is wrong; it should be ős-inuit. - The canonical name ős-inuit (
esx-inu-pro
) is missing. - proto-eskimo-aleut, the canonical name for the code
esx-pro
, is wrong; it should be ős-eskimo-aleut. - The canonical name ős-eskimo-aleut (
esx-pro
) is missing. - proto-basque, the canonical name for the code
euq-pro
, is wrong; it should be ős-basque. - The canonical name ős-basque (
euq-pro
) is missing. - proto-finnic, the canonical name for the code
fiu-fin-pro
, is wrong; it should be ős-finnic. - The canonical name ős-finnic (
fiu-fin-pro
) is missing. - proto-germanic, the canonical name for the code
gem-pro
, is wrong; it should be ős-germanic. - The canonical name ős-germanic (
gem-pro
) is missing. - proto-norse, the canonical name for the code
gmq-pro
, is wrong; it should be ős-norse. - The canonical name ős-norse (
gmq-pro
) is missing. - proto-west germanic, the canonical name for the code
gmw-pro
, is wrong; it should be ős-west germanic. - The canonical name ős-west germanic (
gmw-pro
) is missing. - The canonical name ős-hellenic (
grk-pro
) is missing. - proto-hellenic, the canonical name for the code
grk-pro
, is wrong; it should be ős-hellenic. - The canonical name ős-hmong (
hmn-pro
) is missing. - proto-hmong, the canonical name for the code
hmn-pro
, is wrong; it should be ős-hmong. - The canonical name ős-mien (
hmx-mie-pro
) is missing. - proto-mien, the canonical name for the code
hmx-mie-pro
, is wrong; it should be ős-mien. - proto-hmong-mien, the canonical name for the code
hmx-pro
, is wrong; it should be ős-hmong-mien. - The canonical name ős-hmong-mien (
hmx-pro
) is missing. - proto-armenian, the canonical name for the code
hyx-pro
, is wrong; it should be ős-armenian. - The canonical name ős-armenian (
hyx-pro
) is missing. - The canonical name ős-nuristani (
iir-nur-pro
) is missing. - proto-nuristani, the canonical name for the code
iir-nur-pro
, is wrong; it should be ős-nuristani. - The canonical name ős-indo-iranian (
iir-pro
) is missing. - proto-indo-iranian, the canonical name for the code
iir-pro
, is wrong; it should be ős-indo-iranian. - proto-ijoid, the canonical name for the code
ijo-pro
, is wrong; it should be ős-ijoid. - The canonical name ős-ijoid (
ijo-pro
) is missing. - proto-dardic, the canonical name for the code
inc-dar-pro
, is wrong; it should be ős-dardic. - The canonical name ős-dardic (
inc-dar-pro
) is missing. - The canonical name ős-indo-aryan (
inc-pro
) is missing. - proto-indo-aryan, the canonical name for the code
inc-pro
, is wrong; it should be ős-indo-aryan. - The canonical name ős-anatolian (
ine-ana-pro
) is missing. - proto-anatolian, the canonical name for the code
ine-ana-pro
, is wrong; it should be ős-anatolian. - The canonical name ős-balti-szláv (
ine-bsl-pro
) is missing. - proto-balto-slavic, the canonical name for the code
ine-bsl-pro
, is wrong; it should be ős-balti-szláv. - The canonical name ősindoeurópai (
ine-pro
) is missing. - proto-indo-european, the canonical name for the code
ine-pro
, is wrong; it should be ősindoeurópai. - The canonical name ős-tocharian (
ine-toc-pro
) is missing. - proto-tocharian, the canonical name for the code
ine-toc-pro
, is wrong; it should be ős-tocharian. - The canonical name ingus (
inh
) is missing. - ingush, the canonical name for the code
inh
, is wrong; it should be ingus. - The canonical name ős-komisenian (
ira-kms-pro
) is missing. - proto-komisenian, the canonical name for the code
ira-kms-pro
, is wrong; it should be ős-komisenian. - The canonical name ős-munji-yidgha (
ira-mny-pro
) is missing. - proto-munji-yidgha, the canonical name for the code
ira-mny-pro
, is wrong; it should be ős-munji-yidgha. - The canonical name ős-medo-parthian (
ira-mpr-pro
) is missing. - proto-medo-parthian, the canonical name for the code
ira-mpr-pro
, is wrong; it should be ős-medo-parthian. - proto-pathan, the canonical name for the code
ira-pat-pro
, is wrong; it should be ős-pathan. - The canonical name ős-pathan (
ira-pat-pro
) is missing. - proto-iranian, the canonical name for the code
ira-pro
, is wrong; it should be ős-iranian. - The canonical name ős-iranian (
ira-pro
) is missing. - proto-sogdic, the canonical name for the code
ira-sgc-pro
, is wrong; it should be ős-sogdic. - The canonical name ős-sogdic (
ira-sgc-pro
) is missing. - proto-sanglechi-ishkashimi, the canonical name for the code
ira-sgi-pro
, is wrong; it should be ős-sanglechi-ishkashimi. - The canonical name ős-sanglechi-ishkashimi (
ira-sgi-pro
) is missing. - The canonical name ős-shughni-roshani (
ira-shr-pro
) is missing. - proto-shughni-roshani, the canonical name for the code
ira-shr-pro
, is wrong; it should be ős-shughni-roshani. - The canonical name ős-shughni-yazghulami (
ira-shy-pro
) is missing. - proto-shughni-yazghulami, the canonical name for the code
ira-shy-pro
, is wrong; it should be ős-shughni-yazghulami. - The canonical name ős-shughni-yazghulami-munji (
ira-sym-pro
) is missing. - proto-shughni-yazghulami-munji, the canonical name for the code
ira-sym-pro
, is wrong; it should be ős-shughni-yazghulami-munji. - The canonical name ős-zaza-gorani (
ira-zgr-pro
) is missing. - proto-zaza-gorani, the canonical name for the code
ira-zgr-pro
, is wrong; it should be ős-zaza-gorani. - proto-iroquoian, the canonical name for the code
iro-pro
, is wrong; it should be ős-iroquoian. - The canonical name ős-iroquoian (
iro-pro
) is missing. - proto-italic, the canonical name for the code
itc-pro
, is wrong; it should be ős-italic. - The canonical name ős-italic (
itc-pro
) is missing. - The canonical name judeo-olasz (
itk
) is missing. - judeo-italian, the canonical name for the code
itk
, is wrong; it should be judeo-olasz. - ingrian, the canonical name for the code
izh
, is wrong; it should be izsór. - The canonical name izsór (
izh
) is missing. - proto-japonic, the canonical name for the code
jpx-pro
, is wrong; it should be ős-japonic. - The canonical name ős-japonic (
jpx-pro
) is missing. - proto-ryukyuan, the canonical name for the code
jpx-ryu-pro
, is wrong; it should be ős-ryukyuan. - The canonical name ős-ryukyuan (
jpx-ryu-pro
) is missing. - The canonical name ős-karen (
kar-pro
) is missing. - proto-karen, the canonical name for the code
kar-pro
, is wrong; it should be ős-karen. - proto-khoe, the canonical name for the code
khi-kho-pro
, is wrong; it should be ős-khoe. - The canonical name ős-khoe (
khi-kho-pro
) is missing. - northern kurdish, the canonical name for the code
kmr
, is wrong; it should be északi kurd. - The canonical name északi kurd (
kmr
) is missing. - The canonical name ős-kru (
kro-pro
) is missing. - proto-kru, the canonical name for the code
kro-pro
, is wrong; it should be ős-kru. - The canonical name lív (
liv
) is missing. - livonian, the canonical name for the code
liv
, is wrong; it should be lív. - proto-atayalic, the canonical name for the code
map-ata-pro
, is wrong; it should be ős-atayalic. - The canonical name ős-atayalic (
map-ata-pro
) is missing. - proto-austronesian, the canonical name for the code
map-pro
, is wrong; it should be ős-austronesian. - The canonical name ős-austronesian (
map-pro
) is missing. - proto-aslian, the canonical name for the code
mkh-asl-pro
, is wrong; it should be ős-aslian. - The canonical name ős-aslian (
mkh-asl-pro
) is missing. - proto-bahnaric, the canonical name for the code
mkh-ban-pro
, is wrong; it should be ős-bahnaric. - The canonical name ős-bahnaric (
mkh-ban-pro
) is missing. - proto-katuic, the canonical name for the code
mkh-kat-pro
, is wrong; it should be ős-katuic. - The canonical name ős-katuic (
mkh-kat-pro
) is missing. - proto-khmuic, the canonical name for the code
mkh-khm-pro
, is wrong; it should be ős-khmuic. - The canonical name ős-khmuic (
mkh-khm-pro
) is missing. - proto-khmeric, the canonical name for the code
mkh-kmr-pro
, is wrong; it should be ős-khmeric. - The canonical name ős-khmeric (
mkh-kmr-pro
) is missing. - proto-monic, the canonical name for the code
mkh-mnc-pro
, is wrong; it should be ős-monic. - The canonical name ős-monic (
mkh-mnc-pro
) is missing. - proto-palaungic, the canonical name for the code
mkh-pal-pro
, is wrong; it should be ős-palaungic. - The canonical name ős-palaungic (
mkh-pal-pro
) is missing. - proto-pearic, the canonical name for the code
mkh-pea-pro
, is wrong; it should be ős-pearic. - The canonical name ős-pearic (
mkh-pea-pro
) is missing. - The canonical name ős-pakanic (
mkh-pkn-pro
) is missing. - proto-pakanic, the canonical name for the code
mkh-pkn-pro
, is wrong; it should be ős-pakanic. - proto-mon-khmer, the canonical name for the code
mkh-pro
, is wrong; it should be ős-mon-khmer. - The canonical name ős-mon-khmer (
mkh-pro
) is missing. - proto-vietic, the canonical name for the code
mkh-vie-pro
, is wrong; it should be ős-vietic. - The canonical name ős-vietic (
mkh-vie-pro
) is missing. - proto-munda, the canonical name for the code
mun-pro
, is wrong; it should be ős-munda. - The canonical name ős-munda (
mun-pro
) is missing. - proto-mayan, the canonical name for the code
myn-pro
, is wrong; it should be ős-mayan. - The canonical name ős-mayan (
myn-pro
) is missing. - The canonical name ős-chumash (
nai-chu-pro
) is missing. - proto-chumash, the canonical name for the code
nai-chu-pro
, is wrong; it should be ős-chumash. - The canonical name ős-chinookan (
nai-ckn-pro
) is missing. - proto-chinookan, the canonical name for the code
nai-ckn-pro
, is wrong; it should be ős-chinookan. - proto-kalapuyan, the canonical name for the code
nai-klp-pro
, is wrong; it should be ős-kalapuyan. - The canonical name ős-kalapuyan (
nai-klp-pro
) is missing. - The canonical name ős-maidun (
nai-mdu-pro
) is missing. - proto-maidun, the canonical name for the code
nai-mdu-pro
, is wrong; it should be ős-maidun. - The canonical name ős-mixe-zoque (
nai-miz-pro
) is missing. - proto-mixe-zoque, the canonical name for the code
nai-miz-pro
, is wrong; it should be ős-mixe-zoque. - proto-plateau penutian, the canonical name for the code
nai-plp-pro
, is wrong; it should be ős-plateau penutian. - The canonical name ős-plateau penutian (
nai-plp-pro
) is missing. - The canonical name ős-pomo (
nai-pom-pro
) is missing. - proto-pomo, the canonical name for the code
nai-pom-pro
, is wrong; it should be ős-pomo. - The canonical name ős-siouan-catawban (
nai-sca-pro
) is missing. - proto-siouan-catawban, the canonical name for the code
nai-sca-pro
, is wrong; it should be ős-siouan-catawban. - proto-totozoquean, the canonical name for the code
nai-tot-pro
, is wrong; it should be ős-totozoquean. - The canonical name ős-totozoquean (
nai-tot-pro
) is missing. - proto-tsimshianic, the canonical name for the code
nai-tsi-pro
, is wrong; it should be ős-tsimshianic. - The canonical name ős-tsimshianic (
nai-tsi-pro
) is missing. - The canonical name ős-utian (
nai-utn-pro
) is missing. - proto-utian, the canonical name for the code
nai-utn-pro
, is wrong; it should be ős-utian. - The canonical name ős-trans-new guinea (
ngf-pro
) is missing. - proto-trans-new guinea, the canonical name for the code
ngf-pro
, is wrong; it should be ős-trans-new guinea. - The canonical name ős-benue-congo (
nic-bco-pro
) is missing. - proto-benue-congo, the canonical name for the code
nic-bco-pro
, is wrong; it should be ős-benue-congo. - The canonical name ős-bantoid (
nic-bod-pro
) is missing. - proto-bantoid, the canonical name for the code
nic-bod-pro
, is wrong; it should be ős-bantoid. - proto-eastern oti-volta, the canonical name for the code
nic-eov-pro
, is wrong; it should be ős-eastern oti-volta. - The canonical name ős-eastern oti-volta (
nic-eov-pro
) is missing. - proto-gurunsi, the canonical name for the code
nic-gns-pro
, is wrong; it should be ős-gurunsi. - The canonical name ős-gurunsi (
nic-gns-pro
) is missing. - proto-grassfields, the canonical name for the code
nic-grf-pro
, is wrong; it should be ős-grassfields. - The canonical name ős-grassfields (
nic-grf-pro
) is missing. - proto-gur, the canonical name for the code
nic-gur-pro
, is wrong; it should be ős-gur. - The canonical name ős-gur (
nic-gur-pro
) is missing. - The canonical name ős-jukunoid (
nic-jkn-pro
) is missing. - proto-jukunoid, the canonical name for the code
nic-jkn-pro
, is wrong; it should be ős-jukunoid. - proto-lower cross river, the canonical name for the code
nic-lcr-pro
, is wrong; it should be ős-lower cross river. - The canonical name ős-lower cross river (
nic-lcr-pro
) is missing. - proto-ogoni, the canonical name for the code
nic-ogo-pro
, is wrong; it should be ős-ogoni. - The canonical name ős-ogoni (
nic-ogo-pro
) is missing. - The canonical name ős-oti-volta (
nic-ovo-pro
) is missing. - proto-oti-volta, the canonical name for the code
nic-ovo-pro
, is wrong; it should be ős-oti-volta. - proto-plateau, the canonical name for the code
nic-plt-pro
, is wrong; it should be ős-plateau. - The canonical name ős-plateau (
nic-plt-pro
) is missing. - proto-niger-congo, the canonical name for the code
nic-pro
, is wrong; it should be ős-niger-congo. - The canonical name ős-niger-congo (
nic-pro
) is missing. - proto-ubangian, the canonical name for the code
nic-ubg-pro
, is wrong; it should be ős-ubangian. - The canonical name ős-ubangian (
nic-ubg-pro
) is missing. - The canonical name ős-upper cross river (
nic-ucr-pro
) is missing. - proto-upper cross river, the canonical name for the code
nic-ucr-pro
, is wrong; it should be ős-upper cross river. - proto-volta-congo, the canonical name for the code
nic-vco-pro
, is wrong; it should be ős-volta-congo. - The canonical name ős-volta-congo (
nic-vco-pro
) is missing. - The canonical name ős-nubian (
nub-pro
) is missing. - proto-nubian, the canonical name for the code
nub-pro
, is wrong; it should be ős-nubian. - The canonical name ős-chatino (
omq-cha-pro
) is missing. - proto-chatino, the canonical name for the code
omq-cha-pro
, is wrong; it should be ős-chatino. - proto-mazatec, the canonical name for the code
omq-maz-pro
, is wrong; it should be ős-mazatec. - The canonical name ős-mazatec (
omq-maz-pro
) is missing. - proto-mixtecan, the canonical name for the code
omq-mix-pro
, is wrong; it should be ős-mixtecan. - The canonical name ős-mixtecan (
omq-mix-pro
) is missing. - The canonical name ős-mixtec (
omq-mxt-pro
) is missing. - proto-mixtec, the canonical name for the code
omq-mxt-pro
, is wrong; it should be ős-mixtec. - The canonical name ős-oto-pamean (
omq-otp-pro
) is missing. - proto-oto-pamean, the canonical name for the code
omq-otp-pro
, is wrong; it should be ős-oto-pamean. - proto-oto-manguean, the canonical name for the code
omq-pro
, is wrong; it should be ős-oto-manguean. - The canonical name ős-oto-manguean (
omq-pro
) is missing. - proto-trique, the canonical name for the code
omq-tri-pro
, is wrong; it should be ős-trique. - The canonical name ős-trique (
omq-tri-pro
) is missing. - The canonical name ős-zapotecan (
omq-zap-pro
) is missing. - proto-zapotecan, the canonical name for the code
omq-zap-pro
, is wrong; it should be ős-zapotecan. - The canonical name ős-zapotec (
omq-zpc-pro
) is missing. - proto-zapotec, the canonical name for the code
omq-zpc-pro
, is wrong; it should be ős-zapotec. - proto-aroid, the canonical name for the code
omv-aro-pro
, is wrong; it should be ős-aroid. - The canonical name ős-aroid (
omv-aro-pro
) is missing. - proto-dizoid, the canonical name for the code
omv-diz-pro
, is wrong; it should be ős-dizoid. - The canonical name ős-dizoid (
omv-diz-pro
) is missing. - proto-omotic, the canonical name for the code
omv-pro
, is wrong; it should be ős-omotic. - The canonical name ős-omotic (
omv-pro
) is missing. - The canonical name óorosz (
orv
) is missing. - ó-keleti-szláv, the canonical name for the code
orv
, is wrong; it should be óorosz. - proto-ossetic, the canonical name for the code
os-pro
, is wrong; it should be ős-ossetic. - The canonical name ős-ossetic (
os-pro
) is missing. - proto-otomi, the canonical name for the code
oto-otm-pro
, is wrong; it should be ős-otomi. - The canonical name ős-otomi (
oto-otm-pro
) is missing. - The canonical name ős-otomian (
oto-pro
) is missing. - proto-otomian, the canonical name for the code
oto-pro
, is wrong; it should be ős-otomian. - pennsylvania german, the canonical name for the code
pdc
, is wrong; it should be pennsylvaniai német. - The canonical name pennsylvaniai német (
pdc
) is missing. - The canonical name ős-kalamian (
phi-kal-pro
) is missing. - proto-kalamian, the canonical name for the code
phi-kal-pro
, is wrong; it should be ős-kalamian. - proto-philippine, the canonical name for the code
phi-pro
, is wrong; it should be ős-philippine. - The canonical name ős-philippine (
phi-pro
) is missing. - piedmontese, the canonical name for the code
pms
, is wrong; it should be piemonti. - The canonical name piemonti (
pms
) is missing. - proto-bungku-tolaki, the canonical name for the code
poz-btk-pro
, is wrong; it should be ős-bungku-tolaki. - The canonical name ős-bungku-tolaki (
poz-btk-pro
) is missing. - proto-central-eastern malayo-polynesian, the canonical name for the code
poz-cet-pro
, is wrong; it should be ős-central-eastern malayo-polynesian. - The canonical name ős-central-eastern malayo-polynesian (
poz-cet-pro
) is missing. - The canonical name ős-halmahera-cenderawasih (
poz-hce-pro
) is missing. - proto-halmahera-cenderawasih, the canonical name for the code
poz-hce-pro
, is wrong; it should be ős-halmahera-cenderawasih. - proto-lampungic, the canonical name for the code
poz-lgx-pro
, is wrong; it should be ős-lampungic. - The canonical name ős-lampungic (
poz-lgx-pro
) is missing. - The canonical name ős-malayo-chamic (
poz-mcm-pro
) is missing. - proto-malayo-chamic, the canonical name for the code
poz-mcm-pro
, is wrong; it should be ős-malayo-chamic. - proto-malayic, the canonical name for the code
poz-mly-pro
, is wrong; it should be ős-malayic. - The canonical name ős-malayic (
poz-mly-pro
) is missing. - The canonical name ős-malayo-sumbawan (
poz-msa-pro
) is missing. - proto-malayo-sumbawan, the canonical name for the code
poz-msa-pro
, is wrong; it should be ős-malayo-sumbawan. - The canonical name ős-oceanic (
poz-oce-pro
) is missing. - proto-oceanic, the canonical name for the code
poz-oce-pro
, is wrong; it should be ős-oceanic. - The canonical name ős-eastern polynesian (
poz-pep-pro
) is missing. - proto-eastern polynesian, the canonical name for the code
poz-pep-pro
, is wrong; it should be ős-eastern polynesian. - proto-nuclear polynesian, the canonical name for the code
poz-pnp-pro
, is wrong; it should be ős-nuclear polynesian. - The canonical name ős-nuclear polynesian (
poz-pnp-pro
) is missing. - proto-polynesian, the canonical name for the code
poz-pol-pro
, is wrong; it should be ős-polynesian. - The canonical name ős-polynesian (
poz-pol-pro
) is missing. - The canonical name ős-malayo-polynesian (
poz-pro
) is missing. - proto-malayo-polynesian, the canonical name for the code
poz-pro
, is wrong; it should be ős-malayo-polynesian. - The canonical name ős-south sulawesi (
poz-ssw-pro
) is missing. - proto-south sulawesi, the canonical name for the code
poz-ssw-pro
, is wrong; it should be ős-south sulawesi. - The canonical name ős-sunda-sulawesi (
poz-sus-pro
) is missing. - proto-sunda-sulawesi, the canonical name for the code
poz-sus-pro
, is wrong; it should be ős-sunda-sulawesi. - The canonical name ős-north sarawak (
poz-swa-pro
) is missing. - proto-north sarawak, the canonical name for the code
poz-swa-pro
, is wrong; it should be ős-north sarawak. - The canonical name ős-eastern malayo-polynesian (
pqe-pro
) is missing. - proto-eastern malayo-polynesian, the canonical name for the code
pqe-pro
, is wrong; it should be ős-eastern malayo-polynesian. - proto-great andamanese, the canonical name for the code
qfa-adm-pro
, is wrong; it should be ős-great andamanese. - The canonical name ős-great andamanese (
qfa-adm-pro
) is missing. - proto-chukotko-kamchatkan, the canonical name for the code
qfa-cka-pro
, is wrong; it should be ős-chukotko-kamchatkan. - The canonical name ős-chukotko-kamchatkan (
qfa-cka-pro
) is missing. - proto-hurro-urartian, the canonical name for the code
qfa-hur-pro
, is wrong; it should be ős-hurro-urartian. - The canonical name ős-hurro-urartian (
qfa-hur-pro
) is missing. - proto-kadu, the canonical name for the code
qfa-kad-pro
, is wrong; it should be ős-kadu. - The canonical name ős-kadu (
qfa-kad-pro
) is missing. - The canonical name ős-kam-sui (
qfa-kms-pro
) is missing. - proto-kam-sui, the canonical name for the code
qfa-kms-pro
, is wrong; it should be ős-kam-sui. - proto-korean, the canonical name for the code
qfa-kor-pro
, is wrong; it should be ős-korean. - The canonical name ős-korean (
qfa-kor-pro
) is missing. - proto-kra, the canonical name for the code
qfa-kra-pro
, is wrong; it should be ős-kra. - The canonical name ős-kra (
qfa-kra-pro
) is missing. - The canonical name ős-hlai (
qfa-lic-pro
) is missing. - proto-hlai, the canonical name for the code
qfa-lic-pro
, is wrong; it should be ős-hlai. - proto-ong-be, the canonical name for the code
qfa-onb-pro
, is wrong; it should be ős-ong-be. - The canonical name ős-ong-be (
qfa-onb-pro
) is missing. - proto-ongan, the canonical name for the code
qfa-ong-pro
, is wrong; it should be ős-ongan. - The canonical name ős-ongan (
qfa-ong-pro
) is missing. - proto-kra-dai, the canonical name for the code
qfa-tak-pro
, is wrong; it should be ős-kra-dai. - The canonical name ős-kra-dai (
qfa-tak-pro
) is missing. - The canonical name ős-yeniseian (
qfa-yen-pro
) is missing. - proto-yeniseian, the canonical name for the code
qfa-yen-pro
, is wrong; it should be ős-yeniseian. - proto-yukaghir, the canonical name for the code
qfa-yuk-pro
, is wrong; it should be ős-yukaghir. - The canonical name ős-yukaghir (
qfa-yuk-pro
) is missing. - The canonical name ős-jê (
sai-jee-pro
) is missing. - proto-jê, the canonical name for the code
sai-jee-pro
, is wrong; it should be ős-jê. - The canonical name ős-salish (
sal-pro
) is missing. - proto-salish, the canonical name for the code
sal-pro
, is wrong; it should be ős-salish. - proto-daju, the canonical name for the code
sdv-daj-pro
, is wrong; it should be ős-daju. - The canonical name ős-daju (
sdv-daj-pro
) is missing. - The canonical name ős-eastern jebel (
sdv-eje-pro
) is missing. - proto-eastern jebel, the canonical name for the code
sdv-eje-pro
, is wrong; it should be ős-eastern jebel. - proto-nilotic, the canonical name for the code
sdv-nil-pro
, is wrong; it should be ős-nilotic. - The canonical name ős-nilotic (
sdv-nil-pro
) is missing. - proto-nyima, the canonical name for the code
sdv-nyi-pro
, is wrong; it should be ős-nyima. - The canonical name ős-nyima (
sdv-nyi-pro
) is missing. - The canonical name ős-taman (
sdv-tmn-pro
) is missing. - proto-taman, the canonical name for the code
sdv-tmn-pro
, is wrong; it should be ős-taman. - proto-semitic, the canonical name for the code
sem-pro
, is wrong; it should be ős-semitic. - The canonical name ős-semitic (
sem-pro
) is missing. - The canonical name ős-siouan (
sio-pro
) is missing. - proto-siouan, the canonical name for the code
sio-pro
, is wrong; it should be ős-siouan. - The canonical name ős-hrusish (
sit-hrs-pro
) is missing. - proto-hrusish, the canonical name for the code
sit-hrs-pro
, is wrong; it should be ős-hrusish. - The canonical name ős-kham (
sit-kha-pro
) is missing. - proto-kham, the canonical name for the code
sit-kha-pro
, is wrong; it should be ős-kham. - The canonical name ős-luish (
sit-luu-pro
) is missing. - proto-luish, the canonical name for the code
sit-luu-pro
, is wrong; it should be ős-luish. - The canonical name ős-sino-tibetan (
sit-pro
) is missing. - proto-sino-tibetan, the canonical name for the code
sit-pro
, is wrong; it should be ős-sino-tibetan. - The canonical name ős-tani (
sit-tan-pro
) is missing. - proto-tani, the canonical name for the code
sit-tan-pro
, is wrong; it should be ős-tani. - proto-slavic, the canonical name for the code
sla-pro
, is wrong; it should be ősszláv. - The canonical name ősszláv (
sla-pro
) is missing. - proto-samic, the canonical name for the code
smi-pro
, is wrong; it should be ős-samic. - The canonical name ős-samic (
smi-pro
) is missing. - proto-songhay, the canonical name for the code
son-pro
, is wrong; it should be ős-songhay. - The canonical name ős-songhay (
son-pro
) is missing. - The canonical name ős-albanian (
sqj-pro
) is missing. - proto-albanian, the canonical name for the code
sqj-pro
, is wrong; it should be ős-albanian. - proto-kuliak, the canonical name for the code
ssa-klk-pro
, is wrong; it should be ős-kuliak. - The canonical name ős-kuliak (
ssa-klk-pro
) is missing. - The canonical name ős-koman (
ssa-kom-pro
) is missing. - proto-koman, the canonical name for the code
ssa-kom-pro
, is wrong; it should be ős-koman. - proto-nilo-saharan, the canonical name for the code
ssa-pro
, is wrong; it should be ős-nilo-saharan. - The canonical name ős-nilo-saharan (
ssa-pro
) is missing. - proto-samoyedic, the canonical name for the code
syd-pro
, is wrong; it should be ős-samoyedic. - The canonical name ős-samoyedic (
syd-pro
) is missing. - proto-tai, the canonical name for the code
tai-pro
, is wrong; it should be ős-tai. - The canonical name ős-tai (
tai-pro
) is missing. - proto-southwestern tai, the canonical name for the code
tai-swe-pro
, is wrong; it should be ős-southwestern tai. - The canonical name ős-southwestern tai (
tai-swe-pro
) is missing. - The canonical name ős-bodo-garo (
tbq-bdg-pro
) is missing. - proto-bodo-garo, the canonical name for the code
tbq-bdg-pro
, is wrong; it should be ős-bodo-garo. - proto-kuki-chin, the canonical name for the code
tbq-kuk-pro
, is wrong; it should be ős-kuki-chin. - The canonical name ős-kuki-chin (
tbq-kuk-pro
) is missing. - proto-lalo, the canonical name for the code
tbq-lal-pro
, is wrong; it should be ős-lalo. - The canonical name ős-lalo (
tbq-lal-pro
) is missing. - The canonical name ős-lolo-burmese (
tbq-lob-pro
) is missing. - proto-lolo-burmese, the canonical name for the code
tbq-lob-pro
, is wrong; it should be ős-lolo-burmese. - The canonical name ős-loloish (
tbq-lol-pro
) is missing. - proto-loloish, the canonical name for the code
tbq-lol-pro
, is wrong; it should be ős-loloish. - proto-turkic, the canonical name for the code
trk-pro
, is wrong; it should be ős-turkic. - The canonical name ős-turkic (
trk-pro
) is missing. - proto-tupi-guarani, the canonical name for the code
tup-gua-pro
, is wrong; it should be ős-tupi-guarani. - The canonical name ős-tupi-guarani (
tup-gua-pro
) is missing. - The canonical name ős-tupian (
tup-pro
) is missing. - proto-tupian, the canonical name for the code
tup-pro
, is wrong; it should be ős-tupian. - The canonical name ős-tungusic (
tuw-pro
) is missing. - proto-tungusic, the canonical name for the code
tuw-pro
, is wrong; it should be ős-tungusic. - The canonical name ős-mordvinic (
urj-mdv-pro
) is missing. - proto-mordvinic, the canonical name for the code
urj-mdv-pro
, is wrong; it should be ős-mordvinic. - proto-permic, the canonical name for the code
urj-prm-pro
, is wrong; it should be ős-permic. - The canonical name ős-permic (
urj-prm-pro
) is missing. - The canonical name ős-uralic (
urj-pro
) is missing. - proto-uralic, the canonical name for the code
urj-pro
, is wrong; it should be ős-uralic. - The canonical name ős-ugric (
urj-ugr-pro
) is missing. - proto-ugric, the canonical name for the code
urj-ugr-pro
, is wrong; it should be ős-ugric. - The canonical name ős-mongolic (
xgn-pro
) is missing. - proto-mongolic, the canonical name for the code
xgn-pro
, is wrong; it should be ős-mongolic. - proto-tatic, the canonical name for the code
xme-ttc-pro
, is wrong; it should be ős-tatic. - The canonical name ős-tatic (
xme-ttc-pro
) is missing. - The canonical name ős-na-dene (
xnd-pro
) is missing. - proto-na-dene, the canonical name for the code
xnd-pro
, is wrong; it should be ős-na-dene. - The canonical name ős-scythian (
xsc-pro
) is missing. - proto-scythian, the canonical name for the code
xsc-pro
, is wrong; it should be ős-scythian. - The canonical name ős-saka (
xsc-sak-pro
) is missing. - proto-saka, the canonical name for the code
xsc-sak-pro
, is wrong; it should be ős-saka. - The canonical name ős-saka-wakhi (
xsc-skw-pro
) is missing. - proto-saka-wakhi, the canonical name for the code
xsc-skw-pro
, is wrong; it should be ős-saka-wakhi. - The canonical name ős-yupik (
ypk-pro
) is missing. - proto-yupik, the canonical name for the code
ypk-pro
, is wrong; it should be ős-yupik. - The canonical name ős-min (
zhx-min-pro
) is missing. - proto-min, the canonical name for the code
zhx-min-pro
, is wrong; it should be ős-min.
- proto-khasian, the canonical name for the code
aav-khs-pro
, is wrong; it should be ős-khasian. - proto-nicobarese, the canonical name for the code
aav-nic-pro
, is wrong; it should be ős-nicobarese. - proto-pnar-khasi-lyngngam, the canonical name for the code
aav-pkl-pro
, is wrong; it should be ős-pnar-khasi-lyngngam. - proto-austroasiatic, the canonical name for the code
aav-pro
, is wrong; it should be ős-austroasiatic. - proto-afro-asiatic, the canonical name for the code
afa-pro
, is wrong; it should be ős-afro-asiatic. - proto-algonquian, the canonical name for the code
alg-pro
, is wrong; it should be ős-algonquian. - proto-bua, the canonical name for the code
alv-bua-pro
, is wrong; it should be ős-bua. - proto-cangin, the canonical name for the code
alv-cng-pro
, is wrong; it should be ős-cangin. - proto-edoid, the canonical name for the code
alv-edo-pro
, is wrong; it should be ős-edoid. - proto-fali, the canonical name for the code
alv-fli-pro
, is wrong; it should be ős-fali. - proto-gbe, the canonical name for the code
alv-gbe-pro
, is wrong; it should be ős-gbe. - proto-guang, the canonical name for the code
alv-gng-pro
, is wrong; it should be ős-guang. - proto-central togo, the canonical name for the code
alv-gtm-pro
, is wrong; it should be ős-central togo. - proto-heiban, the canonical name for the code
alv-hei-pro
, is wrong; it should be ős-heiban. - proto-igboid, the canonical name for the code
alv-igb-pro
, is wrong; it should be ős-igboid. - proto-kwa, the canonical name for the code
alv-kwa-pro
, is wrong; it should be ős-kwa. - proto-mumuye, the canonical name for the code
alv-mum-pro
, is wrong; it should be ős-mumuye. - proto-nupoid, the canonical name for the code
alv-nup-pro
, is wrong; it should be ős-nupoid. - proto-atlantic-congo, the canonical name for the code
alv-pro
, is wrong; it should be ős-atlantic-congo. - proto-yoruboid, the canonical name for the code
alv-yor-pro
, is wrong; it should be ős-yoruboid. - proto-apachean, the canonical name for the code
apa-pro
, is wrong; it should be ős-apachean. - proto-algic, the canonical name for the code
aql-pro
, is wrong; it should be ős-algic. - proto-athabaskan, the canonical name for the code
ath-pro
, is wrong; it should be ős-athabaskan. - proto-arawa, the canonical name for the code
auf-pro
, is wrong; it should be ős-arawa. - proto-arnhem, the canonical name for the code
aus-arn-pro
, is wrong; it should be ős-arnhem. - proto-central new south wales, the canonical name for the code
aus-cww-pro
, is wrong; it should be ős-central new south wales. - proto-daly, the canonical name for the code
aus-dal-pro
, is wrong; it should be ős-daly. - proto-nyulnyulan, the canonical name for the code
aus-nyu-pro
, is wrong; it should be ős-nyulnyulan. - proto-pama-nyungan, the canonical name for the code
aus-pam-pro
, is wrong; it should be ős-pama-nyungan. - proto-iwaidjan, the canonical name for the code
aus-wdj-pro
, is wrong; it should be ős-iwaidjan. - proto-amuesha-chamicuro, the canonical name for the code
awd-amc-pro
, is wrong; it should be ős-amuesha-chamicuro. - proto-kampa, the canonical name for the code
awd-kmp-pro
, is wrong; it should be ős-kampa. - proto-nawiki, the canonical name for the code
awd-nwk-pro
, is wrong; it should be ős-nawiki. - proto-arawak, the canonical name for the code
awd-pro
, is wrong; it should be ős-arawak. - proto-paresi-waura, the canonical name for the code
awd-prw-pro
, is wrong; it should be ős-paresi-waura. - proto-ta-arawak, the canonical name for the code
awd-taa-pro
, is wrong; it should be ős-ta-arawak. - proto-cupan, the canonical name for the code
azc-cup-pro
, is wrong; it should be ős-cupan. - proto-nahuan, the canonical name for the code
azc-nah-pro
, is wrong; it should be ős-nahuan. - proto-numic, the canonical name for the code
azc-num-pro
, is wrong; it should be ős-numic. - proto-uto-aztecan, the canonical name for the code
azc-pro
, is wrong; it should be ős-uto-aztecan. - proto-takic, the canonical name for the code
azc-tak-pro
, is wrong; it should be ős-takic. - babalia creole arab, the canonical name for the code
bbz
, is wrong; it should be babalia kreol arab. - proto-berber, the canonical name for the code
ber-pro
, is wrong; it should be ős-berber. - proto-nguni, the canonical name for the code
bnt-ngu-pro
, is wrong; it should be ős-nguni. - proto-bantu, the canonical name for the code
bnt-pro
, is wrong; it should be ős-bantu. - proto-sotho-tswana, the canonical name for the code
bnt-sts-pro
, is wrong; it should be ős-sotho-tswana. - proto-batak, the canonical name for the code
btk-pro
, is wrong; it should be ős-batak. - proto-abkhaz-abaza, the canonical name for the code
cau-abz-pro
, is wrong; it should be ős-abkhaz-abaza. - proto-avaro-andian, the canonical name for the code
cau-ava-pro
, is wrong; it should be ős-avaro-andian. - proto-circassian, the canonical name for the code
cau-cir-pro
, is wrong; it should be ős-circassian. - proto-dargva, the canonical name for the code
cau-drg-pro
, is wrong; it should be ős-dargva. - proto-lezghian, the canonical name for the code
cau-lzg-pro
, is wrong; it should be ős-lezghian. - proto-northeast caucasian, the canonical name for the code
cau-nec-pro
, is wrong; it should be ős-northeast caucasian. - proto-nakh, the canonical name for the code
cau-nkh-pro
, is wrong; it should be ős-nakh. - proto-northwest caucasian, the canonical name for the code
cau-nwc-pro
, is wrong; it should be ős-northwest caucasian. - proto-tsezian, the canonical name for the code
cau-tsz-pro
, is wrong; it should be ős-tsezian. - proto-chibchan, the canonical name for the code
cba-pro
, is wrong; it should be ős-chibchan. - proto-north caucasian, the canonical name for the code
ccn-pro
, is wrong; it should be ős-north caucasian. - proto-georgian-zan, the canonical name for the code
ccs-gzn-pro
, is wrong; it should be ős-georgian-zan. - proto-kartvelian, the canonical name for the code
ccs-pro
, is wrong; it should be ős-kartvelian. - proto-central chadic, the canonical name for the code
cdc-cbm-pro
, is wrong; it should be ős-central chadic. - proto-masa, the canonical name for the code
cdc-mas-pro
, is wrong; it should be ős-masa. - proto-chadic, the canonical name for the code
cdc-pro
, is wrong; it should be ős-chadic. - proto-caddoan, the canonical name for the code
cdd-pro
, is wrong; it should be ős-caddoan. - proto-brythonic, the canonical name for the code
cel-bry-pro
, is wrong; it should be ős-brythonic. - proto-celtic, the canonical name for the code
cel-pro
, is wrong; it should be ős-celtic. - proto-chimakuan, the canonical name for the code
chi-pro
, is wrong; it should be ős-chimakuan. - proto-chamic, the canonical name for the code
cmc-pro
, is wrong; it should be ős-chamic. - proto-bongo-bagirmi, the canonical name for the code
csu-bba-pro
, is wrong; it should be ős-bongo-bagirmi. - proto-mangbetu, the canonical name for the code
csu-maa-pro
, is wrong; it should be ős-mangbetu. - proto-central sudanic, the canonical name for the code
csu-pro
, is wrong; it should be ős-central sudanic. - proto-sara, the canonical name for the code
csu-sar-pro
, is wrong; it should be ős-sara. - proto-cushitic, the canonical name for the code
cus-pro
, is wrong; it should be ős-cushitic. - proto-western mande, the canonical name for the code
dmn-mdw-pro
, is wrong; it should be ős-western mande. - proto-mande, the canonical name for the code
dmn-pro
, is wrong; it should be ős-mande. - proto-dravidian, the canonical name for the code
dra-pro
, is wrong; it should be ős-dravidian. - proto-rukai, the canonical name for the code
dru-pro
, is wrong; it should be ős-rukai. - proto-eskimo, the canonical name for the code
esx-esk-pro
, is wrong; it should be ős-eskimo. - proto-inuit, the canonical name for the code
esx-inu-pro
, is wrong; it should be ős-inuit. - proto-eskimo-aleut, the canonical name for the code
esx-pro
, is wrong; it should be ős-eskimo-aleut. - proto-basque, the canonical name for the code
euq-pro
, is wrong; it should be ős-basque. - proto-finnic, the canonical name for the code
fiu-fin-pro
, is wrong; it should be ős-finnic. - proto-germanic, the canonical name for the code
gem-pro
, is wrong; it should be ős-germanic. - proto-norse, the canonical name for the code
gmq-pro
, is wrong; it should be ős-norse. - proto-west germanic, the canonical name for the code
gmw-pro
, is wrong; it should be ős-west germanic. - proto-hellenic, the canonical name for the code
grk-pro
, is wrong; it should be ős-hellenic. - proto-hmong, the canonical name for the code
hmn-pro
, is wrong; it should be ős-hmong. - proto-mien, the canonical name for the code
hmx-mie-pro
, is wrong; it should be ős-mien. - proto-hmong-mien, the canonical name for the code
hmx-pro
, is wrong; it should be ős-hmong-mien. - proto-armenian, the canonical name for the code
hyx-pro
, is wrong; it should be ős-armenian. - proto-nuristani, the canonical name for the code
iir-nur-pro
, is wrong; it should be ős-nuristani. - proto-indo-iranian, the canonical name for the code
iir-pro
, is wrong; it should be ős-indo-iranian. - proto-ijoid, the canonical name for the code
ijo-pro
, is wrong; it should be ős-ijoid. - proto-dardic, the canonical name for the code
inc-dar-pro
, is wrong; it should be ős-dardic. - proto-indo-aryan, the canonical name for the code
inc-pro
, is wrong; it should be ős-indo-aryan. - proto-anatolian, the canonical name for the code
ine-ana-pro
, is wrong; it should be ős-anatolian. - proto-balto-slavic, the canonical name for the code
ine-bsl-pro
, is wrong; it should be ős-balti-szláv. - proto-indo-european, the canonical name for the code
ine-pro
, is wrong; it should be ősindoeurópai. - proto-tocharian, the canonical name for the code
ine-toc-pro
, is wrong; it should be ős-tocharian. - ingush, the canonical name for the code
inh
, is wrong; it should be ingus. - proto-komisenian, the canonical name for the code
ira-kms-pro
, is wrong; it should be ős-komisenian. - proto-munji-yidgha, the canonical name for the code
ira-mny-pro
, is wrong; it should be ős-munji-yidgha. - proto-medo-parthian, the canonical name for the code
ira-mpr-pro
, is wrong; it should be ős-medo-parthian. - proto-pathan, the canonical name for the code
ira-pat-pro
, is wrong; it should be ős-pathan. - proto-iranian, the canonical name for the code
ira-pro
, is wrong; it should be ős-iranian. - proto-sogdic, the canonical name for the code
ira-sgc-pro
, is wrong; it should be ős-sogdic. - proto-sanglechi-ishkashimi, the canonical name for the code
ira-sgi-pro
, is wrong; it should be ős-sanglechi-ishkashimi. - proto-shughni-roshani, the canonical name for the code
ira-shr-pro
, is wrong; it should be ős-shughni-roshani. - proto-shughni-yazghulami, the canonical name for the code
ira-shy-pro
, is wrong; it should be ős-shughni-yazghulami. - proto-shughni-yazghulami-munji, the canonical name for the code
ira-sym-pro
, is wrong; it should be ős-shughni-yazghulami-munji. - proto-zaza-gorani, the canonical name for the code
ira-zgr-pro
, is wrong; it should be ős-zaza-gorani. - proto-iroquoian, the canonical name for the code
iro-pro
, is wrong; it should be ős-iroquoian. - proto-italic, the canonical name for the code
itc-pro
, is wrong; it should be ős-italic. - judeo-italian, the canonical name for the code
itk
, is wrong; it should be judeo-olasz. - ingrian, the canonical name for the code
izh
, is wrong; it should be izsór. - proto-japonic, the canonical name for the code
jpx-pro
, is wrong; it should be ős-japonic. - proto-ryukyuan, the canonical name for the code
jpx-ryu-pro
, is wrong; it should be ős-ryukyuan. - proto-karen, the canonical name for the code
kar-pro
, is wrong; it should be ős-karen. - proto-khoe, the canonical name for the code
khi-kho-pro
, is wrong; it should be ős-khoe. - northern kurdish, the canonical name for the code
kmr
, is wrong; it should be északi kurd. - proto-kru, the canonical name for the code
kro-pro
, is wrong; it should be ős-kru. - livonian, the canonical name for the code
liv
, is wrong; it should be lív. - proto-atayalic, the canonical name for the code
map-ata-pro
, is wrong; it should be ős-atayalic. - proto-austronesian, the canonical name for the code
map-pro
, is wrong; it should be ős-austronesian. - proto-aslian, the canonical name for the code
mkh-asl-pro
, is wrong; it should be ős-aslian. - proto-bahnaric, the canonical name for the code
mkh-ban-pro
, is wrong; it should be ős-bahnaric. - proto-katuic, the canonical name for the code
mkh-kat-pro
, is wrong; it should be ős-katuic. - proto-khmuic, the canonical name for the code
mkh-khm-pro
, is wrong; it should be ős-khmuic. - proto-khmeric, the canonical name for the code
mkh-kmr-pro
, is wrong; it should be ős-khmeric. - proto-monic, the canonical name for the code
mkh-mnc-pro
, is wrong; it should be ős-monic. - proto-palaungic, the canonical name for the code
mkh-pal-pro
, is wrong; it should be ős-palaungic. - proto-pearic, the canonical name for the code
mkh-pea-pro
, is wrong; it should be ős-pearic. - proto-pakanic, the canonical name for the code
mkh-pkn-pro
, is wrong; it should be ős-pakanic. - proto-mon-khmer, the canonical name for the code
mkh-pro
, is wrong; it should be ős-mon-khmer. - proto-vietic, the canonical name for the code
mkh-vie-pro
, is wrong; it should be ős-vietic. - proto-munda, the canonical name for the code
mun-pro
, is wrong; it should be ős-munda. - proto-mayan, the canonical name for the code
myn-pro
, is wrong; it should be ős-mayan. - proto-chumash, the canonical name for the code
nai-chu-pro
, is wrong; it should be ős-chumash. - proto-chinookan, the canonical name for the code
nai-ckn-pro
, is wrong; it should be ős-chinookan. - proto-kalapuyan, the canonical name for the code
nai-klp-pro
, is wrong; it should be ős-kalapuyan. - proto-maidun, the canonical name for the code
nai-mdu-pro
, is wrong; it should be ős-maidun. - proto-mixe-zoque, the canonical name for the code
nai-miz-pro
, is wrong; it should be ős-mixe-zoque. - proto-plateau penutian, the canonical name for the code
nai-plp-pro
, is wrong; it should be ős-plateau penutian. - proto-pomo, the canonical name for the code
nai-pom-pro
, is wrong; it should be ős-pomo. - proto-siouan-catawban, the canonical name for the code
nai-sca-pro
, is wrong; it should be ős-siouan-catawban. - proto-totozoquean, the canonical name for the code
nai-tot-pro
, is wrong; it should be ős-totozoquean. - proto-tsimshianic, the canonical name for the code
nai-tsi-pro
, is wrong; it should be ős-tsimshianic. - proto-utian, the canonical name for the code
nai-utn-pro
, is wrong; it should be ős-utian. - proto-trans-new guinea, the canonical name for the code
ngf-pro
, is wrong; it should be ős-trans-new guinea. - proto-benue-congo, the canonical name for the code
nic-bco-pro
, is wrong; it should be ős-benue-congo. - proto-bantoid, the canonical name for the code
nic-bod-pro
, is wrong; it should be ős-bantoid. - proto-eastern oti-volta, the canonical name for the code
nic-eov-pro
, is wrong; it should be ős-eastern oti-volta. - proto-gurunsi, the canonical name for the code
nic-gns-pro
, is wrong; it should be ős-gurunsi. - proto-grassfields, the canonical name for the code
nic-grf-pro
, is wrong; it should be ős-grassfields. - proto-gur, the canonical name for the code
nic-gur-pro
, is wrong; it should be ős-gur. - proto-jukunoid, the canonical name for the code
nic-jkn-pro
, is wrong; it should be ős-jukunoid. - proto-lower cross river, the canonical name for the code
nic-lcr-pro
, is wrong; it should be ős-lower cross river. - proto-ogoni, the canonical name for the code
nic-ogo-pro
, is wrong; it should be ős-ogoni. - proto-oti-volta, the canonical name for the code
nic-ovo-pro
, is wrong; it should be ős-oti-volta. - proto-plateau, the canonical name for the code
nic-plt-pro
, is wrong; it should be ős-plateau. - proto-niger-congo, the canonical name for the code
nic-pro
, is wrong; it should be ős-niger-congo. - proto-ubangian, the canonical name for the code
nic-ubg-pro
, is wrong; it should be ős-ubangian. - proto-upper cross river, the canonical name for the code
nic-ucr-pro
, is wrong; it should be ős-upper cross river. - proto-volta-congo, the canonical name for the code
nic-vco-pro
, is wrong; it should be ős-volta-congo. - proto-nubian, the canonical name for the code
nub-pro
, is wrong; it should be ős-nubian. - proto-chatino, the canonical name for the code
omq-cha-pro
, is wrong; it should be ős-chatino. - proto-mazatec, the canonical name for the code
omq-maz-pro
, is wrong; it should be ős-mazatec. - proto-mixtecan, the canonical name for the code
omq-mix-pro
, is wrong; it should be ős-mixtecan. - proto-mixtec, the canonical name for the code
omq-mxt-pro
, is wrong; it should be ős-mixtec. - proto-oto-pamean, the canonical name for the code
omq-otp-pro
, is wrong; it should be ős-oto-pamean. - proto-oto-manguean, the canonical name for the code
omq-pro
, is wrong; it should be ős-oto-manguean. - proto-trique, the canonical name for the code
omq-tri-pro
, is wrong; it should be ős-trique. - proto-zapotecan, the canonical name for the code
omq-zap-pro
, is wrong; it should be ős-zapotecan. - proto-zapotec, the canonical name for the code
omq-zpc-pro
, is wrong; it should be ős-zapotec. - proto-aroid, the canonical name for the code
omv-aro-pro
, is wrong; it should be ős-aroid. - proto-dizoid, the canonical name for the code
omv-diz-pro
, is wrong; it should be ős-dizoid. - proto-omotic, the canonical name for the code
omv-pro
, is wrong; it should be ős-omotic. - ó-keleti-szláv, the canonical name for the code
orv
, is wrong; it should be óorosz. - proto-ossetic, the canonical name for the code
os-pro
, is wrong; it should be ős-ossetic. - proto-otomi, the canonical name for the code
oto-otm-pro
, is wrong; it should be ős-otomi. - proto-otomian, the canonical name for the code
oto-pro
, is wrong; it should be ős-otomian. - pennsylvania german, the canonical name for the code
pdc
, is wrong; it should be pennsylvaniai német. - proto-kalamian, the canonical name for the code
phi-kal-pro
, is wrong; it should be ős-kalamian. - proto-philippine, the canonical name for the code
phi-pro
, is wrong; it should be ős-philippine. - piedmontese, the canonical name for the code
pms
, is wrong; it should be piemonti. - proto-bungku-tolaki, the canonical name for the code
poz-btk-pro
, is wrong; it should be ős-bungku-tolaki. - proto-central-eastern malayo-polynesian, the canonical name for the code
poz-cet-pro
, is wrong; it should be ős-central-eastern malayo-polynesian. - proto-halmahera-cenderawasih, the canonical name for the code
poz-hce-pro
, is wrong; it should be ős-halmahera-cenderawasih. - proto-lampungic, the canonical name for the code
poz-lgx-pro
, is wrong; it should be ős-lampungic. - proto-malayo-chamic, the canonical name for the code
poz-mcm-pro
, is wrong; it should be ős-malayo-chamic. - proto-malayic, the canonical name for the code
poz-mly-pro
, is wrong; it should be ős-malayic. - proto-malayo-sumbawan, the canonical name for the code
poz-msa-pro
, is wrong; it should be ős-malayo-sumbawan. - proto-oceanic, the canonical name for the code
poz-oce-pro
, is wrong; it should be ős-oceanic. - proto-eastern polynesian, the canonical name for the code
poz-pep-pro
, is wrong; it should be ős-eastern polynesian. - proto-nuclear polynesian, the canonical name for the code
poz-pnp-pro
, is wrong; it should be ős-nuclear polynesian. - proto-polynesian, the canonical name for the code
poz-pol-pro
, is wrong; it should be ős-polynesian. - proto-malayo-polynesian, the canonical name for the code
poz-pro
, is wrong; it should be ős-malayo-polynesian. - proto-south sulawesi, the canonical name for the code
poz-ssw-pro
, is wrong; it should be ős-south sulawesi. - proto-sunda-sulawesi, the canonical name for the code
poz-sus-pro
, is wrong; it should be ős-sunda-sulawesi. - proto-north sarawak, the canonical name for the code
poz-swa-pro
, is wrong; it should be ős-north sarawak. - proto-eastern malayo-polynesian, the canonical name for the code
pqe-pro
, is wrong; it should be ős-eastern malayo-polynesian. - proto-great andamanese, the canonical name for the code
qfa-adm-pro
, is wrong; it should be ős-great andamanese. - proto-chukotko-kamchatkan, the canonical name for the code
qfa-cka-pro
, is wrong; it should be ős-chukotko-kamchatkan. - proto-hurro-urartian, the canonical name for the code
qfa-hur-pro
, is wrong; it should be ős-hurro-urartian. - proto-kadu, the canonical name for the code
qfa-kad-pro
, is wrong; it should be ős-kadu. - proto-kam-sui, the canonical name for the code
qfa-kms-pro
, is wrong; it should be ős-kam-sui. - proto-korean, the canonical name for the code
qfa-kor-pro
, is wrong; it should be ős-korean. - proto-kra, the canonical name for the code
qfa-kra-pro
, is wrong; it should be ős-kra. - proto-hlai, the canonical name for the code
qfa-lic-pro
, is wrong; it should be ős-hlai. - proto-ong-be, the canonical name for the code
qfa-onb-pro
, is wrong; it should be ős-ong-be. - proto-ongan, the canonical name for the code
qfa-ong-pro
, is wrong; it should be ős-ongan. - proto-kra-dai, the canonical name for the code
qfa-tak-pro
, is wrong; it should be ős-kra-dai. - proto-yeniseian, the canonical name for the code
qfa-yen-pro
, is wrong; it should be ős-yeniseian. - proto-yukaghir, the canonical name for the code
qfa-yuk-pro
, is wrong; it should be ős-yukaghir. - proto-jê, the canonical name for the code
sai-jee-pro
, is wrong; it should be ős-jê. - proto-salish, the canonical name for the code
sal-pro
, is wrong; it should be ős-salish. - proto-daju, the canonical name for the code
sdv-daj-pro
, is wrong; it should be ős-daju. - proto-eastern jebel, the canonical name for the code
sdv-eje-pro
, is wrong; it should be ős-eastern jebel. - proto-nilotic, the canonical name for the code
sdv-nil-pro
, is wrong; it should be ős-nilotic. - proto-nyima, the canonical name for the code
sdv-nyi-pro
, is wrong; it should be ős-nyima. - proto-taman, the canonical name for the code
sdv-tmn-pro
, is wrong; it should be ős-taman. - proto-semitic, the canonical name for the code
sem-pro
, is wrong; it should be ős-semitic. - proto-siouan, the canonical name for the code
sio-pro
, is wrong; it should be ős-siouan. - proto-hrusish, the canonical name for the code
sit-hrs-pro
, is wrong; it should be ős-hrusish. - proto-kham, the canonical name for the code
sit-kha-pro
, is wrong; it should be ős-kham. - proto-luish, the canonical name for the code
sit-luu-pro
, is wrong; it should be ős-luish. - proto-sino-tibetan, the canonical name for the code
sit-pro
, is wrong; it should be ős-sino-tibetan. - proto-tani, the canonical name for the code
sit-tan-pro
, is wrong; it should be ős-tani. - proto-slavic, the canonical name for the code
sla-pro
, is wrong; it should be ősszláv. - proto-samic, the canonical name for the code
smi-pro
, is wrong; it should be ős-samic. - proto-songhay, the canonical name for the code
son-pro
, is wrong; it should be ős-songhay. - proto-albanian, the canonical name for the code
sqj-pro
, is wrong; it should be ős-albanian. - proto-kuliak, the canonical name for the code
ssa-klk-pro
, is wrong; it should be ős-kuliak. - proto-koman, the canonical name for the code
ssa-kom-pro
, is wrong; it should be ős-koman. - proto-nilo-saharan, the canonical name for the code
ssa-pro
, is wrong; it should be ős-nilo-saharan. - proto-samoyedic, the canonical name for the code
syd-pro
, is wrong; it should be ős-samoyedic. - proto-tai, the canonical name for the code
tai-pro
, is wrong; it should be ős-tai. - proto-southwestern tai, the canonical name for the code
tai-swe-pro
, is wrong; it should be ős-southwestern tai. - proto-bodo-garo, the canonical name for the code
tbq-bdg-pro
, is wrong; it should be ős-bodo-garo. - proto-kuki-chin, the canonical name for the code
tbq-kuk-pro
, is wrong; it should be ős-kuki-chin. - proto-lalo, the canonical name for the code
tbq-lal-pro
, is wrong; it should be ős-lalo. - proto-lolo-burmese, the canonical name for the code
tbq-lob-pro
, is wrong; it should be ős-lolo-burmese. - proto-loloish, the canonical name for the code
tbq-lol-pro
, is wrong; it should be ős-loloish. - The code
tok
(toki pona) is missing. - proto-turkic, the canonical name for the code
trk-pro
, is wrong; it should be ős-turkic. - proto-tupi-guarani, the canonical name for the code
tup-gua-pro
, is wrong; it should be ős-tupi-guarani. - proto-tupian, the canonical name for the code
tup-pro
, is wrong; it should be ős-tupian. - proto-tungusic, the canonical name for the code
tuw-pro
, is wrong; it should be ős-tungusic. - proto-mordvinic, the canonical name for the code
urj-mdv-pro
, is wrong; it should be ős-mordvinic. - proto-permic, the canonical name for the code
urj-prm-pro
, is wrong; it should be ős-permic. - proto-uralic, the canonical name for the code
urj-pro
, is wrong; it should be ős-uralic. - proto-ugric, the canonical name for the code
urj-ugr-pro
, is wrong; it should be ős-ugric. - proto-mongolic, the canonical name for the code
xgn-pro
, is wrong; it should be ős-mongolic. - proto-tatic, the canonical name for the code
xme-ttc-pro
, is wrong; it should be ős-tatic. - proto-na-dene, the canonical name for the code
xnd-pro
, is wrong; it should be ős-na-dene. - proto-scythian, the canonical name for the code
xsc-pro
, is wrong; it should be ős-scythian. - proto-saka, the canonical name for the code
xsc-sak-pro
, is wrong; it should be ős-saka. - proto-saka-wakhi, the canonical name for the code
xsc-skw-pro
, is wrong; it should be ős-saka-wakhi. - proto-yupik, the canonical name for the code
ypk-pro
, is wrong; it should be ős-yupik. - proto-min, the canonical name for the code
zhx-min-pro
, is wrong; it should be ős-min.
- occidental, the canonical name for
ie
, is repeated in the table ofaliases
.
- kiribati, the canonical name for
gil
, is repeated in the table ofaliases
.
- orkhon, the canonical name for
otk
, is repeated in the table ofotherNames
.
- toki pona language (
art-top
) has a canonical name that is not unique; it is also used by the codetok
.
- bhaiksuki (
Bhks
) is missing - zhuyin (
Bopo
) is missing - brahmi (
Brah
) is missing - braille (
Brai
) is missing - buginese (
Bugi
) is missing - buhid (
Buhd
) is missing - chakma (
Cakm
) is missing - carian (
Cari
) is missing - cham (
Cham
) is missing - cherokee (
Cher
) is missing - chorasmian (
Chrs
) is missing - dogra (
Dogr
) is missing - deseret (
Dsrt
) is missing - duployan (
Dupl
) is missing - elbasan (
Elba
) is missing - khutsuri (
Geok
) is missing - gunjala gondi (
Gong
) is missing - masaram gondi (
Gonm
) is missing - gothic (
Goth
) is missing - grantha (
Gran
) is missing - gurmukhi (
Guru
) is missing - hangul (
Hang
) is missing - kínai (
Hani
) is missing - hanunoo (
Hano
) is missing - egyszerűsített kínai (
Hans
) is missing - hagyományos kínai (
Hant
) is missing - hatran (
Hatr
) is missing - iberian (
Ibrn
) is missing - image-rendered (
Imag
) is missing - indus (
Inds
) is missing - old italic (
Ital
) is missing - jurchen (
Jurc
) is missing - kayah li (
Kali
) is missing - katakana (
Kana
) is missing - kharoshthi (
Khar
) is missing - khmer (
Khmr
) is missing - khojki (
Khoj
) is missing - khitan large (
Kitl
) is missing - khitan small (
Kits
) is missing - kannada (
Knda
) is missing - kaithi (
Kthi
) is missing - tai tham (
Lana
) is missing - lao (
Laoo
) is missing - fraktur (
Latf
) is missing - leke (
Leke
) is missing - lepcha (
Lepc
) is missing - limbu (
Limb
) is missing - lisu (
Lisu
) is missing - lycian (
Lyci
) is missing - mahajani (
Mahj
) is missing - makasar (
Maka
) is missing - mandaic (
Mand
) is missing - manichaean (
Mani
) is missing - marchen (
Marc
) is missing - medefaidrin (
Medf
) is missing - mende (
Mend
) is missing - meroitic cursive (
Merc
) is missing - meroitic hieroglyphic (
Mero
) is missing - modi (
Modi
) is missing - mongolian (
Mong
) is missing - mro (
Mroo
) is missing - meitei mayek (
Mtei
) is missing - multani (
Mult
) is missing - burmai (
Mymr
) is missing - nabataean (
Nbat
) is missing - newa (
Newa
) is missing - n'Ko (
Nkoo
) is missing - unspecified (
None
) is missing - nushu (
Nshu
) is missing - ogham (
Ogam
) is missing - ol chiki (
Olck
) is missing - orkhon runes (
Orkh
) is missing - oriya (
Orya
) is missing - osage (
Osge
) is missing - osmanya (
Osma
) is missing - palmyrene (
Palm
) is missing - pau cin hau (
Pauc
) is missing - phags-pa (
Phag
) is missing - inscriptional pahlavi (
Phli
) is missing - psalter pahlavi (
Phlp
) is missing - book pahlavi (
Phlv
) is missing - pollard (
Plrd
) is missing - inscriptional parthian (
Prti
) is missing - rejang (
Rjng
) is missing - hanifi rohingya (
Rohg
) is missing - rúna (
Runr
) is missing - samaritan (
Samr
) is missing - saurashtra (
Saur
) is missing - signWriting (
Sgnw
) is missing - shavian (
Shaw
) is missing - sharada (
Shrd
) is missing - siddham (
Sidd
) is missing - khudawadi (
Sind
) is missing - sogdian (
Sogd
) is missing - old sogdian (
Sogo
) is missing - sorang sompeng (
Sora
) is missing - soyombo (
Soyo
) is missing - syloti nagri (
Sylo
) is missing - tagbanwa (
Tagb
) is missing - takri (
Takr
) is missing - tai nüa (
Tale
) is missing - new tai lue (
Talu
) is missing - tangut (
Tang
) is missing - tai viet (
Tavt
) is missing - tengwar (
Teng
) is missing - tifinagh (
Tfng
) is missing - baybayin (
Tglg
) is missing - thaana (
Thaa
) is missing - tibetan (
Tibt
) is missing - tirhuta (
Tirh
) is missing - ugaritic (
Ugar
) is missing - vai (
Vaii
) is missing - varang kshiti (
Wara
) is missing - yi (
Yiii
) is missing - zanabazar square (
Zanb
) is missing - matematikai jelölés (
Zmth
) is missing - meghatározatlan (
Zyyy
) is missing
- hiragana script (
Hira
) is not used by any language. - image-rendered script (
Imag
) is not used by any language and has no characters listed for auto-detection. - jurchen script (
Jurc
) is not used by any language and has no characters listed for auto-detection. - medefaidrin script (
Medf
) is not used by any language. - morse code (
Morse
) is not used by any language and has no characters listed for auto-detection. - flag semaphore (
Semap
) is not used by any language and has no characters listed for auto-detection. - uncoded script (
Zzzz
) is not used by any language and has no characters listed for auto-detection.
Checks performed
szerkesztésFor multiple data modules:
- Codes for languages, families and etymology-only languages must be unique and cannot clash with one another.
- Canonical names for languages, families, and etymology-only languages must not be found in the list of other names.
- Each name in the list of other names must appear only once.
otherNames
, if present, must be an array.
The following must be true of the data used by Module:languages:
- Each code must be defined in the correct submodule according to whether it is two-letter, three-letter or exceptional.
- The canonical name (field
1
) must be present and must not be the same as the canonical name of another language. - If
scripts
is given, it must be an array, and each string in the array must be a valid script code. - If
ancestors
is given, it must be an array, and each string in the array must be a valid language or etymology language code. - If
family
is given, it must be a valid family code. - If
type
is given, it must be one of the recognised values (regular
,reconstructed
,appendix-constructed
). - If
entry_name
is given, it must be a table that contains either two arrays (from
andto
) or a string (remove_diacritics
) or both. - If
sort_key
is given, it may either be a string, or at table that in turn contains either two arrays (from
andto
) or a string (remove_diacritics
). - If
entry_name
orsort_key
is given, thefrom
array must be longer or equal in length to theto
array. - If
standardChars
is given, it must form a valid Lua string pattern when placed between square brackets with^
before it ("[^...]
). (It should match all characters regularly used in the language, but that cannot be tested.) - Have no data keys besides these:
"canonicalName", "entry_name", "sort_key", "otherNames", "type", "scripts", "family", "ancestors", "wikimedia_codes", "wikipedia_article", "standardChars", "translit_module", "override_translit", "link_tr", "wikidata_item"
.
Checks not performed:
- If
translit_module
is present, it should be the name of a module, and this module should contain atr
function that takes a pagename (and optionally a language code and script code) as arguments. - If
sort_key
is a string, it should be the name of a module, and this module should contain amakeSortKey
function that takes a pagename (and optionally a language code and script code) as arguments. - If
entry_name
orsort_key
is a table and contains a fieldremove_diacritics
, the value of the field should be a string that forms a valid Lua pattern when it is placed inside negated set notation ([^...]
).
These are not checked here, because module errors will quickly crop up in entries if these conditions are not met, assuming that Module:utilities attempts to generate a sortkey for a category pertaining to the language in question, or full_link
attempts to use the transliteration module.
Module:languages/code to canonical name and Module:languages/canonical names must contain all the codes and canonical names found in the data submodules of Module:languages, and no more.
The following must be true of the data used by Module:etymology languages:
canonicalName
must be given.parent
must be given must be a valid language, family or etymology-only language code.- If
ancestors
is given, it must be an array, and each string in the array must be a valid language or etymology language code. The etymology language should also be listed as the ancestor of a regular language. - Have no data keys besides these:
"canonicalName", "otherNames", "parent", "ancestors", "wikipedia_article", "wikidata_item"
.
Codes in Module:families data must:
- Have
canonicalName
, which must not be the same as the canonical name of another family. - If
family
is given, it must be a valid family code. - Have at least one language or subfamily belonging to it.
- Have no data keys besides these:
"canonicalName", "otherNames", "family", "protoLanguage", "wikidata_item"
.
Codes in Module:scripts data must:
- Have
canonicalName
. - Have at least one language that lists it as one of its scripts.
- Have a
characters
pattern for script autodetection, and this must form a valid Lua string pattern when placed between square brackets ("[...]"
). (It should match all characters in the script, but that cannot be tested.) - Have no data keys besides these:
"canonicalName", "otherNames", "parent", "systems", "wikipedia_article", "characters", "direction"
.
local export = {}
local m_language_data = require("Module:languages/alldata")
local m_language_codes = require('Module:languages/code to canonical name')
local m_language_canonical_names = require('Module:languages/canonical names')
local m_etym_language_data = require("Module:etymology languages/data")
local m_family_data = require('Module:families/data')
local m_script_data = require('Module:scripts/data')
local m_table = require("Module:table")
local Array = require("Module:array")
local messages
local function discrepancy(modname, ...)
messages[modname]:insert(string.format(...))
end
local all_codes = {}
local language_names = {}
local family_names = {}
local script_names = {}
local nonempty_families = {}
local allowed_empty_families = {tbq = true}
local nonempty_scripts = {}
local function link(name)
if not name then
return "???"
elseif name:find("[Ll]anguage$") then
return "[[:Category:" .. name .. "|" .. name .. "]]"
else
return "[[:Category:" .. name .. " language|" .. name .. " language]]"
end
end
local function link_script(name)
if not name then
return "???"
elseif name:find("[Cc]ode$") or name:find("[Ss]emaphore$") then
return "[[:Category:" .. name:gsub("^%l", string.upper) .. "|" .. name .. "]]"
else
return "[[:Category:" .. name .. " script|" .. name .. " script]]"
end
end
local function invalid_keys_message(modname, code, data, invalid_keys, is_script)
local plural = #invalid_keys ~= 1
discrepancy(modname, "The data key%s %s for %s (<code>%s</code>) %s invalid.",
plural and "s" or "",
invalid_keys
:map(
function(key)
return '<code>' .. key .. '</code>'
end)
:concat(", "),
(is_script and link_script or link)(data.canonicalName or data[1]),
code,
plural and "are" or "is")
end
local function check_data_keys(valid_keys, is_script)
valid_keys = Array(valid_keys):to_set()
return function (modname, code, data)
local invalid_keys
for k in pairs(data) do
if not valid_keys[k] then
invalid_keys = invalid_keys or Array()
invalid_keys:insert(k)
end
end
if invalid_keys then
invalid_keys_message(modname, code, data, invalid_keys, is_script)
end
end
end
-- Modification of isArray in [[Module:table]].
local function find_gap(t)
local i = 0
for _ in pairs(t) do
i = i + 1
if t[i] == nil then
return i
end
end
end
local function check_array(modname, code, data, array_name)
local gap = find_gap(data[array_name])
if gap then
discrepancy(modname, "The %s array in the data table for %s (<code>%s</code>) has a gap at index %d.",
array_name, data.canonicalName or data[1], code, gap)
end
end
local function check_other_names_or_aliases(modname, code, canonical_name, data, data_key, allow_nested)
local array = data[data_key]
if not array then
return
end
check_array(modname, code, data, data_key)
local names = {}
local function check_other_name(other_name)
if other_name == canonical_name then
discrepancy(modname,
"%s, the canonical name for <code>%s</code>, is repeated in the table of <code>%s</code>.",
canonical_name, code, data_key)
end
if names[other_name] then
discrepancy(modname,
"The name %s is found twice or more in the list of <code>%s</code> for %s (<code>%s</code>).",
other_name, data_key, canonical_name, code)
end
names[other_name] = true
end
for _, other_name in ipairs(array) do
if type(other_name) == "table" then
if not allow_nested then
discrepancy(modname,
"A nested table is found in the list of <code>%s</code> for %s (<code>%s</code>), but isn't allowed.",
data_key, canonical_name, code)
else
for _, on in ipairs(other_name) do
check_other_name(on)
end
end
else
check_other_name(other_name)
end
end
end
local function check_other_names_aliases_varieties(modname, code, canonical_name, data)
if data.otherNames then
check_other_names_or_aliases(modname, code, canonical_name, data, "otherNames")
end
if data.aliases then
check_other_names_or_aliases(modname, code, canonical_name, data, "aliases")
end
if data.varieties then
check_other_names_or_aliases(modname, code, canonical_name, data, "varieties", true)
end
end
local get_codepoint = mw.ustring.codepoint
local function validate_pattern(pattern, modname, code, data, standardChars)
if type(pattern) ~= "string" then
discrepancy(modname, '"%s", the %spattern for %s (<code>%s</code>), is not a string.',
pattern, standardChars and 'standard character ' or '', code, data.canonicalName)
end
local ranges
for lower, higher in mw.ustring.gmatch(pattern, "(.)%-(.)") do
if get_codepoint(lower) >= get_codepoint(higher) then
ranges = ranges or Array()
table.insert(ranges, { lower, higher })
end
end
if ranges and ranges[1] then
local plural = #ranges ~= 1 and "s" or ""
discrepancy(modname, '%s (<code>%s</code>) specifies an invalid pattern ' ..
'for %scharacter detection: <code>"%s"</code>. The first codepoint%s ' ..
'in the range%s %s %s must be less than the second.',
link(data.canonicalName), code, standardChars and 'standard ' or '', pattern, plural, plural,
ranges
:map(
function(range)
return range[1] .. "-" .. range[2] .. (" (U+%X, U+%X)")
:format(get_codepoint(range[1]), get_codepoint(range[2]))
end)
:concat(", "),
#ranges ~= 1 and "are" or "is")
end
if not pcall(mw.ustring.find, "", "[" .. pattern .. "]") then
discrepancy(modname, '%s (<code>%s</code>) specifies an invalid pattern for ' ..
(standardChars and 'standard' or '') .. ' character detection: <code>"%s"</code>',
link(data.canonical_name), code, pattern)
end
end
local function check_entry_name_or_sortkey(modname, code, data, replacements_name)
local replacements = data[replacements_name]
if type(replacements) == "string" then
if replacements_name ~= "sort_key" then
discrepancy(modname, "The %s field in the data table for %s (<code>%s</code>) must be a table.",
replacements_name, data.canonicalName, code)
end
return
end
if (replacements.from ~= nil) ~= (replacements.to ~= nil) then
discrepancy(modname,
"The <code>from</code> and <code>to</code> arrays in the <code>%s</code> table for %s (<code>%s</code>) are not both defined or both undefined.",
replacements_name, data.canonicalName, code)
elseif replacements.from then
for _, key in ipairs { "from", "to" } do
local gap = find_gap(replacements[key])
if gap then
discrepancy(modname,
"The %s array in the %s table for %s (<code>%s</code>) has a gap at index %d.",
key, replacements_name, data.canonicalName, code, gap)
end
end
end
if replacements.remove_diacritics and type(replacements.remove_diacritics) ~= "string" then
discrepancy(modname,
"The <code>remove_diacritics</code> field in the <code>%s</code> table for %s (<code>%s</code>) table must be a string.",
replacements_name, data.canonicalName, code)
end
if replacements.from and replacements.to
and m_table.length(replacements.to) > m_table.length(replacements.from) then
discrepancy(modname,
"The <code>from</code> array in the <code>%s</code> table for %s (<code>%s</code>) must be shorter or the same length as the <code>to</code> array.",
replacements_name, data.canonicalName, code)
end
end
local function has_regular_language_child(parent_code)
for code, data in pairs(m_language_data) do
local ancestors = data.ancestors
if ancestors then
for _, ancestor in pairs(ancestors) do
if ancestor == parent_code then
return true
end
end
end
end
return false
end
local function check_ancestors(modname, code, data, ancestors, is_etymology_language)
check_array(modname, code, data, "ancestors")
local canonical_name = data[1] or data.canonicalName
if is_etymology_language then
if not has_regular_language_child(code) then
discrepancy(modname,
"The etymology language %s (<code>%s</code>) has an <code>ancestors</code> field, "
.. "but no regular languages list it as an ancestor.",
link(canonical_name), code)
end
end
for _, ancestor_code in ipairs(ancestors) do
if not (m_language_data[ancestor_code] or m_etym_language_data[ancestor_code]) then
discrepancy(modname,
"%s (<code>%s</code>) lists an invalid language code <code>%s</code> as ancestor.",
link(canonical_name), code, ancestor_code)
end
end
end
local function check_languages()
local check_language_data_keys = check_data_keys{
1, 2, 3, -- canonical name, wikidata item, family
"entry_name", "sort_key", "otherNames", "aliases", "varieties",
"type", "scripts", "ancestors",
"wikimedia_codes", "wikipedia_article", "standardChars",
"translit_module", "override_translit", "link_tr",
}
local function check_language(modname, code, data)
local canonical_name, wikidata_item, lang_type = data[1], data[2], data.type
check_language_data_keys(modname, code, data)
if all_codes[code] then
discrepancy(modname, "Code <code>%s</code> is not unique; it is also defined in [[Module:%s]].", code, all_codes[code])
else
if not m_language_codes[code] then
discrepancy("languages/code to canonical name", "The code <code>%s</code> (%s) is missing.", code, canonical_name)
end
all_codes[code] = modname
end
if not canonical_name then
discrepancy(modname, "Code <code>%s</code> has no canonical name specified.", code)
elseif language_names[canonical_name] then
discrepancy(modname,
"%s (<code>%s</code>) has a canonical name that is not unique; it is also used by the code <code>%s</code>.",
link(canonical_name), code, language_names[canonical_name])
else
if not m_language_canonical_names[canonical_name] then
discrepancy("languages/canonical names", "The canonical name %s (<code>%s</code>) is missing.", canonical_name, code)
end
language_names[canonical_name] = code
end
if wikidata_item then
if not wikidata_item:match '^Q%d+$' then
discrepancy(modname,
"%s (<code>%s</code>) has a Wikidata item with an invalid form: <code>%s</code>.",
canonical_name, code, wikidata_item)
end
end
check_other_names_aliases_varieties(modname, code, canonical_name, data)
if lang_type and not (lang_type == "regular" or lang_type == "reconstructed" or lang_type == "appendix-constructed") then
discrepancy(modname, "%s (<code>%s</code>) is of an invalid type <code>%s</code>.", link(canonical_name), code, data.type)
end
if data.scripts then
check_array(modname, code, data, "scripts")
if not data.scripts[1] then
discrepancy(modname, "%s (<code>%s</code>) has no scripts listed.", link(canonical_name), code)
else
for _, sccode in ipairs(data.scripts) do
if not m_script_data[sccode] then
discrepancy(modname,
"%s (<code>%s</code>) lists an invalid script code <code>%s</code>.",
link(canonical_name), code, sccode)
end
nonempty_scripts[sccode] = true
end
end
end
if data.ancestors then
check_ancestors(modname, code, data, data.ancestors, false)
end
if data[3] then
local family = data[3]
if not m_family_data[family] then
discrepancy(modname,
"%s (<code>%s</code>) has an invalid family code <code>%s</code>.",
link(canonical_name), code, family)
end
nonempty_families[family] = true
end
if data.sort_key then
check_entry_name_or_sortkey(modname, code, data, "sort_key")
end
if data.entry_name then
check_entry_name_or_sortkey(modname, code, data, "entry_name")
end
if data.standardChars then
validate_pattern(data.standardChars, modname, code, data, true)
end
end
-- Check two-letter codes
local modname = "languages/data2"
local data2 = require("Module:" .. modname)
for code, data in pairs(data2) do
if not code:find("^[a-z][a-z]$") then
discrepancy(modname, '%s (<code>%s</code>) does not have a two-letter code.', link(data.canonicalName), code)
end
check_language(modname, code, data)
end
-- Check three-letter codes
for i = string.byte('a'), string.byte('z') do
local letter = string.char(i)
local modname = "languages/data3/" .. letter
local data3 = require("Module:" .. modname)
local code_pattern = "^" .. letter .. "[a-z][a-z]$"
for code, data in pairs(data3) do
if not code:find(code_pattern) then
discrepancy(modname,
'%s (<code>%s</code>) does not have a three-letter code starting with "<code>%s</code>".',
link(data.canonicalName), code, letter)
end
check_language(modname, code, data)
end
end
-- Check exceptional codes
modname = "languages/datax"
local datax = require("Module:" .. modname)
for code, data in pairs(datax) do
if code:find("^[a-z][a-z][a-z]?$") then
discrepancy(modname, '%s (<code>%s</code>) has a two- or three-letter code.', link(data.canonicalName), code)
end
check_language(modname, code, data)
end
-- These checks must be done while all_codes only contains language codes:
-- that is, after language data modules have been processed, but before
-- etymology languages, families, and scripts have.
local function check_code_and_name(modname, code, canonical_name)
if not all_codes[code] then
if not language_names[canonical_name] then
discrepancy(modname,
"The code <code>%s</code> and the canonical name %s should be removed; they are not found in a submodule of [[Module:languages]].",
code, canonical_name)
else
discrepancy(modname,
"<code>%s</code>, the code for the canonical name %s, is wrong; it should be <code>%s</code>.",
code, canonical_name, language_names[canonical_name])
end
elseif not language_names[canonical_name] then
local data_table = require("Module:" .. all_codes[code])[code]
discrepancy(modname,
"%s, the canonical name for the code <code>%s</code>, is wrong; it should be %s.",
canonical_name, code, data_table[1] or data_table.canonicalName)
end
end
for code, canonical_name in pairs(m_language_codes) do
check_code_and_name("languages/code to canonical name", code, canonical_name)
end
for canonical_name, code in pairs(m_language_canonical_names) do
check_code_and_name("languages/canonical names", code, canonical_name)
end
end
local function check_etym_languages()
local modname = "etymology languages/data"
local check_etymology_language_data_keys = check_data_keys{
"canonicalName", "otherNames", "aliases", "varieties", "parent",
"wikipedia_article", "wikidata_item", "ancestors"
}
local function link(name)
if not name then
return "???"
elseif name:find("[Ll]anguage$") then
return name
else
return name .. " language"
end
end
for code, data in pairs(m_etym_language_data) do
local canonical_name, parent, ancestors =
data.canonicalName, data.parent, data.ancestors
check_etymology_language_data_keys(modname, code, data)
if all_codes[code] then
discrepancy(modname, "Code <code>%s</code> is not unique; it is also defined in [[Module:%s]].", code, all_codes[code])
else
all_codes[code] = modname
end
if not canonical_name then
discrepancy(modname, "Code <code>%s</code> has no canonical name specified.", code)
elseif language_names[canonical_name] then
--[=[
discrepancy(modname,
"%s (<code>%s</code>) has a canonical name that is not unique; it is also used by the code <code>%s</code>.",
link(data.names[1]), code, language_names[data.names[1]])
--]=]
else
language_names[canonical_name] = code
end
check_other_names_aliases_varieties(modname, code, canonical_name, data)
if parent then
if type(parent) ~= "string" then
discrepancy(modname,
"Etymology-only %s (<code>%s</code>) has a parent language or family code that is %s rather than a string.",
link(canonical_name), code, parent == nil and "nil" or "a " .. type(parent))
elseif not (m_language_data[parent] or m_family_data[parent] or m_etym_language_data[parent]) then
discrepancy(modname,
"Etymology-only %s (<code>%s</code>) has invalid parent language or family code <code>%s</code>.",
link(canonical_name), code, parent)
end
nonempty_families[parent] = true
else
discrepancy(modname,
"Etymology-only %s (<code>%s</code>) has no parent language or family code.",
link(canonical_name), code)
end
if ancestors then
check_ancestors(modname, code, data, ancestors, true)
end
end
local checked = {}
for code, data in pairs(m_etym_language_data) do
local stack = {}
while data do
if checked[data] then
break
end
if stack[data] then
discrepancy(modname, "%s (<code>%s</code>) has a cyclic parental relationship to %s (<code>%s</code>)",
link(data[1] or data.canonicalName), code,
link(m_etym_language_data[data.parent].canonicalName), data.parent
)
break
end
stack[data] = true
code, data = data.parent, data.parent and m_etym_language_data[data.parent]
end
for data in pairs(stack) do
checked[data] = true
end
end
end
local function check_families()
local modname = "families/data"
local check_family_data_keys = check_data_keys{
"canonicalName", "otherNames", "aliases", "varieties", "family",
"protoLanguage", "wikidata_item"
}
local function link(name)
if not name then
return "???"
elseif name:find("[Ll]anguages$") then
return "[[:Category:" .. name .. "|" .. name .. " family]]"
else
return "[[:Category:" .. name .. " languages|" .. name .. " family]]"
end
end
for code, data in pairs(m_family_data) do
check_family_data_keys(modname, code, data)
if all_codes[code] then
discrepancy(modname, "Code <code>%s</code> is not unique; it is also defined in [[Module:%s]].", code, all_codes[code])
else
all_codes[code] = modname
end
if not data.canonicalName then
discrepancy(modname, "<code>%s</code> has no canonical name specified.", code)
elseif family_names[data.canonicalName] then
discrepancy(modname,
"%s (<code>%s</code>) has a canonical name that is not unique; it is also used by the code <code>%s</code>.",
link(data.canonicalName), code, family_names[data.canonicalName])
else
family_names[data.canonicalName] = code
end
check_other_names_aliases_varieties(modname, code, data.canonicalName, data)
if data.family then
if data.family == code and code ~= "qfa-not" then
discrepancy(modname,
"%s (<code>%s</code>) has itself as its family.",
link(data.canonicalName), code)
elseif not m_family_data[data.family] then
discrepancy(modname,
"%s (<code>%s</code>) has an invalid parent family code <code>%s</code>.",
link(data.canonicalName), code, data.family)
end
nonempty_families[data.family] = true
end
end
for code, data in pairs(m_family_data) do
if not (nonempty_families[code] or allowed_empty_families[code]) then
discrepancy(modname, "%s (<code>%s</code>) has no child families or languages.", link(data.canonicalName), code)
end
end
local checked = { ['qfa-not'] = true }
for code, data in pairs(m_family_data) do
local stack = {}
while data do
if checked[code] then
break
end
if stack[code] then
discrepancy(modname, "%s (<code>%s</code>) has a cyclic parental relationship to %s (<code>%s</code>)",
link(data[1] or data.canonicalName), code,
link(m_family_data[data[3]].canonicalName), data[3]
)
break
end
stack[code] = true
code, data = data.family, m_family_data[data[3]]
end
for code in pairs(stack) do
checked[code] = true
end
end
end
local function check_scripts()
local modname = "scripts/data"
local check_script_data_keys = check_data_keys({
"canonicalName", "otherNames", "aliases", "varieties", "parent",
"systems", "wikipedia_article", "characters", "direction",
"character_category",
}, true)
local m_script_codes = require('Module:scripts/code to canonical name')
local m_script_canonical_names = require('Module:scripts/by name')
for code, data in pairs(m_script_data) do
local canonical_name = data.canonicalName
if not m_script_codes[code] and #code == 4 then
discrepancy('scripts/code to canonical name', '<code>%s</code> (%s) is missing', code, canonical_name)
end
check_script_data_keys(modname, code, data)
if not canonical_name then
discrepancy(modname, "Code <code>%s</code> has no canonical name specified.", code)
elseif script_names[canonical_name] then
--[=[
discrepancy(modname,
"%s (<code>%s</code>) has a canonical name that is not unique; it is also used by the code <code>%s</code>.",
link_script(data.names[1]), code, script_names[data.names[1]])
--]=]
else
if not m_script_canonical_names[canonical_name] and #code == 4 then
discrepancy('scripts/by name', '%s (<code>%s</code>) is missing', canonical_name, code)
end
script_names[canonical_name] = code
end
check_other_names_aliases_varieties(modname, code, canonical_name, data)
if not nonempty_scripts[code] then
discrepancy(modname,
"%s (<code>%s</code>) is not used by any language%s.",
link_script(canonical_name), code, data.characters and ""
or " and has no characters listed for auto-detection")
--[[
elseif not data.characters then
discrepancy(modname, "%s (<code>%s</code>) has no characters listed for auto-detection.", link_script(canonical_name), code)
--]]
end
if data.characters then
validate_pattern(data.characters, modname, code, data, false)
end
end
end
-- Warning: cannot be called twice in the same module invocation because
-- some module-global variables are not reset between calls.
function export.do_checks()
messages = setmetatable({}, {
__index = function (self, k)
local val = Array()
self[k] = val
return val
end
})
check_languages()
check_etym_languages()
-- families and scripts must be checked AFTER languages; languages checks fill out
-- the nonempty_families and nonempty_scripts tables, used for testing if a family/script
-- is ever used in the data
check_families()
check_scripts()
setmetatable(messages, nil)
local function find_code(message)
return string.match(message, "<code>([^<]+)</code>")
end
find_code = require("Module:fun").memoize(find_code)
local function comp(message1, message2)
local code1, code2 = find_code(message1), find_code(message2)
if code1 and code2 then
return code1 < code2
else
return message1 < message2
end
end
for modname, msglist in pairs(messages) do
msglist:sort(comp)
end
local ret = messages
messages = nil
return ret
end
function export.format_message(modname, msglist)
return '===[[Module:' .. modname .. ']]==='
.. msglist
:map(
function(msg)
return "\n* " .. msg
end)
:concat()
end
function export.check_modules(...)
local ret = Array()
local messages = export.do_checks()
for _, module in ipairs {...} do
local msglist = messages[module]
if msglist then
ret:insert(export.format_message(module, msglist))
end
end
return ret:concat("\n")
end
function export.check_modules_t(frame)
local args = m_table.shallowcopy(frame.args)
return export.check_modules(unpack(args))
end
function export.perform(frame)
local messages = export.do_checks()
-- Format the messages
local ret = Array()
for modname, msglist in m_table.sortedPairs(messages) do
ret:insert(export.format_message(modname, msglist))
end
-- Are there any messages?
if i == 1 then
return '<b class="success">Glory to Arstotzka.</b>'
else
ret:insert(1, '<b class="warning">Discrepancies detected:</b>')
return ret:concat('\n')
end
end
return export