diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml index 0977f965..9d245b5f 100644 --- a/.github/ISSUE_TEMPLATE/bug.yaml +++ b/.github/ISSUE_TEMPLATE/bug.yaml @@ -7,6 +7,7 @@ body: label: Ludusavi version description: If you're not using the latest version, please update and make sure the problem still occurs. options: + - v0.15.0 - v0.14.0 - v0.13.1 - v0.13.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 59bf90cf..bde07baa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,16 +1,19 @@ -## Unreleased +## v0.15.0 (2022-11-07) * Added: * Steam shortcuts for non-Steam games are now detected. On all platforms, the shortcut's "start in" folder is used as the `` path. On Linux, the shortcut's app ID is used to check `steamapps/compatdata` for Proton saves. * In Heroic roots, Ludusavi can now recognize games by their GOG ID. + This helps resolve cases where Heroic and Ludusavi use different titles for the same game. The CLI `find` command now also has a `--gog-id` option. * GUI: On the Steam Deck, an "exit" button has been added to the other screen, to make it easier to exit the program while using game mode. Ludusavi checks if `/home/deck` exists in order to determine whether it is running on the Steam Deck. * CLI: `--config` option to set a custom config directory. ([Contributed by sluedecke](https://github.com/mtkennerly/ludusavi/pull/153)) + * Updated translations. + (Thanks to contributors on the [Crowdin project](https://crowdin.com/project/ludusavi)) * Changed: * Manifest updates now use gzip compression, cutting the download size to about 10% (e.g., 11.4 MiB -> 1.5 MiB). * Fixed: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 25e1dc68..2c31e2a3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -57,18 +57,12 @@ pip install aiohttp toml Also install the Crowdin CLI manually. -#### Automated -Run: - -```bash -invoke prerelease -``` - -#### Manual +#### Process * Update version in CHANGELOG.md * Update version in Cargo.toml * Update version in assets/com.github.mtkennerly.ludusavi.metainfo.xml including the `releases` section and the screenshot URL. +* Run `invoke prerelease` * Update the translation percentages in src/lang.rs * Run `cargo build` to update the version in Cargo.lock * Add the new version to `.github/ISSUE_TEMPLATE/*.yaml`. diff --git a/Cargo.lock b/Cargo.lock index d2be6d67..17b93500 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1958,7 +1958,7 @@ dependencies = [ [[package]] name = "ludusavi" -version = "0.14.0" +version = "0.15.0" dependencies = [ "base64", "byte-unit", diff --git a/Cargo.toml b/Cargo.toml index 81f2d2f6..6c0fb780 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ludusavi" -version = "0.14.0" +version = "0.15.0" authors = ["mtkennerly "] edition = "2021" description = "Game save backup tool" diff --git a/assets/com.github.mtkennerly.ludusavi.metainfo.xml b/assets/com.github.mtkennerly.ludusavi.metainfo.xml index 290627f8..303f8890 100644 --- a/assets/com.github.mtkennerly.ludusavi.metainfo.xml +++ b/assets/com.github.mtkennerly.ludusavi.metainfo.xml @@ -23,13 +23,14 @@ - https://raw.githubusercontent.com/mtkennerly/ludusavi/v0.14.0/docs/sample-gui-linux.png + https://raw.githubusercontent.com/mtkennerly/ludusavi/v0.15.0/docs/sample-gui-linux.png Graphical user interface com.github.mtkennerly.ludusavi.desktop + diff --git a/lang/ar-SA.ftl b/lang/ar-SA.ftl index 260e5624..243ba40d 100644 --- a/lang/ar-SA.ftl +++ b/lang/ar-SA.ftl @@ -40,6 +40,7 @@ button-deselect-all = إلغاء تحديد الكل button-enable-all = تفعيل الكل button-disable-all = تعطيل الكل button-customize = Customize +button-exit = Exit no-roots-are-configured = إضافة بعض الجذور لنسخ المزيد من البيانات احتياطياً. config-is-invalid = خطأ: ملف التكوين غير صالح. manifest-is-invalid = خطأ: ملف البيان غير صالح. diff --git a/lang/de-DE.ftl b/lang/de-DE.ftl index d1693844..57f25aa4 100644 --- a/lang/de-DE.ftl +++ b/lang/de-DE.ftl @@ -40,6 +40,7 @@ button-deselect-all = Alle abwählen button-enable-all = Alle aktivieren button-disable-all = Alle deaktivieren button-customize = Anpassen +button-exit = Exit no-roots-are-configured = Fügen Sie einige Wurzeln hinzu, um noch mehr Daten zu sichern. config-is-invalid = Fehler: Die Konfigurationsdatei ist ungültig. manifest-is-invalid = Fehler: Die Manifest-Datei ist ungültig. diff --git a/lang/eo-UY.ftl b/lang/eo-UY.ftl index 5e5ad6a9..d1606a4c 100644 --- a/lang/eo-UY.ftl +++ b/lang/eo-UY.ftl @@ -40,6 +40,7 @@ button-deselect-all = Deselect all button-enable-all = Enable all button-disable-all = Disable all button-customize = Customize +button-exit = Exit no-roots-are-configured = Add some roots to back up even more data. config-is-invalid = Error: The config file is invalid. manifest-is-invalid = Error: The manifest file is invalid. diff --git a/lang/es-ES.ftl b/lang/es-ES.ftl index bb851de1..5d4af8a5 100644 --- a/lang/es-ES.ftl +++ b/lang/es-ES.ftl @@ -40,6 +40,7 @@ button-deselect-all = Deseleccionar todos button-enable-all = Habilitar todos button-disable-all = Deshabilitar todos button-customize = Customize +button-exit = Exit no-roots-are-configured = Añade algunas raíces para respaldar aún más datos. config-is-invalid = Error: El archivo de configuración no es válido. manifest-is-invalid = Error: El archivo de manifiesto no es válido. diff --git a/lang/fil-PH.ftl b/lang/fil-PH.ftl index 80b29979..0250af9a 100644 --- a/lang/fil-PH.ftl +++ b/lang/fil-PH.ftl @@ -40,6 +40,7 @@ button-deselect-all = Alisin ang lahat button-enable-all = Enable ang lahat button-disable-all = Disable ang lahat button-customize = Customize +button-exit = Exit no-roots-are-configured = Paki-lagay mga roots upang mag-back up ng higit pang data. config-is-invalid = Error: Invalid ang config file. manifest-is-invalid = Error: Invalid ang manifest file. diff --git a/lang/it-IT.ftl b/lang/it-IT.ftl index 75d8aa90..c4a83ff1 100644 --- a/lang/it-IT.ftl +++ b/lang/it-IT.ftl @@ -40,6 +40,7 @@ button-deselect-all = Deseleziona tutto button-enable-all = Attiva tutto button-disable-all = Disattiva tutto button-customize = Personalizza +button-exit = Exit no-roots-are-configured = Aggiungi alcune radici per eseguire il backup di ulteriori dati. config-is-invalid = Errore: File di configurazione non valido. manifest-is-invalid = Errore: File manifest non valido. diff --git a/lang/ko-KR.ftl b/lang/ko-KR.ftl index 95d2857c..f6fd522a 100644 --- a/lang/ko-KR.ftl +++ b/lang/ko-KR.ftl @@ -40,6 +40,7 @@ button-deselect-all = 모두 선택 해제 button-enable-all = 모두 활성화 button-disable-all = 모두 비활성화 button-customize = Customize +button-exit = Exit no-roots-are-configured = 최상위 디렉토리를 추가해서 더 많은 데이터를 백업하세요. config-is-invalid = 오류: 설정 파일이 올바르지 않습니다. manifest-is-invalid = 오류: 매니페스트 파일이 올바르지 않습니다. diff --git a/lang/pl-PL.ftl b/lang/pl-PL.ftl index 2959566f..e60bd541 100644 --- a/lang/pl-PL.ftl +++ b/lang/pl-PL.ftl @@ -40,6 +40,7 @@ button-deselect-all = Odznacz wszystkie button-enable-all = Włącz wszystkie button-disable-all = Wyłącz wszystkie button-customize = Customize +button-exit = Exit no-roots-are-configured = Dodaj kilka katalogów głównych, aby utworzyć kopię większej ilości danych. config-is-invalid = Błąd: Plik konfiguracji jest nieprawidłowy. manifest-is-invalid = Błąd: Plik manifest jest nieprawidłowy. diff --git a/lang/pt-BR.ftl b/lang/pt-BR.ftl index 9c3efb17..b41e060b 100644 --- a/lang/pt-BR.ftl +++ b/lang/pt-BR.ftl @@ -16,10 +16,10 @@ badge-duplicates = DUPLICADOS badge-duplicated = DUPLICADO badge-ignored = IGNORADO badge-redirected-from = DE: { $path } -badge-redirecting-to = TO: { $path } +badge-redirecting-to = PARA: { $path } some-entries-failed = Algumas entradas não conseguiram processar; procure por { badge-failed } na saída para mais detalhes. Verifique se você pode acessar esses arquivos ou se os caminhos deles são muito longos. cli-game-line-item-redirected = Redirecionado de: { $path } -cli-game-line-item-redirecting = Redirecting to: { $path } +cli-game-line-item-redirecting = Redirecionando para: { $path } button-backup = Fazer backup button-preview = Visualizar button-restore = Restaurar @@ -40,6 +40,7 @@ button-deselect-all = Desmarcar tudo button-enable-all = Ativar tudo button-disable-all = Desativar tudo button-customize = Personalizar +button-exit = Exit no-roots-are-configured = Adicione algumas raízes para armazenar ainda mais dados. config-is-invalid = Erro: O arquivo de configuração é inválido. manifest-is-invalid = Erro: O arquivo de manifesto é inválido. @@ -73,7 +74,7 @@ field-redirect-source = field-redirect-target = .placeholder = Alvo (novo local) field-backup-excluded-items = Exclusões do backup: -field-redirects = Redirects: +field-redirects = Redirecionar: # This appears next to the number of full backups that you'd like to keep. # A full backup includes all save files for a game. field-retention-full = Todos: @@ -83,13 +84,13 @@ field-retention-differential = Diferencial: field-backup-format = Formato: field-backup-compression = Compressão: # The compression level determines how much compresison we perform. -field-backup-compression-level = Level: -label-manifest = Manifest +field-backup-compression-level = Nível: +label-manifest = Manifesto # This shows the time when we checked for an update to the manifest. -label-checked = Checked +label-checked = Verificado # This shows the time when we found an update to the manifest. -label-updated = Updated -label-new = New +label-updated = Atualizado +label-new = Novo store-epic = Epic store-gog = GOG store-gog-galaxy = GOG Galaxy @@ -113,7 +114,7 @@ compression-zstd = Zstd theme = Tema theme-light = Claro theme-dark = Escuro -redirect-bidirectional = Bidirectional +redirect-bidirectional = Bidirecional explanation-for-exclude-store-screenshots = Nos backups, exclui capturas de tela específicas de armazenamento. No momento, isso só se aplica às capturas de tela de { store-steam } que você tirou. Se um jogo tem sua própria função de captura de tela @@ -135,8 +136,8 @@ confirm-add-missing-roots = Adicionar estas origens? no-missing-roots = Nenhuma origem adicional encontrada. preparing-backup-target = Preparando o diretório de backup... updating-manifest = Atualizando manifesto... -saves-found = Save data found. -no-saves-found = No save data found. +saves-found = Dados salvos encontrados. +no-saves-found = Não foram encontrados dados salvos. # This is tacked on to form something like "Back up (no confirmation)", # meaning we would perform an action without asking the user if they're sure. -suffix-no-confirmation = no confirmation +suffix-no-confirmation = sem confirmação diff --git a/lang/zh-CN.ftl b/lang/zh-CN.ftl index 1656bb2b..a2d5c942 100644 --- a/lang/zh-CN.ftl +++ b/lang/zh-CN.ftl @@ -40,6 +40,7 @@ button-deselect-all = 全不选 button-enable-all = 全部启用 button-disable-all = 全部禁用 button-customize = Customize +button-exit = Exit no-roots-are-configured = 添加一些根,以备份甚至更多的数据。 config-is-invalid = 错误:配置文件无效。 manifest-is-invalid = 错误:manifest 文件无效。 diff --git a/src/lang.rs b/src/lang.rs index 20853ee2..d903c843 100644 --- a/src/lang.rs +++ b/src/lang.rs @@ -92,10 +92,10 @@ impl ToString for Language { Self::Esperanto => "Esperanto (20%)", Self::Filipino => "Filipino (57%)", Self::German => "Deutsch (94%)", - Self::Italian => "Italiano (100%)", + Self::Italian => "Italiano (99%)", Self::Korean => "한국어 (47%)", Self::Polish => "Polski (94%)", - Self::PortugueseBrazilian => "Português brasileiro (94%)", + Self::PortugueseBrazilian => "Português brasileiro (99%)", Self::Spanish => "Español (84%)", } .to_string()