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;