diff --git a/locales/ar/common.json b/locales/ar/common.json index 59d4d3c6a7ff..6554525166e5 100644 --- a/locales/ar/common.json +++ b/locales/ar/common.json @@ -58,6 +58,7 @@ }, "title": "استيراد البيانات" }, + "installPWA": "تثبيت تطبيق المتصفح", "lang": { "ar": "العربية", "bg-BG": "البلغارية", diff --git a/locales/ar/metadata.json b/locales/ar/metadata.json new file mode 100644 index 000000000000..6af63d036756 --- /dev/null +++ b/locales/ar/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "تقدم LobeChat أفضل تجربة استخدام لـ ChatGPT و OLLaMA و Gemini و Claude WebUI", + "title": "LobeChat: أداة أداء شخصية LLM، لتمنح نفسك عقلًا أكثر ذكاءً" + }, + "market": { + "description": "إنشاء محتوى، كتابة نصوص، إجابة على الأسئلة، إنشاء صور، إنشاء فيديو، إنشاء صوت، وكيل ذكاء اصطناعي، سير عمل تلقائي، قم بتخصيص مساعد ذكاء اصطناعي / GPTs / OLLaMA الخاص بك", + "title": "سوق المساعدين" + }, + "plugins": { + "description": "البحث، إنشاء رسوم بيانية، أكاديمي، إنشاء صور، إنشاء فيديو، إنشاء صوت، سير عمل تلقائي، قم بتخصيص قدرات الإضافات الخاصة بـ ChatGPT / OLLaMA", + "title": "سوق الإضافات" + }, + "welcome": { + "description": "تقدم LobeChat أفضل تجربة استخدام لـ ChatGPT و OLLaMA و Gemini و Claude WebUI", + "title": "مرحبًا بك في استخدام LobeChat: أداة أداء شخصية LLM، لتمنح نفسك عقلًا أكثر ذكاءً" + } +} diff --git a/locales/ar/plugin.json b/locales/ar/plugin.json index 62b75c38da49..c1aa952dca34 100644 --- a/locales/ar/plugin.json +++ b/locales/ar/plugin.json @@ -4,7 +4,9 @@ "function_call": "استدعاء الدالة", "off": "إيقاف التصحيح", "on": "عرض معلومات استدعاء البرنامج المساعد", - "response": "الرد" + "payload": "حمولة البرنامج المساعد", + "response": "الرد", + "tool_call": "طلب استدعاء الأداة" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "جاري تشغيل الإضافة..." }, "pluginList": "قائمة الإضافات", - "plugins": { - "loading": "جاري فحص الأدوات...", - "unknown": "أداة غير معروفة" - }, "setting": "إعدادات الإضافة", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "مثبتة" }, "title": "متجر الإضافات" - } + }, + "unknownPlugin": "البرنامج المساعد غير معروف" } diff --git a/locales/ar/tool.json b/locales/ar/tool.json index a322c40105f4..6876ab6c640c 100644 --- a/locales/ar/tool.json +++ b/locales/ar/tool.json @@ -4,6 +4,7 @@ "downloading": "صلاحية روابط الصور المُولَّدة بواسطة DallE3 تدوم ساعة واحدة فقط، يتم تحميل الصور إلى الجهاز المحلي...", "generate": "توليد", "generating": "جارٍ التوليد...", - "images": "الصور:" + "images": "الصور:", + "prompt": "كلمة تلميح" } } diff --git a/locales/bg-BG/common.json b/locales/bg-BG/common.json index e3770f7aca66..1152b3346e90 100644 --- a/locales/bg-BG/common.json +++ b/locales/bg-BG/common.json @@ -58,6 +58,7 @@ }, "title": "Импортирай данни" }, + "installPWA": "Инсталиране на PWA", "lang": { "ar": "Арабски", "bg-BG": "български", diff --git a/locales/bg-BG/metadata.json b/locales/bg-BG/metadata.json new file mode 100644 index 000000000000..0e2331d7eb3d --- /dev/null +++ b/locales/bg-BG/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat предлага най-доброто използване на ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "LobeChat: Личен инструмент за ефективност на LLM, даващ по-умен мозък" + }, + "market": { + "description": "Създаване на съдържание, копирайтинг, въпроси и отговори, генериране на изображения, генериране на видео, генериране на глас, интелигентен агент, автоматизирани работни процеси, персонализирайте си собствения AI / GPTs / OLLaMA интелигентен асистент", + "title": "Пазар на асистенти" + }, + "plugins": { + "description": "Търсене, генериране на диаграми, академични изследвания, генериране на изображения, генериране на видео, генериране на глас, автоматизирани работни процеси, персонализирайте си собствените способности на ChatGPT / OLLaMA с инструментите на ToolCall", + "title": "Пазар на добавки" + }, + "welcome": { + "description": "LobeChat предлага най-доброто използване на ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "Добре дошли в LobeChat: Личен инструмент за ефективност на LLM, даващ по-умен мозък" + } +} diff --git a/locales/bg-BG/plugin.json b/locales/bg-BG/plugin.json index 42caeb66cb09..24d6b5cc7225 100644 --- a/locales/bg-BG/plugin.json +++ b/locales/bg-BG/plugin.json @@ -4,7 +4,9 @@ "function_call": "Извикване на функция", "off": "Изключи отстраняване на грешки", "on": "Преглед на информацията за извикване на плъгина", - "response": "Отговор" + "payload": "полезна натоварване", + "response": "Отговор", + "tool_call": "заявка за инструмент" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "Плъгинът работи..." }, "pluginList": "Списък с плъгини", - "plugins": { - "loading": "Откриване на плъгини...", - "unknown": "Неизвестен плъгин" - }, "setting": "Настройки на плъгина", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "Инсталирани" }, "title": "Магазин за плъгини" - } + }, + "unknownPlugin": "Неизвестен плъгин" } diff --git a/locales/bg-BG/tool.json b/locales/bg-BG/tool.json index c08feea03dd4..0f7f661a780b 100644 --- a/locales/bg-BG/tool.json +++ b/locales/bg-BG/tool.json @@ -4,6 +4,7 @@ "downloading": "Връзките към изображенията, генерирани от DALL·E3, са валидни само за 1 час, кеширане на изображенията локално...", "generate": "Генерирай", "generating": "Генериране...", - "images": "Изображения:" + "images": "Изображения:", + "prompt": "подсказка" } } diff --git a/locales/de-DE/common.json b/locales/de-DE/common.json index c63b203ec65a..55b041f61472 100644 --- a/locales/de-DE/common.json +++ b/locales/de-DE/common.json @@ -58,6 +58,7 @@ }, "title": "Daten importieren" }, + "installPWA": "Installiere die Browser-App", "lang": { "ar": "Arabisch", "bg-BG": "Bulgarisch", diff --git a/locales/de-DE/metadata.json b/locales/de-DE/metadata.json new file mode 100644 index 000000000000..94cec38e833c --- /dev/null +++ b/locales/de-DE/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat bietet Ihnen das beste ChatGPT-, OLLaMA-, Gemini- und Claude-WebUI-Nutzererlebnis.", + "title": "LobeChat: Persönliches LLM-Produktivitätstool, um deinem Gehirn mehr Intelligenz zu verleihen" + }, + "market": { + "description": "Inhalts-Erstellung, Copywriting, Fragen & Antworten, Bildgenerierung, Videogenerierung, Sprachgenerierung, intelligente Agenten, Automatisierungs-Workflows - gestalten Sie Ihren eigenen AI / GPTs / OLLaMA intelligenten Assistenten", + "title": "Assistentenmarkt" + }, + "plugins": { + "description": "Suche, Diagrammerstellung, Akademisch, Bildgenerierung, Videogenerierung, Sprachgenerierung, Automatisierungs-Workflows - passen Sie die exklusiven ToolCall-Plugin-Fähigkeiten für ChatGPT / OLLaMA an", + "title": "Plugin-Markt" + }, + "welcome": { + "description": "LobeChat bietet Ihnen das beste ChatGPT-, OLLaMA-, Gemini- und Claude-WebUI-Nutzererlebnis.", + "title": "Willkommen bei LobeChat: Persönliches LLM-Produktivitätstool, um deinem Gehirn mehr Intelligenz zu verleihen" + } +} diff --git a/locales/de-DE/plugin.json b/locales/de-DE/plugin.json index 5ae97802181f..647789272aa8 100644 --- a/locales/de-DE/plugin.json +++ b/locales/de-DE/plugin.json @@ -4,7 +4,9 @@ "function_call": "Funktionsaufruf", "off": "Debugging deaktivieren", "on": "Plugin-Aufrufinformationen anzeigen", - "response": "Antwort" + "payload": "Plugin-Payload", + "response": "Antwort", + "tool_call": "Tool Call Request" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "Plugin wird ausgeführt..." }, "pluginList": "Plugin-Liste", - "plugins": { - "loading": "Plugins werden überprüft...", - "unknown": "Unbekanntes Plugin" - }, "setting": "Plugin-Einstellung", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "Installiert" }, "title": "Plugin-Shop" - } + }, + "unknownPlugin": "Unbekanntes Plugin" } diff --git a/locales/de-DE/tool.json b/locales/de-DE/tool.json index eaadb6d25850..02a9c5e5518b 100644 --- a/locales/de-DE/tool.json +++ b/locales/de-DE/tool.json @@ -4,6 +4,7 @@ "downloading": "Die von DallE3 generierten Bildlinks sind nur 1 Stunde lang gültig. Das Bild wird lokal zwischengespeichert...", "generate": "Generieren", "generating": "Generiert", - "images": "Bilder:" + "images": "Bilder:", + "prompt": "Hinweiswort" } } diff --git a/locales/en-US/common.json b/locales/en-US/common.json index adb77af60c34..0292a1e7bbf8 100644 --- a/locales/en-US/common.json +++ b/locales/en-US/common.json @@ -14,7 +14,7 @@ "copySuccess": "Copied successfully", "dataStatistics": { "messages": "Messages", - "sessions": "Assistants", + "sessions": "Agents", "today": "Today's New", "topics": "Topics" }, @@ -58,6 +58,7 @@ }, "title": "Import Data" }, + "installPWA": "Install browser app", "lang": { "ar": "Arabic", "bg-BG": "Bulgarian", diff --git a/locales/en-US/metadata.json b/locales/en-US/metadata.json new file mode 100644 index 000000000000..ce0211f85062 --- /dev/null +++ b/locales/en-US/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat offers you the best ChatGPT, OLLaMA, Gemini, Claude WebUI user experience", + "title": "LobeChat: Personal LLM Productivity Tool, Give Yourself a Smarter Brain" + }, + "market": { + "description": "Content creation, copywriting, Q&A, image generation, video generation, voice generation, smart agents, automation workflows, customize your own AI / GPTs / OLLaMA intelligent agent", + "title": "Agent Market" + }, + "plugins": { + "description": "Search, chart generation, academic, image generation, video generation, voice generation, automation workflows, customize ChatGPT / OLLaMA exclusive ToolCall plugin capabilities", + "title": "Plugin Market" + }, + "welcome": { + "description": "LobeChat offers you the best ChatGPT, OLLaMA, Gemini, Claude WebUI user experience", + "title": "Welcome to LobeChat: Personal LLM Productivity Tool, Give Yourself a Smarter Brain" + } +} diff --git a/locales/en-US/plugin.json b/locales/en-US/plugin.json index 35afb6d5c49e..9ada632581ef 100644 --- a/locales/en-US/plugin.json +++ b/locales/en-US/plugin.json @@ -4,7 +4,9 @@ "function_call": "Function Call", "off": "Turn off debug", "on": "View plugin invocation information", - "response": "Response" + "payload": "plugin payload", + "response": "Response", + "tool_call": "tool call request" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "Plugin is running..." }, "pluginList": "Plugin List", - "plugins": { - "loading": "Detecting plugins...", - "unknown": "Unknown Plugin" - }, "setting": "Plugin Settings", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "Installed" }, "title": "Plugin Store" - } + }, + "unknownPlugin": "Unknown plugin" } diff --git a/locales/en-US/tool.json b/locales/en-US/tool.json index 50d725ca0eb4..cb6c2f2d2e67 100644 --- a/locales/en-US/tool.json +++ b/locales/en-US/tool.json @@ -4,6 +4,7 @@ "downloading": "The image links generated by DALL·E3 are only valid for 1 hour, caching the images locally...", "generate": "Generate", "generating": "Generating...", - "images": "Images:" + "images": "Images:", + "prompt": "提示词" } } diff --git a/locales/es-ES/common.json b/locales/es-ES/common.json index ec7570dcfe11..3d8d5ab9451a 100644 --- a/locales/es-ES/common.json +++ b/locales/es-ES/common.json @@ -58,6 +58,7 @@ }, "title": "Importar datos" }, + "installPWA": "Instalar la aplicación del navegador", "lang": { "ar": "árabe", "bg-BG": "búlgaro", diff --git a/locales/es-ES/metadata.json b/locales/es-ES/metadata.json new file mode 100644 index 000000000000..ed672f377ecd --- /dev/null +++ b/locales/es-ES/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat ofrece la mejor experiencia de uso de ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "LobeChat: Herramienta personal de productividad LLM para tener un cerebro más inteligente" + }, + "market": { + "description": "Creación de contenido, redacción, preguntas y respuestas, generación de imágenes, generación de videos, generación de voz, agente inteligente, flujo de trabajo automatizado, personaliza tu asistente inteligente AI / GPTs / OLLaMA exclusivo", + "title": "Mercado de asistentes" + }, + "plugins": { + "description": "Búsqueda, generación de gráficos, académico, generación de imágenes, generación de videos, generación de voz, flujo de trabajo automatizado, personaliza las capacidades de los complementos ToolCall exclusivos de ChatGPT / OLLaMA", + "title": "Mercado de complementos" + }, + "welcome": { + "description": "LobeChat ofrece la mejor experiencia de uso de ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "¡Bienvenido a LobeChat: Herramienta personal de productividad LLM para tener un cerebro más inteligente!" + } +} diff --git a/locales/es-ES/plugin.json b/locales/es-ES/plugin.json index 1fb1ce83d57a..7e98a982de76 100644 --- a/locales/es-ES/plugin.json +++ b/locales/es-ES/plugin.json @@ -4,7 +4,9 @@ "function_call": "Llamada a función", "off": "Desactivado", "on": "Ver información de llamada de complemento", - "response": "Respuesta" + "payload": "carga del complemento", + "response": "Respuesta", + "tool_call": "solicitud de llamada de herramienta" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "Ejecutando complemento..." }, "pluginList": "Lista de complementos", - "plugins": { - "loading": "Comprobando complementos...", - "unknown": "Complemento desconocido" - }, "setting": "Configuración de complementos", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "Instalados" }, "title": "Tienda de complementos" - } + }, + "unknownPlugin": "Plugin desconocido" } diff --git a/locales/es-ES/tool.json b/locales/es-ES/tool.json index 911f5fb59ae2..2677a4d6085b 100644 --- a/locales/es-ES/tool.json +++ b/locales/es-ES/tool.json @@ -4,6 +4,7 @@ "downloading": "El enlace de la imagen generada por DALL·E 3 solo es válido durante 1 hora, descargando la imagen al dispositivo local...", "generate": "Generar", "generating": "Generando...", - "images": "Imágenes:" + "images": "Imágenes:", + "prompt": "Palabra de aviso" } } diff --git a/locales/fr-FR/common.json b/locales/fr-FR/common.json index 38a66b984066..43fbd354cb96 100644 --- a/locales/fr-FR/common.json +++ b/locales/fr-FR/common.json @@ -58,6 +58,7 @@ }, "title": "Importer des données" }, + "installPWA": "Installer l'application du navigateur", "lang": { "ar": "arabe", "bg-BG": "Bulgare", diff --git a/locales/fr-FR/metadata.json b/locales/fr-FR/metadata.json new file mode 100644 index 000000000000..afbe6b9c890a --- /dev/null +++ b/locales/fr-FR/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat offre la meilleure expérience d'utilisation de ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "LobeChat: Outil de productivité personnel LLM, pour un cerveau plus intelligent" + }, + "market": { + "description": "Création de contenu, rédaction, questions-réponses, génération d'images, génération de vidéos, génération vocale, agent intelligent, flux de travail automatisé, personnalisez votre agent intelligent AI / GPTs / OLLaMA", + "title": "Marché des agents" + }, + "plugins": { + "description": "Recherche, génération de graphiques, académique, génération d'images, génération de vidéos, génération vocale, flux de travail automatisé, personnalisez les capacités des plugins ToolCall exclusifs de ChatGPT / OLLaMA", + "title": "Marché des plugins" + }, + "welcome": { + "description": "LobeChat offre la meilleure expérience d'utilisation de ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "Bienvenue sur LobeChat: Outil de productivité personnel LLM, pour un cerveau plus intelligent" + } +} diff --git a/locales/fr-FR/plugin.json b/locales/fr-FR/plugin.json index bec0bce1d322..23951b67b0a2 100644 --- a/locales/fr-FR/plugin.json +++ b/locales/fr-FR/plugin.json @@ -4,7 +4,9 @@ "function_call": "Appel de fonction", "off": "Désactivé", "on": "Activer le débogage", - "response": "Réponse" + "payload": "charge du plugin", + "response": "Réponse", + "tool_call": "demande d'appel d'outil" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "Exécution du plugin en cours..." }, "pluginList": "Liste des plugins", - "plugins": { - "loading": "Vérification des plugins en cours...", - "unknown": "Plugin inconnu" - }, "setting": "Paramètres des plugins", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "Installés" }, "title": "Boutique de plugins" - } + }, + "unknownPlugin": "Plugin inconnu" } diff --git a/locales/fr-FR/tool.json b/locales/fr-FR/tool.json index 42aa797eabf8..ed373d0a72ab 100644 --- a/locales/fr-FR/tool.json +++ b/locales/fr-FR/tool.json @@ -4,6 +4,7 @@ "downloading": "Les liens d'image générés par DallE3 ne sont valides que pendant 1 heure. Le téléchargement de l'image est en cours...", "generate": "Générer", "generating": "En cours de génération...", - "images": "Images :" + "images": "Images :", + "prompt": "Mot de rappel" } } diff --git a/locales/it-IT/common.json b/locales/it-IT/common.json index 187594db5b2b..d980d2b829cf 100644 --- a/locales/it-IT/common.json +++ b/locales/it-IT/common.json @@ -58,6 +58,7 @@ }, "title": "Importa dati" }, + "installPWA": "Installa l'applicazione del browser", "lang": { "ar": "Arabo", "bg-BG": "bulgaro", diff --git a/locales/it-IT/metadata.json b/locales/it-IT/metadata.json new file mode 100644 index 000000000000..d2022380324f --- /dev/null +++ b/locales/it-IT/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat offre la migliore esperienza di utilizzo di ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "LobeChat: strumento personale per la produttività LLM, per un cervello più intelligente" + }, + "market": { + "description": "Creazione di contenuti, copywriting, domande e risposte, generazione di immagini, generazione di video, generazione vocale, agente intelligente, flusso di lavoro automatizzato, personalizza il tuo assistente intelligente AI / GPTs / OLLaMA", + "title": "Mercato degli assistenti" + }, + "plugins": { + "description": "Ricerca, generazione di grafici, accademico, generazione di immagini, generazione di video, generazione vocale, flusso di lavoro automatizzato, personalizza le capacità di plugin di ToolCall esclusive di ChatGPT / OLLaMA", + "title": "Mercato dei plugin" + }, + "welcome": { + "description": "LobeChat offre la migliore esperienza di utilizzo di ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "Benvenuto su LobeChat: strumento personale per la produttività LLM, per un cervello più intelligente" + } +} diff --git a/locales/it-IT/plugin.json b/locales/it-IT/plugin.json index 566a45de6b54..82ea14ab5732 100644 --- a/locales/it-IT/plugin.json +++ b/locales/it-IT/plugin.json @@ -4,7 +4,9 @@ "function_call": "Chiamata di funzione", "off": "Disattivato", "on": "Visualizza informazioni sulla chiamata del plugin", - "response": "Risposta" + "payload": "carico del plugin", + "response": "Risposta", + "tool_call": "richiesta di chiamata dello strumento" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "Esecuzione del plugin in corso..." }, "pluginList": "Elenco dei plugin", - "plugins": { - "loading": "Rilevamento dei plugin in corso...", - "unknown": "Plugin sconosciuto" - }, "setting": "Impostazioni del plugin", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "Installati" }, "title": "Negozio dei plugin" - } + }, + "unknownPlugin": "Plugin sconosciuto" } diff --git a/locales/it-IT/tool.json b/locales/it-IT/tool.json index cddcbe53af28..3ec2f38de749 100644 --- a/locales/it-IT/tool.json +++ b/locales/it-IT/tool.json @@ -4,6 +4,7 @@ "downloading": "Il link dell'immagine generata da DALL·E3 è valido solo per 1 ora, sta scaricando l'immagine in locale...", "generate": "Genera", "generating": "Generazione in corso...", - "images": "Immagini:" + "images": "Immagini:", + "prompt": "parola chiave" } } diff --git a/locales/ja-JP/common.json b/locales/ja-JP/common.json index c7f3e4f2a0a3..d3af605e013c 100644 --- a/locales/ja-JP/common.json +++ b/locales/ja-JP/common.json @@ -58,6 +58,7 @@ }, "title": "データのインポート" }, + "installPWA": "PWAをインストール", "lang": { "ar": "アラビア語", "bg-BG": "ブルガリア語", diff --git a/locales/ja-JP/metadata.json b/locales/ja-JP/metadata.json new file mode 100644 index 000000000000..2cdf6c13e5d6 --- /dev/null +++ b/locales/ja-JP/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChatは、ChatGPT、OLLaMA、Gemini、Claude WebUIの最高の使用体験を提供します", + "title": "LobeChat: 個人LLM効率ツール、より賢い脳を手に入れよう" + }, + "market": { + "description": "コンテンツ作成、コピーライティング、質問回答、画像生成、動画生成、音声生成、スマートエージェント、ワークフローの自動化、あなただけのAI / GPTs / OLLaMAスマートアシスタントをカスタマイズ", + "title": "アシスタントマーケット" + }, + "plugins": { + "description": "検索、チャート生成、アカデミック、画像生成、動画生成、音声生成、ワークフローの自動化、ChatGPT / OLLaMA専用のToolCallプラグイン機能をカスタマイズ", + "title": "プラグインマーケット" + }, + "welcome": { + "description": "LobeChatは、ChatGPT、OLLaMA、Gemini、Claude WebUIの最高の使用体験を提供します", + "title": "LobeChatをご利用いただきありがとうございます:個人LLM効率ツール、より賢い脳を手に入れよう" + } +} diff --git a/locales/ja-JP/plugin.json b/locales/ja-JP/plugin.json index c79f47e66ff0..73dbc0c6b95c 100644 --- a/locales/ja-JP/plugin.json +++ b/locales/ja-JP/plugin.json @@ -4,7 +4,9 @@ "function_call": "関数呼び出し", "off": "デバッグをオフにする", "on": "プラグイン呼び出し情報を表示する", - "response": "レスポンス" + "payload": "ペイロード", + "response": "レスポンス", + "tool_call": "ツール呼び出し" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "プラグインの実行中..." }, "pluginList": "プラグインリスト", - "plugins": { - "loading": "プラグインを読み込み中...", - "unknown": "不明なプラグイン" - }, "setting": "プラグインの設定", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "インストール済み" }, "title": "プラグインストア" - } + }, + "unknownPlugin": "未知のプラグイン" } diff --git a/locales/ja-JP/tool.json b/locales/ja-JP/tool.json index e75367969d00..15f3716ff522 100644 --- a/locales/ja-JP/tool.json +++ b/locales/ja-JP/tool.json @@ -4,6 +4,7 @@ "downloading": "DallE3 で生成された画像リンクは有効期間が1時間しかありません。画像をローカルにキャッシュしています...", "generate": "生成する", "generating": "生成中...", - "images": "画像:" + "images": "画像:", + "prompt": "プロンプト" } } diff --git a/locales/ko-KR/common.json b/locales/ko-KR/common.json index ad8ba6f6a830..ef2e1c585af4 100644 --- a/locales/ko-KR/common.json +++ b/locales/ko-KR/common.json @@ -58,6 +58,7 @@ }, "title": "데이터 가져오기" }, + "installPWA": "브라우저 앱 설치", "lang": { "ar": "아랍어", "bg-BG": "불가리아어", diff --git a/locales/ko-KR/metadata.json b/locales/ko-KR/metadata.json new file mode 100644 index 000000000000..1403aca6a9fc --- /dev/null +++ b/locales/ko-KR/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat은 최고의 ChatGPT, OLLaMA, Gemini, Claude WebUI 사용 경험을 제공합니다.", + "title": "LobeChat: 개인 LLM 생산성 도구, 더 똑똑한 두뇌를 위해" + }, + "market": { + "description": "콘텐츠 작성, 문구, 질의응답, 이미지 생성, 비디오 생성, 음성 생성, 지능형 에이전트, 자동화된 워크플로우를 통해 AI / GPTs / OLLaMA를 맞춤 설정하세요.", + "title": "어시스턴트 마켓" + }, + "plugins": { + "description": "검색, 차트 생성, 학술, 이미지 생성, 비디오 생성, 음성 생성, 자동화된 워크플로우를 통해 ChatGPT / OLLaMA 전용 ToolCall 플러그인 능력을 맞춤 설정하세요.", + "title": "플러그인 마켓" + }, + "welcome": { + "description": "LobeChat은 최고의 ChatGPT, OLLaMA, Gemini, Claude WebUI 사용 경험을 제공합니다.", + "title": "LobeChat를 사용해 주셔서 감사합니다: 개인 LLM 생산성 도구, 더 똑똑한 두뇌를 위해" + } +} diff --git a/locales/ko-KR/plugin.json b/locales/ko-KR/plugin.json index 1991baf5faf6..07f66ac22ab7 100644 --- a/locales/ko-KR/plugin.json +++ b/locales/ko-KR/plugin.json @@ -4,7 +4,9 @@ "function_call": "함수 호출", "off": "디버그 끄기", "on": "플러그인 호출 정보 보기", - "response": "응답" + "payload": "페이로드", + "response": "응답", + "tool_call": "도구 호출" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "플러그인 실행 중..." }, "pluginList": "플러그인 목록", - "plugins": { - "loading": "플러그인을 확인하는 중...", - "unknown": "알 수 없는 플러그인" - }, "setting": "플러그인 설정", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "설치됨" }, "title": "플러그인 스토어" - } + }, + "unknownPlugin": "알 수 없는 플러그인" } diff --git a/locales/ko-KR/tool.json b/locales/ko-KR/tool.json index 682e88328b82..eebaab6b0f1f 100644 --- a/locales/ko-KR/tool.json +++ b/locales/ko-KR/tool.json @@ -4,6 +4,7 @@ "downloading": "DallE3로 생성된 이미지 링크는 1시간 동안 유효하며, 로컬에 이미지를 캐시하는 중입니다...", "generate": "생성", "generating": "생성 중...", - "images": "이미지:" + "images": "이미지:", + "prompt": "알림 단어" } } diff --git a/locales/nl-NL/common.json b/locales/nl-NL/common.json index 03c816c8f6ab..0d087adcace9 100644 --- a/locales/nl-NL/common.json +++ b/locales/nl-NL/common.json @@ -58,6 +58,7 @@ }, "title": "Gegevens importeren" }, + "installPWA": "Installeer de browser-app", "lang": { "ar": "Arabisch", "bg-BG": "Bulgaars", diff --git a/locales/nl-NL/metadata.json b/locales/nl-NL/metadata.json new file mode 100644 index 000000000000..62f0ff24de91 --- /dev/null +++ b/locales/nl-NL/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat biedt je de beste ChatGPT, OLLaMA, Gemini, Claude WebUI gebruikerservaring", + "title": "LobeChat: Persoonlijke LLM-productiviteitstool, geef jezelf een slimmer brein" + }, + "market": { + "description": "Content creatie, copywriting, Q&A, beeldgeneratie, videogeneratie, spraakgeneratie, intelligente agent, geautomatiseerde workflows, pas je eigen AI / GPTs / OLLaMA slimme assistent aan", + "title": "Assistentenmarkt" + }, + "plugins": { + "description": "Zoeken, grafieken genereren, academisch, beeldgeneratie, videogeneratie, spraakgeneratie, geautomatiseerde workflows, pas ChatGPT / OLLaMA exclusieve ToolCall plug-inmogelijkheden aan", + "title": "Plug-insmarkt" + }, + "welcome": { + "description": "LobeChat biedt je de beste ChatGPT, OLLaMA, Gemini, Claude WebUI gebruikerservaring", + "title": "Welkom bij LobeChat: Persoonlijke LLM-productiviteitstool, geef jezelf een slimmer brein" + } +} diff --git a/locales/nl-NL/plugin.json b/locales/nl-NL/plugin.json index 40952cc4432d..c9b41e1c4786 100644 --- a/locales/nl-NL/plugin.json +++ b/locales/nl-NL/plugin.json @@ -1,111 +1,113 @@ { "debug": { - "arguments": "调用参数", - "function_call": "函数调用", - "off": "关闭调试", - "on": "查看插件调用信息", - "response": "返回结果" + "arguments": "Argumenten", + "function_call": "Functieoproep", + "off": "Zet debug uit", + "on": "Bekijk plug-in oproepinformatie", + "payload": "plug-in payload", + "response": "Reactie", + "tool_call": "Tool-oproepverzoek" }, "detailModal": { "info": { - "description": "API 描述", - "name": "API 名称" + "description": "API-beschrijving", + "name": "API-naam" }, "tabs": { - "info": "插件能力", - "manifest": "安装文件", - "settings": "设置" + "info": "Plug-in mogelijkheden", + "manifest": "Installatiebestand", + "settings": "Instellingen" }, - "title": "插件详情" + "title": "Plug-in Details" }, "dev": { - "confirmDeleteDevPlugin": "即将删除该本地插件,删除后将无法找回,是否删除该插件?", + "confirmDeleteDevPlugin": "Weet u zeker dat u deze lokale plug-in wilt verwijderen? Eenmaal verwijderd, kan het niet worden hersteld.", "customParams": { "useProxy": { - "label": "通过代理安装(如遇到跨域访问错误,可尝试开启该选项后重新安装)" + "label": "Installeren via proxy (als u problemen ondervindt met toegang tot cross-origin, probeer dan deze optie in te schakelen en opnieuw te installeren)" } }, - "deleteSuccess": "插件删除成功", + "deleteSuccess": "Plug-in succesvol verwijderd", "manifest": { "identifier": { - "desc": "插件的唯一标识", - "label": "标识符" + "desc": "De unieke identificatie van de plug-in", + "label": "Identificatie" }, "mode": { - "local": "可视化配置", - "local-tooltip": "暂时不支持可视化配置", - "url": "在线链接" + "local": "Visuele configuratie", + "local-tooltip": "Visuele configuratie wordt op dit moment niet ondersteund", + "url": "Online link" }, "name": { - "desc": "插件标题", - "label": "标题", - "placeholder": "搜索引擎" + "desc": "De titel van de plug-in", + "label": "Titel", + "placeholder": "Zoekmachine" } }, "meta": { "author": { - "desc": "插件的作者", - "label": "作者" + "desc": "De auteur van de plug-in", + "label": "Auteur" }, "avatar": { - "desc": "插件的图标,可以使用 Emoji,也可以使用 URL", - "label": "图标" + "desc": "Het pictogram van de plug-in, kan een Emoji of een URL zijn", + "label": "Pictogram" }, "description": { - "desc": "插件描述", - "label": "描述", - "placeholder": "查询搜索引擎获取信息" + "desc": "De beschrijving van de plug-in", + "label": "Beschrijving", + "placeholder": "Informatie verkrijgen van zoekmachines" }, - "formFieldRequired": "该字段为必填项", + "formFieldRequired": "Dit veld is verplicht", "homepage": { - "desc": "插件的首页", - "label": "首页" + "desc": "De startpagina van de plug-in", + "label": "Startpagina" }, "identifier": { - "desc": "插件的唯一标识,将从 manifest 中自动识别", - "errorDuplicate": "标识符和已有插件重复,请修改标识符", - "label": "标识符", - "pattenErrorMessage": "只能输入英文字符、数字 、- 和_ 这两个符号" + "desc": "De unieke identificatie van de plug-in, ondersteunt alleen alfanumerieke tekens, koppelteken - en underscore _", + "errorDuplicate": "De identificatie wordt al gebruikt door een andere plug-in, wijzig de identificatie", + "label": "Identificatie", + "pattenErrorMessage": "Alleen alfanumerieke tekens, koppelteken - en underscore _ zijn toegestaan" }, "manifest": { - "desc": "LobeChat 将会通过该链接安装插件", - "label": "插件描述文件 (Manifest) URL", - "preview": "预览 Manifest", - "refresh": "刷新" + "desc": "LobeChat zal de plug-in installeren via deze link", + "label": "Plug-in Beschrijving (Manifest) URL", + "preview": "Voorbeeld", + "refresh": "Vernieuwen" }, "title": { - "desc": "插件标题", - "label": "标题", - "placeholder": "搜索引擎" + "desc": "De titel van de plug-in", + "label": "Titel", + "placeholder": "Zoekmachine" } }, - "metaConfig": "插件元信息配置", - "modalDesc": "添加自定义插件后,可用于插件开发验证,也可直接在会话中使用。插件开发请参考<1>开发文档↗", + "metaConfig": "Configuratie van plug-inmetadata", + "modalDesc": "Na het toevoegen van een aangepaste plug-in kan deze worden gebruikt voor verificatie van plug-inontwikkeling of direct in de sessie. Raadpleeg de <1>ontwikkelingsdocumentatie↗ voor plug-inontwikkeling.", "openai": { - "importUrl": "从 URL 链接导入", + "importUrl": "Importeren van URL-link", "schema": "Schema" }, "preview": { - "card": "预览插件展示效果", - "desc": "预览插件描述", - "title": "插件名称预览" + "card": "Voorbeeld van plug-inweergave", + "desc": "Voorbeeld van plug-inbeschrijving", + "title": "Voorbeeld van plug-innaam" }, - "save": "安装插件", - "saveSuccess": "插件设置保存成功", + "save": "Installeer plug-in", + "saveSuccess": "Instellingen van plug-in succesvol opgeslagen", "tabs": { - "manifest": "功能描述清单 (Manifest)", - "meta": "插件元信息" + "manifest": "Functiebeschrijving Manifest (Manifest)", + "meta": "Plug-in Metadata" }, "title": { - "create": "添加自定义插件", - "edit": "编辑自定义插件" + "create": "Aangepaste plug-in toevoegen", + "edit": "Aangepaste plug-in bewerken" }, "type": { - "lobe": "LobeChat 插件", - "openai": "OpenAI 插件" + "lobe": "LobeChat-plug-in", + "openai": "OpenAI-plug-in" }, - "update": "更新", - "updateSuccess": "插件设置更新成功" + "update": "Bijwerken", + "updateSuccess": "Instellingen van plug-in succesvol bijgewerkt" }, "error": { "fetchError": "Het ophalen van de manifest-link is mislukt. Zorg ervoor dat de link geldig is en controleer of de link cross-origin toegang toestaat.", @@ -128,10 +130,6 @@ "plugin": "Plugin wordt uitgevoerd..." }, "pluginList": "Lijst met plugins", - "plugins": { - "loading": "Plugins worden gecontroleerd...", - "unknown": "Onbekende plugin" - }, "setting": "Plugin-instellingen", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "Geïnstalleerd" }, "title": "Pluginwinkel" - } + }, + "unknownPlugin": "onbekende plugin" } diff --git a/locales/nl-NL/tool.json b/locales/nl-NL/tool.json index 8a458aaad29e..52448ec512f9 100644 --- a/locales/nl-NL/tool.json +++ b/locales/nl-NL/tool.json @@ -4,6 +4,7 @@ "downloading": "De link naar de afbeelding gegenereerd door DallE3 is slechts 1 uur geldig. De afbeelding wordt lokaal in de cache opgeslagen...", "generate": "Genereren", "generating": "Bezig met genereren...", - "images": "Afbeeldingen:" + "images": "Afbeeldingen:", + "prompt": "prompt" } } diff --git a/locales/pl-PL/common.json b/locales/pl-PL/common.json index 446813dcdacd..1ee4664e94de 100644 --- a/locales/pl-PL/common.json +++ b/locales/pl-PL/common.json @@ -58,6 +58,7 @@ }, "title": "Import danych" }, + "installPWA": "Zainstaluj aplikację przeglądarki", "lang": { "ar": "arabski", "bg-BG": "bułgarski", diff --git a/locales/pl-PL/metadata.json b/locales/pl-PL/metadata.json new file mode 100644 index 000000000000..4a95e8bb5134 --- /dev/null +++ b/locales/pl-PL/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat zapewnia najlepsze doświadczenie użytkowania ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "LobeChat: narzędzie do poprawy efektywności osobistej LLM, dając sobie bardziej inteligentny umysł" + }, + "market": { + "description": "Tworzenie treści, copywriting, pytania i odpowiedzi, generowanie obrazów, generowanie wideo, generowanie głosu, inteligentny agent, automatyzacja workflowów - dostosuj swojego własnego asystenta AI / GPTs / OLLaMA", + "title": "Rynek asystentów" + }, + "plugins": { + "description": "Wyszukiwanie, generowanie wykresów, akademickie, generowanie obrazów, generowanie wideo, generowanie głosu, automatyzacja workflowów - dostosuj ekskluzywne możliwości narzędzi ToolCall dla ChatGPT / OLLaMA", + "title": "Rynek wtyczek" + }, + "welcome": { + "description": "LobeChat zapewnia najlepsze doświadczenie użytkowania ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "Witaj w LobeChat: narzędziu do poprawy efektywności osobistej LLM, dając sobie bardziej inteligentny umysł" + } +} diff --git a/locales/pl-PL/plugin.json b/locales/pl-PL/plugin.json index 0132b95c3082..78f0f5580e88 100644 --- a/locales/pl-PL/plugin.json +++ b/locales/pl-PL/plugin.json @@ -1,166 +1,165 @@ { "debug": { - "arguments": "参数调试", - "function_call": "函数调用", - "off": "关闭", - "on": "开启调试", - "response": "响应结果" + "arguments": "Argumenty", + "function_call": "Wywołanie funkcji", + "off": "Wyłącz debugowanie", + "on": "Wyświetl informacje o wywołaniach wtyczki", + "payload": "dane wejściowe wtyczki", + "response": "Odpowiedź", + "tool_call": "żądanie wywołania narzędzia" }, "detailModal": { "info": { - "description": "API 描述", - "name": "API 名称" + "description": "Opis interfejsu API", + "name": "Nazwa interfejsu API" }, "tabs": { - "info": "插件信息", - "manifest": "安装清单", - "settings": "设置" + "info": "Zdolności wtyczki", + "manifest": "Plik instalacyjny", + "settings": "Ustawienia" }, - "title": "插件详情" + "title": "Szczegóły wtyczki" }, "dev": { - "confirmDeleteDevPlugin": "确认删除开发插件?删除后将无法恢复。", + "confirmDeleteDevPlugin": "Czy na pewno chcesz usunąć tę lokalną wtyczkę? Po usunięciu nie będzie możliwe jej odzyskanie.", "customParams": { "useProxy": { - "label": "使用代理安装(如遇跨域访问错误,可尝试开启该选项后重新安装)" + "label": "Zainstaluj za pośrednictwem serwera proxy (jeśli występują błędy dostępu z innej domeny, spróbuj włączyć tę opcję i ponownie zainstalować)" } }, - "deleteSuccess": "插件删除成功", + "deleteSuccess": "Wtyczka została pomyślnie usunięta", "manifest": { "identifier": { - "desc": "插件的唯一标识", - "label": "标识符" + "desc": "Unikalny identyfikator wtyczki", + "label": "Identyfikator" }, "mode": { - "local": "本地模式", - "local-tooltip": "暂不支持本地模式", - "url": "在线链接" + "local": "Konfiguracja wizualna", + "local-tooltip": "Konfiguracja wizualna nie jest obecnie obsługiwana", + "url": "Link online" }, "name": { - "desc": "插件标题", - "label": "标题", - "placeholder": "搜索引擎" + "desc": "Tytuł wtyczki", + "label": "Tytuł", + "placeholder": "Wyszukiwarka" } }, "meta": { "author": { - "desc": "插件作者", - "label": "作者" + "desc": "Autor wtyczki", + "label": "Autor" }, "avatar": { - "desc": "插件图标,可使用 Emoji 或 URL", - "label": "图标" + "desc": "Ikona wtyczki, może być emotikonem lub adresem URL", + "label": "Ikona" }, "description": { - "desc": "插件描述", - "label": "描述", - "placeholder": "查询搜索引擎获取信息" + "desc": "Opis wtyczki", + "label": "Opis", + "placeholder": "Pobierz informacje z wyszukiwarek" }, - "formFieldRequired": "此字段为必填项", + "formFieldRequired": "To pole jest wymagane", "homepage": { - "desc": "插件首页", - "label": "首页" + "desc": "Strona główna wtyczki", + "label": "Strona główna" }, "identifier": { - "desc": "插件的唯一标识,将从清单中自动识别", - "errorDuplicate": "标识符与现有插件重复,请修改标识符", - "label": "标识符", - "pattenErrorMessage": "只能输入英文字符、数字、- 和_" + "desc": "Unikalny identyfikator wtyczki, obsługuje tylko znaki alfanumeryczne, myślnik - i podkreślenie _", + "errorDuplicate": "Identyfikator jest już używany przez inną wtyczkę, proszę zmień identyfikator", + "label": "Identyfikator", + "pattenErrorMessage": "Dozwolone są tylko znaki alfanumeryczne, myślnik - i podkreślenie _" }, "manifest": { - "desc": "LobeChat 将通过该链接安装插件", - "label": "插件描述文件 (Manifest) URL", - "preview": "预览清单", - "refresh": "刷新" + "desc": "LobeChat zainstaluje wtyczkę za pomocą tego linku", + "label": "Opis wtyczki (Manifest) URL", + "preview": "Podgląd", + "refresh": "Odśwież" }, "title": { - "desc": "插件标题", - "label": "标题", - "placeholder": "搜索引擎" + "desc": "Tytuł wtyczki", + "label": "Tytuł", + "placeholder": "Wyszukiwarka" } }, - "metaConfig": "插件元信息配置", - "modalDesc": "添加自定义插件后,可用于插件开发验证,也可直接在会话中使用。插件开发请参考<1>开发文档↗", + "metaConfig": "Konfiguracja metadanych wtyczki", + "modalDesc": "Po dodaniu niestandardowej wtyczki można jej używać do weryfikacji rozwoju wtyczki lub bezpośrednio w sesji. Proszę odnieść się do <1>dokumentacji rozwojowej↗ dotyczącej rozwoju wtyczki.", "openai": { - "importUrl": "从 URL 导入", - "schema": "模式" + "importUrl": "Importuj z linku URL", + "schema": "Schemat" }, "preview": { - "card": "预览插件效果", - "desc": "预览插件描述", - "title": "插件名称预览" + "card": "Podgląd wyświetlania wtyczki", + "desc": "Podgląd opisu wtyczki", + "title": "Podgląd nazwy wtyczki" }, - "save": "安装插件", - "saveSuccess": "插件设置保存成功", + "save": "Zainstaluj wtyczkę", + "saveSuccess": "Ustawienia wtyczki zostały pomyślnie zapisane", "tabs": { - "manifest": "功能描述清单 (Manifest)", - "meta": "插件元信息" + "manifest": "Opis funkcji manifestu (Manifest)", + "meta": "Metadane wtyczki" }, "title": { - "create": "添加自定义插件", - "edit": "编辑自定义插件" + "create": "Dodaj niestandardową wtyczkę", + "edit": "Edytuj niestandardową wtyczkę" }, "type": { - "lobe": "LobeChat 插件", - "openai": "OpenAI 插件" + "lobe": "Wtyczka LobeChat", + "openai": "Wtyczka OpenAI" }, - "update": "更新", - "updateSuccess": "插件设置更新成功" + "update": "Aktualizuj", + "updateSuccess": "Ustawienia wtyczki zostały pomyślnie zaktualizowane" }, "error": { - "fetchError": "请求该清单链接失败,请确保链接的有效性,并检查链接是否允许跨域访问", - "installError": "插件 {{name}} 安装失败", - "manifestInvalid": "清单不符合规范,校验结果: \n\n {{error}}", - "noManifest": "描述文件不存在", - "openAPIInvalid": "OpenAPI 解析失败,错误: \n\n {{error}}", - "reinstallError": "插件 {{name}} 刷新失败", - "urlError": "该链接没有返回 JSON 格式的内容,请确保是有效的链接" + "fetchError": "Nie udało się pobrać linku manifestu. Upewnij się, że link jest poprawny i zezwala na dostęp z innej domeny.", + "installError": "Instalacja wtyczki {{name}} nie powiodła się", + "manifestInvalid": "Manifest nie spełnia specyfikacji. Wynik walidacji: \n\n {{error}}", + "noManifest": "Plik manifestu nie istnieje", + "openAPIInvalid": "Analiza OpenAPI nie powiodła się. Błąd: \n\n {{error}}", + "reinstallError": "Nie udało się odświeżyć wtyczki {{name}}", + "urlError": "Link nie zwrócił treści w formacie JSON. Upewnij się, że jest to poprawny link." }, "list": { "item": { - "deprecated.title": "已删除", - "local.config": "配置", - "local.title": "自定义" + "deprecated.title": "Usunięte", + "local.config": "Konfiguracja", + "local.title": "Lokalne" } }, "loading": { - "content": "调用插件中...", - "plugin": "插件运行中..." + "content": "Wywoływanie wtyczki...", + "plugin": "Wtyczka jest uruchomiona..." }, - "pluginList": "插件列表", - "plugins": { - "loading": "插件检测中...", - "unknown": "未知插件" - }, - "setting": "插件设置", + "pluginList": "Lista wtyczek", + "setting": "Ustawienia wtyczki", "settings": { "indexUrl": { - "title": "市场索引", - "tooltip": "暂不支持在线编辑,请通过部署时环境变量进行设置" + "title": "Indeks sklepu", + "tooltip": "Edycja nie jest obecnie obsługiwana" }, - "modalDesc": "配置插件市场的地址后,可以使用自定义的插件市场", - "title": "设置插件市场" + "modalDesc": "Po skonfigurowaniu adresu sklepu wtyczek możesz korzystać z niestandardowego sklepu wtyczek", + "title": "Skonfiguruj sklep wtyczek" }, "store": { "actions": { - "confirmUninstall": "即将卸载该插件,卸载后将清除该插件配置,请确认你的操作", - "detail": "详情", - "install": "安装", - "manifest": "编辑安装文件", - "settings": "设置", - "uninstall": "卸载" + "confirmUninstall": "Wtyczka zostanie odinstalowana. Po odinstalowaniu konfiguracja wtyczki zostanie wyczyszczona. Potwierdź swoje działanie.", + "detail": "Szczegóły", + "install": "Instaluj", + "manifest": "Edytuj plik instalacyjny", + "settings": "Ustawienia", + "uninstall": "Odinstaluj" }, - "communityPlugin": "社区插件", - "customPlugin": "自定义", - "empty": "暂无已安装插件", - "installAllPlugins": "安装全部", - "networkError": "获取插件商店失败,请检测网络连接后重试", - "placeholder": "搜索插件名称、介绍或关键词...", - "releasedAt": "发布于 {{createdAt}}", + "communityPlugin": "Wtyczka społecznościowa", + "customPlugin": "Niestandardowa wtyczka", + "empty": "Brak zainstalowanych wtyczek", + "installAllPlugins": "Zainstaluj wszystkie", + "networkError": "Nie udało się pobrać sklepu wtyczek. Sprawdź swoje połączenie sieciowe i spróbuj ponownie", + "placeholder": "Szukaj nazwy wtyczki, opisu lub słowa kluczowego...", + "releasedAt": "Wydane {{createdAt}}", "tabs": { - "all": "全部", - "installed": "已安装" + "all": "Wszystkie", + "installed": "Zainstalowane" }, - "title": "插件商店" - } + "title": "Sklep wtyczek" + }, + "unknownPlugin": "nieznana wtyczka" } diff --git a/locales/pl-PL/tool.json b/locales/pl-PL/tool.json index ced030efea23..104d25ef5aca 100644 --- a/locales/pl-PL/tool.json +++ b/locales/pl-PL/tool.json @@ -4,6 +4,7 @@ "downloading": "Linki do obrazów wygenerowanych przez DallE3 są ważne tylko przez 1 godzinę. Trwa pobieranie obrazów do lokalnego bufora...", "generate": "Generuj", "generating": "Generowanie...", - "images": "Obrazy:" + "images": "Obrazy:", + "prompt": "słowo kluczowe" } } diff --git a/locales/pt-BR/common.json b/locales/pt-BR/common.json index 634b22d4c88a..ff81352f00b1 100644 --- a/locales/pt-BR/common.json +++ b/locales/pt-BR/common.json @@ -58,6 +58,7 @@ }, "title": "Importar dados" }, + "installPWA": "Instalar aplicativo de navegador", "lang": { "ar": "árabe", "bg-BG": "Búlgaro", diff --git a/locales/pt-BR/metadata.json b/locales/pt-BR/metadata.json new file mode 100644 index 000000000000..97a2a3cb3f11 --- /dev/null +++ b/locales/pt-BR/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat oferece a melhor experiência de uso do ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "LobeChat: Ferramenta de produtividade pessoal LLM para um cérebro mais inteligente" + }, + "market": { + "description": "Criação de conteúdo, redação, perguntas e respostas, geração de imagens, geração de vídeos, geração de voz, agente inteligente, fluxo de trabalho automatizado, personalize seu assistente de IA / GPTs / OLLaMA exclusivo", + "title": "Mercado de assistentes" + }, + "plugins": { + "description": "Pesquisa, geração de gráficos, acadêmico, geração de imagens, geração de vídeos, geração de voz, fluxo de trabalho automatizado, personalize a capacidade de plug-in exclusiva do ChatGPT / OLLaMA com ToolCall", + "title": "Mercado de plug-ins" + }, + "welcome": { + "description": "LobeChat oferece a melhor experiência de uso do ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "Bem-vindo ao LobeChat: Ferramenta de produtividade pessoal LLM para um cérebro mais inteligente" + } +} diff --git a/locales/pt-BR/plugin.json b/locales/pt-BR/plugin.json index 67c96efba8d3..59f08d66421f 100644 --- a/locales/pt-BR/plugin.json +++ b/locales/pt-BR/plugin.json @@ -4,7 +4,9 @@ "function_call": "Chamada de Função", "off": "Desativar Depuração", "on": "Ver Informações de Chamada de Plugin", - "response": "Resposta" + "payload": "carga do plugin", + "response": "Resposta", + "tool_call": "solicitação de chamada de ferramenta" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "Executando o plugin..." }, "pluginList": "Lista de Plugins", - "plugins": { - "loading": "Verificando plugins...", - "unknown": "Plugin desconhecido" - }, "setting": "Configuração do Plugin", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "Instalados" }, "title": "Loja de Plugins" - } + }, + "unknownPlugin": "Plugin desconhecido" } diff --git a/locales/pt-BR/tool.json b/locales/pt-BR/tool.json index ab839f22144e..8c1e193b22bd 100644 --- a/locales/pt-BR/tool.json +++ b/locales/pt-BR/tool.json @@ -4,6 +4,7 @@ "downloading": "O link da imagem gerada pelo DALL·E3 é válido apenas por 1 hora, está baixando a imagem para o armazenamento local...", "generate": "Gerar", "generating": "Gerando...", - "images": "Imagens:" + "images": "Imagens:", + "prompt": "Palavra-chave" } } diff --git a/locales/ru-RU/common.json b/locales/ru-RU/common.json index 7ff343727161..9480d368fa32 100644 --- a/locales/ru-RU/common.json +++ b/locales/ru-RU/common.json @@ -58,6 +58,7 @@ }, "title": "Импорт данных" }, + "installPWA": "Установить веб-приложение", "lang": { "ar": "арабский", "bg-BG": "болгарский", diff --git a/locales/ru-RU/metadata.json b/locales/ru-RU/metadata.json new file mode 100644 index 000000000000..1f8e10debb7a --- /dev/null +++ b/locales/ru-RU/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat предлагает вам лучший опыт использования ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "LobeChat: персональный инструмент для повышения эффективности LLM, чтобы сделать ваш мозг умнее" + }, + "market": { + "description": "Создание контента, копирайтинг, вопросы и ответы, генерация изображений, видео, голоса, интеллектуальный агент, автоматизация рабочих процессов, настройте своего собственного помощника AI / GPTs / OLLaMA", + "title": "Рынок помощников" + }, + "plugins": { + "description": "Поиск, создание диаграмм, академические исследования, генерация изображений, видео, голоса, автоматизация рабочих процессов, настройте специальные возможности плагинов ToolCall для ChatGPT / OLLaMA", + "title": "Рынок плагинов" + }, + "welcome": { + "description": "LobeChat предлагает вам лучший опыт использования ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "Добро пожаловать в LobeChat: персональный инструмент для повышения эффективности LLM, чтобы сделать ваш мозг умнее" + } +} diff --git a/locales/ru-RU/plugin.json b/locales/ru-RU/plugin.json index 88a5a41cd00b..ceb3b7129f3f 100644 --- a/locales/ru-RU/plugin.json +++ b/locales/ru-RU/plugin.json @@ -4,7 +4,9 @@ "function_call": "Вызов функции", "off": "Отключить отладку", "on": "Включить отображение информации о вызовах плагинов", - "response": "Ответ" + "payload": "полезная нагрузка", + "response": "Ответ", + "tool_call": "запрос на вызов инструмента" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "Запуск плагина..." }, "pluginList": "Список плагинов", - "plugins": { - "loading": "Загрузка плагинов...", - "unknown": "Неизвестный плагин" - }, "setting": "Настройка плагина", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "Установленные" }, "title": "Магазин плагинов" - } + }, + "unknownPlugin": "Неизвестный плагин" } diff --git a/locales/ru-RU/tool.json b/locales/ru-RU/tool.json index 171136250c3d..94b30e6ed4c1 100644 --- a/locales/ru-RU/tool.json +++ b/locales/ru-RU/tool.json @@ -4,6 +4,7 @@ "downloading": "Ссылка на изображение, созданное DALL·E3, действительна только в течение 1 часа. Идет кэширование изображения локально...", "generate": "Создать", "generating": "Создание...", - "images": "Изображения:" + "images": "Изображения:", + "prompt": "подсказка" } } diff --git a/locales/tr-TR/common.json b/locales/tr-TR/common.json index 145aaa5ca8d0..93f92824aff3 100644 --- a/locales/tr-TR/common.json +++ b/locales/tr-TR/common.json @@ -58,6 +58,7 @@ }, "title": "Veri İçe Aktar" }, + "installPWA": "Tarayıcı Uygulamasını Yükle", "lang": { "ar": "Arapça", "bg-BG": "Bulgarca", diff --git a/locales/tr-TR/metadata.json b/locales/tr-TR/metadata.json new file mode 100644 index 000000000000..c45b5a078b32 --- /dev/null +++ b/locales/tr-TR/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat size en iyi ChatGPT, OLLaMA, Gemini, Claude WebUI kullanım deneyimini sunar", + "title": "LobeChat: Kişisel LLM Verimlilik Aracı, Daha Akıllı Bir Beyin İçin Kendinize Bir Hediye" + }, + "market": { + "description": "İçerik oluşturma, metin yazma, soru cevap, görüntü oluşturma, video oluşturma, ses oluşturma, akıllı ajan, otomasyon iş akışı, kendi AI / GPTs / OLLaMA akıllı asistanınızı özelleştirin", + "title": "Asistan Pazarı" + }, + "plugins": { + "description": "Arama, grafik oluşturma, akademik, görüntü oluşturma, video oluşturma, ses oluşturma, otomasyon iş akışı, ChatGPT / OLLaMA için özel ToolCall eklenti yeteneklerini özelleştirin", + "title": "Eklenti Pazarı" + }, + "welcome": { + "description": "LobeChat size en iyi ChatGPT, OLLaMA, Gemini, Claude WebUI kullanım deneyimini sunar", + "title": "LobeChat'i Kullanmaya Hoş Geldiniz: Kişisel LLM Verimlilik Aracı, Daha Akıllı Bir Beyin İçin Kendinize Bir Hediye" + } +} diff --git a/locales/tr-TR/plugin.json b/locales/tr-TR/plugin.json index 3cbbbfbdf845..6c50d4cf3d36 100644 --- a/locales/tr-TR/plugin.json +++ b/locales/tr-TR/plugin.json @@ -4,7 +4,9 @@ "function_call": "Fonksiyon Çağrısı", "off": "Hata Ayıklamayı Kapat", "on": "Eklenti Çağrı Bilgilerini Görüntüle", - "response": "Yanıt" + "payload": "eklenti yükü", + "response": "Yanıt", + "tool_call": "aracı çağrı" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "Eklenti çalışıyor..." }, "pluginList": "Eklenti Listesi", - "plugins": { - "loading": "Eklentiler kontrol ediliyor...", - "unknown": "Bilinmeyen eklenti" - }, "setting": "Eklenti Ayarları", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "Yüklü" }, "title": "Eklenti Mağazası" - } + }, + "unknownPlugin": "Bilinmeyen eklenti" } diff --git a/locales/tr-TR/tool.json b/locales/tr-TR/tool.json index a22966f74fd7..4a5b0965510e 100644 --- a/locales/tr-TR/tool.json +++ b/locales/tr-TR/tool.json @@ -4,6 +4,7 @@ "downloading": "DallE3 tarafından oluşturulan resim bağlantıları sadece 1 saat geçerlidir, resim yerel olarak önbelleğe alınıyor...", "generate": "Oluştur", "generating": "Oluşturuluyor...", - "images": "Görseller:" + "images": "Görseller:", + "prompt": "İpucu" } } diff --git a/locales/vi-VN/common.json b/locales/vi-VN/common.json index 54401c78ef09..cc5b736c6488 100644 --- a/locales/vi-VN/common.json +++ b/locales/vi-VN/common.json @@ -58,6 +58,7 @@ }, "title": "Nhập dữ liệu" }, + "installPWA": "Cài đặt ứng dụng trình duyệt", "lang": { "ar": "Tiếng Ả Rập", "bg-BG": "Tiếng Bun-ga-ri", diff --git a/locales/vi-VN/metadata.json b/locales/vi-VN/metadata.json new file mode 100644 index 000000000000..743c34f7533b --- /dev/null +++ b/locales/vi-VN/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat mang đến trải nghiệm sử dụng tốt nhất với ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "LobeChat: Công cụ hiệu suất cá nhân LLM, giúp tăng cường trí não của bạn" + }, + "market": { + "description": "Tạo nội dung, viết copy, trả lời câu hỏi, tạo hình ảnh, tạo video, tạo giọng nói, trợ lý thông minh, quy trình làm việc tự động, tùy chỉnh trợ lý trí tuệ AI / GPTs / OLLaMA riêng của bạn", + "title": "Thị trường trợ lý" + }, + "plugins": { + "description": "Tìm kiếm, tạo biểu đồ, học thuật, tạo hình ảnh, tạo video, tạo giọng nói, quy trình làm việc tự động, tùy chỉnh khả năng plugin ToolCall riêng của ChatGPT / OLLaMA", + "title": "Thị trường plugin" + }, + "welcome": { + "description": "LobeChat mang đến trải nghiệm sử dụng tốt nhất với ChatGPT, OLLaMA, Gemini, Claude WebUI", + "title": "Chào mừng đến với LobeChat: Công cụ hiệu suất cá nhân LLM, giúp tăng cường trí não của bạn" + } +} diff --git a/locales/vi-VN/plugin.json b/locales/vi-VN/plugin.json index 34f09a9d5b8e..dadf166cbe5c 100644 --- a/locales/vi-VN/plugin.json +++ b/locales/vi-VN/plugin.json @@ -4,7 +4,9 @@ "function_call": "Gọi hàm", "off": "Tắt gỡ lỗi", "on": "Xem thông tin gọi plugin", - "response": "Kết quả trả về" + "payload": "Dữ liệu cắm", + "response": "Kết quả trả về", + "tool_call": "Yêu cầu công cụ" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "Plugin đang chạy..." }, "pluginList": "Danh sách plugin", - "plugins": { - "loading": "Đang kiểm tra công cụ...", - "unknown": "Công cụ không xác định" - }, "setting": "Cài đặt plugin", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "Đã cài đặt" }, "title": "Cửa hàng plugin" - } + }, + "unknownPlugin": "Plugin không xác định" } diff --git a/locales/vi-VN/tool.json b/locales/vi-VN/tool.json index d289333ecb56..38e997bf1be1 100644 --- a/locales/vi-VN/tool.json +++ b/locales/vi-VN/tool.json @@ -4,6 +4,7 @@ "downloading": "Liên kết hình ảnh được tạo bởi DallE3 chỉ có hiệu lực trong 1 giờ, đang tải hình ảnh xuống máy...", "generate": "Tạo", "generating": "Đang tạo...", - "images": "Hình ảnh:" + "images": "Hình ảnh:", + "prompt": "Từ khóa" } } diff --git a/locales/zh-CN/common.json b/locales/zh-CN/common.json index 9f58ad9d5df3..b3619043538b 100644 --- a/locales/zh-CN/common.json +++ b/locales/zh-CN/common.json @@ -58,6 +58,7 @@ }, "title": "导入数据" }, + "installPWA": "安装浏览器应用 (PWA)", "lang": { "ar": "阿拉伯语", "bg-BG": "保加利亚语", diff --git a/locales/zh-CN/metadata.json b/locales/zh-CN/metadata.json new file mode 100644 index 000000000000..c0db09e96b7e --- /dev/null +++ b/locales/zh-CN/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat 带给你最好的 ChatGPT, OLLaMA, Gemini, Claude WebUI 使用体验", + "title": "LobeChat:个人 LLM 效能工具,给自己一个更聪明的大脑" + }, + "market": { + "description": "内容创作、文案、问答、图像生成、视频生成、语音生成、智能 Agent、自动化工作流,定制你专属的 AI / GPTs / OLLaMA 智能助手", + "title": "助手市场" + }, + "plugins": { + "description": "搜素、图表生成、学术、图像生成、视频生成、语音生成、自动化工作流,定制 ChatGPT / OLLaMA 专属的 ToolCall 插件能力", + "title": "插件市场" + }, + "welcome": { + "description": "LobeChat 带给你最好的 ChatGPT, OLLaMA, Gemini, Claude WebUI 使用体验", + "title": "欢迎使用 LobeChat:个人 LLM 效能工具,给自己一个更聪明的大脑" + } +} diff --git a/locales/zh-CN/plugin.json b/locales/zh-CN/plugin.json index e6de6a00f34b..de096296754f 100644 --- a/locales/zh-CN/plugin.json +++ b/locales/zh-CN/plugin.json @@ -4,7 +4,9 @@ "function_call": "函数调用", "off": "关闭调试", "on": "查看插件调用信息", - "response": "返回结果" + "payload": "插件载荷", + "response": "返回结果", + "tool_call": "工具调用请求" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "插件运行中..." }, "pluginList": "插件列表", - "plugins": { - "loading": "工具检测中...", - "unknown": "未知工具" - }, "setting": "插件设置", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "已安装" }, "title": "插件商店" - } + }, + "unknownPlugin": "未知插件" } diff --git a/locales/zh-CN/tool.json b/locales/zh-CN/tool.json index a818d01ccf06..3f459aa66931 100644 --- a/locales/zh-CN/tool.json +++ b/locales/zh-CN/tool.json @@ -4,6 +4,7 @@ "downloading": "DallE3 生成的图片链接有效期仅1小时,正在缓存图片到本地...", "generate": "生成", "generating": "生成中...", - "images": "图片:" + "images": "图片:", + "prompt": "提示词" } } diff --git a/locales/zh-TW/common.json b/locales/zh-TW/common.json index d547133c38b9..e3cfcef784c2 100644 --- a/locales/zh-TW/common.json +++ b/locales/zh-TW/common.json @@ -58,6 +58,7 @@ }, "title": "匯入資料" }, + "installPWA": "安裝瀏覽器應用 (PWA)", "lang": { "ar": "阿拉伯語", "bg-BG": "保加利亞語", diff --git a/locales/zh-TW/metadata.json b/locales/zh-TW/metadata.json new file mode 100644 index 000000000000..c206897fddaa --- /dev/null +++ b/locales/zh-TW/metadata.json @@ -0,0 +1,18 @@ +{ + "chat": { + "description": "LobeChat 帶給你最佳的 ChatGPT、OLLaMA、Gemini、Claude WebUI 使用體驗", + "title": "LobeChat:個人 LLM 效能工具,給自己一個更聰明的大腦" + }, + "market": { + "description": "內容創作、文案、問答、圖像生成、視頻生成、語音生成、智能 Agent、自動化工作流,定制你專屬的 AI / GPTs / OLLaMA 智能助手", + "title": "助手市場" + }, + "plugins": { + "description": "搜尋、圖表生成、學術、圖像生成、視頻生成、語音生成、自動化工作流,定制 ChatGPT / OLLaMA 專屬的 ToolCall 插件能力", + "title": "插件市場" + }, + "welcome": { + "description": "LobeChat 帶給你最佳的 ChatGPT、OLLaMA、Gemini、Claude WebUI 使用體驗", + "title": "歡迎使用 LobeChat:個人 LLM 效能工具,給自己一個更聰明的大腦" + } +} diff --git a/locales/zh-TW/plugin.json b/locales/zh-TW/plugin.json index e496bee19c29..dd7042240b85 100644 --- a/locales/zh-TW/plugin.json +++ b/locales/zh-TW/plugin.json @@ -4,7 +4,9 @@ "function_call": "函式呼叫", "off": "關閉偵錯", "on": "查看插件呼叫資訊", - "response": "回應" + "payload": "插件載荷", + "response": "回應", + "tool_call": "工具呼叫" }, "detailModal": { "info": { @@ -128,10 +130,6 @@ "plugin": "外掛執行中..." }, "pluginList": "外掛清單", - "plugins": { - "loading": "插件檢測中...", - "unknown": "未知插件" - }, "setting": "插件設置", "settings": { "indexUrl": { @@ -162,5 +160,6 @@ "installed": "已安裝" }, "title": "插件商店" - } + }, + "unknownPlugin": "未知插件" } diff --git a/locales/zh-TW/tool.json b/locales/zh-TW/tool.json index e9a699f61ceb..b1c3c53689e9 100644 --- a/locales/zh-TW/tool.json +++ b/locales/zh-TW/tool.json @@ -4,6 +4,7 @@ "downloading": "DallE3 生成的圖片連結有效期僅1小時,正在快取圖片到本地...", "generate": "生成", "generating": "生成中...", - "images": "圖片:" + "images": "圖片:", + "prompt": "提示詞" } } diff --git a/package.json b/package.json index 7bb2bc3854ce..b533ff208f2b 100644 --- a/package.json +++ b/package.json @@ -141,6 +141,7 @@ "pino": "^9.0.0", "polished": "^4.3.1", "posthog-js": "^1.131.4", + "pwa-install-handler": "^2.5.0", "query-string": "^9.0.0", "random-words": "^2.0.1", "react": "^18.3.1", diff --git a/public/icons/maskable-icon-192x192.png b/public/icons/icon-192x192.maskable.png similarity index 100% rename from public/icons/maskable-icon-192x192.png rename to public/icons/icon-192x192.maskable.png diff --git a/public/icons/maskable-icon-512x512.png b/public/icons/icon-512x512.maskable.png similarity index 100% rename from public/icons/maskable-icon-512x512.png rename to public/icons/icon-512x512.maskable.png diff --git a/public/manifest.json b/public/manifest.json index 452614090a44..ebb5e301be49 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,7 +1,13 @@ { "background_color": "#000000", - "description": "An open-source, extensible (Function Calling), high-performance chatbot framework. It supports one-click free deployment of your private ChatGPT/LLM web application", + "categories": ["productivity", "design", "development", "education"], + "description": "Personal LLM productivity tool, brings you the best user experience of ChatGPT, OLLaMA, Gemini, Claude WebUI. Customize AI assistant features flexibly according to personalized needs to solve problems, enhance productivity, and explore future workflow in LobeChat.", "display": "standalone", + "display_override": ["tabbed"], + "edge_side_panel": { + "preferred_width": 480 + }, + "handle_links": "auto", "icons": [ { "src": "/icons/icon-192x192.png", @@ -10,7 +16,7 @@ "purpose": "any" }, { - "src": "/icons/maskable-icon-192x192.png", + "src": "/icons/icon-192x192.maskable.png", "sizes": "192x192", "type": "image/png", "purpose": "maskable" @@ -22,40 +28,94 @@ "purpose": "any" }, { - "src": "/icons/maskable-icon-512x512.png", + "src": "/icons/icon-512x512.maskable.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" } ], - "id": "/", + "id": "lobe-chat", + "launch_handler": { + "client_mode": ["navigate-existing", "auto"] + }, "name": "LobeChat", "orientation": "portrait", + "related_applications": [ + { + "platform": "webapp", + "url": "https://chat-preview.lobehub.com/manifest.json" + } + ], "scope": "/", "screenshots": [ { - "src": "/screenshots/screenshot-1.png", - "sizes": "750x1334", - "type": "image/png" + "src": "/screenshots/shot-1.mobile.png", + "sizes": "640x1138", + "type": "image/png", + "form_factor": "narrow" + }, + { + "src": "/screenshots/shot-2.mobile.png", + "sizes": "640x1138", + "type": "image/png", + "form_factor": "narrow" + }, + { + "src": "/screenshots/shot-3.mobile.png", + "sizes": "640x1138", + "type": "image/png", + "form_factor": "narrow" + }, + { + "src": "/screenshots/shot-4.mobile.png", + "sizes": "640x1138", + "type": "image/png", + "form_factor": "narrow" + }, + { + "src": "/screenshots/shot-5.mobile.png", + "sizes": "640x1138", + "type": "image/png", + "form_factor": "narrow" }, { - "src": "/screenshots/screenshot-2.png", - "sizes": "750x1334", - "type": "image/png" + "src": "/screenshots/shot-1.desktop.png", + "sizes": "1280x676", + "type": "image/png", + "form_factor": "wide" }, { - "src": "/screenshots/screenshot-3.png", - "sizes": "750x1334", - "type": "image/png" + "src": "/screenshots/shot-2.desktop.png", + "sizes": "1280x676", + "type": "image/png", + "form_factor": "wide" }, { - "src": "/screenshots/screenshot-4.png", - "sizes": "750x1334", - "type": "image/png" + "src": "/screenshots/shot-3.desktop.png", + "sizes": "1280x676", + "type": "image/png", + "form_factor": "wide" + }, + { + "src": "/screenshots/shot-4.desktop.png", + "sizes": "1280x676", + "type": "image/png", + "form_factor": "wide" + }, + { + "src": "/screenshots/shot-5.desktop.png", + "sizes": "1280x676", + "type": "image/png", + "form_factor": "wide" } ], "short_name": "LobeChat", "splash_pages": null, "start_url": ".", + "tab_strip": { + "new_tab_button": { + "url": "/" + } + }, "theme_color": "#000000" } diff --git a/public/og/cover.png b/public/og/cover.png new file mode 100644 index 000000000000..4c9ed9455155 Binary files /dev/null and b/public/og/cover.png differ diff --git a/public/screenshots/screenshot-1.png b/public/screenshots/screenshot-1.png deleted file mode 100644 index 207e57fb4d72..000000000000 Binary files a/public/screenshots/screenshot-1.png and /dev/null differ diff --git a/public/screenshots/screenshot-2.png b/public/screenshots/screenshot-2.png deleted file mode 100644 index a6f9d3e95ddb..000000000000 Binary files a/public/screenshots/screenshot-2.png and /dev/null differ diff --git a/public/screenshots/screenshot-3.png b/public/screenshots/screenshot-3.png deleted file mode 100644 index 170597363382..000000000000 Binary files a/public/screenshots/screenshot-3.png and /dev/null differ diff --git a/public/screenshots/screenshot-4.png b/public/screenshots/screenshot-4.png deleted file mode 100644 index 4772d31ec990..000000000000 Binary files a/public/screenshots/screenshot-4.png and /dev/null differ diff --git a/public/screenshots/shot-1.desktop.png b/public/screenshots/shot-1.desktop.png new file mode 100644 index 000000000000..9c28b281c179 Binary files /dev/null and b/public/screenshots/shot-1.desktop.png differ diff --git a/public/screenshots/shot-1.mobile.png b/public/screenshots/shot-1.mobile.png new file mode 100644 index 000000000000..a6c437e04c7e Binary files /dev/null and b/public/screenshots/shot-1.mobile.png differ diff --git a/public/screenshots/shot-2.desktop.png b/public/screenshots/shot-2.desktop.png new file mode 100644 index 000000000000..8a61f16c503d Binary files /dev/null and b/public/screenshots/shot-2.desktop.png differ diff --git a/public/screenshots/shot-2.mobile.png b/public/screenshots/shot-2.mobile.png new file mode 100644 index 000000000000..dbaabc4f2146 Binary files /dev/null and b/public/screenshots/shot-2.mobile.png differ diff --git a/public/screenshots/shot-3.desktop.png b/public/screenshots/shot-3.desktop.png new file mode 100644 index 000000000000..c1046fc7e0c1 Binary files /dev/null and b/public/screenshots/shot-3.desktop.png differ diff --git a/public/screenshots/shot-3.mobile.png b/public/screenshots/shot-3.mobile.png new file mode 100644 index 000000000000..e4bf5b225738 Binary files /dev/null and b/public/screenshots/shot-3.mobile.png differ diff --git a/public/screenshots/shot-4.desktop.png b/public/screenshots/shot-4.desktop.png new file mode 100644 index 000000000000..e6f0cc27864d Binary files /dev/null and b/public/screenshots/shot-4.desktop.png differ diff --git a/public/screenshots/shot-4.mobile.png b/public/screenshots/shot-4.mobile.png new file mode 100644 index 000000000000..a6baa107a8e5 Binary files /dev/null and b/public/screenshots/shot-4.mobile.png differ diff --git a/public/screenshots/shot-5.desktop.png b/public/screenshots/shot-5.desktop.png new file mode 100644 index 000000000000..e38a8cdb7020 Binary files /dev/null and b/public/screenshots/shot-5.desktop.png differ diff --git a/public/screenshots/shot-5.mobile.png b/public/screenshots/shot-5.mobile.png new file mode 100644 index 000000000000..5eb8ad43fb9d Binary files /dev/null and b/public/screenshots/shot-5.mobile.png differ diff --git a/src/app/(auth)/login/[[...login]]/PageTitle.tsx b/src/app/(auth)/login/[[...login]]/PageTitle.tsx deleted file mode 100644 index 79cfdf3c830a..000000000000 --- a/src/app/(auth)/login/[[...login]]/PageTitle.tsx +++ /dev/null @@ -1,13 +0,0 @@ -'use client'; - -import { memo } from 'react'; -import { useTranslation } from 'react-i18next'; - -import PageTitle from '@/components/PageTitle'; - -const Title = memo(() => { - const { t } = useTranslation('auth'); - - return ; -}); -export default Title; diff --git a/src/app/(auth)/login/[[...login]]/page.tsx b/src/app/(auth)/login/[[...login]]/page.tsx index 2f819cafa1b3..2598f4250eb7 100644 --- a/src/app/(auth)/login/[[...login]]/page.tsx +++ b/src/app/(auth)/login/[[...login]]/page.tsx @@ -1,14 +1,21 @@ import { SignIn } from '@clerk/nextjs'; -import PageTitle from './PageTitle'; +import { metadataModule } from '@/server/metadata'; +import { translation } from '@/server/translation'; + +export const generateMetadata = async () => { + const { t } = await translation('clerk'); + return metadataModule.generate({ + description: t('signIn.start.subtitle'), + title: t('signIn.start.title', { applicationName: 'LobeChat' }), + url: '/login', + }); +}; const Page = () => { - return ( - <> - - - - ); + return ; }; +Page.displayName = 'Login'; + export default Page; diff --git a/src/app/(auth)/signup/[[...signup]]/PageTitle.tsx b/src/app/(auth)/signup/[[...signup]]/PageTitle.tsx deleted file mode 100644 index a0924ce20997..000000000000 --- a/src/app/(auth)/signup/[[...signup]]/PageTitle.tsx +++ /dev/null @@ -1,13 +0,0 @@ -'use client'; - -import { memo } from 'react'; -import { useTranslation } from 'react-i18next'; - -import PageTitle from '@/components/PageTitle'; - -const Title = memo(() => { - const { t } = useTranslation('auth'); - - return ; -}); -export default Title; diff --git a/src/app/(auth)/signup/[[...signup]]/page.tsx b/src/app/(auth)/signup/[[...signup]]/page.tsx index b1913f71e2a2..eeac0953592a 100644 --- a/src/app/(auth)/signup/[[...signup]]/page.tsx +++ b/src/app/(auth)/signup/[[...signup]]/page.tsx @@ -1,14 +1,21 @@ import { SignUp } from '@clerk/nextjs'; -import PageTitle from './PageTitle'; +import { metadataModule } from '@/server/metadata'; +import { translation } from '@/server/translation'; + +export const generateMetadata = async () => { + const { t } = await translation('clerk'); + return metadataModule.generate({ + description: t('signUp.start.subtitle'), + title: t('signUp.start.title'), + url: '/signup', + }); +}; const Page = () => { - return ( - <> - - - - ); + return ; }; +Page.displayName = 'SignUp'; + export default Page; diff --git a/src/app/(main)/(mobile)/me/(home)/features/useCategory.tsx b/src/app/(main)/(mobile)/me/(home)/features/useCategory.tsx index 3b3456e41928..5f084d3e451b 100644 --- a/src/app/(main)/(mobile)/me/(home)/features/useCategory.tsx +++ b/src/app/(main)/(mobile)/me/(home)/features/useCategory.tsx @@ -1,11 +1,12 @@ import { DiscordIcon } from '@lobehub/ui'; -import { Book, CircleUserRound, Database, Feather, Settings2 } from 'lucide-react'; +import { Book, CircleUserRound, Database, Download, Feather, Settings2 } from 'lucide-react'; import { useRouter } from 'next/navigation'; import { useTranslation } from 'react-i18next'; import { CellProps } from '@/components/Cell'; import { enableAuth } from '@/const/auth'; import { DISCORD, DOCUMENTS, FEEDBACK } from '@/const/url'; +import { usePWAInstall } from '@/hooks/usePWAInstall'; import { useUserStore } from '@/store/user'; import { authSelectors } from '@/store/user/slices/auth/selectors'; @@ -13,6 +14,7 @@ import { useCategory as useSettingsCategory } from '../../settings/features/useC export const useCategory = () => { const router = useRouter(); + const { canInstall, install } = usePWAInstall(); const { t } = useTranslation(['common', 'setting', 'auth']); const [isLogin, isLoginWithAuth, isLoginWithClerk] = useUserStore((s) => [ authSelectors.isLogin(s), @@ -41,6 +43,18 @@ export const useCategory = () => { }, ]; + const pwa: CellProps[] = [ + { + icon: Download, + key: 'pwa', + label: t('installPWA'), + onClick: () => install(), + }, + { + type: 'divider', + }, + ]; + const settingsWithoutAuth = [ ...useSettingsCategory(), { @@ -87,6 +101,7 @@ export const useCategory = () => { }, ...(isLoginWithClerk ? profile : []), ...(enableAuth ? (isLoginWithAuth ? settings : []) : settingsWithoutAuth), + ...(canInstall ? pwa : []), ...(isLogin ? data : []), ...helps, ].filter(Boolean) as CellProps[]; diff --git a/src/app/(main)/(mobile)/me/(home)/page.tsx b/src/app/(main)/(mobile)/me/(home)/page.tsx index a0f96954b28a..5db1e3f08408 100644 --- a/src/app/(main)/(mobile)/me/(home)/page.tsx +++ b/src/app/(main)/(mobile)/me/(home)/page.tsx @@ -2,11 +2,21 @@ import { redirect } from 'next/navigation'; import { Center } from 'react-layout-kit'; import BrandWatermark from '@/components/BrandWatermark'; +import { metadataModule } from '@/server/metadata'; +import { translation } from '@/server/translation'; import { isMobileDevice } from '@/utils/responsive'; import Category from './features/Category'; import UserBanner from './features/UserBanner'; +export const generateMetadata = async () => { + const { t } = await translation('common'); + return metadataModule.generate({ + title: t('tab.me'), + url: '/me', + }); +}; + const Page = () => { const mobile = isMobileDevice(); diff --git a/src/app/(main)/(mobile)/me/data/page.tsx b/src/app/(main)/(mobile)/me/data/page.tsx index cc11c6422a1d..6f278bf94aa9 100644 --- a/src/app/(main)/(mobile)/me/data/page.tsx +++ b/src/app/(main)/(mobile)/me/data/page.tsx @@ -1,9 +1,19 @@ import { redirect } from 'next/navigation'; +import { metadataModule } from '@/server/metadata'; +import { translation } from '@/server/translation'; import { isMobileDevice } from '@/utils/responsive'; import Category from './features/Category'; +export const generateMetadata = async () => { + const { t } = await translation('common'); + return metadataModule.generate({ + title: t('userPanel.data'), + url: '/me/data', + }); +}; + const Page = () => { const mobile = isMobileDevice(); diff --git a/src/app/(main)/(mobile)/me/profile/page.tsx b/src/app/(main)/(mobile)/me/profile/page.tsx index 7bfc2fe371c5..120cadca1e19 100644 --- a/src/app/(main)/(mobile)/me/profile/page.tsx +++ b/src/app/(main)/(mobile)/me/profile/page.tsx @@ -1,9 +1,20 @@ import { redirect } from 'next/navigation'; +import { metadataModule } from '@/server/metadata'; +import { translation } from '@/server/translation'; import { isMobileDevice } from '@/utils/responsive'; import Category from './features/Category'; +export const generateMetadata = async () => { + const { t } = await translation('clerk'); + return metadataModule.generate({ + description: t('userProfile.navbar.title'), + title: t('userProfile.navbar.description'), + url: '/me/profile', + }); +}; + const Page = () => { const mobile = isMobileDevice(); diff --git a/src/app/(main)/(mobile)/me/settings/page.tsx b/src/app/(main)/(mobile)/me/settings/page.tsx index 771b7208db87..4cabe69d8734 100644 --- a/src/app/(main)/(mobile)/me/settings/page.tsx +++ b/src/app/(main)/(mobile)/me/settings/page.tsx @@ -1,9 +1,20 @@ import { redirect } from 'next/navigation'; +import { metadataModule } from '@/server/metadata'; +import { translation } from '@/server/translation'; import { isMobileDevice } from '@/utils/responsive'; import Category from './features/Category'; +export const generateMetadata = async () => { + const { t } = await translation('setting'); + return metadataModule.generate({ + description: t('header.desc'), + title: t('header.title'), + url: '/me/settings', + }); +}; + const Page = () => { const mobile = isMobileDevice(); diff --git a/src/app/(main)/chat/(workspace)/page.tsx b/src/app/(main)/chat/(workspace)/page.tsx index df67a3148d98..cfd081ec3b78 100644 --- a/src/app/(main)/chat/(workspace)/page.tsx +++ b/src/app/(main)/chat/(workspace)/page.tsx @@ -1,13 +1,33 @@ +import StructuredData from '@/components/StructuredData'; +import { ldModule } from '@/server/ld'; +import { metadataModule } from '@/server/metadata'; +import { translation } from '@/server/translation'; import { isMobileDevice } from '@/utils/responsive'; import PageTitle from '../features/PageTitle'; import TelemetryNotification from './features/TelemetryNotification'; -const Page = () => { +export const generateMetadata = async () => { + const { t } = await translation('metadata'); + return metadataModule.generate({ + description: t('chat.description'), + title: t('chat.title'), + url: '/chat', + }); +}; + +const Page = async () => { const mobile = isMobileDevice(); + const { t } = await translation('metadata'); + const ld = ldModule.generate({ + description: t('chat.description'), + title: t('chat.title'), + url: '/chat', + }); return ( <> + diff --git a/src/app/(main)/market/page.tsx b/src/app/(main)/market/page.tsx index fd731f6df0eb..5a1a0ac8aca5 100644 --- a/src/app/(main)/market/page.tsx +++ b/src/app/(main)/market/page.tsx @@ -1,6 +1,8 @@ import { Flexbox } from 'react-layout-kit'; -import { getCanonicalUrl } from '@/const/url'; +import StructuredData from '@/components/StructuredData'; +import { ldModule } from '@/server/ld'; +import { metadataModule } from '@/server/metadata'; import { translation } from '@/server/translation'; import { isMobileDevice } from '@/utils/responsive'; @@ -9,18 +11,25 @@ import AgentSearchBar from './features/AgentSearchBar'; import TagList from './features/TagList'; export const generateMetadata = async () => { - const { t } = await translation('common'); - return { - alternates: { canonical: getCanonicalUrl('/market') }, - title: t('tab.market'), - }; + const { t } = await translation('metadata'); + return metadataModule.generate({ + description: t('market.description'), + title: t('market.title'), + url: '/market', + }); }; -const Page = () => { +const Page = async () => { const mobile = isMobileDevice(); - + const { t } = await translation('metadata'); + const ld = ldModule.generate({ + description: t('market.description'), + title: t('market.title'), + url: '/market', + }); return ( <> + diff --git a/src/app/(main)/profile/[[...slugs]]/page.tsx b/src/app/(main)/profile/[[...slugs]]/page.tsx index 297e6f3b6109..4854d157a91c 100644 --- a/src/app/(main)/profile/[[...slugs]]/page.tsx +++ b/src/app/(main)/profile/[[...slugs]]/page.tsx @@ -1,13 +1,16 @@ +import { metadataModule } from '@/server/metadata'; import { translation } from '@/server/translation'; import { isMobileDevice } from '@/utils/responsive'; import Client from './Client'; export const generateMetadata = async () => { - const { t } = await translation('common'); - return { - title: t('userButton.profile'), - }; + const { t } = await translation('clerk'); + return metadataModule.generate({ + description: t('userProfile.navbar.title'), + title: t('userProfile.navbar.description'), + url: '/profile', + }); }; const Page = () => { diff --git a/src/app/(main)/settings/about/page.tsx b/src/app/(main)/settings/about/page.tsx index 838aa41315b3..0798bfac5480 100644 --- a/src/app/(main)/settings/about/page.tsx +++ b/src/app/(main)/settings/about/page.tsx @@ -1,3 +1,4 @@ +import { metadataModule } from '@/server/metadata'; import { translation } from '@/server/translation'; import { isMobileDevice } from '@/utils/responsive'; @@ -5,9 +6,11 @@ import Page from './index'; export const generateMetadata = async () => { const { t } = await translation('setting'); - return { + return metadataModule.generate({ + description: t('header.desc'), title: t('tab.about'), - }; + url: '/settings/about', + }); }; export default () => { diff --git a/src/app/(main)/settings/agent/page.tsx b/src/app/(main)/settings/agent/page.tsx index c47984c050b0..ed35b90c3779 100644 --- a/src/app/(main)/settings/agent/page.tsx +++ b/src/app/(main)/settings/agent/page.tsx @@ -1,10 +1,12 @@ +import { metadataModule } from '@/server/metadata'; import { translation } from '@/server/translation'; export const generateMetadata = async () => { const { t } = await translation('setting'); - return { + return metadataModule.generate({ + description: t('header.desc'), title: t('tab.agent'), - }; + url: '/settings/agent', + }); }; - export { default } from './index'; diff --git a/src/app/(main)/settings/common/page.tsx b/src/app/(main)/settings/common/page.tsx index aee71a1c4fa4..a5c56c76e8b0 100644 --- a/src/app/(main)/settings/common/page.tsx +++ b/src/app/(main)/settings/common/page.tsx @@ -1,10 +1,12 @@ +import { metadataModule } from '@/server/metadata'; import { translation } from '@/server/translation'; export const generateMetadata = async () => { const { t } = await translation('setting'); - return { + return metadataModule.generate({ + description: t('header.desc'), title: t('tab.common'), - }; + url: '/settings/common', + }); }; - export { default } from './index'; diff --git a/src/app/(main)/settings/llm/page.tsx b/src/app/(main)/settings/llm/page.tsx index a69114b02f9f..ed4e80daa913 100644 --- a/src/app/(main)/settings/llm/page.tsx +++ b/src/app/(main)/settings/llm/page.tsx @@ -1,15 +1,18 @@ import { notFound } from 'next/navigation'; import { serverFeatureFlags } from '@/config/server/featureFlags'; +import { metadataModule } from '@/server/metadata'; import { translation } from '@/server/translation'; import Page from './index'; export const generateMetadata = async () => { const { t } = await translation('setting'); - return { + return metadataModule.generate({ + description: t('header.desc'), title: t('tab.llm'), - }; + url: '/settings/llm', + }); }; export default () => { diff --git a/src/app/(main)/settings/sync/page.tsx b/src/app/(main)/settings/sync/page.tsx index 974384398d7a..88bdceeda760 100644 --- a/src/app/(main)/settings/sync/page.tsx +++ b/src/app/(main)/settings/sync/page.tsx @@ -1,6 +1,7 @@ import { notFound } from 'next/navigation'; import { serverFeatureFlags } from '@/config/server/featureFlags'; +import { metadataModule } from '@/server/metadata'; import { translation } from '@/server/translation'; import { gerServerDeviceInfo, isMobileDevice } from '@/utils/responsive'; @@ -8,11 +9,12 @@ import Page from './index'; export const generateMetadata = async () => { const { t } = await translation('setting'); - return { + return metadataModule.generate({ + description: t('header.desc'), title: t('tab.sync'), - }; + url: '/settings/sync', + }); }; - export default () => { const enableWebrtc = serverFeatureFlags().enableWebrtc; if (!enableWebrtc) return notFound(); diff --git a/src/app/(main)/settings/tts/page.tsx b/src/app/(main)/settings/tts/page.tsx index 2408ef0e0dcd..cde02645c36e 100644 --- a/src/app/(main)/settings/tts/page.tsx +++ b/src/app/(main)/settings/tts/page.tsx @@ -1,10 +1,12 @@ +import { metadataModule } from '@/server/metadata'; import { translation } from '@/server/translation'; export const generateMetadata = async () => { const { t } = await translation('setting'); - return { + return metadataModule.generate({ + description: t('header.desc'), title: t('tab.tts'), - }; + url: '/settings/tts', + }); }; - export { default } from './index'; diff --git a/src/app/(main)/welcome/page.tsx b/src/app/(main)/welcome/page.tsx index 7b6868668b34..ff00751d464e 100644 --- a/src/app/(main)/welcome/page.tsx +++ b/src/app/(main)/welcome/page.tsx @@ -1,21 +1,34 @@ -import { Metadata } from 'next'; - -import { getCanonicalUrl } from '@/const/url'; +import StructuredData from '@/components/StructuredData'; +import { ldModule } from '@/server/ld'; +import { metadataModule } from '@/server/metadata'; +import { translation } from '@/server/translation'; import { isMobileDevice } from '@/utils/responsive'; import Actions from './features/Actions'; import Hero from './features/Hero'; import Logo from './features/Logo'; -export const metadata: Metadata = { - alternates: { canonical: getCanonicalUrl('/welcome') }, +export const generateMetadata = async () => { + const { t } = await translation('metadata'); + return metadataModule.generate({ + description: t('welcome.description'), + title: t('welcome.title'), + url: '/welcome', + }); }; -const Page = () => { +const Page = async () => { const mobile = isMobileDevice(); + const { t } = await translation('metadata'); + const ld = ldModule.generate({ + description: t('welcome.description'), + title: t('welcome.title'), + url: '/welcome', + }); return ( <> + diff --git a/src/app/layout.tsx b/src/app/layout.tsx index cbec8f14f561..35fcea3bf7bb 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -39,7 +39,7 @@ const RootLayout = async ({ children, modal }: RootLayoutProps) => { export default RootLayout; -export { default as metadata } from './metadata'; +export { generateMetadata } from './metadata'; export const generateViewport = async (): ResolvingViewport => { const isMobile = isMobileDevice(); diff --git a/src/app/metadata.ts b/src/app/metadata.ts index 5cd02b87fb75..d0f370cfff7b 100644 --- a/src/app/metadata.ts +++ b/src/app/metadata.ts @@ -3,11 +3,9 @@ import { Metadata } from 'next'; import { getClientConfig } from '@/config/client'; import { getServerConfig } from '@/config/server'; import { OFFICIAL_URL } from '@/const/url'; - -import pkg from '../../package.json'; +import { translation } from '@/server/translation'; const title = 'LobeChat'; -const { description, homepage } = pkg; const { SITE_URL = OFFICIAL_URL } = getServerConfig(); const { BASE_PATH } = getClientConfig(); @@ -15,55 +13,47 @@ const { BASE_PATH } = getClientConfig(); // if there is a base path, then we don't need the manifest const noManifest = !!BASE_PATH; -const metadata: Metadata = { - appleWebApp: { - statusBarStyle: 'black-translucent', - title, - }, - description, - icons: { - apple: '/icons/apple-touch-icon.png', - icon: '/favicon.ico', - shortcut: '/favicon-32x32.ico', - }, - manifest: noManifest ? undefined : '/manifest.json', - metadataBase: new URL(SITE_URL), - openGraph: { - description: description, - images: [ - { - alt: title, - height: 360, - url: 'https://registry.npmmirror.com/@lobehub/assets-favicons/latest/files/assets/og-480x270.png', - width: 480, - }, - { - alt: title, - height: 720, - url: 'https://registry.npmmirror.com/@lobehub/assets-favicons/latest/files/assets/og-960x540.png', - width: 960, - }, - ], - locale: 'en-US', - siteName: title, - title: title, - type: 'website', - url: homepage, - }, - - title: { - default: title, - template: '%s · LobeChat', - }, - twitter: { - card: 'summary_large_image', - description, - images: [ - 'https://registry.npmmirror.com/@lobehub/assets-favicons/latest/files/assets/og-960x540.png', - ], - site: '@lobehub', - title, - }, +export const generateMetadata = async (): Promise => { + const { t } = await translation('metadata'); + return { + appleWebApp: { + statusBarStyle: 'black-translucent', + title, + }, + description: t('chat.description'), + icons: { + apple: '/icons/apple-touch-icon.png', + icon: '/favicon.ico', + shortcut: '/favicon-32x32.ico', + }, + manifest: noManifest ? undefined : '/manifest.json', + metadataBase: new URL(SITE_URL), + openGraph: { + description: t('chat.description'), + images: [ + { + alt: t('chat.title'), + height: 640, + url: '/og/cover.png', + width: 1200, + }, + ], + locale: 'en-US', + siteName: title, + title: title, + type: 'website', + url: OFFICIAL_URL, + }, + title: { + default: t('chat.title'), + template: '%s · LobeChat', + }, + twitter: { + card: 'summary_large_image', + description: t('chat.description'), + images: ['/og/cover.png'], + site: '@lobehub', + title: t('chat.title'), + }, + }; }; - -export default metadata; diff --git a/src/app/page.tsx b/src/app/page.tsx index 0968fc7e8ed9..6f0ec82c6c58 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -5,6 +5,10 @@ import { getCanonicalUrl } from '@/const/url'; import Client from './(loading)/Client'; import Redirect from './(loading)/Redirect'; +export const metadata: Metadata = { + alternates: { canonical: getCanonicalUrl('/') }, +}; + const Page = () => { return ( <> @@ -17,7 +21,3 @@ const Page = () => { Page.displayName = 'Loading'; export default Page; - -export const metadata: Metadata = { - alternates: { canonical: getCanonicalUrl('/') }, -}; diff --git a/src/components/StructuredData/index.tsx b/src/components/StructuredData/index.tsx new file mode 100644 index 000000000000..f8a5dc5545ba --- /dev/null +++ b/src/components/StructuredData/index.tsx @@ -0,0 +1,12 @@ +import { FC } from 'react'; + +const StructuredData: FC<{ ld: any }> = ({ ld }) => { + return ( +