Docs

The short path from a file to shipped copy.

Create a project, move strings with the CLI, then connect a CMS or app. The API is on the same host.

Get started

02

Copy the token

Create a project token in the dashboard. It looks like lfs_... and is shown once.

03

Log in from the CLI

Point the SDK at https://localesfs.com.

npx @localesfs/sdk login --url https://localesfs.com

Import and export

Import JSON, CSV, YAML, PO, or properties files, review the copy, then export a locale bundle or pull with the CLI.

npx @localesfs/sdk pull --lang fr --format json --out ./locales/fr.json
npx @localesfs/sdk push --lang en --file ./locales/en.json
npx @localesfs/sdk bundle --out ./locales
CMS plugins

Push source, pull translations.

Install the connector, send source strings into LocalesFS, then pull the reviewed copy back. Setup for each platform is on Integrations.

  • WordPress

    wp-content/plugins/localesfs

  • Contentful

    npx @localesfs/contentful push

  • Shopify

    npx @localesfs/shopify push

  • Strapi 5

    npm install @localesfs/strapi

Mobile SDKs

Call t("key") in the app.

Generate a bundle, ship it with the app, then translate at runtime. Placeholders use {name}.

npx @localesfs/sdk bundle --out ./locales
  • React Native / Expo

    @localesfs/react-native

  • Flutter

    localesfs

  • iOS

    localesfs-ios

  • Android

    LocalesFS

API

Same host. Send the token.

Base URL https://localesfs.com. Send Authorization: Bearer lfs_... with a project token, or a JWT from login.

POST /api/auth/login

Email and password. Returns a JWT for dashboard-scoped clients.

GET /api/projects

List projects the token can access.

POST /api/projects/:id/import

Bulk-upsert keys. Body: { lang, entries: [{ key, text, context? }] } or { lang, entries: { key: text } }. Used by CMS plugins.

GET /api/projects/:id/bundle

All locales as JSON: { data: { project_id, default_language, languages } }. Optional ?langs=en,fr. Used by mobile SDKs.

GET /api/projects/:id/export

One locale file. Query: lang, format=json|json_nested|csv|yaml|po|properties.

POST /api/projects/:id/tokens

Create a project API token. The plain lfs_... value is shown once.

POST /api/projects/:id/keys

Create a key. Body: { key, source_text, context?, tags?, max_length? }.

POST /api/projects/:id/webhooks

Subscribe a URL. Events: key.added, key.updated, translation.updated, translation.verified, import.completed, export.ready, task.created. The signing secret is returned once. Deliveries send X-LocalesFS-Signature: sha256=...

GET /api/projects/:id/qa

Placeholder, empty-string, missing-locale, and max-length issues for every target language.

POST /api/projects/:id/tasks

Open a review task. Body: { title, description?, priority?, status? }.

POST /api/projects/:id/contributors

Add a teammate who already has an account. Body: { email, role? }.