Skip to content

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

terminal
$ 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

terminal
$ 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:

terminal
$ 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

terminal
langctl projects create "Web App" --languages en,es,fr --description "Customer-facing web app"
OptionDescription
-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

terminal
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):

terminal
langctl projects update web-app --languages en,es,fr,de,ja

projects add-language / remove-language

terminal
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

terminal
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.