CLI reference
Project Commands
A project holds the translation keys for one app, in a set of languages. Every project has a slug — the identifier you use in commands and langctl.json.
projects list
$ langctl projects list
SLUG NAME LANGUAGES DEFAULT
web-app Web App en,es,fr,de en
mobile-app Mobile App en,es en projects get
$ langctl projects get web-app
Web App (web-app)
Customer-facing web application
languages en, es, fr, de default en
modules auth, checkout, dashboard
id 2f0c… projects stats
Key counts and translation coverage per language:
$ langctl projects stats web-app
web-app 45 keys 41 published 4 draft
LANG TRANSLATED DONE
en 45/45 100%
es 41/45 91%
fr 45/45 100%
de 38/45 84% projects create
langctl projects create "Web App" --languages en,es,fr --description "Customer-facing web app" | Option | Description |
|---|---|
-l, --languages <codes> | Comma-separated language codes (default en) |
--default-language <code> | Source language — defaults to the first of --languages |
-d, --description <text> | Description |
The slug is derived from the name (Web App → web-app) and printed when the project is created.
projects update
langctl projects update web-app --name "Web App (2025)" --description "Main site"
langctl projects update web-app --default-language es Note
Renaming a project never changes its slug, so langctl.json files and CI pipelines keep working.
--languages sets the complete language list. Languages you leave out are removed along with all of their translations, so langctl asks for confirmation (or --yes in CI):
langctl projects update web-app --languages en,es,fr,de,ja projects add-language / remove-language
langctl projects add-language web-app ja ko
langctl projects remove-language web-app ko --yes Codes follow BCP 47: en, fil, pt-BR, zh-Hans. The default language can’t be removed. See Supported Languages.
projects delete
langctl projects delete old-prototype Deletes the project and its keys after confirmation; add --yes when running non-interactively.
Permissions
Listing and viewing projects works with any API key. Creating and updating projects and adding or removing languages needs the projects:write scope. Deleting a project needs the org:admin scope.