mirror of
				https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
				synced 2025-11-04 08:13:43 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			865 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			865 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { getClientConfig } from "../config/client";
 | 
						||
import { SubmitKey } from "../store/config";
 | 
						||
import { LocaleType } from "./index";
 | 
						||
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
 | 
						||
// 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) => {
 | 
						||
      var 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",
 | 
						||
      clearContext: "Clear Context",
 | 
						||
    },
 | 
						||
  },
 | 
						||
  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: ",
 | 
						||
        },
 | 
						||
      },
 | 
						||
      DeepSeek: {
 | 
						||
        ApiKey: {
 | 
						||
          Title: "DeepSeek API Key",
 | 
						||
          SubTitle: "Use a custom DeepSeek API Key",
 | 
						||
          Placeholder: "DeepSeek 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: ",
 | 
						||
        },
 | 
						||
      },
 | 
						||
      SiliconFlow: {
 | 
						||
        ApiKey: {
 | 
						||
          Title: "SiliconFlow API Key",
 | 
						||
          SubTitle: "Use a custom SiliconFlow API Key",
 | 
						||
          Placeholder: "SiliconFlow 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",
 | 
						||
  },
 | 
						||
  Mcp: {
 | 
						||
    Name: "MCP",
 | 
						||
  },
 | 
						||
  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;
 |