User Guide — Transi-Store
Learn how to manage your translations with Transi-Store.
Getting Started
Transi-Store is an open-source translation management platform for teams. It lets you manage all your translation keys in one place, collaborate with your team, and export translations in multiple formats.
Create your organization
When you first log in, you will be prompted to create an organization. An organization is the top-level container for all your projects and team members.
- Click Get Started on the homepage and sign in with GitHub or Google.
- Enter your organization name and slug (used in URLs).
- You are now the owner of your organization.
Create a project
A project holds all the translation keys for a specific application or service.
- From your organization dashboard, click New project.
- Enter a name and slug for your project.
- Choose the source locale (the language you write keys in, e.g.
en). - Add target locales — the languages you want to translate into (e.g.
fr,de,es).
Managing Translations
transi-store.com/orgs/acme/projects/webapp/translations
| Key name | Default translationEN | Translations | Actions |
|---|---|---|---|
Save | 3/3 100% FRDEES | ||
Cancel | 2/3 67% FRDE | ||
Checkout | 1/3 33% FR | ||
Confirm order | 0/3 0% |
The translations editor is the heart of Transi-Store. Each row represents a translation key with its value in every locale.
Adding a key
- Open your project and go to the Translations tab.
- Click Add key and enter the key name (e.g.
checkout.confirm_button). - Enter the value for the source locale.
- Add translations for each target locale.
ICU Message Format
Transi-Store supports ICU message format for pluralization, gender, and variable interpolation:
You have {count, plural, one {# message} other {# messages}}.
The built-in editor validates your ICU syntax in real time and provides a live preview where you can fill in variable values to see the rendered output.
transi-store.com/orgs/acme/projects/webapp/keys/42
notifications.inbox_count
Pluralization with variable interpolation
EN
DefaultFR
Detected variables:
Translation preview
Bonjour John, vous avez 5 nouveaux messages.
Searching and filtering
Use the search bar to filter keys by name or value. Below the search bar, two additional controls let you refine the view:
- Language — choose which project language's translation is shown in the 'Selected translation' column. Defaults to the project's default language.
- Show — filter the key list to one of:
- All — every key in the file
- Missing — keys that have no translation for the selected language
- Fuzzy — keys whose translation is marked as uncertain (flagged for review)
Translating Markdown / MDX documents (two-side mode)
Some content is too long-form for a key/value table — product pages, guides,
release notes. Whenever a project file uses one of the document formats
(.md, .markdown, .mdx), transi-store opens it in a dedicated two-side
editor instead of the regular translations table.
transi-store.com/orgs/acme/projects/docs/translations?fileId=12
Saved
Layout at a glance
- Two full-width editors, one per language, with markdown syntax highlighting (light & dark themes).
- Free language picker on each side — translate
en → fr, comparefr ↔ es, or any other pair you have configured. - Center action bar that operates on the section your cursor is in.
Section alignment
The document is split into sections by heading (and fenced code blocks), and each section is keyed by its position in the heading tree — not by its text. As a result:
- Headings can be fully translated on each side: the editor still pairs them up correctly.
- Moving the cursor on one side scrolls the other side and briefly highlights the counterpart section.
- A section that exists on one side but not the other (you haven't translated it yet, or you added a heading in only one language) is flagged as unmatched in the badge near the language picker. The down-arrow button jumps to the next unmatched section.
Center action bar
| Icon | Action |
|---|---|
| Copy section | Copy the current section's source to the other side. |
| Copy document | Copy the entire document to the other side. |
| AI translate section | Generate AI suggestions for the current section, with the existing target draft used as a tone reference. |
| AI translate document | Translate the full document with AI in one shot. |
| Mark fuzzy | Flag the current section as needing review. The flag is stable across heading translation and only cleared when you toggle it back or run AI translation. |
| Next unmatched | Jump to the next section without a counterpart. |
| Swap sides | Swap the two languages. |
Saving and concurrency
Every change is auto-saved (debounced) per side. If two browser tabs edit the same document at the same time, the second save is rejected with a clear message and you are prompted to reload — your work is never overwritten silently.
Tip: sectional fuzzy flags and "last AI translated" timestamps are stored independently from the document body, so they survive heading translation. They are dropped only when the structure of the section itself changes (for example, you delete the heading entirely).
Branch Management
transi-store.com/orgs/acme/projects/webapp/branches
Branches let you prepare sets of translation changes without affecting the main project until you are ready to merge. This workflow mirrors how developers use Git branches for code.
How branches work
A branch is an isolated workspace where you can:
- Add new translation keys
- Delete keys (a deletion is staged and only applied when the branch is merged)
The main project remains unchanged until you merge the branch.
Creating a branch
- Go to your project and open the Branches tab.
- Click New branch.
- Give it a descriptive name (e.g.
feature/checkout-floworrelease/v2.0). - You now have an isolated workspace to add keys or stage deletions.
Working on a branch
When you open a branch, you can add new translation keys or stage deletions. All changes are scoped to the branch and do not affect the main project.
The branch detail page shows:
- Keys count — how many keys have been added or modified in this branch
- Deletions count — how many keys are staged for deletion
Merging a branch
Once your translation work is ready:
- Open the branch and click Merge branch.
- A merge preview shows all keys that will be added and all deletions that will be applied to the main project.
- If there are conflicts (a key was modified both on the branch and in the main project after the branch was created), the merge will be blocked and the conflicting keys will be listed.
- Resolve conflicts by editing the relevant keys, then retry the merge.
- After a successful merge, the branch is marked as merged and becomes read-only.
Best practices
- Use one branch per feature or release to keep changes isolated.
- Name branches after the feature they relate to (e.g.
feature/onboarding-flow). - Merge branches promptly to avoid long-lived divergence.
Import and Export
Exporting translations
Go to Import / Export in your project and choose the format:
| Format | Extension | Notes |
|---|---|---|
| JSON | .json | Flat or nested key structure |
| XLIFF | .xliff | Industry-standard XML format |
| YAML | .yaml | Popular in Ruby on Rails |
| CSV | .csv | Spreadsheet-friendly |
| PO | .po | GNU gettext format |
| Markdown | .md, .markdown | Long-form document, edited in two-side mode |
| MDX | .mdx | Markdown + JSX, edited in two-side mode |
You can also export via the REST API using your organization's API key. First, list the project's files to get their IDs:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://transi-store.com/api/orgs/acme/projects/webapp"
Then export a given file for a given locale:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://transi-store.com/api/orgs/acme/projects/webapp/files/1/translations?locale=fr&format=json"
Importing translations
- Go to Import / Export and select your file.
- Choose an import strategy:
- Overwrite — replace existing translations with values from the file
- Skip — keep existing translations; only add keys that do not exist yet
- Click Import to apply changes.
AI Translations
Transi-Store can suggest translations using AI (powered by Google Gemini or OpenAI).
To enable AI translations, configure your AI provider in Organization Settings → AI.
Once configured, an AI suggest button appears in each translation cell. Click it to generate a suggestion based on the source locale value and the context of surrounding keys.
transi-store.com/orgs/acme/projects/webapp/keys/37
Translation suggestions
FR
Translation suggestions
FRGenerated by Google Gemini (gemini-2.0-flash)
Confirmer la commande
Confidence:95%
Standard commercial term used by the majority of French online stores.
Valider ma commande
Confidence:88%
More personal and engaging phrasing, very common in e-commerce.
Passer la commande
Confidence:74%
Idiomatic expression that emphasises the action rather than the confirmation.
Click a suggestion to use it
Note: AI suggestions are a starting point — always review them before publishing.
Team Collaboration
Inviting members
- Go to your organization and open the Members tab.
- Click Invite member and enter their email or share the invite link.
- The invited user receives access to all projects within the organization.
Roles
| Role | Permissions |
|---|---|
| Owner | Full access including billing and member management |
| Member | Can create/edit projects, keys, and branches |