Translation Workflow

PerfLocale’s optional Workflow layer turns translations into trackable assignments with owners, priorities, deadlines, email notifications, and an approval gate. It’s off by default - single-admin sites don’t need it. Turn it on at Settings → Addons → Workflow once you have more than one person writing or reviewing translations.

Workflow statuses

When Workflow is enabled, every translation picks up a workflow status alongside its WordPress post_status:

  • Unassigned - no translator picked yet. Default for newly-created translations.
  • Assigned - a translator has been picked but hasn’t started yet.
  • In Progress - the assigned translator is actively working.
  • In Review - translator marked it done; awaiting an editor / manager’s sign-off.
  • Approved - reviewer accepted. Ready to publish.
  • Published - live on the site. Terminal state.

To send an assignment back to the translator, the reviewer flips it from In Review back to In Progress with a note in the Workflow panel - there is no dedicated "Rejected" state.

Assignments admin page

PerfLocale → Assignments is the team’s shared queue. Every assignment row shows: Content, Language, Status, Priority (Urgent / High / Normal / Low), Assignee, and Deadline. Filter the queue by status + assignee; sort by Status, Priority, or Deadline; search by title; paginate.

Translators only see assignments they’re on; managers see everything. Each translator also gets a personal queue via the admin bar shortcut.

Assigning work

From any translation’s edit screen, the PerfLocale sidebar has a Workflow panel. Fields:

  • Assignee - a WP user with the perflocale_translate capability (granted by default to the custom Translator role; see Permissions & Roles).
  • Priority - Normal by default; raise for time-sensitive content.
  • Deadline - date-only; surfaces in the sorted queue.
  • Notes - optional free-text for the translator.

Email notifications

When an assignment is created, re-assigned, or its status changes, PerfLocale can send an email to the affected user(s). Toggle at Settings → Addons → Workflow → Email notifications. Both Subject and Body are templated with the placeholders below. Falls back to wp_mail() by default; route through SMTP via any standard SMTP plugin.

The Settings UI exposes a button row for each token — click any chip to insert it at the cursor in the matching Subject or Body field.

Available placeholders

TokenDescriptionExample
{post_title}Title of the post being translatedBest bread recipes
{assignee_name}Translator’s display nameAlex Mason
{language}Target language nameGerman
{status}Current workflow status (label form)In Review
{priority}Capitalised priority valueHigh
{deadline}Raw ISO date2026-05-03
{deadline_relative}Human-readable relative deadline. Renders today, tomorrow, yesterday, in 3 days, or 5 days ago using WordPress core’s human_time_diff(). Returns an empty string when no deadline is set.in 3 days
{edit_url}Direct edit link to the translation posthttps://…/wp-admin/post.php?post=42&action=edit
{site_name}Site title from get_bloginfo('name')Acme Bakery

Empty values render as empty strings — for example, an assignment without a deadline produces {deadline_relative} = "", so a sentence like "deadline {deadline_relative}" renders as "deadline " (trailing space). Wrap deadline mentions in conditional copy if you want clean output for both states.

Example template

Hi {assignee_name},

The translation for "{post_title}" ({language}) needs your attention —
priority {priority}, deadline {deadline_relative}.

Edit: {edit_url}

Renders as:

Hi Alex,

The translation for "Best bread recipes" (German) needs your attention —
priority High, deadline in 3 days.

Edit: https://acmebakery.com/wp-admin/post.php?post=42&action=edit

The full outgoing email is filterable via perflocale/workflow/email — useful for plugins that route admin mail through a transactional provider, rewrite recipients, or append localised footers.

Publish gate

Optional: require status = Approved before a translation can be Published. Enable Settings → Addons → Workflow → Publish Gate. When on, saving a translation as Published is blocked with an admin notice if Workflow status isn’t yet Approved. Useful for regulated industries.

← Back to Docs