/ web / src / i18n / types.ts
types.ts
  1  export type Locale = "en" | "zh";
  2  
  3  export interface Translations {
  4    // ── Common ──
  5    common: {
  6      save: string;
  7      saving: string;
  8      cancel: string;
  9      close: string;
 10      confirm: string;
 11      delete: string;
 12      refresh: string;
 13      retry: string;
 14      search: string;
 15      loading: string;
 16      create: string;
 17      creating: string;
 18      set: string;
 19      replace: string;
 20      clear: string;
 21      live: string;
 22      off: string;
 23      enabled: string;
 24      disabled: string;
 25      active: string;
 26      inactive: string;
 27      unknown: string;
 28      untitled: string;
 29      none: string;
 30      form: string;
 31      noResults: string;
 32      of: string;
 33      page: string;
 34      msgs: string;
 35      tools: string;
 36      match: string;
 37      other: string;
 38      configured: string;
 39      removed: string;
 40      failedToToggle: string;
 41      failedToRemove: string;
 42      failedToReveal: string;
 43      collapse: string;
 44      expand: string;
 45      general: string;
 46      messaging: string;
 47      pluginLoadFailed: string;
 48      pluginNotRegistered: string;
 49    };
 50  
 51    // ── App shell ──
 52    app: {
 53      brand: string;
 54      brandShort: string;
 55      closeNavigation: string;
 56      closeModelTools: string;
 57      footer: {
 58        org: string;
 59      };
 60      activeSessionsLabel: string;
 61      gatewayStatusLabel: string;
 62      gatewayStrip: {
 63        failed: string;
 64        off: string;
 65        running: string;
 66        starting: string;
 67        stopped: string;
 68      };
 69      nav: {
 70        analytics: string;
 71        chat: string;
 72        config: string;
 73        cron: string;
 74        documentation: string;
 75        keys: string;
 76        logs: string;
 77        models: string;
 78        profiles: string;
 79        plugins: string;
 80        sessions: string;
 81        skills: string;
 82      };
 83      modelToolsSheetSubtitle: string;
 84      modelToolsSheetTitle: string;
 85      navigation: string;
 86      openDocumentation: string;
 87      openNavigation: string;
 88      pluginNavSection: string;
 89      sessionsActiveCount: string;
 90      statusOverview: string;
 91      system: string;
 92      webUi: string;
 93    };
 94  
 95    // ── Status page ──
 96    status: {
 97      actionFailed: string;
 98      actionFinished: string;
 99      actions: string;
100      agent: string;
101      connected: string;
102      connectedPlatforms: string;
103      disconnected: string;
104      error: string;
105      failed: string;
106      gateway: string;
107      gatewayFailedToStart: string;
108      lastUpdate: string;
109      noneRunning: string;
110      notRunning: string;
111      pid: string;
112      platformDisconnected: string;
113      platformError: string;
114      activeSessions: string;
115      recentSessions: string;
116      restartGateway: string;
117      restartingGateway: string;
118      running: string;
119      runningRemote: string;
120      startFailed: string;
121      starting: string;
122      startedInBackground: string;
123      stopped: string;
124      updateHermes: string;
125      updatingHermes: string;
126      waitingForOutput: string;
127    };
128  
129    // ── Sessions page ──
130    sessions: {
131      title: string;
132      searchPlaceholder: string;
133      noSessions: string;
134      noMatch: string;
135      startConversation: string;
136      noMessages: string;
137      untitledSession: string;
138      deleteSession: string;
139      confirmDeleteTitle: string;
140      confirmDeleteMessage: string;
141      sessionDeleted: string;
142      failedToDelete: string;
143      resumeInChat: string;
144      previousPage: string;
145      nextPage: string;
146      roles: {
147        user: string;
148        assistant: string;
149        system: string;
150        tool: string;
151      };
152    };
153  
154    // ── Analytics page ──
155    analytics: {
156      period: string;
157      totalTokens: string;
158      totalSessions: string;
159      apiCalls: string;
160      dailyTokenUsage: string;
161      dailyBreakdown: string;
162      perModelBreakdown: string;
163      topSkills: string;
164      skill: string;
165      loads: string;
166      edits: string;
167      lastUsed: string;
168      input: string;
169      output: string;
170      total: string;
171      noUsageData: string;
172      startSession: string;
173      date: string;
174      model: string;
175      tokens: string;
176      perDayAvg: string;
177      acrossModels: string;
178      inOut: string;
179    };
180  
181    // ── Models page ──
182    models: {
183      modelsUsed: string;
184      estimatedCost: string;
185      tokens: string;
186      sessions: string;
187      avgPerSession: string;
188      apiCalls: string;
189      toolCalls: string;
190      noModelsData: string;
191      startSession: string;
192    };
193  
194    // ── Logs page ──
195    logs: {
196      title: string;
197      autoRefresh: string;
198      file: string;
199      level: string;
200      component: string;
201      lines: string;
202      noLogLines: string;
203    };
204  
205    // ── Cron page ──
206    cron: {
207      confirmDeleteMessage: string;
208      confirmDeleteTitle: string;
209      newJob: string;
210      nameOptional: string;
211      namePlaceholder: string;
212      prompt: string;
213      promptPlaceholder: string;
214      schedule: string;
215      schedulePlaceholder: string;
216      deliverTo: string;
217      scheduledJobs: string;
218      noJobs: string;
219      last: string;
220      next: string;
221      pause: string;
222      resume: string;
223      triggerNow: string;
224      delivery: {
225        local: string;
226        telegram: string;
227        discord: string;
228        slack: string;
229        email: string;
230      };
231    };
232  
233    // ── Plugins page ──
234    pluginsPage: {
235      contextEngineLabel: string;
236      dashboardSlots: string;
237      disableRuntime: string;
238      enableAfterInstall: string;
239      enableRuntime: string;
240      forceReinstall: string;
241      headline: string;
242      identifierLabel: string;
243      inactive: string;
244      installBtn: string;
245      installHeading: string;
246      installHint: string;
247      memoryProviderLabel: string;
248      missingEnvWarn: string;
249      noDashboardTab: string;
250      openTab: string;
251      orphanHeading: string;
252      pluginListHeading: string;
253      providerDefaults: string;
254      providersHeading: string;
255      providersHint: string;
256      refreshDashboard: string;
257      removeConfirm: string;
258      removeHint: string;
259      rescanHeading: string;
260      rescanHint: string;
261      runtimeHeading: string;
262      saveProviders: string;
263      savedProviders: string;
264      sourceBadge: string;
265      authRequired: string;
266      authRequiredHint: string;
267      updateGit: string;
268      versionBadge: string;
269      showInSidebar: string;
270      hideFromSidebar: string;
271    };
272  
273    // ── Profiles page ──
274    profiles: {
275      newProfile: string;
276      name: string;
277      namePlaceholder: string;
278      nameRequired: string;
279      nameRule: string;
280      invalidName: string;
281      cloneFromDefault: string;
282      allProfiles: string;
283      noProfiles: string;
284      defaultBadge: string;
285      hasEnv: string;
286      model: string;
287      skills: string;
288      rename: string;
289      editSoul: string;
290      soulSection: string;
291      soulPlaceholder: string;
292      saveSoul: string;
293      soulSaved: string;
294      openInTerminal: string;
295      commandCopied: string;
296      copyFailed: string;
297      confirmDeleteTitle: string;
298      confirmDeleteMessage: string;
299      created: string;
300      deleted: string;
301      renamed: string;
302    };
303  
304    // ── Skills page ──
305    skills: {
306      title: string;
307      searchPlaceholder: string;
308      enabledOf: string;
309      all: string;
310      categories: string;
311      filters: string;
312      noSkills: string;
313      noSkillsMatch: string;
314      skillCount: string;
315      resultCount: string;
316      noDescription: string;
317      toolsets: string;
318      toolsetLabel: string;
319      noToolsetsMatch: string;
320      setupNeeded: string;
321      disabledForCli: string;
322      more: string;
323    };
324  
325    // ── Config page ──
326    config: {
327      configPath: string;
328      filters: string;
329      sections: string;
330      exportConfig: string;
331      importConfig: string;
332      resetDefaults: string;
333      resetScopeTooltip: string;
334      confirmResetScope: string;
335      resetScopeToast: string;
336      rawYaml: string;
337      searchResults: string;
338      fields: string;
339      noFieldsMatch: string;
340      configSaved: string;
341      yamlConfigSaved: string;
342      failedToSave: string;
343      failedToSaveYaml: string;
344      failedToLoadRaw: string;
345      configImported: string;
346      invalidJson: string;
347      categories: {
348        general: string;
349        agent: string;
350        terminal: string;
351        display: string;
352        delegation: string;
353        memory: string;
354        compression: string;
355        security: string;
356        browser: string;
357        voice: string;
358        tts: string;
359        stt: string;
360        logging: string;
361        discord: string;
362        auxiliary: string;
363      };
364    };
365  
366    // ── Env / Keys page ──
367    env: {
368      changesNote: string;
369      confirmClearMessage: string;
370      confirmClearTitle: string;
371      description: string;
372      enterValue: string;
373      getKey: string;
374      hideAdvanced: string;
375      hideValue: string;
376      keysCount: string;
377      llmProviders: string;
378      notConfigured: string;
379      notSet: string;
380      providersConfigured: string;
381      replaceCurrentValue: string;
382      showAdvanced: string;
383      showValue: string;
384    };
385  
386    // ── OAuth ──
387    oauth: {
388      title: string;
389      providerLogins: string;
390      description: string;
391      connected: string;
392      expired: string;
393      notConnected: string;
394      runInTerminal: string;
395      noProviders: string;
396      login: string;
397      disconnect: string;
398      managedExternally: string;
399      copied: string;
400      cli: string;
401      copyCliCommand: string;
402      connect: string;
403      sessionExpires: string;
404      initiatingLogin: string;
405      exchangingCode: string;
406      connectedClosing: string;
407      loginFailed: string;
408      sessionExpired: string;
409      reOpenAuth: string;
410      reOpenVerification: string;
411      submitCode: string;
412      pasteCode: string;
413      waitingAuth: string;
414      enterCodePrompt: string;
415      pkceStep1: string;
416      pkceStep2: string;
417      pkceStep3: string;
418      flowLabels: {
419        pkce: string;
420        device_code: string;
421        external: string;
422      };
423      expiresIn: string;
424    };
425  
426    // ── Language switcher ──
427    language: {
428      switchTo: string;
429    };
430  
431    // ── Theme switcher ──
432    theme: {
433      title: string;
434      switchTheme: string;
435    };
436  }