Messages and error codes
Esta página aún no está traducida; aquí tienes la versión en inglés.
Generated by python3 scripts/gen_messages_md.py from lib/vstudio/messages.py (do not edit by hand;
tests/test_messages.py fails when this file is out of date).
Every engine text a person reads comes with a stable code and params, next to the English message and
Chinese message_zh the CLI and older desks show:
{"code": "qc.loudness", "params": {"value": -9.1, "lufs": -14, ...}, "message": "...", "message_zh": "..."}The desk maps code to its own copy (en / zh-CN / fr below; {name} = a param) and falls back to message /
message_zh for a code it does not know. Codes whose text is {text} carry engine or model text through as is
(params.text): show it, do not translate it.
Where the codes are
Section titled “Where the codes are”| Output | Field |
|---|---|
vstudio.llm errors (--json of plan-segments, output ai, project ai) |
code, tried, errors, codes, attempts, message (llm-all-failed) |
llm auth status rows |
message (auth-*, key-*, local-*; see vstudio.llm_auth.MSG) |
| plan-segments | notices[] (plan-*), fallback |
| intake plan | risks_info[], warnings_info[], questions[].message, projects[].checkpoints[].label_info, projects[].recipe_info, planner.message, summary_info |
| inbox entries | label_info (checkpoint.<kind>), reason (inbox.<kind>) |
| project status | state_info (project-state.*), items[].state_info (job-state.*), items[].qc_info (qc-state.*), items[].stages[].label_info (stage.*) |
QC (qc.json, job detail) |
checks[].message, reasons_info[], warnings_info[] (qc.<check>) |
.vstudio/status.json |
status_info (status.*), stage_info (stage.*), message_info (status-text or the writer’s message_code) |
| publishing calendar | posts[].state_info, states (post-state.*) |
| output ai / project ai | summary_info, groups[].summary_info, groups[].proposed[].why_info (ai-summary, ai-why); errors and notes already carry code + params (vstudio.project.outputs.msg) |
recipes (vstudio.project recipes --json, project show) |
messages.label, messages.description (recipe.<id>.label, recipe.<id>.description: the manifest’s own zh / en texts) |
| Code | en | zh-CN | fr |
|---|---|---|---|
llm-all-failed |
Every AI provider failed ({providers}) | 所有 AI 模型都失败了({providers}) | Tous les fournisseurs d’IA ont échoué ({providers}) |
llm-fallback |
{frm} failed ({why}); {to} answered instead | {frm} 没成功({why}),改用了 {to} | {frm} a échoué ({why}) ; {to} a répondu à la place |
plan-fallback |
{frm} failed ({why}); the segments were planned by {to} | {frm} 没成功({why}),这次由 {to} 规划切片 | {frm} a échoué ({why}) ; les extraits ont été choisis par {to} |
plan-segments-failed |
Planning the segments failed ({providers}): {error} | 切片规划失败({providers}):{error} | Le choix des extraits a échoué ({providers}) : {error} |
plan-short-filled |
{provider} returned {n} usable segment(s); {missing} filled by the rule-based ranking | {provider} 只给出 {n} 条可用切片,另外 {missing} 条由规则补上 | {provider} a donné {n} extrait(s) utilisable(s) ; {missing} complété(s) par les règles |
plan-title-too-long |
{id}: {provider} title over {limit}: {title} | {id}:{provider} 给的标题超过 {limit} 字:{title} | {id} : titre de {provider} au-delà de {limit} : {title} |
intake.risk.no-source |
{recipe}: no long recording or screen recording to cut | {recipe}: 没有找到可切的长录音/录屏 | {recipe} : aucun long enregistrement ou enregistrement d’écran à découper |
intake.risk.burned-longform |
{file} has burned-in captions: vertical slices add a new caption layer; check after picking the segments | {file} 已有烧录字幕:竖屏切片会再叠一层新字幕,建议在选段后检查 | {file} a des sous-titres incrustés : les extraits verticaux ajoutent une nouvelle couche ; vérifiez après le choix des extraits |
intake.risk.no-video |
{recipe}: no video material found | {recipe}: 没有找到视频素材 | {recipe} : aucune vidéo trouvée |
intake.risk.no-photos |
{recipe}: no photos or videos found | {recipe}: 没有找到照片或视频 | {recipe} : aucune photo ni vidéo trouvée |
intake.risk.aigc-credits |
AI video is paid in credits: it stops at the budget checkpoint for your approval before generating | AI 视频按积分计费:生成前会在“预算”检查点停下等你批准 | La vidéo IA se paie en crédits : elle s’arrête au point de contrôle du budget pour votre accord avant de générer |
intake.risk.unsupported-platform |
{platforms}: no export preset yet; exported for the closest platform | {platforms} 还没有导出预设:先按最接近的平台导出 | {platforms} : pas encore de préréglage d’export ; exporté pour la plateforme la plus proche |
intake.risk.no-projects |
No runnable project could be made from these materials and the request | 没能从这些素材和描述里拼出可执行的项目 | Impossible de composer un projet à partir de ces fichiers et de cette demande |
intake.question.mask-faces |
Whose faces should be hidden? (default: every guest but you) | 要遮哪几位的脸?(默认:除你以外的所有嘉宾) | Quels visages masquer ? (par défaut : tous les invités sauf vous) |
intake.question.narration |
Narration (AI voice reads your copy) or music only? | 文艺片要旁白(AI 配音读你的文案)还是纯音乐卡点? | Narration (voix IA qui lit votre texte) ou musique seule ? |
intake.question |
{text} | {text} | {text} |
intake.risk |
{text} | {text} | {text} |
intake.warning |
{text} | {text} | {text} |
intake.warning.unknown-recipe |
Dropped a sub-project with the unknown recipe {recipe} (only catalog recipes run) | 去掉了一个未知配方 {recipe} 的子项目(只运行目录里的配方) | Sous-projet à la recette inconnue {recipe} retiré (seules les recettes du catalogue s’exécutent) |
intake.warning.batch-recipe |
The batch recipe is an engine board; use the deliverable recipe instead (dropped) | batch 是引擎看板,不是成品配方(已去掉) | La recette batch est un tableau du moteur ; utilisez la recette du livrable (retiré) |
intake.warning.unknown-input |
{project} {recipe}: unknown input {key} dropped | {project} {recipe}:未知输入 {key} 已去掉 | {project} {recipe} : entrée inconnue {key} retirée |
intake.warning.input-not-accepted |
{project} {recipe}: input {key} does not accept {files} | {project} {recipe}:输入 {key} 不接受 {files} | {project} {recipe} : l’entrée {key} n’accepte pas {files} |
intake.warning.input-single |
{project} {recipe}: input {key} takes one file; kept {file} | {project} {recipe}:输入 {key} 只要一个文件,保留了 {file} | {project} {recipe} : l’entrée {key} prend un seul fichier ; {file} gardé |
intake.warning.range-dropped |
{project} row {row}: range {range} too short or outside the media, dropped | {project} 第 {row} 行:区间 {range} 太短或超出素材,已去掉 | {project} ligne {row} : plage {range} trop courte ou hors du média, retirée |
intake.warning.unknown-param |
{project} {recipe}: unknown param {key} dropped | {project} {recipe}:未知参数 {key} 已去掉 | {project} {recipe} : paramètre inconnu {key} retiré |
intake.warning.platform-unsupported |
{project} {recipe}: platform {platform} not supported by this recipe (dropped) | {project} {recipe}:这个配方不支持平台 {platform}(已去掉) | {project} {recipe} : plateforme {platform} non prise en charge par cette recette (retirée) |
intake.warning.param-invalid |
{project} {recipe}: param {key}={value} invalid for the recipe (reset to default) | {project} {recipe}:参数 {key}={value} 不合法(已恢复默认) | {project} {recipe} : paramètre {key}={value} invalide (valeur par défaut rétablie) |
intake.warning.required-input-missing |
{project} {recipe}: required input {key} has no material (sub-project dropped) | {project} {recipe}:必需的输入 {key} 没有素材(子项目已去掉) | {project} {recipe} : l’entrée requise {key} n’a pas de fichier (sous-projet retiré) |
intake.warning.focus-unmatched |
{project}: no transcript passage matched the focus; ranges will be chosen at the segments step | {project}:逐字稿里没找到对应内容,选段步骤再定区间 | {project} : aucun passage de la transcription ne correspond ; les plages seront choisies à l’étape des extraits |
intake.warning.revise-not-understood |
Did not understand this change: {instruction} (plan unchanged) | 没看懂这条修改:{instruction}(计划未变) | Modification non comprise : {instruction} (plan inchangé) |
intake.warning.schema |
Plan schema: {error} | 计划格式问题:{error} | Schéma du plan : {error} |
intake-burned-subs |
The video already has captions burned in: the old captions are cropped off and new ones go in a band | 视频里已经有烧录字幕:裁掉旧字幕,新字幕放在字幕条里 | La vidéo a déjà des sous-titres incrustés : ils sont rognés et les nouveaux vont dans une bande |
intake-no-model |
No AI model is set up for planning: the rule planner made this plan | 没有配置 AI 规划模型,这份计划由规则生成 | Aucun modèle d’IA n’est configuré pour la planification : ce plan vient des règles |
intake-rule-plan |
The AI plan was not usable ({reason}): the rule planner made this plan | AI 给的计划不可用({reason}),这份计划由规则生成 | Le plan de l’IA n’était pas utilisable ({reason}) : ce plan vient des règles |
intake.summary |
{text} | {text} | {text} |
intake-model-fallback |
The AI planner was not available ({reason}): the rule planner made this plan | AI 规划没成功({reason}),这份计划由规则生成 | Le planificateur IA n’était pas disponible ({reason}) : ce plan vient des règles |
ai-summary |
{text} | {text} | {text} |
ai-why |
{text} | {text} | {text} |
status-text |
{text} | {text} | {text} |
qc.other |
{name}: {reason} | {name}:{reason} | {name} : {reason} |
stage.plan |
Planning | 规划中 | Planification |
stage.probe |
Reading the file | 读取文件 | Lecture du fichier |
stage.extract |
Extracting audio | 提取音频 | Extraction de l’audio |
stage.asr |
Transcribing | 语音转文字 | Transcription |
stage.hooks |
Finding hooks | 找开场 | Recherche d’accroches |
stage.cleanup |
Finding pauses and fillers | 找气口和口癖 | Recherche des pauses et tics |
stage.apply |
Cutting | 剪辑中 | Découpe |
stage.face |
Tracking the face | 跟踪人脸 | Suivi du visage |
stage.compose |
Composing | 合成中 | Composition |
stage.cover_frames |
Cover candidates | 封面候选 | Couvertures candidates |
stage.verify |
Checking the cut by ear | 回听检查 | Vérification à l’écoute |
stage.glossary |
Building the glossary | 整理术语表 | Glossaire |
stage.proofread |
Proofreading captions | 校对字幕 | Relecture des sous-titres |
stage.export |
Exporting | 导出中 | Export |
stage.qc |
Quality check | 质量检查 | Contrôle qualité |
stage.preview |
Preview | 预览 | Aperçu |
stage.render |
Rendering | 渲染中 | Rendu |
stage.geometry |
Finding the screen | 识别屏幕区域 | Détection de l’écran |
stage.package |
Packaging | 打包中 | Empaquetage |
stage.segments |
Picking segments | 选段中 | Choix des extraits |
stage.ai |
Asking the AI | AI 处理中 | Demande à l’IA |
stage.ask |
Asking the AI | AI 处理中 | Demande à l’IA |
stage.read |
Reading the outputs | 读取成片 | Lecture des vidéos |
stage.check |
Checking | 检查中 | Vérification |
stage.other |
{stage} | {stage} | {stage} |
status.running |
Running | 进行中 | En cours |
status.waiting |
Needs you | 需要你 | À vous de jouer |
status.done |
Done | 已完成 | Terminé |
status.failed |
Failed | 失败 | Échec |
status.interrupted |
Interrupted | 已中断 | Interrompu |
checkpoint.filler-confirm |
Confirm filler cuts | 确认去 filler | Confirmer les coupes de tics |
inbox.filler-confirm |
Filler cuts need your yes | 有口癖剪辑等你确认 | Des coupes de tics attendent votre accord |
checkpoint.hook-pick |
Pick the hook | 选 hook | Choisir l’accroche |
inbox.hook-pick |
Pick the cold open | 从候选里选开场 | Choisissez l’ouverture |
checkpoint.segment-approval |
Approve the segments | 确认选段 | Valider les extraits |
inbox.segment-approval |
Check the proposed segments | 看一下选段 | Vérifiez les extraits proposés |
checkpoint.script-lock |
Lock the script | 锁定剧本 | Verrouiller le script |
inbox.script-lock |
Lock the script before generating | 生成前先锁定剧本 | Verrouillez le script avant la génération |
checkpoint.storyboard-approval |
Approve the storyboard | 确认分镜 | Valider le storyboard |
inbox.storyboard-approval |
Check the storyboard | 看一下分镜 | Vérifiez le storyboard |
checkpoint.budget-approval |
Approve the budget | 批准预算 | Valider le budget |
inbox.budget-approval |
Approve the spend before anything paid runs | 付费生成前请批准预算 | Validez la dépense avant toute génération payante |
checkpoint.take-selection |
Pick the takes | 选镜头 | Choisir les prises |
inbox.take-selection |
Pick the takes to use | 选要用的镜头 | Choisissez les prises à utiliser |
checkpoint.cover-pick |
Pick the cover | 选封面 | Choisir la couverture |
inbox.cover-pick |
Pick a cover | 从候选里选封面 | Choisissez une couverture |
checkpoint.privacy-masks |
Check the privacy masks | 检查打码 | Vérifier les masques |
inbox.privacy-masks |
Check who is masked | 确认打码的人和区域 | Vérifiez qui est masqué |
checkpoint.consent |
Confirm consent | 确认授权 | Confirmer le consentement |
inbox.consent |
Confirm the people shown agreed | 确认出镜的人已同意 | Confirmez l’accord des personnes filmées |
checkpoint.publish |
Review before publishing | 发布前确认 | Relire avant publication |
inbox.publish |
Review the post before it goes out | 发布前看一眼 | Relisez la publication avant l’envoi |
checkpoint.author |
Write or approve the text | 写 / 确认文字 | Écrire ou valider le texte |
inbox.author |
Write or approve the text | 写或确认文字 | Écrivez ou validez le texte |
checkpoint.music-pick |
Pick the music | 选音乐 | Choisir la musique |
inbox.music-pick |
Pick the music | 选配乐 | Choisissez la musique |
checkpoint.voice-pick |
Pick the voice | 选声音 | Choisir la voix |
inbox.voice-pick |
Pick the voice | 选配音 | Choisissez la voix |
checkpoint.media-selection |
Pick the media | 选素材 | Choisir les médias |
inbox.media-selection |
Pick the media to use | 选要用的素材 | Choisissez les médias à utiliser |
checkpoint.review |
Review | 审片 | Relecture |
inbox.review |
Review the result | 看一下成片 | Regardez le résultat |
job-state.planned |
To do | 待做 | À faire |
job-state.running |
Running | 进行中 | En cours |
job-state.waiting |
Needs you | 需要你 | À vous de jouer |
job-state.done |
Done | 已完成 | Terminé |
job-state.failed |
Failed | 失败 | Échec |
job-state.interrupted |
Interrupted | 已中断 | Interrompu |
job-state.packaged |
Packaged | 已打包 | Empaqueté |
job-state.skipped |
Skipped | 已跳过 | Ignoré |
job-state.unverified |
Not checked yet | 未验证 | Pas encore vérifié |
job-state.approved |
Approved | 已通过 | Validé |
job-state.rejected |
Rejected | 已退回 | Refusé |
project-state.new |
New | 新建 | Nouveau |
project-state.planned |
To do | 待做 | À faire |
project-state.running |
Running | 进行中 | En cours |
project-state.needs-you |
Needs you | 需要你 | À vous de jouer |
project-state.error |
Failed | 失败 | Échec |
project-state.paused |
Paused | 已暂停 | En pause |
project-state.interrupted |
Interrupted | 已中断 | Interrompu |
project-state.done |
Done | 已完成 | Terminé |
qc-state.green |
Checks passed | 检查通过 | Contrôles réussis |
qc-state.red |
Checks failed | 检查没通过 | Contrôles échoués |
qc-state.none |
Not checked yet | 未验证 | Pas encore vérifié |
post-state.planned |
Planned | 计划中 | Prévu |
post-state.approved |
Approved | 已确认 | Validé |
post-state.scheduled |
Scheduled | 已排期 | Programmé |
post-state.posted |
Posted | 已发布 | Publié |
post-state.skipped |
Skipped | 已跳过 | Ignoré |
qc.loudness |
Loudness {value} LUFS (target {lufs}) | 响度 {value} LUFS(目标 {lufs}) | Volume {value} LUFS (cible {lufs}) |
qc.true-peak |
True peak {value} dBTP over {tp} | 真峰值 {value} dBTP,超过 {tp} | Crête {value} dBTP au-dessus de {tp} |
qc.av-sync |
Sound and picture drift by {value} s | 音画差 {value} 秒 | Décalage son / image de {value} s |
qc.black-frames |
Black frames at {spans} | {spans} 有黑帧 | Images noires à {spans} |
qc.frozen-frames |
Frozen picture at {spans} | {spans} 画面卡住 | Image figée à {spans} |
qc.length |
Length {value} s: {reason} | 时长 {value} 秒:{reason} | Durée {value} s : {reason} |
qc.length-sweet-spot |
Length {value} s is outside the sweet spot | 时长 {value} 秒不在最佳区间 | Durée {value} s hors de la zone idéale |
qc.length-plan |
Too long for the platform: {reason} | 比平台建议时长长:{reason} | Trop long pour la plateforme : {reason} |
qc.max-len |
{value} s over the max length | {value} 秒超过最长限制 | {value} s au-delà de la durée maximale |
qc.title |
Title too long for {platform} | 标题超过 {platform} 的长度限制 | Titre trop long pour {platform} |
qc.canvas |
Wrong canvas size {value} | 画布尺寸不对 {value} | Mauvaise taille de canevas {value} |
qc.safe-zone |
Captions outside the safe zone | 字幕超出安全区 | Sous-titres hors de la zone sûre |
qc.caption-hallucination |
{value} invented caption line(s) | 有 {value} 行字幕是识别瞎编的 | {value} ligne(s) de sous-titres inventée(s) |
qc.lost-words |
{value} word(s) lost in the cut | 剪掉了 {value} 个词 | {value} mot(s) perdu(s) à la coupe |
qc.exports |
No exports | 没有导出文件 | Aucun export |
qc.caption-edit-missed |
{value} caption edit(s) could not be applied | {value} 处字幕修改没能应用 | {value} correction(s) de sous-titres non appliquée(s) |
qc.export-warning |
Export warning: {reason} | 导出提醒:{reason} | Avertissement d’export : {reason} |
qc.privacy |
Privacy check: {reason} | 隐私检查:{reason} | Contrôle de confidentialité : {reason} |
Code families with an id (texts come from the recipe manifest):
recipe.<id>.labelrecipe.<id>.description