Conlang Atlas of Language Structures

Log in | Sign up

Latest news Older news

CALS-cards for a meetup badge for LCC12 are available at the registration desk

Login-help is available on site.

Pinned: 2026-07-10 13:00

All natlangs copied from WALS are now marked as being "from earth"

Ahem, why they weren't all marked like that in the first place, 'tis a mystery…

Pinned: 2026-07-01 19:39

2026-07-10 19:30 Changed language: Mazae

Mazae by Yjfjyfrynfh was updated.

2026-07-10 19:29 New language: Mazae

yjfjyfrynfh added Mazae to CALS.

<a href="/language/mazae/">l̥ukel̥i </a><a href="/language/mazae/">Mazae</a> (And that's how you greet someone in Mazae.)

What defines your conlang?

By adding your language here, and answering the questions by choosing a single value for each relevant WALS-feature (e.g. it's not a goal to answer every single one of them!), you might discover new things in your conlang, or grammar gaps that need to be filled somehow. By reading the descriptions of each feature at WALS, you also get a crash course in linguistic typology and universals – but be warned, some of those papers are overly scholarly...

CALS challenges

Feed: New languages Newly added

Feed: Changed languages Last modified

Feed: New translation exercises New translation exercises

Feed: Recently joined Recently joined

New stuff and changes have been moved to its own page. See also the link in the footer.

[{'sql': 'SELECT 1 AS "a" FROM "taggit_taggeditem" WHERE "taggit_taggeditem"."content_type_id" = 11 LIMIT 1', 'time': '0.002'}, {'sql': 'SELECT "taggit_tag"."name" AS "name", "taggit_tag"."slug" AS "slug", COUNT("taggit_taggeditem"."id") AS "count" FROM "taggit_tag" LEFT OUTER JOIN "taggit_taggeditem" ON ("taggit_tag"."id" = "taggit_taggeditem"."tag_id") WHERE "taggit_tag"."id" IN (SELECT U0."tag_id" AS "tag_id" FROM "taggit_taggeditem" U0 WHERE U0."content_type_id" = 11) GROUP BY "taggit_tag"."id" HAVING COUNT("taggit_taggeditem"."id") >= 2 ORDER BY 1 ASC', 'time': '0.012'}, {'sql': 'SELECT MAX("count"), MIN("count") FROM (SELECT COUNT("taggit_taggeditem"."id") AS "count" FROM "taggit_tag" LEFT OUTER JOIN "taggit_taggeditem" ON ("taggit_tag"."id" = "taggit_taggeditem"."tag_id") WHERE "taggit_tag"."id" IN (SELECT U0."tag_id" AS "tag_id" FROM "taggit_taggeditem" U0 WHERE U0."content_type_id" = 11) GROUP BY "taggit_tag"."id" HAVING COUNT("taggit_taggeditem"."id") >= 2) subquery', 'time': '0.006'}, {'sql': 'SELECT "nano_blog_entry"."id", "nano_blog_entry"."headline", "nano_blog_entry"."content", "nano_blog_entry"."pub_date" FROM "nano_blog_entry" INNER JOIN "taggit_taggeditem" ON ("nano_blog_entry"."id" = "taggit_taggeditem"."object_id" AND ("taggit_taggeditem"."content_type_id" = 35)) INNER JOIN "taggit_tag" ON ("taggit_taggeditem"."tag_id" = "taggit_tag"."id") WHERE "taggit_tag"."slug" IN (\'devel\', \'milestone\', \'pinned\') ORDER BY "nano_blog_entry"."pub_date" DESC LIMIT 2', 'time': '0.007'}, {'sql': 'SELECT "nano_blog_entry"."id", "nano_blog_entry"."headline", "nano_blog_entry"."content", "nano_blog_entry"."pub_date" FROM "nano_blog_entry" WHERE NOT ("nano_blog_entry"."id" IN (13804, 13793)) ORDER BY "nano_blog_entry"."pub_date" DESC LIMIT 2', 'time': '0.013'}, {'sql': 'SELECT "cals_language"."id", "cals_language"."name", "cals_language"."internal_name", "cals_language"."slug", "cals_language"."author", "cals_language"."homepage", "cals_language"."background", "cals_language"."background_type", "cals_language"."from_earth", "cals_language"."greeting", "cals_language"."vocabulary_size", "cals_language"."family_id", "cals_language"."natlang", "cals_language"."average_score", "cals_language"."num_features", "cals_language"."num_avg_features", "cals_language"."visible", "cals_language"."public", "cals_language"."added_by_id", "cals_language"."manager_id", "cals_language"."created", "cals_language"."last_modified", "cals_language"."last_modified_by_id" FROM "cals_language" WHERE ("cals_language"."visible" AND NOT ("cals_language"."slug"::text LIKE \'testarossa%\' AND "cals_language"."slug" IS NOT NULL)) ORDER BY "cals_language"."created" DESC LIMIT 5', 'time': '0.005'}, {'sql': 'SELECT "cals_language"."id", "cals_language"."name", "cals_language"."internal_name", "cals_language"."slug", "cals_language"."author", "cals_language"."homepage", "cals_language"."background", "cals_language"."background_type", "cals_language"."from_earth", "cals_language"."greeting", "cals_language"."vocabulary_size", "cals_language"."family_id", "cals_language"."natlang", "cals_language"."average_score", "cals_language"."num_features", "cals_language"."num_avg_features", "cals_language"."visible", "cals_language"."public", "cals_language"."added_by_id", "cals_language"."manager_id", "cals_language"."created", "cals_language"."last_modified", "cals_language"."last_modified_by_id" FROM "cals_language" WHERE ("cals_language"."visible" AND NOT ("cals_language"."slug"::text LIKE \'testarossa%\' AND "cals_language"."slug" IS NOT NULL)) ORDER BY "cals_language"."last_modified" DESC LIMIT 5', 'time': '0.003'}, {'sql': 'SELECT "cals_translationexercise"."id", "cals_translationexercise"."name", "cals_translationexercise"."slug", "cals_translationexercise"."exercise", "cals_translationexercise"."comment", "cals_translationexercise"."category_id", "cals_translationexercise"."added_by_id", "cals_translationexercise"."added" FROM "cals_translationexercise" ORDER BY "cals_translationexercise"."added" DESC LIMIT 5', 'time': '0.002'}, {'sql': 'SELECT "calsaccount_user"."id", "calsaccount_user"."password", "calsaccount_user"."last_login", "calsaccount_user"."is_superuser", "calsaccount_user"."username", "calsaccount_user"."first_name", "calsaccount_user"."last_name", "calsaccount_user"."email", "calsaccount_user"."is_staff", "calsaccount_user"."is_active", "calsaccount_user"."date_joined" FROM "calsaccount_user" WHERE NOT ("calsaccount_user"."username" = \'countach\') ORDER BY "calsaccount_user"."date_joined" DESC LIMIT 5', 'time': '0.003'}, {'sql': 'SELECT "cals_profile"."user_id", "cals_profile"."username", "cals_profile"."display_name", "cals_profile"."slug", "cals_profile"."show_username", "cals_profile"."homepage", "cals_profile"."homepage_title", "cals_profile"."country_id", "cals_profile"."native_tongue_id", "cals_profile"."latitude", "cals_profile"."longitude", "cals_profile"."altitude", "cals_profile"."date_format", "cals_profile"."is_visible", "cals_profile"."is_lurker", "cals_profile"."seen_profile", "cals_profile"."seen_ipv6" FROM "cals_profile" WHERE "cals_profile"."user_id" = 1308 LIMIT 21', 'time': '0.002'}, {'sql': 'SELECT "cals_profile"."user_id", "cals_profile"."username", "cals_profile"."display_name", "cals_profile"."slug", "cals_profile"."show_username", "cals_profile"."homepage", "cals_profile"."homepage_title", "cals_profile"."country_id", "cals_profile"."native_tongue_id", "cals_profile"."latitude", "cals_profile"."longitude", "cals_profile"."altitude", "cals_profile"."date_format", "cals_profile"."is_visible", "cals_profile"."is_lurker", "cals_profile"."seen_profile", "cals_profile"."seen_ipv6" FROM "cals_profile" WHERE "cals_profile"."user_id" = 1308 LIMIT 21', 'time': '0.001'}, {'sql': 'SELECT "nano_badge_badge"."id", "nano_badge_badge"."level", "nano_badge_badge"."name", "nano_badge_badge"."description" FROM "nano_badge_badge" INNER JOIN "nano_badge_badge_receivers" ON ("nano_badge_badge"."id" = "nano_badge_badge_receivers"."badge_id") WHERE "nano_badge_badge_receivers"."user_id" = 1308', 'time': '0.002'}, {'sql': 'SELECT "cals_profile"."user_id", "cals_profile"."username", "cals_profile"."display_name", "cals_profile"."slug", "cals_profile"."show_username", "cals_profile"."homepage", "cals_profile"."homepage_title", "cals_profile"."country_id", "cals_profile"."native_tongue_id", "cals_profile"."latitude", "cals_profile"."longitude", "cals_profile"."altitude", "cals_profile"."date_format", "cals_profile"."is_visible", "cals_profile"."is_lurker", "cals_profile"."seen_profile", "cals_profile"."seen_ipv6" FROM "cals_profile" WHERE "cals_profile"."user_id" = 1307 LIMIT 21', 'time': '0.001'}, {'sql': 'SELECT "cals_profile"."user_id", "cals_profile"."username", "cals_profile"."display_name", "cals_profile"."slug", "cals_profile"."show_username", "cals_profile"."homepage", "cals_profile"."homepage_title", "cals_profile"."country_id", "cals_profile"."native_tongue_id", "cals_profile"."latitude", "cals_profile"."longitude", "cals_profile"."altitude", "cals_profile"."date_format", "cals_profile"."is_visible", "cals_profile"."is_lurker", "cals_profile"."seen_profile", "cals_profile"."seen_ipv6" FROM "cals_profile" WHERE "cals_profile"."user_id" = 1307 LIMIT 21', 'time': '0.001'}, {'sql': 'SELECT "nano_badge_badge"."id", "nano_badge_badge"."level", "nano_badge_badge"."name", "nano_badge_badge"."description" FROM "nano_badge_badge" INNER JOIN "nano_badge_badge_receivers" ON ("nano_badge_badge"."id" = "nano_badge_badge_receivers"."badge_id") WHERE "nano_badge_badge_receivers"."user_id" = 1307', 'time': '0.001'}, {'sql': 'SELECT "cals_profile"."user_id", "cals_profile"."username", "cals_profile"."display_name", "cals_profile"."slug", "cals_profile"."show_username", "cals_profile"."homepage", "cals_profile"."homepage_title", "cals_profile"."country_id", "cals_profile"."native_tongue_id", "cals_profile"."latitude", "cals_profile"."longitude", "cals_profile"."altitude", "cals_profile"."date_format", "cals_profile"."is_visible", "cals_profile"."is_lurker", "cals_profile"."seen_profile", "cals_profile"."seen_ipv6" FROM "cals_profile" WHERE "cals_profile"."user_id" = 1306 LIMIT 21', 'time': '0.001'}, {'sql': 'SELECT "cals_profile"."user_id", "cals_profile"."username", "cals_profile"."display_name", "cals_profile"."slug", "cals_profile"."show_username", "cals_profile"."homepage", "cals_profile"."homepage_title", "cals_profile"."country_id", "cals_profile"."native_tongue_id", "cals_profile"."latitude", "cals_profile"."longitude", "cals_profile"."altitude", "cals_profile"."date_format", "cals_profile"."is_visible", "cals_profile"."is_lurker", "cals_profile"."seen_profile", "cals_profile"."seen_ipv6" FROM "cals_profile" WHERE "cals_profile"."user_id" = 1306 LIMIT 21', 'time': '0.001'}, {'sql': 'SELECT "nano_badge_badge"."id", "nano_badge_badge"."level", "nano_badge_badge"."name", "nano_badge_badge"."description" FROM "nano_badge_badge" INNER JOIN "nano_badge_badge_receivers" ON ("nano_badge_badge"."id" = "nano_badge_badge_receivers"."badge_id") WHERE "nano_badge_badge_receivers"."user_id" = 1306', 'time': '0.001'}, {'sql': 'SELECT "cals_profile"."user_id", "cals_profile"."username", "cals_profile"."display_name", "cals_profile"."slug", "cals_profile"."show_username", "cals_profile"."homepage", "cals_profile"."homepage_title", "cals_profile"."country_id", "cals_profile"."native_tongue_id", "cals_profile"."latitude", "cals_profile"."longitude", "cals_profile"."altitude", "cals_profile"."date_format", "cals_profile"."is_visible", "cals_profile"."is_lurker", "cals_profile"."seen_profile", "cals_profile"."seen_ipv6" FROM "cals_profile" WHERE "cals_profile"."user_id" = 1305 LIMIT 21', 'time': '0.001'}, {'sql': 'SELECT "cals_profile"."user_id", "cals_profile"."username", "cals_profile"."display_name", "cals_profile"."slug", "cals_profile"."show_username", "cals_profile"."homepage", "cals_profile"."homepage_title", "cals_profile"."country_id", "cals_profile"."native_tongue_id", "cals_profile"."latitude", "cals_profile"."longitude", "cals_profile"."altitude", "cals_profile"."date_format", "cals_profile"."is_visible", "cals_profile"."is_lurker", "cals_profile"."seen_profile", "cals_profile"."seen_ipv6" FROM "cals_profile" WHERE "cals_profile"."user_id" = 1305 LIMIT 21', 'time': '0.001'}, {'sql': 'SELECT "nano_badge_badge"."id", "nano_badge_badge"."level", "nano_badge_badge"."name", "nano_badge_badge"."description" FROM "nano_badge_badge" INNER JOIN "nano_badge_badge_receivers" ON ("nano_badge_badge"."id" = "nano_badge_badge_receivers"."badge_id") WHERE "nano_badge_badge_receivers"."user_id" = 1305', 'time': '0.001'}, {'sql': 'SELECT "cals_profile"."user_id", "cals_profile"."username", "cals_profile"."display_name", "cals_profile"."slug", "cals_profile"."show_username", "cals_profile"."homepage", "cals_profile"."homepage_title", "cals_profile"."country_id", "cals_profile"."native_tongue_id", "cals_profile"."latitude", "cals_profile"."longitude", "cals_profile"."altitude", "cals_profile"."date_format", "cals_profile"."is_visible", "cals_profile"."is_lurker", "cals_profile"."seen_profile", "cals_profile"."seen_ipv6" FROM "cals_profile" WHERE "cals_profile"."user_id" = 1304 LIMIT 21', 'time': '0.001'}, {'sql': 'SELECT "cals_profile"."user_id", "cals_profile"."username", "cals_profile"."display_name", "cals_profile"."slug", "cals_profile"."show_username", "cals_profile"."homepage", "cals_profile"."homepage_title", "cals_profile"."country_id", "cals_profile"."native_tongue_id", "cals_profile"."latitude", "cals_profile"."longitude", "cals_profile"."altitude", "cals_profile"."date_format", "cals_profile"."is_visible", "cals_profile"."is_lurker", "cals_profile"."seen_profile", "cals_profile"."seen_ipv6" FROM "cals_profile" WHERE "cals_profile"."user_id" = 1304 LIMIT 21', 'time': '0.001'}, {'sql': 'SELECT "nano_badge_badge"."id", "nano_badge_badge"."level", "nano_badge_badge"."name", "nano_badge_badge"."description" FROM "nano_badge_badge" INNER JOIN "nano_badge_badge_receivers" ON ("nano_badge_badge"."id" = "nano_badge_badge_receivers"."badge_id") WHERE "nano_badge_badge_receivers"."user_id" = 1304', 'time': '0.001'}]