返回 JoyAI-Echo
common.json
1 {
2 "app": {
3 "brand": "Echo Director",
4 "loading": {
5 "connecting": "Connecting to Echo Director…",
6 "boot": "Loading Echo Director…"
7 },
8 "error": {
9 "title": "Couldn't reach Echo Director",
10 "gatewayHint": "Make sure the gateway is running (`nanobot gateway`) and that this page is open on the same machine."
11 },
12 "notOpen": {
13 "title": "Not Available Yet"
14 },
15 "documentTitle": {
16 "base": "Echo Director",
17 "chat": "{{title}} · Echo Director"
18 },
19 "meta": {
20 "description": "Echo Director web UI — chat with your Echo Director workspace."
21 }
22 },
23 "sidebar": {
24 "collapse": "Collapse sidebar",
25 "toggleTheme": "Toggle theme",
26 "newChat": "New chat",
27 "recent": "Recent",
28 "refreshSessions": "Refresh sessions",
29 "language": {
30 "label": "Language",
31 "ariaLabel": "Change language"
32 }
33 },
34 "chat": {
35 "fallbackTitle": "Chat {{id}}",
36 "loading": "Loading…",
37 "noSessions": "No sessions yet.",
38 "actions": "Chat actions for {{title}}",
39 "delete": "Delete",
40 "newChat": "New chat",
41 "mode": {
42 "autoGenerate": "One-click film",
43 "stepwise": "Shot polish"
44 }
45 },
46 "deleteConfirm": {
47 "title": "Delete “{{title}}”?",
48 "description": "The session file will be removed from disk. This cannot be undone.",
49 "cancel": "Cancel",
50 "confirm": "Delete"
51 },
52 "connection": {
53 "idle": "Idle",
54 "connecting": "Connecting…",
55 "open": "Connected",
56 "reconnecting": "Reconnecting…",
57 "closed": "Disconnected",
58 "error": "Connection error"
59 },
60 "thread": {
61 "loadingConversation": "Loading conversation…",
62 "empty": {
63 "description": "Ask questions, continue local work, or start a new thread."
64 },
65 "header": {
66 "toggleSidebar": "Toggle sidebar"
67 },
68 "composer": {
69 "placeholderThread": "Type your message…",
70 "placeholderHero": "What's on your mind?",
71 "placeholderHeroShort": "Share your creative story — you can upload a favorite image as the first frame to make a short video. The image aspect ratio must match the video.",
72 "placeholderStepwise": "Upload a first-frame image, then share your story idea.",
73 "placeholderStepwiseAuto": "Share your story idea — skip polishing and generate the full film.",
74 "placeholderStepwiseAutoEmpty": "Upload a first-frame image and generate the full film in one click.",
75 "autoGenerate": "One-click generate",
76 "placeholderOpening": "Opening a new chat…",
77 "inputAria": "Message input",
78 "sendHint": "Enter for newline · ↑ to send",
79 "charCount": "{{count}} chars",
80 "send": "Send message",
81 "durationLabel": "Duration · {{sec}}s",
82 "durationPickerAria": "Select video duration",
83 "attachImage": "Attach image",
84 "encoding": "Encoding…",
85 "remove": "Remove attachment",
86 "normalizedSizeHint": "{{orig}} → {{current}} (auto)",
87 "imageRejected": {
88 "unsupported_type": "Unsupported file type",
89 "too_many_images": "Max {{max}} images per message",
90 "magic_mismatch": "File doesn't look like a real image",
91 "decode_failed": "Couldn't decode this image",
92 "too_large": "Image is too large — try a smaller one",
93 "io": "Couldn't read this file"
94 }
95 },
96 "firstFrame": {
97 "uploadAria": "Upload first-frame reference image",
98 "previewAria": "Preview first-frame reference image",
99 "remove": "Remove first-frame reference image",
100 "dropHint": "Drop to upload a first-frame image",
101 "uploadFailed": "First-frame upload failed. Please try again.",
102 "uploadFailedOk": "Got it",
103 "locked": "Cannot be changed",
104 "rejected": {
105 "unsupported_type": "Unsupported image type — use PNG / JPEG / WebP",
106 "decode_failed": "Couldn't process this image — try another"
107 }
108 },
109 "scrollToBottom": "Scroll to bottom"
110 },
111 "message": {
112 "streaming": "streaming",
113 "assistantTyping": "Assistant is typing",
114 "toolSingle": "Using a tool",
115 "toolMany": "Used {{count}} tools",
116 "imageAttachment": "Image attachment"
117 },
118 "lightbox": {
119 "title": "Image preview",
120 "open": "View image",
121 "prev": "Previous image",
122 "next": "Next image",
123 "close": "Close image preview"
124 },
125 "code": {
126 "fallbackLanguage": "code",
127 "copyAria": "Copy code",
128 "copy": "Copy",
129 "copied": "Copied"
130 },
131 "common": {
132 "dismiss": "Dismiss"
133 },
134 "errors": {
135 "messageTooBig": {
136 "title": "Message too large",
137 "body": "The server rejected your last message because it exceeded the size limit. Remove some images or try smaller files, then send again."
138 }
139 },
140 "login": {
141 "title": "Login Required",
142 "placeholder": "Enter password",
143 "submit": "Login",
144 "error": "Incorrect password"
145 }
146 }
147
147 lines JSON