2026-04-01 00:58:42 +08:00
const enUS = {
app : {
name : "GEO Console" ,
loginIntro : "A workspace for brand assets and GEO content operations." ,
} ,
locale : {
"zh-CN" : "Simplified Chinese" ,
"en-US" : "English" ,
} ,
common : {
cancel : "Cancel" ,
close : "Close" ,
confirm : "Confirm" ,
create : "Create" ,
edit : "Edit" ,
delete : "Delete" ,
reset : "Reset" ,
refresh : "Refresh" ,
search : "Search" ,
save : "Save" ,
2026-04-02 00:31:28 +08:00
back : "Back" ,
2026-04-01 00:58:42 +08:00
next : "Next" ,
previous : "Previous" ,
submit : "Submit" ,
submitGenerate : "Generate" ,
actions : "Actions" ,
title : "Title" ,
description : "Description" ,
website : "Website" ,
wordCount : "Words" ,
createdAt : "Created At" ,
updatedAt : "Updated At" ,
status : "Status" ,
required : "Required" ,
noData : "No data" ,
optional : "Optional" ,
preview : "Preview" ,
details : "Details" ,
versions : "Versions" ,
total : "Total" ,
balance : "Balance" ,
used : "Used" ,
source : "Source" ,
templateType : "Template" ,
generateStatus : "Generation" ,
publishStatus : "Publish" ,
selectPlease : "Please select" ,
inputPlease : "Please input" ,
upgrade : "Upgrade" ,
} ,
nav : {
workspace : "Workspace" ,
articleCreation : "Article Creation" ,
templates : "Templates" ,
custom : "Custom Generation" ,
optimize : "Optimization" ,
media : "Media" ,
brandManagement : "Brand Management" ,
brands : "Brand Library" ,
tracking : "Tracking" ,
trackingDetail : "Data Details" ,
contentManagement : "Content Management" ,
knowledge : "Knowledge Base" ,
} ,
auth : {
welcomeBack : "Welcome back" ,
tenantAdminLogin : "Tenant Admin Login" ,
loginAndEnter : "Sign in to workspace" ,
email : "Email" ,
password : "Password" ,
defaultTestAccount : "Default account" ,
defaultTestPassword : "Default password" ,
} ,
shell : {
localeLabel : "Language" ,
quotaTitle : "Plan & Quota" ,
quotaStatus : "Healthy" ,
remainingQuota : "Article quota" ,
resetAt : "Reset at" ,
userFallback : "Admin" ,
logout : "Logout" ,
planFallback : "Free Plan" ,
} ,
route : {
login : {
title : "Welcome back" ,
description : "Sign in with a real tenant account." ,
} ,
workspace : {
title : "Workspace" ,
description : "Template shortcuts, overview data, and recent generations in one place." ,
} ,
templates : {
title : "Template Creation" ,
2026-04-02 00:31:28 +08:00
description : "Choose a suitable template or use the batch feature to quickly generate GEO content." ,
} ,
wizard : {
title : "Template Wizard" ,
description : "Follow the template-driven three-step flow to fill inputs, confirm structure, and generate the article." ,
} ,
articleEditor : {
title : "Article Editor" ,
description : "Edit titles, content, and publishing settings in a dedicated workspace." ,
2026-04-01 00:58:42 +08:00
} ,
custom : {
title : "Custom Generation" ,
2026-04-02 00:31:28 +08:00
description : "Generate articles with custom prompt rules, instant or scheduled." ,
2026-04-01 00:58:42 +08:00
} ,
optimize : {
title : "Article Optimization" ,
description : "No matching backend APIs exist in this repository yet." ,
} ,
media : {
title : "Media Management" ,
2026-04-03 00:39:15 +08:00
description : "Manage media bindings, local extension state, and one-click publishing from a single control plane." ,
2026-04-01 00:58:42 +08:00
} ,
brands : {
title : "Brand Library" ,
description : "Manage keywords, question sets, and competitors around each brand." ,
} ,
tracking : {
title : "Data Details" ,
description : "No matching backend APIs exist in this repository yet." ,
} ,
knowledge : {
title : "Knowledge Base" ,
description : "No matching backend APIs exist in this repository yet." ,
} ,
} ,
workspace : {
eyebrow : "Dashboard" ,
metrics : {
articles : "Generated" ,
published : "Published" ,
brands : "Brands" ,
platforms : "Platforms" ,
} ,
sections : {
templates : "Article Templates" ,
recent : "Recent Generations" ,
overview : "Overview" ,
quota : "Plan & Quota" ,
} ,
actions : {
enterTemplates : "Open Templates" ,
} ,
quota : {
remaining : "Remaining quota" ,
total : "Total quota" ,
used : "Used quota" ,
} ,
emptyTemplates : "No template cards available yet" ,
noRecentArticles : "No recent generations yet" ,
} ,
templateMeta : {
top_x_article : {
eyebrow : "Ranked Content" ,
helper : "Good for listicles, comparisons, and recommendation-driven output." ,
accent : "Top X" ,
action : "Create ranking" ,
} ,
product_review : {
eyebrow : "Product Review" ,
helper : "Good for benefits, trade-offs, and suitability analysis." ,
accent : "Review" ,
action : "Start review" ,
} ,
research_report : {
eyebrow : "Research Report" ,
helper : "Good for longer analysis, trends, and market insight." ,
accent : "Report" ,
action : "Create report" ,
} ,
brand_search_expansion : {
eyebrow : "Brand Expansion" ,
helper : "Expand brand plus search intent into a richer GEO article." ,
accent : "GEO" ,
action : "Expand" ,
} ,
default : {
eyebrow : "Content Template" ,
helper : "This template is already usable and can go straight into generation." ,
accent : "Ready" ,
action : "Open template" ,
} ,
} ,
status : {
generate : {
draft : "Draft" ,
2026-04-02 21:16:12 +08:00
queued : "Queued" ,
2026-04-01 00:58:42 +08:00
generating : "Generating" ,
running : "Running" ,
completed : "Completed" ,
failed : "Failed" ,
} ,
publish : {
unpublished : "Unpublished" ,
publishing : "Publishing" ,
2026-04-03 00:39:15 +08:00
success : "Published" ,
failed : "Failed" ,
partial_success : "Partial Success" ,
2026-04-01 00:58:42 +08:00
published : "Published" ,
publish_success : "Published" ,
publish_failed : "Failed" ,
pending_review : "Pending Review" ,
} ,
sourceType : {
template : "Template generation" ,
2026-04-02 21:16:12 +08:00
custom_generation : "Custom generation" ,
instant_task : "Instant task" ,
schedule_task : "Scheduled task" ,
2026-04-01 00:58:42 +08:00
} ,
} ,
templates : {
eyebrow : "Article Creation" ,
actions : {
batchGenerate : "Batch generate" ,
chooseTemplate : "Choose template" ,
} ,
filters : {
template : "Template" ,
publishStatus : "Publish status" ,
generateStatus : "Generation status" ,
keyword : "Search" ,
2026-04-02 00:31:28 +08:00
generationTime : "Generation time" ,
generationTimeStart : "Start time" ,
generationTimeEnd : "End time" ,
2026-04-01 00:58:42 +08:00
keywordPlaceholder : "Search by article title" ,
} ,
list : {
count : "{count} articles" ,
empty : "No articles have been created yet." ,
preview : "Preview" ,
2026-04-02 00:31:28 +08:00
edit : "Edit article" ,
editDisabled : "Only draft, failed, or completed articles can be edited" ,
2026-04-03 00:39:15 +08:00
publishDisabled : "Only completed articles can be published" ,
2026-04-01 00:58:42 +08:00
versions : "Versions" ,
deleteConfirm : "Delete this article?" ,
deleteSuccess : "Article deleted." ,
deleteError : "Failed to delete article." ,
} ,
picker : {
title : "Choose the template you want to use" ,
viewExample : "View example" ,
} ,
wizard : {
drawerTitle : "Template generation" ,
steps : {
basic : "Basic info" ,
basicDesc : "Language, template fields, and brand context" ,
structure : "Structure" ,
2026-04-02 00:31:28 +08:00
structureDesc : "Title and outline" ,
2026-04-01 00:58:42 +08:00
generate : "Generate" ,
2026-04-02 00:31:28 +08:00
generateDesc : "Confirm the outline, add key points, and submit the task" ,
2026-04-01 00:58:42 +08:00
} ,
sections : {
templateFields : "Template fields" ,
brandContext : "Brand context" ,
language : "Language" ,
brandInfo : "Brand" ,
2026-04-02 00:31:28 +08:00
brandLibrary : "Brand library" ,
brandName : "Brand name" ,
website : "Official website" ,
brandSummary : "AI brand summary" ,
2026-04-01 00:58:42 +08:00
keywords : "Keywords" ,
competitors : "Competitors" ,
chooseTitle : "Choose a title" ,
customTitle : "Custom title" ,
structure : "Article structure" ,
2026-04-02 00:31:28 +08:00
customOutline : "Custom section" ,
preview : "Article preview" ,
generatedOutline : "Confirm outline" ,
outlinePreview : "Outline preview" ,
2026-04-01 00:58:42 +08:00
keyPoints : "Key points" ,
review : "Review" ,
notes : "Notes" ,
inputParams : "Input params" ,
} ,
hints : {
brandContext : "Optional. Selecting a brand pulls in keywords and competitor context." ,
2026-04-02 00:31:28 +08:00
brandFlow : "You can pick a brand from the library or type one manually. AI analysis will expand keywords, competitors, and title options." ,
brandSummaryPlaceholder : "After analysis, AI will summarize the brand angle, positioning, and content opportunities here." ,
keywords : "Type keywords directly or reuse brand-library keywords. AI results will be merged into this list." ,
competitors : "Competitors stay editable. You can add rows manually and save useful ones back into the competitor library." ,
competitorEmptyEditable : "No competitors yet. Add one manually or let AI fill the list first." ,
templateFields : "Keep any extra template-specific fields here to constrain the writing direction." ,
titleSelection : "AI will return 5 better title options before you move forward. Choose one or rewrite it." ,
structure : "Keep the default outline or trim sections for this draft." ,
preview : "The panel on the right updates the article frame in real time." ,
previewEmpty : "Select one or more sections to preview the article frame here." ,
generatedOutline : "AI generates the full article outline first. You can edit, add, or delete nodes before creating the final article." ,
outlinePreview : "The panel on the right updates from the current outline in real time." ,
outlineEmpty : "Generate the outline first to edit the article structure here." ,
review : "Check the final setup before creating the generation task." ,
2026-04-01 00:58:42 +08:00
competitorEmpty : "No competitors are available under this brand yet." ,
customTitle : "Use this field if you want to override the title manually." ,
keyPoints : "Add any key messages, angles, or style notes here." ,
async : "The backend creates the article and task first, then completes content generation asynchronously." ,
} ,
2026-04-02 00:31:28 +08:00
actions : {
analyze : "Analyze" ,
addCompetitor : "Add competitor" ,
addSection : "Add section" ,
addOutlineNode : "Add node" ,
addOutlineChild : "Add child" ,
favorite : "Save" ,
saved : "Saved" ,
submit : "Submit and generate" ,
} ,
2026-04-01 00:58:42 +08:00
review : {
templateName : "Template" ,
articleTitle : "Article title" ,
brandContext : "Brand context" ,
outline : "Outline" ,
currentTemplate : "Current template" ,
promptVisibility : "Prompt visibility" ,
selectedKeywords : "Selected keywords" ,
selectedCompetitors : "Selected competitors" ,
} ,
localeOptions : {
zh : "Simplified Chinese" ,
en : "English" ,
} ,
2026-04-02 00:31:28 +08:00
table : {
website : "Website" ,
name : "Name" ,
description : "Description" ,
actions : "Actions" ,
} ,
placeholders : {
brandLibrary : "Choose an existing brand from the library" ,
brandName : "Enter a brand name, or refine the selected library brand" ,
website : "Official website, optional" ,
keywords : "Type keywords and press Enter" ,
customTitle : "Override the AI title here if needed" ,
customOutline : "Add another section, for example “Buying advice”" ,
keyPoints : "Add any extra instructions, key angles, or constraints for the article" ,
competitorWebsite : "Official site or landing page" ,
competitorName : "Competitor name" ,
competitorDescription : "One-line positioning or summary" ,
outlineNode : "Enter a title" ,
} ,
2026-04-01 00:58:42 +08:00
promptVisible : "Prompt visible" ,
promptSealed : "Prompt sealed" ,
2026-04-02 00:31:28 +08:00
assist : {
analyzeTitle : "AI is analyzing keywords and competitors. Please wait…" ,
titleTitle : "AI is generating titles. Please wait…" ,
outlineTitle : "AI is generating the article outline. Please wait…" ,
analyzeStages : {
brand : "Analyzing the brand context…" ,
keywords : "Extracting keyword opportunities…" ,
competitors : "Mapping competitors and websites…" ,
} ,
titleStages : {
context : "Preparing the current brief…" ,
strategy : "Generating title directions from keywords and competitors…" ,
finalize : "Returning 5 title options…" ,
} ,
outlineStages : {
context : "Preparing the title, keywords, and competitor context…" ,
structure : "Generating the article outline from the selected structure…" ,
finalize : "Returning the editable outline result…" ,
} ,
} ,
2026-04-01 00:58:42 +08:00
messages : {
requiredField : "Please fill in {field} first." ,
2026-04-02 00:31:28 +08:00
missingBrand : "Choose a brand from the library or enter a brand name first." ,
2026-04-01 00:58:42 +08:00
missingTitle : "Please choose or enter an article title." ,
missingOutline : "Please select at least one outline section." ,
2026-04-02 00:31:28 +08:00
missingGeneratedOutline : "Please generate and confirm the article outline first." ,
missingCompetitorName : "Enter a competitor name before saving it to the library." ,
savedCompetitor : "Competitor saved to the brand library." ,
assistReady : "AI analysis is ready. You can keep refining the draft." ,
assistFailed : "AI analysis failed. Please try again." ,
assistTimeout : "AI analysis timed out. Please try again." ,
titleFailed : "Title generation failed. Please try again." ,
titleTimeout : "Title generation timed out. Please try again." ,
outlineFailed : "Outline generation failed. Please try again." ,
outlineTimeout : "Outline generation timed out. Please try again." ,
draftSaved : "Draft saved. Returning to the template list." ,
draftSaveFailed : "Failed to save the draft. Please try again." ,
queued : "Task submitted. The article is now waiting in the generation queue." ,
2026-04-01 00:58:42 +08:00
submitted : "Generation task submitted. Refreshing article data." ,
} ,
} ,
} ,
article : {
drawerTitle : "Article details" ,
preview : "Content preview" ,
versionHistory : "Version history" ,
2026-04-03 00:39:15 +08:00
publishedDetails : "Published details" ,
2026-04-01 00:58:42 +08:00
untitled : "Untitled article" ,
noContent : "This article does not have generated content yet." ,
2026-04-02 00:31:28 +08:00
editor : {
publish : "Publish" ,
titlePlaceholder : "Enter article title" ,
leaveConfirm : {
title : "Unsaved changes" ,
description : "This article has unsaved edits. Leave now to discard them, or save first before going back." ,
discard : "Discard changes" ,
saveAndLeave : "Save and leave" ,
} ,
platformsTitle : "Publish platforms" ,
2026-04-06 15:41:49 +08:00
platformsHint : "This stays in sync with Media Management so you can edit the article's publish platforms directly." ,
2026-04-02 00:31:28 +08:00
coverTitle : "Cover image" ,
coverHint : "Upload a cover asset before publishing. This is local preview only for now." ,
coverUpload : "Upload cover image" ,
imagePrompt : "Enter image URL" ,
2026-04-05 22:10:05 +08:00
tablePicker : {
empty : "Drag to choose a table size" ,
hint : "Keep dragging near the edge to expand the grid" ,
} ,
2026-04-05 22:41:48 +08:00
tableMenu : {
addRowBefore : "Insert row above" ,
addRowAfter : "Insert row below" ,
deleteRow : "Delete row" ,
addColBefore : "Insert left column" ,
addColAfter : "Insert right column" ,
deleteCol : "Delete column" ,
alignLeft : "Align left" ,
alignCenter : "Align center" ,
alignRight : "Align right" ,
deleteTable : "Delete table" ,
} ,
imageMenu : {
replace : "Replace image" ,
caption : "Toggle caption" ,
2026-04-05 23:41:58 +08:00
alignLeft : "Align left" ,
alignCenter : "Align center" ,
alignRight : "Align right" ,
2026-04-05 22:41:48 +08:00
resetSize : "Reset size" ,
delete : "Delete image" ,
} ,
2026-04-02 00:31:28 +08:00
messages : {
saved : "Article saved." ,
generating : "This article is still generating. Try editing it later." ,
locked : "Only completed articles can be edited." ,
2026-04-03 00:39:15 +08:00
publishPending : "Save the article first, then choose the target platforms." ,
2026-04-02 00:31:28 +08:00
} ,
platforms : {
zhihu : "Zhihu" ,
} ,
} ,
2026-04-01 00:58:42 +08:00
meta : {
templateType : "Template" ,
currentVersion : "Current version" ,
source : "Source label" ,
wordCount : "Word count" ,
} ,
versionUntitled : "Untitled version" ,
} ,
2026-04-03 00:39:15 +08:00
media : {
hero : {
eyebrow : "Publisher" ,
} ,
plugin : {
title : "Browser Publisher" ,
ready : "Extension connected" ,
notInstalled : "Extension not connected" ,
installTitle : "Install and open the GEO Publisher extension first" ,
installDesc : "Binding and publishing depend on the browser's local platform sessions. The extension stores its own installation identity so future background checks can continue after the SaaS page is closed." ,
backgroundHint : "The extension should not reuse the web app's access token directly. This implementation already registers a dedicated installation identity for future background scanning and inclusion checks." ,
versionLabel : "Extension version" ,
installationLabel : "Installation ID" ,
connectedSummary : "Locally signed-in platforms" ,
registerRequired : "The extension installation is not registered yet. Please re-detect first." ,
} ,
actions : {
redetect : "Re-detect" ,
bind : "Bind" ,
rebind : "Rebind" ,
unbind : "Unbind" ,
} ,
card : {
bound : "Bound" ,
unbound : "Unbound" ,
unboundHint : "{platform} has not been bound to this tenant yet." ,
needsAttention : "Needs attention" ,
expiredHint : "This account is no longer healthy. Rebind it to restore publishing." ,
localMissing : "Local session missing" ,
localMismatch : "Local account mismatch" ,
readyHint : "The correct local account is available and ready for publish or future background checks." ,
accountLabel : "SaaS account" ,
uidLabel : "Platform UID" ,
localLabel : "Local state" ,
localConnected : "Session detected" ,
localDisconnected : "No session detected" ,
updatedAt : "Last sync" ,
multiAccount : "{count} accounts bound" ,
openPlatform : "Open platform" ,
} ,
account : {
localMissing : "The tenant account is bound, but this browser does not currently have the matching local session." ,
localMismatch : "This browser is signed in to a different account. Rebind or switch the local account first." ,
ready : "Ready" ,
selectable : "Selectable" ,
unavailable : "Unavailable" ,
} ,
empty : {
accounts : "No publishable media accounts are bound yet." ,
} ,
messages : {
bindSuccess : "{platform} bound successfully." ,
2026-04-03 17:48:30 +08:00
bindSuccessTitle : "Binding successful" ,
bindSuccessDetail : "Bound account [{account}] on [{platform}]" ,
2026-04-03 00:39:15 +08:00
bindPending : "The extension did not detect a local session for this platform yet. Sign in via the extension and retry." ,
2026-04-03 17:48:30 +08:00
bindPendingTitle : "Binding incomplete" ,
bindFailureTitle : "Binding failed" ,
2026-04-03 00:39:15 +08:00
unbindSuccess : "Account unbound." ,
2026-04-03 17:48:30 +08:00
unbindSuccessTitle : "Unbind successful" ,
unbindFailureTitle : "Unbind failed" ,
2026-04-03 00:39:15 +08:00
unbindConfirm : "Unbind this platform account? Publishing will no longer be available until it is bound again." ,
} ,
publish : {
title : "Publish" ,
subtitle : "Multi-platform Dispatch" ,
description : "Choose tenant-bound accounts that are currently signed in locally. The extension executes the real publish flow and writes back the resulting links." ,
platformsTitle : "Target platforms" ,
2026-04-06 15:41:49 +08:00
platformsHint : "Previously selected and bound accounts are prefilled first. Unbound or locally unavailable platforms stay disabled." ,
2026-04-03 00:39:15 +08:00
coverTitle : "Cover image" ,
coverHint : "This version uses a cover asset URL. Upload and crop can be wired later." ,
coverPlaceholder : "Enter an optional cover asset URL" ,
messages : {
success : "{count} publish tasks submitted." ,
2026-04-03 17:48:30 +08:00
successTitle : "Publish successful" ,
2026-04-03 00:39:15 +08:00
partial : "Publish finished with {success} succeeded and {failed} failed." ,
2026-04-03 17:48:30 +08:00
partialTitle : "Partial publish failure" ,
2026-04-03 00:39:15 +08:00
selectPlatform : "Choose at least one available platform first." ,
2026-04-03 17:48:30 +08:00
failureTitle : "Publish failed" ,
failureItem : "Publishing to [{platform}] failed: [{reason}]" ,
unknownFailure : "Unknown error" ,
2026-04-03 00:39:15 +08:00
} ,
} ,
records : {
tabTitle : "Published details" ,
platform : "Platform" ,
status : "Status" ,
publishedAt : "Published at" ,
link : "Published link" ,
open : "Open" ,
copy : "Copy" ,
empty : "No publish records yet" ,
linkEmpty : "No link is available for this record yet." ,
copySuccess : "Link copied." ,
} ,
} ,
2026-04-01 00:58:42 +08:00
brands : {
eyebrow : "Brand Library" ,
title : "Brand Library" ,
description : "Manage keywords, question sets, and competitor assets around each brand." ,
railTitle : "Brands" ,
selectBrand : "Pick a brand to continue managing keywords and question sets." ,
newBrand : "New brand" ,
editBrand : "Edit brand" ,
deleteBrand : "Delete brand" ,
tabs : {
keywords : "Keywords" ,
competitors : "Competitors" ,
} ,
sections : {
keywords : "Keywords" ,
questions : "Question set" ,
competitors : "Competitor library" ,
versions : "Version history" ,
} ,
actions : {
newKeyword : "New keyword" ,
newQuestion : "New question" ,
newCompetitor : "New competitor" ,
viewVersions : "View versions" ,
} ,
empty : {
brands : "No brand data yet. Create your first brand to start." ,
questions : "No questions under this keyword yet." ,
competitors : "No competitors under this brand yet." ,
} ,
form : {
brandName : "Brand name" ,
2026-04-02 11:38:08 +08:00
brandWebsite : "Company website (optional)" ,
2026-04-01 00:58:42 +08:00
brandDescription : "Brand description" ,
keywordName : "Keyword" ,
questionText : "Question text" ,
competitorName : "Competitor name" ,
competitorWebsite : "Competitor website" ,
competitorDescription : "Competitor description" ,
competitorLines : "Product lines" ,
competitorLinesHint : "Separate multiple product lines with commas." ,
} ,
messages : {
createBrand : "Brand created." ,
updateBrand : "Brand updated." ,
deleteBrand : "Brand deleted." ,
createKeyword : "Keyword created." ,
updateKeyword : "Keyword updated." ,
deleteKeyword : "Keyword deleted." ,
createQuestion : "Question created." ,
updateQuestion : "Question updated." ,
deleteQuestion : "Question deleted." ,
createCompetitor : "Competitor created." ,
updateCompetitor : "Competitor updated." ,
deleteCompetitor : "Competitor deleted." ,
chooseBrand : "Please choose a brand first." ,
chooseKeyword : "Please choose a keyword first." ,
} ,
} ,
2026-04-02 00:31:28 +08:00
custom : {
eyebrow : "Custom Generation" ,
title : "Custom Generation" ,
description : "Generate articles with custom prompt rules, instant or scheduled." ,
cards : {
instantTitle : "Instant Generation" ,
instantDesc : "Quickly create custom content tasks" ,
scheduleTitle : "Scheduled Generation" ,
scheduleDesc : "Set up automated content generation plans" ,
} ,
tabs : {
articles : "Articles" ,
instantTasks : "Instant Tasks" ,
scheduleTasks : "Scheduled Tasks" ,
promptRules : "Prompt Rules" ,
} ,
promptRule : {
name : "Rule name" ,
namePlaceholder : "Enter prompt name" ,
content : "Prompt content" ,
scene : "Scene" ,
tone : "Default tone" ,
wordCount : "Default word count" ,
status : "Status" ,
articleCount : "Article count" ,
createTitle : "Create Prompt Rule" ,
editTitle : "Edit Prompt Rule" ,
deleteConfirm : "Delete this rule?" ,
enabled : "Enabled" ,
disabled : "Disabled" ,
ungrouped : "Ungrouped" ,
groupPlaceholder : "Select a prompt group" ,
contentPlaceholder : "Enter prompt content, variables supported" ,
} ,
task : {
basicSection : "I Basic Information" ,
advancedSection : "I Advanced Settings" ,
name : "Task name" ,
namePlaceholder : "Use a simple name so the task is easy to identify later." ,
prompt : "Select Prompt" ,
promptPlaceholder : "Select a prompt" ,
createPrompt : "New Prompt" ,
platforms : "Publish platforms" ,
2026-04-06 15:41:49 +08:00
platformsHint : "Synced from Media Management. This field is optional and supports multiple selection." ,
2026-04-02 00:31:28 +08:00
platformConnected : "Connected" ,
2026-04-06 15:41:49 +08:00
platformUnauthorized : "Unauthorized" ,
platformEmptyTitle : "No publish platforms" ,
platformEmptyHint : "No platform data is available yet. Please verify the Media Management setup first." ,
2026-04-02 00:31:28 +08:00
cover : "Cover image" ,
coverHint : "Keep the cover clear, complete, and visually polished." ,
coverUpload : "Upload cover image" ,
coverUploadHint : "Local preview only for now" ,
scheduleTime : "Schedule article generation" ,
scheduleEveryDay : "Every day" ,
enableWebSearch : "Enable web search for generation" ,
generateCount : "Article count" ,
submit : "Create task" ,
} ,
group : {
title : "Rule Groups" ,
createTitle : "Create Group" ,
editTitle : "Edit Group" ,
deleteConfirm : "Deleting this group will move its rules to ungrouped. Continue?" ,
name : "Group name" ,
allRules : "All Rules" ,
} ,
schedule : {
name : "Task name" ,
rule : "Prompt rule" ,
cron : "Frequency" ,
platform : "Target platform" ,
nextRun : "Next run" ,
startAt : "Start time" ,
endAt : "End time" ,
brand : "Brand" ,
createTitle : "Create Scheduled Task" ,
editTitle : "Edit Scheduled Task" ,
deleteConfirm : "Delete this scheduled task?" ,
enabled : "Enabled" ,
disabled : "Disabled" ,
cronOptions : {
daily : "Once daily" ,
twiceDaily : "Twice daily" ,
weekly : "Once weekly" ,
custom : "Custom Cron" ,
} ,
} ,
instant : {
title : "Instant Generate" ,
createTitle : "Create Instant Task" ,
selectRule : "Select prompt rule" ,
selectBrand : "Select brand" ,
selectPlatform : "Target platform" ,
submit : "Generate now" ,
extraParams : "Extra parameters" ,
2026-04-02 21:16:12 +08:00
name : "Task name" ,
executionStatus : "Execution status" ,
executionTime : "Execution time" ,
createdTime : "Created time" ,
empty : "No instant tasks yet." ,
2026-04-02 00:31:28 +08:00
} ,
filters : {
promptRule : "Prompt rule" ,
publishStatus : "Publish status" ,
generateStatus : "Generation status" ,
title : "Title" ,
generateTime : "Generation time" ,
2026-04-02 21:16:12 +08:00
status : "Status" ,
name : "Name" ,
namePlaceholder : "Search by task name" ,
createdTime : "Created time" ,
} ,
article : {
titleColumn : "Article title" ,
titleGenerating : "Generating title" ,
2026-04-02 00:31:28 +08:00
} ,
messages : {
ruleCreated : "Rule created." ,
ruleUpdated : "Rule updated." ,
ruleDeleted : "Rule deleted." ,
ruleEnabled : "Rule enabled." ,
ruleDisabled : "Rule disabled." ,
groupCreated : "Group created." ,
groupUpdated : "Group updated." ,
groupDeleted : "Group deleted." ,
scheduleCreated : "Scheduled task created." ,
scheduleUpdated : "Scheduled task updated." ,
scheduleDeleted : "Scheduled task deleted." ,
scheduleEnabled : "Scheduled task enabled." ,
scheduleDisabled : "Scheduled task disabled." ,
generateSubmitted : "Generation task submitted." ,
missingTaskName : "Enter a task name first." ,
missingPromptRule : "Choose a prompt first." ,
invalidGenerateCount : "Article count must be at least 1." ,
invalidScheduleTime : "Choose a valid schedule time." ,
missingPromptName : "Enter a prompt name first." ,
missingPromptContent : "Enter prompt content first." ,
} ,
} ,
2026-04-01 00:58:42 +08:00
featureStub : {
eyebrow : "Feature Placeholder" ,
currentStatus : "Current status" ,
nextPriority : "Next priority" ,
integrationStrategy : "Integration strategy" ,
currentStatusText : "The page shell is ready with navigation and auth guard support." ,
integrationStrategyText : "Keep the UI aligned with tenant-api envelopes and wire real read flows before write flows." ,
} ,
} as const ;
export default enUS ;