Summary
The bulk dashboard and per-document panel translate into one target language per run. Add a plugin option to allow selecting multiple target languages in a single run, configurable per install (default stays single for backward compatibility).
Current behavior
- Both forms render the target as a single-value select (
FormSelectLocale bound to FORM_FIELDS.TARGET_LNG).
- Form schema:
target_lng: z.string().nonempty().
- The enqueue endpoint (
EnqueueInputSchema) accepts a single target_lng; the handler builds one task per selected document.
Proposed change
Add a config option, e.g.:
translatorPlugin({
// ...
targetSelection: 'single' | 'multi', // default: 'single'
})
single → unchanged.
multi → the target field becomes a multi-select; enqueue accepts target_lng: string | string[] and fans out one task per (document × target language). The handler already loops over selected documents — add an inner loop over target languages.
Acceptance criteria
Notes
- Source-language selection stays single.
- Existing-translation / in-progress indicators per target language are a separate enhancement.
Summary
The bulk dashboard and per-document panel translate into one target language per run. Add a plugin option to allow selecting multiple target languages in a single run, configurable per install (default stays single for backward compatibility).
Current behavior
FormSelectLocalebound toFORM_FIELDS.TARGET_LNG).target_lng: z.string().nonempty().EnqueueInputSchema) accepts a singletarget_lng; the handler builds one task per selected document.Proposed change
Add a config option, e.g.:
single→ unchanged.multi→ the target field becomes a multi-select;enqueueacceptstarget_lng: string | string[]and fans out one task per (document × target language). The handler already loops over selected documents — add an inner loop over target languages.Acceptance criteria
single) behavior is unchanged.multilets an editor pick N target languages; a run queues all of them.get-collection-status) reflects every queued target.stringandstring[]fortarget_lng(back-compat).Notes