Jobs

The Jobs tab runs a translation pass for the active culture — estimate its cost first, then run it.

Scoping a job

Estimate

Estimate is disabled while a job is already running for this culture, or while the configured AI provider is not ready (missing API key; under Claude Subscription auth, Claude Code not found or not signed in; etc. — hover the button for why). Once it returns, one of these appears:

While it runs, the button reads Estimating… and a status line below it says "Estimating the cost…". For Anthropic with an API key, LocHub counts several groups' tokens with the provider at once instead of one at a time, and remembers every group it has already counted for as long as the service keeps running — so Run right after Estimate, or a repeated Estimate of the same scope, does not count those groups again. If the provider rate-limits or is overloaded while counting a group, that group falls back to a local, approximate count instead of failing the whole estimate. Every other provider, and Claude Subscription auth, never counts tokens exactly in the first place, so their estimate is always approximate. Either way, the estimate is marked "≈ Approximate: token counts are estimated from text length; the job report shows the real usage."

An estimate is a best case, not a hard ceiling: the translate model may think adaptively (billed as output tokens), and precheck repair rounds or provider-side retries are not counted in it.

Run without estimate

Next to Estimate is Run without estimate: it starts the job right away, with no cost estimate and no Max USD limit — the finished job's own report still shows the real cost. It is disabled under the same conditions as Estimate (a job already running for this culture, or the AI provider not ready), plus while an estimate or another job start is already in flight.

Translation memory (TM) reuse: if a unit's English source text exactly matches one already translated and approved/edited/human-written elsewhere in the project, the job reuses that translation directly — no model call, no cost. TM reuse (and any cached answer from an earlier identical request) is not counted in the estimate's items, only in its overall strings total.

Running a job

Reopening the Jobs tab (switching culture, or coming back to the tab) automatically resumes whatever job is currently running — or shows the report of the last finished one — for that culture, so a running job is never "lost" by navigating away. While running, a progress bar shows the current phase (Translating, Fixing, Checking, Writing) with a strings-done / strings-total count. Starting a job while one is already running for that culture does not start a second one — it shows you the one already in flight.

Once a job ends, the report line reads:

Written W · suggestions S · needs fix N · refused R · errors E · questions Q · R x / Y y / G z · N input / M output tokens