free-short-video 5.3.0 → 5.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +28 -1
- package/core/config.py +6 -0
- package/package.json +2 -2
- package/server.py +9 -1
- package/static/index.html +275 -78
- package/web/routes/image_routes.py +2 -2
- package/web/routes/task_creation_routes.py +6 -6
- package/web/routes/task_routes.py +2 -2
package/bin/cli.js
CHANGED
|
@@ -21,6 +21,27 @@ const os = require('os');
|
|
|
21
21
|
|
|
22
22
|
const PKG_ROOT = path.resolve(__dirname, '..');
|
|
23
23
|
|
|
24
|
+
// 终端超链接(ANSI OSC 8):TTY 下输出可点击链接,非 TTY(管道/重定向)降级为纯文本
|
|
25
|
+
const link = (url, text) =>
|
|
26
|
+
process.stdout.isTTY ? `\x1b]8;;${url}\x1b\\${text}\x1b]8;;\x1b\\` : text;
|
|
27
|
+
|
|
28
|
+
// 启动图案(ASCII art):TTY 下亮青色显示,非 TTY 纯文本
|
|
29
|
+
const FSV_LOGO = String.raw` _____ ______ __
|
|
30
|
+
| ___/ ___\ \ / /
|
|
31
|
+
| |_ \___ \\ \ / /
|
|
32
|
+
| _| ___) |\ V /
|
|
33
|
+
|_| |____/ \_/`.split('\n');
|
|
34
|
+
function printLogo() {
|
|
35
|
+
if (process.stdout.isTTY) {
|
|
36
|
+
console.log('\x1b[1;36m');
|
|
37
|
+
FSV_LOGO.forEach((l) => console.log(l));
|
|
38
|
+
process.stdout.write('\x1b[0m');
|
|
39
|
+
} else {
|
|
40
|
+
console.log('');
|
|
41
|
+
FSV_LOGO.forEach((l) => console.log(l));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
24
45
|
function printHelp() {
|
|
25
46
|
console.log(`free-short-video — free AI short-video generator
|
|
26
47
|
|
|
@@ -37,6 +58,9 @@ Options:
|
|
|
37
58
|
Environment:
|
|
38
59
|
AGNES_API_KEY Your Agnes API key (can also be set later in the Web UI)
|
|
39
60
|
|
|
61
|
+
Website:
|
|
62
|
+
${link('https://video.lichuanyang.top', 'https://video.lichuanyang.top')} (official site & no-install online demo)
|
|
63
|
+
|
|
40
64
|
First run creates a local venv and installs Python dependencies automatically.
|
|
41
65
|
`);
|
|
42
66
|
}
|
|
@@ -96,7 +120,10 @@ function venvBin(name) {
|
|
|
96
120
|
|
|
97
121
|
// ── 1. python check ───────────────────────────────────────────────────────
|
|
98
122
|
console.log('================================================');
|
|
99
|
-
|
|
123
|
+
printLogo();
|
|
124
|
+
console.log(' free-short-video — Free AI short-video generator');
|
|
125
|
+
console.log('');
|
|
126
|
+
console.log(` 🌐 官网: ${link('https://video.lichuanyang.top', 'https://video.lichuanyang.top')} | ⚡ 在线体验: ${link('https://video.lichuanyang.top/demo', 'https://video.lichuanyang.top/demo')}`);
|
|
100
127
|
console.log('================================================');
|
|
101
128
|
console.log('');
|
|
102
129
|
|
package/core/config.py
CHANGED
|
@@ -15,6 +15,12 @@ logger = logging.getLogger(__name__)
|
|
|
15
15
|
CONFIG_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), ".agnes_config")
|
|
16
16
|
CONFIG_FILE = os.path.join(CONFIG_DIR, "config.json")
|
|
17
17
|
|
|
18
|
+
# 未配置 API Key 时的统一报错文案(含免费获取与在线体验兜底,全站路由共用)
|
|
19
|
+
API_KEY_MISSING_MSG = (
|
|
20
|
+
"请先配置 API Key。免费获取:https://platform.agnes-ai.com | "
|
|
21
|
+
"不想配置?在线体验:https://video.lichuanyang.top/demo"
|
|
22
|
+
)
|
|
23
|
+
|
|
18
24
|
# 项目根目录
|
|
19
25
|
_PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
20
26
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "free-short-video",
|
|
3
|
-
"version": "5.3.
|
|
4
|
-
"description": "Free AI short-video generator — run the full free-short-video service locally with one command. Text-to-video, image generation, Edge-TTS narration, subtitles, and compositing, all free.",
|
|
3
|
+
"version": "5.3.1",
|
|
4
|
+
"description": "Free AI short-video generator — run the full free-short-video service locally with one command. Text-to-video, image generation, Edge-TTS narration, subtitles, and compositing, all free. Official site: https://video.lichuanyang.top",
|
|
5
5
|
"bin": {
|
|
6
6
|
"free-short-video": "bin/cli.js",
|
|
7
7
|
"fsv": "bin/cli.js"
|
package/server.py
CHANGED
|
@@ -72,7 +72,15 @@ async def lifespan(app: FastAPI):
|
|
|
72
72
|
yield
|
|
73
73
|
|
|
74
74
|
|
|
75
|
-
app = FastAPI(
|
|
75
|
+
app = FastAPI(
|
|
76
|
+
title="Agnes Video Generator",
|
|
77
|
+
description=(
|
|
78
|
+
"完全免费的 AI 视频生成服务。官网:https://video.lichuanyang.top | "
|
|
79
|
+
"API 文档:https://video.lichuanyang.top/api-docs | "
|
|
80
|
+
"调用指南:https://video.lichuanyang.top/guides/api-call"
|
|
81
|
+
),
|
|
82
|
+
lifespan=lifespan,
|
|
83
|
+
)
|
|
76
84
|
|
|
77
85
|
|
|
78
86
|
# ═══════════════════════════════════════════════════
|
package/static/index.html
CHANGED
|
@@ -353,6 +353,11 @@
|
|
|
353
353
|
<button id="apikey-save" class="px-5 py-2.5 bg-blue-600 hover:bg-blue-500 rounded-lg text-sm font-medium transition shadow-lg shadow-blue-600/20" data-i18n="save">保存</button>
|
|
354
354
|
<button id="apikey-clear" class="px-5 py-2.5 bg-red-600/80 hover:bg-red-500 rounded-lg text-sm font-medium transition hidden" data-i18n="clear">清除</button>
|
|
355
355
|
</div>
|
|
356
|
+
<div class="flex flex-wrap items-center gap-x-5 gap-y-1.5 mt-3 text-xs">
|
|
357
|
+
<a href="https://platform.agnes-ai.com" target="_blank" rel="noopener" class="text-amber-400/70 hover:text-amber-300 transition-colors">🚀 <span data-i18n="apiKeyGetLink">免费获取 API Key</span></a>
|
|
358
|
+
<a href="https://video.lichuanyang.top/guides/api-key" target="_blank" rel="noopener" class="text-gray-500 hover:text-gray-300 transition-colors">📖 <span data-i18n="apiKeyGuideLink">配置教程</span></a>
|
|
359
|
+
<a href="https://video.lichuanyang.top/demo" target="_blank" rel="noopener" class="text-gray-500 hover:text-gray-300 transition-colors">⚡ <span data-i18n="apiKeyDemoLink">不想配置?在线体验</span></a>
|
|
360
|
+
</div>
|
|
356
361
|
</div>
|
|
357
362
|
</div>
|
|
358
363
|
|
|
@@ -519,8 +524,21 @@
|
|
|
519
524
|
</button>
|
|
520
525
|
</div>
|
|
521
526
|
|
|
527
|
+
<!-- 官网引导:提示词技巧 + 模型对比(常驻) -->
|
|
528
|
+
<div class="flex flex-wrap items-center gap-x-4 gap-y-1 mb-4 text-xs text-gray-500">
|
|
529
|
+
<span class="text-gray-600">💡</span>
|
|
530
|
+
<a href="https://video.lichuanyang.top/guides/prompt-tips" target="_blank" rel="noopener" class="hover:text-blue-300 transition-colors"><span data-i18n="formTipTips">🎯 提示词技巧</span></a>
|
|
531
|
+
<span class="text-white/10 select-none">·</span>
|
|
532
|
+
<a href="https://video.lichuanyang.top/guides/model-overview" target="_blank" rel="noopener" class="hover:text-blue-300 transition-colors"><span data-i18n="formTipModels">🧠 模型对比</span></a>
|
|
533
|
+
</div>
|
|
534
|
+
|
|
522
535
|
<!-- ═══════ Tab 1: Simple Image & Video ═══════ -->
|
|
523
536
|
<div id="form-simple" class="hidden">
|
|
537
|
+
<!-- 官网引导:示例提示词 -->
|
|
538
|
+
<div class="flex items-center gap-2 mb-4 text-xs text-gray-500">
|
|
539
|
+
<span class="text-gray-600">💡</span>
|
|
540
|
+
<a href="https://video.lichuanyang.top/guides/prompt-examples-simple" target="_blank" rel="noopener" class="hover:text-blue-300 transition-colors"><span data-i18n="exampleLinkSimple">📋 简易视频示例提示词</span></a>
|
|
541
|
+
</div>
|
|
524
542
|
<!-- Sub-mode selector: Video vs Image -->
|
|
525
543
|
<div class="glass-card rounded-xl p-3 mb-4 flex items-center gap-3">
|
|
526
544
|
<label class="text-sm text-gray-400 whitespace-nowrap" data-i18n="subModeLabel">生成类型</label>
|
|
@@ -698,6 +716,11 @@
|
|
|
698
716
|
|
|
699
717
|
<!-- ═══════ Tab 2: Creative Video ═══════ -->
|
|
700
718
|
<div id="form-creative">
|
|
719
|
+
<!-- 官网引导:示例提示词 -->
|
|
720
|
+
<div class="flex items-center gap-2 mb-4 text-xs text-gray-500">
|
|
721
|
+
<span class="text-gray-600">💡</span>
|
|
722
|
+
<a href="https://video.lichuanyang.top/guides/prompt-examples-creative" target="_blank" rel="noopener" class="hover:text-blue-300 transition-colors"><span data-i18n="exampleLinkCreative">📋 创意长视频示例提示词</span></a>
|
|
723
|
+
</div>
|
|
701
724
|
<div class="glass-card rounded-2xl p-6 mb-4">
|
|
702
725
|
<h2 class="text-lg font-semibold text-blue-300 mb-4" data-i18n="creativeSettings">创意设置</h2>
|
|
703
726
|
|
|
@@ -962,6 +985,11 @@
|
|
|
962
985
|
|
|
963
986
|
<!-- ═══════ Tab 3: Manuscript Video ═══════ -->
|
|
964
987
|
<div id="form-manuscript" class="hidden">
|
|
988
|
+
<!-- 官网引导:示例提示词 -->
|
|
989
|
+
<div class="flex items-center gap-2 mb-4 text-xs text-gray-500">
|
|
990
|
+
<span class="text-gray-600">💡</span>
|
|
991
|
+
<a href="https://video.lichuanyang.top/guides/prompt-examples-manuscript" target="_blank" rel="noopener" class="hover:text-blue-300 transition-colors"><span data-i18n="exampleLinkManuscript">📋 稿件视频示例</span></a>
|
|
992
|
+
</div>
|
|
965
993
|
<div class="glass-card rounded-2xl p-6 mb-4">
|
|
966
994
|
<h2 class="text-lg font-semibold text-blue-300 mb-4" data-i18n="manuscriptSettings">稿件设置</h2>
|
|
967
995
|
|
|
@@ -1115,6 +1143,11 @@
|
|
|
1115
1143
|
|
|
1116
1144
|
<!-- ═══════ Tab 4: Anchor Video ═══════ -->
|
|
1117
1145
|
<div id="form-anchor" class="hidden">
|
|
1146
|
+
<!-- 官网引导:示例提示词 -->
|
|
1147
|
+
<div class="flex items-center gap-2 mb-4 text-xs text-gray-500">
|
|
1148
|
+
<span class="text-gray-600">💡</span>
|
|
1149
|
+
<a href="https://video.lichuanyang.top/guides/prompt-examples-anchor" target="_blank" rel="noopener" class="hover:text-blue-300 transition-colors"><span data-i18n="exampleLinkAnchor">📋 数字人示例</span></a>
|
|
1150
|
+
</div>
|
|
1118
1151
|
<div class="glass-card rounded-2xl p-6 mb-4">
|
|
1119
1152
|
<h2 class="text-lg font-semibold text-blue-300 mb-4" data-i18n="anchorSettings">数字人设置</h2>
|
|
1120
1153
|
|
|
@@ -1502,6 +1535,8 @@
|
|
|
1502
1535
|
|
|
1503
1536
|
<div class="space-y-2" id="steps-container"></div>
|
|
1504
1537
|
|
|
1538
|
+
<p class="mt-4 text-xs text-gray-500"><a href="https://video.lichuanyang.top/use-cases" target="_blank" rel="noopener" class="hover:text-blue-300 transition-colors" data-i18n="waitTip">💡 等待生成时,看看别人用 Agnes 做了什么</a></p>
|
|
1539
|
+
|
|
1505
1540
|
<div id="progress-message" class="mt-4 text-sm text-gray-400"></div>
|
|
1506
1541
|
|
|
1507
1542
|
<!-- 中间产物面板 -->
|
|
@@ -1516,6 +1551,12 @@
|
|
|
1516
1551
|
<div id="result-area" class="hidden mt-4 p-4 glass-card rounded-lg">
|
|
1517
1552
|
<p class="text-green-400 text-sm font-medium mb-2" data-i18n="videoComplete">视频生成完成!</p>
|
|
1518
1553
|
<video id="result-video" controls class="w-full rounded-lg max-h-96"></video>
|
|
1554
|
+
<div class="flex flex-wrap items-center gap-x-4 gap-y-1 mt-3 text-xs">
|
|
1555
|
+
<span>🎉</span>
|
|
1556
|
+
<a href="https://video.lichuanyang.top/tools/tiktok" target="_blank" rel="noopener" class="text-amber-400/70 hover:text-amber-300 transition-colors" data-i18n="doneTipTiktok">📈 学学社媒玩法</a>
|
|
1557
|
+
<span class="text-white/10 select-none">·</span>
|
|
1558
|
+
<a href="https://video.lichuanyang.top/use-cases" target="_blank" rel="noopener" class="text-gray-500 hover:text-gray-300 transition-colors" data-i18n="doneTipMore">🎬 更多创作方向</a>
|
|
1559
|
+
</div>
|
|
1519
1560
|
</div>
|
|
1520
1561
|
</div>
|
|
1521
1562
|
|
|
@@ -1632,7 +1673,7 @@ const T = {
|
|
|
1632
1673
|
zh: {
|
|
1633
1674
|
subtitle: 'AI 视频,一键生成',
|
|
1634
1675
|
apiKeyTitle: 'API Key 配置', apiKeyNotConfigured: '未配置', apiKeyConfigured: '已配置',
|
|
1635
|
-
apiKeyPlaceholder: '输入 Agnes API Key', apiKeyMasked: '已配置 (●●●)', save: '保存',
|
|
1676
|
+
apiKeyPlaceholder: '输入 Agnes API Key(在 platform.agnes-ai.com 免费获取)', apiKeyMasked: '已配置 (●●●)', save: '保存',
|
|
1636
1677
|
clear: '清除', clearConfirm: '确定要清除已配置的 API Key 吗?', apiKeyFromEnv: '已配置 (环境变量)',
|
|
1637
1678
|
clearEnvHint: '当前 API Key 来自环境变量 AGNES_API_KEY,无法从界面清除。请取消环境变量后重试。',
|
|
1638
1679
|
modelTitle: '模型选择', modelHint: '选择生成时使用的 Agnes 模型。图像与视频模型暂未开放,保留默认配置。',
|
|
@@ -1654,7 +1695,7 @@ const T = {
|
|
|
1654
1695
|
ttSimple: '简易图像视频', ttCreative: '创意长视频', ttManuscript: '稿件长视频',
|
|
1655
1696
|
subModeLabel: '生成类型', subModeVideo: '🎬 视频', subModeImage: '🖼️ 图像',
|
|
1656
1697
|
simpleSettings: '简单视频设置', creativeSettings: '创意设置', manuscriptSettings: '稿件设置',
|
|
1657
|
-
promptLabel: '视频描述', promptPlaceholder: '
|
|
1698
|
+
promptLabel: '视频描述', promptPlaceholder: '一只橘猫趴在雨后窗台上打盹,阳光透过玻璃洒在毛上,微风吹动窗帘,4K 写实',
|
|
1658
1699
|
genMode: '生成模式', modeT2v: '文生视频', modeI2v: '图生视频', modeKeyframesSimple: '关键帧',
|
|
1659
1700
|
duration: '时长', resolution: '分辨率',
|
|
1660
1701
|
resPortrait: '竖屏 9:16', resLandscape: '横屏 16:9', resSquare: '方形 1:1',
|
|
@@ -1662,7 +1703,7 @@ const T = {
|
|
|
1662
1703
|
chooseImage: '选择参考图', notSelected: '未选择',
|
|
1663
1704
|
advancedSettings: '高级设置', optional: '可选', seedPlaceholder: '留空随机', negativePlaceholder: '排除不希望出现的元素',
|
|
1664
1705
|
taskName: '任务名称', taskNamePlaceholder: '可选,留空自动生成',
|
|
1665
|
-
ideaLabel: '创意描述', ideaPlaceholder: '
|
|
1706
|
+
ideaLabel: '创意描述', ideaPlaceholder: '一个机器人在废弃城市里为小花浇水,3 个场景:发现花苗→搬来水源→花开',
|
|
1666
1707
|
visualStyle: '视觉风格',
|
|
1667
1708
|
requirementDefault: '3个场景,每个场景5秒,电影质感', styleDefault: '电影质感写实风格',
|
|
1668
1709
|
chainingMode: '串联模式', modeKeyframes: 'keyframes (推荐)', modeTi2vid: 'ti2vid (过渡帧)', modeNone: 'none (独立场景)',
|
|
@@ -1680,7 +1721,7 @@ const T = {
|
|
|
1680
1721
|
subStrokeColor: '描边色', subStrokeWidth: '描边宽', subBgColor: '背景色',
|
|
1681
1722
|
subStyleMode: '样式模式', subStyleFixed: '固定样式', subStyleLLM: 'AI 智能样式',
|
|
1682
1723
|
subStyleHints: '样式偏好描述', subStyleHintsHint: '描述你期望的字幕样式变化规律,AI 会据此为每条字幕分配不同位置、颜色和字号',
|
|
1683
|
-
manuscriptText: '稿件正文', manuscriptPlaceholder: '
|
|
1724
|
+
manuscriptText: '稿件正文', manuscriptPlaceholder: '粘贴你的文章、新闻稿、公众号文章等,例如:一篇 500 字的产品介绍或旅行游记,系统会自动拆段成片',
|
|
1684
1725
|
charCount: '字数',
|
|
1685
1726
|
startGenerate: '开始生成视频', submitting: '提交中...', taskRunning: '任务进行中...',
|
|
1686
1727
|
loading: '加载中...', noTasks: '暂无任务', loadFailed: '加载失败',
|
|
@@ -1739,7 +1780,7 @@ const T = {
|
|
|
1739
1780
|
pStepBuildScenes: '分镜拆分', pStepVideoGen: '视频生成', pStepAudio: '朗诵配音', pStepSubtitle: '字幕生成', pStepConcat: '视频拼接',
|
|
1740
1781
|
enterPoem: '请输入古诗原文',
|
|
1741
1782
|
ttImage: '简单图片', imageSettings: '图片设置',
|
|
1742
|
-
imagePrompt: '图片描述', imagePromptPlaceholder: '
|
|
1783
|
+
imagePrompt: '图片描述', imagePromptPlaceholder: '雪山脚下的湖泊,清晨薄雾,水面倒映雪山,摄影级光影,横构图',
|
|
1743
1784
|
imageSize: '图片尺寸', refImageHint: '可选。上传后以该图为基底生成变体;不上传则纯 AI 生成',
|
|
1744
1785
|
imgGenerate: '开始生成图片', imgComplete: '图片生成完成!', generating: '生成中...', enterImagePrompt: '请输入图片描述',
|
|
1745
1786
|
anchorSettings: '数字人设置',
|
|
@@ -1748,7 +1789,7 @@ const T = {
|
|
|
1748
1789
|
anchorRefImage: '参考图 (可选)',
|
|
1749
1790
|
anchorRefImageHint: '可选。上传后以该图为基底微调主播形象;不上传则纯 AI 生成',
|
|
1750
1791
|
scriptText: '口播稿件',
|
|
1751
|
-
scriptTextPlaceholder: '
|
|
1792
|
+
scriptTextPlaceholder: '欢迎收看今天的科技快报。第一条消息:AI 视频生成已经进入免费时代,人人都能用一段文字创作短视频……',
|
|
1752
1793
|
resPortraitHD: '竖屏 9:16 (HD)',
|
|
1753
1794
|
subPositionHints: '字幕位置要求',
|
|
1754
1795
|
subPositionHintsPlaceholder: '字幕放在画面下方三分之一区域,不要遮挡主播面部',
|
|
@@ -1778,11 +1819,23 @@ const T = {
|
|
|
1778
1819
|
artifactDeleted: '产物已删除', artifactDeleteFailed: '删除失败',
|
|
1779
1820
|
clickToPreview: '点击预览', 'delete': '删除',
|
|
1780
1821
|
taskStarting: '任务正在启动...',
|
|
1822
|
+
apiKeyGetLink: '免费获取 API Key',
|
|
1823
|
+
apiKeyGuideLink: '配置教程',
|
|
1824
|
+
apiKeyDemoLink: '不想配置?在线体验',
|
|
1825
|
+
formTipTips: '🎯 提示词技巧',
|
|
1826
|
+
formTipModels: '🧠 模型对比',
|
|
1827
|
+
exampleLinkSimple: '📋 简易视频示例提示词',
|
|
1828
|
+
exampleLinkCreative: '📋 创意长视频示例提示词',
|
|
1829
|
+
exampleLinkManuscript: '📋 稿件视频示例',
|
|
1830
|
+
exampleLinkAnchor: '📋 数字人示例',
|
|
1831
|
+
waitTip: '💡 等待生成时,看看别人用 Agnes 做了什么',
|
|
1832
|
+
doneTipTiktok: '📈 学学社媒玩法',
|
|
1833
|
+
doneTipMore: '🎬 更多创作方向',
|
|
1781
1834
|
},
|
|
1782
1835
|
en: {
|
|
1783
1836
|
subtitle: 'AI Video, One Click',
|
|
1784
1837
|
apiKeyTitle: 'API Key Configuration', apiKeyNotConfigured: 'Not configured', apiKeyConfigured: 'Configured',
|
|
1785
|
-
apiKeyPlaceholder: 'Enter Agnes API Key', apiKeyMasked: 'Configured (●●●)', save: 'Save',
|
|
1838
|
+
apiKeyPlaceholder: 'Enter your Agnes API Key (get one free at platform.agnes-ai.com)', apiKeyMasked: 'Configured (●●●)', save: 'Save',
|
|
1786
1839
|
clear: 'Clear', clearConfirm: 'Are you sure you want to clear the configured API Key?', apiKeyFromEnv: 'Configured (env)',
|
|
1787
1840
|
clearEnvHint: 'The API Key is set via environment variable AGNES_API_KEY and cannot be cleared from the UI.',
|
|
1788
1841
|
modelTitle: 'Model Selection', modelHint: 'Choose the Agnes models used for generation. Image and video models are not yet open; their defaults are kept.',
|
|
@@ -1804,7 +1857,7 @@ const T = {
|
|
|
1804
1857
|
ttSimple: 'Image & Video', ttCreative: 'Creative Video', ttManuscript: 'Article Video',
|
|
1805
1858
|
subModeLabel: 'Type', subModeVideo: '🎬 Video', subModeImage: '🖼️ Image',
|
|
1806
1859
|
simpleSettings: 'Simple Video Settings', creativeSettings: 'Creative Settings', manuscriptSettings: 'Article Settings',
|
|
1807
|
-
promptLabel: 'Video Description', promptPlaceholder: '
|
|
1860
|
+
promptLabel: 'Video Description', promptPlaceholder: 'A ginger cat dozing on a rainy windowsill, sunlight streaming through the glass, curtains swaying in the breeze, 4K photorealistic',
|
|
1808
1861
|
genMode: 'Generation Mode', modeT2v: 'Text to Video', modeI2v: 'Image to Video', modeKeyframesSimple: 'Keyframes',
|
|
1809
1862
|
duration: 'Duration', resolution: 'Resolution',
|
|
1810
1863
|
resPortrait: 'Portrait 9:16', resLandscape: 'Landscape 16:9', resSquare: 'Square 1:1',
|
|
@@ -1812,7 +1865,7 @@ const T = {
|
|
|
1812
1865
|
chooseImage: 'Choose Image', notSelected: 'Not selected',
|
|
1813
1866
|
advancedSettings: 'Advanced Settings', optional: 'Optional', seedPlaceholder: 'Leave blank for random', negativePlaceholder: 'Elements to exclude',
|
|
1814
1867
|
taskName: 'Task Name', taskNamePlaceholder: 'Optional, auto-generated if blank',
|
|
1815
|
-
ideaLabel: 'Idea Description', ideaPlaceholder: '
|
|
1868
|
+
ideaLabel: 'Idea Description', ideaPlaceholder: 'A robot watering a small flower in an abandoned city, 3 scenes: discovering the sprout, fetching water, the flower blooms',
|
|
1816
1869
|
visualStyle: 'Visual Style',
|
|
1817
1870
|
requirementDefault: '3 scenes, 5 seconds each, cinematic quality', styleDefault: 'cinematic realistic style',
|
|
1818
1871
|
chainingMode: 'Chaining Mode', modeKeyframes: 'keyframes (recommended)', modeTi2vid: 'ti2vid (transition)', modeNone: 'none (independent)',
|
|
@@ -1830,7 +1883,7 @@ const T = {
|
|
|
1830
1883
|
subStrokeColor: 'Stroke Color', subStrokeWidth: 'Stroke Width', subBgColor: 'BG Color',
|
|
1831
1884
|
subStyleMode: 'Style Mode', subStyleFixed: 'Fixed', subStyleLLM: 'AI Smart',
|
|
1832
1885
|
subStyleHints: 'Style Preferences', subStyleHintsHint: 'Describe how subtitles should vary in position, color, and size. AI will assign per-subtitle styles accordingly.',
|
|
1833
|
-
manuscriptText: 'Article Text', manuscriptPlaceholder: 'Paste your article,
|
|
1886
|
+
manuscriptText: 'Article Text', manuscriptPlaceholder: 'Paste your article, press release or blog post. For example: a 500-word product introduction or a travel essay - the system splits it into scenes automatically',
|
|
1834
1887
|
charCount: 'Characters',
|
|
1835
1888
|
startGenerate: 'Start Generating', submitting: 'Submitting...', taskRunning: 'Task in progress...',
|
|
1836
1889
|
loading: 'Loading...', noTasks: 'No tasks', loadFailed: 'Load failed',
|
|
@@ -1882,7 +1935,7 @@ const T = {
|
|
|
1882
1935
|
pStepBuildScenes: 'Scene Split', pStepVideoGen: 'Video Gen', pStepAudio: 'Narration', pStepSubtitle: 'Subtitle', pStepConcat: 'Concatenate',
|
|
1883
1936
|
enterPoem: 'Please enter the poem text',
|
|
1884
1937
|
ttImage: 'Simple Image', imageSettings: 'Image Settings',
|
|
1885
|
-
imagePrompt: 'Image Description', imagePromptPlaceholder: '
|
|
1938
|
+
imagePrompt: 'Image Description', imagePromptPlaceholder: 'A lake at the foot of snow-capped mountains, morning mist, mountains reflected in the water, cinematic lighting, landscape orientation',
|
|
1886
1939
|
imageSize: 'Image Size', refImageHint: 'Optional. Upload to generate variations; leave blank for pure AI generation.',
|
|
1887
1940
|
imgGenerate: 'Generate Image', imgComplete: 'Image generated!', generating: 'Generating...', enterImagePrompt: 'Please enter an image description',
|
|
1888
1941
|
anchorSettings: 'Digital Human Settings',
|
|
@@ -1891,7 +1944,7 @@ const T = {
|
|
|
1891
1944
|
anchorRefImage: 'Reference Image (Optional)',
|
|
1892
1945
|
anchorRefImageHint: 'Optional. Upload to fine-tune the anchor appearance; leave blank for pure AI generation.',
|
|
1893
1946
|
scriptText: 'Script Text',
|
|
1894
|
-
scriptTextPlaceholder: '
|
|
1947
|
+
scriptTextPlaceholder: 'Welcome to today\'s tech bulletin. First story: AI video generation has entered the free era - anyone can turn a text prompt into a short video...',
|
|
1895
1948
|
resPortraitHD: 'Portrait 9:16 (HD)',
|
|
1896
1949
|
subPositionHints: 'Subtitle Position Hints',
|
|
1897
1950
|
subPositionHintsPlaceholder: 'Place subtitles in the lower third, avoid covering the anchor\'s face',
|
|
@@ -1921,11 +1974,23 @@ const T = {
|
|
|
1921
1974
|
artifactDeleted: 'Artifact deleted', artifactDeleteFailed: 'Delete failed',
|
|
1922
1975
|
clickToPreview: 'Click to preview', 'delete': 'Delete',
|
|
1923
1976
|
taskStarting: 'Task starting...',
|
|
1977
|
+
apiKeyGetLink: 'Get a free API Key',
|
|
1978
|
+
apiKeyGuideLink: 'Setup guide',
|
|
1979
|
+
apiKeyDemoLink: 'Prefer not to configure? Try online',
|
|
1980
|
+
formTipTips: '🎯 Prompt tips',
|
|
1981
|
+
formTipModels: '🧠 Model comparison',
|
|
1982
|
+
exampleLinkSimple: '📋 Simple video prompt examples',
|
|
1983
|
+
exampleLinkCreative: '📋 Creative video prompt examples',
|
|
1984
|
+
exampleLinkManuscript: '📋 Manuscript video examples',
|
|
1985
|
+
exampleLinkAnchor: '📋 Digital anchor examples',
|
|
1986
|
+
waitTip: '💡 While you wait, see what others create with Agnes',
|
|
1987
|
+
doneTipTiktok: '📈 Social media playbook',
|
|
1988
|
+
doneTipMore: '🎬 More creation ideas',
|
|
1924
1989
|
},
|
|
1925
1990
|
ru: {
|
|
1926
1991
|
subtitle: 'AI Видео, Один клик',
|
|
1927
1992
|
apiKeyTitle: 'API Key', apiKeyNotConfigured: 'Не настроен', apiKeyConfigured: 'Настроен',
|
|
1928
|
-
apiKeyPlaceholder: 'Введите Agnes API Key', apiKeyMasked: 'Настроен (●●●)', save: 'Сохранить',
|
|
1993
|
+
apiKeyPlaceholder: 'Введите Agnes API Key (бесплатно на platform.agnes-ai.com)', apiKeyMasked: 'Настроен (●●●)', save: 'Сохранить',
|
|
1929
1994
|
clear: 'Очистить', clearConfirm: 'Вы уверены, что хотите удалить API Key?', apiKeyFromEnv: 'Настроен (env)',
|
|
1930
1995
|
clearEnvHint: 'API Key задан через переменную AGNES_API_KEY и не может быть удалён из интерфейса.',
|
|
1931
1996
|
modelTitle: 'Выбор модели', modelHint: 'Выберите модели Agnes для генерации. Модели изображений и видео пока не открыты; сохраняются значения по умолчанию.',
|
|
@@ -1947,7 +2012,7 @@ const T = {
|
|
|
1947
2012
|
ttSimple: 'Изобр. и видео', ttCreative: 'Креативное видео', ttManuscript: 'Видео из статьи',
|
|
1948
2013
|
subModeLabel: 'Тип', subModeVideo: '🎬 Видео', subModeImage: '🖼️ Изображение',
|
|
1949
2014
|
simpleSettings: 'Настройки простого видео', creativeSettings: 'Настройки сценария', manuscriptSettings: 'Настройки статьи',
|
|
1950
|
-
promptLabel: 'Описание видео', promptPlaceholder: '
|
|
2015
|
+
promptLabel: 'Описание видео', promptPlaceholder: 'Рыжий кот дремлет на подоконнике после дождя, солнечные лучи падают на шерсть, ветер колышет шторы, 4K фотореализм',
|
|
1951
2016
|
genMode: 'Режим', modeT2v: 'Текст в видео', modeI2v: 'Изображение в видео', modeKeyframesSimple: 'Ключевые кадры',
|
|
1952
2017
|
duration: 'Длительность', resolution: 'Разрешение',
|
|
1953
2018
|
resPortrait: 'Вертикальное 9:16', resLandscape: 'Горизонтальное 16:9', resSquare: 'Квадрат 1:1',
|
|
@@ -1955,7 +2020,7 @@ const T = {
|
|
|
1955
2020
|
chooseImage: 'Выбрать', notSelected: 'Не выбрано',
|
|
1956
2021
|
advancedSettings: 'Расширенные', optional: 'Опционально', seedPlaceholder: 'Пусто = случайно', negativePlaceholder: 'Исключить элементы',
|
|
1957
2022
|
taskName: 'Название', taskNamePlaceholder: 'Необязательно',
|
|
1958
|
-
ideaLabel: 'Идея', ideaPlaceholder: '
|
|
2023
|
+
ideaLabel: 'Идея', ideaPlaceholder: 'Робот поливает маленький цветок в заброшенном городе, 3 сцены: росток найден, вода принесена, цветок распускается',
|
|
1959
2024
|
visualStyle: 'Стиль',
|
|
1960
2025
|
requirementDefault: '3 сцены, по 5 секунд, кинематографическое качество', styleDefault: 'кинематографический реалистичный стиль',
|
|
1961
2026
|
chainingMode: 'Связывание', modeKeyframes: 'keyframes', modeTi2vid: 'ti2vid', modeNone: 'none',
|
|
@@ -1969,7 +2034,7 @@ const T = {
|
|
|
1969
2034
|
subStrokeColor: 'Цвет обводки', subStrokeWidth: 'Ширина обводки', subBgColor: 'Цвет фона',
|
|
1970
2035
|
subStyleMode: 'Режим', subStyleFixed: 'Фикс.', subStyleLLM: 'AI стиль',
|
|
1971
2036
|
subStyleHints: 'Описание стиля', subStyleHintsHint: 'Опишите желаемое изменение стиля субтитров. AI назначит каждой субтитре позицию, цвет и размер.',
|
|
1972
|
-
manuscriptText: 'Текст статьи', manuscriptPlaceholder: 'Вставьте
|
|
2037
|
+
manuscriptText: 'Текст статьи', manuscriptPlaceholder: 'Вставьте статью, пресс-релиз или пост из блога. Например: описание продукта на 500 слов или путевые заметки - система разобьёт текст на сцены автоматически',
|
|
1973
2038
|
charCount: 'Символов',
|
|
1974
2039
|
startGenerate: 'Начать генерацию', submitting: 'Отправка...', taskRunning: 'Выполняется...',
|
|
1975
2040
|
loading: 'Загрузка...', noTasks: 'Нет задач', loadFailed: 'Ошибка загрузки',
|
|
@@ -2009,7 +2074,7 @@ const T = {
|
|
|
2009
2074
|
domainSaved: 'Сохранено',
|
|
2010
2075
|
domainSaveFailed: 'Ошибка сохранения',
|
|
2011
2076
|
ttImage: 'Простое изображение', imageSettings: 'Настройки изображения',
|
|
2012
|
-
imagePrompt: 'Описание', imagePromptPlaceholder: '
|
|
2077
|
+
imagePrompt: 'Описание', imagePromptPlaceholder: 'Озеро у подножия заснеженных гор, утренний туман, отражение гор в воде, кинематографичный свет, горизонтальная композиция',
|
|
2013
2078
|
imageSize: 'Размер', refImageHint: 'Опционально. Загрузите для создания вариаций.',
|
|
2014
2079
|
imgGenerate: 'Создать', imgComplete: 'Изображение создано!', generating: 'Создание...', enterImagePrompt: 'Введите описание изображения',
|
|
2015
2080
|
anchorSettings: 'Настройки ведущего',
|
|
@@ -2018,7 +2083,7 @@ const T = {
|
|
|
2018
2083
|
anchorRefImage: 'Референс (опционально)',
|
|
2019
2084
|
anchorRefImageHint: 'Опционально. Загрузите для точной настройки внешности ведущего.',
|
|
2020
2085
|
scriptText: 'Текст сценария',
|
|
2021
|
-
scriptTextPlaceholder: '
|
|
2086
|
+
scriptTextPlaceholder: 'Приветствуем в выпуске технологических новостей. Первая новость: генерация AI-видео стала бесплатной...',
|
|
2022
2087
|
resPortraitHD: 'Вертикальное 9:16 (HD)',
|
|
2023
2088
|
subPositionHints: 'Позиция субтитров',
|
|
2024
2089
|
subPositionHintsPlaceholder: 'Разместите субтитры в нижней трети, избегая лица ведущего',
|
|
@@ -2037,11 +2102,23 @@ const T = {
|
|
|
2037
2102
|
aStepConcat: 'Сборка',
|
|
2038
2103
|
systemPrompt: 'Системный промпт',
|
|
2039
2104
|
systemPromptPlaceholder: 'Дополнительные инструкции для модели (стиль, качество), не влияют на основной контент',
|
|
2105
|
+
apiKeyGetLink: 'Получить API Key бесплатно',
|
|
2106
|
+
apiKeyGuideLink: 'Инструкция по настройке',
|
|
2107
|
+
apiKeyDemoLink: 'Не хотите настраивать? Онлайн-версия',
|
|
2108
|
+
formTipTips: '🎯 Советы по промптам',
|
|
2109
|
+
formTipModels: '🧠 Сравнение моделей',
|
|
2110
|
+
exampleLinkSimple: '📋 Примеры промптов для простого видео',
|
|
2111
|
+
exampleLinkCreative: '📋 Примеры промптов для креативного видео',
|
|
2112
|
+
exampleLinkManuscript: '📋 Примеры видео из статьи',
|
|
2113
|
+
exampleLinkAnchor: '📋 Примеры цифрового ведущего',
|
|
2114
|
+
waitTip: '💡 Пока ждёте - посмотрите, что создают другие с Agnes',
|
|
2115
|
+
doneTipTiktok: '📈 Идеи для соцсетей',
|
|
2116
|
+
doneTipMore: '🎬 Больше идей для творчества',
|
|
2040
2117
|
},
|
|
2041
2118
|
ja: {
|
|
2042
2119
|
subtitle: 'AI動画、ワンクリック',
|
|
2043
2120
|
apiKeyTitle: 'API Key 設定', apiKeyNotConfigured: '未設定', apiKeyConfigured: '設定済み',
|
|
2044
|
-
apiKeyPlaceholder: 'Agnes API Key
|
|
2121
|
+
apiKeyPlaceholder: 'Agnes API Key を入力(platform.agnes-ai.com で無料取得)', apiKeyMasked: '設定済み (●●●)', save: '保存',
|
|
2045
2122
|
clear: 'クリア', clearConfirm: '設定済みのAPI Keyを削除しますか?', apiKeyFromEnv: '設定済み (環境変数)',
|
|
2046
2123
|
clearEnvHint: 'API Keyは環境変数 AGNES_API_KEY で設定されているため、画面から削除できません。',
|
|
2047
2124
|
modelTitle: 'モデル選択', modelHint: '生成に使用する Agnes モデルを選択します。画像・動画モデルはまだ開放されておらず、既定値が保持されます。',
|
|
@@ -2063,7 +2140,7 @@ const T = {
|
|
|
2063
2140
|
ttSimple: '画像&動画', ttCreative: 'クリエイティブ動画', ttManuscript: '記事動画',
|
|
2064
2141
|
subModeLabel: '生成タイプ', subModeVideo: '🎬 動画', subModeImage: '🖼️ 画像',
|
|
2065
2142
|
simpleSettings: 'シンプル設定', creativeSettings: 'クリエイティブ設定', manuscriptSettings: '記事設定',
|
|
2066
|
-
promptLabel: '動画説明', promptPlaceholder: '
|
|
2143
|
+
promptLabel: '動画説明', promptPlaceholder: '雨上がりの窓辺で昼寝するオレンジの猫、ガラス越しの陽光が毛に当たり、カーテンが風で揺れる、4K フォトリアル',
|
|
2067
2144
|
genMode: 'モード', modeT2v: 'テキスト→動画', modeI2v: '画像→動画', modeKeyframesSimple: 'キーフレーム',
|
|
2068
2145
|
duration: '長さ', resolution: '解像度',
|
|
2069
2146
|
resPortrait: '縦型 9:16', resLandscape: '横型 16:9', resSquare: '正方形 1:1',
|
|
@@ -2071,7 +2148,7 @@ const T = {
|
|
|
2071
2148
|
chooseImage: '画像を選択', notSelected: '未選択',
|
|
2072
2149
|
advancedSettings: '詳細設定', optional: '任意', seedPlaceholder: '空欄=ランダム', negativePlaceholder: '除外要素',
|
|
2073
2150
|
taskName: 'タスク名', taskNamePlaceholder: '任意',
|
|
2074
|
-
ideaLabel: 'アイデア', ideaPlaceholder: '
|
|
2151
|
+
ideaLabel: 'アイデア', ideaPlaceholder: '廃墟の街で小さな花に水をやるロボット、3つのシーン:芽を見つける→水を運ぶ→花が咲く',
|
|
2075
2152
|
visualStyle: 'スタイル',
|
|
2076
2153
|
requirementDefault: '3シーン、各5秒、映画品質', styleDefault: '映画のようなリアルなスタイル',
|
|
2077
2154
|
chainingMode: '連鎖', modeKeyframes: 'keyframes', modeTi2vid: 'ti2vid', modeNone: 'none',
|
|
@@ -2085,7 +2162,7 @@ const T = {
|
|
|
2085
2162
|
subStrokeColor: '縁取り色', subStrokeWidth: '縁取り幅', subBgColor: '背景色',
|
|
2086
2163
|
subStyleMode: 'スタイルモード', subStyleFixed: '固定', subStyleLLM: 'AI スマート',
|
|
2087
2164
|
subStyleHints: 'スタイル設定', subStyleHintsHint: '字幕のスタイル変化パターンを記述。AIが字幕ごとに位置・色・サイズを割り当てます。',
|
|
2088
|
-
manuscriptText: '記事テキスト', manuscriptPlaceholder: '
|
|
2165
|
+
manuscriptText: '記事テキスト', manuscriptPlaceholder: '記事やプレスリリース、ブログ記事などを貼り付け。例:500字の製品紹介や旅のエッセイ - 自動でシーン分割します',
|
|
2089
2166
|
charCount: '文字数',
|
|
2090
2167
|
startGenerate: '生成開始', submitting: '送信中...', taskRunning: '実行中...',
|
|
2091
2168
|
loading: '読込中...', noTasks: 'タスクなし', loadFailed: '読込失敗',
|
|
@@ -2122,7 +2199,7 @@ const T = {
|
|
|
2122
2199
|
domainSaved: '保存しました',
|
|
2123
2200
|
domainSaveFailed: '保存に失敗しました',
|
|
2124
2201
|
ttImage: '簡単画像', imageSettings: '画像設定',
|
|
2125
|
-
imagePrompt: '画像説明', imagePromptPlaceholder: '
|
|
2202
|
+
imagePrompt: '画像説明', imagePromptPlaceholder: '雪を頂く山々のふもとの湖、朝もや、水面に映る山々、映画的な光、横構図',
|
|
2126
2203
|
imageSize: '画像サイズ', refImageHint: '任意。アップロードしてバリエーションを生成。',
|
|
2127
2204
|
imgGenerate: '画像生成', imgComplete: '画像生成完了!', generating: '生成中...', enterImagePrompt: '画像の説明を入力してください',
|
|
2128
2205
|
anchorSettings: 'アンカー設定',
|
|
@@ -2131,7 +2208,7 @@ const T = {
|
|
|
2131
2208
|
anchorRefImage: '参照画像 (任意)',
|
|
2132
2209
|
anchorRefImageHint: '任意。アンカーの外見を微調整するためにアップロード。',
|
|
2133
2210
|
scriptText: '原稿テキスト',
|
|
2134
|
-
scriptTextPlaceholder: '
|
|
2211
|
+
scriptTextPlaceholder: 'こんにちは、今日のテックニュースです。最初のニュース:AI動画生成が無料の時代に突入しました……',
|
|
2135
2212
|
resPortraitHD: '縦型 9:16 (HD)',
|
|
2136
2213
|
subPositionHints: '字幕位置の指定',
|
|
2137
2214
|
subPositionHintsPlaceholder: '字幕は画面下部3分の1に配置、アンカーの顔を隠さないように',
|
|
@@ -2150,11 +2227,23 @@ const T = {
|
|
|
2150
2227
|
aStepConcat: '動画結合',
|
|
2151
2228
|
systemPrompt: 'システムプロンプト',
|
|
2152
2229
|
systemPromptPlaceholder: 'モデルへの追加指示(スタイル、品質など)。生成内容の主体には影響しません',
|
|
2230
|
+
apiKeyGetLink: '無料で API Key を取得',
|
|
2231
|
+
apiKeyGuideLink: '設定チュートリアル',
|
|
2232
|
+
apiKeyDemoLink: '設定したくない?オンライン体験',
|
|
2233
|
+
formTipTips: '🎯 プロンプトのコツ',
|
|
2234
|
+
formTipModels: '🧠 モデル比較',
|
|
2235
|
+
exampleLinkSimple: '📋 シンプル動画のプロンプト例',
|
|
2236
|
+
exampleLinkCreative: '📋 クリエイティブ動画のプロンプト例',
|
|
2237
|
+
exampleLinkManuscript: '📋 記事動画の例',
|
|
2238
|
+
exampleLinkAnchor: '📋 デジタルアンカーの例',
|
|
2239
|
+
waitTip: '💡 待っている間に、Agnes で作られた作品を見てみませんか',
|
|
2240
|
+
doneTipTiktok: '📈 SNS 活用術',
|
|
2241
|
+
doneTipMore: '🎬 もっと創作アイデア',
|
|
2153
2242
|
},
|
|
2154
2243
|
ko: {
|
|
2155
2244
|
subtitle: 'AI 영상, 원클릭',
|
|
2156
2245
|
apiKeyTitle: 'API Key 설정', apiKeyNotConfigured: '미설정', apiKeyConfigured: '설정됨',
|
|
2157
|
-
apiKeyPlaceholder: 'Agnes API Key 입력', apiKeyMasked: '설정됨 (●●●)', save: '저장',
|
|
2246
|
+
apiKeyPlaceholder: 'Agnes API Key 입력 (platform.agnes-ai.com에서 무료 발급)', apiKeyMasked: '설정됨 (●●●)', save: '저장',
|
|
2158
2247
|
clear: '초기화', clearConfirm: '설정된 API Key를 삭제하시겠습니까?', apiKeyFromEnv: '설정됨 (환경변수)',
|
|
2159
2248
|
clearEnvHint: 'API Key가 환경변수 AGNES_API_KEY로 설정되어 있어 화면에서 삭제할 수 없습니다.',
|
|
2160
2249
|
modelTitle: '모델 선택', modelHint: '생성에 사용할 Agnes 모델을 선택하세요. 이미지 및 비디오 모델은 아직 공개되지 않았으며 기본값이 유지됩니다.',
|
|
@@ -2176,7 +2265,7 @@ const T = {
|
|
|
2176
2265
|
ttSimple: '이미지 & 영상', ttCreative: '크리에이티브 영상', ttManuscript: '기사 영상',
|
|
2177
2266
|
subModeLabel: '생성 유형', subModeVideo: '🎬 영상', subModeImage: '🖼️ 이미지',
|
|
2178
2267
|
simpleSettings: '간단 설정', creativeSettings: '크리에이티브 설정', manuscriptSettings: '기사 설정',
|
|
2179
|
-
promptLabel: '영상 설명', promptPlaceholder: '
|
|
2268
|
+
promptLabel: '영상 설명', promptPlaceholder: '비 온 뒤 창가에서 낮잠 자는 주황색 고양이, 유리창 너머 햇살이 털에 닿고 커튼이 바람에 흔들림, 4K 실사',
|
|
2180
2269
|
genMode: '모드', modeT2v: '텍스트→영상', modeI2v: '이미지→영상', modeKeyframesSimple: '키프레임',
|
|
2181
2270
|
duration: '길이', resolution: '해상도',
|
|
2182
2271
|
resPortrait: '세로 9:16', resLandscape: '가로 16:9', resSquare: '정사각 1:1',
|
|
@@ -2184,7 +2273,7 @@ const T = {
|
|
|
2184
2273
|
chooseImage: '이미지 선택', notSelected: '미선택',
|
|
2185
2274
|
advancedSettings: '고급 설정', optional: '선택', seedPlaceholder: '비우기=랜덤', negativePlaceholder: '제외 요소',
|
|
2186
2275
|
taskName: '작업 이름', taskNamePlaceholder: '선택사항',
|
|
2187
|
-
ideaLabel: '아이디어', ideaPlaceholder: '
|
|
2276
|
+
ideaLabel: '아이디어', ideaPlaceholder: '폐허가 된 도시에서 작은 꽃에 물을 주는 로봇, 3개 장면: 새싹 발견 → 물 가져오기 → 꽃이 핌',
|
|
2188
2277
|
visualStyle: '스타일',
|
|
2189
2278
|
requirementDefault: '3개 장면, 각 5초, 영화 품질', styleDefault: '영화 같은 사실적인 스타일',
|
|
2190
2279
|
chainingMode: '체인', modeKeyframes: 'keyframes', modeTi2vid: 'ti2vid', modeNone: 'none',
|
|
@@ -2198,7 +2287,7 @@ const T = {
|
|
|
2198
2287
|
subStrokeColor: '테두리 색', subStrokeWidth: '테두리 두께', subBgColor: '배경 색',
|
|
2199
2288
|
subStyleMode: '스타일 모드', subStyleFixed: '고정', subStyleLLM: 'AI 스마트',
|
|
2200
2289
|
subStyleHints: '스타일 설정', subStyleHintsHint: '자막 스타일 변화 패턴을 설명하세요. AI가 각 자막의 위치, 색상, 크기를 할당합니다.',
|
|
2201
|
-
manuscriptText: '기사 텍스트', manuscriptPlaceholder: '
|
|
2290
|
+
manuscriptText: '기사 텍스트', manuscriptPlaceholder: '기사, 보도자료, 블로그 글 등을 붙여넣으세요. 예: 500자 제품 소개나 여행 에세이 - 자동으로 장면을 나눠줍니다',
|
|
2202
2291
|
charCount: '글자 수',
|
|
2203
2292
|
startGenerate: '생성 시작', submitting: '제출 중...', taskRunning: '실행 중...',
|
|
2204
2293
|
loading: '로딩...', noTasks: '작업 없음', loadFailed: '로딩 실패',
|
|
@@ -2235,7 +2324,7 @@ const T = {
|
|
|
2235
2324
|
domainSaved: '저장됨',
|
|
2236
2325
|
domainSaveFailed: '저장 실패',
|
|
2237
2326
|
ttImage: '간단 이미지', imageSettings: '이미지 설정',
|
|
2238
|
-
imagePrompt: '이미지 설명', imagePromptPlaceholder: '
|
|
2327
|
+
imagePrompt: '이미지 설명', imagePromptPlaceholder: '눈 덮인 산 아래 호수, 새벽 안개, 수면에 비친 산, 영화적 조명, 가로 구도',
|
|
2239
2328
|
imageSize: '이미지 크기', refImageHint: '선택사항. 업로드하여 변형을 생성합니다.',
|
|
2240
2329
|
imgGenerate: '이미지 생성', imgComplete: '이미지 생성 완료!', generating: '생성 중...', enterImagePrompt: '이미지 설명을 입력하세요',
|
|
2241
2330
|
anchorSettings: '앵커 설정',
|
|
@@ -2244,7 +2333,7 @@ const T = {
|
|
|
2244
2333
|
anchorRefImage: '참조 이미지 (선택)',
|
|
2245
2334
|
anchorRefImageHint: '선택사항. 앵커 외형을 미세 조정하려면 업로드하세요.',
|
|
2246
2335
|
scriptText: '대본 텍스트',
|
|
2247
|
-
scriptTextPlaceholder: '
|
|
2336
|
+
scriptTextPlaceholder: '오늘의 테크 뉴스를 시작합니다. 첫 번째 소식: AI 영상 생성이 무료 시대에 접어들었습니다……',
|
|
2248
2337
|
resPortraitHD: '세로 9:16 (HD)',
|
|
2249
2338
|
subPositionHints: '자막 위치 힌트',
|
|
2250
2339
|
subPositionHintsPlaceholder: '자막을 화면 하단 1/3에 배치하고 앵커 얼굴을 가리지 않도록 하세요',
|
|
@@ -2263,11 +2352,23 @@ const T = {
|
|
|
2263
2352
|
aStepConcat: '비디오 결합',
|
|
2264
2353
|
systemPrompt: '시스템 프롬프트',
|
|
2265
2354
|
systemPromptPlaceholder: '모델에 대한 추가 지침(스타일, 품질 등). 생성 내용의 주제에는 영향을 미치지 않습니다',
|
|
2355
|
+
apiKeyGetLink: '무료로 API Key 받기',
|
|
2356
|
+
apiKeyGuideLink: '설정 가이드',
|
|
2357
|
+
apiKeyDemoLink: '설정하기 싫으세요? 온라인 체험',
|
|
2358
|
+
formTipTips: '🎯 프롬프트 팁',
|
|
2359
|
+
formTipModels: '🧠 모델 비교',
|
|
2360
|
+
exampleLinkSimple: '📋 심플 영상 프롬프트 예시',
|
|
2361
|
+
exampleLinkCreative: '📋 크리에이티브 영상 프롬프트 예시',
|
|
2362
|
+
exampleLinkManuscript: '📋 기사 영상 예시',
|
|
2363
|
+
exampleLinkAnchor: '📋 디지털 앵커 예시',
|
|
2364
|
+
waitTip: '💡 기다리는 동안 Agnes로 만든 작품을 구경해 보세요',
|
|
2365
|
+
doneTipTiktok: '📈 SNS 활용법',
|
|
2366
|
+
doneTipMore: '🎬 더 많은 창작 아이디어',
|
|
2266
2367
|
},
|
|
2267
2368
|
ms: {
|
|
2268
2369
|
subtitle: 'Video AI, Satu Klik',
|
|
2269
2370
|
apiKeyTitle: 'API Key', apiKeyNotConfigured: 'Belum', apiKeyConfigured: 'Sudah',
|
|
2270
|
-
apiKeyPlaceholder: 'Masukkan Agnes API Key', apiKeyMasked: 'Sudah (●●●)', save: 'Simpan',
|
|
2371
|
+
apiKeyPlaceholder: 'Masukkan Agnes API Key (dapatkan percuma di platform.agnes-ai.com)', apiKeyMasked: 'Sudah (●●●)', save: 'Simpan',
|
|
2271
2372
|
clear: 'Padam', clearConfirm: 'Pasti mahu padam API Key?', apiKeyFromEnv: 'Sudah (env)',
|
|
2272
2373
|
clearEnvHint: 'API Key ditetapkan melalui pembolehubah AGNES_API_KEY dan tidak boleh dipadam dari UI.',
|
|
2273
2374
|
modelTitle: 'Pemilihan Model', modelHint: 'Pilih model Agnes yang digunakan untuk penjanaan. Model imej dan video belum dibuka; nilai lalai kekal.',
|
|
@@ -2289,7 +2390,7 @@ const T = {
|
|
|
2289
2390
|
ttSimple: 'Imej & Video', ttCreative: 'Video Kreatif', ttManuscript: 'Video Artikel',
|
|
2290
2391
|
subModeLabel: 'Jenis', subModeVideo: '🎬 Video', subModeImage: '🖼️ Imej',
|
|
2291
2392
|
simpleSettings: 'Tetapan Ringkas', creativeSettings: 'Tetapan Kreatif', manuscriptSettings: 'Tetapan Artikel',
|
|
2292
|
-
promptLabel: 'Penerangan Video', promptPlaceholder: '
|
|
2393
|
+
promptLabel: 'Penerangan Video', promptPlaceholder: 'Seekor kucing oren tidur di tepi tingkap selepas hujan, cahaya matahari menyinari bulunya, langsir berayun ditiup angin, 4K realistik',
|
|
2293
2394
|
genMode: 'Mod', modeT2v: 'Teks ke Video', modeI2v: 'Imej ke Video', modeKeyframesSimple: 'Bingkai Kunci',
|
|
2294
2395
|
duration: 'Tempoh', resolution: 'Resolusi',
|
|
2295
2396
|
resPortrait: 'Potret 9:16', resLandscape: 'Landskap 16:9', resSquare: 'Segi Empat 1:1',
|
|
@@ -2297,7 +2398,7 @@ const T = {
|
|
|
2297
2398
|
chooseImage: 'Pilih Imej', notSelected: 'Tidak dipilih',
|
|
2298
2399
|
advancedSettings: 'Tetapan Lanjutan', optional: 'Pilihan', seedPlaceholder: 'Kosong=rawak', negativePlaceholder: 'Kecualikan elemen',
|
|
2299
2400
|
taskName: 'Nama Tugas', taskNamePlaceholder: 'Pilihan',
|
|
2300
|
-
ideaLabel: 'Idea', ideaPlaceholder: '
|
|
2401
|
+
ideaLabel: 'Idea', ideaPlaceholder: 'Robot menyiram bunga kecil di bandar terbiar, 3 babak: menjumpai anak pokok, membawa air, bunga mekar',
|
|
2301
2402
|
visualStyle: 'Gaya',
|
|
2302
2403
|
requirementDefault: '3 babak, 5 saat setiap satu, kualiti sinematik', styleDefault: 'gaya realistik sinematik',
|
|
2303
2404
|
chainingMode: 'Rantai', modeKeyframes: 'keyframes', modeTi2vid: 'ti2vid', modeNone: 'none',
|
|
@@ -2311,7 +2412,7 @@ const T = {
|
|
|
2311
2412
|
subStrokeColor: 'Warna Garis', subStrokeWidth: 'Lebar Garis', subBgColor: 'Warna Latar',
|
|
2312
2413
|
subStyleMode: 'Mod Gaya', subStyleFixed: 'Tetap', subStyleLLM: 'AI Pintar',
|
|
2313
2414
|
subStyleHints: 'Keutamaan Gaya', subStyleHintsHint: 'Terangkan corak perubahan gaya sarikata. AI akan tetapkan kedudukan, warna dan saiz bagi setiap sarikata.',
|
|
2314
|
-
manuscriptText: 'Teks Artikel', manuscriptPlaceholder: 'Tampal artikel
|
|
2415
|
+
manuscriptText: 'Teks Artikel', manuscriptPlaceholder: 'Tampal artikel, siaran akhbar atau catatan blog. Contoh: pengenalan produk 500 patah perkataan atau catatan perjalanan - sistem akan membahagikannya kepada babak secara automatik',
|
|
2315
2416
|
charCount: 'Aksara',
|
|
2316
2417
|
startGenerate: 'Mula Hasilkan', submitting: 'Menghantar...', taskRunning: 'Berjalan...',
|
|
2317
2418
|
loading: 'Memuat...', noTasks: 'Tiada tugas', loadFailed: 'Gagal memuat',
|
|
@@ -2348,7 +2449,7 @@ const T = {
|
|
|
2348
2449
|
domainSaved: 'Disimpan',
|
|
2349
2450
|
domainSaveFailed: 'Gagal simpan',
|
|
2350
2451
|
ttImage: 'Imej Ringkas', imageSettings: 'Tetapan Imej',
|
|
2351
|
-
imagePrompt: 'Penerangan Imej', imagePromptPlaceholder: '
|
|
2452
|
+
imagePrompt: 'Penerangan Imej', imagePromptPlaceholder: 'Tasik di kaki gunung bersalji, kabus pagi, gunung terpantul di permukaan air, pencahayaan sinematik, orientasi landskap',
|
|
2352
2453
|
imageSize: 'Saiz Imej', refImageHint: 'Pilihan. Muat naik untuk hasilkan variasi.',
|
|
2353
2454
|
imgGenerate: 'Hasilkan Imej', imgComplete: 'Imej dihasilkan!', generating: 'Menghasilkan...', enterImagePrompt: 'Sila masukkan penerangan imej',
|
|
2354
2455
|
anchorSettings: 'Tetapan Penyampai',
|
|
@@ -2357,7 +2458,7 @@ const T = {
|
|
|
2357
2458
|
anchorRefImage: 'Imej Rujukan (Pilihan)',
|
|
2358
2459
|
anchorRefImageHint: 'Pilihan. Muat naik untuk memperhalus penampilan penyampai.',
|
|
2359
2460
|
scriptText: 'Teks Skrip',
|
|
2360
|
-
scriptTextPlaceholder: '
|
|
2461
|
+
scriptTextPlaceholder: 'Selamat datang ke buletin teknologi hari ini. Berita pertama: penjanaan video AI telah memasuki era percuma……',
|
|
2361
2462
|
resPortraitHD: 'Potret 9:16 (HD)',
|
|
2362
2463
|
subPositionHints: 'Petunjuk Kedudukan Sarikata',
|
|
2363
2464
|
subPositionHintsPlaceholder: 'Letakkan sarikata di bahagian bawah skrin, elakkan menutup muka penyampai',
|
|
@@ -2376,11 +2477,23 @@ const T = {
|
|
|
2376
2477
|
aStepConcat: 'Gabung Video',
|
|
2377
2478
|
systemPrompt: 'Arahan Sistem',
|
|
2378
2479
|
systemPromptPlaceholder: 'Arahan tambahan untuk model (cth. gaya, kualiti). Tidak menjejaskan penerangan kandungan utama',
|
|
2480
|
+
apiKeyGetLink: 'Dapatkan API Key percuma',
|
|
2481
|
+
apiKeyGuideLink: 'Panduan persediaan',
|
|
2482
|
+
apiKeyDemoLink: 'Tak mahu sediakan? Cuba dalam talian',
|
|
2483
|
+
formTipTips: '🎯 Tip prompt',
|
|
2484
|
+
formTipModels: '🧠 Perbandingan model',
|
|
2485
|
+
exampleLinkSimple: '📋 Contoh prompt video ringkas',
|
|
2486
|
+
exampleLinkCreative: '📋 Contoh prompt video kreatif',
|
|
2487
|
+
exampleLinkManuscript: '📋 Contoh video artikel',
|
|
2488
|
+
exampleLinkAnchor: '📋 Contoh penyampai digital',
|
|
2489
|
+
waitTip: '💡 Sementara menunggu, lihat hasil karya orang lain dengan Agnes',
|
|
2490
|
+
doneTipTiktok: '📈 Panduan media sosial',
|
|
2491
|
+
doneTipMore: '🎬 Lebih banyak idea kreatif',
|
|
2379
2492
|
},
|
|
2380
2493
|
id: {
|
|
2381
2494
|
subtitle: 'Video AI, Satu Klik',
|
|
2382
2495
|
apiKeyTitle: 'API Key', apiKeyNotConfigured: 'Belum', apiKeyConfigured: 'Sudah',
|
|
2383
|
-
apiKeyPlaceholder: 'Masukkan Agnes API Key', apiKeyMasked: 'Sudah (●●●)', save: 'Simpan',
|
|
2496
|
+
apiKeyPlaceholder: 'Masukkan Agnes API Key (gratis di platform.agnes-ai.com)', apiKeyMasked: 'Sudah (●●●)', save: 'Simpan',
|
|
2384
2497
|
clear: 'Hapus', clearConfirm: 'Yakin ingin menghapus API Key?', apiKeyFromEnv: 'Sudah (env)',
|
|
2385
2498
|
clearEnvHint: 'API Key diatur melalui variabel AGNES_API_KEY dan tidak dapat dihapus dari UI.',
|
|
2386
2499
|
modelTitle: 'Pemilihan Model', modelHint: 'Pilih model Agnes yang digunakan untuk pembuatan. Model gambar dan video belum dibuka; nilai default dipertahankan.',
|
|
@@ -2402,7 +2515,7 @@ const T = {
|
|
|
2402
2515
|
ttSimple: 'Gambar & Video', ttCreative: 'Video Kreatif', ttManuscript: 'Video Artikel',
|
|
2403
2516
|
subModeLabel: 'Jenis', subModeVideo: '🎬 Video', subModeImage: '🖼️ Gambar',
|
|
2404
2517
|
simpleSettings: 'Pengaturan Simpel', creativeSettings: 'Pengaturan Kreatif', manuscriptSettings: 'Pengaturan Artikel',
|
|
2405
|
-
promptLabel: 'Deskripsi Video', promptPlaceholder: '
|
|
2518
|
+
promptLabel: 'Deskripsi Video', promptPlaceholder: 'Seekor kucing oranye tidur di ambang jendela setelah hujan, sinar matahari menembus kaca menyinari bulunya, tirai bergoyang tertiup angin, 4K realistis',
|
|
2406
2519
|
genMode: 'Mode', modeT2v: 'Teks ke Video', modeI2v: 'Gambar ke Video', modeKeyframesSimple: 'Keyframe',
|
|
2407
2520
|
duration: 'Durasi', resolution: 'Resolusi',
|
|
2408
2521
|
resPortrait: 'Potret 9:16', resLandscape: 'Lanskap 16:9', resSquare: 'Persegi 1:1',
|
|
@@ -2410,7 +2523,7 @@ const T = {
|
|
|
2410
2523
|
chooseImage: 'Pilih Gambar', notSelected: 'Belum dipilih',
|
|
2411
2524
|
advancedSettings: 'Pengaturan Lanjutan', optional: 'Opsional', seedPlaceholder: 'Kosong=acak', negativePlaceholder: 'Kecualikan elemen',
|
|
2412
2525
|
taskName: 'Nama Tugas', taskNamePlaceholder: 'Opsional',
|
|
2413
|
-
ideaLabel: 'Ide', ideaPlaceholder: '
|
|
2526
|
+
ideaLabel: 'Ide', ideaPlaceholder: 'Robot menyiram bunga kecil di kota terbengkalai, 3 adegan: menemukan tunas, mengambil air, bunga mekar',
|
|
2414
2527
|
visualStyle: 'Gaya',
|
|
2415
2528
|
requirementDefault: '3 adegan, masing-masing 5 detik, kualitas sinematik', styleDefault: 'gaya realistis sinematik',
|
|
2416
2529
|
chainingMode: 'Rantai', modeKeyframes: 'keyframes', modeTi2vid: 'ti2vid', modeNone: 'none',
|
|
@@ -2423,7 +2536,7 @@ const T = {
|
|
|
2423
2536
|
subStrokeColor: 'Warna Garis', subStrokeWidth: 'Lebar Garis', subBgColor: 'Warna Latar',
|
|
2424
2537
|
subStyleMode: 'Mode Gaya', subStyleFixed: 'Tetap', subStyleLLM: 'AI Pintar',
|
|
2425
2538
|
subStyleHints: 'Preferensi Gaya', subStyleHintsHint: 'Jelaskan pola perubahan gaya subtitle. AI akan menetapkan posisi, warna, dan ukuran untuk setiap subtitle.',
|
|
2426
|
-
manuscriptText: 'Teks Artikel', manuscriptPlaceholder: 'Tempel artikel
|
|
2539
|
+
manuscriptText: 'Teks Artikel', manuscriptPlaceholder: 'Tempel artikel, siaran pers atau posting blog. Contoh: pengenalan produk 500 kata atau catatan perjalanan - sistem akan memecahnya menjadi adegan secara otomatis',
|
|
2427
2540
|
charCount: 'Karakter',
|
|
2428
2541
|
startGenerate: 'Mulai Hasilkan', submitting: 'Mengirim...', taskRunning: 'Berjalan...',
|
|
2429
2542
|
loading: 'Memuat...', noTasks: 'Tidak ada tugas', loadFailed: 'Gagal memuat',
|
|
@@ -2460,7 +2573,7 @@ const T = {
|
|
|
2460
2573
|
domainSaved: 'Disimpan',
|
|
2461
2574
|
domainSaveFailed: 'Gagal simpan',
|
|
2462
2575
|
ttImage: 'Gambar Sederhana', imageSettings: 'Pengaturan Gambar',
|
|
2463
|
-
imagePrompt: 'Deskripsi Gambar', imagePromptPlaceholder: '
|
|
2576
|
+
imagePrompt: 'Deskripsi Gambar', imagePromptPlaceholder: 'Danau di kaki gunung bersalju, kabut pagi, gunung terpantul di permukaan air, pencahayaan sinematik, komposisi horizontal',
|
|
2464
2577
|
imageSize: 'Ukuran Gambar', refImageHint: 'Opsional. Unggah untuk menghasilkan variasi.',
|
|
2465
2578
|
imgGenerate: 'Hasilkan Gambar', imgComplete: 'Gambar selesai!', generating: 'Sedang menghasilkan...', enterImagePrompt: 'Silakan masukkan deskripsi gambar',
|
|
2466
2579
|
anchorSettings: 'Pengaturan Pembawa Acara',
|
|
@@ -2469,7 +2582,7 @@ const T = {
|
|
|
2469
2582
|
anchorRefImage: 'Gambar Referensi (Opsional)',
|
|
2470
2583
|
anchorRefImageHint: 'Opsional. Unggah untuk menyesuaikan penampilan pembawa acara.',
|
|
2471
2584
|
scriptText: 'Teks Naskah',
|
|
2472
|
-
scriptTextPlaceholder: '
|
|
2585
|
+
scriptTextPlaceholder: 'Selamat datang di buletin teknologi hari ini. Berita pertama: pembuatan video AI telah memasuki era gratis……',
|
|
2473
2586
|
resPortraitHD: 'Potret 9:16 (HD)',
|
|
2474
2587
|
subPositionHints: 'Petunjuk Posisi Subtitle',
|
|
2475
2588
|
subPositionHintsPlaceholder: 'Tempatkan subtitle di sepertiga bawah layar, hindari menutupi wajah pembawa acara',
|
|
@@ -2488,11 +2601,23 @@ const T = {
|
|
|
2488
2601
|
aStepConcat: 'Gabung Video',
|
|
2489
2602
|
systemPrompt: 'Prompt Sistem',
|
|
2490
2603
|
systemPromptPlaceholder: 'Instruksi tambahan untuk model (mis. gaya, kualitas). Tidak mempengaruhi subjek deskripsi konten',
|
|
2604
|
+
apiKeyGetLink: 'Dapatkan API Key gratis',
|
|
2605
|
+
apiKeyGuideLink: 'Panduan konfigurasi',
|
|
2606
|
+
apiKeyDemoLink: 'Tidak mau konfigurasi? Coba online',
|
|
2607
|
+
formTipTips: '🎯 Tips prompt',
|
|
2608
|
+
formTipModels: '🧠 Perbandingan model',
|
|
2609
|
+
exampleLinkSimple: '📋 Contoh prompt video sederhana',
|
|
2610
|
+
exampleLinkCreative: '📋 Contoh prompt video kreatif',
|
|
2611
|
+
exampleLinkManuscript: '📋 Contoh video artikel',
|
|
2612
|
+
exampleLinkAnchor: '📋 Contoh pembawa acara digital',
|
|
2613
|
+
waitTip: '💡 Sambil menunggu, lihat karya orang lain dengan Agnes',
|
|
2614
|
+
doneTipTiktok: '📈 Panduan media sosial',
|
|
2615
|
+
doneTipMore: '🎬 Lebih banyak ide kreatif',
|
|
2491
2616
|
},
|
|
2492
2617
|
de: {
|
|
2493
2618
|
subtitle: 'KI-Video, ein Klick',
|
|
2494
2619
|
apiKeyTitle: 'API-Key', apiKeyNotConfigured: 'Nicht konfiguriert', apiKeyConfigured: 'Konfiguriert',
|
|
2495
|
-
apiKeyPlaceholder: 'Agnes API
|
|
2620
|
+
apiKeyPlaceholder: 'Agnes API Key eingeben (kostenlos auf platform.agnes-ai.com)', apiKeyMasked: 'Konfiguriert (●●●)', save: 'Speichern',
|
|
2496
2621
|
clear: 'Löschen', clearConfirm: 'API-Key wirklich löschen?', apiKeyFromEnv: 'Konfiguriert (env)',
|
|
2497
2622
|
clearEnvHint: 'Der API-Key ist über die Umgebungsvariable AGNES_API_KEY gesetzt und kann nicht aus der UI gelöscht werden.',
|
|
2498
2623
|
modelTitle: 'Modellauswahl', modelHint: 'Wählen Sie die für die Generierung verwendeten Agnes-Modelle. Bild- und Video-Modelle sind noch nicht geöffnet; ihre Standardwerte bleiben erhalten.',
|
|
@@ -2514,7 +2639,7 @@ const T = {
|
|
|
2514
2639
|
ttSimple: 'Bild & Video', ttCreative: 'Kreatives Video', ttManuscript: 'Artikel-Video',
|
|
2515
2640
|
subModeLabel: 'Typ', subModeVideo: '🎬 Video', subModeImage: '🖼️ Bild',
|
|
2516
2641
|
simpleSettings: 'Einfache Einstellungen', creativeSettings: 'Kreative Einstellungen', manuscriptSettings: 'Artikel-Einstellungen',
|
|
2517
|
-
promptLabel: 'Videobeschreibung', promptPlaceholder: '
|
|
2642
|
+
promptLabel: 'Videobeschreibung', promptPlaceholder: 'Eine orange Katze döst am Fensterbrett nach dem Regen, Sonnenlicht fällt durchs Glas auf ihr Fell, der Vorhang weht im Wind, 4K fotorealistisch',
|
|
2518
2643
|
genMode: 'Modus', modeT2v: 'Text zu Video', modeI2v: 'Bild zu Video', modeKeyframesSimple: 'Keyframes',
|
|
2519
2644
|
duration: 'Dauer', resolution: 'Auflösung',
|
|
2520
2645
|
resPortrait: 'Hochformat 9:16', resLandscape: 'Querformat 16:9', resSquare: 'Quadrat 1:1',
|
|
@@ -2522,7 +2647,7 @@ const T = {
|
|
|
2522
2647
|
chooseImage: 'Bild auswählen', notSelected: 'Nicht ausgewählt',
|
|
2523
2648
|
advancedSettings: 'Erweiterte Einstellungen', optional: 'Optional', seedPlaceholder: 'Leer lassen für Zufall', negativePlaceholder: 'Auszuschließende Elemente',
|
|
2524
2649
|
taskName: 'Aufgabenname', taskNamePlaceholder: 'Optional, automatisch generiert wenn leer',
|
|
2525
|
-
ideaLabel: 'Idee', ideaPlaceholder: '
|
|
2650
|
+
ideaLabel: 'Idee', ideaPlaceholder: 'Ein Roboter gießt eine kleine Blume in einer verlassenen Stadt, 3 Szenen: Keimling entdecken, Wasser holen, Blume blüht',
|
|
2526
2651
|
visualStyle: 'Visueller Stil',
|
|
2527
2652
|
requirementDefault: '3 Szenen, je 5 Sekunden, Kinoqualität', styleDefault: 'Kinorealistischer Stil',
|
|
2528
2653
|
chainingMode: 'Verkettungsmodus', modeKeyframes: 'keyframes (empfohlen)', modeTi2vid: 'ti2vid (Übergang)', modeNone: 'none (unabhängig)',
|
|
@@ -2536,7 +2661,7 @@ const T = {
|
|
|
2536
2661
|
subStrokeColor: 'Randfarbe', subStrokeWidth: 'Randbreite', subBgColor: 'Hintergrundfarbe',
|
|
2537
2662
|
subStyleMode: 'Stilmodus', subStyleFixed: 'Fest', subStyleLLM: 'KI Smart',
|
|
2538
2663
|
subStyleHints: 'Stileinstellungen', subStyleHintsHint: 'Beschreiben, wie Untertitel variieren sollen. KI weist jedem Untertitel Position, Farbe und Größe zu.',
|
|
2539
|
-
manuscriptText: 'Artikeltext', manuscriptPlaceholder: 'Artikel,
|
|
2664
|
+
manuscriptText: 'Artikeltext', manuscriptPlaceholder: 'Artikel, Pressemitteilung oder Blogbeitrag einfügen. Beispiel: eine Produktvorstellung mit 500 Wörtern oder ein Reisebericht - das System teilt den Text automatisch in Szenen',
|
|
2540
2665
|
charCount: 'Zeichen',
|
|
2541
2666
|
startGenerate: 'Generierung starten', submitting: 'Senden...', taskRunning: 'Aufgabe läuft...',
|
|
2542
2667
|
loading: 'Laden...', noTasks: 'Keine Aufgaben', loadFailed: 'Laden fehlgeschlagen',
|
|
@@ -2578,7 +2703,7 @@ const T = {
|
|
|
2578
2703
|
domainSaved: 'Gespeichert',
|
|
2579
2704
|
domainSaveFailed: 'Speichern fehlgeschlagen',
|
|
2580
2705
|
ttImage: 'Einfaches Bild', imageSettings: 'Bildeinstellungen',
|
|
2581
|
-
imagePrompt: 'Bildbeschreibung', imagePromptPlaceholder: '
|
|
2706
|
+
imagePrompt: 'Bildbeschreibung', imagePromptPlaceholder: 'Ein See am Fuß verschneiter Berge, Morgennebel, Berge spiegeln sich im Wasser, filmisches Licht, Querformat',
|
|
2582
2707
|
imageSize: 'Bildgröße', refImageHint: 'Optional. Hochladen für Varianten; leer lassen für reine KI-Generierung.',
|
|
2583
2708
|
imgGenerate: 'Bild generieren', imgComplete: 'Bild generiert!', generating: 'Generierung...', enterImagePrompt: 'Bildbeschreibung eingeben',
|
|
2584
2709
|
anchorSettings: 'Digitaler-Mensch-Einstellungen',
|
|
@@ -2587,7 +2712,7 @@ const T = {
|
|
|
2587
2712
|
anchorRefImage: 'Referenzbild (Optional)',
|
|
2588
2713
|
anchorRefImageHint: 'Optional. Hochladen zur Feinabstimmung; leer lassen für reine KI-Generierung.',
|
|
2589
2714
|
scriptText: 'Skripttext',
|
|
2590
|
-
scriptTextPlaceholder: '
|
|
2715
|
+
scriptTextPlaceholder: 'Willkommen zum Technik-Nachrichtenüberblick. Erste Meldung: KI-Videogenerierung ist jetzt kostenlos...',
|
|
2591
2716
|
resPortraitHD: 'Hochformat 9:16 (HD)',
|
|
2592
2717
|
subPositionHints: 'Hinweise zur Untertitelposition',
|
|
2593
2718
|
subPositionHintsPlaceholder: 'Untertitel im unteren Drittel platzieren, Gesicht des Sprechers nicht verdecken',
|
|
@@ -2606,11 +2731,23 @@ const T = {
|
|
|
2606
2731
|
aStepConcat: 'Video-Zusammenfügung',
|
|
2607
2732
|
systemPrompt: 'System-Prompt',
|
|
2608
2733
|
systemPromptPlaceholder: 'Zusätzliche Anweisungen für das Modell (z.B. Stil, Qualität). Beeinflusst nicht die Inhaltsbeschreibung',
|
|
2734
|
+
apiKeyGetLink: 'API Key kostenlos erhalten',
|
|
2735
|
+
apiKeyGuideLink: 'Einrichtungsanleitung',
|
|
2736
|
+
apiKeyDemoLink: 'Keine Lust auf Einrichtung? Online testen',
|
|
2737
|
+
formTipTips: '🎯 Prompt-Tipps',
|
|
2738
|
+
formTipModels: '🧠 Modellvergleich',
|
|
2739
|
+
exampleLinkSimple: '📋 Einfache Video-Prompt-Beispiele',
|
|
2740
|
+
exampleLinkCreative: '📋 Kreative Video-Prompt-Beispiele',
|
|
2741
|
+
exampleLinkManuscript: '📋 Artikel-Video-Beispiele',
|
|
2742
|
+
exampleLinkAnchor: '📋 Beispiele für digitalen Moderator',
|
|
2743
|
+
waitTip: '💡 Schauen Sie während des Wartens, was andere mit Agnes erstellen',
|
|
2744
|
+
doneTipTiktok: '📈 Social-Media-Tipps',
|
|
2745
|
+
doneTipMore: '🎬 Weitere Ideen',
|
|
2609
2746
|
},
|
|
2610
2747
|
fr: {
|
|
2611
2748
|
subtitle: 'Vidéo IA, un clic',
|
|
2612
2749
|
apiKeyTitle: 'Clé API', apiKeyNotConfigured: 'Non configuré', apiKeyConfigured: 'Configuré',
|
|
2613
|
-
apiKeyPlaceholder: '
|
|
2750
|
+
apiKeyPlaceholder: 'Saisissez votre Agnes API Key (gratuit sur platform.agnes-ai.com)', apiKeyMasked: 'Configuré (●●●)', save: 'Enregistrer',
|
|
2614
2751
|
clear: 'Effacer', clearConfirm: 'Voulez-vous vraiment supprimer la clé API ?', apiKeyFromEnv: 'Configuré (env)',
|
|
2615
2752
|
clearEnvHint: 'La clé API est définie via la variable AGNES_API_KEY et ne peut pas être supprimée depuis l\'interface.',
|
|
2616
2753
|
modelTitle: 'Sélection du modèle', modelHint: 'Choisissez les modèles Agnes utilisés pour la génération. Les modèles image et vidéo ne sont pas encore ouverts ; leurs valeurs par défaut sont conservées.',
|
|
@@ -2632,7 +2769,7 @@ const T = {
|
|
|
2632
2769
|
ttSimple: 'Image & Vidéo', ttCreative: 'Vidéo créative', ttManuscript: 'Vidéo article',
|
|
2633
2770
|
subModeLabel: 'Type', subModeVideo: '🎬 Vidéo', subModeImage: '🖼️ Image',
|
|
2634
2771
|
simpleSettings: 'Paramètres simples', creativeSettings: 'Paramètres créatifs', manuscriptSettings: 'Paramètres article',
|
|
2635
|
-
promptLabel: 'Description vidéo', promptPlaceholder: '
|
|
2772
|
+
promptLabel: 'Description vidéo', promptPlaceholder: 'Un chat roux somnole sur le rebord de la fenêtre après la pluie, le soleil traverse la vitre, le rideau bouge dans le vent, 4K photoréaliste',
|
|
2636
2773
|
genMode: 'Mode', modeT2v: 'Texte vers vidéo', modeI2v: 'Image vers vidéo', modeKeyframesSimple: 'Images clés',
|
|
2637
2774
|
duration: 'Durée', resolution: 'Résolution',
|
|
2638
2775
|
resPortrait: 'Portrait 9:16', resLandscape: 'Paysage 16:9', resSquare: 'Carré 1:1',
|
|
@@ -2640,7 +2777,7 @@ const T = {
|
|
|
2640
2777
|
chooseImage: 'Choisir une image', notSelected: 'Non sélectionné',
|
|
2641
2778
|
advancedSettings: 'Paramètres avancés', optional: 'Optionnel', seedPlaceholder: 'Laisser vide = aléatoire', negativePlaceholder: 'Éléments à exclure',
|
|
2642
2779
|
taskName: 'Nom de la tâche', taskNamePlaceholder: 'Optionnel, généré automatiquement si vide',
|
|
2643
|
-
ideaLabel: 'Idée', ideaPlaceholder: '
|
|
2780
|
+
ideaLabel: 'Idée', ideaPlaceholder: 'Un robot arrose une petite fleur dans une ville abandonnée, 3 scènes : découvrir la pousse, apporter l\'eau, la fleur s\'épanouit',
|
|
2644
2781
|
visualStyle: 'Style visuel',
|
|
2645
2782
|
requirementDefault: '3 scènes, 5 secondes chacune, qualité cinéma', styleDefault: 'style réaliste cinématographique',
|
|
2646
2783
|
chainingMode: 'Mode de chaînage', modeKeyframes: 'keyframes (recommandé)', modeTi2vid: 'ti2vid (transition)', modeNone: 'none (indépendant)',
|
|
@@ -2654,7 +2791,7 @@ const T = {
|
|
|
2654
2791
|
subStrokeColor: 'Couleur contour', subStrokeWidth: 'Largeur contour', subBgColor: 'Couleur fond',
|
|
2655
2792
|
subStyleMode: 'Mode style', subStyleFixed: 'Fixe', subStyleLLM: 'IA intelligente',
|
|
2656
2793
|
subStyleHints: 'Préférences de style', subStyleHintsHint: 'Décrire comment les sous-titres varient. L\'IA attribue position, couleur et taille à chaque sous-titre.',
|
|
2657
|
-
manuscriptText: 'Texte de l\'article', manuscriptPlaceholder: 'Collez votre article,
|
|
2794
|
+
manuscriptText: 'Texte de l\'article', manuscriptPlaceholder: 'Collez votre article, communiqué de presse ou article de blog. Exemple : une présentation produit de 500 mots ou un récit de voyage - le système découpe automatiquement en scènes',
|
|
2658
2795
|
charCount: 'Caractères',
|
|
2659
2796
|
startGenerate: 'Lancer la génération', submitting: 'Envoi...', taskRunning: 'Tâche en cours...',
|
|
2660
2797
|
loading: 'Chargement...', noTasks: 'Aucune tâche', loadFailed: 'Échec du chargement',
|
|
@@ -2696,7 +2833,7 @@ const T = {
|
|
|
2696
2833
|
domainSaved: 'Enregistré',
|
|
2697
2834
|
domainSaveFailed: 'Échec de l\'enregistrement',
|
|
2698
2835
|
ttImage: 'Image simple', imageSettings: 'Paramètres image',
|
|
2699
|
-
imagePrompt: 'Description image', imagePromptPlaceholder: '
|
|
2836
|
+
imagePrompt: 'Description image', imagePromptPlaceholder: 'Un lac au pied des montagnes enneigées, brume du matin, reflet des sommets sur le miroir de l\'eau, lumière cinématique, format paysage',
|
|
2700
2837
|
imageSize: 'Taille image', refImageHint: 'Optionnel. Télécharger pour générer des variations ; laisser vide pour génération IA pure.',
|
|
2701
2838
|
imgGenerate: 'Générer image', imgComplete: 'Image générée !', generating: 'Génération...', enterImagePrompt: 'Veuillez entrer une description d\'image',
|
|
2702
2839
|
anchorSettings: 'Paramètres humain numérique',
|
|
@@ -2705,7 +2842,7 @@ const T = {
|
|
|
2705
2842
|
anchorRefImage: 'Image de référence (Optionnel)',
|
|
2706
2843
|
anchorRefImageHint: 'Optionnel. À télécharger pour affiner l\'apparence ; laisser vide pour génération IA pure.',
|
|
2707
2844
|
scriptText: 'Texte du script',
|
|
2708
|
-
scriptTextPlaceholder: '
|
|
2845
|
+
scriptTextPlaceholder: 'Bienvenue au bulletin techno du jour. Première nouvelle : la génération de vidéo IA est entrée dans l\'ère du gratuit……',
|
|
2709
2846
|
resPortraitHD: 'Portrait 9:16 (HD)',
|
|
2710
2847
|
subPositionHints: 'Indices position sous-titres',
|
|
2711
2848
|
subPositionHintsPlaceholder: 'Placer les sous-titres dans le tiers inférieur, ne pas couvrir le visage du présentateur',
|
|
@@ -2724,11 +2861,23 @@ const T = {
|
|
|
2724
2861
|
aStepConcat: 'Concaténation vidéo',
|
|
2725
2862
|
systemPrompt: 'Prompt système',
|
|
2726
2863
|
systemPromptPlaceholder: 'Instructions supplémentaires pour le modèle (ex. style, qualité). N\'affecte pas la description du contenu',
|
|
2864
|
+
apiKeyGetLink: 'Obtenir un API Key gratuit',
|
|
2865
|
+
apiKeyGuideLink: 'Guide de configuration',
|
|
2866
|
+
apiKeyDemoLink: 'Pas envie de configurer ? Essayez en ligne',
|
|
2867
|
+
formTipTips: '🎯 Astuces de prompt',
|
|
2868
|
+
formTipModels: '🧠 Comparaison des modèles',
|
|
2869
|
+
exampleLinkSimple: '📋 Exemples de prompts vidéo simple',
|
|
2870
|
+
exampleLinkCreative: '📋 Exemples de prompts vidéo créative',
|
|
2871
|
+
exampleLinkManuscript: '📋 Exemples de vidéo article',
|
|
2872
|
+
exampleLinkAnchor: '📋 Exemples de présentateur numérique',
|
|
2873
|
+
waitTip: '💡 Pendant l\'attente, découvrez ce que les autres créent avec Agnes',
|
|
2874
|
+
doneTipTiktok: '📈 Astuces réseaux sociaux',
|
|
2875
|
+
doneTipMore: '🎬 Plus d\'idées de création',
|
|
2727
2876
|
},
|
|
2728
2877
|
nl: {
|
|
2729
2878
|
subtitle: 'AI-video, één klik',
|
|
2730
2879
|
apiKeyTitle: 'API-sleutel', apiKeyNotConfigured: 'Niet geconfigureerd', apiKeyConfigured: 'Geconfigureerd',
|
|
2731
|
-
apiKeyPlaceholder: 'Voer Agnes API
|
|
2880
|
+
apiKeyPlaceholder: 'Voer uw Agnes API Key in (gratis op platform.agnes-ai.com)', apiKeyMasked: 'Geconfigureerd (●●●)', save: 'Opslaan',
|
|
2732
2881
|
clear: 'Wissen', clearConfirm: 'Weet u zeker dat u de API-sleutel wilt wissen?', apiKeyFromEnv: 'Geconfigureerd (env)',
|
|
2733
2882
|
clearEnvHint: 'De API-sleutel is ingesteld via omgevingsvariabele AGNES_API_KEY en kan niet uit de UI worden gewist.',
|
|
2734
2883
|
modelTitle: 'Modelselectie', modelHint: 'Kies de Agnes-modellen die voor generatie worden gebruikt. Beeld- en videomodellen zijn nog niet geopend; hun standaardwaarden blijven behouden.',
|
|
@@ -2750,7 +2899,7 @@ const T = {
|
|
|
2750
2899
|
ttSimple: 'Afbeelding & Video', ttCreative: 'Creatieve video', ttManuscript: 'Artikelvideo',
|
|
2751
2900
|
subModeLabel: 'Type', subModeVideo: '🎬 Video', subModeImage: '🖼️ Afbeelding',
|
|
2752
2901
|
simpleSettings: 'Eenvoudige instellingen', creativeSettings: 'Creatieve instellingen', manuscriptSettings: 'Artikelinstellingen',
|
|
2753
|
-
promptLabel: 'Videobeschrijving', promptPlaceholder: '
|
|
2902
|
+
promptLabel: 'Videobeschrijving', promptPlaceholder: 'Een oranje kat doet een dutje op de vensterbank na de regen, zonlicht valt door het glas, de gordijnen waaien in de wind, 4K fotorealistisch',
|
|
2754
2903
|
genMode: 'Modus', modeT2v: 'Tekst naar video', modeI2v: 'Afbeelding naar video', modeKeyframesSimple: 'Keyframes',
|
|
2755
2904
|
duration: 'Duur', resolution: 'Resolutie',
|
|
2756
2905
|
resPortrait: 'Portret 9:16', resLandscape: 'Liggend 16:9', resSquare: 'Vierkant 1:1',
|
|
@@ -2758,7 +2907,7 @@ const T = {
|
|
|
2758
2907
|
chooseImage: 'Kies afbeelding', notSelected: 'Niet geselecteerd',
|
|
2759
2908
|
advancedSettings: 'Geavanceerde instellingen', optional: 'Optioneel', seedPlaceholder: 'Leeg laten voor willekeurig', negativePlaceholder: 'Uit te sluiten elementen',
|
|
2760
2909
|
taskName: 'Taaknaam', taskNamePlaceholder: 'Optioneel, automatisch gegenereerd indien leeg',
|
|
2761
|
-
ideaLabel: 'Idee', ideaPlaceholder: '
|
|
2910
|
+
ideaLabel: 'Idee', ideaPlaceholder: 'Een robot geeft water aan een klein bloemetje in een verlaten stad, 3 scènes: zaailing ontdekken, water halen, bloem bloeit',
|
|
2762
2911
|
visualStyle: 'Visuele stijl',
|
|
2763
2912
|
requirementDefault: '3 scènes, elk 5 seconden, filmkwaliteit', styleDefault: 'filmrealistische stijl',
|
|
2764
2913
|
chainingMode: 'Koppelingsmodus', modeKeyframes: 'keyframes (aanbevolen)', modeTi2vid: 'ti2vid (overgang)', modeNone: 'none (onafhankelijk)',
|
|
@@ -2772,7 +2921,7 @@ const T = {
|
|
|
2772
2921
|
subStrokeColor: 'Randkleur', subStrokeWidth: 'Randbreedte', subBgColor: 'Achtergrondkleur',
|
|
2773
2922
|
subStyleMode: 'Stijlmodus', subStyleFixed: 'Vast', subStyleLLM: 'AI Slim',
|
|
2774
2923
|
subStyleHints: 'Stijlvoorkeuren', subStyleHintsHint: 'Beschrijf hoe ondertitels moeten variëren. AI kent positie, kleur en grootte toe per ondertitel.',
|
|
2775
|
-
manuscriptText: 'Artikeltekst', manuscriptPlaceholder: 'Plak uw artikel,
|
|
2924
|
+
manuscriptText: 'Artikeltekst', manuscriptPlaceholder: 'Plak uw artikel, persbericht of blogpost. Bijvoorbeeld: een productintroductie van 500 woorden of een reisverslag - het systeem splitst automatisch in scènes',
|
|
2776
2925
|
charCount: 'Tekens',
|
|
2777
2926
|
startGenerate: 'Generatie starten', submitting: 'Verzenden...', taskRunning: 'Taak bezig...',
|
|
2778
2927
|
loading: 'Laden...', noTasks: 'Geen taken', loadFailed: 'Laden mislukt',
|
|
@@ -2814,7 +2963,7 @@ const T = {
|
|
|
2814
2963
|
domainSaved: 'Opgeslagen',
|
|
2815
2964
|
domainSaveFailed: 'Opslaan mislukt',
|
|
2816
2965
|
ttImage: 'Eenvoudige afbeelding', imageSettings: 'Afbeeldingsinstellingen',
|
|
2817
|
-
imagePrompt: 'Afbeeldingsbeschrijving', imagePromptPlaceholder: '
|
|
2966
|
+
imagePrompt: 'Afbeeldingsbeschrijving', imagePromptPlaceholder: 'Een meer aan de voet van besneeuwde bergen, ochtendmist, bergen weerspiegeld in het water, filmisch licht, liggend formaat',
|
|
2818
2967
|
imageSize: 'Afbeeldingsgrootte', refImageHint: 'Optioneel. Uploaden voor variaties; leeg laten voor pure AI-generatie.',
|
|
2819
2968
|
imgGenerate: 'Afbeelding genereren', imgComplete: 'Afbeelding gegenereerd!', generating: 'Genereren...', enterImagePrompt: 'Voer een afbeeldingsbeschrijving in',
|
|
2820
2969
|
anchorSettings: 'Instellingen digitale mens',
|
|
@@ -2823,7 +2972,7 @@ const T = {
|
|
|
2823
2972
|
anchorRefImage: 'Referentieafbeelding (Optioneel)',
|
|
2824
2973
|
anchorRefImageHint: 'Optioneel. Uploaden om het uiterlijk te verfijnen; leeg laten voor pure AI-generatie.',
|
|
2825
2974
|
scriptText: 'Scripttekst',
|
|
2826
|
-
scriptTextPlaceholder: '
|
|
2975
|
+
scriptTextPlaceholder: 'Welkom bij het technieuwsbulletin van vandaag. Eerste bericht: AI-videogeneratie is het gratis tijdperk binnengegaan……',
|
|
2827
2976
|
resPortraitHD: 'Portret 9:16 (HD)',
|
|
2828
2977
|
subPositionHints: 'Tips voor ondertitelpositie',
|
|
2829
2978
|
subPositionHintsPlaceholder: 'Plaats ondertitels in het onderste derde deel, bedek het gezicht van de presentator niet',
|
|
@@ -2842,11 +2991,23 @@ const T = {
|
|
|
2842
2991
|
aStepConcat: 'Video samenvoegen',
|
|
2843
2992
|
systemPrompt: 'Systeemprompt',
|
|
2844
2993
|
systemPromptPlaceholder: 'Extra instructies voor het model (bijv. stijl, kwaliteit). Heeft geen invloed op de inhoudsbeschrijving',
|
|
2994
|
+
apiKeyGetLink: 'Gratis API Key aanvragen',
|
|
2995
|
+
apiKeyGuideLink: 'Configuratiegids',
|
|
2996
|
+
apiKeyDemoLink: 'Geen zin om te configureren? Probeer online',
|
|
2997
|
+
formTipTips: '🎯 Prompt-tips',
|
|
2998
|
+
formTipModels: '🧠 Modelvergelijking',
|
|
2999
|
+
exampleLinkSimple: '📋 Voorbeelden van eenvoudige video-prompts',
|
|
3000
|
+
exampleLinkCreative: '📋 Voorbeelden van creatieve video-prompts',
|
|
3001
|
+
exampleLinkManuscript: '📋 Voorbeelden van artikelvideo',
|
|
3002
|
+
exampleLinkAnchor: '📋 Voorbeelden van digitale presentator',
|
|
3003
|
+
waitTip: '💡 Bekijk ondertussen wat anderen met Agnes maken',
|
|
3004
|
+
doneTipTiktok: '📈 Social media tips',
|
|
3005
|
+
doneTipMore: '🎬 Meer creatieve ideeën',
|
|
2845
3006
|
},
|
|
2846
3007
|
es: {
|
|
2847
3008
|
subtitle: 'Video IA, un clic',
|
|
2848
3009
|
apiKeyTitle: 'Clave API', apiKeyNotConfigured: 'No configurado', apiKeyConfigured: 'Configurado',
|
|
2849
|
-
apiKeyPlaceholder: '
|
|
3010
|
+
apiKeyPlaceholder: 'Introduce tu Agnes API Key (gratis en platform.agnes-ai.com)', apiKeyMasked: 'Configurado (●●●)', save: 'Guardar',
|
|
2850
3011
|
clear: 'Eliminar', clearConfirm: '¿Está seguro de eliminar la clave API?', apiKeyFromEnv: 'Configurado (env)',
|
|
2851
3012
|
clearEnvHint: 'La clave API está configurada mediante la variable de entorno AGNES_API_KEY y no se puede eliminar desde la interfaz.',
|
|
2852
3013
|
modelTitle: 'Selección de modelo', modelHint: 'Elija los modelos Agnes utilizados para la generación. Los modelos de imagen y vídeo aún no están abiertos; se conservan sus valores predeterminados.',
|
|
@@ -2868,7 +3029,7 @@ const T = {
|
|
|
2868
3029
|
ttSimple: 'Imagen y Video', ttCreative: 'Video creativo', ttManuscript: 'Video artículo',
|
|
2869
3030
|
subModeLabel: 'Tipo', subModeVideo: '🎬 Video', subModeImage: '🖼️ Imagen',
|
|
2870
3031
|
simpleSettings: 'Configuración simple', creativeSettings: 'Configuración creativa', manuscriptSettings: 'Configuración artículo',
|
|
2871
|
-
promptLabel: 'Descripción del video', promptPlaceholder: '
|
|
3032
|
+
promptLabel: 'Descripción del video', promptPlaceholder: 'Un gato naranja dormita en el alféizar tras la lluvia, la luz del sol atraviesa el cristal, la cortina se mueve con el viento, 4K fotorrealista',
|
|
2872
3033
|
genMode: 'Modo', modeT2v: 'Texto a video', modeI2v: 'Imagen a video', modeKeyframesSimple: 'Fotogramas clave',
|
|
2873
3034
|
duration: 'Duración', resolution: 'Resolución',
|
|
2874
3035
|
resPortrait: 'Vertical 9:16', resLandscape: 'Horizontal 16:9', resSquare: 'Cuadrado 1:1',
|
|
@@ -2876,7 +3037,7 @@ const T = {
|
|
|
2876
3037
|
chooseImage: 'Elegir imagen', notSelected: 'No seleccionado',
|
|
2877
3038
|
advancedSettings: 'Configuración avanzada', optional: 'Opcional', seedPlaceholder: 'Dejar vacío = aleatorio', negativePlaceholder: 'Elementos a excluir',
|
|
2878
3039
|
taskName: 'Nombre de tarea', taskNamePlaceholder: 'Opcional, generado automáticamente si está vacío',
|
|
2879
|
-
ideaLabel: 'Idea', ideaPlaceholder: '
|
|
3040
|
+
ideaLabel: 'Idea', ideaPlaceholder: 'Un robot riega una pequeña flor en una ciudad abandonada, 3 escenas: descubrir el brote, traer agua, la flor florece',
|
|
2880
3041
|
visualStyle: 'Estilo visual',
|
|
2881
3042
|
requirementDefault: '3 escenas, 5 segundos cada una, calidad cinematográfica', styleDefault: 'estilo realista cinematográfico',
|
|
2882
3043
|
chainingMode: 'Modo de encadenamiento', modeKeyframes: 'keyframes (recomendado)', modeTi2vid: 'ti2vid (transición)', modeNone: 'none (independiente)',
|
|
@@ -2890,7 +3051,7 @@ const T = {
|
|
|
2890
3051
|
subStrokeColor: 'Color de borde', subStrokeWidth: 'Ancho de borde', subBgColor: 'Color de fondo',
|
|
2891
3052
|
subStyleMode: 'Modo de estilo', subStyleFixed: 'Fijo', subStyleLLM: 'IA inteligente',
|
|
2892
3053
|
subStyleHints: 'Preferencias de estilo', subStyleHintsHint: 'Describa cómo deben variar los subtítulos. La IA asignará posición, color y tamaño a cada subtítulo.',
|
|
2893
|
-
manuscriptText: 'Texto del artículo', manuscriptPlaceholder: '
|
|
3054
|
+
manuscriptText: 'Texto del artículo', manuscriptPlaceholder: 'Pega tu artículo, nota de prensa o publicación de blog. Ejemplo: una presentación de producto de 500 palabras o un relato de viaje - el sistema lo divide en escenas automáticamente',
|
|
2894
3055
|
charCount: 'Caracteres',
|
|
2895
3056
|
startGenerate: 'Iniciar generación', submitting: 'Enviando...', taskRunning: 'Tarea en curso...',
|
|
2896
3057
|
loading: 'Cargando...', noTasks: 'Sin tareas', loadFailed: 'Error al cargar',
|
|
@@ -2932,7 +3093,7 @@ const T = {
|
|
|
2932
3093
|
domainSaved: 'Guardado',
|
|
2933
3094
|
domainSaveFailed: 'Error al guardar',
|
|
2934
3095
|
ttImage: 'Imagen simple', imageSettings: 'Configuración de imagen',
|
|
2935
|
-
imagePrompt: 'Descripción de imagen', imagePromptPlaceholder: '
|
|
3096
|
+
imagePrompt: 'Descripción de imagen', imagePromptPlaceholder: 'Un lago al pie de montañas nevadas, niebla matinal, montañas reflejadas en el agua, luz cinematográfica, formato horizontal',
|
|
2936
3097
|
imageSize: 'Tamaño de imagen', refImageHint: 'Opcional. Subir para generar variaciones; dejar vacío para generación IA pura.',
|
|
2937
3098
|
imgGenerate: 'Generar imagen', imgComplete: '¡Imagen generada!', generating: 'Generando...', enterImagePrompt: 'Ingrese una descripción de imagen',
|
|
2938
3099
|
anchorSettings: 'Configuración de humano digital',
|
|
@@ -2941,7 +3102,7 @@ const T = {
|
|
|
2941
3102
|
anchorRefImage: 'Imagen de referencia (Opcional)',
|
|
2942
3103
|
anchorRefImageHint: 'Opcional. Subir para afinar la apariencia; dejar vacío para generación IA pura.',
|
|
2943
3104
|
scriptText: 'Texto del guion',
|
|
2944
|
-
scriptTextPlaceholder: '
|
|
3105
|
+
scriptTextPlaceholder: 'Bienvenidos al boletín tecnológico de hoy. Primera noticia: la generación de video con IA ha entrado en la era gratuita……',
|
|
2945
3106
|
resPortraitHD: 'Vertical 9:16 (HD)',
|
|
2946
3107
|
subPositionHints: 'Sugerencias de posición de subtítulos',
|
|
2947
3108
|
subPositionHintsPlaceholder: 'Colocar subtítulos en el tercio inferior, no cubrir el rostro del presentador',
|
|
@@ -2960,11 +3121,23 @@ const T = {
|
|
|
2960
3121
|
aStepConcat: 'Concatenación de video',
|
|
2961
3122
|
systemPrompt: 'Prompt del sistema',
|
|
2962
3123
|
systemPromptPlaceholder: 'Instrucciones adicionales para el modelo (ej. estilo, calidad). No afecta la descripción del contenido',
|
|
3124
|
+
apiKeyGetLink: 'Obtener API Key gratis',
|
|
3125
|
+
apiKeyGuideLink: 'Guía de configuración',
|
|
3126
|
+
apiKeyDemoLink: '¿No quieres configurar? Pruébalo en línea',
|
|
3127
|
+
formTipTips: '🎯 Consejos de prompt',
|
|
3128
|
+
formTipModels: '🧠 Comparación de modelos',
|
|
3129
|
+
exampleLinkSimple: '📋 Ejemplos de prompts de video simple',
|
|
3130
|
+
exampleLinkCreative: '📋 Ejemplos de prompts de video creativo',
|
|
3131
|
+
exampleLinkManuscript: '📋 Ejemplos de video artículo',
|
|
3132
|
+
exampleLinkAnchor: '📋 Ejemplos de presentador digital',
|
|
3133
|
+
waitTip: '💡 Mientras esperas, mira lo que otros crean con Agnes',
|
|
3134
|
+
doneTipTiktok: '📈 Ideas para redes sociales',
|
|
3135
|
+
doneTipMore: '🎬 Más ideas de creación',
|
|
2963
3136
|
},
|
|
2964
3137
|
pt: {
|
|
2965
3138
|
subtitle: 'Vídeo IA, um clique',
|
|
2966
3139
|
apiKeyTitle: 'Chave API', apiKeyNotConfigured: 'Não configurado', apiKeyConfigured: 'Configurado',
|
|
2967
|
-
apiKeyPlaceholder: '
|
|
3140
|
+
apiKeyPlaceholder: 'Digite sua Agnes API Key (grátis em platform.agnes-ai.com)', apiKeyMasked: 'Configurado (●●●)', save: 'Salvar',
|
|
2968
3141
|
clear: 'Limpar', clearConfirm: 'Tem certeza de que deseja remover a chave API?', apiKeyFromEnv: 'Configurado (env)',
|
|
2969
3142
|
clearEnvHint: 'A chave API está definida via variável de ambiente AGNES_API_KEY e não pode ser removida pela interface.',
|
|
2970
3143
|
modelTitle: 'Seleção de modelo', modelHint: 'Escolha os modelos Agnes usados para a geração. Os modelos de imagem e vídeo ainda não estão abertos; seus valores padrão são mantidos.',
|
|
@@ -2986,7 +3159,7 @@ const T = {
|
|
|
2986
3159
|
ttSimple: 'Imagem e Vídeo', ttCreative: 'Vídeo criativo', ttManuscript: 'Vídeo artigo',
|
|
2987
3160
|
subModeLabel: 'Tipo', subModeVideo: '🎬 Vídeo', subModeImage: '🖼️ Imagem',
|
|
2988
3161
|
simpleSettings: 'Configurações simples', creativeSettings: 'Configurações criativas', manuscriptSettings: 'Configurações artigo',
|
|
2989
|
-
promptLabel: 'Descrição do vídeo', promptPlaceholder: '
|
|
3162
|
+
promptLabel: 'Descrição do vídeo', promptPlaceholder: 'Um gato laranja cochila no parapeito da janela depois da chuva, a luz do sol atravessa o vidro, a cortina balança ao vento, 4K fotorrealista',
|
|
2990
3163
|
genMode: 'Modo', modeT2v: 'Texto para vídeo', modeI2v: 'Imagem para vídeo', modeKeyframesSimple: 'Keyframes',
|
|
2991
3164
|
duration: 'Duração', resolution: 'Resolução',
|
|
2992
3165
|
resPortrait: 'Retrato 9:16', resLandscape: 'Paisagem 16:9', resSquare: 'Quadrado 1:1',
|
|
@@ -2994,7 +3167,7 @@ const T = {
|
|
|
2994
3167
|
chooseImage: 'Escolher imagem', notSelected: 'Não selecionado',
|
|
2995
3168
|
advancedSettings: 'Configurações avançadas', optional: 'Opcional', seedPlaceholder: 'Deixar vazio = aleatório', negativePlaceholder: 'Elementos a excluir',
|
|
2996
3169
|
taskName: 'Nome da tarefa', taskNamePlaceholder: 'Opcional, gerado automaticamente se vazio',
|
|
2997
|
-
ideaLabel: 'Ideia', ideaPlaceholder: '
|
|
3170
|
+
ideaLabel: 'Ideia', ideaPlaceholder: 'Um robô rega uma pequena flor em uma cidade abandonada, 3 cenas: descobrir o broto, buscar água, a flor desabrocha',
|
|
2998
3171
|
visualStyle: 'Estilo visual',
|
|
2999
3172
|
requirementDefault: '3 cenas, 5 segundos cada, qualidade cinematográfica', styleDefault: 'estilo realista cinematográfico',
|
|
3000
3173
|
chainingMode: 'Modo de encadeamento', modeKeyframes: 'keyframes (recomendado)', modeTi2vid: 'ti2vid (transição)', modeNone: 'none (independente)',
|
|
@@ -3008,7 +3181,7 @@ const T = {
|
|
|
3008
3181
|
subStrokeColor: 'Cor do contorno', subStrokeWidth: 'Largura do contorno', subBgColor: 'Cor de fundo',
|
|
3009
3182
|
subStyleMode: 'Modo de estilo', subStyleFixed: 'Fixo', subStyleLLM: 'IA inteligente',
|
|
3010
3183
|
subStyleHints: 'Preferências de estilo', subStyleHintsHint: 'Descreva como as legendas devem variar. A IA atribuirá posição, cor e tamanho a cada legenda.',
|
|
3011
|
-
manuscriptText: 'Texto do artigo', manuscriptPlaceholder: 'Cole seu artigo,
|
|
3184
|
+
manuscriptText: 'Texto do artigo', manuscriptPlaceholder: 'Cole seu artigo, comunicado de imprensa ou post de blog. Exemplo: uma apresentação de produto de 500 palavras ou um relato de viagem - o sistema divide em cenas automaticamente',
|
|
3012
3185
|
charCount: 'Caracteres',
|
|
3013
3186
|
startGenerate: 'Iniciar geração', submitting: 'Enviando...', taskRunning: 'Tarefa em andamento...',
|
|
3014
3187
|
loading: 'Carregando...', noTasks: 'Nenhuma tarefa', loadFailed: 'Falha ao carregar',
|
|
@@ -3050,7 +3223,7 @@ const T = {
|
|
|
3050
3223
|
domainSaved: 'Salvo',
|
|
3051
3224
|
domainSaveFailed: 'Falha ao salvar',
|
|
3052
3225
|
ttImage: 'Imagem simples', imageSettings: 'Configurações de imagem',
|
|
3053
|
-
imagePrompt: 'Descrição da imagem', imagePromptPlaceholder: '
|
|
3226
|
+
imagePrompt: 'Descrição da imagem', imagePromptPlaceholder: 'Um lago ao pé de montanhas nevadas, névoa matinal, montanhas refletidas na água, luz cinematográfica, formato paisagem',
|
|
3054
3227
|
imageSize: 'Tamanho da imagem', refImageHint: 'Opcional. Enviar para gerar variações; deixar vazio para geração IA pura.',
|
|
3055
3228
|
imgGenerate: 'Gerar imagem', imgComplete: 'Imagem gerada!', generating: 'Gerando...', enterImagePrompt: 'Insira uma descrição de imagem',
|
|
3056
3229
|
anchorSettings: 'Configurações de humano digital',
|
|
@@ -3059,7 +3232,7 @@ const T = {
|
|
|
3059
3232
|
anchorRefImage: 'Imagem de referência (Opcional)',
|
|
3060
3233
|
anchorRefImageHint: 'Opcional. Enviar para refinar a aparência; deixar vazio para geração IA pura.',
|
|
3061
3234
|
scriptText: 'Texto do roteiro',
|
|
3062
|
-
scriptTextPlaceholder: '
|
|
3235
|
+
scriptTextPlaceholder: 'Bem-vindos ao boletim de tecnologia de hoje. Primeira notícia: a geração de vídeos com IA entrou na era gratuita……',
|
|
3063
3236
|
resPortraitHD: 'Retrato 9:16 (HD)',
|
|
3064
3237
|
subPositionHints: 'Sugestões de posição das legendas',
|
|
3065
3238
|
subPositionHintsPlaceholder: 'Colocar legendas no terço inferior, não cobrir o rosto do apresentador',
|
|
@@ -3078,11 +3251,23 @@ const T = {
|
|
|
3078
3251
|
aStepConcat: 'Concatenação de vídeo',
|
|
3079
3252
|
systemPrompt: 'Prompt do sistema',
|
|
3080
3253
|
systemPromptPlaceholder: 'Instruções adicionais para o modelo (ex. estilo, qualidade). Não afeta a descrição do conteúdo',
|
|
3254
|
+
apiKeyGetLink: 'Obter API Key grátis',
|
|
3255
|
+
apiKeyGuideLink: 'Guia de configuração',
|
|
3256
|
+
apiKeyDemoLink: 'Não quer configurar? Experimente online',
|
|
3257
|
+
formTipTips: '🎯 Dicas de prompt',
|
|
3258
|
+
formTipModels: '🧠 Comparação de modelos',
|
|
3259
|
+
exampleLinkSimple: '📋 Exemplos de prompts de vídeo simples',
|
|
3260
|
+
exampleLinkCreative: '📋 Exemplos de prompts de vídeo criativo',
|
|
3261
|
+
exampleLinkManuscript: '📋 Exemplos de vídeo artigo',
|
|
3262
|
+
exampleLinkAnchor: '📋 Exemplos de apresentador digital',
|
|
3263
|
+
waitTip: '💡 Enquanto espera, veja o que outras pessoas criam com Agnes',
|
|
3264
|
+
doneTipTiktok: '📈 Ideias para redes sociais',
|
|
3265
|
+
doneTipMore: '🎬 Mais ideias de criação',
|
|
3081
3266
|
},
|
|
3082
3267
|
it: {
|
|
3083
3268
|
subtitle: 'Video IA, un clic',
|
|
3084
3269
|
apiKeyTitle: 'Chiave API', apiKeyNotConfigured: 'Non configurato', apiKeyConfigured: 'Configurato',
|
|
3085
|
-
apiKeyPlaceholder: 'Inserisci la
|
|
3270
|
+
apiKeyPlaceholder: 'Inserisci la tua Agnes API Key (gratuita su platform.agnes-ai.com)', apiKeyMasked: 'Configurato (●●●)', save: 'Salva',
|
|
3086
3271
|
clear: 'Cancella', clearConfirm: 'Sei sicuro di voler cancellare la chiave API?', apiKeyFromEnv: 'Configurato (env)',
|
|
3087
3272
|
clearEnvHint: 'La chiave API è impostata tramite la variabile d\'ambiente AGNES_API_KEY e non può essere rimossa dall\'interfaccia.',
|
|
3088
3273
|
modelTitle: 'Selezione modello', modelHint: 'Scegli i modelli Agnes utilizzati per la generazione. I modelli immagine e video non sono ancora aperti; i loro valori predefiniti vengono mantenuti.',
|
|
@@ -3104,7 +3289,7 @@ const T = {
|
|
|
3104
3289
|
ttSimple: 'Immagine e Video', ttCreative: 'Video creativo', ttManuscript: 'Video articolo',
|
|
3105
3290
|
subModeLabel: 'Tipo', subModeVideo: '🎬 Video', subModeImage: '🖼️ Immagine',
|
|
3106
3291
|
simpleSettings: 'Impostazioni semplici', creativeSettings: 'Impostazioni creative', manuscriptSettings: 'Impostazioni articolo',
|
|
3107
|
-
promptLabel: 'Descrizione video', promptPlaceholder: '
|
|
3292
|
+
promptLabel: 'Descrizione video', promptPlaceholder: 'Un gatto arancione sonnecchia sul davanzale dopo la pioggia, la luce del sole filtra dal vetro, la tenda ondeggia al vento, 4K fotorealistico',
|
|
3108
3293
|
genMode: 'Modalità', modeT2v: 'Testo a video', modeI2v: 'Immagine a video', modeKeyframesSimple: 'Keyframe',
|
|
3109
3294
|
duration: 'Durata', resolution: 'Risoluzione',
|
|
3110
3295
|
resPortrait: 'Verticale 9:16', resLandscape: 'Orizzontale 16:9', resSquare: 'Quadrato 1:1',
|
|
@@ -3112,7 +3297,7 @@ const T = {
|
|
|
3112
3297
|
chooseImage: 'Scegli immagine', notSelected: 'Non selezionato',
|
|
3113
3298
|
advancedSettings: 'Impostazioni avanzate', optional: 'Opzionale', seedPlaceholder: 'Lascia vuoto = casuale', negativePlaceholder: 'Elementi da escludere',
|
|
3114
3299
|
taskName: 'Nome task', taskNamePlaceholder: 'Opzionale, generato automaticamente se vuoto',
|
|
3115
|
-
ideaLabel: 'Idea', ideaPlaceholder: '
|
|
3300
|
+
ideaLabel: 'Idea', ideaPlaceholder: 'Un robot innaffia un piccolo fiore in una città abbandonata, 3 scene: scoprire il germoglio, portare l\'acqua, il fiore sboccia',
|
|
3116
3301
|
visualStyle: 'Stile visivo',
|
|
3117
3302
|
requirementDefault: '3 scene, 5 secondi ciascuna, qualità cinematografica', styleDefault: 'stile realistico cinematografico',
|
|
3118
3303
|
chainingMode: 'Modalità concatenamento', modeKeyframes: 'keyframes (consigliato)', modeTi2vid: 'ti2vid (transizione)', modeNone: 'none (indipendente)',
|
|
@@ -3126,7 +3311,7 @@ const T = {
|
|
|
3126
3311
|
subStrokeColor: 'Colore bordo', subStrokeWidth: 'Spessore bordo', subBgColor: 'Colore sfondo',
|
|
3127
3312
|
subStyleMode: 'Modalità stile', subStyleFixed: 'Fisso', subStyleLLM: 'IA smart',
|
|
3128
3313
|
subStyleHints: 'Preferenze stile', subStyleHintsHint: 'Descrivi come i sottotitoli devono variare. L\'IA assegnerà posizione, colore e dimensione a ciascun sottotitolo.',
|
|
3129
|
-
manuscriptText: 'Testo dell\'articolo', manuscriptPlaceholder: 'Incolla il tuo articolo,
|
|
3314
|
+
manuscriptText: 'Testo dell\'articolo', manuscriptPlaceholder: 'Incolla il tuo articolo, comunicato stampa o post del blog. Esempio: una presentazione di prodotto di 500 parole o un racconto di viaggio - il sistema lo divide in scene automaticamente',
|
|
3130
3315
|
charCount: 'Caratteri',
|
|
3131
3316
|
startGenerate: 'Avvia generazione', submitting: 'Invio...', taskRunning: 'Task in corso...',
|
|
3132
3317
|
loading: 'Caricamento...', noTasks: 'Nessun task', loadFailed: 'Caricamento fallito',
|
|
@@ -3168,7 +3353,7 @@ const T = {
|
|
|
3168
3353
|
domainSaved: 'Salvato',
|
|
3169
3354
|
domainSaveFailed: 'Salvataggio fallito',
|
|
3170
3355
|
ttImage: 'Immagine semplice', imageSettings: 'Impostazioni immagine',
|
|
3171
|
-
imagePrompt: 'Descrizione immagine', imagePromptPlaceholder: '
|
|
3356
|
+
imagePrompt: 'Descrizione immagine', imagePromptPlaceholder: 'Un lago ai piedi di montagne innevate, nebbia mattutina, montagne riflesse nell\'acqua, luce cinematografica, formato orizzontale',
|
|
3172
3357
|
imageSize: 'Dimensione immagine', refImageHint: 'Opzionale. Carica per generare varianti; lascia vuoto per generazione IA pura.',
|
|
3173
3358
|
imgGenerate: 'Genera immagine', imgComplete: 'Immagine generata!', generating: 'Generazione...', enterImagePrompt: 'Inserisci una descrizione dell\'immagine',
|
|
3174
3359
|
anchorSettings: 'Impostazioni umano digitale',
|
|
@@ -3177,7 +3362,7 @@ const T = {
|
|
|
3177
3362
|
anchorRefImage: 'Immagine di riferimento (Opzionale)',
|
|
3178
3363
|
anchorRefImageHint: 'Opzionale. Carica per perfezionare l\'aspetto; lascia vuoto per generazione IA pura.',
|
|
3179
3364
|
scriptText: 'Testo della sceneggiatura',
|
|
3180
|
-
scriptTextPlaceholder: '
|
|
3365
|
+
scriptTextPlaceholder: 'Benvenuti al telegiornale tecnologico di oggi. Prima notizia: la generazione video con IA è entrata nell\'era gratuita……',
|
|
3181
3366
|
resPortraitHD: 'Verticale 9:16 (HD)',
|
|
3182
3367
|
subPositionHints: 'Suggerimenti posizione sottotitoli',
|
|
3183
3368
|
subPositionHintsPlaceholder: 'Posiziona i sottotitoli nel terzo inferiore, non coprire il volto del presentatore',
|
|
@@ -3196,6 +3381,18 @@ const T = {
|
|
|
3196
3381
|
aStepConcat: 'Concatenazione video',
|
|
3197
3382
|
systemPrompt: 'Prompt di sistema',
|
|
3198
3383
|
systemPromptPlaceholder: 'Istruzioni aggiuntive per il modello (es. stile, qualità). Non influisce sulla descrizione del contenuto',
|
|
3384
|
+
apiKeyGetLink: 'Ottieni API Key gratis',
|
|
3385
|
+
apiKeyGuideLink: 'Guida alla configurazione',
|
|
3386
|
+
apiKeyDemoLink: 'Non vuoi configurare? Provalo online',
|
|
3387
|
+
formTipTips: '🎯 Consigli sui prompt',
|
|
3388
|
+
formTipModels: '🧠 Confronto modelli',
|
|
3389
|
+
exampleLinkSimple: '📋 Esempi di prompt video semplice',
|
|
3390
|
+
exampleLinkCreative: '📋 Esempi di prompt video creativo',
|
|
3391
|
+
exampleLinkManuscript: '📋 Esempi di video articolo',
|
|
3392
|
+
exampleLinkAnchor: '📋 Esempi di presentatore digitale',
|
|
3393
|
+
waitTip: '💡 Mentre aspetti, guarda cosa creano gli altri con Agnes',
|
|
3394
|
+
doneTipTiktok: '📈 Idee per i social',
|
|
3395
|
+
doneTipMore: '🎬 Altre idee creative',
|
|
3199
3396
|
},
|
|
3200
3397
|
};
|
|
3201
3398
|
|
|
@@ -11,7 +11,7 @@ from fastapi import APIRouter, File, Form, HTTPException, UploadFile
|
|
|
11
11
|
from fastapi.responses import FileResponse
|
|
12
12
|
|
|
13
13
|
from core.api.agnes_image import AgnesImageAPI
|
|
14
|
-
from core.config import get_api_key
|
|
14
|
+
from core.config import API_KEY_MISSING_MSG, get_api_key
|
|
15
15
|
from core.task_manager import TaskManager
|
|
16
16
|
from models.task import SimpleImageTask, StepStatus
|
|
17
17
|
|
|
@@ -38,7 +38,7 @@ async def generate_image(
|
|
|
38
38
|
"""简单图片生成:创建任务 → 直调 Agnes Image API → 保存到任务目录。"""
|
|
39
39
|
api_key = get_api_key()
|
|
40
40
|
if not api_key:
|
|
41
|
-
raise HTTPException(status_code=400, detail=
|
|
41
|
+
raise HTTPException(status_code=400, detail=API_KEY_MISSING_MSG)
|
|
42
42
|
|
|
43
43
|
if len(prompt) > 5000:
|
|
44
44
|
raise HTTPException(status_code=422, detail="prompt 最多 5000 字符")
|
|
@@ -10,7 +10,7 @@ from typing import List, Optional
|
|
|
10
10
|
|
|
11
11
|
from fastapi import APIRouter, File, Form, HTTPException, UploadFile
|
|
12
12
|
|
|
13
|
-
from core.config import DURATION_FRAME_MAP, get_api_key
|
|
13
|
+
from core.config import API_KEY_MISSING_MSG, DURATION_FRAME_MAP, get_api_key
|
|
14
14
|
from core.pipelines.poetry_video import POETRY_SUBTITLE_STYLE
|
|
15
15
|
from core.screenwriter import build_poetry_scene_prompt
|
|
16
16
|
from core.task_manager import TaskManager
|
|
@@ -104,7 +104,7 @@ async def create_simple_task(
|
|
|
104
104
|
"""创建简单视频任务(类型 1)。"""
|
|
105
105
|
api_key = get_api_key()
|
|
106
106
|
if not api_key:
|
|
107
|
-
raise HTTPException(status_code=400, detail=
|
|
107
|
+
raise HTTPException(status_code=400, detail=API_KEY_MISSING_MSG)
|
|
108
108
|
|
|
109
109
|
# P7: 参数校验
|
|
110
110
|
_VALID_MODES = {"t2v", "i2v", "ti2vid", "keyframes"}
|
|
@@ -199,7 +199,7 @@ async def create_creative_task(
|
|
|
199
199
|
"""创建创意长视频任务(类型 2)。"""
|
|
200
200
|
api_key = get_api_key()
|
|
201
201
|
if not api_key:
|
|
202
|
-
raise HTTPException(status_code=400, detail=
|
|
202
|
+
raise HTTPException(status_code=400, detail=API_KEY_MISSING_MSG)
|
|
203
203
|
|
|
204
204
|
# v4.0: 音色与目标语言兼容性校验
|
|
205
205
|
if audio_enabled:
|
|
@@ -310,7 +310,7 @@ async def create_manuscript_task(
|
|
|
310
310
|
"""创建稿件长视频任务(类型 3)。"""
|
|
311
311
|
api_key = get_api_key()
|
|
312
312
|
if not api_key:
|
|
313
|
-
raise HTTPException(status_code=400, detail=
|
|
313
|
+
raise HTTPException(status_code=400, detail=API_KEY_MISSING_MSG)
|
|
314
314
|
|
|
315
315
|
if not manuscript_text.strip():
|
|
316
316
|
raise HTTPException(status_code=400, detail="稿件内容不能为空")
|
|
@@ -385,7 +385,7 @@ async def create_poetry_task(
|
|
|
385
385
|
"""创建诗词视频任务(类型 6)。"""
|
|
386
386
|
api_key = get_api_key()
|
|
387
387
|
if not api_key:
|
|
388
|
-
raise HTTPException(status_code=400, detail=
|
|
388
|
+
raise HTTPException(status_code=400, detail=API_KEY_MISSING_MSG)
|
|
389
389
|
|
|
390
390
|
# v4.0: 音色与目标语言兼容性校验
|
|
391
391
|
if audio_enabled:
|
|
@@ -483,7 +483,7 @@ async def create_anchor_task(
|
|
|
483
483
|
"""创建数字人口播任务(类型 4 / Phase 3)。"""
|
|
484
484
|
api_key = get_api_key()
|
|
485
485
|
if not api_key:
|
|
486
|
-
raise HTTPException(status_code=400, detail=
|
|
486
|
+
raise HTTPException(status_code=400, detail=API_KEY_MISSING_MSG)
|
|
487
487
|
|
|
488
488
|
# v4.0: 音色与稿件文本兼容性校验
|
|
489
489
|
# 数字人口播的稿件由用户直接输入,应以「稿件文本的实际文字体系」为准做脚本级
|
|
@@ -5,7 +5,7 @@ import logging
|
|
|
5
5
|
|
|
6
6
|
from fastapi import APIRouter, HTTPException
|
|
7
7
|
|
|
8
|
-
from core.config import get_api_key
|
|
8
|
+
from core.config import API_KEY_MISSING_MSG, get_api_key
|
|
9
9
|
from core.task_manager import TaskManager
|
|
10
10
|
from models.task import (
|
|
11
11
|
AnchorVideoTask,
|
|
@@ -77,7 +77,7 @@ async def get_task(task_id: str):
|
|
|
77
77
|
async def resume_task(task_id: str):
|
|
78
78
|
api_key = get_api_key()
|
|
79
79
|
if not api_key:
|
|
80
|
-
raise HTTPException(status_code=400, detail=
|
|
80
|
+
raise HTTPException(status_code=400, detail=API_KEY_MISSING_MSG)
|
|
81
81
|
|
|
82
82
|
# 关键段串行化:check 与 insert 之间存在多个 await 让出点,快速重复 resume
|
|
83
83
|
# 会让两次请求都通过 "task not in active_pipelines" 检查并各自启动 pipeline,
|