Terms and translations

Manage terms in the dashboard

The terms list, search and filters, the translation dialog, and the side-by-side editor for working through a whole language.

Not verified yet

Open a namespace from LangSyncNamespaces and you land on its terms page. Everything on this page operates on one namespace; the badge next to the view switcher shows the namespace's default language.

The page has two views, switchable at the top of the terms card:

  • List — a table of terms, best for finding, adding, and editing individual keys.
  • Side-by-side — a two-column translation editor, best for working through one language top to bottom.

Add a term

  1. Click Add term.
  2. Fill in the dialog:
    • Mark — the key (e.g. welcome.title). Must be unique in the namespace; a duplicate is rejected.
    • Context — optional note about where the string is used.
    • Default language value — the source string.
    • Translate automatically — when enabled, the AI fills the term's translation in every attached target language in the background right after the term is created.
  3. Save.

Find terms: search and filters

  • Search matches against term marks (debounced as you type).
  • Missing translations — a one-click filter that narrows the list to terms with at least one untranslated language. This is the "show me what's left to do" button.
  • The × button clears active filters. With filters active and no matches, the empty state offers Clear filters directly.

The list is cursor-paginated — long namespaces load in pages as you scroll or page through.

Edit a term's translations

Each row has three actions: edit the term itself (mark + context), edit its translations, and delete.

The Edit mark translations dialog shows one input per attached language. Type into any of them and save; values are written per language. This is the fastest way to fix a couple of languages for one term.

Two things to know:

  • Saving overwrites the previous value — there's no version history for translations.
  • An empty input means the translation stays empty (and keeps showing up in missing-translation filters); empty translations aren't billed.

Side-by-side view

Click the Side-by-side switcher (or open the namespace's split view). This editor shows two columns of translations for every term:

  • Source language (left, read-only) — pick which language you're translating from. Only languages that are 100% translated are offered as the source, so you never translate from a column full of holes.
  • Target language (right, editable) — pick the language you're working on. Each term gets a textarea, pre-filled with the existing translation if there is one.

Work through the column, then click Save Changes — all edited translations are saved in one batch. The button stays disabled until you've actually changed something.

Extras that make this the fastest review loop:

  • The sparkle button next to each target field asks the AI for a suggestion for that one term (tooltip: "Generate AI translation"). The suggestion lands in the textarea for you to review — nothing is stored until you save. The button is disabled when the source value is empty, because the AI needs a source to translate from.
  • Missing translations filter — hide everything that's already translated. When nothing is missing, the view says "All translations complete!".
  • Translate missing button — kicks off a batch auto-translate for the whole namespace when cell-by-cell is too slow.

Delete a term

Use the row's delete action and confirm. The term and all its translations across every language are removed permanently. If your application still references the mark, it will stop receiving a value for it on the next fetch.

Bulk operations

For anything beyond a handful of terms, don't do it by hand:

  • Onboarding existing translationsBulk import (CSV/TSV/XLSX/XLS with column mapping).
  • Keeping a Git repo and LangSync in syncnrc langsync sync, which diffs your local JSON files against the server and pushes only what changed.
  • Filling every missing translationAuto-translate.

On this page