diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index 784da11e..b5a5e374 100644 --- a/src/locales/en/translation.json +++ b/src/locales/en/translation.json @@ -130,7 +130,20 @@ "download": "Download", "executable_path_in_use": "Executable already in use by \"{{game}}\"", "warning": "Warning:", - "hydra_needs_to_remain_open": "for this download, Hydra needs to remain open util its conclusion. In case Hydra closes before the conclusion, you will lose your progress." + "hydra_needs_to_remain_open": "for this download, Hydra needs to remain open util its conclusion. In case Hydra closes before the conclusion, you will lose your progress.", + "cloud_save": "Cloud save", + "cloud_save_description": "Save your progress in the cloud and continue playing on any device", + "backups": "Backups", + "install_backup": "Install", + "delete_backup": "Delete", + "create_backup": "Create backup", + "last_backup_date": "Last backup on {{date}}", + "no_backup_preview": "Hydra could not locate any save games for this game", + "restoring_backup": "Restoring backup…", + "uploading_backup": "Uploading backup…", + "no_backups": "You haven't created any backups for this game yet", + "backup_uploaded": "Backup uploaded", + "backup_deleted": "Backup deleted" }, "activation": { "title": "Activate Hydra", diff --git a/src/locales/pt-BR/translation.json b/src/locales/pt-BR/translation.json index fcb18659..88c05250 100644 --- a/src/locales/pt-BR/translation.json +++ b/src/locales/pt-BR/translation.json @@ -126,7 +126,21 @@ "download": "Baixar", "executable_path_in_use": "Executável em uso por \"{{game}}\"", "warning": "Aviso:", - "hydra_needs_to_remain_open": "para este download, o Hydra precisa ficar aberto até a conclusão. Caso o Hydra encerre antes da conclusão, perderá seu progresso." + "hydra_needs_to_remain_open": "para este download, o Hydra precisa ficar aberto até a conclusão. Caso o Hydra encerre antes da conclusão, perderá seu progresso.", + + "cloud_save": "Salvamento em nuvem", + "cloud_save_description": "Matenha seu progresso na nuvem e continue de onde parou em qualquer dispositivo", + "backups": "Backups", + "install_backup": "Restaurar", + "delete_backup": "Apagar", + "create_backup": "Criar backup", + "last_backup_date": "Último backup em {{date}}", + "no_backup_preview": "Hydra não encontrou nenhum save para este jogo", + "restoring_backup": "Restaurando backup…", + "uploading_backup": "Criando backup…", + "no_backups": "Você ainda não fez nenhum backup deste jogo", + "backup_uploaded": "Backup criado", + "backup_deleted": "Backup apagado" }, "activation": { "title": "Ativação", diff --git a/src/main/events/cloud-sync/check-game-cloud-sync-support.ts b/src/main/events/cloud-save/check-game-cloud-sync-support.ts similarity index 100% rename from src/main/events/cloud-sync/check-game-cloud-sync-support.ts rename to src/main/events/cloud-save/check-game-cloud-sync-support.ts diff --git a/src/main/events/cloud-sync/delete-game-artifact.ts b/src/main/events/cloud-save/delete-game-artifact.ts similarity index 100% rename from src/main/events/cloud-sync/delete-game-artifact.ts rename to src/main/events/cloud-save/delete-game-artifact.ts diff --git a/src/main/events/cloud-sync/download-game-artifact.ts b/src/main/events/cloud-save/download-game-artifact.ts similarity index 100% rename from src/main/events/cloud-sync/download-game-artifact.ts rename to src/main/events/cloud-save/download-game-artifact.ts diff --git a/src/main/events/cloud-sync/get-game-artifacts.ts b/src/main/events/cloud-save/get-game-artifacts.ts similarity index 100% rename from src/main/events/cloud-sync/get-game-artifacts.ts rename to src/main/events/cloud-save/get-game-artifacts.ts diff --git a/src/main/events/cloud-sync/get-game-backup-preview.ts b/src/main/events/cloud-save/get-game-backup-preview.ts similarity index 100% rename from src/main/events/cloud-sync/get-game-backup-preview.ts rename to src/main/events/cloud-save/get-game-backup-preview.ts diff --git a/src/main/events/cloud-sync/upload-save-game.ts b/src/main/events/cloud-save/upload-save-game.ts similarity index 100% rename from src/main/events/cloud-sync/upload-save-game.ts rename to src/main/events/cloud-save/upload-save-game.ts diff --git a/src/main/events/index.ts b/src/main/events/index.ts index 4caa577c..53e5611f 100644 --- a/src/main/events/index.ts +++ b/src/main/events/index.ts @@ -58,12 +58,12 @@ import "./profile/update-profile"; import "./profile/process-profile-image"; import "./profile/send-friend-request"; import "./profile/sync-friend-requests"; -import "./cloud-sync/download-game-artifact"; -import "./cloud-sync//get-game-artifacts"; -import "./cloud-sync/get-game-backup-preview"; -import "./cloud-sync/upload-save-game"; -import "./cloud-sync/check-game-cloud-sync-support"; -import "./cloud-sync/delete-game-artifact"; +import "./cloud-save/download-game-artifact"; +import "./cloud-save/get-game-artifacts"; +import "./cloud-save/get-game-backup-preview"; +import "./cloud-save/upload-save-game"; +import "./cloud-save/check-game-cloud-sync-support"; +import "./cloud-save/delete-game-artifact"; import { isPortableVersion } from "@main/helpers"; ipcMain.handle("ping", () => "pong"); diff --git a/src/preload/index.ts b/src/preload/index.ts index 32a747a5..52e671a4 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -115,7 +115,7 @@ contextBridge.exposeInMainWorld("electron", { getDiskFreeSpace: (path: string) => ipcRenderer.invoke("getDiskFreeSpace", path), - /* Cloud sync */ + /* Cloud save */ uploadSaveGame: (objectId: string, shop: GameShop) => ipcRenderer.invoke("uploadSaveGame", objectId, shop), downloadGameArtifact: ( diff --git a/src/renderer/src/declaration.d.ts b/src/renderer/src/declaration.d.ts index 6fab054a..df1f105f 100644 --- a/src/renderer/src/declaration.d.ts +++ b/src/renderer/src/declaration.d.ts @@ -115,7 +115,7 @@ declare global { /* Hardware */ getDiskFreeSpace: (path: string) => Promise; - /* Cloud sync */ + /* Cloud save */ uploadSaveGame: (objectId: string, shop: GameShop) => Promise; downloadGameArtifact: ( objectId: string, diff --git a/src/renderer/src/pages/game-details/cloud-sync-modal/cloud-sync-modal.tsx b/src/renderer/src/pages/game-details/cloud-sync-modal/cloud-sync-modal.tsx index 7461c4b2..3402c627 100644 --- a/src/renderer/src/pages/game-details/cloud-sync-modal/cloud-sync-modal.tsx +++ b/src/renderer/src/pages/game-details/cloud-sync-modal/cloud-sync-modal.tsx @@ -16,6 +16,7 @@ import { } from "@primer/octicons-react"; import { useToast } from "@renderer/hooks"; import { GameBackup, gameBackupsTable } from "@renderer/dexie"; +import { useTranslation } from "react-i18next"; export interface CloudSyncModalProps extends Omit {} @@ -24,6 +25,8 @@ export function CloudSyncModal({ visible, onClose }: CloudSyncModalProps) { const [deletingArtifact, setDeletingArtifact] = useState(false); const [lastBackup, setLastBackup] = useState(null); + const { t } = useTranslation("game_details"); + const { artifacts, backupPreview, @@ -44,7 +47,7 @@ export function CloudSyncModal({ visible, onClose }: CloudSyncModalProps) { try { await deleteGameArtifact(gameArtifactId); - showSuccessToast("backup_successfully_deleted"); + showSuccessToast(t("backup_deleted")); } catch (err) { showErrorToast("backup_deletion_failed"); } finally { @@ -64,7 +67,7 @@ export function CloudSyncModal({ visible, onClose }: CloudSyncModalProps) { return ( - creating_backup + {t("uploading_backup")} ); } @@ -73,34 +76,36 @@ export function CloudSyncModal({ visible, onClose }: CloudSyncModalProps) { return ( - restoring_backup + {t("restoring_backup")} ); } if (lastBackup) { return ( -

+ - Último backup em {format(lastBackup.createdAt, "dd/MM/yyyy HH:mm")} -

+ {t("last_backup_date", { + date: format(lastBackup.createdAt, "dd/MM/yyyy HH:mm"), + })} + ); } if (!backupPreview) { - return "no_backup_preview"; + return t("no_backup_preview"); } - return "no_artifacts"; - }, [uploadingBackup, lastBackup, backupPreview, restoringBackup]); + return t("no_backups"); + }, [uploadingBackup, lastBackup, backupPreview, restoringBackup, t]); const disableActions = uploadingBackup || restoringBackup || deletingArtifact; return ( @@ -114,7 +119,7 @@ export function CloudSyncModal({ visible, onClose }: CloudSyncModalProps) { >

{gameTitle}

- {backupStateLabel} +

{backupStateLabel}

-

backups

+

{t("backups")}

    {artifacts.map((artifact) => ( @@ -162,7 +167,7 @@ export function CloudSyncModal({ visible, onClose }: CloudSyncModalProps) { disabled={disableActions} > - install_artifact + {t("install_backup")} diff --git a/src/renderer/src/pages/game-details/game-details-content.tsx b/src/renderer/src/pages/game-details/game-details-content.tsx index 80974a14..3c49c3af 100644 --- a/src/renderer/src/pages/game-details/game-details-content.tsx +++ b/src/renderer/src/pages/game-details/game-details-content.tsx @@ -132,7 +132,7 @@ export function GameDetailsContent() { style={{ width: 26, position: "absolute", top: -3 }} /> - cloud_sync + {t("cloud_save")} )}