mirror of
https://github.com/GreemDev/Ryujinx.git
synced 2024-12-23 13:55:47 +00:00
Merge branch 'GreemDev:master' into master
This commit is contained in:
commit
438ebb0859
53 changed files with 1305 additions and 1228 deletions
42
.github/workflows/canary.yml
vendored
42
.github/workflows/canary.yml
vendored
|
@ -54,7 +54,19 @@ jobs:
|
||||||
with:
|
with:
|
||||||
name: "Canary ${{ steps.version_info.outputs.build_version }}"
|
name: "Canary ${{ steps.version_info.outputs.build_version }}"
|
||||||
tag: ${{ steps.version_info.outputs.build_version }}
|
tag: ${{ steps.version_info.outputs.build_version }}
|
||||||
body: "**Full Changelog**: https://github.com/${{ github.repository }}/compare/Canary-${{ steps.version_info.outputs.prev_build_version }}...Canary-${{ steps.version_info.outputs.build_version }}"
|
body: |
|
||||||
|
# Canary builds:
|
||||||
|
|
||||||
|
These builds are experimental and may sometimes not work, use [regular builds](https://github.com/${{ github.repository }}/releases/latest) instead if that sounds like something you don't want to deal with.
|
||||||
|
|
||||||
|
| Platform | Artifact |
|
||||||
|
|--|--|
|
||||||
|
| Windows 64 bit | [Canary Windows Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-win_x64.zip) |
|
||||||
|
| Linux 64 bit | [Canary Linux Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz) |
|
||||||
|
| Linux arm 64 bit | [Canary Linux arm Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-linux_arm64.tar.gz) |
|
||||||
|
| macOS | [Canary macOS artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-macos_universal.app.tar.gz) |
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/compare/Canary-${{ steps.version_info.outputs.prev_build_version }}...Canary-${{ steps.version_info.outputs.build_version }}
|
||||||
omitBodyDuringUpdate: true
|
omitBodyDuringUpdate: true
|
||||||
owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}
|
owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}
|
||||||
repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}
|
repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}
|
||||||
|
@ -181,7 +193,19 @@ jobs:
|
||||||
artifacts: "release_output/*.tar.gz,release_output/*.zip"
|
artifacts: "release_output/*.tar.gz,release_output/*.zip"
|
||||||
#artifacts: "release_output/*.tar.gz,release_output/*.zip/*AppImage*"
|
#artifacts: "release_output/*.tar.gz,release_output/*.zip/*AppImage*"
|
||||||
tag: ${{ steps.version_info.outputs.build_version }}
|
tag: ${{ steps.version_info.outputs.build_version }}
|
||||||
body: "**Full Changelog**: https://github.com/${{ github.repository }}/compare/Canary-${{ steps.version_info.outputs.prev_build_version }}...Canary-${{ steps.version_info.outputs.build_version }}"
|
body: |
|
||||||
|
# Canary builds:
|
||||||
|
|
||||||
|
These builds are experimental and may sometimes not work, use [regular builds](https://github.com/GreemDev/Ryujinx/releases/latest) instead if that sounds like something you don't want to deal with.
|
||||||
|
|
||||||
|
| Platform | Artifact |
|
||||||
|
|--|--|
|
||||||
|
| Windows 64 bit | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-win_x64.zip |
|
||||||
|
| Linux 64 bit | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz |
|
||||||
|
| Linux arm 64 bit | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-linux_arm64.tar.gz |
|
||||||
|
| Macos | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-macos_universal.app.tar.gz |
|
||||||
|
|
||||||
|
"**Full Changelog**: https://github.com/${{ github.repository }}/compare/Canary-${{ steps.version_info.outputs.prev_build_version }}...Canary-${{ steps.version_info.outputs.build_version }}"
|
||||||
omitBodyDuringUpdate: true
|
omitBodyDuringUpdate: true
|
||||||
allowUpdates: true
|
allowUpdates: true
|
||||||
replacesArtifacts: true
|
replacesArtifacts: true
|
||||||
|
@ -248,7 +272,19 @@ jobs:
|
||||||
name: "Canary ${{ steps.version_info.outputs.build_version }}"
|
name: "Canary ${{ steps.version_info.outputs.build_version }}"
|
||||||
artifacts: "publish_ava/*.tar.gz, publish_headless/*.tar.gz"
|
artifacts: "publish_ava/*.tar.gz, publish_headless/*.tar.gz"
|
||||||
tag: ${{ steps.version_info.outputs.build_version }}
|
tag: ${{ steps.version_info.outputs.build_version }}
|
||||||
body: "**Full Changelog**: https://github.com/${{ github.repository }}/compare/Canary-${{ steps.version_info.outputs.prev_build_version }}...Canary-${{ steps.version_info.outputs.build_version }}"
|
body: |
|
||||||
|
# Canary builds:
|
||||||
|
|
||||||
|
These builds are experimental and may sometimes not work, use [regular builds](https://github.com/GreemDev/Ryujinx/releases/latest) instead if that sounds like something you don't want to deal with.
|
||||||
|
|
||||||
|
| Platform | Artifact |
|
||||||
|
|--|--|
|
||||||
|
| Windows 64 bit | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-win_x64.zip |
|
||||||
|
| Linux 64 bit | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz |
|
||||||
|
| Linux arm 64 bit | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-linux_arm64.tar.gz |
|
||||||
|
| Macos | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-canary-${{ steps.version_info.outputs.build_version }}-macos_universal.app.tar.gz |
|
||||||
|
|
||||||
|
"**Full Changelog**: https://github.com/${{ github.repository }}/compare/Canary-${{ steps.version_info.outputs.prev_build_version }}...Canary-${{ steps.version_info.outputs.build_version }}"
|
||||||
omitBodyDuringUpdate: true
|
omitBodyDuringUpdate: true
|
||||||
allowUpdates: true
|
allowUpdates: true
|
||||||
replacesArtifacts: true
|
replacesArtifacts: true
|
||||||
|
|
33
.github/workflows/release.yml
vendored
33
.github/workflows/release.yml
vendored
|
@ -53,7 +53,16 @@ jobs:
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.version_info.outputs.build_version }}
|
name: ${{ steps.version_info.outputs.build_version }}
|
||||||
tag: ${{ steps.version_info.outputs.build_version }}
|
tag: ${{ steps.version_info.outputs.build_version }}
|
||||||
body: "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${{ steps.version_info.outputs.prev_build_version }}...${{ steps.version_info.outputs.build_version }}"
|
body: |
|
||||||
|
# Regular builds:
|
||||||
|
| Platform | Artifact |
|
||||||
|
|--|--|
|
||||||
|
| Windows 64 bit | [Release Windows Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-${{ steps.version_info.outputs.build_version }}-win_x64.zip) |
|
||||||
|
| Linux 64 bit | [Release Linux Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz) |
|
||||||
|
| Linux arm 64 bit | [Release Linux arm Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-${{ steps.version_info.outputs.build_version }}-linux_arm64.tar.gz) |
|
||||||
|
| macOS | [Release macOS Artifact](https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-${{ steps.version_info.outputs.build_version }}-macos_universal.app.tar.gz) |
|
||||||
|
|
||||||
|
**Full Changelog**: https://github.com/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/compare/${{ steps.version_info.outputs.prev_build_version }}...${{ steps.version_info.outputs.build_version }}
|
||||||
omitBodyDuringUpdate: true
|
omitBodyDuringUpdate: true
|
||||||
owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}
|
owner: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_OWNER }}
|
||||||
repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}
|
repo: ${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}
|
||||||
|
@ -176,7 +185,16 @@ jobs:
|
||||||
name: ${{ steps.version_info.outputs.build_version }}
|
name: ${{ steps.version_info.outputs.build_version }}
|
||||||
artifacts: "release_output/*.tar.gz,release_output/*.zip,release_output/*AppImage*"
|
artifacts: "release_output/*.tar.gz,release_output/*.zip,release_output/*AppImage*"
|
||||||
tag: ${{ steps.version_info.outputs.build_version }}
|
tag: ${{ steps.version_info.outputs.build_version }}
|
||||||
body: "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${{ steps.version_info.outputs.prev_build_version }}...${{ steps.version_info.outputs.build_version }}"
|
body: |
|
||||||
|
# Regular builds:
|
||||||
|
| Platform | Artifact |
|
||||||
|
|--|--|
|
||||||
|
| Windows 64 bit | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-${{ steps.version_info.outputs.build_version }}-win_x64.zip |
|
||||||
|
| Linux 64 bit | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz |
|
||||||
|
| Linux arm 64 bit | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-${{ steps.version_info.outputs.build_version }}-linux_arm64.tar.gz |
|
||||||
|
| Macos | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-${{ steps.version_info.outputs.build_version }}-macos_universal.app.tar.gz |
|
||||||
|
|
||||||
|
"**Full Changelog**: https://github.com/${{ github.repository }}/compare/${{ steps.version_info.outputs.prev_build_version }}...${{ steps.version_info.outputs.build_version }}"
|
||||||
omitBodyDuringUpdate: true
|
omitBodyDuringUpdate: true
|
||||||
allowUpdates: true
|
allowUpdates: true
|
||||||
replacesArtifacts: true
|
replacesArtifacts: true
|
||||||
|
@ -243,7 +261,16 @@ jobs:
|
||||||
name: ${{ steps.version_info.outputs.build_version }}
|
name: ${{ steps.version_info.outputs.build_version }}
|
||||||
artifacts: "publish/*.tar.gz, publish_headless/*.tar.gz"
|
artifacts: "publish/*.tar.gz, publish_headless/*.tar.gz"
|
||||||
tag: ${{ steps.version_info.outputs.build_version }}
|
tag: ${{ steps.version_info.outputs.build_version }}
|
||||||
body: "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${{ steps.version_info.outputs.prev_build_version }}...${{ steps.version_info.outputs.build_version }}"
|
body: |
|
||||||
|
# Regular builds:
|
||||||
|
| Platform | Artifact |
|
||||||
|
|--|--|
|
||||||
|
| Windows 64 bit | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-${{ steps.version_info.outputs.build_version }}-win_x64.zip |
|
||||||
|
| Linux 64 bit | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz |
|
||||||
|
| Linux arm 64 bit | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-${{ steps.version_info.outputs.build_version }}-linux_arm64.tar.gz |
|
||||||
|
| Macos | https://github.com/${{ github.repository }}/releases/download/${{ steps.version_info.outputs.build_version }}/ryujinx-${{ steps.version_info.outputs.build_version }}-macos_universal.app.tar.gz |
|
||||||
|
|
||||||
|
"**Full Changelog**: https://github.com/${{ github.repository }}/compare/${{ steps.version_info.outputs.prev_build_version }}...${{ steps.version_info.outputs.build_version }}"
|
||||||
omitBodyDuringUpdate: true
|
omitBodyDuringUpdate: true
|
||||||
allowUpdates: true
|
allowUpdates: true
|
||||||
replacesArtifacts: true
|
replacesArtifacts: true
|
||||||
|
|
|
@ -40,11 +40,11 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.1</string>
|
<string>1.2</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1.1.0</string>
|
<string>1.2.0</string>
|
||||||
<key>NSHighResolutionCapable</key>
|
<key>NSHighResolutionCapable</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>CSResourcesFileMapped</key>
|
<key>CSResourcesFileMapped</key>
|
||||||
|
|
|
@ -17,7 +17,7 @@ error_handler() {
|
||||||
set the button_pressed to the button returned of the result
|
set the button_pressed to the button returned of the result
|
||||||
|
|
||||||
if the button_pressed is \"Open Download Page\" then
|
if the button_pressed is \"Open Download Page\" then
|
||||||
open location \"https://ryujinx.org/download\"
|
open location \"https://ryujinx.app/download\"
|
||||||
end if
|
end if
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
namespace Ryujinx.Common.Configuration.Hid.Controller
|
namespace Ryujinx.Common.Configuration.Hid.Controller
|
||||||
{
|
{
|
||||||
public class JoyconConfigControllerStick<TButton, TStick> where TButton : unmanaged where TStick : unmanaged
|
public class JoyconConfigControllerStick<TButton, TStick>
|
||||||
|
where TButton : unmanaged
|
||||||
|
where TStick : unmanaged
|
||||||
{
|
{
|
||||||
public TStick Joystick { get; set; }
|
public TStick Joystick { get; set; }
|
||||||
public bool InvertStickX { get; set; }
|
public bool InvertStickX { get; set; }
|
||||||
|
|
|
@ -24,6 +24,15 @@ namespace Ryujinx.HLE.HOS.Services.Ldn.Lp2p
|
||||||
return ResultCode.Success;
|
return ResultCode.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[CommandCmif(776)]
|
||||||
|
// DestroyGroup()
|
||||||
|
public ResultCode DestroyGroup(ServiceCtx context)
|
||||||
|
{
|
||||||
|
Logger.Stub?.PrintStub(LogClass.ServiceLdn);
|
||||||
|
|
||||||
|
return ResultCode.Success;
|
||||||
|
}
|
||||||
|
|
||||||
[CommandCmif(1536)]
|
[CommandCmif(1536)]
|
||||||
// SendToOtherGroup(nn::lp2p::MacAddress, nn::lp2p::GroupId, s16, s16, u32, buffer<unknown, 0x21>)
|
// SendToOtherGroup(nn::lp2p::MacAddress, nn::lp2p::GroupId, s16, s16, u32, buffer<unknown, 0x21>)
|
||||||
public ResultCode SendToOtherGroup(ServiceCtx context)
|
public ResultCode SendToOtherGroup(ServiceCtx context)
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions
|
||||||
{
|
{
|
||||||
private static readonly TitleUpdateMetadataJsonSerializerContext _applicationSerializerContext = new(JsonHelper.GetDefaultSerializerOptions());
|
private static readonly TitleUpdateMetadataJsonSerializerContext _applicationSerializerContext = new(JsonHelper.GetDefaultSerializerOptions());
|
||||||
|
|
||||||
public static ProcessResult Load(this Nca nca, Switch device, Nca patchNca, Nca controlNca)
|
public static ProcessResult Load(this Nca nca, Switch device, Nca patchNca, Nca controlNca, BlitStruct<ApplicationControlProperty>? customNacpData = null)
|
||||||
{
|
{
|
||||||
// Extract RomFs and ExeFs from NCA.
|
// Extract RomFs and ExeFs from NCA.
|
||||||
IStorage romFs = nca.GetRomFs(device, patchNca);
|
IStorage romFs = nca.GetRomFs(device, patchNca);
|
||||||
|
@ -55,6 +55,10 @@ namespace Ryujinx.HLE.Loaders.Processes.Extensions
|
||||||
{
|
{
|
||||||
nacpData = controlNca.GetNacp(device);
|
nacpData = controlNca.GetNacp(device);
|
||||||
}
|
}
|
||||||
|
else if (customNacpData != null) // if the Application doesn't provide a nacp file but the Application provides an override, use the provided nacp override
|
||||||
|
{
|
||||||
|
nacpData = (BlitStruct<ApplicationControlProperty>)customNacpData;
|
||||||
|
}
|
||||||
|
|
||||||
/* TODO: Rework this since it's wrong and doesn't work as it takes the DisplayVersion from a "potential" non-existent update.
|
/* TODO: Rework this since it's wrong and doesn't work as it takes the DisplayVersion from a "potential" non-existent update.
|
||||||
|
|
||||||
|
|
|
@ -98,12 +98,12 @@ namespace Ryujinx.HLE.Loaders.Processes
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool LoadNca(string path)
|
public bool LoadNca(string path, BlitStruct<ApplicationControlProperty>? customNacpData = null)
|
||||||
{
|
{
|
||||||
FileStream file = new(path, FileMode.Open, FileAccess.Read);
|
FileStream file = new(path, FileMode.Open, FileAccess.Read);
|
||||||
Nca nca = new(_device.Configuration.VirtualFileSystem.KeySet, file.AsStorage(false));
|
Nca nca = new(_device.Configuration.VirtualFileSystem.KeySet, file.AsStorage(false));
|
||||||
|
|
||||||
ProcessResult processResult = nca.Load(_device, null, null);
|
ProcessResult processResult = nca.Load(_device, null, null, customNacpData);
|
||||||
|
|
||||||
if (processResult.ProcessId != 0 && _processesByPid.TryAdd(processResult.ProcessId, processResult))
|
if (processResult.ProcessId != 0 && _processesByPid.TryAdd(processResult.ProcessId, processResult))
|
||||||
{
|
{
|
||||||
|
|
|
@ -84,12 +84,19 @@ namespace Ryujinx.HLE.Loaders.Processes
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isFirmware = ProgramId is >= 0x0100000000000819 and <= 0x010000000000081C;
|
||||||
|
bool isFirmwareApplication = ProgramId <= 0x0100000000007FFF;
|
||||||
|
|
||||||
|
string name = !isFirmware
|
||||||
|
? (isFirmwareApplication ? "Firmware Application " : "") + (!string.IsNullOrWhiteSpace(Name) ? Name : "<Unknown Name>")
|
||||||
|
: "Firmware";
|
||||||
|
|
||||||
// TODO: LibHac npdm currently doesn't support version field.
|
// TODO: LibHac npdm currently doesn't support version field.
|
||||||
string version = ProgramId > 0x0100000000007FFF
|
string version = !isFirmware
|
||||||
? DisplayVersion
|
? (!string.IsNullOrWhiteSpace(DisplayVersion) ? DisplayVersion : "<Unknown Version>")
|
||||||
: device.System.ContentManager.GetCurrentFirmwareVersion()?.VersionString ?? "?";
|
: device.System.ContentManager.GetCurrentFirmwareVersion()?.VersionString ?? "?";
|
||||||
|
|
||||||
Logger.Info?.Print(LogClass.Loader, $"Application Loaded: {Name} v{version} [{ProgramIdText}] [{(Is64Bit ? "64-bit" : "32-bit")}]");
|
Logger.Info?.Print(LogClass.Loader, $"Application Loaded: {name} v{version} [{ProgramIdText}] [{(Is64Bit ? "64-bit" : "32-bit")}]");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
37
src/Ryujinx.HLE/StructHelpers.cs
Normal file
37
src/Ryujinx.HLE/StructHelpers.cs
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
using LibHac.Common;
|
||||||
|
using LibHac.Ns;
|
||||||
|
using System;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Ryujinx.HLE
|
||||||
|
{
|
||||||
|
public static class StructHelpers
|
||||||
|
{
|
||||||
|
public static BlitStruct<ApplicationControlProperty> CreateCustomNacpData(string name, string version)
|
||||||
|
{
|
||||||
|
// https://switchbrew.org/wiki/NACP
|
||||||
|
const int OffsetOfDisplayVersion = 0x3060;
|
||||||
|
|
||||||
|
// https://switchbrew.org/wiki/NACP#ApplicationTitle
|
||||||
|
const int TotalApplicationTitles = 0x10;
|
||||||
|
const int SizeOfApplicationTitle = 0x300;
|
||||||
|
const int OffsetOfApplicationPublisherStrings = 0x200;
|
||||||
|
|
||||||
|
|
||||||
|
var nacpData = new BlitStruct<ApplicationControlProperty>(1);
|
||||||
|
|
||||||
|
// name and publisher buffer
|
||||||
|
// repeat once for each locale (the ApplicationControlProperty has 16 locales)
|
||||||
|
for (int i = 0; i < TotalApplicationTitles; i++)
|
||||||
|
{
|
||||||
|
Encoding.ASCII.GetBytes(name).AsSpan().CopyTo(nacpData.ByteSpan[(i * SizeOfApplicationTitle)..]);
|
||||||
|
"Ryujinx"u8.CopyTo(nacpData.ByteSpan[(i * SizeOfApplicationTitle + OffsetOfApplicationPublisherStrings)..]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// version buffer
|
||||||
|
Encoding.ASCII.GetBytes(version).AsSpan().CopyTo(nacpData.ByteSpan[OffsetOfDisplayVersion..]);
|
||||||
|
|
||||||
|
return nacpData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,3 +1,5 @@
|
||||||
|
using LibHac.Common;
|
||||||
|
using LibHac.Ns;
|
||||||
using Ryujinx.Audio.Backends.CompatLayer;
|
using Ryujinx.Audio.Backends.CompatLayer;
|
||||||
using Ryujinx.Audio.Integration;
|
using Ryujinx.Audio.Integration;
|
||||||
using Ryujinx.Common.Configuration;
|
using Ryujinx.Common.Configuration;
|
||||||
|
@ -111,7 +113,7 @@ namespace Ryujinx.HLE
|
||||||
|
|
||||||
public bool LoadCart(string exeFsDir, string romFsFile = null) => Processes.LoadUnpackedNca(exeFsDir, romFsFile);
|
public bool LoadCart(string exeFsDir, string romFsFile = null) => Processes.LoadUnpackedNca(exeFsDir, romFsFile);
|
||||||
public bool LoadXci(string xciFile, ulong applicationId = 0) => Processes.LoadXci(xciFile, applicationId);
|
public bool LoadXci(string xciFile, ulong applicationId = 0) => Processes.LoadXci(xciFile, applicationId);
|
||||||
public bool LoadNca(string ncaFile) => Processes.LoadNca(ncaFile);
|
public bool LoadNca(string ncaFile, BlitStruct<ApplicationControlProperty>? customNacpData = null) => Processes.LoadNca(ncaFile, customNacpData);
|
||||||
public bool LoadNsp(string nspFile, ulong applicationId = 0) => Processes.LoadNsp(nspFile, applicationId);
|
public bool LoadNsp(string nspFile, ulong applicationId = 0) => Processes.LoadNsp(nspFile, applicationId);
|
||||||
public bool LoadProgram(string fileName) => Processes.LoadNxo(fileName);
|
public bool LoadProgram(string fileName) => Processes.LoadNxo(fileName);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using CommandLine;
|
using CommandLine;
|
||||||
|
using Gommon;
|
||||||
using LibHac.Tools.FsSystem;
|
using LibHac.Tools.FsSystem;
|
||||||
using Ryujinx.Audio.Backends.SDL2;
|
using Ryujinx.Audio.Backends.SDL2;
|
||||||
using Ryujinx.Common;
|
using Ryujinx.Common;
|
||||||
|
@ -97,7 +98,12 @@ namespace Ryujinx.Headless.SDL2
|
||||||
|
|
||||||
Parser.Default.ParseArguments<Options>(args)
|
Parser.Default.ParseArguments<Options>(args)
|
||||||
.WithParsed(Load)
|
.WithParsed(Load)
|
||||||
.WithNotParsed(errors => errors.Output());
|
.WithNotParsed(errors =>
|
||||||
|
{
|
||||||
|
Logger.Error?.PrintMsg(LogClass.Application, "Error parsing command-line arguments:");
|
||||||
|
|
||||||
|
errors.ForEach(err => Logger.Error?.PrintMsg(LogClass.Application, $" - {err.Tag}"));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static InputConfig HandlePlayerConfiguration(string inputProfileName, string inputId, PlayerIndex index)
|
private static InputConfig HandlePlayerConfiguration(string inputProfileName, string inputId, PlayerIndex index)
|
||||||
|
@ -579,8 +585,8 @@ namespace Ryujinx.Headless.SDL2
|
||||||
options.MultiplayerLanInterfaceId,
|
options.MultiplayerLanInterfaceId,
|
||||||
Common.Configuration.Multiplayer.MultiplayerMode.Disabled,
|
Common.Configuration.Multiplayer.MultiplayerMode.Disabled,
|
||||||
false,
|
false,
|
||||||
"",
|
string.Empty,
|
||||||
"",
|
string.Empty,
|
||||||
options.CustomVSyncInterval);
|
options.CustomVSyncInterval);
|
||||||
|
|
||||||
return new Switch(configuration);
|
return new Switch(configuration);
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using DynamicData;
|
using DynamicData;
|
||||||
using DynamicData.Kernel;
|
|
||||||
using Gommon;
|
using Gommon;
|
||||||
using LibHac;
|
using LibHac;
|
||||||
using LibHac.Common;
|
using LibHac.Common;
|
||||||
|
@ -37,14 +36,13 @@ using System.Threading.Tasks;
|
||||||
using ContentType = LibHac.Ncm.ContentType;
|
using ContentType = LibHac.Ncm.ContentType;
|
||||||
using MissingKeyException = LibHac.Common.Keys.MissingKeyException;
|
using MissingKeyException = LibHac.Common.Keys.MissingKeyException;
|
||||||
using Path = System.IO.Path;
|
using Path = System.IO.Path;
|
||||||
using SpanHelpers = LibHac.Common.SpanHelpers;
|
|
||||||
using TimeSpan = System.TimeSpan;
|
using TimeSpan = System.TimeSpan;
|
||||||
|
|
||||||
namespace Ryujinx.UI.App.Common
|
namespace Ryujinx.UI.App.Common
|
||||||
{
|
{
|
||||||
public class ApplicationLibrary
|
public class ApplicationLibrary
|
||||||
{
|
{
|
||||||
public static string DefaultLanPlayWebHost = "ryuldnweb.vudjun.com";
|
public const string DefaultLanPlayWebHost = "ryuldnweb.vudjun.com";
|
||||||
public Language DesiredLanguage { get; set; }
|
public Language DesiredLanguage { get; set; }
|
||||||
public event EventHandler<ApplicationCountUpdatedEventArgs> ApplicationCountUpdated;
|
public event EventHandler<ApplicationCountUpdatedEventArgs> ApplicationCountUpdated;
|
||||||
public event EventHandler<LdnGameDataReceivedEventArgs> LdnGameDataReceived;
|
public event EventHandler<LdnGameDataReceivedEventArgs> LdnGameDataReceived;
|
||||||
|
@ -191,12 +189,9 @@ namespace Ryujinx.UI.App.Common
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isExeFs)
|
return isExeFs
|
||||||
{
|
? GetApplicationFromExeFs(pfs, filePath)
|
||||||
return GetApplicationFromExeFs(pfs, filePath);
|
: null;
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <exception cref="LibHac.Common.Keys.MissingKeyException">The configured key set is missing a key.</exception>
|
/// <exception cref="LibHac.Common.Keys.MissingKeyException">The configured key set is missing a key.</exception>
|
||||||
|
@ -512,10 +507,6 @@ namespace Ryujinx.UI.App.Common
|
||||||
case ".xci":
|
case ".xci":
|
||||||
case ".nsp":
|
case ".nsp":
|
||||||
{
|
{
|
||||||
IntegrityCheckLevel checkLevel = ConfigurationState.Instance.System.EnableFsIntegrityChecks
|
|
||||||
? IntegrityCheckLevel.ErrorOnInvalid
|
|
||||||
: IntegrityCheckLevel.None;
|
|
||||||
|
|
||||||
using IFileSystem pfs = PartitionFileSystemUtils.OpenApplicationFileSystem(filePath, _virtualFileSystem);
|
using IFileSystem pfs = PartitionFileSystemUtils.OpenApplicationFileSystem(filePath, _virtualFileSystem);
|
||||||
|
|
||||||
foreach (DirectoryEntryEx fileEntry in pfs.EnumerateEntries("/", "*.nca"))
|
foreach (DirectoryEntryEx fileEntry in pfs.EnumerateEntries("/", "*.nca"))
|
||||||
|
@ -604,7 +595,7 @@ namespace Ryujinx.UI.App.Common
|
||||||
controlNca.OpenFileSystem(NcaSectionType.Data, IntegrityCheckLevel.None)
|
controlNca.OpenFileSystem(NcaSectionType.Data, IntegrityCheckLevel.None)
|
||||||
.OpenFile(ref nacpFile.Ref, "/control.nacp".ToU8Span(), OpenMode.Read)
|
.OpenFile(ref nacpFile.Ref, "/control.nacp".ToU8Span(), OpenMode.Read)
|
||||||
.ThrowIfFailure();
|
.ThrowIfFailure();
|
||||||
nacpFile.Get.Read(out _, 0, SpanHelpers.AsByteSpan(ref controlData),
|
nacpFile.Get.Read(out _, 0, LibHac.Common.SpanHelpers.AsByteSpan(ref controlData),
|
||||||
ReadOption.None).ThrowIfFailure();
|
ReadOption.None).ThrowIfFailure();
|
||||||
|
|
||||||
var displayVersion = controlData.DisplayVersionString.ToString();
|
var displayVersion = controlData.DisplayVersionString.ToString();
|
||||||
|
@ -827,7 +818,7 @@ namespace Ryujinx.UI.App.Common
|
||||||
{
|
{
|
||||||
_downloadableContents.Edit(it =>
|
_downloadableContents.Edit(it =>
|
||||||
{
|
{
|
||||||
DownloadableContentsHelper.SaveDownloadableContentsJson(_virtualFileSystem, application.IdBase, dlcs);
|
DownloadableContentsHelper.SaveDownloadableContentsJson(application.IdBase, dlcs);
|
||||||
|
|
||||||
it.Remove(it.Items.Where(item => item.Dlc.TitleIdBase == application.IdBase));
|
it.Remove(it.Items.Where(item => item.Dlc.TitleIdBase == application.IdBase));
|
||||||
it.AddOrUpdate(dlcs);
|
it.AddOrUpdate(dlcs);
|
||||||
|
@ -839,7 +830,7 @@ namespace Ryujinx.UI.App.Common
|
||||||
{
|
{
|
||||||
_titleUpdates.Edit(it =>
|
_titleUpdates.Edit(it =>
|
||||||
{
|
{
|
||||||
TitleUpdatesHelper.SaveTitleUpdatesJson(_virtualFileSystem, application.IdBase, updates);
|
TitleUpdatesHelper.SaveTitleUpdatesJson(application.IdBase, updates);
|
||||||
|
|
||||||
it.Remove(it.Items.Where(item => item.TitleUpdate.TitleIdBase == application.IdBase));
|
it.Remove(it.Items.Where(item => item.TitleUpdate.TitleIdBase == application.IdBase));
|
||||||
it.AddOrUpdate(updates);
|
it.AddOrUpdate(updates);
|
||||||
|
@ -1088,11 +1079,12 @@ namespace Ryujinx.UI.App.Common
|
||||||
|
|
||||||
private bool AddAndAutoSelectUpdate(TitleUpdateModel update)
|
private bool AddAndAutoSelectUpdate(TitleUpdateModel update)
|
||||||
{
|
{
|
||||||
var currentlySelected = TitleUpdates.Items.FirstOrOptional(it =>
|
if (update == null) return false;
|
||||||
|
|
||||||
|
var currentlySelected = TitleUpdates.Items.FindFirst(it =>
|
||||||
it.TitleUpdate.TitleIdBase == update.TitleIdBase && it.IsSelected);
|
it.TitleUpdate.TitleIdBase == update.TitleIdBase && it.IsSelected);
|
||||||
|
|
||||||
var shouldSelect = !currentlySelected.HasValue ||
|
var shouldSelect = currentlySelected.Check(curr => curr.TitleUpdate?.Version < update.Version);
|
||||||
currentlySelected.Value.TitleUpdate.Version < update.Version;
|
|
||||||
|
|
||||||
_titleUpdates.AddOrUpdate((update, shouldSelect));
|
_titleUpdates.AddOrUpdate((update, shouldSelect));
|
||||||
|
|
||||||
|
@ -1464,7 +1456,7 @@ namespace Ryujinx.UI.App.Common
|
||||||
if (addedNewDlc)
|
if (addedNewDlc)
|
||||||
{
|
{
|
||||||
var gameDlcs = it.Items.Where(dlc => dlc.Dlc.TitleIdBase == application.IdBase).ToList();
|
var gameDlcs = it.Items.Where(dlc => dlc.Dlc.TitleIdBase == application.IdBase).ToList();
|
||||||
DownloadableContentsHelper.SaveDownloadableContentsJson(_virtualFileSystem, application.IdBase,
|
DownloadableContentsHelper.SaveDownloadableContentsJson(application.IdBase,
|
||||||
gameDlcs);
|
gameDlcs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1483,11 +1475,11 @@ namespace Ryujinx.UI.App.Common
|
||||||
TitleUpdatesHelper.LoadTitleUpdatesJson(_virtualFileSystem, application.IdBase);
|
TitleUpdatesHelper.LoadTitleUpdatesJson(_virtualFileSystem, application.IdBase);
|
||||||
it.AddOrUpdate(savedUpdates);
|
it.AddOrUpdate(savedUpdates);
|
||||||
|
|
||||||
var selectedUpdate = savedUpdates.FirstOrOptional(update => update.IsSelected);
|
var selectedUpdate = savedUpdates.FindFirst(update => update.IsSelected);
|
||||||
|
|
||||||
if (TryGetTitleUpdatesFromFile(application.Path, out var bundledUpdates))
|
if (TryGetTitleUpdatesFromFile(application.Path, out var bundledUpdates))
|
||||||
{
|
{
|
||||||
var savedUpdateLookup = savedUpdates.Select(update => update.Item1).ToHashSet();
|
var savedUpdateLookup = savedUpdates.Select(update => update.Update).ToHashSet();
|
||||||
bool updatesChanged = false;
|
bool updatesChanged = false;
|
||||||
|
|
||||||
foreach (var update in bundledUpdates.OrderByDescending(bundled => bundled.Version))
|
foreach (var update in bundledUpdates.OrderByDescending(bundled => bundled.Version))
|
||||||
|
@ -1495,12 +1487,11 @@ namespace Ryujinx.UI.App.Common
|
||||||
if (!savedUpdateLookup.Contains(update))
|
if (!savedUpdateLookup.Contains(update))
|
||||||
{
|
{
|
||||||
bool shouldSelect = false;
|
bool shouldSelect = false;
|
||||||
if (!selectedUpdate.HasValue || selectedUpdate.Value.Item1.Version < update.Version)
|
if (selectedUpdate.Check(su => su.Update?.Version < update.Version))
|
||||||
{
|
{
|
||||||
shouldSelect = true;
|
shouldSelect = true;
|
||||||
if (selectedUpdate.HasValue)
|
_titleUpdates.AddOrUpdate((selectedUpdate.Value.Update, false));
|
||||||
_titleUpdates.AddOrUpdate((selectedUpdate.Value.Item1, false));
|
selectedUpdate = (update, true);
|
||||||
selectedUpdate = DynamicData.Kernel.Optional<(TitleUpdateModel, bool IsSelected)>.Create((update, true));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
modifiedVersion = modifiedVersion || shouldSelect;
|
modifiedVersion = modifiedVersion || shouldSelect;
|
||||||
|
@ -1513,7 +1504,7 @@ namespace Ryujinx.UI.App.Common
|
||||||
if (updatesChanged)
|
if (updatesChanged)
|
||||||
{
|
{
|
||||||
var gameUpdates = it.Items.Where(update => update.TitleUpdate.TitleIdBase == application.IdBase).ToList();
|
var gameUpdates = it.Items.Where(update => update.TitleUpdate.TitleIdBase == application.IdBase).ToList();
|
||||||
TitleUpdatesHelper.SaveTitleUpdatesJson(_virtualFileSystem, application.IdBase, gameUpdates);
|
TitleUpdatesHelper.SaveTitleUpdatesJson(application.IdBase, gameUpdates);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1525,14 +1516,14 @@ namespace Ryujinx.UI.App.Common
|
||||||
private void SaveDownloadableContentsForGame(ulong titleIdBase)
|
private void SaveDownloadableContentsForGame(ulong titleIdBase)
|
||||||
{
|
{
|
||||||
var dlcs = DownloadableContents.Items.Where(dlc => dlc.Dlc.TitleIdBase == titleIdBase).ToList();
|
var dlcs = DownloadableContents.Items.Where(dlc => dlc.Dlc.TitleIdBase == titleIdBase).ToList();
|
||||||
DownloadableContentsHelper.SaveDownloadableContentsJson(_virtualFileSystem, titleIdBase, dlcs);
|
DownloadableContentsHelper.SaveDownloadableContentsJson(titleIdBase, dlcs);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save the _currently tracked_ update state for the game
|
// Save the _currently tracked_ update state for the game
|
||||||
private void SaveTitleUpdatesForGame(ulong titleIdBase)
|
private void SaveTitleUpdatesForGame(ulong titleIdBase)
|
||||||
{
|
{
|
||||||
var updates = TitleUpdates.Items.Where(update => update.TitleUpdate.TitleIdBase == titleIdBase).ToList();
|
var updates = TitleUpdates.Items.Where(update => update.TitleUpdate.TitleIdBase == titleIdBase).ToList();
|
||||||
TitleUpdatesHelper.SaveTitleUpdatesJson(_virtualFileSystem, titleIdBase, updates);
|
TitleUpdatesHelper.SaveTitleUpdatesJson(titleIdBase, updates);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ApplicationData isnt live-updating (e.g. when an update gets applied) and so this is meant to trigger a refresh
|
// ApplicationData isnt live-updating (e.g. when an update gets applied) and so this is meant to trigger a refresh
|
||||||
|
|
|
@ -1,16 +1,12 @@
|
||||||
using ARMeilleure;
|
|
||||||
using Ryujinx.Common.Configuration;
|
using Ryujinx.Common.Configuration;
|
||||||
using Ryujinx.Common.Configuration.Hid;
|
using Ryujinx.Common.Configuration.Hid;
|
||||||
using Ryujinx.Common.Configuration.Hid.Controller;
|
|
||||||
using Ryujinx.Common.Configuration.Hid.Keyboard;
|
using Ryujinx.Common.Configuration.Hid.Keyboard;
|
||||||
using Ryujinx.Common.Configuration.Multiplayer;
|
using Ryujinx.Common.Configuration.Multiplayer;
|
||||||
using Ryujinx.Common.Logging;
|
|
||||||
using Ryujinx.Graphics.Vulkan;
|
using Ryujinx.Graphics.Vulkan;
|
||||||
using Ryujinx.HLE;
|
using Ryujinx.HLE;
|
||||||
using Ryujinx.UI.Common.Configuration.System;
|
using Ryujinx.UI.Common.Configuration.System;
|
||||||
using Ryujinx.UI.Common.Configuration.UI;
|
using Ryujinx.UI.Common.Configuration.UI;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace Ryujinx.UI.Common.Configuration
|
namespace Ryujinx.UI.Common.Configuration
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,6 +7,24 @@ namespace Ryujinx.UI.Common.Helper
|
||||||
{
|
{
|
||||||
public static partial class ConsoleHelper
|
public static partial class ConsoleHelper
|
||||||
{
|
{
|
||||||
|
[SupportedOSPlatform("windows")]
|
||||||
|
[LibraryImport("kernel32")]
|
||||||
|
private static partial nint GetConsoleWindow();
|
||||||
|
|
||||||
|
[SupportedOSPlatform("windows")]
|
||||||
|
[LibraryImport("user32")]
|
||||||
|
[return: MarshalAs(UnmanagedType.Bool)]
|
||||||
|
private static partial bool ShowWindow(nint hWnd, int nCmdShow);
|
||||||
|
|
||||||
|
[SupportedOSPlatform("windows")]
|
||||||
|
[LibraryImport("user32")]
|
||||||
|
private static partial nint GetForegroundWindow();
|
||||||
|
|
||||||
|
[SupportedOSPlatform("windows")]
|
||||||
|
[LibraryImport("user32")]
|
||||||
|
[return: MarshalAs(UnmanagedType.Bool)]
|
||||||
|
private static partial bool SetForegroundWindow(nint hWnd);
|
||||||
|
|
||||||
public static bool SetConsoleWindowStateSupported => OperatingSystem.IsWindows();
|
public static bool SetConsoleWindowStateSupported => OperatingSystem.IsWindows();
|
||||||
|
|
||||||
public static void SetConsoleWindowState(bool show)
|
public static void SetConsoleWindowState(bool show)
|
||||||
|
@ -35,16 +53,11 @@ namespace Ryujinx.UI.Common.Helper
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetForegroundWindow(hWnd);
|
||||||
|
|
||||||
|
hWnd = GetForegroundWindow();
|
||||||
|
|
||||||
ShowWindow(hWnd, show ? SW_SHOW : SW_HIDE);
|
ShowWindow(hWnd, show ? SW_SHOW : SW_HIDE);
|
||||||
}
|
}
|
||||||
|
|
||||||
[SupportedOSPlatform("windows")]
|
|
||||||
[LibraryImport("kernel32")]
|
|
||||||
private static partial nint GetConsoleWindow();
|
|
||||||
|
|
||||||
[SupportedOSPlatform("windows")]
|
|
||||||
[LibraryImport("user32")]
|
|
||||||
[return: MarshalAs(UnmanagedType.Bool)]
|
|
||||||
private static partial bool ShowWindow(nint hWnd, int nCmdShow);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ namespace Ryujinx.UI.Common.Helper
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SaveDownloadableContentsJson(VirtualFileSystem vfs, ulong applicationIdBase, List<(DownloadableContentModel, bool IsEnabled)> dlcs)
|
public static void SaveDownloadableContentsJson(ulong applicationIdBase, List<(DownloadableContentModel, bool IsEnabled)> dlcs)
|
||||||
{
|
{
|
||||||
DownloadableContentContainer container = default;
|
DownloadableContentContainer container = default;
|
||||||
List<DownloadableContentContainer> downloadableContentContainerList = new();
|
List<DownloadableContentContainer> downloadableContentContainerList = new();
|
||||||
|
|
|
@ -28,7 +28,7 @@ namespace Ryujinx.UI.Common.Helper
|
||||||
{
|
{
|
||||||
private static readonly TitleUpdateMetadataJsonSerializerContext _serializerContext = new(JsonHelper.GetDefaultSerializerOptions());
|
private static readonly TitleUpdateMetadataJsonSerializerContext _serializerContext = new(JsonHelper.GetDefaultSerializerOptions());
|
||||||
|
|
||||||
public static List<(TitleUpdateModel, bool IsSelected)> LoadTitleUpdatesJson(VirtualFileSystem vfs, ulong applicationIdBase)
|
public static List<(TitleUpdateModel Update, bool IsSelected)> LoadTitleUpdatesJson(VirtualFileSystem vfs, ulong applicationIdBase)
|
||||||
{
|
{
|
||||||
var titleUpdatesJsonPath = PathToGameUpdatesJson(applicationIdBase);
|
var titleUpdatesJsonPath = PathToGameUpdatesJson(applicationIdBase);
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ namespace Ryujinx.UI.Common.Helper
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SaveTitleUpdatesJson(VirtualFileSystem vfs, ulong applicationIdBase, List<(TitleUpdateModel, bool IsSelected)> updates)
|
public static void SaveTitleUpdatesJson(ulong applicationIdBase, List<(TitleUpdateModel, bool IsSelected)> updates)
|
||||||
{
|
{
|
||||||
var titleUpdateWindowData = new TitleUpdateMetadata
|
var titleUpdateWindowData = new TitleUpdateMetadata
|
||||||
{
|
{
|
||||||
|
@ -77,7 +77,7 @@ namespace Ryujinx.UI.Common.Helper
|
||||||
JsonHelper.SerializeToFile(titleUpdatesJsonPath, titleUpdateWindowData, _serializerContext.TitleUpdateMetadata);
|
JsonHelper.SerializeToFile(titleUpdatesJsonPath, titleUpdateWindowData, _serializerContext.TitleUpdateMetadata);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<(TitleUpdateModel, bool IsSelected)> LoadTitleUpdates(VirtualFileSystem vfs, TitleUpdateMetadata titleUpdateMetadata, ulong applicationIdBase)
|
private static List<(TitleUpdateModel Update, bool IsSelected)> LoadTitleUpdates(VirtualFileSystem vfs, TitleUpdateMetadata titleUpdateMetadata, ulong applicationIdBase)
|
||||||
{
|
{
|
||||||
var result = new List<(TitleUpdateModel, bool IsSelected)>();
|
var result = new List<(TitleUpdateModel, bool IsSelected)>();
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</Application.Resources>
|
</Application.Resources>
|
||||||
<Application.Styles>
|
<Application.Styles>
|
||||||
<sty:FluentAvaloniaTheme PreferSystemTheme="False" />
|
<sty:FluentAvaloniaTheme PreferUserAccentColor="True" PreferSystemTheme="False" />
|
||||||
<StyleInclude Source="/Assets/Styles/Styles.xaml" />
|
<StyleInclude Source="/Assets/Styles/Styles.xaml" />
|
||||||
</Application.Styles>
|
</Application.Styles>
|
||||||
</Application>
|
</Application>
|
||||||
|
|
|
@ -3,6 +3,8 @@ using Avalonia.Controls;
|
||||||
using Avalonia.Controls.ApplicationLifetimes;
|
using Avalonia.Controls.ApplicationLifetimes;
|
||||||
using Avalonia.Input;
|
using Avalonia.Input;
|
||||||
using Avalonia.Threading;
|
using Avalonia.Threading;
|
||||||
|
using LibHac.Common;
|
||||||
|
using LibHac.Ns;
|
||||||
using LibHac.Tools.FsSystem;
|
using LibHac.Tools.FsSystem;
|
||||||
using Ryujinx.Audio.Backends.Dummy;
|
using Ryujinx.Audio.Backends.Dummy;
|
||||||
using Ryujinx.Audio.Backends.OpenAL;
|
using Ryujinx.Audio.Backends.OpenAL;
|
||||||
|
@ -670,7 +672,7 @@ namespace Ryujinx.Ava
|
||||||
_cursorState = CursorStates.ForceChangeCursor;
|
_cursorState = CursorStates.ForceChangeCursor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<bool> LoadGuestApplication()
|
public async Task<bool> LoadGuestApplication(BlitStruct<ApplicationControlProperty>? customNacpData = null)
|
||||||
{
|
{
|
||||||
InitializeSwitchInstance();
|
InitializeSwitchInstance();
|
||||||
MainWindow.UpdateGraphicsConfig();
|
MainWindow.UpdateGraphicsConfig();
|
||||||
|
@ -740,7 +742,7 @@ namespace Ryujinx.Ava
|
||||||
{
|
{
|
||||||
Logger.Info?.Print(LogClass.Application, "Loading as Firmware Title (NCA).");
|
Logger.Info?.Print(LogClass.Application, "Loading as Firmware Title (NCA).");
|
||||||
|
|
||||||
if (!Device.LoadNca(ApplicationPath))
|
if (!Device.LoadNca(ApplicationPath, customNacpData))
|
||||||
{
|
{
|
||||||
Device.Dispose();
|
Device.Dispose();
|
||||||
|
|
||||||
|
|
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "انقر لفتح موقع ريوجينكس في متصفحك الافتراضي.",
|
"AboutUrlTooltipMessage": "انقر لفتح موقع ريوجينكس في متصفحك الافتراضي.",
|
||||||
"AboutDisclaimerMessage": "ريوجينكس لا ينتمي إلى نينتندو™،\nأو أي من شركائها بأي شكل من الأشكال.",
|
"AboutDisclaimerMessage": "ريوجينكس لا ينتمي إلى نينتندو™،\nأو أي من شركائها بأي شكل من الأشكال.",
|
||||||
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) يتم \nاستخدامه في محاكاة أمبيو لدينا.",
|
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) يتم \nاستخدامه في محاكاة أمبيو لدينا.",
|
||||||
"AboutPatreonUrlTooltipMessage": "انقر لفتح صفحة ريوجينكس في باتريون في متصفحك الافتراضي.",
|
|
||||||
"AboutGithubUrlTooltipMessage": "انقر لفتح صفحة ريوجينكس في غيت هاب في متصفحك الافتراضي.",
|
"AboutGithubUrlTooltipMessage": "انقر لفتح صفحة ريوجينكس في غيت هاب في متصفحك الافتراضي.",
|
||||||
"AboutDiscordUrlTooltipMessage": "انقر لفتح دعوة إلى خادم ريوجينكس في ديكسورد في متصفحك الافتراضي.",
|
"AboutDiscordUrlTooltipMessage": "انقر لفتح دعوة إلى خادم ريوجينكس في ديكسورد في متصفحك الافتراضي.",
|
||||||
"AboutTwitterUrlTooltipMessage": "انقر لفتح صفحة ريوجينكس في تويتر في متصفحك الافتراضي.",
|
|
||||||
"AboutRyujinxAboutTitle": "حول:",
|
"AboutRyujinxAboutTitle": "حول:",
|
||||||
"AboutRyujinxAboutContent": "ريوجينكس هو محاكي لجهاز نينتندو سويتش™.\nمن فضلك ادعمنا على باتريون.\nاحصل على آخر الأخبار على تويتر أو ديسكورد.\nيمكن للمطورين المهتمين بالمساهمة معرفة المزيد على غيت هاب أو ديسكورد.",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "تتم صيانته بواسطة:",
|
"AboutRyujinxMaintainersTitle": "تتم صيانته بواسطة:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "انقر لفتح صفحة المساهمين في متصفحك الافتراضي.",
|
"AboutRyujinxMaintainersContentTooltipMessage": "انقر لفتح صفحة المساهمين في متصفحك الافتراضي.",
|
||||||
"AboutRyujinxSupprtersTitle": "مدعوم على باتريون بواسطة:",
|
|
||||||
"AmiiboSeriesLabel": "مجموعة أميبو",
|
"AmiiboSeriesLabel": "مجموعة أميبو",
|
||||||
"AmiiboCharacterLabel": "شخصية",
|
"AmiiboCharacterLabel": "شخصية",
|
||||||
"AmiiboScanButtonLabel": "فحصه",
|
"AmiiboScanButtonLabel": "فحصه",
|
||||||
|
@ -788,7 +786,7 @@
|
||||||
"CheatWindowHeading": "الغش متوفر لـ {0} [{1}]",
|
"CheatWindowHeading": "الغش متوفر لـ {0} [{1}]",
|
||||||
"BuildId": "معرف البناء:",
|
"BuildId": "معرف البناء:",
|
||||||
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
||||||
"DlcWindowHeading": "المحتويات القابلة للتنزيل {0}",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
||||||
|
|
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "Klicke hier, um die Ryujinx Website im Standardbrowser zu öffnen.",
|
"AboutUrlTooltipMessage": "Klicke hier, um die Ryujinx Website im Standardbrowser zu öffnen.",
|
||||||
"AboutDisclaimerMessage": "Ryujinx ist in keinster Weise weder mit Nintendo™, \nnoch mit deren Partnern verbunden.",
|
"AboutDisclaimerMessage": "Ryujinx ist in keinster Weise weder mit Nintendo™, \nnoch mit deren Partnern verbunden.",
|
||||||
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) wird in unserer Amiibo \nEmulation benutzt.",
|
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) wird in unserer Amiibo \nEmulation benutzt.",
|
||||||
"AboutPatreonUrlTooltipMessage": "Klicke hier, um die Ryujinx Patreon Seite im Standardbrowser zu öffnen.",
|
|
||||||
"AboutGithubUrlTooltipMessage": "Klicke hier, um die Ryujinx GitHub Seite im Standardbrowser zu öffnen.",
|
"AboutGithubUrlTooltipMessage": "Klicke hier, um die Ryujinx GitHub Seite im Standardbrowser zu öffnen.",
|
||||||
"AboutDiscordUrlTooltipMessage": "Klicke hier, um eine Einladung zum Ryujinx Discord Server im Standardbrowser zu öffnen.",
|
"AboutDiscordUrlTooltipMessage": "Klicke hier, um eine Einladung zum Ryujinx Discord Server im Standardbrowser zu öffnen.",
|
||||||
"AboutTwitterUrlTooltipMessage": "Klicke hier, um die Ryujinx Twitter Seite im Standardbrowser zu öffnen.",
|
|
||||||
"AboutRyujinxAboutTitle": "Über:",
|
"AboutRyujinxAboutTitle": "Über:",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx ist ein Nintendo Switch™ Emulator.\nBitte unterstütze uns auf Patreon.\nAuf Twitter oder Discord erfährst du alle Neuigkeiten.\nEntwickler, die an einer Mitarbeit interessiert sind, können auf GitHub oder Discord mehr erfahren.",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "Entwickelt von:",
|
"AboutRyujinxMaintainersTitle": "Entwickelt von:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "Klicke hier, um die Liste der Mitwirkenden im Standardbrowser zu öffnen.",
|
"AboutRyujinxMaintainersContentTooltipMessage": "Klicke hier, um die Liste der Mitwirkenden im Standardbrowser zu öffnen.",
|
||||||
"AboutRyujinxSupprtersTitle": "Unterstützt auf Patreon von:",
|
|
||||||
"AmiiboSeriesLabel": "Amiibo-Serie",
|
"AmiiboSeriesLabel": "Amiibo-Serie",
|
||||||
"AmiiboCharacterLabel": "Charakter",
|
"AmiiboCharacterLabel": "Charakter",
|
||||||
"AmiiboScanButtonLabel": "Einscannen",
|
"AmiiboScanButtonLabel": "Einscannen",
|
||||||
|
@ -788,7 +786,7 @@
|
||||||
"CheatWindowHeading": "Cheats verfügbar für {0} [{1}]",
|
"CheatWindowHeading": "Cheats verfügbar für {0} [{1}]",
|
||||||
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
||||||
"BuildId": "BuildId:",
|
"BuildId": "BuildId:",
|
||||||
"DlcWindowHeading": "DLC verfügbar für {0} [{1}]",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
||||||
|
|
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "Κάντε κλικ για να ανοίξετε τον ιστότοπο Ryujinx στο προεπιλεγμένο πρόγραμμα περιήγησης.",
|
"AboutUrlTooltipMessage": "Κάντε κλικ για να ανοίξετε τον ιστότοπο Ryujinx στο προεπιλεγμένο πρόγραμμα περιήγησης.",
|
||||||
"AboutDisclaimerMessage": "Το Ryujinx δεν είναι συνδεδεμένο με τη Nintendo™,\nούτε με κανέναν από τους συνεργάτες της, με οποιονδήποτε τρόπο.",
|
"AboutDisclaimerMessage": "Το Ryujinx δεν είναι συνδεδεμένο με τη Nintendo™,\nούτε με κανέναν από τους συνεργάτες της, με οποιονδήποτε τρόπο.",
|
||||||
"AboutAmiiboDisclaimerMessage": "Το AmiiboAPI (www.amiiboapi.com) χρησιμοποιείται\nστην προσομοίωση Amiibo.",
|
"AboutAmiiboDisclaimerMessage": "Το AmiiboAPI (www.amiiboapi.com) χρησιμοποιείται\nστην προσομοίωση Amiibo.",
|
||||||
"AboutPatreonUrlTooltipMessage": "Κάντε κλικ για να ανοίξετε τη σελίδα Ryujinx Patreon στο προεπιλεγμένο πρόγραμμα περιήγησης.",
|
|
||||||
"AboutGithubUrlTooltipMessage": "Κάντε κλικ για να ανοίξετε τη σελίδα Ryujinx GitHub στο προεπιλεγμένο πρόγραμμα περιήγησης.",
|
"AboutGithubUrlTooltipMessage": "Κάντε κλικ για να ανοίξετε τη σελίδα Ryujinx GitHub στο προεπιλεγμένο πρόγραμμα περιήγησης.",
|
||||||
"AboutDiscordUrlTooltipMessage": "Κάντε κλικ για να ανοίξετε μία πρόσκληση στον διακομιστή Ryujinx Discord στο προεπιλεγμένο πρόγραμμα περιήγησης.",
|
"AboutDiscordUrlTooltipMessage": "Κάντε κλικ για να ανοίξετε μία πρόσκληση στον διακομιστή Ryujinx Discord στο προεπιλεγμένο πρόγραμμα περιήγησης.",
|
||||||
"AboutTwitterUrlTooltipMessage": "Κάντε κλικ για να ανοίξετε τη σελίδα Ryujinx Twitter στο προεπιλεγμένο πρόγραμμα περιήγησης.",
|
|
||||||
"AboutRyujinxAboutTitle": "Σχετικά με:",
|
"AboutRyujinxAboutTitle": "Σχετικά με:",
|
||||||
"AboutRyujinxAboutContent": "Το Ryujinx είναι ένας εξομοιωτής για το Nintendo Switch™.\nΥποστηρίξτε μας στο Patreon.\nΛάβετε όλα τα τελευταία νέα στο Twitter ή στο Discord.\nΟι προγραμματιστές που ενδιαφέρονται να συνεισφέρουν μπορούν να μάθουν περισσότερα στο GitHub ή στο Discord μας.",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "Συντηρείται από:",
|
"AboutRyujinxMaintainersTitle": "Συντηρείται από:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "Κάντε κλικ για να ανοίξετε τη σελίδα Συνεισφέροντες στο προεπιλεγμένο πρόγραμμα περιήγησης.",
|
"AboutRyujinxMaintainersContentTooltipMessage": "Κάντε κλικ για να ανοίξετε τη σελίδα Συνεισφέροντες στο προεπιλεγμένο πρόγραμμα περιήγησης.",
|
||||||
"AboutRyujinxSupprtersTitle": "Υποστηρίζεται στο Patreon από:",
|
|
||||||
"AmiiboSeriesLabel": "Σειρά Amiibo",
|
"AmiiboSeriesLabel": "Σειρά Amiibo",
|
||||||
"AmiiboCharacterLabel": "Χαρακτήρας",
|
"AmiiboCharacterLabel": "Χαρακτήρας",
|
||||||
"AmiiboScanButtonLabel": "Σαρώστε το",
|
"AmiiboScanButtonLabel": "Σαρώστε το",
|
||||||
|
@ -788,7 +786,7 @@
|
||||||
"CheatWindowHeading": "Διαθέσιμα Cheats για {0} [{1}]",
|
"CheatWindowHeading": "Διαθέσιμα Cheats για {0} [{1}]",
|
||||||
"BuildId": "BuildId:",
|
"BuildId": "BuildId:",
|
||||||
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
||||||
"DlcWindowHeading": "{0} Downloadable Content(s) available for {1} ({2})",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
||||||
|
|
|
@ -566,15 +566,13 @@
|
||||||
"AboutUrlTooltipMessage": "Click to open the Ryujinx website in your default browser.",
|
"AboutUrlTooltipMessage": "Click to open the Ryujinx website in your default browser.",
|
||||||
"AboutDisclaimerMessage": "Ryujinx is not affiliated with Nintendo™,\nor any of its partners, in any way.",
|
"AboutDisclaimerMessage": "Ryujinx is not affiliated with Nintendo™,\nor any of its partners, in any way.",
|
||||||
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) is used\nin our Amiibo emulation.",
|
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) is used\nin our Amiibo emulation.",
|
||||||
"AboutPatreonUrlTooltipMessage": "Click to open the Ryujinx Patreon page in your default browser.",
|
|
||||||
"AboutGithubUrlTooltipMessage": "Click to open the Ryujinx GitHub page in your default browser.",
|
"AboutGithubUrlTooltipMessage": "Click to open the Ryujinx GitHub page in your default browser.",
|
||||||
"AboutDiscordUrlTooltipMessage": "Click to open an invite to the Ryujinx Discord server in your default browser.",
|
"AboutDiscordUrlTooltipMessage": "Click to open an invite to the Ryujinx Discord server in your default browser.",
|
||||||
"AboutTwitterUrlTooltipMessage": "Click to open the Ryujinx Twitter page in your default browser.",
|
|
||||||
"AboutRyujinxAboutTitle": "About:",
|
"AboutRyujinxAboutTitle": "About:",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nPlease support us on Patreon.\nGet all the latest news on our Twitter or Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "Maintained By:",
|
"AboutRyujinxMaintainersTitle": "Maintained By:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "Click to open the Contributors page in your default browser.",
|
"AboutRyujinxMaintainersContentTooltipMessage": "Click to open the Contributors page in your default browser.",
|
||||||
"AboutRyujinxSupprtersTitle": "Supported on Patreon By:",
|
|
||||||
"AmiiboSeriesLabel": "Amiibo Series",
|
"AmiiboSeriesLabel": "Amiibo Series",
|
||||||
"AmiiboCharacterLabel": "Character",
|
"AmiiboCharacterLabel": "Character",
|
||||||
"AmiiboScanButtonLabel": "Scan It",
|
"AmiiboScanButtonLabel": "Scan It",
|
||||||
|
@ -804,7 +802,7 @@
|
||||||
"CheatWindowHeading": "Cheats Available for {0} [{1}]",
|
"CheatWindowHeading": "Cheats Available for {0} [{1}]",
|
||||||
"BuildId": "BuildId:",
|
"BuildId": "BuildId:",
|
||||||
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
||||||
"DlcWindowHeading": "{0} Downloadable Content(s) available for {1} ({2})",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"Language": "Español (ES)",
|
"Language": "Español (ES)",
|
||||||
"MenuBarFileOpenApplet": "Abrir applet",
|
"MenuBarFileOpenApplet": "Abrir applet",
|
||||||
"MenuBarFileOpenAppletOpenMiiApplet": "Mii Edit Applet",
|
"MenuBarFileOpenAppletOpenMiiApplet": "Applet Editor Mii",
|
||||||
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "Abre el editor de Mii en modo autónomo",
|
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "Abre el editor de Mii en modo autónomo",
|
||||||
"SettingsTabInputDirectMouseAccess": "Acceso directo al ratón",
|
"SettingsTabInputDirectMouseAccess": "Acceso directo al ratón",
|
||||||
"SettingsTabSystemMemoryManagerMode": "Modo del administrador de memoria:",
|
"SettingsTabSystemMemoryManagerMode": "Modo del administrador de memoria:",
|
||||||
|
@ -32,12 +32,12 @@
|
||||||
"MenuBarFileToolsInstallFirmwareFromFile": "Instalar firmware desde un archivo XCI o ZIP",
|
"MenuBarFileToolsInstallFirmwareFromFile": "Instalar firmware desde un archivo XCI o ZIP",
|
||||||
"MenuBarFileToolsInstallFirmwareFromDirectory": "Instalar firmware desde una carpeta",
|
"MenuBarFileToolsInstallFirmwareFromDirectory": "Instalar firmware desde una carpeta",
|
||||||
"MenuBarToolsInstallKeys": "Install Keys",
|
"MenuBarToolsInstallKeys": "Install Keys",
|
||||||
"MenuBarFileToolsInstallKeysFromFile": "Install keys from KEYS or ZIP",
|
"MenuBarFileToolsInstallKeysFromFile": "Instalar keys de KEYS o ZIP",
|
||||||
"MenuBarFileToolsInstallKeysFromFolder": "Install keys from a directory",
|
"MenuBarFileToolsInstallKeysFromFolder": "Instalar keys de un directorio",
|
||||||
"MenuBarToolsManageFileTypes": "Administrar tipos de archivo",
|
"MenuBarToolsManageFileTypes": "Administrar tipos de archivo",
|
||||||
"MenuBarToolsInstallFileTypes": "Instalar tipos de archivo",
|
"MenuBarToolsInstallFileTypes": "Instalar tipos de archivo",
|
||||||
"MenuBarToolsUninstallFileTypes": "Desinstalar tipos de archivo",
|
"MenuBarToolsUninstallFileTypes": "Desinstalar tipos de archivo",
|
||||||
"MenuBarToolsXCITrimmer": "Trim XCI Files",
|
"MenuBarToolsXCITrimmer": "Recortar archivos XCI",
|
||||||
"MenuBarView": "_View",
|
"MenuBarView": "_View",
|
||||||
"MenuBarViewWindow": "Tamaño Ventana",
|
"MenuBarViewWindow": "Tamaño Ventana",
|
||||||
"MenuBarViewWindow720": "720p",
|
"MenuBarViewWindow720": "720p",
|
||||||
|
@ -89,11 +89,11 @@
|
||||||
"GameListContextMenuOpenModsDirectoryToolTip": "Abre el directorio que contiene los Mods de la Aplicación.",
|
"GameListContextMenuOpenModsDirectoryToolTip": "Abre el directorio que contiene los Mods de la Aplicación.",
|
||||||
"GameListContextMenuOpenSdModsDirectory": "Abrir Directorio de Mods de Atmosphere\n\n\n\n\n\n",
|
"GameListContextMenuOpenSdModsDirectory": "Abrir Directorio de Mods de Atmosphere\n\n\n\n\n\n",
|
||||||
"GameListContextMenuOpenSdModsDirectoryToolTip": "Abre el directorio alternativo de la tarjeta SD de Atmosphere que contiene los Mods de la Aplicación. Útil para los mods que están empaquetados para el hardware real.",
|
"GameListContextMenuOpenSdModsDirectoryToolTip": "Abre el directorio alternativo de la tarjeta SD de Atmosphere que contiene los Mods de la Aplicación. Útil para los mods que están empaquetados para el hardware real.",
|
||||||
"GameListContextMenuTrimXCI": "Check and Trim XCI File",
|
"GameListContextMenuTrimXCI": "Verificar y recortar archivo XCI",
|
||||||
"GameListContextMenuTrimXCIToolTip": "Check and Trim XCI File to Save Disk Space",
|
"GameListContextMenuTrimXCIToolTip": "Verificar y recortar archivo XCI para ahorrar espacio en disco",
|
||||||
"StatusBarGamesLoaded": "{0}/{1} juegos cargados",
|
"StatusBarGamesLoaded": "{0}/{1} juegos cargados",
|
||||||
"StatusBarSystemVersion": "Versión del sistema: {0}",
|
"StatusBarSystemVersion": "Versión del sistema: {0}",
|
||||||
"StatusBarXCIFileTrimming": "Trimming XCI File '{0}'",
|
"StatusBarXCIFileTrimming": "Recortando el siguiente archivo XCI: '{0}'",
|
||||||
"LinuxVmMaxMapCountDialogTitle": "Límite inferior para mapeos de memoria detectado",
|
"LinuxVmMaxMapCountDialogTitle": "Límite inferior para mapeos de memoria detectado",
|
||||||
"LinuxVmMaxMapCountDialogTextPrimary": "¿Quieres aumentar el valor de vm.max_map_count a {0}?",
|
"LinuxVmMaxMapCountDialogTextPrimary": "¿Quieres aumentar el valor de vm.max_map_count a {0}?",
|
||||||
"LinuxVmMaxMapCountDialogTextSecondary": "Algunos juegos podrían intentar crear más mapeos de memoria de los permitidos. Ryujinx se bloqueará tan pronto como se supere este límite.",
|
"LinuxVmMaxMapCountDialogTextSecondary": "Algunos juegos podrían intentar crear más mapeos de memoria de los permitidos. Ryujinx se bloqueará tan pronto como se supere este límite.",
|
||||||
|
@ -480,7 +480,7 @@
|
||||||
"DialogUninstallFileTypesSuccessMessage": "¡Tipos de archivos desinstalados con éxito!",
|
"DialogUninstallFileTypesSuccessMessage": "¡Tipos de archivos desinstalados con éxito!",
|
||||||
"DialogUninstallFileTypesErrorMessage": "No se pudo desinstalar los tipos de archivo.",
|
"DialogUninstallFileTypesErrorMessage": "No se pudo desinstalar los tipos de archivo.",
|
||||||
"DialogOpenSettingsWindowLabel": "Abrir ventana de opciones",
|
"DialogOpenSettingsWindowLabel": "Abrir ventana de opciones",
|
||||||
"DialogOpenXCITrimmerWindowLabel": "XCI Trimmer Window",
|
"DialogOpenXCITrimmerWindowLabel": "Ventana recortador XCI",
|
||||||
"DialogControllerAppletTitle": "Applet de mandos",
|
"DialogControllerAppletTitle": "Applet de mandos",
|
||||||
"DialogMessageDialogErrorExceptionMessage": "Error al mostrar cuadro de diálogo: {0}",
|
"DialogMessageDialogErrorExceptionMessage": "Error al mostrar cuadro de diálogo: {0}",
|
||||||
"DialogSoftwareKeyboardErrorExceptionMessage": "Error al mostrar teclado de software: {0}",
|
"DialogSoftwareKeyboardErrorExceptionMessage": "Error al mostrar teclado de software: {0}",
|
||||||
|
@ -509,13 +509,13 @@
|
||||||
"DialogFirmwareInstallerFirmwareInstallConfirmMessage": "\n\n¿Continuar?",
|
"DialogFirmwareInstallerFirmwareInstallConfirmMessage": "\n\n¿Continuar?",
|
||||||
"DialogFirmwareInstallerFirmwareInstallWaitMessage": "Instalando firmware...",
|
"DialogFirmwareInstallerFirmwareInstallWaitMessage": "Instalando firmware...",
|
||||||
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Versión de sistema {0} instalada con éxito.",
|
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Versión de sistema {0} instalada con éxito.",
|
||||||
"DialogKeysInstallerKeysNotFoundErrorMessage": "An invalid Keys file was found in {0}",
|
"DialogKeysInstallerKeysNotFoundErrorMessage": "Se halló un archivo Keys inválido en {0}",
|
||||||
"DialogKeysInstallerKeysInstallTitle": "Install Keys",
|
"DialogKeysInstallerKeysInstallTitle": "Instalar Keys",
|
||||||
"DialogKeysInstallerKeysInstallMessage": "New Keys file will be installed.",
|
"DialogKeysInstallerKeysInstallMessage": "Un nuevo archivo Keys será instalado.",
|
||||||
"DialogKeysInstallerKeysInstallSubMessage": "\n\nThis may replace some of the current installed Keys.",
|
"DialogKeysInstallerKeysInstallSubMessage": "\n\nEsto puede reemplazar algunas de las Keys actualmente instaladas.",
|
||||||
"DialogKeysInstallerKeysInstallConfirmMessage": "\n\nDo you want to continue?",
|
"DialogKeysInstallerKeysInstallConfirmMessage": "\n\nDeseas continuar?",
|
||||||
"DialogKeysInstallerKeysInstallWaitMessage": "Installing Keys...",
|
"DialogKeysInstallerKeysInstallWaitMessage": "Instalando Keys...",
|
||||||
"DialogKeysInstallerKeysInstallSuccessMessage": "New Keys file successfully installed.",
|
"DialogKeysInstallerKeysInstallSuccessMessage": "Nuevo archivo Keys instalado con éxito.",
|
||||||
"DialogUserProfileDeletionWarningMessage": "Si eliminas el perfil seleccionado no quedará ningún otro perfil",
|
"DialogUserProfileDeletionWarningMessage": "Si eliminas el perfil seleccionado no quedará ningún otro perfil",
|
||||||
"DialogUserProfileDeletionConfirmMessage": "¿Quieres eliminar el perfil seleccionado?",
|
"DialogUserProfileDeletionConfirmMessage": "¿Quieres eliminar el perfil seleccionado?",
|
||||||
"DialogUserProfileUnsavedChangesTitle": "Advertencia - Cambios sin guardar",
|
"DialogUserProfileUnsavedChangesTitle": "Advertencia - Cambios sin guardar",
|
||||||
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "Haz clic para abrir el sitio web de Ryujinx en tu navegador predeterminado.",
|
"AboutUrlTooltipMessage": "Haz clic para abrir el sitio web de Ryujinx en tu navegador predeterminado.",
|
||||||
"AboutDisclaimerMessage": "Ryujinx no tiene afiliación alguna con Nintendo™,\nni con ninguno de sus socios.",
|
"AboutDisclaimerMessage": "Ryujinx no tiene afiliación alguna con Nintendo™,\nni con ninguno de sus socios.",
|
||||||
"AboutAmiiboDisclaimerMessage": "Utilizamos AmiiboAPI (www.amiiboapi.com)\nen nuestra emulación de Amiibo.",
|
"AboutAmiiboDisclaimerMessage": "Utilizamos AmiiboAPI (www.amiiboapi.com)\nen nuestra emulación de Amiibo.",
|
||||||
"AboutPatreonUrlTooltipMessage": "Haz clic para abrir el Patreon de Ryujinx en tu navegador predeterminado.",
|
|
||||||
"AboutGithubUrlTooltipMessage": "Haz clic para abrir el GitHub de Ryujinx en tu navegador predeterminado.",
|
"AboutGithubUrlTooltipMessage": "Haz clic para abrir el GitHub de Ryujinx en tu navegador predeterminado.",
|
||||||
"AboutDiscordUrlTooltipMessage": "Haz clic para recibir una invitación al Discord de Ryujinx en tu navegador predeterminado.",
|
"AboutDiscordUrlTooltipMessage": "Haz clic para recibir una invitación al Discord de Ryujinx en tu navegador predeterminado.",
|
||||||
"AboutTwitterUrlTooltipMessage": "Haz clic para abrir el Twitter de Ryujinx en tu navegador predeterminado.",
|
|
||||||
"AboutRyujinxAboutTitle": "Acerca de:",
|
"AboutRyujinxAboutTitle": "Acerca de:",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx es un emulador para Nintendo Switch™.\nPor favor, apóyanos en Patreon.\nEncuentra las noticias más recientes en nuestro Twitter o Discord.\nDesarrolladores interesados en contribuir pueden encontrar más información en GitHub o Discord.",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "Mantenido por:",
|
"AboutRyujinxMaintainersTitle": "Mantenido por:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "Haz clic para abrir la página de contribuidores en tu navegador predeterminado.",
|
"AboutRyujinxMaintainersContentTooltipMessage": "Haz clic para abrir la página de contribuidores en tu navegador predeterminado.",
|
||||||
"AboutRyujinxSupprtersTitle": "Apoyado en Patreon Por:",
|
|
||||||
"AmiiboSeriesLabel": "Serie de Amiibo",
|
"AmiiboSeriesLabel": "Serie de Amiibo",
|
||||||
"AmiiboCharacterLabel": "Personaje",
|
"AmiiboCharacterLabel": "Personaje",
|
||||||
"AmiiboScanButtonLabel": "Escanear",
|
"AmiiboScanButtonLabel": "Escanear",
|
||||||
|
@ -688,23 +686,23 @@
|
||||||
"OpenSetupGuideMessage": "Abrir la guía de instalación",
|
"OpenSetupGuideMessage": "Abrir la guía de instalación",
|
||||||
"NoUpdate": "No actualizado",
|
"NoUpdate": "No actualizado",
|
||||||
"TitleUpdateVersionLabel": "Versión {0} - {1}",
|
"TitleUpdateVersionLabel": "Versión {0} - {1}",
|
||||||
"TitleBundledUpdateVersionLabel": "Bundled: Version {0}",
|
"TitleBundledUpdateVersionLabel": "Incorporado: Versión {0}",
|
||||||
"TitleBundledDlcLabel": "Bundled:",
|
"TitleBundledDlcLabel": "Incorporado:",
|
||||||
"TitleXCIStatusPartialLabel": "Partial",
|
"TitleXCIStatusPartialLabel": "Parcial",
|
||||||
"TitleXCIStatusTrimmableLabel": "Untrimmed",
|
"TitleXCIStatusTrimmableLabel": "Sin recortar",
|
||||||
"TitleXCIStatusUntrimmableLabel": "Trimmed",
|
"TitleXCIStatusUntrimmableLabel": "Recortado",
|
||||||
"TitleXCIStatusFailedLabel": "(Failed)",
|
"TitleXCIStatusFailedLabel": "(Fallido)",
|
||||||
"TitleXCICanSaveLabel": "Save {0:n0} Mb",
|
"TitleXCICanSaveLabel": "Ahorra {0:n0} Mb",
|
||||||
"TitleXCISavingLabel": "Saved {0:n0} Mb",
|
"TitleXCISavingLabel": "{0:n0} Mb ahorrado(s)",
|
||||||
"RyujinxInfo": "Ryujinx - Info",
|
"RyujinxInfo": "Ryujinx - Info",
|
||||||
"RyujinxConfirm": "Ryujinx - Confirmación",
|
"RyujinxConfirm": "Ryujinx - Confirmación",
|
||||||
"FileDialogAllTypes": "Todos los tipos",
|
"FileDialogAllTypes": "Todos los tipos",
|
||||||
"Never": "Nunca",
|
"Never": "Nunca",
|
||||||
"SwkbdMinCharacters": "Debe tener al menos {0} caracteres",
|
"SwkbdMinCharacters": "Debe tener al menos {0} caracteres",
|
||||||
"SwkbdMinRangeCharacters": "Debe tener {0}-{1} caracteres",
|
"SwkbdMinRangeCharacters": "Debe tener {0}-{1} caracteres",
|
||||||
"CabinetTitle": "Cabinet Dialog",
|
"CabinetTitle": "Diálogo Gabinete",
|
||||||
"CabinetDialog": "Enter your Amiibo's new name",
|
"CabinetDialog": "Ingresa el nuevo nombre de tu Amiibo",
|
||||||
"CabinetScanDialog": "Please scan your Amiibo now.",
|
"CabinetScanDialog": "Escanea tu Amiibo ahora.",
|
||||||
"SoftwareKeyboard": "Teclado de software",
|
"SoftwareKeyboard": "Teclado de software",
|
||||||
"SoftwareKeyboardModeNumeric": "Debe ser sólo 0-9 o '.'",
|
"SoftwareKeyboardModeNumeric": "Debe ser sólo 0-9 o '.'",
|
||||||
"SoftwareKeyboardModeAlphabet": "Solo deben ser caracteres no CJK",
|
"SoftwareKeyboardModeAlphabet": "Solo deben ser caracteres no CJK",
|
||||||
|
@ -750,44 +748,44 @@
|
||||||
"SelectDlcDialogTitle": "Selecciona archivo(s) de DLC",
|
"SelectDlcDialogTitle": "Selecciona archivo(s) de DLC",
|
||||||
"SelectUpdateDialogTitle": "Selecciona archivo(s) de actualización",
|
"SelectUpdateDialogTitle": "Selecciona archivo(s) de actualización",
|
||||||
"SelectModDialogTitle": "Seleccionar un directorio de Mods",
|
"SelectModDialogTitle": "Seleccionar un directorio de Mods",
|
||||||
"TrimXCIFileDialogTitle": "Check and Trim XCI File",
|
"TrimXCIFileDialogTitle": "Verificar y recortar archivo XCI",
|
||||||
"TrimXCIFileDialogPrimaryText": "This function will first check the empty space and then trim the XCI File to save disk space.",
|
"TrimXCIFileDialogPrimaryText": "Esta función verificará el espacio vacío y después recortará el archivo XCI para ahorrar espacio en disco",
|
||||||
"TrimXCIFileDialogSecondaryText": "Current File Size: {0:n} MB\nGame Data Size: {1:n} MB\nDisk Space Savings: {2:n} MB",
|
"TrimXCIFileDialogSecondaryText": "Tamaño de archivo actual: {0:n} MB\nTamaño de datos de juego: {1:n} MB\nAhorro de espacio en disco: {2:n} MB",
|
||||||
"TrimXCIFileNoTrimNecessary": "XCI File does not need to be trimmed. Check logs for further details",
|
"TrimXCIFileNoTrimNecessary": "El archivo XCI no necesita ser recortado. Verifica los logs para más detalles.",
|
||||||
"TrimXCIFileNoUntrimPossible": "XCI File cannot be untrimmed. Check logs for further details",
|
"TrimXCIFileNoUntrimPossible": "El recorte del archivo XCI no puede ser deshecho. Verifica los registros para más detalles.",
|
||||||
"TrimXCIFileReadOnlyFileCannotFix": "XCI File is Read Only and could not be made writable. Check logs for further details",
|
"TrimXCIFileReadOnlyFileCannotFix": "El archivo XCI es de solo Lectura y no se le puede escribir. Lee el registro para más información.",
|
||||||
"TrimXCIFileFileSizeChanged": "XCI File has changed in size since it was scanned. Please check the file is not being written to and try again.",
|
"TrimXCIFileFileSizeChanged": "El archivo XCI ha cambiado de tamaño desde que fue escaneado. Verifica que no se esté escribiendo al archivo y vuelve a intentarlo.",
|
||||||
"TrimXCIFileFreeSpaceCheckFailed": "XCI File has data in the free space area, it is not safe to trim",
|
"TrimXCIFileFreeSpaceCheckFailed": "El archivo XCI tiene datos en el área de espacio libre, no es seguro recortar.",
|
||||||
"TrimXCIFileInvalidXCIFile": "XCI File contains invalid data. Check logs for further details",
|
"TrimXCIFileInvalidXCIFile": "El archivo XCI contiene datos inválidos. Lee el registro para más información.",
|
||||||
"TrimXCIFileFileIOWriteError": "XCI File could not be opened for writing. Check logs for further details",
|
"TrimXCIFileFileIOWriteError": "El archivo XCI no se puede abrir para escribirlo. Lee el registro para más información.",
|
||||||
"TrimXCIFileFailedPrimaryText": "Trimming of the XCI file failed",
|
"TrimXCIFileFailedPrimaryText": "El recorte del archivo XCI falló",
|
||||||
"TrimXCIFileCancelled": "The operation was cancelled",
|
"TrimXCIFileCancelled": "La operación fue cancelada",
|
||||||
"TrimXCIFileFileUndertermined": "No operation was performed",
|
"TrimXCIFileFileUndertermined": "No se realizó ninguna operación",
|
||||||
"UserProfileWindowTitle": "Administrar perfiles de usuario",
|
"UserProfileWindowTitle": "Administrar perfiles de usuario",
|
||||||
"CheatWindowTitle": "Administrar cheats",
|
"CheatWindowTitle": "Administrar cheats",
|
||||||
"DlcWindowTitle": "Administrar contenido descargable",
|
"DlcWindowTitle": "Administrar contenido descargable",
|
||||||
"ModWindowTitle": "Administrar Mods para {0} ({1})",
|
"ModWindowTitle": "Administrar Mods para {0} ({1})",
|
||||||
"UpdateWindowTitle": "Administrar actualizaciones",
|
"UpdateWindowTitle": "Administrar actualizaciones",
|
||||||
"XCITrimmerWindowTitle": "XCI File Trimmer",
|
"XCITrimmerWindowTitle": "Recortador de archivos XCI",
|
||||||
"XCITrimmerTitleStatusCount": "{0} of {1} Title(s) Selected",
|
"XCITrimmerTitleStatusCount": "{0} de {1} Título(s) seleccionado(s)",
|
||||||
"XCITrimmerTitleStatusCountWithFilter": "{0} of {1} Title(s) Selected ({2} displayed)",
|
"XCITrimmerTitleStatusCountWithFilter": "{0} de {1} Título(s) seleccionado(s) ({2} mostrado(s))",
|
||||||
"XCITrimmerTitleStatusTrimming": "Trimming {0} Title(s)...",
|
"XCITrimmerTitleStatusTrimming": "Recortando {0} Título(s)...",
|
||||||
"XCITrimmerTitleStatusUntrimming": "Untrimming {0} Title(s)...",
|
"XCITrimmerTitleStatusUntrimming": "Deshaciendo recorte de {0} Título(s)...",
|
||||||
"XCITrimmerTitleStatusFailed": "Failed",
|
"XCITrimmerTitleStatusFailed": "Fallido",
|
||||||
"XCITrimmerPotentialSavings": "Potential Savings",
|
"XCITrimmerPotentialSavings": "Ahorro potencial",
|
||||||
"XCITrimmerActualSavings": "Actual Savings",
|
"XCITrimmerActualSavings": "Ahorro real",
|
||||||
"XCITrimmerSavingsMb": "{0:n0} Mb",
|
"XCITrimmerSavingsMb": "{0:n0} Mb",
|
||||||
"XCITrimmerSelectDisplayed": "Select Shown",
|
"XCITrimmerSelectDisplayed": "Seleccionar mostrado(s)",
|
||||||
"XCITrimmerDeselectDisplayed": "Deselect Shown",
|
"XCITrimmerDeselectDisplayed": "Deseleccionar mostrado(s)",
|
||||||
"XCITrimmerSortName": "Title",
|
"XCITrimmerSortName": "Título",
|
||||||
"XCITrimmerSortSaved": "Space Savings",
|
"XCITrimmerSortSaved": "Ahorro de espacio",
|
||||||
"XCITrimmerTrim": "Trim",
|
"XCITrimmerTrim": "Recortar",
|
||||||
"XCITrimmerUntrim": "Untrim",
|
"XCITrimmerUntrim": "Deshacer recorte",
|
||||||
"UpdateWindowUpdateAddedMessage": "{0} nueva(s) actualización(es) agregada(s)",
|
"UpdateWindowUpdateAddedMessage": "{0} nueva(s) actualización(es) agregada(s)",
|
||||||
"UpdateWindowBundledContentNotice": "Las actualizaciones agrupadas no pueden ser eliminadas, solamente deshabilitadas.",
|
"UpdateWindowBundledContentNotice": "Las actualizaciones agrupadas no pueden ser eliminadas, solamente deshabilitadas.",
|
||||||
"CheatWindowHeading": "Cheats disponibles para {0} [{1}]",
|
"CheatWindowHeading": "Cheats disponibles para {0} [{1}]",
|
||||||
"BuildId": "Id de compilación:",
|
"BuildId": "Id de compilación:",
|
||||||
"DlcWindowHeading": "Contenido descargable disponible para {0} [{1}]",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "Se agregaron {0} nuevo(s) contenido(s) descargable(s)",
|
"DlcWindowDlcAddedMessage": "Se agregaron {0} nuevo(s) contenido(s) descargable(s)",
|
||||||
"AutoloadDlcAddedMessage": "Se agregaron {0} nuevo(s) contenido(s) descargable(s)",
|
"AutoloadDlcAddedMessage": "Se agregaron {0} nuevo(s) contenido(s) descargable(s)",
|
||||||
"AutoloadDlcRemovedMessage": "Se eliminaron {0} contenido(s) descargable(s) faltantes",
|
"AutoloadDlcRemovedMessage": "Se eliminaron {0} contenido(s) descargable(s) faltantes",
|
||||||
|
@ -795,7 +793,7 @@
|
||||||
"AutoloadUpdateRemovedMessage": "Se eliminaron {0} actualización(es) faltantes",
|
"AutoloadUpdateRemovedMessage": "Se eliminaron {0} actualización(es) faltantes",
|
||||||
"ModWindowHeading": "{0} Mod(s)",
|
"ModWindowHeading": "{0} Mod(s)",
|
||||||
"UserProfilesEditProfile": "Editar selección",
|
"UserProfilesEditProfile": "Editar selección",
|
||||||
"Continue": "Continue",
|
"Continue": "Continuar",
|
||||||
"Cancel": "Cancelar",
|
"Cancel": "Cancelar",
|
||||||
"Save": "Guardar",
|
"Save": "Guardar",
|
||||||
"Discard": "Descartar",
|
"Discard": "Descartar",
|
||||||
|
|
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "Cliquez pour ouvrir le site de Ryujinx dans votre navigateur par défaut.",
|
"AboutUrlTooltipMessage": "Cliquez pour ouvrir le site de Ryujinx dans votre navigateur par défaut.",
|
||||||
"AboutDisclaimerMessage": "Ryujinx n'est pas affilié à Nintendo™,\nou à aucun de ses partenaires, de quelque manière que ce soit.",
|
"AboutDisclaimerMessage": "Ryujinx n'est pas affilié à Nintendo™,\nou à aucun de ses partenaires, de quelque manière que ce soit.",
|
||||||
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) est utilisé\ndans notre émulation Amiibo.",
|
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) est utilisé\ndans notre émulation Amiibo.",
|
||||||
"AboutPatreonUrlTooltipMessage": "Cliquez pour ouvrir la page Patreon de Ryujinx dans votre navigateur par défaut.",
|
|
||||||
"AboutGithubUrlTooltipMessage": "Cliquez pour ouvrir la page GitHub de Ryujinx dans votre navigateur par défaut.",
|
"AboutGithubUrlTooltipMessage": "Cliquez pour ouvrir la page GitHub de Ryujinx dans votre navigateur par défaut.",
|
||||||
"AboutDiscordUrlTooltipMessage": "Cliquez pour ouvrir une invitation au serveur Discord de Ryujinx dans votre navigateur par défaut.",
|
"AboutDiscordUrlTooltipMessage": "Cliquez pour ouvrir une invitation au serveur Discord de Ryujinx dans votre navigateur par défaut.",
|
||||||
"AboutTwitterUrlTooltipMessage": "Cliquez pour ouvrir la page Twitter de Ryujinx dans votre navigateur par défaut.",
|
|
||||||
"AboutRyujinxAboutTitle": "À propos :",
|
"AboutRyujinxAboutTitle": "À propos :",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx est un émulateur pour la Nintendo Switch™.\nMerci de nous soutenir sur Patreon.\nObtenez toutes les dernières actualités sur notre Twitter ou notre Discord.\nLes développeurs intéressés à contribuer peuvent en savoir plus sur notre GitHub ou notre Discord.",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "Maintenu par :",
|
"AboutRyujinxMaintainersTitle": "Maintenu par :",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "Cliquez pour ouvrir la page Contributeurs dans votre navigateur par défaut.",
|
"AboutRyujinxMaintainersContentTooltipMessage": "Cliquez pour ouvrir la page Contributeurs dans votre navigateur par défaut.",
|
||||||
"AboutRyujinxSupprtersTitle": "Supporté sur Patreon par :",
|
|
||||||
"AmiiboSeriesLabel": "Séries Amiibo",
|
"AmiiboSeriesLabel": "Séries Amiibo",
|
||||||
"AmiiboCharacterLabel": "Personnage",
|
"AmiiboCharacterLabel": "Personnage",
|
||||||
"AmiiboScanButtonLabel": "Scanner",
|
"AmiiboScanButtonLabel": "Scanner",
|
||||||
|
@ -788,7 +786,7 @@
|
||||||
"CheatWindowHeading": "Cheats disponibles pour {0} [{1}]",
|
"CheatWindowHeading": "Cheats disponibles pour {0} [{1}]",
|
||||||
"BuildId": "BuildId :",
|
"BuildId": "BuildId :",
|
||||||
"DlcWindowBundledContentNotice": "Les DLC inclus avec le jeu ne peuvent pas être supprimés mais peuvent être désactivés.",
|
"DlcWindowBundledContentNotice": "Les DLC inclus avec le jeu ne peuvent pas être supprimés mais peuvent être désactivés.",
|
||||||
"DlcWindowHeading": "{0} Contenu(s) téléchargeable(s)",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "{0} nouveau(x) contenu(s) téléchargeable(s) ajouté(s)",
|
"DlcWindowDlcAddedMessage": "{0} nouveau(x) contenu(s) téléchargeable(s) ajouté(s)",
|
||||||
"AutoloadDlcAddedMessage": "{0} nouveau(x) contenu(s) téléchargeable(s) ajouté(s)",
|
"AutoloadDlcAddedMessage": "{0} nouveau(x) contenu(s) téléchargeable(s) ajouté(s)",
|
||||||
"AutoloadDlcRemovedMessage": "{0} contenu(s) téléchargeable(s) manquant(s) supprimé(s)",
|
"AutoloadDlcRemovedMessage": "{0} contenu(s) téléchargeable(s) manquant(s) supprimé(s)",
|
||||||
|
|
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "לחץ כדי לפתוח את אתר ריוג'ינקס בדפדפן ברירת המחדל שלך.",
|
"AboutUrlTooltipMessage": "לחץ כדי לפתוח את אתר ריוג'ינקס בדפדפן ברירת המחדל שלך.",
|
||||||
"AboutDisclaimerMessage": "ריוג'ינקס אינה מזוהת עם נינטנדו,\nאו שוטפייה בכל דרך שהיא.",
|
"AboutDisclaimerMessage": "ריוג'ינקס אינה מזוהת עם נינטנדו,\nאו שוטפייה בכל דרך שהיא.",
|
||||||
"AboutAmiiboDisclaimerMessage": "ממשק אמיבו (www.amiiboapi.com) משומש בהדמיית האמיבו שלנו.",
|
"AboutAmiiboDisclaimerMessage": "ממשק אמיבו (www.amiiboapi.com) משומש בהדמיית האמיבו שלנו.",
|
||||||
"AboutPatreonUrlTooltipMessage": "לחץ כדי לפתוח את דף הפטראון של ריוג'ינקס בדפדפן ברירת המחדל שלך.",
|
|
||||||
"AboutGithubUrlTooltipMessage": "לחץ כדי לפתוח את דף הגיטהב של ריוג'ינקס בדפדפן ברירת המחדל שלך.",
|
"AboutGithubUrlTooltipMessage": "לחץ כדי לפתוח את דף הגיטהב של ריוג'ינקס בדפדפן ברירת המחדל שלך.",
|
||||||
"AboutDiscordUrlTooltipMessage": "לחץ כדי לפתוח הזמנה לשרת הדיסקורד של ריוג'ינקס בדפדפן ברירת המחדל שלך.",
|
"AboutDiscordUrlTooltipMessage": "לחץ כדי לפתוח הזמנה לשרת הדיסקורד של ריוג'ינקס בדפדפן ברירת המחדל שלך.",
|
||||||
"AboutTwitterUrlTooltipMessage": "לחץ כדי לפתוח את דף הטוויטר של Ryujinx בדפדפן ברירת המחדל שלך.",
|
|
||||||
"AboutRyujinxAboutTitle": "אודות:",
|
"AboutRyujinxAboutTitle": "אודות:",
|
||||||
"AboutRyujinxAboutContent": "ריוג'ינקס הוא אמולטור עבור הנינטנדו סוויץ' (כל הזכויות שמורות).\nבבקשה תתמכו בנו בפטראון.\nקבל את כל החדשות האחרונות בטוויטר או בדיסקורד שלנו.\nמפתחים המעוניינים לתרום יכולים לקבל מידע נוסף ב-גיטהאב או ב-דיסקורד שלנו.",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "מתוחזק על ידי:",
|
"AboutRyujinxMaintainersTitle": "מתוחזק על ידי:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "לחץ כדי לפתוח את דף התורמים בדפדפן ברירת המחדל שלך.",
|
"AboutRyujinxMaintainersContentTooltipMessage": "לחץ כדי לפתוח את דף התורמים בדפדפן ברירת המחדל שלך.",
|
||||||
"AboutRyujinxSupprtersTitle": "תמוך באמצעות Patreon",
|
|
||||||
"AmiiboSeriesLabel": "סדרת אמיבו",
|
"AmiiboSeriesLabel": "סדרת אמיבו",
|
||||||
"AmiiboCharacterLabel": "דמות",
|
"AmiiboCharacterLabel": "דמות",
|
||||||
"AmiiboScanButtonLabel": "סרוק את זה",
|
"AmiiboScanButtonLabel": "סרוק את זה",
|
||||||
|
|
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "Clicca per aprire il sito web di Ryujinx nel tuo browser predefinito.",
|
"AboutUrlTooltipMessage": "Clicca per aprire il sito web di Ryujinx nel tuo browser predefinito.",
|
||||||
"AboutDisclaimerMessage": "Ryujinx non è affiliato con Nintendo™,\no i suoi partner, in alcun modo.",
|
"AboutDisclaimerMessage": "Ryujinx non è affiliato con Nintendo™,\no i suoi partner, in alcun modo.",
|
||||||
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) è usata\nnella nostra emulazione Amiibo.",
|
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) è usata\nnella nostra emulazione Amiibo.",
|
||||||
"AboutPatreonUrlTooltipMessage": "Clicca per aprire la pagina Patreon di Ryujinx nel tuo browser predefinito.",
|
|
||||||
"AboutGithubUrlTooltipMessage": "Clicca per aprire la pagina GitHub di Ryujinx nel tuo browser predefinito.",
|
"AboutGithubUrlTooltipMessage": "Clicca per aprire la pagina GitHub di Ryujinx nel tuo browser predefinito.",
|
||||||
"AboutDiscordUrlTooltipMessage": "Clicca per aprire un invito al server Discord di Ryujinx nel tuo browser predefinito.",
|
"AboutDiscordUrlTooltipMessage": "Clicca per aprire un invito al server Discord di Ryujinx nel tuo browser predefinito.",
|
||||||
"AboutTwitterUrlTooltipMessage": "Clicca per aprire la pagina Twitter di Ryujinx nel tuo browser predefinito.",
|
|
||||||
"AboutRyujinxAboutTitle": "Informazioni:",
|
"AboutRyujinxAboutTitle": "Informazioni:",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx è un emulatore per la console Nintendo Switch™.\nSostienici su Patreon.\nRicevi tutte le ultime notizie sul nostro Twitter o su Discord.\nGli sviluppatori interessati a contribuire possono trovare più informazioni sul nostro GitHub o Discord.",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "Mantenuto da:",
|
"AboutRyujinxMaintainersTitle": "Mantenuto da:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "Clicca per aprire la pagina dei contributori nel tuo browser predefinito.",
|
"AboutRyujinxMaintainersContentTooltipMessage": "Clicca per aprire la pagina dei contributori nel tuo browser predefinito.",
|
||||||
"AboutRyujinxSupprtersTitle": "Supportato su Patreon da:",
|
|
||||||
"AmiiboSeriesLabel": "Serie Amiibo",
|
"AmiiboSeriesLabel": "Serie Amiibo",
|
||||||
"AmiiboCharacterLabel": "Personaggio",
|
"AmiiboCharacterLabel": "Personaggio",
|
||||||
"AmiiboScanButtonLabel": "Scansiona",
|
"AmiiboScanButtonLabel": "Scansiona",
|
||||||
|
@ -788,7 +786,7 @@
|
||||||
"CheatWindowHeading": "Trucchi disponibili per {0} [{1}]",
|
"CheatWindowHeading": "Trucchi disponibili per {0} [{1}]",
|
||||||
"BuildId": "ID Build",
|
"BuildId": "ID Build",
|
||||||
"DlcWindowBundledContentNotice": "i DLC \"impacchettati\" non possono essere rimossi, ma solo disabilitati.",
|
"DlcWindowBundledContentNotice": "i DLC \"impacchettati\" non possono essere rimossi, ma solo disabilitati.",
|
||||||
"DlcWindowHeading": "DLC disponibili per {0} [{1}]",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "{0} nuovo/i contenuto/i scaricabile/i aggiunto/i",
|
"DlcWindowDlcAddedMessage": "{0} nuovo/i contenuto/i scaricabile/i aggiunto/i",
|
||||||
"AutoloadDlcAddedMessage": "{0} contenuto/i scaricabile/i aggiunto/i",
|
"AutoloadDlcAddedMessage": "{0} contenuto/i scaricabile/i aggiunto/i",
|
||||||
"AutoloadDlcRemovedMessage": "{0} contenuto/i scaricabile/i mancante/i rimosso/i",
|
"AutoloadDlcRemovedMessage": "{0} contenuto/i scaricabile/i mancante/i rimosso/i",
|
||||||
|
|
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "クリックするとデフォルトのブラウザで Ryujinx のウェブサイトを開きます.",
|
"AboutUrlTooltipMessage": "クリックするとデフォルトのブラウザで Ryujinx のウェブサイトを開きます.",
|
||||||
"AboutDisclaimerMessage": "Ryujinx は Nintendo™ および\nそのパートナー企業とは一切関係ありません.",
|
"AboutDisclaimerMessage": "Ryujinx は Nintendo™ および\nそのパートナー企業とは一切関係ありません.",
|
||||||
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) は\nAmiibo エミュレーションに使用されています.",
|
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) は\nAmiibo エミュレーションに使用されています.",
|
||||||
"AboutPatreonUrlTooltipMessage": "クリックするとデフォルトのブラウザで Ryujinx の Patreon ページを開きます.",
|
|
||||||
"AboutGithubUrlTooltipMessage": "クリックするとデフォルトのブラウザで Ryujinx の Github ページを開きます.",
|
"AboutGithubUrlTooltipMessage": "クリックするとデフォルトのブラウザで Ryujinx の Github ページを開きます.",
|
||||||
"AboutDiscordUrlTooltipMessage": "クリックするとデフォルトのブラウザで Ryujinx の Discord サーバを開きます.",
|
"AboutDiscordUrlTooltipMessage": "クリックするとデフォルトのブラウザで Ryujinx の Discord サーバを開きます.",
|
||||||
"AboutTwitterUrlTooltipMessage": "クリックするとデフォルトのブラウザで Ryujinx の Twitter ページを開きます.",
|
|
||||||
"AboutRyujinxAboutTitle": "Ryujinx について:",
|
"AboutRyujinxAboutTitle": "Ryujinx について:",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx は Nintendo Switch™ のエミュレータです.\nPatreon で私達の活動を支援してください.\n最新の情報は Twitter または Discord から取得できます.\n貢献したい開発者の方は GitHub または Discord で詳細をご確認ください.",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "開発者:",
|
"AboutRyujinxMaintainersTitle": "開発者:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "クリックするとデフォルトのブラウザで 貢献者のページを開きます.",
|
"AboutRyujinxMaintainersContentTooltipMessage": "クリックするとデフォルトのブラウザで 貢献者のページを開きます.",
|
||||||
"AboutRyujinxSupprtersTitle": "Patreon での支援者:",
|
|
||||||
"AmiiboSeriesLabel": "Amiibo シリーズ",
|
"AmiiboSeriesLabel": "Amiibo シリーズ",
|
||||||
"AmiiboCharacterLabel": "キャラクタ",
|
"AmiiboCharacterLabel": "キャラクタ",
|
||||||
"AmiiboScanButtonLabel": "スキャン",
|
"AmiiboScanButtonLabel": "スキャン",
|
||||||
|
@ -787,7 +785,7 @@
|
||||||
"UpdateWindowBundledContentNotice": "Bundled updates cannot be removed, only disabled.",
|
"UpdateWindowBundledContentNotice": "Bundled updates cannot be removed, only disabled.",
|
||||||
"CheatWindowHeading": "利用可能なチート {0} [{1}]",
|
"CheatWindowHeading": "利用可能なチート {0} [{1}]",
|
||||||
"BuildId": "ビルドID:",
|
"BuildId": "ビルドID:",
|
||||||
"DlcWindowHeading": "利用可能な DLC {0} [{1}]",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"Language": "한국어",
|
"Language": "한국어",
|
||||||
"MenuBarFileOpenApplet": "애플릿 열기",
|
"MenuBarFileOpenApplet": "애플릿 열기",
|
||||||
"MenuBarFileOpenAppletOpenMiiApplet": "Mii Edit Applet",
|
"MenuBarFileOpenAppletOpenMiiApplet": "Mii 편집 애플릿",
|
||||||
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "독립 실행형 모드로 Mii 편집기 애플릿 열기",
|
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "독립 실행형 모드로 Mii 편집기 애플릿 열기",
|
||||||
"SettingsTabInputDirectMouseAccess": "마우스 직접 접근",
|
"SettingsTabInputDirectMouseAccess": "마우스 직접 접근",
|
||||||
"SettingsTabSystemMemoryManagerMode": "메모리 관리자 모드 :",
|
"SettingsTabSystemMemoryManagerMode": "메모리 관리자 모드 :",
|
||||||
|
@ -484,7 +484,7 @@
|
||||||
"DialogControllerAppletTitle": "컨트롤러 애플릿",
|
"DialogControllerAppletTitle": "컨트롤러 애플릿",
|
||||||
"DialogMessageDialogErrorExceptionMessage": "메시지 대화 상자 표시 오류 : {0}",
|
"DialogMessageDialogErrorExceptionMessage": "메시지 대화 상자 표시 오류 : {0}",
|
||||||
"DialogSoftwareKeyboardErrorExceptionMessage": "소프트웨어 키보드 표시 오류 : {0}",
|
"DialogSoftwareKeyboardErrorExceptionMessage": "소프트웨어 키보드 표시 오류 : {0}",
|
||||||
"DialogErrorAppletErrorExceptionMessage": "ErrorApplet 대화 상자 표시 오류 : {0}",
|
"DialogErrorAppletErrorExceptionMessage": "애플릿 오류류 대화 상자 표시 오류 : {0}",
|
||||||
"DialogUserErrorDialogMessage": "{0}: {1}",
|
"DialogUserErrorDialogMessage": "{0}: {1}",
|
||||||
"DialogUserErrorDialogInfoMessage": "\n이 오류를 해결하는 방법에 대한 자세한 내용은 설정 가이드를 참조하세요.",
|
"DialogUserErrorDialogInfoMessage": "\n이 오류를 해결하는 방법에 대한 자세한 내용은 설정 가이드를 참조하세요.",
|
||||||
"DialogUserErrorDialogTitle": "Ryujinx 오류 ({0})",
|
"DialogUserErrorDialogTitle": "Ryujinx 오류 ({0})",
|
||||||
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "클릭하면 기본 브라우저에서 Ryujinx 웹사이트가 열립니다.",
|
"AboutUrlTooltipMessage": "클릭하면 기본 브라우저에서 Ryujinx 웹사이트가 열립니다.",
|
||||||
"AboutDisclaimerMessage": "Ryujinx는 Nintendo™\n또는 그 파트너와 제휴한 바가 없습니다.",
|
"AboutDisclaimerMessage": "Ryujinx는 Nintendo™\n또는 그 파트너와 제휴한 바가 없습니다.",
|
||||||
"AboutAmiiboDisclaimerMessage": "AmiiboAPI(www.amiiboapi.com)는\nAmiibo 에뮬레이션에 사용됩니다.",
|
"AboutAmiiboDisclaimerMessage": "AmiiboAPI(www.amiiboapi.com)는\nAmiibo 에뮬레이션에 사용됩니다.",
|
||||||
"AboutPatreonUrlTooltipMessage": "클릭하면 기본 브라우저에서 Ryujinx Patreon 페이지가 열립니다.",
|
|
||||||
"AboutGithubUrlTooltipMessage": "클릭하면 기본 브라우저에서 Ryujinx GitHub 페이지가 열립니다.",
|
"AboutGithubUrlTooltipMessage": "클릭하면 기본 브라우저에서 Ryujinx GitHub 페이지가 열립니다.",
|
||||||
"AboutDiscordUrlTooltipMessage": "클릭하면 기본 브라우저에서 Ryujinx 디스코드 서버 초대장이 열립니다.",
|
"AboutDiscordUrlTooltipMessage": "클릭하면 기본 브라우저에서 Ryujinx 디스코드 서버 초대장이 열립니다.",
|
||||||
"AboutTwitterUrlTooltipMessage": "클릭하면 기본 브라우저에서 Ryujinx 트위터 페이지가 열립니다.",
|
|
||||||
"AboutRyujinxAboutTitle": "정보 :",
|
"AboutRyujinxAboutTitle": "정보 :",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx는 Nintendo Switch™용 에뮬레이터입니다.\nPatreon에서 저희를 후원해 주세요.\nTwitter나 Discord에서 최신 뉴스를 모두 받아보세요.\n기여에 관심이 있는 개발자는 GitHub이나 Discord에서 자세한 내용을 알아볼 수 있습니다.",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "유지 관리 :",
|
"AboutRyujinxMaintainersTitle": "유지 관리 :",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "클릭하면 기본 브라우저에서 기여자 페이지가 열립니다.",
|
"AboutRyujinxMaintainersContentTooltipMessage": "클릭하면 기본 브라우저에서 기여자 페이지가 열립니다.",
|
||||||
"AboutRyujinxSupprtersTitle": "Patreon에서 후원 :",
|
|
||||||
"AmiiboSeriesLabel": "Amiibo 시리즈",
|
"AmiiboSeriesLabel": "Amiibo 시리즈",
|
||||||
"AmiiboCharacterLabel": "캐릭터",
|
"AmiiboCharacterLabel": "캐릭터",
|
||||||
"AmiiboScanButtonLabel": "스캔하기",
|
"AmiiboScanButtonLabel": "스캔하기",
|
||||||
|
@ -702,9 +700,9 @@
|
||||||
"Never": "절대 안 함",
|
"Never": "절대 안 함",
|
||||||
"SwkbdMinCharacters": "{0}자 이상이어야 함",
|
"SwkbdMinCharacters": "{0}자 이상이어야 함",
|
||||||
"SwkbdMinRangeCharacters": "{0}-{1}자 길이여야 함",
|
"SwkbdMinRangeCharacters": "{0}-{1}자 길이여야 함",
|
||||||
"CabinetTitle": "Cabinet Dialog",
|
"CabinetTitle": "캐비닛 대화 상자",
|
||||||
"CabinetDialog": "Enter your Amiibo's new name",
|
"CabinetDialog": "Amiibo의 새 이름 입력하기",
|
||||||
"CabinetScanDialog": "Please scan your Amiibo now.",
|
"CabinetScanDialog": "지금 Amiibo를 스캔하세요.",
|
||||||
"SoftwareKeyboard": "소프트웨어 키보드",
|
"SoftwareKeyboard": "소프트웨어 키보드",
|
||||||
"SoftwareKeyboardModeNumeric": "0-9 또는 '.'만 가능",
|
"SoftwareKeyboardModeNumeric": "0-9 또는 '.'만 가능",
|
||||||
"SoftwareKeyboardModeAlphabet": "CJK 문자가 아닌 문자만 가능",
|
"SoftwareKeyboardModeAlphabet": "CJK 문자가 아닌 문자만 가능",
|
||||||
|
@ -781,14 +779,14 @@
|
||||||
"XCITrimmerDeselectDisplayed": "표시됨 선택 취소",
|
"XCITrimmerDeselectDisplayed": "표시됨 선택 취소",
|
||||||
"XCITrimmerSortName": "타이틀",
|
"XCITrimmerSortName": "타이틀",
|
||||||
"XCITrimmerSortSaved": "공간 절약s",
|
"XCITrimmerSortSaved": "공간 절약s",
|
||||||
"XCITrimmerTrim": "Trim",
|
"XCITrimmerTrim": "트림",
|
||||||
"XCITrimmerUntrim": "Untrim",
|
"XCITrimmerUntrim": "언트림",
|
||||||
"UpdateWindowUpdateAddedMessage": "{0}개의 새 업데이트가 추가됨",
|
"UpdateWindowUpdateAddedMessage": "{0}개의 새 업데이트가 추가됨",
|
||||||
"UpdateWindowBundledContentNotice": "번들 업데이트는 제거할 수 없으며, 비활성화만 가능합니다.",
|
"UpdateWindowBundledContentNotice": "번들 업데이트는 제거할 수 없으며, 비활성화만 가능합니다.",
|
||||||
"CheatWindowHeading": "{0} [{1}]에 사용 가능한 치트",
|
"CheatWindowHeading": "{0} [{1}]에 사용 가능한 치트",
|
||||||
"BuildId": "빌드ID:",
|
"BuildId": "빌드ID:",
|
||||||
"DlcWindowBundledContentNotice": "번들 DLC는 제거할 수 없으며 비활성화만 가능합니다.",
|
"DlcWindowBundledContentNotice": "번들 DLC는 제거할 수 없으며 비활성화만 가능합니다.",
|
||||||
"DlcWindowHeading": "{1} ({2})에 내려받기 가능한 콘텐츠 {0}개 사용 가능",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "{0}개의 새로운 내려받기 가능한 콘텐츠가 추가됨",
|
"DlcWindowDlcAddedMessage": "{0}개의 새로운 내려받기 가능한 콘텐츠가 추가됨",
|
||||||
"AutoloadDlcAddedMessage": "{0}개의 새로운 내려받기 가능한 콘텐츠가 추가됨",
|
"AutoloadDlcAddedMessage": "{0}개의 새로운 내려받기 가능한 콘텐츠가 추가됨",
|
||||||
"AutoloadDlcRemovedMessage": "{0}개의 내려받기 가능한 콘텐츠가 제거됨",
|
"AutoloadDlcRemovedMessage": "{0}개의 내려받기 가능한 콘텐츠가 제거됨",
|
||||||
|
|
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "Kliknij, aby otworzyć stronę Ryujinx w domyślnej przeglądarce.",
|
"AboutUrlTooltipMessage": "Kliknij, aby otworzyć stronę Ryujinx w domyślnej przeglądarce.",
|
||||||
"AboutDisclaimerMessage": "Ryujinx nie jest w żaden sposób powiązany z Nintendo™,\nani z żadnym z jej partnerów.",
|
"AboutDisclaimerMessage": "Ryujinx nie jest w żaden sposób powiązany z Nintendo™,\nani z żadnym z jej partnerów.",
|
||||||
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) jest używane\nw naszej emulacji Amiibo.",
|
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) jest używane\nw naszej emulacji Amiibo.",
|
||||||
"AboutPatreonUrlTooltipMessage": "Kliknij, aby otworzyć stronę Patreon Ryujinx w domyślnej przeglądarce.",
|
|
||||||
"AboutGithubUrlTooltipMessage": "Kliknij, aby otworzyć stronę GitHub Ryujinx w domyślnej przeglądarce.",
|
"AboutGithubUrlTooltipMessage": "Kliknij, aby otworzyć stronę GitHub Ryujinx w domyślnej przeglądarce.",
|
||||||
"AboutDiscordUrlTooltipMessage": "Kliknij, aby otworzyć zaproszenie na serwer Discord Ryujinx w domyślnej przeglądarce.",
|
"AboutDiscordUrlTooltipMessage": "Kliknij, aby otworzyć zaproszenie na serwer Discord Ryujinx w domyślnej przeglądarce.",
|
||||||
"AboutTwitterUrlTooltipMessage": "Kliknij, aby otworzyć stronę Twitter Ryujinx w domyślnej przeglądarce.",
|
|
||||||
"AboutRyujinxAboutTitle": "O Aplikacji:",
|
"AboutRyujinxAboutTitle": "O Aplikacji:",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx to emulator Nintendo Switch™.\nWspieraj nas na Patreonie.\nOtrzymuj najnowsze wiadomości na naszym Twitterze lub Discordzie.\nDeweloperzy zainteresowani współpracą mogą dowiedzieć się więcej na naszym GitHubie lub Discordzie.",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "Utrzymywany Przez:",
|
"AboutRyujinxMaintainersTitle": "Utrzymywany Przez:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "Kliknij, aby otworzyć stronę Współtwórcy w domyślnej przeglądarce.",
|
"AboutRyujinxMaintainersContentTooltipMessage": "Kliknij, aby otworzyć stronę Współtwórcy w domyślnej przeglądarce.",
|
||||||
"AboutRyujinxSupprtersTitle": "Wspierani na Patreonie Przez:",
|
|
||||||
"AmiiboSeriesLabel": "Seria Amiibo",
|
"AmiiboSeriesLabel": "Seria Amiibo",
|
||||||
"AmiiboCharacterLabel": "Postać",
|
"AmiiboCharacterLabel": "Postać",
|
||||||
"AmiiboScanButtonLabel": "Zeskanuj",
|
"AmiiboScanButtonLabel": "Zeskanuj",
|
||||||
|
@ -788,7 +786,7 @@
|
||||||
"CheatWindowHeading": "Kody Dostępne dla {0} [{1}]",
|
"CheatWindowHeading": "Kody Dostępne dla {0} [{1}]",
|
||||||
"BuildId": "Identyfikator wersji:",
|
"BuildId": "Identyfikator wersji:",
|
||||||
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
||||||
"DlcWindowHeading": "{0} Zawartości do Pobrania dostępna dla {1} ({2})",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
||||||
|
|
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "Clique para abrir o site do Ryujinx no seu navegador padrão.",
|
"AboutUrlTooltipMessage": "Clique para abrir o site do Ryujinx no seu navegador padrão.",
|
||||||
"AboutDisclaimerMessage": "Ryujinx não é afiliado com a Nintendo™,\nou qualquer um de seus parceiros, de nenhum modo.",
|
"AboutDisclaimerMessage": "Ryujinx não é afiliado com a Nintendo™,\nou qualquer um de seus parceiros, de nenhum modo.",
|
||||||
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) é usado\nem nossa emulação de Amiibo.",
|
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) é usado\nem nossa emulação de Amiibo.",
|
||||||
"AboutPatreonUrlTooltipMessage": "Clique para abrir a página do Patreon do Ryujinx no seu navegador padrão.",
|
|
||||||
"AboutGithubUrlTooltipMessage": "Clique para abrir a página do GitHub do Ryujinx no seu navegador padrão.",
|
"AboutGithubUrlTooltipMessage": "Clique para abrir a página do GitHub do Ryujinx no seu navegador padrão.",
|
||||||
"AboutDiscordUrlTooltipMessage": "Clique para abrir um convite ao servidor do Discord do Ryujinx no seu navegador padrão.",
|
"AboutDiscordUrlTooltipMessage": "Clique para abrir um convite ao servidor do Discord do Ryujinx no seu navegador padrão.",
|
||||||
"AboutTwitterUrlTooltipMessage": "Clique para abrir a página do Twitter do Ryujinx no seu navegador padrão.",
|
|
||||||
"AboutRyujinxAboutTitle": "Sobre:",
|
"AboutRyujinxAboutTitle": "Sobre:",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx é um emulador de Nintendo Switch™.\nPor favor, nos dê apoio no Patreon.\nFique por dentro de todas as novidades no Twitter ou Discord.\nDesenvolvedores com interesse em contribuir podem conseguir mais informações no GitHub ou Discord.",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "Mantido por:",
|
"AboutRyujinxMaintainersTitle": "Mantido por:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "Clique para abrir a página de contribuidores no seu navegador padrão.",
|
"AboutRyujinxMaintainersContentTooltipMessage": "Clique para abrir a página de contribuidores no seu navegador padrão.",
|
||||||
"AboutRyujinxSupprtersTitle": "Apoiado no Patreon por:",
|
|
||||||
"AmiiboSeriesLabel": "Franquia Amiibo",
|
"AmiiboSeriesLabel": "Franquia Amiibo",
|
||||||
"AmiiboCharacterLabel": "Personagem",
|
"AmiiboCharacterLabel": "Personagem",
|
||||||
"AmiiboScanButtonLabel": "Escanear",
|
"AmiiboScanButtonLabel": "Escanear",
|
||||||
|
@ -787,7 +785,7 @@
|
||||||
"CheatWindowHeading": "Cheats disponíveis para {0} [{1}]",
|
"CheatWindowHeading": "Cheats disponíveis para {0} [{1}]",
|
||||||
"BuildId": "ID da Build:",
|
"BuildId": "ID da Build:",
|
||||||
"DlcWindowBundledContentNotice": "DLCs incorporadas não podem ser removidas, apenas desativadas.",
|
"DlcWindowBundledContentNotice": "DLCs incorporadas não podem ser removidas, apenas desativadas.",
|
||||||
"DlcWindowHeading": "{0} DLCs disponíveis para {1} ({2})",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "{0} novo(s) conteúdo(s) para download adicionado(s)",
|
"DlcWindowDlcAddedMessage": "{0} novo(s) conteúdo(s) para download adicionado(s)",
|
||||||
"AutoloadDlcAddedMessage": "{0} novo(s) conteúdo(s) para download adicionado(s)",
|
"AutoloadDlcAddedMessage": "{0} novo(s) conteúdo(s) para download adicionado(s)",
|
||||||
"AutoloadDlcRemovedMessage": "{0} conteúdo(s) para download ausente(s) removido(s)",
|
"AutoloadDlcRemovedMessage": "{0} conteúdo(s) para download ausente(s) removido(s)",
|
||||||
|
|
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "Нажмите, чтобы открыть веб-сайт Ryujinx",
|
"AboutUrlTooltipMessage": "Нажмите, чтобы открыть веб-сайт Ryujinx",
|
||||||
"AboutDisclaimerMessage": "Ryujinx никоим образом не связан ни с Nintendo™, ни с кем-либо из ее партнеров.",
|
"AboutDisclaimerMessage": "Ryujinx никоим образом не связан ни с Nintendo™, ни с кем-либо из ее партнеров.",
|
||||||
"AboutAmiiboDisclaimerMessage": "Amiibo API (www.amiiboapi.com) используется для эмуляции Amiibo.",
|
"AboutAmiiboDisclaimerMessage": "Amiibo API (www.amiiboapi.com) используется для эмуляции Amiibo.",
|
||||||
"AboutPatreonUrlTooltipMessage": "Нажмите, чтобы открыть страницу Ryujinx на Patreon",
|
|
||||||
"AboutGithubUrlTooltipMessage": "Нажмите, чтобы открыть страницу Ryujinx на GitHub",
|
"AboutGithubUrlTooltipMessage": "Нажмите, чтобы открыть страницу Ryujinx на GitHub",
|
||||||
"AboutDiscordUrlTooltipMessage": "Нажмите, чтобы открыть приглашение на сервер Ryujinx в Discord",
|
"AboutDiscordUrlTooltipMessage": "Нажмите, чтобы открыть приглашение на сервер Ryujinx в Discord",
|
||||||
"AboutTwitterUrlTooltipMessage": "Нажмите, чтобы открыть страницу Ryujinx в X (бывший Twitter)",
|
|
||||||
"AboutRyujinxAboutTitle": "О программе:",
|
"AboutRyujinxAboutTitle": "О программе:",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx — это эмулятор Nintendo Switch™.\nПожалуйста, поддержите нас на Patreon.\nЧитайте последние новости в наших X (Twitter) или Discord.\nРазработчики, заинтересованные в участии, могут ознакомиться с проектом на GitHub или в Discord.",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "Разработка:",
|
"AboutRyujinxMaintainersTitle": "Разработка:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "Нажмите, чтобы открыть страницу с участниками",
|
"AboutRyujinxMaintainersContentTooltipMessage": "Нажмите, чтобы открыть страницу с участниками",
|
||||||
"AboutRyujinxSupprtersTitle": "Поддержка на Patreon:",
|
|
||||||
"AmiiboSeriesLabel": "Серия Amiibo",
|
"AmiiboSeriesLabel": "Серия Amiibo",
|
||||||
"AmiiboCharacterLabel": "Персонаж",
|
"AmiiboCharacterLabel": "Персонаж",
|
||||||
"AmiiboScanButtonLabel": "Сканировать",
|
"AmiiboScanButtonLabel": "Сканировать",
|
||||||
|
@ -788,7 +786,7 @@
|
||||||
"CheatWindowHeading": "Доступные читы для {0} [{1}]",
|
"CheatWindowHeading": "Доступные читы для {0} [{1}]",
|
||||||
"BuildId": "ID версии:",
|
"BuildId": "ID версии:",
|
||||||
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
||||||
"DlcWindowHeading": "{0} DLC",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
||||||
|
|
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "คลิกเพื่อเปิดเว็บไซต์ Ryujinx บนเบราว์เซอร์เริ่มต้นของคุณ",
|
"AboutUrlTooltipMessage": "คลิกเพื่อเปิดเว็บไซต์ Ryujinx บนเบราว์เซอร์เริ่มต้นของคุณ",
|
||||||
"AboutDisclaimerMessage": "ทางผู้พัฒนาโปรแกรม Ryujinx ไม่มีส่วนเกี่ยวข้องกับทางบริษัท Nintendo™\nหรือพันธมิตรใดๆ ทั้งสิ้น!",
|
"AboutDisclaimerMessage": "ทางผู้พัฒนาโปรแกรม Ryujinx ไม่มีส่วนเกี่ยวข้องกับทางบริษัท Nintendo™\nหรือพันธมิตรใดๆ ทั้งสิ้น!",
|
||||||
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) ถูกใช้\nในการจำลอง อะมิโบ ของเรา",
|
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) ถูกใช้\nในการจำลอง อะมิโบ ของเรา",
|
||||||
"AboutPatreonUrlTooltipMessage": "คลิกเพื่อเปิดหน้า Patreon ของ Ryujinx บนเบราว์เซอร์เริ่มต้นของคุณ",
|
|
||||||
"AboutGithubUrlTooltipMessage": "คลิกเพื่อเปิดหน้า Github ของ Ryujinx บนเบราว์เซอร์เริ่มต้นของคุณ",
|
"AboutGithubUrlTooltipMessage": "คลิกเพื่อเปิดหน้า Github ของ Ryujinx บนเบราว์เซอร์เริ่มต้นของคุณ",
|
||||||
"AboutDiscordUrlTooltipMessage": "คลิกเพื่อเปิดคำเชิญเข้าสู่เซิร์ฟเวอร์ Discord ของ Ryujinx บนเบราว์เซอร์เริ่มต้นของคุณ",
|
"AboutDiscordUrlTooltipMessage": "คลิกเพื่อเปิดคำเชิญเข้าสู่เซิร์ฟเวอร์ Discord ของ Ryujinx บนเบราว์เซอร์เริ่มต้นของคุณ",
|
||||||
"AboutTwitterUrlTooltipMessage": "คลิกเพื่อเปิดหน้าเพจ Twitter ของ Ryujinx บนเบราว์เซอร์เริ่มต้นของคุณ",
|
|
||||||
"AboutRyujinxAboutTitle": "เกี่ยวกับ:",
|
"AboutRyujinxAboutTitle": "เกี่ยวกับ:",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx เป็นอีมูเลเตอร์สำหรับ Nintendo Switch™\nโปรดสนับสนุนเราบน Patreon\nรับข่าวสารล่าสุดทั้งหมดบน Twitter หรือ Discord ของเรา\nนักพัฒนาที่สนใจจะมีส่วนร่วมสามารถดูข้อมูลเพิ่มเติมได้ที่ GitHub หรือ Discord ของเรา",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "ได้รับการดูแลโดย:",
|
"AboutRyujinxMaintainersTitle": "ได้รับการดูแลโดย:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "คลิกเพื่อเปิดหน้าผู้มีส่วนร่วมบนเบราว์เซอร์เริ่มต้นของคุณ",
|
"AboutRyujinxMaintainersContentTooltipMessage": "คลิกเพื่อเปิดหน้าผู้มีส่วนร่วมบนเบราว์เซอร์เริ่มต้นของคุณ",
|
||||||
"AboutRyujinxSupprtersTitle": "ผู้สนับสนุนบน Patreon:",
|
|
||||||
"AmiiboSeriesLabel": "Amiibo Series",
|
"AmiiboSeriesLabel": "Amiibo Series",
|
||||||
"AmiiboCharacterLabel": "ตัวละคร",
|
"AmiiboCharacterLabel": "ตัวละคร",
|
||||||
"AmiiboScanButtonLabel": "สแกนเลย",
|
"AmiiboScanButtonLabel": "สแกนเลย",
|
||||||
|
@ -788,7 +786,7 @@
|
||||||
"CheatWindowHeading": "สูตรโกงมีให้สำหรับ {0} [{1}]",
|
"CheatWindowHeading": "สูตรโกงมีให้สำหรับ {0} [{1}]",
|
||||||
"BuildId": "รหัสการสร้าง:",
|
"BuildId": "รหัสการสร้าง:",
|
||||||
"DlcWindowBundledContentNotice": "แพ็ค DLC ไม่สามารถลบทิ้งได้ สามารถปิดใช้งานได้เท่านั้น",
|
"DlcWindowBundledContentNotice": "แพ็ค DLC ไม่สามารถลบทิ้งได้ สามารถปิดใช้งานได้เท่านั้น",
|
||||||
"DlcWindowHeading": "{0} DLC ที่สามารถดาวน์โหลดได้",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "{0} DLC ใหม่ที่เพิ่มเข้ามา",
|
"DlcWindowDlcAddedMessage": "{0} DLC ใหม่ที่เพิ่มเข้ามา",
|
||||||
"AutoloadDlcAddedMessage": "{0} ใหม่ที่เพิ่มเข้ามา",
|
"AutoloadDlcAddedMessage": "{0} ใหม่ที่เพิ่มเข้ามา",
|
||||||
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
||||||
|
|
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "Ryujinx'in websitesini varsayılan tarayıcınızda açmak için tıklayın.",
|
"AboutUrlTooltipMessage": "Ryujinx'in websitesini varsayılan tarayıcınızda açmak için tıklayın.",
|
||||||
"AboutDisclaimerMessage": "Ryujinx, Nintendo™ veya ortaklarıyla herhangi bir şekilde bağlantılı değildir.",
|
"AboutDisclaimerMessage": "Ryujinx, Nintendo™ veya ortaklarıyla herhangi bir şekilde bağlantılı değildir.",
|
||||||
"AboutAmiiboDisclaimerMessage": "Amiibo emülasyonumuzda \nAmiiboAPI (www.amiiboapi.com) kullanılmaktadır.",
|
"AboutAmiiboDisclaimerMessage": "Amiibo emülasyonumuzda \nAmiiboAPI (www.amiiboapi.com) kullanılmaktadır.",
|
||||||
"AboutPatreonUrlTooltipMessage": "Ryujinx'in Patreon sayfasını varsayılan tarayıcınızda açmak için tıklayın.",
|
|
||||||
"AboutGithubUrlTooltipMessage": "Ryujinx'in GitHub sayfasını varsayılan tarayıcınızda açmak için tıklayın.",
|
"AboutGithubUrlTooltipMessage": "Ryujinx'in GitHub sayfasını varsayılan tarayıcınızda açmak için tıklayın.",
|
||||||
"AboutDiscordUrlTooltipMessage": "Varsayılan tarayıcınızda Ryujinx'in Discord'una bir davet açmak için tıklayın.",
|
"AboutDiscordUrlTooltipMessage": "Varsayılan tarayıcınızda Ryujinx'in Discord'una bir davet açmak için tıklayın.",
|
||||||
"AboutTwitterUrlTooltipMessage": "Ryujinx'in Twitter sayfasını varsayılan tarayıcınızda açmak için tıklayın.",
|
|
||||||
"AboutRyujinxAboutTitle": "Hakkında:",
|
"AboutRyujinxAboutTitle": "Hakkında:",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx bir Nintendo Switch™ emülatörüdür.\nLütfen bizi Patreon'da destekleyin.\nEn son haberleri Twitter veya Discord'umuzdan alın.\nKatkıda bulunmak isteyen geliştiriciler GitHub veya Discord üzerinden daha fazla bilgi edinebilir.",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "Geliştiriciler:",
|
"AboutRyujinxMaintainersTitle": "Geliştiriciler:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "Katkıda bulunanlar sayfasını varsayılan tarayıcınızda açmak için tıklayın.",
|
"AboutRyujinxMaintainersContentTooltipMessage": "Katkıda bulunanlar sayfasını varsayılan tarayıcınızda açmak için tıklayın.",
|
||||||
"AboutRyujinxSupprtersTitle": "Patreon Destekleyicileri:",
|
|
||||||
"AmiiboSeriesLabel": "Amiibo Serisi",
|
"AmiiboSeriesLabel": "Amiibo Serisi",
|
||||||
"AmiiboCharacterLabel": "Karakter",
|
"AmiiboCharacterLabel": "Karakter",
|
||||||
"AmiiboScanButtonLabel": "Tarat",
|
"AmiiboScanButtonLabel": "Tarat",
|
||||||
|
@ -788,7 +786,7 @@
|
||||||
"CheatWindowHeading": "{0} için Hile mevcut [{1}]",
|
"CheatWindowHeading": "{0} için Hile mevcut [{1}]",
|
||||||
"BuildId": "BuildId:",
|
"BuildId": "BuildId:",
|
||||||
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
||||||
"DlcWindowHeading": "{0} Downloadable Content(s) available for {1} ({2})",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
||||||
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"Language": "Українська",
|
"Language": "Українська",
|
||||||
"MenuBarFileOpenApplet": "Відкрити аплет",
|
"MenuBarFileOpenApplet": "Відкрити аплет",
|
||||||
"MenuBarFileOpenAppletOpenMiiApplet": "Mii Edit Applet",
|
"MenuBarFileOpenAppletOpenMiiApplet": "Аплет для редагування Mii",
|
||||||
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "Відкрити аплет Mii Editor в автономному режимі",
|
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "Відкрити аплет Mii Editor в автономному режимі",
|
||||||
"SettingsTabInputDirectMouseAccess": "Прямий доступ мишею",
|
"SettingsTabInputDirectMouseAccess": "Прямий доступ мишею",
|
||||||
"SettingsTabSystemMemoryManagerMode": "Режим диспетчера пам’яті:",
|
"SettingsTabSystemMemoryManagerMode": "Режим диспетчера пам’яті:",
|
||||||
|
@ -11,10 +11,10 @@
|
||||||
"SettingsTabSystemUseHypervisor": "Використовувати гіпервізор",
|
"SettingsTabSystemUseHypervisor": "Використовувати гіпервізор",
|
||||||
"MenuBarFile": "_Файл",
|
"MenuBarFile": "_Файл",
|
||||||
"MenuBarFileOpenFromFile": "_Завантажити програму з файлу",
|
"MenuBarFileOpenFromFile": "_Завантажити програму з файлу",
|
||||||
"MenuBarFileOpenFromFileError": "No applications found in selected file.",
|
"MenuBarFileOpenFromFileError": "У вибраному файлі не знайдено жодних додатків.",
|
||||||
"MenuBarFileOpenUnpacked": "Завантажити _розпаковану гру",
|
"MenuBarFileOpenUnpacked": "Завантажити _розпаковану гру",
|
||||||
"MenuBarFileLoadDlcFromFolder": "Load DLC From Folder",
|
"MenuBarFileLoadDlcFromFolder": "Завантажити DLC з теки",
|
||||||
"MenuBarFileLoadTitleUpdatesFromFolder": "Load Title Updates From Folder",
|
"MenuBarFileLoadTitleUpdatesFromFolder": "Завантажити оновлення заголовків з теки",
|
||||||
"MenuBarFileOpenEmuFolder": "Відкрити теку Ryujinx",
|
"MenuBarFileOpenEmuFolder": "Відкрити теку Ryujinx",
|
||||||
"MenuBarFileOpenLogsFolder": "Відкрити теку журналів змін",
|
"MenuBarFileOpenLogsFolder": "Відкрити теку журналів змін",
|
||||||
"MenuBarFileExit": "_Вихід",
|
"MenuBarFileExit": "_Вихід",
|
||||||
|
@ -37,9 +37,9 @@
|
||||||
"MenuBarToolsManageFileTypes": "Керувати типами файлів",
|
"MenuBarToolsManageFileTypes": "Керувати типами файлів",
|
||||||
"MenuBarToolsInstallFileTypes": "Установити типи файлів",
|
"MenuBarToolsInstallFileTypes": "Установити типи файлів",
|
||||||
"MenuBarToolsUninstallFileTypes": "Видалити типи файлів",
|
"MenuBarToolsUninstallFileTypes": "Видалити типи файлів",
|
||||||
"MenuBarToolsXCITrimmer": "Trim XCI Files",
|
"MenuBarToolsXCITrimmer": "Обрізати XCI файли",
|
||||||
"MenuBarView": "_View",
|
"MenuBarView": "_Вид",
|
||||||
"MenuBarViewWindow": "Window Size",
|
"MenuBarViewWindow": "Розмір вікна",
|
||||||
"MenuBarViewWindow720": "720p",
|
"MenuBarViewWindow720": "720p",
|
||||||
"MenuBarViewWindow1080": "1080p",
|
"MenuBarViewWindow1080": "1080p",
|
||||||
"MenuBarHelp": "_Допомога",
|
"MenuBarHelp": "_Допомога",
|
||||||
|
@ -89,11 +89,11 @@
|
||||||
"GameListContextMenuOpenModsDirectoryToolTip": "Відкриває каталог, який містить модифікації Додатків",
|
"GameListContextMenuOpenModsDirectoryToolTip": "Відкриває каталог, який містить модифікації Додатків",
|
||||||
"GameListContextMenuOpenSdModsDirectory": "Відкрити каталог модифікацій Atmosphere",
|
"GameListContextMenuOpenSdModsDirectory": "Відкрити каталог модифікацій Atmosphere",
|
||||||
"GameListContextMenuOpenSdModsDirectoryToolTip": "Відкриває альтернативний каталог SD-карти Atmosphere, що містить модифікації Додатків. Корисно для модифікацій, зроблених для реального обладнання.",
|
"GameListContextMenuOpenSdModsDirectoryToolTip": "Відкриває альтернативний каталог SD-карти Atmosphere, що містить модифікації Додатків. Корисно для модифікацій, зроблених для реального обладнання.",
|
||||||
"GameListContextMenuTrimXCI": "Check and Trim XCI File",
|
"GameListContextMenuTrimXCI": "Перевірка та Нарізка XCI Файлів",
|
||||||
"GameListContextMenuTrimXCIToolTip": "Check and Trim XCI File to Save Disk Space",
|
"GameListContextMenuTrimXCIToolTip": "Перевірка та Нарізка XCI Файлів для збереження місця на диску",
|
||||||
"StatusBarGamesLoaded": "{0}/{1} ігор завантажено",
|
"StatusBarGamesLoaded": "{0}/{1} ігор завантажено",
|
||||||
"StatusBarSystemVersion": "Версія системи: {0}",
|
"StatusBarSystemVersion": "Версія системи: {0}",
|
||||||
"StatusBarXCIFileTrimming": "Trimming XCI File '{0}'",
|
"StatusBarXCIFileTrimming": "Обрізано XCI Файлів '{0}'",
|
||||||
"LinuxVmMaxMapCountDialogTitle": "Виявлено низьку межу для відображення памʼяті",
|
"LinuxVmMaxMapCountDialogTitle": "Виявлено низьку межу для відображення памʼяті",
|
||||||
"LinuxVmMaxMapCountDialogTextPrimary": "Бажаєте збільшити значення vm.max_map_count на {0}",
|
"LinuxVmMaxMapCountDialogTextPrimary": "Бажаєте збільшити значення vm.max_map_count на {0}",
|
||||||
"LinuxVmMaxMapCountDialogTextSecondary": "Деякі ігри можуть спробувати створити більше відображень памʼяті, ніж дозволено наразі. Ryujinx завершить роботу, щойно цей ліміт буде перевищено.",
|
"LinuxVmMaxMapCountDialogTextSecondary": "Деякі ігри можуть спробувати створити більше відображень памʼяті, ніж дозволено наразі. Ryujinx завершить роботу, щойно цей ліміт буде перевищено.",
|
||||||
|
@ -107,15 +107,15 @@
|
||||||
"SettingsTabGeneralEnableDiscordRichPresence": "Увімкнути розширену присутність Discord",
|
"SettingsTabGeneralEnableDiscordRichPresence": "Увімкнути розширену присутність Discord",
|
||||||
"SettingsTabGeneralCheckUpdatesOnLaunch": "Перевіряти наявність оновлень під час запуску",
|
"SettingsTabGeneralCheckUpdatesOnLaunch": "Перевіряти наявність оновлень під час запуску",
|
||||||
"SettingsTabGeneralShowConfirmExitDialog": "Показати діалогове вікно «Підтвердити вихід».",
|
"SettingsTabGeneralShowConfirmExitDialog": "Показати діалогове вікно «Підтвердити вихід».",
|
||||||
"SettingsTabGeneralRememberWindowState": "Remember Window Size/Position",
|
"SettingsTabGeneralRememberWindowState": "Запам'ятати Розмір/Позицію вікна",
|
||||||
"SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)",
|
"SettingsTabGeneralShowTitleBar": "Показувати рядок заголовка (Потрібен перезапуск)",
|
||||||
"SettingsTabGeneralHideCursor": "Сховати вказівник:",
|
"SettingsTabGeneralHideCursor": "Сховати вказівник:",
|
||||||
"SettingsTabGeneralHideCursorNever": "Ніколи",
|
"SettingsTabGeneralHideCursorNever": "Ніколи",
|
||||||
"SettingsTabGeneralHideCursorOnIdle": "Сховати у режимі очікування",
|
"SettingsTabGeneralHideCursorOnIdle": "Сховати у режимі очікування",
|
||||||
"SettingsTabGeneralHideCursorAlways": "Завжди",
|
"SettingsTabGeneralHideCursorAlways": "Завжди",
|
||||||
"SettingsTabGeneralGameDirectories": "Тека ігор",
|
"SettingsTabGeneralGameDirectories": "Тека ігор",
|
||||||
"SettingsTabGeneralAutoloadDirectories": "Autoload DLC/Updates Directories",
|
"SettingsTabGeneralAutoloadDirectories": "Автозавантаження каталогів DLC/Оновлень",
|
||||||
"SettingsTabGeneralAutoloadNote": "DLC and Updates which refer to missing files will be unloaded automatically",
|
"SettingsTabGeneralAutoloadNote": "DLC та Оновлення, які посилаються на відсутні файли, будуть автоматично вимкнуті.",
|
||||||
"SettingsTabGeneralAdd": "Додати",
|
"SettingsTabGeneralAdd": "Додати",
|
||||||
"SettingsTabGeneralRemove": "Видалити",
|
"SettingsTabGeneralRemove": "Видалити",
|
||||||
"SettingsTabSystem": "Система",
|
"SettingsTabSystem": "Система",
|
||||||
|
@ -148,7 +148,18 @@
|
||||||
"SettingsTabSystemSystemLanguageTraditionalChinese": "Традиційна китайська",
|
"SettingsTabSystemSystemLanguageTraditionalChinese": "Традиційна китайська",
|
||||||
"SettingsTabSystemSystemTimeZone": "Часовий пояс системи:",
|
"SettingsTabSystemSystemTimeZone": "Часовий пояс системи:",
|
||||||
"SettingsTabSystemSystemTime": "Час системи:",
|
"SettingsTabSystemSystemTime": "Час системи:",
|
||||||
"SettingsTabSystemEnableVsync": "Вертикальна синхронізація",
|
"SettingsTabSystemVSyncMode": "Вертикальна синхронізація (VSync):",
|
||||||
|
"SettingsTabSystemEnableCustomVSyncInterval": "Увімкнути користувацьку частоту оновлення (Експериментально)",
|
||||||
|
"SettingsTabSystemVSyncModeSwitch": "Switch",
|
||||||
|
"SettingsTabSystemVSyncModeUnbounded": "Безмежна",
|
||||||
|
"SettingsTabSystemVSyncModeCustom": "Користувацька",
|
||||||
|
"SettingsTabSystemVSyncModeTooltip": "Емульована вертикальна синхронізація. 'Switch' емулює частоту оновлення Switch 60 Гц. 'Безмежна' — частота оновлення не матиме обмежень.",
|
||||||
|
"SettingsTabSystemVSyncModeTooltipCustom": "Емульована вертикальна синхронізація. 'Switch' емулює частоту оновлення Switch 60 Гц. 'Безмежна' — частота оновлення не матиме обмежень. 'Користувацька' емулює вказану користувацьку частоту оновлення.",
|
||||||
|
"SettingsTabSystemEnableCustomVSyncIntervalTooltip": "Дозволяє користувачу вказати емульовану частоту оновлення. У деяких іграх це може прискорити або сповільнити логіку гри. У інших іграх це може дозволити обмежити FPS на певні кратні частоти оновлення або призвести до непередбачуваної поведінки. Це експериментальна функція, без гарантій того, як це вплине на ігровий процес. \n\nЗалиште ВИМКНЕНИМ, якщо не впевнені.",
|
||||||
|
"SettingsTabSystemCustomVSyncIntervalValueTooltip": "Цільове значення користувацької частоти оновлення.",
|
||||||
|
"SettingsTabSystemCustomVSyncIntervalSliderTooltip": "Користувацька частота оновлення, як відсоток від стандартної частоти оновлення Switch.",
|
||||||
|
"SettingsTabSystemCustomVSyncIntervalPercentage": "Користувацька частота оновлення %:",
|
||||||
|
"SettingsTabSystemCustomVSyncIntervalValue": "Значення користувацька частота оновлення:",
|
||||||
"SettingsTabSystemEnablePptc": "PPTC (профільований постійний кеш перекладу)",
|
"SettingsTabSystemEnablePptc": "PPTC (профільований постійний кеш перекладу)",
|
||||||
"SettingsTabSystemEnableLowPowerPptc": "Low-power PPTC",
|
"SettingsTabSystemEnableLowPowerPptc": "Low-power PPTC",
|
||||||
"SettingsTabSystemEnableFsIntegrityChecks": "Перевірка цілісності FS",
|
"SettingsTabSystemEnableFsIntegrityChecks": "Перевірка цілісності FS",
|
||||||
|
@ -159,11 +170,11 @@
|
||||||
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
"SettingsTabSystemAudioBackendSDL2": "SDL2",
|
||||||
"SettingsTabSystemHacks": "Хитрощі",
|
"SettingsTabSystemHacks": "Хитрощі",
|
||||||
"SettingsTabSystemHacksNote": " (може викликати нестабільність)",
|
"SettingsTabSystemHacksNote": " (може викликати нестабільність)",
|
||||||
"SettingsTabSystemDramSize": "Використовувати альтернативне розташування пам'яті (розробники)",
|
"SettingsTabSystemDramSize": "Використовувати альтернативне розташування пам'яті (для розробників)",
|
||||||
"SettingsTabSystemDramSize4GiB": "4GiB",
|
"SettingsTabSystemDramSize4GiB": "4Гб",
|
||||||
"SettingsTabSystemDramSize6GiB": "6GiB",
|
"SettingsTabSystemDramSize6GiB": "6Гб",
|
||||||
"SettingsTabSystemDramSize8GiB": "8GiB",
|
"SettingsTabSystemDramSize8GiB": "8Гб",
|
||||||
"SettingsTabSystemDramSize12GiB": "12GiB",
|
"SettingsTabSystemDramSize12GiB": "12Гб",
|
||||||
"SettingsTabSystemIgnoreMissingServices": "Ігнорувати відсутні служби",
|
"SettingsTabSystemIgnoreMissingServices": "Ігнорувати відсутні служби",
|
||||||
"SettingsTabSystemIgnoreApplet": "Ігнорувати Аплет",
|
"SettingsTabSystemIgnoreApplet": "Ігнорувати Аплет",
|
||||||
"SettingsTabGraphics": "Графіка",
|
"SettingsTabGraphics": "Графіка",
|
||||||
|
@ -201,8 +212,8 @@
|
||||||
"SettingsTabLoggingEnableGuestLogs": "Увімкнути журнали гостей",
|
"SettingsTabLoggingEnableGuestLogs": "Увімкнути журнали гостей",
|
||||||
"SettingsTabLoggingEnableFsAccessLogs": "Увімкнути журнали доступу Fs",
|
"SettingsTabLoggingEnableFsAccessLogs": "Увімкнути журнали доступу Fs",
|
||||||
"SettingsTabLoggingFsGlobalAccessLogMode": "Режим журналу глобального доступу Fs:",
|
"SettingsTabLoggingFsGlobalAccessLogMode": "Режим журналу глобального доступу Fs:",
|
||||||
"SettingsTabLoggingDeveloperOptions": "Параметри розробника (УВАГА: знизиться продуктивність)",
|
"SettingsTabLoggingDeveloperOptions": "Параметри розробника (УВАГА: шкодить продуктивності!)",
|
||||||
"SettingsTabLoggingDeveloperOptionsNote": "УВАГА: Знижує продуктивність",
|
"SettingsTabLoggingDeveloperOptionsNote": "УВАГА: Зміна параметрів нижче негативно впливає на продуктивність",
|
||||||
"SettingsTabLoggingGraphicsBackendLogLevel": "Рівень журналу графічного сервера:",
|
"SettingsTabLoggingGraphicsBackendLogLevel": "Рівень журналу графічного сервера:",
|
||||||
"SettingsTabLoggingGraphicsBackendLogLevelNone": "Немає",
|
"SettingsTabLoggingGraphicsBackendLogLevelNone": "Немає",
|
||||||
"SettingsTabLoggingGraphicsBackendLogLevelError": "Помилка",
|
"SettingsTabLoggingGraphicsBackendLogLevelError": "Помилка",
|
||||||
|
@ -291,29 +302,29 @@
|
||||||
"ControllerSettingsMotionGyroDeadzone": "Мертва зона гіроскопа:",
|
"ControllerSettingsMotionGyroDeadzone": "Мертва зона гіроскопа:",
|
||||||
"ControllerSettingsSave": "Зберегти",
|
"ControllerSettingsSave": "Зберегти",
|
||||||
"ControllerSettingsClose": "Закрити",
|
"ControllerSettingsClose": "Закрити",
|
||||||
"KeyUnknown": "Unknown",
|
"KeyUnknown": "Невідома",
|
||||||
"KeyShiftLeft": "Shift Left",
|
"KeyShiftLeft": "Shift Лівий",
|
||||||
"KeyShiftRight": "Shift Right",
|
"KeyShiftRight": "Shift Правий",
|
||||||
"KeyControlLeft": "Ctrl Left",
|
"KeyControlLeft": "Ctrl Лівий",
|
||||||
"KeyMacControlLeft": "⌃ Left",
|
"KeyMacControlLeft": "⌃ Лівий",
|
||||||
"KeyControlRight": "Ctrl Right",
|
"KeyControlRight": "Ctrl Правий",
|
||||||
"KeyMacControlRight": "⌃ Right",
|
"KeyMacControlRight": "⌃ Правий",
|
||||||
"KeyAltLeft": "Alt Left",
|
"KeyAltLeft": "Alt Лівий",
|
||||||
"KeyMacAltLeft": "⌥ Left",
|
"KeyMacAltLeft": "⌥ Лівий",
|
||||||
"KeyAltRight": "Alt Right",
|
"KeyAltRight": "Alt Правий",
|
||||||
"KeyMacAltRight": "⌥ Right",
|
"KeyMacAltRight": "⌥ Правий",
|
||||||
"KeyWinLeft": "⊞ Left",
|
"KeyWinLeft": "⊞ Лівий",
|
||||||
"KeyMacWinLeft": "⌘ Left",
|
"KeyMacWinLeft": "⌘ Лівий",
|
||||||
"KeyWinRight": "⊞ Right",
|
"KeyWinRight": "⊞ Правий",
|
||||||
"KeyMacWinRight": "⌘ Right",
|
"KeyMacWinRight": "⌘ Правий",
|
||||||
"KeyMenu": "Menu",
|
"KeyMenu": "Menu",
|
||||||
"KeyUp": "Up",
|
"KeyUp": "Up",
|
||||||
"KeyDown": "Down",
|
"KeyDown": "Down",
|
||||||
"KeyLeft": "Left",
|
"KeyLeft": "Вліво",
|
||||||
"KeyRight": "Right",
|
"KeyRight": "Вправо",
|
||||||
"KeyEnter": "Enter",
|
"KeyEnter": "Enter",
|
||||||
"KeyEscape": "Escape",
|
"KeyEscape": "Escape",
|
||||||
"KeySpace": "Space",
|
"KeySpace": "Пробіл",
|
||||||
"KeyTab": "Tab",
|
"KeyTab": "Tab",
|
||||||
"KeyBackSpace": "Backspace",
|
"KeyBackSpace": "Backspace",
|
||||||
"KeyInsert": "Insert",
|
"KeyInsert": "Insert",
|
||||||
|
@ -327,7 +338,7 @@
|
||||||
"KeyPrintScreen": "Print Screen",
|
"KeyPrintScreen": "Print Screen",
|
||||||
"KeyPause": "Pause",
|
"KeyPause": "Pause",
|
||||||
"KeyNumLock": "Num Lock",
|
"KeyNumLock": "Num Lock",
|
||||||
"KeyClear": "Clear",
|
"KeyClear": "Очистити",
|
||||||
"KeyKeypad0": "Keypad 0",
|
"KeyKeypad0": "Keypad 0",
|
||||||
"KeyKeypad1": "Keypad 1",
|
"KeyKeypad1": "Keypad 1",
|
||||||
"KeyKeypad2": "Keypad 2",
|
"KeyKeypad2": "Keypad 2",
|
||||||
|
@ -366,17 +377,17 @@
|
||||||
"KeyPeriod": ".",
|
"KeyPeriod": ".",
|
||||||
"KeySlash": "/",
|
"KeySlash": "/",
|
||||||
"KeyBackSlash": "\\",
|
"KeyBackSlash": "\\",
|
||||||
"KeyUnbound": "Unbound",
|
"KeyUnbound": "Відв'язати",
|
||||||
"GamepadLeftStick": "L Stick Button",
|
"GamepadLeftStick": "L Кнопка Стіку",
|
||||||
"GamepadRightStick": "R Stick Button",
|
"GamepadRightStick": "R Кнопка Стіку",
|
||||||
"GamepadLeftShoulder": "Left Shoulder",
|
"GamepadLeftShoulder": "Лівий Бампер",
|
||||||
"GamepadRightShoulder": "Right Shoulder",
|
"GamepadRightShoulder": "Правий Бампер",
|
||||||
"GamepadLeftTrigger": "Left Trigger",
|
"GamepadLeftTrigger": "Лівий Тригер",
|
||||||
"GamepadRightTrigger": "Right Trigger",
|
"GamepadRightTrigger": "Правий Тригер",
|
||||||
"GamepadDpadUp": "Up",
|
"GamepadDpadUp": "Вверх",
|
||||||
"GamepadDpadDown": "Down",
|
"GamepadDpadDown": "Вниз",
|
||||||
"GamepadDpadLeft": "Left",
|
"GamepadDpadLeft": "Вліво",
|
||||||
"GamepadDpadRight": "Right",
|
"GamepadDpadRight": "Вправо",
|
||||||
"GamepadMinus": "-",
|
"GamepadMinus": "-",
|
||||||
"GamepadPlus": "+",
|
"GamepadPlus": "+",
|
||||||
"GamepadGuide": "Guide",
|
"GamepadGuide": "Guide",
|
||||||
|
@ -386,12 +397,12 @@
|
||||||
"GamepadPaddle3": "Paddle 3",
|
"GamepadPaddle3": "Paddle 3",
|
||||||
"GamepadPaddle4": "Paddle 4",
|
"GamepadPaddle4": "Paddle 4",
|
||||||
"GamepadTouchpad": "Touchpad",
|
"GamepadTouchpad": "Touchpad",
|
||||||
"GamepadSingleLeftTrigger0": "Left Trigger 0",
|
"GamepadSingleLeftTrigger0": "Лівий Тригер 0",
|
||||||
"GamepadSingleRightTrigger0": "Right Trigger 0",
|
"GamepadSingleRightTrigger0": "Правий Тригер 0",
|
||||||
"GamepadSingleLeftTrigger1": "Left Trigger 1",
|
"GamepadSingleLeftTrigger1": "Лівий Тригер 1",
|
||||||
"GamepadSingleRightTrigger1": "Right Trigger 1",
|
"GamepadSingleRightTrigger1": "Правий Тригер 1",
|
||||||
"StickLeft": "Left Stick",
|
"StickLeft": "Лівий Стік",
|
||||||
"StickRight": "Right Stick",
|
"StickRight": "Правий Стік",
|
||||||
"UserProfilesSelectedUserProfile": "Вибраний профіль користувача:",
|
"UserProfilesSelectedUserProfile": "Вибраний профіль користувача:",
|
||||||
"UserProfilesSaveProfileName": "Зберегти ім'я профілю",
|
"UserProfilesSaveProfileName": "Зберегти ім'я профілю",
|
||||||
"UserProfilesChangeProfileImage": "Змінити зображення профілю",
|
"UserProfilesChangeProfileImage": "Змінити зображення профілю",
|
||||||
|
@ -408,8 +419,8 @@
|
||||||
"InputDialogTitle": "Діалог введення",
|
"InputDialogTitle": "Діалог введення",
|
||||||
"InputDialogOk": "Гаразд",
|
"InputDialogOk": "Гаразд",
|
||||||
"InputDialogCancel": "Скасувати",
|
"InputDialogCancel": "Скасувати",
|
||||||
"InputDialogCancelling": "Cancelling",
|
"InputDialogCancelling": "Скасування",
|
||||||
"InputDialogClose": "Close",
|
"InputDialogClose": "Закрити",
|
||||||
"InputDialogAddNewProfileTitle": "Виберіть ім'я профілю",
|
"InputDialogAddNewProfileTitle": "Виберіть ім'я профілю",
|
||||||
"InputDialogAddNewProfileHeader": "Будь ласка, введіть ім'я профілю",
|
"InputDialogAddNewProfileHeader": "Будь ласка, введіть ім'я профілю",
|
||||||
"InputDialogAddNewProfileSubtext": "(Макс. довжина: {0})",
|
"InputDialogAddNewProfileSubtext": "(Макс. довжина: {0})",
|
||||||
|
@ -417,7 +428,7 @@
|
||||||
"AvatarSetBackgroundColor": "Встановити колір фону",
|
"AvatarSetBackgroundColor": "Встановити колір фону",
|
||||||
"AvatarClose": "Закрити",
|
"AvatarClose": "Закрити",
|
||||||
"ControllerSettingsLoadProfileToolTip": "Завантажити профіль",
|
"ControllerSettingsLoadProfileToolTip": "Завантажити профіль",
|
||||||
"ControllerSettingsViewProfileToolTip": "View Profile",
|
"ControllerSettingsViewProfileToolTip": "Показати профіль",
|
||||||
"ControllerSettingsAddProfileToolTip": "Додати профіль",
|
"ControllerSettingsAddProfileToolTip": "Додати профіль",
|
||||||
"ControllerSettingsRemoveProfileToolTip": "Видалити профіль",
|
"ControllerSettingsRemoveProfileToolTip": "Видалити профіль",
|
||||||
"ControllerSettingsSaveProfileToolTip": "Зберегти профіль",
|
"ControllerSettingsSaveProfileToolTip": "Зберегти профіль",
|
||||||
|
@ -427,7 +438,7 @@
|
||||||
"GameListContextMenuToggleFavorite": "Перемкнути вибране",
|
"GameListContextMenuToggleFavorite": "Перемкнути вибране",
|
||||||
"GameListContextMenuToggleFavoriteToolTip": "Перемкнути улюблений статус гри",
|
"GameListContextMenuToggleFavoriteToolTip": "Перемкнути улюблений статус гри",
|
||||||
"SettingsTabGeneralTheme": "Тема:",
|
"SettingsTabGeneralTheme": "Тема:",
|
||||||
"SettingsTabGeneralThemeAuto": "Auto",
|
"SettingsTabGeneralThemeAuto": "Авто.",
|
||||||
"SettingsTabGeneralThemeDark": "Темна",
|
"SettingsTabGeneralThemeDark": "Темна",
|
||||||
"SettingsTabGeneralThemeLight": "Світла",
|
"SettingsTabGeneralThemeLight": "Світла",
|
||||||
"ControllerSettingsConfigureGeneral": "Налаштування",
|
"ControllerSettingsConfigureGeneral": "Налаштування",
|
||||||
|
@ -446,7 +457,7 @@
|
||||||
"DialogExitSubMessage": "Усі незбережені дані буде втрачено!",
|
"DialogExitSubMessage": "Усі незбережені дані буде втрачено!",
|
||||||
"DialogMessageCreateSaveErrorMessage": "Під час створення вказаних даних збереження сталася помилка: {0}",
|
"DialogMessageCreateSaveErrorMessage": "Під час створення вказаних даних збереження сталася помилка: {0}",
|
||||||
"DialogMessageFindSaveErrorMessage": "Під час пошуку вказаних даних збереження сталася помилка: {0}",
|
"DialogMessageFindSaveErrorMessage": "Під час пошуку вказаних даних збереження сталася помилка: {0}",
|
||||||
"FolderDialogExtractTitle": "Виберіть папку для видобування",
|
"FolderDialogExtractTitle": "Виберіть теку для видобування",
|
||||||
"DialogNcaExtractionMessage": "Видобування розділу {0} з {1}...",
|
"DialogNcaExtractionMessage": "Видобування розділу {0} з {1}...",
|
||||||
"DialogNcaExtractionTitle": "Екстрактор розділів NCA",
|
"DialogNcaExtractionTitle": "Екстрактор розділів NCA",
|
||||||
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "Помилка видобування. Основний NCA не був присутній у вибраному файлі.",
|
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "Помилка видобування. Основний NCA не був присутній у вибраному файлі.",
|
||||||
|
@ -461,7 +472,7 @@
|
||||||
"DialogUpdaterExtractionMessage": "Видобування оновлення...",
|
"DialogUpdaterExtractionMessage": "Видобування оновлення...",
|
||||||
"DialogUpdaterRenamingMessage": "Перейменування оновлення...",
|
"DialogUpdaterRenamingMessage": "Перейменування оновлення...",
|
||||||
"DialogUpdaterAddingFilesMessage": "Додавання нового оновлення...",
|
"DialogUpdaterAddingFilesMessage": "Додавання нового оновлення...",
|
||||||
"DialogUpdaterShowChangelogMessage": "Show Changelog",
|
"DialogUpdaterShowChangelogMessage": "Показати список змін",
|
||||||
"DialogUpdaterCompleteMessage": "Оновлення завершено!",
|
"DialogUpdaterCompleteMessage": "Оновлення завершено!",
|
||||||
"DialogUpdaterRestartMessage": "Перезапустити Ryujinx зараз?",
|
"DialogUpdaterRestartMessage": "Перезапустити Ryujinx зараз?",
|
||||||
"DialogUpdaterNoInternetMessage": "Ви не підключені до Інтернету!",
|
"DialogUpdaterNoInternetMessage": "Ви не підключені до Інтернету!",
|
||||||
|
@ -510,12 +521,12 @@
|
||||||
"DialogFirmwareInstallerFirmwareInstallWaitMessage": "Встановлення прошивки...",
|
"DialogFirmwareInstallerFirmwareInstallWaitMessage": "Встановлення прошивки...",
|
||||||
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Версію системи {0} успішно встановлено.",
|
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Версію системи {0} успішно встановлено.",
|
||||||
"DialogKeysInstallerKeysNotFoundErrorMessage": "An invalid Keys file was found in {0}",
|
"DialogKeysInstallerKeysNotFoundErrorMessage": "An invalid Keys file was found in {0}",
|
||||||
"DialogKeysInstallerKeysInstallTitle": "Install Keys",
|
"DialogKeysInstallerKeysInstallTitle": "Встановлення Ключів",
|
||||||
"DialogKeysInstallerKeysInstallMessage": "New Keys file will be installed.",
|
"DialogKeysInstallerKeysInstallMessage": "Новий файл Ключів буде встановлено",
|
||||||
"DialogKeysInstallerKeysInstallSubMessage": "\n\nThis may replace some of the current installed Keys.",
|
"DialogKeysInstallerKeysInstallSubMessage": "\n\nЦе замінить собою поточні файли Ключів.",
|
||||||
"DialogKeysInstallerKeysInstallConfirmMessage": "\n\nDo you want to continue?",
|
"DialogKeysInstallerKeysInstallConfirmMessage": "\n\nВи хочете продовжити?",
|
||||||
"DialogKeysInstallerKeysInstallWaitMessage": "Installing Keys...",
|
"DialogKeysInstallerKeysInstallWaitMessage": "Встановлення Ключів...",
|
||||||
"DialogKeysInstallerKeysInstallSuccessMessage": "New Keys file successfully installed.",
|
"DialogKeysInstallerKeysInstallSuccessMessage": "Нові ключі встановлено.",
|
||||||
"DialogUserProfileDeletionWarningMessage": "Якщо вибраний профіль буде видалено, інші профілі не відкриватимуться",
|
"DialogUserProfileDeletionWarningMessage": "Якщо вибраний профіль буде видалено, інші профілі не відкриватимуться",
|
||||||
"DialogUserProfileDeletionConfirmMessage": "Ви хочете видалити вибраний профіль",
|
"DialogUserProfileDeletionConfirmMessage": "Ви хочете видалити вибраний профіль",
|
||||||
"DialogUserProfileUnsavedChangesTitle": "Увага — Незбережені зміни",
|
"DialogUserProfileUnsavedChangesTitle": "Увага — Незбережені зміни",
|
||||||
|
@ -550,17 +561,15 @@
|
||||||
"MenuBarOptionsPauseEmulation": "Пауза",
|
"MenuBarOptionsPauseEmulation": "Пауза",
|
||||||
"MenuBarOptionsResumeEmulation": "Продовжити",
|
"MenuBarOptionsResumeEmulation": "Продовжити",
|
||||||
"AboutUrlTooltipMessage": "Натисніть, щоб відкрити сайт Ryujinx у браузері за замовчування.",
|
"AboutUrlTooltipMessage": "Натисніть, щоб відкрити сайт Ryujinx у браузері за замовчування.",
|
||||||
"AboutDisclaimerMessage": "Ryujinx жодним чином не пов’язано з Nintendo™,\nчи будь-яким із їхніх партнерів.",
|
"AboutDisclaimerMessage": "Ryujinx жодним чином не пов’язаний з Nintendo™,\nчи будь-яким із їхніх партнерів.",
|
||||||
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) використовується в нашій емуляції Amiibo.",
|
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com) використовується в нашій емуляції Amiibo.",
|
||||||
"AboutPatreonUrlTooltipMessage": "Натисніть, щоб відкрити сторінку Patreon Ryujinx у вашому браузері за замовчування.",
|
|
||||||
"AboutGithubUrlTooltipMessage": "Натисніть, щоб відкрити сторінку GitHub Ryujinx у браузері за замовчуванням.",
|
"AboutGithubUrlTooltipMessage": "Натисніть, щоб відкрити сторінку GitHub Ryujinx у браузері за замовчуванням.",
|
||||||
"AboutDiscordUrlTooltipMessage": "Натисніть, щоб відкрити запрошення на сервер Discord Ryujinx у браузері за замовчуванням.",
|
"AboutDiscordUrlTooltipMessage": "Натисніть, щоб відкрити запрошення на сервер Discord Ryujinx у браузері за замовчуванням.",
|
||||||
"AboutTwitterUrlTooltipMessage": "Натисніть, щоб відкрити сторінку Twitter Ryujinx у браузері за замовчуванням.",
|
|
||||||
"AboutRyujinxAboutTitle": "Про програму:",
|
"AboutRyujinxAboutTitle": "Про програму:",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx — це емулятор для Nintendo Switch™.\nБудь ласка, підтримайте нас на Patreon.\nОтримуйте всі останні новини в нашому Twitter або Discord.\nРозробники, які хочуть зробити внесок, можуть дізнатися більше на нашому GitHub або в Discord.",
|
"AboutRyujinxAboutContent": "Ryujinx — це емулятор для Nintendo Switch™.\nОтримуйте всі останні новини в нашому Discord.\nРозробники, які хочуть зробити внесок, можуть дізнатися більше на нашому GitHub або в Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "Підтримується:",
|
"AboutRyujinxMaintainersTitle": "Підтримується:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Минулі розробники:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "Натисніть, щоб відкрити сторінку співавторів у вашому браузері за замовчування.",
|
"AboutRyujinxMaintainersContentTooltipMessage": "Натисніть, щоб відкрити сторінку співавторів у вашому браузері за замовчування.",
|
||||||
"AboutRyujinxSupprtersTitle": "Підтримується на Patreon:",
|
|
||||||
"AmiiboSeriesLabel": "Серія Amiibo",
|
"AmiiboSeriesLabel": "Серія Amiibo",
|
||||||
"AmiiboCharacterLabel": "Персонаж",
|
"AmiiboCharacterLabel": "Персонаж",
|
||||||
"AmiiboScanButtonLabel": "Сканувати",
|
"AmiiboScanButtonLabel": "Сканувати",
|
||||||
|
@ -587,9 +596,9 @@
|
||||||
"AddGameDirBoxTooltip": "Введіть каталог ігор, щоб додати до списку",
|
"AddGameDirBoxTooltip": "Введіть каталог ігор, щоб додати до списку",
|
||||||
"AddGameDirTooltip": "Додати каталог гри до списку",
|
"AddGameDirTooltip": "Додати каталог гри до списку",
|
||||||
"RemoveGameDirTooltip": "Видалити вибраний каталог гри",
|
"RemoveGameDirTooltip": "Видалити вибраний каталог гри",
|
||||||
"AddAutoloadDirBoxTooltip": "Enter an autoload directory to add to the list",
|
"AddAutoloadDirBoxTooltip": "Введіть шлях автозавантаження для додавання до списку",
|
||||||
"AddAutoloadDirTooltip": "Add an autoload directory to the list",
|
"AddAutoloadDirTooltip": "Додайте шлях автозавантаження для додавання до списку",
|
||||||
"RemoveAutoloadDirTooltip": "Remove selected autoload directory",
|
"RemoveAutoloadDirTooltip": "Видалити вибраний каталог автозавантаження",
|
||||||
"CustomThemeCheckTooltip": "Використовуйте користувацьку тему Avalonia для графічного інтерфейсу, щоб змінити вигляд меню емулятора",
|
"CustomThemeCheckTooltip": "Використовуйте користувацьку тему Avalonia для графічного інтерфейсу, щоб змінити вигляд меню емулятора",
|
||||||
"CustomThemePathTooltip": "Шлях до користувацької теми графічного інтерфейсу",
|
"CustomThemePathTooltip": "Шлях до користувацької теми графічного інтерфейсу",
|
||||||
"CustomThemeBrowseTooltip": "Огляд користувацької теми графічного інтерфейсу",
|
"CustomThemeBrowseTooltip": "Огляд користувацької теми графічного інтерфейсу",
|
||||||
|
@ -602,7 +611,7 @@
|
||||||
"TimeTooltip": "Змінити час системи",
|
"TimeTooltip": "Змінити час системи",
|
||||||
"VSyncToggleTooltip": "Емульована вертикальна синхронізація консолі. По суті, обмежувач кадрів для більшості ігор; його вимкнення може призвести до того, що ігри працюватимуть на вищій швидкості, екрани завантаження триватимуть довше чи зупинятимуться.\n\nМожна перемикати в грі гарячою клавішею (За умовчанням F1). Якщо ви плануєте вимкнути функцію, рекомендуємо зробити це через гарячу клавішу.\n\nЗалиште увімкненим, якщо не впевнені.",
|
"VSyncToggleTooltip": "Емульована вертикальна синхронізація консолі. По суті, обмежувач кадрів для більшості ігор; його вимкнення може призвести до того, що ігри працюватимуть на вищій швидкості, екрани завантаження триватимуть довше чи зупинятимуться.\n\nМожна перемикати в грі гарячою клавішею (За умовчанням F1). Якщо ви плануєте вимкнути функцію, рекомендуємо зробити це через гарячу клавішу.\n\nЗалиште увімкненим, якщо не впевнені.",
|
||||||
"PptcToggleTooltip": "Зберігає перекладені функції JIT, щоб їх не потрібно було перекладати кожного разу, коли гра завантажується.\n\nЗменшує заїкання та значно прискорює час завантаження після першого завантаження гри.\n\nЗалиште увімкненим, якщо не впевнені.",
|
"PptcToggleTooltip": "Зберігає перекладені функції JIT, щоб їх не потрібно було перекладати кожного разу, коли гра завантажується.\n\nЗменшує заїкання та значно прискорює час завантаження після першого завантаження гри.\n\nЗалиште увімкненим, якщо не впевнені.",
|
||||||
"LowPowerPptcToggleTooltip": "Load the PPTC using a third of the amount of cores.",
|
"LowPowerPptcToggleTooltip": "Завантажувати PPTC використовуючи третину від кількості ядер.",
|
||||||
"FsIntegrityToggleTooltip": "Перевіряє наявність пошкоджених файлів під час завантаження гри, і якщо виявлено пошкоджені файли, показує помилку хешу в журналі.\n\nНе впливає на продуктивність і призначений для усунення несправностей.\n\nЗалиште увімкненим, якщо не впевнені.",
|
"FsIntegrityToggleTooltip": "Перевіряє наявність пошкоджених файлів під час завантаження гри, і якщо виявлено пошкоджені файли, показує помилку хешу в журналі.\n\nНе впливає на продуктивність і призначений для усунення несправностей.\n\nЗалиште увімкненим, якщо не впевнені.",
|
||||||
"AudioBackendTooltip": "Змінює серверну частину, яка використовується для відтворення аудіо.\n\nSDL2 є кращим, тоді як OpenAL і SoundIO використовуються як резервні варіанти. Dummy не матиме звуку.\n\nВстановіть SDL2, якщо не впевнені.",
|
"AudioBackendTooltip": "Змінює серверну частину, яка використовується для відтворення аудіо.\n\nSDL2 є кращим, тоді як OpenAL і SoundIO використовуються як резервні варіанти. Dummy не матиме звуку.\n\nВстановіть SDL2, якщо не впевнені.",
|
||||||
"MemoryManagerTooltip": "Змінює спосіб відображення та доступу до гостьової пам’яті. Значно впливає на продуктивність емульованого ЦП.\n\nВстановіть «Неперевірений хост», якщо не впевнені.",
|
"MemoryManagerTooltip": "Змінює спосіб відображення та доступу до гостьової пам’яті. Значно впливає на продуктивність емульованого ЦП.\n\nВстановіть «Неперевірений хост», якщо не впевнені.",
|
||||||
|
@ -635,10 +644,10 @@
|
||||||
"DebugLogTooltip": "Друкує повідомлення журналу налагодження на консолі.\n\nВикористовуйте це лише за спеціальною вказівкою співробітника, оскільки це ускладнить читання журналів і погіршить роботу емулятора.",
|
"DebugLogTooltip": "Друкує повідомлення журналу налагодження на консолі.\n\nВикористовуйте це лише за спеціальною вказівкою співробітника, оскільки це ускладнить читання журналів і погіршить роботу емулятора.",
|
||||||
"LoadApplicationFileTooltip": "Відкриває файловий провідник, щоб вибрати для завантаження сумісний файл Switch",
|
"LoadApplicationFileTooltip": "Відкриває файловий провідник, щоб вибрати для завантаження сумісний файл Switch",
|
||||||
"LoadApplicationFolderTooltip": "Відкриває файловий провідник, щоб вибрати сумісну з комутатором розпаковану програму для завантаження",
|
"LoadApplicationFolderTooltip": "Відкриває файловий провідник, щоб вибрати сумісну з комутатором розпаковану програму для завантаження",
|
||||||
"LoadDlcFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load DLC from",
|
"LoadDlcFromFolderTooltip": "Відкрийте провідник файлів, щоб вибрати одну або кілька папок для масового завантаження DLC",
|
||||||
"LoadTitleUpdatesFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load title updates from",
|
"LoadTitleUpdatesFromFolderTooltip": "Відкрийте провідник файлів, щоб вибрати одну або кілька папок для масового завантаження оновлень заголовків",
|
||||||
"OpenRyujinxFolderTooltip": "Відкриває папку файлової системи Ryujinx",
|
"OpenRyujinxFolderTooltip": "Відкриває теку файлової системи Ryujinx",
|
||||||
"OpenRyujinxLogsTooltip": "Відкриває папку, куди записуються журнали",
|
"OpenRyujinxLogsTooltip": "Відкриває теку, куди записуються журнали",
|
||||||
"ExitTooltip": "Виходить з Ryujinx",
|
"ExitTooltip": "Виходить з Ryujinx",
|
||||||
"OpenSettingsTooltip": "Відкриває вікно налаштувань",
|
"OpenSettingsTooltip": "Відкриває вікно налаштувань",
|
||||||
"OpenProfileManagerTooltip": "Відкриває вікно диспетчера профілів користувачів",
|
"OpenProfileManagerTooltip": "Відкриває вікно диспетчера профілів користувачів",
|
||||||
|
@ -666,7 +675,6 @@
|
||||||
"SettingsTabNetworkConnection": "Підключення до мережі",
|
"SettingsTabNetworkConnection": "Підключення до мережі",
|
||||||
"SettingsTabCpuCache": "Кеш ЦП",
|
"SettingsTabCpuCache": "Кеш ЦП",
|
||||||
"SettingsTabCpuMemory": "Пам'ять ЦП",
|
"SettingsTabCpuMemory": "Пам'ять ЦП",
|
||||||
"DialogUpdaterFlatpakNotSupportedMessage": "Будь ласка, оновіть Ryujinx через FlatHub.",
|
|
||||||
"UpdaterDisabledWarningTitle": "Програму оновлення вимкнено!",
|
"UpdaterDisabledWarningTitle": "Програму оновлення вимкнено!",
|
||||||
"ControllerSettingsRotate90": "Повернути на 90° за годинниковою стрілкою",
|
"ControllerSettingsRotate90": "Повернути на 90° за годинниковою стрілкою",
|
||||||
"IconSize": "Розмір значка",
|
"IconSize": "Розмір значка",
|
||||||
|
@ -688,14 +696,14 @@
|
||||||
"OpenSetupGuideMessage": "Відкрити посібник із налаштування",
|
"OpenSetupGuideMessage": "Відкрити посібник із налаштування",
|
||||||
"NoUpdate": "Немає оновлень",
|
"NoUpdate": "Немає оновлень",
|
||||||
"TitleUpdateVersionLabel": "Версія {0} - {1}",
|
"TitleUpdateVersionLabel": "Версія {0} - {1}",
|
||||||
"TitleBundledUpdateVersionLabel": "Bundled: Version {0}",
|
"TitleBundledUpdateVersionLabel": "Комплектні: Версія {0}",
|
||||||
"TitleBundledDlcLabel": "Bundled:",
|
"TitleBundledDlcLabel": "Комплектні:",
|
||||||
"TitleXCIStatusPartialLabel": "Partial",
|
"TitleXCIStatusPartialLabel": "Часткові",
|
||||||
"TitleXCIStatusTrimmableLabel": "Untrimmed",
|
"TitleXCIStatusTrimmableLabel": "Необрізані",
|
||||||
"TitleXCIStatusUntrimmableLabel": "Trimmed",
|
"TitleXCIStatusUntrimmableLabel": "Обрізані",
|
||||||
"TitleXCIStatusFailedLabel": "(Failed)",
|
"TitleXCIStatusFailedLabel": "(Невдача)",
|
||||||
"TitleXCICanSaveLabel": "Save {0:n0} Mb",
|
"TitleXCICanSaveLabel": "Зберегти {0:n0} Мб",
|
||||||
"TitleXCISavingLabel": "Saved {0:n0} Mb",
|
"TitleXCISavingLabel": "Збережено {0:n0} Мб",
|
||||||
"RyujinxInfo": "Ryujin x - Інформація",
|
"RyujinxInfo": "Ryujin x - Інформація",
|
||||||
"RyujinxConfirm": "Ryujinx - Підтвердження",
|
"RyujinxConfirm": "Ryujinx - Підтвердження",
|
||||||
"FileDialogAllTypes": "Всі типи",
|
"FileDialogAllTypes": "Всі типи",
|
||||||
|
@ -703,8 +711,8 @@
|
||||||
"SwkbdMinCharacters": "Мінімальна кількість символів: {0}",
|
"SwkbdMinCharacters": "Мінімальна кількість символів: {0}",
|
||||||
"SwkbdMinRangeCharacters": "Має бути {0}-{1} символів",
|
"SwkbdMinRangeCharacters": "Має бути {0}-{1} символів",
|
||||||
"CabinetTitle": "Cabinet Dialog",
|
"CabinetTitle": "Cabinet Dialog",
|
||||||
"CabinetDialog": "Enter your Amiibo's new name",
|
"CabinetDialog": "Вкажіть Ваше нове ім'я Amiibo",
|
||||||
"CabinetScanDialog": "Please scan your Amiibo now.",
|
"CabinetScanDialog": "Будь ласка, проскануйте Ваш Amiibo.",
|
||||||
"SoftwareKeyboard": "Програмна клавіатура",
|
"SoftwareKeyboard": "Програмна клавіатура",
|
||||||
"SoftwareKeyboardModeNumeric": "Повинно бути лише 0-9 або “.”",
|
"SoftwareKeyboardModeNumeric": "Повинно бути лише 0-9 або “.”",
|
||||||
"SoftwareKeyboardModeAlphabet": "Повинно бути лише не CJK-символи",
|
"SoftwareKeyboardModeAlphabet": "Повинно бути лише не CJK-символи",
|
||||||
|
@ -732,12 +740,15 @@
|
||||||
"AllSupportedFormats": "Усі підтримувані формати",
|
"AllSupportedFormats": "Усі підтримувані формати",
|
||||||
"RyujinxUpdater": "Програма оновлення Ryujinx",
|
"RyujinxUpdater": "Програма оновлення Ryujinx",
|
||||||
"SettingsTabHotkeys": "Гарячі клавіші клавіатури",
|
"SettingsTabHotkeys": "Гарячі клавіші клавіатури",
|
||||||
|
"SettingsTabHotkeysToggleVSyncModeHotkey": "Перемкнути VSync режим:",
|
||||||
"SettingsTabHotkeysHotkeys": "Гарячі клавіші клавіатури",
|
"SettingsTabHotkeysHotkeys": "Гарячі клавіші клавіатури",
|
||||||
"SettingsTabHotkeysToggleVsyncHotkey": "Увімк/вимк вертикальну синхронізацію:",
|
"SettingsTabHotkeysToggleVsyncHotkey": "Увімк/вимк вертикальну синхронізацію:",
|
||||||
"SettingsTabHotkeysScreenshotHotkey": "Знімок екрана:",
|
"SettingsTabHotkeysScreenshotHotkey": "Знімок екрана:",
|
||||||
"SettingsTabHotkeysShowUiHotkey": "Показати інтерфейс:",
|
"SettingsTabHotkeysShowUiHotkey": "Показати інтерфейс:",
|
||||||
"SettingsTabHotkeysPauseHotkey": "Пауза:",
|
"SettingsTabHotkeysPauseHotkey": "Пауза:",
|
||||||
"SettingsTabHotkeysToggleMuteHotkey": "Вимкнути звук:",
|
"SettingsTabHotkeysToggleMuteHotkey": "Вимкнути звук:",
|
||||||
|
"SettingsTabHotkeysIncrementCustomVSyncIntervalHotkey": "Підвищити користувацьку частоту оновлення",
|
||||||
|
"SettingsTabHotkeysDecrementCustomVSyncIntervalHotkey": "Понизити користувацьку частоту оновлення",
|
||||||
"ControllerMotionTitle": "Налаштування керування рухом",
|
"ControllerMotionTitle": "Налаштування керування рухом",
|
||||||
"ControllerRumbleTitle": "Налаштування вібрації",
|
"ControllerRumbleTitle": "Налаштування вібрації",
|
||||||
"SettingsSelectThemeFileDialogTitle": "Виберіть файл теми",
|
"SettingsSelectThemeFileDialogTitle": "Виберіть файл теми",
|
||||||
|
@ -750,53 +761,53 @@
|
||||||
"SelectDlcDialogTitle": "Виберіть файли DLC",
|
"SelectDlcDialogTitle": "Виберіть файли DLC",
|
||||||
"SelectUpdateDialogTitle": "Виберіть файли оновлення",
|
"SelectUpdateDialogTitle": "Виберіть файли оновлення",
|
||||||
"SelectModDialogTitle": "Виберіть теку з модами",
|
"SelectModDialogTitle": "Виберіть теку з модами",
|
||||||
"TrimXCIFileDialogTitle": "Check and Trim XCI File",
|
"TrimXCIFileDialogTitle": "Перевірити та Обрізати XCI файл",
|
||||||
"TrimXCIFileDialogPrimaryText": "This function will first check the empty space and then trim the XCI File to save disk space.",
|
"TrimXCIFileDialogPrimaryText": "Ця функція спочатку перевірить вільний простір, а потім обрізатиме файл XCI для економії місця на диску.",
|
||||||
"TrimXCIFileDialogSecondaryText": "Current File Size: {0:n} MB\nGame Data Size: {1:n} MB\nDisk Space Savings: {2:n} MB",
|
"TrimXCIFileDialogSecondaryText": "Поточний розмір файла: {0:n} MB\nРозмір файлів гри: {1:n} MB\nЕкономія місця: {2:n} MB",
|
||||||
"TrimXCIFileNoTrimNecessary": "XCI File does not need to be trimmed. Check logs for further details",
|
"TrimXCIFileNoTrimNecessary": "XCI файл не потребує обрізання. Перевірте журнали для додаткової інформації",
|
||||||
"TrimXCIFileNoUntrimPossible": "XCI File cannot be untrimmed. Check logs for further details",
|
"TrimXCIFileNoUntrimPossible": "XCI файл не може бути обрізаний. Перевірте журнали для додаткової інформації",
|
||||||
"TrimXCIFileReadOnlyFileCannotFix": "XCI File is Read Only and could not be made writable. Check logs for further details",
|
"TrimXCIFileReadOnlyFileCannotFix": "XCI файл Тільки для Читання і не може бути прочитаним. Перевірте журнали додаткової інформації",
|
||||||
"TrimXCIFileFileSizeChanged": "XCI File has changed in size since it was scanned. Please check the file is not being written to and try again.",
|
"TrimXCIFileFileSizeChanged": "Розмір файлу XCI змінився з моменту сканування. Перевірте, чи не записується файл, та спробуйте знову",
|
||||||
"TrimXCIFileFreeSpaceCheckFailed": "XCI File has data in the free space area, it is not safe to trim",
|
"TrimXCIFileFreeSpaceCheckFailed": "Файл XCI містить дані в зоні вільного простору, тому обрізка небезпечна",
|
||||||
"TrimXCIFileInvalidXCIFile": "XCI File contains invalid data. Check logs for further details",
|
"TrimXCIFileInvalidXCIFile": "XCI Файл містить недійсні дані. Перевірте журнали для додаткової інформації",
|
||||||
"TrimXCIFileFileIOWriteError": "XCI File could not be opened for writing. Check logs for further details",
|
"TrimXCIFileFileIOWriteError": "XCI Файл файл не вдалося відкрити для запису. Перевірте журнали для додаткової інформації",
|
||||||
"TrimXCIFileFailedPrimaryText": "Trimming of the XCI file failed",
|
"TrimXCIFileFailedPrimaryText": "Не вдалося обрізати файл XCI",
|
||||||
"TrimXCIFileCancelled": "The operation was cancelled",
|
"TrimXCIFileCancelled": "Операція перервана",
|
||||||
"TrimXCIFileFileUndertermined": "No operation was performed",
|
"TrimXCIFileFileUndertermined": "Операція не проводилася",
|
||||||
"UserProfileWindowTitle": "Менеджер профілів користувачів",
|
"UserProfileWindowTitle": "Менеджер профілів користувачів",
|
||||||
"CheatWindowTitle": "Менеджер читів",
|
"CheatWindowTitle": "Менеджер читів",
|
||||||
"DlcWindowTitle": "Менеджер вмісту для завантаження",
|
"DlcWindowTitle": "Менеджер вмісту для завантаження",
|
||||||
"ModWindowTitle": "Керувати модами для {0} ({1})",
|
"ModWindowTitle": "Керувати модами для {0} ({1})",
|
||||||
"UpdateWindowTitle": "Менеджер оновлення назв",
|
"UpdateWindowTitle": "Менеджер оновлення назв",
|
||||||
"XCITrimmerWindowTitle": "XCI File Trimmer",
|
"XCITrimmerWindowTitle": "Обрізка XCI Файлів",
|
||||||
"XCITrimmerTitleStatusCount": "{0} of {1} Title(s) Selected",
|
"XCITrimmerTitleStatusCount": "{0} з {1} тайтл(ів) обрано",
|
||||||
"XCITrimmerTitleStatusCountWithFilter": "{0} of {1} Title(s) Selected ({2} displayed)",
|
"XCITrimmerTitleStatusCountWithFilter": "{0} з {1} тайтл(ів) обрано ({2} відображається)",
|
||||||
"XCITrimmerTitleStatusTrimming": "Trimming {0} Title(s)...",
|
"XCITrimmerTitleStatusTrimming": "Обрізка {0} тайтл(ів)...",
|
||||||
"XCITrimmerTitleStatusUntrimming": "Untrimming {0} Title(s)...",
|
"XCITrimmerTitleStatusUntrimming": "Необрізаних {0} тайтл(ів)...",
|
||||||
"XCITrimmerTitleStatusFailed": "Failed",
|
"XCITrimmerTitleStatusFailed": "Невдача",
|
||||||
"XCITrimmerPotentialSavings": "Potential Savings",
|
"XCITrimmerPotentialSavings": "Потенційна економія",
|
||||||
"XCITrimmerActualSavings": "Actual Savings",
|
"XCITrimmerActualSavings": "Зекономлено",
|
||||||
"XCITrimmerSavingsMb": "{0:n0} Mb",
|
"XCITrimmerSavingsMb": "{0:n0} Мб",
|
||||||
"XCITrimmerSelectDisplayed": "Select Shown",
|
"XCITrimmerSelectDisplayed": "Вибрати показане",
|
||||||
"XCITrimmerDeselectDisplayed": "Deselect Shown",
|
"XCITrimmerDeselectDisplayed": "Скасувати вибір показаного",
|
||||||
"XCITrimmerSortName": "Title",
|
"XCITrimmerSortName": "Заголовок",
|
||||||
"XCITrimmerSortSaved": "Space Savings",
|
"XCITrimmerSortSaved": "Економія місця",
|
||||||
"XCITrimmerTrim": "Trim",
|
"XCITrimmerTrim": "Обрізка",
|
||||||
"XCITrimmerUntrim": "Untrim",
|
"XCITrimmerUntrim": "Зшивання",
|
||||||
"UpdateWindowUpdateAddedMessage": "{0} new update(s) added",
|
"UpdateWindowUpdateAddedMessage": "{0} нове оновлення додано",
|
||||||
"UpdateWindowBundledContentNotice": "Bundled updates cannot be removed, only disabled.",
|
"UpdateWindowBundledContentNotice": "Вбудовані оновлення не можуть бути видалені, лише вимкнені.",
|
||||||
"CheatWindowHeading": "Коди доступні для {0} [{1}]",
|
"CheatWindowHeading": "Коди доступні для {0} [{1}]",
|
||||||
"BuildId": "ID збірки:",
|
"BuildId": "ID збірки:",
|
||||||
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
|
"DlcWindowBundledContentNotice": "Вбудований DLC не може бути видаленим, лише вимкненим.",
|
||||||
"DlcWindowHeading": "Вміст для завантаження, доступний для {1} ({2}): {0}",
|
"DlcWindowHeading": "{0} DLC доступно",
|
||||||
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
|
"DlcWindowDlcAddedMessage": "{0} нового завантажувального вмісту додано",
|
||||||
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
|
"AutoloadDlcAddedMessage": "{0} нового завантажувального вмісту додано",
|
||||||
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
|
"AutoloadDlcRemovedMessage": "{0} відсутнього завантажувального вмісту видалено",
|
||||||
"AutoloadUpdateAddedMessage": "{0} new update(s) added",
|
"AutoloadUpdateAddedMessage": "{0} нових оновлень додано",
|
||||||
"AutoloadUpdateRemovedMessage": "{0} missing update(s) removed",
|
"AutoloadUpdateRemovedMessage": "{0} відсутніх оновлень видалено",
|
||||||
"ModWindowHeading": "{0} мод(ів)",
|
"ModWindowHeading": "{0} мод(ів)",
|
||||||
"UserProfilesEditProfile": "Редагувати вибране",
|
"UserProfilesEditProfile": "Редагувати вибране",
|
||||||
"Continue": "Continue",
|
"Continue": "Продовжити",
|
||||||
"Cancel": "Скасувати",
|
"Cancel": "Скасувати",
|
||||||
"Save": "Зберегти",
|
"Save": "Зберегти",
|
||||||
"Discard": "Скасувати",
|
"Discard": "Скасувати",
|
||||||
|
@ -834,7 +845,7 @@
|
||||||
"Name": "Назва",
|
"Name": "Назва",
|
||||||
"Size": "Розмір",
|
"Size": "Розмір",
|
||||||
"Search": "Пошук",
|
"Search": "Пошук",
|
||||||
"UserProfilesRecoverLostAccounts": "Відновлення втрачених облікових записів",
|
"UserProfilesRecoverLostAccounts": "Відновлення профілів",
|
||||||
"Recover": "Відновити",
|
"Recover": "Відновити",
|
||||||
"UserProfilesRecoverHeading": "Знайдено збереження для наступних облікових записів",
|
"UserProfilesRecoverHeading": "Знайдено збереження для наступних облікових записів",
|
||||||
"UserProfilesRecoverEmptyList": "Немає профілів для відновлення",
|
"UserProfilesRecoverEmptyList": "Немає профілів для відновлення",
|
||||||
|
@ -866,15 +877,15 @@
|
||||||
"MultiplayerModeDisabled": "Вимкнено",
|
"MultiplayerModeDisabled": "Вимкнено",
|
||||||
"MultiplayerModeLdnMitm": "ldn_mitm",
|
"MultiplayerModeLdnMitm": "ldn_mitm",
|
||||||
"MultiplayerModeLdnRyu": "RyuLDN",
|
"MultiplayerModeLdnRyu": "RyuLDN",
|
||||||
"MultiplayerDisableP2P": "Disable P2P Network Hosting (may increase latency)",
|
"MultiplayerDisableP2P": "Вимкнути хостинг P2P мережі (може збільшити затримку)",
|
||||||
"MultiplayerDisableP2PTooltip": "Disable P2P network hosting, peers will proxy through the master server instead of connecting to you directly.",
|
"MultiplayerDisableP2PTooltip": "Вимкнути хостинг P2P мережі, піри будуть підключатися через майстер-сервер замість прямого з'єднання з вами.",
|
||||||
"LdnPassphrase": "Network Passphrase:",
|
"LdnPassphrase": "Мережевий пароль:",
|
||||||
"LdnPassphraseTooltip": "You will only be able to see hosted games with the same passphrase as you.",
|
"LdnPassphraseTooltip": "Ви зможете бачити лише ті ігри, які мають такий самий пароль, як і у вас.",
|
||||||
"LdnPassphraseInputTooltip": "Enter a passphrase in the format Ryujinx-<8 hex chars>. You will only be able to see hosted games with the same passphrase as you.",
|
"LdnPassphraseInputTooltip": "Введіть пароль у форматі Ryujinx-<8 символів>. Ви зможете бачити лише ті ігри, які мають такий самий пароль, як і у вас.",
|
||||||
"LdnPassphraseInputPublic": "(public)",
|
"LdnPassphraseInputPublic": "(публічний)",
|
||||||
"GenLdnPass": "Generate Random",
|
"GenLdnPass": "Згенерувати випадкову",
|
||||||
"GenLdnPassTooltip": "Generates a new passphrase, which can be shared with other players.",
|
"GenLdnPassTooltip": "Генерує новий пароль, яким можна поділитися з іншими гравцями.",
|
||||||
"ClearLdnPass": "Clear",
|
"ClearLdnPass": "Очистити",
|
||||||
"ClearLdnPassTooltip": "Clears the current passphrase, returning to the public network.",
|
"ClearLdnPassTooltip": "Очищає поточну пароль, повертаючись до публічної мережі.",
|
||||||
"InvalidLdnPassphrase": "Invalid Passphrase! Must be in the format \"Ryujinx-<8 hex chars>\""
|
"InvalidLdnPassphrase": "Невірний пароль! Має бути в форматі \"Ryujinx-<8 символів>\""
|
||||||
}
|
}
|
||||||
|
|
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "在浏览器中打开 Ryujinx 模拟器官网。",
|
"AboutUrlTooltipMessage": "在浏览器中打开 Ryujinx 模拟器官网。",
|
||||||
"AboutDisclaimerMessage": "Ryujinx 与 Nintendo™ 以及其合作伙伴没有任何关联。",
|
"AboutDisclaimerMessage": "Ryujinx 与 Nintendo™ 以及其合作伙伴没有任何关联。",
|
||||||
"AboutAmiiboDisclaimerMessage": "我们的 Amiibo 模拟使用了\nAmiiboAPI (www.amiiboapi.com)。",
|
"AboutAmiiboDisclaimerMessage": "我们的 Amiibo 模拟使用了\nAmiiboAPI (www.amiiboapi.com)。",
|
||||||
"AboutPatreonUrlTooltipMessage": "在浏览器中打开 Ryujinx 的 Patreon 赞助页。",
|
|
||||||
"AboutGithubUrlTooltipMessage": "在浏览器中打开 Ryujinx 的 GitHub 代码库。",
|
"AboutGithubUrlTooltipMessage": "在浏览器中打开 Ryujinx 的 GitHub 代码库。",
|
||||||
"AboutDiscordUrlTooltipMessage": "在浏览器中打开 Ryujinx 的 Discord 邀请链接。",
|
"AboutDiscordUrlTooltipMessage": "在浏览器中打开 Ryujinx 的 Discord 邀请链接。",
|
||||||
"AboutTwitterUrlTooltipMessage": "在浏览器中打开 Ryujinx 的 Twitter 主页。",
|
|
||||||
"AboutRyujinxAboutTitle": "关于:",
|
"AboutRyujinxAboutTitle": "关于:",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx 是一款 Nintendo Switch™ 模拟器。\n您可以在 Patreon 上赞助 Ryujinx。\n关注 Twitter 或 Discord 可以获取模拟器最新动态。\n如果您对开发感兴趣,欢迎来 GitHub 或 Discord 加入我们!",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "开发维护人员名单:",
|
"AboutRyujinxMaintainersTitle": "开发维护人员名单:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "在浏览器中打开贡献者页面",
|
"AboutRyujinxMaintainersContentTooltipMessage": "在浏览器中打开贡献者页面",
|
||||||
"AboutRyujinxSupprtersTitle": "感谢 Patreon 上的赞助者:",
|
|
||||||
"AmiiboSeriesLabel": "Amiibo 系列",
|
"AmiiboSeriesLabel": "Amiibo 系列",
|
||||||
"AmiiboCharacterLabel": "角色",
|
"AmiiboCharacterLabel": "角色",
|
||||||
"AmiiboScanButtonLabel": "扫描",
|
"AmiiboScanButtonLabel": "扫描",
|
||||||
|
|
|
@ -552,15 +552,13 @@
|
||||||
"AboutUrlTooltipMessage": "在預設瀏覽器中開啟 Ryujinx 網站。",
|
"AboutUrlTooltipMessage": "在預設瀏覽器中開啟 Ryujinx 網站。",
|
||||||
"AboutDisclaimerMessage": "Ryujinx 和 Nintendo™\n或其任何合作夥伴完全沒有關聯。",
|
"AboutDisclaimerMessage": "Ryujinx 和 Nintendo™\n或其任何合作夥伴完全沒有關聯。",
|
||||||
"AboutAmiiboDisclaimerMessage": "我們在 Amiibo 模擬中\n使用了 AmiiboAPI (www.amiiboapi.com)。",
|
"AboutAmiiboDisclaimerMessage": "我們在 Amiibo 模擬中\n使用了 AmiiboAPI (www.amiiboapi.com)。",
|
||||||
"AboutPatreonUrlTooltipMessage": "在預設瀏覽器中開啟 Ryujinx 的 Patreon 網頁。",
|
|
||||||
"AboutGithubUrlTooltipMessage": "在預設瀏覽器中開啟 Ryujinx 的 GitHub 網頁。",
|
"AboutGithubUrlTooltipMessage": "在預設瀏覽器中開啟 Ryujinx 的 GitHub 網頁。",
|
||||||
"AboutDiscordUrlTooltipMessage": "在預設瀏覽器中開啟 Ryujinx 的 Discord 邀請連結。",
|
"AboutDiscordUrlTooltipMessage": "在預設瀏覽器中開啟 Ryujinx 的 Discord 邀請連結。",
|
||||||
"AboutTwitterUrlTooltipMessage": "在預設瀏覽器中開啟 Ryujinx 的 Twitter 網頁。",
|
|
||||||
"AboutRyujinxAboutTitle": "關於:",
|
"AboutRyujinxAboutTitle": "關於:",
|
||||||
"AboutRyujinxAboutContent": "Ryujinx 是一款 Nintendo Switch™ 模擬器。\n請在 Patreon 上支持我們。\n關注我們的 Twitter 或 Discord 取得所有最新消息。\n對於有興趣貢獻的開發者,可以在我們的 GitHub 或 Discord 上了解更多資訊。",
|
"AboutRyujinxAboutContent": "Ryujinx is an emulator for the Nintendo Switch™.\nGet all the latest news in our Discord.\nDevelopers interested in contributing can find out more on our GitHub or Discord.",
|
||||||
"AboutRyujinxMaintainersTitle": "維護者:",
|
"AboutRyujinxMaintainersTitle": "維護者:",
|
||||||
|
"AboutRyujinxFormerMaintainersTitle": "Formerly Maintained By:",
|
||||||
"AboutRyujinxMaintainersContentTooltipMessage": "在預設瀏覽器中開啟貢獻者的網頁",
|
"AboutRyujinxMaintainersContentTooltipMessage": "在預設瀏覽器中開啟貢獻者的網頁",
|
||||||
"AboutRyujinxSupprtersTitle": "Patreon 支持者:",
|
|
||||||
"AmiiboSeriesLabel": "Amiibo 系列",
|
"AmiiboSeriesLabel": "Amiibo 系列",
|
||||||
"AmiiboCharacterLabel": "角色",
|
"AmiiboCharacterLabel": "角色",
|
||||||
"AmiiboScanButtonLabel": "掃描",
|
"AmiiboScanButtonLabel": "掃描",
|
||||||
|
@ -788,7 +786,7 @@
|
||||||
"CheatWindowHeading": "可用於 {0} [{1}] 的密技",
|
"CheatWindowHeading": "可用於 {0} [{1}] 的密技",
|
||||||
"BuildId": "組建識別碼:",
|
"BuildId": "組建識別碼:",
|
||||||
"DlcWindowBundledContentNotice": "附帶的 DLC 只能被停用而無法被刪除。",
|
"DlcWindowBundledContentNotice": "附帶的 DLC 只能被停用而無法被刪除。",
|
||||||
"DlcWindowHeading": "{0} 個可下載內容",
|
"DlcWindowHeading": "{0} DLC(s) available",
|
||||||
"DlcWindowDlcAddedMessage": "已加入 {0} 個 DLC",
|
"DlcWindowDlcAddedMessage": "已加入 {0} 個 DLC",
|
||||||
"AutoloadDlcAddedMessage": "已加入 {0} 個 DLC",
|
"AutoloadDlcAddedMessage": "已加入 {0} 個 DLC",
|
||||||
"AutoloadDlcRemovedMessage": "已刪除 {0} 個遺失的 DLC",
|
"AutoloadDlcRemovedMessage": "已刪除 {0} 個遺失的 DLC",
|
||||||
|
|
|
@ -4,18 +4,6 @@
|
||||||
<ResourceDictionary x:Key="Default">
|
<ResourceDictionary x:Key="Default">
|
||||||
<SolidColorBrush x:Key="DataGridSelectionBackgroundBrush"
|
<SolidColorBrush x:Key="DataGridSelectionBackgroundBrush"
|
||||||
Color="{DynamicResource DataGridSelectionColor}" />
|
Color="{DynamicResource DataGridSelectionColor}" />
|
||||||
<SolidColorBrush x:Key="ThemeAccentColorBrush"
|
|
||||||
Color="{DynamicResource SystemAccentColor}" />
|
|
||||||
<SolidColorBrush x:Key="ThemeAccentBrush4"
|
|
||||||
Color="{DynamicResource ThemeAccentColor4}" />
|
|
||||||
<Color x:Key="SystemAccentColor">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="SystemAccentColorDark1">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="SystemAccentColorDark2">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="SystemAccentColorDark3">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="SystemAccentColorLight1">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="SystemAccentColorLight2">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="SystemAccentColorLight3">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="ThemeAccentColor4">#FFe8e8e8</Color>
|
|
||||||
<Color x:Key="DataGridSelectionColor">#FF00FABB</Color>
|
<Color x:Key="DataGridSelectionColor">#FF00FABB</Color>
|
||||||
<Color x:Key="ThemeContentBackgroundColor">#FFF0F0F0</Color>
|
<Color x:Key="ThemeContentBackgroundColor">#FFF0F0F0</Color>
|
||||||
<Color x:Key="ThemeControlBorderColor">#FFd6d6d6</Color>
|
<Color x:Key="ThemeControlBorderColor">#FFd6d6d6</Color>
|
||||||
|
@ -26,6 +14,7 @@
|
||||||
<Color x:Key="AppListBackgroundColor">#b3ffffff</Color>
|
<Color x:Key="AppListBackgroundColor">#b3ffffff</Color>
|
||||||
<Color x:Key="AppListHoverBackgroundColor">#80cccccc</Color>
|
<Color x:Key="AppListHoverBackgroundColor">#80cccccc</Color>
|
||||||
<Color x:Key="SecondaryTextColor">#A0000000</Color>
|
<Color x:Key="SecondaryTextColor">#A0000000</Color>
|
||||||
|
<Color x:Key="FavoriteApplicationIconColor">#fffcd12a</Color>
|
||||||
<Color x:Key="Switch">#FF2EEAC9</Color>
|
<Color x:Key="Switch">#FF2EEAC9</Color>
|
||||||
<Color x:Key="Unbounded">#FFFF4554</Color>
|
<Color x:Key="Unbounded">#FFFF4554</Color>
|
||||||
<Color x:Key="Custom">#6483F5</Color>
|
<Color x:Key="Custom">#6483F5</Color>
|
||||||
|
@ -33,18 +22,6 @@
|
||||||
<ResourceDictionary x:Key="Light">
|
<ResourceDictionary x:Key="Light">
|
||||||
<SolidColorBrush x:Key="DataGridSelectionBackgroundBrush"
|
<SolidColorBrush x:Key="DataGridSelectionBackgroundBrush"
|
||||||
Color="{DynamicResource DataGridSelectionColor}" />
|
Color="{DynamicResource DataGridSelectionColor}" />
|
||||||
<SolidColorBrush x:Key="ThemeAccentColorBrush"
|
|
||||||
Color="{DynamicResource SystemAccentColor}" />
|
|
||||||
<SolidColorBrush x:Key="ThemeAccentBrush4"
|
|
||||||
Color="{DynamicResource ThemeAccentColor4}" />
|
|
||||||
<Color x:Key="SystemAccentColor">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="SystemAccentColorDark1">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="SystemAccentColorDark2">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="SystemAccentColorDark3">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="SystemAccentColorLight1">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="SystemAccentColorLight2">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="SystemAccentColorLight3">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="ThemeAccentColor4">#FFe8e8e8</Color>
|
|
||||||
<Color x:Key="DataGridSelectionColor">#FF00FABB</Color>
|
<Color x:Key="DataGridSelectionColor">#FF00FABB</Color>
|
||||||
<Color x:Key="ThemeContentBackgroundColor">#FFF0F0F0</Color>
|
<Color x:Key="ThemeContentBackgroundColor">#FFF0F0F0</Color>
|
||||||
<Color x:Key="ThemeControlBorderColor">#FFd6d6d6</Color>
|
<Color x:Key="ThemeControlBorderColor">#FFd6d6d6</Color>
|
||||||
|
@ -59,18 +36,7 @@
|
||||||
<ResourceDictionary x:Key="Dark">
|
<ResourceDictionary x:Key="Dark">
|
||||||
<SolidColorBrush x:Key="DataGridSelectionBackgroundBrush"
|
<SolidColorBrush x:Key="DataGridSelectionBackgroundBrush"
|
||||||
Color="{DynamicResource DataGridSelectionColor}" />
|
Color="{DynamicResource DataGridSelectionColor}" />
|
||||||
<SolidColorBrush x:Key="ThemeAccentColorBrush"
|
|
||||||
Color="{DynamicResource SystemAccentColor}" />
|
|
||||||
<SolidColorBrush x:Key="ThemeAccentBrush4"
|
|
||||||
Color="{DynamicResource ThemeAccentColor4}" />
|
|
||||||
<Color x:Key="ControlFillColorSecondary">#008AA8</Color>
|
<Color x:Key="ControlFillColorSecondary">#008AA8</Color>
|
||||||
<Color x:Key="SystemAccentColor">#FF00C3E3</Color>
|
|
||||||
<Color x:Key="SystemAccentColorDark1">#FF99b000</Color>
|
|
||||||
<Color x:Key="SystemAccentColorDark2">#FF006d7d</Color>
|
|
||||||
<Color x:Key="SystemAccentColorDark3">#FF00525E</Color>
|
|
||||||
<Color x:Key="SystemAccentColorLight1">#FF00dbff</Color>
|
|
||||||
<Color x:Key="SystemAccentColorLight2">#FF19dfff</Color>
|
|
||||||
<Color x:Key="SystemAccentColorLight3">#FF33e3ff</Color>
|
|
||||||
<Color x:Key="DataGridSelectionColor">#FF00FABB</Color>
|
<Color x:Key="DataGridSelectionColor">#FF00FABB</Color>
|
||||||
<Color x:Key="ThemeContentBackgroundColor">#FF2D2D2D</Color>
|
<Color x:Key="ThemeContentBackgroundColor">#FF2D2D2D</Color>
|
||||||
<Color x:Key="ThemeControlBorderColor">#FF505050</Color>
|
<Color x:Key="ThemeControlBorderColor">#FF505050</Color>
|
||||||
|
|
|
@ -17,13 +17,13 @@ namespace Ryujinx.Ava.Common.Markup
|
||||||
public virtual string Name => "Item";
|
public virtual string Name => "Item";
|
||||||
public virtual Action<object, T?>? Setter => null;
|
public virtual Action<object, T?>? Setter => null;
|
||||||
|
|
||||||
protected abstract T? GetValue();
|
protected abstract T? Value { get; }
|
||||||
|
|
||||||
protected virtual void ConfigureBindingExtension(CompiledBindingExtension _) { }
|
protected virtual void ConfigureBindingExtension(CompiledBindingExtension _) { }
|
||||||
|
|
||||||
private ClrPropertyInfo PropertyInfo =>
|
private ClrPropertyInfo PropertyInfo =>
|
||||||
new(Name,
|
new(Name,
|
||||||
_ => GetValue(),
|
_ => Value,
|
||||||
Setter as Action<object, object?>,
|
Setter as Action<object, object?>,
|
||||||
typeof(T));
|
typeof(T));
|
||||||
|
|
||||||
|
|
|
@ -6,17 +6,17 @@ namespace Ryujinx.Ava.Common.Markup
|
||||||
{
|
{
|
||||||
internal class IconExtension(string iconString) : BasicMarkupExtension<Icon>
|
internal class IconExtension(string iconString) : BasicMarkupExtension<Icon>
|
||||||
{
|
{
|
||||||
protected override Icon GetValue() => new() { Value = iconString };
|
protected override Icon Value => new() { Value = iconString };
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class SpinningIconExtension(string iconString) : BasicMarkupExtension<Icon>
|
internal class SpinningIconExtension(string iconString) : BasicMarkupExtension<Icon>
|
||||||
{
|
{
|
||||||
protected override Icon GetValue() => new() { Value = iconString, Animation = IconAnimation.Spin };
|
protected override Icon Value => new() { Value = iconString, Animation = IconAnimation.Spin };
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class LocaleExtension(LocaleKeys key) : BasicMarkupExtension<string>
|
internal class LocaleExtension(LocaleKeys key) : BasicMarkupExtension<string>
|
||||||
{
|
{
|
||||||
protected override string GetValue() => LocaleManager.Instance[key];
|
protected override string Value => LocaleManager.Instance[key];
|
||||||
|
|
||||||
protected override void ConfigureBindingExtension(CompiledBindingExtension bindingExtension)
|
protected override void ConfigureBindingExtension(CompiledBindingExtension bindingExtension)
|
||||||
=> bindingExtension.Source = LocaleManager.Instance;
|
=> bindingExtension.Source = LocaleManager.Instance;
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
using Avalonia.Threading;
|
|
||||||
using Ryujinx.Ava.UI.ViewModels;
|
|
||||||
|
|
||||||
namespace Ryujinx.Ava.Common
|
|
||||||
{
|
|
||||||
internal class XCIFileTrimmerMainWindowLog : Ryujinx.Common.Logging.XCIFileTrimmerLog
|
|
||||||
{
|
|
||||||
private readonly MainWindowViewModel _viewModel;
|
|
||||||
|
|
||||||
public XCIFileTrimmerMainWindowLog(MainWindowViewModel viewModel)
|
|
||||||
{
|
|
||||||
_viewModel = viewModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Progress(long current, long total, string text, bool complete)
|
|
||||||
{
|
|
||||||
Dispatcher.UIThread.Post(() =>
|
|
||||||
{
|
|
||||||
_viewModel.StatusBarProgressMaximum = (int)(total);
|
|
||||||
_viewModel.StatusBarProgressValue = (int)(current);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
using Avalonia.Threading;
|
|
||||||
using Ryujinx.Ava.UI.ViewModels;
|
|
||||||
|
|
||||||
namespace Ryujinx.Ava.Common
|
|
||||||
{
|
|
||||||
internal class XCIFileTrimmerWindowLog : Ryujinx.Common.Logging.XCIFileTrimmerLog
|
|
||||||
{
|
|
||||||
private readonly XCITrimmerViewModel _viewModel;
|
|
||||||
|
|
||||||
public XCIFileTrimmerWindowLog(XCITrimmerViewModel viewModel)
|
|
||||||
{
|
|
||||||
_viewModel = viewModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Progress(long current, long total, string text, bool complete)
|
|
||||||
{
|
|
||||||
Dispatcher.UIThread.Post(() =>
|
|
||||||
{
|
|
||||||
_viewModel.SetProgress((int)(current), (int)(total));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
45
src/Ryujinx/Common/XCITrimmerLog.cs
Normal file
45
src/Ryujinx/Common/XCITrimmerLog.cs
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
using Avalonia.Threading;
|
||||||
|
using Ryujinx.Ava.UI.ViewModels;
|
||||||
|
|
||||||
|
namespace Ryujinx.Ava.Common
|
||||||
|
{
|
||||||
|
public static class XCITrimmerLog
|
||||||
|
{
|
||||||
|
internal class MainWindow : Ryujinx.Common.Logging.XCIFileTrimmerLog
|
||||||
|
{
|
||||||
|
private readonly MainWindowViewModel _viewModel;
|
||||||
|
|
||||||
|
public MainWindow(MainWindowViewModel viewModel)
|
||||||
|
{
|
||||||
|
_viewModel = viewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Progress(long current, long total, string text, bool complete)
|
||||||
|
{
|
||||||
|
Dispatcher.UIThread.Post(() =>
|
||||||
|
{
|
||||||
|
_viewModel.StatusBarProgressMaximum = (int)(total);
|
||||||
|
_viewModel.StatusBarProgressValue = (int)(current);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class TrimmerWindow : Ryujinx.Common.Logging.XCIFileTrimmerLog
|
||||||
|
{
|
||||||
|
private readonly XCITrimmerViewModel _viewModel;
|
||||||
|
|
||||||
|
public TrimmerWindow(XCITrimmerViewModel viewModel)
|
||||||
|
{
|
||||||
|
_viewModel = viewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Progress(long current, long total, string text, bool complete)
|
||||||
|
{
|
||||||
|
Dispatcher.UIThread.Post(() =>
|
||||||
|
{
|
||||||
|
_viewModel.SetProgress((int)(current), (int)(total));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -91,7 +91,7 @@
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
VerticalAlignment="Top"
|
VerticalAlignment="Top"
|
||||||
FontSize="16"
|
FontSize="16"
|
||||||
Foreground="{DynamicResource SystemAccentColor}"
|
Foreground="{DynamicResource FavoriteApplicationIconColor}"
|
||||||
IsVisible="{Binding Favorite}"
|
IsVisible="{Binding Favorite}"
|
||||||
Symbol="StarFilled" />
|
Symbol="StarFilled" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
@ -146,7 +146,7 @@
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
VerticalAlignment="Top"
|
VerticalAlignment="Top"
|
||||||
FontSize="16"
|
FontSize="16"
|
||||||
Foreground="{DynamicResource SystemAccentColor}"
|
Foreground="{DynamicResource FavoriteApplicationIconColor}"
|
||||||
IsVisible="{Binding Favorite}"
|
IsVisible="{Binding Favorite}"
|
||||||
Symbol="StarFilled" />
|
Symbol="StarFilled" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
@ -45,7 +45,9 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Developers => LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.AboutPageDeveloperListMore, "gdkchan, Ac_K, marysaka, rip in peri peri, LDj3SNuD, emmaus, Thealexbarney, GoffyDude, TSRBerry, IsaacMarovitz, GreemDev");
|
public string Developers => "GreemDev";
|
||||||
|
|
||||||
|
public string FormerDevelopers => LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.AboutPageDeveloperListMore, "gdkchan, Ac_K, marysaka, rip in peri peri, LDj3SNuD, emmaus, Thealexbarney, GoffyDude, TSRBerry, IsaacMarovitz");
|
||||||
|
|
||||||
public AboutWindowViewModel()
|
public AboutWindowViewModel()
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,6 +10,7 @@ using DynamicData;
|
||||||
using DynamicData.Binding;
|
using DynamicData.Binding;
|
||||||
using FluentAvalonia.UI.Controls;
|
using FluentAvalonia.UI.Controls;
|
||||||
using LibHac.Common;
|
using LibHac.Common;
|
||||||
|
using LibHac.Ns;
|
||||||
using Ryujinx.Ava.Common;
|
using Ryujinx.Ava.Common;
|
||||||
using Ryujinx.Ava.Common.Locale;
|
using Ryujinx.Ava.Common.Locale;
|
||||||
using Ryujinx.Ava.Input;
|
using Ryujinx.Ava.Input;
|
||||||
|
@ -401,7 +402,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
|
||||||
public bool OpenDeviceSaveDirectoryEnabled => !SelectedApplication.ControlHolder.ByteSpan.IsZeros() && SelectedApplication.ControlHolder.Value.DeviceSaveDataSize > 0;
|
public bool OpenDeviceSaveDirectoryEnabled => !SelectedApplication.ControlHolder.ByteSpan.IsZeros() && SelectedApplication.ControlHolder.Value.DeviceSaveDataSize > 0;
|
||||||
|
|
||||||
public bool TrimXCIEnabled => Ryujinx.Common.Utilities.XCIFileTrimmer.CanTrim(SelectedApplication.Path, new Common.XCIFileTrimmerMainWindowLog(this));
|
public bool TrimXCIEnabled => XCIFileTrimmer.CanTrim(SelectedApplication.Path, new XCITrimmerLog.MainWindow(this));
|
||||||
|
|
||||||
public bool OpenBcatSaveDirectoryEnabled => !SelectedApplication.ControlHolder.ByteSpan.IsZeros() && SelectedApplication.ControlHolder.Value.BcatDeliveryCacheStorageSize > 0;
|
public bool OpenBcatSaveDirectoryEnabled => !SelectedApplication.ControlHolder.ByteSpan.IsZeros() && SelectedApplication.ControlHolder.Value.BcatDeliveryCacheStorageSize > 0;
|
||||||
|
|
||||||
|
@ -1897,7 +1898,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task LoadApplication(ApplicationData application, bool startFullscreen = false)
|
public async Task LoadApplication(ApplicationData application, bool startFullscreen = false, BlitStruct<ApplicationControlProperty>? customNacpData = null)
|
||||||
{
|
{
|
||||||
if (AppHost != null)
|
if (AppHost != null)
|
||||||
{
|
{
|
||||||
|
@ -1935,7 +1936,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
this,
|
this,
|
||||||
TopLevel);
|
TopLevel);
|
||||||
|
|
||||||
if (!await AppHost.LoadGuestApplication())
|
if (!await AppHost.LoadGuestApplication(customNacpData))
|
||||||
{
|
{
|
||||||
AppHost.DisposeContext();
|
AppHost.DisposeContext();
|
||||||
AppHost = null;
|
AppHost = null;
|
||||||
|
@ -2164,7 +2165,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var trimmer = new XCIFileTrimmer(filename, new Common.XCIFileTrimmerMainWindowLog(this));
|
var trimmer = new XCIFileTrimmer(filename, new XCITrimmerLog.MainWindow(this));
|
||||||
|
|
||||||
if (trimmer.CanBeTrimmed)
|
if (trimmer.CanBeTrimmed)
|
||||||
{
|
{
|
||||||
|
|
|
@ -33,7 +33,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
private const string _FileExtXCI = "XCI";
|
private const string _FileExtXCI = "XCI";
|
||||||
|
|
||||||
private readonly Ryujinx.Common.Logging.XCIFileTrimmerLog _logger;
|
private readonly Ryujinx.Common.Logging.XCIFileTrimmerLog _logger;
|
||||||
private readonly ApplicationLibrary _applicationLibrary;
|
private ApplicationLibrary ApplicationLibrary => _mainWindowViewModel.ApplicationLibrary;
|
||||||
private Optional<XCITrimmerFileModel> _processingApplication = null;
|
private Optional<XCITrimmerFileModel> _processingApplication = null;
|
||||||
private AvaloniaList<XCITrimmerFileModel> _allXCIFiles = new();
|
private AvaloniaList<XCITrimmerFileModel> _allXCIFiles = new();
|
||||||
private AvaloniaList<XCITrimmerFileModel> _selectedXCIFiles = new();
|
private AvaloniaList<XCITrimmerFileModel> _selectedXCIFiles = new();
|
||||||
|
@ -47,15 +47,14 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
|
||||||
public XCITrimmerViewModel(MainWindowViewModel mainWindowViewModel)
|
public XCITrimmerViewModel(MainWindowViewModel mainWindowViewModel)
|
||||||
{
|
{
|
||||||
_logger = new XCIFileTrimmerWindowLog(this);
|
_logger = new XCITrimmerLog.TrimmerWindow(this);
|
||||||
_mainWindowViewModel = mainWindowViewModel;
|
_mainWindowViewModel = mainWindowViewModel;
|
||||||
_applicationLibrary = _mainWindowViewModel.ApplicationLibrary;
|
|
||||||
LoadXCIApplications();
|
LoadXCIApplications();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoadXCIApplications()
|
private void LoadXCIApplications()
|
||||||
{
|
{
|
||||||
var apps = _applicationLibrary.Applications.Items
|
var apps = ApplicationLibrary.Applications.Items
|
||||||
.Where(app => app.FileExtension == _FileExtXCI);
|
.Where(app => app.FileExtension == _FileExtXCI);
|
||||||
|
|
||||||
foreach (var xciApp in apps)
|
foreach (var xciApp in apps)
|
||||||
|
@ -68,7 +67,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
||||||
string path,
|
string path,
|
||||||
OperationOutcome operationOutcome = OperationOutcome.Undetermined)
|
OperationOutcome operationOutcome = OperationOutcome.Undetermined)
|
||||||
{
|
{
|
||||||
var xciApp = _applicationLibrary.Applications.Items.First(app => app.FileExtension == _FileExtXCI && app.Path == path);
|
var xciApp = ApplicationLibrary.Applications.Items.First(app => app.FileExtension == _FileExtXCI && app.Path == path);
|
||||||
return XCITrimmerFileModel.FromApplicationData(xciApp, _logger) with { ProcessingOutcome = operationOutcome };
|
return XCITrimmerFileModel.FromApplicationData(xciApp, _logger) with { ProcessingOutcome = operationOutcome };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,9 @@ using Avalonia.Controls;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
using Avalonia.Threading;
|
using Avalonia.Threading;
|
||||||
using Gommon;
|
using Gommon;
|
||||||
|
using LibHac.Common;
|
||||||
using LibHac.Ncm;
|
using LibHac.Ncm;
|
||||||
|
using LibHac.Ns;
|
||||||
using LibHac.Tools.FsSystem.NcaUtils;
|
using LibHac.Tools.FsSystem.NcaUtils;
|
||||||
using Ryujinx.Ava.Common.Locale;
|
using Ryujinx.Ava.Common.Locale;
|
||||||
using Ryujinx.Ava.UI.Helpers;
|
using Ryujinx.Ava.UI.Helpers;
|
||||||
|
@ -11,6 +13,7 @@ using Ryujinx.Ava.UI.ViewModels;
|
||||||
using Ryujinx.Ava.UI.Windows;
|
using Ryujinx.Ava.UI.Windows;
|
||||||
using Ryujinx.Common;
|
using Ryujinx.Common;
|
||||||
using Ryujinx.Common.Utilities;
|
using Ryujinx.Common.Utilities;
|
||||||
|
using Ryujinx.HLE;
|
||||||
using Ryujinx.UI.App.Common;
|
using Ryujinx.UI.App.Common;
|
||||||
using Ryujinx.UI.Common;
|
using Ryujinx.UI.Common;
|
||||||
using Ryujinx.UI.Common.Configuration;
|
using Ryujinx.UI.Common.Configuration;
|
||||||
|
@ -19,6 +22,7 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
namespace Ryujinx.Ava.UI.Views.Main
|
namespace Ryujinx.Ava.UI.Views.Main
|
||||||
{
|
{
|
||||||
|
@ -123,18 +127,24 @@ namespace Ryujinx.Ava.UI.Views.Main
|
||||||
|
|
||||||
public async void OpenMiiApplet(object sender, RoutedEventArgs e)
|
public async void OpenMiiApplet(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
string contentPath = ViewModel.ContentManager.GetInstalledContentPath(0x0100000000001009, StorageId.BuiltInSystem, NcaContentType.Program);
|
const string AppletName = "miiEdit";
|
||||||
|
const ulong AppletProgramId = 0x0100000000001009;
|
||||||
|
const string AppletVersion = "1.0.0";
|
||||||
|
|
||||||
|
string contentPath = ViewModel.ContentManager.GetInstalledContentPath(AppletProgramId, StorageId.BuiltInSystem, NcaContentType.Program);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(contentPath))
|
if (!string.IsNullOrEmpty(contentPath))
|
||||||
{
|
{
|
||||||
ApplicationData applicationData = new()
|
ApplicationData applicationData = new()
|
||||||
{
|
{
|
||||||
Name = "miiEdit",
|
Name = AppletName,
|
||||||
Id = 0x0100000000001009,
|
Id = AppletProgramId,
|
||||||
Path = contentPath,
|
Path = contentPath
|
||||||
};
|
};
|
||||||
|
|
||||||
await ViewModel.LoadApplication(applicationData, ViewModel.IsFullScreen || ViewModel.StartGamesInFullscreen);
|
var nacpData = StructHelpers.CreateCustomNacpData(AppletName, AppletVersion);
|
||||||
|
|
||||||
|
await ViewModel.LoadApplication(applicationData, ViewModel.IsFullScreen || ViewModel.StartGamesInFullscreen, nacpData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -165,7 +165,16 @@
|
||||||
Text="{ext:Locale AboutRyujinxMaintainersTitle}" />
|
Text="{ext:Locale AboutRyujinxMaintainersTitle}" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
FontSize="10"
|
FontSize="10"
|
||||||
Text="{Binding Developers}"
|
Margin="0, 0, 0, 5"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding Developers}"/>
|
||||||
|
<TextBlock
|
||||||
|
FontSize="15"
|
||||||
|
FontWeight="Bold"
|
||||||
|
Text="{ext:Locale AboutRyujinxFormerMaintainersTitle}" />
|
||||||
|
<TextBlock
|
||||||
|
FontSize="10"
|
||||||
|
Text="{Binding FormerDevelopers}"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
<Button
|
<Button
|
||||||
Padding="5"
|
Padding="5"
|
||||||
|
|
|
@ -33,7 +33,7 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
PrimaryButtonText = string.Empty,
|
PrimaryButtonText = string.Empty,
|
||||||
SecondaryButtonText = string.Empty,
|
SecondaryButtonText = string.Empty,
|
||||||
CloseButtonText = LocaleManager.Instance[LocaleKeys.UserProfilesClose],
|
CloseButtonText = LocaleManager.Instance[LocaleKeys.UserProfilesClose],
|
||||||
Content = new AboutWindow(),
|
Content = new AboutWindow()
|
||||||
};
|
};
|
||||||
|
|
||||||
Style closeButton = new(x => x.Name("CloseButton"));
|
Style closeButton = new(x => x.Name("CloseButton"));
|
||||||
|
|
|
@ -61,23 +61,17 @@ namespace Ryujinx.Ava.UI.Windows
|
||||||
|
|
||||||
private void RemoveDLC(object sender, RoutedEventArgs e)
|
private void RemoveDLC(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (sender is Button button)
|
if (sender is Button { DataContext: DownloadableContentModel dlc })
|
||||||
{
|
{
|
||||||
if (button.DataContext is DownloadableContentModel model)
|
ViewModel.Remove(dlc);
|
||||||
{
|
|
||||||
ViewModel.Remove(model);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OpenLocation(object sender, RoutedEventArgs e)
|
private void OpenLocation(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (sender is Button button)
|
if (sender is Button { DataContext: DownloadableContentModel dlc })
|
||||||
{
|
{
|
||||||
if (button.DataContext is DownloadableContentModel model)
|
OpenHelper.LocateFile(dlc.ContainerPath);
|
||||||
{
|
|
||||||
OpenHelper.LocateFile(model.ContainerPath);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,14 +74,7 @@ namespace Ryujinx.Ava
|
||||||
_platformExt = $"linux_{arch}.tar.gz";
|
_platformExt = $"linux_{arch}.tar.gz";
|
||||||
}
|
}
|
||||||
|
|
||||||
Version newVersion;
|
if (!Version.TryParse(Program.Version, out Version currentVersion))
|
||||||
Version currentVersion;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
currentVersion = Version.Parse(Program.Version);
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
{
|
||||||
Logger.Error?.Print(LogClass.Application, $"Failed to convert the current {App.FullAppName} version!");
|
Logger.Error?.Print(LogClass.Application, $"Failed to convert the current {App.FullAppName} version!");
|
||||||
|
|
||||||
|
@ -164,11 +157,7 @@ namespace Ryujinx.Ava
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
if (!Version.TryParse(_buildVer, out Version newVersion))
|
||||||
{
|
|
||||||
newVersion = Version.Parse(_buildVer);
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
{
|
||||||
Logger.Error?.Print(LogClass.Application, $"Failed to convert the received {App.FullAppName} version from GitHub!");
|
Logger.Error?.Print(LogClass.Application, $"Failed to convert the received {App.FullAppName} version from GitHub!");
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue