App localization without paying again for every update
iOS, Android, React Native & Flutter. Translate once, updates only for new strings.
Language rules and file formats
Regional number formats. Preserved placeholders.
Translate text for the language and region you need. Recognised numbers and dates follow fixed rules; technical placeholders are protected and checked.
Explore format examples
| Value | de-DE | en-US |
|---|---|---|
| Number | 1.234.567,89 | 1,234,567.89 |
| Date | 13.09.2026 | 9/13/2026 |
| Time | 17:30 | 5:30 PM |
| Percent | 12,5 % | 12.5% |
| EUR amount | 1.234,56 € | €1,234.56 |
Your variables stay usable
Recognised placeholders retain their names and types. For ICU messages, branch text is translated and the technical structure is checked.
{name} · {{count}} · %1$s · {price, number}
Check and retry what needs fixing
Missing or technically invalid translations are retried selectively. If errors remain, the file is not released as a finished translation. Budgets and retry counts are limited.
The rule data covers 1,082 language, script and region variants. This is not a claim of linguistically reviewed translation quality for that many languages.
View all rules, supported content and limitsSupported formats
All common localization formats are supported
iOS .strings
Localizable.strings for Swift & Objective-C
Android XML
strings.xml for Kotlin & Java
JSON i18n
For React, Vue, Angular, Next.js
Flutter ARB
Application Resource Bundle for Flutter
XLIFF
Cross-platform localization format
For developers
Integration in just a few minutes
Placeholder protection
Recognised variables are protected and checked for names, types and occurrences after translation.
Nested JSON
Nested structures are processed correctly
Plural Handling
ICU messages are checked structurally; text inside the branches is translated.
Translation Memory
One-time payment, updates forever
With app updates you only pay for new or changed strings. Unchanged translations are 100% free.
First translation
10,000 characters
52 €
Update (3 months later)
2,000 new characters
€11
Why us instead of ChatGPT?
The differences at a glance
| Feature | shipglobal | ChatGPT / DIY | Agency |
|---|---|---|---|
Translation Memory Translate once; updates are free | Tokens only the first time | New every time | New every time |
Large files No size limit | Unlimited | Token limit | No limit |
Placeholder protection {name}, %@, {{count}} remain intact | Automatic | Error-prone | Manual |
Original format JSON, XML, and .strings are preserved | Automatic | Copy-paste required | Depends on provider |
64 languages Translate all at once | Simultaneously | Individually | Expensive |
Consistency Same terms = same translation | Reuse matching translations | Inconsistent | Varies |
Price Cost per translation | $€19 per seat per month, incl. VAT | $$Time + API | $$$10-50x more expensive |
Frequently Asked Questions
- Which app formats are supported?
- iOS .strings, Android resource XML, JSON, Flutter ARB and XLIFF, plus Markdown/MDX. The language rules overview describes limits for each format. Apple .xcstrings still needs a dedicated translation adapter.
- How does placeholder protection work?
- The engine masks recognised placeholders before the model call, restores their original spelling and checks their technical contract. Missing or invalid results are retried selectively; remaining errors prevent release as a finished translation.
- What is Translation Memory?
- Translation Memory stores your translations. On updates, identical strings are reused for free — you pay only for new content.
- How long does a translation take?
- Duration depends on text volume, target languages, model and any required repair attempts. Progress and errors appear directly in the app or browser workspace.