style: eslint 规则同步代码格式

This commit is contained in:
ocean-gao
2024-12-20 13:21:52 +08:00
parent 161fa63b02
commit 4b4fe29118
161 changed files with 12206 additions and 11827 deletions

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import type { PartialLocaleType } from "./index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from './index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const ar: PartialLocaleType = {
WIP: "قريبًا...",
WIP: 'قريبًا...',
Error: {
Unauthorized: isApp
? `😆 واجهت المحادثة بعض المشكلات، لا داعي للقلق:
@@ -18,16 +19,16 @@ const ar: PartialLocaleType = {
`,
},
Auth: {
Title: "تحتاج إلى كلمة مرور",
Tips: "قام المشرف بتفعيل التحقق بكلمة المرور، يرجى إدخال رمز الوصول أدناه",
SubTips: "أو إدخال مفتاح API الخاص بـ OpenAI أو Google",
Input: "أدخل رمز الوصول هنا",
Confirm: "تأكيد",
Later: "في وقت لاحق",
Return: "عودة",
SaasTips: "الإعدادات معقدة، أريد استخدامه على الفور",
Title: 'تحتاج إلى كلمة مرور',
Tips: 'قام المشرف بتفعيل التحقق بكلمة المرور، يرجى إدخال رمز الوصول أدناه',
SubTips: 'أو إدخال مفتاح API الخاص بـ OpenAI أو Google',
Input: 'أدخل رمز الوصول هنا',
Confirm: 'تأكيد',
Later: 'في وقت لاحق',
Return: 'عودة',
SaasTips: 'الإعدادات معقدة، أريد استخدامه على الفور',
TopTips:
"🥳 عرض NextChat AI الأول، افتح الآن OpenAI o1, GPT-4o, Claude-3.5 وأحدث النماذج الكبيرة",
'🥳 عرض NextChat AI الأول، افتح الآن OpenAI o1, GPT-4o, Claude-3.5 وأحدث النماذج الكبيرة',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} محادثة`,
@@ -35,545 +36,545 @@ const ar: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `إجمالي ${count} محادثة`,
EditMessage: {
Title: "تحرير سجل الرسائل",
Title: 'تحرير سجل الرسائل',
Topic: {
Title: "موضوع الدردشة",
SubTitle: "تغيير موضوع الدردشة الحالي",
Title: 'موضوع الدردشة',
SubTitle: 'تغيير موضوع الدردشة الحالي',
},
},
Actions: {
ChatList: "عرض قائمة الرسائل",
CompressedHistory: "عرض التاريخ المضغوط",
Export: "تصدير سجل الدردشة",
Copy: "نسخ",
Stop: "إيقاف",
Retry: "إعادة المحاولة",
Pin: "تثبيت",
PinToastContent: "تم تثبيت 1 محادثة في الإشعارات المسبقة",
PinToastAction: "عرض",
Delete: "حذف",
Edit: "تحرير",
RefreshTitle: "تحديث العنوان",
RefreshToast: "تم إرسال طلب تحديث العنوان",
ChatList: 'عرض قائمة الرسائل',
CompressedHistory: 'عرض التاريخ المضغوط',
Export: 'تصدير سجل الدردشة',
Copy: 'نسخ',
Stop: 'إيقاف',
Retry: 'إعادة المحاولة',
Pin: 'تثبيت',
PinToastContent: 'تم تثبيت 1 محادثة في الإشعارات المسبقة',
PinToastAction: 'عرض',
Delete: 'حذف',
Edit: 'تحرير',
RefreshTitle: 'تحديث العنوان',
RefreshToast: 'تم إرسال طلب تحديث العنوان',
},
Commands: {
new: "دردشة جديدة",
newm: "إنشاء دردشة من القناع",
next: "الدردشة التالية",
prev: "الدردشة السابقة",
clear: "مسح السياق",
del: "حذف الدردشة",
new: 'دردشة جديدة',
newm: 'إنشاء دردشة من القناع',
next: 'الدردشة التالية',
prev: 'الدردشة السابقة',
clear: 'مسح السياق',
del: 'حذف الدردشة',
},
InputActions: {
Stop: "إيقاف الاستجابة",
ToBottom: "الانتقال إلى الأحدث",
Stop: 'إيقاف الاستجابة',
ToBottom: 'الانتقال إلى الأحدث',
Theme: {
auto: "موضوع تلقائي",
light: "الوضع الفاتح",
dark: "الوضع الداكن",
auto: 'موضوع تلقائي',
light: 'الوضع الفاتح',
dark: 'الوضع الداكن',
},
Prompt: "الأوامر السريعة",
Masks: "جميع الأقنعة",
Clear: "مسح الدردشة",
Settings: "إعدادات الدردشة",
UploadImage: "تحميل صورة",
Prompt: 'الأوامر السريعة',
Masks: 'جميع الأقنعة',
Clear: 'مسح الدردشة',
Settings: 'إعدادات الدردشة',
UploadImage: 'تحميل صورة',
},
Rename: "إعادة تسمية الدردشة",
Typing: "يكتب…",
Rename: 'إعادة تسمية الدردشة',
Typing: 'يكتب…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} إرسال`;
let inputHints = `${submitKey} إرسال`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "، Shift + Enter لإدراج سطر جديد";
inputHints += '، Shift + Enter لإدراج سطر جديد';
}
return inputHints + "، / لتفعيل الإكمال التلقائي، : لتفعيل الأوامر";
return `${inputHints}، / لتفعيل الإكمال التلقائي، : لتفعيل الأوامر`;
},
Send: "إرسال",
Send: 'إرسال',
Config: {
Reset: "مسح الذاكرة",
SaveAs: "حفظ كقناع",
Reset: 'مسح الذاكرة',
SaveAs: 'حفظ كقناع',
},
IsContext: "الإشعارات المسبقة",
IsContext: 'الإشعارات المسبقة',
},
Export: {
Title: "مشاركة سجل الدردشة",
Copy: "نسخ الكل",
Download: "تحميل الملف",
Share: "مشاركة على ShareGPT",
MessageFromYou: "المستخدم",
MessageFromChatGPT: "ChatGPT",
Title: 'مشاركة سجل الدردشة',
Copy: 'نسخ الكل',
Download: 'تحميل الملف',
Share: 'مشاركة على ShareGPT',
MessageFromYou: 'المستخدم',
MessageFromChatGPT: 'ChatGPT',
Format: {
Title: "تنسيق التصدير",
SubTitle: "يمكنك تصدير النص كـ Markdown أو صورة PNG",
Title: 'تنسيق التصدير',
SubTitle: 'يمكنك تصدير النص كـ Markdown أو صورة PNG',
},
IncludeContext: {
Title: "تضمين سياق القناع",
SubTitle: "هل تريد عرض سياق القناع في الرسائل",
Title: 'تضمين سياق القناع',
SubTitle: 'هل تريد عرض سياق القناع في الرسائل',
},
Steps: {
Select: "اختيار",
Preview: "معاينة",
Select: 'اختيار',
Preview: 'معاينة',
},
Image: {
Toast: "يتم إنشاء لقطة الشاشة",
Modal: "اضغط مطولاً أو انقر بزر الماوس الأيمن لحفظ الصورة",
Toast: 'يتم إنشاء لقطة الشاشة',
Modal: 'اضغط مطولاً أو انقر بزر الماوس الأيمن لحفظ الصورة',
},
},
Select: {
Search: "بحث في الرسائل",
All: "تحديد الكل",
Latest: "أحدث الرسائل",
Clear: "مسح التحديد",
Search: 'بحث في الرسائل',
All: 'تحديد الكل',
Latest: 'أحدث الرسائل',
Clear: 'مسح التحديد',
},
Memory: {
Title: "ملخص التاريخ",
EmptyContent: "محتوى المحادثة قصير جداً، لا حاجة للتلخيص",
Send: "ضغط تلقائي لسجل الدردشة كـ سياق",
Copy: "نسخ الملخص",
Reset: "[غير مستخدم]",
ResetConfirm: "تأكيد مسح ملخص التاريخ؟",
Title: 'ملخص التاريخ',
EmptyContent: 'محتوى المحادثة قصير جداً، لا حاجة للتلخيص',
Send: 'ضغط تلقائي لسجل الدردشة كـ سياق',
Copy: 'نسخ الملخص',
Reset: '[غير مستخدم]',
ResetConfirm: 'تأكيد مسح ملخص التاريخ؟',
},
Home: {
NewChat: "دردشة جديدة",
DeleteChat: "تأكيد حذف المحادثة المحددة؟",
DeleteToast: "تم حذف المحادثة",
Revert: "تراجع",
NewChat: 'دردشة جديدة',
DeleteChat: 'تأكيد حذف المحادثة المحددة؟',
DeleteToast: 'تم حذف المحادثة',
Revert: 'تراجع',
},
Settings: {
Title: "الإعدادات",
SubTitle: "جميع خيارات الإعدادات",
Title: 'الإعدادات',
SubTitle: 'جميع خيارات الإعدادات',
Danger: {
Reset: {
Title: "إعادة تعيين جميع الإعدادات",
SubTitle: "إعادة تعيين جميع عناصر الإعدادات إلى القيم الافتراضية",
Action: "إعادة التعيين الآن",
Confirm: "تأكيد إعادة تعيين جميع الإعدادات؟",
Title: 'إعادة تعيين جميع الإعدادات',
SubTitle: 'إعادة تعيين جميع عناصر الإعدادات إلى القيم الافتراضية',
Action: 'إعادة التعيين الآن',
Confirm: 'تأكيد إعادة تعيين جميع الإعدادات؟',
},
Clear: {
Title: "مسح جميع البيانات",
SubTitle: "مسح جميع الدردشات وبيانات الإعدادات",
Action: "مسح الآن",
Confirm: "تأكيد مسح جميع الدردشات وبيانات الإعدادات؟",
Title: 'مسح جميع البيانات',
SubTitle: 'مسح جميع الدردشات وبيانات الإعدادات',
Action: 'مسح الآن',
Confirm: 'تأكيد مسح جميع الدردشات وبيانات الإعدادات؟',
},
},
Lang: {
Name: "Language", // انتبه: إذا كنت ترغب في إضافة ترجمة جديدة، يرجى عدم ترجمة هذه القيمة، اتركها كما هي "Language"
All: "جميع اللغات",
Name: 'Language', // انتبه: إذا كنت ترغب في إضافة ترجمة جديدة، يرجى عدم ترجمة هذه القيمة، اتركها كما هي "Language"
All: 'جميع اللغات',
},
Avatar: "الصورة الشخصية",
Avatar: 'الصورة الشخصية',
FontSize: {
Title: "حجم الخط",
SubTitle: "حجم الخط في محتوى الدردشة",
Title: 'حجم الخط',
SubTitle: 'حجم الخط في محتوى الدردشة',
},
FontFamily: {
Title: "خط الدردشة",
SubTitle: "خط محتوى الدردشة، اتركه فارغًا لتطبيق الخط الافتراضي العالمي",
Placeholder: "اسم الخط",
Title: 'خط الدردشة',
SubTitle: 'خط محتوى الدردشة، اتركه فارغًا لتطبيق الخط الافتراضي العالمي',
Placeholder: 'اسم الخط',
},
InjectSystemPrompts: {
Title: "حقن الرسائل النصية النظامية",
Title: 'حقن الرسائل النصية النظامية',
SubTitle:
"فرض إضافة رسالة نظامية تحاكي ChatGPT في بداية قائمة الرسائل لكل طلب",
'فرض إضافة رسالة نظامية تحاكي ChatGPT في بداية قائمة الرسائل لكل طلب',
},
InputTemplate: {
Title: "معالجة الإدخال من قبل المستخدم",
SubTitle: "سيتم ملء آخر رسالة من المستخدم في هذا القالب",
Title: 'معالجة الإدخال من قبل المستخدم',
SubTitle: 'سيتم ملء آخر رسالة من المستخدم في هذا القالب',
},
Update: {
Version: (x: string) => `الإصدار الحالي: ${x}`,
IsLatest: "أنت على أحدث إصدار",
CheckUpdate: "التحقق من التحديثات",
IsChecking: "جارٍ التحقق من التحديثات...",
IsLatest: 'أنت على أحدث إصدار',
CheckUpdate: 'التحقق من التحديثات',
IsChecking: 'جارٍ التحقق من التحديثات...',
FoundUpdate: (x: string) => `تم العثور على إصدار جديد: ${x}`,
GoToUpdate: "انتقل للتحديث",
GoToUpdate: 'انتقل للتحديث',
},
SendKey: "زر الإرسال",
Theme: "السمة",
TightBorder: "وضع بدون حدود",
SendKey: 'زر الإرسال',
Theme: 'السمة',
TightBorder: 'وضع بدون حدود',
SendPreviewBubble: {
Title: "فقاعة المعاينة",
SubTitle: "معاينة محتوى Markdown في فقاعة المعاينة",
Title: 'فقاعة المعاينة',
SubTitle: 'معاينة محتوى Markdown في فقاعة المعاينة',
},
AutoGenerateTitle: {
Title: "توليد العنوان تلقائيًا",
SubTitle: "توليد عنوان مناسب بناءً على محتوى الدردشة",
Title: 'توليد العنوان تلقائيًا',
SubTitle: 'توليد عنوان مناسب بناءً على محتوى الدردشة',
},
Sync: {
CloudState: "بيانات السحابة",
NotSyncYet: "لم يتم التزامن بعد",
Success: "تم التزامن بنجاح",
Fail: "فشل التزامن",
CloudState: 'بيانات السحابة',
NotSyncYet: 'لم يتم التزامن بعد',
Success: 'تم التزامن بنجاح',
Fail: 'فشل التزامن',
Config: {
Modal: {
Title: "تكوين التزامن السحابي",
Check: "التحقق من التوفر",
Title: 'تكوين التزامن السحابي',
Check: 'التحقق من التوفر',
},
SyncType: {
Title: "نوع التزامن",
SubTitle: "اختر خادم التزامن المفضل",
Title: 'نوع التزامن',
SubTitle: 'اختر خادم التزامن المفضل',
},
Proxy: {
Title: "تفعيل الوكيل",
SubTitle: "يجب تفعيل الوكيل عند التزامن عبر المتصفح لتجنب قيود CORS",
Title: 'تفعيل الوكيل',
SubTitle: 'يجب تفعيل الوكيل عند التزامن عبر المتصفح لتجنب قيود CORS',
},
ProxyUrl: {
Title: "عنوان الوكيل",
SubTitle: "ينطبق فقط على الوكيل المتاح في هذا المشروع",
Title: 'عنوان الوكيل',
SubTitle: 'ينطبق فقط على الوكيل المتاح في هذا المشروع',
},
WebDav: {
Endpoint: "عنوان WebDAV",
UserName: "اسم المستخدم",
Password: "كلمة المرور",
Endpoint: 'عنوان WebDAV',
UserName: 'اسم المستخدم',
Password: 'كلمة المرور',
},
UpStash: {
Endpoint: "رابط UpStash Redis REST",
UserName: "اسم النسخ الاحتياطي",
Password: "رمز UpStash Redis REST",
Endpoint: 'رابط UpStash Redis REST',
UserName: 'اسم النسخ الاحتياطي',
Password: 'رمز UpStash Redis REST',
},
},
LocalState: "بيانات محلية",
LocalState: 'بيانات محلية',
Overview: (overview: any) => {
return `${overview.chat} دردشة، ${overview.message} رسالة، ${overview.prompt} إشعار، ${overview.mask} قناع`;
},
ImportFailed: "فشل الاستيراد",
ImportFailed: 'فشل الاستيراد',
},
Mask: {
Splash: {
Title: "صفحة بدء القناع",
SubTitle: "عرض صفحة بدء القناع عند بدء دردشة جديدة",
Title: 'صفحة بدء القناع',
SubTitle: 'عرض صفحة بدء القناع عند بدء دردشة جديدة',
},
Builtin: {
Title: "إخفاء الأقنعة المدمجة",
SubTitle: "إخفاء الأقنعة المدمجة في قائمة الأقنعة",
Title: 'إخفاء الأقنعة المدمجة',
SubTitle: 'إخفاء الأقنعة المدمجة في قائمة الأقنعة',
},
},
Prompt: {
Disable: {
Title: "تعطيل الإكمال التلقائي للإشعارات",
SubTitle: "استخدم / في بداية مربع النص لتفعيل الإكمال التلقائي",
Title: 'تعطيل الإكمال التلقائي للإشعارات',
SubTitle: 'استخدم / في بداية مربع النص لتفعيل الإكمال التلقائي',
},
List: "قائمة الإشعارات المخصصة",
List: 'قائمة الإشعارات المخصصة',
ListCount: (builtin: number, custom: number) =>
`مدمج ${builtin} إشعار، مخصص ${custom} إشعار`,
Edit: "تحرير",
Edit: 'تحرير',
Modal: {
Title: "قائمة الإشعارات",
Add: "جديد",
Search: "بحث عن إشعارات",
Title: 'قائمة الإشعارات',
Add: 'جديد',
Search: 'بحث عن إشعارات',
},
EditModal: {
Title: "تحرير الإشعارات",
Title: 'تحرير الإشعارات',
},
},
HistoryCount: {
Title: "عدد الرسائل التاريخية المرفقة",
SubTitle: "عدد الرسائل التاريخية المرفقة مع كل طلب",
Title: 'عدد الرسائل التاريخية المرفقة',
SubTitle: 'عدد الرسائل التاريخية المرفقة مع كل طلب',
},
CompressThreshold: {
Title: "عتبة ضغط طول الرسائل التاريخية",
Title: 'عتبة ضغط طول الرسائل التاريخية',
SubTitle:
"عندما يتجاوز طول الرسائل التاريخية غير المضغوطة هذه القيمة، سيتم الضغط",
'عندما يتجاوز طول الرسائل التاريخية غير المضغوطة هذه القيمة، سيتم الضغط',
},
Usage: {
Title: "التحقق من الرصيد",
Title: 'التحقق من الرصيد',
SubTitle(used: any, total: any) {
return `تم استخدام $${used} هذا الشهر، إجمالي الاشتراك $${total}`;
},
IsChecking: "جارٍ التحقق...",
Check: "إعادة التحقق",
NoAccess: "أدخل مفتاح API أو كلمة مرور للوصول إلى الرصيد",
IsChecking: 'جارٍ التحقق...',
Check: 'إعادة التحقق',
NoAccess: 'أدخل مفتاح API أو كلمة مرور للوصول إلى الرصيد',
},
Access: {
SaasStart: {
Title: "استخدام NextChat AI",
Label: "(أفضل حل من حيث التكلفة)",
Title: 'استخدام NextChat AI',
Label: '(أفضل حل من حيث التكلفة)',
SubTitle:
"مدعوم رسميًا من NextChat، جاهز للاستخدام بدون إعداد، يدعم أحدث النماذج الكبيرة مثل OpenAI o1 و GPT-4o و Claude-3.5",
ChatNow: "الدردشة الآن",
'مدعوم رسميًا من NextChat، جاهز للاستخدام بدون إعداد، يدعم أحدث النماذج الكبيرة مثل OpenAI o1 و GPT-4o و Claude-3.5',
ChatNow: 'الدردشة الآن',
},
AccessCode: {
Title: "كلمة المرور للوصول",
SubTitle: "قام المشرف بتمكين الوصول المشفر",
Placeholder: "أدخل كلمة المرور للوصول",
Title: 'كلمة المرور للوصول',
SubTitle: 'قام المشرف بتمكين الوصول المشفر',
Placeholder: 'أدخل كلمة المرور للوصول',
},
CustomEndpoint: {
Title: "واجهة مخصصة",
SubTitle: "هل تستخدم خدمة Azure أو OpenAI مخصصة",
Title: 'واجهة مخصصة',
SubTitle: 'هل تستخدم خدمة Azure أو OpenAI مخصصة',
},
Provider: {
Title: "موفر الخدمة النموذجية",
SubTitle: "التبديل بين مقدمي الخدمة المختلفين",
Title: 'موفر الخدمة النموذجية',
SubTitle: 'التبديل بين مقدمي الخدمة المختلفين',
},
OpenAI: {
ApiKey: {
Title: "مفتاح API",
SubTitle: "استخدم مفتاح OpenAI مخصص لتجاوز قيود كلمة المرور",
Placeholder: "مفتاح OpenAI API",
Title: 'مفتاح API',
SubTitle: 'استخدم مفتاح OpenAI مخصص لتجاوز قيود كلمة المرور',
Placeholder: 'مفتاح OpenAI API',
},
Endpoint: {
Title: "عنوان الواجهة",
SubTitle: "يجب أن يحتوي على http(s):// بخلاف العنوان الافتراضي",
Title: 'عنوان الواجهة',
SubTitle: 'يجب أن يحتوي على http(s):// بخلاف العنوان الافتراضي',
},
},
Azure: {
ApiKey: {
Title: "مفتاح الواجهة",
SubTitle: "استخدم مفتاح Azure مخصص لتجاوز قيود كلمة المرور",
Placeholder: "مفتاح Azure API",
Title: 'مفتاح الواجهة',
SubTitle: 'استخدم مفتاح Azure مخصص لتجاوز قيود كلمة المرور',
Placeholder: 'مفتاح Azure API',
},
Endpoint: {
Title: "عنوان الواجهة",
SubTitle: "مثال:",
Title: 'عنوان الواجهة',
SubTitle: 'مثال:',
},
ApiVerion: {
Title: "إصدار الواجهة (azure api version)",
SubTitle: "اختر إصدارًا معينًا",
Title: 'إصدار الواجهة (azure api version)',
SubTitle: 'اختر إصدارًا معينًا',
},
},
Anthropic: {
ApiKey: {
Title: "مفتاح الواجهة",
SubTitle: "استخدم مفتاح Anthropic مخصص لتجاوز قيود كلمة المرور",
Placeholder: "مفتاح Anthropic API",
Title: 'مفتاح الواجهة',
SubTitle: 'استخدم مفتاح Anthropic مخصص لتجاوز قيود كلمة المرور',
Placeholder: 'مفتاح Anthropic API',
},
Endpoint: {
Title: "عنوان الواجهة",
SubTitle: "مثال:",
Title: 'عنوان الواجهة',
SubTitle: 'مثال:',
},
ApiVerion: {
Title: "إصدار الواجهة (claude api version)",
SubTitle: "اختر إصدار API محدد",
Title: 'إصدار الواجهة (claude api version)',
SubTitle: 'اختر إصدار API محدد',
},
},
Google: {
ApiKey: {
Title: "مفتاح API",
SubTitle: "احصل على مفتاح API الخاص بك من Google AI",
Placeholder: "أدخل مفتاح Google AI Studio API",
Title: 'مفتاح API',
SubTitle: 'احصل على مفتاح API الخاص بك من Google AI',
Placeholder: 'أدخل مفتاح Google AI Studio API',
},
Endpoint: {
Title: "عنوان النهاية",
SubTitle: "مثال:",
Title: 'عنوان النهاية',
SubTitle: 'مثال:',
},
ApiVersion: {
Title: "إصدار API (مخصص لـ gemini-pro)",
SubTitle: "اختر إصدار API معين",
Title: 'إصدار API (مخصص لـ gemini-pro)',
SubTitle: 'اختر إصدار API معين',
},
GoogleSafetySettings: {
Title: "مستوى تصفية الأمان من Google",
SubTitle: "تعيين مستوى تصفية المحتوى",
Title: 'مستوى تصفية الأمان من Google',
SubTitle: 'تعيين مستوى تصفية المحتوى',
},
},
Baidu: {
ApiKey: {
Title: "مفتاح API",
SubTitle: "استخدم مفتاح Baidu API مخصص",
Placeholder: "مفتاح Baidu API",
Title: 'مفتاح API',
SubTitle: 'استخدم مفتاح Baidu API مخصص',
Placeholder: 'مفتاح Baidu API',
},
SecretKey: {
Title: "المفتاح السري",
SubTitle: "استخدم مفتاح Baidu Secret مخصص",
Placeholder: "مفتاح Baidu Secret",
Title: 'المفتاح السري',
SubTitle: 'استخدم مفتاح Baidu Secret مخصص',
Placeholder: 'مفتاح Baidu Secret',
},
Endpoint: {
Title: "عنوان الواجهة",
SubTitle: "لا يدعم التخصيص، انتقل إلى .env للتكوين",
Title: 'عنوان الواجهة',
SubTitle: 'لا يدعم التخصيص، انتقل إلى .env للتكوين',
},
},
ByteDance: {
ApiKey: {
Title: "مفتاح الواجهة",
SubTitle: "استخدم مفتاح ByteDance API مخصص",
Placeholder: "مفتاح ByteDance API",
Title: 'مفتاح الواجهة',
SubTitle: 'استخدم مفتاح ByteDance API مخصص',
Placeholder: 'مفتاح ByteDance API',
},
Endpoint: {
Title: "عنوان الواجهة",
SubTitle: "مثال:",
Title: 'عنوان الواجهة',
SubTitle: 'مثال:',
},
},
Alibaba: {
ApiKey: {
Title: "مفتاح الواجهة",
SubTitle: "استخدم مفتاح Alibaba Cloud API مخصص",
Placeholder: "مفتاح Alibaba Cloud API",
Title: 'مفتاح الواجهة',
SubTitle: 'استخدم مفتاح Alibaba Cloud API مخصص',
Placeholder: 'مفتاح Alibaba Cloud API',
},
Endpoint: {
Title: "عنوان الواجهة",
SubTitle: "مثال:",
Title: 'عنوان الواجهة',
SubTitle: 'مثال:',
},
},
CustomModel: {
Title: "اسم النموذج المخصص",
SubTitle: "أضف خيارات نموذج مخصص، مفصولة بفواصل إنجليزية",
Title: 'اسم النموذج المخصص',
SubTitle: 'أضف خيارات نموذج مخصص، مفصولة بفواصل إنجليزية',
},
},
Model: "النموذج",
Model: 'النموذج',
CompressModel: {
Title: "نموذج الضغط",
SubTitle: "النموذج المستخدم لضغط السجل التاريخي",
Title: 'نموذج الضغط',
SubTitle: 'النموذج المستخدم لضغط السجل التاريخي',
},
Temperature: {
Title: "العشوائية (temperature)",
SubTitle: "كلما زادت القيمة، زادت العشوائية في الردود",
Title: 'العشوائية (temperature)',
SubTitle: 'كلما زادت القيمة، زادت العشوائية في الردود',
},
TopP: {
Title: "عينات النواة (top_p)",
SubTitle: "مشابه للعشوائية ولكن لا تغيره مع العشوائية",
Title: 'عينات النواة (top_p)',
SubTitle: 'مشابه للعشوائية ولكن لا تغيره مع العشوائية',
},
MaxTokens: {
Title: "حد أقصى للرموز لكل رد (max_tokens)",
SubTitle: "أقصى عدد للرموز في تفاعل واحد",
Title: 'حد أقصى للرموز لكل رد (max_tokens)',
SubTitle: 'أقصى عدد للرموز في تفاعل واحد',
},
PresencePenalty: {
Title: "تجدد الموضوع (presence_penalty)",
SubTitle: "كلما زادت القيمة، زادت احتمالية التوسع في مواضيع جديدة",
Title: 'تجدد الموضوع (presence_penalty)',
SubTitle: 'كلما زادت القيمة، زادت احتمالية التوسع في مواضيع جديدة',
},
FrequencyPenalty: {
Title: "عقوبة التكرار (frequency_penalty)",
SubTitle: "كلما زادت القيمة، زادت احتمالية تقليل تكرار الكلمات",
Title: 'عقوبة التكرار (frequency_penalty)',
SubTitle: 'كلما زادت القيمة، زادت احتمالية تقليل تكرار الكلمات',
},
},
Store: {
DefaultTopic: "دردشة جديدة",
BotHello: "كيف يمكنني مساعدتك؟",
Error: "حدث خطأ، يرجى المحاولة مرة أخرى لاحقًا",
DefaultTopic: 'دردشة جديدة',
BotHello: 'كيف يمكنني مساعدتك؟',
Error: 'حدث خطأ، يرجى المحاولة مرة أخرى لاحقًا',
Prompt: {
History: (content: string) =>
"هذا ملخص للدردشة السابقة كنقطة انطلاق: " + content,
`هذا ملخص للدردشة السابقة كنقطة انطلاق: ${content}`,
Topic:
"استخدم أربع إلى خمس كلمات لإرجاع ملخص مختصر لهذه الجملة، بدون شرح، بدون علامات ترقيم، بدون كلمات تعبيرية، بدون نص إضافي، بدون تنسيق عريض، إذا لم يكن هناك موضوع، يرجى العودة إلى 'دردشة عامة'",
'استخدم أربع إلى خمس كلمات لإرجاع ملخص مختصر لهذه الجملة، بدون شرح، بدون علامات ترقيم، بدون كلمات تعبيرية، بدون نص إضافي، بدون تنسيق عريض، إذا لم يكن هناك موضوع، يرجى العودة إلى \'دردشة عامة\'',
Summarize:
"قم بتلخيص محتوى الدردشة باختصار، لاستخدامه كإشارة سياقية لاحقة، اجعلها في حدود 200 كلمة",
'قم بتلخيص محتوى الدردشة باختصار، لاستخدامه كإشارة سياقية لاحقة، اجعلها في حدود 200 كلمة',
},
},
Copy: {
Success: "تم الكتابة إلى الحافظة",
Failed: "فشل النسخ، يرجى منح أذونات الحافظة",
Success: 'تم الكتابة إلى الحافظة',
Failed: 'فشل النسخ، يرجى منح أذونات الحافظة',
},
Download: {
Success: "تم تنزيل المحتوى إلى مجلدك.",
Failed: "فشل التنزيل.",
Success: 'تم تنزيل المحتوى إلى مجلدك.',
Failed: 'فشل التنزيل.',
},
Context: {
Toast: (x: any) => `يحتوي على ${x} إشعارات مخصصة`,
Edit: "إعدادات الدردشة الحالية",
Add: "إضافة دردشة جديدة",
Clear: "تم مسح السياق",
Revert: "استعادة السياق",
Edit: 'إعدادات الدردشة الحالية',
Add: 'إضافة دردشة جديدة',
Clear: 'تم مسح السياق',
Revert: 'استعادة السياق',
},
Plugin: {
Name: "الإضافات",
Name: 'الإضافات',
},
FineTuned: {
Sysmessage: "أنت مساعد",
Sysmessage: 'أنت مساعد',
},
SearchChat: {
Name: "بحث",
Name: 'بحث',
Page: {
Title: "البحث في سجلات الدردشة",
Search: "أدخل كلمات البحث",
NoResult: "لم يتم العثور على نتائج",
NoData: "لا توجد بيانات",
Loading: "جارٍ التحميل",
Title: 'البحث في سجلات الدردشة',
Search: 'أدخل كلمات البحث',
NoResult: 'لم يتم العثور على نتائج',
NoData: 'لا توجد بيانات',
Loading: 'جارٍ التحميل',
SubTitle: (count: number) => `تم العثور على ${count} نتائج`,
},
Item: {
View: "عرض",
View: 'عرض',
},
},
Mask: {
Name: "القناع",
Name: 'القناع',
Page: {
Title: "أقنعة الأدوار المخصصة",
Title: 'أقنعة الأدوار المخصصة',
SubTitle: (count: number) => `${count} تعريف لدور مخصص`,
Search: "بحث عن قناع الدور",
Create: "إنشاء جديد",
Search: 'بحث عن قناع الدور',
Create: 'إنشاء جديد',
},
Item: {
Info: (count: number) => `يحتوي على ${count} محادثات مخصصة`,
Chat: "الدردشة",
View: "عرض",
Edit: "تحرير",
Delete: "حذف",
DeleteConfirm: "تأكيد الحذف؟",
Chat: 'الدردشة',
View: 'عرض',
Edit: 'تحرير',
Delete: 'حذف',
DeleteConfirm: 'تأكيد الحذف؟',
},
EditModal: {
Title: (readonly: boolean) =>
`تحرير القناع المخصص ${readonly ? " (للقراءة فقط)" : ""}`,
Download: "تنزيل القناع المخصص",
Clone: "استنساخ القناع",
`تحرير القناع المخصص ${readonly ? ' (للقراءة فقط)' : ''}`,
Download: 'تنزيل القناع المخصص',
Clone: 'استنساخ القناع',
},
Config: {
Avatar: "صورة الدور",
Name: "اسم الدور",
Avatar: 'صورة الدور',
Name: 'اسم الدور',
Sync: {
Title: "استخدام الإعدادات العالمية",
SubTitle: "هل تستخدم الدردشة الحالية الإعدادات العالمية للنموذج",
Title: 'استخدام الإعدادات العالمية',
SubTitle: 'هل تستخدم الدردشة الحالية الإعدادات العالمية للنموذج',
Confirm:
"ستتم الكتابة فوق الإعدادات المخصصة للدردشة الحالية تلقائيًا، تأكيد تفعيل الإعدادات العالمية؟",
'ستتم الكتابة فوق الإعدادات المخصصة للدردشة الحالية تلقائيًا، تأكيد تفعيل الإعدادات العالمية؟',
},
HideContext: {
Title: "إخفاء المحادثات المخصصة",
SubTitle: "بعد الإخفاء، لن تظهر المحادثات المخصصة في واجهة الدردشة",
Title: 'إخفاء المحادثات المخصصة',
SubTitle: 'بعد الإخفاء، لن تظهر المحادثات المخصصة في واجهة الدردشة',
},
Share: {
Title: "مشاركة هذا القناع",
SubTitle: "إنشاء رابط مباشر لهذا القناع",
Action: "نسخ الرابط",
Title: 'مشاركة هذا القناع',
SubTitle: 'إنشاء رابط مباشر لهذا القناع',
Action: 'نسخ الرابط',
},
},
},
NewChat: {
Return: "العودة",
Skip: "بدء الآن",
NotShow: "عدم العرض مرة أخرى",
Return: 'العودة',
Skip: 'بدء الآن',
NotShow: 'عدم العرض مرة أخرى',
ConfirmNoShow:
"تأكيد إلغاء العرض؟ بعد الإلغاء، يمكنك إعادة تفعيله في الإعدادات في أي وقت.",
Title: "اختر قناعًا",
SubTitle: "ابدأ الآن وتفاعل مع الأفكار خلف القناع",
More: "عرض الكل",
'تأكيد إلغاء العرض؟ بعد الإلغاء، يمكنك إعادة تفعيله في الإعدادات في أي وقت.',
Title: 'اختر قناعًا',
SubTitle: 'ابدأ الآن وتفاعل مع الأفكار خلف القناع',
More: 'عرض الكل',
},
URLCommand: {
Code: "تم الكشف عن رمز وصول في الرابط، هل تريد تعبئته تلقائيًا؟",
Settings: "تم الكشف عن إعدادات مسبقة في الرابط، هل تريد تعبئتها تلقائيًا؟",
Code: 'تم الكشف عن رمز وصول في الرابط، هل تريد تعبئته تلقائيًا؟',
Settings: 'تم الكشف عن إعدادات مسبقة في الرابط، هل تريد تعبئتها تلقائيًا؟',
},
UI: {
Confirm: "تأكيد",
Cancel: "إلغاء",
Close: "إغلاق",
Create: "إنشاء",
Edit: "تحرير",
Export: "تصدير",
Import: "استيراد",
Sync: "مزامنة",
Config: "تكوين",
Confirm: 'تأكيد',
Cancel: 'إلغاء',
Close: 'إغلاق',
Create: 'إنشاء',
Edit: 'تحرير',
Export: 'تصدير',
Import: 'استيراد',
Sync: 'مزامنة',
Config: 'تكوين',
},
Exporter: {
Description: {
Title: "فقط الرسائل بعد مسح السياق سيتم عرضها",
Title: 'فقط الرسائل بعد مسح السياق سيتم عرضها',
},
Model: "النموذج",
Messages: "الرسائل",
Topic: "الموضوع",
Time: "الوقت",
Model: 'النموذج',
Messages: 'الرسائل',
Topic: 'الموضوع',
Time: 'الوقت',
},
};

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import type { PartialLocaleType } from "./index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from './index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const bn: PartialLocaleType = {
WIP: "শীঘ্রই আসছে...",
WIP: 'শীঘ্রই আসছে...',
Error: {
Unauthorized: isApp
? `😆 কথোপকথনে কিছু সমস্যা হয়েছে, চিন্তার কিছু নেই:
@@ -18,16 +19,16 @@ const bn: PartialLocaleType = {
`,
},
Auth: {
Title: "পাসওয়ার্ড প্রয়োজন",
Tips: "অ্যাডমিন পাসওয়ার্ড প্রমাণীকরণ চালু করেছেন, নিচে অ্যাক্সেস কোড প্রবেশ করুন",
SubTips: "অথবা আপনার OpenAI অথবা Google API কী প্রবেশ করান",
Input: "এখানে অ্যাক্সেস কোড লিখুন",
Confirm: "নিশ্চিত করুন",
Later: "পরে বলুন",
Return: "ফিরে আসা",
SaasTips: "কনফিগারেশন খুব কঠিন, আমি অবিলম্বে ব্যবহার করতে চাই",
Title: 'পাসওয়ার্ড প্রয়োজন',
Tips: 'অ্যাডমিন পাসওয়ার্ড প্রমাণীকরণ চালু করেছেন, নিচে অ্যাক্সেস কোড প্রবেশ করুন',
SubTips: 'অথবা আপনার OpenAI অথবা Google API কী প্রবেশ করান',
Input: 'এখানে অ্যাক্সেস কোড লিখুন',
Confirm: 'নিশ্চিত করুন',
Later: 'পরে বলুন',
Return: 'ফিরে আসা',
SaasTips: 'কনফিগারেশন খুব কঠিন, আমি অবিলম্বে ব্যবহার করতে চাই',
TopTips:
"🥳 NextChat AI প্রথম প্রকাশের অফার, এখনই OpenAI o1, GPT-4o, Claude-3.5 এবং সর্বশেষ বড় মডেলগুলি আনলক করুন",
'🥳 NextChat AI প্রথম প্রকাশের অফার, এখনই OpenAI o1, GPT-4o, Claude-3.5 এবং সর্বশেষ বড় মডেলগুলি আনলক করুন',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} টি চ্যাট`,
@@ -35,555 +36,555 @@ const bn: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `মোট ${count} টি চ্যাট`,
EditMessage: {
Title: "বার্তাগুলি সম্পাদনা করুন",
Title: 'বার্তাগুলি সম্পাদনা করুন',
Topic: {
Title: "চ্যাটের বিষয়",
SubTitle: "বর্তমান চ্যাটের বিষয় পরিবর্তন করুন",
Title: 'চ্যাটের বিষয়',
SubTitle: 'বর্তমান চ্যাটের বিষয় পরিবর্তন করুন',
},
},
Actions: {
ChatList: "বার্তা তালিকা দেখুন",
CompressedHistory: "সংকুচিত ইতিহাস দেখুন",
Export: "চ্যাট ইতিহাস রপ্তানী করুন",
Copy: "অনুলিপি করুন",
Stop: "থামান",
Retry: "পুনরায় চেষ্টা করুন",
Pin: "পিন করুন",
PinToastContent: "1 টি চ্যাট পূর্বনির্ধারিত প্রম্পটে পিন করা হয়েছে",
PinToastAction: "দেখুন",
Delete: "মুছে ফেলুন",
Edit: "সম্পাদনা করুন",
RefreshTitle: "শিরোনাম রিফ্রেশ করুন",
RefreshToast: "শিরোনাম রিফ্রেশ অনুরোধ পাঠানো হয়েছে",
ChatList: 'বার্তা তালিকা দেখুন',
CompressedHistory: 'সংকুচিত ইতিহাস দেখুন',
Export: 'চ্যাট ইতিহাস রপ্তানী করুন',
Copy: 'অনুলিপি করুন',
Stop: 'থামান',
Retry: 'পুনরায় চেষ্টা করুন',
Pin: 'পিন করুন',
PinToastContent: '1 টি চ্যাট পূর্বনির্ধারিত প্রম্পটে পিন করা হয়েছে',
PinToastAction: 'দেখুন',
Delete: 'মুছে ফেলুন',
Edit: 'সম্পাদনা করুন',
RefreshTitle: 'শিরোনাম রিফ্রেশ করুন',
RefreshToast: 'শিরোনাম রিফ্রেশ অনুরোধ পাঠানো হয়েছে',
},
Commands: {
new: "নতুন চ্যাট",
newm: "মাস্ক থেকে নতুন চ্যাট",
next: "পরবর্তী চ্যাট",
prev: "পূর্ববর্তী চ্যাট",
clear: "প্রসঙ্গ পরিষ্কার করুন",
del: "চ্যাট মুছে ফেলুন",
new: 'নতুন চ্যাট',
newm: 'মাস্ক থেকে নতুন চ্যাট',
next: 'পরবর্তী চ্যাট',
prev: 'পূর্ববর্তী চ্যাট',
clear: 'প্রসঙ্গ পরিষ্কার করুন',
del: 'চ্যাট মুছে ফেলুন',
},
InputActions: {
Stop: "প্রতিক্রিয়া থামান",
ToBottom: "সর্বশেষে স্ক্রোল করুন",
Stop: 'প্রতিক্রিয়া থামান',
ToBottom: 'সর্বশেষে স্ক্রোল করুন',
Theme: {
auto: "স্বয়ংক্রিয় থিম",
light: "আলোর মোড",
dark: "অন্ধকার মোড",
auto: 'স্বয়ংক্রিয় থিম',
light: 'আলোর মোড',
dark: 'অন্ধকার মোড',
},
Prompt: "সংক্ষিপ্ত নির্দেশনা",
Masks: "সমস্ত মাস্ক",
Clear: "চ্যাট পরিষ্কার করুন",
Settings: "চ্যাট সেটিংস",
UploadImage: "চিত্র আপলোড করুন",
Prompt: 'সংক্ষিপ্ত নির্দেশনা',
Masks: 'সমস্ত মাস্ক',
Clear: 'চ্যাট পরিষ্কার করুন',
Settings: 'চ্যাট সেটিংস',
UploadImage: 'চিত্র আপলোড করুন',
},
Rename: "চ্যাট নাম পরিবর্তন করুন",
Typing: "লিখছে…",
Rename: 'চ্যাট নাম পরিবর্তন করুন',
Typing: 'লিখছে…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} পাঠান`;
let inputHints = `${submitKey} পাঠান`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "Shift + Enter নতুন লাইন";
inputHints += 'Shift + Enter নতুন লাইন';
}
return inputHints + "/ পূর্ণতা সক্রিয় করুন,: কমান্ড সক্রিয় করুন";
return `${inputHints}/ পূর্ণতা সক্রিয় করুন,: কমান্ড সক্রিয় করুন`;
},
Send: "পাঠান",
Send: 'পাঠান',
Config: {
Reset: "মেমরি মুছে ফেলুন",
SaveAs: "মাস্ক হিসাবে সংরক্ষণ করুন",
Reset: 'মেমরি মুছে ফেলুন',
SaveAs: 'মাস্ক হিসাবে সংরক্ষণ করুন',
},
IsContext: "পূর্বনির্ধারিত প্রম্পট",
IsContext: 'পূর্বনির্ধারিত প্রম্পট',
},
Export: {
Title: "চ্যাট ইতিহাস শেয়ার করুন",
Copy: "সবকিছু কপি করুন",
Download: "ফাইল ডাউনলোড করুন",
Share: "ShareGPT তে শেয়ার করুন",
MessageFromYou: "ব্যবহারকারী",
MessageFromChatGPT: "ChatGPT",
Title: 'চ্যাট ইতিহাস শেয়ার করুন',
Copy: 'সবকিছু কপি করুন',
Download: 'ফাইল ডাউনলোড করুন',
Share: 'ShareGPT তে শেয়ার করুন',
MessageFromYou: 'ব্যবহারকারী',
MessageFromChatGPT: 'ChatGPT',
Format: {
Title: "রপ্তানির ফর্ম্যাট",
SubTitle: "Markdown টেক্সট বা PNG চিত্র রপ্তানি করা যাবে",
Title: 'রপ্তানির ফর্ম্যাট',
SubTitle: 'Markdown টেক্সট বা PNG চিত্র রপ্তানি করা যাবে',
},
IncludeContext: {
Title: "মাস্ক প্রসঙ্গ অন্তর্ভুক্ত করুন",
SubTitle: "বার্তায় মাস্ক প্রসঙ্গ প্রদর্শন করা হবে কি না",
Title: 'মাস্ক প্রসঙ্গ অন্তর্ভুক্ত করুন',
SubTitle: 'বার্তায় মাস্ক প্রসঙ্গ প্রদর্শন করা হবে কি না',
},
Steps: {
Select: "নির্বাচন করুন",
Preview: "পূর্বরূপ দেখুন",
Select: 'নির্বাচন করুন',
Preview: 'পূর্বরূপ দেখুন',
},
Image: {
Toast: "স্ক্রীনশট তৈরি করা হচ্ছে",
Modal: "ছবি সংরক্ষণ করতে দীর্ঘ প্রেস করুন অথবা রাইট ক্লিক করুন",
Toast: 'স্ক্রীনশট তৈরি করা হচ্ছে',
Modal: 'ছবি সংরক্ষণ করতে দীর্ঘ প্রেস করুন অথবা রাইট ক্লিক করুন',
},
},
Select: {
Search: "বার্তা অনুসন্ধান করুন",
All: "সবকিছু নির্বাচন করুন",
Latest: "সর্বশেষ কিছু",
Clear: "নির্বাচন পরিষ্কার করুন",
Search: 'বার্তা অনুসন্ধান করুন',
All: 'সবকিছু নির্বাচন করুন',
Latest: 'সর্বশেষ কিছু',
Clear: 'নির্বাচন পরিষ্কার করুন',
},
Memory: {
Title: "ইতিহাস সারাংশ",
EmptyContent: "চ্যাটের বিষয়বস্তু খুব সংক্ষিপ্ত, সারাংশ প্রয়োজন নেই",
Send: "অটোমেটিক চ্যাট ইতিহাস সংকুচিত করুন এবং প্রসঙ্গ হিসেবে পাঠান",
Copy: "সারাংশ কপি করুন",
Reset: "[unused]",
ResetConfirm: "ইতিহাস সারাংশ মুছে ফেলার নিশ্চিত করুন?",
Title: 'ইতিহাস সারাংশ',
EmptyContent: 'চ্যাটের বিষয়বস্তু খুব সংক্ষিপ্ত, সারাংশ প্রয়োজন নেই',
Send: 'অটোমেটিক চ্যাট ইতিহাস সংকুচিত করুন এবং প্রসঙ্গ হিসেবে পাঠান',
Copy: 'সারাংশ কপি করুন',
Reset: '[unused]',
ResetConfirm: 'ইতিহাস সারাংশ মুছে ফেলার নিশ্চিত করুন?',
},
Home: {
NewChat: "নতুন চ্যাট",
DeleteChat: "নির্বাচিত চ্যাট মুছে ফেলার নিশ্চিত করুন?",
DeleteToast: "চ্যাট মুছে ফেলা হয়েছে",
Revert: "পূর্বাবস্থায় ফেরান",
NewChat: 'নতুন চ্যাট',
DeleteChat: 'নির্বাচিত চ্যাট মুছে ফেলার নিশ্চিত করুন?',
DeleteToast: 'চ্যাট মুছে ফেলা হয়েছে',
Revert: 'পূর্বাবস্থায় ফেরান',
},
Settings: {
Title: "সেটিংস",
SubTitle: "সমস্ত সেটিংস অপশন",
Title: 'সেটিংস',
SubTitle: 'সমস্ত সেটিংস অপশন',
Danger: {
Reset: {
Title: "সমস্ত সেটিংস পুনরায় সেট করুন",
SubTitle: "সমস্ত সেটিংস বিকল্পগুলিকে ডিফল্ট মানে পুনরায় সেট করুন",
Action: "এখনই পুনরায় সেট করুন",
Confirm: "সমস্ত সেটিংস পুনরায় সেট করার নিশ্চিত করুন?",
Title: 'সমস্ত সেটিংস পুনরায় সেট করুন',
SubTitle: 'সমস্ত সেটিংস বিকল্পগুলিকে ডিফল্ট মানে পুনরায় সেট করুন',
Action: 'এখনই পুনরায় সেট করুন',
Confirm: 'সমস্ত সেটিংস পুনরায় সেট করার নিশ্চিত করুন?',
},
Clear: {
Title: "সমস্ত তথ্য মুছে ফেলুন",
SubTitle: "সমস্ত চ্যাট এবং সেটিংস ডেটা মুছে ফেলুন",
Action: "এখনই মুছে ফেলুন",
Confirm: "সমস্ত চ্যাট এবং সেটিংস ডেটা মুছে ফেলানোর নিশ্চিত করুন?",
Title: 'সমস্ত তথ্য মুছে ফেলুন',
SubTitle: 'সমস্ত চ্যাট এবং সেটিংস ডেটা মুছে ফেলুন',
Action: 'এখনই মুছে ফেলুন',
Confirm: 'সমস্ত চ্যাট এবং সেটিংস ডেটা মুছে ফেলানোর নিশ্চিত করুন?',
},
},
Lang: {
Name: "Language", // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
All: "সমস্ত ভাষা",
Name: 'Language', // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
All: 'সমস্ত ভাষা',
},
Avatar: "অভিনেতা",
Avatar: 'অভিনেতা',
FontSize: {
Title: "ফন্ট সাইজ",
SubTitle: "চ্যাট কনটেন্টের ফন্ট সাইজ",
Title: 'ফন্ট সাইজ',
SubTitle: 'চ্যাট কনটেন্টের ফন্ট সাইজ',
},
FontFamily: {
Title: "চ্যাট ফন্ট",
Title: 'চ্যাট ফন্ট',
SubTitle:
"চ্যাট সামগ্রীর ফন্ট, বিশ্বব্যাপী ডিফল্ট ফন্ট প্রয়োগ করতে খালি রাখুন",
Placeholder: "ফন্টের নাম",
'চ্যাট সামগ্রীর ফন্ট, বিশ্বব্যাপী ডিফল্ট ফন্ট প্রয়োগ করতে খালি রাখুন',
Placeholder: 'ফন্টের নাম',
},
InjectSystemPrompts: {
Title: "সিস্টেম-লেভেল প্রম্পট যোগ করুন",
Title: 'সিস্টেম-লেভেল প্রম্পট যোগ করুন',
SubTitle:
"প্রত্যেক বার্তায় একটি সিস্টেম প্রম্পট যোগ করুন যা ChatGPT এর অনুকরণ করবে",
'প্রত্যেক বার্তায় একটি সিস্টেম প্রম্পট যোগ করুন যা ChatGPT এর অনুকরণ করবে',
},
InputTemplate: {
Title: "ব্যবহারকারীর ইনপুট প্রিপ্রসেসিং",
SubTitle: "ব্যবহারকারীর সর্বশেষ বার্তা এই টেমপ্লেটে পূরণ করা হবে",
Title: 'ব্যবহারকারীর ইনপুট প্রিপ্রসেসিং',
SubTitle: 'ব্যবহারকারীর সর্বশেষ বার্তা এই টেমপ্লেটে পূরণ করা হবে',
},
Update: {
Version: (x: string) => `বর্তমান সংস্করণ: ${x}`,
IsLatest: "এটি সর্বশেষ সংস্করণ",
CheckUpdate: "আপডেট পরীক্ষা করুন",
IsChecking: "আপডেট পরীক্ষা করা হচ্ছে...",
IsLatest: 'এটি সর্বশেষ সংস্করণ',
CheckUpdate: 'আপডেট পরীক্ষা করুন',
IsChecking: 'আপডেট পরীক্ষা করা হচ্ছে...',
FoundUpdate: (x: string) => `নতুন সংস্করণ পাওয়া গিয়েছে: ${x}`,
GoToUpdate: "আপডেট করতে যান",
GoToUpdate: 'আপডেট করতে যান',
},
SendKey: "পাঠানোর কী",
Theme: "থিম",
TightBorder: "বর্ডার-বিহীন মোড",
SendKey: 'পাঠানোর কী',
Theme: 'থিম',
TightBorder: 'বর্ডার-বিহীন মোড',
SendPreviewBubble: {
Title: "প্রিভিউ বুদবুদ",
SubTitle: "প্রিভিউ বুদবুদে Markdown কনটেন্ট প্রিভিউ করুন",
Title: 'প্রিভিউ বুদবুদ',
SubTitle: 'প্রিভিউ বুদবুদে Markdown কনটেন্ট প্রিভিউ করুন',
},
AutoGenerateTitle: {
Title: "স্বয়ংক্রিয় শিরোনাম জেনারেশন",
SubTitle: "চ্যাট কনটেন্টের ভিত্তিতে উপযুক্ত শিরোনাম তৈরি করুন",
Title: 'স্বয়ংক্রিয় শিরোনাম জেনারেশন',
SubTitle: 'চ্যাট কনটেন্টের ভিত্তিতে উপযুক্ত শিরোনাম তৈরি করুন',
},
Sync: {
CloudState: "ক্লাউড ডেটা",
NotSyncYet: "এখনো সিঙ্ক করা হয়নি",
Success: "সিঙ্ক সফল",
Fail: "সিঙ্ক ব্যর্থ",
CloudState: 'ক্লাউড ডেটা',
NotSyncYet: 'এখনো সিঙ্ক করা হয়নি',
Success: 'সিঙ্ক সফল',
Fail: 'সিঙ্ক ব্যর্থ',
Config: {
Modal: {
Title: "ক্লাউড সিঙ্ক কনফিগার করুন",
Check: "পরীক্ষা করুন",
Title: 'ক্লাউড সিঙ্ক কনফিগার করুন',
Check: 'পরীক্ষা করুন',
},
SyncType: {
Title: "সিঙ্ক টাইপ",
SubTitle: "পছন্দসই সিঙ্ক সার্ভার নির্বাচন করুন",
Title: 'সিঙ্ক টাইপ',
SubTitle: 'পছন্দসই সিঙ্ক সার্ভার নির্বাচন করুন',
},
Proxy: {
Title: "প্রক্সি সক্রিয় করুন",
Title: 'প্রক্সি সক্রিয় করুন',
SubTitle:
"ব্রাউজারে সিঙ্ক করার সময়, ক্রস-অরিজিন সীমাবদ্ধতা এড়াতে প্রক্সি সক্রিয় করতে হবে",
'ব্রাউজারে সিঙ্ক করার সময়, ক্রস-অরিজিন সীমাবদ্ধতা এড়াতে প্রক্সি সক্রিয় করতে হবে',
},
ProxyUrl: {
Title: "প্রক্সি ঠিকানা",
Title: 'প্রক্সি ঠিকানা',
SubTitle:
"এটি শুধুমাত্র প্রকল্পের সাথে সরবরাহিত ক্রস-অরিজিন প্রক্সির জন্য প্রযোজ্য",
'এটি শুধুমাত্র প্রকল্পের সাথে সরবরাহিত ক্রস-অরিজিন প্রক্সির জন্য প্রযোজ্য',
},
WebDav: {
Endpoint: "WebDAV ঠিকানা",
UserName: "ব্যবহারকারীর নাম",
Password: "পাসওয়ার্ড",
Endpoint: 'WebDAV ঠিকানা',
UserName: 'ব্যবহারকারীর নাম',
Password: 'পাসওয়ার্ড',
},
UpStash: {
Endpoint: "UpStash Redis REST URL",
UserName: "ব্যাকআপ নাম",
Password: "UpStash Redis REST টোকেন",
Endpoint: 'UpStash Redis REST URL',
UserName: 'ব্যাকআপ নাম',
Password: 'UpStash Redis REST টোকেন',
},
},
LocalState: "স্থানীয় ডেটা",
LocalState: 'স্থানীয় ডেটা',
Overview: (overview: any) => {
return `${overview.chat} বার চ্যাট, ${overview.message} বার্তা, ${overview.prompt} প্রম্পট, ${overview.mask} মাস্ক`;
},
ImportFailed: "আমদানি ব্যর্থ",
ImportFailed: 'আমদানি ব্যর্থ',
},
Mask: {
Splash: {
Title: "মাস্ক লঞ্চ পেজ",
SubTitle: "নতুন চ্যাট শুরু করার সময় মাস্ক লঞ্চ পেজ প্রদর্শন করুন",
Title: 'মাস্ক লঞ্চ পেজ',
SubTitle: 'নতুন চ্যাট শুরু করার সময় মাস্ক লঞ্চ পেজ প্রদর্শন করুন',
},
Builtin: {
Title: "ইনবিল্ট মাস্ক লুকান",
SubTitle: "সমস্ত মাস্ক তালিকায় ইনবিল্ট মাস্ক লুকান",
Title: 'ইনবিল্ট মাস্ক লুকান',
SubTitle: 'সমস্ত মাস্ক তালিকায় ইনবিল্ট মাস্ক লুকান',
},
},
Prompt: {
Disable: {
Title: "প্রম্পট অটো-কমপ্লিশন নিষ্ক্রিয় করুন",
SubTitle: "ইনপুট বক্সের শুরুতে / টাইপ করলে অটো-কমপ্লিশন সক্রিয় হবে",
Title: 'প্রম্পট অটো-কমপ্লিশন নিষ্ক্রিয় করুন',
SubTitle: 'ইনপুট বক্সের শুরুতে / টাইপ করলে অটো-কমপ্লিশন সক্রিয় হবে',
},
List: "স্বনির্ধারিত প্রম্পট তালিকা",
List: 'স্বনির্ধারিত প্রম্পট তালিকা',
ListCount: (builtin: number, custom: number) =>
`ইনবিল্ট ${builtin} টি, ব্যবহারকারী সংজ্ঞায়িত ${custom} টি`,
Edit: "সম্পাদনা করুন",
Edit: 'সম্পাদনা করুন',
Modal: {
Title: "প্রম্পট তালিকা",
Add: "নতুন করুন",
Search: "প্রম্পট অনুসন্ধান করুন",
Title: 'প্রম্পট তালিকা',
Add: 'নতুন করুন',
Search: 'প্রম্পট অনুসন্ধান করুন',
},
EditModal: {
Title: "প্রম্পট সম্পাদনা করুন",
Title: 'প্রম্পট সম্পাদনা করুন',
},
},
HistoryCount: {
Title: "সংযুক্ত ইতিহাস বার্তার সংখ্যা",
SubTitle: "প্রতিটি অনুরোধে সংযুক্ত ইতিহাস বার্তার সংখ্যা",
Title: 'সংযুক্ত ইতিহাস বার্তার সংখ্যা',
SubTitle: 'প্রতিটি অনুরোধে সংযুক্ত ইতিহাস বার্তার সংখ্যা',
},
CompressThreshold: {
Title: "ইতিহাস বার্তা দৈর্ঘ্য সংকুচিত থ্রেশহোল্ড",
Title: 'ইতিহাস বার্তা দৈর্ঘ্য সংকুচিত থ্রেশহোল্ড',
SubTitle:
"যখন সংকুচিত ইতিহাস বার্তা এই মান ছাড়িয়ে যায়, তখন সংকুচিত করা হবে",
'যখন সংকুচিত ইতিহাস বার্তা এই মান ছাড়িয়ে যায়, তখন সংকুচিত করা হবে',
},
Usage: {
Title: "ব্যালেন্স চেক",
Title: 'ব্যালেন্স চেক',
SubTitle(used: any, total: any) {
return `এই মাসে ব্যবহৃত $${used}, সাবস্ক্রিপশন মোট $${total}`;
},
IsChecking: "পরীক্ষা করা হচ্ছে…",
Check: "পুনরায় পরীক্ষা করুন",
NoAccess: "ব্যালেন্স দেখতে API কী অথবা অ্যাক্সেস পাসওয়ার্ড প্রবেশ করুন",
IsChecking: 'পরীক্ষা করা হচ্ছে…',
Check: 'পুনরায় পরীক্ষা করুন',
NoAccess: 'ব্যালেন্স দেখতে API কী অথবা অ্যাক্সেস পাসওয়ার্ড প্রবেশ করুন',
},
Access: {
SaasStart: {
Title: "NextChat AI ব্যবহার করুন",
Label: "(সেরা মূল্যসাশ্রয়ী সমাধান)",
Title: 'NextChat AI ব্যবহার করুন',
Label: '(সেরা মূল্যসাশ্রয়ী সমাধান)',
SubTitle:
"NextChat কর্তৃক অফিসিয়াল রক্ষণাবেক্ষণ, শূন্য কনফিগারেশন ব্যবহার শুরু করুন, OpenAI o1, GPT-4o, Claude-3.5 সহ সর্বশেষ বড় মডেলগুলি সমর্থন করে",
ChatNow: "এখনই চ্যাট করুন",
'NextChat কর্তৃক অফিসিয়াল রক্ষণাবেক্ষণ, শূন্য কনফিগারেশন ব্যবহার শুরু করুন, OpenAI o1, GPT-4o, Claude-3.5 সহ সর্বশেষ বড় মডেলগুলি সমর্থন করে',
ChatNow: 'এখনই চ্যাট করুন',
},
AccessCode: {
Title: "অ্যাক্সেস পাসওয়ার্ড",
SubTitle: "অ্যাডমিন এনক্রিপ্টেড অ্যাক্সেস সক্রিয় করেছেন",
Placeholder: "অ্যাক্সেস পাসওয়ার্ড প্রবেশ করুন",
Title: 'অ্যাক্সেস পাসওয়ার্ড',
SubTitle: 'অ্যাডমিন এনক্রিপ্টেড অ্যাক্সেস সক্রিয় করেছেন',
Placeholder: 'অ্যাক্সেস পাসওয়ার্ড প্রবেশ করুন',
},
CustomEndpoint: {
Title: "স্বনির্ধারিত ইন্টারফেস",
SubTitle: "স্বনির্ধারিত Azure বা OpenAI সার্ভিস ব্যবহার করবেন কি?",
Title: 'স্বনির্ধারিত ইন্টারফেস',
SubTitle: 'স্বনির্ধারিত Azure বা OpenAI সার্ভিস ব্যবহার করবেন কি?',
},
Provider: {
Title: "মডেল পরিষেবা প্রদানকারী",
SubTitle: "বিভিন্ন পরিষেবা প্রদানকারীতে স্যুইচ করুন",
Title: 'মডেল পরিষেবা প্রদানকারী',
SubTitle: 'বিভিন্ন পরিষেবা প্রদানকারীতে স্যুইচ করুন',
},
OpenAI: {
ApiKey: {
Title: "API কী",
Title: 'API কী',
SubTitle:
"পাসওয়ার্ড অ্যাক্সেস সীমাবদ্ধতা এড়াতে স্বনির্ধারিত OpenAI কী ব্যবহার করুন",
Placeholder: "OpenAI API কী",
'পাসওয়ার্ড অ্যাক্সেস সীমাবদ্ধতা এড়াতে স্বনির্ধারিত OpenAI কী ব্যবহার করুন',
Placeholder: 'OpenAI API কী',
},
Endpoint: {
Title: "ইন্টারফেস ঠিকানা",
SubTitle: "ডিফল্ট ঠিকানা বাদে, http(s):// অন্তর্ভুক্ত করতে হবে",
Title: 'ইন্টারফেস ঠিকানা',
SubTitle: 'ডিফল্ট ঠিকানা বাদে, http(s):// অন্তর্ভুক্ত করতে হবে',
},
},
Azure: {
ApiKey: {
Title: "ইন্টারফেস কী",
Title: 'ইন্টারফেস কী',
SubTitle:
"পাসওয়ার্ড অ্যাক্সেস সীমাবদ্ধতা এড়াতে স্বনির্ধারিত Azure কী ব্যবহার করুন",
Placeholder: "Azure API কী",
'পাসওয়ার্ড অ্যাক্সেস সীমাবদ্ধতা এড়াতে স্বনির্ধারিত Azure কী ব্যবহার করুন',
Placeholder: 'Azure API কী',
},
Endpoint: {
Title: "ইন্টারফেস ঠিকানা",
SubTitle: "উদাহরণ:",
Title: 'ইন্টারফেস ঠিকানা',
SubTitle: 'উদাহরণ:',
},
ApiVerion: {
Title: "ইন্টারফেস সংস্করণ (azure api version)",
SubTitle: "নির্দিষ্ট সংস্করণ নির্বাচন করুন",
Title: 'ইন্টারফেস সংস্করণ (azure api version)',
SubTitle: 'নির্দিষ্ট সংস্করণ নির্বাচন করুন',
},
},
Anthropic: {
ApiKey: {
Title: "ইন্টারফেস কী",
Title: 'ইন্টারফেস কী',
SubTitle:
"পাসওয়ার্ড অ্যাক্সেস সীমাবদ্ধতা এড়াতে স্বনির্ধারিত Anthropic কী ব্যবহার করুন",
Placeholder: "Anthropic API কী",
'পাসওয়ার্ড অ্যাক্সেস সীমাবদ্ধতা এড়াতে স্বনির্ধারিত Anthropic কী ব্যবহার করুন',
Placeholder: 'Anthropic API কী',
},
Endpoint: {
Title: "ইন্টারফেস ঠিকানা",
SubTitle: "উদাহরণ:",
Title: 'ইন্টারফেস ঠিকানা',
SubTitle: 'উদাহরণ:',
},
ApiVerion: {
Title: "ইন্টারফেস সংস্করণ (claude api version)",
SubTitle: "নির্দিষ্ট API সংস্করণ প্রবেশ করুন",
Title: 'ইন্টারফেস সংস্করণ (claude api version)',
SubTitle: 'নির্দিষ্ট API সংস্করণ প্রবেশ করুন',
},
},
Google: {
ApiKey: {
Title: "API কী",
SubTitle: "Google AI থেকে আপনার API কী পান",
Placeholder: "আপনার Google AI Studio API কী প্রবেশ করুন",
Title: 'API কী',
SubTitle: 'Google AI থেকে আপনার API কী পান',
Placeholder: 'আপনার Google AI Studio API কী প্রবেশ করুন',
},
Endpoint: {
Title: "টার্মিনাল ঠিকানা",
SubTitle: "উদাহরণ:",
Title: 'টার্মিনাল ঠিকানা',
SubTitle: 'উদাহরণ:',
},
ApiVersion: {
Title: "API সংস্করণ (শুধুমাত্র gemini-pro)",
SubTitle: "একটি নির্দিষ্ট API সংস্করণ নির্বাচন করুন",
Title: 'API সংস্করণ (শুধুমাত্র gemini-pro)',
SubTitle: 'একটি নির্দিষ্ট API সংস্করণ নির্বাচন করুন',
},
GoogleSafetySettings: {
Title: "Google সেফটি ফিল্টার স্তর",
SubTitle: "বিষয়বস্তু ফিল্টার স্তর সেট করুন",
Title: 'Google সেফটি ফিল্টার স্তর',
SubTitle: 'বিষয়বস্তু ফিল্টার স্তর সেট করুন',
},
},
Baidu: {
ApiKey: {
Title: "API কী",
SubTitle: "স্বনির্ধারিত Baidu API কী ব্যবহার করুন",
Placeholder: "Baidu API কী",
Title: 'API কী',
SubTitle: 'স্বনির্ধারিত Baidu API কী ব্যবহার করুন',
Placeholder: 'Baidu API কী',
},
SecretKey: {
Title: "সিক্রেট কী",
SubTitle: "স্বনির্ধারিত Baidu সিক্রেট কী ব্যবহার করুন",
Placeholder: "Baidu সিক্রেট কী",
Title: 'সিক্রেট কী',
SubTitle: 'স্বনির্ধারিত Baidu সিক্রেট কী ব্যবহার করুন',
Placeholder: 'Baidu সিক্রেট কী',
},
Endpoint: {
Title: "ইন্টারফেস ঠিকানা",
SubTitle: "স্বনির্ধারিত সমর্থিত নয়, .env কনফিগারেশনে চলে যান",
Title: 'ইন্টারফেস ঠিকানা',
SubTitle: 'স্বনির্ধারিত সমর্থিত নয়, .env কনফিগারেশনে চলে যান',
},
},
ByteDance: {
ApiKey: {
Title: "ইন্টারফেস কী",
SubTitle: "স্বনির্ধারিত ByteDance API কী ব্যবহার করুন",
Placeholder: "ByteDance API কী",
Title: 'ইন্টারফেস কী',
SubTitle: 'স্বনির্ধারিত ByteDance API কী ব্যবহার করুন',
Placeholder: 'ByteDance API কী',
},
Endpoint: {
Title: "ইন্টারফেস ঠিকানা",
SubTitle: "উদাহরণ:",
Title: 'ইন্টারফেস ঠিকানা',
SubTitle: 'উদাহরণ:',
},
},
Alibaba: {
ApiKey: {
Title: "ইন্টারফেস কী",
SubTitle: "স্বনির্ধারিত আলিবাবা ক্লাউড API কী ব্যবহার করুন",
Placeholder: "Alibaba Cloud API কী",
Title: 'ইন্টারফেস কী',
SubTitle: 'স্বনির্ধারিত আলিবাবা ক্লাউড API কী ব্যবহার করুন',
Placeholder: 'Alibaba Cloud API কী',
},
Endpoint: {
Title: "ইন্টারফেস ঠিকানা",
SubTitle: "উদাহরণ:",
Title: 'ইন্টারফেস ঠিকানা',
SubTitle: 'উদাহরণ:',
},
},
CustomModel: {
Title: "স্বনির্ধারিত মডেল নাম",
Title: 'স্বনির্ধারিত মডেল নাম',
SubTitle:
"স্বনির্ধারিত মডেল বিকল্পগুলি যুক্ত করুন, ইংরেজি কমা দ্বারা আলাদা করুন",
'স্বনির্ধারিত মডেল বিকল্পগুলি যুক্ত করুন, ইংরেজি কমা দ্বারা আলাদা করুন',
},
},
Model: "মডেল (model)",
Model: 'মডেল (model)',
CompressModel: {
Title: "সংকোচন মডেল",
SubTitle: "ইতিহাস সংকুচিত করার জন্য ব্যবহৃত মডেল",
Title: 'সংকোচন মডেল',
SubTitle: 'ইতিহাস সংকুচিত করার জন্য ব্যবহৃত মডেল',
},
Temperature: {
Title: "যাদুকরিতা (temperature)",
SubTitle: "মান বাড়ালে উত্তর বেশি এলোমেলো হবে",
Title: 'যাদুকরিতা (temperature)',
SubTitle: 'মান বাড়ালে উত্তর বেশি এলোমেলো হবে',
},
TopP: {
Title: "নিউক্লিয়ার স্যাম্পলিং (top_p)",
SubTitle: "যাদুকরিতা মত, কিন্তু একসাথে পরিবর্তন করবেন না",
Title: 'নিউক্লিয়ার স্যাম্পলিং (top_p)',
SubTitle: 'যাদুকরিতা মত, কিন্তু একসাথে পরিবর্তন করবেন না',
},
MaxTokens: {
Title: "একটি উত্তর সীমা (max_tokens)",
SubTitle: "প্রতি ইন্টারঅ্যাকশনে সর্বাধিক টোকেন সংখ্যা",
Title: 'একটি উত্তর সীমা (max_tokens)',
SubTitle: 'প্রতি ইন্টারঅ্যাকশনে সর্বাধিক টোকেন সংখ্যা',
},
PresencePenalty: {
Title: "বিষয়বস্তু তাজা (presence_penalty)",
SubTitle: "মান বাড়ালে নতুন বিষয়ে প্রসারিত হওয়ার সম্ভাবনা বেশি",
Title: 'বিষয়বস্তু তাজা (presence_penalty)',
SubTitle: 'মান বাড়ালে নতুন বিষয়ে প্রসারিত হওয়ার সম্ভাবনা বেশি',
},
FrequencyPenalty: {
Title: "ফ্রিকোয়েন্সি পেনাল্টি (frequency_penalty)",
SubTitle: "মান বাড়ালে পুনরাবৃত্তি শব্দ কমানোর সম্ভাবনা বেশি",
Title: 'ফ্রিকোয়েন্সি পেনাল্টি (frequency_penalty)',
SubTitle: 'মান বাড়ালে পুনরাবৃত্তি শব্দ কমানোর সম্ভাবনা বেশি',
},
},
Store: {
DefaultTopic: "নতুন চ্যাট",
BotHello: "আপনার জন্য কিছু করতে পারি?",
Error: "একটি ত্রুটি ঘটেছে, পরে আবার চেষ্টা করুন",
DefaultTopic: 'নতুন চ্যাট',
BotHello: 'আপনার জন্য কিছু করতে পারি?',
Error: 'একটি ত্রুটি ঘটেছে, পরে আবার চেষ্টা করুন',
Prompt: {
History: (content: string) =>
"এটি পূর্বের চ্যাটের সারাংশ হিসেবে ব্যবহৃত হবে: " + content,
`এটি পূর্বের চ্যাটের সারাংশ হিসেবে ব্যবহৃত হবে: ${content}`,
Topic:
"চার থেকে পাঁচটি শব্দ ব্যবহার করে এই বাক্যের সংক্ষিপ্ত থিম দিন, ব্যাখ্যা, বিরাম চিহ্ন, ভাষা, অতিরিক্ত টেক্সট বা বোল্ড না ব্যবহার করুন। যদি কোনো থিম না থাকে তবে সরাসরি 'বেকার' বলুন",
'চার থেকে পাঁচটি শব্দ ব্যবহার করে এই বাক্যের সংক্ষিপ্ত থিম দিন, ব্যাখ্যা, বিরাম চিহ্ন, ভাষা, অতিরিক্ত টেক্সট বা বোল্ড না ব্যবহার করুন। যদি কোনো থিম না থাকে তবে সরাসরি \'বেকার\' বলুন',
Summarize:
"আলোচনার বিষয়বস্তু সংক্ষিপ্তভাবে সারাংশ করুন, পরবর্তী কনটেক্সট প্রম্পট হিসেবে ব্যবহারের জন্য, ২০০ শব্দের মধ্যে সীমাবদ্ধ রাখুন",
'আলোচনার বিষয়বস্তু সংক্ষিপ্তভাবে সারাংশ করুন, পরবর্তী কনটেক্সট প্রম্পট হিসেবে ব্যবহারের জন্য, ২০০ শব্দের মধ্যে সীমাবদ্ধ রাখুন',
},
},
Copy: {
Success: "ক্লিপবোর্ডে লেখা হয়েছে",
Failed: "কপি ব্যর্থ হয়েছে, দয়া করে ক্লিপবোর্ড অনুমতি প্রদান করুন",
Success: 'ক্লিপবোর্ডে লেখা হয়েছে',
Failed: 'কপি ব্যর্থ হয়েছে, দয়া করে ক্লিপবোর্ড অনুমতি প্রদান করুন',
},
Download: {
Success: "বিষয়বস্তু আপনার ডিরেক্টরিতে ডাউনলোড করা হয়েছে।",
Failed: "ডাউনলোড ব্যর্থ হয়েছে।",
Success: 'বিষয়বস্তু আপনার ডিরেক্টরিতে ডাউনলোড করা হয়েছে।',
Failed: 'ডাউনলোড ব্যর্থ হয়েছে।',
},
Context: {
Toast: (x: any) => `${x}টি পূর্বনির্ধারিত প্রম্পট অন্তর্ভুক্ত`,
Edit: "বর্তমান চ্যাট সেটিংস",
Add: "একটি নতুন চ্যাট যোগ করুন",
Clear: "কনটেক্সট পরিষ্কার করা হয়েছে",
Revert: "কনটেক্সট পুনরুদ্ধার করুন",
Edit: 'বর্তমান চ্যাট সেটিংস',
Add: 'একটি নতুন চ্যাট যোগ করুন',
Clear: 'কনটেক্সট পরিষ্কার করা হয়েছে',
Revert: 'কনটেক্সট পুনরুদ্ধার করুন',
},
Plugin: {
Name: "প্লাগইন",
Name: 'প্লাগইন',
},
FineTuned: {
Sysmessage: "আপনি একজন সহকারী",
Sysmessage: 'আপনি একজন সহকারী',
},
SearchChat: {
Name: "অনুসন্ধান",
Name: 'অনুসন্ধান',
Page: {
Title: "চ্যাট রেকর্ড অনুসন্ধান করুন",
Search: "অনুসন্ধান কীওয়ার্ড লিখুন",
NoResult: "কোন ফলাফল পাওয়া যায়নি",
NoData: "কোন তথ্য নেই",
Loading: "লোড হচ্ছে",
Title: 'চ্যাট রেকর্ড অনুসন্ধান করুন',
Search: 'অনুসন্ধান কীওয়ার্ড লিখুন',
NoResult: 'কোন ফলাফল পাওয়া যায়নি',
NoData: 'কোন তথ্য নেই',
Loading: 'লোড হচ্ছে',
SubTitle: (count: number) => `${count} টি ফলাফল পাওয়া গেছে`,
},
Item: {
View: "দেখুন",
View: 'দেখুন',
},
},
Mask: {
Name: "মাস্ক",
Name: 'মাস্ক',
Page: {
Title: "পূর্বনির্ধারিত চরিত্র মাস্ক",
Title: 'পূর্বনির্ধারিত চরিত্র মাস্ক',
SubTitle: (count: number) => `${count}টি পূর্বনির্ধারিত চরিত্র সংজ্ঞা`,
Search: "চরিত্র মাস্ক অনুসন্ধান করুন",
Create: "নতুন তৈরি করুন",
Search: 'চরিত্র মাস্ক অনুসন্ধান করুন',
Create: 'নতুন তৈরি করুন',
},
Item: {
Info: (count: number) => `ভিতরে ${count}টি পূর্বনির্ধারিত চ্যাট রয়েছে`,
Chat: "চ্যাট",
View: "দেখুন",
Edit: "সম্পাদনা করুন",
Delete: "মুছে ফেলুন",
DeleteConfirm: "মুছে ফেলার জন্য নিশ্চিত করুন?",
Chat: 'চ্যাট',
View: 'দেখুন',
Edit: 'সম্পাদনা করুন',
Delete: 'মুছে ফেলুন',
DeleteConfirm: 'মুছে ফেলার জন্য নিশ্চিত করুন?',
},
EditModal: {
Title: (readonly: boolean) =>
`পূর্বনির্ধারিত মাস্ক সম্পাদনা ${readonly ? "(পঠনযোগ্য)" : ""}`,
Download: "পূর্বনির্ধারিত ডাউনলোড করুন",
Clone: "পূর্বনির্ধারিত ক্লোন করুন",
`পূর্বনির্ধারিত মাস্ক সম্পাদনা ${readonly ? '(পঠনযোগ্য)' : ''}`,
Download: 'পূর্বনির্ধারিত ডাউনলোড করুন',
Clone: 'পূর্বনির্ধারিত ক্লোন করুন',
},
Config: {
Avatar: "চরিত্রের চিত্র",
Name: "চরিত্রের নাম",
Avatar: 'চরিত্রের চিত্র',
Name: 'চরিত্রের নাম',
Sync: {
Title: "গ্লোবাল সেটিংস ব্যবহার করুন",
SubTitle: "বর্তমান চ্যাট গ্লোবাল মডেল সেটিংস ব্যবহার করছে কি না",
Title: 'গ্লোবাল সেটিংস ব্যবহার করুন',
SubTitle: 'বর্তমান চ্যাট গ্লোবাল মডেল সেটিংস ব্যবহার করছে কি না',
Confirm:
"বর্তমান চ্যাটের কাস্টম সেটিংস স্বয়ংক্রিয়ভাবে ওভাররাইট হবে, গ্লোবাল সেটিংস সক্রিয় করতে নিশ্চিত?",
'বর্তমান চ্যাটের কাস্টম সেটিংস স্বয়ংক্রিয়ভাবে ওভাররাইট হবে, গ্লোবাল সেটিংস সক্রিয় করতে নিশ্চিত?',
},
HideContext: {
Title: "পূর্বনির্ধারিত চ্যাট লুকান",
Title: 'পূর্বনির্ধারিত চ্যাট লুকান',
SubTitle:
"লুকানোর পরে পূর্বনির্ধারিত চ্যাট চ্যাট ইন্টারফেসে প্রদর্শিত হবে না",
'লুকানোর পরে পূর্বনির্ধারিত চ্যাট চ্যাট ইন্টারফেসে প্রদর্শিত হবে না',
},
Share: {
Title: "এই মাস্ক শেয়ার করুন",
SubTitle: "এই মাস্কের সরাসরি লিঙ্ক তৈরি করুন",
Action: "লিঙ্ক কপি করুন",
Title: 'এই মাস্ক শেয়ার করুন',
SubTitle: 'এই মাস্কের সরাসরি লিঙ্ক তৈরি করুন',
Action: 'লিঙ্ক কপি করুন',
},
},
},
NewChat: {
Return: "ফিরে যান",
Skip: "ডাইরেক্ট শুরু করুন",
NotShow: "আবার প্রদর্শন করবেন না",
Return: 'ফিরে যান',
Skip: 'ডাইরেক্ট শুরু করুন',
NotShow: 'আবার প্রদর্শন করবেন না',
ConfirmNoShow:
"নিশ্চিত যে নিষ্ক্রিয় করবেন? নিষ্ক্রিয় করার পরে সেটিংসে পুনরায় সক্রিয় করা যাবে।",
Title: "একটি মাস্ক নির্বাচন করুন",
SubTitle: "এখন শুরু করুন, মাস্কের পিছনের চিন্তা প্রতিক্রিয়া করুন",
More: "সব দেখুন",
'নিশ্চিত যে নিষ্ক্রিয় করবেন? নিষ্ক্রিয় করার পরে সেটিংসে পুনরায় সক্রিয় করা যাবে।',
Title: 'একটি মাস্ক নির্বাচন করুন',
SubTitle: 'এখন শুরু করুন, মাস্কের পিছনের চিন্তা প্রতিক্রিয়া করুন',
More: 'সব দেখুন',
},
URLCommand: {
Code: "লিঙ্কে অ্যাক্সেস কোড ইতিমধ্যে অন্তর্ভুক্ত রয়েছে, অটো পূরণ করতে চান?",
Code: 'লিঙ্কে অ্যাক্সেস কোড ইতিমধ্যে অন্তর্ভুক্ত রয়েছে, অটো পূরণ করতে চান?',
Settings:
"লিঙ্কে প্রাক-নির্ধারিত সেটিংস অন্তর্ভুক্ত রয়েছে, অটো পূরণ করতে চান?",
'লিঙ্কে প্রাক-নির্ধারিত সেটিংস অন্তর্ভুক্ত রয়েছে, অটো পূরণ করতে চান?',
},
UI: {
Confirm: "নিশ্চিত করুন",
Cancel: "বাতিল করুন",
Close: "বন্ধ করুন",
Create: "নতুন তৈরি করুন",
Edit: "সম্পাদনা করুন",
Export: "রপ্তানি করুন",
Import: "আমদানি করুন",
Sync: "সিঙ্ক",
Config: "কনফিগারেশন",
Confirm: 'নিশ্চিত করুন',
Cancel: 'বাতিল করুন',
Close: 'বন্ধ করুন',
Create: 'নতুন তৈরি করুন',
Edit: 'সম্পাদনা করুন',
Export: 'রপ্তানি করুন',
Import: 'আমদানি করুন',
Sync: 'সিঙ্ক',
Config: 'কনফিগারেশন',
},
Exporter: {
Description: {
Title: "শুধুমাত্র কনটেক্সট পরিষ্কার করার পরে বার্তাগুলি প্রদর্শিত হবে",
Title: 'শুধুমাত্র কনটেক্সট পরিষ্কার করার পরে বার্তাগুলি প্রদর্শিত হবে',
},
Model: "মডেল",
Messages: "বার্তা",
Topic: "থিম",
Time: "সময়",
Model: 'মডেল',
Messages: 'বার্তা',
Topic: 'থিম',
Time: 'সময়',
},
};

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import type { PartialLocaleType } from "./index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from './index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const cs: PartialLocaleType = {
WIP: "V přípravě...",
WIP: 'V přípravě...',
Error: {
Unauthorized: isApp
? `😆 Rozhovor narazil na nějaké problémy, nebojte se:
@@ -18,16 +19,16 @@ const cs: PartialLocaleType = {
`,
},
Auth: {
Title: "Potřebné heslo",
Tips: "Administrátor povolil ověření heslem, prosím zadejte přístupový kód níže",
SubTips: "nebo zadejte svůj OpenAI nebo Google API klíč",
Input: "Zadejte přístupový kód zde",
Confirm: "Potvrdit",
Later: "Později",
Return: "Návrat",
SaasTips: "Konfigurace je příliš složitá, chci okamžitě začít používat",
Title: 'Potřebné heslo',
Tips: 'Administrátor povolil ověření heslem, prosím zadejte přístupový kód níže',
SubTips: 'nebo zadejte svůj OpenAI nebo Google API klíč',
Input: 'Zadejte přístupový kód zde',
Confirm: 'Potvrdit',
Later: 'Později',
Return: 'Návrat',
SaasTips: 'Konfigurace je příliš složitá, chci okamžitě začít používat',
TopTips:
"🥳 Uvítací nabídka NextChat AI, okamžitě odemkněte OpenAI o1, GPT-4o, Claude-3.5 a nejnovější velké modely",
'🥳 Uvítací nabídka NextChat AI, okamžitě odemkněte OpenAI o1, GPT-4o, Claude-3.5 a nejnovější velké modely',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} konverzací`,
@@ -35,556 +36,556 @@ const cs: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `Celkem ${count} konverzací`,
EditMessage: {
Title: "Upravit zprávy",
Title: 'Upravit zprávy',
Topic: {
Title: "Téma konverzace",
SubTitle: "Změnit aktuální téma konverzace",
Title: 'Téma konverzace',
SubTitle: 'Změnit aktuální téma konverzace',
},
},
Actions: {
ChatList: "Zobrazit seznam zpráv",
CompressedHistory: "Zobrazit komprimovanou historii Prompt",
Export: "Exportovat konverzace",
Copy: "Kopírovat",
Stop: "Zastavit",
Retry: "Zkusit znovu",
Pin: "Připnout",
PinToastContent: "1 konverzace byla připnuta k přednastaveným promptům",
PinToastAction: "Zobrazit",
Delete: "Smazat",
Edit: "Upravit",
RefreshTitle: "Obnovit název",
RefreshToast: "Požadavek na obnovení názvu byl odeslán",
ChatList: 'Zobrazit seznam zpráv',
CompressedHistory: 'Zobrazit komprimovanou historii Prompt',
Export: 'Exportovat konverzace',
Copy: 'Kopírovat',
Stop: 'Zastavit',
Retry: 'Zkusit znovu',
Pin: 'Připnout',
PinToastContent: '1 konverzace byla připnuta k přednastaveným promptům',
PinToastAction: 'Zobrazit',
Delete: 'Smazat',
Edit: 'Upravit',
RefreshTitle: 'Obnovit název',
RefreshToast: 'Požadavek na obnovení názvu byl odeslán',
},
Commands: {
new: "Nová konverzace",
newm: "Nová konverzace z masky",
next: "Další konverzace",
prev: "Předchozí konverzace",
clear: "Vymazat kontext",
del: "Smazat konverzaci",
new: 'Nová konverzace',
newm: 'Nová konverzace z masky',
next: 'Další konverzace',
prev: 'Předchozí konverzace',
clear: 'Vymazat kontext',
del: 'Smazat konverzaci',
},
InputActions: {
Stop: "Zastavit odpověď",
ToBottom: "Přejít na nejnovější",
Stop: 'Zastavit odpověď',
ToBottom: 'Přejít na nejnovější',
Theme: {
auto: "Automatické téma",
light: "Světelný režim",
dark: "Tmavý režim",
auto: 'Automatické téma',
light: 'Světelný režim',
dark: 'Tmavý režim',
},
Prompt: "Rychlé příkazy",
Masks: "Všechny masky",
Clear: "Vymazat konverzaci",
Settings: "Nastavení konverzace",
UploadImage: "Nahrát obrázek",
Prompt: 'Rychlé příkazy',
Masks: 'Všechny masky',
Clear: 'Vymazat konverzaci',
Settings: 'Nastavení konverzace',
UploadImage: 'Nahrát obrázek',
},
Rename: "Přejmenovat konverzaci",
Typing: "Píše se…",
Rename: 'Přejmenovat konverzaci',
Typing: 'Píše se…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} odeslat`;
let inputHints = `${submitKey} odeslat`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "Shift + Enter pro nový řádek";
inputHints += 'Shift + Enter pro nový řádek';
}
return inputHints + "/ pro doplnění, : pro příkaz";
return `${inputHints}/ pro doplnění, : pro příkaz`;
},
Send: "Odeslat",
Send: 'Odeslat',
Config: {
Reset: "Vymazat paměť",
SaveAs: "Uložit jako masku",
Reset: 'Vymazat paměť',
SaveAs: 'Uložit jako masku',
},
IsContext: "Přednastavené prompty",
IsContext: 'Přednastavené prompty',
},
Export: {
Title: "Sdílet konverzace",
Copy: "Kopírovat vše",
Download: "Stáhnout soubor",
Share: "Sdílet na ShareGPT",
MessageFromYou: "Uživatel",
MessageFromChatGPT: "ChatGPT",
Title: 'Sdílet konverzace',
Copy: 'Kopírovat vše',
Download: 'Stáhnout soubor',
Share: 'Sdílet na ShareGPT',
MessageFromYou: 'Uživatel',
MessageFromChatGPT: 'ChatGPT',
Format: {
Title: "Formát exportu",
SubTitle: "Lze exportovat jako Markdown text nebo PNG obrázek",
Title: 'Formát exportu',
SubTitle: 'Lze exportovat jako Markdown text nebo PNG obrázek',
},
IncludeContext: {
Title: "Zahrnout kontext masky",
SubTitle: "Zobrazit kontext masky ve zprávách",
Title: 'Zahrnout kontext masky',
SubTitle: 'Zobrazit kontext masky ve zprávách',
},
Steps: {
Select: "Vybrat",
Preview: "Náhled",
Select: 'Vybrat',
Preview: 'Náhled',
},
Image: {
Toast: "Generování screenshotu",
Modal: "Dlouhým stiskem nebo pravým tlačítkem myši uložte obrázek",
Toast: 'Generování screenshotu',
Modal: 'Dlouhým stiskem nebo pravým tlačítkem myši uložte obrázek',
},
},
Select: {
Search: "Hledat zprávy",
All: "Vybrat vše",
Latest: "Několik posledních",
Clear: "Zrušit výběr",
Search: 'Hledat zprávy',
All: 'Vybrat vše',
Latest: 'Několik posledních',
Clear: 'Zrušit výběr',
},
Memory: {
Title: "Historie shrnutí",
EmptyContent: "Obsah konverzace je příliš krátký, není třeba shrnovat",
Send: "Automaticky komprimovat konverzace a odeslat jako kontext",
Copy: "Kopírovat shrnutí",
Reset: "[nepoužívá se]",
ResetConfirm: "Opravdu chcete vymazat historii shrnutí?",
Title: 'Historie shrnutí',
EmptyContent: 'Obsah konverzace je příliš krátký, není třeba shrnovat',
Send: 'Automaticky komprimovat konverzace a odeslat jako kontext',
Copy: 'Kopírovat shrnutí',
Reset: '[nepoužívá se]',
ResetConfirm: 'Opravdu chcete vymazat historii shrnutí?',
},
Home: {
NewChat: "Nová konverzace",
DeleteChat: "Opravdu chcete smazat vybranou konverzaci?",
DeleteToast: "Konverzace byla smazána",
Revert: "Vrátit",
NewChat: 'Nová konverzace',
DeleteChat: 'Opravdu chcete smazat vybranou konverzaci?',
DeleteToast: 'Konverzace byla smazána',
Revert: 'Vrátit',
},
Settings: {
Title: "Nastavení",
SubTitle: "Všechny možnosti nastavení",
Title: 'Nastavení',
SubTitle: 'Všechny možnosti nastavení',
Danger: {
Reset: {
Title: "Obnovit všechna nastavení",
SubTitle: "Obnovit všechny nastavení na výchozí hodnoty",
Action: "Okamžitě obnovit",
Confirm: "Opravdu chcete obnovit všechna nastavení?",
Title: 'Obnovit všechna nastavení',
SubTitle: 'Obnovit všechny nastavení na výchozí hodnoty',
Action: 'Okamžitě obnovit',
Confirm: 'Opravdu chcete obnovit všechna nastavení?',
},
Clear: {
Title: "Smazat všechna data",
SubTitle: "Smazat všechny chaty a nastavení",
Action: "Okamžitě smazat",
Confirm: "Opravdu chcete smazat všechny chaty a nastavení?",
Title: 'Smazat všechna data',
SubTitle: 'Smazat všechny chaty a nastavení',
Action: 'Okamžitě smazat',
Confirm: 'Opravdu chcete smazat všechny chaty a nastavení?',
},
},
Lang: {
Name: "Language", // POZOR: pokud chcete přidat nový překlad, prosím, nechte tuto hodnotu jako `Language`
All: "Všechny jazyky",
Name: 'Language', // POZOR: pokud chcete přidat nový překlad, prosím, nechte tuto hodnotu jako `Language`
All: 'Všechny jazyky',
},
Avatar: "Profilový obrázek",
Avatar: 'Profilový obrázek',
FontSize: {
Title: "Velikost písma",
SubTitle: "Velikost písma pro obsah chatu",
Title: 'Velikost písma',
SubTitle: 'Velikost písma pro obsah chatu',
},
FontFamily: {
Title: "Chatové Písmo",
Title: 'Chatové Písmo',
SubTitle:
"Písmo obsahu chatu, ponechejte prázdné pro použití globálního výchozího písma",
Placeholder: "Název Písma",
'Písmo obsahu chatu, ponechejte prázdné pro použití globálního výchozího písma',
Placeholder: 'Název Písma',
},
InjectSystemPrompts: {
Title: "Vložit systémové výzvy",
Title: 'Vložit systémové výzvy',
SubTitle:
"Automaticky přidat systémovou výzvu simulující ChatGPT na začátek seznamu zpráv pro každý požadavek",
'Automaticky přidat systémovou výzvu simulující ChatGPT na začátek seznamu zpráv pro každý požadavek',
},
InputTemplate: {
Title: "Předzpracování uživatelského vstupu",
SubTitle: "Nejnovější zpráva uživatele bude vyplněna do této šablony",
Title: 'Předzpracování uživatelského vstupu',
SubTitle: 'Nejnovější zpráva uživatele bude vyplněna do této šablony',
},
Update: {
Version: (x: string) => `Aktuální verze: ${x}`,
IsLatest: "Jste na nejnovější verzi",
CheckUpdate: "Zkontrolovat aktualizace",
IsChecking: "Kontrola aktualizací...",
IsLatest: 'Jste na nejnovější verzi',
CheckUpdate: 'Zkontrolovat aktualizace',
IsChecking: 'Kontrola aktualizací...',
FoundUpdate: (x: string) => `Nalezena nová verze: ${x}`,
GoToUpdate: "Přejít na aktualizaci",
GoToUpdate: 'Přejít na aktualizaci',
},
SendKey: "Klávesa pro odeslání",
Theme: "Téma",
TightBorder: "Režim bez okrajů",
SendKey: 'Klávesa pro odeslání',
Theme: 'Téma',
TightBorder: 'Režim bez okrajů',
SendPreviewBubble: {
Title: "Náhledová bublina",
SubTitle: "Náhled Markdown obsahu v náhledové bublině",
Title: 'Náhledová bublina',
SubTitle: 'Náhled Markdown obsahu v náhledové bublině',
},
AutoGenerateTitle: {
Title: "Automatické generování názvu",
SubTitle: "Generovat vhodný název na základě obsahu konverzace",
Title: 'Automatické generování názvu',
SubTitle: 'Generovat vhodný název na základě obsahu konverzace',
},
Sync: {
CloudState: "Data na cloudu",
NotSyncYet: "Ještě nebylo synchronizováno",
Success: "Synchronizace úspěšná",
Fail: "Synchronizace selhala",
CloudState: 'Data na cloudu',
NotSyncYet: 'Ještě nebylo synchronizováno',
Success: 'Synchronizace úspěšná',
Fail: 'Synchronizace selhala',
Config: {
Modal: {
Title: "Nastavení cloudové synchronizace",
Check: "Zkontrolovat dostupnost",
Title: 'Nastavení cloudové synchronizace',
Check: 'Zkontrolovat dostupnost',
},
SyncType: {
Title: "Typ synchronizace",
SubTitle: "Vyberte oblíbený synchronizační server",
Title: 'Typ synchronizace',
SubTitle: 'Vyberte oblíbený synchronizační server',
},
Proxy: {
Title: "Povolit proxy",
Title: 'Povolit proxy',
SubTitle:
"Při synchronizaci v prohlížeči musí být proxy povolena, aby se předešlo problémům s CORS",
'Při synchronizaci v prohlížeči musí být proxy povolena, aby se předešlo problémům s CORS',
},
ProxyUrl: {
Title: "Adresa proxy",
SubTitle: "Pouze pro interní proxy",
Title: 'Adresa proxy',
SubTitle: 'Pouze pro interní proxy',
},
WebDav: {
Endpoint: "WebDAV adresa",
UserName: "Uživatelské jméno",
Password: "Heslo",
Endpoint: 'WebDAV adresa',
UserName: 'Uživatelské jméno',
Password: 'Heslo',
},
UpStash: {
Endpoint: "UpStash Redis REST URL",
UserName: "Název zálohy",
Password: "UpStash Redis REST Token",
Endpoint: 'UpStash Redis REST URL',
UserName: 'Název zálohy',
Password: 'UpStash Redis REST Token',
},
},
LocalState: "Lokální data",
LocalState: 'Lokální data',
Overview: (overview: any) => {
return `${overview.chat} konverzací, ${overview.message} zpráv, ${overview.prompt} promptů, ${overview.mask} masek`;
},
ImportFailed: "Import selhal",
ImportFailed: 'Import selhal',
},
Mask: {
Splash: {
Title: "Úvodní stránka masky",
SubTitle: "Při zahájení nové konverzace zobrazit úvodní stránku masky",
Title: 'Úvodní stránka masky',
SubTitle: 'Při zahájení nové konverzace zobrazit úvodní stránku masky',
},
Builtin: {
Title: "Skrýt vestavěné masky",
SubTitle: "Skrýt vestavěné masky v seznamu všech masek",
Title: 'Skrýt vestavěné masky',
SubTitle: 'Skrýt vestavěné masky v seznamu všech masek',
},
},
Prompt: {
Disable: {
Title: "Zakázat automatické doplňování promptů",
Title: 'Zakázat automatické doplňování promptů',
SubTitle:
"Automatické doplňování se aktivuje zadáním / na začátku textového pole",
'Automatické doplňování se aktivuje zadáním / na začátku textového pole',
},
List: "Seznam vlastních promptů",
List: 'Seznam vlastních promptů',
ListCount: (builtin: number, custom: number) =>
`Vestavěné ${builtin} položek, uživatelsky definované ${custom} položek`,
Edit: "Upravit",
Edit: 'Upravit',
Modal: {
Title: "Seznam promptů",
Add: "Nový",
Search: "Hledat prompty",
Title: 'Seznam promptů',
Add: 'Nový',
Search: 'Hledat prompty',
},
EditModal: {
Title: "Upravit prompt",
Title: 'Upravit prompt',
},
},
HistoryCount: {
Title: "Počet historických zpráv",
SubTitle: "Počet historických zpráv zahrnutých v každém požadavku",
Title: 'Počet historických zpráv',
SubTitle: 'Počet historických zpráv zahrnutých v každém požadavku',
},
CompressThreshold: {
Title: "Prahová hodnota komprese historických zpráv",
Title: 'Prahová hodnota komprese historických zpráv',
SubTitle:
"Když nekomprimované historické zprávy překročí tuto hodnotu, dojde ke kompresi",
'Když nekomprimované historické zprávy překročí tuto hodnotu, dojde ke kompresi',
},
Usage: {
Title: "Kontrola zůstatku",
Title: 'Kontrola zůstatku',
SubTitle(used: any, total: any) {
return `Tento měsíc použito $${used}, celkový předplatný objem $${total}`;
},
IsChecking: "Probíhá kontrola…",
Check: "Znovu zkontrolovat",
NoAccess: "Zadejte API Key nebo přístupové heslo pro zobrazení zůstatku",
IsChecking: 'Probíhá kontrola…',
Check: 'Znovu zkontrolovat',
NoAccess: 'Zadejte API Key nebo přístupové heslo pro zobrazení zůstatku',
},
Access: {
SaasStart: {
Title: "Použití NextChat AI",
Label: "(Nejlepší nákladově efektivní řešení)",
Title: 'Použití NextChat AI',
Label: '(Nejlepší nákladově efektivní řešení)',
SubTitle:
"Oficiálně udržováno NextChat, připraveno k použití bez konfigurace, podporuje nejnovější velké modely jako OpenAI o1, GPT-4o, Claude-3.5",
ChatNow: "Začněte chatovat nyní",
'Oficiálně udržováno NextChat, připraveno k použití bez konfigurace, podporuje nejnovější velké modely jako OpenAI o1, GPT-4o, Claude-3.5',
ChatNow: 'Začněte chatovat nyní',
},
AccessCode: {
Title: "Přístupový kód",
SubTitle: "Administrátor aktivoval šifrovaný přístup",
Placeholder: "Zadejte přístupový kód",
Title: 'Přístupový kód',
SubTitle: 'Administrátor aktivoval šifrovaný přístup',
Placeholder: 'Zadejte přístupový kód',
},
CustomEndpoint: {
Title: "Vlastní rozhraní",
SubTitle: "Použít vlastní Azure nebo OpenAI službu",
Title: 'Vlastní rozhraní',
SubTitle: 'Použít vlastní Azure nebo OpenAI službu',
},
Provider: {
Title: "Poskytovatel modelu",
SubTitle: "Přepnout mezi různými poskytovateli",
Title: 'Poskytovatel modelu',
SubTitle: 'Přepnout mezi různými poskytovateli',
},
OpenAI: {
ApiKey: {
Title: "API Key",
Title: 'API Key',
SubTitle:
"Použijte vlastní OpenAI Key k obejití přístupového omezení",
Placeholder: "OpenAI API Key",
'Použijte vlastní OpenAI Key k obejití přístupového omezení',
Placeholder: 'OpenAI API Key',
},
Endpoint: {
Title: "Adresa rozhraní",
SubTitle: "Kromě výchozí adresy musí obsahovat http(s)://",
Title: 'Adresa rozhraní',
SubTitle: 'Kromě výchozí adresy musí obsahovat http(s)://',
},
},
Azure: {
ApiKey: {
Title: "Rozhraní klíč",
SubTitle: "Použijte vlastní Azure Key k obejití přístupového omezení",
Placeholder: "Azure API Key",
Title: 'Rozhraní klíč',
SubTitle: 'Použijte vlastní Azure Key k obejití přístupového omezení',
Placeholder: 'Azure API Key',
},
Endpoint: {
Title: "Adresa rozhraní",
SubTitle: "Příklad:",
Title: 'Adresa rozhraní',
SubTitle: 'Příklad:',
},
ApiVerion: {
Title: "Verze rozhraní (azure api version)",
SubTitle: "Vyberte konkrétní verzi",
Title: 'Verze rozhraní (azure api version)',
SubTitle: 'Vyberte konkrétní verzi',
},
},
Anthropic: {
ApiKey: {
Title: "Rozhraní klíč",
Title: 'Rozhraní klíč',
SubTitle:
"Použijte vlastní Anthropic Key k obejití přístupového omezení",
Placeholder: "Anthropic API Key",
'Použijte vlastní Anthropic Key k obejití přístupového omezení',
Placeholder: 'Anthropic API Key',
},
Endpoint: {
Title: "Adresa rozhraní",
SubTitle: "Příklad:",
Title: 'Adresa rozhraní',
SubTitle: 'Příklad:',
},
ApiVerion: {
Title: "Verze rozhraní (claude api version)",
SubTitle: "Vyberte konkrétní verzi API",
Title: 'Verze rozhraní (claude api version)',
SubTitle: 'Vyberte konkrétní verzi API',
},
},
Google: {
ApiKey: {
Title: "API klíč",
SubTitle: "Získejte svůj API klíč od Google AI",
Placeholder: "Zadejte svůj Google AI Studio API klíč",
Title: 'API klíč',
SubTitle: 'Získejte svůj API klíč od Google AI',
Placeholder: 'Zadejte svůj Google AI Studio API klíč',
},
Endpoint: {
Title: "Konečná adresa",
SubTitle: "Příklad:",
Title: 'Konečná adresa',
SubTitle: 'Příklad:',
},
ApiVersion: {
Title: "Verze API (pouze pro gemini-pro)",
SubTitle: "Vyberte konkrétní verzi API",
Title: 'Verze API (pouze pro gemini-pro)',
SubTitle: 'Vyberte konkrétní verzi API',
},
GoogleSafetySettings: {
Title: "Úroveň bezpečnostního filtrování Google",
SubTitle: "Nastavit úroveň filtrování obsahu",
Title: 'Úroveň bezpečnostního filtrování Google',
SubTitle: 'Nastavit úroveň filtrování obsahu',
},
},
Baidu: {
ApiKey: {
Title: "API Key",
SubTitle: "Použijte vlastní Baidu API Key",
Placeholder: "Baidu API Key",
Title: 'API Key',
SubTitle: 'Použijte vlastní Baidu API Key',
Placeholder: 'Baidu API Key',
},
SecretKey: {
Title: "Secret Key",
SubTitle: "Použijte vlastní Baidu Secret Key",
Placeholder: "Baidu Secret Key",
Title: 'Secret Key',
SubTitle: 'Použijte vlastní Baidu Secret Key',
Placeholder: 'Baidu Secret Key',
},
Endpoint: {
Title: "Adresa rozhraní",
Title: 'Adresa rozhraní',
SubTitle:
"Nepodporuje vlastní nastavení, přejděte na .env konfiguraci",
'Nepodporuje vlastní nastavení, přejděte na .env konfiguraci',
},
},
ByteDance: {
ApiKey: {
Title: "Rozhraní klíč",
SubTitle: "Použijte vlastní ByteDance API Key",
Placeholder: "ByteDance API Key",
Title: 'Rozhraní klíč',
SubTitle: 'Použijte vlastní ByteDance API Key',
Placeholder: 'ByteDance API Key',
},
Endpoint: {
Title: "Adresa rozhraní",
SubTitle: "Příklad:",
Title: 'Adresa rozhraní',
SubTitle: 'Příklad:',
},
},
Alibaba: {
ApiKey: {
Title: "Rozhraní klíč",
SubTitle: "Použijte vlastní Alibaba Cloud API Key",
Placeholder: "Alibaba Cloud API Key",
Title: 'Rozhraní klíč',
SubTitle: 'Použijte vlastní Alibaba Cloud API Key',
Placeholder: 'Alibaba Cloud API Key',
},
Endpoint: {
Title: "Adresa rozhraní",
SubTitle: "Příklad:",
Title: 'Adresa rozhraní',
SubTitle: 'Příklad:',
},
},
CustomModel: {
Title: "Vlastní názvy modelů",
SubTitle: "Přidejte možnosti vlastních modelů, oddělené čárkami",
Title: 'Vlastní názvy modelů',
SubTitle: 'Přidejte možnosti vlastních modelů, oddělené čárkami',
},
},
Model: "Model (model)",
Model: 'Model (model)',
CompressModel: {
Title: "Kompresní model",
SubTitle: "Model používaný pro kompresi historie",
Title: 'Kompresní model',
SubTitle: 'Model používaný pro kompresi historie',
},
Temperature: {
Title: "Náhodnost (temperature)",
SubTitle: "Čím vyšší hodnota, tím náhodnější odpovědi",
Title: 'Náhodnost (temperature)',
SubTitle: 'Čím vyšší hodnota, tím náhodnější odpovědi',
},
TopP: {
Title: "Jádrové vzorkování (top_p)",
SubTitle: "Podobné náhodnosti, ale neměňte spolu s náhodností",
Title: 'Jádrové vzorkování (top_p)',
SubTitle: 'Podobné náhodnosti, ale neměňte spolu s náhodností',
},
MaxTokens: {
Title: "Omezení odpovědi (max_tokens)",
SubTitle: "Maximální počet Tokenů použitých v jednom interakci",
Title: 'Omezení odpovědi (max_tokens)',
SubTitle: 'Maximální počet Tokenů použitých v jednom interakci',
},
PresencePenalty: {
Title: "Čerstvost témat (presence_penalty)",
Title: 'Čerstvost témat (presence_penalty)',
SubTitle:
"Čím vyšší hodnota, tím větší pravděpodobnost rozšíření na nová témata",
'Čím vyšší hodnota, tím větší pravděpodobnost rozšíření na nová témata',
},
FrequencyPenalty: {
Title: "Penalizace frekvence (frequency_penalty)",
Title: 'Penalizace frekvence (frequency_penalty)',
SubTitle:
"Čím vyšší hodnota, tím větší pravděpodobnost snížení opakování slov",
'Čím vyšší hodnota, tím větší pravděpodobnost snížení opakování slov',
},
},
Store: {
DefaultTopic: "Nový chat",
BotHello: "Jak vám mohu pomoci?",
Error: "Došlo k chybě, zkuste to prosím znovu později.",
DefaultTopic: 'Nový chat',
BotHello: 'Jak vám mohu pomoci?',
Error: 'Došlo k chybě, zkuste to prosím znovu později.',
Prompt: {
History: (content: string) =>
"Toto je shrnutí historie chatu jako kontext: " + content,
`Toto je shrnutí historie chatu jako kontext: ${content}`,
Topic:
"Použijte čtyři až pět slov pro stručné téma této věty, bez vysvětlení, interpunkce, citoslovcí, nadbytečného textu, bez tučného písma. Pokud téma neexistuje, vraťte pouze 'neformální chat'.",
'Použijte čtyři až pět slov pro stručné téma této věty, bez vysvětlení, interpunkce, citoslovcí, nadbytečného textu, bez tučného písma. Pokud téma neexistuje, vraťte pouze \'neformální chat\'.',
Summarize:
"Stručně shrňte obsah konverzace jako kontextový prompt pro budoucí použití, do 200 slov",
'Stručně shrňte obsah konverzace jako kontextový prompt pro budoucí použití, do 200 slov',
},
},
Copy: {
Success: "Zkopírováno do schránky",
Failed: "Kopírování selhalo, prosím, povolte přístup ke schránce",
Success: 'Zkopírováno do schránky',
Failed: 'Kopírování selhalo, prosím, povolte přístup ke schránce',
},
Download: {
Success: "Obsah byl stažen do vašeho adresáře.",
Failed: "Stahování selhalo.",
Success: 'Obsah byl stažen do vašeho adresáře.',
Failed: 'Stahování selhalo.',
},
Context: {
Toast: (x: any) => `Obsahuje ${x} přednastavených promptů`,
Edit: "Nastavení aktuální konverzace",
Add: "Přidat novou konverzaci",
Clear: "Kontext byl vymazán",
Revert: "Obnovit kontext",
Edit: 'Nastavení aktuální konverzace',
Add: 'Přidat novou konverzaci',
Clear: 'Kontext byl vymazán',
Revert: 'Obnovit kontext',
},
Plugin: {
Name: "Plugin",
Name: 'Plugin',
},
FineTuned: {
Sysmessage: "Jste asistent",
Sysmessage: 'Jste asistent',
},
SearchChat: {
Name: "Hledat",
Name: 'Hledat',
Page: {
Title: "Hledat v historii chatu",
Search: "Zadejte hledané klíčové slovo",
NoResult: "Nebyly nalezeny žádné výsledky",
NoData: "Žádná data",
Loading: "Načítání",
Title: 'Hledat v historii chatu',
Search: 'Zadejte hledané klíčové slovo',
NoResult: 'Nebyly nalezeny žádné výsledky',
NoData: 'Žádná data',
Loading: 'Načítání',
SubTitle: (count: number) => `Nalezeno ${count} výsledků`,
},
Item: {
View: "Zobrazit",
View: 'Zobrazit',
},
},
Mask: {
Name: "Maska",
Name: 'Maska',
Page: {
Title: "Přednastavené role masky",
Title: 'Přednastavené role masky',
SubTitle: (count: number) => `${count} definovaných rolí`,
Search: "Hledat role masky",
Create: "Nový",
Search: 'Hledat role masky',
Create: 'Nový',
},
Item: {
Info: (count: number) => `Obsahuje ${count} přednastavených konverzací`,
Chat: "Chat",
View: "Zobrazit",
Edit: "Upravit",
Delete: "Smazat",
DeleteConfirm: "Opravdu chcete smazat?",
Chat: 'Chat',
View: 'Zobrazit',
Edit: 'Upravit',
Delete: 'Smazat',
DeleteConfirm: 'Opravdu chcete smazat?',
},
EditModal: {
Title: (readonly: boolean) =>
`Upravit přednastavenou masku ${readonly ? " (jen pro čtení)" : ""}`,
Download: "Stáhnout přednastavení",
Clone: "Klonovat přednastavení",
`Upravit přednastavenou masku ${readonly ? ' (jen pro čtení)' : ''}`,
Download: 'Stáhnout přednastavení',
Clone: 'Klonovat přednastavení',
},
Config: {
Avatar: "Profilový obrázek",
Name: "Název role",
Avatar: 'Profilový obrázek',
Name: 'Název role',
Sync: {
Title: "Použít globální nastavení",
SubTitle: "Použít globální modelová nastavení pro aktuální konverzaci",
Title: 'Použít globální nastavení',
SubTitle: 'Použít globální modelová nastavení pro aktuální konverzaci',
Confirm:
"Vaše vlastní nastavení konverzace bude automaticky přepsáno, opravdu chcete použít globální nastavení?",
'Vaše vlastní nastavení konverzace bude automaticky přepsáno, opravdu chcete použít globální nastavení?',
},
HideContext: {
Title: "Skrýt přednastavené konverzace",
Title: 'Skrýt přednastavené konverzace',
SubTitle:
"Po skrytí se přednastavené konverzace nebudou zobrazovat v chatovém rozhraní",
'Po skrytí se přednastavené konverzace nebudou zobrazovat v chatovém rozhraní',
},
Share: {
Title: "Sdílet tuto masku",
SubTitle: "Generovat přímý odkaz na tuto masku",
Action: "Kopírovat odkaz",
Title: 'Sdílet tuto masku',
SubTitle: 'Generovat přímý odkaz na tuto masku',
Action: 'Kopírovat odkaz',
},
},
},
NewChat: {
Return: "Zpět",
Skip: "Začít hned",
NotShow: "Zobrazit už nikdy",
Return: 'Zpět',
Skip: 'Začít hned',
NotShow: 'Zobrazit už nikdy',
ConfirmNoShow:
"Opravdu chcete zakázat? Zakázání můžete kdykoli znovu povolit v nastavení.",
Title: "Vyberte masku",
SubTitle: "Začněte nyní a konfrontujte se s myslí za maskou",
More: "Zobrazit vše",
'Opravdu chcete zakázat? Zakázání můžete kdykoli znovu povolit v nastavení.',
Title: 'Vyberte masku',
SubTitle: 'Začněte nyní a konfrontujte se s myslí za maskou',
More: 'Zobrazit vše',
},
URLCommand: {
Code: "Byl detekován přístupový kód v odkazu, chcete jej automaticky vyplnit?",
Code: 'Byl detekován přístupový kód v odkazu, chcete jej automaticky vyplnit?',
Settings:
"Byla detekována přednastavená nastavení v odkazu, chcete je automaticky vyplnit?",
'Byla detekována přednastavená nastavení v odkazu, chcete je automaticky vyplnit?',
},
UI: {
Confirm: "Potvrdit",
Cancel: "Zrušit",
Close: "Zavřít",
Create: "Nový",
Edit: "Upravit",
Export: "Exportovat",
Import: "Importovat",
Sync: "Synchronizovat",
Config: "Konfigurovat",
Confirm: 'Potvrdit',
Cancel: 'Zrušit',
Close: 'Zavřít',
Create: 'Nový',
Edit: 'Upravit',
Export: 'Exportovat',
Import: 'Importovat',
Sync: 'Synchronizovat',
Config: 'Konfigurovat',
},
Exporter: {
Description: {
Title: "Pouze zprávy po vymazání kontextu budou zobrazeny",
Title: 'Pouze zprávy po vymazání kontextu budou zobrazeny',
},
Model: "Model",
Messages: "Zprávy",
Topic: "Téma",
Time: "Čas",
Model: 'Model',
Messages: 'Zprávy',
Topic: 'Téma',
Time: 'Čas',
},
};

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import type { PartialLocaleType } from "./index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from './index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const de: PartialLocaleType = {
WIP: "In Bearbeitung...",
WIP: 'In Bearbeitung...',
Error: {
Unauthorized: isApp
? `😆 Das Gespräch hatte einige Probleme, keine Sorge:
@@ -18,17 +19,17 @@ const de: PartialLocaleType = {
`,
},
Auth: {
Title: "Passwort erforderlich",
Tips: "Der Administrator hat die Passwortüberprüfung aktiviert. Bitte geben Sie den Zugangscode unten ein.",
SubTips: "Oder geben Sie Ihren OpenAI oder Google API-Schlüssel ein.",
Input: "Geben Sie hier den Zugangscode ein",
Confirm: "Bestätigen",
Later: "Später",
Return: "Zurück",
Title: 'Passwort erforderlich',
Tips: 'Der Administrator hat die Passwortüberprüfung aktiviert. Bitte geben Sie den Zugangscode unten ein.',
SubTips: 'Oder geben Sie Ihren OpenAI oder Google API-Schlüssel ein.',
Input: 'Geben Sie hier den Zugangscode ein',
Confirm: 'Bestätigen',
Later: 'Später',
Return: 'Zurück',
SaasTips:
"Die Konfiguration ist zu kompliziert, ich möchte es sofort nutzen",
'Die Konfiguration ist zu kompliziert, ich möchte es sofort nutzen',
TopTips:
"🥳 NextChat AI Einführungsangebot, schalte jetzt OpenAI o1, GPT-4o, Claude-3.5 und die neuesten großen Modelle frei",
'🥳 NextChat AI Einführungsangebot, schalte jetzt OpenAI o1, GPT-4o, Claude-3.5 und die neuesten großen Modelle frei',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} Gespräche`,
@@ -36,574 +37,574 @@ const de: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `Insgesamt ${count} Gespräche`,
EditMessage: {
Title: "Nachricht bearbeiten",
Title: 'Nachricht bearbeiten',
Topic: {
Title: "Chat-Thema",
SubTitle: "Ändern Sie das aktuelle Chat-Thema",
Title: 'Chat-Thema',
SubTitle: 'Ändern Sie das aktuelle Chat-Thema',
},
},
Actions: {
ChatList: "Nachrichtliste anzeigen",
CompressedHistory: "Komprimierte Historie anzeigen",
Export: "Chatverlauf exportieren",
Copy: "Kopieren",
Stop: "Stoppen",
Retry: "Erneut versuchen",
Pin: "Anheften",
PinToastContent: "1 Gespräch an den voreingestellten Prompt angeheftet",
PinToastAction: "Ansehen",
Delete: "Löschen",
Edit: "Bearbeiten",
RefreshTitle: "Titel aktualisieren",
RefreshToast: "Anfrage zur Titelaktualisierung gesendet",
ChatList: 'Nachrichtliste anzeigen',
CompressedHistory: 'Komprimierte Historie anzeigen',
Export: 'Chatverlauf exportieren',
Copy: 'Kopieren',
Stop: 'Stoppen',
Retry: 'Erneut versuchen',
Pin: 'Anheften',
PinToastContent: '1 Gespräch an den voreingestellten Prompt angeheftet',
PinToastAction: 'Ansehen',
Delete: 'Löschen',
Edit: 'Bearbeiten',
RefreshTitle: 'Titel aktualisieren',
RefreshToast: 'Anfrage zur Titelaktualisierung gesendet',
},
Commands: {
new: "Neues Gespräch",
newm: "Neues Gespräch aus Maske erstellen",
next: "Nächstes Gespräch",
prev: "Vorheriges Gespräch",
clear: "Kontext löschen",
del: "Gespräch löschen",
new: 'Neues Gespräch',
newm: 'Neues Gespräch aus Maske erstellen',
next: 'Nächstes Gespräch',
prev: 'Vorheriges Gespräch',
clear: 'Kontext löschen',
del: 'Gespräch löschen',
},
InputActions: {
Stop: "Antwort stoppen",
ToBottom: "Zum neuesten Beitrag",
Stop: 'Antwort stoppen',
ToBottom: 'Zum neuesten Beitrag',
Theme: {
auto: "Automatisches Thema",
light: "Helles Thema",
dark: "Dunkles Thema",
auto: 'Automatisches Thema',
light: 'Helles Thema',
dark: 'Dunkles Thema',
},
Prompt: "Schnellbefehle",
Masks: "Alle Masken",
Clear: "Chat löschen",
Settings: "Gesprächseinstellungen",
UploadImage: "Bild hochladen",
Prompt: 'Schnellbefehle',
Masks: 'Alle Masken',
Clear: 'Chat löschen',
Settings: 'Gesprächseinstellungen',
UploadImage: 'Bild hochladen',
},
Rename: "Gespräch umbenennen",
Typing: "Tippt…",
Rename: 'Gespräch umbenennen',
Typing: 'Tippt…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} senden`;
let inputHints = `${submitKey} senden`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "Shift + Enter für Zeilenumbruch";
inputHints += 'Shift + Enter für Zeilenumbruch';
}
return inputHints + "/ für Autovervollständigung, : für Befehle";
return `${inputHints}/ für Autovervollständigung, : für Befehle`;
},
Send: "Senden",
Send: 'Senden',
Config: {
Reset: "Erinnerung löschen",
SaveAs: "Als Maske speichern",
Reset: 'Erinnerung löschen',
SaveAs: 'Als Maske speichern',
},
IsContext: "Voreingestellter Prompt",
IsContext: 'Voreingestellter Prompt',
},
Export: {
Title: "Chatverlauf teilen",
Copy: "Alles kopieren",
Download: "Datei herunterladen",
Share: "Auf ShareGPT teilen",
MessageFromYou: "Benutzer",
MessageFromChatGPT: "ChatGPT",
Title: 'Chatverlauf teilen',
Copy: 'Alles kopieren',
Download: 'Datei herunterladen',
Share: 'Auf ShareGPT teilen',
MessageFromYou: 'Benutzer',
MessageFromChatGPT: 'ChatGPT',
Format: {
Title: "Exportformat",
SubTitle: "Kann als Markdown-Text oder PNG-Bild exportiert werden",
Title: 'Exportformat',
SubTitle: 'Kann als Markdown-Text oder PNG-Bild exportiert werden',
},
IncludeContext: {
Title: "Maske Kontext einbeziehen",
SubTitle: "Soll der Maskenkontext in den Nachrichten angezeigt werden?",
Title: 'Maske Kontext einbeziehen',
SubTitle: 'Soll der Maskenkontext in den Nachrichten angezeigt werden?',
},
Steps: {
Select: "Auswählen",
Preview: "Vorschau",
Select: 'Auswählen',
Preview: 'Vorschau',
},
Image: {
Toast: "Screenshot wird erstellt",
Modal: "Lang drücken oder Rechtsklick, um Bild zu speichern",
Toast: 'Screenshot wird erstellt',
Modal: 'Lang drücken oder Rechtsklick, um Bild zu speichern',
},
},
Select: {
Search: "Nachrichten suchen",
All: "Alles auswählen",
Latest: "Neueste",
Clear: "Auswahl aufheben",
Search: 'Nachrichten suchen',
All: 'Alles auswählen',
Latest: 'Neueste',
Clear: 'Auswahl aufheben',
},
Memory: {
Title: "Historische Zusammenfassung",
Title: 'Historische Zusammenfassung',
EmptyContent:
"Gesprächsinhalte sind zu kurz, keine Zusammenfassung erforderlich",
Send: "Chatverlauf automatisch komprimieren und als Kontext senden",
Copy: "Zusammenfassung kopieren",
Reset: "[nicht verwendet]",
ResetConfirm: "Zusammenfassung löschen bestätigen?",
'Gesprächsinhalte sind zu kurz, keine Zusammenfassung erforderlich',
Send: 'Chatverlauf automatisch komprimieren und als Kontext senden',
Copy: 'Zusammenfassung kopieren',
Reset: '[nicht verwendet]',
ResetConfirm: 'Zusammenfassung löschen bestätigen?',
},
Home: {
NewChat: "Neues Gespräch",
DeleteChat: "Bestätigen Sie das Löschen des ausgewählten Gesprächs?",
DeleteToast: "Gespräch gelöscht",
Revert: "Rückgängig machen",
NewChat: 'Neues Gespräch',
DeleteChat: 'Bestätigen Sie das Löschen des ausgewählten Gesprächs?',
DeleteToast: 'Gespräch gelöscht',
Revert: 'Rückgängig machen',
},
Settings: {
Title: "Einstellungen",
SubTitle: "Alle Einstellungsmöglichkeiten",
Title: 'Einstellungen',
SubTitle: 'Alle Einstellungsmöglichkeiten',
Danger: {
Reset: {
Title: "Alle Einstellungen zurücksetzen",
SubTitle: "Setzt alle Einstellungen auf die Standardwerte zurück",
Action: "Jetzt zurücksetzen",
Confirm: "Bestätigen Sie das Zurücksetzen aller Einstellungen?",
Title: 'Alle Einstellungen zurücksetzen',
SubTitle: 'Setzt alle Einstellungen auf die Standardwerte zurück',
Action: 'Jetzt zurücksetzen',
Confirm: 'Bestätigen Sie das Zurücksetzen aller Einstellungen?',
},
Clear: {
Title: "Alle Daten löschen",
SubTitle: "Löscht alle Chats und Einstellungsdaten",
Action: "Jetzt löschen",
Title: 'Alle Daten löschen',
SubTitle: 'Löscht alle Chats und Einstellungsdaten',
Action: 'Jetzt löschen',
Confirm:
"Bestätigen Sie das Löschen aller Chats und Einstellungsdaten?",
'Bestätigen Sie das Löschen aller Chats und Einstellungsdaten?',
},
},
Lang: {
Name: "Sprache", // ACHTUNG: Wenn Sie eine neue Übersetzung hinzufügen möchten, übersetzen Sie diesen Wert bitte nicht, lassen Sie ihn als `Sprache`
All: "Alle Sprachen",
Name: 'Sprache', // ACHTUNG: Wenn Sie eine neue Übersetzung hinzufügen möchten, übersetzen Sie diesen Wert bitte nicht, lassen Sie ihn als `Sprache`
All: 'Alle Sprachen',
},
Avatar: "Avatar",
Avatar: 'Avatar',
FontSize: {
Title: "Schriftgröße",
SubTitle: "Schriftgröße des Chat-Inhalts",
Title: 'Schriftgröße',
SubTitle: 'Schriftgröße des Chat-Inhalts',
},
FontFamily: {
Title: "Chat-Schriftart",
Title: 'Chat-Schriftart',
SubTitle:
"Schriftart des Chat-Inhalts, leer lassen, um die globale Standardschriftart anzuwenden",
Placeholder: "Schriftartname",
'Schriftart des Chat-Inhalts, leer lassen, um die globale Standardschriftart anzuwenden',
Placeholder: 'Schriftartname',
},
InjectSystemPrompts: {
Title: "Systemweite Eingabeaufforderungen einfügen",
Title: 'Systemweite Eingabeaufforderungen einfügen',
SubTitle:
"Fügt jeder Nachricht am Anfang der Nachrichtenliste eine simulierte ChatGPT-Systemaufforderung hinzu",
'Fügt jeder Nachricht am Anfang der Nachrichtenliste eine simulierte ChatGPT-Systemaufforderung hinzu',
},
InputTemplate: {
Title: "Benutzer-Eingabeverarbeitung",
Title: 'Benutzer-Eingabeverarbeitung',
SubTitle:
"Die neueste Nachricht des Benutzers wird in diese Vorlage eingefügt",
'Die neueste Nachricht des Benutzers wird in diese Vorlage eingefügt',
},
Update: {
Version: (x: string) => `Aktuelle Version: ${x}`,
IsLatest: "Bereits die neueste Version",
CheckUpdate: "Auf Updates überprüfen",
IsChecking: "Überprüfe auf Updates...",
IsLatest: 'Bereits die neueste Version',
CheckUpdate: 'Auf Updates überprüfen',
IsChecking: 'Überprüfe auf Updates...',
FoundUpdate: (x: string) => `Neue Version gefunden: ${x}`,
GoToUpdate: "Zum Update gehen",
GoToUpdate: 'Zum Update gehen',
},
SendKey: "Sende-Taste",
Theme: "Thema",
TightBorder: "Randloser Modus",
SendKey: 'Sende-Taste',
Theme: 'Thema',
TightBorder: 'Randloser Modus',
SendPreviewBubble: {
Title: "Vorschau-Bubble",
SubTitle: "Markdown-Inhalt in der Vorschau-Bubble anzeigen",
Title: 'Vorschau-Bubble',
SubTitle: 'Markdown-Inhalt in der Vorschau-Bubble anzeigen',
},
AutoGenerateTitle: {
Title: "Titel automatisch generieren",
Title: 'Titel automatisch generieren',
SubTitle:
"Basierend auf dem Chat-Inhalt einen passenden Titel generieren",
'Basierend auf dem Chat-Inhalt einen passenden Titel generieren',
},
Sync: {
CloudState: "Cloud-Daten",
NotSyncYet: "Noch nicht synchronisiert",
Success: "Synchronisation erfolgreich",
Fail: "Synchronisation fehlgeschlagen",
CloudState: 'Cloud-Daten',
NotSyncYet: 'Noch nicht synchronisiert',
Success: 'Synchronisation erfolgreich',
Fail: 'Synchronisation fehlgeschlagen',
Config: {
Modal: {
Title: "Cloud-Synchronisation konfigurieren",
Check: "Verfügbarkeit überprüfen",
Title: 'Cloud-Synchronisation konfigurieren',
Check: 'Verfügbarkeit überprüfen',
},
SyncType: {
Title: "Synchronisationstyp",
SubTitle: "Wählen Sie den bevorzugten Synchronisationsserver aus",
Title: 'Synchronisationstyp',
SubTitle: 'Wählen Sie den bevorzugten Synchronisationsserver aus',
},
Proxy: {
Title: "Proxy aktivieren",
Title: 'Proxy aktivieren',
SubTitle:
"Beim Synchronisieren im Browser muss ein Proxy aktiviert werden, um Cross-Origin-Beschränkungen zu vermeiden",
'Beim Synchronisieren im Browser muss ein Proxy aktiviert werden, um Cross-Origin-Beschränkungen zu vermeiden',
},
ProxyUrl: {
Title: "Proxy-Adresse",
SubTitle: "Nur für projektinterne Cross-Origin-Proxy",
Title: 'Proxy-Adresse',
SubTitle: 'Nur für projektinterne Cross-Origin-Proxy',
},
WebDav: {
Endpoint: "WebDAV-Adresse",
UserName: "Benutzername",
Password: "Passwort",
Endpoint: 'WebDAV-Adresse',
UserName: 'Benutzername',
Password: 'Passwort',
},
UpStash: {
Endpoint: "UpStash Redis REST-Url",
UserName: "Sicherungsname",
Password: "UpStash Redis REST-Token",
Endpoint: 'UpStash Redis REST-Url',
UserName: 'Sicherungsname',
Password: 'UpStash Redis REST-Token',
},
},
LocalState: "Lokale Daten",
LocalState: 'Lokale Daten',
Overview: (overview: any) => {
return `${overview.chat} Chats, ${overview.message} Nachrichten, ${overview.prompt} Eingabeaufforderungen, ${overview.mask} Masken`;
},
ImportFailed: "Import fehlgeschlagen",
ImportFailed: 'Import fehlgeschlagen',
},
Mask: {
Splash: {
Title: "Masken-Startseite",
Title: 'Masken-Startseite',
SubTitle:
"Zeige die Masken-Startseite beim Erstellen eines neuen Chats",
'Zeige die Masken-Startseite beim Erstellen eines neuen Chats',
},
Builtin: {
Title: "Eingebaute Masken ausblenden",
SubTitle: "Blendet eingebaute Masken in allen Maskenlisten aus",
Title: 'Eingebaute Masken ausblenden',
SubTitle: 'Blendet eingebaute Masken in allen Maskenlisten aus',
},
},
Prompt: {
Disable: {
Title: "Automatische Eingabeaufforderung deaktivieren",
Title: 'Automatische Eingabeaufforderung deaktivieren',
SubTitle:
"Geben Sie am Anfang des Eingabefelds / ein, um die automatische Vervollständigung auszulösen",
'Geben Sie am Anfang des Eingabefelds / ein, um die automatische Vervollständigung auszulösen',
},
List: "Benutzerdefinierte Eingabeaufforderungsliste",
List: 'Benutzerdefinierte Eingabeaufforderungsliste',
ListCount: (builtin: number, custom: number) =>
`Eingebaut ${builtin} Stück, Benutzerdefiniert ${custom} Stück`,
Edit: "Bearbeiten",
Edit: 'Bearbeiten',
Modal: {
Title: "Eingabeaufforderungsliste",
Add: "Neu erstellen",
Search: "Eingabeaufforderungen suchen",
Title: 'Eingabeaufforderungsliste',
Add: 'Neu erstellen',
Search: 'Eingabeaufforderungen suchen',
},
EditModal: {
Title: "Eingabeaufforderung bearbeiten",
Title: 'Eingabeaufforderung bearbeiten',
},
},
HistoryCount: {
Title: "Anzahl der historischen Nachrichten",
Title: 'Anzahl der historischen Nachrichten',
SubTitle:
"Anzahl der historischen Nachrichten, die bei jeder Anfrage mitgesendet werden",
'Anzahl der historischen Nachrichten, die bei jeder Anfrage mitgesendet werden',
},
CompressThreshold: {
Title: "Komprimierungsschwelle für historische Nachrichtenlänge",
Title: 'Komprimierungsschwelle für historische Nachrichtenlänge',
SubTitle:
"Wenn die unkomprimierten historischen Nachrichten diesen Wert überschreiten, wird komprimiert",
'Wenn die unkomprimierten historischen Nachrichten diesen Wert überschreiten, wird komprimiert',
},
Usage: {
Title: "Guthabenabfrage",
Title: 'Guthabenabfrage',
SubTitle(used: any, total: any) {
return `In diesem Monat verwendet $${used}, Abonnement insgesamt $${total}`;
},
IsChecking: "Wird überprüft…",
Check: "Erneut überprüfen",
IsChecking: 'Wird überprüft…',
Check: 'Erneut überprüfen',
NoAccess:
"Geben Sie API-Schlüssel oder Zugangspasswort ein, um das Guthaben einzusehen",
'Geben Sie API-Schlüssel oder Zugangspasswort ein, um das Guthaben einzusehen',
},
Access: {
SaasStart: {
Title: "NextChat AI verwenden",
Label: "(Die kosteneffektivste Lösung)",
Title: 'NextChat AI verwenden',
Label: '(Die kosteneffektivste Lösung)',
SubTitle:
"Offiziell von NextChat verwaltet, sofort einsatzbereit ohne Konfiguration, unterstützt die neuesten großen Modelle wie OpenAI o1, GPT-4o und Claude-3.5",
ChatNow: "Jetzt chatten",
'Offiziell von NextChat verwaltet, sofort einsatzbereit ohne Konfiguration, unterstützt die neuesten großen Modelle wie OpenAI o1, GPT-4o und Claude-3.5',
ChatNow: 'Jetzt chatten',
},
AccessCode: {
Title: "Zugangscode",
Title: 'Zugangscode',
SubTitle:
"Der Administrator hat die verschlüsselte Zugriffskontrolle aktiviert",
Placeholder: "Geben Sie den Zugangscode ein",
'Der Administrator hat die verschlüsselte Zugriffskontrolle aktiviert',
Placeholder: 'Geben Sie den Zugangscode ein',
},
CustomEndpoint: {
Title: "Benutzerdefinierte Schnittstelle",
SubTitle: "Benutzerdefinierte Azure- oder OpenAI-Dienste verwenden",
Title: 'Benutzerdefinierte Schnittstelle',
SubTitle: 'Benutzerdefinierte Azure- oder OpenAI-Dienste verwenden',
},
Provider: {
Title: "Modellanbieter",
SubTitle: "Wechseln Sie zu verschiedenen Anbietern",
Title: 'Modellanbieter',
SubTitle: 'Wechseln Sie zu verschiedenen Anbietern',
},
OpenAI: {
ApiKey: {
Title: "API-Schlüssel",
Title: 'API-Schlüssel',
SubTitle:
"Verwenden Sie benutzerdefinierten OpenAI-Schlüssel, um Passwortzugangsbeschränkungen zu umgehen",
Placeholder: "OpenAI API-Schlüssel",
'Verwenden Sie benutzerdefinierten OpenAI-Schlüssel, um Passwortzugangsbeschränkungen zu umgehen',
Placeholder: 'OpenAI API-Schlüssel',
},
Endpoint: {
Title: "Schnittstellenadresse",
SubTitle: "Neben der Standardadresse muss http(s):// enthalten sein",
Title: 'Schnittstellenadresse',
SubTitle: 'Neben der Standardadresse muss http(s):// enthalten sein',
},
},
Azure: {
ApiKey: {
Title: "Schnittstellenschlüssel",
Title: 'Schnittstellenschlüssel',
SubTitle:
"Verwenden Sie benutzerdefinierten Azure-Schlüssel, um Passwortzugangsbeschränkungen zu umgehen",
Placeholder: "Azure API-Schlüssel",
'Verwenden Sie benutzerdefinierten Azure-Schlüssel, um Passwortzugangsbeschränkungen zu umgehen',
Placeholder: 'Azure API-Schlüssel',
},
Endpoint: {
Title: "Schnittstellenadresse",
SubTitle: "Beispiel:",
Title: 'Schnittstellenadresse',
SubTitle: 'Beispiel:',
},
ApiVerion: {
Title: "Schnittstellenversion (azure api version)",
SubTitle: "Wählen Sie eine spezifische Teilversion aus",
Title: 'Schnittstellenversion (azure api version)',
SubTitle: 'Wählen Sie eine spezifische Teilversion aus',
},
},
Anthropic: {
ApiKey: {
Title: "Schnittstellenschlüssel",
Title: 'Schnittstellenschlüssel',
SubTitle:
"Verwenden Sie benutzerdefinierten Anthropic-Schlüssel, um Passwortzugangsbeschränkungen zu umgehen",
Placeholder: "Anthropic API-Schlüssel",
'Verwenden Sie benutzerdefinierten Anthropic-Schlüssel, um Passwortzugangsbeschränkungen zu umgehen',
Placeholder: 'Anthropic API-Schlüssel',
},
Endpoint: {
Title: "Schnittstellenadresse",
SubTitle: "Beispiel:",
Title: 'Schnittstellenadresse',
SubTitle: 'Beispiel:',
},
ApiVerion: {
Title: "Schnittstellenversion (claude api version)",
SubTitle: "Wählen Sie eine spezifische API-Version aus",
Title: 'Schnittstellenversion (claude api version)',
SubTitle: 'Wählen Sie eine spezifische API-Version aus',
},
},
Google: {
ApiKey: {
Title: "API-Schlüssel",
SubTitle: "Holen Sie sich Ihren API-Schlüssel von Google AI",
Placeholder: "Geben Sie Ihren Google AI Studio API-Schlüssel ein",
Title: 'API-Schlüssel',
SubTitle: 'Holen Sie sich Ihren API-Schlüssel von Google AI',
Placeholder: 'Geben Sie Ihren Google AI Studio API-Schlüssel ein',
},
Endpoint: {
Title: "Endpunktadresse",
SubTitle: "Beispiel:",
Title: 'Endpunktadresse',
SubTitle: 'Beispiel:',
},
ApiVersion: {
Title: "API-Version (nur für gemini-pro)",
SubTitle: "Wählen Sie eine spezifische API-Version aus",
Title: 'API-Version (nur für gemini-pro)',
SubTitle: 'Wählen Sie eine spezifische API-Version aus',
},
GoogleSafetySettings: {
Title: "Google Sicherheitsfilterstufe",
SubTitle: "Inhaltfilterstufe einstellen",
Title: 'Google Sicherheitsfilterstufe',
SubTitle: 'Inhaltfilterstufe einstellen',
},
},
Baidu: {
ApiKey: {
Title: "API-Schlüssel",
SubTitle: "Verwenden Sie benutzerdefinierten Baidu API-Schlüssel",
Placeholder: "Baidu API-Schlüssel",
Title: 'API-Schlüssel',
SubTitle: 'Verwenden Sie benutzerdefinierten Baidu API-Schlüssel',
Placeholder: 'Baidu API-Schlüssel',
},
SecretKey: {
Title: "Geheimschlüssel",
SubTitle: "Verwenden Sie benutzerdefinierten Baidu Geheimschlüssel",
Placeholder: "Baidu Geheimschlüssel",
Title: 'Geheimschlüssel',
SubTitle: 'Verwenden Sie benutzerdefinierten Baidu Geheimschlüssel',
Placeholder: 'Baidu Geheimschlüssel',
},
Endpoint: {
Title: "Schnittstellenadresse",
Title: 'Schnittstellenadresse',
SubTitle:
"Keine benutzerdefinierten Adressen unterstützen, konfigurieren Sie in .env",
'Keine benutzerdefinierten Adressen unterstützen, konfigurieren Sie in .env',
},
},
ByteDance: {
ApiKey: {
Title: "Schnittstellenschlüssel",
SubTitle: "Verwenden Sie benutzerdefinierten ByteDance API-Schlüssel",
Placeholder: "ByteDance API-Schlüssel",
Title: 'Schnittstellenschlüssel',
SubTitle: 'Verwenden Sie benutzerdefinierten ByteDance API-Schlüssel',
Placeholder: 'ByteDance API-Schlüssel',
},
Endpoint: {
Title: "Schnittstellenadresse",
SubTitle: "Beispiel:",
Title: 'Schnittstellenadresse',
SubTitle: 'Beispiel:',
},
},
Alibaba: {
ApiKey: {
Title: "Schnittstellenschlüssel",
Title: 'Schnittstellenschlüssel',
SubTitle:
"Verwenden Sie benutzerdefinierten Alibaba Cloud API-Schlüssel",
Placeholder: "Alibaba Cloud API-Schlüssel",
'Verwenden Sie benutzerdefinierten Alibaba Cloud API-Schlüssel',
Placeholder: 'Alibaba Cloud API-Schlüssel',
},
Endpoint: {
Title: "Schnittstellenadresse",
SubTitle: "Beispiel:",
Title: 'Schnittstellenadresse',
SubTitle: 'Beispiel:',
},
},
CustomModel: {
Title: "Benutzerdefinierter Modellname",
Title: 'Benutzerdefinierter Modellname',
SubTitle:
"Fügen Sie benutzerdefinierte Modelloptionen hinzu, getrennt durch Kommas",
'Fügen Sie benutzerdefinierte Modelloptionen hinzu, getrennt durch Kommas',
},
},
Model: "Modell",
Model: 'Modell',
CompressModel: {
Title: "Kompressionsmodell",
SubTitle: "Modell zur Komprimierung des Verlaufs",
Title: 'Kompressionsmodell',
SubTitle: 'Modell zur Komprimierung des Verlaufs',
},
Temperature: {
Title: "Zufälligkeit (temperature)",
SubTitle: "Je höher der Wert, desto zufälliger die Antwort",
Title: 'Zufälligkeit (temperature)',
SubTitle: 'Je höher der Wert, desto zufälliger die Antwort',
},
TopP: {
Title: "Kern-Sampling (top_p)",
Title: 'Kern-Sampling (top_p)',
SubTitle:
"Ähnlich der Zufälligkeit, aber nicht zusammen mit Zufälligkeit ändern",
'Ähnlich der Zufälligkeit, aber nicht zusammen mit Zufälligkeit ändern',
},
MaxTokens: {
Title: "Maximale Token-Anzahl pro Antwort",
SubTitle: "Maximale Anzahl der Tokens pro Interaktion",
Title: 'Maximale Token-Anzahl pro Antwort',
SubTitle: 'Maximale Anzahl der Tokens pro Interaktion',
},
PresencePenalty: {
Title: "Themenfrische (presence_penalty)",
Title: 'Themenfrische (presence_penalty)',
SubTitle:
"Je höher der Wert, desto wahrscheinlicher wird auf neue Themen eingegangen",
'Je höher der Wert, desto wahrscheinlicher wird auf neue Themen eingegangen',
},
FrequencyPenalty: {
Title: "Häufigkeitsstrafe (frequency_penalty)",
Title: 'Häufigkeitsstrafe (frequency_penalty)',
SubTitle:
"Je höher der Wert, desto wahrscheinlicher werden wiederholte Wörter reduziert",
'Je höher der Wert, desto wahrscheinlicher werden wiederholte Wörter reduziert',
},
},
Store: {
DefaultTopic: "Neuer Chat",
BotHello: "Wie kann ich Ihnen helfen?",
DefaultTopic: 'Neuer Chat',
BotHello: 'Wie kann ich Ihnen helfen?',
Error:
"Ein Fehler ist aufgetreten, bitte versuchen Sie es später noch einmal",
'Ein Fehler ist aufgetreten, bitte versuchen Sie es später noch einmal',
Prompt: {
History: (content: string) =>
"Dies ist eine Zusammenfassung des bisherigen Chats als Hintergrundinformation: " +
content,
`Dies ist eine Zusammenfassung des bisherigen Chats als Hintergrundinformation: ${
content}`,
Topic:
"Geben Sie ein kurzes Thema in vier bis fünf Wörtern zurück, ohne Erklärungen, ohne Satzzeichen, ohne Füllwörter, ohne zusätzliche Texte und ohne Fettdruck. Wenn kein Thema vorhanden ist, geben Sie bitte „Allgemeines Gespräch“ zurück.",
'Geben Sie ein kurzes Thema in vier bis fünf Wörtern zurück, ohne Erklärungen, ohne Satzzeichen, ohne Füllwörter, ohne zusätzliche Texte und ohne Fettdruck. Wenn kein Thema vorhanden ist, geben Sie bitte „Allgemeines Gespräch“ zurück.',
Summarize:
"Fassen Sie den Gesprächsinhalt zusammen, um als Kontextaufforderung für den nächsten Schritt zu dienen, halten Sie es unter 200 Zeichen",
'Fassen Sie den Gesprächsinhalt zusammen, um als Kontextaufforderung für den nächsten Schritt zu dienen, halten Sie es unter 200 Zeichen',
},
},
Copy: {
Success: "In die Zwischenablage geschrieben",
Success: 'In die Zwischenablage geschrieben',
Failed:
"Kopieren fehlgeschlagen, bitte erlauben Sie Zugriff auf die Zwischenablage",
'Kopieren fehlgeschlagen, bitte erlauben Sie Zugriff auf die Zwischenablage',
},
Download: {
Success: "Inhalt wurde in Ihrem Verzeichnis heruntergeladen.",
Failed: "Download fehlgeschlagen.",
Success: 'Inhalt wurde in Ihrem Verzeichnis heruntergeladen.',
Failed: 'Download fehlgeschlagen.',
},
Context: {
Toast: (x: any) => `Beinhaltet ${x} vordefinierte Eingabeaufforderungen`,
Edit: "Aktuelle Gesprächseinstellungen",
Add: "Neues Gespräch hinzufügen",
Clear: "Kontext gelöscht",
Revert: "Kontext wiederherstellen",
Edit: 'Aktuelle Gesprächseinstellungen',
Add: 'Neues Gespräch hinzufügen',
Clear: 'Kontext gelöscht',
Revert: 'Kontext wiederherstellen',
},
Plugin: {
Name: "Plugins",
Name: 'Plugins',
},
FineTuned: {
Sysmessage: "Du bist ein Assistent",
Sysmessage: 'Du bist ein Assistent',
},
SearchChat: {
Name: "Suche",
Name: 'Suche',
Page: {
Title: "Chatverlauf durchsuchen",
Search: "Suchbegriff eingeben",
NoResult: "Keine Ergebnisse gefunden",
NoData: "Keine Daten",
Loading: "Laden",
Title: 'Chatverlauf durchsuchen',
Search: 'Suchbegriff eingeben',
NoResult: 'Keine Ergebnisse gefunden',
NoData: 'Keine Daten',
Loading: 'Laden',
SubTitle: (count: number) => `${count} Ergebnisse gefunden`,
},
Item: {
View: "Ansehen",
View: 'Ansehen',
},
},
Mask: {
Name: "Masken",
Name: 'Masken',
Page: {
Title: "Vordefinierte Rollenmasken",
Title: 'Vordefinierte Rollenmasken',
SubTitle: (count: number) =>
`${count} vordefinierte Rollenbeschreibungen`,
Search: "Rollenmasken suchen",
Create: "Neu erstellen",
Search: 'Rollenmasken suchen',
Create: 'Neu erstellen',
},
Item: {
Info: (count: number) => `Beinhaltet ${count} vordefinierte Gespräche`,
Chat: "Gespräch",
View: "Anzeigen",
Edit: "Bearbeiten",
Delete: "Löschen",
DeleteConfirm: "Bestätigen Sie das Löschen?",
Chat: 'Gespräch',
View: 'Anzeigen',
Edit: 'Bearbeiten',
Delete: 'Löschen',
DeleteConfirm: 'Bestätigen Sie das Löschen?',
},
EditModal: {
Title: (readonly: boolean) =>
`Vordefinierte Maske bearbeiten ${readonly ? "Nur lesen" : ""}`,
Download: "Vorgabe herunterladen",
Clone: "Vorgabe klonen",
`Vordefinierte Maske bearbeiten ${readonly ? 'Nur lesen' : ''}`,
Download: 'Vorgabe herunterladen',
Clone: 'Vorgabe klonen',
},
Config: {
Avatar: "Rollen-Avatar",
Name: "Rollenname",
Avatar: 'Rollen-Avatar',
Name: 'Rollenname',
Sync: {
Title: "Globale Einstellungen verwenden",
Title: 'Globale Einstellungen verwenden',
SubTitle:
"Soll das aktuelle Gespräch die globalen Modelleinstellungen verwenden?",
'Soll das aktuelle Gespräch die globalen Modelleinstellungen verwenden?',
Confirm:
"Die benutzerdefinierten Einstellungen des aktuellen Gesprächs werden automatisch überschrieben. Bestätigen Sie, dass Sie die globalen Einstellungen aktivieren möchten?",
'Die benutzerdefinierten Einstellungen des aktuellen Gesprächs werden automatisch überschrieben. Bestätigen Sie, dass Sie die globalen Einstellungen aktivieren möchten?',
},
HideContext: {
Title: "Vordefinierte Gespräche ausblenden",
Title: 'Vordefinierte Gespräche ausblenden',
SubTitle:
"Nach dem Ausblenden werden vordefinierte Gespräche nicht mehr im Chat angezeigt",
'Nach dem Ausblenden werden vordefinierte Gespräche nicht mehr im Chat angezeigt',
},
Share: {
Title: "Diese Maske teilen",
SubTitle: "Generieren Sie einen Direktlink zu dieser Maske",
Action: "Link kopieren",
Title: 'Diese Maske teilen',
SubTitle: 'Generieren Sie einen Direktlink zu dieser Maske',
Action: 'Link kopieren',
},
},
},
NewChat: {
Return: "Zurück",
Skip: "Direkt beginnen",
NotShow: "Nicht mehr anzeigen",
Return: 'Zurück',
Skip: 'Direkt beginnen',
NotShow: 'Nicht mehr anzeigen',
ConfirmNoShow:
"Bestätigen Sie die Deaktivierung? Nach der Deaktivierung können Sie jederzeit in den Einstellungen wieder aktivieren.",
Title: "Wählen Sie eine Maske aus",
'Bestätigen Sie die Deaktivierung? Nach der Deaktivierung können Sie jederzeit in den Einstellungen wieder aktivieren.',
Title: 'Wählen Sie eine Maske aus',
SubTitle:
"Starten Sie jetzt und lassen Sie sich von den Gedanken hinter der Maske inspirieren",
More: "Alle anzeigen",
'Starten Sie jetzt und lassen Sie sich von den Gedanken hinter der Maske inspirieren',
More: 'Alle anzeigen',
},
URLCommand: {
Code: "Ein Zugangscode wurde im Link gefunden. Möchten Sie diesen automatisch einfügen?",
Code: 'Ein Zugangscode wurde im Link gefunden. Möchten Sie diesen automatisch einfügen?',
Settings:
"Vordefinierte Einstellungen wurden im Link gefunden. Möchten Sie diese automatisch einfügen?",
'Vordefinierte Einstellungen wurden im Link gefunden. Möchten Sie diese automatisch einfügen?',
},
UI: {
Confirm: "Bestätigen",
Cancel: "Abbrechen",
Close: "Schließen",
Create: "Neu erstellen",
Edit: "Bearbeiten",
Export: "Exportieren",
Import: "Importieren",
Sync: "Synchronisieren",
Config: "Konfigurieren",
Confirm: 'Bestätigen',
Cancel: 'Abbrechen',
Close: 'Schließen',
Create: 'Neu erstellen',
Edit: 'Bearbeiten',
Export: 'Exportieren',
Import: 'Importieren',
Sync: 'Synchronisieren',
Config: 'Konfigurieren',
},
Exporter: {
Description: {
Title: "Nur Nachrichten nach dem Löschen des Kontexts werden angezeigt",
Title: 'Nur Nachrichten nach dem Löschen des Kontexts werden angezeigt',
},
Model: "Modell",
Messages: "Nachrichten",
Topic: "Thema",
Time: "Zeit",
Model: 'Modell',
Messages: 'Nachrichten',
Topic: 'Thema',
Time: 'Zeit',
},
};

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import type { PartialLocaleType } from "./index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from './index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const es: PartialLocaleType = {
WIP: "En construcción...",
WIP: 'En construcción...',
Error: {
Unauthorized: isApp
? `😆 La conversación encontró algunos problemas, no te preocupes:
@@ -18,17 +19,17 @@ const es: PartialLocaleType = {
`,
},
Auth: {
Title: "Se requiere contraseña",
Tips: "El administrador ha habilitado la verificación de contraseña. Introduce el código de acceso a continuación",
SubTips: "O ingresa tu clave API de OpenAI o Google",
Input: "Introduce el código de acceso aquí",
Confirm: "Confirmar",
Later: "Más tarde",
Return: "Regresar",
Title: 'Se requiere contraseña',
Tips: 'El administrador ha habilitado la verificación de contraseña. Introduce el código de acceso a continuación',
SubTips: 'O ingresa tu clave API de OpenAI o Google',
Input: 'Introduce el código de acceso aquí',
Confirm: 'Confirmar',
Later: 'Más tarde',
Return: 'Regresar',
SaasTips:
"La configuración es demasiado complicada, quiero usarlo de inmediato",
'La configuración es demasiado complicada, quiero usarlo de inmediato',
TopTips:
"🥳 Oferta de lanzamiento de NextChat AI, desbloquea OpenAI o1, GPT-4o, Claude-3.5 y los últimos grandes modelos",
'🥳 Oferta de lanzamiento de NextChat AI, desbloquea OpenAI o1, GPT-4o, Claude-3.5 y los últimos grandes modelos',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} conversaciones`,
@@ -36,570 +37,570 @@ const es: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `Total de ${count} conversaciones`,
EditMessage: {
Title: "Editar registro de mensajes",
Title: 'Editar registro de mensajes',
Topic: {
Title: "Tema de la conversación",
SubTitle: "Cambiar el tema de la conversación actual",
Title: 'Tema de la conversación',
SubTitle: 'Cambiar el tema de la conversación actual',
},
},
Actions: {
ChatList: "Ver lista de mensajes",
CompressedHistory: "Ver historial de Prompts comprimidos",
Export: "Exportar historial de chat",
Copy: "Copiar",
Stop: "Detener",
Retry: "Reintentar",
Pin: "Fijar",
ChatList: 'Ver lista de mensajes',
CompressedHistory: 'Ver historial de Prompts comprimidos',
Export: 'Exportar historial de chat',
Copy: 'Copiar',
Stop: 'Detener',
Retry: 'Reintentar',
Pin: 'Fijar',
PinToastContent:
"Se ha fijado 1 conversación a los prompts predeterminados",
PinToastAction: "Ver",
Delete: "Eliminar",
Edit: "Editar",
RefreshTitle: "Actualizar título",
RefreshToast: "Se ha enviado la solicitud de actualización del título",
'Se ha fijado 1 conversación a los prompts predeterminados',
PinToastAction: 'Ver',
Delete: 'Eliminar',
Edit: 'Editar',
RefreshTitle: 'Actualizar título',
RefreshToast: 'Se ha enviado la solicitud de actualización del título',
},
Commands: {
new: "Nueva conversación",
newm: "Nueva conversación desde la máscara",
next: "Siguiente conversación",
prev: "Conversación anterior",
clear: "Limpiar contexto",
del: "Eliminar conversación",
new: 'Nueva conversación',
newm: 'Nueva conversación desde la máscara',
next: 'Siguiente conversación',
prev: 'Conversación anterior',
clear: 'Limpiar contexto',
del: 'Eliminar conversación',
},
InputActions: {
Stop: "Detener respuesta",
ToBottom: "Ir al más reciente",
Stop: 'Detener respuesta',
ToBottom: 'Ir al más reciente',
Theme: {
auto: "Tema automático",
light: "Modo claro",
dark: "Modo oscuro",
auto: 'Tema automático',
light: 'Modo claro',
dark: 'Modo oscuro',
},
Prompt: "Comandos rápidos",
Masks: "Todas las máscaras",
Clear: "Limpiar chat",
Settings: "Configuración de conversación",
UploadImage: "Subir imagen",
Prompt: 'Comandos rápidos',
Masks: 'Todas las máscaras',
Clear: 'Limpiar chat',
Settings: 'Configuración de conversación',
UploadImage: 'Subir imagen',
},
Rename: "Renombrar conversación",
Typing: "Escribiendo…",
Rename: 'Renombrar conversación',
Typing: 'Escribiendo…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} para enviar`;
let inputHints = `${submitKey} para enviar`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "Shift + Enter para nueva línea";
inputHints += 'Shift + Enter para nueva línea';
}
return (
inputHints + "/ para activar autocompletado: para activar comandos"
`${inputHints}/ para activar autocompletado: para activar comandos`
);
},
Send: "Enviar",
Send: 'Enviar',
Config: {
Reset: "Borrar memoria",
SaveAs: "Guardar como máscara",
Reset: 'Borrar memoria',
SaveAs: 'Guardar como máscara',
},
IsContext: "Prompt predeterminado",
IsContext: 'Prompt predeterminado',
},
Export: {
Title: "Compartir historial de chat",
Copy: "Copiar todo",
Download: "Descargar archivo",
Share: "Compartir en ShareGPT",
MessageFromYou: "Usuario",
MessageFromChatGPT: "ChatGPT",
Title: 'Compartir historial de chat',
Copy: 'Copiar todo',
Download: 'Descargar archivo',
Share: 'Compartir en ShareGPT',
MessageFromYou: 'Usuario',
MessageFromChatGPT: 'ChatGPT',
Format: {
Title: "Formato de exportación",
SubTitle: "Puedes exportar como texto Markdown o imagen PNG",
Title: 'Formato de exportación',
SubTitle: 'Puedes exportar como texto Markdown o imagen PNG',
},
IncludeContext: {
Title: "Incluir contexto de máscara",
SubTitle: "Mostrar contexto de máscara en los mensajes",
Title: 'Incluir contexto de máscara',
SubTitle: 'Mostrar contexto de máscara en los mensajes',
},
Steps: {
Select: "Seleccionar",
Preview: "Vista previa",
Select: 'Seleccionar',
Preview: 'Vista previa',
},
Image: {
Toast: "Generando captura de pantalla",
Modal: "Mantén presionado o haz clic derecho para guardar la imagen",
Toast: 'Generando captura de pantalla',
Modal: 'Mantén presionado o haz clic derecho para guardar la imagen',
},
},
Select: {
Search: "Buscar mensajes",
All: "Seleccionar todo",
Latest: "Últimos mensajes",
Clear: "Limpiar selección",
Search: 'Buscar mensajes',
All: 'Seleccionar todo',
Latest: 'Últimos mensajes',
Clear: 'Limpiar selección',
},
Memory: {
Title: "Resumen histórico",
Title: 'Resumen histórico',
EmptyContent:
"El contenido de la conversación es demasiado corto para resumir",
Send: "Comprimir automáticamente el historial de chat y enviarlo como contexto",
Copy: "Copiar resumen",
Reset: "[no usado]",
ResetConfirm: "¿Confirmar para borrar el resumen histórico?",
'El contenido de la conversación es demasiado corto para resumir',
Send: 'Comprimir automáticamente el historial de chat y enviarlo como contexto',
Copy: 'Copiar resumen',
Reset: '[no usado]',
ResetConfirm: '¿Confirmar para borrar el resumen histórico?',
},
Home: {
NewChat: "Nueva conversación",
DeleteChat: "¿Confirmar la eliminación de la conversación seleccionada?",
DeleteToast: "Conversación eliminada",
Revert: "Deshacer",
NewChat: 'Nueva conversación',
DeleteChat: '¿Confirmar la eliminación de la conversación seleccionada?',
DeleteToast: 'Conversación eliminada',
Revert: 'Deshacer',
},
Settings: {
Title: "Configuración",
SubTitle: "Todas las opciones de configuración",
Title: 'Configuración',
SubTitle: 'Todas las opciones de configuración',
Danger: {
Reset: {
Title: "Restablecer todas las configuraciones",
Title: 'Restablecer todas las configuraciones',
SubTitle:
"Restablecer todas las configuraciones a los valores predeterminados",
Action: "Restablecer ahora",
Confirm: "¿Confirmar el restablecimiento de todas las configuraciones?",
'Restablecer todas las configuraciones a los valores predeterminados',
Action: 'Restablecer ahora',
Confirm: '¿Confirmar el restablecimiento de todas las configuraciones?',
},
Clear: {
Title: "Eliminar todos los datos",
SubTitle: "Eliminar todos los chats y datos de configuración",
Action: "Eliminar ahora",
Title: 'Eliminar todos los datos',
SubTitle: 'Eliminar todos los chats y datos de configuración',
Action: 'Eliminar ahora',
Confirm:
"¿Confirmar la eliminación de todos los chats y datos de configuración?",
'¿Confirmar la eliminación de todos los chats y datos de configuración?',
},
},
Lang: {
Name: "Language", // ATENCIÓN: si deseas agregar una nueva traducción, por favor no traduzcas este valor, déjalo como `Language`
All: "Todos los idiomas",
Name: 'Language', // ATENCIÓN: si deseas agregar una nueva traducción, por favor no traduzcas este valor, déjalo como `Language`
All: 'Todos los idiomas',
},
Avatar: "Avatar",
Avatar: 'Avatar',
FontSize: {
Title: "Tamaño de fuente",
SubTitle: "Tamaño de la fuente del contenido del chat",
Title: 'Tamaño de fuente',
SubTitle: 'Tamaño de la fuente del contenido del chat',
},
FontFamily: {
Title: "Fuente del Chat",
Title: 'Fuente del Chat',
SubTitle:
"Fuente del contenido del chat, dejar vacío para aplicar la fuente predeterminada global",
Placeholder: "Nombre de la Fuente",
'Fuente del contenido del chat, dejar vacío para aplicar la fuente predeterminada global',
Placeholder: 'Nombre de la Fuente',
},
InjectSystemPrompts: {
Title: "Inyectar mensajes del sistema",
Title: 'Inyectar mensajes del sistema',
SubTitle:
"Forzar la adición de un mensaje del sistema simulado de ChatGPT al principio de cada lista de mensajes",
'Forzar la adición de un mensaje del sistema simulado de ChatGPT al principio de cada lista de mensajes',
},
InputTemplate: {
Title: "Preprocesamiento de entrada del usuario",
SubTitle: "El último mensaje del usuario se rellenará en esta plantilla",
Title: 'Preprocesamiento de entrada del usuario',
SubTitle: 'El último mensaje del usuario se rellenará en esta plantilla',
},
Update: {
Version: (x: string) => `Versión actual: ${x}`,
IsLatest: "Ya estás en la última versión",
CheckUpdate: "Buscar actualizaciones",
IsChecking: "Buscando actualizaciones...",
IsLatest: 'Ya estás en la última versión',
CheckUpdate: 'Buscar actualizaciones',
IsChecking: 'Buscando actualizaciones...',
FoundUpdate: (x: string) => `Nueva versión encontrada: ${x}`,
GoToUpdate: "Ir a actualizar",
GoToUpdate: 'Ir a actualizar',
},
SendKey: "Tecla de enviar",
Theme: "Tema",
TightBorder: "Modo sin borde",
SendKey: 'Tecla de enviar',
Theme: 'Tema',
TightBorder: 'Modo sin borde',
SendPreviewBubble: {
Title: "Vista previa del globo",
Title: 'Vista previa del globo',
SubTitle:
"Previsualiza el contenido Markdown en un globo de vista previa",
'Previsualiza el contenido Markdown en un globo de vista previa',
},
AutoGenerateTitle: {
Title: "Generar título automáticamente",
SubTitle: "Generar un título adecuado basado en el contenido del chat",
Title: 'Generar título automáticamente',
SubTitle: 'Generar un título adecuado basado en el contenido del chat',
},
Sync: {
CloudState: "Datos en la nube",
NotSyncYet: "Aún no se ha sincronizado",
Success: "Sincronización exitosa",
Fail: "Sincronización fallida",
CloudState: 'Datos en la nube',
NotSyncYet: 'Aún no se ha sincronizado',
Success: 'Sincronización exitosa',
Fail: 'Sincronización fallida',
Config: {
Modal: {
Title: "Configurar sincronización en la nube",
Check: "Verificar disponibilidad",
Title: 'Configurar sincronización en la nube',
Check: 'Verificar disponibilidad',
},
SyncType: {
Title: "Tipo de sincronización",
SubTitle: "Selecciona el servidor de sincronización preferido",
Title: 'Tipo de sincronización',
SubTitle: 'Selecciona el servidor de sincronización preferido',
},
Proxy: {
Title: "Habilitar proxy",
Title: 'Habilitar proxy',
SubTitle:
"Debes habilitar el proxy para sincronizar en el navegador y evitar restricciones de CORS",
'Debes habilitar el proxy para sincronizar en el navegador y evitar restricciones de CORS',
},
ProxyUrl: {
Title: "Dirección del proxy",
SubTitle: "Solo para el proxy CORS incluido en este proyecto",
Title: 'Dirección del proxy',
SubTitle: 'Solo para el proxy CORS incluido en este proyecto',
},
WebDav: {
Endpoint: "Dirección WebDAV",
UserName: "Nombre de usuario",
Password: "Contraseña",
Endpoint: 'Dirección WebDAV',
UserName: 'Nombre de usuario',
Password: 'Contraseña',
},
UpStash: {
Endpoint: "URL de REST de UpStash Redis",
UserName: "Nombre de respaldo",
Password: "Token de REST de UpStash Redis",
Endpoint: 'URL de REST de UpStash Redis',
UserName: 'Nombre de respaldo',
Password: 'Token de REST de UpStash Redis',
},
},
LocalState: "Datos locales",
LocalState: 'Datos locales',
Overview: (overview: any) => {
return `${overview.chat} conversaciones, ${overview.message} mensajes, ${overview.prompt} prompts, ${overview.mask} máscaras`;
},
ImportFailed: "Importación fallida",
ImportFailed: 'Importación fallida',
},
Mask: {
Splash: {
Title: "Pantalla de inicio de máscara",
Title: 'Pantalla de inicio de máscara',
SubTitle:
"Mostrar la pantalla de inicio de la máscara al iniciar un nuevo chat",
'Mostrar la pantalla de inicio de la máscara al iniciar un nuevo chat',
},
Builtin: {
Title: "Ocultar máscaras integradas",
Title: 'Ocultar máscaras integradas',
SubTitle:
"Ocultar las máscaras integradas en todas las listas de máscaras",
'Ocultar las máscaras integradas en todas las listas de máscaras',
},
},
Prompt: {
Disable: {
Title: "Deshabilitar autocompletado de prompts",
Title: 'Deshabilitar autocompletado de prompts',
SubTitle:
"Escribe / al principio del campo de entrada para activar el autocompletado",
'Escribe / al principio del campo de entrada para activar el autocompletado',
},
List: "Lista de prompts personalizados",
List: 'Lista de prompts personalizados',
ListCount: (builtin: number, custom: number) =>
`Integrados ${builtin}, definidos por el usuario ${custom}`,
Edit: "Editar",
Edit: 'Editar',
Modal: {
Title: "Lista de prompts",
Add: "Nuevo",
Search: "Buscar prompts",
Title: 'Lista de prompts',
Add: 'Nuevo',
Search: 'Buscar prompts',
},
EditModal: {
Title: "Editar prompt",
Title: 'Editar prompt',
},
},
HistoryCount: {
Title: "Número de mensajes históricos adjuntos",
SubTitle: "Número de mensajes históricos enviados con cada solicitud",
Title: 'Número de mensajes históricos adjuntos',
SubTitle: 'Número de mensajes históricos enviados con cada solicitud',
},
CompressThreshold: {
Title: "Umbral de compresión de mensajes históricos",
Title: 'Umbral de compresión de mensajes históricos',
SubTitle:
"Cuando los mensajes históricos no comprimidos superan este valor, se realizará la compresión",
'Cuando los mensajes históricos no comprimidos superan este valor, se realizará la compresión',
},
Usage: {
Title: "Consulta de saldo",
Title: 'Consulta de saldo',
SubTitle(used: any, total: any) {
return `Saldo usado este mes: $${used}, total suscrito: $${total}`;
},
IsChecking: "Verificando…",
Check: "Revisar de nuevo",
IsChecking: 'Verificando…',
Check: 'Revisar de nuevo',
NoAccess:
"Introduce la clave API o la contraseña de acceso para ver el saldo",
'Introduce la clave API o la contraseña de acceso para ver el saldo',
},
Access: {
SaasStart: {
Title: "Use NextChat AI",
Label: "(The most cost-effective solution)",
Title: 'Use NextChat AI',
Label: '(The most cost-effective solution)',
SubTitle:
"Officially maintained by NextChat, zero configuration ready to use, supports the latest large models like OpenAI o1, GPT-4o, and Claude-3.5",
ChatNow: "Chat Now",
'Officially maintained by NextChat, zero configuration ready to use, supports the latest large models like OpenAI o1, GPT-4o, and Claude-3.5',
ChatNow: 'Chat Now',
},
AccessCode: {
Title: "Contraseña de acceso",
SubTitle: "El administrador ha habilitado el acceso encriptado",
Placeholder: "Introduce la contraseña de acceso",
Title: 'Contraseña de acceso',
SubTitle: 'El administrador ha habilitado el acceso encriptado',
Placeholder: 'Introduce la contraseña de acceso',
},
CustomEndpoint: {
Title: "Interfaz personalizada",
SubTitle: "¿Usar servicios personalizados de Azure u OpenAI?",
Title: 'Interfaz personalizada',
SubTitle: '¿Usar servicios personalizados de Azure u OpenAI?',
},
Provider: {
Title: "Proveedor de modelos",
SubTitle: "Cambiar entre diferentes proveedores",
Title: 'Proveedor de modelos',
SubTitle: 'Cambiar entre diferentes proveedores',
},
OpenAI: {
ApiKey: {
Title: "Clave API",
Title: 'Clave API',
SubTitle:
"Usa una clave API de OpenAI personalizada para omitir la restricción de acceso por contraseña",
Placeholder: "Clave API de OpenAI",
'Usa una clave API de OpenAI personalizada para omitir la restricción de acceso por contraseña',
Placeholder: 'Clave API de OpenAI',
},
Endpoint: {
Title: "Dirección del endpoint",
Title: 'Dirección del endpoint',
SubTitle:
"Debe incluir http(s):// además de la dirección predeterminada",
'Debe incluir http(s):// además de la dirección predeterminada',
},
},
Azure: {
ApiKey: {
Title: "Clave de interfaz",
Title: 'Clave de interfaz',
SubTitle:
"Usa una clave de Azure personalizada para omitir la restricción de acceso por contraseña",
Placeholder: "Clave API de Azure",
'Usa una clave de Azure personalizada para omitir la restricción de acceso por contraseña',
Placeholder: 'Clave API de Azure',
},
Endpoint: {
Title: "Dirección del endpoint",
SubTitle: "Ejemplo:",
Title: 'Dirección del endpoint',
SubTitle: 'Ejemplo:',
},
ApiVerion: {
Title: "Versión de la interfaz (versión de api de azure)",
SubTitle: "Selecciona una versión específica",
Title: 'Versión de la interfaz (versión de api de azure)',
SubTitle: 'Selecciona una versión específica',
},
},
Anthropic: {
ApiKey: {
Title: "Clave de interfaz",
Title: 'Clave de interfaz',
SubTitle:
"Usa una clave de Anthropic personalizada para omitir la restricción de acceso por contraseña",
Placeholder: "Clave API de Anthropic",
'Usa una clave de Anthropic personalizada para omitir la restricción de acceso por contraseña',
Placeholder: 'Clave API de Anthropic',
},
Endpoint: {
Title: "Dirección del endpoint",
SubTitle: "Ejemplo:",
Title: 'Dirección del endpoint',
SubTitle: 'Ejemplo:',
},
ApiVerion: {
Title: "Versión de la interfaz (versión de claude api)",
SubTitle: "Selecciona una versión específica de la API",
Title: 'Versión de la interfaz (versión de claude api)',
SubTitle: 'Selecciona una versión específica de la API',
},
},
Google: {
ApiKey: {
Title: "Clave API",
SubTitle: "Obtén tu clave API de Google AI",
Placeholder: "Introduce tu clave API de Google AI Studio",
Title: 'Clave API',
SubTitle: 'Obtén tu clave API de Google AI',
Placeholder: 'Introduce tu clave API de Google AI Studio',
},
Endpoint: {
Title: "Dirección del endpoint",
SubTitle: "Ejemplo:",
Title: 'Dirección del endpoint',
SubTitle: 'Ejemplo:',
},
ApiVersion: {
Title: "Versión de la API (solo para gemini-pro)",
SubTitle: "Selecciona una versión específica de la API",
Title: 'Versión de la API (solo para gemini-pro)',
SubTitle: 'Selecciona una versión específica de la API',
},
GoogleSafetySettings: {
Title: "Nivel de filtrado de seguridad de Google",
SubTitle: "Configura el nivel de filtrado de contenido",
Title: 'Nivel de filtrado de seguridad de Google',
SubTitle: 'Configura el nivel de filtrado de contenido',
},
},
Baidu: {
ApiKey: {
Title: "Clave API",
SubTitle: "Usa una clave API de Baidu personalizada",
Placeholder: "Clave API de Baidu",
Title: 'Clave API',
SubTitle: 'Usa una clave API de Baidu personalizada',
Placeholder: 'Clave API de Baidu',
},
SecretKey: {
Title: "Clave secreta",
SubTitle: "Usa una clave secreta de Baidu personalizada",
Placeholder: "Clave secreta de Baidu",
Title: 'Clave secreta',
SubTitle: 'Usa una clave secreta de Baidu personalizada',
Placeholder: 'Clave secreta de Baidu',
},
Endpoint: {
Title: "Dirección del endpoint",
Title: 'Dirección del endpoint',
SubTitle:
"No admite personalización, dirígete a .env para configurarlo",
'No admite personalización, dirígete a .env para configurarlo',
},
},
ByteDance: {
ApiKey: {
Title: "Clave de interfaz",
SubTitle: "Usa una clave API de ByteDance personalizada",
Placeholder: "Clave API de ByteDance",
Title: 'Clave de interfaz',
SubTitle: 'Usa una clave API de ByteDance personalizada',
Placeholder: 'Clave API de ByteDance',
},
Endpoint: {
Title: "Dirección del endpoint",
SubTitle: "Ejemplo:",
Title: 'Dirección del endpoint',
SubTitle: 'Ejemplo:',
},
},
Alibaba: {
ApiKey: {
Title: "Clave de interfaz",
SubTitle: "Usa una clave API de Alibaba Cloud personalizada",
Placeholder: "Clave API de Alibaba Cloud",
Title: 'Clave de interfaz',
SubTitle: 'Usa una clave API de Alibaba Cloud personalizada',
Placeholder: 'Clave API de Alibaba Cloud',
},
Endpoint: {
Title: "Dirección del endpoint",
SubTitle: "Ejemplo:",
Title: 'Dirección del endpoint',
SubTitle: 'Ejemplo:',
},
},
CustomModel: {
Title: "Nombre del modelo personalizado",
Title: 'Nombre del modelo personalizado',
SubTitle:
"Agrega opciones de modelos personalizados, separados por comas",
'Agrega opciones de modelos personalizados, separados por comas',
},
},
Model: "Modelo (model)",
Model: 'Modelo (model)',
CompressModel: {
Title: "Modelo de compresión",
SubTitle: "Modelo utilizado para comprimir el historial",
Title: 'Modelo de compresión',
SubTitle: 'Modelo utilizado para comprimir el historial',
},
Temperature: {
Title: "Aleatoriedad (temperature)",
SubTitle: "Cuanto mayor sea el valor, más aleatorio será el resultado",
Title: 'Aleatoriedad (temperature)',
SubTitle: 'Cuanto mayor sea el valor, más aleatorio será el resultado',
},
TopP: {
Title: "Muestreo por núcleo (top_p)",
SubTitle: "Similar a la aleatoriedad, pero no cambies ambos a la vez",
Title: 'Muestreo por núcleo (top_p)',
SubTitle: 'Similar a la aleatoriedad, pero no cambies ambos a la vez',
},
MaxTokens: {
Title: "Límite de tokens por respuesta (max_tokens)",
SubTitle: "Número máximo de tokens utilizados en una sola interacción",
Title: 'Límite de tokens por respuesta (max_tokens)',
SubTitle: 'Número máximo de tokens utilizados en una sola interacción',
},
PresencePenalty: {
Title: "Novedad de temas (presence_penalty)",
Title: 'Novedad de temas (presence_penalty)',
SubTitle:
"Cuanto mayor sea el valor, más probable es que se amplíen a nuevos temas",
'Cuanto mayor sea el valor, más probable es que se amplíen a nuevos temas',
},
FrequencyPenalty: {
Title: "Penalización de frecuencia (frequency_penalty)",
Title: 'Penalización de frecuencia (frequency_penalty)',
SubTitle:
"Cuanto mayor sea el valor, más probable es que se reduzcan las palabras repetidas",
'Cuanto mayor sea el valor, más probable es que se reduzcan las palabras repetidas',
},
},
Store: {
DefaultTopic: "Nuevo chat",
BotHello: "¿En qué puedo ayudarte?",
Error: "Hubo un error, inténtalo de nuevo más tarde",
DefaultTopic: 'Nuevo chat',
BotHello: '¿En qué puedo ayudarte?',
Error: 'Hubo un error, inténtalo de nuevo más tarde',
Prompt: {
History: (content: string) =>
"Este es un resumen del chat histórico como referencia: " + content,
`Este es un resumen del chat histórico como referencia: ${content}`,
Topic:
"Devuelve un tema breve de esta frase en cuatro a cinco palabras, sin explicación, sin puntuación, sin muletillas, sin texto adicional, sin negritas. Si no hay tema, devuelve 'charlas casuales'",
'Devuelve un tema breve de esta frase en cuatro a cinco palabras, sin explicación, sin puntuación, sin muletillas, sin texto adicional, sin negritas. Si no hay tema, devuelve \'charlas casuales\'',
Summarize:
"Resume brevemente el contenido de la conversación para usar como un prompt de contexto, manteniéndolo dentro de 200 palabras",
'Resume brevemente el contenido de la conversación para usar como un prompt de contexto, manteniéndolo dentro de 200 palabras',
},
},
Copy: {
Success: "Copiado al portapapeles",
Failed: "Error al copiar, por favor otorga permisos al portapapeles",
Success: 'Copiado al portapapeles',
Failed: 'Error al copiar, por favor otorga permisos al portapapeles',
},
Download: {
Success: "Contenido descargado en tu directorio.",
Failed: "Error al descargar.",
Success: 'Contenido descargado en tu directorio.',
Failed: 'Error al descargar.',
},
Context: {
Toast: (x: any) => `Contiene ${x} prompts predefinidos`,
Edit: "Configuración del chat actual",
Add: "Agregar una conversación",
Clear: "Contexto borrado",
Revert: "Restaurar contexto",
Edit: 'Configuración del chat actual',
Add: 'Agregar una conversación',
Clear: 'Contexto borrado',
Revert: 'Restaurar contexto',
},
Plugin: {
Name: "Complemento",
Name: 'Complemento',
},
FineTuned: {
Sysmessage: "Eres un asistente",
Sysmessage: 'Eres un asistente',
},
SearchChat: {
Name: "Buscar",
Name: 'Buscar',
Page: {
Title: "Buscar en el historial de chat",
Search: "Ingrese la palabra clave de búsqueda",
NoResult: "No se encontraron resultados",
NoData: "Sin datos",
Loading: "Cargando",
Title: 'Buscar en el historial de chat',
Search: 'Ingrese la palabra clave de búsqueda',
NoResult: 'No se encontraron resultados',
NoData: 'Sin datos',
Loading: 'Cargando',
SubTitle: (count: number) => `Se encontraron ${count} resultados`,
},
Item: {
View: "Ver",
View: 'Ver',
},
},
Mask: {
Name: "Máscara",
Name: 'Máscara',
Page: {
Title: "Máscaras de rol predefinidas",
Title: 'Máscaras de rol predefinidas',
SubTitle: (count: number) => `${count} definiciones de rol predefinidas`,
Search: "Buscar máscara de rol",
Create: "Crear nuevo",
Search: 'Buscar máscara de rol',
Create: 'Crear nuevo',
},
Item: {
Info: (count: number) => `Contiene ${count} conversaciones predefinidas`,
Chat: "Chat",
View: "Ver",
Edit: "Editar",
Delete: "Eliminar",
DeleteConfirm: "¿Confirmar eliminación?",
Chat: 'Chat',
View: 'Ver',
Edit: 'Editar',
Delete: 'Eliminar',
DeleteConfirm: '¿Confirmar eliminación?',
},
EditModal: {
Title: (readonly: boolean) =>
`Editar máscara predefinida ${readonly ? "solo lectura" : ""}`,
Download: "Descargar predefinido",
Clone: "Clonar predefinido",
`Editar máscara predefinida ${readonly ? 'solo lectura' : ''}`,
Download: 'Descargar predefinido',
Clone: 'Clonar predefinido',
},
Config: {
Avatar: "Avatar del rol",
Name: "Nombre del rol",
Avatar: 'Avatar del rol',
Name: 'Nombre del rol',
Sync: {
Title: "Usar configuración global",
Title: 'Usar configuración global',
SubTitle:
"¿Usar la configuración global del modelo para la conversación actual?",
'¿Usar la configuración global del modelo para la conversación actual?',
Confirm:
"La configuración personalizada de la conversación actual se sobrescribirá automáticamente, ¿confirmar habilitar la configuración global?",
'La configuración personalizada de la conversación actual se sobrescribirá automáticamente, ¿confirmar habilitar la configuración global?',
},
HideContext: {
Title: "Ocultar conversaciones predefinidas",
Title: 'Ocultar conversaciones predefinidas',
SubTitle:
"Las conversaciones predefinidas ocultas no aparecerán en la interfaz de chat",
'Las conversaciones predefinidas ocultas no aparecerán en la interfaz de chat',
},
Share: {
Title: "Compartir esta máscara",
SubTitle: "Generar un enlace directo a esta máscara",
Action: "Copiar enlace",
Title: 'Compartir esta máscara',
SubTitle: 'Generar un enlace directo a esta máscara',
Action: 'Copiar enlace',
},
},
},
NewChat: {
Return: "Regresar",
Skip: "Comenzar ahora",
NotShow: "No mostrar más",
Return: 'Regresar',
Skip: 'Comenzar ahora',
NotShow: 'No mostrar más',
ConfirmNoShow:
"¿Confirmar desactivación? Puedes reactivar en la configuración en cualquier momento.",
Title: "Selecciona una máscara",
SubTitle: "Comienza ahora y colisiona con la mente detrás de la máscara",
More: "Ver todo",
'¿Confirmar desactivación? Puedes reactivar en la configuración en cualquier momento.',
Title: 'Selecciona una máscara',
SubTitle: 'Comienza ahora y colisiona con la mente detrás de la máscara',
More: 'Ver todo',
},
URLCommand: {
Code: "Detectado un código de acceso en el enlace, ¿deseas autocompletarlo?",
Code: 'Detectado un código de acceso en el enlace, ¿deseas autocompletarlo?',
Settings:
"Detectada configuración predefinida en el enlace, ¿deseas autocompletarla?",
'Detectada configuración predefinida en el enlace, ¿deseas autocompletarla?',
},
UI: {
Confirm: "Confirmar",
Cancel: "Cancelar",
Close: "Cerrar",
Create: "Crear",
Edit: "Editar",
Export: "Exportar",
Import: "Importar",
Sync: "Sincronizar",
Config: "Configurar",
Confirm: 'Confirmar',
Cancel: 'Cancelar',
Close: 'Cerrar',
Create: 'Crear',
Edit: 'Editar',
Export: 'Exportar',
Import: 'Importar',
Sync: 'Sincronizar',
Config: 'Configurar',
},
Exporter: {
Description: {
Title: "Solo se mostrarán los mensajes después de borrar el contexto",
Title: 'Solo se mostrarán los mensajes después de borrar el contexto',
},
Model: "Modelo",
Messages: "Mensajes",
Topic: "Tema",
Time: "Hora",
Model: 'Modelo',
Messages: 'Mensajes',
Topic: 'Tema',
Time: 'Hora',
},
};

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import type { PartialLocaleType } from "./index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from './index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const fr: PartialLocaleType = {
WIP: "Prochainement...",
WIP: 'Prochainement...',
Error: {
Unauthorized: isApp
? `😆 La conversation a rencontré quelques problèmes, pas de panique :
@@ -18,17 +19,17 @@ const fr: PartialLocaleType = {
`,
},
Auth: {
Title: "Mot de passe requis",
Tips: "L'administrateur a activé la vérification par mot de passe. Veuillez entrer le code d'accès ci-dessous",
SubTips: "Ou entrez votre clé API OpenAI ou Google",
Input: "Entrez le code d'accès ici",
Confirm: "Confirmer",
Later: "Plus tard",
Return: "Retour",
Title: 'Mot de passe requis',
Tips: 'L\'administrateur a activé la vérification par mot de passe. Veuillez entrer le code d\'accès ci-dessous',
SubTips: 'Ou entrez votre clé API OpenAI ou Google',
Input: 'Entrez le code d\'accès ici',
Confirm: 'Confirmer',
Later: 'Plus tard',
Return: 'Retour',
SaasTips:
"La configuration est trop compliquée, je veux l'utiliser immédiatement",
'La configuration est trop compliquée, je veux l\'utiliser immédiatement',
TopTips:
"🥳 Offre de lancement NextChat AI, débloquez OpenAI o1, GPT-4o, Claude-3.5 et les derniers grands modèles",
'🥳 Offre de lancement NextChat AI, débloquez OpenAI o1, GPT-4o, Claude-3.5 et les derniers grands modèles',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} conversations`,
@@ -36,571 +37,571 @@ const fr: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `Total de ${count} conversations`,
EditMessage: {
Title: "Modifier l'historique des messages",
Title: 'Modifier l\'historique des messages',
Topic: {
Title: "Sujet de la discussion",
SubTitle: "Modifier le sujet de la discussion actuel",
Title: 'Sujet de la discussion',
SubTitle: 'Modifier le sujet de la discussion actuel',
},
},
Actions: {
ChatList: "Voir la liste des messages",
CompressedHistory: "Voir l'historique des prompts compressés",
Export: "Exporter l'historique de la discussion",
Copy: "Copier",
Stop: "Arrêter",
Retry: "Réessayer",
Pin: "Épingler",
PinToastContent: "1 conversation épinglée aux prompts prédéfinis",
PinToastAction: "Voir",
Delete: "Supprimer",
Edit: "Modifier",
RefreshTitle: "Actualiser le titre",
RefreshToast: "Demande d'actualisation du titre envoyée",
ChatList: 'Voir la liste des messages',
CompressedHistory: 'Voir l\'historique des prompts compressés',
Export: 'Exporter l\'historique de la discussion',
Copy: 'Copier',
Stop: 'Arrêter',
Retry: 'Réessayer',
Pin: 'Épingler',
PinToastContent: '1 conversation épinglée aux prompts prédéfinis',
PinToastAction: 'Voir',
Delete: 'Supprimer',
Edit: 'Modifier',
RefreshTitle: 'Actualiser le titre',
RefreshToast: 'Demande d\'actualisation du titre envoyée',
},
Commands: {
new: "Nouvelle discussion",
newm: "Créer une discussion à partir du masque",
next: "Discussion suivante",
prev: "Discussion précédente",
clear: "Effacer le contexte",
del: "Supprimer la discussion",
new: 'Nouvelle discussion',
newm: 'Créer une discussion à partir du masque',
next: 'Discussion suivante',
prev: 'Discussion précédente',
clear: 'Effacer le contexte',
del: 'Supprimer la discussion',
},
InputActions: {
Stop: "Arrêter la réponse",
ToBottom: "Aller au plus récent",
Stop: 'Arrêter la réponse',
ToBottom: 'Aller au plus récent',
Theme: {
auto: "Thème automatique",
light: "Mode clair",
dark: "Mode sombre",
auto: 'Thème automatique',
light: 'Mode clair',
dark: 'Mode sombre',
},
Prompt: "Commandes rapides",
Masks: "Tous les masques",
Clear: "Effacer la discussion",
Settings: "Paramètres de la discussion",
UploadImage: "Télécharger une image",
Prompt: 'Commandes rapides',
Masks: 'Tous les masques',
Clear: 'Effacer la discussion',
Settings: 'Paramètres de la discussion',
UploadImage: 'Télécharger une image',
},
Rename: "Renommer la discussion",
Typing: "En train d'écrire…",
Rename: 'Renommer la discussion',
Typing: 'En train d\'écrire…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} pour envoyer`;
let inputHints = `${submitKey} pour envoyer`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "Shift + Enter pour passer à la ligne";
inputHints += 'Shift + Enter pour passer à la ligne';
}
return inputHints + "/ pour compléter, : pour déclencher des commandes";
return `${inputHints}/ pour compléter, : pour déclencher des commandes`;
},
Send: "Envoyer",
Send: 'Envoyer',
Config: {
Reset: "Effacer la mémoire",
SaveAs: "Enregistrer comme masque",
Reset: 'Effacer la mémoire',
SaveAs: 'Enregistrer comme masque',
},
IsContext: "Prompt prédéfini",
IsContext: 'Prompt prédéfini',
},
Export: {
Title: "Partager l'historique des discussions",
Copy: "Tout copier",
Download: "Télécharger le fichier",
Share: "Partager sur ShareGPT",
MessageFromYou: "Utilisateur",
MessageFromChatGPT: "ChatGPT",
Title: 'Partager l\'historique des discussions',
Copy: 'Tout copier',
Download: 'Télécharger le fichier',
Share: 'Partager sur ShareGPT',
MessageFromYou: 'Utilisateur',
MessageFromChatGPT: 'ChatGPT',
Format: {
Title: "Format d'exportation",
SubTitle: "Vous pouvez exporter en texte Markdown ou en image PNG",
Title: 'Format d\'exportation',
SubTitle: 'Vous pouvez exporter en texte Markdown ou en image PNG',
},
IncludeContext: {
Title: "Inclure le contexte du masque",
SubTitle: "Afficher le contexte du masque dans les messages",
Title: 'Inclure le contexte du masque',
SubTitle: 'Afficher le contexte du masque dans les messages',
},
Steps: {
Select: "Sélectionner",
Preview: "Aperçu",
Select: 'Sélectionner',
Preview: 'Aperçu',
},
Image: {
Toast: "Génération de la capture d'écran",
Toast: 'Génération de la capture d\'écran',
Modal:
"Appuyez longuement ou faites un clic droit pour enregistrer l'image",
'Appuyez longuement ou faites un clic droit pour enregistrer l\'image',
},
},
Select: {
Search: "Rechercher des messages",
All: "Tout sélectionner",
Latest: "Derniers messages",
Clear: "Effacer la sélection",
Search: 'Rechercher des messages',
All: 'Tout sélectionner',
Latest: 'Derniers messages',
Clear: 'Effacer la sélection',
},
Memory: {
Title: "Résumé historique",
EmptyContent: "Le contenu de la discussion est trop court pour être résumé",
Send: "Compresser automatiquement l'historique des discussions et l'envoyer comme contexte",
Copy: "Copier le résumé",
Reset: "[unused]",
ResetConfirm: "Confirmer la suppression du résumé historique ?",
Title: 'Résumé historique',
EmptyContent: 'Le contenu de la discussion est trop court pour être résumé',
Send: 'Compresser automatiquement l\'historique des discussions et l\'envoyer comme contexte',
Copy: 'Copier le résumé',
Reset: '[unused]',
ResetConfirm: 'Confirmer la suppression du résumé historique ?',
},
Home: {
NewChat: "Nouvelle discussion",
DeleteChat: "Confirmer la suppression de la discussion sélectionnée ?",
DeleteToast: "Discussion supprimée",
Revert: "Annuler",
NewChat: 'Nouvelle discussion',
DeleteChat: 'Confirmer la suppression de la discussion sélectionnée ?',
DeleteToast: 'Discussion supprimée',
Revert: 'Annuler',
},
Settings: {
Title: "Paramètres",
SubTitle: "Toutes les options de configuration",
Title: 'Paramètres',
SubTitle: 'Toutes les options de configuration',
Danger: {
Reset: {
Title: "Réinitialiser tous les paramètres",
Title: 'Réinitialiser tous les paramètres',
SubTitle:
"Réinitialiser toutes les options de configuration aux valeurs par défaut",
Action: "Réinitialiser maintenant",
Confirm: "Confirmer la réinitialisation de tous les paramètres ?",
'Réinitialiser toutes les options de configuration aux valeurs par défaut',
Action: 'Réinitialiser maintenant',
Confirm: 'Confirmer la réinitialisation de tous les paramètres ?',
},
Clear: {
Title: "Effacer toutes les données",
Title: 'Effacer toutes les données',
SubTitle:
"Effacer toutes les discussions et les données de configuration",
Action: "Effacer maintenant",
'Effacer toutes les discussions et les données de configuration',
Action: 'Effacer maintenant',
Confirm:
"Confirmer l'effacement de toutes les discussions et données de configuration ?",
'Confirmer l\'effacement de toutes les discussions et données de configuration ?',
},
},
Lang: {
Name: "Language", // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
All: "Toutes les langues",
Name: 'Language', // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
All: 'Toutes les langues',
},
Avatar: "Avatar",
Avatar: 'Avatar',
FontSize: {
Title: "Taille de la police",
SubTitle: "Taille de la police pour le contenu des discussions",
Title: 'Taille de la police',
SubTitle: 'Taille de la police pour le contenu des discussions',
},
FontFamily: {
Title: "Police de Chat",
Title: 'Police de Chat',
SubTitle:
"Police du contenu du chat, laissez vide pour appliquer la police par défaut globale",
Placeholder: "Nom de la Police",
'Police du contenu du chat, laissez vide pour appliquer la police par défaut globale',
Placeholder: 'Nom de la Police',
},
InjectSystemPrompts: {
Title: "Injecter des invites système",
Title: 'Injecter des invites système',
SubTitle:
"Ajouter de manière forcée une invite système simulée de ChatGPT au début de chaque liste de messages",
'Ajouter de manière forcée une invite système simulée de ChatGPT au début de chaque liste de messages',
},
InputTemplate: {
Title: "Prétraitement des entrées utilisateur",
Title: 'Prétraitement des entrées utilisateur',
SubTitle:
"Le dernier message de l'utilisateur sera intégré dans ce modèle",
'Le dernier message de l\'utilisateur sera intégré dans ce modèle',
},
Update: {
Version: (x: string) => `Version actuelle : ${x}`,
IsLatest: "Vous avez la dernière version",
CheckUpdate: "Vérifier les mises à jour",
IsChecking: "Vérification des mises à jour en cours...",
IsLatest: 'Vous avez la dernière version',
CheckUpdate: 'Vérifier les mises à jour',
IsChecking: 'Vérification des mises à jour en cours...',
FoundUpdate: (x: string) => `Nouvelle version trouvée : ${x}`,
GoToUpdate: "Aller à la mise à jour",
GoToUpdate: 'Aller à la mise à jour',
},
SendKey: "Touche d'envoi",
Theme: "Thème",
TightBorder: "Mode sans bordure",
SendKey: 'Touche d\'envoi',
Theme: 'Thème',
TightBorder: 'Mode sans bordure',
SendPreviewBubble: {
Title: "Bulle d'aperçu",
SubTitle: "Aperçu du contenu Markdown dans la bulle d'aperçu",
Title: 'Bulle d\'aperçu',
SubTitle: 'Aperçu du contenu Markdown dans la bulle d\'aperçu',
},
AutoGenerateTitle: {
Title: "Génération automatique de titres",
Title: 'Génération automatique de titres',
SubTitle:
"Générer un titre approprié en fonction du contenu de la discussion",
'Générer un titre approprié en fonction du contenu de la discussion',
},
Sync: {
CloudState: "Données cloud",
NotSyncYet: "Pas encore synchronisé",
Success: "Synchronisation réussie",
Fail: "Échec de la synchronisation",
CloudState: 'Données cloud',
NotSyncYet: 'Pas encore synchronisé',
Success: 'Synchronisation réussie',
Fail: 'Échec de la synchronisation',
Config: {
Modal: {
Title: "Configurer la synchronisation cloud",
Check: "Vérifier la disponibilité",
Title: 'Configurer la synchronisation cloud',
Check: 'Vérifier la disponibilité',
},
SyncType: {
Title: "Type de synchronisation",
SubTitle: "Choisissez le serveur de synchronisation préféré",
Title: 'Type de synchronisation',
SubTitle: 'Choisissez le serveur de synchronisation préféré',
},
Proxy: {
Title: "Activer le proxy",
Title: 'Activer le proxy',
SubTitle:
"Lors de la synchronisation dans le navigateur, le proxy doit être activé pour éviter les restrictions de domaine croisé",
'Lors de la synchronisation dans le navigateur, le proxy doit être activé pour éviter les restrictions de domaine croisé',
},
ProxyUrl: {
Title: "Adresse du proxy",
Title: 'Adresse du proxy',
SubTitle:
"Uniquement pour le proxy de domaine croisé fourni par le projet",
'Uniquement pour le proxy de domaine croisé fourni par le projet',
},
WebDav: {
Endpoint: "Adresse WebDAV",
UserName: "Nom d'utilisateur",
Password: "Mot de passe",
Endpoint: 'Adresse WebDAV',
UserName: 'Nom d\'utilisateur',
Password: 'Mot de passe',
},
UpStash: {
Endpoint: "URL REST Redis UpStash",
UserName: "Nom de sauvegarde",
Password: "Token REST Redis UpStash",
Endpoint: 'URL REST Redis UpStash',
UserName: 'Nom de sauvegarde',
Password: 'Token REST Redis UpStash',
},
},
LocalState: "Données locales",
LocalState: 'Données locales',
Overview: (overview: any) => {
return `${overview.chat} discussions, ${overview.message} messages, ${overview.prompt} invites, ${overview.mask} masques`;
},
ImportFailed: "Échec de l'importation",
ImportFailed: 'Échec de l\'importation',
},
Mask: {
Splash: {
Title: "Page de démarrage du masque",
Title: 'Page de démarrage du masque',
SubTitle:
"Afficher la page de démarrage du masque lors de la création d'une nouvelle discussion",
'Afficher la page de démarrage du masque lors de la création d\'une nouvelle discussion',
},
Builtin: {
Title: "Masquer les masques intégrés",
Title: 'Masquer les masques intégrés',
SubTitle:
"Masquer les masques intégrés dans toutes les listes de masques",
'Masquer les masques intégrés dans toutes les listes de masques',
},
},
Prompt: {
Disable: {
Title: "Désactiver la complétion automatique des invites",
Title: 'Désactiver la complétion automatique des invites',
SubTitle:
"Saisir / au début de la zone de texte pour déclencher la complétion automatique",
'Saisir / au début de la zone de texte pour déclencher la complétion automatique',
},
List: "Liste des invites personnalisées",
List: 'Liste des invites personnalisées',
ListCount: (builtin: number, custom: number) =>
`${builtin} intégrées, ${custom} définies par l'utilisateur`,
Edit: "Modifier",
Edit: 'Modifier',
Modal: {
Title: "Liste des invites",
Add: "Créer",
Search: "Rechercher des invites",
Title: 'Liste des invites',
Add: 'Créer',
Search: 'Rechercher des invites',
},
EditModal: {
Title: "Modifier les invites",
Title: 'Modifier les invites',
},
},
HistoryCount: {
Title: "Nombre de messages historiques",
SubTitle: "Nombre de messages historiques envoyés avec chaque demande",
Title: 'Nombre de messages historiques',
SubTitle: 'Nombre de messages historiques envoyés avec chaque demande',
},
CompressThreshold: {
Title: "Seuil de compression des messages historiques",
Title: 'Seuil de compression des messages historiques',
SubTitle:
"Compresser les messages historiques lorsque leur longueur dépasse cette valeur",
'Compresser les messages historiques lorsque leur longueur dépasse cette valeur',
},
Usage: {
Title: "Vérification du solde",
Title: 'Vérification du solde',
SubTitle(used: any, total: any) {
return `Utilisé ce mois-ci : $${used}, Total d'abonnement : $${total}`;
},
IsChecking: "Vérification en cours…",
Check: "Re-vérifier",
IsChecking: 'Vérification en cours…',
Check: 'Re-vérifier',
NoAccess:
"Entrez la clé API ou le mot de passe d'accès pour vérifier le solde",
'Entrez la clé API ou le mot de passe d\'accès pour vérifier le solde',
},
Access: {
SaasStart: {
Title: "Utiliser NextChat AI",
Label: "(La solution la plus rentable)",
Title: 'Utiliser NextChat AI',
Label: '(La solution la plus rentable)',
SubTitle:
"Officiellement maintenu par NextChat, prêt à l'emploi sans configuration, prend en charge les derniers grands modèles comme OpenAI o1, GPT-4o et Claude-3.5",
ChatNow: "Discuter maintenant",
'Officiellement maintenu par NextChat, prêt à l\'emploi sans configuration, prend en charge les derniers grands modèles comme OpenAI o1, GPT-4o et Claude-3.5',
ChatNow: 'Discuter maintenant',
},
AccessCode: {
Title: "Mot de passe d'accès",
SubTitle: "L'administrateur a activé l'accès sécurisé",
Placeholder: "Veuillez entrer le mot de passe d'accès",
Title: 'Mot de passe d\'accès',
SubTitle: 'L\'administrateur a activé l\'accès sécurisé',
Placeholder: 'Veuillez entrer le mot de passe d\'accès',
},
CustomEndpoint: {
Title: "Interface personnalisée",
SubTitle: "Utiliser un service Azure ou OpenAI personnalisé",
Title: 'Interface personnalisée',
SubTitle: 'Utiliser un service Azure ou OpenAI personnalisé',
},
Provider: {
Title: "Fournisseur de modèle",
SubTitle: "Changer de fournisseur de service",
Title: 'Fournisseur de modèle',
SubTitle: 'Changer de fournisseur de service',
},
OpenAI: {
ApiKey: {
Title: "Clé API",
Title: 'Clé API',
SubTitle:
"Utiliser une clé OpenAI personnalisée pour contourner les restrictions d'accès par mot de passe",
Placeholder: "Clé API OpenAI",
'Utiliser une clé OpenAI personnalisée pour contourner les restrictions d\'accès par mot de passe',
Placeholder: 'Clé API OpenAI',
},
Endpoint: {
Title: "Adresse de l'interface",
SubTitle: "Doit inclure http(s):// en dehors de l'adresse par défaut",
Title: 'Adresse de l\'interface',
SubTitle: 'Doit inclure http(s):// en dehors de l\'adresse par défaut',
},
},
Azure: {
ApiKey: {
Title: "Clé d'interface",
Title: 'Clé d\'interface',
SubTitle:
"Utiliser une clé Azure personnalisée pour contourner les restrictions d'accès par mot de passe",
Placeholder: "Clé API Azure",
'Utiliser une clé Azure personnalisée pour contourner les restrictions d\'accès par mot de passe',
Placeholder: 'Clé API Azure',
},
Endpoint: {
Title: "Adresse de l'interface",
SubTitle: "Exemple :",
Title: 'Adresse de l\'interface',
SubTitle: 'Exemple :',
},
ApiVerion: {
Title: "Version de l'interface (version API azure)",
SubTitle: "Choisissez une version spécifique",
Title: 'Version de l\'interface (version API azure)',
SubTitle: 'Choisissez une version spécifique',
},
},
Anthropic: {
ApiKey: {
Title: "Clé d'interface",
Title: 'Clé d\'interface',
SubTitle:
"Utiliser une clé Anthropic personnalisée pour contourner les restrictions d'accès par mot de passe",
Placeholder: "Clé API Anthropic",
'Utiliser une clé Anthropic personnalisée pour contourner les restrictions d\'accès par mot de passe',
Placeholder: 'Clé API Anthropic',
},
Endpoint: {
Title: "Adresse de l'interface",
SubTitle: "Exemple :",
Title: 'Adresse de l\'interface',
SubTitle: 'Exemple :',
},
ApiVerion: {
Title: "Version de l'interface (version API claude)",
SubTitle: "Choisissez une version spécifique de l'API",
Title: 'Version de l\'interface (version API claude)',
SubTitle: 'Choisissez une version spécifique de l\'API',
},
},
Google: {
ApiKey: {
Title: "Clé API",
SubTitle: "Obtenez votre clé API Google AI",
Placeholder: "Entrez votre clé API Google AI Studio",
Title: 'Clé API',
SubTitle: 'Obtenez votre clé API Google AI',
Placeholder: 'Entrez votre clé API Google AI Studio',
},
Endpoint: {
Title: "Adresse de l'interface",
SubTitle: "Exemple :",
Title: 'Adresse de l\'interface',
SubTitle: 'Exemple :',
},
ApiVersion: {
Title: "Version de l'API (pour gemini-pro uniquement)",
SubTitle: "Choisissez une version spécifique de l'API",
Title: 'Version de l\'API (pour gemini-pro uniquement)',
SubTitle: 'Choisissez une version spécifique de l\'API',
},
GoogleSafetySettings: {
Title: "Niveau de filtrage de sécurité Google",
SubTitle: "Définir le niveau de filtrage du contenu",
Title: 'Niveau de filtrage de sécurité Google',
SubTitle: 'Définir le niveau de filtrage du contenu',
},
},
Baidu: {
ApiKey: {
Title: "Clé API",
SubTitle: "Utiliser une clé API Baidu personnalisée",
Placeholder: "Clé API Baidu",
Title: 'Clé API',
SubTitle: 'Utiliser une clé API Baidu personnalisée',
Placeholder: 'Clé API Baidu',
},
SecretKey: {
Title: "Clé secrète",
SubTitle: "Utiliser une clé secrète Baidu personnalisée",
Placeholder: "Clé secrète Baidu",
Title: 'Clé secrète',
SubTitle: 'Utiliser une clé secrète Baidu personnalisée',
Placeholder: 'Clé secrète Baidu',
},
Endpoint: {
Title: "Adresse de l'interface",
Title: 'Adresse de l\'interface',
SubTitle:
"Non pris en charge pour les configurations personnalisées dans .env",
'Non pris en charge pour les configurations personnalisées dans .env',
},
},
ByteDance: {
ApiKey: {
Title: "Clé d'interface",
SubTitle: "Utiliser une clé API ByteDance personnalisée",
Placeholder: "Clé API ByteDance",
Title: 'Clé d\'interface',
SubTitle: 'Utiliser une clé API ByteDance personnalisée',
Placeholder: 'Clé API ByteDance',
},
Endpoint: {
Title: "Adresse de l'interface",
SubTitle: "Exemple :",
Title: 'Adresse de l\'interface',
SubTitle: 'Exemple :',
},
},
Alibaba: {
ApiKey: {
Title: "Clé d'interface",
SubTitle: "Utiliser une clé API Alibaba Cloud personnalisée",
Placeholder: "Clé API Alibaba Cloud",
Title: 'Clé d\'interface',
SubTitle: 'Utiliser une clé API Alibaba Cloud personnalisée',
Placeholder: 'Clé API Alibaba Cloud',
},
Endpoint: {
Title: "Adresse de l'interface",
SubTitle: "Exemple :",
Title: 'Adresse de l\'interface',
SubTitle: 'Exemple :',
},
},
CustomModel: {
Title: "Nom du modèle personnalisé",
Title: 'Nom du modèle personnalisé',
SubTitle:
"Ajouter des options de modèles personnalisés, séparées par des virgules",
'Ajouter des options de modèles personnalisés, séparées par des virgules',
},
},
Model: "Modèle",
Model: 'Modèle',
CompressModel: {
Title: "Modèle de compression",
SubTitle: "Modèle utilisé pour compresser l'historique",
Title: 'Modèle de compression',
SubTitle: 'Modèle utilisé pour compresser l\'historique',
},
Temperature: {
Title: "Aléatoire (temperature)",
SubTitle: "Plus la valeur est élevée, plus les réponses sont aléatoires",
Title: 'Aléatoire (temperature)',
SubTitle: 'Plus la valeur est élevée, plus les réponses sont aléatoires',
},
TopP: {
Title: "Échantillonnage par noyau (top_p)",
Title: 'Échantillonnage par noyau (top_p)',
SubTitle:
"Semblable à l'aléatoire, mais ne pas modifier en même temps que l'aléatoire",
'Semblable à l\'aléatoire, mais ne pas modifier en même temps que l\'aléatoire',
},
MaxTokens: {
Title: "Limite de réponse unique (max_tokens)",
SubTitle: "Nombre maximal de tokens utilisés pour une interaction unique",
Title: 'Limite de réponse unique (max_tokens)',
SubTitle: 'Nombre maximal de tokens utilisés pour une interaction unique',
},
PresencePenalty: {
Title: "Nouveauté du sujet (presence_penalty)",
Title: 'Nouveauté du sujet (presence_penalty)',
SubTitle:
"Plus la valeur est élevée, plus il est probable d'élargir aux nouveaux sujets",
'Plus la valeur est élevée, plus il est probable d\'élargir aux nouveaux sujets',
},
FrequencyPenalty: {
Title: "Pénalité de fréquence (frequency_penalty)",
Title: 'Pénalité de fréquence (frequency_penalty)',
SubTitle:
"Plus la valeur est élevée, plus il est probable de réduire les répétitions",
'Plus la valeur est élevée, plus il est probable de réduire les répétitions',
},
},
Store: {
DefaultTopic: "Nouvelle discussion",
BotHello: "Comment puis-je vous aider ?",
Error: "Une erreur est survenue, veuillez réessayer plus tard",
DefaultTopic: 'Nouvelle discussion',
BotHello: 'Comment puis-je vous aider ?',
Error: 'Une erreur est survenue, veuillez réessayer plus tard',
Prompt: {
History: (content: string) =>
"Voici le résumé de la discussion précédente : " + content,
`Voici le résumé de la discussion précédente : ${content}`,
Topic:
"Utilisez quatre à cinq mots pour retourner le sujet succinct de cette phrase, sans explication, sans ponctuation, sans interjections, sans texte superflu, sans gras. Si aucun sujet, retournez simplement « discussion informelle »",
'Utilisez quatre à cinq mots pour retourner le sujet succinct de cette phrase, sans explication, sans ponctuation, sans interjections, sans texte superflu, sans gras. Si aucun sujet, retournez simplement « discussion informelle »',
Summarize:
"Faites un résumé succinct de la discussion, à utiliser comme prompt de contexte ultérieur, en moins de 200 mots",
'Faites un résumé succinct de la discussion, à utiliser comme prompt de contexte ultérieur, en moins de 200 mots',
},
},
Copy: {
Success: "Copié dans le presse-papiers",
Failed: "Échec de la copie, veuillez autoriser l'accès au presse-papiers",
Success: 'Copié dans le presse-papiers',
Failed: 'Échec de la copie, veuillez autoriser l\'accès au presse-papiers',
},
Download: {
Success: "Le contenu a été téléchargé dans votre répertoire.",
Failed: "Échec du téléchargement.",
Success: 'Le contenu a été téléchargé dans votre répertoire.',
Failed: 'Échec du téléchargement.',
},
Context: {
Toast: (x: any) => `Contient ${x} invites prédéfinies`,
Edit: "Paramètres de la discussion actuelle",
Add: "Ajouter une discussion",
Clear: "Contexte effacé",
Revert: "Restaurer le contexte",
Edit: 'Paramètres de la discussion actuelle',
Add: 'Ajouter une discussion',
Clear: 'Contexte effacé',
Revert: 'Restaurer le contexte',
},
Plugin: {
Name: "Plugin",
Name: 'Plugin',
},
FineTuned: {
Sysmessage: "Vous êtes un assistant",
Sysmessage: 'Vous êtes un assistant',
},
SearchChat: {
Name: "Recherche",
Name: 'Recherche',
Page: {
Title: "Rechercher dans l'historique des discussions",
Search: "Entrez le mot-clé de recherche",
NoResult: "Aucun résultat trouvé",
NoData: "Aucune donnée",
Loading: "Chargement",
Title: 'Rechercher dans l\'historique des discussions',
Search: 'Entrez le mot-clé de recherche',
NoResult: 'Aucun résultat trouvé',
NoData: 'Aucune donnée',
Loading: 'Chargement',
SubTitle: (count: number) => `${count} résultats trouvés`,
},
Item: {
View: "Voir",
View: 'Voir',
},
},
Mask: {
Name: "Masque",
Name: 'Masque',
Page: {
Title: "Masques de rôle prédéfinis",
Title: 'Masques de rôle prédéfinis',
SubTitle: (count: number) => `${count} définitions de rôle prédéfinies`,
Search: "Rechercher des masques de rôle",
Create: "Créer",
Search: 'Rechercher des masques de rôle',
Create: 'Créer',
},
Item: {
Info: (count: number) => `Contient ${count} discussions prédéfinies`,
Chat: "Discussion",
View: "Voir",
Edit: "Modifier",
Delete: "Supprimer",
DeleteConfirm: "Confirmer la suppression ?",
Chat: 'Discussion',
View: 'Voir',
Edit: 'Modifier',
Delete: 'Supprimer',
DeleteConfirm: 'Confirmer la suppression ?',
},
EditModal: {
Title: (readonly: boolean) =>
`Modifier le masque prédéfini ${readonly ? " (lecture seule)" : ""}`,
Download: "Télécharger le masque",
Clone: "Cloner le masque",
`Modifier le masque prédéfini ${readonly ? ' (lecture seule)' : ''}`,
Download: 'Télécharger le masque',
Clone: 'Cloner le masque',
},
Config: {
Avatar: "Avatar du rôle",
Name: "Nom du rôle",
Avatar: 'Avatar du rôle',
Name: 'Nom du rôle',
Sync: {
Title: "Utiliser les paramètres globaux",
Title: 'Utiliser les paramètres globaux',
SubTitle:
"Cette discussion utilise-t-elle les paramètres du modèle globaux ?",
'Cette discussion utilise-t-elle les paramètres du modèle globaux ?',
Confirm:
"Les paramètres personnalisés de cette discussion seront automatiquement remplacés. Confirmer l'activation des paramètres globaux ?",
'Les paramètres personnalisés de cette discussion seront automatiquement remplacés. Confirmer l\'activation des paramètres globaux ?',
},
HideContext: {
Title: "Masquer les discussions prédéfinies",
Title: 'Masquer les discussions prédéfinies',
SubTitle:
"Les discussions prédéfinies ne seront pas affichées dans l'interface de discussion après masquage",
'Les discussions prédéfinies ne seront pas affichées dans l\'interface de discussion après masquage',
},
Share: {
Title: "Partager ce masque",
SubTitle: "Générer un lien direct pour ce masque",
Action: "Copier le lien",
Title: 'Partager ce masque',
SubTitle: 'Générer un lien direct pour ce masque',
Action: 'Copier le lien',
},
},
},
NewChat: {
Return: "Retour",
Skip: "Commencer directement",
NotShow: "Ne plus afficher",
Return: 'Retour',
Skip: 'Commencer directement',
NotShow: 'Ne plus afficher',
ConfirmNoShow:
"Confirmer la désactivation ? Vous pourrez réactiver cette option à tout moment dans les paramètres.",
Title: "Choisir un masque",
SubTitle: "Commencez maintenant, rencontrez les pensées derrière le masque",
More: "Voir tout",
'Confirmer la désactivation ? Vous pourrez réactiver cette option à tout moment dans les paramètres.',
Title: 'Choisir un masque',
SubTitle: 'Commencez maintenant, rencontrez les pensées derrière le masque',
More: 'Voir tout',
},
URLCommand: {
Code: "Code d'accès détecté dans le lien, souhaitez-vous le remplir automatiquement ?",
Code: 'Code d\'accès détecté dans le lien, souhaitez-vous le remplir automatiquement ?',
Settings:
"Paramètres prédéfinis détectés dans le lien, souhaitez-vous les remplir automatiquement ?",
'Paramètres prédéfinis détectés dans le lien, souhaitez-vous les remplir automatiquement ?',
},
UI: {
Confirm: "Confirmer",
Cancel: "Annuler",
Close: "Fermer",
Create: "Créer",
Edit: "Modifier",
Export: "Exporter",
Import: "Importer",
Sync: "Synchroniser",
Config: "Configurer",
Confirm: 'Confirmer',
Cancel: 'Annuler',
Close: 'Fermer',
Create: 'Créer',
Edit: 'Modifier',
Export: 'Exporter',
Import: 'Importer',
Sync: 'Synchroniser',
Config: 'Configurer',
},
Exporter: {
Description: {
Title:
"Seuls les messages après avoir effacé le contexte seront affichés",
'Seuls les messages après avoir effacé le contexte seront affichés',
},
Model: "Modèle",
Messages: "Messages",
Topic: "Sujet",
Time: "Temps",
Model: 'Modèle',
Messages: 'Messages',
Topic: 'Sujet',
Time: 'Temps',
},
};

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import type { PartialLocaleType } from "./index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from './index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const id: PartialLocaleType = {
WIP: "Coming Soon...",
WIP: 'Coming Soon...',
Error: {
Unauthorized: isApp
? `😆 Percakapan mengalami beberapa masalah, tidak perlu khawatir:
@@ -18,16 +19,16 @@ const id: PartialLocaleType = {
`,
},
Auth: {
Title: "Kebutuhan Kata Sandi",
Tips: "Administrator telah mengaktifkan verifikasi kata sandi, silakan masukkan kode akses di bawah ini",
SubTips: "Atau masukkan kunci API OpenAI atau Google Anda",
Input: "Masukkan kode akses di sini",
Confirm: "Konfirmasi",
Later: "Nanti",
Return: "Kembali",
SaasTips: "Konfigurasi terlalu rumit, saya ingin menggunakannya segera",
Title: 'Kebutuhan Kata Sandi',
Tips: 'Administrator telah mengaktifkan verifikasi kata sandi, silakan masukkan kode akses di bawah ini',
SubTips: 'Atau masukkan kunci API OpenAI atau Google Anda',
Input: 'Masukkan kode akses di sini',
Confirm: 'Konfirmasi',
Later: 'Nanti',
Return: 'Kembali',
SaasTips: 'Konfigurasi terlalu rumit, saya ingin menggunakannya segera',
TopTips:
"🥳 Penawaran Peluncuran NextChat AI, buka OpenAI o1, GPT-4o, Claude-3.5 dan model besar terbaru sekarang",
'🥳 Penawaran Peluncuran NextChat AI, buka OpenAI o1, GPT-4o, Claude-3.5 dan model besar terbaru sekarang',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} percakapan`,
@@ -35,560 +36,560 @@ const id: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `Total ${count} percakapan`,
EditMessage: {
Title: "Edit Riwayat Pesan",
Title: 'Edit Riwayat Pesan',
Topic: {
Title: "Topik Obrolan",
SubTitle: "Ubah topik obrolan saat ini",
Title: 'Topik Obrolan',
SubTitle: 'Ubah topik obrolan saat ini',
},
},
Actions: {
ChatList: "Lihat daftar pesan",
CompressedHistory: "Lihat riwayat Prompt yang dikompresi",
Export: "Ekspor riwayat obrolan",
Copy: "Salin",
Stop: "Berhenti",
Retry: "Coba lagi",
Pin: "Sematkan",
PinToastContent: "1 percakapan telah disematkan ke prompt default",
PinToastAction: "Lihat",
Delete: "Hapus",
Edit: "Edit",
RefreshTitle: "Segarkan Judul",
RefreshToast: "Permintaan penyegaran judul telah dikirim",
ChatList: 'Lihat daftar pesan',
CompressedHistory: 'Lihat riwayat Prompt yang dikompresi',
Export: 'Ekspor riwayat obrolan',
Copy: 'Salin',
Stop: 'Berhenti',
Retry: 'Coba lagi',
Pin: 'Sematkan',
PinToastContent: '1 percakapan telah disematkan ke prompt default',
PinToastAction: 'Lihat',
Delete: 'Hapus',
Edit: 'Edit',
RefreshTitle: 'Segarkan Judul',
RefreshToast: 'Permintaan penyegaran judul telah dikirim',
},
Commands: {
new: "Obrolan Baru",
newm: "Buat Obrolan Baru dari Masker",
next: "Obrolan Berikutnya",
prev: "Obrolan Sebelumnya",
clear: "Hapus Konteks",
del: "Hapus Obrolan",
new: 'Obrolan Baru',
newm: 'Buat Obrolan Baru dari Masker',
next: 'Obrolan Berikutnya',
prev: 'Obrolan Sebelumnya',
clear: 'Hapus Konteks',
del: 'Hapus Obrolan',
},
InputActions: {
Stop: "Hentikan Respons",
ToBottom: "Gulir ke bawah",
Stop: 'Hentikan Respons',
ToBottom: 'Gulir ke bawah',
Theme: {
auto: "Tema Otomatis",
light: "Mode Terang",
dark: "Mode Gelap",
auto: 'Tema Otomatis',
light: 'Mode Terang',
dark: 'Mode Gelap',
},
Prompt: "Perintah Cepat",
Masks: "Semua Masker",
Clear: "Hapus Obrolan",
Settings: "Pengaturan Obrolan",
UploadImage: "Unggah Gambar",
Prompt: 'Perintah Cepat',
Masks: 'Semua Masker',
Clear: 'Hapus Obrolan',
Settings: 'Pengaturan Obrolan',
UploadImage: 'Unggah Gambar',
},
Rename: "Ganti Nama Obrolan",
Typing: "Sedang Mengetik…",
Rename: 'Ganti Nama Obrolan',
Typing: 'Sedang Mengetik…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} kirim`;
let inputHints = `${submitKey} kirim`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "Shift + Enter untuk baris baru";
inputHints += 'Shift + Enter untuk baris baru';
}
return inputHints + "/ untuk melengkapi, : untuk memicu perintah";
return `${inputHints}/ untuk melengkapi, : untuk memicu perintah`;
},
Send: "Kirim",
Send: 'Kirim',
Config: {
Reset: "Hapus Memori",
SaveAs: "Simpan sebagai Masker",
Reset: 'Hapus Memori',
SaveAs: 'Simpan sebagai Masker',
},
IsContext: "Prompt Default",
IsContext: 'Prompt Default',
},
Export: {
Title: "Bagikan Riwayat Obrolan",
Copy: "Salin Semua",
Download: "Unduh File",
Share: "Bagikan ke ShareGPT",
MessageFromYou: "Pengguna",
MessageFromChatGPT: "ChatGPT",
Title: 'Bagikan Riwayat Obrolan',
Copy: 'Salin Semua',
Download: 'Unduh File',
Share: 'Bagikan ke ShareGPT',
MessageFromYou: 'Pengguna',
MessageFromChatGPT: 'ChatGPT',
Format: {
Title: "Format Ekspor",
SubTitle: "Dapat mengekspor teks Markdown atau gambar PNG",
Title: 'Format Ekspor',
SubTitle: 'Dapat mengekspor teks Markdown atau gambar PNG',
},
IncludeContext: {
Title: "Sertakan Konteks Masker",
SubTitle: "Apakah akan menampilkan konteks masker dalam pesan",
Title: 'Sertakan Konteks Masker',
SubTitle: 'Apakah akan menampilkan konteks masker dalam pesan',
},
Steps: {
Select: "Pilih",
Preview: "Prabaca",
Select: 'Pilih',
Preview: 'Prabaca',
},
Image: {
Toast: "Sedang Membuat Screenshot",
Modal: "Tekan lama atau klik kanan untuk menyimpan gambar",
Toast: 'Sedang Membuat Screenshot',
Modal: 'Tekan lama atau klik kanan untuk menyimpan gambar',
},
},
Select: {
Search: "Cari Pesan",
All: "Pilih Semua",
Latest: "Beberapa Terbaru",
Clear: "Hapus Pilihan",
Search: 'Cari Pesan',
All: 'Pilih Semua',
Latest: 'Beberapa Terbaru',
Clear: 'Hapus Pilihan',
},
Memory: {
Title: "Ringkasan Sejarah",
EmptyContent: "Isi percakapan terlalu pendek, tidak perlu dirangkum",
Send: "Otomatis kompres riwayat obrolan dan kirim sebagai konteks",
Copy: "Salin Ringkasan",
Reset: "[unused]",
ResetConfirm: "Konfirmasi untuk menghapus ringkasan sejarah?",
Title: 'Ringkasan Sejarah',
EmptyContent: 'Isi percakapan terlalu pendek, tidak perlu dirangkum',
Send: 'Otomatis kompres riwayat obrolan dan kirim sebagai konteks',
Copy: 'Salin Ringkasan',
Reset: '[unused]',
ResetConfirm: 'Konfirmasi untuk menghapus ringkasan sejarah?',
},
Home: {
NewChat: "Obrolan Baru",
DeleteChat: "Konfirmasi untuk menghapus percakapan yang dipilih?",
DeleteToast: "Percakapan telah dihapus",
Revert: "Batalkan",
NewChat: 'Obrolan Baru',
DeleteChat: 'Konfirmasi untuk menghapus percakapan yang dipilih?',
DeleteToast: 'Percakapan telah dihapus',
Revert: 'Batalkan',
},
Settings: {
Title: "Pengaturan",
SubTitle: "Semua opsi pengaturan",
Title: 'Pengaturan',
SubTitle: 'Semua opsi pengaturan',
Danger: {
Reset: {
Title: "Atur Ulang Semua Pengaturan",
SubTitle: "Atur ulang semua opsi pengaturan ke nilai default",
Action: "Atur Ulang Sekarang",
Confirm: "Konfirmasi untuk mengatur ulang semua pengaturan?",
Title: 'Atur Ulang Semua Pengaturan',
SubTitle: 'Atur ulang semua opsi pengaturan ke nilai default',
Action: 'Atur Ulang Sekarang',
Confirm: 'Konfirmasi untuk mengatur ulang semua pengaturan?',
},
Clear: {
Title: "Hapus Semua Data",
SubTitle: "Hapus semua data obrolan dan pengaturan",
Action: "Hapus Sekarang",
Title: 'Hapus Semua Data',
SubTitle: 'Hapus semua data obrolan dan pengaturan',
Action: 'Hapus Sekarang',
Confirm:
"Konfirmasi untuk menghapus semua data obrolan dan pengaturan?",
'Konfirmasi untuk menghapus semua data obrolan dan pengaturan?',
},
},
Lang: {
Name: "Language", // PERHATIAN: jika Anda ingin menambahkan terjemahan baru, harap jangan terjemahkan nilai ini, biarkan sebagai `Language`
All: "Semua Bahasa",
Name: 'Language', // PERHATIAN: jika Anda ingin menambahkan terjemahan baru, harap jangan terjemahkan nilai ini, biarkan sebagai `Language`
All: 'Semua Bahasa',
},
Avatar: "Avatar",
Avatar: 'Avatar',
FontSize: {
Title: "Ukuran Font",
SubTitle: "Ukuran font untuk konten obrolan",
Title: 'Ukuran Font',
SubTitle: 'Ukuran font untuk konten obrolan',
},
FontFamily: {
Title: "Font Obrolan",
Title: 'Font Obrolan',
SubTitle:
"Font dari konten obrolan, biarkan kosong untuk menerapkan font default global",
Placeholder: "Nama Font",
'Font dari konten obrolan, biarkan kosong untuk menerapkan font default global',
Placeholder: 'Nama Font',
},
InjectSystemPrompts: {
Title: "Suntikkan Pesan Sistem",
Title: 'Suntikkan Pesan Sistem',
SubTitle:
"Memaksa menambahkan pesan sistem simulasi ChatGPT di awal daftar pesan setiap permintaan",
'Memaksa menambahkan pesan sistem simulasi ChatGPT di awal daftar pesan setiap permintaan',
},
InputTemplate: {
Title: "Pra-pemrosesan Input Pengguna",
SubTitle: "Pesan terbaru pengguna akan diisi ke template ini",
Title: 'Pra-pemrosesan Input Pengguna',
SubTitle: 'Pesan terbaru pengguna akan diisi ke template ini',
},
Update: {
Version: (x: string) => `Versi Saat Ini: ${x}`,
IsLatest: "Sudah versi terbaru",
CheckUpdate: "Periksa Pembaruan",
IsChecking: "Sedang memeriksa pembaruan...",
IsLatest: 'Sudah versi terbaru',
CheckUpdate: 'Periksa Pembaruan',
IsChecking: 'Sedang memeriksa pembaruan...',
FoundUpdate: (x: string) => `Versi Baru Ditemukan: ${x}`,
GoToUpdate: "Pergi ke Pembaruan",
GoToUpdate: 'Pergi ke Pembaruan',
},
SendKey: "Kunci Kirim",
Theme: "Tema",
TightBorder: "Mode Tanpa Border",
SendKey: 'Kunci Kirim',
Theme: 'Tema',
TightBorder: 'Mode Tanpa Border',
SendPreviewBubble: {
Title: "Preview Bubble",
SubTitle: "Pratinjau konten Markdown di bubble pratinjau",
Title: 'Preview Bubble',
SubTitle: 'Pratinjau konten Markdown di bubble pratinjau',
},
AutoGenerateTitle: {
Title: "Otomatis Membuat Judul",
SubTitle: "Membuat judul yang sesuai berdasarkan konten obrolan",
Title: 'Otomatis Membuat Judul',
SubTitle: 'Membuat judul yang sesuai berdasarkan konten obrolan',
},
Sync: {
CloudState: "Data Cloud",
NotSyncYet: "Belum disinkronkan",
Success: "Sinkronisasi Berhasil",
Fail: "Sinkronisasi Gagal",
CloudState: 'Data Cloud',
NotSyncYet: 'Belum disinkronkan',
Success: 'Sinkronisasi Berhasil',
Fail: 'Sinkronisasi Gagal',
Config: {
Modal: {
Title: "Konfigurasi Sinkronisasi Cloud",
Check: "Periksa Ketersediaan",
Title: 'Konfigurasi Sinkronisasi Cloud',
Check: 'Periksa Ketersediaan',
},
SyncType: {
Title: "Jenis Sinkronisasi",
SubTitle: "Pilih server sinkronisasi favorit",
Title: 'Jenis Sinkronisasi',
SubTitle: 'Pilih server sinkronisasi favorit',
},
Proxy: {
Title: "Aktifkan Proxy",
Title: 'Aktifkan Proxy',
SubTitle:
"Saat menyinkronkan di browser, proxy harus diaktifkan untuk menghindari pembatasan lintas domain",
'Saat menyinkronkan di browser, proxy harus diaktifkan untuk menghindari pembatasan lintas domain',
},
ProxyUrl: {
Title: "Alamat Proxy",
SubTitle: "Hanya berlaku untuk proxy lintas domain bawaan proyek ini",
Title: 'Alamat Proxy',
SubTitle: 'Hanya berlaku untuk proxy lintas domain bawaan proyek ini',
},
WebDav: {
Endpoint: "Alamat WebDAV",
UserName: "Nama Pengguna",
Password: "Kata Sandi",
Endpoint: 'Alamat WebDAV',
UserName: 'Nama Pengguna',
Password: 'Kata Sandi',
},
UpStash: {
Endpoint: "Url REST Redis UpStash",
UserName: "Nama Cadangan",
Password: "Token REST Redis UpStash",
Endpoint: 'Url REST Redis UpStash',
UserName: 'Nama Cadangan',
Password: 'Token REST Redis UpStash',
},
},
LocalState: "Data Lokal",
LocalState: 'Data Lokal',
Overview: (overview: any) => {
return `${overview.chat} percakapan, ${overview.message} pesan, ${overview.prompt} prompt, ${overview.mask} masker`;
},
ImportFailed: "Impor Gagal",
ImportFailed: 'Impor Gagal',
},
Mask: {
Splash: {
Title: "Halaman Awal Masker",
SubTitle: "Tampilkan halaman awal masker saat memulai obrolan baru",
Title: 'Halaman Awal Masker',
SubTitle: 'Tampilkan halaman awal masker saat memulai obrolan baru',
},
Builtin: {
Title: "Sembunyikan Masker Bawaan",
SubTitle: "Sembunyikan masker bawaan dari semua daftar masker",
Title: 'Sembunyikan Masker Bawaan',
SubTitle: 'Sembunyikan masker bawaan dari semua daftar masker',
},
},
Prompt: {
Disable: {
Title: "Nonaktifkan Pelengkapan Prompt Otomatis",
Title: 'Nonaktifkan Pelengkapan Prompt Otomatis',
SubTitle:
"Ketik / di awal kotak input untuk memicu pelengkapan otomatis",
'Ketik / di awal kotak input untuk memicu pelengkapan otomatis',
},
List: "Daftar Prompt Kustom",
List: 'Daftar Prompt Kustom',
ListCount: (builtin: number, custom: number) =>
`Bawaan ${builtin} item, pengguna ${custom} item`,
Edit: "Edit",
Edit: 'Edit',
Modal: {
Title: "Daftar Prompt",
Add: "Baru",
Search: "Cari Prompt",
Title: 'Daftar Prompt',
Add: 'Baru',
Search: 'Cari Prompt',
},
EditModal: {
Title: "Edit Prompt",
Title: 'Edit Prompt',
},
},
HistoryCount: {
Title: "Jumlah Pesan Sejarah",
SubTitle: "Jumlah pesan sejarah yang dibawa setiap permintaan",
Title: 'Jumlah Pesan Sejarah',
SubTitle: 'Jumlah pesan sejarah yang dibawa setiap permintaan',
},
CompressThreshold: {
Title: "Ambang Batas Kompresi Pesan Sejarah",
Title: 'Ambang Batas Kompresi Pesan Sejarah',
SubTitle:
"Ketika pesan sejarah yang tidak terkompresi melebihi nilai ini, akan dikompresi",
'Ketika pesan sejarah yang tidak terkompresi melebihi nilai ini, akan dikompresi',
},
Usage: {
Title: "Cek Saldo",
Title: 'Cek Saldo',
SubTitle(used: any, total: any) {
return `Digunakan bulan ini $${used}, total langganan $${total}`;
},
IsChecking: "Sedang memeriksa…",
Check: "Periksa Lagi",
NoAccess: "Masukkan API Key atau kata sandi akses untuk melihat saldo",
IsChecking: 'Sedang memeriksa…',
Check: 'Periksa Lagi',
NoAccess: 'Masukkan API Key atau kata sandi akses untuk melihat saldo',
},
Access: {
SaasStart: {
Title: "Gunakan NextChat AI",
Label: "(Solusi paling hemat biaya)",
Title: 'Gunakan NextChat AI',
Label: '(Solusi paling hemat biaya)',
SubTitle:
"Dikelola secara resmi oleh NextChat, siap digunakan tanpa konfigurasi, mendukung model besar terbaru seperti OpenAI o1, GPT-4o, dan Claude-3.5",
ChatNow: "Chat Sekarang",
'Dikelola secara resmi oleh NextChat, siap digunakan tanpa konfigurasi, mendukung model besar terbaru seperti OpenAI o1, GPT-4o, dan Claude-3.5',
ChatNow: 'Chat Sekarang',
},
AccessCode: {
Title: "Kata Sandi Akses",
SubTitle: "Administrator telah mengaktifkan akses terenkripsi",
Placeholder: "Masukkan kata sandi akses",
Title: 'Kata Sandi Akses',
SubTitle: 'Administrator telah mengaktifkan akses terenkripsi',
Placeholder: 'Masukkan kata sandi akses',
},
CustomEndpoint: {
Title: "Antarmuka Kustom",
SubTitle: "Apakah akan menggunakan layanan Azure atau OpenAI kustom",
Title: 'Antarmuka Kustom',
SubTitle: 'Apakah akan menggunakan layanan Azure atau OpenAI kustom',
},
Provider: {
Title: "Penyedia Layanan Model",
SubTitle: "Ganti penyedia layanan yang berbeda",
Title: 'Penyedia Layanan Model',
SubTitle: 'Ganti penyedia layanan yang berbeda',
},
OpenAI: {
ApiKey: {
Title: "API Key",
Title: 'API Key',
SubTitle:
"Gunakan OpenAI Key kustom untuk menghindari batasan akses kata sandi",
Placeholder: "OpenAI API Key",
'Gunakan OpenAI Key kustom untuk menghindari batasan akses kata sandi',
Placeholder: 'OpenAI API Key',
},
Endpoint: {
Title: "Alamat Antarmuka",
SubTitle: "Selain alamat default, harus menyertakan http(s)://",
Title: 'Alamat Antarmuka',
SubTitle: 'Selain alamat default, harus menyertakan http(s)://',
},
},
Azure: {
ApiKey: {
Title: "Kunci Antarmuka",
Title: 'Kunci Antarmuka',
SubTitle:
"Gunakan Azure Key kustom untuk menghindari batasan akses kata sandi",
Placeholder: "Azure API Key",
'Gunakan Azure Key kustom untuk menghindari batasan akses kata sandi',
Placeholder: 'Azure API Key',
},
Endpoint: {
Title: "Alamat Antarmuka",
SubTitle: "Contoh:",
Title: 'Alamat Antarmuka',
SubTitle: 'Contoh:',
},
ApiVerion: {
Title: "Versi Antarmuka (azure api version)",
SubTitle: "Pilih versi parsial tertentu",
Title: 'Versi Antarmuka (azure api version)',
SubTitle: 'Pilih versi parsial tertentu',
},
},
Anthropic: {
ApiKey: {
Title: "Kunci Antarmuka",
Title: 'Kunci Antarmuka',
SubTitle:
"Gunakan Anthropic Key kustom untuk menghindari batasan akses kata sandi",
Placeholder: "Anthropic API Key",
'Gunakan Anthropic Key kustom untuk menghindari batasan akses kata sandi',
Placeholder: 'Anthropic API Key',
},
Endpoint: {
Title: "Alamat Antarmuka",
SubTitle: "Contoh:",
Title: 'Alamat Antarmuka',
SubTitle: 'Contoh:',
},
ApiVerion: {
Title: "Versi Antarmuka (claude api version)",
SubTitle: "Pilih versi API tertentu",
Title: 'Versi Antarmuka (claude api version)',
SubTitle: 'Pilih versi API tertentu',
},
},
Google: {
ApiKey: {
Title: "Kunci API",
SubTitle: "Dapatkan kunci API Anda dari Google AI",
Placeholder: "Masukkan kunci API Studio Google AI Anda",
Title: 'Kunci API',
SubTitle: 'Dapatkan kunci API Anda dari Google AI',
Placeholder: 'Masukkan kunci API Studio Google AI Anda',
},
Endpoint: {
Title: "Alamat Akhir",
SubTitle: "Contoh:",
Title: 'Alamat Akhir',
SubTitle: 'Contoh:',
},
ApiVersion: {
Title: "Versi API (hanya untuk gemini-pro)",
SubTitle: "Pilih versi API tertentu",
Title: 'Versi API (hanya untuk gemini-pro)',
SubTitle: 'Pilih versi API tertentu',
},
GoogleSafetySettings: {
Title: "Tingkat Filter Keamanan Google",
SubTitle: "Atur tingkat filter konten",
Title: 'Tingkat Filter Keamanan Google',
SubTitle: 'Atur tingkat filter konten',
},
},
Baidu: {
ApiKey: {
Title: "API Key",
SubTitle: "Gunakan Baidu API Key kustom",
Placeholder: "Baidu API Key",
Title: 'API Key',
SubTitle: 'Gunakan Baidu API Key kustom',
Placeholder: 'Baidu API Key',
},
SecretKey: {
Title: "Secret Key",
SubTitle: "Gunakan Baidu Secret Key kustom",
Placeholder: "Baidu Secret Key",
Title: 'Secret Key',
SubTitle: 'Gunakan Baidu Secret Key kustom',
Placeholder: 'Baidu Secret Key',
},
Endpoint: {
Title: "Alamat Antarmuka",
SubTitle: "Tidak mendukung kustom, pergi ke .env untuk konfigurasi",
Title: 'Alamat Antarmuka',
SubTitle: 'Tidak mendukung kustom, pergi ke .env untuk konfigurasi',
},
},
ByteDance: {
ApiKey: {
Title: "Kunci Antarmuka",
SubTitle: "Gunakan ByteDance API Key kustom",
Placeholder: "ByteDance API Key",
Title: 'Kunci Antarmuka',
SubTitle: 'Gunakan ByteDance API Key kustom',
Placeholder: 'ByteDance API Key',
},
Endpoint: {
Title: "Alamat Antarmuka",
SubTitle: "Contoh:",
Title: 'Alamat Antarmuka',
SubTitle: 'Contoh:',
},
},
Alibaba: {
ApiKey: {
Title: "Kunci Antarmuka",
SubTitle: "Gunakan Alibaba Cloud API Key kustom",
Placeholder: "Alibaba Cloud API Key",
Title: 'Kunci Antarmuka',
SubTitle: 'Gunakan Alibaba Cloud API Key kustom',
Placeholder: 'Alibaba Cloud API Key',
},
Endpoint: {
Title: "Alamat Antarmuka",
SubTitle: "Contoh:",
Title: 'Alamat Antarmuka',
SubTitle: 'Contoh:',
},
},
CustomModel: {
Title: "Nama Model Kustom",
SubTitle: "Tambahkan opsi model kustom, pisahkan dengan koma",
Title: 'Nama Model Kustom',
SubTitle: 'Tambahkan opsi model kustom, pisahkan dengan koma',
},
},
Model: "Model",
Model: 'Model',
CompressModel: {
Title: "Model Kompresi",
SubTitle: "Model yang digunakan untuk mengompres riwayat",
Title: 'Model Kompresi',
SubTitle: 'Model yang digunakan untuk mengompres riwayat',
},
Temperature: {
Title: "Randomness (temperature)",
SubTitle: "Semakin tinggi nilainya, semakin acak responsnya",
Title: 'Randomness (temperature)',
SubTitle: 'Semakin tinggi nilainya, semakin acak responsnya',
},
TopP: {
Title: "Sampling Inti (top_p)",
Title: 'Sampling Inti (top_p)',
SubTitle:
"Mirip dengan randomness, tetapi jangan ubah bersama randomness",
'Mirip dengan randomness, tetapi jangan ubah bersama randomness',
},
MaxTokens: {
Title: "Batas Token Per Respons",
SubTitle: "Jumlah token maksimum yang digunakan per interaksi",
Title: 'Batas Token Per Respons',
SubTitle: 'Jumlah token maksimum yang digunakan per interaksi',
},
PresencePenalty: {
Title: "Kedekatan Topik (presence_penalty)",
Title: 'Kedekatan Topik (presence_penalty)',
SubTitle:
"Semakin tinggi nilainya, semakin besar kemungkinan memperluas ke topik baru",
'Semakin tinggi nilainya, semakin besar kemungkinan memperluas ke topik baru',
},
FrequencyPenalty: {
Title: "Hukuman Frekuensi (frequency_penalty)",
Title: 'Hukuman Frekuensi (frequency_penalty)',
SubTitle:
"Semakin tinggi nilainya, semakin besar kemungkinan mengurangi kata-kata yang berulang",
'Semakin tinggi nilainya, semakin besar kemungkinan mengurangi kata-kata yang berulang',
},
},
Store: {
DefaultTopic: "Obrolan Baru",
BotHello: "Ada yang bisa saya bantu?",
Error: "Terjadi kesalahan, coba lagi nanti",
DefaultTopic: 'Obrolan Baru',
BotHello: 'Ada yang bisa saya bantu?',
Error: 'Terjadi kesalahan, coba lagi nanti',
Prompt: {
History: (content: string) =>
"Ini adalah ringkasan obrolan sebelumnya sebagai latar belakang: " +
content,
`Ini adalah ringkasan obrolan sebelumnya sebagai latar belakang: ${
content}`,
Topic:
"Gunakan empat hingga lima kata untuk langsung memberikan ringkasan topik kalimat ini, tanpa penjelasan, tanpa tanda baca, tanpa kata pengisi, tanpa teks tambahan, tanpa menebalkan. Jika tidak ada topik, langsung jawab 'Obrolan Santai'",
'Gunakan empat hingga lima kata untuk langsung memberikan ringkasan topik kalimat ini, tanpa penjelasan, tanpa tanda baca, tanpa kata pengisi, tanpa teks tambahan, tanpa menebalkan. Jika tidak ada topik, langsung jawab \'Obrolan Santai\'',
Summarize:
"Berikan ringkasan singkat tentang konten obrolan, untuk digunakan sebagai prompt konteks selanjutnya, dalam 200 kata atau kurang",
'Berikan ringkasan singkat tentang konten obrolan, untuk digunakan sebagai prompt konteks selanjutnya, dalam 200 kata atau kurang',
},
},
Copy: {
Success: "Telah disalin ke clipboard",
Failed: "Gagal menyalin, mohon berikan izin clipboard",
Success: 'Telah disalin ke clipboard',
Failed: 'Gagal menyalin, mohon berikan izin clipboard',
},
Download: {
Success: "Konten telah diunduh ke direktori Anda.",
Failed: "Unduhan gagal.",
Success: 'Konten telah diunduh ke direktori Anda.',
Failed: 'Unduhan gagal.',
},
Context: {
Toast: (x: any) => `Berisi ${x} prompt preset`,
Edit: "Pengaturan Obrolan Saat Ini",
Add: "Tambah Obrolan",
Clear: "Konteks telah dihapus",
Revert: "Kembalikan Konteks",
Edit: 'Pengaturan Obrolan Saat Ini',
Add: 'Tambah Obrolan',
Clear: 'Konteks telah dihapus',
Revert: 'Kembalikan Konteks',
},
Plugin: {
Name: "Plugin",
Name: 'Plugin',
},
FineTuned: {
Sysmessage: "Anda adalah seorang asisten",
Sysmessage: 'Anda adalah seorang asisten',
},
SearchChat: {
Name: "Cari",
Name: 'Cari',
Page: {
Title: "Cari riwayat obrolan",
Search: "Masukkan kata kunci pencarian",
NoResult: "Tidak ada hasil ditemukan",
NoData: "Tidak ada data",
Loading: "Memuat",
Title: 'Cari riwayat obrolan',
Search: 'Masukkan kata kunci pencarian',
NoResult: 'Tidak ada hasil ditemukan',
NoData: 'Tidak ada data',
Loading: 'Memuat',
SubTitle: (count: number) => `Ditemukan ${count} hasil`,
},
Item: {
View: "Lihat",
View: 'Lihat',
},
},
Mask: {
Name: "Masker",
Name: 'Masker',
Page: {
Title: "Preset Karakter Masker",
Title: 'Preset Karakter Masker',
SubTitle: (count: number) => `${count} definisi karakter preset`,
Search: "Cari Masker Karakter",
Create: "Buat Baru",
Search: 'Cari Masker Karakter',
Create: 'Buat Baru',
},
Item: {
Info: (count: number) => `Berisi ${count} obrolan preset`,
Chat: "Obrolan",
View: "Lihat",
Edit: "Edit",
Delete: "Hapus",
DeleteConfirm: "Konfirmasi penghapusan?",
Chat: 'Obrolan',
View: 'Lihat',
Edit: 'Edit',
Delete: 'Hapus',
DeleteConfirm: 'Konfirmasi penghapusan?',
},
EditModal: {
Title: (readonly: boolean) =>
`Edit Masker Preset ${readonly ? "(Hanya Baca)" : ""}`,
Download: "Unduh Preset",
Clone: "Klon Preset",
`Edit Masker Preset ${readonly ? '(Hanya Baca)' : ''}`,
Download: 'Unduh Preset',
Clone: 'Klon Preset',
},
Config: {
Avatar: "Avatar Karakter",
Name: "Nama Karakter",
Avatar: 'Avatar Karakter',
Name: 'Nama Karakter',
Sync: {
Title: "Gunakan Pengaturan Global",
Title: 'Gunakan Pengaturan Global',
SubTitle:
"Apakah obrolan saat ini akan menggunakan pengaturan model global?",
'Apakah obrolan saat ini akan menggunakan pengaturan model global?',
Confirm:
"Pengaturan kustom obrolan saat ini akan ditimpa secara otomatis, konfirmasi untuk mengaktifkan pengaturan global?",
'Pengaturan kustom obrolan saat ini akan ditimpa secara otomatis, konfirmasi untuk mengaktifkan pengaturan global?',
},
HideContext: {
Title: "Sembunyikan Obrolan Preset",
Title: 'Sembunyikan Obrolan Preset',
SubTitle:
"Setelah disembunyikan, obrolan preset tidak akan muncul di antarmuka obrolan",
'Setelah disembunyikan, obrolan preset tidak akan muncul di antarmuka obrolan',
},
Share: {
Title: "Bagikan Masker Ini",
SubTitle: "Hasilkan tautan langsung ke masker ini",
Action: "Salin Tautan",
Title: 'Bagikan Masker Ini',
SubTitle: 'Hasilkan tautan langsung ke masker ini',
Action: 'Salin Tautan',
},
},
},
NewChat: {
Return: "Kembali",
Skip: "Mulai Sekarang",
NotShow: "Jangan Tampilkan Lagi",
Return: 'Kembali',
Skip: 'Mulai Sekarang',
NotShow: 'Jangan Tampilkan Lagi',
ConfirmNoShow:
"Konfirmasi untuk menonaktifkan? Setelah dinonaktifkan, Anda dapat mengaktifkannya kembali kapan saja di pengaturan.",
Title: "Pilih Masker",
SubTitle: "Mulai sekarang, berinteraksi dengan pemikiran di balik masker",
More: "Lihat Semua",
'Konfirmasi untuk menonaktifkan? Setelah dinonaktifkan, Anda dapat mengaktifkannya kembali kapan saja di pengaturan.',
Title: 'Pilih Masker',
SubTitle: 'Mulai sekarang, berinteraksi dengan pemikiran di balik masker',
More: 'Lihat Semua',
},
URLCommand: {
Code: "Terdeteksi bahwa tautan sudah mengandung kode akses, apakah akan diisi secara otomatis?",
Code: 'Terdeteksi bahwa tautan sudah mengandung kode akses, apakah akan diisi secara otomatis?',
Settings:
"Terdeteksi bahwa tautan mengandung pengaturan preset, apakah akan diisi secara otomatis?",
'Terdeteksi bahwa tautan mengandung pengaturan preset, apakah akan diisi secara otomatis?',
},
UI: {
Confirm: "Konfirmasi",
Cancel: "Batal",
Close: "Tutup",
Create: "Buat Baru",
Edit: "Edit",
Export: "Ekspor",
Import: "Impor",
Sync: "Sinkronkan",
Config: "Konfigurasi",
Confirm: 'Konfirmasi',
Cancel: 'Batal',
Close: 'Tutup',
Create: 'Buat Baru',
Edit: 'Edit',
Export: 'Ekspor',
Import: 'Impor',
Sync: 'Sinkronkan',
Config: 'Konfigurasi',
},
Exporter: {
Description: {
Title: "Hanya pesan setelah menghapus konteks yang akan ditampilkan",
Title: 'Hanya pesan setelah menghapus konteks yang akan ditampilkan',
},
Model: "Model",
Messages: "Pesan",
Topic: "Topik",
Time: "Waktu",
Model: 'Model',
Messages: 'Pesan',
Topic: 'Topik',
Time: 'Waktu',
},
};

View File

@@ -1,27 +1,28 @@
import cn from "./cn";
import en from "./en";
import pt from "./pt";
import tw from "./tw";
import id from "./id";
import fr from "./fr";
import es from "./es";
import it from "./it";
import tr from "./tr";
import jp from "./jp";
import de from "./de";
import vi from "./vi";
import ru from "./ru";
import no from "./no";
import cs from "./cs";
import ko from "./ko";
import ar from "./ar";
import bn from "./bn";
import sk from "./sk";
import { merge } from "../utils/merge";
import { safeLocalStorage } from "@/app/utils";
import type { LocaleType } from './cn';
import { safeLocalStorage } from '@/app/utils';
import { merge } from '../utils/merge';
import ar from './ar';
import bn from './bn';
import cn from './cn';
import cs from './cs';
import de from './de';
import en from './en';
import es from './es';
import fr from './fr';
import id from './id';
import it from './it';
import jp from './jp';
import ko from './ko';
import no from './no';
import pt from './pt';
import ru from './ru';
import sk from './sk';
import tr from './tr';
import tw from './tw';
import type { LocaleType } from "./cn";
export type { LocaleType, PartialLocaleType } from "./cn";
import vi from './vi';
export type { LocaleType, PartialLocaleType } from './cn';
const localStorage = safeLocalStorage();
@@ -52,29 +53,29 @@ export type Lang = keyof typeof ALL_LANGS;
export const AllLangs = Object.keys(ALL_LANGS) as Lang[];
export const ALL_LANG_OPTIONS: Record<Lang, string> = {
cn: "简体中文",
en: "English",
pt: "Português",
tw: "繁體中文",
jp: "日本語",
ko: "한국어",
id: "Indonesia",
fr: "Français",
es: "Español",
it: "Italiano",
tr: "Türkçe",
de: "Deutsch",
vi: "Tiếng Việt",
ru: "Русский",
cs: "Čeština",
no: "Nynorsk",
ar: "العربية",
bn: "বাংলা",
sk: "Slovensky",
cn: '简体中文',
en: 'English',
pt: 'Português',
tw: '繁體中文',
jp: '日本語',
ko: '한국어',
id: 'Indonesia',
fr: 'Français',
es: 'Español',
it: 'Italiano',
tr: 'Türkçe',
de: 'Deutsch',
vi: 'Tiếng Việt',
ru: 'Русский',
cs: 'Čeština',
no: 'Nynorsk',
ar: 'العربية',
bn: 'বাংলা',
sk: 'Slovensky',
};
const LANG_KEY = "lang";
const DEFAULT_LANG = "en";
const LANG_KEY = 'lang';
const DEFAULT_LANG = 'en';
const fallbackLang = en;
const targetLang = ALL_LANGS[getLang()] as LocaleType;
@@ -113,7 +114,7 @@ function getLanguage() {
export function getLang(): Lang {
const savedLang = getItem(LANG_KEY);
if (AllLangs.includes((savedLang ?? "") as Lang)) {
if (AllLangs.includes((savedLang ?? '') as Lang)) {
return savedLang as Lang;
}
@@ -127,35 +128,35 @@ export function changeLang(lang: Lang) {
export function getISOLang() {
const isoLangString: Record<string, string> = {
cn: "zh-Hans",
tw: "zh-Hant",
cn: 'zh-Hans',
tw: 'zh-Hant',
};
const lang = getLang();
return isoLangString[lang] ?? lang;
}
const DEFAULT_STT_LANG = "zh-CN";
const DEFAULT_STT_LANG = 'zh-CN';
export const STT_LANG_MAP: Record<Lang, string> = {
cn: "zh-CN",
en: "en-US",
pt: "pt-BR",
tw: "zh-TW",
jp: "ja-JP",
ko: "ko-KR",
id: "id-ID",
fr: "fr-FR",
es: "es-ES",
it: "it-IT",
tr: "tr-TR",
de: "de-DE",
vi: "vi-VN",
ru: "ru-RU",
cs: "cs-CZ",
no: "no-NO",
ar: "ar-SA",
bn: "bn-BD",
sk: "sk-SK",
cn: 'zh-CN',
en: 'en-US',
pt: 'pt-BR',
tw: 'zh-TW',
jp: 'ja-JP',
ko: 'ko-KR',
id: 'id-ID',
fr: 'fr-FR',
es: 'es-ES',
it: 'it-IT',
tr: 'tr-TR',
de: 'de-DE',
vi: 'vi-VN',
ru: 'ru-RU',
cs: 'cs-CZ',
no: 'no-NO',
ar: 'ar-SA',
bn: 'bn-BD',
sk: 'sk-SK',
};
export function getSTTLang(): string {

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import type { PartialLocaleType } from "./index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from './index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const it: PartialLocaleType = {
WIP: "Work in progress...",
WIP: 'Work in progress...',
Error: {
Unauthorized: isApp
? `😆 La conversazione ha incontrato alcuni problemi, non preoccuparti:
@@ -18,17 +19,17 @@ const it: PartialLocaleType = {
`,
},
Auth: {
Title: "Password richiesta",
Tips: "L'amministratore ha abilitato la verifica della password. Inserisci il codice di accesso qui sotto",
SubTips: "O inserisci la tua chiave API OpenAI o Google",
Input: "Inserisci il codice di accesso qui",
Confirm: "Conferma",
Later: "Più tardi",
Return: "Ritorna",
Title: 'Password richiesta',
Tips: 'L\'amministratore ha abilitato la verifica della password. Inserisci il codice di accesso qui sotto',
SubTips: 'O inserisci la tua chiave API OpenAI o Google',
Input: 'Inserisci il codice di accesso qui',
Confirm: 'Conferma',
Later: 'Più tardi',
Return: 'Ritorna',
SaasTips:
"La configurazione è troppo complicata, voglio usarlo immediatamente",
'La configurazione è troppo complicata, voglio usarlo immediatamente',
TopTips:
"🥳 Offerta di lancio NextChat AI, sblocca OpenAI o1, GPT-4o, Claude-3.5 e i più recenti modelli di grandi dimensioni",
'🥳 Offerta di lancio NextChat AI, sblocca OpenAI o1, GPT-4o, Claude-3.5 e i più recenti modelli di grandi dimensioni',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} conversazioni`,
@@ -36,572 +37,572 @@ const it: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `Totale ${count} conversazioni`,
EditMessage: {
Title: "Modifica cronologia messaggi",
Title: 'Modifica cronologia messaggi',
Topic: {
Title: "Argomento della chat",
SubTitle: "Modifica l'argomento della chat corrente",
Title: 'Argomento della chat',
SubTitle: 'Modifica l\'argomento della chat corrente',
},
},
Actions: {
ChatList: "Visualizza l'elenco dei messaggi",
CompressedHistory: "Visualizza la cronologia Prompt compressa",
Export: "Esporta la cronologia chat",
Copy: "Copia",
Stop: "Interrompi",
Retry: "Riprova",
Pin: "Fissa",
PinToastContent: "1 conversazione fissata ai suggerimenti predefiniti",
PinToastAction: "Visualizza",
Delete: "Elimina",
Edit: "Modifica",
RefreshTitle: "Aggiorna titolo",
RefreshToast: "Richiesta di aggiornamento del titolo inviata",
ChatList: 'Visualizza l\'elenco dei messaggi',
CompressedHistory: 'Visualizza la cronologia Prompt compressa',
Export: 'Esporta la cronologia chat',
Copy: 'Copia',
Stop: 'Interrompi',
Retry: 'Riprova',
Pin: 'Fissa',
PinToastContent: '1 conversazione fissata ai suggerimenti predefiniti',
PinToastAction: 'Visualizza',
Delete: 'Elimina',
Edit: 'Modifica',
RefreshTitle: 'Aggiorna titolo',
RefreshToast: 'Richiesta di aggiornamento del titolo inviata',
},
Commands: {
new: "Nuova chat",
newm: "Nuova chat da maschera",
next: "Chat successiva",
prev: "Chat precedente",
clear: "Pulisci contesto",
del: "Elimina chat",
new: 'Nuova chat',
newm: 'Nuova chat da maschera',
next: 'Chat successiva',
prev: 'Chat precedente',
clear: 'Pulisci contesto',
del: 'Elimina chat',
},
InputActions: {
Stop: "Interrompi risposta",
ToBottom: "Scorri fino al più recente",
Stop: 'Interrompi risposta',
ToBottom: 'Scorri fino al più recente',
Theme: {
auto: "Tema automatico",
light: "Tema chiaro",
dark: "Tema scuro",
auto: 'Tema automatico',
light: 'Tema chiaro',
dark: 'Tema scuro',
},
Prompt: "Comandi rapidi",
Masks: "Tutte le maschere",
Clear: "Pulisci chat",
Settings: "Impostazioni conversazione",
UploadImage: "Carica immagine",
Prompt: 'Comandi rapidi',
Masks: 'Tutte le maschere',
Clear: 'Pulisci chat',
Settings: 'Impostazioni conversazione',
UploadImage: 'Carica immagine',
},
Rename: "Rinomina conversazione",
Typing: "Digitazione in corso…",
Rename: 'Rinomina conversazione',
Typing: 'Digitazione in corso…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} per inviare`;
let inputHints = `${submitKey} per inviare`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "Shift + Enter per andare a capo";
inputHints += 'Shift + Enter per andare a capo';
}
return (
inputHints +
"/ per attivare il completamento automatico, : per attivare il comando"
`${inputHints
}/ per attivare il completamento automatico, : per attivare il comando`
);
},
Send: "Invia",
Send: 'Invia',
Config: {
Reset: "Pulisci memoria",
SaveAs: "Salva come maschera",
Reset: 'Pulisci memoria',
SaveAs: 'Salva come maschera',
},
IsContext: "Suggerimenti predefiniti",
IsContext: 'Suggerimenti predefiniti',
},
Export: {
Title: "Condividi cronologia chat",
Copy: "Copia tutto",
Download: "Scarica file",
Share: "Condividi su ShareGPT",
MessageFromYou: "Utente",
MessageFromChatGPT: "ChatGPT",
Title: 'Condividi cronologia chat',
Copy: 'Copia tutto',
Download: 'Scarica file',
Share: 'Condividi su ShareGPT',
MessageFromYou: 'Utente',
MessageFromChatGPT: 'ChatGPT',
Format: {
Title: "Formato di esportazione",
SubTitle: "Puoi esportare come testo Markdown o immagine PNG",
Title: 'Formato di esportazione',
SubTitle: 'Puoi esportare come testo Markdown o immagine PNG',
},
IncludeContext: {
Title: "Includi contesto maschera",
SubTitle: "Mostrare il contesto della maschera nei messaggi",
Title: 'Includi contesto maschera',
SubTitle: 'Mostrare il contesto della maschera nei messaggi',
},
Steps: {
Select: "Seleziona",
Preview: "Anteprima",
Select: 'Seleziona',
Preview: 'Anteprima',
},
Image: {
Toast: "Generazione dello screenshot in corso",
Toast: 'Generazione dello screenshot in corso',
Modal:
"Tieni premuto o fai clic con il tasto destro per salvare l'immagine",
'Tieni premuto o fai clic con il tasto destro per salvare l\'immagine',
},
},
Select: {
Search: "Cerca messaggi",
All: "Seleziona tutto",
Latest: "Ultimi messaggi",
Clear: "Pulisci selezione",
Search: 'Cerca messaggi',
All: 'Seleziona tutto',
Latest: 'Ultimi messaggi',
Clear: 'Pulisci selezione',
},
Memory: {
Title: "Riassunto storico",
Title: 'Riassunto storico',
EmptyContent:
"Il contenuto della conversazione è troppo breve, nessun riassunto necessario",
Send: "Comprimi automaticamente la cronologia chat e inviala come contesto",
Copy: "Copia riassunto",
Reset: "[unused]",
ResetConfirm: "Confermi la cancellazione del riassunto storico?",
'Il contenuto della conversazione è troppo breve, nessun riassunto necessario',
Send: 'Comprimi automaticamente la cronologia chat e inviala come contesto',
Copy: 'Copia riassunto',
Reset: '[unused]',
ResetConfirm: 'Confermi la cancellazione del riassunto storico?',
},
Home: {
NewChat: "Nuova chat",
DeleteChat: "Confermi l'eliminazione della conversazione selezionata?",
DeleteToast: "Conversazione eliminata",
Revert: "Annulla",
NewChat: 'Nuova chat',
DeleteChat: 'Confermi l\'eliminazione della conversazione selezionata?',
DeleteToast: 'Conversazione eliminata',
Revert: 'Annulla',
},
Settings: {
Title: "Impostazioni",
SubTitle: "Tutte le opzioni di impostazione",
Title: 'Impostazioni',
SubTitle: 'Tutte le opzioni di impostazione',
Danger: {
Reset: {
Title: "Ripristina tutte le impostazioni",
SubTitle: "Ripristina tutte le opzioni ai valori predefiniti",
Action: "Ripristina subito",
Confirm: "Confermi il ripristino di tutte le impostazioni?",
Title: 'Ripristina tutte le impostazioni',
SubTitle: 'Ripristina tutte le opzioni ai valori predefiniti',
Action: 'Ripristina subito',
Confirm: 'Confermi il ripristino di tutte le impostazioni?',
},
Clear: {
Title: "Elimina tutti i dati",
SubTitle: "Elimina tutte le chat e i dati delle impostazioni",
Action: "Elimina subito",
Title: 'Elimina tutti i dati',
SubTitle: 'Elimina tutte le chat e i dati delle impostazioni',
Action: 'Elimina subito',
Confirm:
"Confermi l'eliminazione di tutte le chat e dei dati delle impostazioni?",
'Confermi l\'eliminazione di tutte le chat e dei dati delle impostazioni?',
},
},
Lang: {
Name: "Language", // ATTENZIONE: se vuoi aggiungere una nuova traduzione, non tradurre questo valore, lascialo come `Language`
All: "Tutte le lingue",
Name: 'Language', // ATTENZIONE: se vuoi aggiungere una nuova traduzione, non tradurre questo valore, lascialo come `Language`
All: 'Tutte le lingue',
},
Avatar: "Avatar",
Avatar: 'Avatar',
FontSize: {
Title: "Dimensione del carattere",
SubTitle: "Dimensione del carattere per il contenuto della chat",
Title: 'Dimensione del carattere',
SubTitle: 'Dimensione del carattere per il contenuto della chat',
},
FontFamily: {
Title: "Font della Chat",
Title: 'Font della Chat',
SubTitle:
"Carattere del contenuto della chat, lascia vuoto per applicare il carattere predefinito globale",
Placeholder: "Nome del Font",
'Carattere del contenuto della chat, lascia vuoto per applicare il carattere predefinito globale',
Placeholder: 'Nome del Font',
},
InjectSystemPrompts: {
Title: "Inserisci suggerimenti di sistema",
Title: 'Inserisci suggerimenti di sistema',
SubTitle:
"Aggiungi forzatamente un suggerimento di sistema simulato di ChatGPT all'inizio della lista dei messaggi per ogni richiesta",
'Aggiungi forzatamente un suggerimento di sistema simulato di ChatGPT all\'inizio della lista dei messaggi per ogni richiesta',
},
InputTemplate: {
Title: "Preprocessing dell'input utente",
Title: 'Preprocessing dell\'input utente',
SubTitle:
"L'ultimo messaggio dell'utente verrà inserito in questo modello",
'L\'ultimo messaggio dell\'utente verrà inserito in questo modello',
},
Update: {
Version: (x: string) => `Versione attuale: ${x}`,
IsLatest: "È l'ultima versione",
CheckUpdate: "Controlla aggiornamenti",
IsChecking: "Verifica aggiornamenti in corso...",
IsLatest: 'È l\'ultima versione',
CheckUpdate: 'Controlla aggiornamenti',
IsChecking: 'Verifica aggiornamenti in corso...',
FoundUpdate: (x: string) => `Nuova versione trovata: ${x}`,
GoToUpdate: "Vai all'aggiornamento",
GoToUpdate: 'Vai all\'aggiornamento',
},
SendKey: "Tasto di invio",
Theme: "Tema",
TightBorder: "Modalità senza bordi",
SendKey: 'Tasto di invio',
Theme: 'Tema',
TightBorder: 'Modalità senza bordi',
SendPreviewBubble: {
Title: "Bolla di anteprima",
SubTitle: "Anteprima del contenuto Markdown nella bolla di anteprima",
Title: 'Bolla di anteprima',
SubTitle: 'Anteprima del contenuto Markdown nella bolla di anteprima',
},
AutoGenerateTitle: {
Title: "Generazione automatica del titolo",
Title: 'Generazione automatica del titolo',
SubTitle:
"Genera un titolo appropriato in base al contenuto della conversazione",
'Genera un titolo appropriato in base al contenuto della conversazione',
},
Sync: {
CloudState: "Dati cloud",
NotSyncYet: "Non è ancora avvenuta alcuna sincronizzazione",
Success: "Sincronizzazione riuscita",
Fail: "Sincronizzazione fallita",
CloudState: 'Dati cloud',
NotSyncYet: 'Non è ancora avvenuta alcuna sincronizzazione',
Success: 'Sincronizzazione riuscita',
Fail: 'Sincronizzazione fallita',
Config: {
Modal: {
Title: "Configura sincronizzazione cloud",
Check: "Controlla disponibilità",
Title: 'Configura sincronizzazione cloud',
Check: 'Controlla disponibilità',
},
SyncType: {
Title: "Tipo di sincronizzazione",
SubTitle: "Scegli il server di sincronizzazione preferito",
Title: 'Tipo di sincronizzazione',
SubTitle: 'Scegli il server di sincronizzazione preferito',
},
Proxy: {
Title: "Abilita proxy",
Title: 'Abilita proxy',
SubTitle:
"Durante la sincronizzazione nel browser, è necessario abilitare il proxy per evitare restrizioni CORS",
'Durante la sincronizzazione nel browser, è necessario abilitare il proxy per evitare restrizioni CORS',
},
ProxyUrl: {
Title: "Indirizzo proxy",
SubTitle: "Solo per il proxy CORS fornito con questo progetto",
Title: 'Indirizzo proxy',
SubTitle: 'Solo per il proxy CORS fornito con questo progetto',
},
WebDav: {
Endpoint: "Indirizzo WebDAV",
UserName: "Nome utente",
Password: "Password",
Endpoint: 'Indirizzo WebDAV',
UserName: 'Nome utente',
Password: 'Password',
},
UpStash: {
Endpoint: "URL REST di UpStash Redis",
UserName: "Nome di backup",
Password: "Token REST di UpStash Redis",
Endpoint: 'URL REST di UpStash Redis',
UserName: 'Nome di backup',
Password: 'Token REST di UpStash Redis',
},
},
LocalState: "Dati locali",
LocalState: 'Dati locali',
Overview: (overview: any) => {
return `${overview.chat} chat, ${overview.message} messaggi, ${overview.prompt} suggerimenti, ${overview.mask} maschere`;
},
ImportFailed: "Importazione fallita",
ImportFailed: 'Importazione fallita',
},
Mask: {
Splash: {
Title: "Pagina di avvio delle maschere",
Title: 'Pagina di avvio delle maschere',
SubTitle:
"Mostra la pagina di avvio delle maschere quando si avvia una nuova chat",
'Mostra la pagina di avvio delle maschere quando si avvia una nuova chat',
},
Builtin: {
Title: "Nascondi maschere predefinite",
Title: 'Nascondi maschere predefinite',
SubTitle:
"Nascondi le maschere predefinite in tutte le liste delle maschere",
'Nascondi le maschere predefinite in tutte le liste delle maschere',
},
},
Prompt: {
Disable: {
Title: "Disabilita completamento automatico dei suggerimenti",
Title: 'Disabilita completamento automatico dei suggerimenti',
SubTitle:
"Inserisci / all'inizio della casella di input per attivare il completamento automatico",
'Inserisci / all\'inizio della casella di input per attivare il completamento automatico',
},
List: "Elenco dei suggerimenti personalizzati",
List: 'Elenco dei suggerimenti personalizzati',
ListCount: (builtin: number, custom: number) =>
`${builtin} predefiniti, ${custom} definiti dall'utente`,
Edit: "Modifica",
Edit: 'Modifica',
Modal: {
Title: "Elenco dei suggerimenti",
Add: "Nuovo",
Search: "Cerca suggerimenti",
Title: 'Elenco dei suggerimenti',
Add: 'Nuovo',
Search: 'Cerca suggerimenti',
},
EditModal: {
Title: "Modifica suggerimenti",
Title: 'Modifica suggerimenti',
},
},
HistoryCount: {
Title: "Numero di messaggi storici inclusi",
SubTitle: "Numero di messaggi storici inclusi in ogni richiesta",
Title: 'Numero di messaggi storici inclusi',
SubTitle: 'Numero di messaggi storici inclusi in ogni richiesta',
},
CompressThreshold: {
Title: "Soglia di compressione dei messaggi storici",
Title: 'Soglia di compressione dei messaggi storici',
SubTitle:
"Quando i messaggi storici non compressi superano questo valore, verranno compressi",
'Quando i messaggi storici non compressi superano questo valore, verranno compressi',
},
Usage: {
Title: "Verifica saldo",
Title: 'Verifica saldo',
SubTitle(used: any, total: any) {
return `Utilizzato questo mese $${used}, totale abbonamento $${total}`;
},
IsChecking: "Verifica in corso…",
Check: "Verifica di nuovo",
IsChecking: 'Verifica in corso…',
Check: 'Verifica di nuovo',
NoAccess:
"Inserisci API Key o password di accesso per visualizzare il saldo",
'Inserisci API Key o password di accesso per visualizzare il saldo',
},
Access: {
SaasStart: {
Title: "Usa NextChat AI",
Label: "(La soluzione più conveniente)",
Title: 'Usa NextChat AI',
Label: '(La soluzione più conveniente)',
SubTitle:
"Mantenuto ufficialmente da NextChat, pronto all'uso senza configurazione, supporta i modelli più recenti come OpenAI o1, GPT-4o e Claude-3.5",
ChatNow: "Chatta ora",
'Mantenuto ufficialmente da NextChat, pronto all\'uso senza configurazione, supporta i modelli più recenti come OpenAI o1, GPT-4o e Claude-3.5',
ChatNow: 'Chatta ora',
},
AccessCode: {
Title: "Password di accesso",
SubTitle: "L'amministratore ha abilitato l'accesso criptato",
Placeholder: "Inserisci la password di accesso",
Title: 'Password di accesso',
SubTitle: 'L\'amministratore ha abilitato l\'accesso criptato',
Placeholder: 'Inserisci la password di accesso',
},
CustomEndpoint: {
Title: "Interfaccia personalizzata",
SubTitle: "Utilizzare servizi Azure o OpenAI personalizzati",
Title: 'Interfaccia personalizzata',
SubTitle: 'Utilizzare servizi Azure o OpenAI personalizzati',
},
Provider: {
Title: "Fornitore del modello",
SubTitle: "Cambia fornitore di servizi",
Title: 'Fornitore del modello',
SubTitle: 'Cambia fornitore di servizi',
},
OpenAI: {
ApiKey: {
Title: "API Key",
Title: 'API Key',
SubTitle:
"Utilizza una chiave OpenAI personalizzata per bypassare le limitazioni di accesso",
Placeholder: "API Key OpenAI",
'Utilizza una chiave OpenAI personalizzata per bypassare le limitazioni di accesso',
Placeholder: 'API Key OpenAI',
},
Endpoint: {
Title: "Indirizzo dell'interfaccia",
SubTitle: "Deve includere http(s):// oltre all'indirizzo predefinito",
Title: 'Indirizzo dell\'interfaccia',
SubTitle: 'Deve includere http(s):// oltre all\'indirizzo predefinito',
},
},
Azure: {
ApiKey: {
Title: "Chiave dell'interfaccia",
Title: 'Chiave dell\'interfaccia',
SubTitle:
"Utilizza una chiave Azure personalizzata per bypassare le limitazioni di accesso",
Placeholder: "Chiave API Azure",
'Utilizza una chiave Azure personalizzata per bypassare le limitazioni di accesso',
Placeholder: 'Chiave API Azure',
},
Endpoint: {
Title: "Indirizzo dell'interfaccia",
SubTitle: "Esempio:",
Title: 'Indirizzo dell\'interfaccia',
SubTitle: 'Esempio:',
},
ApiVerion: {
Title: "Versione dell'interfaccia (versione api azure)",
SubTitle: "Scegli una versione specifica",
Title: 'Versione dell\'interfaccia (versione api azure)',
SubTitle: 'Scegli una versione specifica',
},
},
Anthropic: {
ApiKey: {
Title: "Chiave dell'interfaccia",
Title: 'Chiave dell\'interfaccia',
SubTitle:
"Utilizza una chiave Anthropic personalizzata per bypassare le limitazioni di accesso",
Placeholder: "API Key Anthropic",
'Utilizza una chiave Anthropic personalizzata per bypassare le limitazioni di accesso',
Placeholder: 'API Key Anthropic',
},
Endpoint: {
Title: "Indirizzo dell'interfaccia",
SubTitle: "Esempio:",
Title: 'Indirizzo dell\'interfaccia',
SubTitle: 'Esempio:',
},
ApiVerion: {
Title: "Versione dell'interfaccia (versione api claude)",
SubTitle: "Scegli una versione API specifica",
Title: 'Versione dell\'interfaccia (versione api claude)',
SubTitle: 'Scegli una versione API specifica',
},
},
Google: {
ApiKey: {
Title: "API Key",
SubTitle: "Ottieni la tua chiave API da Google AI",
Placeholder: "Inserisci la tua chiave API Google AI Studio",
Title: 'API Key',
SubTitle: 'Ottieni la tua chiave API da Google AI',
Placeholder: 'Inserisci la tua chiave API Google AI Studio',
},
Endpoint: {
Title: "Indirizzo dell'interfaccia",
SubTitle: "Esempio:",
Title: 'Indirizzo dell\'interfaccia',
SubTitle: 'Esempio:',
},
ApiVersion: {
Title: "Versione API (solo per gemini-pro)",
SubTitle: "Scegli una versione API specifica",
Title: 'Versione API (solo per gemini-pro)',
SubTitle: 'Scegli una versione API specifica',
},
GoogleSafetySettings: {
Title: "Livello di filtraggio sicurezza Google",
SubTitle: "Imposta il livello di filtraggio dei contenuti",
Title: 'Livello di filtraggio sicurezza Google',
SubTitle: 'Imposta il livello di filtraggio dei contenuti',
},
},
Baidu: {
ApiKey: {
Title: "API Key",
SubTitle: "Utilizza una chiave API Baidu personalizzata",
Placeholder: "API Key Baidu",
Title: 'API Key',
SubTitle: 'Utilizza una chiave API Baidu personalizzata',
Placeholder: 'API Key Baidu',
},
SecretKey: {
Title: "Secret Key",
SubTitle: "Utilizza una chiave segreta Baidu personalizzata",
Placeholder: "Secret Key Baidu",
Title: 'Secret Key',
SubTitle: 'Utilizza una chiave segreta Baidu personalizzata',
Placeholder: 'Secret Key Baidu',
},
Endpoint: {
Title: "Indirizzo dell'interfaccia",
Title: 'Indirizzo dell\'interfaccia',
SubTitle:
"Non supporta configurazioni personalizzate, andare su .env",
'Non supporta configurazioni personalizzate, andare su .env',
},
},
ByteDance: {
ApiKey: {
Title: "Chiave dell'interfaccia",
SubTitle: "Utilizza una chiave API ByteDance personalizzata",
Placeholder: "API Key ByteDance",
Title: 'Chiave dell\'interfaccia',
SubTitle: 'Utilizza una chiave API ByteDance personalizzata',
Placeholder: 'API Key ByteDance',
},
Endpoint: {
Title: "Indirizzo dell'interfaccia",
SubTitle: "Esempio:",
Title: 'Indirizzo dell\'interfaccia',
SubTitle: 'Esempio:',
},
},
Alibaba: {
ApiKey: {
Title: "Chiave dell'interfaccia",
SubTitle: "Utilizza una chiave API Alibaba Cloud personalizzata",
Placeholder: "API Key Alibaba Cloud",
Title: 'Chiave dell\'interfaccia',
SubTitle: 'Utilizza una chiave API Alibaba Cloud personalizzata',
Placeholder: 'API Key Alibaba Cloud',
},
Endpoint: {
Title: "Indirizzo dell'interfaccia",
SubTitle: "Esempio:",
Title: 'Indirizzo dell\'interfaccia',
SubTitle: 'Esempio:',
},
},
CustomModel: {
Title: "Nome del modello personalizzato",
Title: 'Nome del modello personalizzato',
SubTitle:
"Aggiungi opzioni di modelli personalizzati, separati da virgole",
'Aggiungi opzioni di modelli personalizzati, separati da virgole',
},
},
Model: "Modello (model)",
Model: 'Modello (model)',
CompressModel: {
Title: "Modello di compressione",
SubTitle: "Modello utilizzato per comprimere la cronologia",
Title: 'Modello di compressione',
SubTitle: 'Modello utilizzato per comprimere la cronologia',
},
Temperature: {
Title: "Casualità (temperature)",
SubTitle: "Valore più alto, risposte più casuali",
Title: 'Casualità (temperature)',
SubTitle: 'Valore più alto, risposte più casuali',
},
TopP: {
Title: "Campionamento nucleare (top_p)",
Title: 'Campionamento nucleare (top_p)',
SubTitle:
"Simile alla casualità, ma non cambiarlo insieme alla casualità",
'Simile alla casualità, ma non cambiarlo insieme alla casualità',
},
MaxTokens: {
Title: "Limite di token per risposta (max_tokens)",
SubTitle: "Numero massimo di token per ogni interazione",
Title: 'Limite di token per risposta (max_tokens)',
SubTitle: 'Numero massimo di token per ogni interazione',
},
PresencePenalty: {
Title: "Novità del tema (presence_penalty)",
Title: 'Novità del tema (presence_penalty)',
SubTitle:
"Valore più alto, maggiore possibilità di espandere a nuovi argomenti",
'Valore più alto, maggiore possibilità di espandere a nuovi argomenti',
},
FrequencyPenalty: {
Title: "Penalità di frequenza (frequency_penalty)",
Title: 'Penalità di frequenza (frequency_penalty)',
SubTitle:
"Valore più alto, maggiore possibilità di ridurre le ripetizioni",
'Valore più alto, maggiore possibilità di ridurre le ripetizioni',
},
},
Store: {
DefaultTopic: "Nuova chat",
BotHello: "Come posso aiutarti?",
Error: "Si è verificato un errore, riprova più tardi",
DefaultTopic: 'Nuova chat',
BotHello: 'Come posso aiutarti?',
Error: 'Si è verificato un errore, riprova più tardi',
Prompt: {
History: (content: string) =>
"Questo è un riassunto della chat storica come contesto: " + content,
`Questo è un riassunto della chat storica come contesto: ${content}`,
Topic:
"Riporta il tema di questa frase in modo conciso con quattro o cinque parole, senza spiegazioni, punteggiatura, interiezioni, testo superfluo e senza grassetto. Se non c'è un tema, rispondi direttamente con 'chit-chat'",
'Riporta il tema di questa frase in modo conciso con quattro o cinque parole, senza spiegazioni, punteggiatura, interiezioni, testo superfluo e senza grassetto. Se non c\'è un tema, rispondi direttamente con \'chit-chat\'',
Summarize:
"Riassumi brevemente il contenuto della conversazione come prompt di contesto per il seguito, mantenendolo entro 200 parole",
'Riassumi brevemente il contenuto della conversazione come prompt di contesto per il seguito, mantenendolo entro 200 parole',
},
},
Copy: {
Success: "Copiato negli appunti",
Failed: "Copia fallita, concedi i permessi per gli appunti",
Success: 'Copiato negli appunti',
Failed: 'Copia fallita, concedi i permessi per gli appunti',
},
Download: {
Success: "Contenuto scaricato nella tua directory.",
Failed: "Download fallito.",
Success: 'Contenuto scaricato nella tua directory.',
Failed: 'Download fallito.',
},
Context: {
Toast: (x: any) => `Include ${x} suggerimenti predefiniti`,
Edit: "Impostazioni della conversazione attuale",
Add: "Aggiungi una conversazione",
Clear: "Contesto cancellato",
Revert: "Ripristina contesto",
Edit: 'Impostazioni della conversazione attuale',
Add: 'Aggiungi una conversazione',
Clear: 'Contesto cancellato',
Revert: 'Ripristina contesto',
},
Plugin: {
Name: "Plugin",
Name: 'Plugin',
},
FineTuned: {
Sysmessage: "Sei un assistente",
Sysmessage: 'Sei un assistente',
},
SearchChat: {
Name: "Cerca",
Name: 'Cerca',
Page: {
Title: "Cerca nei messaggi",
Search: "Inserisci parole chiave per la ricerca",
NoResult: "Nessun risultato trovato",
NoData: "Nessun dato",
Loading: "Caricamento in corso",
Title: 'Cerca nei messaggi',
Search: 'Inserisci parole chiave per la ricerca',
NoResult: 'Nessun risultato trovato',
NoData: 'Nessun dato',
Loading: 'Caricamento in corso',
SubTitle: (count: number) => `Trovati ${count} risultati`,
},
Item: {
View: "Visualizza",
View: 'Visualizza',
},
},
Mask: {
Name: "Maschera",
Name: 'Maschera',
Page: {
Title: "Maschere dei ruoli predefiniti",
Title: 'Maschere dei ruoli predefiniti',
SubTitle: (count: number) => `${count} definizioni di ruoli predefiniti`,
Search: "Cerca maschere di ruolo",
Create: "Crea nuovo",
Search: 'Cerca maschere di ruolo',
Create: 'Crea nuovo',
},
Item: {
Info: (count: number) => `Include ${count} conversazioni predefinite`,
Chat: "Conversazione",
View: "Visualizza",
Edit: "Modifica",
Delete: "Elimina",
DeleteConfirm: "Confermi eliminazione?",
Chat: 'Conversazione',
View: 'Visualizza',
Edit: 'Modifica',
Delete: 'Elimina',
DeleteConfirm: 'Confermi eliminazione?',
},
EditModal: {
Title: (readonly: boolean) =>
`Modifica maschera predefinita ${readonly ? "(sola lettura)" : ""}`,
Download: "Scarica predefinito",
Clone: "Clona predefinito",
`Modifica maschera predefinita ${readonly ? '(sola lettura)' : ''}`,
Download: 'Scarica predefinito',
Clone: 'Clona predefinito',
},
Config: {
Avatar: "Avatar del ruolo",
Name: "Nome del ruolo",
Avatar: 'Avatar del ruolo',
Name: 'Nome del ruolo',
Sync: {
Title: "Utilizza impostazioni globali",
Title: 'Utilizza impostazioni globali',
SubTitle:
"La conversazione attuale utilizzerà le impostazioni globali del modello",
'La conversazione attuale utilizzerà le impostazioni globali del modello',
Confirm:
"Le impostazioni personalizzate della conversazione attuale verranno sovrascritte automaticamente, confermi l'attivazione delle impostazioni globali?",
'Le impostazioni personalizzate della conversazione attuale verranno sovrascritte automaticamente, confermi l\'attivazione delle impostazioni globali?',
},
HideContext: {
Title: "Nascondi conversazioni predefinite",
Title: 'Nascondi conversazioni predefinite',
SubTitle:
"Le conversazioni predefinite non appariranno nella finestra della chat dopo averle nascoste",
'Le conversazioni predefinite non appariranno nella finestra della chat dopo averle nascoste',
},
Share: {
Title: "Condividi questa maschera",
SubTitle: "Genera un link diretto a questa maschera",
Action: "Copia link",
Title: 'Condividi questa maschera',
SubTitle: 'Genera un link diretto a questa maschera',
Action: 'Copia link',
},
},
},
NewChat: {
Return: "Torna",
Skip: "Inizia subito",
NotShow: "Non mostrare più",
Return: 'Torna',
Skip: 'Inizia subito',
NotShow: 'Non mostrare più',
ConfirmNoShow:
"Confermi di disabilitare? Dopo la disabilitazione, puoi riattivare in qualsiasi momento dalle impostazioni.",
Title: "Scegli una maschera",
SubTitle: "Inizia ora e interagisci con il pensiero dietro la maschera",
More: "Vedi tutto",
'Confermi di disabilitare? Dopo la disabilitazione, puoi riattivare in qualsiasi momento dalle impostazioni.',
Title: 'Scegli una maschera',
SubTitle: 'Inizia ora e interagisci con il pensiero dietro la maschera',
More: 'Vedi tutto',
},
URLCommand: {
Code: "Codice di accesso rilevato nel link, riempirlo automaticamente?",
Code: 'Codice di accesso rilevato nel link, riempirlo automaticamente?',
Settings:
"Impostazioni predefinite rilevate nel link, riempirle automaticamente?",
'Impostazioni predefinite rilevate nel link, riempirle automaticamente?',
},
UI: {
Confirm: "Conferma",
Cancel: "Annulla",
Close: "Chiudi",
Create: "Crea",
Edit: "Modifica",
Export: "Esporta",
Import: "Importa",
Sync: "Sincronizza",
Config: "Configura",
Confirm: 'Conferma',
Cancel: 'Annulla',
Close: 'Chiudi',
Create: 'Crea',
Edit: 'Modifica',
Export: 'Esporta',
Import: 'Importa',
Sync: 'Sincronizza',
Config: 'Configura',
},
Exporter: {
Description: {
Title:
"Solo i messaggi dopo la cancellazione del contesto verranno visualizzati",
'Solo i messaggi dopo la cancellazione del contesto verranno visualizzati',
},
Model: "Modello",
Messages: "Messaggi",
Topic: "Tema",
Time: "Tempo",
Model: 'Modello',
Messages: 'Messaggi',
Topic: 'Tema',
Time: 'Tempo',
},
};

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import type { PartialLocaleType } from "./index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from './index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const jp: PartialLocaleType = {
WIP: "この機能は開発中です",
WIP: 'この機能は開発中です',
Error: {
Unauthorized: isApp
? `😆 会話中に問題が発生しましたが、心配しないでください:
@@ -18,16 +19,16 @@ const jp: PartialLocaleType = {
`,
},
Auth: {
Title: "パスワードが必要です",
Tips: "管理者がパスワード認証を有効にしました。以下にアクセスコードを入力してください",
SubTips: "または、OpenAIまたはGoogle APIキーを入力してください",
Input: "ここにアクセスコードを入力",
Confirm: "確認",
Later: "後で",
Return: "戻る",
SaasTips: "設定が面倒すぎる、すぐに使いたい",
Title: 'パスワードが必要です',
Tips: '管理者がパスワード認証を有効にしました。以下にアクセスコードを入力してください',
SubTips: 'または、OpenAIまたはGoogle APIキーを入力してください',
Input: 'ここにアクセスコードを入力',
Confirm: '確認',
Later: '後で',
Return: '戻る',
SaasTips: '設定が面倒すぎる、すぐに使いたい',
TopTips:
"🥳 NextChat AIの発売特典で、OpenAI o1、GPT-4o、Claude-3.5などの最新の大規模モデルを今すぐアンロック",
'🥳 NextChat AIの発売特典で、OpenAI o1、GPT-4o、Claude-3.5などの最新の大規模モデルを今すぐアンロック',
},
ChatItem: {
ChatItemCount: (count: number) => `${count}件の会話`,
@@ -35,555 +36,555 @@ const jp: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `合計${count}件の会話`,
EditMessage: {
Title: "メッセージ履歴を編集",
Title: 'メッセージ履歴を編集',
Topic: {
Title: "チャットテーマ",
SubTitle: "現在のチャットテーマを変更",
Title: 'チャットテーマ',
SubTitle: '現在のチャットテーマを変更',
},
},
Actions: {
ChatList: "メッセージリストを見る",
CompressedHistory: "圧縮された履歴プロンプトを見る",
Export: "チャット履歴をエクスポート",
Copy: "コピー",
Stop: "停止",
Retry: "再試行",
Pin: "固定",
PinToastContent: "1件の会話をプリセットプロンプトに固定しました",
PinToastAction: "見る",
Delete: "削除",
Edit: "編集",
RefreshTitle: "タイトルを更新",
RefreshToast: "タイトル更新リクエストが送信されました",
ChatList: 'メッセージリストを見る',
CompressedHistory: '圧縮された履歴プロンプトを見る',
Export: 'チャット履歴をエクスポート',
Copy: 'コピー',
Stop: '停止',
Retry: '再試行',
Pin: '固定',
PinToastContent: '1件の会話をプリセットプロンプトに固定しました',
PinToastAction: '見る',
Delete: '削除',
Edit: '編集',
RefreshTitle: 'タイトルを更新',
RefreshToast: 'タイトル更新リクエストが送信されました',
},
Commands: {
new: "新しいチャット",
newm: "マスクから新しいチャット",
next: "次のチャット",
prev: "前のチャット",
clear: "コンテキストをクリア",
del: "チャットを削除",
new: '新しいチャット',
newm: 'マスクから新しいチャット',
next: '次のチャット',
prev: '前のチャット',
clear: 'コンテキストをクリア',
del: 'チャットを削除',
},
InputActions: {
Stop: "応答を停止",
ToBottom: "最新へスクロール",
Stop: '応答を停止',
ToBottom: '最新へスクロール',
Theme: {
auto: "自動テーマ",
light: "ライトモード",
dark: "ダークモード",
auto: '自動テーマ',
light: 'ライトモード',
dark: 'ダークモード',
},
Prompt: "クイックコマンド",
Masks: "すべてのマスク",
Clear: "チャットをクリア",
Settings: "チャット設定",
UploadImage: "画像をアップロード",
Prompt: 'クイックコマンド',
Masks: 'すべてのマスク',
Clear: 'チャットをクリア',
Settings: 'チャット設定',
UploadImage: '画像をアップロード',
},
Rename: "チャットの名前を変更",
Typing: "入力中…",
Rename: 'チャットの名前を変更',
Typing: '入力中…',
Input: (submitKey: string) => {
var inputHints = `${submitKey}で送信`;
let inputHints = `${submitKey}で送信`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "、Shift + Enterで改行";
inputHints += '、Shift + Enterで改行';
}
return inputHints + "、/で補完をトリガー、:でコマンドをトリガー";
return `${inputHints}、/で補完をトリガー、:でコマンドをトリガー`;
},
Send: "送信",
Send: '送信',
Config: {
Reset: "メモリをクリア",
SaveAs: "マスクとして保存",
Reset: 'メモリをクリア',
SaveAs: 'マスクとして保存',
},
IsContext: "プリセットプロンプト",
IsContext: 'プリセットプロンプト',
},
Export: {
Title: "チャット履歴を共有",
Copy: "すべてコピー",
Download: "ファイルをダウンロード",
Share: "ShareGPTに共有",
MessageFromYou: "ユーザー",
MessageFromChatGPT: "ChatGPT",
Title: 'チャット履歴を共有',
Copy: 'すべてコピー',
Download: 'ファイルをダウンロード',
Share: 'ShareGPTに共有',
MessageFromYou: 'ユーザー',
MessageFromChatGPT: 'ChatGPT',
Format: {
Title: "エクスポート形式",
SubTitle: "MarkdownテキストまたはPNG画像としてエクスポートできます",
Title: 'エクスポート形式',
SubTitle: 'MarkdownテキストまたはPNG画像としてエクスポートできます',
},
IncludeContext: {
Title: "マスクコンテキストを含む",
SubTitle: "メッセージにマスクコンテキストを表示するかどうか",
Title: 'マスクコンテキストを含む',
SubTitle: 'メッセージにマスクコンテキストを表示するかどうか',
},
Steps: {
Select: "選択",
Preview: "プレビュー",
Select: '選択',
Preview: 'プレビュー',
},
Image: {
Toast: "スクリーンショットを生成中",
Modal: "長押しまたは右クリックして画像を保存",
Toast: 'スクリーンショットを生成中',
Modal: '長押しまたは右クリックして画像を保存',
},
},
Select: {
Search: "メッセージを検索",
All: "すべて選択",
Latest: "最新の数件",
Clear: "選択をクリア",
Search: 'メッセージを検索',
All: 'すべて選択',
Latest: '最新の数件',
Clear: '選択をクリア',
},
Memory: {
Title: "履歴の要約",
EmptyContent: "対話内容が短いため、要約は不要です",
Send: "チャット履歴を自動的に圧縮し、コンテキストとして送信",
Copy: "要約をコピー",
Reset: "[unused]",
ResetConfirm: "履歴の要約をリセットしてもよろしいですか?",
Title: '履歴の要約',
EmptyContent: '対話内容が短いため、要約は不要です',
Send: 'チャット履歴を自動的に圧縮し、コンテキストとして送信',
Copy: '要約をコピー',
Reset: '[unused]',
ResetConfirm: '履歴の要約をリセットしてもよろしいですか?',
},
Home: {
NewChat: "新しいチャット",
DeleteChat: "選択した会話を削除してもよろしいですか?",
DeleteToast: "会話を削除しました",
Revert: "元に戻す",
NewChat: '新しいチャット',
DeleteChat: '選択した会話を削除してもよろしいですか?',
DeleteToast: '会話を削除しました',
Revert: '元に戻す',
},
Settings: {
Title: "設定",
SubTitle: "すべての設定オプション",
Title: '設定',
SubTitle: 'すべての設定オプション',
Danger: {
Reset: {
Title: "すべての設定をリセット",
SubTitle: "すべての設定項目をデフォルト値にリセット",
Action: "今すぐリセット",
Confirm: "すべての設定をリセットしてもよろしいですか?",
Title: 'すべての設定をリセット',
SubTitle: 'すべての設定項目をデフォルト値にリセット',
Action: '今すぐリセット',
Confirm: 'すべての設定をリセットしてもよろしいですか?',
},
Clear: {
Title: "すべてのデータをクリア",
SubTitle: "すべてのチャット、設定データをクリア",
Action: "今すぐクリア",
Confirm: "すべてのチャット、設定データをクリアしてもよろしいですか?",
Title: 'すべてのデータをクリア',
SubTitle: 'すべてのチャット、設定データをクリア',
Action: '今すぐクリア',
Confirm: 'すべてのチャット、設定データをクリアしてもよろしいですか?',
},
},
Lang: {
Name: "Language", // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
All: "すべての言語",
Name: 'Language', // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
All: 'すべての言語',
},
Avatar: "アバター",
Avatar: 'アバター',
FontSize: {
Title: "フォントサイズ",
SubTitle: "チャット内容のフォントサイズ",
Title: 'フォントサイズ',
SubTitle: 'チャット内容のフォントサイズ',
},
FontFamily: {
Title: "チャットフォント",
Title: 'チャットフォント',
SubTitle:
"チャットコンテンツのフォント、空白の場合はグローバルデフォルトフォントを適用します",
Placeholder: "フォント名",
'チャットコンテンツのフォント、空白の場合はグローバルデフォルトフォントを適用します',
Placeholder: 'フォント名',
},
InjectSystemPrompts: {
Title: "システムプロンプトの注入",
Title: 'システムプロンプトの注入',
SubTitle:
"すべてのリクエストメッセージリストの先頭にChatGPTのシステムプロンプトを強制的に追加",
'すべてのリクエストメッセージリストの先頭にChatGPTのシステムプロンプトを強制的に追加',
},
InputTemplate: {
Title: "ユーザー入力のプリプロセス",
SubTitle: "最新のメッセージをこのテンプレートに埋め込む",
Title: 'ユーザー入力のプリプロセス',
SubTitle: '最新のメッセージをこのテンプレートに埋め込む',
},
Update: {
Version: (x: string) => `現在のバージョン:${x}`,
IsLatest: "最新バージョンです",
CheckUpdate: "更新を確認",
IsChecking: "更新を確認中...",
IsLatest: '最新バージョンです',
CheckUpdate: '更新を確認',
IsChecking: '更新を確認中...',
FoundUpdate: (x: string) => `新しいバージョンを発見:${x}`,
GoToUpdate: "更新へ進む",
GoToUpdate: '更新へ進む',
},
SendKey: "送信キー",
Theme: "テーマ",
TightBorder: "ボーダーレスモード",
SendKey: '送信キー',
Theme: 'テーマ',
TightBorder: 'ボーダーレスモード',
SendPreviewBubble: {
Title: "プレビューバブル",
SubTitle: "プレビューバブルでMarkdownコンテンツをプレビュー",
Title: 'プレビューバブル',
SubTitle: 'プレビューバブルでMarkdownコンテンツをプレビュー',
},
AutoGenerateTitle: {
Title: "自動タイトル生成",
SubTitle: "チャット内容に基づいて適切なタイトルを生成",
Title: '自動タイトル生成',
SubTitle: 'チャット内容に基づいて適切なタイトルを生成',
},
Sync: {
CloudState: "クラウドデータ",
NotSyncYet: "まだ同期されていません",
Success: "同期に成功しました",
Fail: "同期に失敗しました",
CloudState: 'クラウドデータ',
NotSyncYet: 'まだ同期されていません',
Success: '同期に成功しました',
Fail: '同期に失敗しました',
Config: {
Modal: {
Title: "クラウド同期の設定",
Check: "可用性を確認",
Title: 'クラウド同期の設定',
Check: '可用性を確認',
},
SyncType: {
Title: "同期タイプ",
SubTitle: "好きな同期サーバーを選択",
Title: '同期タイプ',
SubTitle: '好きな同期サーバーを選択',
},
Proxy: {
Title: "プロキシを有効化",
Title: 'プロキシを有効化',
SubTitle:
"ブラウザで同期する場合、クロスオリジン制限を避けるためにプロキシを有効にする必要があります",
'ブラウザで同期する場合、クロスオリジン制限を避けるためにプロキシを有効にする必要があります',
},
ProxyUrl: {
Title: "プロキシURL",
SubTitle: "このプロジェクトに組み込まれたクロスオリジンプロキシ専用",
Title: 'プロキシURL',
SubTitle: 'このプロジェクトに組み込まれたクロスオリジンプロキシ専用',
},
WebDav: {
Endpoint: "WebDAV エンドポイント",
UserName: "ユーザー名",
Password: "パスワード",
Endpoint: 'WebDAV エンドポイント',
UserName: 'ユーザー名',
Password: 'パスワード',
},
UpStash: {
Endpoint: "UpStash Redis REST URL",
UserName: "バックアップ名",
Password: "UpStash Redis REST トークン",
Endpoint: 'UpStash Redis REST URL',
UserName: 'バックアップ名',
Password: 'UpStash Redis REST トークン',
},
},
LocalState: "ローカルデータ",
LocalState: 'ローカルデータ',
Overview: (overview: any) => {
return `${overview.chat} 回の対話、${overview.message} 件のメッセージ、${overview.prompt} 件のプロンプト、${overview.mask} 件のマスク`;
},
ImportFailed: "インポートに失敗しました",
ImportFailed: 'インポートに失敗しました',
},
Mask: {
Splash: {
Title: "マスク起動画面",
SubTitle: "新しいチャットを作成する際にマスク起動画面を表示",
Title: 'マスク起動画面',
SubTitle: '新しいチャットを作成する際にマスク起動画面を表示',
},
Builtin: {
Title: "内蔵マスクを非表示",
SubTitle: "すべてのマスクリストで内蔵マスクを非表示",
Title: '内蔵マスクを非表示',
SubTitle: 'すべてのマスクリストで内蔵マスクを非表示',
},
},
Prompt: {
Disable: {
Title: "プロンプトの自動補完を無効化",
SubTitle: "入力フィールドの先頭に / を入力して自動補完をトリガー",
Title: 'プロンプトの自動補完を無効化',
SubTitle: '入力フィールドの先頭に / を入力して自動補完をトリガー',
},
List: "カスタムプロンプトリスト",
List: 'カスタムプロンプトリスト',
ListCount: (builtin: number, custom: number) =>
`内蔵 ${builtin} 件、ユーザー定義 ${custom}`,
Edit: "編集",
Edit: '編集',
Modal: {
Title: "プロンプトリスト",
Add: "新規作成",
Search: "プロンプトを検索",
Title: 'プロンプトリスト',
Add: '新規作成',
Search: 'プロンプトを検索',
},
EditModal: {
Title: "プロンプトを編集",
Title: 'プロンプトを編集',
},
},
HistoryCount: {
Title: "履歴メッセージ数",
SubTitle: "各リクエストに含まれる履歴メッセージの数",
Title: '履歴メッセージ数',
SubTitle: '各リクエストに含まれる履歴メッセージの数',
},
CompressThreshold: {
Title: "履歴メッセージの圧縮閾値",
SubTitle: "未圧縮の履歴メッセージがこの値を超えた場合、圧縮が行われます",
Title: '履歴メッセージの圧縮閾値',
SubTitle: '未圧縮の履歴メッセージがこの値を超えた場合、圧縮が行われます',
},
Usage: {
Title: "残高確認",
Title: '残高確認',
SubTitle(used: any, total: any) {
return `今月の使用量 $${used}、サブスクリプション合計 $${total}`;
},
IsChecking: "確認中…",
Check: "再確認",
NoAccess: "APIキーまたはアクセスパスワードを入力して残高を確認",
IsChecking: '確認中…',
Check: '再確認',
NoAccess: 'APIキーまたはアクセスパスワードを入力して残高を確認',
},
Access: {
SaasStart: {
Title: "NextChat AIを使用する",
Label: "(コストパフォーマンスの最も高いソリューション)",
Title: 'NextChat AIを使用する',
Label: '(コストパフォーマンスの最も高いソリューション)',
SubTitle:
"NextChatによって公式に管理されており、設定なしですぐに使用でき、OpenAI o1、GPT-4o、Claude-3.5などの最新の大規模モデルをサポートしています",
ChatNow: "今すぐチャット",
'NextChatによって公式に管理されており、設定なしですぐに使用でき、OpenAI o1、GPT-4o、Claude-3.5などの最新の大規模モデルをサポートしています',
ChatNow: '今すぐチャット',
},
AccessCode: {
Title: "アクセスパスワード",
SubTitle: "管理者が暗号化アクセスを有効にしました",
Placeholder: "アクセスパスワードを入力してください",
Title: 'アクセスパスワード',
SubTitle: '管理者が暗号化アクセスを有効にしました',
Placeholder: 'アクセスパスワードを入力してください',
},
CustomEndpoint: {
Title: "カスタムエンドポイント",
SubTitle: "カスタムAzureまたはOpenAIサービスを使用するかどうか",
Title: 'カスタムエンドポイント',
SubTitle: 'カスタムAzureまたはOpenAIサービスを使用するかどうか',
},
Provider: {
Title: "モデルプロバイダー",
SubTitle: "異なるプロバイダーに切り替える",
Title: 'モデルプロバイダー',
SubTitle: '異なるプロバイダーに切り替える',
},
OpenAI: {
ApiKey: {
Title: "APIキー",
SubTitle: "カスタムOpenAIキーを使用してパスワードアクセス制限を回避",
Placeholder: "OpenAI APIキー",
Title: 'APIキー',
SubTitle: 'カスタムOpenAIキーを使用してパスワードアクセス制限を回避',
Placeholder: 'OpenAI APIキー',
},
Endpoint: {
Title: "エンドポイント",
Title: 'エンドポイント',
SubTitle:
"デフォルト以外のアドレスにはhttp(s)://を含める必要があります",
'デフォルト以外のアドレスにはhttp(s)://を含める必要があります',
},
},
Azure: {
ApiKey: {
Title: "APIキー",
SubTitle: "カスタムAzureキーを使用してパスワードアクセス制限を回避",
Placeholder: "Azure APIキー",
Title: 'APIキー',
SubTitle: 'カスタムAzureキーを使用してパスワードアクセス制限を回避',
Placeholder: 'Azure APIキー',
},
Endpoint: {
Title: "エンドポイント",
SubTitle: "例:",
Title: 'エンドポイント',
SubTitle: '例:',
},
ApiVerion: {
Title: "APIバージョン (azure api version)",
SubTitle: "特定のバージョンを選択",
Title: 'APIバージョン (azure api version)',
SubTitle: '特定のバージョンを選択',
},
},
Anthropic: {
ApiKey: {
Title: "APIキー",
Title: 'APIキー',
SubTitle:
"カスタムAnthropicキーを使用してパスワードアクセス制限を回避",
Placeholder: "Anthropic APIキー",
'カスタムAnthropicキーを使用してパスワードアクセス制限を回避',
Placeholder: 'Anthropic APIキー',
},
Endpoint: {
Title: "エンドポイント",
SubTitle: "例:",
Title: 'エンドポイント',
SubTitle: '例:',
},
ApiVerion: {
Title: "APIバージョン (claude api version)",
SubTitle: "特定のAPIバージョンを選択",
Title: 'APIバージョン (claude api version)',
SubTitle: '特定のAPIバージョンを選択',
},
},
Google: {
ApiKey: {
Title: "APIキー",
SubTitle: "Google AIからAPIキーを取得",
Placeholder: "Google AI Studio APIキーを入力",
Title: 'APIキー',
SubTitle: 'Google AIからAPIキーを取得',
Placeholder: 'Google AI Studio APIキーを入力',
},
Endpoint: {
Title: "エンドポイント",
SubTitle: "例:",
Title: 'エンドポイント',
SubTitle: '例:',
},
ApiVersion: {
Title: "APIバージョンgemini-pro専用",
SubTitle: "特定のAPIバージョンを選択",
Title: 'APIバージョンgemini-pro専用',
SubTitle: '特定のAPIバージョンを選択',
},
GoogleSafetySettings: {
Title: "Google セーフティ設定",
SubTitle: "コンテンツフィルタリングレベルを設定",
Title: 'Google セーフティ設定',
SubTitle: 'コンテンツフィルタリングレベルを設定',
},
},
Baidu: {
ApiKey: {
Title: "APIキー",
SubTitle: "カスタムBaidu APIキーを使用",
Placeholder: "Baidu APIキー",
Title: 'APIキー',
SubTitle: 'カスタムBaidu APIキーを使用',
Placeholder: 'Baidu APIキー',
},
SecretKey: {
Title: "シークレットキー",
SubTitle: "カスタムBaiduシークレットキーを使用",
Placeholder: "Baiduシークレットキー",
Title: 'シークレットキー',
SubTitle: 'カスタムBaiduシークレットキーを使用',
Placeholder: 'Baiduシークレットキー',
},
Endpoint: {
Title: "エンドポイント",
SubTitle: "カスタムはサポートしていません、.env設定に進んでください",
Title: 'エンドポイント',
SubTitle: 'カスタムはサポートしていません、.env設定に進んでください',
},
},
ByteDance: {
ApiKey: {
Title: "APIキー",
SubTitle: "カスタムByteDance APIキーを使用",
Placeholder: "ByteDance APIキー",
Title: 'APIキー',
SubTitle: 'カスタムByteDance APIキーを使用',
Placeholder: 'ByteDance APIキー',
},
Endpoint: {
Title: "エンドポイント",
SubTitle: "例:",
Title: 'エンドポイント',
SubTitle: '例:',
},
},
Alibaba: {
ApiKey: {
Title: "APIキー",
SubTitle: "カスタムAlibaba Cloud APIキーを使用",
Placeholder: "Alibaba Cloud APIキー",
Title: 'APIキー',
SubTitle: 'カスタムAlibaba Cloud APIキーを使用',
Placeholder: 'Alibaba Cloud APIキー',
},
Endpoint: {
Title: "エンドポイント",
SubTitle: "例:",
Title: 'エンドポイント',
SubTitle: '例:',
},
},
CustomModel: {
Title: "カスタムモデル名",
SubTitle: "カスタムモデルの選択肢を追加、英語のカンマで区切る",
Title: 'カスタムモデル名',
SubTitle: 'カスタムモデルの選択肢を追加、英語のカンマで区切る',
},
},
Model: "モデル (model)",
Model: 'モデル (model)',
CompressModel: {
Title: "圧縮モデル",
SubTitle: "履歴を圧縮するために使用されるモデル",
Title: '圧縮モデル',
SubTitle: '履歴を圧縮するために使用されるモデル',
},
Temperature: {
Title: "ランダム性 (temperature)",
SubTitle: "値が大きいほど応答がランダムになります",
Title: 'ランダム性 (temperature)',
SubTitle: '値が大きいほど応答がランダムになります',
},
TopP: {
Title: "トップP (top_p)",
Title: 'トップP (top_p)',
SubTitle:
"ランダム性に似ていますが、ランダム性と一緒に変更しないでください",
'ランダム性に似ていますが、ランダム性と一緒に変更しないでください',
},
MaxTokens: {
Title: "1回の応答制限 (max_tokens)",
SubTitle: "1回の対話で使用される最大トークン数",
Title: '1回の応答制限 (max_tokens)',
SubTitle: '1回の対話で使用される最大トークン数',
},
PresencePenalty: {
Title: "新鮮度 (presence_penalty)",
SubTitle: "値が大きいほど新しいトピックに移行する可能性が高くなります",
Title: '新鮮度 (presence_penalty)',
SubTitle: '値が大きいほど新しいトピックに移行する可能性が高くなります',
},
FrequencyPenalty: {
Title: "頻度ペナルティ (frequency_penalty)",
SubTitle: "値が大きいほど繰り返しの単語が減少します",
Title: '頻度ペナルティ (frequency_penalty)',
SubTitle: '値が大きいほど繰り返しの単語が減少します',
},
},
Store: {
DefaultTopic: "新しいチャット",
BotHello: "何かお手伝いできますか?",
Error: "エラーが発生しました。後でもう一度試してください",
DefaultTopic: '新しいチャット',
BotHello: '何かお手伝いできますか?',
Error: 'エラーが発生しました。後でもう一度試してください',
Prompt: {
History: (content: string) =>
"これは前提としての履歴チャットの要約です:" + content,
`これは前提としての履歴チャットの要約です:${content}`,
Topic:
"この文の簡潔なテーマを四から五文字で返してください。説明、句読点、感嘆詞、余計なテキストは不要です。太字も不要です。テーマがない場合は「雑談」と返してください",
'この文の簡潔なテーマを四から五文字で返してください。説明、句読点、感嘆詞、余計なテキストは不要です。太字も不要です。テーマがない場合は「雑談」と返してください',
Summarize:
"対話の内容を簡潔に要約し、後続のコンテキストプロンプトとして使用します。200文字以内に抑えてください",
'対話の内容を簡潔に要約し、後続のコンテキストプロンプトとして使用します。200文字以内に抑えてください',
},
},
Copy: {
Success: "クリップボードに書き込みました",
Failed: "コピーに失敗しました。クリップボードの権限を付与してください",
Success: 'クリップボードに書き込みました',
Failed: 'コピーに失敗しました。クリップボードの権限を付与してください',
},
Download: {
Success: "内容がダウンロードされました",
Failed: "ダウンロードに失敗しました",
Success: '内容がダウンロードされました',
Failed: 'ダウンロードに失敗しました',
},
Context: {
Toast: (x: any) => `${x} 件のプリセットプロンプトが含まれています`,
Edit: "現在の対話設定",
Add: "対話を追加",
Clear: "コンテキストがクリアされました",
Revert: "コンテキストを元に戻す",
Edit: '現在の対話設定',
Add: '対話を追加',
Clear: 'コンテキストがクリアされました',
Revert: 'コンテキストを元に戻す',
},
Plugin: {
Name: "プラグイン",
Name: 'プラグイン',
},
Discovery: {
Name: "発見",
Name: '発見',
},
FineTuned: {
Sysmessage: "あなたはアシスタントです",
Sysmessage: 'あなたはアシスタントです',
},
SearchChat: {
Name: "検索",
Name: '検索',
Page: {
Title: "チャット履歴を検索",
Search: "検索キーワードを入力",
NoResult: "結果が見つかりませんでした",
NoData: "データがありません",
Loading: "読み込み中",
Title: 'チャット履歴を検索',
Search: '検索キーワードを入力',
NoResult: '結果が見つかりませんでした',
NoData: 'データがありません',
Loading: '読み込み中',
SubTitle: (count: number) => `${count} 件の結果が見つかりました`,
},
Item: {
View: "表示",
View: '表示',
},
},
Mask: {
Name: "マスク",
Name: 'マスク',
Page: {
Title: "プリセットキャラクターマスク",
Title: 'プリセットキャラクターマスク',
SubTitle: (count: number) => `${count} 件のプリセットキャラクター定義`,
Search: "キャラクターマスクを検索",
Create: "新規作成",
Search: 'キャラクターマスクを検索',
Create: '新規作成',
},
Item: {
Info: (count: number) => `${count} 件のプリセット対話が含まれています`,
Chat: "対話",
View: "表示",
Edit: "編集",
Delete: "削除",
DeleteConfirm: "削除してもよろしいですか?",
Chat: '対話',
View: '表示',
Edit: '編集',
Delete: '削除',
DeleteConfirm: '削除してもよろしいですか?',
},
EditModal: {
Title: (readonly: boolean) =>
`プリセットマスクの編集 ${readonly ? "(読み取り専用)" : ""}`,
Download: "プリセットをダウンロード",
Clone: "プリセットをクローン",
`プリセットマスクの編集 ${readonly ? '(読み取り専用)' : ''}`,
Download: 'プリセットをダウンロード',
Clone: 'プリセットをクローン',
},
Config: {
Avatar: "キャラクターアバター",
Name: "キャラクター名",
Avatar: 'キャラクターアバター',
Name: 'キャラクター名',
Sync: {
Title: "グローバル設定を使用",
SubTitle: "現在の対話でグローバルモデル設定を使用するかどうか",
Title: 'グローバル設定を使用',
SubTitle: '現在の対話でグローバルモデル設定を使用するかどうか',
Confirm:
"現在の対話のカスタム設定が自動的に上書きされます。グローバル設定を有効にしてもよろしいですか?",
'現在の対話のカスタム設定が自動的に上書きされます。グローバル設定を有効にしてもよろしいですか?',
},
HideContext: {
Title: "プリセット対話を非表示",
Title: 'プリセット対話を非表示',
SubTitle:
"非表示にすると、プリセット対話はチャット画面に表示されません",
'非表示にすると、プリセット対話はチャット画面に表示されません',
},
Share: {
Title: "このマスクを共有",
SubTitle: "このマスクの直リンクを生成",
Action: "リンクをコピー",
Title: 'このマスクを共有',
SubTitle: 'このマスクの直リンクを生成',
Action: 'リンクをコピー',
},
},
},
NewChat: {
Return: "戻る",
Skip: "直接開始",
NotShow: "今後表示しない",
Return: '戻る',
Skip: '直接開始',
NotShow: '今後表示しない',
ConfirmNoShow:
"無効にしてもよろしいですか?無効にした後、設定でいつでも再度有効にできます。",
Title: "マスクを選択",
SubTitle: "今すぐ始めよう、マスクの背後にある魂と思考の衝突",
More: "すべて表示",
'無効にしてもよろしいですか?無効にした後、設定でいつでも再度有効にできます。',
Title: 'マスクを選択',
SubTitle: '今すぐ始めよう、マスクの背後にある魂と思考の衝突',
More: 'すべて表示',
},
URLCommand: {
Code: "リンクにアクセスコードが含まれています。自動入力しますか?",
Settings: "リンクにプリセット設定が含まれています。自動入力しますか?",
Code: 'リンクにアクセスコードが含まれています。自動入力しますか?',
Settings: 'リンクにプリセット設定が含まれています。自動入力しますか?',
},
UI: {
Confirm: "確認",
Cancel: "キャンセル",
Close: "閉じる",
Create: "新規作成",
Edit: "編集",
Export: "エクスポート",
Import: "インポート",
Sync: "同期",
Config: "設定",
Confirm: '確認',
Cancel: 'キャンセル',
Close: '閉じる',
Create: '新規作成',
Edit: '編集',
Export: 'エクスポート',
Import: 'インポート',
Sync: '同期',
Config: '設定',
},
Exporter: {
Description: {
Title: "コンテキストをクリアした後のメッセージのみが表示されます",
Title: 'コンテキストをクリアした後のメッセージのみが表示されます',
},
Model: "モデル",
Messages: "メッセージ",
Topic: "テーマ",
Time: "時間",
Model: 'モデル',
Messages: 'メッセージ',
Topic: 'テーマ',
Time: '時間',
},
};

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import type { PartialLocaleType } from "./index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from './index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const ko: PartialLocaleType = {
WIP: "곧 출시 예정...",
WIP: '곧 출시 예정...',
Error: {
Unauthorized: isApp
? `😆 대화 중 문제가 발생했습니다, 걱정하지 마세요:
@@ -18,16 +19,16 @@ const ko: PartialLocaleType = {
`,
},
Auth: {
Title: "비밀번호 필요",
Tips: "관리자가 비밀번호 인증을 활성화했습니다. 아래에 접근 코드를 입력하십시오.",
SubTips: "또는 OpenAI 또는 Google API 키를 입력하십시오.",
Input: "여기에 접근 코드를 입력하십시오.",
Confirm: "확인",
Later: "나중에 하기",
Return: "돌아가기",
SaasTips: "설정이 너무 복잡합니다. 즉시 사용하고 싶습니다.",
Title: '비밀번호 필요',
Tips: '관리자가 비밀번호 인증을 활성화했습니다. 아래에 접근 코드를 입력하십시오.',
SubTips: '또는 OpenAI 또는 Google API 키를 입력하십시오.',
Input: '여기에 접근 코드를 입력하십시오.',
Confirm: '확인',
Later: '나중에 하기',
Return: '돌아가기',
SaasTips: '설정이 너무 복잡합니다. 즉시 사용하고 싶습니다.',
TopTips:
"🥳 NextChat AI 출시 기념 할인, 지금 OpenAI o1, GPT-4o, Claude-3.5 및 최신 대형 모델을 해제하세요",
'🥳 NextChat AI 출시 기념 할인, 지금 OpenAI o1, GPT-4o, Claude-3.5 및 최신 대형 모델을 해제하세요',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} 개의 대화`,
@@ -35,546 +36,546 @@ const ko: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `${count} 개의 대화`,
EditMessage: {
Title: "메시지 기록 편집",
Title: '메시지 기록 편집',
Topic: {
Title: "채팅 주제",
SubTitle: "현재 채팅 주제 변경",
Title: '채팅 주제',
SubTitle: '현재 채팅 주제 변경',
},
},
Actions: {
ChatList: "메시지 목록 보기",
CompressedHistory: "압축된 히스토리 프롬프트 보기",
Export: "채팅 기록 내보내기",
Copy: "복사",
Stop: "정지",
Retry: "다시 시도",
Pin: "고정",
PinToastContent: "1 개의 대화를 프롬프트에 고정했습니다.",
PinToastAction: "보기",
Delete: "삭제",
Edit: "편집",
RefreshTitle: "제목 새로고침",
RefreshToast: "제목 새로고침 요청이 전송되었습니다",
ChatList: '메시지 목록 보기',
CompressedHistory: '압축된 히스토리 프롬프트 보기',
Export: '채팅 기록 내보내기',
Copy: '복사',
Stop: '정지',
Retry: '다시 시도',
Pin: '고정',
PinToastContent: '1 개의 대화를 프롬프트에 고정했습니다.',
PinToastAction: '보기',
Delete: '삭제',
Edit: '편집',
RefreshTitle: '제목 새로고침',
RefreshToast: '제목 새로고침 요청이 전송되었습니다',
},
Commands: {
new: "새 채팅",
newm: "마스크에서 새 채팅",
next: "다음 채팅",
prev: "이전 채팅",
clear: "컨텍스트 지우기",
del: "채팅 삭제",
new: '새 채팅',
newm: '마스크에서 새 채팅',
next: '다음 채팅',
prev: '이전 채팅',
clear: '컨텍스트 지우기',
del: '채팅 삭제',
},
InputActions: {
Stop: "응답 중지",
ToBottom: "최신으로 스크롤",
Stop: '응답 중지',
ToBottom: '최신으로 스크롤',
Theme: {
auto: "자동 테마",
light: "라이트 모드",
dark: "다크 모드",
auto: '자동 테마',
light: '라이트 모드',
dark: '다크 모드',
},
Prompt: "빠른 명령",
Masks: "모든 마스크",
Clear: "채팅 지우기",
Settings: "채팅 설정",
UploadImage: "이미지 업로드",
Prompt: '빠른 명령',
Masks: '모든 마스크',
Clear: '채팅 지우기',
Settings: '채팅 설정',
UploadImage: '이미지 업로드',
},
Rename: "채팅 이름 변경",
Typing: "입력 중…",
Rename: '채팅 이름 변경',
Typing: '입력 중…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} 전송`;
let inputHints = `${submitKey} 전송`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "Shift + Enter 줄 바꿈";
inputHints += 'Shift + Enter 줄 바꿈';
}
return inputHints + "/ 자동 완성,: 명령어 입력";
return `${inputHints}/ 자동 완성,: 명령어 입력`;
},
Send: "전송",
Send: '전송',
Config: {
Reset: "기억 지우기",
SaveAs: "마스크로 저장",
Reset: '기억 지우기',
SaveAs: '마스크로 저장',
},
IsContext: "프롬프트 설정",
IsContext: '프롬프트 설정',
},
Export: {
Title: "채팅 기록 공유",
Copy: "모두 복사",
Download: "파일 다운로드",
Share: "ShareGPT에 공유",
MessageFromYou: "사용자",
MessageFromChatGPT: "ChatGPT",
Title: '채팅 기록 공유',
Copy: '모두 복사',
Download: '파일 다운로드',
Share: 'ShareGPT에 공유',
MessageFromYou: '사용자',
MessageFromChatGPT: 'ChatGPT',
Format: {
Title: "내보내기 형식",
SubTitle: "Markdown 텍스트 또는 PNG 이미지로 내보낼 수 있습니다.",
Title: '내보내기 형식',
SubTitle: 'Markdown 텍스트 또는 PNG 이미지로 내보낼 수 있습니다.',
},
IncludeContext: {
Title: "프롬프트 컨텍스트 포함",
SubTitle: "메시지에 프롬프트 컨텍스트를 표시할지 여부",
Title: '프롬프트 컨텍스트 포함',
SubTitle: '메시지에 프롬프트 컨텍스트를 표시할지 여부',
},
Steps: {
Select: "선택",
Preview: "미리보기",
Select: '선택',
Preview: '미리보기',
},
Image: {
Toast: "스크린샷 생성 중",
Modal: "길게 누르거나 오른쪽 클릭하여 이미지를 저장하십시오.",
Toast: '스크린샷 생성 중',
Modal: '길게 누르거나 오른쪽 클릭하여 이미지를 저장하십시오.',
},
},
Select: {
Search: "메시지 검색",
All: "모두 선택",
Latest: "최근 몇 개",
Clear: "선택 지우기",
Search: '메시지 검색',
All: '모두 선택',
Latest: '최근 몇 개',
Clear: '선택 지우기',
},
Memory: {
Title: "기록 요약",
EmptyContent: "대화 내용이 너무 짧아 요약할 필요 없음",
Send: "자동으로 채팅 기록을 압축하여 컨텍스트로 전송",
Copy: "요약 복사",
Reset: "[사용되지 않음]",
ResetConfirm: "기록 요약을 지우겠습니까?",
Title: '기록 요약',
EmptyContent: '대화 내용이 너무 짧아 요약할 필요 없음',
Send: '자동으로 채팅 기록을 압축하여 컨텍스트로 전송',
Copy: '요약 복사',
Reset: '[사용되지 않음]',
ResetConfirm: '기록 요약을 지우겠습니까?',
},
Home: {
NewChat: "새 채팅",
DeleteChat: "선택한 대화를 삭제하시겠습니까?",
DeleteToast: "대화가 삭제되었습니다.",
Revert: "되돌리기",
NewChat: '새 채팅',
DeleteChat: '선택한 대화를 삭제하시겠습니까?',
DeleteToast: '대화가 삭제되었습니다.',
Revert: '되돌리기',
},
Settings: {
Title: "설정",
SubTitle: "모든 설정 옵션",
Title: '설정',
SubTitle: '모든 설정 옵션',
Danger: {
Reset: {
Title: "모든 설정 초기화",
SubTitle: "모든 설정 항목을 기본값으로 초기화",
Action: "지금 초기화",
Confirm: "모든 설정을 초기화하시겠습니까?",
Title: '모든 설정 초기화',
SubTitle: '모든 설정 항목을 기본값으로 초기화',
Action: '지금 초기화',
Confirm: '모든 설정을 초기화하시겠습니까?',
},
Clear: {
Title: "모든 데이터 지우기",
SubTitle: "모든 채팅 및 설정 데이터 지우기",
Action: "지금 지우기",
Confirm: "모든 채팅 및 설정 데이터를 지우시겠습니까?",
Title: '모든 데이터 지우기',
SubTitle: '모든 채팅 및 설정 데이터 지우기',
Action: '지금 지우기',
Confirm: '모든 채팅 및 설정 데이터를 지우시겠습니까?',
},
},
Lang: {
Name: "Language", // 주의: 새 번역을 추가하려면 이 값을 번역하지 말고 그대로 유지하세요.
All: "모든 언어",
Name: 'Language', // 주의: 새 번역을 추가하려면 이 값을 번역하지 말고 그대로 유지하세요.
All: '모든 언어',
},
Avatar: "아바타",
Avatar: '아바타',
FontSize: {
Title: "글꼴 크기",
SubTitle: "채팅 내용의 글꼴 크기",
Title: '글꼴 크기',
SubTitle: '채팅 내용의 글꼴 크기',
},
FontFamily: {
Title: "채팅 폰트",
SubTitle: "채팅 내용의 폰트, 비워 두면 글로벌 기본 폰트를 적용",
Placeholder: "폰트 이름",
Title: '채팅 폰트',
SubTitle: '채팅 내용의 폰트, 비워 두면 글로벌 기본 폰트를 적용',
Placeholder: '폰트 이름',
},
InjectSystemPrompts: {
Title: "시스템 수준 프롬프트 삽입",
Title: '시스템 수준 프롬프트 삽입',
SubTitle:
"각 요청 메시지 목록의 시작 부분에 ChatGPT 시스템 프롬프트를 강제로 추가",
'각 요청 메시지 목록의 시작 부분에 ChatGPT 시스템 프롬프트를 강제로 추가',
},
InputTemplate: {
Title: "사용자 입력 전처리",
SubTitle: "사용자의 최신 메시지가 이 템플릿에 채워집니다.",
Title: '사용자 입력 전처리',
SubTitle: '사용자의 최신 메시지가 이 템플릿에 채워집니다.',
},
Update: {
Version: (x: string) => `현재 버전: ${x}`,
IsLatest: "최신 버전입니다.",
CheckUpdate: "업데이트 확인",
IsChecking: "업데이트 확인 중...",
IsLatest: '최신 버전입니다.',
CheckUpdate: '업데이트 확인',
IsChecking: '업데이트 확인 중...',
FoundUpdate: (x: string) => `새 버전 발견: ${x}`,
GoToUpdate: "업데이트로 이동",
GoToUpdate: '업데이트로 이동',
},
SendKey: "전송 키",
Theme: "테마",
TightBorder: "테두리 없는 모드",
SendKey: '전송 키',
Theme: '테마',
TightBorder: '테두리 없는 모드',
SendPreviewBubble: {
Title: "미리보기 버블",
SubTitle: "미리보기 버블에서 Markdown 콘텐츠 미리보기",
Title: '미리보기 버블',
SubTitle: '미리보기 버블에서 Markdown 콘텐츠 미리보기',
},
AutoGenerateTitle: {
Title: "제목 자동 생성",
SubTitle: "대화 내용에 따라 적절한 제목 생성",
Title: '제목 자동 생성',
SubTitle: '대화 내용에 따라 적절한 제목 생성',
},
Sync: {
CloudState: "클라우드 데이터",
NotSyncYet: "아직 동기화되지 않았습니다.",
Success: "동기화 성공",
Fail: "동기화 실패",
CloudState: '클라우드 데이터',
NotSyncYet: '아직 동기화되지 않았습니다.',
Success: '동기화 성공',
Fail: '동기화 실패',
Config: {
Modal: {
Title: "클라우드 동기화 구성",
Check: "사용 가능성 확인",
Title: '클라우드 동기화 구성',
Check: '사용 가능성 확인',
},
SyncType: {
Title: "동기화 유형",
SubTitle: "선호하는 동기화 서버 선택",
Title: '동기화 유형',
SubTitle: '선호하는 동기화 서버 선택',
},
Proxy: {
Title: "프록시 사용",
Title: '프록시 사용',
SubTitle:
"브라우저에서 동기화할 때 프록시를 활성화하여 교차 출처 제한을 피해야 함",
'브라우저에서 동기화할 때 프록시를 활성화하여 교차 출처 제한을 피해야 함',
},
ProxyUrl: {
Title: "프록시 주소",
SubTitle: "이 프로젝트에서 제공하는 교차 출처 프록시만 해당",
Title: '프록시 주소',
SubTitle: '이 프로젝트에서 제공하는 교차 출처 프록시만 해당',
},
WebDav: {
Endpoint: "WebDAV 주소",
UserName: "사용자 이름",
Password: "비밀번호",
Endpoint: 'WebDAV 주소',
UserName: '사용자 이름',
Password: '비밀번호',
},
UpStash: {
Endpoint: "UpStash Redis REST URL",
UserName: "백업 이름",
Password: "UpStash Redis REST Token",
Endpoint: 'UpStash Redis REST URL',
UserName: '백업 이름',
Password: 'UpStash Redis REST Token',
},
},
LocalState: "로컬 데이터",
LocalState: '로컬 데이터',
Overview: (overview: any) => {
return `${overview.chat} 회의 대화, ${overview.message} 개의 메시지, ${overview.prompt} 개의 프롬프트, ${overview.mask} 개의 마스크`;
},
ImportFailed: "가져오기 실패",
ImportFailed: '가져오기 실패',
},
Mask: {
Splash: {
Title: "마스크 시작 페이지",
SubTitle: "새 채팅 시 마스크 시작 페이지 표시",
Title: '마스크 시작 페이지',
SubTitle: '새 채팅 시 마스크 시작 페이지 표시',
},
Builtin: {
Title: "내장 마스크 숨기기",
SubTitle: "모든 마스크 목록에서 내장 마스크 숨기기",
Title: '내장 마스크 숨기기',
SubTitle: '모든 마스크 목록에서 내장 마스크 숨기기',
},
},
Prompt: {
Disable: {
Title: "프롬프트 자동 완성 비활성화",
SubTitle: "입력 상자 시작 부분에 / 를 입력하여 자동 완성 활성화",
Title: '프롬프트 자동 완성 비활성화',
SubTitle: '입력 상자 시작 부분에 / 를 입력하여 자동 완성 활성화',
},
List: "사용자 정의 프롬프트 목록",
List: '사용자 정의 프롬프트 목록',
ListCount: (builtin: number, custom: number) =>
`내장 ${builtin} 개, 사용자 정의 ${custom}`,
Edit: "편집",
Edit: '편집',
Modal: {
Title: "프롬프트 목록",
Add: "새로 만들기",
Search: "프롬프트 검색",
Title: '프롬프트 목록',
Add: '새로 만들기',
Search: '프롬프트 검색',
},
EditModal: {
Title: "프롬프트 편집",
Title: '프롬프트 편집',
},
},
HistoryCount: {
Title: "히스토리 메시지 수",
SubTitle: "각 요청에 포함된 히스토리 메시지 수",
Title: '히스토리 메시지 수',
SubTitle: '각 요청에 포함된 히스토리 메시지 수',
},
CompressThreshold: {
Title: "히스토리 메시지 길이 압축 임계값",
SubTitle: "압축되지 않은 히스토리 메시지가 이 값을 초과하면 압축 수행",
Title: '히스토리 메시지 길이 압축 임계값',
SubTitle: '압축되지 않은 히스토리 메시지가 이 값을 초과하면 압축 수행',
},
Usage: {
Title: "잔액 조회",
Title: '잔액 조회',
SubTitle(used: any, total: any) {
return `이번 달 사용된 금액: $${used},총 구독 금액: $${total}`;
},
IsChecking: "확인 중...",
Check: "다시 확인",
NoAccess: "잔액을 보려면 API 키 또는 접근 비밀번호를 입력하십시오.",
IsChecking: '확인 중...',
Check: '다시 확인',
NoAccess: '잔액을 보려면 API 키 또는 접근 비밀번호를 입력하십시오.',
},
Access: {
SaasStart: {
Title: "NextChat AI 사용하기",
Label: "(가장 비용 효율적인 솔루션)",
Title: 'NextChat AI 사용하기',
Label: '(가장 비용 효율적인 솔루션)',
SubTitle:
"NextChat에 의해 공식적으로 유지 관리되며, 제로 구성으로 즉시 사용할 수 있으며, OpenAI o1, GPT-4o, Claude-3.5와 같은 최신 대형 모델을 지원합니다",
ChatNow: "지금 채팅하기",
'NextChat에 의해 공식적으로 유지 관리되며, 제로 구성으로 즉시 사용할 수 있으며, OpenAI o1, GPT-4o, Claude-3.5와 같은 최신 대형 모델을 지원합니다',
ChatNow: '지금 채팅하기',
},
AccessCode: {
Title: "접근 비밀번호",
SubTitle: "관리자가 암호화된 접근을 활성화했습니다.",
Placeholder: "접근 비밀번호를 입력하십시오.",
Title: '접근 비밀번호',
SubTitle: '관리자가 암호화된 접근을 활성화했습니다.',
Placeholder: '접근 비밀번호를 입력하십시오.',
},
CustomEndpoint: {
Title: "커스텀 엔드포인트",
SubTitle: "커스텀 Azure 또는 OpenAI 서비스를 사용할지 여부",
Title: '커스텀 엔드포인트',
SubTitle: '커스텀 Azure 또는 OpenAI 서비스를 사용할지 여부',
},
Provider: {
Title: "모델 서비스 제공업체",
SubTitle: "다른 서비스 제공업체로 전환",
Title: '모델 서비스 제공업체',
SubTitle: '다른 서비스 제공업체로 전환',
},
OpenAI: {
ApiKey: {
Title: "API 키",
SubTitle: "커스텀 OpenAI 키를 사용하여 비밀번호 접근 제한 우회",
Placeholder: "OpenAI API 키",
Title: 'API 키',
SubTitle: '커스텀 OpenAI 키를 사용하여 비밀번호 접근 제한 우회',
Placeholder: 'OpenAI API 키',
},
Endpoint: {
Title: "엔드포인트 주소",
SubTitle: "기본 주소 외에 http(s)://을 포함해야 함",
Title: '엔드포인트 주소',
SubTitle: '기본 주소 외에 http(s)://을 포함해야 함',
},
},
Azure: {
ApiKey: {
Title: "엔드포인트 키",
SubTitle: "커스텀 Azure 키를 사용하여 비밀번호 접근 제한 우회",
Placeholder: "Azure API 키",
Title: '엔드포인트 키',
SubTitle: '커스텀 Azure 키를 사용하여 비밀번호 접근 제한 우회',
Placeholder: 'Azure API 키',
},
Endpoint: {
Title: "엔드포인트 주소",
SubTitle: "예: ",
Title: '엔드포인트 주소',
SubTitle: '예: ',
},
ApiVerion: {
Title: "API 버전 (azure api version)",
SubTitle: "특정 부분 버전 선택",
Title: 'API 버전 (azure api version)',
SubTitle: '특정 부분 버전 선택',
},
},
Anthropic: {
ApiKey: {
Title: "엔드포인트 키",
SubTitle: "커스텀 Anthropic 키를 사용하여 비밀번호 접근 제한 우회",
Placeholder: "Anthropic API 키",
Title: '엔드포인트 키',
SubTitle: '커스텀 Anthropic 키를 사용하여 비밀번호 접근 제한 우회',
Placeholder: 'Anthropic API 키',
},
Endpoint: {
Title: "엔드포인트 주소",
SubTitle: "예: ",
Title: '엔드포인트 주소',
SubTitle: '예: ',
},
ApiVerion: {
Title: "API 버전 (claude api version)",
SubTitle: "특정 API 버전 입력",
Title: 'API 버전 (claude api version)',
SubTitle: '특정 API 버전 입력',
},
},
Google: {
ApiKey: {
Title: "API 키",
SubTitle: "Google AI에서 API 키를 가져오세요.",
Placeholder: "Google AI Studio API 키 입력",
Title: 'API 키',
SubTitle: 'Google AI에서 API 키를 가져오세요.',
Placeholder: 'Google AI Studio API 키 입력',
},
Endpoint: {
Title: "엔드포인트 주소",
SubTitle: "예: ",
Title: '엔드포인트 주소',
SubTitle: '예: ',
},
ApiVersion: {
Title: "API 버전 (gemini-pro 전용)",
SubTitle: "특정 API 버전 선택",
Title: 'API 버전 (gemini-pro 전용)',
SubTitle: '특정 API 버전 선택',
},
GoogleSafetySettings: {
Title: "Google 안전 필터링 수준",
SubTitle: "콘텐츠 필터링 수준 설정",
Title: 'Google 안전 필터링 수준',
SubTitle: '콘텐츠 필터링 수준 설정',
},
},
Baidu: {
ApiKey: {
Title: "API 키",
SubTitle: "커스텀 Baidu API 키 사용",
Placeholder: "Baidu API 키",
Title: 'API 키',
SubTitle: '커스텀 Baidu API 키 사용',
Placeholder: 'Baidu API 키',
},
SecretKey: {
Title: "Secret 키",
SubTitle: "커스텀 Baidu Secret 키 사용",
Placeholder: "Baidu Secret 키",
Title: 'Secret 키',
SubTitle: '커스텀 Baidu Secret 키 사용',
Placeholder: 'Baidu Secret 키',
},
Endpoint: {
Title: "엔드포인트 주소",
SubTitle: "커스터마이즈는 .env에서 설정",
Title: '엔드포인트 주소',
SubTitle: '커스터마이즈는 .env에서 설정',
},
},
ByteDance: {
ApiKey: {
Title: "엔드포인트 키",
SubTitle: "커스텀 ByteDance API 키 사용",
Placeholder: "ByteDance API 키",
Title: '엔드포인트 키',
SubTitle: '커스텀 ByteDance API 키 사용',
Placeholder: 'ByteDance API 키',
},
Endpoint: {
Title: "엔드포인트 주소",
SubTitle: "예: ",
Title: '엔드포인트 주소',
SubTitle: '예: ',
},
},
Alibaba: {
ApiKey: {
Title: "엔드포인트 키",
SubTitle: "커스텀 Alibaba Cloud API 키 사용",
Placeholder: "Alibaba Cloud API 키",
Title: '엔드포인트 키',
SubTitle: '커스텀 Alibaba Cloud API 키 사용',
Placeholder: 'Alibaba Cloud API 키',
},
Endpoint: {
Title: "엔드포인트 주소",
SubTitle: "예: ",
Title: '엔드포인트 주소',
SubTitle: '예: ',
},
},
CustomModel: {
Title: "커스텀 모델 이름",
SubTitle: "커스텀 모델 옵션 추가, 영어 쉼표로 구분",
Title: '커스텀 모델 이름',
SubTitle: '커스텀 모델 옵션 추가, 영어 쉼표로 구분',
},
},
Model: "모델 (model)",
Model: '모델 (model)',
CompressModel: {
Title: "압축 모델",
SubTitle: "기록을 압축하는 데 사용되는 모델",
Title: '압축 모델',
SubTitle: '기록을 압축하는 데 사용되는 모델',
},
Temperature: {
Title: "무작위성 (temperature)",
SubTitle: "값이 클수록 응답이 더 무작위적",
Title: '무작위성 (temperature)',
SubTitle: '값이 클수록 응답이 더 무작위적',
},
TopP: {
Title: "탑 P 샘플링 (top_p)",
SubTitle: "무작위성과 유사하지만, 무작위성과 함께 변경하지 마십시오.",
Title: '탑 P 샘플링 (top_p)',
SubTitle: '무작위성과 유사하지만, 무작위성과 함께 변경하지 마십시오.',
},
MaxTokens: {
Title: "단일 응답 제한 (max_tokens)",
SubTitle: "단일 상호작용에 사용되는 최대 토큰 수",
Title: '단일 응답 제한 (max_tokens)',
SubTitle: '단일 상호작용에 사용되는 최대 토큰 수',
},
PresencePenalty: {
Title: "주제 신선도 (presence_penalty)",
SubTitle: "값이 클수록 새로운 주제로 확장할 가능성이 높음",
Title: '주제 신선도 (presence_penalty)',
SubTitle: '값이 클수록 새로운 주제로 확장할 가능성이 높음',
},
FrequencyPenalty: {
Title: "빈도 벌점 (frequency_penalty)",
SubTitle: "값이 클수록 중복 단어 감소 가능성 높음",
Title: '빈도 벌점 (frequency_penalty)',
SubTitle: '값이 클수록 중복 단어 감소 가능성 높음',
},
},
Store: {
DefaultTopic: "새 채팅",
BotHello: "무엇을 도와드릴까요?",
Error: "오류가 발생했습니다. 나중에 다시 시도해 주세요.",
DefaultTopic: '새 채팅',
BotHello: '무엇을 도와드릴까요?',
Error: '오류가 발생했습니다. 나중에 다시 시도해 주세요.',
Prompt: {
History: (content: string) => "이것은 이전 채팅 요약입니다: " + content,
History: (content: string) => `이것은 이전 채팅 요약입니다: ${content}`,
Topic:
"네 글자에서 다섯 글자로 이 문장의 간략한 주제를 반환하세요. 설명이나 문장 부호, 어미, 불필요한 텍스트, 굵은 글씨는 필요 없습니다. 주제가 없다면 '잡담'이라고만 반환하세요.",
'네 글자에서 다섯 글자로 이 문장의 간략한 주제를 반환하세요. 설명이나 문장 부호, 어미, 불필요한 텍스트, 굵은 글씨는 필요 없습니다. 주제가 없다면 \'잡담\'이라고만 반환하세요.',
Summarize:
"대화 내용을 간략히 요약하여 후속 컨텍스트 프롬프트로 사용하세요. 200자 이내로 작성하세요.",
'대화 내용을 간략히 요약하여 후속 컨텍스트 프롬프트로 사용하세요. 200자 이내로 작성하세요.',
},
},
Copy: {
Success: "클립보드에 복사되었습니다.",
Failed: "복사 실패, 클립보드 권한을 부여해주세요.",
Success: '클립보드에 복사되었습니다.',
Failed: '복사 실패, 클립보드 권한을 부여해주세요.',
},
Download: {
Success: "내용이 디렉토리에 다운로드되었습니다.",
Failed: "다운로드 실패.",
Success: '내용이 디렉토리에 다운로드되었습니다.',
Failed: '다운로드 실패.',
},
Context: {
Toast: (x: any) => ` ${x} 개의 프리셋 프롬프트 포함됨`,
Edit: "현재 대화 설정",
Add: "대화 추가",
Clear: "컨텍스트가 지워졌습니다.",
Revert: "컨텍스트 복원",
Edit: '현재 대화 설정',
Add: '대화 추가',
Clear: '컨텍스트가 지워졌습니다.',
Revert: '컨텍스트 복원',
},
Plugin: {
Name: "플러그인",
Name: '플러그인',
},
FineTuned: {
Sysmessage: "당신은 보조자입니다.",
Sysmessage: '당신은 보조자입니다.',
},
SearchChat: {
Name: "검색",
Name: '검색',
Page: {
Title: "채팅 기록 검색",
Search: "검색어 입력",
NoResult: "결과를 찾을 수 없습니다",
NoData: "데이터가 없습니다",
Loading: "로딩 중",
Title: '채팅 기록 검색',
Search: '검색어 입력',
NoResult: '결과를 찾을 수 없습니다',
NoData: '데이터가 없습니다',
Loading: '로딩 중',
SubTitle: (count: number) => `${count}개의 결과를 찾았습니다`,
},
Item: {
View: "보기",
View: '보기',
},
},
Mask: {
Name: "마스크",
Name: '마스크',
Page: {
Title: "프리셋 캐릭터 마스크",
Title: '프리셋 캐릭터 마스크',
SubTitle: (count: number) => `${count} 개의 프리셋 캐릭터 정의`,
Search: "캐릭터 마스크 검색",
Create: "새로 만들기",
Search: '캐릭터 마스크 검색',
Create: '새로 만들기',
},
Item: {
Info: (count: number) => ` ${count} 개의 프리셋 대화 포함`,
Chat: "대화",
View: "보기",
Edit: "편집",
Delete: "삭제",
DeleteConfirm: "삭제를 확인하시겠습니까?",
Chat: '대화',
View: '보기',
Edit: '편집',
Delete: '삭제',
DeleteConfirm: '삭제를 확인하시겠습니까?',
},
EditModal: {
Title: (readonly: boolean) =>
`프리셋 마스크 편집 ${readonly ? "(읽기 전용)" : ""}`,
Download: "프리셋 다운로드",
Clone: "프리셋 복제",
`프리셋 마스크 편집 ${readonly ? '(읽기 전용)' : ''}`,
Download: '프리셋 다운로드',
Clone: '프리셋 복제',
},
Config: {
Avatar: "캐릭터 아바타",
Name: "캐릭터 이름",
Avatar: '캐릭터 아바타',
Name: '캐릭터 이름',
Sync: {
Title: "전역 설정 사용",
SubTitle: "현재 대화가 전역 모델 설정을 사용하는지 여부",
Title: '전역 설정 사용',
SubTitle: '현재 대화가 전역 모델 설정을 사용하는지 여부',
Confirm:
"현재 대화의 사용자 정의 설정이 자동으로 덮어쓰여질 것입니다. 전역 설정을 활성화하시겠습니까?",
'현재 대화의 사용자 정의 설정이 자동으로 덮어쓰여질 것입니다. 전역 설정을 활성화하시겠습니까?',
},
HideContext: {
Title: "프리셋 대화 숨기기",
SubTitle: "숨기면 프리셋 대화가 채팅 화면에 나타나지 않습니다.",
Title: '프리셋 대화 숨기기',
SubTitle: '숨기면 프리셋 대화가 채팅 화면에 나타나지 않습니다.',
},
Share: {
Title: "이 마스크 공유하기",
SubTitle: "이 마스크의 직접 링크 생성",
Action: "링크 복사",
Title: '이 마스크 공유하기',
SubTitle: '이 마스크의 직접 링크 생성',
Action: '링크 복사',
},
},
},
NewChat: {
Return: "돌아가기",
Skip: "바로 시작",
NotShow: "다시 보지 않기",
Return: '돌아가기',
Skip: '바로 시작',
NotShow: '다시 보지 않기',
ConfirmNoShow:
"비활성화하시겠습니까? 비활성화 후 언제든지 설정에서 다시 활성화할 수 있습니다.",
Title: "마스크 선택",
SubTitle: "지금 시작하여 마스크 뒤의 사고와 교류해보세요.",
More: "모두 보기",
'비활성화하시겠습니까? 비활성화 후 언제든지 설정에서 다시 활성화할 수 있습니다.',
Title: '마스크 선택',
SubTitle: '지금 시작하여 마스크 뒤의 사고와 교류해보세요.',
More: '모두 보기',
},
URLCommand: {
Code: "링크에 액세스 코드가 포함되어 있습니다. 자동으로 입력하시겠습니까?",
Code: '링크에 액세스 코드가 포함되어 있습니다. 자동으로 입력하시겠습니까?',
Settings:
"링크에 프리셋 설정이 포함되어 있습니다. 자동으로 입력하시겠습니까?",
'링크에 프리셋 설정이 포함되어 있습니다. 자동으로 입력하시겠습니까?',
},
UI: {
Confirm: "확인",
Cancel: "취소",
Close: "닫기",
Create: "새로 만들기",
Edit: "편집",
Export: "내보내기",
Import: "가져오기",
Sync: "동기화",
Config: "구성",
Confirm: '확인',
Cancel: '취소',
Close: '닫기',
Create: '새로 만들기',
Edit: '편집',
Export: '내보내기',
Import: '가져오기',
Sync: '동기화',
Config: '구성',
},
Exporter: {
Description: {
Title: "컨텍스트가 지워진 후의 메시지만 표시됩니다.",
Title: '컨텍스트가 지워진 후의 메시지만 표시됩니다.',
},
Model: "모델",
Messages: "메시지",
Topic: "주제",
Time: "시간",
Model: '모델',
Messages: '메시지',
Topic: '주제',
Time: '시간',
},
};

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import type { PartialLocaleType } from "./index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from './index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const no: PartialLocaleType = {
WIP: "Arbeid pågår ...",
WIP: 'Arbeid pågår ...',
Error: {
Unauthorized: isApp
? `😆 Samtalen har støtt på noen problemer, ikke bekymre deg:
@@ -18,17 +19,17 @@ const no: PartialLocaleType = {
`,
},
Auth: {
Title: "Passord påkrevd",
Tips: "Administrator har aktivert passordbeskyttelse. Vennligst skriv inn tilgangskoden nedenfor",
SubTips: "Eller skriv inn din OpenAI eller Google API-nøkkel",
Input: "Skriv tilgangskoden her",
Confirm: "Bekreft",
Later: "Kom tilbake senere",
Return: "Tilbake",
Title: 'Passord påkrevd',
Tips: 'Administrator har aktivert passordbeskyttelse. Vennligst skriv inn tilgangskoden nedenfor',
SubTips: 'Eller skriv inn din OpenAI eller Google API-nøkkel',
Input: 'Skriv tilgangskoden her',
Confirm: 'Bekreft',
Later: 'Kom tilbake senere',
Return: 'Tilbake',
SaasTips:
"Konfigurasjonen er for komplisert, jeg vil bruke det med en gang",
'Konfigurasjonen er for komplisert, jeg vil bruke det med en gang',
TopTips:
"🥳 NextChat AI lanseringstilbud, lås opp OpenAI o1, GPT-4o, Claude-3.5 og de nyeste store modellene nå",
'🥳 NextChat AI lanseringstilbud, lås opp OpenAI o1, GPT-4o, Claude-3.5 og de nyeste store modellene nå',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} samtaler`,
@@ -36,564 +37,564 @@ const no: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `Totalt ${count} samtaler`,
EditMessage: {
Title: "Rediger meldingshistorikk",
Title: 'Rediger meldingshistorikk',
Topic: {
Title: "Samtaleemne",
SubTitle: "Endre nåværende samtaleemne",
Title: 'Samtaleemne',
SubTitle: 'Endre nåværende samtaleemne',
},
},
Actions: {
ChatList: "Vis meldingsliste",
CompressedHistory: "Vis komprimert historikk",
Export: "Eksporter samtaler",
Copy: "Kopier",
Stop: "Stopp",
Retry: "Prøv igjen",
Pin: "Fest",
ChatList: 'Vis meldingsliste',
CompressedHistory: 'Vis komprimert historikk',
Export: 'Eksporter samtaler',
Copy: 'Kopier',
Stop: 'Stopp',
Retry: 'Prøv igjen',
Pin: 'Fest',
PinToastContent:
"1 samtale er festet til forhåndsdefinerte oppfordringer",
PinToastAction: "Se",
Delete: "Slett",
Edit: "Rediger",
RefreshTitle: "Oppdater tittel",
RefreshToast: "Forespørsel om titteloppdatering sendt",
'1 samtale er festet til forhåndsdefinerte oppfordringer',
PinToastAction: 'Se',
Delete: 'Slett',
Edit: 'Rediger',
RefreshTitle: 'Oppdater tittel',
RefreshToast: 'Forespørsel om titteloppdatering sendt',
},
Commands: {
new: "Ny samtale",
newm: "Start samtale fra maske",
next: "Neste samtale",
prev: "Forrige samtale",
clear: "Rydd kontekst",
del: "Slett samtale",
new: 'Ny samtale',
newm: 'Start samtale fra maske',
next: 'Neste samtale',
prev: 'Forrige samtale',
clear: 'Rydd kontekst',
del: 'Slett samtale',
},
InputActions: {
Stop: "Stopp respons",
ToBottom: "Rull til nyeste",
Stop: 'Stopp respons',
ToBottom: 'Rull til nyeste',
Theme: {
auto: "Automatisk tema",
light: "Lyst tema",
dark: "Mørkt tema",
auto: 'Automatisk tema',
light: 'Lyst tema',
dark: 'Mørkt tema',
},
Prompt: "Hurtigkommando",
Masks: "Alle masker",
Clear: "Rydd samtale",
Settings: "Samtaleinnstillinger",
UploadImage: "Last opp bilde",
Prompt: 'Hurtigkommando',
Masks: 'Alle masker',
Clear: 'Rydd samtale',
Settings: 'Samtaleinnstillinger',
UploadImage: 'Last opp bilde',
},
Rename: "Gi nytt navn til samtale",
Typing: "Skriver…",
Rename: 'Gi nytt navn til samtale',
Typing: 'Skriver…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} send`;
let inputHints = `${submitKey} send`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "Shift + Enter for linjeskift";
inputHints += 'Shift + Enter for linjeskift';
}
return (
inputHints + "/ for å utløse autoutfylling, : for å utløse kommando"
`${inputHints}/ for å utløse autoutfylling, : for å utløse kommando`
);
},
Send: "Send",
Send: 'Send',
Config: {
Reset: "Fjern minne",
SaveAs: "Lagre som maske",
Reset: 'Fjern minne',
SaveAs: 'Lagre som maske',
},
IsContext: "Forhåndsdefinerte oppfordringer",
IsContext: 'Forhåndsdefinerte oppfordringer',
},
Export: {
Title: "Del samtalehistorikk",
Copy: "Kopier alt",
Download: "Last ned fil",
Share: "Del til ShareGPT",
MessageFromYou: "Bruker",
MessageFromChatGPT: "ChatGPT",
Title: 'Del samtalehistorikk',
Copy: 'Kopier alt',
Download: 'Last ned fil',
Share: 'Del til ShareGPT',
MessageFromYou: 'Bruker',
MessageFromChatGPT: 'ChatGPT',
Format: {
Title: "Eksporterformat",
SubTitle: "Kan eksporteres som Markdown-tekst eller PNG-bilde",
Title: 'Eksporterformat',
SubTitle: 'Kan eksporteres som Markdown-tekst eller PNG-bilde',
},
IncludeContext: {
Title: "Inkluder maske kontekst",
SubTitle: "Skal maske kontekst vises i meldinger",
Title: 'Inkluder maske kontekst',
SubTitle: 'Skal maske kontekst vises i meldinger',
},
Steps: {
Select: "Velg",
Preview: "Forhåndsvis",
Select: 'Velg',
Preview: 'Forhåndsvis',
},
Image: {
Toast: "Genererer skjermbilde",
Modal: "Langtrykk eller høyreklikk for å lagre bilde",
Toast: 'Genererer skjermbilde',
Modal: 'Langtrykk eller høyreklikk for å lagre bilde',
},
},
Select: {
Search: "Søk meldinger",
All: "Velg alle",
Latest: "Siste meldinger",
Clear: "Fjern valg",
Search: 'Søk meldinger',
All: 'Velg alle',
Latest: 'Siste meldinger',
Clear: 'Fjern valg',
},
Memory: {
Title: "Historisk sammendrag",
EmptyContent: "Samtaleinnholdet er for kort, ingen oppsummering nødvendig",
Send: "Automatisk komprimere samtalehistorikk og sende som kontekst",
Copy: "Kopier sammendrag",
Reset: "[unused]",
ResetConfirm: "Er du sikker på at du vil tømme historisk sammendrag?",
Title: 'Historisk sammendrag',
EmptyContent: 'Samtaleinnholdet er for kort, ingen oppsummering nødvendig',
Send: 'Automatisk komprimere samtalehistorikk og sende som kontekst',
Copy: 'Kopier sammendrag',
Reset: '[unused]',
ResetConfirm: 'Er du sikker på at du vil tømme historisk sammendrag?',
},
Home: {
NewChat: "Ny samtale",
DeleteChat: "Er du sikker på at du vil slette den valgte samtalen?",
DeleteToast: "Samtale slettet",
Revert: "Angre",
NewChat: 'Ny samtale',
DeleteChat: 'Er du sikker på at du vil slette den valgte samtalen?',
DeleteToast: 'Samtale slettet',
Revert: 'Angre',
},
Settings: {
Title: "Innstillinger",
SubTitle: "Alle innstillingsalternativer",
Title: 'Innstillinger',
SubTitle: 'Alle innstillingsalternativer',
Danger: {
Reset: {
Title: "Tilbakestill alle innstillinger",
Title: 'Tilbakestill alle innstillinger',
SubTitle:
"Tilbakestill alle innstillingsalternativer til standardverdier",
Action: "Tilbakestill nå",
Confirm: "Bekreft tilbakestilling av alle innstillinger?",
'Tilbakestill alle innstillingsalternativer til standardverdier',
Action: 'Tilbakestill nå',
Confirm: 'Bekreft tilbakestilling av alle innstillinger?',
},
Clear: {
Title: "Slett alle data",
SubTitle: "Slett alle samtaler og innstillingsdata",
Action: "Slett nå",
Confirm: "Bekreft sletting av alle samtaler og innstillingsdata?",
Title: 'Slett alle data',
SubTitle: 'Slett alle samtaler og innstillingsdata',
Action: 'Slett nå',
Confirm: 'Bekreft sletting av alle samtaler og innstillingsdata?',
},
},
Lang: {
Name: "Language", // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
All: "Alle språk",
Name: 'Language', // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
All: 'Alle språk',
},
Avatar: "Profilbilde",
Avatar: 'Profilbilde',
FontSize: {
Title: "Skriftstørrelse",
SubTitle: "Skriftstørrelse for samtaleinnhold",
Title: 'Skriftstørrelse',
SubTitle: 'Skriftstørrelse for samtaleinnhold',
},
FontFamily: {
Title: "Chat-skrifttype",
Title: 'Chat-skrifttype',
SubTitle:
"Skrifttypen for chatinnhold, la stå tom for å bruke global standardskrifttype",
Placeholder: "Skriftnavn",
'Skrifttypen for chatinnhold, la stå tom for å bruke global standardskrifttype',
Placeholder: 'Skriftnavn',
},
InjectSystemPrompts: {
Title: "Injiser systemprompter",
Title: 'Injiser systemprompter',
SubTitle:
"Tving inn et systemprompt som simulerer ChatGPT i starten av hver forespørsel",
'Tving inn et systemprompt som simulerer ChatGPT i starten av hver forespørsel',
},
InputTemplate: {
Title: "Forhåndsbehandling av brukerinput",
Title: 'Forhåndsbehandling av brukerinput',
SubTitle:
"Den nyeste meldingen fra brukeren vil bli fylt ut i denne malen",
'Den nyeste meldingen fra brukeren vil bli fylt ut i denne malen',
},
Update: {
Version: (x: string) => `Nåværende versjon: ${x}`,
IsLatest: "Er den nyeste versjonen",
CheckUpdate: "Sjekk oppdateringer",
IsChecking: "Sjekker oppdateringer...",
IsLatest: 'Er den nyeste versjonen',
CheckUpdate: 'Sjekk oppdateringer',
IsChecking: 'Sjekker oppdateringer...',
FoundUpdate: (x: string) => `Ny versjon oppdaget: ${x}`,
GoToUpdate: "Gå til oppdatering",
GoToUpdate: 'Gå til oppdatering',
},
SendKey: "Send-knapp",
Theme: "Tema",
TightBorder: "Ingen ramme-modus",
SendKey: 'Send-knapp',
Theme: 'Tema',
TightBorder: 'Ingen ramme-modus',
SendPreviewBubble: {
Title: "Forhåndsvisningsboble",
SubTitle: "Forhåndsvis Markdown-innhold i en forhåndsvisningsboble",
Title: 'Forhåndsvisningsboble',
SubTitle: 'Forhåndsvis Markdown-innhold i en forhåndsvisningsboble',
},
AutoGenerateTitle: {
Title: "Automatisk generere tittel",
SubTitle: "Generer en passende tittel basert på samtaleinnholdet",
Title: 'Automatisk generere tittel',
SubTitle: 'Generer en passende tittel basert på samtaleinnholdet',
},
Sync: {
CloudState: "Skydatasynkronisering",
NotSyncYet: "Har ikke blitt synkronisert ennå",
Success: "Synkronisering vellykket",
Fail: "Synkronisering mislyktes",
CloudState: 'Skydatasynkronisering',
NotSyncYet: 'Har ikke blitt synkronisert ennå',
Success: 'Synkronisering vellykket',
Fail: 'Synkronisering mislyktes',
Config: {
Modal: {
Title: "Konfigurer sky-synkronisering",
Check: "Sjekk tilgjengelighet",
Title: 'Konfigurer sky-synkronisering',
Check: 'Sjekk tilgjengelighet',
},
SyncType: {
Title: "Synkroniseringstype",
SubTitle: "Velg ønsket synkroniseringsserver",
Title: 'Synkroniseringstype',
SubTitle: 'Velg ønsket synkroniseringsserver',
},
Proxy: {
Title: "Aktiver proxy",
Title: 'Aktiver proxy',
SubTitle:
"Når du synkroniserer i nettleseren, må proxy være aktivert for å unngå CORS-restriksjoner",
'Når du synkroniserer i nettleseren, må proxy være aktivert for å unngå CORS-restriksjoner',
},
ProxyUrl: {
Title: "Proxy-URL",
SubTitle: "Kun for prosjektets innebygde CORS-proxy",
Title: 'Proxy-URL',
SubTitle: 'Kun for prosjektets innebygde CORS-proxy',
},
WebDav: {
Endpoint: "WebDAV-adresse",
UserName: "Brukernavn",
Password: "Passord",
Endpoint: 'WebDAV-adresse',
UserName: 'Brukernavn',
Password: 'Passord',
},
UpStash: {
Endpoint: "UpStash Redis REST-URL",
UserName: "Sikkerhetskopinavn",
Password: "UpStash Redis REST-token",
Endpoint: 'UpStash Redis REST-URL',
UserName: 'Sikkerhetskopinavn',
Password: 'UpStash Redis REST-token',
},
},
LocalState: "Lokal data",
LocalState: 'Lokal data',
Overview: (overview: any) => {
return `${overview.chat} samtaler, ${overview.message} meldinger, ${overview.prompt} oppfordringer, ${overview.mask} masker`;
},
ImportFailed: "Import mislyktes",
ImportFailed: 'Import mislyktes',
},
Mask: {
Splash: {
Title: "Maskestartside",
SubTitle: "Vis maskestartside når du oppretter en ny samtale",
Title: 'Maskestartside',
SubTitle: 'Vis maskestartside når du oppretter en ny samtale',
},
Builtin: {
Title: "Skjul innebygde masker",
SubTitle: "Skjul innebygde masker i alle maskelister",
Title: 'Skjul innebygde masker',
SubTitle: 'Skjul innebygde masker i alle maskelister',
},
},
Prompt: {
Disable: {
Title: "Deaktiver automatisk fullføring av oppfordringer",
SubTitle: "Skriv / i tekstboksen for å utløse automatisk fullføring",
Title: 'Deaktiver automatisk fullføring av oppfordringer',
SubTitle: 'Skriv / i tekstboksen for å utløse automatisk fullføring',
},
List: "Egendefinerte oppfordringer",
List: 'Egendefinerte oppfordringer',
ListCount: (builtin: number, custom: number) =>
`Innebygde ${builtin}, brukerdedefinerte ${custom}`,
Edit: "Rediger",
Edit: 'Rediger',
Modal: {
Title: "Oppfordringsliste",
Add: "Ny",
Search: "Søk oppfordringer",
Title: 'Oppfordringsliste',
Add: 'Ny',
Search: 'Søk oppfordringer',
},
EditModal: {
Title: "Rediger oppfordring",
Title: 'Rediger oppfordring',
},
},
HistoryCount: {
Title: "Antall historiske meldinger",
SubTitle: "Antall historiske meldinger som sendes med hver forespørsel",
Title: 'Antall historiske meldinger',
SubTitle: 'Antall historiske meldinger som sendes med hver forespørsel',
},
CompressThreshold: {
Title: "Kompressterskel for historiske meldinger",
Title: 'Kompressterskel for historiske meldinger',
SubTitle:
"Når ukomprimerte historiske meldinger overskrider denne verdien, vil de bli komprimert",
'Når ukomprimerte historiske meldinger overskrider denne verdien, vil de bli komprimert',
},
Usage: {
Title: "Saldoforespørsel",
Title: 'Saldoforespørsel',
SubTitle(used: any, total: any) {
return `Brukt denne måneden $${used}, total abonnementsbeløp $${total}`;
},
IsChecking: "Sjekker...",
Check: "Sjekk på nytt",
NoAccess: "Skriv inn API-nøkkel eller tilgangspassord for å se saldo",
IsChecking: 'Sjekker...',
Check: 'Sjekk på nytt',
NoAccess: 'Skriv inn API-nøkkel eller tilgangspassord for å se saldo',
},
Access: {
SaasStart: {
Title: "Bruk NextChat AI",
Label: "(Den mest kostnadseffektive løsningen)",
Title: 'Bruk NextChat AI',
Label: '(Den mest kostnadseffektive løsningen)',
SubTitle:
"Offisielt vedlikeholdt av NextChat, klar til bruk uten konfigurasjon, støtter de nyeste store modellene som OpenAI o1, GPT-4o og Claude-3.5",
ChatNow: "Chat nå",
'Offisielt vedlikeholdt av NextChat, klar til bruk uten konfigurasjon, støtter de nyeste store modellene som OpenAI o1, GPT-4o og Claude-3.5',
ChatNow: 'Chat nå',
},
AccessCode: {
Title: "Adgangskode",
SubTitle: "Administrator har aktivert kryptert tilgang",
Placeholder: "Skriv inn tilgangskoden",
Title: 'Adgangskode',
SubTitle: 'Administrator har aktivert kryptert tilgang',
Placeholder: 'Skriv inn tilgangskoden',
},
CustomEndpoint: {
Title: "Egendefinert API",
SubTitle: "Bruk egendefinerte Azure- eller OpenAI-tjenester",
Title: 'Egendefinert API',
SubTitle: 'Bruk egendefinerte Azure- eller OpenAI-tjenester',
},
Provider: {
Title: "Modelltilbyder",
SubTitle: "Bytt til forskjellige tilbydere",
Title: 'Modelltilbyder',
SubTitle: 'Bytt til forskjellige tilbydere',
},
OpenAI: {
ApiKey: {
Title: "API-nøkkel",
Title: 'API-nøkkel',
SubTitle:
"Bruk egendefinert OpenAI-nøkkel for å omgå passordtilgangsbegrensninger",
Placeholder: "OpenAI API-nøkkel",
'Bruk egendefinert OpenAI-nøkkel for å omgå passordtilgangsbegrensninger',
Placeholder: 'OpenAI API-nøkkel',
},
Endpoint: {
Title: "API-adresse",
SubTitle: "Må inkludere http(s):// utenom standardadresse",
Title: 'API-adresse',
SubTitle: 'Må inkludere http(s):// utenom standardadresse',
},
},
Azure: {
ApiKey: {
Title: "API-nøkkel",
Title: 'API-nøkkel',
SubTitle:
"Bruk egendefinert Azure-nøkkel for å omgå passordtilgangsbegrensninger",
Placeholder: "Azure API-nøkkel",
'Bruk egendefinert Azure-nøkkel for å omgå passordtilgangsbegrensninger',
Placeholder: 'Azure API-nøkkel',
},
Endpoint: {
Title: "API-adresse",
SubTitle: "Eksempel:",
Title: 'API-adresse',
SubTitle: 'Eksempel:',
},
ApiVerion: {
Title: "API-versjon (azure api versjon)",
SubTitle: "Velg en spesifikk delversjon",
Title: 'API-versjon (azure api versjon)',
SubTitle: 'Velg en spesifikk delversjon',
},
},
Anthropic: {
ApiKey: {
Title: "API-nøkkel",
Title: 'API-nøkkel',
SubTitle:
"Bruk egendefinert Anthropic-nøkkel for å omgå passordtilgangsbegrensninger",
Placeholder: "Anthropic API-nøkkel",
'Bruk egendefinert Anthropic-nøkkel for å omgå passordtilgangsbegrensninger',
Placeholder: 'Anthropic API-nøkkel',
},
Endpoint: {
Title: "API-adresse",
SubTitle: "Eksempel:",
Title: 'API-adresse',
SubTitle: 'Eksempel:',
},
ApiVerion: {
Title: "API-versjon (claude api versjon)",
SubTitle: "Velg en spesifikk API-versjon",
Title: 'API-versjon (claude api versjon)',
SubTitle: 'Velg en spesifikk API-versjon',
},
},
Google: {
ApiKey: {
Title: "API-nøkkel",
SubTitle: "Hent din API-nøkkel fra Google AI",
Placeholder: "Skriv inn din Google AI Studio API-nøkkel",
Title: 'API-nøkkel',
SubTitle: 'Hent din API-nøkkel fra Google AI',
Placeholder: 'Skriv inn din Google AI Studio API-nøkkel',
},
Endpoint: {
Title: "Endepunktadresse",
SubTitle: "Eksempel:",
Title: 'Endepunktadresse',
SubTitle: 'Eksempel:',
},
ApiVersion: {
Title: "API-versjon (kun for gemini-pro)",
SubTitle: "Velg en spesifikk API-versjon",
Title: 'API-versjon (kun for gemini-pro)',
SubTitle: 'Velg en spesifikk API-versjon',
},
GoogleSafetySettings: {
Title: "Google sikkerhetsfiltreringsnivå",
SubTitle: "Sett innholdsfiltreringsnivå",
Title: 'Google sikkerhetsfiltreringsnivå',
SubTitle: 'Sett innholdsfiltreringsnivå',
},
},
Baidu: {
ApiKey: {
Title: "API-nøkkel",
SubTitle: "Bruk egendefinert Baidu API-nøkkel",
Placeholder: "Baidu API-nøkkel",
Title: 'API-nøkkel',
SubTitle: 'Bruk egendefinert Baidu API-nøkkel',
Placeholder: 'Baidu API-nøkkel',
},
SecretKey: {
Title: "Hemmelig nøkkel",
SubTitle: "Bruk egendefinert Baidu hemmelig nøkkel",
Placeholder: "Baidu hemmelig nøkkel",
Title: 'Hemmelig nøkkel',
SubTitle: 'Bruk egendefinert Baidu hemmelig nøkkel',
Placeholder: 'Baidu hemmelig nøkkel',
},
Endpoint: {
Title: "API-adresse",
Title: 'API-adresse',
SubTitle:
"Støtter ikke egendefinerte konfigurasjoner. Se .env-konfigurasjon.",
'Støtter ikke egendefinerte konfigurasjoner. Se .env-konfigurasjon.',
},
},
ByteDance: {
ApiKey: {
Title: "API-nøkkel",
SubTitle: "Bruk egendefinert ByteDance API-nøkkel",
Placeholder: "ByteDance API-nøkkel",
Title: 'API-nøkkel',
SubTitle: 'Bruk egendefinert ByteDance API-nøkkel',
Placeholder: 'ByteDance API-nøkkel',
},
Endpoint: {
Title: "API-adresse",
SubTitle: "Eksempel:",
Title: 'API-adresse',
SubTitle: 'Eksempel:',
},
},
Alibaba: {
ApiKey: {
Title: "API-nøkkel",
SubTitle: "Bruk egendefinert Alibaba Cloud API-nøkkel",
Placeholder: "Alibaba Cloud API-nøkkel",
Title: 'API-nøkkel',
SubTitle: 'Bruk egendefinert Alibaba Cloud API-nøkkel',
Placeholder: 'Alibaba Cloud API-nøkkel',
},
Endpoint: {
Title: "API-adresse",
SubTitle: "Eksempel:",
Title: 'API-adresse',
SubTitle: 'Eksempel:',
},
},
CustomModel: {
Title: "Egendefinert modellnavn",
SubTitle: "Legg til egendefinerte modellalternativer, skill med komma",
Title: 'Egendefinert modellnavn',
SubTitle: 'Legg til egendefinerte modellalternativer, skill med komma',
},
},
Model: "Modell",
Model: 'Modell',
CompressModel: {
Title: "Komprimeringsmodell",
SubTitle: "Modell brukt for å komprimere historikken",
Title: 'Komprimeringsmodell',
SubTitle: 'Modell brukt for å komprimere historikken',
},
Temperature: {
Title: "Tilfeldighet (temperature)",
SubTitle: "Høyere verdi gir mer tilfeldige svar",
Title: 'Tilfeldighet (temperature)',
SubTitle: 'Høyere verdi gir mer tilfeldige svar',
},
TopP: {
Title: "Kjerneprøvetaking (top_p)",
Title: 'Kjerneprøvetaking (top_p)',
SubTitle:
"Ligner på tilfeldighet, men endre ikke sammen med tilfeldighet",
'Ligner på tilfeldighet, men endre ikke sammen med tilfeldighet',
},
MaxTokens: {
Title: "Maksimalt antall tokens per svar (max_tokens)",
SubTitle: "Maksimalt antall tokens brukt i en enkelt interaksjon",
Title: 'Maksimalt antall tokens per svar (max_tokens)',
SubTitle: 'Maksimalt antall tokens brukt i en enkelt interaksjon',
},
PresencePenalty: {
Title: "Emnens ferskhet (presence_penalty)",
Title: 'Emnens ferskhet (presence_penalty)',
SubTitle:
"Høyere verdi gir større sannsynlighet for å utvide til nye emner",
'Høyere verdi gir større sannsynlighet for å utvide til nye emner',
},
FrequencyPenalty: {
Title: "Frekvensstraff (frequency_penalty)",
Title: 'Frekvensstraff (frequency_penalty)',
SubTitle:
"Høyere verdi gir større sannsynlighet for å redusere gjentakende ord",
'Høyere verdi gir større sannsynlighet for å redusere gjentakende ord',
},
},
Store: {
DefaultTopic: "Ny samtale",
BotHello: "Hva kan jeg hjelpe deg med?",
Error: "Noe gikk galt, prøv igjen senere",
DefaultTopic: 'Ny samtale',
BotHello: 'Hva kan jeg hjelpe deg med?',
Error: 'Noe gikk galt, prøv igjen senere',
Prompt: {
History: (content: string) =>
"Dette er oppsummeringen av historiske samtaler som bakgrunn:" +
content,
`Dette er oppsummeringen av historiske samtaler som bakgrunn:${
content}`,
Topic:
'Bruk fire til fem ord for å returnere en kort oppsummering av temaet, uten forklaring, uten tegnsetting, uten fyllord, uten ekstra tekst, uten fet skrift. Hvis det ikke er noe tema, returner bare "sladder".',
Summarize:
"Oppsummer samtalen kort som en kontekstuell prompt for fremtidige referanser, hold det innen 200 tegn",
'Oppsummer samtalen kort som en kontekstuell prompt for fremtidige referanser, hold det innen 200 tegn',
},
},
Copy: {
Success: "Kopiert til utklippstavlen",
Failed: "Kopiering mislyktes, vennligst gi tillatelse til utklippstavlen",
Success: 'Kopiert til utklippstavlen',
Failed: 'Kopiering mislyktes, vennligst gi tillatelse til utklippstavlen',
},
Download: {
Success: "Innholdet er lastet ned til katalogen din.",
Failed: "Nedlasting mislyktes.",
Success: 'Innholdet er lastet ned til katalogen din.',
Failed: 'Nedlasting mislyktes.',
},
Context: {
Toast: (x: any) => `Inneholder ${x} forhåndsinnstilte oppfordringer`,
Edit: "Nåværende samtaleinnstillinger",
Add: "Legg til en ny samtale",
Clear: "Konteksten er tømt",
Revert: "Gjenopprett konteksten",
Edit: 'Nåværende samtaleinnstillinger',
Add: 'Legg til en ny samtale',
Clear: 'Konteksten er tømt',
Revert: 'Gjenopprett konteksten',
},
Plugin: {
Name: "Plugin",
Name: 'Plugin',
},
FineTuned: {
Sysmessage: "Du er en assistent",
Sysmessage: 'Du er en assistent',
},
SearchChat: {
Name: "Søk",
Name: 'Søk',
Page: {
Title: "Søk i chatthistorikk",
Search: "Skriv inn søkeord",
NoResult: "Ingen resultater funnet",
NoData: "Ingen data",
Loading: "Laster inn",
Title: 'Søk i chatthistorikk',
Search: 'Skriv inn søkeord',
NoResult: 'Ingen resultater funnet',
NoData: 'Ingen data',
Loading: 'Laster inn',
SubTitle: (count: number) => `Fant ${count} resultater`,
},
Item: {
View: "Vis",
View: 'Vis',
},
},
Mask: {
Name: "Maske",
Name: 'Maske',
Page: {
Title: "Forhåndsdefinerte rollemasker",
Title: 'Forhåndsdefinerte rollemasker',
SubTitle: (count: number) =>
`${count} forhåndsdefinerte rolledefinisjoner`,
Search: "Søk etter rollemasker",
Create: "Opprett ny",
Search: 'Søk etter rollemasker',
Create: 'Opprett ny',
},
Item: {
Info: (count: number) => `Inneholder ${count} forhåndsdefinerte samtaler`,
Chat: "Samtale",
View: "Vis",
Edit: "Rediger",
Delete: "Slett",
DeleteConfirm: "Bekreft sletting?",
Chat: 'Samtale',
View: 'Vis',
Edit: 'Rediger',
Delete: 'Slett',
DeleteConfirm: 'Bekreft sletting?',
},
EditModal: {
Title: (readonly: boolean) =>
`Rediger forhåndsdefinert maske ${readonly ? "kun lesing" : ""}`,
Download: "Last ned forhåndsdefinert",
Clone: "Kopier forhåndsdefinert",
`Rediger forhåndsdefinert maske ${readonly ? 'kun lesing' : ''}`,
Download: 'Last ned forhåndsdefinert',
Clone: 'Kopier forhåndsdefinert',
},
Config: {
Avatar: "Rollebilde",
Name: "Rolle navn",
Avatar: 'Rollebilde',
Name: 'Rolle navn',
Sync: {
Title: "Bruk globale innstillinger",
SubTitle: "Bruker nåværende samtale globale modellinnstillinger",
Title: 'Bruk globale innstillinger',
SubTitle: 'Bruker nåværende samtale globale modellinnstillinger',
Confirm:
"De tilpassede innstillingene for den nåværende samtalen vil bli overskrevet automatisk. Bekreft at du vil bruke globale innstillinger?",
'De tilpassede innstillingene for den nåværende samtalen vil bli overskrevet automatisk. Bekreft at du vil bruke globale innstillinger?',
},
HideContext: {
Title: "Skjul forhåndsdefinerte samtaler",
Title: 'Skjul forhåndsdefinerte samtaler',
SubTitle:
"Når skjult, vil forhåndsdefinerte samtaler ikke vises i chat-grensesnittet",
'Når skjult, vil forhåndsdefinerte samtaler ikke vises i chat-grensesnittet',
},
Share: {
Title: "Del denne masken",
SubTitle: "Generer en direkte lenke til denne masken",
Action: "Kopier lenke",
Title: 'Del denne masken',
SubTitle: 'Generer en direkte lenke til denne masken',
Action: 'Kopier lenke',
},
},
},
NewChat: {
Return: "Tilbake",
Skip: "Start direkte",
NotShow: "Vis ikke igjen",
Return: 'Tilbake',
Skip: 'Start direkte',
NotShow: 'Vis ikke igjen',
ConfirmNoShow:
"Bekreft deaktivering? Du kan aktivere det igjen i innstillingene når som helst.",
Title: "Velg en maske",
SubTitle: "Start nå, og få tanker som kolliderer med sjelen bak masken",
More: "Se alle",
'Bekreft deaktivering? Du kan aktivere det igjen i innstillingene når som helst.',
Title: 'Velg en maske',
SubTitle: 'Start nå, og få tanker som kolliderer med sjelen bak masken',
More: 'Se alle',
},
URLCommand: {
Code: "Oppdaget at lenken allerede inneholder tilgangskode. Ønsker du å fylle den ut automatisk?",
Code: 'Oppdaget at lenken allerede inneholder tilgangskode. Ønsker du å fylle den ut automatisk?',
Settings:
"Oppdaget at lenken inneholder forhåndsinnstillinger. Ønsker du å fylle dem ut automatisk?",
'Oppdaget at lenken inneholder forhåndsinnstillinger. Ønsker du å fylle dem ut automatisk?',
},
UI: {
Confirm: "Bekreft",
Cancel: "Avbryt",
Close: "Lukk",
Create: "Opprett",
Edit: "Rediger",
Export: "Eksporter",
Import: "Importer",
Sync: "Synkroniser",
Config: "Konfigurer",
Confirm: 'Bekreft',
Cancel: 'Avbryt',
Close: 'Lukk',
Create: 'Opprett',
Edit: 'Rediger',
Export: 'Eksporter',
Import: 'Importer',
Sync: 'Synkroniser',
Config: 'Konfigurer',
},
Exporter: {
Description: {
Title: "Bare meldinger etter at konteksten er ryddet vil bli vist",
Title: 'Bare meldinger etter at konteksten er ryddet vil bli vist',
},
Model: "Modell",
Messages: "Meldinger",
Topic: "Emne",
Time: "Tid",
Model: 'Modell',
Messages: 'Meldinger',
Topic: 'Emne',
Time: 'Tid',
},
};

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import { PartialLocaleType } from "../locales/index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from '../locales/index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const pt: PartialLocaleType = {
WIP: "Em breve...",
WIP: 'Em breve...',
Error: {
Unauthorized: isApp
? `😆 A conversa encontrou alguns problemas, não se preocupe:
@@ -18,16 +19,16 @@ const pt: PartialLocaleType = {
`,
},
Auth: {
Title: "Necessário Código de Acesso",
Tips: "Por favor, insira o código de acesso abaixo",
SubTips: "Ou insira sua Chave API OpenAI",
Input: "código de acesso",
Confirm: "Confirmar",
Later: "Depois",
Return: "Voltar",
SaasTips: "A configuração é muito complicada, quero usá-la imediatamente",
Title: 'Necessário Código de Acesso',
Tips: 'Por favor, insira o código de acesso abaixo',
SubTips: 'Ou insira sua Chave API OpenAI',
Input: 'código de acesso',
Confirm: 'Confirmar',
Later: 'Depois',
Return: 'Voltar',
SaasTips: 'A configuração é muito complicada, quero usá-la imediatamente',
TopTips:
"🥳 Oferta de Lançamento do NextChat AI, desbloqueie o OpenAI o1, GPT-4o, Claude-3.5 e os mais recentes grandes modelos agora",
'🥳 Oferta de Lançamento do NextChat AI, desbloqueie o OpenAI o1, GPT-4o, Claude-3.5 e os mais recentes grandes modelos agora',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} mensagens`,
@@ -35,493 +36,493 @@ const pt: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `${count} mensagens`,
EditMessage: {
Title: "Editar Todas as Mensagens",
Title: 'Editar Todas as Mensagens',
Topic: {
Title: "Tópico",
SubTitle: "Mudar o tópico atual",
Title: 'Tópico',
SubTitle: 'Mudar o tópico atual',
},
},
Actions: {
ChatList: "Ir Para Lista de Chat",
CompressedHistory: "Prompt de Memória Histórica Comprimida",
Export: "Exportar Todas as Mensagens como Markdown",
Copy: "Copiar",
Stop: "Parar",
Retry: "Tentar Novamente",
Pin: "Fixar",
PinToastContent: "Fixada 1 mensagem para prompts contextuais",
PinToastAction: "Visualizar",
Delete: "Deletar",
Edit: "Editar",
RefreshTitle: "Atualizar Título",
RefreshToast: "Solicitação de atualização de título enviada",
ChatList: 'Ir Para Lista de Chat',
CompressedHistory: 'Prompt de Memória Histórica Comprimida',
Export: 'Exportar Todas as Mensagens como Markdown',
Copy: 'Copiar',
Stop: 'Parar',
Retry: 'Tentar Novamente',
Pin: 'Fixar',
PinToastContent: 'Fixada 1 mensagem para prompts contextuais',
PinToastAction: 'Visualizar',
Delete: 'Deletar',
Edit: 'Editar',
RefreshTitle: 'Atualizar Título',
RefreshToast: 'Solicitação de atualização de título enviada',
},
Commands: {
new: "Iniciar um novo chat",
newm: "Iniciar um novo chat com máscara",
next: "Próximo Chat",
prev: "Chat Anterior",
clear: "Limpar Contexto",
del: "Deletar Chat",
new: 'Iniciar um novo chat',
newm: 'Iniciar um novo chat com máscara',
next: 'Próximo Chat',
prev: 'Chat Anterior',
clear: 'Limpar Contexto',
del: 'Deletar Chat',
},
InputActions: {
Stop: "Parar",
ToBottom: "Para o Mais Recente",
Stop: 'Parar',
ToBottom: 'Para o Mais Recente',
Theme: {
auto: "Automático",
light: "Tema Claro",
dark: "Tema Escuro",
auto: 'Automático',
light: 'Tema Claro',
dark: 'Tema Escuro',
},
Prompt: "Prompts",
Masks: "Máscaras",
Clear: "Limpar Contexto",
Settings: "Configurações",
Prompt: 'Prompts',
Masks: 'Máscaras',
Clear: 'Limpar Contexto',
Settings: 'Configurações',
},
Rename: "Renomear Chat",
Typing: "Digitando…",
Rename: 'Renomear Chat',
Typing: 'Digitando…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} para enviar`;
let inputHints = `${submitKey} para enviar`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += ", Shift + Enter para quebrar linha";
inputHints += ', Shift + Enter para quebrar linha';
}
return inputHints + ", / para buscar prompts, : para usar comandos";
return `${inputHints}, / para buscar prompts, : para usar comandos`;
},
Send: "Enviar",
Send: 'Enviar',
Config: {
Reset: "Redefinir para Padrão",
SaveAs: "Salvar como Máscara",
Reset: 'Redefinir para Padrão',
SaveAs: 'Salvar como Máscara',
},
IsContext: "Prompt Contextual",
IsContext: 'Prompt Contextual',
},
Export: {
Title: "Exportar Mensagens",
Copy: "Copiar Tudo",
Download: "Baixar",
MessageFromYou: "Mensagem De Você",
MessageFromChatGPT: "Mensagem De ChatGPT",
Share: "Compartilhar para ShareGPT",
Title: 'Exportar Mensagens',
Copy: 'Copiar Tudo',
Download: 'Baixar',
MessageFromYou: 'Mensagem De Você',
MessageFromChatGPT: 'Mensagem De ChatGPT',
Share: 'Compartilhar para ShareGPT',
Format: {
Title: "Formato de Exportação",
SubTitle: "Markdown ou Imagem PNG",
Title: 'Formato de Exportação',
SubTitle: 'Markdown ou Imagem PNG',
},
IncludeContext: {
Title: "Incluindo Contexto",
SubTitle: "Exportar prompts de contexto na máscara ou não",
Title: 'Incluindo Contexto',
SubTitle: 'Exportar prompts de contexto na máscara ou não',
},
Steps: {
Select: "Selecionar",
Preview: "Pré-visualizar",
Select: 'Selecionar',
Preview: 'Pré-visualizar',
},
Image: {
Toast: "Capturando Imagem...",
Toast: 'Capturando Imagem...',
Modal:
"Pressione longamente ou clique com o botão direito para salvar a imagem",
'Pressione longamente ou clique com o botão direito para salvar a imagem',
},
},
Select: {
Search: "Buscar",
All: "Selecionar Tudo",
Latest: "Selecionar Mais Recente",
Clear: "Limpar",
Search: 'Buscar',
All: 'Selecionar Tudo',
Latest: 'Selecionar Mais Recente',
Clear: 'Limpar',
},
Memory: {
Title: "Prompt de Memória",
EmptyContent: "Nada ainda.",
Send: "Enviar Memória",
Copy: "Copiar Memória",
Reset: "Resetar Sessão",
Title: 'Prompt de Memória',
EmptyContent: 'Nada ainda.',
Send: 'Enviar Memória',
Copy: 'Copiar Memória',
Reset: 'Resetar Sessão',
ResetConfirm:
"Resetar irá limpar o histórico de conversa atual e a memória histórica. Você tem certeza que quer resetar?",
'Resetar irá limpar o histórico de conversa atual e a memória histórica. Você tem certeza que quer resetar?',
},
Home: {
NewChat: "Novo Chat",
DeleteChat: "Confirmar para deletar a conversa selecionada?",
DeleteToast: "Chat Deletado",
Revert: "Reverter",
NewChat: 'Novo Chat',
DeleteChat: 'Confirmar para deletar a conversa selecionada?',
DeleteToast: 'Chat Deletado',
Revert: 'Reverter',
},
Settings: {
Title: "Configurações",
SubTitle: "Todas as Configurações",
Title: 'Configurações',
SubTitle: 'Todas as Configurações',
Danger: {
Reset: {
Title: "Resetar Todas as Configurações",
SubTitle: "Resetar todos os itens de configuração para o padrão",
Action: "Resetar",
Confirm: "Confirmar para resetar todas as configurações para o padrão?",
Title: 'Resetar Todas as Configurações',
SubTitle: 'Resetar todos os itens de configuração para o padrão',
Action: 'Resetar',
Confirm: 'Confirmar para resetar todas as configurações para o padrão?',
},
Clear: {
Title: "Limpar Todos os Dados",
SubTitle: "Limpar todas as mensagens e configurações",
Action: "Limpar",
Confirm: "Confirmar para limpar todas as mensagens e configurações?",
Title: 'Limpar Todos os Dados',
SubTitle: 'Limpar todas as mensagens e configurações',
Action: 'Limpar',
Confirm: 'Confirmar para limpar todas as mensagens e configurações?',
},
},
Lang: {
Name: "Language",
All: "Todos os Idiomas",
Name: 'Language',
All: 'Todos os Idiomas',
},
Avatar: "Avatar",
Avatar: 'Avatar',
FontSize: {
Title: "Tamanho da Fonte",
SubTitle: "Ajustar o tamanho da fonte do conteúdo do chat",
Title: 'Tamanho da Fonte',
SubTitle: 'Ajustar o tamanho da fonte do conteúdo do chat',
},
FontFamily: {
Title: "Fonte do Chat",
Title: 'Fonte do Chat',
SubTitle:
"Fonte do conteúdo do chat, deixe vazio para aplicar a fonte padrão global",
Placeholder: "Nome da Fonte",
'Fonte do conteúdo do chat, deixe vazio para aplicar a fonte padrão global',
Placeholder: 'Nome da Fonte',
},
InjectSystemPrompts: {
Title: "Inserir Prompts de Sistema",
SubTitle: "Inserir um prompt de sistema global para cada requisição",
Title: 'Inserir Prompts de Sistema',
SubTitle: 'Inserir um prompt de sistema global para cada requisição',
},
InputTemplate: {
Title: "Modelo de Entrada",
SubTitle: "A mensagem mais recente será preenchida neste modelo",
Title: 'Modelo de Entrada',
SubTitle: 'A mensagem mais recente será preenchida neste modelo',
},
Update: {
Version: (x: string) => `Versão: ${x}`,
IsLatest: "Última versão",
CheckUpdate: "Verificar Atualização",
IsChecking: "Verificando atualização...",
IsLatest: 'Última versão',
CheckUpdate: 'Verificar Atualização',
IsChecking: 'Verificando atualização...',
FoundUpdate: (x: string) => `Nova versão encontrada: ${x}`,
GoToUpdate: "Atualizar",
GoToUpdate: 'Atualizar',
},
SendKey: "Tecla de Envio",
Theme: "Tema",
TightBorder: "Borda Ajustada",
SendKey: 'Tecla de Envio',
Theme: 'Tema',
TightBorder: 'Borda Ajustada',
SendPreviewBubble: {
Title: "Bolha de Pré-visualização de Envio",
SubTitle: "Pré-visualizar markdown na bolha",
Title: 'Bolha de Pré-visualização de Envio',
SubTitle: 'Pré-visualizar markdown na bolha',
},
AutoGenerateTitle: {
Title: "Gerar Título Automaticamente",
SubTitle: "Gerar um título adequado baseado no conteúdo da conversa",
Title: 'Gerar Título Automaticamente',
SubTitle: 'Gerar um título adequado baseado no conteúdo da conversa',
},
Sync: {
CloudState: "Última Atualização",
NotSyncYet: "Ainda não sincronizado",
Success: "Sincronização bem sucedida",
Fail: "Falha na sincronização",
CloudState: 'Última Atualização',
NotSyncYet: 'Ainda não sincronizado',
Success: 'Sincronização bem sucedida',
Fail: 'Falha na sincronização',
Config: {
Modal: {
Title: "Configurar Sincronização",
Check: "Verificar Conexão",
Title: 'Configurar Sincronização',
Check: 'Verificar Conexão',
},
SyncType: {
Title: "Tipo de Sincronização",
SubTitle: "Escolha seu serviço de sincronização favorito",
Title: 'Tipo de Sincronização',
SubTitle: 'Escolha seu serviço de sincronização favorito',
},
Proxy: {
Title: "Habilitar Proxy CORS",
SubTitle: "Habilitar um proxy para evitar restrições de cross-origin",
Title: 'Habilitar Proxy CORS',
SubTitle: 'Habilitar um proxy para evitar restrições de cross-origin',
},
ProxyUrl: {
Title: "Endpoint de Proxy",
SubTitle: "Apenas aplicável ao proxy CORS embutido para este projeto",
Title: 'Endpoint de Proxy',
SubTitle: 'Apenas aplicável ao proxy CORS embutido para este projeto',
},
WebDav: {
Endpoint: "Endpoint WebDAV",
UserName: "Nome de Usuário",
Password: "Senha",
Endpoint: 'Endpoint WebDAV',
UserName: 'Nome de Usuário',
Password: 'Senha',
},
UpStash: {
Endpoint: "URL REST Redis UpStash",
UserName: "Nome do Backup",
Password: "Token REST Redis UpStash",
Endpoint: 'URL REST Redis UpStash',
UserName: 'Nome do Backup',
Password: 'Token REST Redis UpStash',
},
},
LocalState: "Dados Locais",
LocalState: 'Dados Locais',
Overview: (overview: any) => {
return `${overview.chat} chats${overview.message} mensagens${overview.prompt} prompts${overview.mask} máscaras`;
},
ImportFailed: "Falha ao importar do arquivo",
ImportFailed: 'Falha ao importar do arquivo',
},
Mask: {
Splash: {
Title: "Tela de Início da Máscara",
Title: 'Tela de Início da Máscara',
SubTitle:
"Mostrar uma tela de início da máscara antes de iniciar novo chat",
'Mostrar uma tela de início da máscara antes de iniciar novo chat',
},
Builtin: {
Title: "Esconder Máscaras Embutidas",
SubTitle: "Esconder máscaras embutidas na lista de máscaras",
Title: 'Esconder Máscaras Embutidas',
SubTitle: 'Esconder máscaras embutidas na lista de máscaras',
},
},
Prompt: {
Disable: {
Title: "Desabilitar auto-completar",
SubTitle: "Digite / para acionar auto-completar",
Title: 'Desabilitar auto-completar',
SubTitle: 'Digite / para acionar auto-completar',
},
List: "Lista de Prompts",
List: 'Lista de Prompts',
ListCount: (builtin: number, custom: number) =>
`${builtin} embutidos, ${custom} definidos pelo usuário`,
Edit: "Editar",
Edit: 'Editar',
Modal: {
Title: "Lista de Prompts",
Add: "Adicionar Um",
Search: "Buscar Prompts",
Title: 'Lista de Prompts',
Add: 'Adicionar Um',
Search: 'Buscar Prompts',
},
EditModal: {
Title: "Editar Prompt",
Title: 'Editar Prompt',
},
},
HistoryCount: {
Title: "Contagem de Mensagens Anexadas",
SubTitle: "Número de mensagens enviadas anexadas por requisição",
Title: 'Contagem de Mensagens Anexadas',
SubTitle: 'Número de mensagens enviadas anexadas por requisição',
},
CompressThreshold: {
Title: "Limite de Compressão de Histórico",
Title: 'Limite de Compressão de Histórico',
SubTitle:
"Irá comprimir se o comprimento das mensagens não comprimidas exceder o valor",
'Irá comprimir se o comprimento das mensagens não comprimidas exceder o valor',
},
Usage: {
Title: "Saldo da Conta",
Title: 'Saldo da Conta',
SubTitle(used: any, total: any) {
return `Usado este mês ${used}, assinatura ${total}`;
},
IsChecking: "Verificando...",
Check: "Verificar",
NoAccess: "Insira a Chave API para verificar o saldo",
IsChecking: 'Verificando...',
Check: 'Verificar',
NoAccess: 'Insira a Chave API para verificar o saldo',
},
Access: {
SaasStart: {
Title: "Usar NextChat AI",
Label: "(A solução mais econômica)",
Title: 'Usar NextChat AI',
Label: '(A solução mais econômica)',
SubTitle:
"Mantido oficialmente pelo NextChat, pronto para uso sem configuração, suporta os mais recentes grandes modelos como OpenAI o1, GPT-4o e Claude-3.5",
ChatNow: "Conversar agora",
'Mantido oficialmente pelo NextChat, pronto para uso sem configuração, suporta os mais recentes grandes modelos como OpenAI o1, GPT-4o e Claude-3.5',
ChatNow: 'Conversar agora',
},
AccessCode: {
Title: "Código de Acesso",
SubTitle: "Controle de Acesso Habilitado",
Placeholder: "Insira o Código",
Title: 'Código de Acesso',
SubTitle: 'Controle de Acesso Habilitado',
Placeholder: 'Insira o Código',
},
CustomEndpoint: {
Title: "Endpoint Personalizado",
SubTitle: "Use serviço personalizado Azure ou OpenAI",
Title: 'Endpoint Personalizado',
SubTitle: 'Use serviço personalizado Azure ou OpenAI',
},
Provider: {
Title: "Provedor do Modelo",
SubTitle: "Selecione Azure ou OpenAI",
Title: 'Provedor do Modelo',
SubTitle: 'Selecione Azure ou OpenAI',
},
OpenAI: {
ApiKey: {
Title: "Chave API OpenAI",
SubTitle: "Usar Chave API OpenAI personalizada",
Placeholder: "sk-xxx",
Title: 'Chave API OpenAI',
SubTitle: 'Usar Chave API OpenAI personalizada',
Placeholder: 'sk-xxx',
},
Endpoint: {
Title: "Endpoint OpenAI",
Title: 'Endpoint OpenAI',
SubTitle:
"Deve começar com http(s):// ou usar /api/openai como padrão",
'Deve começar com http(s):// ou usar /api/openai como padrão',
},
},
Azure: {
ApiKey: {
Title: "Chave API Azure",
SubTitle: "Verifique sua chave API do console Azure",
Placeholder: "Chave API Azure",
Title: 'Chave API Azure',
SubTitle: 'Verifique sua chave API do console Azure',
Placeholder: 'Chave API Azure',
},
Endpoint: {
Title: "Endpoint Azure",
SubTitle: "Exemplo: ",
Title: 'Endpoint Azure',
SubTitle: 'Exemplo: ',
},
ApiVerion: {
Title: "Versão API Azure",
SubTitle: "Verifique sua versão API do console Azure",
Title: 'Versão API Azure',
SubTitle: 'Verifique sua versão API do console Azure',
},
},
Anthropic: {
ApiKey: {
Title: "Chave API Anthropic",
SubTitle: "Verifique sua chave API do console Anthropic",
Placeholder: "Chave API Anthropic",
Title: 'Chave API Anthropic',
SubTitle: 'Verifique sua chave API do console Anthropic',
Placeholder: 'Chave API Anthropic',
},
Endpoint: {
Title: "Endpoint Address",
SubTitle: "Exemplo: ",
Title: 'Endpoint Address',
SubTitle: 'Exemplo: ',
},
ApiVerion: {
Title: "Versão API (Versão api claude)",
SubTitle: "Verifique sua versão API do console Anthropic",
Title: 'Versão API (Versão api claude)',
SubTitle: 'Verifique sua versão API do console Anthropic',
},
},
CustomModel: {
Title: "Modelos Personalizados",
SubTitle: "Opções de modelo personalizado, separados por vírgula",
Title: 'Modelos Personalizados',
SubTitle: 'Opções de modelo personalizado, separados por vírgula',
},
},
Model: "Modelo",
Model: 'Modelo',
CompressModel: {
Title: "Modelo de Compressão",
SubTitle: "Modelo usado para comprimir o histórico",
Title: 'Modelo de Compressão',
SubTitle: 'Modelo usado para comprimir o histórico',
},
Temperature: {
Title: "Temperatura",
SubTitle: "Um valor maior torna a saída mais aleatória",
Title: 'Temperatura',
SubTitle: 'Um valor maior torna a saída mais aleatória',
},
TopP: {
Title: "Top P",
SubTitle: "Não altere este valor junto com a temperatura",
Title: 'Top P',
SubTitle: 'Não altere este valor junto com a temperatura',
},
MaxTokens: {
Title: "Máximo de Tokens",
SubTitle: "Comprimento máximo de tokens de entrada e tokens gerados",
Title: 'Máximo de Tokens',
SubTitle: 'Comprimento máximo de tokens de entrada e tokens gerados',
},
PresencePenalty: {
Title: "Penalidade de Presença",
Title: 'Penalidade de Presença',
SubTitle:
"Um valor maior aumenta a probabilidade de falar sobre novos tópicos",
'Um valor maior aumenta a probabilidade de falar sobre novos tópicos',
},
FrequencyPenalty: {
Title: "Penalidade de Frequência",
Title: 'Penalidade de Frequência',
SubTitle:
"Um valor maior diminui a probabilidade de repetir a mesma linha",
'Um valor maior diminui a probabilidade de repetir a mesma linha',
},
},
Store: {
DefaultTopic: "Nova Conversa",
BotHello: "Olá! Como posso ajudá-lo hoje?",
Error: "Algo deu errado, por favor tente novamente mais tarde.",
DefaultTopic: 'Nova Conversa',
BotHello: 'Olá! Como posso ajudá-lo hoje?',
Error: 'Algo deu errado, por favor tente novamente mais tarde.',
Prompt: {
History: (content: string) =>
"Este é um resumo do histórico de chat como um recapitulativo: " +
content,
`Este é um resumo do histórico de chat como um recapitulativo: ${
content}`,
Topic:
"Por favor, gere um título de quatro a cinco palavras resumindo nossa conversa sem qualquer introdução, pontuação, aspas, períodos, símbolos ou texto adicional. Remova as aspas que o envolvem.",
'Por favor, gere um título de quatro a cinco palavras resumindo nossa conversa sem qualquer introdução, pontuação, aspas, períodos, símbolos ou texto adicional. Remova as aspas que o envolvem.',
Summarize:
"Resuma a discussão brevemente em 200 palavras ou menos para usar como um prompt para o contexto futuro.",
'Resuma a discussão brevemente em 200 palavras ou menos para usar como um prompt para o contexto futuro.',
},
},
Copy: {
Success: "Copiado para a área de transferência",
Success: 'Copiado para a área de transferência',
Failed:
"Falha na cópia, por favor conceda permissão para acessar a área de transferência",
'Falha na cópia, por favor conceda permissão para acessar a área de transferência',
},
Download: {
Success: "Conteúdo baixado para seu diretório.",
Failed: "Falha no download.",
Success: 'Conteúdo baixado para seu diretório.',
Failed: 'Falha no download.',
},
Context: {
Toast: (x: any) => `Com ${x} prompts contextuais`,
Edit: "Configurações do Chat Atual",
Add: "Adicionar um Prompt",
Clear: "Contexto Limpo",
Revert: "Reverter",
Edit: 'Configurações do Chat Atual',
Add: 'Adicionar um Prompt',
Clear: 'Contexto Limpo',
Revert: 'Reverter',
},
Plugin: {
Name: "Plugin",
Name: 'Plugin',
},
FineTuned: {
Sysmessage: "Você é um assistente que",
Sysmessage: 'Você é um assistente que',
},
SearchChat: {
Name: "Pesquisar",
Name: 'Pesquisar',
Page: {
Title: "Pesquisar histórico de chat",
Search: "Digite palavras-chave para pesquisa",
NoResult: "Nenhum resultado encontrado",
NoData: "Sem dados",
Loading: "Carregando",
Title: 'Pesquisar histórico de chat',
Search: 'Digite palavras-chave para pesquisa',
NoResult: 'Nenhum resultado encontrado',
NoData: 'Sem dados',
Loading: 'Carregando',
SubTitle: (count: number) => `Encontrado ${count} resultados`,
},
Item: {
View: "Ver",
View: 'Ver',
},
},
Mask: {
Name: "Máscara",
Name: 'Máscara',
Page: {
Title: "Template de Prompt",
Title: 'Template de Prompt',
SubTitle: (count: number) => `${count} templates de prompt`,
Search: "Buscar Templates",
Create: "Criar",
Search: 'Buscar Templates',
Create: 'Criar',
},
Item: {
Info: (count: number) => `${count} prompts`,
Chat: "Chat",
View: "Visualizar",
Edit: "Editar",
Delete: "Deletar",
DeleteConfirm: "Confirmar para deletar?",
Chat: 'Chat',
View: 'Visualizar',
Edit: 'Editar',
Delete: 'Deletar',
DeleteConfirm: 'Confirmar para deletar?',
},
EditModal: {
Title: (readonly: boolean) =>
`Editar Template de Prompt ${readonly ? "(somente leitura)" : ""}`,
Download: "Baixar",
Clone: "Clonar",
`Editar Template de Prompt ${readonly ? '(somente leitura)' : ''}`,
Download: 'Baixar',
Clone: 'Clonar',
},
Config: {
Avatar: "Avatar do Bot",
Name: "Nome do Bot",
Avatar: 'Avatar do Bot',
Name: 'Nome do Bot',
Sync: {
Title: "Usar Configuração Global",
SubTitle: "Usar configuração global neste chat",
Title: 'Usar Configuração Global',
SubTitle: 'Usar configuração global neste chat',
Confirm:
"Confirmar para substituir a configuração personalizada pela configuração global?",
'Confirmar para substituir a configuração personalizada pela configuração global?',
},
HideContext: {
Title: "Esconder Prompts de Contexto",
SubTitle: "Não mostrar prompts de contexto no chat",
Title: 'Esconder Prompts de Contexto',
SubTitle: 'Não mostrar prompts de contexto no chat',
},
Share: {
Title: "Compartilhar Esta Máscara",
SubTitle: "Gerar um link para esta máscara",
Action: "Copiar Link",
Title: 'Compartilhar Esta Máscara',
SubTitle: 'Gerar um link para esta máscara',
Action: 'Copiar Link',
},
},
},
NewChat: {
Return: "Retornar",
Skip: "Apenas Começar",
Title: "Escolher uma Máscara",
SubTitle: "Converse com a Alma por trás da Máscara",
More: "Encontre Mais",
NotShow: "Nunca Mostrar Novamente",
Return: 'Retornar',
Skip: 'Apenas Começar',
Title: 'Escolher uma Máscara',
SubTitle: 'Converse com a Alma por trás da Máscara',
More: 'Encontre Mais',
NotShow: 'Nunca Mostrar Novamente',
ConfirmNoShow:
"Confirmar para desabilitarVocê pode habilitar nas configurações depois.",
'Confirmar para desabilitarVocê pode habilitar nas configurações depois.',
},
UI: {
Confirm: "Confirmar",
Cancel: "Cancelar",
Close: "Fechar",
Create: "Criar",
Edit: "Editar",
Export: "Exportar",
Import: "Importar",
Sync: "Sincronizar",
Config: "Configurar",
Confirm: 'Confirmar',
Cancel: 'Cancelar',
Close: 'Fechar',
Create: 'Criar',
Edit: 'Editar',
Export: 'Exportar',
Import: 'Importar',
Sync: 'Sincronizar',
Config: 'Configurar',
},
Exporter: {
Description: {
Title: "Apenas mensagens após a limpeza do contexto serão exibidas",
Title: 'Apenas mensagens após a limpeza do contexto serão exibidas',
},
Model: "Modelo",
Messages: "Mensagens",
Topic: "Tópico",
Time: "Tempo",
Model: 'Modelo',
Messages: 'Mensagens',
Topic: 'Tópico',
Time: 'Tempo',
},
URLCommand: {
Code: "Código de acesso detectado a partir da url, confirmar para aplicar? ",
Code: 'Código de acesso detectado a partir da url, confirmar para aplicar? ',
Settings:
"Configurações detectadas a partir da url, confirmar para aplicar?",
'Configurações detectadas a partir da url, confirmar para aplicar?',
},
};

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import { PartialLocaleType } from "../locales/index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from '../locales/index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const ru: PartialLocaleType = {
WIP: "Скоро...",
WIP: 'Скоро...',
Error: {
Unauthorized: isApp
? `😆 В разговоре возникли некоторые проблемы, не переживайте:
@@ -18,16 +19,16 @@ const ru: PartialLocaleType = {
`,
},
Auth: {
Title: "Требуется пароль",
Tips: "Администратор включил проверку пароля. Пожалуйста, введите код доступа ниже",
SubTips: "Или введите ваш API-ключ OpenAI или Google",
Input: "Введите код доступа здесь",
Confirm: "Подтвердить",
Later: "Позже",
Return: "Назад",
SaasTips: "Настройка слишком сложна, я хочу использовать это немедленно",
Title: 'Требуется пароль',
Tips: 'Администратор включил проверку пароля. Пожалуйста, введите код доступа ниже',
SubTips: 'Или введите ваш API-ключ OpenAI или Google',
Input: 'Введите код доступа здесь',
Confirm: 'Подтвердить',
Later: 'Позже',
Return: 'Назад',
SaasTips: 'Настройка слишком сложна, я хочу использовать это немедленно',
TopTips:
"🥳 Предложение по запуску NextChat AI: разблокируйте OpenAI o1, GPT-4o, Claude-3.5 и новейшие большие модели прямо сейчас",
'🥳 Предложение по запуску NextChat AI: разблокируйте OpenAI o1, GPT-4o, Claude-3.5 и новейшие большие модели прямо сейчас',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} бесед`,
@@ -35,563 +36,563 @@ const ru: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `Всего ${count} бесед`,
EditMessage: {
Title: "Редактировать сообщение",
Title: 'Редактировать сообщение',
Topic: {
Title: "Тема чата",
SubTitle: "Изменить текущую тему чата",
Title: 'Тема чата',
SubTitle: 'Изменить текущую тему чата',
},
},
Actions: {
ChatList: "Просмотреть список сообщений",
CompressedHistory: "Просмотреть сжатую историю подсказок",
Export: "Экспортировать чат",
Copy: "Копировать",
Stop: "Остановить",
Retry: "Повторить",
Pin: "Закрепить",
PinToastContent: "1 беседа закреплена в предустановленных подсказках",
PinToastAction: "Просмотреть",
Delete: "Удалить",
Edit: "Редактировать",
RefreshTitle: "Обновить заголовок",
RefreshToast: "Запрос на обновление заголовка отправлен",
ChatList: 'Просмотреть список сообщений',
CompressedHistory: 'Просмотреть сжатую историю подсказок',
Export: 'Экспортировать чат',
Copy: 'Копировать',
Stop: 'Остановить',
Retry: 'Повторить',
Pin: 'Закрепить',
PinToastContent: '1 беседа закреплена в предустановленных подсказках',
PinToastAction: 'Просмотреть',
Delete: 'Удалить',
Edit: 'Редактировать',
RefreshTitle: 'Обновить заголовок',
RefreshToast: 'Запрос на обновление заголовка отправлен',
},
Commands: {
new: "Новый чат",
newm: "Создать чат из маски",
next: "Следующий чат",
prev: "Предыдущий чат",
clear: "Очистить контекст",
del: "Удалить чат",
new: 'Новый чат',
newm: 'Создать чат из маски',
next: 'Следующий чат',
prev: 'Предыдущий чат',
clear: 'Очистить контекст',
del: 'Удалить чат',
},
InputActions: {
Stop: "Остановить ответ",
ToBottom: "Перейти к последнему",
Stop: 'Остановить ответ',
ToBottom: 'Перейти к последнему',
Theme: {
auto: "Автоматическая тема",
light: "Светлая тема",
dark: "Темная тема",
auto: 'Автоматическая тема',
light: 'Светлая тема',
dark: 'Темная тема',
},
Prompt: "Быстрая команда",
Masks: "Все маски",
Clear: "Очистить чат",
Settings: "Настройки чата",
UploadImage: "Загрузить изображение",
Prompt: 'Быстрая команда',
Masks: 'Все маски',
Clear: 'Очистить чат',
Settings: 'Настройки чата',
UploadImage: 'Загрузить изображение',
},
Rename: "Переименовать чат",
Typing: "Печатает…",
Rename: 'Переименовать чат',
Typing: 'Печатает…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} Отправить`;
let inputHints = `${submitKey} Отправить`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "Shift + Enter для новой строки";
inputHints += 'Shift + Enter для новой строки';
}
return inputHints + "/ для автозаполнения,: для команд";
return `${inputHints}/ для автозаполнения,: для команд`;
},
Send: "Отправить",
Send: 'Отправить',
Config: {
Reset: "Очистить память",
SaveAs: "Сохранить как маску",
Reset: 'Очистить память',
SaveAs: 'Сохранить как маску',
},
IsContext: "Предустановленные подсказки",
IsContext: 'Предустановленные подсказки',
},
Export: {
Title: "Поделиться историей чата",
Copy: "Копировать все",
Download: "Скачать файл",
Share: "Поделиться в ShareGPT",
MessageFromYou: "Пользователь",
MessageFromChatGPT: "ChatGPT",
Title: 'Поделиться историей чата',
Copy: 'Копировать все',
Download: 'Скачать файл',
Share: 'Поделиться в ShareGPT',
MessageFromYou: 'Пользователь',
MessageFromChatGPT: 'ChatGPT',
Format: {
Title: "Формат экспорта",
SubTitle: "Можно экспортировать как Markdown текст или PNG изображение",
Title: 'Формат экспорта',
SubTitle: 'Можно экспортировать как Markdown текст или PNG изображение',
},
IncludeContext: {
Title: "Включить контекст маски",
SubTitle: "Показывать ли контекст маски в сообщениях",
Title: 'Включить контекст маски',
SubTitle: 'Показывать ли контекст маски в сообщениях',
},
Steps: {
Select: "Выбрать",
Preview: "Предпросмотр",
Select: 'Выбрать',
Preview: 'Предпросмотр',
},
Image: {
Toast: "Создание скриншота",
Modal: "Длительное нажатие или правый клик для сохранения изображения",
Toast: 'Создание скриншота',
Modal: 'Длительное нажатие или правый клик для сохранения изображения',
},
},
Select: {
Search: "Поиск сообщений",
All: "Выбрать все",
Latest: "Последние сообщения",
Clear: "Очистить выбор",
Search: 'Поиск сообщений',
All: 'Выбрать все',
Latest: 'Последние сообщения',
Clear: 'Очистить выбор',
},
Memory: {
Title: "Историческое резюме",
EmptyContent: "Содержимое чата слишком короткое, чтобы суммировать",
Send: "Автоматически сжать историю чата и отправить как контекст",
Copy: "Копировать резюме",
Reset: "[не используется]",
ResetConfirm: "Подтвердить очистку исторического резюме?",
Title: 'Историческое резюме',
EmptyContent: 'Содержимое чата слишком короткое, чтобы суммировать',
Send: 'Автоматически сжать историю чата и отправить как контекст',
Copy: 'Копировать резюме',
Reset: '[не используется]',
ResetConfirm: 'Подтвердить очистку исторического резюме?',
},
Home: {
NewChat: "Новый чат",
DeleteChat: "Подтвердить удаление выбранного чата?",
DeleteToast: "Беседа удалена",
Revert: "Отменить",
NewChat: 'Новый чат',
DeleteChat: 'Подтвердить удаление выбранного чата?',
DeleteToast: 'Беседа удалена',
Revert: 'Отменить',
},
Settings: {
Title: "Настройки",
SubTitle: "Все параметры настроек",
Title: 'Настройки',
SubTitle: 'Все параметры настроек',
Danger: {
Reset: {
Title: "Сброс всех настроек",
SubTitle: "Сброс всех параметров до значений по умолчанию",
Action: "Сбросить сейчас",
Confirm: "Подтвердить сброс всех настроек?",
Title: 'Сброс всех настроек',
SubTitle: 'Сброс всех параметров до значений по умолчанию',
Action: 'Сбросить сейчас',
Confirm: 'Подтвердить сброс всех настроек?',
},
Clear: {
Title: "Очистить все данные",
SubTitle: "Очистить все чаты и данные настроек",
Action: "Очистить сейчас",
Confirm: "Подтвердить очистку всех чатов и данных настроек?",
Title: 'Очистить все данные',
SubTitle: 'Очистить все чаты и данные настроек',
Action: 'Очистить сейчас',
Confirm: 'Подтвердить очистку всех чатов и данных настроек?',
},
},
Lang: {
Name: "Language", // ATTENTION: если вы хотите добавить новый перевод, не переводите это значение, оставьте его как `Language`
All: "Все языки",
Name: 'Language', // ATTENTION: если вы хотите добавить новый перевод, не переводите это значение, оставьте его как `Language`
All: 'Все языки',
},
Avatar: "Аватар",
Avatar: 'Аватар',
FontSize: {
Title: "Размер шрифта",
SubTitle: "Размер шрифта в чате",
Title: 'Размер шрифта',
SubTitle: 'Размер шрифта в чате',
},
FontFamily: {
Title: "Шрифт чата",
Title: 'Шрифт чата',
SubTitle:
"Шрифт содержимого чата, оставьте пустым для применения глобального шрифта по умолчанию",
Placeholder: "Название шрифта",
'Шрифт содержимого чата, оставьте пустым для применения глобального шрифта по умолчанию',
Placeholder: 'Название шрифта',
},
InjectSystemPrompts: {
Title: "Вставить системные подсказки",
Title: 'Вставить системные подсказки',
SubTitle:
"Принудительно добавлять системную подсказку, имитирующую ChatGPT, в начале каждого запроса",
'Принудительно добавлять системную подсказку, имитирующую ChatGPT, в начале каждого запроса',
},
InputTemplate: {
Title: "Предварительная обработка пользовательского ввода",
Title: 'Предварительная обработка пользовательского ввода',
SubTitle:
"Последнее сообщение пользователя будет подставлено в этот шаблон",
'Последнее сообщение пользователя будет подставлено в этот шаблон',
},
Update: {
Version: (x: string) => `Текущая версия: ${x}`,
IsLatest: "Установлена последняя версия",
CheckUpdate: "Проверить обновления",
IsChecking: "Проверка обновлений...",
IsLatest: 'Установлена последняя версия',
CheckUpdate: 'Проверить обновления',
IsChecking: 'Проверка обновлений...',
FoundUpdate: (x: string) => `Найдено новое обновление: ${x}`,
GoToUpdate: "Перейти к обновлению",
GoToUpdate: 'Перейти к обновлению',
},
SendKey: "Кнопка отправки",
Theme: "Тема",
TightBorder: "Режим без границ",
SendKey: 'Кнопка отправки',
Theme: 'Тема',
TightBorder: 'Режим без границ',
SendPreviewBubble: {
Title: "Предварительный просмотр пузырьков",
Title: 'Предварительный просмотр пузырьков',
SubTitle:
"Просмотр содержимого Markdown в пузырьках предварительного просмотра",
'Просмотр содержимого Markdown в пузырьках предварительного просмотра',
},
AutoGenerateTitle: {
Title: "Автоматическое создание заголовка",
SubTitle: "Создание подходящего заголовка на основе содержания беседы",
Title: 'Автоматическое создание заголовка',
SubTitle: 'Создание подходящего заголовка на основе содержания беседы',
},
Sync: {
CloudState: "Облачные данные",
NotSyncYet: "Синхронизация еще не проводилась",
Success: "Синхронизация успешна",
Fail: "Не удалось синхронизировать",
CloudState: 'Облачные данные',
NotSyncYet: 'Синхронизация еще не проводилась',
Success: 'Синхронизация успешна',
Fail: 'Не удалось синхронизировать',
Config: {
Modal: {
Title: "Настройки облачной синхронизации",
Check: "Проверить доступность",
Title: 'Настройки облачной синхронизации',
Check: 'Проверить доступность',
},
SyncType: {
Title: "Тип синхронизации",
SubTitle: "Выберите предпочитаемый сервер синхронизации",
Title: 'Тип синхронизации',
SubTitle: 'Выберите предпочитаемый сервер синхронизации',
},
Proxy: {
Title: "Включить прокси",
Title: 'Включить прокси',
SubTitle:
"При синхронизации в браузере необходимо включить прокси для предотвращения ограничений кросс-домена",
'При синхронизации в браузере необходимо включить прокси для предотвращения ограничений кросс-домена',
},
ProxyUrl: {
Title: "Адрес прокси",
SubTitle: "Только для встроенного прокси в проекте",
Title: 'Адрес прокси',
SubTitle: 'Только для встроенного прокси в проекте',
},
WebDav: {
Endpoint: "WebDAV адрес",
UserName: "Имя пользователя",
Password: "Пароль",
Endpoint: 'WebDAV адрес',
UserName: 'Имя пользователя',
Password: 'Пароль',
},
UpStash: {
Endpoint: "UpStash Redis REST Url",
UserName: "Имя резервной копии",
Password: "UpStash Redis REST Token",
Endpoint: 'UpStash Redis REST Url',
UserName: 'Имя резервной копии',
Password: 'UpStash Redis REST Token',
},
},
LocalState: "Локальные данные",
LocalState: 'Локальные данные',
Overview: (overview: any) => {
return `${overview.chat} бесед, ${overview.message} сообщений, ${overview.prompt} подсказок, ${overview.mask} масок`;
},
ImportFailed: "Не удалось импортировать",
ImportFailed: 'Не удалось импортировать',
},
Mask: {
Splash: {
Title: "Стартовая страница масок",
Title: 'Стартовая страница масок',
SubTitle:
"При создании нового чата отображать стартовую страницу масок",
'При создании нового чата отображать стартовую страницу масок',
},
Builtin: {
Title: "Скрыть встроенные маски",
SubTitle: "Скрыть встроенные маски во всех списках масок",
Title: 'Скрыть встроенные маски',
SubTitle: 'Скрыть встроенные маски во всех списках масок',
},
},
Prompt: {
Disable: {
Title: "Отключить автозаполнение подсказок",
SubTitle: "Введите / в начале строки для активации автозаполнения",
Title: 'Отключить автозаполнение подсказок',
SubTitle: 'Введите / в начале строки для активации автозаполнения',
},
List: "Список пользовательских подсказок",
List: 'Список пользовательских подсказок',
ListCount: (builtin: number, custom: number) =>
`Встроенные ${builtin}, пользовательские ${custom}`,
Edit: "Редактировать",
Edit: 'Редактировать',
Modal: {
Title: "Список подсказок",
Add: "Создать",
Search: "Поиск подсказок",
Title: 'Список подсказок',
Add: 'Создать',
Search: 'Поиск подсказок',
},
EditModal: {
Title: "Редактировать подсказки",
Title: 'Редактировать подсказки',
},
},
HistoryCount: {
Title: "Количество истории сообщений",
SubTitle: "Количество историй сообщений, отправляемых с каждым запросом",
Title: 'Количество истории сообщений',
SubTitle: 'Количество историй сообщений, отправляемых с каждым запросом',
},
CompressThreshold: {
Title: "Порог сжатия длины истории сообщений",
Title: 'Порог сжатия длины истории сообщений',
SubTitle:
"Когда не сжатая история сообщений превышает это значение, происходит сжатие",
'Когда не сжатая история сообщений превышает это значение, происходит сжатие',
},
Usage: {
Title: "Проверка баланса",
Title: 'Проверка баланса',
SubTitle(used: any, total: any) {
return `Использовано в этом месяце $${used}, всего по подписке $${total}`;
},
IsChecking: "Проверка…",
Check: "Проверить снова",
NoAccess: "Введите API-ключ или пароль доступа для просмотра баланса",
IsChecking: 'Проверка…',
Check: 'Проверить снова',
NoAccess: 'Введите API-ключ или пароль доступа для просмотра баланса',
},
Access: {
SaasStart: {
Title: "Используйте NextChat AI",
Label: "(Самое экономичное решение)",
Title: 'Используйте NextChat AI',
Label: '(Самое экономичное решение)',
SubTitle:
"Официально поддерживается NextChat, готов к использованию без настройки, поддерживает последние крупные модели, такие как OpenAI o1, GPT-4o и Claude-3.5",
ChatNow: "Начать чат",
'Официально поддерживается NextChat, готов к использованию без настройки, поддерживает последние крупные модели, такие как OpenAI o1, GPT-4o и Claude-3.5',
ChatNow: 'Начать чат',
},
AccessCode: {
Title: "Пароль доступа",
SubTitle: "Администратор включил защиту паролем",
Placeholder: "Введите пароль доступа",
Title: 'Пароль доступа',
SubTitle: 'Администратор включил защиту паролем',
Placeholder: 'Введите пароль доступа',
},
CustomEndpoint: {
Title: "Пользовательский интерфейс",
SubTitle: "Использовать ли пользовательский Azure или OpenAI сервис",
Title: 'Пользовательский интерфейс',
SubTitle: 'Использовать ли пользовательский Azure или OpenAI сервис',
},
Provider: {
Title: "Провайдер модели",
SubTitle: "Переключиться на другого провайдера",
Title: 'Провайдер модели',
SubTitle: 'Переключиться на другого провайдера',
},
OpenAI: {
ApiKey: {
Title: "API-ключ",
Title: 'API-ключ',
SubTitle:
"Использовать пользовательский OpenAI-ключ для обхода ограничений пароля",
Placeholder: "OpenAI API-ключ",
'Использовать пользовательский OpenAI-ключ для обхода ограничений пароля',
Placeholder: 'OpenAI API-ключ',
},
Endpoint: {
Title: "Адрес интерфейса",
SubTitle: "Кроме адреса по умолчанию, должен содержать http(s)://",
Title: 'Адрес интерфейса',
SubTitle: 'Кроме адреса по умолчанию, должен содержать http(s)://',
},
},
Azure: {
ApiKey: {
Title: "Ключ интерфейса",
Title: 'Ключ интерфейса',
SubTitle:
"Использовать пользовательский Azure-ключ для обхода ограничений пароля",
Placeholder: "Azure API-ключ",
'Использовать пользовательский Azure-ключ для обхода ограничений пароля',
Placeholder: 'Azure API-ключ',
},
Endpoint: {
Title: "Адрес интерфейса",
SubTitle: "Пример:",
Title: 'Адрес интерфейса',
SubTitle: 'Пример:',
},
ApiVerion: {
Title: "Версия интерфейса (azure api version)",
SubTitle: "Выберите конкретную версию",
Title: 'Версия интерфейса (azure api version)',
SubTitle: 'Выберите конкретную версию',
},
},
Anthropic: {
ApiKey: {
Title: "Ключ интерфейса",
Title: 'Ключ интерфейса',
SubTitle:
"Использовать пользовательский Anthropic-ключ для обхода ограничений пароля",
Placeholder: "Anthropic API-ключ",
'Использовать пользовательский Anthropic-ключ для обхода ограничений пароля',
Placeholder: 'Anthropic API-ключ',
},
Endpoint: {
Title: "Адрес интерфейса",
SubTitle: "Пример:",
Title: 'Адрес интерфейса',
SubTitle: 'Пример:',
},
ApiVerion: {
Title: "Версия интерфейса (claude api version)",
SubTitle: "Выберите конкретную версию API",
Title: 'Версия интерфейса (claude api version)',
SubTitle: 'Выберите конкретную версию API',
},
},
Google: {
ApiKey: {
Title: "API-ключ",
SubTitle: "Получите ваш API-ключ Google AI",
Placeholder: "Введите ваш API-ключ Google AI Studio",
Title: 'API-ключ',
SubTitle: 'Получите ваш API-ключ Google AI',
Placeholder: 'Введите ваш API-ключ Google AI Studio',
},
Endpoint: {
Title: "Адрес интерфейса",
SubTitle: "Пример:",
Title: 'Адрес интерфейса',
SubTitle: 'Пример:',
},
ApiVersion: {
Title: "Версия API (только для gemini-pro)",
SubTitle: "Выберите конкретную версию API",
Title: 'Версия API (только для gemini-pro)',
SubTitle: 'Выберите конкретную версию API',
},
GoogleSafetySettings: {
Title: "Уровень фильтрации Google",
SubTitle: "Настроить уровень фильтрации контента",
Title: 'Уровень фильтрации Google',
SubTitle: 'Настроить уровень фильтрации контента',
},
},
Baidu: {
ApiKey: {
Title: "API-ключ",
SubTitle: "Использовать пользовательский Baidu API-ключ",
Placeholder: "Baidu API-ключ",
Title: 'API-ключ',
SubTitle: 'Использовать пользовательский Baidu API-ключ',
Placeholder: 'Baidu API-ключ',
},
SecretKey: {
Title: "Секретный ключ",
SubTitle: "Использовать пользовательский Baidu Secret Key",
Placeholder: "Baidu Secret Key",
Title: 'Секретный ключ',
SubTitle: 'Использовать пользовательский Baidu Secret Key',
Placeholder: 'Baidu Secret Key',
},
Endpoint: {
Title: "Адрес интерфейса",
Title: 'Адрес интерфейса',
SubTitle:
"Не поддерживает пользовательскую настройку, перейдите в .env",
'Не поддерживает пользовательскую настройку, перейдите в .env',
},
},
ByteDance: {
ApiKey: {
Title: "Ключ интерфейса",
SubTitle: "Использовать пользовательский ByteDance API-ключ",
Placeholder: "ByteDance API-ключ",
Title: 'Ключ интерфейса',
SubTitle: 'Использовать пользовательский ByteDance API-ключ',
Placeholder: 'ByteDance API-ключ',
},
Endpoint: {
Title: "Адрес интерфейса",
SubTitle: "Пример:",
Title: 'Адрес интерфейса',
SubTitle: 'Пример:',
},
},
Alibaba: {
ApiKey: {
Title: "Ключ интерфейса",
SubTitle: "Использовать пользовательский Alibaba Cloud API-ключ",
Placeholder: "Alibaba Cloud API-ключ",
Title: 'Ключ интерфейса',
SubTitle: 'Использовать пользовательский Alibaba Cloud API-ключ',
Placeholder: 'Alibaba Cloud API-ключ',
},
Endpoint: {
Title: "Адрес интерфейса",
SubTitle: "Пример:",
Title: 'Адрес интерфейса',
SubTitle: 'Пример:',
},
},
CustomModel: {
Title: "Название пользовательской модели",
Title: 'Название пользовательской модели',
SubTitle:
"Добавьте варианты пользовательских моделей, разделяя запятыми",
'Добавьте варианты пользовательских моделей, разделяя запятыми',
},
},
Model: "Модель",
Model: 'Модель',
CompressModel: {
Title: "Модель сжатия",
SubTitle: "Модель, используемая для сжатия истории",
Title: 'Модель сжатия',
SubTitle: 'Модель, используемая для сжатия истории',
},
Temperature: {
Title: "Случайность (temperature)",
SubTitle: "Чем больше значение, тем более случайные ответы",
Title: 'Случайность (temperature)',
SubTitle: 'Чем больше значение, тем более случайные ответы',
},
TopP: {
Title: "Ядро выборки (top_p)",
SubTitle: "Похожие на случайность, но не изменяйте вместе с случайностью",
Title: 'Ядро выборки (top_p)',
SubTitle: 'Похожие на случайность, но не изменяйте вместе с случайностью',
},
MaxTokens: {
Title: "Ограничение на количество токенов за один раз (max_tokens)",
SubTitle: "Максимальное количество токенов на одно взаимодействие",
Title: 'Ограничение на количество токенов за один раз (max_tokens)',
SubTitle: 'Максимальное количество токенов на одно взаимодействие',
},
PresencePenalty: {
Title: "Наказание за новизну тем (presence_penalty)",
Title: 'Наказание за новизну тем (presence_penalty)',
SubTitle:
"Чем больше значение, тем выше вероятность расширения на новые темы",
'Чем больше значение, тем выше вероятность расширения на новые темы',
},
FrequencyPenalty: {
Title: "Наказание за частоту (frequency_penalty)",
Title: 'Наказание за частоту (frequency_penalty)',
SubTitle:
"Чем больше значение, тем выше вероятность уменьшения повторяющихся слов",
'Чем больше значение, тем выше вероятность уменьшения повторяющихся слов',
},
},
Store: {
DefaultTopic: "Новый чат",
BotHello: "Чем могу помочь?",
Error: "Произошла ошибка, попробуйте позже",
DefaultTopic: 'Новый чат',
BotHello: 'Чем могу помочь?',
Error: 'Произошла ошибка, попробуйте позже',
Prompt: {
History: (content: string) =>
"Это резюме истории чата как предыстория: " + content,
`Это резюме истории чата как предыстория: ${content}`,
Topic:
"Укажите краткую тему этого сообщения в четырех-пяти словах, без объяснений, знаков препинания, междометий, лишнего текста или выделения. Если темы нет, просто напишите 'Болтовня'",
'Укажите краткую тему этого сообщения в четырех-пяти словах, без объяснений, знаков препинания, междометий, лишнего текста или выделения. Если темы нет, просто напишите \'Болтовня\'',
Summarize:
"Кратко подведите итоги содержимого беседы для использования в качестве последующего контекстного запроса, не более 200 слов",
'Кратко подведите итоги содержимого беседы для использования в качестве последующего контекстного запроса, не более 200 слов',
},
},
Copy: {
Success: "Скопировано в буфер обмена",
Failed: "Не удалось скопировать, предоставьте доступ к буферу обмена",
Success: 'Скопировано в буфер обмена',
Failed: 'Не удалось скопировать, предоставьте доступ к буферу обмена',
},
Download: {
Success: "Содержимое успешно загружено в вашу директорию.",
Failed: "Не удалось загрузить.",
Success: 'Содержимое успешно загружено в вашу директорию.',
Failed: 'Не удалось загрузить.',
},
Context: {
Toast: (x: any) => `Содержит ${x} предустановленных подсказок`,
Edit: "Текущие настройки чата",
Add: "Добавить новый чат",
Clear: "Контекст очищен",
Revert: "Восстановить контекст",
Edit: 'Текущие настройки чата',
Add: 'Добавить новый чат',
Clear: 'Контекст очищен',
Revert: 'Восстановить контекст',
},
Plugin: {
Name: "Плагины",
Name: 'Плагины',
},
FineTuned: {
Sysmessage: "Вы - помощник",
Sysmessage: 'Вы - помощник',
},
SearchChat: {
Name: "Поиск",
Name: 'Поиск',
Page: {
Title: "Поиск в истории чатов",
Search: "Введите ключевые слова для поиска",
NoResult: "Результатов не найдено",
NoData: "Нет данных",
Loading: "Загрузка",
Title: 'Поиск в истории чатов',
Search: 'Введите ключевые слова для поиска',
NoResult: 'Результатов не найдено',
NoData: 'Нет данных',
Loading: 'Загрузка',
SubTitle: (count: number) => `Найдено ${count} результатов`,
},
Item: {
View: "Просмотр",
View: 'Просмотр',
},
},
Mask: {
Name: "Маска",
Name: 'Маска',
Page: {
Title: "Предустановленные роли",
Title: 'Предустановленные роли',
SubTitle: (count: number) => `${count} предустановленных ролей`,
Search: "Поиск ролей",
Create: "Создать",
Search: 'Поиск ролей',
Create: 'Создать',
},
Item: {
Info: (count: number) => `Содержит ${count} предустановленных диалогов`,
Chat: "Диалог",
View: "Просмотреть",
Edit: "Редактировать",
Delete: "Удалить",
DeleteConfirm: "Подтвердить удаление?",
Chat: 'Диалог',
View: 'Просмотреть',
Edit: 'Редактировать',
Delete: 'Удалить',
DeleteConfirm: 'Подтвердить удаление?',
},
EditModal: {
Title: (readonly: boolean) =>
`Редактирование предустановленной маски ${
readonly ? "(только для чтения)" : ""
readonly ? '(только для чтения)' : ''
}`,
Download: "Скачать предустановку",
Clone: "Клонировать предустановку",
Download: 'Скачать предустановку',
Clone: 'Клонировать предустановку',
},
Config: {
Avatar: "Аватар роли",
Name: "Название роли",
Avatar: 'Аватар роли',
Name: 'Название роли',
Sync: {
Title: "Использовать глобальные настройки",
Title: 'Использовать глобальные настройки',
SubTitle:
"Будет ли текущий чат использовать глобальные настройки модели",
'Будет ли текущий чат использовать глобальные настройки модели',
Confirm:
"Пользовательские настройки текущего чата будут автоматически заменены, подтвердите активацию глобальных настроек?",
'Пользовательские настройки текущего чата будут автоматически заменены, подтвердите активацию глобальных настроек?',
},
HideContext: {
Title: "Скрыть предустановленные диалоги",
Title: 'Скрыть предустановленные диалоги',
SubTitle:
"После скрытия предустановленные диалоги не будут отображаться в чате",
'После скрытия предустановленные диалоги не будут отображаться в чате',
},
Share: {
Title: "Поделиться этой маской",
SubTitle: "Создать прямую ссылку на эту маску",
Action: "Скопировать ссылку",
Title: 'Поделиться этой маской',
SubTitle: 'Создать прямую ссылку на эту маску',
Action: 'Скопировать ссылку',
},
},
},
NewChat: {
Return: "Вернуться",
Skip: "Начать сразу",
NotShow: "Больше не показывать",
Return: 'Вернуться',
Skip: 'Начать сразу',
NotShow: 'Больше не показывать',
ConfirmNoShow:
"Подтвердить отключение? После отключения вы всегда сможете включить его снова в настройках.",
Title: "Выберите маску",
SubTitle: "Начните сейчас, столкнитесь с мыслями за маской",
More: "Показать все",
'Подтвердить отключение? После отключения вы всегда сможете включить его снова в настройках.',
Title: 'Выберите маску',
SubTitle: 'Начните сейчас, столкнитесь с мыслями за маской',
More: 'Показать все',
},
URLCommand: {
Code: "Обнаружен код доступа в ссылке, автоматически заполнить?",
Code: 'Обнаружен код доступа в ссылке, автоматически заполнить?',
Settings:
"Обнаружены предустановленные настройки в ссылке, автоматически заполнить?",
'Обнаружены предустановленные настройки в ссылке, автоматически заполнить?',
},
UI: {
Confirm: "Подтвердить",
Cancel: "Отмена",
Close: "Закрыть",
Create: "Создать",
Edit: "Редактировать",
Export: "Экспортировать",
Import: "Импортировать",
Sync: "Синхронизировать",
Config: "Настройки",
Confirm: 'Подтвердить',
Cancel: 'Отмена',
Close: 'Закрыть',
Create: 'Создать',
Edit: 'Редактировать',
Export: 'Экспортировать',
Import: 'Импортировать',
Sync: 'Синхронизировать',
Config: 'Настройки',
},
Exporter: {
Description: {
Title: "Только сообщения после очистки контекста будут отображаться",
Title: 'Только сообщения после очистки контекста будут отображаться',
},
Model: "Модель",
Messages: "Сообщения",
Topic: "Тема",
Time: "Время",
Model: 'Модель',
Messages: 'Сообщения',
Topic: 'Тема',
Time: 'Время',
},
};

View File

@@ -1,12 +1,12 @@
import { getClientConfig } from "../config/client";
import { SubmitKey } from "../store/config";
import type { PartialLocaleType } from "./index";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } 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 sk: PartialLocaleType = {
WIP: "Už čoskoro...",
WIP: 'Už čoskoro...',
Error: {
Unauthorized: isApp
? `😆 Rozhovor narazil na nejaké problémy, nebojte sa:
@@ -19,16 +19,16 @@ const sk: PartialLocaleType = {
`,
},
Auth: {
Title: "Potrebný prístupový kód",
Tips: "Prosím, zadajte prístupový kód nižšie",
SubTips: "Alebo zadajte váš OpenAI alebo Google API kľúč",
Input: "prístupový kód",
Confirm: "Potvrdiť",
Later: "Neskôr",
Return: "Návrat",
SaasTips: "Nastavenie je príliš zložité, chcem to okamžite použiť",
Title: 'Potrebný prístupový kód',
Tips: 'Prosím, zadajte prístupový kód nižšie',
SubTips: 'Alebo zadajte váš OpenAI alebo Google API kľúč',
Input: 'prístupový kód',
Confirm: 'Potvrdiť',
Later: 'Neskôr',
Return: 'Návrat',
SaasTips: 'Nastavenie je príliš zložité, chcem to okamžite použiť',
TopTips:
"🥳 Uvítacia ponuka NextChat AI, okamžite odomknite OpenAI o1, GPT-4o, Claude-3.5 a najnovšie veľké modely",
'🥳 Uvítacia ponuka NextChat AI, okamžite odomknite OpenAI o1, GPT-4o, Claude-3.5 a najnovšie veľké modely',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} správ`,
@@ -36,507 +36,507 @@ const sk: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `${count} správ`,
EditMessage: {
Title: "Upraviť všetky správy",
Title: 'Upraviť všetky správy',
Topic: {
Title: "Téma",
SubTitle: "Zmeniť aktuálnu tému",
Title: 'Téma',
SubTitle: 'Zmeniť aktuálnu tému',
},
},
Actions: {
ChatList: "Prejsť na zoznam chatov",
CompressedHistory: "Komprimovaná história výziev",
Export: "Exportovať všetky správy ako Markdown",
Copy: "Kopírovať",
Stop: "Zastaviť",
Retry: "Skúsiť znova",
Pin: "Pripnúť",
PinToastContent: "Pripnuté 1 správy do kontextových výziev",
PinToastAction: "Zobraziť",
Delete: "Vymazať",
Edit: "Upraviť",
RefreshTitle: "Obnoviť názov",
RefreshToast: "Požiadavka na obnovenie názvu bola odoslaná",
ChatList: 'Prejsť na zoznam chatov',
CompressedHistory: 'Komprimovaná história výziev',
Export: 'Exportovať všetky správy ako Markdown',
Copy: 'Kopírovať',
Stop: 'Zastaviť',
Retry: 'Skúsiť znova',
Pin: 'Pripnúť',
PinToastContent: 'Pripnuté 1 správy do kontextových výziev',
PinToastAction: 'Zobraziť',
Delete: 'Vymazať',
Edit: 'Upraviť',
RefreshTitle: 'Obnoviť názov',
RefreshToast: 'Požiadavka na obnovenie názvu bola odoslaná',
},
Commands: {
new: "Začať nový chat",
newm: "Začať nový chat s maskou",
next: "Ďalší Chat",
prev: "Predchádzajúci Chat",
clear: "Vymazať kontext",
del: "Vymazať Chat",
new: 'Začať nový chat',
newm: 'Začať nový chat s maskou',
next: 'Ďalší Chat',
prev: 'Predchádzajúci Chat',
clear: 'Vymazať kontext',
del: 'Vymazať Chat',
},
InputActions: {
Stop: "Zastaviť",
ToBottom: "Na najnovšie",
Stop: 'Zastaviť',
ToBottom: 'Na najnovšie',
Theme: {
auto: "Automaticky",
light: "Svetlý motív",
dark: "Tmavý motív",
auto: 'Automaticky',
light: 'Svetlý motív',
dark: 'Tmavý motív',
},
Prompt: "Výzvy",
Masks: "Masky",
Clear: "Vymazať kontext",
Settings: "Nastavenia",
Prompt: 'Výzvy',
Masks: 'Masky',
Clear: 'Vymazať kontext',
Settings: 'Nastavenia',
},
Rename: "Premenovať Chat",
Typing: "Písanie…",
Rename: 'Premenovať Chat',
Typing: 'Písanie…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} na odoslanie`;
let inputHints = `${submitKey} na odoslanie`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += ", Shift + Enter na zalomenie";
inputHints += ', Shift + Enter na zalomenie';
}
return inputHints + ", / na vyhľadávanie výziev, : na použitie príkazov";
return `${inputHints}, / na vyhľadávanie výziev, : na použitie príkazov`;
},
Send: "Odoslať",
Send: 'Odoslať',
Config: {
Reset: "Resetovať na predvolené",
SaveAs: "Uložiť ako masku",
Reset: 'Resetovať na predvolené',
SaveAs: 'Uložiť ako masku',
},
IsContext: "Kontextová výzva",
IsContext: 'Kontextová výzva',
},
Export: {
Title: "Export správ",
Copy: "Kopírovať všetko",
Download: "Stiahnuť",
MessageFromYou: "Správa od vás",
MessageFromChatGPT: "Správa od ChatGPT",
Share: "Zdieľať na ShareGPT",
Title: 'Export správ',
Copy: 'Kopírovať všetko',
Download: 'Stiahnuť',
MessageFromYou: 'Správa od vás',
MessageFromChatGPT: 'Správa od ChatGPT',
Share: 'Zdieľať na ShareGPT',
Format: {
Title: "Formát exportu",
SubTitle: "Markdown alebo PNG obrázok",
Title: 'Formát exportu',
SubTitle: 'Markdown alebo PNG obrázok',
},
IncludeContext: {
Title: "Vrátane kontextu",
SubTitle: "Exportovať kontextové výzvy v maske alebo nie",
Title: 'Vrátane kontextu',
SubTitle: 'Exportovať kontextové výzvy v maske alebo nie',
},
Steps: {
Select: "Vybrať",
Preview: "Náhľad",
Select: 'Vybrať',
Preview: 'Náhľad',
},
Image: {
Toast: "Snímanie obrázka...",
Toast: 'Snímanie obrázka...',
Modal:
"Dlhým stlačením alebo kliknutím pravým tlačidlom myši uložte obrázok",
'Dlhým stlačením alebo kliknutím pravým tlačidlom myši uložte obrázok',
},
},
Select: {
Search: "Hľadať",
All: "Vybrať všetko",
Latest: "Vybrať najnovšie",
Clear: "Vymazať",
Search: 'Hľadať',
All: 'Vybrať všetko',
Latest: 'Vybrať najnovšie',
Clear: 'Vymazať',
},
Memory: {
Title: "Výzva pamäti",
EmptyContent: "Zatiaľ nič.",
Send: "Odoslať pamäť",
Copy: "Kopírovať pamäť",
Reset: "Resetovať reláciu",
Title: 'Výzva pamäti',
EmptyContent: 'Zatiaľ nič.',
Send: 'Odoslať pamäť',
Copy: 'Kopírovať pamäť',
Reset: 'Resetovať reláciu',
ResetConfirm:
"Resetovaním sa vymaže aktuálna história konverzácie a historická pamäť. Ste si istí, že chcete resetovať?",
'Resetovaním sa vymaže aktuálna história konverzácie a historická pamäť. Ste si istí, že chcete resetovať?',
},
Home: {
NewChat: "Nový Chat",
DeleteChat: "Potvrdiť vymazanie vybranej konverzácie?",
DeleteToast: "Chat vymazaný",
Revert: "Vrátiť späť",
NewChat: 'Nový Chat',
DeleteChat: 'Potvrdiť vymazanie vybranej konverzácie?',
DeleteToast: 'Chat vymazaný',
Revert: 'Vrátiť späť',
},
Settings: {
Title: "Nastavenia",
SubTitle: "Všetky nastavenia",
Title: 'Nastavenia',
SubTitle: 'Všetky nastavenia',
Danger: {
Reset: {
Title: "Resetovať všetky nastavenia",
SubTitle: "Resetovať všetky položky nastavení na predvolené",
Action: "Resetovať",
Confirm: "Potvrdiť resetovanie všetkých nastavení na predvolené?",
Title: 'Resetovať všetky nastavenia',
SubTitle: 'Resetovať všetky položky nastavení na predvolené',
Action: 'Resetovať',
Confirm: 'Potvrdiť resetovanie všetkých nastavení na predvolené?',
},
Clear: {
Title: "Vymazať všetky údaje",
SubTitle: "Vymazať všetky správy a nastavenia",
Action: "Vymazať",
Confirm: "Potvrdiť vymazanie všetkých správ a nastavení?",
Title: 'Vymazať všetky údaje',
SubTitle: 'Vymazať všetky správy a nastavenia',
Action: 'Vymazať',
Confirm: 'Potvrdiť vymazanie všetkých správ a nastavení?',
},
},
Lang: {
Name: "Jazyk", // POZOR: ak pridávate nový preklad, prosím neprekladajte túto hodnotu, nechajte ju ako "Jazyk"
All: "Všetky jazyky",
Name: 'Jazyk', // POZOR: ak pridávate nový preklad, prosím neprekladajte túto hodnotu, nechajte ju ako "Jazyk"
All: 'Všetky jazyky',
},
Avatar: "Avatar",
Avatar: 'Avatar',
FontSize: {
Title: "Veľkosť písma",
SubTitle: "Nastaviť veľkosť písma obsahu chatu",
Title: 'Veľkosť písma',
SubTitle: 'Nastaviť veľkosť písma obsahu chatu',
},
FontFamily: {
Title: "Chatové Písmo",
Title: 'Chatové Písmo',
SubTitle:
"Písmo obsahu chatu, ponechajte prázdne pre použitie globálneho predvoleného písma",
Placeholder: "Názov Písma",
'Písmo obsahu chatu, ponechajte prázdne pre použitie globálneho predvoleného písma',
Placeholder: 'Názov Písma',
},
InjectSystemPrompts: {
Title: "Vložiť systémové výzvy",
SubTitle: "Vložiť globálnu systémovú výzvu pre každú požiadavku",
Title: 'Vložiť systémové výzvy',
SubTitle: 'Vložiť globálnu systémovú výzvu pre každú požiadavku',
},
InputTemplate: {
Title: "Šablóna vstupu",
SubTitle: "Najnovšia správa bude vyplnená do tejto šablóny",
Title: 'Šablóna vstupu',
SubTitle: 'Najnovšia správa bude vyplnená do tejto šablóny',
},
Update: {
Version: (x: string) => `Verzia: ${x}`,
IsLatest: "Najnovšia verzia",
CheckUpdate: "Skontrolovať aktualizácie",
IsChecking: "Kontrola aktualizácií...",
IsLatest: 'Najnovšia verzia',
CheckUpdate: 'Skontrolovať aktualizácie',
IsChecking: 'Kontrola aktualizácií...',
FoundUpdate: (x: string) => `Nájdená nová verzia: ${x}`,
GoToUpdate: "Aktualizovať",
GoToUpdate: 'Aktualizovať',
},
SendKey: "Odoslať kľúč",
Theme: "Motív",
TightBorder: "Tesný okraj",
SendKey: 'Odoslať kľúč',
Theme: 'Motív',
TightBorder: 'Tesný okraj',
SendPreviewBubble: {
Title: "Bublina náhľadu odoslania",
SubTitle: "Náhľad markdownu v bubline",
Title: 'Bublina náhľadu odoslania',
SubTitle: 'Náhľad markdownu v bubline',
},
AutoGenerateTitle: {
Title: "Automaticky generovať názov",
SubTitle: "Generovať vhodný názov na základe obsahu konverzácie",
Title: 'Automaticky generovať názov',
SubTitle: 'Generovať vhodný názov na základe obsahu konverzácie',
},
Sync: {
CloudState: "Posledná aktualizácia",
NotSyncYet: "Zatiaľ nesynchronizované",
Success: "Synchronizácia úspešná",
Fail: "Synchronizácia zlyhala",
CloudState: 'Posledná aktualizácia',
NotSyncYet: 'Zatiaľ nesynchronizované',
Success: 'Synchronizácia úspešná',
Fail: 'Synchronizácia zlyhala',
Config: {
Modal: {
Title: "Konfigurácia synchronizácie",
Check: "Skontrolovať pripojenie",
Title: 'Konfigurácia synchronizácie',
Check: 'Skontrolovať pripojenie',
},
SyncType: {
Title: "Typ synchronizácie",
SubTitle: "Vyberte svoju obľúbenú službu synchronizácie",
Title: 'Typ synchronizácie',
SubTitle: 'Vyberte svoju obľúbenú službu synchronizácie',
},
Proxy: {
Title: "Povoliť CORS Proxy",
SubTitle: "Povoliť proxy na obídenie obmedzení cross-origin",
Title: 'Povoliť CORS Proxy',
SubTitle: 'Povoliť proxy na obídenie obmedzení cross-origin',
},
ProxyUrl: {
Title: "Koncový bod Proxy",
SubTitle: "Platné len pre vstavaný CORS proxy tohto projektu",
Title: 'Koncový bod Proxy',
SubTitle: 'Platné len pre vstavaný CORS proxy tohto projektu',
},
WebDav: {
Endpoint: "Koncový bod WebDAV",
UserName: "Meno používateľa",
Password: "Heslo",
Endpoint: 'Koncový bod WebDAV',
UserName: 'Meno používateľa',
Password: 'Heslo',
},
UpStash: {
Endpoint: "URL REST služby UpStash Redis",
UserName: "Názov zálohy",
Password: "Token REST služby UpStash Redis",
Endpoint: 'URL REST služby UpStash Redis',
UserName: 'Názov zálohy',
Password: 'Token REST služby UpStash Redis',
},
},
LocalState: "Lokálne údaje",
LocalState: 'Lokálne údaje',
Overview: (overview: any) => {
return `${overview.chat} chaty, ${overview.message} správy, ${overview.prompt} výzvy, ${overview.mask} masky`;
},
ImportFailed: "Import z súboru zlyhal",
ImportFailed: 'Import z súboru zlyhal',
},
Mask: {
Splash: {
Title: "Úvodná obrazovka masky",
SubTitle: "Zobraziť úvodnú obrazovku masky pred začatím nového chatu",
Title: 'Úvodná obrazovka masky',
SubTitle: 'Zobraziť úvodnú obrazovku masky pred začatím nového chatu',
},
Builtin: {
Title: "Skryť vstavané masky",
SubTitle: "Skryť vstavané masky v zozname masiek",
Title: 'Skryť vstavané masky',
SubTitle: 'Skryť vstavané masky v zozname masiek',
},
},
Prompt: {
Disable: {
Title: "Zakázať automatické dopĺňanie",
SubTitle: "Zadajte / na spustenie automatického dopĺňania",
Title: 'Zakázať automatické dopĺňanie',
SubTitle: 'Zadajte / na spustenie automatického dopĺňania',
},
List: "Zoznam výziev",
List: 'Zoznam výziev',
ListCount: (builtin: number, custom: number) =>
`${builtin} vstavaných, ${custom} užívateľsky definovaných`,
Edit: "Upraviť",
Edit: 'Upraviť',
Modal: {
Title: "Zoznam výziev",
Add: "Pridať jednu",
Search: "Hľadať výzvy",
Title: 'Zoznam výziev',
Add: 'Pridať jednu',
Search: 'Hľadať výzvy',
},
EditModal: {
Title: "Upraviť výzvu",
Title: 'Upraviť výzvu',
},
},
HistoryCount: {
Title: "Počet pripojených správ",
SubTitle: "Počet odoslaných správ pripojených na požiadavku",
Title: 'Počet pripojených správ',
SubTitle: 'Počet odoslaných správ pripojených na požiadavku',
},
CompressThreshold: {
Title: "Práh kompresie histórie",
Title: 'Práh kompresie histórie',
SubTitle:
"Bude komprimované, ak dĺžka nekomprimovaných správ presiahne túto hodnotu",
'Bude komprimované, ak dĺžka nekomprimovaných správ presiahne túto hodnotu',
},
Usage: {
Title: "Stav účtu",
Title: 'Stav účtu',
SubTitle(used: any, total: any) {
return `Tento mesiac použité ${used}, predplatné ${total}`;
},
IsChecking: "Kontroluje sa...",
Check: "Skontrolovať",
NoAccess: "Zadajte API kľúč na skontrolovanie zostatku",
IsChecking: 'Kontroluje sa...',
Check: 'Skontrolovať',
NoAccess: 'Zadajte API kľúč na skontrolovanie zostatku',
},
Access: {
SaasStart: {
Title: "Použite NextChat AI",
Label: "(Najvýhodnejšie riešenie)",
Title: 'Použite NextChat AI',
Label: '(Najvýhodnejšie riešenie)',
SubTitle:
"Oficiálne udržiavané NextChat, pripravené na použitie bez konfigurácie, podporuje najnovšie veľké modely ako OpenAI o1, GPT-4o a Claude-3.5",
ChatNow: "Chatovať teraz",
'Oficiálne udržiavané NextChat, pripravené na použitie bez konfigurácie, podporuje najnovšie veľké modely ako OpenAI o1, GPT-4o a Claude-3.5',
ChatNow: 'Chatovať teraz',
},
AccessCode: {
Title: "Prístupový kód",
SubTitle: "Povolený prístupový kód",
Placeholder: "Zadajte kód",
Title: 'Prístupový kód',
SubTitle: 'Povolený prístupový kód',
Placeholder: 'Zadajte kód',
},
CustomEndpoint: {
Title: "Vlastný koncový bod",
SubTitle: "Použiť vlastnú službu Azure alebo OpenAI",
Title: 'Vlastný koncový bod',
SubTitle: 'Použiť vlastnú službu Azure alebo OpenAI',
},
Provider: {
Title: "Poskytovateľ modelu",
SubTitle: "Vyberte Azure alebo OpenAI",
Title: 'Poskytovateľ modelu',
SubTitle: 'Vyberte Azure alebo OpenAI',
},
OpenAI: {
ApiKey: {
Title: "API kľúč OpenAI",
SubTitle: "Použiť vlastný API kľúč OpenAI",
Placeholder: "sk-xxx",
Title: 'API kľúč OpenAI',
SubTitle: 'Použiť vlastný API kľúč OpenAI',
Placeholder: 'sk-xxx',
},
Endpoint: {
Title: "Koncový bod OpenAI",
Title: 'Koncový bod OpenAI',
SubTitle:
"Musí začínať http(s):// alebo použiť /api/openai ako predvolený",
'Musí začínať http(s):// alebo použiť /api/openai ako predvolený',
},
},
Azure: {
ApiKey: {
Title: "API kľúč Azure",
SubTitle: "Skontrolujte svoj API kľúč v Azure konzole",
Placeholder: "API kľúč Azure",
Title: 'API kľúč Azure',
SubTitle: 'Skontrolujte svoj API kľúč v Azure konzole',
Placeholder: 'API kľúč Azure',
},
Endpoint: {
Title: "Koncový bod Azure",
SubTitle: "Príklad: ",
Title: 'Koncový bod Azure',
SubTitle: 'Príklad: ',
},
ApiVerion: {
Title: "Verzia API Azure",
SubTitle: "Skontrolujte svoju verziu API v Azure konzole",
Title: 'Verzia API Azure',
SubTitle: 'Skontrolujte svoju verziu API v Azure konzole',
},
},
Anthropic: {
ApiKey: {
Title: "API kľúč Anthropic",
SubTitle: "Skontrolujte svoj API kľúč v Anthropic konzole",
Placeholder: "API kľúč Anthropic",
Title: 'API kľúč Anthropic',
SubTitle: 'Skontrolujte svoj API kľúč v Anthropic konzole',
Placeholder: 'API kľúč Anthropic',
},
Endpoint: {
Title: "Adresa koncového bodu",
SubTitle: "Príklad:",
Title: 'Adresa koncového bodu',
SubTitle: 'Príklad:',
},
ApiVerion: {
Title: "Verzia API (claude verzia API)",
SubTitle: "Vyberte špecifickú verziu časti",
Title: 'Verzia API (claude verzia API)',
SubTitle: 'Vyberte špecifickú verziu časti',
},
},
CustomModel: {
Title: "Vlastné modely",
SubTitle: "Možnosti vlastného modelu, oddelené čiarkou",
Title: 'Vlastné modely',
SubTitle: 'Možnosti vlastného modelu, oddelené čiarkou',
},
Google: {
ApiKey: {
Title: "API kľúč",
Title: 'API kľúč',
SubTitle:
"Obísť obmedzenia prístupu heslom pomocou vlastného API kľúča Google AI Studio",
Placeholder: "API kľúč Google AI Studio",
'Obísť obmedzenia prístupu heslom pomocou vlastného API kľúča Google AI Studio',
Placeholder: 'API kľúč Google AI Studio',
},
Endpoint: {
Title: "Adresa koncového bodu",
SubTitle: "Príklad:",
Title: 'Adresa koncového bodu',
SubTitle: 'Príklad:',
},
ApiVersion: {
Title: "Verzia API (gemini-pro verzia API)",
SubTitle: "Vyberte špecifickú verziu časti",
Title: 'Verzia API (gemini-pro verzia API)',
SubTitle: 'Vyberte špecifickú verziu časti',
},
},
},
Model: "Model",
Model: 'Model',
CompressModel: {
Title: "Kompresný model",
SubTitle: "Model používaný na kompresiu histórie",
Title: 'Kompresný model',
SubTitle: 'Model používaný na kompresiu histórie',
},
Temperature: {
Title: "Teplota",
SubTitle: "Vyššia hodnota robí výstup náhodnejším",
Title: 'Teplota',
SubTitle: 'Vyššia hodnota robí výstup náhodnejším',
},
TopP: {
Title: "Top P",
SubTitle: "Neupravujte túto hodnotu spolu s teplotou",
Title: 'Top P',
SubTitle: 'Neupravujte túto hodnotu spolu s teplotou',
},
MaxTokens: {
Title: "Maximálny počet tokenov",
SubTitle: "Maximálna dĺžka vstupných tokenov a generovaných tokenov",
Title: 'Maximálny počet tokenov',
SubTitle: 'Maximálna dĺžka vstupných tokenov a generovaných tokenov',
},
PresencePenalty: {
Title: "Penalizácia za prítomnosť",
Title: 'Penalizácia za prítomnosť',
SubTitle:
"Vyššia hodnota zvyšuje pravdepodobnosť hovorenia o nových témach",
'Vyššia hodnota zvyšuje pravdepodobnosť hovorenia o nových témach',
},
FrequencyPenalty: {
Title: "Penalizácia za frekvenciu",
Title: 'Penalizácia za frekvenciu',
SubTitle:
"Vyššia hodnota znižuje pravdepodobnosť opakovania rovnakej línie",
'Vyššia hodnota znižuje pravdepodobnosť opakovania rovnakej línie',
},
},
Store: {
DefaultTopic: "Nová konverzácia",
BotHello: "Ahoj! Ako vám dnes môžem pomôcť?",
Error: "Niečo sa pokazilo, skúste to prosím neskôr znova.",
DefaultTopic: 'Nová konverzácia',
BotHello: 'Ahoj! Ako vám dnes môžem pomôcť?',
Error: 'Niečo sa pokazilo, skúste to prosím neskôr znova.',
Prompt: {
History: (content: string) =>
"Toto je zhrnutie histórie chatu ako rekapitulácia: " + content,
`Toto je zhrnutie histórie chatu ako rekapitulácia: ${content}`,
Topic:
"Prosím, vygenerujte štvor- až päťslovný titul, ktorý zhrnie našu konverzáciu bez akéhokoľvek úvodu, interpunkcie, úvodzoviek, bodiek, symbolov, tučného textu alebo ďalšieho textu. Odstráňte uzatváracie úvodzovky.",
'Prosím, vygenerujte štvor- až päťslovný titul, ktorý zhrnie našu konverzáciu bez akéhokoľvek úvodu, interpunkcie, úvodzoviek, bodiek, symbolov, tučného textu alebo ďalšieho textu. Odstráňte uzatváracie úvodzovky.',
Summarize:
"Stručne zhrňte diskusiu na menej ako 200 slov, aby ste ju mohli použiť ako výzvu pre budúci kontext.",
'Stručne zhrňte diskusiu na menej ako 200 slov, aby ste ju mohli použiť ako výzvu pre budúci kontext.',
},
},
Copy: {
Success: "Skopírované do schránky",
Success: 'Skopírované do schránky',
Failed:
"Kopírovanie zlyhalo, prosím udeľte povolenie na prístup k schránke",
'Kopírovanie zlyhalo, prosím udeľte povolenie na prístup k schránke',
},
Download: {
Success: "Obsah stiahnutý do vášho adresára.",
Failed: "Stiahnutie zlyhalo.",
Success: 'Obsah stiahnutý do vášho adresára.',
Failed: 'Stiahnutie zlyhalo.',
},
Context: {
Toast: (x: any) => `S ${x} kontextovými výzvami`,
Edit: "Aktuálne nastavenia chatu",
Add: "Pridať výzvu",
Clear: "Kontext vyčistený",
Revert: "Vrátiť späť",
Edit: 'Aktuálne nastavenia chatu',
Add: 'Pridať výzvu',
Clear: 'Kontext vyčistený',
Revert: 'Vrátiť späť',
},
Plugin: {
Name: "Plugin",
Name: 'Plugin',
},
FineTuned: {
Sysmessage: "Ste asistent, ktorý",
Sysmessage: 'Ste asistent, ktorý',
},
SearchChat: {
Name: "Hľadať",
Name: 'Hľadať',
Page: {
Title: "Hľadať v histórii chatu",
Search: "Zadajte kľúčové slová na vyhľadávanie",
NoResult: "Nenašli sa žiadne výsledky",
NoData: "Žiadne údaje",
Loading: "Načítava sa",
Title: 'Hľadať v histórii chatu',
Search: 'Zadajte kľúčové slová na vyhľadávanie',
NoResult: 'Nenašli sa žiadne výsledky',
NoData: 'Žiadne údaje',
Loading: 'Načítava sa',
SubTitle: (count: number) => `Nájdených ${count} výsledkov`,
},
Item: {
View: "Zobraziť",
View: 'Zobraziť',
},
},
Mask: {
Name: "Maska",
Name: 'Maska',
Page: {
Title: "Šablóna výziev",
Title: 'Šablóna výziev',
SubTitle: (count: number) => `${count} šablón výziev`,
Search: "Hľadať šablóny",
Create: "Vytvoriť",
Search: 'Hľadať šablóny',
Create: 'Vytvoriť',
},
Item: {
Info: (count: number) => `${count} výziev`,
Chat: "Chat",
View: "Zobraziť",
Edit: "Upraviť",
Delete: "Vymazať",
DeleteConfirm: "Potvrdiť vymazanie?",
Chat: 'Chat',
View: 'Zobraziť',
Edit: 'Upraviť',
Delete: 'Vymazať',
DeleteConfirm: 'Potvrdiť vymazanie?',
},
EditModal: {
Title: (readonly: boolean) =>
`Upraviť šablónu výziev ${readonly ? "(iba na čítanie)" : ""}`,
Download: "Stiahnuť",
Clone: "Klonovať",
`Upraviť šablónu výziev ${readonly ? '(iba na čítanie)' : ''}`,
Download: 'Stiahnuť',
Clone: 'Klonovať',
},
Config: {
Avatar: "Avatar robota",
Name: "Meno robota",
Avatar: 'Avatar robota',
Name: 'Meno robota',
Sync: {
Title: "Použiť globálne nastavenia",
SubTitle: "Použiť globálne nastavenia v tomto chate",
Confirm: "Potvrdiť prepísanie vlastného nastavenia globálnym?",
Title: 'Použiť globálne nastavenia',
SubTitle: 'Použiť globálne nastavenia v tomto chate',
Confirm: 'Potvrdiť prepísanie vlastného nastavenia globálnym?',
},
HideContext: {
Title: "Skryť kontextové výzvy",
SubTitle: "Nezobrazovať kontextové výzvy v chate",
Title: 'Skryť kontextové výzvy',
SubTitle: 'Nezobrazovať kontextové výzvy v chate',
},
Share: {
Title: "Zdieľať túto masku",
SubTitle: "Vygenerovať odkaz na túto masku",
Action: "Kopírovať odkaz",
Title: 'Zdieľať túto masku',
SubTitle: 'Vygenerovať odkaz na túto masku',
Action: 'Kopírovať odkaz',
},
},
},
NewChat: {
Return: "Vrátiť sa",
Skip: "Len začať",
Title: "Vybrať masku",
SubTitle: "Chatovať s dušou za maskou",
More: "Nájsť viac",
NotShow: "Už nezobrazovať",
Return: 'Vrátiť sa',
Skip: 'Len začať',
Title: 'Vybrať masku',
SubTitle: 'Chatovať s dušou za maskou',
More: 'Nájsť viac',
NotShow: 'Už nezobrazovať',
ConfirmNoShow:
"Potvrdiť deaktiváciu? Môžete ju neskôr znova povoliť v nastaveniach.",
'Potvrdiť deaktiváciu? Môžete ju neskôr znova povoliť v nastaveniach.',
},
UI: {
Confirm: "Potvrdiť",
Cancel: "Zrušiť",
Close: "Zavrieť",
Create: "Vytvoriť",
Edit: "Upraviť",
Export: "Exportovať",
Import: "Importovať",
Sync: "Synchronizovať",
Config: "Konfigurácia",
Confirm: 'Potvrdiť',
Cancel: 'Zrušiť',
Close: 'Zavrieť',
Create: 'Vytvoriť',
Edit: 'Upraviť',
Export: 'Exportovať',
Import: 'Importovať',
Sync: 'Synchronizovať',
Config: 'Konfigurácia',
},
Exporter: {
Description: {
Title: "Zobrazia sa len správy po vyčistení kontextu",
Title: 'Zobrazia sa len správy po vyčistení kontextu',
},
Model: "Model",
Messages: "Správy",
Topic: "Téma",
Time: "Čas",
Model: 'Model',
Messages: 'Správy',
Topic: 'Téma',
Time: 'Čas',
},
URLCommand: {
Code: "Zistený prístupový kód z URL, potvrdiť na aplikovanie?",
Settings: "Zistené nastavenia z URL, potvrdiť na aplikovanie?",
Code: 'Zistený prístupový kód z URL, potvrdiť na aplikovanie?',
Settings: 'Zistené nastavenia z URL, potvrdiť na aplikovanie?',
},
};

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import type { PartialLocaleType } from "./index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from './index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const tr: PartialLocaleType = {
WIP: "Çalışma devam ediyor...",
WIP: 'Çalışma devam ediyor...',
Error: {
Unauthorized: isApp
? `😆 Sohbet bazı sorunlarla karşılaştı, endişelenmeyin:
@@ -18,16 +19,16 @@ const tr: PartialLocaleType = {
`,
},
Auth: {
Title: "Şifre Gerekli",
Tips: "Yönetici şifre doğrulamasını etkinleştirdi, lütfen aşağıya erişim kodunu girin",
SubTips: "Veya OpenAI veya Google API anahtarınızı girin",
Input: "Erişim kodunu buraya girin",
Confirm: "Onayla",
Later: "Sonra",
Return: "Geri",
SaasTips: "Ayarlar çok karmaşık, hemen kullanmak istiyorum",
Title: 'Şifre Gerekli',
Tips: 'Yönetici şifre doğrulamasını etkinleştirdi, lütfen aşağıya erişim kodunu girin',
SubTips: 'Veya OpenAI veya Google API anahtarınızı girin',
Input: 'Erişim kodunu buraya girin',
Confirm: 'Onayla',
Later: 'Sonra',
Return: 'Geri',
SaasTips: 'Ayarlar çok karmaşık, hemen kullanmak istiyorum',
TopTips:
"🥳 NextChat AI lansman teklifi, OpenAI o1, GPT-4o, Claude-3.5 ve en son büyük modelleri şimdi açın",
'🥳 NextChat AI lansman teklifi, OpenAI o1, GPT-4o, Claude-3.5 ve en son büyük modelleri şimdi açın',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} konuşma`,
@@ -35,561 +36,561 @@ const tr: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `Toplam ${count} konuşma`,
EditMessage: {
Title: "Mesaj Kayıtlarını Düzenle",
Title: 'Mesaj Kayıtlarını Düzenle',
Topic: {
Title: "Sohbet Konusu",
SubTitle: "Geçerli sohbet konusunu değiştir",
Title: 'Sohbet Konusu',
SubTitle: 'Geçerli sohbet konusunu değiştir',
},
},
Actions: {
ChatList: "Mesaj listesine bak",
CompressedHistory: "Sıkıştırılmış geçmişi gör",
Export: "Sohbet kayıtlarını dışa aktar",
Copy: "Kopyala",
Stop: "Durdur",
Retry: "Yeniden dene",
Pin: "Sabitlenmiş",
PinToastContent: "1 konuşma varsayılan ifadeye sabitlendi",
PinToastAction: "Görünüm",
Delete: "Sil",
Edit: "Düzenle",
RefreshTitle: "Başlığı Yenile",
RefreshToast: "Başlık yenileme isteği gönderildi",
ChatList: 'Mesaj listesine bak',
CompressedHistory: 'Sıkıştırılmış geçmişi gör',
Export: 'Sohbet kayıtlarını dışa aktar',
Copy: 'Kopyala',
Stop: 'Durdur',
Retry: 'Yeniden dene',
Pin: 'Sabitlenmiş',
PinToastContent: '1 konuşma varsayılan ifadeye sabitlendi',
PinToastAction: 'Görünüm',
Delete: 'Sil',
Edit: 'Düzenle',
RefreshTitle: 'Başlığı Yenile',
RefreshToast: 'Başlık yenileme isteği gönderildi',
},
Commands: {
new: "Yeni sohbet",
newm: "Maske ile yeni sohbet oluştur",
next: "Sonraki sohbet",
prev: "Önceki sohbet",
clear: "Konteksti temizle",
del: "Sohbeti sil",
new: 'Yeni sohbet',
newm: 'Maske ile yeni sohbet oluştur',
next: 'Sonraki sohbet',
prev: 'Önceki sohbet',
clear: 'Konteksti temizle',
del: 'Sohbeti sil',
},
InputActions: {
Stop: "Yanıtı durdur",
ToBottom: "En alta git",
Stop: 'Yanıtı durdur',
ToBottom: 'En alta git',
Theme: {
auto: "Otomatik tema",
light: "ık mod",
dark: "Koyu mod",
auto: 'Otomatik tema',
light: 'ık mod',
dark: 'Koyu mod',
},
Prompt: "Kısayol komutu",
Masks: "Tüm maskeler",
Clear: "Sohbeti temizle",
Settings: "Sohbet ayarları",
UploadImage: "Resim yükle",
Prompt: 'Kısayol komutu',
Masks: 'Tüm maskeler',
Clear: 'Sohbeti temizle',
Settings: 'Sohbet ayarları',
UploadImage: 'Resim yükle',
},
Rename: "Sohbeti yeniden adlandır",
Typing: "Yazıyor…",
Rename: 'Sohbeti yeniden adlandır',
Typing: 'Yazıyor…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} gönder`;
let inputHints = `${submitKey} gönder`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += " Shift + Enter satır sonu için";
inputHints += ' Shift + Enter satır sonu için';
}
return inputHints + " / tamamlama için, : komutlar için";
return `${inputHints} / tamamlama için, : komutlar için`;
},
Send: "Gönder",
Send: 'Gönder',
Config: {
Reset: "Hafızayı temizle",
SaveAs: "Maske olarak kaydet",
Reset: 'Hafızayı temizle',
SaveAs: 'Maske olarak kaydet',
},
IsContext: "Varsayılan ifade",
IsContext: 'Varsayılan ifade',
},
Export: {
Title: "Sohbet kayıtlarını paylaş",
Copy: "Hepsini kopyala",
Download: "Dosyayı indir",
Share: "ShareGPT'ye paylaş",
MessageFromYou: "Kullanıcı",
MessageFromChatGPT: "ChatGPT",
Title: 'Sohbet kayıtlarını paylaş',
Copy: 'Hepsini kopyala',
Download: 'Dosyayı indir',
Share: 'ShareGPT\'ye paylaş',
MessageFromYou: 'Kullanıcı',
MessageFromChatGPT: 'ChatGPT',
Format: {
Title: "Dışa aktarma formatı",
SubTitle: "Markdown metni veya PNG resmi olarak dışa aktarabilirsiniz",
Title: 'Dışa aktarma formatı',
SubTitle: 'Markdown metni veya PNG resmi olarak dışa aktarabilirsiniz',
},
IncludeContext: {
Title: "Maske bağlamını dahil et",
SubTitle: "Mesajlarda maske bağlamını göstermek ister misiniz",
Title: 'Maske bağlamını dahil et',
SubTitle: 'Mesajlarda maske bağlamını göstermek ister misiniz',
},
Steps: {
Select: "Seç",
Preview: "Önizleme",
Select: 'Seç',
Preview: 'Önizleme',
},
Image: {
Toast: "Ekran görüntüsü oluşturuluyor",
Modal: "Resmi uzun basın veya sağ tıklayın ve kaydedin",
Toast: 'Ekran görüntüsü oluşturuluyor',
Modal: 'Resmi uzun basın veya sağ tıklayın ve kaydedin',
},
},
Select: {
Search: "Mesajları ara",
All: "Hepsini seç",
Latest: "Son birkaç mesaj",
Clear: "Seçimi temizle",
Search: 'Mesajları ara',
All: 'Hepsini seç',
Latest: 'Son birkaç mesaj',
Clear: 'Seçimi temizle',
},
Memory: {
Title: "Geçmiş Özeti",
EmptyContent: "Sohbet içeriği çok kısa, özetleme gerek yok",
Send: "Sohbet kayıtlarını otomatik olarak sıkıştır ve bağlam olarak gönder",
Copy: "Özeti kopyala",
Reset: "[kullanılmadı]",
ResetConfirm: "Geçmiş özetini temizlemek istediğinize emin misiniz?",
Title: 'Geçmiş Özeti',
EmptyContent: 'Sohbet içeriği çok kısa, özetleme gerek yok',
Send: 'Sohbet kayıtlarını otomatik olarak sıkıştır ve bağlam olarak gönder',
Copy: 'Özeti kopyala',
Reset: '[kullanılmadı]',
ResetConfirm: 'Geçmiş özetini temizlemek istediğinize emin misiniz?',
},
Home: {
NewChat: "Yeni sohbet",
DeleteChat: "Seçilen sohbeti silmek istediğinize emin misiniz?",
DeleteToast: "Sohbet silindi",
Revert: "Geri al",
NewChat: 'Yeni sohbet',
DeleteChat: 'Seçilen sohbeti silmek istediğinize emin misiniz?',
DeleteToast: 'Sohbet silindi',
Revert: 'Geri al',
},
Settings: {
Title: "Ayarlar",
SubTitle: "Tüm ayar seçenekleri",
Title: 'Ayarlar',
SubTitle: 'Tüm ayar seçenekleri',
Danger: {
Reset: {
Title: "Tüm ayarları sıfırla",
SubTitle: "Tüm ayarları varsayılan değerlere sıfırla",
Action: "Hemen sıfırla",
Confirm: "Tüm ayarları sıfırlamak istediğinizden emin misiniz?",
Title: 'Tüm ayarları sıfırla',
SubTitle: 'Tüm ayarları varsayılan değerlere sıfırla',
Action: 'Hemen sıfırla',
Confirm: 'Tüm ayarları sıfırlamak istediğinizden emin misiniz?',
},
Clear: {
Title: "Tüm verileri temizle",
SubTitle: "Tüm sohbet ve ayar verilerini temizle",
Action: "Hemen temizle",
Title: 'Tüm verileri temizle',
SubTitle: 'Tüm sohbet ve ayar verilerini temizle',
Action: 'Hemen temizle',
Confirm:
"Tüm sohbet ve ayar verilerini temizlemek istediğinizden emin misiniz?",
'Tüm sohbet ve ayar verilerini temizlemek istediğinizden emin misiniz?',
},
},
Lang: {
Name: "Language", // Dikkat: yeni bir çeviri eklemek isterseniz, bu değeri çevirmeyin, `Language` olarak bırakın
All: "Tüm diller",
Name: 'Language', // Dikkat: yeni bir çeviri eklemek isterseniz, bu değeri çevirmeyin, `Language` olarak bırakın
All: 'Tüm diller',
},
Avatar: "Profil Resmi",
Avatar: 'Profil Resmi',
FontSize: {
Title: "Yazı Boyutu",
SubTitle: "Sohbet içeriğinin yazı boyutu",
Title: 'Yazı Boyutu',
SubTitle: 'Sohbet içeriğinin yazı boyutu',
},
FontFamily: {
Title: "Sohbet Yazı Tipi",
Title: 'Sohbet Yazı Tipi',
SubTitle:
"Sohbet içeriğinin yazı tipi, boş bırakıldığında küresel varsayılan yazı tipi uygulanır",
Placeholder: "Yazı Tipi Adı",
'Sohbet içeriğinin yazı tipi, boş bırakıldığında küresel varsayılan yazı tipi uygulanır',
Placeholder: 'Yazı Tipi Adı',
},
InjectSystemPrompts: {
Title: "Sistem Seviyesi İpucu Enjeksiyonu",
SubTitle: "Her isteğin başına ChatGPT benzeri bir sistem ipucu ekle",
Title: 'Sistem Seviyesi İpucu Enjeksiyonu',
SubTitle: 'Her isteğin başına ChatGPT benzeri bir sistem ipucu ekle',
},
InputTemplate: {
Title: "Kullanıcı Girdisi Ön İşleme",
SubTitle: "Kullanıcının en son mesajı bu şablona doldurulur",
Title: 'Kullanıcı Girdisi Ön İşleme',
SubTitle: 'Kullanıcının en son mesajı bu şablona doldurulur',
},
Update: {
Version: (x: string) => `Mevcut sürüm: ${x}`,
IsLatest: "En son sürüm",
CheckUpdate: "Güncellemeleri kontrol et",
IsChecking: "Güncellemeler kontrol ediliyor...",
IsLatest: 'En son sürüm',
CheckUpdate: 'Güncellemeleri kontrol et',
IsChecking: 'Güncellemeler kontrol ediliyor...',
FoundUpdate: (x: string) => `Yeni sürüm bulundu: ${x}`,
GoToUpdate: "Güncellemeye git",
GoToUpdate: 'Güncellemeye git',
},
SendKey: "Gönderme Tuşu",
Theme: "Tema",
TightBorder: "Sınır Yok Modu",
SendKey: 'Gönderme Tuşu',
Theme: 'Tema',
TightBorder: 'Sınır Yok Modu',
SendPreviewBubble: {
Title: "Önizleme Balonu",
SubTitle: "Markdown içeriğini önizleme balonunda görüntüle",
Title: 'Önizleme Balonu',
SubTitle: 'Markdown içeriğini önizleme balonunda görüntüle',
},
AutoGenerateTitle: {
Title: "Başlığı Otomatik Oluştur",
SubTitle: "Sohbet içeriğine göre uygun başlık oluştur",
Title: 'Başlığı Otomatik Oluştur',
SubTitle: 'Sohbet içeriğine göre uygun başlık oluştur',
},
Sync: {
CloudState: "Bulut Verisi",
NotSyncYet: "Henüz senkronize edilmedi",
Success: "Senkronizasyon başarılı",
Fail: "Senkronizasyon başarısız",
CloudState: 'Bulut Verisi',
NotSyncYet: 'Henüz senkronize edilmedi',
Success: 'Senkronizasyon başarılı',
Fail: 'Senkronizasyon başarısız',
Config: {
Modal: {
Title: "Bulut Senkronizasyonu Yapılandır",
Check: "Kullanılabilirliği kontrol et",
Title: 'Bulut Senkronizasyonu Yapılandır',
Check: 'Kullanılabilirliği kontrol et',
},
SyncType: {
Title: "Senkronizasyon Türü",
SubTitle: "Tercih ettiğiniz senkronizasyon sunucusunu seçin",
Title: 'Senkronizasyon Türü',
SubTitle: 'Tercih ettiğiniz senkronizasyon sunucusunu seçin',
},
Proxy: {
Title: "Proxy'yi Etkinleştir",
Title: 'Proxy\'yi Etkinleştir',
SubTitle:
"Tarayıcıda senkronize ederken proxy'yi etkinleştirin, aksi takdirde çapraz kaynak kısıtlamalarıyla karşılaşabilirsiniz",
'Tarayıcıda senkronize ederken proxy\'yi etkinleştirin, aksi takdirde çapraz kaynak kısıtlamalarıyla karşılaşabilirsiniz',
},
ProxyUrl: {
Title: "Proxy Adresi",
SubTitle: "Sadece bu projeye ait çapraz kaynak proxy için",
Title: 'Proxy Adresi',
SubTitle: 'Sadece bu projeye ait çapraz kaynak proxy için',
},
WebDav: {
Endpoint: "WebDAV Adresi",
UserName: "Kullanıcı Adı",
Password: "Şifre",
Endpoint: 'WebDAV Adresi',
UserName: 'Kullanıcı Adı',
Password: 'Şifre',
},
UpStash: {
Endpoint: "UpStash Redis REST Url",
UserName: "Yedekleme Adı",
Password: "UpStash Redis REST Token",
Endpoint: 'UpStash Redis REST Url',
UserName: 'Yedekleme Adı',
Password: 'UpStash Redis REST Token',
},
},
LocalState: "Yerel Veri",
LocalState: 'Yerel Veri',
Overview: (overview: any) => {
return `${overview.chat} konuşma, ${overview.message} mesaj, ${overview.prompt} ipucu, ${overview.mask} maske`;
},
ImportFailed: "İçeri aktarma başarısız",
ImportFailed: 'İçeri aktarma başarısız',
},
Mask: {
Splash: {
Title: "Maske Başlangıç Sayfası",
Title: 'Maske Başlangıç Sayfası',
SubTitle:
"Yeni sohbet başlatıldığında maske başlangıç sayfasını göster",
'Yeni sohbet başlatıldığında maske başlangıç sayfasını göster',
},
Builtin: {
Title: "Yerleşik Maskeleri Gizle",
SubTitle: "Tüm maskeler listesindeki yerleşik maskeleri gizle",
Title: 'Yerleşik Maskeleri Gizle',
SubTitle: 'Tüm maskeler listesindeki yerleşik maskeleri gizle',
},
},
Prompt: {
Disable: {
Title: "İpucu Tamamlamayı Devre Dışı Bırak",
Title: 'İpucu Tamamlamayı Devre Dışı Bırak',
SubTitle:
"Giriş kutusunun başına / yazarak otomatik tamamlamayı tetikle",
'Giriş kutusunun başına / yazarak otomatik tamamlamayı tetikle',
},
List: "Özelleştirilmiş İpucu Listesi",
List: 'Özelleştirilmiş İpucu Listesi',
ListCount: (builtin: number, custom: number) =>
`Yerleşik ${builtin} tane, kullanıcı tanımlı ${custom} tane`,
Edit: "Düzenle",
Edit: 'Düzenle',
Modal: {
Title: "İpucu Listesi",
Add: "Yeni Ekle",
Search: "İpucu Ara",
Title: 'İpucu Listesi',
Add: 'Yeni Ekle',
Search: 'İpucu Ara',
},
EditModal: {
Title: "İpucu Düzenle",
Title: 'İpucu Düzenle',
},
},
HistoryCount: {
Title: "Ekli Geçmiş Mesaj Sayısı",
SubTitle: "Her istekte taşınan geçmiş mesaj sayısı",
Title: 'Ekli Geçmiş Mesaj Sayısı',
SubTitle: 'Her istekte taşınan geçmiş mesaj sayısı',
},
CompressThreshold: {
Title: "Geçmiş Mesaj Uzunluğu Sıkıştırma Eşiği",
Title: 'Geçmiş Mesaj Uzunluğu Sıkıştırma Eşiği',
SubTitle:
"Sıkıştırılmamış geçmiş mesaj bu değeri aştığında sıkıştırma yapılır",
'Sıkıştırılmamış geçmiş mesaj bu değeri aştığında sıkıştırma yapılır',
},
Usage: {
Title: "Bakiye Sorgulama",
Title: 'Bakiye Sorgulama',
SubTitle(used: any, total: any) {
return `Bu ay kullanılan $${used}, toplam abonelik ücreti $${total}`;
},
IsChecking: "Kontrol ediliyor…",
Check: "Yeniden kontrol et",
IsChecking: 'Kontrol ediliyor…',
Check: 'Yeniden kontrol et',
NoAccess:
"Bakiye görüntülemek için API Anahtarı veya erişim şifresi girin",
'Bakiye görüntülemek için API Anahtarı veya erişim şifresi girin',
},
Access: {
SaasStart: {
Title: "NextChat AI kullanın",
Label: "(En maliyet etkin çözüm)",
Title: 'NextChat AI kullanın',
Label: '(En maliyet etkin çözüm)',
SubTitle:
"NextChat tarafından resmi olarak yönetilmektedir, yapılandırma olmadan hemen kullanıma hazırdır, OpenAI o1, GPT-4o, Claude-3.5 gibi en son büyük modelleri destekler",
ChatNow: "Şimdi sohbet et",
'NextChat tarafından resmi olarak yönetilmektedir, yapılandırma olmadan hemen kullanıma hazırdır, OpenAI o1, GPT-4o, Claude-3.5 gibi en son büyük modelleri destekler',
ChatNow: 'Şimdi sohbet et',
},
AccessCode: {
Title: "Erişim Şifresi",
SubTitle: "Yönetici şifreli erişimi etkinleştirdi",
Placeholder: "Erişim şifrenizi girin",
Title: 'Erişim Şifresi',
SubTitle: 'Yönetici şifreli erişimi etkinleştirdi',
Placeholder: 'Erişim şifrenizi girin',
},
CustomEndpoint: {
Title: "Özelleştirilmiş API",
Title: 'Özelleştirilmiş API',
SubTitle:
"Özelleştirilmiş Azure veya OpenAI hizmeti kullanmak ister misiniz?",
'Özelleştirilmiş Azure veya OpenAI hizmeti kullanmak ister misiniz?',
},
Provider: {
Title: "Model Sağlayıcısı",
SubTitle: "Farklı sağlayıcılara geçiş yapın",
Title: 'Model Sağlayıcısı',
SubTitle: 'Farklı sağlayıcılara geçiş yapın',
},
OpenAI: {
ApiKey: {
Title: "API Anahtarı",
Title: 'API Anahtarı',
SubTitle:
"Özelleştirilmiş OpenAI Anahtarı kullanarak şifreli erişim kısıtlamalarını atlayın",
Placeholder: "OpenAI API Anahtarı",
'Özelleştirilmiş OpenAI Anahtarı kullanarak şifreli erişim kısıtlamalarını atlayın',
Placeholder: 'OpenAI API Anahtarı',
},
Endpoint: {
Title: "API Adresi",
SubTitle: "Varsayılan adres dışında, http(s):// içermelidir",
Title: 'API Adresi',
SubTitle: 'Varsayılan adres dışında, http(s):// içermelidir',
},
},
Azure: {
ApiKey: {
Title: "API Anahtarı",
Title: 'API Anahtarı',
SubTitle:
"Özelleştirilmiş Azure Anahtarı kullanarak şifreli erişim kısıtlamalarını atlayın",
Placeholder: "Azure API Anahtarı",
'Özelleştirilmiş Azure Anahtarı kullanarak şifreli erişim kısıtlamalarını atlayın',
Placeholder: 'Azure API Anahtarı',
},
Endpoint: {
Title: "API Adresi",
SubTitle: "Örnek:",
Title: 'API Adresi',
SubTitle: 'Örnek:',
},
ApiVerion: {
Title: "API Versiyonu (azure api version)",
SubTitle: "Belirli bir versiyonu seçin",
Title: 'API Versiyonu (azure api version)',
SubTitle: 'Belirli bir versiyonu seçin',
},
},
Anthropic: {
ApiKey: {
Title: "API Anahtarı",
Title: 'API Anahtarı',
SubTitle:
"Özelleştirilmiş Anthropic Anahtarı kullanarak şifreli erişim kısıtlamalarını atlayın",
Placeholder: "Anthropic API Anahtarı",
'Özelleştirilmiş Anthropic Anahtarı kullanarak şifreli erişim kısıtlamalarını atlayın',
Placeholder: 'Anthropic API Anahtarı',
},
Endpoint: {
Title: "API Adresi",
SubTitle: "Örnek:",
Title: 'API Adresi',
SubTitle: 'Örnek:',
},
ApiVerion: {
Title: "API Versiyonu (claude api version)",
SubTitle: "Belirli bir API versiyonunu seçin",
Title: 'API Versiyonu (claude api version)',
SubTitle: 'Belirli bir API versiyonunu seçin',
},
},
Google: {
ApiKey: {
Title: "API Anahtarı",
SubTitle: "Google AI'den API Anahtarınızı alın",
Placeholder: "Google AI Studio API Anahtarınızı girin",
Title: 'API Anahtarı',
SubTitle: 'Google AI\'den API Anahtarınızı alın',
Placeholder: 'Google AI Studio API Anahtarınızı girin',
},
Endpoint: {
Title: "Uç Nokta Adresi",
SubTitle: "Örnek:",
Title: 'Uç Nokta Adresi',
SubTitle: 'Örnek:',
},
ApiVersion: {
Title: "API Versiyonu (sadece gemini-pro)",
SubTitle: "Belirli bir API versiyonunu seçin",
Title: 'API Versiyonu (sadece gemini-pro)',
SubTitle: 'Belirli bir API versiyonunu seçin',
},
GoogleSafetySettings: {
Title: "Google Güvenlik Filtreleme Seviyesi",
SubTitle: "İçerik filtreleme seviyesini ayarlayın",
Title: 'Google Güvenlik Filtreleme Seviyesi',
SubTitle: 'İçerik filtreleme seviyesini ayarlayın',
},
},
Baidu: {
ApiKey: {
Title: "API Anahtarı",
SubTitle: "Özelleştirilmiş Baidu API Anahtarı kullanın",
Placeholder: "Baidu API Anahtarı",
Title: 'API Anahtarı',
SubTitle: 'Özelleştirilmiş Baidu API Anahtarı kullanın',
Placeholder: 'Baidu API Anahtarı',
},
SecretKey: {
Title: "Secret Anahtarı",
SubTitle: "Özelleştirilmiş Baidu Secret Anahtarı kullanın",
Placeholder: "Baidu Secret Anahtarı",
Title: 'Secret Anahtarı',
SubTitle: 'Özelleştirilmiş Baidu Secret Anahtarı kullanın',
Placeholder: 'Baidu Secret Anahtarı',
},
Endpoint: {
Title: "API Adresi",
SubTitle: "Özelleştirilmiş yapılandırma için .env'ye gidin",
Title: 'API Adresi',
SubTitle: 'Özelleştirilmiş yapılandırma için .env\'ye gidin',
},
},
ByteDance: {
ApiKey: {
Title: "API Anahtarı",
SubTitle: "Özelleştirilmiş ByteDance API Anahtarı kullanın",
Placeholder: "ByteDance API Anahtarı",
Title: 'API Anahtarı',
SubTitle: 'Özelleştirilmiş ByteDance API Anahtarı kullanın',
Placeholder: 'ByteDance API Anahtarı',
},
Endpoint: {
Title: "API Adresi",
SubTitle: "Örnek:",
Title: 'API Adresi',
SubTitle: 'Örnek:',
},
},
Alibaba: {
ApiKey: {
Title: "API Anahtarı",
SubTitle: "Özelleştirilmiş Alibaba Cloud API Anahtarı kullanın",
Placeholder: "Alibaba Cloud API Anahtarı",
Title: 'API Anahtarı',
SubTitle: 'Özelleştirilmiş Alibaba Cloud API Anahtarı kullanın',
Placeholder: 'Alibaba Cloud API Anahtarı',
},
Endpoint: {
Title: "API Adresi",
SubTitle: "Örnek:",
Title: 'API Adresi',
SubTitle: 'Örnek:',
},
},
CustomModel: {
Title: "Özelleştirilmiş Model Adı",
Title: 'Özelleştirilmiş Model Adı',
SubTitle:
"Özelleştirilmiş model seçenekleri ekleyin, İngilizce virgül ile ayırın",
'Özelleştirilmiş model seçenekleri ekleyin, İngilizce virgül ile ayırın',
},
},
Model: "Model (model)",
Model: 'Model (model)',
CompressModel: {
Title: "Sıkıştırma Modeli",
SubTitle: "Geçmişi sıkıştırmak için kullanılan model",
Title: 'Sıkıştırma Modeli',
SubTitle: 'Geçmişi sıkıştırmak için kullanılan model',
},
Temperature: {
Title: "Rastgelelik (temperature)",
SubTitle: "Değer arttıkça yanıt daha rastgele olur",
Title: 'Rastgelelik (temperature)',
SubTitle: 'Değer arttıkça yanıt daha rastgele olur',
},
TopP: {
Title: "Nükleer Örnekleme (top_p)",
Title: 'Nükleer Örnekleme (top_p)',
SubTitle:
"Rastgeleliğe benzer, ancak rastgelelik ile birlikte değiştirmeyin",
'Rastgeleliğe benzer, ancak rastgelelik ile birlikte değiştirmeyin',
},
MaxTokens: {
Title: "Tek Yanıt Limiti (max_tokens)",
SubTitle: "Tek etkileşimde kullanılan maksimum Token sayısı",
Title: 'Tek Yanıt Limiti (max_tokens)',
SubTitle: 'Tek etkileşimde kullanılan maksimum Token sayısı',
},
PresencePenalty: {
Title: "Konu Tazeliği (presence_penalty)",
SubTitle: "Değer arttıkça, yeni konulara geçiş olasılığı artar",
Title: 'Konu Tazeliği (presence_penalty)',
SubTitle: 'Değer arttıkça, yeni konulara geçiş olasılığı artar',
},
FrequencyPenalty: {
Title: "Frekans Cezası (frequency_penalty)",
Title: 'Frekans Cezası (frequency_penalty)',
SubTitle:
"Değer arttıkça, tekrar eden kelimelerin azalması olasılığı artar",
'Değer arttıkça, tekrar eden kelimelerin azalması olasılığı artar',
},
},
Store: {
DefaultTopic: "Yeni Sohbet",
BotHello: "Size nasıl yardımcı olabilirim?",
Error: "Bir hata oluştu, lütfen daha sonra tekrar deneyin",
DefaultTopic: 'Yeni Sohbet',
BotHello: 'Size nasıl yardımcı olabilirim?',
Error: 'Bir hata oluştu, lütfen daha sonra tekrar deneyin',
Prompt: {
History: (content: string) => "Bu, geçmiş sohbetin özeti: " + content,
History: (content: string) => `Bu, geçmiş sohbetin özeti: ${content}`,
Topic:
"Bu cümlenin dört ila beş kelimelik kısa başlığını doğrudan verin, açıklama yapmayın, noktalama işareti, duygu kelimesi veya fazla metin eklemeyin, kalın yapmayın. Başlık yoksa, doğrudan 'Sohbet' yanıtını verin.",
'Bu cümlenin dört ila beş kelimelik kısa başlığını doğrudan verin, açıklama yapmayın, noktalama işareti, duygu kelimesi veya fazla metin eklemeyin, kalın yapmayın. Başlık yoksa, doğrudan \'Sohbet\' yanıtını verin.',
Summarize:
"Sohbet içeriğini kısaca özetleyin, bu özet sonraki bağlam ipucu olarak kullanılacaktır, 200 kelime içinde tutun",
'Sohbet içeriğini kısaca özetleyin, bu özet sonraki bağlam ipucu olarak kullanılacaktır, 200 kelime içinde tutun',
},
},
Copy: {
Success: "Panoya yazıldı",
Failed: "Kopyalama başarısız, lütfen panoya erişim izni verin",
Success: 'Panoya yazıldı',
Failed: 'Kopyalama başarısız, lütfen panoya erişim izni verin',
},
Download: {
Success: "İçerik dizininize indirildi.",
Failed: "İndirme başarısız.",
Success: 'İçerik dizininize indirildi.',
Failed: 'İndirme başarısız.',
},
Context: {
Toast: (x: any) => `${x} tane önceden tanımlı ipucu içeriyor`,
Edit: "Mevcut sohbet ayarları",
Add: "Yeni bir sohbet ekle",
Clear: "Bağlam temizlendi",
Revert: "Bağlamı geri getir",
Edit: 'Mevcut sohbet ayarları',
Add: 'Yeni bir sohbet ekle',
Clear: 'Bağlam temizlendi',
Revert: 'Bağlamı geri getir',
},
Plugin: {
Name: "Eklenti",
Name: 'Eklenti',
},
FineTuned: {
Sysmessage: "Sen bir asistansın",
Sysmessage: 'Sen bir asistansın',
},
SearchChat: {
Name: "Ara",
Name: 'Ara',
Page: {
Title: "Sohbet geçmişini ara",
Search: "Arama anahtar kelimelerini girin",
NoResult: "Sonuç bulunamadı",
NoData: "Veri yok",
Loading: "Yükleniyor",
Title: 'Sohbet geçmişini ara',
Search: 'Arama anahtar kelimelerini girin',
NoResult: 'Sonuç bulunamadı',
NoData: 'Veri yok',
Loading: 'Yükleniyor',
SubTitle: (count: number) => `${count} sonuç bulundu`,
},
Item: {
View: "Görüntüle",
View: 'Görüntüle',
},
},
Mask: {
Name: "Maske",
Name: 'Maske',
Page: {
Title: "Önceden Tanımlı Karakter Maskeleri",
Title: 'Önceden Tanımlı Karakter Maskeleri',
SubTitle: (count: number) =>
`${count} tane önceden tanımlı karakter tanımı`,
Search: "Karakter maskesi ara",
Create: "Yeni oluştur",
Search: 'Karakter maskesi ara',
Create: 'Yeni oluştur',
},
Item: {
Info: (count: number) => `${count} tane önceden tanımlı sohbet içeriyor`,
Chat: "Sohbet",
View: "Görüntüle",
Edit: "Düzenle",
Delete: "Sil",
DeleteConfirm: "Silmek istediğinizden emin misiniz?",
Chat: 'Sohbet',
View: 'Görüntüle',
Edit: 'Düzenle',
Delete: 'Sil',
DeleteConfirm: 'Silmek istediğinizden emin misiniz?',
},
EditModal: {
Title: (readonly: boolean) =>
`Önceden Tanımlı Maskeyi Düzenle ${readonly ? " (Salt Okunur)" : ""}`,
Download: "Önceden Tanımlı Maskeyi İndir",
Clone: "Önceden Tanımlı Maskeyi Kopyala",
`Önceden Tanımlı Maskeyi Düzenle ${readonly ? ' (Salt Okunur)' : ''}`,
Download: 'Önceden Tanımlı Maskeyi İndir',
Clone: 'Önceden Tanımlı Maskeyi Kopyala',
},
Config: {
Avatar: "Karakter Profil Resmi",
Name: "Karakter Adı",
Avatar: 'Karakter Profil Resmi',
Name: 'Karakter Adı',
Sync: {
Title: "Küresel Ayarları Kullan",
SubTitle: "Mevcut sohbet küresel model ayarlarını mı kullanacak?",
Title: 'Küresel Ayarları Kullan',
SubTitle: 'Mevcut sohbet küresel model ayarlarını mı kullanacak?',
Confirm:
"Mevcut sohbetin özelleştirilmiş ayarları otomatik olarak üzerine yazılacaktır, küresel ayarları etkinleştirmek istediğinizden emin misiniz?",
'Mevcut sohbetin özelleştirilmiş ayarları otomatik olarak üzerine yazılacaktır, küresel ayarları etkinleştirmek istediğinizden emin misiniz?',
},
HideContext: {
Title: "Önceden Tanımlı Sohbetleri Gizle",
Title: 'Önceden Tanımlı Sohbetleri Gizle',
SubTitle:
"Gizlendiğinde, önceden tanımlı sohbetler sohbet ekranında görünmeyecek",
'Gizlendiğinde, önceden tanımlı sohbetler sohbet ekranında görünmeyecek',
},
Share: {
Title: "Bu Maskeyi Paylaş",
SubTitle: "Bu maskenin doğrudan bağlantısını oluştur",
Action: "Bağlantıyı Kopyala",
Title: 'Bu Maskeyi Paylaş',
SubTitle: 'Bu maskenin doğrudan bağlantısını oluştur',
Action: 'Bağlantıyı Kopyala',
},
},
},
NewChat: {
Return: "Geri dön",
Skip: "Doğrudan başla",
NotShow: "Bir daha gösterme",
Return: 'Geri dön',
Skip: 'Doğrudan başla',
NotShow: 'Bir daha gösterme',
ConfirmNoShow:
"Devre dışı bırakmak istediğinizden emin misiniz? Devre dışı bıraktıktan sonra ayarlardan tekrar etkinleştirebilirsiniz.",
Title: "Bir Maske Seçin",
'Devre dışı bırakmak istediğinizden emin misiniz? Devre dışı bıraktıktan sonra ayarlardan tekrar etkinleştirebilirsiniz.',
Title: 'Bir Maske Seçin',
SubTitle:
"Şimdi başlayın ve maskenin arkasındaki zihinle etkileşimde bulunun",
More: "Tümünü Gör",
'Şimdi başlayın ve maskenin arkasındaki zihinle etkileşimde bulunun',
More: 'Tümünü Gör',
},
URLCommand: {
Code: "Bağlantıda erişim kodu bulundu, otomatik olarak doldurulsun mu?",
Code: 'Bağlantıda erişim kodu bulundu, otomatik olarak doldurulsun mu?',
Settings:
"Bağlantıda önceden tanımlı ayarlar bulundu, otomatik olarak doldurulsun mu?",
'Bağlantıda önceden tanımlı ayarlar bulundu, otomatik olarak doldurulsun mu?',
},
UI: {
Confirm: "Onayla",
Cancel: "İptal et",
Close: "Kapat",
Create: "Yeni oluştur",
Edit: "Düzenle",
Export: "Dışa Aktar",
Import: "İçe Aktar",
Sync: "Senkronize et",
Config: "Yapılandır",
Confirm: 'Onayla',
Cancel: 'İptal et',
Close: 'Kapat',
Create: 'Yeni oluştur',
Edit: 'Düzenle',
Export: 'Dışa Aktar',
Import: 'İçe Aktar',
Sync: 'Senkronize et',
Config: 'Yapılandır',
},
Exporter: {
Description: {
Title: "Sadece bağlam temizlendikten sonraki mesajlar gösterilecektir",
Title: 'Sadece bağlam temizlendikten sonraki mesajlar gösterilecektir',
},
Model: "Model",
Messages: "Mesajlar",
Topic: "Konu",
Time: "Zaman",
Model: 'Model',
Messages: 'Mesajlar',
Topic: 'Konu',
Time: 'Zaman',
},
};

View File

@@ -1,10 +1,11 @@
import { getClientConfig } from "../config/client";
import { SubmitKey } from "../store/config";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const tw = {
WIP: "此功能仍在開發中……",
WIP: '此功能仍在開發中……',
Error: {
Unauthorized: isApp
? `😆 對話遇到了一些問題,不用慌:
@@ -18,16 +19,16 @@ const tw = {
},
Auth: {
Title: "需要密碼",
Tips: "管理員開啟了密碼驗證,請在下方填入存取密碼",
SubTips: "或者輸入你的 OpenAI 或 Google API 金鑰",
Input: "在此處填寫存取密碼",
Confirm: "確認",
Later: "稍候再說",
Return: "返回",
SaasTips: "設定太麻煩,想要立即使用",
Title: '需要密碼',
Tips: '管理員開啟了密碼驗證,請在下方填入存取密碼',
SubTips: '或者輸入你的 OpenAI 或 Google API 金鑰',
Input: '在此處填寫存取密碼',
Confirm: '確認',
Later: '稍候再說',
Return: '返回',
SaasTips: '設定太麻煩,想要立即使用',
TopTips:
"🥳 NextChat AI 首發優惠,立刻解鎖 OpenAI o1, GPT-4o, Claude-3.5 等最新的大型語言模型",
'🥳 NextChat AI 首發優惠,立刻解鎖 OpenAI o1, GPT-4o, Claude-3.5 等最新的大型語言模型',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} 則對話`,
@@ -35,502 +36,502 @@ const tw = {
Chat: {
SubTitle: (count: number) => `您已經與 ChatGPT 進行了 ${count} 則對話`,
EditMessage: {
Title: "編輯訊息記錄",
Title: '編輯訊息記錄',
Topic: {
Title: "聊天主題",
SubTitle: "更改目前聊天主題",
Title: '聊天主題',
SubTitle: '更改目前聊天主題',
},
},
Actions: {
ChatList: "檢視訊息列表",
CompressedHistory: "檢視壓縮後的歷史 Prompt",
Export: "匯出聊天紀錄",
Copy: "複製",
Stop: "停止",
Retry: "重試",
Pin: "固定",
PinToastContent: "已將 1 條對話固定至預設提示詞",
PinToastAction: "檢視",
Delete: "刪除",
Edit: "編輯",
RefreshTitle: "重新整理標題",
RefreshToast: "已傳送重新整理標題請求",
ChatList: '檢視訊息列表',
CompressedHistory: '檢視壓縮後的歷史 Prompt',
Export: '匯出聊天紀錄',
Copy: '複製',
Stop: '停止',
Retry: '重試',
Pin: '固定',
PinToastContent: '已將 1 條對話固定至預設提示詞',
PinToastAction: '檢視',
Delete: '刪除',
Edit: '編輯',
RefreshTitle: '重新整理標題',
RefreshToast: '已傳送重新整理標題請求',
},
Commands: {
new: "新建聊天",
newm: "從角色範本新建聊天",
next: "下一個聊天",
prev: "上一個聊天",
clear: "清除上下文",
del: "刪除聊天",
new: '新建聊天',
newm: '從角色範本新建聊天',
next: '下一個聊天',
prev: '上一個聊天',
clear: '清除上下文',
del: '刪除聊天',
},
InputActions: {
Stop: "停止回應",
ToBottom: "移至最新",
Stop: '停止回應',
ToBottom: '移至最新',
Theme: {
auto: "自動主題",
light: "亮色模式",
dark: "深色模式",
auto: '自動主題',
light: '亮色模式',
dark: '深色模式',
},
Prompt: "快捷指令",
Masks: "所有角色範本",
Clear: "清除聊天",
Settings: "對話設定",
UploadImage: "上傳圖片",
Prompt: '快捷指令',
Masks: '所有角色範本',
Clear: '清除聊天',
Settings: '對話設定',
UploadImage: '上傳圖片',
},
Rename: "重新命名對話",
Typing: "正在輸入…",
Rename: '重新命名對話',
Typing: '正在輸入…',
Input: (submitKey: string) => {
var inputHints = `輸入訊息後,按下 ${submitKey} 鍵即可傳送`;
let inputHints = `輸入訊息後,按下 ${submitKey} 鍵即可傳送`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "Shift + Enter 鍵換行";
inputHints += 'Shift + Enter 鍵換行';
}
return inputHints;
},
Send: "傳送",
Send: '傳送',
Config: {
Reset: "重設",
SaveAs: "另存新檔",
Reset: '重設',
SaveAs: '另存新檔',
},
IsContext: "預設提示詞",
IsContext: '預設提示詞',
ShortcutKey: {
Title: "鍵盤快捷方式",
newChat: "開啟新聊天",
focusInput: "聚焦輸入框",
copyLastMessage: "複製最後一個回覆",
copyLastCode: "複製最後一個程式碼區塊",
showShortcutKey: "顯示快捷方式",
Title: '鍵盤快捷方式',
newChat: '開啟新聊天',
focusInput: '聚焦輸入框',
copyLastMessage: '複製最後一個回覆',
copyLastCode: '複製最後一個程式碼區塊',
showShortcutKey: '顯示快捷方式',
},
},
Export: {
Title: "將聊天記錄匯出為 Markdown",
Copy: "複製全部",
Download: "下載檔案",
Share: "分享到 ShareGPT",
MessageFromYou: "來自您的訊息",
MessageFromChatGPT: "來自 ChatGPT 的訊息",
Title: '將聊天記錄匯出為 Markdown',
Copy: '複製全部',
Download: '下載檔案',
Share: '分享到 ShareGPT',
MessageFromYou: '來自您的訊息',
MessageFromChatGPT: '來自 ChatGPT 的訊息',
Format: {
Title: "匯出格式",
SubTitle: "可以匯出 Markdown 文字檔或者 PNG 圖片",
Title: '匯出格式',
SubTitle: '可以匯出 Markdown 文字檔或者 PNG 圖片',
},
IncludeContext: {
Title: "包含角色範本上下文",
SubTitle: "是否在訊息中顯示角色範本上下文",
Title: '包含角色範本上下文',
SubTitle: '是否在訊息中顯示角色範本上下文',
},
Steps: {
Select: "選取",
Preview: "預覽",
Select: '選取',
Preview: '預覽',
},
Image: {
Toast: "正在產生截圖",
Modal: "長按或按右鍵儲存圖片",
Toast: '正在產生截圖',
Modal: '長按或按右鍵儲存圖片',
},
},
Select: {
Search: "查詢訊息",
All: "選取全部",
Latest: "最近幾條",
Clear: "清除選取",
Search: '查詢訊息',
All: '選取全部',
Latest: '最近幾條',
Clear: '清除選取',
},
Memory: {
Title: "上下文記憶 Prompt",
EmptyContent: "尚未記憶",
Copy: "複製全部",
Send: "傳送記憶",
Reset: "重設對話",
ResetConfirm: "重設後將清除目前對話記錄以及歷史記憶,確認重設?",
Title: '上下文記憶 Prompt',
EmptyContent: '尚未記憶',
Copy: '複製全部',
Send: '傳送記憶',
Reset: '重設對話',
ResetConfirm: '重設後將清除目前對話記錄以及歷史記憶,確認重設?',
},
Home: {
NewChat: "開新對話",
DeleteChat: "確定要刪除選取的對話嗎?",
DeleteToast: "已刪除對話",
Revert: "撤銷",
NewChat: '開新對話',
DeleteChat: '確定要刪除選取的對話嗎?',
DeleteToast: '已刪除對話',
Revert: '撤銷',
},
Settings: {
Title: "設定",
SubTitle: "設定選項",
Title: '設定',
SubTitle: '設定選項',
Danger: {
Reset: {
Title: "重設所有設定",
SubTitle: "重設所有設定項回預設值",
Action: "立即重設",
Confirm: "確認重設所有設定?",
Title: '重設所有設定',
SubTitle: '重設所有設定項回預設值',
Action: '立即重設',
Confirm: '確認重設所有設定?',
},
Clear: {
Title: "清除所有資料",
SubTitle: "清除所有聊天、設定資料",
Action: "立即清除",
Confirm: "確認清除所有聊天、設定資料?",
Title: '清除所有資料',
SubTitle: '清除所有聊天、設定資料',
Action: '立即清除',
Confirm: '確認清除所有聊天、設定資料?',
},
},
Lang: {
Name: "Language", // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
All: "所有語言",
Name: 'Language', // ATTENTION: if you wanna add a new translation, please do not translate this value, leave it as `Language`
All: '所有語言',
},
Avatar: "大頭貼",
Avatar: '大頭貼',
FontSize: {
Title: "字型大小",
SubTitle: "聊天內容的字型大小",
Title: '字型大小',
SubTitle: '聊天內容的字型大小',
},
FontFamily: {
Title: "聊天字型",
SubTitle: "聊天內容的字型,若留空則套用全域預設字型",
Placeholder: "字型名稱",
Title: '聊天字型',
SubTitle: '聊天內容的字型,若留空則套用全域預設字型',
Placeholder: '字型名稱',
},
InjectSystemPrompts: {
Title: "匯入系統提示",
SubTitle: "強制在每個請求的訊息列表開頭新增一個模擬 ChatGPT 的系統提示",
Title: '匯入系統提示',
SubTitle: '強制在每個請求的訊息列表開頭新增一個模擬 ChatGPT 的系統提示',
},
InputTemplate: {
Title: "使用者輸入預處理",
SubTitle: "使用者最新的一則訊息會填充到此範本",
Title: '使用者輸入預處理',
SubTitle: '使用者最新的一則訊息會填充到此範本',
},
Update: {
Version: (x: string) => `目前版本:${x}`,
IsLatest: "已是最新版本",
CheckUpdate: "檢查更新",
IsChecking: "正在檢查更新...",
IsLatest: '已是最新版本',
CheckUpdate: '檢查更新',
IsChecking: '正在檢查更新...',
FoundUpdate: (x: string) => `發現新版本:${x}`,
GoToUpdate: "前往更新",
GoToUpdate: '前往更新',
},
SendKey: "傳送鍵",
Theme: "主題",
TightBorder: "緊湊邊框",
SendKey: '傳送鍵',
Theme: '主題',
TightBorder: '緊湊邊框',
SendPreviewBubble: {
Title: "預覽氣泡",
SubTitle: "在預覽氣泡中預覽 Markdown 內容",
Title: '預覽氣泡',
SubTitle: '在預覽氣泡中預覽 Markdown 內容',
},
AutoGenerateTitle: {
Title: "自動產生標題",
SubTitle: "根據對話內容產生合適的標題",
Title: '自動產生標題',
SubTitle: '根據對話內容產生合適的標題',
},
Sync: {
CloudState: "雲端資料",
NotSyncYet: "還沒有進行過同步",
Success: "同步成功",
Fail: "同步失敗",
CloudState: '雲端資料',
NotSyncYet: '還沒有進行過同步',
Success: '同步成功',
Fail: '同步失敗',
Config: {
Modal: {
Title: "設定雲端同步",
Check: "檢查可用性",
Title: '設定雲端同步',
Check: '檢查可用性',
},
SyncType: {
Title: "同步類型",
SubTitle: "選擇偏好的同步伺服器",
Title: '同步類型',
SubTitle: '選擇偏好的同步伺服器',
},
Proxy: {
Title: "啟用代理伺服器",
SubTitle: "在瀏覽器中同步時,啟用代理伺服器以避免跨域限制",
Title: '啟用代理伺服器',
SubTitle: '在瀏覽器中同步時,啟用代理伺服器以避免跨域限制',
},
ProxyUrl: {
Title: "代理伺服器位置",
SubTitle: "僅適用於本專案內建的跨域代理",
Title: '代理伺服器位置',
SubTitle: '僅適用於本專案內建的跨域代理',
},
WebDav: {
Endpoint: "WebDAV 位置",
UserName: "使用者名稱",
Password: "密碼",
Endpoint: 'WebDAV 位置',
UserName: '使用者名稱',
Password: '密碼',
},
UpStash: {
Endpoint: "UpStash Redis REST Url",
UserName: "備份名稱",
Password: "UpStash Redis REST Token",
Endpoint: 'UpStash Redis REST Url',
UserName: '備份名稱',
Password: 'UpStash Redis REST Token',
},
},
LocalState: "本機資料",
LocalState: '本機資料',
Overview: (overview: any) => {
return `${overview.chat} 次對話,${overview.message} 則訊息,${overview.prompt} 條提示詞,${overview.mask} 個角色範本`;
},
ImportFailed: "匯入失敗",
ImportFailed: '匯入失敗',
},
Mask: {
Splash: {
Title: "角色範本啟動頁面",
SubTitle: "新增聊天時,呈現角色範本啟動頁面",
Title: '角色範本啟動頁面',
SubTitle: '新增聊天時,呈現角色範本啟動頁面',
},
Builtin: {
Title: "隱藏內建角色範本",
SubTitle: "在所有角色範本列表中隱藏內建角色範本",
Title: '隱藏內建角色範本',
SubTitle: '在所有角色範本列表中隱藏內建角色範本',
},
},
Prompt: {
Disable: {
Title: "停用提示詞自動補齊",
SubTitle: "在輸入框開頭輸入 / 即可觸發自動補齊",
Title: '停用提示詞自動補齊',
SubTitle: '在輸入框開頭輸入 / 即可觸發自動補齊',
},
List: "自訂提示詞列表",
List: '自訂提示詞列表',
ListCount: (builtin: number, custom: number) =>
`內建 ${builtin} 條,使用者自訂 ${custom}`,
Edit: "編輯",
Edit: '編輯',
Modal: {
Title: "提示詞列表",
Add: "新增一則",
Search: "搜尋提示詞",
Title: '提示詞列表',
Add: '新增一則',
Search: '搜尋提示詞',
},
EditModal: {
Title: "編輯提示詞",
Title: '編輯提示詞',
},
},
HistoryCount: {
Title: "附帶歷史訊息數",
SubTitle: "每次請求附帶的歷史訊息數",
Title: '附帶歷史訊息數',
SubTitle: '每次請求附帶的歷史訊息數',
},
CompressThreshold: {
Title: "歷史訊息長度壓縮閾值",
SubTitle: "當未壓縮的歷史訊息超過該值時,將進行壓縮",
Title: '歷史訊息長度壓縮閾值',
SubTitle: '當未壓縮的歷史訊息超過該值時,將進行壓縮',
},
Usage: {
Title: "帳戶餘額",
Title: '帳戶餘額',
SubTitle(used: any, total: any) {
return `本月已使用 $${used},訂閱總額 $${total}`;
},
IsChecking: "正在檢查…",
Check: "重新檢查",
NoAccess: "輸入 API Key 檢視餘額",
IsChecking: '正在檢查…',
Check: '重新檢查',
NoAccess: '輸入 API Key 檢視餘額',
},
Access: {
SaasStart: {
Title: "使用 NextChat AI",
Label: "(性價比最高的方案)",
Title: '使用 NextChat AI',
Label: '(性價比最高的方案)',
SubTitle:
"由 NextChat 官方維護,無須設定開箱即用,支援 OpenAI o1、GPT-4o、Claude-3.5 等最新的大型語言模型",
ChatNow: "立刻開始對話",
'由 NextChat 官方維護,無須設定開箱即用,支援 OpenAI o1、GPT-4o、Claude-3.5 等最新的大型語言模型',
ChatNow: '立刻開始對話',
},
AccessCode: {
Title: "存取密碼",
SubTitle: "管理員已開啟加密存取",
Placeholder: "請輸入存取密碼",
Title: '存取密碼',
SubTitle: '管理員已開啟加密存取',
Placeholder: '請輸入存取密碼',
},
CustomEndpoint: {
Title: "自訂 API 端點 (Endpoint)",
SubTitle: "是否使用自訂 Azure 或 OpenAI 服務",
Title: '自訂 API 端點 (Endpoint)',
SubTitle: '是否使用自訂 Azure 或 OpenAI 服務',
},
Provider: {
Title: "模型供應商",
SubTitle: "切換不同的服務供應商",
Title: '模型供應商',
SubTitle: '切換不同的服務供應商',
},
OpenAI: {
ApiKey: {
Title: "API Key",
SubTitle: "使用自訂 OpenAI Key 繞過密碼存取限制",
Placeholder: "OpenAI API Key",
Title: 'API Key',
SubTitle: '使用自訂 OpenAI Key 繞過密碼存取限制',
Placeholder: 'OpenAI API Key',
},
Endpoint: {
Title: "API 端點 (Endpoint) 位址",
SubTitle: "除預設位址外,必須包含 http(s)://",
Title: 'API 端點 (Endpoint) 位址',
SubTitle: '除預設位址外,必須包含 http(s)://',
},
},
Azure: {
ApiKey: {
Title: "API 金鑰",
SubTitle: "使用自訂 Azure Key 繞過密碼存取限制",
Placeholder: "Azure API Key",
Title: 'API 金鑰',
SubTitle: '使用自訂 Azure Key 繞過密碼存取限制',
Placeholder: 'Azure API Key',
},
Endpoint: {
Title: "API 端點 (Endpoint) 位址",
SubTitle: "範例:",
Title: 'API 端點 (Endpoint) 位址',
SubTitle: '範例:',
},
ApiVerion: {
Title: "API 版本 (azure api version)",
SubTitle: "指定一個特定的 API 版本",
Title: 'API 版本 (azure api version)',
SubTitle: '指定一個特定的 API 版本',
},
},
Anthropic: {
ApiKey: {
Title: "API 金鑰",
SubTitle: "從 Anthropic AI 取得您的 API 金鑰",
Placeholder: "Anthropic API Key",
Title: 'API 金鑰',
SubTitle: '從 Anthropic AI 取得您的 API 金鑰',
Placeholder: 'Anthropic API Key',
},
Endpoint: {
Title: "端點位址",
SubTitle: "範例:",
Title: '端點位址',
SubTitle: '範例:',
},
ApiVerion: {
Title: "API 版本 (claude api version)",
SubTitle: "指定一個特定的 API 版本",
Title: 'API 版本 (claude api version)',
SubTitle: '指定一個特定的 API 版本',
},
},
Google: {
ApiKey: {
Title: "API 金鑰",
SubTitle: "從 Google AI 取得您的 API 金鑰",
Placeholder: "輸入您的 Google AI Studio API 金鑰",
Title: 'API 金鑰',
SubTitle: '從 Google AI 取得您的 API 金鑰',
Placeholder: '輸入您的 Google AI Studio API 金鑰',
},
Endpoint: {
Title: "端點位址",
SubTitle: "範例:",
Title: '端點位址',
SubTitle: '範例:',
},
ApiVersion: {
Title: "API 版本(僅適用於 gemini-pro",
SubTitle: "選擇一個特定的 API 版本",
Title: 'API 版本(僅適用於 gemini-pro',
SubTitle: '選擇一個特定的 API 版本',
},
},
CustomModel: {
Title: "自訂模型名稱",
SubTitle: "增加自訂模型可選擇項目,使用英文逗號隔開",
Title: '自訂模型名稱',
SubTitle: '增加自訂模型可選擇項目,使用英文逗號隔開',
},
},
Model: "模型 (model)",
Model: '模型 (model)',
CompressModel: {
Title: "壓縮模型",
SubTitle: "用於壓縮歷史記錄的模型",
Title: '壓縮模型',
SubTitle: '用於壓縮歷史記錄的模型',
},
Temperature: {
Title: "隨機性 (temperature)",
SubTitle: "值越大,回應越隨機",
Title: '隨機性 (temperature)',
SubTitle: '值越大,回應越隨機',
},
TopP: {
Title: "核心採樣 (top_p)",
SubTitle: "與隨機性類似,但不要和隨機性一起更改",
Title: '核心採樣 (top_p)',
SubTitle: '與隨機性類似,但不要和隨機性一起更改',
},
MaxTokens: {
Title: "單次回應限制 (max_tokens)",
SubTitle: "單次互動所用的最大 Token 數",
Title: '單次回應限制 (max_tokens)',
SubTitle: '單次互動所用的最大 Token 數',
},
PresencePenalty: {
Title: "話題新穎度 (presence_penalty)",
SubTitle: "值越大,越有可能拓展到新話題",
Title: '話題新穎度 (presence_penalty)',
SubTitle: '值越大,越有可能拓展到新話題',
},
FrequencyPenalty: {
Title: "頻率懲罰度 (frequency_penalty)",
SubTitle: "值越大,越有可能降低重複字詞",
Title: '頻率懲罰度 (frequency_penalty)',
SubTitle: '值越大,越有可能降低重複字詞',
},
},
Store: {
DefaultTopic: "新的對話",
BotHello: "請問需要我的協助嗎?",
Error: "出錯了,請稍後再嘗試",
DefaultTopic: '新的對話',
BotHello: '請問需要我的協助嗎?',
Error: '出錯了,請稍後再嘗試',
Prompt: {
History: (content: string) =>
"這是 AI 與使用者的歷史聊天總結,作為前情提要:" + content,
`這是 AI 與使用者的歷史聊天總結,作為前情提要:${content}`,
Topic:
"Use the language used by the user (e.g. en for english conversation, zh-hant for chinese conversation, etc.) to generate a title (at most 6 words) summarizing our conversation without any lead-in, quotation marks, preamble like 'Title:', direct text copies, single-word replies, quotation marks, translations, or brackets. Remove enclosing quotation marks. The title should make third-party grasp the essence of the conversation in first sight.",
'Use the language used by the user (e.g. en for english conversation, zh-hant for chinese conversation, etc.) to generate a title (at most 6 words) summarizing our conversation without any lead-in, quotation marks, preamble like \'Title:\', direct text copies, single-word replies, quotation marks, translations, or brackets. Remove enclosing quotation marks. The title should make third-party grasp the essence of the conversation in first sight.',
Summarize:
"Use the language used by the user (e.g. en-us for english conversation, zh-hant for chinese conversation, etc.) to summarise the conversation in at most 200 words. The summary will be used as prompt for you to continue the conversation in the future.",
'Use the language used by the user (e.g. en-us for english conversation, zh-hant for chinese conversation, etc.) to summarise the conversation in at most 200 words. The summary will be used as prompt for you to continue the conversation in the future.',
},
},
Copy: {
Success: "已複製到剪貼簿中",
Failed: "複製失敗,請賦予剪貼簿權限",
Success: '已複製到剪貼簿中',
Failed: '複製失敗,請賦予剪貼簿權限',
},
Download: {
Success: "內容已下載到您的目錄。",
Failed: "下載失敗。",
Success: '內容已下載到您的目錄。',
Failed: '下載失敗。',
},
Context: {
Toast: (x: any) => `已設定 ${x} 條前置上下文`,
Edit: "前置上下文和歷史記憶",
Add: "新增一則",
Clear: "上下文已清除",
Revert: "恢復上下文",
Edit: '前置上下文和歷史記憶',
Add: '新增一則',
Clear: '上下文已清除',
Revert: '恢復上下文',
},
Plugin: { Name: "外掛" },
FineTuned: { Sysmessage: "你是一個助手" },
Plugin: { Name: '外掛' },
FineTuned: { Sysmessage: '你是一個助手' },
Mask: {
Name: "角色範本",
Name: '角色範本',
Page: {
Title: "預設角色角色範本",
Title: '預設角色角色範本',
SubTitle: (count: number) => `${count} 個預設角色定義`,
Search: "搜尋角色角色範本",
Create: "新增",
Search: '搜尋角色角色範本',
Create: '新增',
},
Item: {
Info: (count: number) => `包含 ${count} 條預設對話`,
Chat: "對話",
View: "檢視",
Edit: "編輯",
Delete: "刪除",
DeleteConfirm: "確認刪除?",
Chat: '對話',
View: '檢視',
Edit: '編輯',
Delete: '刪除',
DeleteConfirm: '確認刪除?',
},
EditModal: {
Title: (readonly: boolean) =>
`編輯預設角色範本 ${readonly ? "(唯讀)" : ""}`,
Download: "下載預設值",
Clone: "以此預設值建立副本",
`編輯預設角色範本 ${readonly ? '(唯讀)' : ''}`,
Download: '下載預設值',
Clone: '以此預設值建立副本',
},
Config: {
Avatar: "角色頭像",
Name: "角色名稱",
Avatar: '角色頭像',
Name: '角色名稱',
Sync: {
Title: "使用全域設定",
SubTitle: "目前對話是否使用全域模型設定",
Confirm: "目前對話的自訂設定將會被自動覆蓋,確認啟用全域設定?",
Title: '使用全域設定',
SubTitle: '目前對話是否使用全域模型設定',
Confirm: '目前對話的自訂設定將會被自動覆蓋,確認啟用全域設定?',
},
HideContext: {
Title: "隱藏預設對話",
SubTitle: "隱藏後預設對話不會出現在聊天介面",
Title: '隱藏預設對話',
SubTitle: '隱藏後預設對話不會出現在聊天介面',
},
Share: {
Title: "分享此角色範本",
SubTitle: "產生此角色範本的直達連結",
Action: "複製連結",
Title: '分享此角色範本',
SubTitle: '產生此角色範本的直達連結',
Action: '複製連結',
},
},
},
SearchChat: {
Name: "搜尋",
Name: '搜尋',
Page: {
Title: "搜尋聊天記錄",
Search: "輸入搜尋關鍵詞",
NoResult: "沒有找到結果",
NoData: "沒有資料",
Loading: "載入中",
Title: '搜尋聊天記錄',
Search: '輸入搜尋關鍵詞',
NoResult: '沒有找到結果',
NoData: '沒有資料',
Loading: '載入中',
SubTitle: (count: number) => `找到 ${count} 條結果`,
},
Item: {
View: "檢視",
View: '檢視',
},
},
NewChat: {
Return: "返回",
Skip: "跳過",
NotShow: "不再顯示",
ConfirmNoShow: "確認停用?停用後可以隨時在設定中重新啟用。",
Title: "挑選一個角色範本",
SubTitle: "現在開始,與角色範本背後的靈魂思維碰撞",
More: "搜尋更多",
Return: '返回',
Skip: '跳過',
NotShow: '不再顯示',
ConfirmNoShow: '確認停用?停用後可以隨時在設定中重新啟用。',
Title: '挑選一個角色範本',
SubTitle: '現在開始,與角色範本背後的靈魂思維碰撞',
More: '搜尋更多',
},
URLCommand: {
Code: "偵測到連結中已經包含存取密碼,是否自動填入?",
Settings: "偵測到連結中包含了預設設定,是否自動填入?",
Code: '偵測到連結中已經包含存取密碼,是否自動填入?',
Settings: '偵測到連結中包含了預設設定,是否自動填入?',
},
UI: {
Confirm: "確認",
Cancel: "取消",
Close: "關閉",
Create: "新增",
Edit: "編輯",
Export: "匯出",
Import: "匯入",
Sync: "同步",
Config: "設定",
Confirm: '確認',
Cancel: '取消',
Close: '關閉',
Create: '新增',
Edit: '編輯',
Export: '匯出',
Import: '匯入',
Sync: '同步',
Config: '設定',
},
Exporter: {
Description: {
Title: "只有清除上下文之後的訊息會被顯示",
Title: '只有清除上下文之後的訊息會被顯示',
},
Model: "模型",
Messages: "訊息",
Topic: "主題",
Time: "時間",
Model: '模型',
Messages: '訊息',
Topic: '主題',
Time: '時間',
},
};

View File

@@ -1,11 +1,12 @@
import { SubmitKey } from "../store/config";
import type { PartialLocaleType } from "./index";
import { getClientConfig } from "../config/client";
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
import type { PartialLocaleType } from './index';
import { SAAS_CHAT_UTM_URL } from '@/app/constant';
import { getClientConfig } from '../config/client';
import { SubmitKey } from '../store/config';
const isApp = !!getClientConfig()?.isApp;
const vi: PartialLocaleType = {
WIP: "Sắp ra mắt...",
WIP: 'Sắp ra mắt...',
Error: {
Unauthorized: isApp
? `😆 Cuộc trò chuyện gặp một số vấn đề, đừng lo lắng:
@@ -18,16 +19,16 @@ const vi: PartialLocaleType = {
`,
},
Auth: {
Title: "Cần mật khẩu",
Tips: "Quản trị viên đã bật xác thực mật khẩu, vui lòng nhập mã truy cập ở dưới",
SubTips: "Hoặc nhập khóa API OpenAI hoặc Google của bạn",
Input: "Nhập mã truy cập tại đây",
Confirm: "Xác nhận",
Later: "Để sau",
Return: "Trở lại",
SaasTips: "Cấu hình quá phức tạp, tôi muốn sử dụng ngay lập tức",
Title: 'Cần mật khẩu',
Tips: 'Quản trị viên đã bật xác thực mật khẩu, vui lòng nhập mã truy cập ở dưới',
SubTips: 'Hoặc nhập khóa API OpenAI hoặc Google của bạn',
Input: 'Nhập mã truy cập tại đây',
Confirm: 'Xác nhận',
Later: 'Để sau',
Return: 'Trở lại',
SaasTips: 'Cấu hình quá phức tạp, tôi muốn sử dụng ngay lập tức',
TopTips:
"🥳 Ưu đãi ra mắt NextChat AI, mở khóa OpenAI o1, GPT-4o, Claude-3.5 và các mô hình lớn mới nhất ngay bây giờ",
'🥳 Ưu đãi ra mắt NextChat AI, mở khóa OpenAI o1, GPT-4o, Claude-3.5 và các mô hình lớn mới nhất ngay bây giờ',
},
ChatItem: {
ChatItemCount: (count: number) => `${count} cuộc trò chuyện`,
@@ -35,556 +36,556 @@ const vi: PartialLocaleType = {
Chat: {
SubTitle: (count: number) => `Tổng cộng ${count} cuộc trò chuyện`,
EditMessage: {
Title: "Chỉnh sửa ghi chép tin nhắn",
Title: 'Chỉnh sửa ghi chép tin nhắn',
Topic: {
Title: "Chủ đề trò chuyện",
SubTitle: "Thay đổi chủ đề trò chuyện hiện tại",
Title: 'Chủ đề trò chuyện',
SubTitle: 'Thay đổi chủ đề trò chuyện hiện tại',
},
},
Actions: {
ChatList: "Xem danh sách tin nhắn",
CompressedHistory: "Xem lịch sử Prompt đã nén",
Export: "Xuất khẩu ghi chép trò chuyện",
Copy: "Sao chép",
Stop: "Dừng lại",
Retry: "Thử lại",
Pin: "Ghim",
PinToastContent: "Đã ghim 1 cuộc trò chuyện vào lời nhắc đã đặt sẵn",
PinToastAction: "Xem",
Delete: "Xóa",
Edit: "Chỉnh sửa",
RefreshTitle: "Làm mới tiêu đề",
RefreshToast: "Đã gửi yêu cầu làm mới tiêu đề",
ChatList: 'Xem danh sách tin nhắn',
CompressedHistory: 'Xem lịch sử Prompt đã nén',
Export: 'Xuất khẩu ghi chép trò chuyện',
Copy: 'Sao chép',
Stop: 'Dừng lại',
Retry: 'Thử lại',
Pin: 'Ghim',
PinToastContent: 'Đã ghim 1 cuộc trò chuyện vào lời nhắc đã đặt sẵn',
PinToastAction: 'Xem',
Delete: 'Xóa',
Edit: 'Chỉnh sửa',
RefreshTitle: 'Làm mới tiêu đề',
RefreshToast: 'Đã gửi yêu cầu làm mới tiêu đề',
},
Commands: {
new: "Tạo cuộc trò chuyện mới",
newm: "Tạo cuộc trò chuyện từ mặt nạ",
next: "Cuộc trò chuyện tiếp theo",
prev: "Cuộc trò chuyện trước đó",
clear: "Xóa ngữ cảnh",
del: "Xóa cuộc trò chuyện",
new: 'Tạo cuộc trò chuyện mới',
newm: 'Tạo cuộc trò chuyện từ mặt nạ',
next: 'Cuộc trò chuyện tiếp theo',
prev: 'Cuộc trò chuyện trước đó',
clear: 'Xóa ngữ cảnh',
del: 'Xóa cuộc trò chuyện',
},
InputActions: {
Stop: "Dừng phản hồi",
ToBottom: "Cuộn đến tin nhắn mới nhất",
Stop: 'Dừng phản hồi',
ToBottom: 'Cuộn đến tin nhắn mới nhất',
Theme: {
auto: "Chủ đề tự động",
light: "Chế độ sáng",
dark: "Chế độ tối",
auto: 'Chủ đề tự động',
light: 'Chế độ sáng',
dark: 'Chế độ tối',
},
Prompt: "Lệnh tắt",
Masks: "Tất cả mặt nạ",
Clear: "Xóa cuộc trò chuyện",
Settings: "Cài đặt trò chuyện",
UploadImage: "Tải lên hình ảnh",
Prompt: 'Lệnh tắt',
Masks: 'Tất cả mặt nạ',
Clear: 'Xóa cuộc trò chuyện',
Settings: 'Cài đặt trò chuyện',
UploadImage: 'Tải lên hình ảnh',
},
Rename: "Đổi tên cuộc trò chuyện",
Typing: "Đang nhập…",
Rename: 'Đổi tên cuộc trò chuyện',
Typing: 'Đang nhập…',
Input: (submitKey: string) => {
var inputHints = `${submitKey} gửi`;
let inputHints = `${submitKey} gửi`;
if (submitKey === String(SubmitKey.Enter)) {
inputHints += "Shift + Enter xuống dòng";
inputHints += 'Shift + Enter xuống dòng';
}
return inputHints + "/ kích hoạt hoàn chỉnh, : kích hoạt lệnh";
return `${inputHints}/ kích hoạt hoàn chỉnh, : kích hoạt lệnh`;
},
Send: "Gửi",
Send: 'Gửi',
Config: {
Reset: "Xóa trí nhớ",
SaveAs: "Lưu dưới dạng mặt nạ",
Reset: 'Xóa trí nhớ',
SaveAs: 'Lưu dưới dạng mặt nạ',
},
IsContext: "Lời nhắc đã đặt sẵn",
IsContext: 'Lời nhắc đã đặt sẵn',
},
Export: {
Title: "Chia sẻ ghi chép trò chuyện",
Copy: "Sao chép tất cả",
Download: "Tải xuống tệp",
Share: "Chia sẻ lên ShareGPT",
MessageFromYou: "Người dùng",
MessageFromChatGPT: "ChatGPT",
Title: 'Chia sẻ ghi chép trò chuyện',
Copy: 'Sao chép tất cả',
Download: 'Tải xuống tệp',
Share: 'Chia sẻ lên ShareGPT',
MessageFromYou: 'Người dùng',
MessageFromChatGPT: 'ChatGPT',
Format: {
Title: "Định dạng xuất khẩu",
SubTitle: "Có thể xuất khẩu dưới dạng văn bản Markdown hoặc hình ảnh PNG",
Title: 'Định dạng xuất khẩu',
SubTitle: 'Có thể xuất khẩu dưới dạng văn bản Markdown hoặc hình ảnh PNG',
},
IncludeContext: {
Title: "Bao gồm ngữ cảnh mặt nạ",
SubTitle: "Có hiển thị ngữ cảnh mặt nạ trong tin nhắn không",
Title: 'Bao gồm ngữ cảnh mặt nạ',
SubTitle: 'Có hiển thị ngữ cảnh mặt nạ trong tin nhắn không',
},
Steps: {
Select: "Chọn",
Preview: "Xem trước",
Select: 'Chọn',
Preview: 'Xem trước',
},
Image: {
Toast: "Đang tạo ảnh chụp màn hình",
Modal: "Nhấn giữ hoặc nhấp chuột phải để lưu hình ảnh",
Toast: 'Đang tạo ảnh chụp màn hình',
Modal: 'Nhấn giữ hoặc nhấp chuột phải để lưu hình ảnh',
},
},
Select: {
Search: "Tìm kiếm tin nhắn",
All: "Chọn tất cả",
Latest: "Một vài tin nhắn gần đây",
Clear: "Xóa lựa chọn",
Search: 'Tìm kiếm tin nhắn',
All: 'Chọn tất cả',
Latest: 'Một vài tin nhắn gần đây',
Clear: 'Xóa lựa chọn',
},
Memory: {
Title: "Tóm tắt lịch sử",
EmptyContent: "Nội dung trò chuyện quá ngắn, không cần tóm tắt",
Send: "Tự động nén ghi chép trò chuyện và gửi dưới dạng ngữ cảnh",
Copy: "Sao chép tóm tắt",
Reset: "[unused]",
ResetConfirm: "Xác nhận xóa tóm tắt lịch sử?",
Title: 'Tóm tắt lịch sử',
EmptyContent: 'Nội dung trò chuyện quá ngắn, không cần tóm tắt',
Send: 'Tự động nén ghi chép trò chuyện và gửi dưới dạng ngữ cảnh',
Copy: 'Sao chép tóm tắt',
Reset: '[unused]',
ResetConfirm: 'Xác nhận xóa tóm tắt lịch sử?',
},
Home: {
NewChat: "Cuộc trò chuyện mới",
DeleteChat: "Xác nhận xóa cuộc trò chuyện đã chọn?",
DeleteToast: "Đã xóa cuộc trò chuyện",
Revert: "Hoàn tác",
NewChat: 'Cuộc trò chuyện mới',
DeleteChat: 'Xác nhận xóa cuộc trò chuyện đã chọn?',
DeleteToast: 'Đã xóa cuộc trò chuyện',
Revert: 'Hoàn tác',
},
Settings: {
Title: "Cài đặt",
SubTitle: "Tất cả các tùy chọn cài đặt",
Title: 'Cài đặt',
SubTitle: 'Tất cả các tùy chọn cài đặt',
Danger: {
Reset: {
Title: "Đặt lại tất cả cài đặt",
SubTitle: "Đặt lại tất cả các mục cài đặt về giá trị mặc định",
Action: "Đặt lại ngay",
Confirm: "Xác nhận đặt lại tất cả cài đặt?",
Title: 'Đặt lại tất cả cài đặt',
SubTitle: 'Đặt lại tất cả các mục cài đặt về giá trị mặc định',
Action: 'Đặt lại ngay',
Confirm: 'Xác nhận đặt lại tất cả cài đặt?',
},
Clear: {
Title: "Xóa tất cả dữ liệu",
SubTitle: "Xóa tất cả các cuộc trò chuyện và dữ liệu cài đặt",
Action: "Xóa ngay",
Confirm: "Xác nhận xóa tất cả cuộc trò chuyện và dữ liệu cài đặt?",
Title: 'Xóa tất cả dữ liệu',
SubTitle: 'Xóa tất cả các cuộc trò chuyện và dữ liệu cài đặt',
Action: 'Xóa ngay',
Confirm: 'Xác nhận xóa tất cả cuộc trò chuyện và dữ liệu cài đặt?',
},
},
Lang: {
Name: "Language", // CHÚ Ý: nếu bạn muốn thêm một bản dịch mới, vui lòng không dịch giá trị này, để nó là `Language`
All: "Tất cả ngôn ngữ",
Name: 'Language', // CHÚ Ý: nếu bạn muốn thêm một bản dịch mới, vui lòng không dịch giá trị này, để nó là `Language`
All: 'Tất cả ngôn ngữ',
},
Avatar: "Hình đại diện",
Avatar: 'Hình đại diện',
FontSize: {
Title: "Kích thước chữ",
SubTitle: "Kích thước chữ của nội dung trò chuyện",
Title: 'Kích thước chữ',
SubTitle: 'Kích thước chữ của nội dung trò chuyện',
},
FontFamily: {
Title: "Phông Chữ Trò Chuyện",
Title: 'Phông Chữ Trò Chuyện',
SubTitle:
"Phông chữ của nội dung trò chuyện, để trống để áp dụng phông chữ mặc định toàn cầu",
Placeholder: "Tên Phông Chữ",
'Phông chữ của nội dung trò chuyện, để trống để áp dụng phông chữ mặc định toàn cầu',
Placeholder: 'Tên Phông Chữ',
},
InjectSystemPrompts: {
Title: "Tiêm thông báo hệ thống",
Title: 'Tiêm thông báo hệ thống',
SubTitle:
"Buộc thêm một thông báo hệ thống giả ChatGPT vào đầu danh sách tin nhắn mỗi lần yêu cầu",
'Buộc thêm một thông báo hệ thống giả ChatGPT vào đầu danh sách tin nhắn mỗi lần yêu cầu',
},
InputTemplate: {
Title: "Xử lý đầu vào của người dùng",
SubTitle: "Tin nhắn mới nhất của người dùng sẽ được điền vào mẫu này",
Title: 'Xử lý đầu vào của người dùng',
SubTitle: 'Tin nhắn mới nhất của người dùng sẽ được điền vào mẫu này',
},
Update: {
Version: (x: string) => `Phiên bản hiện tại: ${x}`,
IsLatest: "Đã là phiên bản mới nhất",
CheckUpdate: "Kiểm tra cập nhật",
IsChecking: "Đang kiểm tra cập nhật...",
IsLatest: 'Đã là phiên bản mới nhất',
CheckUpdate: 'Kiểm tra cập nhật',
IsChecking: 'Đang kiểm tra cập nhật...',
FoundUpdate: (x: string) => `Tìm thấy phiên bản mới: ${x}`,
GoToUpdate: "Đi đến cập nhật",
GoToUpdate: 'Đi đến cập nhật',
},
SendKey: "Phím gửi",
Theme: "Giao diện",
TightBorder: "Chế độ không viền",
SendKey: 'Phím gửi',
Theme: 'Giao diện',
TightBorder: 'Chế độ không viền',
SendPreviewBubble: {
Title: "Bong bóng xem trước",
SubTitle: "Xem nội dung Markdown trong bong bóng xem trước",
Title: 'Bong bóng xem trước',
SubTitle: 'Xem nội dung Markdown trong bong bóng xem trước',
},
AutoGenerateTitle: {
Title: "Tự động tạo tiêu đề",
SubTitle: "Tạo tiêu đề phù hợp dựa trên nội dung cuộc trò chuyện",
Title: 'Tự động tạo tiêu đề',
SubTitle: 'Tạo tiêu đề phù hợp dựa trên nội dung cuộc trò chuyện',
},
Sync: {
CloudState: "Dữ liệu đám mây",
NotSyncYet: "Chưa thực hiện đồng bộ",
Success: "Đồng bộ thành công",
Fail: "Đồng bộ thất bại",
CloudState: 'Dữ liệu đám mây',
NotSyncYet: 'Chưa thực hiện đồng bộ',
Success: 'Đồng bộ thành công',
Fail: 'Đồng bộ thất bại',
Config: {
Modal: {
Title: "Cấu hình đồng bộ đám mây",
Check: "Kiểm tra khả dụng",
Title: 'Cấu hình đồng bộ đám mây',
Check: 'Kiểm tra khả dụng',
},
SyncType: {
Title: "Loại đồng bộ",
SubTitle: "Chọn máy chủ đồng bộ ưa thích",
Title: 'Loại đồng bộ',
SubTitle: 'Chọn máy chủ đồng bộ ưa thích',
},
Proxy: {
Title: "Kích hoạt proxy",
Title: 'Kích hoạt proxy',
SubTitle:
"Khi đồng bộ qua trình duyệt, cần kích hoạt proxy để tránh hạn chế ngang miền",
'Khi đồng bộ qua trình duyệt, cần kích hoạt proxy để tránh hạn chế ngang miền',
},
ProxyUrl: {
Title: "Địa chỉ proxy",
SubTitle: "Chỉ áp dụng cho proxy ngang miền của dự án này",
Title: 'Địa chỉ proxy',
SubTitle: 'Chỉ áp dụng cho proxy ngang miền của dự án này',
},
WebDav: {
Endpoint: "Địa chỉ WebDAV",
UserName: "Tên người dùng",
Password: "Mật khẩu",
Endpoint: 'Địa chỉ WebDAV',
UserName: 'Tên người dùng',
Password: 'Mật khẩu',
},
UpStash: {
Endpoint: "URL UpStash Redis REST",
UserName: "Tên sao lưu",
Password: "Token UpStash Redis REST",
Endpoint: 'URL UpStash Redis REST',
UserName: 'Tên sao lưu',
Password: 'Token UpStash Redis REST',
},
},
LocalState: "Dữ liệu cục bộ",
LocalState: 'Dữ liệu cục bộ',
Overview: (overview: any) => {
return `${overview.chat} cuộc trò chuyện, ${overview.message} tin nhắn, ${overview.prompt} lệnh, ${overview.mask} mặt nạ`;
},
ImportFailed: "Nhập không thành công",
ImportFailed: 'Nhập không thành công',
},
Mask: {
Splash: {
Title: "Trang khởi động mặt nạ",
SubTitle: "Hiển thị trang khởi động mặt nạ khi tạo cuộc trò chuyện mới",
Title: 'Trang khởi động mặt nạ',
SubTitle: 'Hiển thị trang khởi động mặt nạ khi tạo cuộc trò chuyện mới',
},
Builtin: {
Title: "Ẩn mặt nạ tích hợp",
SubTitle: "Ẩn mặt nạ tích hợp trong danh sách tất cả mặt nạ",
Title: 'Ẩn mặt nạ tích hợp',
SubTitle: 'Ẩn mặt nạ tích hợp trong danh sách tất cả mặt nạ',
},
},
Prompt: {
Disable: {
Title: "Vô hiệu hóa tự động hoàn thành lệnh",
SubTitle: "Nhập / ở đầu ô nhập để kích hoạt tự động hoàn thành",
Title: 'Vô hiệu hóa tự động hoàn thành lệnh',
SubTitle: 'Nhập / ở đầu ô nhập để kích hoạt tự động hoàn thành',
},
List: "Danh sách lệnh tùy chỉnh",
List: 'Danh sách lệnh tùy chỉnh',
ListCount: (builtin: number, custom: number) =>
`Tích hợp ${builtin} mục, người dùng định nghĩa ${custom} mục`,
Edit: "Chỉnh sửa",
Edit: 'Chỉnh sửa',
Modal: {
Title: "Danh sách lệnh",
Add: "Tạo mới",
Search: "Tìm kiếm lệnh",
Title: 'Danh sách lệnh',
Add: 'Tạo mới',
Search: 'Tìm kiếm lệnh',
},
EditModal: {
Title: "Chỉnh sửa lệnh",
Title: 'Chỉnh sửa lệnh',
},
},
HistoryCount: {
Title: "Số tin nhắn lịch sử kèm theo",
SubTitle: "Số tin nhắn lịch sử kèm theo mỗi yêu cầu",
Title: 'Số tin nhắn lịch sử kèm theo',
SubTitle: 'Số tin nhắn lịch sử kèm theo mỗi yêu cầu',
},
CompressThreshold: {
Title: "Ngưỡng nén tin nhắn lịch sử",
Title: 'Ngưỡng nén tin nhắn lịch sử',
SubTitle:
"Khi tin nhắn lịch sử chưa nén vượt quá giá trị này, sẽ thực hiện nén",
'Khi tin nhắn lịch sử chưa nén vượt quá giá trị này, sẽ thực hiện nén',
},
Usage: {
Title: "Tra cứu số dư",
Title: 'Tra cứu số dư',
SubTitle(used: any, total: any) {
return `Đã sử dụng trong tháng: $${used}, Tổng số đăng ký: $${total}`;
},
IsChecking: "Đang kiểm tra…",
Check: "Kiểm tra lại",
NoAccess: "Nhập khóa API hoặc mật khẩu truy cập để xem số dư",
IsChecking: 'Đang kiểm tra…',
Check: 'Kiểm tra lại',
NoAccess: 'Nhập khóa API hoặc mật khẩu truy cập để xem số dư',
},
Access: {
SaasStart: {
Title: "Sử dụng NextChat AI",
Label: "(Giải pháp tiết kiệm chi phí nhất)",
Title: 'Sử dụng NextChat AI',
Label: '(Giải pháp tiết kiệm chi phí nhất)',
SubTitle:
"Được NextChat chính thức duy trì, sẵn sàng sử dụng mà không cần cấu hình, hỗ trợ các mô hình lớn mới nhất như OpenAI o1, GPT-4o và Claude-3.5",
ChatNow: "Chat ngay",
'Được NextChat chính thức duy trì, sẵn sàng sử dụng mà không cần cấu hình, hỗ trợ các mô hình lớn mới nhất như OpenAI o1, GPT-4o và Claude-3.5',
ChatNow: 'Chat ngay',
},
AccessCode: {
Title: "Mật khẩu truy cập",
SubTitle: "Quản trị viên đã bật truy cập mã hóa",
Placeholder: "Nhập mật khẩu truy cập",
Title: 'Mật khẩu truy cập',
SubTitle: 'Quản trị viên đã bật truy cập mã hóa',
Placeholder: 'Nhập mật khẩu truy cập',
},
CustomEndpoint: {
Title: "Giao diện tùy chỉnh",
SubTitle: "Có sử dụng dịch vụ Azure hoặc OpenAI tùy chỉnh không",
Title: 'Giao diện tùy chỉnh',
SubTitle: 'Có sử dụng dịch vụ Azure hoặc OpenAI tùy chỉnh không',
},
Provider: {
Title: "Nhà cung cấp dịch vụ mô hình",
SubTitle: "Chuyển đổi giữa các nhà cung cấp khác nhau",
Title: 'Nhà cung cấp dịch vụ mô hình',
SubTitle: 'Chuyển đổi giữa các nhà cung cấp khác nhau',
},
OpenAI: {
ApiKey: {
Title: "API Key",
Title: 'API Key',
SubTitle:
"Sử dụng khóa OpenAI tùy chỉnh để vượt qua hạn chế truy cập mật khẩu",
Placeholder: "Khóa API OpenAI",
'Sử dụng khóa OpenAI tùy chỉnh để vượt qua hạn chế truy cập mật khẩu',
Placeholder: 'Khóa API OpenAI',
},
Endpoint: {
Title: "Địa chỉ giao diện",
SubTitle: "Ngoài địa chỉ mặc định, phải bao gồm http(s)://",
Title: 'Địa chỉ giao diện',
SubTitle: 'Ngoài địa chỉ mặc định, phải bao gồm http(s)://',
},
},
Azure: {
ApiKey: {
Title: "Khóa giao diện",
Title: 'Khóa giao diện',
SubTitle:
"Sử dụng khóa Azure tùy chỉnh để vượt qua hạn chế truy cập mật khẩu",
Placeholder: "Khóa API Azure",
'Sử dụng khóa Azure tùy chỉnh để vượt qua hạn chế truy cập mật khẩu',
Placeholder: 'Khóa API Azure',
},
Endpoint: {
Title: "Địa chỉ giao diện",
SubTitle: "Ví dụ:",
Title: 'Địa chỉ giao diện',
SubTitle: 'Ví dụ:',
},
ApiVerion: {
Title: "Phiên bản giao diện (phiên bản API azure)",
SubTitle: "Chọn phiên bản phần cụ thể",
Title: 'Phiên bản giao diện (phiên bản API azure)',
SubTitle: 'Chọn phiên bản phần cụ thể',
},
},
Anthropic: {
ApiKey: {
Title: "Khóa giao diện",
Title: 'Khóa giao diện',
SubTitle:
"Sử dụng khóa Anthropic tùy chỉnh để vượt qua hạn chế truy cập mật khẩu",
Placeholder: "Khóa API Anthropic",
'Sử dụng khóa Anthropic tùy chỉnh để vượt qua hạn chế truy cập mật khẩu',
Placeholder: 'Khóa API Anthropic',
},
Endpoint: {
Title: "Địa chỉ giao diện",
SubTitle: "Ví dụ:",
Title: 'Địa chỉ giao diện',
SubTitle: 'Ví dụ:',
},
ApiVerion: {
Title: "Phiên bản giao diện (phiên bản API claude)",
SubTitle: "Chọn một phiên bản API cụ thể để nhập",
Title: 'Phiên bản giao diện (phiên bản API claude)',
SubTitle: 'Chọn một phiên bản API cụ thể để nhập',
},
},
Google: {
ApiKey: {
Title: "Khóa API",
SubTitle: "Lấy khóa API từ Google AI",
Placeholder: "Nhập khóa API Google AI Studio của bạn",
Title: 'Khóa API',
SubTitle: 'Lấy khóa API từ Google AI',
Placeholder: 'Nhập khóa API Google AI Studio của bạn',
},
Endpoint: {
Title: "Địa chỉ cuối",
SubTitle: "Ví dụ:",
Title: 'Địa chỉ cuối',
SubTitle: 'Ví dụ:',
},
ApiVersion: {
Title: "Phiên bản API (chỉ áp dụng cho gemini-pro)",
SubTitle: "Chọn một phiên bản API cụ thể",
Title: 'Phiên bản API (chỉ áp dụng cho gemini-pro)',
SubTitle: 'Chọn một phiên bản API cụ thể',
},
GoogleSafetySettings: {
Title: "Mức độ lọc an toàn Google",
SubTitle: "Cài đặt mức độ lọc nội dung",
Title: 'Mức độ lọc an toàn Google',
SubTitle: 'Cài đặt mức độ lọc nội dung',
},
},
Baidu: {
ApiKey: {
Title: "API Key",
SubTitle: "Sử dụng khóa Baidu API tùy chỉnh",
Placeholder: "Khóa API Baidu",
Title: 'API Key',
SubTitle: 'Sử dụng khóa Baidu API tùy chỉnh',
Placeholder: 'Khóa API Baidu',
},
SecretKey: {
Title: "Secret Key",
SubTitle: "Sử dụng khóa bí mật Baidu tùy chỉnh",
Placeholder: "Khóa bí mật Baidu",
Title: 'Secret Key',
SubTitle: 'Sử dụng khóa bí mật Baidu tùy chỉnh',
Placeholder: 'Khóa bí mật Baidu',
},
Endpoint: {
Title: "Địa chỉ giao diện",
SubTitle: "Không hỗ trợ tùy chỉnh, hãy cấu hình trong .env",
Title: 'Địa chỉ giao diện',
SubTitle: 'Không hỗ trợ tùy chỉnh, hãy cấu hình trong .env',
},
},
ByteDance: {
ApiKey: {
Title: "Khóa giao diện",
SubTitle: "Sử dụng khóa ByteDance API tùy chỉnh",
Placeholder: "Khóa API ByteDance",
Title: 'Khóa giao diện',
SubTitle: 'Sử dụng khóa ByteDance API tùy chỉnh',
Placeholder: 'Khóa API ByteDance',
},
Endpoint: {
Title: "Địa chỉ giao diện",
SubTitle: "Ví dụ:",
Title: 'Địa chỉ giao diện',
SubTitle: 'Ví dụ:',
},
},
Alibaba: {
ApiKey: {
Title: "Khóa giao diện",
SubTitle: "Sử dụng khóa Alibaba Cloud API tùy chỉnh",
Placeholder: "Khóa API Alibaba Cloud",
Title: 'Khóa giao diện',
SubTitle: 'Sử dụng khóa Alibaba Cloud API tùy chỉnh',
Placeholder: 'Khóa API Alibaba Cloud',
},
Endpoint: {
Title: "Địa chỉ giao diện",
SubTitle: "Ví dụ:",
Title: 'Địa chỉ giao diện',
SubTitle: 'Ví dụ:',
},
},
CustomModel: {
Title: "Tên mô hình tùy chỉnh",
Title: 'Tên mô hình tùy chỉnh',
SubTitle:
"Thêm tùy chọn mô hình tùy chỉnh, sử dụng dấu phẩy để phân cách",
'Thêm tùy chọn mô hình tùy chỉnh, sử dụng dấu phẩy để phân cách',
},
},
Model: "Mô hình (model)",
Model: 'Mô hình (model)',
CompressModel: {
Title: "Mô hình nén",
SubTitle: "Mô hình được sử dụng để nén lịch sử",
Title: 'Mô hình nén',
SubTitle: 'Mô hình được sử dụng để nén lịch sử',
},
Temperature: {
Title: "Độ ngẫu nhiên (temperature)",
SubTitle: "Giá trị càng lớn, câu trả lời càng ngẫu nhiên",
Title: 'Độ ngẫu nhiên (temperature)',
SubTitle: 'Giá trị càng lớn, câu trả lời càng ngẫu nhiên',
},
TopP: {
Title: "Lấy mẫu hạt nhân (top_p)",
SubTitle: "Tương tự như độ ngẫu nhiên, nhưng không thay đổi cùng một lúc",
Title: 'Lấy mẫu hạt nhân (top_p)',
SubTitle: 'Tương tự như độ ngẫu nhiên, nhưng không thay đổi cùng một lúc',
},
MaxTokens: {
Title: "Giới hạn phản hồi (max_tokens)",
SubTitle: "Số Token tối đa cho mỗi tương tác",
Title: 'Giới hạn phản hồi (max_tokens)',
SubTitle: 'Số Token tối đa cho mỗi tương tác',
},
PresencePenalty: {
Title: "Độ mới của chủ đề (presence_penalty)",
Title: 'Độ mới của chủ đề (presence_penalty)',
SubTitle:
"Giá trị càng lớn, khả năng mở rộng đến các chủ đề mới càng cao",
'Giá trị càng lớn, khả năng mở rộng đến các chủ đề mới càng cao',
},
FrequencyPenalty: {
Title: "Hình phạt tần suất (frequency_penalty)",
SubTitle: "Giá trị càng lớn, khả năng giảm từ ngữ lặp lại càng cao",
Title: 'Hình phạt tần suất (frequency_penalty)',
SubTitle: 'Giá trị càng lớn, khả năng giảm từ ngữ lặp lại càng cao',
},
},
Store: {
DefaultTopic: "Trò chuyện mới",
BotHello: "Có thể giúp gì cho bạn?",
Error: "Đã xảy ra lỗi, vui lòng thử lại sau",
DefaultTopic: 'Trò chuyện mới',
BotHello: 'Có thể giúp gì cho bạn?',
Error: 'Đã xảy ra lỗi, vui lòng thử lại sau',
Prompt: {
History: (content: string) =>
"Đây là tóm tắt cuộc trò chuyện lịch sử như tiền đề: " + content,
`Đây là tóm tắt cuộc trò chuyện lịch sử như tiền đề: ${content}`,
Topic:
'Sử dụng bốn đến năm từ để trả lại chủ đề tóm tắt của câu này, không giải thích, không dấu câu, không từ cảm thán, không văn bản thừa, không in đậm, nếu không có chủ đề, hãy trả lại "Tán gẫu"',
Summarize:
"Tóm tắt nội dung cuộc trò chuyện một cách ngắn gọn, dùng làm gợi ý ngữ cảnh cho các lần sau, giữ trong vòng 200 từ",
'Tóm tắt nội dung cuộc trò chuyện một cách ngắn gọn, dùng làm gợi ý ngữ cảnh cho các lần sau, giữ trong vòng 200 từ',
},
},
Copy: {
Success: "Đã sao chép vào clipboard",
Failed: "Sao chép thất bại, vui lòng cấp quyền clipboard",
Success: 'Đã sao chép vào clipboard',
Failed: 'Sao chép thất bại, vui lòng cấp quyền clipboard',
},
Download: {
Success: "Nội dung đã được tải xuống thư mục của bạn.",
Failed: "Tải xuống thất bại.",
Success: 'Nội dung đã được tải xuống thư mục của bạn.',
Failed: 'Tải xuống thất bại.',
},
Context: {
Toast: (x: any) => `Bao gồm ${x} lệnh gợi ý đã định sẵn`,
Edit: "Cài đặt cuộc trò chuyện hiện tại",
Add: "Thêm một cuộc trò chuyện",
Clear: "Ngữ cảnh đã được xóa",
Revert: "Khôi phục ngữ cảnh",
Edit: 'Cài đặt cuộc trò chuyện hiện tại',
Add: 'Thêm một cuộc trò chuyện',
Clear: 'Ngữ cảnh đã được xóa',
Revert: 'Khôi phục ngữ cảnh',
},
Plugin: {
Name: "Plugin",
Name: 'Plugin',
},
FineTuned: {
Sysmessage: "Bạn là một trợ lý",
Sysmessage: 'Bạn là một trợ lý',
},
SearchChat: {
Name: "Tìm kiếm",
Name: 'Tìm kiếm',
Page: {
Title: "Tìm kiếm lịch sử trò chuyện",
Search: "Nhập từ khóa tìm kiếm",
NoResult: "Không tìm thấy kết quả",
NoData: "Không có dữ liệu",
Loading: "Đang tải",
Title: 'Tìm kiếm lịch sử trò chuyện',
Search: 'Nhập từ khóa tìm kiếm',
NoResult: 'Không tìm thấy kết quả',
NoData: 'Không có dữ liệu',
Loading: 'Đang tải',
SubTitle: (count: number) => `Tìm thấy ${count} kết quả`,
},
Item: {
View: "Xem",
View: 'Xem',
},
},
Mask: {
Name: "Mặt nạ",
Name: 'Mặt nạ',
Page: {
Title: "Mặt nạ vai trò đã định sẵn",
Title: 'Mặt nạ vai trò đã định sẵn',
SubTitle: (count: number) => `${count} định nghĩa vai trò đã định sẵn`,
Search: "Tìm kiếm mặt nạ vai trò",
Create: "Tạo mới",
Search: 'Tìm kiếm mặt nạ vai trò',
Create: 'Tạo mới',
},
Item: {
Info: (count: number) => `Bao gồm ${count} cuộc trò chuyện đã định sẵn`,
Chat: "Trò chuyện",
View: "Xem",
Edit: "Chỉnh sửa",
Delete: "Xóa",
DeleteConfirm: "Xác nhận xóa?",
Chat: 'Trò chuyện',
View: 'Xem',
Edit: 'Chỉnh sửa',
Delete: 'Xóa',
DeleteConfirm: 'Xác nhận xóa?',
},
EditModal: {
Title: (readonly: boolean) =>
`Chỉnh sửa mặt nạ định sẵn ${readonly ? "(chỉ đọc)" : ""}`,
Download: "Tải xuống mặt nạ",
Clone: "Nhân bản mặt nạ",
`Chỉnh sửa mặt nạ định sẵn ${readonly ? '(chỉ đọc)' : ''}`,
Download: 'Tải xuống mặt nạ',
Clone: 'Nhân bản mặt nạ',
},
Config: {
Avatar: "Hình đại diện vai trò",
Name: "Tên vai trò",
Avatar: 'Hình đại diện vai trò',
Name: 'Tên vai trò',
Sync: {
Title: "Sử dụng cài đặt toàn cục",
Title: 'Sử dụng cài đặt toàn cục',
SubTitle:
"Cuộc trò chuyện hiện tại có sử dụng cài đặt mô hình toàn cục không",
'Cuộc trò chuyện hiện tại có sử dụng cài đặt mô hình toàn cục không',
Confirm:
"Cài đặt tùy chỉnh của cuộc trò chuyện hiện tại sẽ bị ghi đè tự động, xác nhận bật cài đặt toàn cục?",
'Cài đặt tùy chỉnh của cuộc trò chuyện hiện tại sẽ bị ghi đè tự động, xác nhận bật cài đặt toàn cục?',
},
HideContext: {
Title: "Ẩn cuộc trò chuyện đã định sẵn",
Title: 'Ẩn cuộc trò chuyện đã định sẵn',
SubTitle:
"Sau khi ẩn, cuộc trò chuyện đã định sẵn sẽ không xuất hiện trong giao diện trò chuyện",
'Sau khi ẩn, cuộc trò chuyện đã định sẵn sẽ không xuất hiện trong giao diện trò chuyện',
},
Share: {
Title: "Chia sẻ mặt nạ này",
SubTitle: "Tạo liên kết trực tiếp đến mặt nạ này",
Action: "Sao chép liên kết",
Title: 'Chia sẻ mặt nạ này',
SubTitle: 'Tạo liên kết trực tiếp đến mặt nạ này',
Action: 'Sao chép liên kết',
},
},
},
NewChat: {
Return: "Trở lại",
Skip: "Bắt đầu ngay",
NotShow: "Không hiển thị nữa",
Return: 'Trở lại',
Skip: 'Bắt đầu ngay',
NotShow: 'Không hiển thị nữa',
ConfirmNoShow:
"Xác nhận vô hiệu hóa? Sau khi vô hiệu hóa, bạn có thể bật lại bất cứ lúc nào trong cài đặt.",
Title: "Chọn một mặt nạ",
SubTitle: "Bắt đầu ngay, va chạm với suy nghĩ của linh hồn đứng sau mặt nạ",
More: "Xem tất cả",
'Xác nhận vô hiệu hóa? Sau khi vô hiệu hóa, bạn có thể bật lại bất cứ lúc nào trong cài đặt.',
Title: 'Chọn một mặt nạ',
SubTitle: 'Bắt đầu ngay, va chạm với suy nghĩ của linh hồn đứng sau mặt nạ',
More: 'Xem tất cả',
},
URLCommand: {
Code: "Phát hiện mã truy cập trong liên kết, có tự động điền không?",
Code: 'Phát hiện mã truy cập trong liên kết, có tự động điền không?',
Settings:
"Phát hiện cài đặt định sẵn trong liên kết, có tự động điền không?",
'Phát hiện cài đặt định sẵn trong liên kết, có tự động điền không?',
},
UI: {
Confirm: "Xác nhận",
Cancel: "Hủy",
Close: "Đóng",
Create: "Tạo mới",
Edit: "Chỉnh sửa",
Export: "Xuất",
Import: "Nhập",
Sync: "Đồng bộ",
Config: "Cấu hình",
Confirm: 'Xác nhận',
Cancel: 'Hủy',
Close: 'Đóng',
Create: 'Tạo mới',
Edit: 'Chỉnh sửa',
Export: 'Xuất',
Import: 'Nhập',
Sync: 'Đồng bộ',
Config: 'Cấu hình',
},
Exporter: {
Description: {
Title: "Chỉ tin nhắn sau khi xóa ngữ cảnh mới được hiển thị",
Title: 'Chỉ tin nhắn sau khi xóa ngữ cảnh mới được hiển thị',
},
Model: "Mô hình",
Messages: "Tin nhắn",
Topic: "Chủ đề",
Time: "Thời gian",
Model: 'Mô hình',
Messages: 'Tin nhắn',
Topic: 'Chủ đề',
Time: 'Thời gian',
},
};