Translate your iOS app without waiting for a release

Manage translations in a web editor. Push updates over the air. Keep your data on your own servers.

Sign up free How it works

One platform for your entire localization workflow

From editing translations to delivering them to devices — without a release cycle in between.

Mobile apps

Fix a typo or add a language. Users see the change on next app launch — no App Store submission required.

Teams and translators

Translators edit in the browser. Reviewers approve. Developers ship. Everyone works in parallel, not in sequence.

Data-sensitive organizations

Self-hosted by design. Translation data stays on your infrastructure. Full audit trail of every edit.

Translation editor

Edit translations in a clean web interface

A real-time editor with search, filters, and namespace organization. See all languages side by side, edit inline, and track progress per key.

  • Inline editing with instant save
  • Filter by status, language, or namespace
  • Full-text search across all keys and translations
  • Keyboard shortcuts for fast navigation
Project Locale — Translation Editor
Search keys... All statuses Namespace: main
Key English German Status
welcome_title Welcome back Willkommen Approved
nav.settings Settings Einstellungen Approved
checkout.total Total Gesamt Review
error.network Connection lost Draft
Over-the-air delivery

Push updates directly to devices

Publish approved translations and the SDK picks them up on next app launch. No App Store review, no release cycle, no waiting.

  • Instant delivery on app launch
  • Incremental sync — minimal data transfer
  • Built-in fallback to bundled strings
  • Ed25519 signature verification
Delivery pipeline
Edit
Publish
App update
09:12 Translation updated: checkout.total → "Gesamt"
09:14 Release v2.4.1 published to production
09:15 SDK synced — 1.2 KB transferred, 847 devices
Review workflows

Nothing goes live until it's ready

Every translation moves through draft, translated, reviewed, and approved. Assign reviewers, track progress, and control what gets published.

  • Four-stage approval workflow
  • Per-key approve and reject controls
  • Progress tracking per language
  • Role-based publishing permissions
Review — German (de)
Approved: 84%
126 / 150
checkout.total Gesamt
Approve Reject
error.network Verbindung verloren
Approve Reject
profile.edit Profil bearbeiten
Approve Reject
Developer experience

Integrate in minutes, not days

Add the SDK via Swift Package Manager, call one method on launch, and you're live. Works with SwiftUI and UIKit out of the box.

  • Two lines to set up
  • SwiftUI and UIKit support
  • Offline-safe with bundled fallback
  • Minimal network usage with incremental sync
import ProjectLocale

// Configure on launch
L10n.configure(
    projectKey: "pl_your_project_key",
    serverURL:  "https://locale.yourcompany.com"
)

// SwiftUI
L10nText("welcome_title")

// UIKit or anywhere
let title = L10n.string("welcome_title")

// Switch language at runtime
L10n.setLanguage("de")

Three steps to go live

1

Add the SDK

Install via Swift Package Manager and call one method on launch. Existing strings keep working as a built-in fallback.

2

Manage translations

Import .strings files, invite the team, and start editing in the browser. Organize with namespaces and review workflows.

3

Publish over the air

Approve and release. The SDK picks up the update on next app launch — no App Store submission needed.

Start free, scale when ready

Every plan includes over-the-air delivery, the web editor, and full API access.

Free
€0/mo
  • 1 project
  • 2 languages
  • Solo use
  • OTA delivery
Get started
Starter
€9/mo
  • 3 projects
  • 5 languages
  • 3 team members
  • OTA delivery
Get started
Premium
€79/mo
  • Unlimited projects
  • Unlimited languages
  • Unlimited members
  • AI translations
Contact us

Ready to localize faster?

Create a free account, import your .strings files, and deliver the first over-the-air update today.