Your translations live in spreadsheets. Your application speak JSON. translocate connects them.
Translocate
is a both Rust library and command-line tool that translates spreadsheet CSV or TSV exports into one JSON file per locale, allowing you to colocate translations with application code.
A field report by ORB IT Solutions
id,en_US,fr_FR
hello,Hello,Bonjour
thanks,Thank you,Mercien_US.json
{
"hello": "Hello",
"thanks": "Thank you"
}fr_FR.json
{
"hello": "Bonjour",
"thanks": "Merci"
}| Project | Translocate |
|---|---|
| Scope | Developer tooling · Localization |
| Delivery | CLI + Rust library |
| Input | CSV · TSV |
| Output | JSON per locale |
| License | MIT · Open source |
Localization frequently happens across two working environments. Translators receive, review and return language translations side by side in a spreadsheet. Meanwhile, developers need structured files that an application can load. Manual conversion between those formats is repetitive, and error prone.
translocate addresses that handoff with a focused conversion tool. Export the translations as CSV or TSV, run the command, and get a JSON dictionary for each language. The translation work stays in the spreadsheet; the application receives the format it needs.
It converts existing translations. It does not translate the text itself. That narrow scope keeps the tool useful as one step in a larger localization workflow.
One source. Every locale.
The example above has two translation keys and two language columns. The command below
reads that file and writes en_US.json and fr_FR.json to the current directory. Keys stay the same
in both; values come from the corresponding language column.
Keep useful context in the source.
Use ignored headings to exclude non-language columns, such as translator notes. The source can remain useful to people without adding unwanted files to the output.
Fit the application’s file structure.
Choose an output directory or a shared filename inside locale-specific directories. The conversion adapts to how the application organizes its translations.
Small tool. Considered details.
- Keep your workflow.
- CSV and TSV give translators a familiar way to hand over their work. translocate only requires that the first column be translation keys. Any remaining columns with a locale code heading are turned into a separate JSON file.
- Make the input configurable.
- Real exports vary. Options for delimiters, escaping, whitespace trimming, and ignored headings let teams adapt the conversion to their files. A notes column can stay in the spreadsheet without becoming a locale file.
- Handles repeated translation keys predictably.
- When a key appears more than once, the last non-empty translation takes precedence and triggers a warning. A later, empty duplicate leaves an existing translation unchanged.
Useful in isolation. Collaborative by design.
The deliverable is a tool developers can run from a terminal or use as a Rust library. Its MIT license lets teams inspect, adapt, and integrate the code into their own workflows.
Translocate reflects a practical part of our work: finding a recurring point of friction and building a focused piece of software to address it. Sometimes the right solution is a small utility that fits the tools a team already uses.
End of field report
Less repetitive work. More room to build.
Have a workflow that needs a better handoff? We build practical tools and integrations that help your team move from manual steps to repeatable processes.