Skip to content
MISSION ARCHIVE CASE FILE № 003

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

translations.csv INPUT
id,en_US,fr_FR
hello,Hello,Bonjour
thanks,Thank you,Merci
translocate

en_US.json

{
  "hello": "Hello",
  "thanks": "Thank you"
}

fr_FR.json

{
  "hello": "Bonjour",
  "thanks": "Merci"
}
Conversion specimen · Illustrative translations
ProjectTranslocate
ScopeDeveloper tooling · Localization
DeliveryCLI + Rust library
InputCSV · TSV
OutputJSON per locale
LicenseMIT · 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.