{# One run's translation block (issue #133): current generation(s) with freshness, plus generation controls. Included on the run detail page AND served standalone by GET /runs/{id}/translation — the div re-polls itself only while a job is active, so a terminal render stops the polling. #}

Translation

Machine-translated from the transcript by the configured LLM — a working rendition, not a certified translation.

{% if translation_state.error %}{% endif %} {% if translation_state.job and not translation_state.job_active and translation_state.job.status != "succeeded" %}

Last translation {{ translation_state.job.status }} {% if translation_state.job.finished_at %}at {{ translation_state.job.finished_at.strftime("%Y-%m-%d %H:%M") }}{% endif %} {% if translation_state.job.error %}
{{ translation_state.job.error }}{% endif %}

{% endif %} {% if translation_state.job_active %}

Translating to {{ language_label(translation_state.job.target_language) }} — {{ translation_state.job.status }} {% if translation_state.job.started_at %}· started {{ translation_state.job.started_at.strftime("%Y-%m-%d %H:%M") }} {% else %}· queued {{ translation_state.job.created_at.strftime("%Y-%m-%d %H:%M") }}{% endif %}

{% endif %} {% for entry in translation_state.translations %}
{{ language_label(entry.translation.target_language) }} {%- if entry.stale %} out of date{% endif %} {% if entry.stale %}

The transcript changed since this translation was generated — the translated text no longer matches it. Re-translate to refresh; the old rendition is not shown against the changed transcript.

{% else %}

View it beneath each line on the transcript page — translated downloads are in that page's export menu.

{% endif %}

Generated {{ entry.translation.completed_at.strftime("%Y-%m-%d %H:%M") }} · {{ entry.translation.model }} · generation {{ entry.translation.generation }} {% if entry.translation.source_language %} · from {{ language_label(entry.translation.source_language) }} {% endif %}

{% endfor %} {% if not translation_state.gates_open %}

Translation is off. Turn on LLM transcript enhancement in Settings → LLM — no restart needed.

{% elif translation_state.source_problem %}

{{ translation_state.source_problem }}

{% elif not translation_state.job_active %}
{% endif %}