Numbers you can check
What AZbox supports today
Every figure here links to the page that proves it. We would rather publish three small true numbers than one big invented one.
Three things a spreadsheet cannot do
Where localization actually breaks
Translating a string is solved. What is not solved is what happens to that string over the next two years, across ten locales and forty releases.
Fix a string in a published app, today
A typo in Spanish should not need a release. Over-the-air updates replace the strings in an app that is already on the store, through the Dart SDK or the REST API.
Without OTA
With OTA
Twelve clients, one place to look
A project per client, with its own languages and its own members. The reviewer for one client sees that client's project and nothing else. Projects and members are unlimited from the Starter plan up.
| Project | Languages | Who has access |
|---|---|---|
| Client A · iOS app | EN · ES · FR · DE | 2 developers, 1 reviewer |
| Client B · web | EN · PT · IT | 1 developer, 1 reviewer |
| Client C · Flutter | EN · ES · JA · KO · ZH | 3 developers |
Catch the broken string before production does
A translation that drops a placeholder does not fail in the translation tool. It fails at runtime, in the language nobody on the team reads.
en.json "cart.items": "You have {count} items"
es.json "cart.items": "Tienes artículos"
⚠ missing placeholder {count} AZbox validates placeholder consistency across translations on import and export, per the format guides for ARB, XML and XLSX.
Technical proof
The three libraries we actually publish
Not screenshots of a dashboard. This is the code, and every block links to the registry where you can check the package exists.
Flutter · Dart
Published SDK, with over-the-air updates.
dependencies:
azbox: ^1.0.16
# main.dart
import 'package:azbox/azbox.dart';
await Azbox.ensureInitialized(
apiKey: 'your-api-key',
projectId: 'your-project-id',
);
runApp(Azbox(child: MyApp())); pub.dev/packages/azbox Node · TypeScript
Small client to pull keywords into your build.
npm install azbox-node
import { AzboxClient } from "azbox-node";
const client = new AzboxClient({
token: process.env.AZBOX_API_KEY,
projectId: "my-project-id",
language: "ES",
});
const keywords = await client.getKeywords();
// [{ id, data: { translation } }] npmjs.com/package/azbox-node PHP
Drop-in library for PHP sites.
composer require azbox/azbox-php
require __DIR__ . '/vendor/autoload.php';
\Azbox\AZ::Instance(array(
"api_key" => "YOUR API KEY",
"projectId" => "YOUR PROJECT ID",
"original_language" => "en",
"destination_languages" => "es,fr,de",
)); packagist.org/packages/azbox/azbox-php Any other stack — React Native, native iOS or Android, Laravel, Vue — integrates through the REST API. We do not publish SDKs for those, and we would rather say so here than let you find out on GitHub.
Fit
Who this is for, and who it is not
AZbox fits if
- You ship in several languages on a recurring basis, and the product keeps changing after each release.
- You run localization across several projects or clients at once and need roles, isolation and one place to look.
- You need to fix strings in apps that are already published, without waiting for an App Store or Play review.
- You want placeholders, ICU plurals, string length and HTML tags validated across languages before they ship.
AZbox is not for you if
- You have one project in two languages that does not change. Use the free tier, or a script.
- You need a one-off translation of a finished document. A translator or a generic AI tool will be cheaper and faster.
- Self-hosting is a hard requirement. AZbox is a hosted platform; Tolgee is a better fit.
We would rather lose the signup than the trust.
Start Global Growth Today
Upload your language files, get them translated, and keep every locale in sync as your product keeps changing.
Get Started - It's Free