From 84486cb9f816b8858a9ba86b7278ba551943efdc Mon Sep 17 00:00:00 2001 From: Maat <86853107+Maatsuki@users.noreply.github.com> Date: Sun, 25 Jan 2026 23:30:53 -0300 Subject: [PATCH 1/4] Update pt.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Uma tradução completa para o SMAPI, feita por Maatsuki. https://www.nexusmods.com/profile/Maatsuki --- src/SMAPI/i18n/pt.json | 52 ++++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/src/SMAPI/i18n/pt.json b/src/SMAPI/i18n/pt.json index dff8e0c7..5750a986 100644 --- a/src/SMAPI/i18n/pt.json +++ b/src/SMAPI/i18n/pt.json @@ -13,43 +13,45 @@ *********/ // TODO // 'SMAPI features' section - "config.section.features": "SMAPI features", + "config.section.features": "Recursos do SMAPI", - "config.check-for-updates.name": "Check for updates", - "config.check-for-updates.desc": "Whether to automatically check for newer versions of SMAPI and mods when you load the game. If new versions are available, an alert will be shown in the console. This doesn't affect the load time even if your connection is offline or slow, because it happens in the background.", + "config.check-for-updates.name": "Verificar atualizações", + "config.check-for-updates.desc": "Define se o SMAPI deve verificar automaticamente por versões mais novas do SMAPI e dos mods ao iniciar o jogo. Se houver novas versões disponíveis, um alerta será exibido no console. Isso não afeta o tempo de carregamento, mesmo se sua conexão estiver offline ou lenta, pois acontece em segundo plano.", - "config.check-content-integrity.name": "Check content integrity", - "config.check-content-integrity.desc": "Whether SMAPI should check whether the game's content files are present and unmodified. This should nearly always be enabled. If disabled, SMAPI will log a warning for visibility when someone helps you troubleshoot game issues.", + "config.check-content-integrity.name": "Verificar integridade do conteúdo", + "config.check-content-integrity.desc": "Define se o SMAPI deve verificar se os arquivos de conteúdo do jogo estão presentes e sem modificações. Isso quase sempre deve ficar ativado. Se desativado, o SMAPI registrará um aviso para facilitar a identificação de problemas quando alguém estiver ajudando a solucionar erros do jogo.", + + "config.read-console-input.name": "Ler entrada do console", + "config.read-console-input.desc": "Define se o SMAPI deve escutar comandos digitados no console. Desativar isso impedirá o uso de comandos do console. Em alguns sistemas Linux específicos, desativar essa opção pode reduzir o uso de CPU.", - "config.read-console-input.name": "Read console input", - "config.read-console-input.desc": "Whether SMAPI should listen for console input. Disabling this will prevent you from using console commands. On some specific Linux systems, disabling this may reduce CPU usage.", // 'Console window' section - "config.section.console-window": "Console window", + "config.section.console-window": "Janela do console", - "config.developer-mode.name": "Developer mode", - "config.developer-mode.desc": "Whether to show much more info in the SMAPI consoler window, intended for mod developers. Not recommended for most players.", + "config.developer-mode.name": "Modo desenvolvedor", + "config.developer-mode.desc": "Define se devem ser exibidas muito mais informações na janela do console do SMAPI, destinado a desenvolvedores de mods. Não recomendado para a maioria dos jogadores.", - "config.color-scheme.name": "Color scheme", - "config.color-scheme.desc": "The color scheme to apply to text in the SMAPI console window. This has no effect on the game, mods, or SMAPI log file.", - "config.color-scheme.options.AutoDetect": "Auto-detect", - "config.color-scheme.options.AutoDetect.on-windows": "Auto-detect (recommended)", - "config.color-scheme.options.DarkBackground": "Lighter text (for dark backgrounds)", - "config.color-scheme.options.LightBackground": "Darker text (for light backgrounds)", - "config.color-scheme.options.None": "No colors", + "config.color-scheme.name": "Esquema de cores", + "config.color-scheme.desc": "O esquema de cores aplicado ao texto na janela do console do SMAPI. Isso não afeta o jogo, os mods ou o arquivo de log do SMAPI.", + + "config.color-scheme.options.AutoDetect": "Detecção automática", + "config.color-scheme.options.AutoDetect.on-windows": "Detecção automática (recomendado)", + "config.color-scheme.options.DarkBackground": "Texto mais claro (para fundos escuros)", + "config.color-scheme.options.LightBackground": "Texto mais escuro (para fundos claros)", + "config.color-scheme.options.None": "Sem cores", // 'Verbose logging' section - "config.section.verbose-logs": "Verbose logs", - "config.section.verbose-logs.explanation": "To help troubleshoot, SMAPI and many mods can send extra info to the SMAPI log (called 'verbose logging'). This may cause performance issues, and should usually be disabled.", + "config.section.verbose-logs": "Logs detalhados", + "config.section.verbose-logs.explanation": "Para ajudar na solução de problemas, o SMAPI e muitos mods podem enviar informações extras para o log do SMAPI (chamado de 'log detalhado'). Isso pode causar problemas de desempenho e geralmente deve permanecer desativado.", - "config.enable-for.name": "Enable for", - "config.enable-for.desc": "Choose which mods have verbose logging enabled.", - "config.enable-for.options.all": "All (not recommended)", - "config.enable-for.options.selected": "Mods selected below", + "config.enable-for.name": "Ativar para", + "config.enable-for.desc": "Escolha quais mods terão o log detalhado ativado.", + "config.enable-for.options.all": "Todos (não recomendado)", + "config.enable-for.options.selected": "Mods selecionados abaixo", "config.enable-for-smapi.name": "SMAPI", - "config.enable-for-smapi.desc": "Whether to enable verbose logs for SMAPI itself.", + "config.enable-for-smapi.desc": "Define se os logs detalhados devem ser ativados para o próprio SMAPI.", "config.enable-for-mod.name": "{{modName}}", - "config.enable-for-mod.desc": "Whether to enable verbose logs for the '{{modName}}' mod." + "config.enable-for-mod.desc": "Define se os logs detalhados devem ser ativados para o mod '{{modName}}'." } From 081a87d69a3c05da25e2f0ee9d97971833c0fd46 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sun, 25 Jan 2026 23:09:18 -0500 Subject: [PATCH 2/4] update translation docs & normalize i18n file --- docs/README.md | 2 +- docs/release-notes.md | 4 ++++ src/SMAPI/i18n/pt.json | 3 --- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/README.md b/docs/README.md index f4245146..17d9dd87 100644 --- a/docs/README.md +++ b/docs/README.md @@ -68,7 +68,7 @@ Italian | ↻ [partly translated](../src/SMAPI/i18n/it.json) Japanese | ↻ [partly translated](../src/SMAPI/i18n/ja.json) Korean | ↻ [partly translated](../src/SMAPI/i18n/ko.json) [Polish] | ↻ [partly translated](../src/SMAPI/i18n/pl.json) -Portuguese | ↻ [partly translated](../src/SMAPI/i18n/pt.json) +Portuguese | ✓ [fully translated](../src/SMAPI/i18n/pt.json) Russian | ↻ [partly translated](../src/SMAPI/i18n/ru.json) Spanish | ↻ [partly translated](../src/SMAPI/i18n/es.json) [Thai] | ↻ [partly translated](../src/SMAPI/i18n/th.json) diff --git a/docs/release-notes.md b/docs/release-notes.md index 7f8bd5bd..e67d6751 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -1,6 +1,10 @@ ← [README](README.md) # Release notes +## Upcoming release +* For players: + * Improved translations. Thanks to Maatsuki (updated Portuguese)! + ## 4.5.0 Released 25 January 2026 for Stardew Valley 1.6.14 or later. See [release highlights](https://www.patreon.com/posts/149054246) and [build attestation](https://github.com/Pathoschild/SMAPI/attestations/17379361). diff --git a/src/SMAPI/i18n/pt.json b/src/SMAPI/i18n/pt.json index 5750a986..e76dbf61 100644 --- a/src/SMAPI/i18n/pt.json +++ b/src/SMAPI/i18n/pt.json @@ -11,7 +11,6 @@ /********* ** Generic Mod Config Menu UI *********/ - // TODO // 'SMAPI features' section "config.section.features": "Recursos do SMAPI", @@ -24,7 +23,6 @@ "config.read-console-input.name": "Ler entrada do console", "config.read-console-input.desc": "Define se o SMAPI deve escutar comandos digitados no console. Desativar isso impedirá o uso de comandos do console. Em alguns sistemas Linux específicos, desativar essa opção pode reduzir o uso de CPU.", - // 'Console window' section "config.section.console-window": "Janela do console", @@ -33,7 +31,6 @@ "config.color-scheme.name": "Esquema de cores", "config.color-scheme.desc": "O esquema de cores aplicado ao texto na janela do console do SMAPI. Isso não afeta o jogo, os mods ou o arquivo de log do SMAPI.", - "config.color-scheme.options.AutoDetect": "Detecção automática", "config.color-scheme.options.AutoDetect.on-windows": "Detecção automática (recomendado)", "config.color-scheme.options.DarkBackground": "Texto mais claro (para fundos escuros)", From 27b5d91824ff75a6dc56530f6653868c2b9282a5 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sun, 25 Jan 2026 23:48:34 -0500 Subject: [PATCH 3/4] fix unix file permissions not set correctly in unified build scripts --- build/scripts/prepare-install-package.ps1 | 43 ++++++++++++++++++----- docs/release-notes.md | 1 + 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/build/scripts/prepare-install-package.ps1 b/build/scripts/prepare-install-package.ps1 index 45e27dec..8cd2c646 100644 --- a/build/scripts/prepare-install-package.ps1 +++ b/build/scripts/prepare-install-package.ps1 @@ -15,12 +15,12 @@ ########## $windowsOnly = $false # Windows-only build $skipBundleDeletion = $false # skip bundle deletion (only applies when using WSL to finalize the build on Windows) - foreach ($arg in $args) { - if ($arg -eq "--windows-only" -and $IsWindows) { - $windowsOnly = $true - } - elseif ($arg -eq "--skip-bundle-deletion") { - $skipBundleDeletion = $true +foreach ($arg in $args) { + if ($arg -eq "--windows-only" -and $IsWindows) { + $windowsOnly = $true + } + elseif ($arg -eq "--skip-bundle-deletion") { + $skipBundleDeletion = $true } } @@ -156,6 +156,7 @@ $installAssets = "src/SMAPI.Installer/assets" $packagePath = "bin/SMAPI installer" # init structure +Write-Host "Setting up structure..." foreach ($folder in $folders) { $folderPath = "$packagePath/internal/$folder/bundle/smapi-internal" @@ -256,22 +257,37 @@ foreach ($folder in $folders) { } # mark scripts executable +Write-Host "Setting file permissions..." if ($IsWindows) { Write-Warning "Can't set Unix file permissions on Windows. This may cause issues for Linux/macOS players." } else { - ForEach ($path in @("install on Linux.sh", "install on macOS.command", "bundle/unix-launcher.sh")) { + ForEach ($path in @("install on Linux.sh", "install on macOS.command", "internal/linux/bundle/unix-launcher.sh", "internal/macOS/bundle/unix-launcher.sh")) { if (Test-Path "$packagePath/$path" -PathType Leaf) { chmod 755 "$packagePath/$path" } + else { + Write-Host "Couldn't set permissions for '$packagePath/$path': file does not exist." + } } } # convert bundle folder into final 'install.dat' files +Write-Host "Tucking SMAPI bundle into install.dat..." foreach ($folder in $folders) { $path = "$packagePath/internal/$folder" - Compress-Archive -Path "$path/bundle/*" -CompressionLevel Optimal -DestinationPath "$path/install.dat" + if ($IsWindows) { + Compress-Archive -Path "$path/bundle/*" -CompressionLevel Optimal -DestinationPath "$path/install.dat" + } + else { + # Compress-Archive doesn't keep Unix permissions, so use zip directly on Linux/macOS + pushd "$path/bundle" > /dev/null + zip "install.dat" * --recurse-paths --quiet + popd > /dev/null + mv "$path/bundle/install.dat" "$path/install.dat" + } + if (!$skipBundleDeletion) { Remove-Item -Recurse -Force "$path/bundle" } @@ -281,9 +297,18 @@ foreach ($folder in $folders) { ########### ### Create release zips ########### +Write-Host "Creating release zip..." Move-Item "$packagePath" "bin/SMAPI $version installer" -Compress-Archive -Path "bin/SMAPI $version installer" -DestinationPath "bin/SMAPI-$version-installer.zip" -CompressionLevel Optimal +if ($IsWindows) { + Compress-Archive -Path "bin/SMAPI $version installer" -DestinationPath "bin/SMAPI-$version-installer.zip" -CompressionLevel Optimal +} +else { + # Compress-Archive doesn't keep Unix permissions, so use zip directly on Linux/macOS + pushd bin > /dev/null + zip -9 "SMAPI-$version-installer.zip" "SMAPI $version installer" --recurse-paths --quiet + popd > /dev/null +} Write-Output "" Write-Output "Done! Package created in ${pwd.Path}/bin." diff --git a/docs/release-notes.md b/docs/release-notes.md index e67d6751..6ab3def0 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -3,6 +3,7 @@ # Release notes ## Upcoming release * For players: + * Fixed error installing SMAPI 4.5.0 on Linux/macOS. * Improved translations. Thanks to Maatsuki (updated Portuguese)! ## 4.5.0 From dbe5ee3815c99442a03a8f1c34ccbd7f7dd524a7 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Sun, 25 Jan 2026 23:49:42 -0500 Subject: [PATCH 4/4] prepare for release --- build/common.targets | 2 +- docs/release-notes.md | 4 +++- src/SMAPI.Mods.ConsoleCommands/manifest.json | 4 ++-- src/SMAPI.Mods.SaveBackup/manifest.json | 4 ++-- src/SMAPI/Constants.cs | 2 +- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/build/common.targets b/build/common.targets index 05cfd8b5..8f21cd76 100644 --- a/build/common.targets +++ b/build/common.targets @@ -7,7 +7,7 @@ repo. It imports the other MSBuild files as needed. - 4.5.0 + 4.5.1 SMAPI latest $(AssemblySearchPaths);{GAC} diff --git a/docs/release-notes.md b/docs/release-notes.md index 6ab3def0..d2b881fe 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -1,7 +1,9 @@ ← [README](README.md) # Release notes -## Upcoming release +## 4.5.1 +Released 25 January 2026 for Stardew Valley 1.6.14 or later. + * For players: * Fixed error installing SMAPI 4.5.0 on Linux/macOS. * Improved translations. Thanks to Maatsuki (updated Portuguese)! diff --git a/src/SMAPI.Mods.ConsoleCommands/manifest.json b/src/SMAPI.Mods.ConsoleCommands/manifest.json index 9193514a..e66e2f11 100644 --- a/src/SMAPI.Mods.ConsoleCommands/manifest.json +++ b/src/SMAPI.Mods.ConsoleCommands/manifest.json @@ -1,9 +1,9 @@ { "Name": "Console Commands", "Author": "SMAPI", - "Version": "4.5.0", + "Version": "4.5.1", "Description": "Adds SMAPI console commands that let you manipulate the game.", "UniqueId": "SMAPI.ConsoleCommands", "EntryDll": "ConsoleCommands.dll", - "MinimumApiVersion": "4.5.0" + "MinimumApiVersion": "4.5.1" } diff --git a/src/SMAPI.Mods.SaveBackup/manifest.json b/src/SMAPI.Mods.SaveBackup/manifest.json index aa5d53a9..40436da4 100644 --- a/src/SMAPI.Mods.SaveBackup/manifest.json +++ b/src/SMAPI.Mods.SaveBackup/manifest.json @@ -1,9 +1,9 @@ { "Name": "Save Backup", "Author": "SMAPI", - "Version": "4.5.0", + "Version": "4.5.1", "Description": "Automatically backs up all your saves once per day into its folder.", "UniqueId": "SMAPI.SaveBackup", "EntryDll": "SaveBackup.dll", - "MinimumApiVersion": "4.5.0" + "MinimumApiVersion": "4.5.1" } diff --git a/src/SMAPI/Constants.cs b/src/SMAPI/Constants.cs index 21673fcc..eeb22a88 100644 --- a/src/SMAPI/Constants.cs +++ b/src/SMAPI/Constants.cs @@ -49,7 +49,7 @@ internal static class EarlyConstants internal static int? LogScreenId { get; set; } /// SMAPI's current raw semantic version. - internal static string RawApiVersion = "4.5.0"; + internal static string RawApiVersion = "4.5.1"; } /// Contains SMAPI's constants and assumptions.