The translation workflow
Every translatable string in Ownlate is a segment, and a segment carries one translation per target language. This page is about how that translation moves.
The path
Section titled “The path”untranslated → draft → needs_review → reviewed → approved ↑ ↑ ↓ └── in_progress ←──── rejected| Action | Resulting status | Permission required |
|---|---|---|
| Save | draft | translation:write |
| Submit | needs_review | translation:write |
| Mark reviewed | reviewed | translation:approve |
| Approve | approved | translation:approve |
| Reject | in_progress | translation:approve |
By default owner and admin hold translation:approve; translator holds translation:write only. The mapping is editable — see Members and access.
A few rules the server enforces regardless of which client you use:
- Nothing is skipped by accident. Any of the three review actions can be applied to a submitted translation, but approving something that is already approved is refused rather than repeated.
- Rejection reopens, it does not erase. A rejected translation goes to
in_progressand keeps its text, so the translator reworks rather than retypes. - A source change invalidates the lot. Editing a segment’s source text marks every non-empty translation of it
outdated. Untranslated languages stay untranslated.
What approval does
Section titled “What approval does”Approving is the moment work becomes shippable, and three things happen at once:
- The translation is stamped
approvedand becomes eligible for export and releases. - The pair (source text → target text) is written to the workspace translation memory.
- The words are counted against your plan’s word allowance.
If the workspace has no room left in its plan, approving is refused before anything is written. See Plans and billing.
Bulk actions
Section titled “Bulk actions”From the editor toolbar you can act on a whole language at once:
- Approve all takes every segment of that language that has text and is neither
untranslatednor alreadyapproved, and approves it. Blank translations are left alone, and the whole batch is checked against your word allowance before anything is written. - Reject all sends every
needs_review,reviewedandapprovedtranslation of that language back toin_progress.
Both are available over the API as approveAllTranslations and rejectAllTranslations, and both return the number of segments they touched.
A task assigns a slice of the work to somebody. It has a type — translate or review — one or more languages, an optional assignee and an optional due date.
| Status | Can move to |
|---|---|
open | in_progress, completed, closed |
in_progress | open, completed, closed |
completed | open, closed |
closed | open |
Assigning a task notifies the assignee, and so does every status change. Tasks live on the project’s Tasks tab.
Suggestions
Section titled “Suggestions”An open project accepts translations from people who are not members of the workspace. Anyone signed in can leave a suggestion on a segment; a suggestion is stored separately and changes nothing on its own.
A reviewer with translation:approve then decides:
- Accept — the suggested text is written to the segment as a submitted translation (
needs_review), credited to the person who suggested it, and still has to pass the ordinary review. - Decline — the suggestion is closed and nothing is written.
To keep the queue usable, one person may have at most 20 pending suggestions at a time across the platform. Declined and accepted ones do not count.
Comments and history
Section titled “Comments and history”Every segment has a comment thread. Comments are for the question that has to be settled before the string can be translated — a missing context, an ambiguous source. A thread can be marked resolved when the question is answered, and the editor shows how many threads are still open on each segment, so a reviewer can find them without opening every string.
Mentioning a colleague in a comment notifies them.
Separately, every change to a translation is recorded: the text, what was done to it (translate, draft, approve, reject, review) and who did it. The history panel in the editor shows it per language, and it survives rejection, rework and re-approval.
Who is editing right now
Section titled “Who is editing right now”The editor keeps a live presence channel. When several people work on the same project you see who else is in it and which segment each of them has open, and a translation somebody else saves appears without a reload.