{{ titles[page][0] }}
{{ titles[page][1] }}
EN
中文
{{ t('nav.logout') }}
{{ greeting }}, {{ user.name }}
{{ today }} · {{ statsText }}
⚙ {{ t('wg.choose') }}
{{ t('wg.tasks') }}
{{ t('wg.open') }}{{ widgets.data.tasks.assigned }}{{ t('wg.inProgress') }}
{{ widgets.data.tasks.pool }}{{ t('wg.unassigned') }}
{{ widgets.data.tasks.dueSoon }}{{ t('wg.dueSoon') }}
{{ widgets.data.tasks.overdue }}{{ t('wg.overdue') }}
{{ widgets.data.tasks.done }} / {{ totalTasks }} {{ t('wg.done') }}
{{ t('wg.timeline') }}
{{ e.title }}
{{ e.kind === 'task' ? t('wg.task') : t('wg.approval') }} · {{ e.detail }} · {{ shortDate(e.ts) }}
—
{{ t('wg.mail') }}
{{ t('wg.open') }}{{ widgets.data.mail.unread === null ? '—' : widgets.data.mail.unread }}
{{ mailUnit }}
{{ t('wg.meetings') }}
{{ t('wg.open') }}{{ m.title }}
{{ shortDate(m.starts_at) }} · {{ m.room }}
{{ t('wg.noMeeting') }}
{{ t('wg.groupFiles') }} · {{ widgets.data.groupFiles.dept }}
{{ t('wg.open') }}{{ widgets.data.groupFiles.count }}
{{ t('wg.newIn7d') }}
· {{ f.name }}
{{ t('wg.users') }}
{{ t('wg.open') }}{{ widgets.admin.users.total }}{{ t('wg.totalUsers') }}
{{ widgets.admin.users.yesterday }}{{ t('wg.yesterday') }}
{{ widgets.admin.users.active7 }}{{ t('wg.active7') }}
{{ widgets.admin.users.never }}{{ t('wg.never') }}
{{ t('wg.system') }}
{{ t('dash.refresh') }}
{{ t('wg.cpu') }}
{{ pct(widgets.admin.system.now.cpu) }}%
{{ t('wg.ram') }}
{{ pct(widgets.admin.system.now.mem) }}%
{{ t('wg.disk') }}
{{ pct(widgets.admin.system.disk.percent) }}%
| {{ t('wg.window') }} | {{ t('wg.cpu') }} | {{ t('wg.ram') }} |
|---|---|---|
| 1H | {{ pct(widgets.admin.system.h1.cpu) }}% | {{ pct(widgets.admin.system.h1.mem) }}% |
| 4H | {{ pct(widgets.admin.system.h4.cpu) }}% | {{ pct(widgets.admin.system.h4.mem) }}% |
| 24H | {{ pct(widgets.admin.system.h24.cpu) }}% | {{ pct(widgets.admin.system.h24.mem) }}% |
{{ t('apv.pending') }}
{{ apvPending.length }}
{{ a.title }}
{{ a.requester }} · {{ shortDate(a.created_at) }}
{{ a.file_name }}
{{ t('dash.systemStatus') }}
{{ t('dash.fileEngine') }}
Nextcloud
{{ health.nextcloud ? t('dash.normal') : t('dash.abnormal') }}
{{ t('dash.mailAccess') }}
{{ mailAccounts.length ? (mailAccounts.length + ' ' + t('dash.accounts')) : t('dash.notConfigured') }}
{{ mailAccounts.length ? t('dash.normal') : t('dash.notConfigured') }}
{{ t('dash.meetingService') }}
LiveKit
{{ lkJoined ? t('dash.inMeeting') : t('dash.ready') }}
{{ t('mail.setupTitle') }}
{{ t('mail.noAccount') }}
{{ t('mail.folders') }}
⚙
{{ folderLabel(f) }}
{{ a.label }}{{ a.username }}
{{ mailSel.length }}
{{ mailLoading ? t('dash.loading') : (mailList.length + ' ' + t('mail.messages')) }}
{{ t('mail.refresh') }}
+ {{ t('mail.compose') }}
{{ m.fromName }}
{{ shortDate(m.date) }}
{{ m.subject }}
{{ m.fromAddr }} · {{ m.attachments }}
{{ t('mail.empty') }}
{{ t('mail.pickOne') }}
{{ t('mail.dblHint') }}
{{ t('mail.dblHint') }}
{{ mailCur.subject }}
{{ mailCur.fromName }}
<{{ mailCur.fromAddr }}>
{{ shortDate(mailCur.date) }} · {{ t('mail.recipients') }} {{ mailCur.to }}
{{ shortDate(mailCur.date) }} · {{ t('mail.recipients') }} {{ mailCur.to }}
{{ mailCur.body || t('mail.noBody') }}
{{ a.filename }}
{{ formatSize(a.size) }}
{{ mailCur.subject }}
{{ mailCur.fromName }}
<{{ mailCur.fromAddr }}>
{{ shortDate(mailCur.date) }} · {{ t('mail.recipients') }} {{ mailCur.to }}
{{ shortDate(mailCur.date) }} · {{ t('mail.recipients') }} {{ mailCur.to }}
{{ mailCur.body || t('mail.noBody') }}
{{ a.filename }}
{{ formatSize(a.size) }}
{{ wsCollapsed.mine ? '▸' : '▾' }}
{{ t('ws.myFolder') }}
{{ personalFiles.length }}
{{ f.name }}
⇧
—
{{ wsCollapsed.group ? '▸' : '▾' }}
{{ t('ws.groupFolder') }} · {{ dept }}
{{ groupFiles.length }}
{{ f.name }}
⇧
—
{{ wsCollapsed.other ? '▸' : '▾' }}
{{ t('ws.other') }}{{ otherFolders.length }}
▸{{ f.name }}
{{ t('ws.tip') }}
{{ t('ws.tipText') }}
{{ t('ws.pool') }}
{{ t('ws.dragToMember') }}{{ t2.title }}
{{ t2.content }}
{{ t2.start_date }}
→
{{ t2.due_date }}
{{ t('ws.overdue') }}
{{ daysLeft(t2) }} {{ t('ws.daysLeft') }}
{{ a.name }}
{{ t('ws.allAssigned') }}
{{ t('ws.members') }}
{{ t('ws.dropOnPerson') }}{{ initialsOf(m.name) }}
{{ m.name }}
{{ pendingCount(m.name) }} {{ t('ws.items') }}
{{ t('ws.pendingTitle') }}
{{ pending.length ? (pending.length + ' ' + t('ws.items')) : t('ws.pendingHint') }}
{{ p.task }}→
{{ p.names.join(', ') }}
×
{{ t('ws.noPending') }}
{{ submitInfo }}
{{ t('apv.pending') }}
{{ apvPending.length }}
{{ a.title }}
{{ a.requester }} · {{ shortDate(a.created_at) }}
{{ a.file_name }}
{{ t('apv.mine') }}
{{ apvMine.length }}
{{ a.title }}
{{ a.approver }} · {{ shortDate(a.decided_at || a.created_at) }}
{{ a.file_name }}
{{ t('ws.assigned') }}
{{ assigned.length }}
{{ a.title }}
{{ a.content }}
{{ f.name }}
{{ t('ws.notified') }}
{{ t('ws.inProgress') }}
✎
{{ t('ws.noAssigned') }}
{{ t('meet.title') }}
{{ t('meet.hint') }}
{{ lkMsg }}
{{ t('meet.devices') }}
⟳ {{ t('dash.refresh') }}
{{ t('meet.devHint') }}
{{ t('meet.schedule') }}
{{ t('meet.upcoming') }}
{{ m.title }}
{{ shortDate(m.starts_at) }} · {{ m.room }}
{{ t('meet.noUpcoming') }}
{{ t('meet.inMeeting') }} · {{ lkRoom }} · {{ lkCount }} {{ t('meet.people') }}
{{ t('wb.pen') }}
{{ t('wb.size') }}
{{ t('wb.dropHint') }}
{{ calTitle }}
{{ t('cal.meeting') }}
{{ t('cal.taskDue') }}
{{ w }}
{{ c.day }}
{{ e.time }} {{ e.title }}
{{ t('admin.users') }}
{{ t('adm.groups') }}
{{ t('admin.identity') }}
{{ t('adm.federation') }}
{{ t('admin.mail') }}
{{ t('admin.params') }}
{{ t('adm.chatLogs') }}
{{ t('admin.newUser') }}
✓ {{ t('adm.created') }}
{{ t('adm.credentials') }}
{{ t('login.account') }}{{ admCreated.id }}
{{ t('login.password') }}{{ admCreated.password }}
{{ t('admin.email') }}{{ admCreated.email }}
| {{ t('admin.id') }} | {{ t('admin.name') }} | {{ t('admin.quota') }} | {{ t('apv.manager') }} | {{ t('admin.lastLogin') }} | |
|---|---|---|---|---|---|
| {{ u.id }}{{ t('admin.you') }} | {{ u.name }} | {{ u.quota ? formatSize(u.quota) : '—' }} | {{ u.manager || '—' }} | {{ u.lastLogin ? shortDate(new Date(u.lastLogin).toISOString()) : t('admin.never') }} | {{ u.enabled ? t('admin.enabled') : t('admin.disabled') }} |
{{ t('adm.newGroup') }}
| {{ t('adm.groupId') }} | {{ t('adm.members') }} | |
|---|---|---|
| {{ g.id }} | {{ g.members }} | system |
{{ t('dash.loading') }}
{{ t('admin.identityMode') }}
{{ identityHint }}
{{ t('adm.emailAsUserHint') }}
LDAP / Active Directory
{{ t('adm.fedTopology') }}
{{ t('adm.fedHint') }}
{{ t('adm.fedHomeHint') }}
{{ t('adm.fedLinks') }}
{{ t('adm.fedProbeAll') }}
{{ t('adm.fedLinkHint') }}
| {{ t('adm.fedLink') }} | {{ t('adm.fedEnabled') }} | {{ t('adm.fedAuthKey') }} | {{ t('adm.fedState') }} |
|---|---|---|---|
| {{ fedName(l.a) }} ↔ {{ fedName(l.b) }} |
|
{{ fedState[linkOther(l)].ok ? (fedState[linkOther(l)].via === 'lan' ? 'IPSec' : 'WAN') : fedState[linkOther(l)].reason }} — — |
{{ t('adm.fedLinkKeyHint') }}
{{ t('adm.fedCompanies') }}
| {{ t('adm.fedCompany') }} | {{ t('adm.fedDomain') }} | IPSec | {{ t('adm.fedWan') }} | {{ t('adm.fedState') }} | |
|---|---|---|---|---|---|
| {{ c.name }} home | {{ c.domain || '—' }} | local {{ fedState[c.code].ok ? (fedState[c.code].via === 'lan' ? 'IPSec' : 'WAN') : fedState[c.code].reason }} · {{ fedState[c.code].ms }}ms — |
{{ t('adm.fedFileHint') }}
{{ t('admin.mail') }}
{{ t('adm.mailImapOnly') }}
{{ t('admin.params') }}
{{ t('adm.chatLogs') }}
{{ t('dash.refresh') }}
| Conversation | {{ t('adm.messages') }} | Last | |
|---|---|---|---|
| {{ c.id }} | {{ c.total }} | {{ shortDate(c.last_at) }} |
{{ t('adm.noChats') }}
{{ admMsg }}
{{ t('dash.loading') }}