Namespaces
Isolated translation workspaces — what they contain, how to create and configure them, and what happens on every destructive change.
A namespace is the top-level container in LangSync. Each namespace has its own default language, its own set of target languages, its own terms, and its own translation progress. Namespaces are fully isolated from each other: the same term mark in two namespaces refers to two unrelated keys, and nothing translated in one namespace leaks into another.
Most teams create one namespace per deployable surface — web-app,
ios-app, marketing-site — or one per client for agencies managing
multiple brands. The glossary is the one thing
namespaces share: it's organization-wide and applies to AI
translations in every namespace.
What a namespace has
| Field | What it does | Rules |
|---|---|---|
| Name | The slug used in API paths, the CLI, and the dashboard URL. | Letters, digits, hyphens, underscores (^[a-zA-Z0-9\-_]+$). Case-sensitive. Unique within your organization. |
| Description (context) | Free-text note about what lives in the namespace, shown in the namespace list and pickers. | Free text. |
| Default language | The language your source strings are written in. Every term has a value in this language; all other languages are translations of it. | Set at creation; changeable later. |
| Target languages | The languages you want translations in. | Attach and detach at any time. |
| Terms | The translation keys, each with one translation per attached language. | See Terms. |
The namespace list also shows two computed columns: Total terms and Progress — the percentage of term × language cells that have a translation. Progress is the quickest way to spot a namespace that needs an auto-translate run.
Create a namespace
Open Namespaces
In LangSync → Namespaces, click New namespace (or Create your first namespace if the list is empty).
Fill in the form
- Name — e.g.
web-app. Prefer short, lowercase, hyphen-separated names: they appear in URLs, API paths, and CLI commands, and they're case-sensitive everywhere. - Description — e.g. "Product UI strings for the checkout flow".
- Default language — searchable dropdown of all shared and custom languages.
Create
Click Create item. You land back on the list; open the namespace to attach target languages and add terms.
You can also create namespaces from the CLI
(nrc langsync namespace create web --default-language en) — see
CLI.
Namespace settings
Open a namespace, then ⋯ → Namespace settings. From here you can:
- Rename the namespace.
- Edit the description.
- Change the default language.
- Manage languages — current languages appear as badges (with an × to remove each), and a searchable picker adds new ones.
What each change actually does
- Renaming updates the slug used in API paths immediately. Any deployed application or CLI config still using the old name starts failing until you update it — the Public API returns an authentication error for unknown namespace names, and the CLI reports the namespace as not accessible.
- Changing the default language keeps every existing translation, including the old default's. It changes what counts as the source: new AI translations use the new default language's value as their source text.
- Adding a language creates an empty column — no translations exist for it until you write them or run auto-translate.
- Removing a language deletes every translation stored in that
language across every term in the namespace. The terms themselves
and their other-language translations are untouched. There is no
undo; the removal is recorded in the
audit log as
namespace.language_removed.
Delete a namespace
From the namespaces list, use the row's delete action. The confirmation dialog states it plainly: "This action cannot be undone."
Deleting a namespace permanently removes:
- every term and every translation in it,
- every sync job record targeting it,
- every bulk import record and its uploaded files.
Two things are not affected, because they're organization-scoped,
not namespace-scoped: API keys and the
glossary. The deletion is written to the
audit log as namespace.deleted.
Naming conventions
- Group by deployable surface, not by language pair. LangSync
already handles multiple languages inside one namespace — you never
need
web-app-de. - Keep names short and lowercase. They show up in API URLs, in
.langsync.json, and in every CLI invocation. - Names are case-sensitive.
Web-Appandweb-appare two different namespaces. Sticking to lowercase avoids the confusion entirely.
Common errors
| Symptom | Cause |
|---|---|
INVALID_NAME when creating | The name contains characters outside letters, digits, -, _. |
| Creation rejected with a conflict | A namespace with that name already exists in the organization. |
| CLI: "namespace 'X' is not accessible to the active organization" | Wrong organization active, the namespace was renamed/deleted, or the name's casing doesn't match. |
402 / "organization blocked" on create | Your organization has unpaid invoices — see Platform → Billing. |