diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 79b2974..e21c7e7 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -112,6 +112,46 @@ "openAIVersionSaved": { "title": "saved", "message": "Your OpenAI Version has been saved." - } + }, + "newChatFromPrompt": "New Chat From Prompt", + "copied": "Copied", + "copy": "Copy", + "words": "words", + "editPrompt": "Edit Prompt", + "promptUpdated": { + "title": "saved", + "message": "Prompt updated" + }, + "editChat": "Edit Chat", + "chatUpdated": { + "title": "saved", + "message": "Chat updated" + }, + "name": "Name", + "deleteAllData": "Delete All Data", + "confirmDeleteAllData": "Are you sure you want to delete your data?", + "messages": "Messages", + "exportingData" : { + "title": "Exporting Data", + "message": "Your data is being exported." + }, + "exportData": "Export Data", + "importingData" : { + "title": "Import Data", + "message": "Your data is being imported." + }, + "importData": "Import Data", + "selectedFileError": { + "title": "Error", + "message": "The file you selected is invalid" + }, + "edit": "Edit", + "promptDeleted": "Prompt deleted.", + "removePromptError": { + "title": "Error", + "message": "Can't remove prompt. Please refresh the page and try again." + }, + "deletePrompt": "Delete Prompt", + "confirmDeletePrompt": "Are you sure you want to delete this prompt?" } } \ No newline at end of file diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index 03cd2e0..f49e475 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -112,6 +112,46 @@ "openAIVersionSaved": { "title": "Sauvegardé", "message": "Votre version OpenAI a été enregistrée." - } + }, + "newChatFromPrompt": "Nouvelle conversattion à partir du prompt", + "copied": "Copié !", + "copy": "Copier", + "words": "mots", + "editPrompt": "Modifier le prompt", + "promptUpdated": { + "title": "Sauvegardé", + "message": "Prompt enregistré" + }, + "editChat": "Modifier la conversation", + "chatUpdated": { + "title": "Sauvegardé", + "message": "Conversation enregistrée" + }, + "name": "Nom", + "deleteAllData": "Supprimer toutes les données", + "confirmDeleteAllData": "Êtes-vous sûr de vouloir effacer toutes vos données ?", + "messages": "Messages", + "exportingData" : { + "title": "Exportation de données", + "message": "Vos données sont en cours d'exportation." + }, + "exportData": "Exporter les données", + "importingData" : { + "title": "Importation de données", + "message": "Vos données sont en cours d'importation." + }, + "importData": "Importer les données", + "selectedFileError": { + "title": "Erreur", + "message": "Le fichier sélectionné n'est pas valide" + }, + "edit": "Modifier", + "promptDeleted": "Prompt supprimée.", + "removePromptError": { + "title": "Erreur", + "message": "Impossible de supprimer le prompt. Veuillez rafraîchir la page et réessayer." + }, + "deletePrompt": "Supprimer le prompt", + "confirmDeletePrompt": "Êtes-vous sûr de vouloir supprimer ce prompt ?" } } \ No newline at end of file diff --git a/src/components/Chats.tsx b/src/components/Chats.tsx index 5f15bf0..d6b927d 100644 --- a/src/components/Chats.tsx +++ b/src/components/Chats.tsx @@ -8,6 +8,8 @@ import { useChatId } from "../hooks/useChatId"; import { DeleteChatModal } from "./DeleteChatModal"; import { EditChatModal } from "./EditChatModal"; import { MainLink } from "./MainLink"; +import '../i18n' +import {t} from "i18next"; export function Chats({ search }: { search: string }) { const chatId = useChatId(); @@ -55,10 +57,10 @@ export function Chats({ search }: { search: string }) { - Edit + {t('edit')} - Delete + {t('delete')} diff --git a/src/components/DatabaseModal.tsx b/src/components/DatabaseModal.tsx index 513e641..7411064 100644 --- a/src/components/DatabaseModal.tsx +++ b/src/components/DatabaseModal.tsx @@ -8,6 +8,8 @@ import { cloneElement, ReactElement } from "react"; import { db } from "../db"; import { DeleteAllDataModal } from "./DeleteAllDataModal"; import { DeleteChatsModal } from "./DeleteChatsModal"; +import '../i18n' +import {t} from "i18next"; export function DatabaseModal({ children }: { children: ReactElement }) { const [opened, { open, close }] = useDisclosure(false); @@ -27,7 +29,7 @@ export function DatabaseModal({ children }: { children: ReactElement }) { - Chats + {t('chats')} @@ -59,7 +61,7 @@ export function DatabaseModal({ children }: { children: ReactElement }) { tt="uppercase" fw={700} > - Messages + {t('messages')} @@ -73,7 +75,7 @@ export function DatabaseModal({ children }: { children: ReactElement }) { tt="uppercase" fw={700} > - Prompts + {t('prompts')} @@ -89,12 +91,12 @@ export function DatabaseModal({ children }: { children: ReactElement }) { "application/json" ); notifications.show({ - title: "Exporting Data", - message: "Your data is being exported.", + title: t('exportingData.title'), + message: t('exportingData.message'), }); }} > - Export Data + {t('exportData')} { notifications.show({ - title: "Importing data", - message: "Your data is being imported.", + title: t('importingData.title'), + message: t('importingData.message'), }); }) .catch((error) => { notifications.show({ - title: "Error", + title: t('selectedFileError.title'), color: "red", - message: "The file you selected is invalid", + message: t('selectedFileError.message'), }); }); }} @@ -131,7 +133,7 @@ export function DatabaseModal({ children }: { children: ReactElement }) { variant="default" leftIcon={} > - Import Data + {t('importData')} diff --git a/src/components/DeleteAllDataModal.tsx b/src/components/DeleteAllDataModal.tsx index 9b4cde6..c78bd20 100644 --- a/src/components/DeleteAllDataModal.tsx +++ b/src/components/DeleteAllDataModal.tsx @@ -2,6 +2,8 @@ import { Button, Modal, Stack, Text } from "@mantine/core"; import { useDisclosure } from "@mantine/hooks"; import { IconTrash } from "@tabler/icons-react"; import { db } from "../db"; +import '../i18n' +import {t} from "i18next"; export function DeleteAllDataModal({ onOpen }: { onOpen: () => void }) { const [opened, { open, close }] = useDisclosure(false, { onOpen }); @@ -14,17 +16,17 @@ export function DeleteAllDataModal({ onOpen }: { onOpen: () => void }) { color="red" leftIcon={} > - Delete All Data + {t('deleteAllData')} - Are you sure you want to delete your data? + {t('confirmDeleteAllData')} diff --git a/src/components/DeleteChatsModal.tsx b/src/components/DeleteChatsModal.tsx index 893afa4..28ffc26 100644 --- a/src/components/DeleteChatsModal.tsx +++ b/src/components/DeleteChatsModal.tsx @@ -15,18 +15,18 @@ export function DeleteChatsModal({ onOpen }: { onOpen: () => void }) { variant="outline" color="red" leftIcon={} - >" - {t("deleteChats")} + > + {t('deleteChats')} - {t("confirmDeleteChats")} + {t('confirmDeleteChats')} diff --git a/src/components/DeletePromptModal.tsx b/src/components/DeletePromptModal.tsx index 31a2a5c..8252668 100644 --- a/src/components/DeletePromptModal.tsx +++ b/src/components/DeletePromptModal.tsx @@ -7,6 +7,9 @@ import { useEffect, useState } from "react"; import { db, Prompt } from "../db"; import { useApiKey } from "../hooks/useApiKey"; import { useChatId } from "../hooks/useChatId"; +import '../i18n' +import {t} from "i18next"; +import * as tty from "tty"; export function DeletePromptModal({ prompt }: { prompt: Prompt }) { const [opened, { open, close }] = useDisclosure(false); @@ -23,7 +26,7 @@ export function DeletePromptModal({ prompt }: { prompt: Prompt }) { return ( <> - +
{ try { @@ -33,22 +36,21 @@ export function DeletePromptModal({ prompt }: { prompt: Prompt }) { close(); notifications.show({ - title: "Deleted", - message: "Chat deleted.", + title: t('deleted'), + message: t('promptDeleted'), }); } catch (error: any) { if (error.toJSON().message === "Network Error") { notifications.show({ - title: "Error", + title: t('networkError.title'), color: "red", - message: "No internet connection.", + message: t('networkError.message'), }); } else { notifications.show({ - title: "Error", + title: t('removePromptError.title'), color: "red", - message: - "Can't remove chat. Please refresh the page and try again.", + message: t('removePromptError.message'), }); } } finally { @@ -57,14 +59,14 @@ export function DeletePromptModal({ prompt }: { prompt: Prompt }) { }} > - Are you sure you want to delete this prompt? + {t('confirmDeletePrompt')}
- + diff --git a/src/components/EditChatModal.tsx b/src/components/EditChatModal.tsx index d4347fa..d9bd3b2 100644 --- a/src/components/EditChatModal.tsx +++ b/src/components/EditChatModal.tsx @@ -3,6 +3,8 @@ import { useDisclosure } from "@mantine/hooks"; import { notifications } from "@mantine/notifications"; import { cloneElement, ReactElement, useEffect, useState } from "react"; import { Chat, db } from "../db"; +import '../i18n' +import {t} from "i18next"; export function EditChatModal({ chat, @@ -22,7 +24,7 @@ export function EditChatModal({ return ( <> {cloneElement(children, { onClick: open })} - +
{ try { @@ -32,22 +34,22 @@ export function EditChatModal({ chat.description = value; }); notifications.show({ - title: "Saved", - message: "", + title: t('chatUpdated.title'), + message: t('chatUpdated.message'), }); close(); } catch (error: any) { if (error.toJSON().message === "Network Error") { notifications.show({ - title: "Error", + title: t('networkError.title'), color: "red", - message: "No internet connection.", + message: t('networkError.message'), }); } const message = error.response?.data?.error?.message; if (message) { notifications.show({ - title: "Error", + title: t('error.title'), color: "red", message, }); @@ -59,14 +61,14 @@ export function EditChatModal({ > setValue(event.currentTarget.value)} formNoValidate data-autofocus />
diff --git a/src/components/EditPromptModal.tsx b/src/components/EditPromptModal.tsx index dc33961..ed1b452 100644 --- a/src/components/EditPromptModal.tsx +++ b/src/components/EditPromptModal.tsx @@ -12,6 +12,8 @@ import { notifications } from "@mantine/notifications"; import { IconPencil } from "@tabler/icons-react"; import { useEffect, useState } from "react"; import { db, Prompt } from "../db"; +import '../i18n' +import {t} from "i18next"; export function EditPromptModal({ prompt }: { prompt: Prompt }) { const [opened, { open, close }] = useDisclosure(false); @@ -26,7 +28,7 @@ export function EditPromptModal({ prompt }: { prompt: Prompt }) { return ( <> - +
{ try { @@ -37,21 +39,21 @@ export function EditPromptModal({ prompt }: { prompt: Prompt }) { chat.content = value; }); notifications.show({ - title: "Saved", - message: "Prompt updated", + title: t('promptUpdated.title'), + message: t('promptUpdated.message'), }); } catch (error: any) { if (error.toJSON().message === "Network Error") { notifications.show({ - title: "Error", + title: t('networkError.title'), color: "red", - message: "No internet connection.", + message: t('networkError.message'), }); } const message = error.response?.data?.error?.message; if (message) { notifications.show({ - title: "Error", + title: t('error.title'), color: "red", message, }); @@ -63,14 +65,14 @@ export function EditPromptModal({ prompt }: { prompt: Prompt }) { > setTitle(event.currentTarget.value)} formNoValidate data-autofocus />