const en = {
system: {
title: 'Publishing Group Submission System',
title_1: 'Publishing Group',
title_2: 'Submission System',
repassword: 'Forgot your password?',
register: 'Register',
orcidlogin: 'Login with your ORCID iD',
login: 'Log in',
forgetpwd: 'Find Your Password',
screen: 'full screen',
noscreen: 'Cancel full screen',
loyout: 'Log out',
langbtn: 'language',
label: 'Label options',
labelother: 'close other',
labelall: 'close all'
},
info: {
realname: 'English names can only contain uppercase and lowercase letters, "-", and spaces'
},
articleAdd: {
qqEmailAlertLine1: 'The publisher does not currently accept submissions from QQ Mail.',
qqEmailAlertLine2Before: 'Please go to',
qqEmailDashboardLink: 'Personal Center (Dashboard)',
qqEmailAlertLine2After: ' to change your registered email.',
qqEmailSubmitBlockedMsg: 'QQ Mail is not supported for submission. Please go to Personal Center (Dashboard) and change your email.'
},
total: {
author: 'author',
editor: 'editor',
reviewers: 'reviewer',
admin: 'admin'
},
articleListEditor: {
Continuouspublication: 'Continuous publication',
publishInfo: 'Are you sure you want to publish this article?',
type: 'Type',
edit: 'Edit',
add: 'Add',
journalType0: 'Continuous publication',
journalType1: 'Monthly',
journalType3: 'Quarterly',
coverImage: 'Cover Image',
JournalInstallment: 'Journal Installment',
status: 'Status',
delete: 'Delete',
deleteInfo: 'Are you sure you want to delete this journal installment?',
plagiarismNotChecked: 'Not checked',
plagiarismChecking: 'Checking…',
plagiarismRecheck: 'Re-check',
plagiarismDuplicateCheck: 'Re-check',
plagiarismCheckFailed: 'Failed to start plagiarism check.',
plagiarismStatusFailed: 'Failed to load plagiarism status.',
plagiarismNoReportUrl: 'Report link is not available yet.',
plagiarismReportDetailFailed: 'Could not load manuscript details. Please try again.',
plagiarismListTitle: 'Plagiarism check history',
plagiarismAutoCheck: 'Auto plagiarism check',
plagiarismRefresh: 'Refresh',
plagiarismEmptyList: 'No plagiarism checks yet',
plagiarismSimilarity: 'Similarity',
plagiarismFile: 'File',
plagiarismPreviewPdf: 'Preview report',
plagiarismReportLink: 'Report',
plagiarismNoPdfLink: 'No link',
plagiarismPreviewClose: 'Close',
plagiarismPreviewOpenTab: 'Open in new tab',
},
menu: {
main: 'Personal Center',
PublicationSystem: 'Publication System',
PaperEditingSystem: 'Paper Editing System',
PaperPublicationSupervise: 'Paper Publication Supervise',
PaperSubmitanalysis: 'Paper Submit Analysis',
ArticlePublicationanalysis: 'Article Publication Analysis',
journalArticleCount: 'Article Count',
Promotionsystem: 'Promotion System',
Userdatabase: 'User Database',
analysis: 'Article Analysis',
evaluationsis: 'Article Distribution',
userManSys1: 'Total User',
userManSys13: 'Untapped Users',
userManSys14: 'All Users',
userManSys15: 'Author Database',
userManSys7: 'Blacklist',
userManSys6: 'Promotion Record',
JournalCitationAnalysis: 'Journal Citation Analysis',
Academicresourcesupervise: 'Academic Resource Supervise',
Classificationmanagement: 'Classification Management',
ClassificationmanagementInfo: 'Classification',
publicationsupervise: 'Publication Supervise',
papersubmit: 'Paper Submit',
ArticlePublication: 'Article Publication',
JournalCitationAnalysis: 'Journal Citation Analysis',
},
GroupClassification: {
add: 'Add',
cancel: 'Cancel',
submit: 'Submit',
edit: 'Edit',
delete: 'Delete',
major_title: 'Major Title',
major_current: 'Current Major',
nickname: 'Nick Name',
enter: 'Please Enter...',
sort: 'Sort',
deleteInfo: 'Are you sure you want to delete this category',
Unbind: 'Unbind',
bind: 'Bind',
ExpandAll: 'Expand All',
Journal: 'Journal',
JournalBindInfo: 'The Journal',
BindInfo: 'will be bound to this category, Do you want to continue?',
UnBindInfo: 'will unbind this category, Do you want to continue?',
Tips: 'Tips',
AssociatedJournal: 'Associated Journal',
},
JournalCitationAnalysis: {
journal: 'Journal',
editor: 'Editor',
cite: 'Cited in',
citeNum: 'Cited',
article: 'Articles for',
articleNum: 'Articles',
info: 'The following data is',
Fee: 'Fee',
wos: 'Wos',
all: 'All references',
factor: 'Factor',
Sameperiod: 'Same period',
ArticleInfo: 'Article Information',
website: 'Website',
email: 'Email',
abbr: 'abbr',
edit: 'Edit',
level: 'Level',
editorinchief: 'Editor In Chief',
journal_topic: 'Research areas',
// 1. 录入弹窗 (image_e6d8fa.png)
feeDialogTitle: 'Adjustment of Article Processing Charge (APC)',
feeWarningTitle: 'Financial Configuration Alert',
feeWarningDesc: 'Modifying the APC is a critical update. The new rate will be applied prospectively to all new submissions upon confirmation.',
feeLabel: 'New APC Amount (USD)',
placeholder: 'Enter amount',
confirmUpdate: 'Update Standard',
cancel: 'Cancel',
// 2. 二次确认弹窗 (image_e6d449.png)
doubleConfirmTitle: 'Final Regulatory Confirmation',
doubleConfirmContent: 'Are you sure you want to authorize this rate change? This adjustment will immediately synchronize with the billing system and impact all future financial settlements.',
// 3. 反馈
updateSuccess: 'The journal APC standard has been successfully updated.',
executiveEditor:'Executive Editor',
databases:'Database inclusion',
},
partyRole: {
identity: 'Identity',
InvestorProducer: 'Investor Producer',
author: 'Author',
status: 'Status',
Published: 'Published', journal: 'Journal',
},
paperArticleCount: {
Periodroll: 'Period Roll',
article: 'Articles',
articleTitle: 'Article Tiltle',
articleLen: 'Number Of Articles',
articleLen1: 'Articles',
cite: 'Cited',
relation: 'Relation',
},
partyListCorr: {
Realname: 'Realname',
Email: 'Email',
unregistered: 'unregistered',
OtherInformation: 'Other Information',
articlelist: 'Article List',
journal: 'Journal',
Authors: 'Authors',
},
sidebar: {
main: 'Personal Center',
author: 'Author',
author1: 'My manuscripts',
author2: 'Submit manuscript',
author4: 'Order List',
author3: 'Manuscripts in Draft',
editor: 'Editor',
editor1: 'Paper Editing System',
// editor1: 'Manuscript list',
editormanage: 'Editor Management',
editormanage1: 'Editor list',
editormanage2: 'Add editor',
journal: 'Journal Management',
journal1: 'Journal list',
journal2: 'Add journal',
reviewer: 'Reviewer Management',
reviewer1: 'Reviewer application list',
reviewer2: 'Reviewer list',
reviewer3: 'Reviewer import',
reviewer4: 'Reviewer error',
reviewer5: 'Reviewer Add',
reviewer6: 'Author transferred to reviewer',
reviewerArticle: 'Reviewer',
reviewerArticle1: 'Manuscript list',
authorApplyReviewer: 'Become reviewer',
reviewerimport: 'Reviewer import',
reviewerimporterror: 'import error',
monitor: 'Monitor',
monitor1: 'Manuscript situation',
document: 'Manuscript List',
chief: 'Chief editor',
chief1: 'Chief editor list',
chief2: 'Journal list',
editmber: 'Editorial management',
editmber1: 'Editorial board list',
editmber2: 'Editorial board list',
editmber3: 'Matching pattern',
userTalSys: 'User Management System',
userTalSys1: 'Total User',
userTalSys2: 'User Blacklist',
userTalSys3: 'Editorial board',
userTalSys4: 'Reviewer application list',
userTalSys5: 'Author transferred to reviewer',
userTalSys6: 'Reviewer list',
userTalSys7: 'Editorial board apply list',
userTalSys8: 'Young Scientist apply list',
userManSys: 'User Management System',
journalManagement: 'Journal Management',
journalList: 'Journal List',
userManSys1: 'Total User',
userManSys11: 'Active Users',
userManSys12: 'Inactive Users',
userManSys13: 'Untapped Users',
userManSys14: 'All Users',
userManSys15: 'Author Database',
userManSys2: 'Author',
userManSys3: 'Reviewer',
userManSys31: 'List',
userManSys32: 'Apply',
userManSys33: 'Author transferred to reviewer',
userManSys4: 'Editorial board',
userManSys41: 'List',
userManSys42: 'Apply',
userManSys5: 'Young Scientist',
userManSys51: 'List',
userManSys52: 'Apply',
userManSys6: 'Promotion Record',
userManSys7: 'Blacklist',
userManSys8: 'Academic Integrity Committee',
userManSys9: 'Editors & Staff',
userManSys11: 'Journal Agreement',
analyp: 'Manager',
datasis: 'Journal Data Statistics',
analysis: 'Journal Evaluation System',
evaluationsis: 'Journal Evaluation Statistics',
rev_ewer: 'Reviewer',
rev_ewer1: 'Peer Review',
rev_ewer2: 'Review History',
man_ing: 'Editor-in-Chief',
man_ing1: 'Journal information',
man_ing2: 'Article List',
edit_oria: 'Editorial board member',
edit_oria1: 'Final Decision',
edit_oria2: 'Accepted manuscript',
edit_ewer: 'Reviewer',
edit_ewer1: 'Final Decision',
edit_ewer2: 'Final Decision History',
you_thed: 'Young scholar',
you_thed1: 'Pending review',
guest: 'Guest editor',
guest1: 'Manuscript list',
guest2: 'Reviewer list',
email: 'Mail management',
email1: 'Mail template',
suggest: 'Suggestion management',
suggest1: 'Suggestion list',
suggest2: 'Suggested title management',
party: 'User Management',
party1: 'Editor List',
party2: 'User List',
party3: 'User Blacklist',
mailbox: 'Mailbox system',
mailbox1: 'Mailbox send',
mailbox2: 'Mailbox list',
mailbox3: 'Mailbox template',
emailTemplates: 'Email Templates',
emailStyles: 'Email Styles',
tools: 'Assistant tools',
mailboxManagement: 'Mailbox Management',
mailboxConfig: 'Mailbox Management',
scholarCrawlers: 'Scholar Crawlers',
crawlerKeywords: 'Crawl Keywords',
expertDatabase: 'Expert Database',
keywordManagement: 'Keyword Management',
crawlTasks: 'Crawl Tasks',
expertList: 'Expert List',
countryManagement: 'Country Management',
autoPromotion: 'Auto Promotion',
ReArticles: 'Rejected Manuscripts', // 被拒稿件
editorialBoard: 'Boss System',
editorialBoard1: 'Board Management',
editorialBoard2: 'Young Scientist Management',
editorialBoard3: 'Journal Management',
chiefInspector: 'Chief Inspector',
journalArticleCount: 'Journal Article Count',
managingDirector: 'Managing Director',
GroupClassification: 'Group List',
JournalInstallment: 'Journal Installment',
mailboxCollect: 'Email List',
promotionManagement: 'Promotion Management',
},
expertDatabase: {
fieldSelectPlaceholder: 'Please select field',
keywordPlaceholder: 'Name / Email / Affiliation',
fieldPlaceholder: 'Please enter field',
searchBtn: 'Search',
resetBtn: 'Reset',
downloadExcelBtn: 'Download Excel',
table: {
no: 'No.'
},
columns: {
baseInfo: 'Base Information',
country: 'Country',
affiliation: 'Affiliation',
researchAreas: 'Research areas',
unsubscribeStatus: 'Subscription status'
},
emptyMark: '-',
fields: {
nameLabel: 'Name:',
emailLabel: 'Email:',
acquisitionTimeLabel: 'Acquisition Time:'
},
viewAllInfo: 'View all details',
detailDialogTitle: 'Research areas & Article',
detailColField: 'Research areas',
detailColPaper: 'Article title',
detailColJournal: 'Journal',
detailClose: 'Close',
detailCellEmpty: 'N/A',
noFieldDetail: 'No publication details for these fields',
exportWarn: 'Please select a research area, enter a keyword, or enter a field before exporting.',
exportFailed: 'Export failed',
unsubscribeNormal: 'Subscribed',
unsubscribeUnsubscribed: 'Unsubscribed',
unsubscribeSwitchOn: 'Unsub',
unsubscribeSwitchOff: 'Subscribed',
unsubscribeMissingId: 'Missing expert ID, unable to switch unsubscribe status',
unsubscribeUpdateSuccess: 'Unsubscribe status updated',
unsubscribeUpdateFailed: 'Failed to update unsubscribe status'
},
countryManagement: {
title: 'Country Management',
keywordPlaceholder: 'Chinese / English / Code',
partitionLabel: 'Partition',
partitionAll: 'All partitions',
partition1: 'Partition 1',
partition2: 'Partition 2',
partition3: 'Partition 3',
searchBtn: 'Search',
resetBtn: 'Reset',
table: {
no: 'No.',
zhName: 'Chinese name',
enName: 'English name',
code: 'Code',
partition: 'Partition',
actions: 'Actions'
},
edit: 'Edit',
delete: 'Delete',
editTitle: 'Edit country',
form: {
zhName: 'Chinese name',
enName: 'English name',
code: 'Code',
partition: 'Partition'
},
cancel: 'Cancel',
save: 'Save',
confirm: 'OK',
deleteTitle: 'Confirm delete',
deleteConfirm: 'Delete this country record? This cannot be undone.',
saveSuccess: 'Saved',
deleteSuccess: 'Deleted',
opFailed: 'Operation failed',
loadFailed: 'Failed to load list',
missingId: 'Missing country id',
ruleZhName: 'Enter Chinese name',
ruleEnName: 'Enter English name',
ruleCode: 'Enter code',
rulePartition: 'Select a partition',
batchPartitionBtn: 'Batch update partition',
batchPartitionTitle: 'Batch update partition',
batchPartitionTargetLabel: 'Target partition',
batchPartitionTargetRequired: 'Please select target partition first',
batchPartitionHelp:
'One record per line: ISO code (3 letters) OR English OR Chinese name. Lines starting with # are comments. Example:\nDNK\nDenmark',
batchPartitionPlaceholder: 'Paste data, e.g.:\nDNK\nISR',
batchPartitionPreview: 'Preview match',
batchPartitionApply: 'Apply partition updates',
batchPartitionEmpty: 'Enter valid data (one country key per line)',
batchPartitionLoadListFailed: 'Failed to load full country list',
batchPartitionPreviewEmpty: 'Nothing to match',
batchPartitionColKey: 'Key from input',
batchPartitionColCurrentPartition: 'Current partition',
batchPartitionColPartition: 'Target partition',
batchPartitionColMatch: 'Match',
batchPartitionColId: 'country_id',
batchPartitionColName: 'English name',
batchPartitionMatched: 'Matched',
batchPartitionMismatch: 'Partition mismatch',
batchPartitionMissing: 'Not found',
batchPartitionSkipSame: 'Same partition',
batchPartitionApplyConfirm: 'Update partition only for {n} row(s). Continue?',
batchPartitionFilterPlaceholder: 'Filter by key / English / code / Chinese (use ; or , for multiple)',
batchPartitionSelectAllFiltered: 'Select all (filtered)',
batchPartitionClearSelection: 'Clear selection',
batchPartitionFilterCount: 'Showing {show} of {total}',
batchPartitionSelectionHint:
'Filter the table below, then tick rows to update. "Select all" only selects filtered rows that need a partition change. If nothing is ticked, all rows that need an update are submitted.',
batchPartitionNoSelection: 'Selection mode is on but no rows are ticked. Tick at least one row, or click Clear selection to submit all.',
batchPartitionDone: 'Done: {input} line(s) in batch; {ok} updated, {fail} failed, {miss} not found.',
batchPartitionSummaryLine:
'Summary: {input} line(s) parsed; {matched} matched; {miss} not found; {same} unchanged (same partition); {will} will be updated.'
},
mailboxConfig: {
mailSystem: 'Mailbox system',
title: 'Mailbox config',
journal: 'Journal',
allJournal: 'All journals',
query: 'Search',
refresh: 'Refresh',
addAccount: 'Add email account',
noData: 'No data',
no: 'No.',
loading: 'Loading...',
smtpFromName: 'Name',
smtpFromNamePlaceholder: 'Display name when sending',
smtpHost: 'SMTP host',
smtpPort: 'SMTP port',
smtpPortPlaceholder: 'eg: 465',
smtpEncryption: 'SMTP encryption',
smtpEncryptionPlaceholder: 'eg: ssl',
imapHost: 'IMAP host',
imapPort: 'IMAP port',
imapPortPlaceholder: 'eg: 993',
todaySent: 'Today sent',
remainingToday: 'Remaining today',
state: 'State',
primary: 'Primary',
primaryTag: 'Primary',
operation: 'Operation',
edit: 'Edit',
delete: 'Delete',
mailManage: 'Email List',
dialogAdd: 'Add email account',
dialogEdit: 'Edit email account',
selectJournal: 'Select journal',
account: 'Email account',
accountPlaceholder: 'Sender / login email',
password: 'Password',
passwordPlaceholder: 'Password',
passwordTip: 'Leave blank to keep unchanged when editing',
smtpPlaceholder: 'eg: mail.tmrjournals.co.nz',
imapPlaceholder: 'eg: mail.tmrjournals.co.nz',
isPrimary: 'Set as primary',
yes: 'Yes',
no: 'No',
primaryTip: 'Each journal has exactly one primary mailbox for sending and receiving.',
cancel: 'Cancel',
save: 'Save',
deleteConfirm: 'Delete this email config?',
deleteTitle: 'Delete email account',
confirm: 'Confirm',
addSuccess: 'Added successfully',
editSuccess: 'Updated successfully',
deleteSuccess: 'Deleted successfully',
addFail: 'Add failed',
editFail: 'Update failed',
deleteFail: 'Delete failed',
addSuccessMock: 'Added (mock)',
editSuccessMock: 'Updated (mock)',
deleteSuccessMock: 'Deleted (mock)',
rulesJournal: 'Please select journal',
rulesAccount: 'Please enter email account',
rulesAccountFormat: 'Please enter a valid email',
rulesPassword: 'Please enter password',
rulesSmtpFromName: 'Please enter sender name',
rulesSmtpHost: 'Please enter SMTP host',
rulesSmtpPort: 'Please enter SMTP port',
rulesSmtpEncryption: 'Please enter SMTP encryption',
rulesImapHost: 'Please enter IMAP host',
rulesImapPort: 'Please enter IMAP port',
rulesIsPrimary: 'Please set primary or not',
},
mailboxMould: {
title: 'Email Templates',
subtitle: 'Manage and customize your journal email templates.',
no: 'No.',
searchPlaceholder: 'Search by title or scene...',
journalPlaceholder: 'Journal',
scenePlaceholder: 'Scene',
all: 'All',
inviteSubmission: 'Invite Submission',
promoteCitation: 'Promote Citation',
generalThanks: 'General Thanks',
languagePlaceholder: 'Language',
searchBtn: 'Search',
createTemplate: 'Create Template',
colTitle: 'Template title',
colSubject: 'Email subject',
colScene: 'Scene',
colLanguage: 'Language',
colVersion: 'Version',
colStatus: 'Status',
colActions: 'Actions',
active: 'Active',
inactive: 'Inactive',
confirm: 'Confirm',
cancel: 'Cancel',
deleteConfirm: 'Delete this template?',
deleteSuccess: 'Deleted successfully',
deleteFail: 'Delete failed',
previewTitle: 'Template preview',
previewClose: 'Close',
batchImportBtn: 'Batch import',
batchImportTitle: 'Batch import templates (JSON)',
batchImportHint:
'Paste a JSON array. Each item is saved via the same API as the editor (omit template_id to create; include template_id to update). Fields: title, subject, scene, language (or lang), version, body_html (or body), variables_json (or variables), is_active.',
batchImportCommonTip: 'Journal ID is set in the field below; when non-empty it overrides journal_id / journalId on every row.',
batchImportJournalId: 'Journal ID',
batchImportJournalPlaceholder: 'Match list filter or type manually',
batchImportRun: 'Run import',
batchImportBadJson: 'Invalid JSON',
batchImportEmpty: 'Array must contain at least one object',
batchImportMissingJournal: 'Row {index}: missing journal_id (use the input above or put journal_id in JSON)',
batchImportMissingField: 'Row {index}: missing {field}',
batchImportRowFail: 'Row {index} failed: {msg}',
batchImportRowNetwork: 'Row {index}: request error',
batchImportDone: 'Done: {ok} succeeded, {fail} failed',
batchImportErrorsTitle: 'Errors (first 8)',
batchImportSaveFail: 'Save failed',
},
mailboxStyle: {
title: 'Email Styles',
subtitle: 'Manage email header and footer styles.',
no: 'No.',
searchPlaceholder: 'Search by name or description...',
journalPlaceholder: 'Journal',
scenePlaceholder: 'Scene',
languagePlaceholder: 'Language',
searchBtn: 'Refresh',
createStyle: 'Create Style',
colName: 'Style name',
colDescription: 'Style description',
},
mailboxStyleDetail: {
back: 'Back',
createStyle: 'Create style',
editStyle: 'Edit style',
cancel: 'Cancel',
save: 'Save',
loading: 'Loading',
name: 'Style name',
namePlaceholder: 'Enter style name',
description: 'Style description',
descriptionPlaceholder: 'Enter style description',
headerHtml: 'Header HTML',
footerHtml: 'Footer HTML',
rulesName: 'Please enter style name',
rulesDescription: 'Please enter style description',
rulesHeaderHtml: 'Please enter header HTML',
rulesFooterHtml: 'Please enter footer HTML',
saveSuccess: 'Saved successfully',
saveFail: 'Save failed',
},
mailboxMouldDetail: {
back: 'Back',
createTemplate: 'Create template',
editTemplate: 'Edit template',
cancel: 'Cancel',
save: 'Save',
loading: 'Loading',
rulesJournal: 'Please select journal',
rulesScene: 'Please select template type',
rulesLanguage: 'Please select language',
rulesTitle: 'Please enter template title',
rulesSubject: 'Please enter email subject',
rulesBody: 'Please enter email body',
rulesVersion: 'Please enter version',
basicInfo: 'Basic info',
templateTitle: 'Template title',
templateTitlePlaceholder: 'Enter title',
emailSubject: 'Email subject',
emailSubjectPlaceholder: 'Email subject',
emailBody: 'Email body',
journal: 'Journal',
templateType: 'Template type',
sceneInviteSubmission: 'Invite submission',
scenePromoteCitation: 'Promote citation',
sceneGeneralThanks: 'General thanks',
languageConfig: 'Language',
version: 'Version',
versionControl: 'Version',
versionPlaceholder: '1.0.0',
bodyEdit: 'Body editor',
activeStatus: 'Active',
variablesJson: 'Variables (JSON)',
variablesPlaceholder: '{"name": "string"}',
previewTab: 'Preview',
subjectLabel: 'Subject:',
receiverLabel: 'Receiver:',
previewRendering: 'Live preview',
saveSuccess: 'Saved successfully',
saveFail: 'Save failed',
saveSuccessMock: 'Template saved (mock)',
},
mailboxCollect: {
inboxTab: 'Mail received',
outboxTab: 'Mail sent',
draftsTab: 'Drafts',
deletedTab: 'Deleted',
spamTab: 'Spam',
searchPlaceholder: 'Please enter name or email',
searchBtn: 'Search',
syncBtn: 'Sync remote mail',
writeBtn: 'Write letter',
receiveBtn: 'Sync inbox',
email: 'Email',
account: 'Account',
time: 'Time',
look: 'Look',
emptyText: 'New messages (0)',
loading: 'Loading...',
detailTitle: 'Mail detail',
from: 'From',
to: 'To',
subject: 'Subject',
close: 'Close',
noSubject: '(No subject)',
reply: 'Reply',
forward: 'Forward',
delete: 'Delete',
featureDev: 'This feature is under development',
selectMailTip: 'Select an email to read',
selectAccountTitle: 'Select email account',
journal: 'Journal',
accountColumn: 'Email account',
nameColumn: 'Name',
switchColumn: 'Switch',
useBtn: 'Switch',
currentAccountText: 'Current account',
changeAccountBtn: 'Change account',
syncSuccess: 'Sync succeeded',
syncFail: 'Sync failed',
operation: 'Operation',
loadingMore: 'Loading more...',
noMore: 'No more',
yesterday: 'Yesterday',
selectAccountTip: 'Please select an email account first.',
attachmentCount: ' attachment(s)',
downloadFail: 'Download failed',
accountNotBelong: 'This account does not belong to you. Please select another one.',
totalAttachments: '{count} attachment(s) in total',
etcSuffix: '... etc.',
viewAttachments: 'View attachments',
newMailArrived: '{count} new mail(s) received, click to view',
downloadAllZip: 'Download all',
packingAttachments: 'Packing attachments, please wait...',
downloadBtn: 'Download',
printBtn: 'Print',
previewNotSupported: 'This file format cannot be previewed online',
downloadToView: 'Download to view locally',
registerAuthorBtn: 'Auto submit',
registerAuthorConfirm:
'Create an account via the same admin API as User Management: login name "{account}", display name "{realname}", email "{email}", initial password 123456qwe (no captcha). Continue?',
registerAuthorSuccess: 'Author account created.',
registerAuthorSuccessWithEmail: 'Created: {email}, password: 123456qwe',
registerAuthorFail: 'Creation failed. Try again later or add the user manually in User Management.',
registerAuthorExistsEmail: 'This email is already registered.',
registerAuthorExistsAccount: 'This login name is already taken. Edit the sender display name or add the user manually.',
registerAuthorNeedEmail: 'Sender email is missing; cannot create an account.',
registerAuthorNoQq: 'QQ Mail is not supported for author accounts. Please add the user manually.',
registerAuthorConfirmShort: 'Email: {email}\nPassword: {password}',
registerAuthorPickEmailFail: 'Could not allocate an available email after several attempts. Try again later or add the user manually.',
autoSubmitBtn: 'Submit first .docx as manuscript',
autoSubmitTitle: 'Log in as author and upload the first .docx attachment',
autoSubmitSessionTip:
'Author checkLogin does not change your U_* local account. The server cookie is the author during upload. After finishing, enter your editor password below and log in again to restore the editor server session.',
autoSubmitUsername: 'Username',
autoSubmitPassword: 'Password',
autoSubmitSenderEmailLabel: 'Sender email',
autoSubmitSenderEmailPlaceholder: '(No sender email)',
autoSubmitCode: 'Captcha',
autoSubmitCodePh: 'Fill only if the server requires captcha; often leave empty',
autoSubmitCancel: 'Cancel',
autoSubmitDialogTitle: 'Auto submit',
autoSubmitConfirm: 'Auto submit',
autoSubmitExistingAccountTip:
'This sender email may already have an account. Enter your password. Re-selecting a local file replaces the previous one.',
autoSubmitNotifyMailSubject: '[{journal}] Please complete your submission',
autoSubmitNotifyMailFail: 'Could not send the notification email. You can resend from the compose page.',
autoSubmitNotifyMailSkipped: 'No sender mailbox (j_email_id) found; skipped automatic email.',
autoSubmitNoDocx: 'No .docx attachment in this message (only .docx is supported, same as new submission).',
autoSubmitDownloadFail: 'Could not download the attachment. Try again later.',
autoSubmitSuccessTitle: 'Manuscript created',
autoSubmitDialogClose: 'Close',
autoSubmitSuccessLineAccount: 'Account: {account}',
autoSubmitSuccessLinePassword: 'Password: {password}',
autoSubmitSuccessLineDraft: 'Manuscript ID: {id}. Draft created in staging.',
autoSubmitSuccessLineLinkPrefix: 'Submission link: ',
autoSubmitSuccessMailSent: 'Notification email sent',
autoSubmitSuccessMailSkipped: 'No notification email (journal sender mailbox not configured).',
autoSubmitSuccessMailSkippedRecipient: 'No notification email (no valid From address on this message).',
autoSubmitSuccessMailFailed: 'Notification email was not sent; try again from the compose page.',
autoSubmitSuccessBodyLocalOnly:
'Article ID: {id}. The UI still shows your editor account; the server session may still be the author after author login. Refresh or log in again as editor.',
autoSubmitSuccessBodyServerRestored:
'Article ID: {id}. Logged in again as editor; both local storage and server session should match your editor account.',
autoSubmitSuccessNotify:
'Article ID: {id}
Open articleAdd',
autoSubmitEditorRestorePwd: 'Editor password (restore session)',
autoSubmitEditorRestorePwdPh:
'Optional: password for the current editor account shown in the header, used after success to restore the server session',
autoSubmitEditorReloginFail:
'Could not restore the editor server session; local values were restored where possible. Refresh the page or log in again as editor.',
autoSubmitFail: 'Submission failed. Check credentials or network and try again.',
autoSubmitUsernameRequired: 'Username is required',
autoSubmitPasswordRequired: 'Password is required',
autoSubmitJournalLabel: 'Journal',
autoSubmitJournalUnknown: 'No journal (switch to a mailbox account that is bound to a journal)',
autoSubmitNeedJournal:
'This mailbox has no journal ID; staging backfill cannot match the submission page. Switch mailbox account first.',
autoSubmitFailPartial: '(If contribute succeeded, article ID may be {id}; please verify in admin.)',
autoSubmitManuscriptSource: 'Manuscript file',
autoSubmitPickLocalDocx: 'Upload .docx from disk',
autoSubmitSourceHint: 'Optional: upload a file; otherwise the first .docx in the email is used. Choosing again replaces the current local file.',
autoSubmitLocalPicked: 'Local file: {name}',
autoSubmitNeedDocxSource: 'Upload a .docx file, or ensure the email has a .docx attachment.',
},
crawlerKeywords: {
pageTitle: 'Keyword Configuration',
pageDesc: 'Manage core search terms for discovering experts.',
exportData: 'Export Data',
startCrawl: 'Start Crawl',
inputPlaceholder: 'Enter new keyword, e.g. deep learning, semiconductor expert...',
addKeyword: 'Add Keyword',
searchPlaceholder: 'Search keywords...',
searchBtn: 'Search',
totalCount: '{count} keyword(s) in total',
colKeyword: 'Keyword',
colCategory: 'Category',
colStatus: 'Status',
colExpertCount: 'Expert Count',
colLastCrawl: 'Last Crawl',
colAction: 'Action',
save: 'Save',
cancel: 'Cancel',
stateRunning: 'Running',
statePaused: 'Paused',
stateError: 'Error',
stateDone: 'Done',
emptyKeywordWarn: 'Please enter a keyword',
addSuccess: 'Added successfully',
addFail: 'Failed to add',
updateSuccess: 'Updated successfully',
updateFail: 'Failed to update',
deleteConfirm: 'Are you sure to delete this keyword? This action cannot be undone.',
confirmTitle: 'Confirm',
deleteSuccess: 'Deleted successfully',
deleteFail: 'Failed to delete',
refreshSuccess: 'Refreshed successfully',
refreshFail: 'Failed to refresh',
crawlStarted: 'Crawl task started',
crawlFail: 'Failed to start crawl',
exportFail: 'Failed to export',
},
crawlTask: {
pageTitle: 'Crawl Monitor',
pageDesc: 'Review crawl jobs and indexing progress for expert discovery.',
exportData: 'Export Data',
startCrawl: 'Start Crawl',
searchPlaceholder: 'Search by keyword or phrase…',
searchBtn: 'Search',
allKeywords: 'All keywords',
enabled: 'Active',
disabled: 'Paused',
allStatus: 'All Status',
statusCrawling: 'Crawling',
statusDone: 'Done',
statusPaused: 'Paused',
statusError: 'Error',
source: 'Source',
startTime: 'Start Time',
endTime: 'End Time',
progress: 'Progress',
totalPages: 'Total Pages',
crawledPages: 'Crawled Pages',
expertCountLabel: 'Experts Stored',
expertCount: 'Expert Count',
created: 'Created',
completed: 'Completed',
updated: 'Updated',
viewDetail: 'View Detail',
viewLogs: 'View Logs',
pause: 'Pause',
resume: 'Resume',
restart: 'Restart',
delete: 'Delete',
deleteConfirm: 'Are you sure to delete this task? This cannot be undone.',
confirmTitle: 'Confirm',
confirmOk: 'OK',
confirmCancel: 'Cancel',
operationSuccess: 'Operation succeeded',
operationFail: 'Operation failed',
operationRetry: 'Operation failed, please try again later',
crawlStarted: 'Crawl task started',
crawlFail: 'Failed to start crawl',
exportFail: 'Failed to export',
detailTitle: 'Task Detail',
basicInfo: 'Basic Information',
taskName: 'Task Name',
status: 'Status',
resultSummary: 'Result Summary',
totalFound: 'Total Found',
newAdded: 'New Added',
duplicates: 'Duplicates',
failed: 'Failed',
logsTitle: 'Run Logs',
noLogs: 'No logs yet',
noData: 'No tasks',
emptyResult: 'No tasks match your filters. Try adjusting keywords or status.',
addKeyword: 'Add keyword',
keyword: 'Keyword',
keywordPlaceholder: 'Enter a search term (e.g. infectious diseases)',
runOnce: 'Run once',
runOnceBtn: 'Run once',
runOnceLoading: 'Crawling...',
yes: 'Yes',
no: 'No',
cancel: 'Cancel',
confirm: 'Save',
enterKeyword: 'Please enter a keyword.',
addKeywordSuccess: 'Keyword added.',
addKeywordFailed: 'Could not add keyword.',
runOnceSuccess: 'One-off crawl requested.',
runOnceFailed: 'Could not start a one-off crawl.',
disabledMsg: 'Disabled',
enabledMsg: 'Enabled',
pauseFailed: 'Failed to pause',
resumeFailed: 'Failed to resume',
missingKeyword: 'Enter a keyword before running a one-off crawl.',
restartSuccess: 'Sync restarted (local mock)',
metricExperts: 'Experts indexed',
metricPages: 'Pages crawled',
stateRunning: 'Running',
stateStopped: 'Stopped',
taskRunningMsg: 'Crawl is now enabled.',
taskStoppedMsg: 'Crawl has been paused.',
runOnceQueued: 'A one-off crawl has been queued.',
},
mailboxSend: {
title: 'Write mail',
to: 'To:',
selectFromLibrary: 'Select from address book',
subject: 'Subject:',
cc: 'Cc:',
attachments: 'Attachments:',
upload: 'Upload',
templateSelection: 'Template selection',
sender: 'Sender:',
send: 'Send',
sending: 'Sending...',
selectUser: 'Select User',
batchSelection: 'Batch selection',
email: 'Email',
account: 'Account',
operation: 'Operation',
selectBtn: 'Select',
emptyText: 'No data',
selectTemplate: 'Select template',
chooseTemplate: 'Choose Template:',
chooseTemplatePlaceholder: 'Please select template',
none: 'None',
previewTemplate: 'Preview Formatted Document:',
cancel: 'Cancel',
save: 'Save',
saveDraft: 'Save draft',
sourceMode: 'Source code',
richTextMode: 'Rich text',
exitSourceMode: 'Exit source mode',
sourcePlaceholder: 'Paste or edit full HTML here (DOCTYPE, html, head, body supported)',
editorPlaceholder: 'Please enter...',
validateTo: 'Please add at least one addressee',
validateSubject: 'Please enter mail subject',
sendSuccess: 'Send success',
sendFail: 'Send failed',
sendMock: 'Send (mock): will really send when api/Mail/sendMail is ready',
needAccount: 'Please select a sender account from the mailbox list first',
selectTemplateStyleFirst: 'Please select template and style first',
recipientLimit: 'You can add up to {count} recipient(s)',
recipientLimitPlaceholder: 'Limit reached (max {count})',
backToInbox: 'Back to email list',
},
home: {
authortop: 'Author guide',
usermsg: 'New messages',
},
artstate: {
state0: 'Received',
state1: 'With editor',
state2: 'Under review',
state3: 'Reject',
stateDraft: 'Awaiting Submission',
state4: 'Revision',
state5: 'Accept',
state6: 'Pre-accept',
state8: 'Final Decision',
act1: 'Dealing',
act2: 'Finished',
},
evaluationsis: {
EmploymentRate: 'Employment Rate',
contry: 'Contry',
zr: 'To Change Into',
zc: 'Transfer Out',
articles: 'Total Number Of Articles',
boardMembers: 'Number Of Editorial Board Members',
InternationalDistributionNumber: 'International Distribution Of Editorial Board Members',
InternationalDistributionTotal: 'total',
InternationalDistributionArticles: 'International Distribution Of Articles',
},
charact: {
role: 'Role',
role1: 'Role editor',
role2: 'Editorial board',
role3: 'Reviewer',
role4: 'Youth editorial board',
},
journalArticleCount: {
yearTitle: 'Total annual submission volume',
monthTitle: 'Monthly submission volume',
dataTitle: 'Submission volume',
transferQuantity: 'Transfer quantity',
info: 'The following data is',
loading: 'LOADING',
},
journalArticleTable: {
title: 'journal',
time: 'time',
}, protocol: {
PublishingAgreementInfo: 'Please enter the publishing agreement'
}, journalStatus: {
changeStatusInfo: '此稿件的评分没有达到初始评分标准,是否继续?',
changeStatusInfo: 'The rating of this manuscript did not meet the initial rating criteria. Do you want to continue?',
Continue: '继续',
Continue: 'Continue',
Cancel: '取消',
Cancel: 'Cancel',
Prompt: '提示',
Prompt: 'Prompt',
}, citeList: {
refresh: 'Check',
search: 'Search',
yes: 'Yes',
save: 'Save',
cancel: 'Cancel',
no: 'No',
add: 'Add',
edit: 'Edit',
delete: 'Delete',
deleteInfo: 'Are you sure you want to delete?',
tip: 'Tip',
factor: 'Factor',
date: 'Date',
is_wos: 'Is Wos',
is_china: 'Is China',
is_china0: '-',
is_china0Info: '-',
is_china1: 'Yes',
is_china2: 'No',
articleInfo: 'Article Information',
articleTitle: 'Article Tiltle',
journalTitle: 'Journal Tiltle',
addInfo: 'Paste the DOI into the input box, confirm that the information is correct, and then click the "Save" button.',
dialogQueryButton: 'Search',
dialogQueryButtonInfo: 'You can click the "Search" on the right to automatically identify and quickly fill in all the current fields',
dialogQueryButtonErrInfo: 'You can click the "Search" on the right to automatically identify and quickly fill in all the current fields',
rulesDoiInfo: 'Please enter Doi',
rulesJournalInfo: 'Please enter the journal title',
rulesAuthorInfo: 'Please enter the author',
rulesVolInfo: 'Please enter the publication time',
rulesArticleInfo: 'Please enter the article title',
authorInfo: 'Six or less authors are required to list all authors while more than six authors are required to list three of them with “et al.”.',
author: 'Author(s)',
publicationTime: 'Year',
publicationTimeInfo: 'Year;Volume(issue):Inclusive page numbers',
},
commonTable: {
add: 'Add',
delete: 'Delete',
reply: 'Reply',
execute: 'Execute',
revoke: 'Revoke',
solve: 'Solve',
cancelsolve: 'Cancel resolved',
Resolved: 'Resolved',
preview: 'Preview',
link: 'Positioning',
Typed: 'Typed',
edit: 'Edit',
rows: 'rows',
columns: 'columns',
table: 'Table',
headerPlaceholder: 'Fill in the header',
typesettingType2: 'Horizontal A4',
typesettingType1: 'Vertical A4',
AnnotationList: 'Annotation List',
Annotations: 'Comments',
exportWord: 'Export Word',
exportImg: 'Export PNG',
PaperRotation: 'Paper Rotation',
removeAnnotations: 'Are you sure you want to delete this Annotation?',
removeProofread: 'Are you sure to delete this suggestion?',
removeContent: 'Are you sure you want to delete this content?',
removeimg: 'Are you sure you want to delete this figure?',
removetable: 'Are you sure you want to delete this table?',
reContent: 'Are you sure you want to restore this content?',
uploadImageInfo: 'Figures can only upload files in JPG, JPEG, and PNG formats!',
selectComment: 'Please select the text to add annotations to!',
selectLinkText: 'Please select the target text content before associating it with a figure or table.',
selectWord: 'Please select only a single word!',
selectOne: 'Please select only a single paragraph!',
alreadyCommented: 'There are already annotations in the text, please select again!',
Multicolumn: 'Multicolumn',
singleRow: "single-row",
Row: "Row",
addRow: "Add Row",
Uncheck: 'Uncheck the paragraph',
ManuscirptAIProofreading: 'Manuscript AI Proofreading',
AIProofreading: 'AI Proofreading',
Association: 'Association',
BatchAddcontent: 'Batch Add content',
MoveUp: 'Move Up',
MoveDown: 'Move Down',
jump: 'Locate',
editAssociation: 'Edit Association',
UnbindAssociation: 'Unbind Association',
selectContent: 'Please select the content to operate first',
},
pendingPayment: {
title: 'Title',
journal: 'Journal',
Paymentamount: 'Payment amount',
subtotal: 'Subtotal',
payment: 'Online Payment',
payDetail: 'Payment Details',
total: 'Original price',
youhui: 'Final price',
discountprice: 'Final price after discount',
youhuiremark: 'Discount description',
submitOrder: 'Make a payment',
state0: 'Pending payment',
state1: 'Payment successfully',
state2: 'Cancelled',
paymentmethod: 'Payment method',
Disbursements: 'Payment amount',
Confirmorderinformation: 'Confirm order information',
orderDetail: 'Order information',
pendingpayment: 'Pending payment',
Paymentsuccessfully: 'Payment successfully',
Paymentstatus: 'Payment status',
time: 'Payment time',
},
PreAccept: {
successInfo: 'Congratulations! Your manuscript has entered into Pre-accept status. Now please check and complete the necessary information of your manuscript for final publication.',
step1: 'Article Processing Charge',
step2: 'Article Proofreading',
step3: 'References',
step: 'step',
Information: 'Fill in information',
startPreAccept: 'Start the pre-acceptance process',
startPreAcceptWithPayment: 'Start the pre-acceptance process and complete your payment',
},
Formula: {
FormulaTemplate: 'Formula Template'
},
AI: {
AISummaryAnalysis: 'AI analysis',
AIKeywords: 'Keywords',
AIAbstract: 'Abstract',
AIAbstractInfo: 'Analysis Result',
},
AIhtmlWeChatPreview: {
"title_english": "Title (English)",
"title_chinese": "Title (Chinese)",
"author": "Author",
"content": "Article Content",
"covered": "Research Fields",
"digest": "Summary",
"research_background": "Research Background",
"research_methods": "Research Method",
"research_result": "Results",
"summarize": "Summarize",
"overview": "Overview",
"highlights": "Highlights",
"discussion": "Discussion",
"prospect": "Future Prospects",
"cite": "Cite",
"journal_content": "Journal Introduction",
"journal_topic": "Journal Topic",
"authors": "Author Information",
"author": "Author",
"author_name": "Author Name",
"author_name_placeholder": "Please enter the author's name",
"company": "Affiliation",
"company_placeholder": "Please enter the author's affiliation",
"email": "Email",
"email_placeholder": "Please enter the author's email",
"icon": "Picture",
"introduction": "Introduction",
"technical": "Technical",
"icon_placeholder": "Please enter the author's avatar URL",
"remove_author": "Remove Author",
"add_author": "Add Author"
},
AIArticleStatus: {
1: 'WeChat AI content generated',
2: 'WeChat AI content not generated',
3: 'The article has been generated, but the draft box has not been pushed yet',
4: 'Draft created but not published',
10: 'WeChat article published successfully',
11: 'WeChat article publishing in progress...',
fail: 'WeChat article publishing failed',
unknown: 'Unknown status'
},
aiReview: {
Explain: 'Explain',
state0: 'Journal Scope Assessment',
state1: 'Journal Scope Explanation',
state2: 'Scientific and Innovative Assessment',
state3: 'Scientific and Innovative Explanation',
state4: 'Contradiction Assessment',
state5: 'Contradiction Explanation',
state6: 'Unreasonable Assessment',
state7: 'Unreasonable Explanation',
state8: 'Ethics Assessment',
state9: 'Ethics Explanation',
state10: 'Academic Misconduct Assessment',
state11: 'Academic Misconduct Explanation',
state12: 'Conclusion Assessment',
state13: 'Conclusion Explanation',
state14: 'Fund Number',
state15: 'Article Hotspot',
state16: 'Review Direction',
state17: 'AI Publishing Suggestion',
state18: 'Review Time',
state19: 'Reference Evaluation',
state20: 'Clinical registration number and informed consent assessment',
state22: 'Other Journal Scope Assessment',
state191: 'Proportion of references from the past three years',
state192: 'Proportion of references from the past five years',
state193: 'Proportion of references from JCR Q1',
state194: 'Proportion of references from JCR Q2',
state21: 'Probability of article being cited',
},
imageTask: {
"title": "Image Task Center",
"completed": "All Tasks Completed",
"preparing": "Preparing {total} images...",
"progress": "Progress: {current} / {total}",
"allDone": "Successfully processed {total} images",
"manualClose": "Tasks completed. Please close manually.",
"parsing": "Parsing...",
"uploading": "Uploading...",
"success": "Success",
"tooLarge": "Too Large (>1MB)",
"error": "Error: {msg}",
"imgLabel": "Img"
},
mailTemplate: {
noTemplateTip: 'No templates are available for the current journal. Please select another journal or go add templates first.',
addTemplateBtn: 'Go add templates',
templateTab: 'Template',
styleTab: 'Style',
loading: 'Loading...',
refresh: 'Refresh'
},
autoPromotion: {
title: 'Auto Promotion',
journal: 'Journal',
logs: 'Promotion History',
saved: 'Saved',
loading: 'Loading...',
refresh: 'Refresh',
autoSolicit: 'Auto Solicitation',
editConfig: 'Edit Configuration',
running: 'Running',
stopped: 'Stopped',
configure: 'Configure',
emailTemplate: 'Email Template',
emailStyle: 'Email Style',
notStarted: 'Auto solicitation plan is not enabled',
notInitializedTip: 'Auto solicitation is not enabled. Please configure template and style first, then enable the plan.',
journalManage: 'Journal Management',
loadListFailed: 'Failed to load journal list',
goConfig: 'Configure',
goManagePlan: 'Manage Plan',
startPlan: 'Start Plan',
startedPlan: 'plan enabled',
updateRetryFailed: 'Update failed, please try again later',
selectTemplateStyleFirst: 'Please select template and style before confirming',
configSaved: 'Configuration saved',
saveFailed: 'Save failed',
notInitializedSwitchTip: 'Auto solicitation is not initialized. Please configure templates first',
planEnabled: 'Plan enabled',
planDisabled: 'Plan disabled',
updateFailed: 'Update failed',
cancel: 'Cancel',
saveAndApply: 'Save and apply configuration',
selectTemplateStyleTitle: 'Choose journal template and style',
clickToChooseTemplate: 'Click to choose journal email template',
noPreview: 'No Preview',
templateName: 'Template Name',
styleName: 'Style Name',
defaultStyle: 'Default',
changeTemplate: 'Change Template',
selectPromotionFields: 'Select Promotion Fields',
choosePromotionFields: 'Choose Fields',
selectPromotionCountry: 'Select Country',
choosePromotionCountry: 'Choose Countries',
selectedCount: 'Selected {count}',
selectAll: 'Select All',
clearAll: 'Clear All',
selectPromotionFieldsTip: 'Multiple selection supported; leave empty for no field restriction.',
selectPromotionCountryTip: 'Multiple selection supported; leave empty for no country restriction. Uses the same API as fields until a dedicated country list is available.',
fieldSearchPlaceholder: 'Search promotion fields',
countrySearchPlaceholder: 'Search countries',
countryQuickZone1: 'Partition 1',
countryQuickZone2: 'Partition 2',
countryQuickZone3: 'Partition 3',
countryQuickChina: 'China',
countryQuickIndia: 'India',
noFieldMatch: 'No matching fields',
noCountryMatch: 'No matching countries',
confirm: 'Confirm',
fieldsSaved: 'Promotion fields saved',
countriesSaved: 'Promotion countries saved',
confirmAndEnable: 'Confirm and Enable',
onlySaveConfig: 'Save configuration only',
enableNowNextDay: 'Enable auto promotion now (starts next day)',
factoryCreateBtn: 'Create automated promotion task',
factoryBatchImportBtn: 'Batch import (JSON)',
factoryBatchImportTitle: 'Batch create tasks (JSON)',
factoryBatchImportHintShort: 'Submit a JSON array; non-empty fields merge into each row. You can still edit JSON.',
factoryBatchImportHint:
'Paste a JSON array… Pick journal (getAllJournal) or type ID; template/style/fetch_ids below override JSON when non-empty. Load promotion fields to tick IDs or type comma-separated fetch_ids; load accounts for j_email_id. expert_type "5" needs partitions/countries. Shorthand: zones, countries, email_id_list.',
factoryBatchImportCommonTip: 'Journal from cover or ID field; non-empty template ID, style ID, or fetch_ids override JSON on every row.',
factoryBatchImportJournalId: 'Journal ID',
factoryBatchImportJournalPick: 'Journal',
factoryBatchImportJournalEmpty: 'No journals returned. Check api/Journal/getAllJournal.',
factoryBatchImportJournalManualPlaceholder: 'Filled when you pick a cover, or type manually',
factoryBatchImportTemplateId: 'Template ID',
factoryBatchImportStyleId: 'Style ID',
factoryBatchImportJournalPlaceholder: 'Merged into payload',
factoryBatchImportTemplatePlaceholder: 'Merged into payload',
factoryBatchImportStylePlaceholder: 'Merged into payload',
factoryBatchImportFetchIdsLabel: 'Promotion fields (fetch_ids)',
factoryBatchImportLoadFields: 'Load available fields',
factoryBatchImportFetchTip: 'Uses current journal: pick journal, then load. Search by name or ID (multiple tokens: space or comma). “Select all” selects the filtered list when search is set, otherwise all fields. Checkboxes sync with the comma text; when non-empty, overrides fetch_ids on every row.',
factoryBatchImportFetchIdsManual: 'Merged IDs (comma-separated, editable)',
factoryBatchImportFetchIdsPlaceholder: 'e.g. 1,2,3 or use checkboxes',
factoryBatchImportNeedJournalForFields: 'Select or enter journal ID first',
factoryBatchImportLoadAccounts: 'Load accounts for journal',
factoryBatchImportAccountsApiTip: 'POST api/email_client/getAccounts with journal_id',
factoryBatchImportColEmailId: 'j_email_id',
factoryBatchImportColAddress: 'Sender address',
factoryBatchImportColQuota: 'Remaining / daily limit',
factoryBatchImportCopyEmailIds: 'Copy email_ids (comma)',
factoryBatchImportNeedJournalForAccounts: 'Enter journal ID first',
factoryBatchImportNoAccounts: 'No mailbox accounts for this journal',
factoryBatchImportAccountsFail: 'Failed to load accounts',
factoryBatchImportCopyEmailIdsEmpty: 'Load the account list first',
factoryBatchImportIdsCopied: 'Copied j_email_id list to clipboard',
factoryBatchImportCopyFail: 'Copy failed; select and copy manually',
factoryBatchImportSyncToJson: 'Apply top form to JSON',
factoryBatchImportSyncFromJson: 'Load first row into form',
factoryBatchImportSyncIncludeEmails: 'When applying, set each row email_ids from loaded accounts',
factoryBatchImportSyncTip: 'You can still edit JSON manually; non-empty top fields are merged again on submit.',
factoryBatchImportJsonFromUiOk: 'JSON updated from the form',
factoryBatchImportUiFromJsonOk: 'Form updated from the first JSON row',
factoryBatchImportRun: 'Run batch create',
factoryBatchImportBadJson: 'Invalid JSON; check brackets and quotes',
factoryBatchImportEmpty: 'Array must contain at least one object',
factoryBatchImportMissing: 'Row {index}: missing field {field}',
factoryBatchImportNeedFetch: 'Row {index}: expert database requires fetch_ids',
factoryBatchImportNeedZone: 'Row {index}: expert database requires target_partitions or target_country_ids',
factoryBatchImportRowFail: 'Row {index} failed: {msg}',
factoryBatchImportRowNetwork: 'Row {index}: request error',
factoryBatchImportDone: 'Done: {ok} succeeded, {fail} failed',
factoryBatchImportErrorsTitle: 'Errors (first 8)',
factoryDialogTitle: 'Create task',
factoryJournal: 'Journal',
factoryJournalPlaceholder: 'Select a journal',
factorySendSettings: 'Sending & scenario',
factoryEmails: 'Sender accounts',
factoryEmailsPlaceholder: 'Select one or more sender accounts',
factorySendCount: 'Send count',
factoryType: 'Scenario',
factoryTypeEditor: 'Editor',
factoryTypeArticle: 'Promote article',
factoryExpertType: 'Expert type',
factoryExpertTypePlaceholder: 'Optional; follow backend rules',
factorySubmit: 'Submit task',
factorySubmitSuccess: 'Factory task created',
factorySubmitFailed: 'Create failed, please try again later',
factoryNeedJournal: 'Please select a journal first',
factoryNeedTemplate: 'Please select email template and style',
factoryNeedEmails: 'Please select at least one sender account',
factoryNeedExpertType: 'Please select target person type',
factoryEmailsPickJournal: 'Select a journal to load sender accounts',
factoryNoAccounts: 'No mailbox accounts for this journal',
factoryAccountRemaining: 'Remaining today',
factorySendMaxFromApi: 'limit: up to {max} per day',
factorySendMaxFallback: 'using mailbox quota sum ~{max} (or default cap)',
factoryStepNav1Title: 'Journal',
factoryStepNav1Desc: 'Select a journal first.',
factoryStepNav2Title: 'Email template and style',
factoryStepNav2Desc: 'Choose template and style.',
factoryStepNav3Title: 'Sending and scenario',
factoryStepNav3Desc: 'Choose accounts, send count, and target type.',
factoryStepNav4Title: 'Promotion fields',
factoryStepNav4Desc: 'Select at least one promotion field.',
factoryStepNav5Title: 'Country',
factoryStepNav5Desc: 'Select at least one country or partition.',
factoryStepNav6Title: 'Confirm and enable',
factoryStepNav6Desc: 'Choose save only or enable next day.',
factoryPromotionFieldsBlockTip: 'Open “Choose fields” and tick at least one item; do not submit with none selected.',
factoryPromotionCountryBlockTip: 'Tick at least one partition or country; do not submit with none selected.',
factoryNeedPromotionFields: 'Select at least one promotion field before submitting.',
factoryNeedPromotionCountry: 'Select at least one partition or country before submitting.',
factoryQuotaLabel: 'Quota',
factoryClickSelectTemplate: 'Click to select email template',
factoryClickConfigureFields: 'Click to configure subject fields',
factoryBtnModify: 'Edit',
factoryBtnReset: 'Reset',
factoryBtnCancel: 'Cancel',
factoryBtnSubmit: 'Submit task',
factoryFillRequired: 'Please complete journal, template, and at least one sender account',
factoryExpertChief: 'Editor-in-Chief',
factoryExpertBoard: 'Editorial board',
factoryExpertYoungBoard: 'Young editorial board',
factoryExpertAuthor: 'Author',
factoryExpertDb: 'Expert database',
factoryExpertReviewer: 'Reviewer',
factoryExpertJump: 'View',
factoryOfficialEmailTip: 'For this type, the system uses the official sender email by default. No account selection is required.',
factoryScenario: 'Scenario',
factoryScenarioPlaceholder: 'Select scenario',
factoryScenarioSolicit: 'Invite Submission',
factoryScenarioPromoteCitation: 'Promote Citation',
factoryScenarioGeneralThanks: 'General Thanks',
createdAt: 'Created at',
noFactoryTask: 'No tasks',
factoryCreateNow: 'Create now',
emailClientCreateTaskBtn: 'Create task',
emailClientCreateTaskNeedFactory: 'Please select a promotion factory task in the dropdown first',
emailClientCreateTaskSuccess: 'Task created',
emailClientCreateTaskFailed: 'Failed to create task',
emailClientCreateTaskPreparingHint: 'Task created. Generating the mailing list may take a few minutes, please wait...'
}
,
autoPromotionLogs: {
detail: 'Auto Promotion Details',
pipelineHistory: 'PIPELINE HISTORY',
factoryTaskSelectPlaceholder: 'Select promotion task',
configured: 'Configured',
editConfig: 'Edit auto promotion configuration',
startConfig: 'Start auto promotion configuration',
notConfigured: 'Not configured',
searchPlaceholder: 'Name / Email',
statusAll: 'All status',
searchBtn: 'Search',
index: 'No.',
taskName: 'Task Name',
taskParams: 'Parameters',
templateIdLabel: 'Template ID',
styleIdLabel: 'Style ID',
deliveryStats: 'Delivery Stats',
totalCount: 'Total',
sentCount: 'Sent',
failCount: 'Failed',
bounceCount: 'Bounce',
noDeliveryIssue: 'No delivery issues',
deliveryIssue: 'Delivery issues',
completedText: 'Completed',
expertInfo: 'Expert Info',
templateStyle: 'Template / Style',
stylePrefix: 'Style',
runAt: 'Execution time',
status: 'Status',
state0: 'Draft',
state1: 'Running',
state2: 'Paused',
state3: 'Completed',
state4: 'Cancelled',
state5: 'Preparing',
paused: 'Paused',
toRun: 'To run',
operation: 'Operation',
preview: 'Preview',
previewAction: 'Preview',
editAction: 'Edit',
enable: 'Enable',
pause: 'Pause',
previewEditTitle: 'Preview and edit promotion email',
logDetailEditTitle: 'Edit promotion send log',
logDetailPreviewTitle: 'Preview promotion send log',
receiver: 'Receiver:',
receiverImmutablePlaceholder: 'Receiver email cannot be changed',
subject: 'Subject:',
subjectPlaceholder: 'Please enter mail subject',
runAtPlaceholder: 'Please select execution time',
cancel: 'Cancel',
confirmEdit: 'Confirm Edit',
mailContentSaved: 'Mail content has been saved. It will be sent with this content.',
templateNotSelected: 'No template selected',
selectTemplateWarning: 'Please select a template before confirming',
configUpdated: 'Configuration updated',
pauseSuccess: 'Paused',
enableSuccess: 'Enabled',
operationFailed: 'Operation failed',
selectTaskForLogs: 'Please select a task first (click the view icon in the list)',
pushLogTitle: 'Task list',
logRefresh: 'Refresh',
taskLogStateFilter: 'Status',
taskLogStateAll: 'All',
taskLogState0: 'Pending',
taskLogState1: 'Sent',
taskLogState2: 'Failed',
taskLogState3: 'Bounced',
taskLogState4: 'Cancelled',
logColIndex: 'No.',
logColExpert: 'Expert',
logColSendTime: 'Sent at',
logColPreparedAt: 'Prepared at',
logColStatus: 'Status',
logColAction: 'Action',
emptyLogs: 'No logs',
viewFailureReason: 'Reason',
editLogTip: 'Edit',
deleteLogTip: 'Delete',
previewLogTip: 'Preview',
logFieldAffiliation: 'Affiliation',
logFieldSubject: 'Subject',
logFieldSendTime: 'Sent at',
logFieldExecutionTime: 'Executed at',
saveDetail: 'Save',
failureReasonTitle: 'Failure reason',
saveDetailSuccess: 'Saved',
saveDetailFailed: 'Save failed',
logDetailLoadFailed: 'Failed to load detail',
logIdMissing: 'Missing log id',
logAlreadySent: 'This record is no longer pending; switched to preview',
deleteLogConfirm: 'Delete this log entry?',
tipTitle: 'Tip',
deleteLogSuccess: 'Deleted',
deleteLogFailed: 'Delete failed',
noFailureReason: 'No failure reason',
deletedSuccess: 'Deleted',
mockPromotionSubject: 'Promotion for {journal}',
mockPromotionContent: '
Dear {name},
Check out our latest journal updates...
' }, tmrEmailEditor: { preview: 'Preview', previewWithVariables: 'Preview (showing variables)', previewWithVariablesTitle: 'Preview (showing variables)', previewWithVariablesHint: 'The expert data is an example, used for variable spelling check only.', close: 'Close', placeholder: 'Please enter email content' } } export default en;