diff --git a/app/locales/uz.ts b/app/locales/uz.ts new file mode 100644 index 000000000..f104ea65c --- /dev/null +++ b/app/locales/uz.ts @@ -0,0 +1,872 @@ +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: "Tez orada...", + Error: { + Unauthorized: isApp + ? `😆 Xatolik yuz berdi. Havotir olmang: + \\ 1️⃣ Yangi foydalanuvchimisiz? [Chatni boshlash uchun shu yerni bosing 🚀](${SAAS_CHAT_UTM_URL}) + \\ 2️⃣ OpenAI resurslaringizdan foydalanmoqchimisiz? [Sozlamalarni o'zgartirish uchun shu yerni bosing](/#/settings) ⚙️` + : `😆 Xatolik yuz berdi. Uni tuzatamiz: + \\ 1️⃣ Yangi foydalanuvchimisiz? [Chatni boshlash uchun shu yerni bosing 🚀](${SAAS_CHAT_UTM_URL}) + \\ 2️⃣ Maxfiy tizimdamisiz? [Kalitni kiritish uchun shu yerni bosing](/#/auth) 🔑 + \\ 3️⃣ OpenAI resurslaringizdan foydalanmoqchimisiz? [Sozlamalarni o'zgartirish uchun shu yerni bosing](/#/settings) ⚙️`, + }, + Auth: { + Return: "Orqaga", + Title: "Kirish kodi kerak", + Tips: "Iltimos, quyidagi kirish kodini kiriting", + SubTips: "Yoki OpenAI yoki Google API kalitini kiriting", + Input: "kirish kodi", + Confirm: "Tasdiqlash", + Later: "Keyinroq", + SaasTips: "Juda murakkab, hoziroq foydalaning", + TopTips: + "🥳 NextChat AI'ning ishga tushirilish aksiyasi: OpenAI o1, GPT-4o, Claude-3.5 kabi so'nggi modellarni darhol oching!", + }, + ChatItem: { + ChatItemCount: (count: number) => `${count} ta xabar`, + }, + Chat: { + SubTitle: (count: number) => `${count} ta xabar`, + EditMessage: { + Title: "Barcha xabarlarni tahrirlash", + Topic: { + Title: "Mavzu", + SubTitle: "Joriy mavzuni o'zgartiring", + }, + }, + Actions: { + ChatList: "Suhbatlar ro'yxatiga o'tish", + CompressedHistory: "Siqilgan tarixiy xotira prompti", + Export: "Barcha xabarlarni Markdown sifatida eksport qilish", + Copy: "Nusxa olish", + Stop: "To'xtatish", + Retry: "Qayta urinib ko'rish", + Pin: "Mahkamlash", + PinToastContent: "1 ta xabar kontekstga biriktirildi", + PinToastAction: "Ko‘rish", + Delete: "O‘chirish", + Edit: "Tahrirlash", + FullScreen: "To‘liq ekran", + RefreshTitle: "Sarlavhani yangilash", + RefreshToast: "Sarlavhani yangilash so‘rovi yuborildi", + Speech: "Ijro etish", + StopSpeech: "To‘xtatish", + }, + + Commands: { + new: "Yangi suhbatni boshlash", + newm: "Maska bilan yangi suhbatni boshlash", + next: "Keyingi suhbat", + prev: "Oldingi suhbat", + clear: "Kontekstni tozalash", + fork: "Suhbatni nusxalash", + del: "Suhbatni o‘chirish", + }, + InputActions: { + Stop: "To‘xtatish", + ToBottom: "Oxirgi xabarga o‘tish", + Theme: { + auto: "Avto", + light: "Yorug‘ mavzu", + dark: "Qorong‘u mavzu", + }, + Prompt: "Promptlar", + Masks: "Maskalar", + Clear: "Kontekstni tozalash", + Settings: "Sozlamalar", + UploadImage: "Rasm yuklash", + }, + + Rename: "Suhbat nomini o‘zgartirish", + Typing: "Yozilmoqda…", + Input: (submitKey: string) => { + var inputHints = `${submitKey} orqali yuboring`; + if (submitKey === String(SubmitKey.Enter)) { + inputHints += ", Shift + Enter — yangi qatordan yozish"; + } + return ( + inputHints + + ", promptlarni izlash uchun /, buyruqlar uchun : dan foydalaning" + ); + }, + + Send: "Yuborish", + StartSpeak: "Gapirishni boshlash", + StopSpeak: "Gapirishni to‘xtatish", + Config: { + Reset: "Standart holatga tiklash", + SaveAs: "Maska sifatida saqlash", + }, + + IsContext: "Kontekstli Prompt", + ShortcutKey: { + Title: "Klaviatura qisqa yo‘llari", + newChat: "Yangi suhbatni ochish", + focusInput: "Kiritish maydoniga fokuslash", + copyLastMessage: "So‘nggi javobni nusxalash", + copyLastCode: "So‘nggi kod blokini nusxalash", + showShortcutKey: "Qisqa yo‘llarni ko‘rsatish", + clearContext: "Kontekstni tozalash", + }, + }, + Export: { + Title: "Xabarlarni eksport qilish", + Copy: "Hammasini nusxalash", + Download: "Yuklab olish", + MessageFromYou: "Sizdan kelgan xabar", + MessageFromChatGPT: "ChatGPTdan kelgan xabar", + Share: "ShareGPTga ulashish", + Format: { + Title: "Eksport formati", + SubTitle: "Markdown yoki PNG tasviri", + }, + IncludeContext: { + Title: "Kontekstni qo'shish", + SubTitle: "Maskada kontekstli so'rovlarni eksport qilish yoki yo'q", + }, + Steps: { + Select: "Tanlash", + Preview: "Ko'rish", + }, + Image: { + Toast: "Rasm olinmoqda...", + Modal: "Rasmni saqlash uchun uzoq bosish yoki o'ng tugmani bosing", + }, + Artifacts: { + Title: "Artefaktlarni ulashish", + Error: "Ulashishda xato yuz berdi", + }, + }, + + Select: { + Search: "Qidirish", + All: "Hammasini tanlash", + Latest: "So'nggisini tanlash", + Clear: "Tozalash", + }, + + Memory: { + Title: "Xotira So‘rovi", + EmptyContent: "Hali hech narsa yo‘q.", + Send: "Xotirani yuborish", + Copy: "Xotirani nusxalash", + Reset: "Sessiyani tiklash", + ResetConfirm: + "Tiklash joriy suhbat tarixini va tarixiy xotirani tozalaydi. Siz rostdan ham tiklamoqchimisiz?", + }, + Home: { + NewChat: "Yangi suhbat", + DeleteChat: "Tanlangan suhbatni o‘chirishni tasdiqlaysizmi?", + DeleteToast: "Suhbat o‘chirildi", + Revert: "Bekor qilish", + }, + 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;