Create a free account and get 10,000 characters monthly for free to translate your content with our AI-powered localization service.
No credit card required to get started!
Our I18N File Translation service supports a wide range of file formats used across different platforms and frameworks.
| Format | Used By | Supports translating only new strings | Supports comments | Supports metadata translation control |
|---|---|---|---|---|
JSON / JSONC | JavaScript, TypeScript · i18next, React, Vue, Angular | |||
XML | Android strings.xml · iOS plist · Generic XML · .NET ResX | |||
YAML / YML | Ruby on Rails · Node.js · Configuration files | |||
ARB | Flutter · Dart | |||
PO / POT | GNU Gettext · PHP, Python, WordPress, Ruby | |||
XLIFF | Professional CAT tools · Localization platforms · Angular | |||
.properties | Java · Spring Boot · Android | |||
CSV / TSV | Spreadsheets · Custom localization workflows | |||
MD | Documentation · README files · Jekyll, Hugo, Docusaurus | |||
TXT | Plain text files used for app localization |
Translating i18n files is a straightforward process provided by our service. Follow these steps to translate your internationalization files and ensure consistency across your projects.
Set Source and Target Languages:
Choose your source language (e.g., en-US). Add one or more target languages (e.g., fr-FR, de-DE), and configure translation options.
Incremental Translation: This feature is ideal for ongoing projects. By uploading the existing target files, you can ensure that only new and changed strings are translated, while previously translated content remains unchanged. This not only saves costs but also preserves any manual adjustments made to existing translations. We store hashes of source strings, so the system can detect which strings are new vs. old based on the presence of their hashes.
Important: If you enable "Translate only new strings", the target files you upload must already contain the previously translated strings for that language (e.g., your French file should already include all old French translations).
If you simply upload the same source file as the target file (which has no French content), nothing will be translated, because there's no way to detect which strings are new vs. old.
Note: Uploading target files is optional. If you do not upload any target files, first time all strings will be translated, regardless of whether "Translate only new strings" is enabled or not.
File Naming Rules:
If your uploaded files are not named exactly as language codes (e.g., fr.json, de.json), their names must match the source files' names so the system knows they contain the same strings in different languages. For example:
/en/common.json
/fr/common.json
/de/common.json
This makes sure translations line up correctly. If the file names are different from the source file name, the system will treat them as belonging to different namespaces. In i18n, a namespace is simply a separate file used to organize strings by parts of your app (for example: common.json for general strings, auth.json for login, dashboard.json for dashboard).
Each namespace should have a matching file in every language folder:
/en/common.json
/en/auth.json
/fr/common.json
/fr/auth.json
Using the same file names for each language ensures the system can correctly match strings.
0196e881-fb54-7150-a292-5b1e8f70a8ae.zip). The archive contains translated files for each target language, organized into separate folders by language code.Our platform streamlines the localization of your i18n files with advanced AI-powered translation, delivering accurate and efficient result while preserving your file structure and context.
Internationalization (i18n) is the process of designing software so it can be adapted to different languages and regions without code changes. Localization (l10n) is the process of actually adapting the software for a specific locale — translating strings, adjusting date formats, currencies, and cultural references. The "18" in i18n stands for the 18 letters between the "i" and "n" in "internationalization".
i18n file translation is at the heart of the localization workflow. Instead of hardcoding text in source code, developers externalize all user-facing strings into resource files — JSON, YAML, PO, XLIFF, ARB, or Properties files. These files become the single source of truth for all translations and are managed, versioned, and deployed alongside the application.
For global products, i18n files may need to be translated into dozens of languages. Managing this at scale requires automation, consistency, and format-aware tooling — which is exactly what our AI-powered I18N File Translation service provides.
The choice of i18n file format typically depends on your technology stack. Each format has different strengths for structure, tooling, and platform support:
flutter gen-l10n.ResourceBundle.One of the most powerful features of our I18N File Translation service is incremental translation — the ability to translate only new or changed strings without re-translating content that is already localized. This significantly reduces translation costs and processing time for actively developed projects.
To use incremental translation, upload both your source file and the existing target file for each language. Our system compares the keys present in both files and translates only the strings missing from the target. This is especially valuable during continuous development cycles where new strings are added with each sprint or release.
Supported formats for incremental translation are listed in the table above. For other formats, uploading a target file is still useful for glossary context, ensuring consistent terminology across translation runs.
Our I18N File Translation service handles the full range of modern localization scenarios:
ng extract-i18n for Angular's built-in internationalization system.We support JSON / JSONC, XML (Android strings.xml, .NET ResX, generic), YAML / YML, ARB (Flutter), PO / POT (GNU Gettext), XLIFF 1.2 and 2.0, .properties (Java), CSV / TSV, Markdown (.md), and plain text (.txt). Files can be uploaded individually or as a ZIP archive up to 5 MB.
Yes. You can add multiple target languages in a single job. Our service processes all language pairs and packages the results in a ZIP archive organized by language code (e.g., fr/, de/, ja/).
Upload your source file and the existing target file (which already contains your previous translations) for each language. Our system identifies strings present in the source but missing from the target and translates only those — avoiding re-translating content you've already paid for and preventing overwrites of manual edits.
The maximum upload size is 5 MB per file or ZIP archive. For very large projects, consider splitting files by namespace or uploading multiple jobs. You can monitor job progress in real-time on this page and access all completed jobs on the Files page.
Files with the same name in different language folders are treated as the same namespace (e.g., /en/common.json and /fr/common.json). Files with different names are treated as separate namespaces. Use consistent file names across all language folders to ensure correct string matching.