839 lines
23 KiB
TypeScript
839 lines
23 KiB
TypeScript
import type { LocaleType } from './index';
|
||
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
|
||
import { getClientConfig } from '../config/client';
|
||
import { SubmitKey } from '../store/config';
|
||
// if you are adding a new translation, please use PartialLocaleType instead of LocaleType
|
||
|
||
const isApp = !!getClientConfig()?.isApp;
|
||
const en: LocaleType = {
|
||
WIP: 'Coming Soon...',
|
||
Error: {
|
||
Unauthorized: isApp
|
||
? `😆 Oops, there's an issue. No worries:
|
||
\\ 1️⃣ New here? [Click to start chatting now 🚀](${SAAS_CHAT_UTM_URL})
|
||
\\ 2️⃣ Want to use your own OpenAI resources? [Click here](/#/settings) to change settings ⚙️`
|
||
: `😆 Oops, there's an issue. Let's fix it:
|
||
\ 1️⃣ New here? [Click to start chatting now 🚀](${SAAS_CHAT_UTM_URL})
|
||
\ 2️⃣ Using a private setup? [Click here](/#/auth) to enter your key 🔑
|
||
\ 3️⃣ Want to use your own OpenAI resources? [Click here](/#/settings) to change settings ⚙️
|
||
`,
|
||
},
|
||
Auth: {
|
||
Return: 'Return',
|
||
Title: 'Need Access Code',
|
||
Tips: 'Please enter access code below',
|
||
SubTips: 'Or enter your OpenAI or Google API Key',
|
||
Input: 'access code',
|
||
Confirm: 'Confirm',
|
||
Later: 'Later',
|
||
SaasTips: 'Too Complex, Use Immediately Now',
|
||
TopTips:
|
||
'🥳 NextChat AI launch promotion: Instantly unlock the latest models like OpenAI o1, GPT-4o, Claude-3.5!',
|
||
},
|
||
ChatItem: {
|
||
ChatItemCount: (count: number) => `${count} messages`,
|
||
},
|
||
Chat: {
|
||
SubTitle: (count: number) => `${count} messages`,
|
||
EditMessage: {
|
||
Title: 'Edit All Messages',
|
||
Topic: {
|
||
Title: 'Topic',
|
||
SubTitle: 'Change the current topic',
|
||
},
|
||
},
|
||
Actions: {
|
||
ChatList: 'Go To Chat List',
|
||
CompressedHistory: 'Compressed History Memory Prompt',
|
||
Export: 'Export All Messages as Markdown',
|
||
Copy: 'Copy',
|
||
Stop: 'Stop',
|
||
Retry: 'Retry',
|
||
Pin: 'Pin',
|
||
PinToastContent: 'Pinned 1 messages to contextual prompts',
|
||
PinToastAction: 'View',
|
||
Delete: 'Delete',
|
||
Edit: 'Edit',
|
||
FullScreen: 'FullScreen',
|
||
RefreshTitle: 'Refresh Title',
|
||
RefreshToast: 'Title refresh request sent',
|
||
Speech: 'Play',
|
||
StopSpeech: 'Stop',
|
||
},
|
||
Commands: {
|
||
new: 'Start a new chat',
|
||
newm: 'Start a new chat with mask',
|
||
next: 'Next Chat',
|
||
prev: 'Previous Chat',
|
||
clear: 'Clear Context',
|
||
fork: 'Copy Chat',
|
||
del: 'Delete Chat',
|
||
},
|
||
InputActions: {
|
||
Stop: 'Stop',
|
||
ToBottom: 'To Latest',
|
||
Theme: {
|
||
auto: 'Auto',
|
||
light: 'Light Theme',
|
||
dark: 'Dark Theme',
|
||
},
|
||
Prompt: 'Prompts',
|
||
Masks: 'Masks',
|
||
Clear: 'Clear Context',
|
||
Settings: 'Settings',
|
||
UploadImage: 'Upload Images',
|
||
},
|
||
Rename: 'Rename Chat',
|
||
Typing: 'Typing…',
|
||
Input: (submitKey: string) => {
|
||
let inputHints = `${submitKey} to send`;
|
||
if (submitKey === String(SubmitKey.Enter)) {
|
||
inputHints += ', Shift + Enter to wrap';
|
||
}
|
||
return `${inputHints}, / to search prompts, : to use commands`;
|
||
},
|
||
Send: 'Send',
|
||
StartSpeak: 'Start Speak',
|
||
StopSpeak: 'Stop Speak',
|
||
Config: {
|
||
Reset: 'Reset to Default',
|
||
SaveAs: 'Save as Mask',
|
||
},
|
||
IsContext: 'Contextual Prompt',
|
||
ShortcutKey: {
|
||
Title: 'Keyboard Shortcuts',
|
||
newChat: 'Open New Chat',
|
||
focusInput: 'Focus Input Field',
|
||
copyLastMessage: 'Copy Last Reply',
|
||
copyLastCode: 'Copy Last Code Block',
|
||
showShortcutKey: 'Show Shortcuts',
|
||
},
|
||
},
|
||
Export: {
|
||
Title: 'Export Messages',
|
||
Copy: 'Copy All',
|
||
Download: 'Download',
|
||
MessageFromYou: 'Message From You',
|
||
MessageFromChatGPT: 'Message From ChatGPT',
|
||
Share: 'Share to ShareGPT',
|
||
Format: {
|
||
Title: 'Export Format',
|
||
SubTitle: 'Markdown or PNG Image',
|
||
},
|
||
IncludeContext: {
|
||
Title: 'Including Context',
|
||
SubTitle: 'Export context prompts in mask or not',
|
||
},
|
||
Steps: {
|
||
Select: 'Select',
|
||
Preview: 'Preview',
|
||
},
|
||
Image: {
|
||
Toast: 'Capturing Image...',
|
||
Modal: 'Long press or right click to save image',
|
||
},
|
||
Artifacts: {
|
||
Title: 'Share Artifacts',
|
||
Error: 'Share Error',
|
||
},
|
||
},
|
||
Select: {
|
||
Search: 'Search',
|
||
All: 'Select All',
|
||
Latest: 'Select Latest',
|
||
Clear: 'Clear',
|
||
},
|
||
Memory: {
|
||
Title: 'Memory Prompt',
|
||
EmptyContent: 'Nothing yet.',
|
||
Send: 'Send Memory',
|
||
Copy: 'Copy Memory',
|
||
Reset: 'Reset Session',
|
||
ResetConfirm:
|
||
'Resetting will clear the current conversation history and historical memory. Are you sure you want to reset?',
|
||
},
|
||
Home: {
|
||
NewChat: 'New Chat',
|
||
DeleteChat: 'Confirm to delete the selected conversation?',
|
||
DeleteToast: 'Chat Deleted',
|
||
Revert: 'Revert',
|
||
},
|
||
Settings: {
|
||
Title: 'Settings',
|
||
SubTitle: 'All Settings',
|
||
ShowPassword: 'ShowPassword',
|
||
Danger: {
|
||
Reset: {
|
||
Title: 'Reset All Settings',
|
||
SubTitle: 'Reset all setting items to default',
|
||
Action: 'Reset',
|
||
Confirm: 'Confirm to reset all settings to default?',
|
||
},
|
||
Clear: {
|
||
Title: 'Clear All Data',
|
||
SubTitle: 'Clear all messages and settings',
|
||
Action: 'Clear',
|
||
Confirm: 'Confirm to clear all messages and settings?',
|
||
},
|
||
},
|
||
Lang: {
|
||
Name: 'Language', // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
|
||
All: 'All Languages',
|
||
},
|
||
Avatar: 'Avatar',
|
||
FontSize: {
|
||
Title: 'Font Size',
|
||
SubTitle: 'Adjust font size of chat content',
|
||
},
|
||
FontFamily: {
|
||
Title: 'Chat Font Family',
|
||
SubTitle:
|
||
'Font Family of the chat content, leave empty to apply global default font',
|
||
Placeholder: 'Font Family Name',
|
||
},
|
||
InjectSystemPrompts: {
|
||
Title: 'Inject System Prompts',
|
||
SubTitle: 'Inject a global system prompt for every request',
|
||
},
|
||
InputTemplate: {
|
||
Title: 'Input Template',
|
||
SubTitle: 'Newest message will be filled to this template',
|
||
},
|
||
|
||
Update: {
|
||
Version: (x: string) => `Version: ${x}`,
|
||
IsLatest: 'Latest version',
|
||
CheckUpdate: 'Check Update',
|
||
IsChecking: 'Checking update...',
|
||
FoundUpdate: (x: string) => `Found new version: ${x}`,
|
||
GoToUpdate: 'Update',
|
||
Success: 'Update Successful.',
|
||
Failed: 'Update Failed.',
|
||
},
|
||
SendKey: 'Send Key',
|
||
Theme: 'Theme',
|
||
TightBorder: 'Tight Border',
|
||
SendPreviewBubble: {
|
||
Title: 'Send Preview Bubble',
|
||
SubTitle: 'Preview markdown in bubble',
|
||
},
|
||
AutoGenerateTitle: {
|
||
Title: 'Auto Generate Title',
|
||
SubTitle: 'Generate a suitable title based on the conversation content',
|
||
},
|
||
Sync: {
|
||
CloudState: 'Last Update',
|
||
NotSyncYet: 'Not sync yet',
|
||
Success: 'Sync Success',
|
||
Fail: 'Sync Fail',
|
||
|
||
Config: {
|
||
Modal: {
|
||
Title: 'Config Sync',
|
||
Check: 'Check Connection',
|
||
},
|
||
SyncType: {
|
||
Title: 'Sync Type',
|
||
SubTitle: 'Choose your favorite sync service',
|
||
},
|
||
Proxy: {
|
||
Title: 'Enable CORS Proxy',
|
||
SubTitle: 'Enable a proxy to avoid cross-origin restrictions',
|
||
},
|
||
ProxyUrl: {
|
||
Title: 'Proxy Endpoint',
|
||
SubTitle:
|
||
'Only applicable to the built-in CORS proxy for this project',
|
||
},
|
||
|
||
WebDav: {
|
||
Endpoint: 'WebDAV Endpoint',
|
||
UserName: 'User Name',
|
||
Password: 'Password',
|
||
},
|
||
|
||
UpStash: {
|
||
Endpoint: 'UpStash Redis REST Url',
|
||
UserName: 'Backup Name',
|
||
Password: 'UpStash Redis REST Token',
|
||
},
|
||
},
|
||
|
||
LocalState: 'Local Data',
|
||
Overview: (overview: any) => {
|
||
return `${overview.chat} chats,${overview.message} messages,${overview.prompt} prompts,${overview.mask} masks`;
|
||
},
|
||
ImportFailed: 'Failed to import from file',
|
||
},
|
||
Mask: {
|
||
Splash: {
|
||
Title: 'Mask Splash Screen',
|
||
SubTitle: 'Show a mask splash screen before starting new chat',
|
||
},
|
||
Builtin: {
|
||
Title: 'Hide Builtin Masks',
|
||
SubTitle: 'Hide builtin masks in mask list',
|
||
},
|
||
},
|
||
Prompt: {
|
||
Disable: {
|
||
Title: 'Disable auto-completion',
|
||
SubTitle: 'Input / to trigger auto-completion',
|
||
},
|
||
List: 'Prompt List',
|
||
ListCount: (builtin: number, custom: number) =>
|
||
`${builtin} built-in, ${custom} user-defined`,
|
||
Edit: 'Edit',
|
||
Modal: {
|
||
Title: 'Prompt List',
|
||
Add: 'Add One',
|
||
Search: 'Search Prompts',
|
||
},
|
||
EditModal: {
|
||
Title: 'Edit Prompt',
|
||
},
|
||
},
|
||
HistoryCount: {
|
||
Title: 'Attached Messages Count',
|
||
SubTitle: 'Number of sent messages attached per request',
|
||
},
|
||
CompressThreshold: {
|
||
Title: 'History Compression Threshold',
|
||
SubTitle:
|
||
'Will compress if uncompressed messages length exceeds the value',
|
||
},
|
||
|
||
Usage: {
|
||
Title: 'Account Balance',
|
||
SubTitle(used: any, total: any) {
|
||
return `Used this month $${used}, subscription $${total}`;
|
||
},
|
||
IsChecking: 'Checking...',
|
||
Check: 'Check',
|
||
NoAccess: 'Enter API Key to check balance',
|
||
},
|
||
Access: {
|
||
SaasStart: {
|
||
Title: 'Use NextChat AI',
|
||
Label: ' (Most Cost-Effective Option)',
|
||
SubTitle:
|
||
'Maintained by NextChat, zero setup needed, unlock OpenAI o1, GPT-4o,'
|
||
+ ' Claude-3.5 and more',
|
||
ChatNow: 'Start Now',
|
||
},
|
||
AccessCode: {
|
||
Title: 'Access Code',
|
||
SubTitle: 'Access control Enabled',
|
||
Placeholder: 'Enter Code',
|
||
},
|
||
CustomEndpoint: {
|
||
Title: 'Custom Endpoint',
|
||
SubTitle: 'Use custom Azure or OpenAI service',
|
||
},
|
||
Provider: {
|
||
Title: 'Model Provider',
|
||
SubTitle: 'Select Azure or OpenAI',
|
||
},
|
||
OpenAI: {
|
||
ApiKey: {
|
||
Title: 'OpenAI API Key',
|
||
SubTitle: 'User custom OpenAI Api Key',
|
||
Placeholder: 'sk-xxx',
|
||
},
|
||
|
||
Endpoint: {
|
||
Title: 'OpenAI Endpoint',
|
||
SubTitle: 'Must start with http(s):// or use /api/openai as default',
|
||
},
|
||
},
|
||
Azure: {
|
||
ApiKey: {
|
||
Title: 'Azure Api Key',
|
||
SubTitle: 'Check your api key from Azure console',
|
||
Placeholder: 'Azure Api Key',
|
||
},
|
||
|
||
Endpoint: {
|
||
Title: 'Azure Endpoint',
|
||
SubTitle: 'Example: ',
|
||
},
|
||
|
||
ApiVerion: {
|
||
Title: 'Azure Api Version',
|
||
SubTitle: 'Check your api version from azure console',
|
||
},
|
||
},
|
||
Anthropic: {
|
||
ApiKey: {
|
||
Title: 'Anthropic API Key',
|
||
SubTitle:
|
||
'Use a custom Anthropic Key to bypass password access restrictions',
|
||
Placeholder: 'Anthropic API Key',
|
||
},
|
||
|
||
Endpoint: {
|
||
Title: 'Endpoint Address',
|
||
SubTitle: 'Example: ',
|
||
},
|
||
|
||
ApiVerion: {
|
||
Title: 'API Version (claude api version)',
|
||
SubTitle: 'Select and input a specific API version',
|
||
},
|
||
},
|
||
Baidu: {
|
||
ApiKey: {
|
||
Title: 'Baidu API Key',
|
||
SubTitle: 'Use a custom Baidu API Key',
|
||
Placeholder: 'Baidu API Key',
|
||
},
|
||
SecretKey: {
|
||
Title: 'Baidu Secret Key',
|
||
SubTitle: 'Use a custom Baidu Secret Key',
|
||
Placeholder: 'Baidu Secret Key',
|
||
},
|
||
Endpoint: {
|
||
Title: 'Endpoint Address',
|
||
SubTitle: 'not supported, configure in .env',
|
||
},
|
||
},
|
||
Tencent: {
|
||
ApiKey: {
|
||
Title: 'Tencent API Key',
|
||
SubTitle: 'Use a custom Tencent API Key',
|
||
Placeholder: 'Tencent API Key',
|
||
},
|
||
SecretKey: {
|
||
Title: 'Tencent Secret Key',
|
||
SubTitle: 'Use a custom Tencent Secret Key',
|
||
Placeholder: 'Tencent Secret Key',
|
||
},
|
||
Endpoint: {
|
||
Title: 'Endpoint Address',
|
||
SubTitle: 'not supported, configure in .env',
|
||
},
|
||
},
|
||
ByteDance: {
|
||
ApiKey: {
|
||
Title: 'ByteDance API Key',
|
||
SubTitle: 'Use a custom ByteDance API Key',
|
||
Placeholder: 'ByteDance API Key',
|
||
},
|
||
Endpoint: {
|
||
Title: 'Endpoint Address',
|
||
SubTitle: 'Example: ',
|
||
},
|
||
},
|
||
Alibaba: {
|
||
ApiKey: {
|
||
Title: 'Alibaba API Key',
|
||
SubTitle: 'Use a custom Alibaba Cloud API Key',
|
||
Placeholder: 'Alibaba Cloud API Key',
|
||
},
|
||
Endpoint: {
|
||
Title: 'Endpoint Address',
|
||
SubTitle: 'Example: ',
|
||
},
|
||
},
|
||
Moonshot: {
|
||
ApiKey: {
|
||
Title: 'Moonshot API Key',
|
||
SubTitle: 'Use a custom Moonshot API Key',
|
||
Placeholder: 'Moonshot API Key',
|
||
},
|
||
Endpoint: {
|
||
Title: 'Endpoint Address',
|
||
SubTitle: 'Example: ',
|
||
},
|
||
},
|
||
XAI: {
|
||
ApiKey: {
|
||
Title: 'XAI API Key',
|
||
SubTitle: 'Use a custom XAI API Key',
|
||
Placeholder: 'XAI API Key',
|
||
},
|
||
Endpoint: {
|
||
Title: 'Endpoint Address',
|
||
SubTitle: 'Example: ',
|
||
},
|
||
},
|
||
ChatGLM: {
|
||
ApiKey: {
|
||
Title: 'ChatGLM API Key',
|
||
SubTitle: 'Use a custom ChatGLM API Key',
|
||
Placeholder: 'ChatGLM API Key',
|
||
},
|
||
Endpoint: {
|
||
Title: 'Endpoint Address',
|
||
SubTitle: 'Example: ',
|
||
},
|
||
},
|
||
Stability: {
|
||
ApiKey: {
|
||
Title: 'Stability API Key',
|
||
SubTitle: 'Use a custom Stability API Key',
|
||
Placeholder: 'Stability API Key',
|
||
},
|
||
Endpoint: {
|
||
Title: 'Endpoint Address',
|
||
SubTitle: 'Example: ',
|
||
},
|
||
},
|
||
Iflytek: {
|
||
ApiKey: {
|
||
Title: 'Iflytek API Key',
|
||
SubTitle: 'Use a Iflytek API Key',
|
||
Placeholder: 'Iflytek API Key',
|
||
},
|
||
ApiSecret: {
|
||
Title: 'Iflytek API Secret',
|
||
SubTitle: 'Use a Iflytek API Secret',
|
||
Placeholder: 'Iflytek API Secret',
|
||
},
|
||
Endpoint: {
|
||
Title: 'Endpoint Address',
|
||
SubTitle: 'Example: ',
|
||
},
|
||
},
|
||
CustomModel: {
|
||
Title: 'Custom Models',
|
||
SubTitle: 'Custom model options, seperated by comma',
|
||
},
|
||
Google: {
|
||
ApiKey: {
|
||
Title: 'API Key',
|
||
SubTitle: 'Obtain your API Key from Google AI',
|
||
Placeholder: 'Google AI API Key',
|
||
},
|
||
|
||
Endpoint: {
|
||
Title: 'Endpoint Address',
|
||
SubTitle: 'Example: ',
|
||
},
|
||
|
||
ApiVersion: {
|
||
Title: 'API Version (specific to gemini-pro)',
|
||
SubTitle: 'Select a specific API version',
|
||
},
|
||
GoogleSafetySettings: {
|
||
Title: 'Google Safety Settings',
|
||
SubTitle: 'Select a safety filtering level',
|
||
},
|
||
},
|
||
},
|
||
|
||
Model: 'Model',
|
||
CompressModel: {
|
||
Title: 'Summary Model',
|
||
SubTitle: 'Model used to compress history and generate title',
|
||
},
|
||
Temperature: {
|
||
Title: 'Temperature',
|
||
SubTitle: 'A larger value makes the more random output',
|
||
},
|
||
TopP: {
|
||
Title: 'Top P',
|
||
SubTitle: 'Do not alter this value together with temperature',
|
||
},
|
||
MaxTokens: {
|
||
Title: 'Max Tokens',
|
||
SubTitle: 'Maximum length of input tokens and generated tokens',
|
||
},
|
||
PresencePenalty: {
|
||
Title: 'Presence Penalty',
|
||
SubTitle:
|
||
'A larger value increases the likelihood to talk about new topics',
|
||
},
|
||
FrequencyPenalty: {
|
||
Title: 'Frequency Penalty',
|
||
SubTitle:
|
||
'A larger value decreasing the likelihood to repeat the same line',
|
||
},
|
||
TTS: {
|
||
Enable: {
|
||
Title: 'Enable TTS',
|
||
SubTitle: 'Enable text-to-speech service',
|
||
},
|
||
Autoplay: {
|
||
Title: 'Enable Autoplay',
|
||
SubTitle:
|
||
'Automatically generate speech and play, you need to enable the text-to-speech switch first',
|
||
},
|
||
Model: 'Model',
|
||
Voice: {
|
||
Title: 'Voice',
|
||
SubTitle: 'The voice to use when generating the audio',
|
||
},
|
||
Speed: {
|
||
Title: 'Speed',
|
||
SubTitle: 'The speed of the generated audio',
|
||
},
|
||
Engine: 'TTS Engine',
|
||
},
|
||
Realtime: {
|
||
Enable: {
|
||
Title: 'Realtime Chat',
|
||
SubTitle: 'Enable realtime chat feature',
|
||
},
|
||
Provider: {
|
||
Title: 'Model Provider',
|
||
SubTitle: 'Switch between different providers',
|
||
},
|
||
Model: {
|
||
Title: 'Model',
|
||
SubTitle: 'Select a model',
|
||
},
|
||
ApiKey: {
|
||
Title: 'API Key',
|
||
SubTitle: 'API Key',
|
||
Placeholder: 'API Key',
|
||
},
|
||
Azure: {
|
||
Endpoint: {
|
||
Title: 'Endpoint',
|
||
SubTitle: 'Endpoint',
|
||
},
|
||
Deployment: {
|
||
Title: 'Deployment Name',
|
||
SubTitle: 'Deployment Name',
|
||
},
|
||
},
|
||
Temperature: {
|
||
Title: 'Randomness (temperature)',
|
||
SubTitle: 'Higher values result in more random responses',
|
||
},
|
||
},
|
||
},
|
||
Store: {
|
||
DefaultTopic: 'New Conversation',
|
||
BotHello: 'Hello! How can I assist you today?',
|
||
Error: 'Something went wrong, please try again later.',
|
||
Prompt: {
|
||
History: (content: string) =>
|
||
`This is a summary of the chat history as a recap: ${content}`,
|
||
Topic:
|
||
'Please generate a four to five word title summarizing our conversation without any lead-in, punctuation, quotation marks, periods, symbols, bold text, or additional text. Remove enclosing quotation marks.',
|
||
Summarize:
|
||
'Summarize the discussion briefly in 200 words or less to use as a prompt for future context.',
|
||
},
|
||
},
|
||
Copy: {
|
||
Success: 'Copied to clipboard',
|
||
Failed: 'Copy failed, please grant permission to access clipboard',
|
||
},
|
||
Download: {
|
||
Success: 'Content downloaded to your directory.',
|
||
Failed: 'Download failed.',
|
||
},
|
||
Context: {
|
||
Toast: (x: any) => `With ${x} contextual prompts`,
|
||
Edit: 'Current Chat Settings',
|
||
Add: 'Add a Prompt',
|
||
Clear: 'Context Cleared',
|
||
Revert: 'Revert',
|
||
},
|
||
Discovery: {
|
||
Name: 'Discovery',
|
||
},
|
||
FineTuned: {
|
||
Sysmessage: 'You are an assistant that',
|
||
},
|
||
SearchChat: {
|
||
Name: 'Search',
|
||
Page: {
|
||
Title: 'Search Chat History',
|
||
Search: 'Enter search query to search chat history',
|
||
NoResult: 'No results found',
|
||
NoData: 'No data',
|
||
Loading: 'Loading...',
|
||
|
||
SubTitle: (count: number) => `Found ${count} results`,
|
||
},
|
||
Item: {
|
||
View: 'View',
|
||
},
|
||
},
|
||
Plugin: {
|
||
Name: 'Plugin',
|
||
Page: {
|
||
Title: 'Plugins',
|
||
SubTitle: (count: number) => `${count} plugins`,
|
||
Search: 'Search Plugin',
|
||
Create: 'Create',
|
||
Find: 'You can find awesome plugins on github: ',
|
||
},
|
||
Item: {
|
||
Info: (count: number) => `${count} method`,
|
||
View: 'View',
|
||
Edit: 'Edit',
|
||
Delete: 'Delete',
|
||
DeleteConfirm: 'Confirm to delete?',
|
||
},
|
||
Auth: {
|
||
None: 'None',
|
||
Basic: 'Basic',
|
||
Bearer: 'Bearer',
|
||
Custom: 'Custom',
|
||
CustomHeader: 'Parameter Name',
|
||
Token: 'Token',
|
||
Proxy: 'Using Proxy',
|
||
ProxyDescription: 'Using proxies to solve CORS error',
|
||
Location: 'Location',
|
||
LocationHeader: 'Header',
|
||
LocationQuery: 'Query',
|
||
LocationBody: 'Body',
|
||
},
|
||
EditModal: {
|
||
Title: (readonly: boolean) =>
|
||
`Edit Plugin ${readonly ? '(readonly)' : ''}`,
|
||
Download: 'Download',
|
||
Auth: 'Authentication Type',
|
||
Content: 'OpenAPI Schema',
|
||
Load: 'Load From URL',
|
||
Method: 'Method',
|
||
Error: 'OpenAPI Schema Error',
|
||
},
|
||
},
|
||
Mask: {
|
||
Name: 'Mask',
|
||
Page: {
|
||
Title: 'Prompt Template',
|
||
SubTitle: (count: number) => `${count} prompt templates`,
|
||
Search: 'Search Templates',
|
||
Create: 'Create',
|
||
},
|
||
Item: {
|
||
Info: (count: number) => `${count} prompts`,
|
||
Chat: 'Chat',
|
||
View: 'View',
|
||
Edit: 'Edit',
|
||
Delete: 'Delete',
|
||
DeleteConfirm: 'Confirm to delete?',
|
||
},
|
||
EditModal: {
|
||
Title: (readonly: boolean) =>
|
||
`Edit Prompt Template ${readonly ? '(readonly)' : ''}`,
|
||
Download: 'Download',
|
||
Clone: 'Clone',
|
||
},
|
||
Config: {
|
||
Avatar: 'Bot Avatar',
|
||
Name: 'Bot Name',
|
||
Sync: {
|
||
Title: 'Use Global Config',
|
||
SubTitle: 'Use global config in this chat',
|
||
Confirm: 'Confirm to override custom config with global config?',
|
||
},
|
||
HideContext: {
|
||
Title: 'Hide Context Prompts',
|
||
SubTitle: 'Do not show in-context prompts in chat',
|
||
},
|
||
Artifacts: {
|
||
Title: 'Enable Artifacts',
|
||
SubTitle: 'Can render HTML page when enable artifacts.',
|
||
},
|
||
CodeFold: {
|
||
Title: 'Enable CodeFold',
|
||
SubTitle:
|
||
'Automatically collapse/expand overly long code blocks when CodeFold is enabled',
|
||
},
|
||
Share: {
|
||
Title: 'Share This Mask',
|
||
SubTitle: 'Generate a link to this mask',
|
||
Action: 'Copy Link',
|
||
},
|
||
},
|
||
},
|
||
NewChat: {
|
||
Return: 'Return',
|
||
Skip: 'Just Start',
|
||
Title: 'Pick a Mask',
|
||
SubTitle: 'Chat with the Soul behind the Mask',
|
||
More: 'Find More',
|
||
NotShow: 'Never Show Again',
|
||
ConfirmNoShow: 'Confirm to disable?You can enable it in settings later.',
|
||
},
|
||
|
||
UI: {
|
||
Confirm: 'Confirm',
|
||
Cancel: 'Cancel',
|
||
Close: 'Close',
|
||
Create: 'Create',
|
||
Edit: 'Edit',
|
||
Export: 'Export',
|
||
Import: 'Import',
|
||
Sync: 'Sync',
|
||
Config: 'Config',
|
||
},
|
||
Exporter: {
|
||
Description: {
|
||
Title: 'Only messages after clearing the context will be displayed',
|
||
},
|
||
Model: 'Model',
|
||
Messages: 'Messages',
|
||
Topic: 'Topic',
|
||
Time: 'Time',
|
||
},
|
||
URLCommand: {
|
||
Code: 'Detected access code from url, confirm to apply? ',
|
||
Settings: 'Detected settings from url, confirm to apply?',
|
||
},
|
||
SdPanel: {
|
||
Prompt: 'Prompt',
|
||
NegativePrompt: 'Negative Prompt',
|
||
PleaseInput: (name: string) => `Please input ${name}`,
|
||
AspectRatio: 'Aspect Ratio',
|
||
ImageStyle: 'Image Style',
|
||
OutFormat: 'Output Format',
|
||
AIModel: 'AI Model',
|
||
ModelVersion: 'Model Version',
|
||
Submit: 'Submit',
|
||
ParamIsRequired: (name: string) => `${name} is required`,
|
||
Styles: {
|
||
D3Model: '3d-model',
|
||
AnalogFilm: 'analog-film',
|
||
Anime: 'anime',
|
||
Cinematic: 'cinematic',
|
||
ComicBook: 'comic-book',
|
||
DigitalArt: 'digital-art',
|
||
Enhance: 'enhance',
|
||
FantasyArt: 'fantasy-art',
|
||
Isometric: 'isometric',
|
||
LineArt: 'line-art',
|
||
LowPoly: 'low-poly',
|
||
ModelingCompound: 'modeling-compound',
|
||
NeonPunk: 'neon-punk',
|
||
Origami: 'origami',
|
||
Photographic: 'photographic',
|
||
PixelArt: 'pixel-art',
|
||
TileTexture: 'tile-texture',
|
||
},
|
||
},
|
||
Sd: {
|
||
SubTitle: (count: number) => `${count} images`,
|
||
Actions: {
|
||
Params: 'See Params',
|
||
Copy: 'Copy Prompt',
|
||
Delete: 'Delete',
|
||
Retry: 'Retry',
|
||
ReturnHome: 'Return Home',
|
||
History: 'History',
|
||
},
|
||
EmptyRecord: 'No images yet',
|
||
Status: {
|
||
Name: 'Status',
|
||
Success: 'Success',
|
||
Error: 'Error',
|
||
Wait: 'Waiting',
|
||
Running: 'Running',
|
||
},
|
||
Danger: {
|
||
Delete: 'Confirm to delete?',
|
||
},
|
||
GenerateParams: 'Generate Params',
|
||
Detail: 'Detail',
|
||
},
|
||
};
|
||
|
||
export default en;
|