source.en.json { "cart.title": "Your cart", "cart.pay": "Pay {{total}}" }
Use doloc's translation API to send XLIFF, JSON, ARB, Android XML, or Properties files from a script or CI job. Get translated target files back in the same run, with existing translations, placeholders, and file structure preserved.
01 See exactly what comes back
source.en.json { "cart.title": "Your cart", "cart.pay": "Pay {{total}}" }
target.de.json { "cart.title": "Warenkorb" }
curl --fail-with-body --silent --show-error --compressed \ https://api.doloc.io \ -H "Authorization: Bearer $API_TOKEN" \ -F source="@source.en.json" \ -F target="@target.de.json" \ -o target.de.json target.de.json { "cart.title": "Warenkorb", Added line: "cart.pay": "{{total}} bezahlen" }
messages.de.xlf <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"> <file source-language="en" target-language="de"> <body> <trans-unit id="workspace.name"> <source>Workspace</source> <target state="translated">Arbeitsbereich</target> </trans-unit> <trans-unit id="workspace.create"> <source>Create workspace</source> </trans-unit> </body> </file> </xliff>
curl --fail-with-body --silent --show-error --compressed \ https://api.doloc.io \ -H "Authorization: Bearer $API_TOKEN" \ --data-binary "@messages.de.xlf" \ -o messages.de.xlf messages.de.xlf <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"> <file source-language="en" target-language="de"> <body> <trans-unit id="workspace.name"> <source>Workspace</source> <target state="translated">Arbeitsbereich</target> </trans-unit> <trans-unit id="workspace.create"> <source>Create workspace</source> Added line: <target state="translated">Arbeitsbereich erstellen</target> </trans-unit> </body> </file> </xliff>
app_en.arb { "workspace": "Workspace", "createWorkspace": "Create workspace", "@createWorkspace": { "description": "Primary action" } }
app_de.arb { "@@locale": "de", "workspace": "Arbeitsbereich" }
curl --fail-with-body --silent --show-error --compressed \ https://api.doloc.io \ -H "Authorization: Bearer $API_TOKEN" \ -F source="@app_en.arb" \ -F target="@app_de.arb" \ -o app_de.arb app_de.arb { "@@locale": "de", "workspace": "Arbeitsbereich", Added line: "createWorkspace": "Arbeitsbereich erstellen", Added line: "@createWorkspace": { Added line: "description": "Primary action" Added line: } }
values/strings.xml <resources> <string name="cart_title">Cart</string> <string name="cart_pay">Pay %1$s</string> </resources>
values-de/strings.xml <resources> <string name="cart_title">Warenkorb</string> </resources>
curl --fail-with-body --silent --show-error --compressed \ "https://api.doloc.io?sourceLang=en&targetLang=de" \ -H "Authorization: Bearer $API_TOKEN" \ -F source="@values/strings.xml" \ -F target="@values-de/strings.xml" \ -o values-de/strings.xml values-de/strings.xml <resources> <string name="cart_title">Warenkorb</string> Added line: <string name="cart_pay">%1$s bezahlen</string> </resources>
Illustrative request. Use your own files to evaluate the output.
Works with the files already in your repository
Integrates with your framework
02 Add one translation step
Add doloc's translation API after extraction. doloc returns the updated translations in the same script or CI run, then your existing workflow continues.
extract Generate source and target files with the framework tooling you already use.
request Send the files from a local script or CI job with one synchronous API request.
release Receive updated target files ready to ship. Inspect the diff when useful, then release as usual.
03 Built around software delivery
Use automation for routine UI copy while keeping the option to review ambiguous, legal, regulated, or brand-critical text.
Repository remains the source of truth. Keep using your extraction tooling, tests, diffs, and release controls.
Updated target files return in the same script or pipeline run. There is no project queue or handoff.
Existing target translations guide terminology and style for the new routine UI copy.
Routine UI copy returns ready to test and ship with the release. Legal, regulated, ambiguous, and brand-critical text may still require review.
04 Where doloc fits
doloc is for software teams whose localization process already lives in the repository. Choose a translation management platform like Crowdin, Lokalise, or Weblate when people and approvals need a shared workspace.
Compare operating models05 Preserved file structure
Send the localization format your application already produces, including XLIFF 1.2, XLIFF 2.0, JSON, ARB, Android XML, and Properties. doloc updates the target file while retaining its format and surrounding structure, so your existing tooling can keep using it.
Supports nesting and keeps formatting
Format guideHandles states and uses notes
Format guideHandles states and uses notes
Format guideSupports metadata
Format guideSupports placeholders and plurals
Format guideKeeps surrounding structure
Format guide06 Predictable scope
200 source texts free · Hobby from €12/month · Unlimited requests and target languages
Pro: 10,000 source texts for €45/month.
See pricing
07 Directly accountable
Founder & Software Engineer
Daniel is a software engineer and open-source maintainer focused on developer tooling and localization workflows. He created doloc to make localization a natural part of software development—not another platform teams have to manage.
08 Try the actual workflow