🏮 Lantern

Using Lantern

Lantern is a localization manager: a project holds translation keys, and each key has a value in every language. You edit values in a grid, collaborate, and your apps pull the result through the read API.

Live instance: https://lantern.abyss-inn.ch

1. Account & projects

  1. Sign up with name, email, and a password (≥ 8 chars), then sign in.
  2. Create a project from the Projects page (name + optional description). You become its owner.
  3. Switch between projects with the dropdown in the top bar; click 🏮 Lantern to go back to the list.

Each project has four tabs: Editor, Import / Export, API, Members.

2. Roles

Action Owner Admin Translator
Edit translations, add keys, comment, mark reviewed
Add / delete languages, delete keys
Create / revoke API tokens
Manage members (invite, change role, remove)

3. Languages

On the Editor tab, owners/admins add a language by locale code (e.g. en, fr, de-CH) and a display name. The first language becomes the default. Locale codes are what the API returns and what your files are named after, so pick the codes your app expects. Remove a language with the ✕ on its chip (this deletes its values).

4. Keys

Add a key with an optional namespace, a name, and an optional description. The key's full path is namespace.name (or just name with no namespace) — e.g. namespace home + name titlehome.title.

A key is rejected if its full path already exists, even via a different split (home+title collides with a plain home.title). Pick one convention.

Use the search box to filter keys; delete a key with the ✕ next to it (owners/admins).

5. The editor grid

Rows are keys, columns are languages. Type a value into a cell — it saves automatically when you leave the field (only if changed).

  • Status dot next to each cell: gray = untranslated (empty), green = translated, blue = reviewed. Click a green dot to mark it reviewed; click again to unmark. Editing a reviewed value resets it to translated.
  • Completion bars at the top show each language's progress (filled values / total keys), updating live as you type.
  • Needs review checkbox filters to keys that have translated-but-not-yet-reviewed values — handy for a reviewer pass.

6. Comments

Each key row has a 💬 button with a count. Open it to read the thread and add a comment — useful for context ("keep under 20 chars", "this is a button label", etc.).

7. Members

On the Members tab the owner can add a member by email (they must already have a Lantern account), set their role to Admin or Translator, change roles later, or remove them.

8. Import / Export

On the Import / Export tab:

  • Import
    • JSON — merges into one chosen language (handles flat {"home.title": "..."} and nested {"home": {"title": "..."}}).
    • CSV / XLSX — a key column plus one column per locale; merges across languages and auto-creates any missing ones. Blank cells are skipped (won't wipe values).
  • Export
    • JSON for one language (flat or nested), or CSV / XLSX covering all.

Import is the bulk way to get keys in; the API (INTEGRATION.md) is the automated way to get translations out into your apps.

9. API tokens

On the API tab, owners/admins create a token (read-only, scoped to that project). The token string is shown once — copy it then. List shows each token's name, prefix, and last-used time; revoke any token to cut off access immediately.

Use the token to pull translations — see INTEGRATION.md.