Compare commits

...

24 Commits

Author SHA1 Message Date
Evan Husted
285ee276b6 misc: Bake in value change logging into ReactiveObject to reduce logic duplication. 2024-11-10 22:03:12 -06:00
Evan Husted
617b81e209 UI: Conditionally enable install/uninstall file types buttons based on whether they're installed already 2024-11-10 20:33:49 -06:00
Evan Husted
eb6ce7bcb3 misc: chore: replace some new "" additions & some I missed 2024-11-10 20:09:02 -06:00
Evan Husted
69f75f2df1 misc: Fix small code formatting & styling issues 2024-11-10 19:58:02 -06:00
Evan Husted
10c8d73b60 UI: Ryujinx Canary title in NCA extractor 2024-11-10 19:10:02 -06:00
Evan Husted
e01a30016e RPC: Add Mario & Luigi Brothership image. 2024-11-10 17:01:47 -06:00
Evan Husted
e26625dfd5 UI: Disable XCI trimmer button when in-game 2024-11-10 16:17:36 -06:00
Evan Husted
9c82d98ec4 headless: Add Ignore Controller Applet as a configurable option 2024-11-10 15:48:07 -06:00
Evan Husted
4aae82bad1 misc: Small cleanups 2024-11-10 15:34:24 -06:00
Vladimir Sokolov
299be822c4 UI: fix: when switching players, it would show old config (#122)
When switching between players' gamepads while saving settings, then
returning to the previous player, the settings show the default settings
instead of the actual settings applied
2024-11-09 23:24:17 -06:00
Jacobwasbeast
b17e4f79fb Adds the ability to read a amiibo's nickname from the VirtualAmiiboFile (#217)
This feature adds a way to change the Amiibo's nickname inside Smash and
other places where it's used, so it’s not always "Ryujinx." However, I
did not add a GUI or create the Cabinet applet that would allow users to
change this. So you will have to go to system/amiibo and find your
amiibo id to change it.
2024-11-09 21:18:50 -06:00
Piplup
a7b58df3fe Appimage Round 2 (#73) 2024-11-09 19:30:19 -06:00
Jacobwasbeast
8c2d6192ba Add Dummy Applet to Replace NotImplementedException (#216)
Currently, in Ryujinx, if an app attempts to open an unimplemented
applet, it crashes. This change adds a dummy applet to send a dummy
response instead of crashing and logs the applet.
2024-11-09 19:28:12 -06:00
Evan Husted
2a23000fed Add Canary release badge & links 2024-11-08 19:54:36 -06:00
dependabot[bot]
ab7d0a2e6d nuget: bump Microsoft.IdentityModel.JsonWebTokens from 8.0.1 to 8.1.2 (#13) 2024-11-07 10:47:40 -06:00
WilliamWsyHK
bd2681b2f9 Add missing and update translations for zh-tw (#158)
Simply add back some missing translations and update outdated
translations for zh-tw.
2024-11-07 10:46:40 -06:00
Evan Husted
640d7f9e77 Updater: kinda confused how this didn't work? 2024-11-06 19:55:58 -06:00
Evan Husted
02e8278438 Merge remote-tracking branch 'origin/master' 2024-11-06 19:46:30 -06:00
Evan Husted
6acd86c890 Fix canary updater & checking if current build is canary. 2024-11-06 19:46:20 -06:00
Luke Warner
708256ce96 Add just, a whole bunch of games to RPC assets. (#98) 2024-11-06 19:22:40 -06:00
Evan Husted
5bf50836e1 i18n: missing comma in en_US locale 2024-11-06 18:24:30 -06:00
Evan Husted
730ba44043 misc: Canary-specific naming & other small changes I had that I need to push. 2024-11-06 18:23:27 -06:00
Kekschen
36c374cc7a fix: remove --deep (#188) 2024-11-06 18:18:59 -06:00
GabCoolGuy
75f714488e Add many missing locales to all languages (#160)
* Added many missing locales
2024-11-06 17:57:12 -06:00
70 changed files with 1049 additions and 555 deletions

View File

@@ -74,36 +74,36 @@ jobs:
chmod +x ./publish_sdl2_headless/Ryujinx.Headless.SDL2 ./publish_sdl2_headless/Ryujinx.sh chmod +x ./publish_sdl2_headless/Ryujinx.Headless.SDL2 ./publish_sdl2_headless/Ryujinx.sh
if: github.event_name == 'pull_request' && matrix.platform.os == 'ubuntu-latest' if: github.event_name == 'pull_request' && matrix.platform.os == 'ubuntu-latest'
#- name: Build AppImage - name: Build AppImage
# if: github.event_name == 'pull_request' && matrix.platform.os == 'ubuntu-latest' if: github.event_name == 'pull_request' && matrix.platform.os == 'ubuntu-latest'
# run: | run: |
# PLATFORM_NAME="${{ matrix.platform.name }}" PLATFORM_NAME="${{ matrix.platform.name }}"
# sudo apt install -y zsync desktop-file-utils appstream sudo apt install -y zsync desktop-file-utils appstream
# mkdir -p tools mkdir -p tools
# export PATH="$PATH:$(readlink -f tools)" export PATH="$PATH:$(readlink -f tools)"
# # Setup appimagetool # Setup appimagetool
# wget -q -O tools/appimagetool "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage" wget -q -O tools/appimagetool "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
# chmod +x tools/appimagetool chmod +x tools/appimagetool
# chmod +x distribution/linux/appimage/build-appimage.sh chmod +x distribution/linux/appimage/build-appimage.sh
# Explicitly set $ARCH for appimagetool ($ARCH_NAME is for the file name) # Explicitly set $ARCH for appimagetool ($ARCH_NAME is for the file name)
# if [ "$PLATFORM_NAME" = "linux-x64" ]; then if [ "$PLATFORM_NAME" = "linux-x64" ]; then
# ARCH_NAME=x64 ARCH_NAME=x64
# export ARCH=x86_64 export ARCH=x86_64
# elif [ "$PLATFORM_NAME" = "linux-arm64" ]; then elif [ "$PLATFORM_NAME" = "linux-arm64" ]; then
# ARCH_NAME=arm64 ARCH_NAME=arm64
# export ARCH=aarch64 export ARCH=aarch64
# else else
# echo "Unexpected PLATFORM_NAME "$PLATFORM_NAME"" echo "Unexpected PLATFORM_NAME "$PLATFORM_NAME""
# exit 1 exit 1
# fi fi
# export UFLAG="gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|*-$ARCH_NAME.AppImage.zsync" export UFLAG="gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|*-$ARCH_NAME.AppImage.zsync"
# BUILDDIR=publish OUTDIR=publish_appimage distribution/linux/appimage/build-appimage.sh BUILDDIR=publish OUTDIR=publish_appimage distribution/linux/appimage/build-appimage.sh
# shell: bash shell: bash
- name: Upload Ryujinx artifact - name: Upload Ryujinx artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
@@ -112,12 +112,12 @@ jobs:
path: publish path: publish
if: github.event_name == 'pull_request' && matrix.platform.os != 'macos-13' if: github.event_name == 'pull_request' && matrix.platform.os != 'macos-13'
#- name: Upload Ryujinx (AppImage) artifact - name: Upload Ryujinx (AppImage) artifact
# uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
# if: github.event_name == 'pull_request' && matrix.platform.os == 'ubuntu-latest' if: github.event_name == 'pull_request' && matrix.platform.os == 'ubuntu-latest'
# with: with:
# name: ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-${{ matrix.platform.zip_os_name }}-AppImage name: ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-${{ matrix.platform.zip_os_name }}-AppImage
# path: publish_appimage path: publish_appimage
- name: Upload Ryujinx.Headless.SDL2 artifact - name: Upload Ryujinx.Headless.SDL2 artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4

View File

@@ -101,83 +101,79 @@ jobs:
- name: Publish - name: Publish
run: | run: |
dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish_ava/publish -p:Version="${{ steps.version_info.outputs.build_version }}" -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx --self-contained -p:IncludeNativeLibrariesForSelfExtract=true dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish -p:Version="${{ steps.version_info.outputs.build_version }}" -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx --self-contained -p:IncludeNativeLibrariesForSelfExtract=true
dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish_sdl2_headless/publish -p:Version="${{ steps.version_info.outputs.build_version }}" -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx.Headless.SDL2 --self-contained -p:IncludeNativeLibrariesForSelfExtract=true dotnet publish -c Release -r "${{ matrix.platform.name }}" -o ./publish_sdl2_headless -p:Version="${{ steps.version_info.outputs.build_version }}" -p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" -p:DebugType=embedded src/Ryujinx.Headless.SDL2 --self-contained -p:IncludeNativeLibrariesForSelfExtract=true
- name: Packing Windows builds - name: Packing Windows builds
if: matrix.platform.os == 'windows-latest' if: matrix.platform.os == 'windows-latest'
run: | run: |
pushd publish_ava pushd publish
rm publish/libarmeilleure-jitsupport.dylib rm libarmeilleure-jitsupport.dylib
7z a ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip publish 7z a ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip ../publish
popd popd
pushd publish_sdl2_headless pushd publish_sdl2_headless
rm publish/libarmeilleure-jitsupport.dylib rm libarmeilleure-jitsupport.dylib
7z a ../release_output/sdl2-ryujinx-headless-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip publish 7z a ../release_output/sdl2-ryujinx-headless-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.zip ../publish
popd popd
shell: bash shell: bash
- name: Build AppImage (Linux)
if: matrix.platform.os == 'ubuntu-latest'
run: |
BUILD_VERSION="${{ steps.version_info.outputs.build_version }}"
PLATFORM_NAME="${{ matrix.platform.name }}"
sudo apt install -y zsync desktop-file-utils appstream
mkdir -p tools
export PATH="$PATH:$(readlink -f tools)"
# Setup appimagetool
wget -q -O tools/appimagetool "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
chmod +x tools/appimagetool
chmod +x distribution/linux/appimage/build-appimage.sh
# Explicitly set $ARCH for appimagetool ($ARCH_NAME is for the file name)
if [ "$PLATFORM_NAME" = "linux-x64" ]; then
ARCH_NAME=x64
export ARCH=x86_64
elif [ "$PLATFORM_NAME" = "linux-arm64" ]; then
ARCH_NAME=arm64
export ARCH=aarch64
else
echo "Unexpected PLATFORM_NAME "$PLATFORM_NAME""
exit 1
fi
export UFLAG="gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|*-$ARCH_NAME.AppImage.zsync"
BUILDDIR=publish OUTDIR=publish_appimage distribution/linux/appimage/build-appimage.sh
pushd publish_appimage
mv Ryujinx.AppImage ../release_output/ryujinx-$BUILD_VERSION-$ARCH_NAME.AppImage
mv Ryujinx.AppImage.zsync ../release_output/ryujinx-$BUILD_VERSION-$ARCH_NAME.AppImage.zsync
popd
shell: bash
- name: Packing Linux builds - name: Packing Linux builds
if: matrix.platform.os == 'ubuntu-latest' if: matrix.platform.os == 'ubuntu-latest'
run: | run: |
pushd publish_ava pushd publish
rm publish/libarmeilleure-jitsupport.dylib chmod +x Ryujinx.sh Ryujinx
chmod +x publish/Ryujinx.sh publish/Ryujinx tar -czvf ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz ../publish
tar -czvf ../release_output/ryujinx-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz publish
popd popd
pushd publish_sdl2_headless pushd publish_sdl2_headless
rm publish/libarmeilleure-jitsupport.dylib chmod +x Ryujinx.sh Ryujinx.Headless.SDL2
chmod +x publish/Ryujinx.sh publish/Ryujinx.Headless.SDL2 tar -czvf ../release_output/sdl2-ryujinx-headless-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz ../publish
tar -czvf ../release_output/sdl2-ryujinx-headless-${{ steps.version_info.outputs.build_version }}-${{ matrix.platform.zip_os_name }}.tar.gz publish
popd popd
shell: bash shell: bash
#- name: Build AppImage (Linux)
# if: matrix.platform.os == 'ubuntu-latest'
# run: |
# BUILD_VERSION="${{ steps.version_info.outputs.build_version }}"
# PLATFORM_NAME="${{ matrix.platform.name }}"
# sudo apt install -y zsync desktop-file-utils appstream
# mkdir -p tools
# export PATH="$PATH:$(readlink -f tools)"
# Setup appimagetool
# wget -q -O tools/appimagetool "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
# chmod +x tools/appimagetool
# chmod +x distribution/linux/appimage/build-appimage.sh
# Explicitly set $ARCH for appimagetool ($ARCH_NAME is for the file name)
# if [ "$PLATFORM_NAME" = "linux-x64" ]; then
# ARCH_NAME=x64
# export ARCH=x86_64
# elif [ "$PLATFORM_NAME" = "linux-arm64" ]; then
# ARCH_NAME=arm64
# export ARCH=aarch64
# else
# echo "Unexpected PLATFORM_NAME "$PLATFORM_NAME""
# exit 1
# fi
# export UFLAG="gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|*-$ARCH_NAME.AppImage.zsync"
# BUILDDIR=publish_ava OUTDIR=publish_ava_appimage distribution/linux/appimage/build-appimage.sh
# Add to release output
# pushd publish_ava_appimage
# mv Ryujinx.AppImage ../release_output/ryujinx-$BUILD_VERSION-$ARCH_NAME.AppImage
# mv Ryujinx.AppImage.zsync ../release_output/ryujinx-$BUILD_VERSION-$ARCH_NAME.AppImage.zsync
# popd
# shell: bash
- name: Pushing new release - name: Pushing new release
uses: ncipollo/release-action@v1 uses: ncipollo/release-action@v1
with: with:
name: ${{ steps.version_info.outputs.build_version }} name: ${{ steps.version_info.outputs.build_version }}
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/${{ steps.version_info.outputs.prev_build_version }}...${{ 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 }}"
omitBodyDuringUpdate: true omitBodyDuringUpdate: true
@@ -233,7 +229,7 @@ jobs:
- name: Publish macOS Ryujinx - name: Publish macOS Ryujinx
run: | run: |
./distribution/macos/create_macos_build_ava.sh . publish_tmp_ava publish_ava ./distribution/macos/entitlements.xml "${{ steps.version_info.outputs.build_version }}" "${{ steps.version_info.outputs.git_short_hash }}" Release ./distribution/macos/create_macos_build_ava.sh . publish_tmp_ava publish ./distribution/macos/entitlements.xml "${{ steps.version_info.outputs.build_version }}" "${{ steps.version_info.outputs.git_short_hash }}" Release
- name: Publish macOS Ryujinx.Headless.SDL2 - name: Publish macOS Ryujinx.Headless.SDL2
run: | run: |
@@ -243,7 +239,7 @@ jobs:
uses: ncipollo/release-action@v1 uses: ncipollo/release-action@v1
with: with:
name: ${{ steps.version_info.outputs.build_version }} name: ${{ steps.version_info.outputs.build_version }}
artifacts: "publish_ava/*.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: "**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

View File

@@ -22,7 +22,7 @@
<PackageVersion Include="LibHac" Version="0.19.0" /> <PackageVersion Include="LibHac" Version="0.19.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4" /> <PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.9.2" /> <PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.9.2" />
<PackageVersion Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.0.1" /> <PackageVersion Include="Microsoft.IdentityModel.JsonWebTokens" Version="8.1.2" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.9.0" /> <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageVersion Include="Microsoft.IO.RecyclableMemoryStream" Version="3.0.1" /> <PackageVersion Include="Microsoft.IO.RecyclableMemoryStream" Version="3.0.1" />
<PackageVersion Include="MsgPack.Cli" Version="1.0.1" /> <PackageVersion Include="MsgPack.Cli" Version="1.0.1" />

View File

@@ -14,6 +14,15 @@
<img src="https://img.shields.io/github/v/release/GreemDev/Ryujinx" <img src="https://img.shields.io/github/v/release/GreemDev/Ryujinx"
alt="Latest Release"> alt="Latest Release">
</a> </a>
<br>
<a href="https://github.com/GreemDev/Ryujinx/actions/workflows/canary.yml">
<img src="https://github.com/GreemDev/Ryujinx/actions/workflows/canary.yml/badge.svg"
alt="">
</a>
<a href="https://github.com/GreemDev/Ryujinx-Canary/releases/latest">
<img src="https://img.shields.io/github/v/release/GreemDev/Ryujinx-Canary?label=canary"
alt="Latest Canary Release">
</a>
</h1> </h1>
<p align="center"> <p align="center">

View File

@@ -46,5 +46,5 @@ then
rcodesign sign --entitlements-xml-path "$ENTITLEMENTS_FILE_PATH" "$APP_BUNDLE_DIRECTORY" rcodesign sign --entitlements-xml-path "$ENTITLEMENTS_FILE_PATH" "$APP_BUNDLE_DIRECTORY"
else else
echo "Usign codesign for ad-hoc signing" echo "Usign codesign for ad-hoc signing"
codesign --entitlements "$ENTITLEMENTS_FILE_PATH" -f --deep -s - "$APP_BUNDLE_DIRECTORY" codesign --entitlements "$ENTITLEMENTS_FILE_PATH" -f -s - "$APP_BUNDLE_DIRECTORY"
fi fi

View File

@@ -99,7 +99,7 @@ then
rcodesign sign --entitlements-xml-path "$ENTITLEMENTS_FILE_PATH" "$UNIVERSAL_APP_BUNDLE" rcodesign sign --entitlements-xml-path "$ENTITLEMENTS_FILE_PATH" "$UNIVERSAL_APP_BUNDLE"
else else
echo "Using codesign for ad-hoc signing" echo "Using codesign for ad-hoc signing"
codesign --entitlements "$ENTITLEMENTS_FILE_PATH" -f --deep -s - "$UNIVERSAL_APP_BUNDLE" codesign --entitlements "$ENTITLEMENTS_FILE_PATH" -f -s - "$UNIVERSAL_APP_BUNDLE"
fi fi
echo "Creating archive" echo "Creating archive"
@@ -111,4 +111,4 @@ rm "$RELEASE_TAR_FILE_NAME"
popd popd
echo "Done" echo "Done"

View File

@@ -95,7 +95,7 @@ else
echo "Using codesign for ad-hoc signing" echo "Using codesign for ad-hoc signing"
for FILE in "$UNIVERSAL_OUTPUT"/*; do for FILE in "$UNIVERSAL_OUTPUT"/*; do
if [[ $(file "$FILE") == *"Mach-O"* ]]; then if [[ $(file "$FILE") == *"Mach-O"* ]]; then
codesign --entitlements "$ENTITLEMENTS_FILE_PATH" -f --deep -s - "$FILE" codesign --entitlements "$ENTITLEMENTS_FILE_PATH" -f -s - "$FILE"
fi fi
done done
fi fi
@@ -108,4 +108,4 @@ gzip -9 < "$RELEASE_TAR_FILE_NAME" > "$RELEASE_TAR_FILE_NAME.gz"
rm "$RELEASE_TAR_FILE_NAME" rm "$RELEASE_TAR_FILE_NAME"
popd popd
echo "Done" echo "Done"

View File

@@ -77,7 +77,7 @@ namespace ARMeilleure.Translation
{ {
continue; continue;
} }
for (int pBlkIndex = 0; pBlkIndex < block.Predecessors.Count; pBlkIndex++) for (int pBlkIndex = 0; pBlkIndex < block.Predecessors.Count; pBlkIndex++)
{ {
BasicBlock current = block.Predecessors[pBlkIndex]; BasicBlock current = block.Predecessors[pBlkIndex];

View File

@@ -13,6 +13,7 @@ using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.IO; using System.IO;
using System.IO.Compression; using System.IO.Compression;
using System.Linq;
using System.Runtime; using System.Runtime;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
@@ -848,18 +849,15 @@ namespace ARMeilleure.Translation.PTC
} }
} }
List<Thread> threads = new();
for (int i = 0; i < degreeOfParallelism; i++) List<Thread> threads = Enumerable.Range(0, degreeOfParallelism)
{ .Select(idx =>
Thread thread = new(TranslateFuncs) new Thread(TranslateFuncs)
{ {
IsBackground = true, IsBackground = true,
Name = "Ptc.TranslateThread." + i Name = "Ptc.TranslateThread." + idx
}; }
).ToList();
threads.Add(thread);
}
Stopwatch sw = Stopwatch.StartNew(); Stopwatch sw = Stopwatch.StartNew();

View File

@@ -30,10 +30,10 @@ namespace Ryujinx.Common.Logging.Targets
string ILogTarget.Name { get => _target.Name; } string ILogTarget.Name { get => _target.Name; }
public AsyncLogTargetWrapper(ILogTarget target) public AsyncLogTargetWrapper(ILogTarget target)
: this(target, -1, AsyncLogTargetOverflowAction.Block) : this(target, -1)
{ } { }
public AsyncLogTargetWrapper(ILogTarget target, int queueLimit, AsyncLogTargetOverflowAction overflowAction) public AsyncLogTargetWrapper(ILogTarget target, int queueLimit = -1, AsyncLogTargetOverflowAction overflowAction = AsyncLogTargetOverflowAction.Block)
{ {
_target = target; _target = target;
_messageQueue = new BlockingCollection<LogEventArgs>(queueLimit); _messageQueue = new BlockingCollection<LogEventArgs>(queueLimit);

View File

@@ -1,11 +1,13 @@
using Ryujinx.Common.Logging;
using System; using System;
using System.Globalization;
using System.Threading; using System.Threading;
namespace Ryujinx.Common namespace Ryujinx.Common
{ {
public class ReactiveObject<T> public class ReactiveObject<T>
{ {
private readonly ReaderWriterLockSlim _readerWriterLock = new(); private readonly ReaderWriterLockSlim _rwLock = new();
private bool _isInitialized; private bool _isInitialized;
private T _value; private T _value;
@@ -15,15 +17,15 @@ namespace Ryujinx.Common
{ {
get get
{ {
_readerWriterLock.EnterReadLock(); _rwLock.EnterReadLock();
T value = _value; T value = _value;
_readerWriterLock.ExitReadLock(); _rwLock.ExitReadLock();
return value; return value;
} }
set set
{ {
_readerWriterLock.EnterWriteLock(); _rwLock.EnterWriteLock();
T oldValue = _value; T oldValue = _value;
@@ -32,7 +34,7 @@ namespace Ryujinx.Common
_isInitialized = true; _isInitialized = true;
_value = value; _value = value;
_readerWriterLock.ExitWriteLock(); _rwLock.ExitWriteLock();
if (!oldIsInitialized || oldValue == null || !oldValue.Equals(_value)) if (!oldIsInitialized || oldValue == null || !oldValue.Equals(_value))
{ {
@@ -40,12 +42,22 @@ namespace Ryujinx.Common
} }
} }
} }
public void LogChangesToValue(string valueName, LogClass logClass = LogClass.Configuration)
=> Event += (_, e) => ReactiveObjectHelper.LogValueChange(logClass, e, valueName);
public static implicit operator T(ReactiveObject<T> obj) => obj.Value; public static implicit operator T(ReactiveObject<T> obj) => obj.Value;
} }
public static class ReactiveObjectHelper public static class ReactiveObjectHelper
{ {
public static void LogValueChange<T>(LogClass logClass, ReactiveEventArgs<T> eventArgs, string valueName)
{
string message = string.Create(CultureInfo.InvariantCulture, $"{valueName} set to: {eventArgs.NewValue}");
Logger.Info?.Print(logClass, message);
}
public static void Toggle(this ReactiveObject<bool> rBoolean) => rBoolean.Value = !rBoolean.Value; public static void Toggle(this ReactiveObject<bool> rBoolean) => rBoolean.Value = !rBoolean.Value;
} }

View File

@@ -28,9 +28,9 @@ namespace Ryujinx.Common
public static bool IsFlatHubBuild => IsValid && ReleaseChannelOwner.Equals(FlatHubChannel); public static bool IsFlatHubBuild => IsValid && ReleaseChannelOwner.Equals(FlatHubChannel);
public static bool IsCanaryBuild => IsValid && ReleaseChannelOwner.Equals(CanaryChannel); public static bool IsCanaryBuild => IsValid && ReleaseChannelName.Equals(CanaryChannel);
public static bool IsReleaseBuild => IsValid && ReleaseChannelOwner.Equals(ReleaseChannel); public static bool IsReleaseBuild => IsValid && ReleaseChannelName.Equals(ReleaseChannel);
public static string Version => IsValid ? BuildVersion : Assembly.GetEntryAssembly()!.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion; public static string Version => IsValid ? BuildVersion : Assembly.GetEntryAssembly()!.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion;
} }

View File

@@ -1,4 +1,6 @@
using Ryujinx.Common.Logging;
using Ryujinx.HLE.HOS.Applets.Browser; using Ryujinx.HLE.HOS.Applets.Browser;
using Ryujinx.HLE.HOS.Applets.Dummy;
using Ryujinx.HLE.HOS.Applets.Error; using Ryujinx.HLE.HOS.Applets.Error;
using Ryujinx.HLE.HOS.Services.Am.AppletAE; using Ryujinx.HLE.HOS.Services.Am.AppletAE;
using System; using System;
@@ -26,9 +28,13 @@ namespace Ryujinx.HLE.HOS.Applets
return new BrowserApplet(system); return new BrowserApplet(system);
case AppletId.LibAppletOff: case AppletId.LibAppletOff:
return new BrowserApplet(system); return new BrowserApplet(system);
case AppletId.MiiEdit:
Logger.Warning?.Print(LogClass.Application, $"Please use the MiiEdit inside File/Open Applet");
return new DummyApplet(system);
} }
throw new NotImplementedException($"{applet} applet is not implemented."); Logger.Warning?.Print(LogClass.Application, $"Applet {applet} not implemented!");
return new DummyApplet(system);
} }
} }
} }

View File

@@ -0,0 +1,43 @@
using Ryujinx.Common.Logging;
using Ryujinx.Common.Memory;
using Ryujinx.HLE.HOS.Applets;
using Ryujinx.HLE.HOS.Services.Am.AppletAE;
using System;
using System.IO;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Applets.Dummy
{
internal class DummyApplet : IApplet
{
private readonly Horizon _system;
private AppletSession _normalSession;
public event EventHandler AppletStateChanged;
public DummyApplet(Horizon system)
{
_system = system;
}
public ResultCode Start(AppletSession normalSession, AppletSession interactiveSession)
{
_normalSession = normalSession;
_normalSession.Push(BuildResponse());
AppletStateChanged?.Invoke(this, null);
_system.ReturnFocus();
return ResultCode.Success;
}
private static T ReadStruct<T>(byte[] data) where T : struct
{
return MemoryMarshal.Read<T>(data.AsSpan());
}
private static byte[] BuildResponse()
{
using MemoryStream stream = MemoryStreamManager.Shared.GetStream();
using BinaryWriter writer = new(stream);
writer.Write((ulong)ResultCode.Success);
return stream.ToArray();
}
public ResultCode GetResult()
{
return ResultCode.Success;
}
}
}

View File

@@ -2463,7 +2463,7 @@ namespace Ryujinx.HLE.HOS.Diagnostics.Demangler
return ParseIntegerLiteral("unsigned short"); return ParseIntegerLiteral("unsigned short");
case 'i': case 'i':
_position++; _position++;
return ParseIntegerLiteral(""); return ParseIntegerLiteral(string.Empty);
case 'j': case 'j':
_position++; _position++;
return ParseIntegerLiteral("u"); return ParseIntegerLiteral("u");

View File

@@ -116,18 +116,13 @@ namespace Ryujinx.HLE.HOS
private readonly Dictionary<ulong, ModCache> _appMods; // key is ApplicationId private readonly Dictionary<ulong, ModCache> _appMods; // key is ApplicationId
private PatchCache _patches; private PatchCache _patches;
private static readonly EnumerationOptions _dirEnumOptions; private static readonly EnumerationOptions _dirEnumOptions = new()
static ModLoader()
{ {
_dirEnumOptions = new EnumerationOptions MatchCasing = MatchCasing.CaseInsensitive,
{ MatchType = MatchType.Simple,
MatchCasing = MatchCasing.CaseInsensitive, RecurseSubdirectories = false,
MatchType = MatchType.Simple, ReturnSpecialDirectories = false,
RecurseSubdirectories = false, };
ReturnSpecialDirectories = false,
};
}
public ModLoader() public ModLoader()
{ {
@@ -169,7 +164,7 @@ namespace Ryujinx.HLE.HOS
foreach (var modDir in dir.EnumerateDirectories()) foreach (var modDir in dir.EnumerateDirectories())
{ {
types.Clear(); types.Clear();
Mod<DirectoryInfo> mod = new("", null, true); Mod<DirectoryInfo> mod = new(string.Empty, null, true);
if (StrEquals(RomfsDir, modDir.Name)) if (StrEquals(RomfsDir, modDir.Name))
{ {

View File

@@ -8,6 +8,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp.NfpManager
public uint FileVersion { get; set; } public uint FileVersion { get; set; }
public byte[] TagUuid { get; set; } public byte[] TagUuid { get; set; }
public string AmiiboId { get; set; } public string AmiiboId { get; set; }
public string NickName { get; set; }
public DateTime FirstWriteDate { get; set; } public DateTime FirstWriteDate { get; set; }
public DateTime LastWriteDate { get; set; } public DateTime LastWriteDate { get; set; }
public ushort WriteCounter { get; set; } public ushort WriteCounter { get; set; }

View File

@@ -64,16 +64,17 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
}; };
} }
public static RegisterInfo GetRegisterInfo(ITickSource tickSource, string amiiboId, string nickname) public static RegisterInfo GetRegisterInfo(ITickSource tickSource, string amiiboId, string userName)
{ {
VirtualAmiiboFile amiiboFile = LoadAmiiboFile(amiiboId); VirtualAmiiboFile amiiboFile = LoadAmiiboFile(amiiboId);
string nickname = amiiboFile.NickName ?? "Ryujinx";
UtilityImpl utilityImpl = new(tickSource); UtilityImpl utilityImpl = new(tickSource);
CharInfo charInfo = new(); CharInfo charInfo = new();
charInfo.SetFromStoreData(StoreData.BuildDefault(utilityImpl, 0)); charInfo.SetFromStoreData(StoreData.BuildDefault(utilityImpl, 0));
charInfo.Nickname = Nickname.FromString(nickname); // This is the player's name
charInfo.Nickname = Nickname.FromString(userName);
RegisterInfo registerInfo = new() RegisterInfo registerInfo = new()
{ {
@@ -85,7 +86,9 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
Reserved1 = new Array64<byte>(), Reserved1 = new Array64<byte>(),
Reserved2 = new Array58<byte>(), Reserved2 = new Array58<byte>(),
}; };
"Ryujinx"u8.CopyTo(registerInfo.Nickname.AsSpan()); // This is the amiibo's name
byte[] nicknameBytes = System.Text.Encoding.UTF8.GetBytes(nickname);
nicknameBytes.CopyTo(registerInfo.Nickname.AsSpan());
return registerInfo; return registerInfo;
} }

View File

@@ -117,8 +117,9 @@ namespace Ryujinx.Headless.SDL2.OpenGL
GraphicsDebugLevel glLogLevel, GraphicsDebugLevel glLogLevel,
AspectRatio aspectRatio, AspectRatio aspectRatio,
bool enableMouse, bool enableMouse,
HideCursorMode hideCursorMode) HideCursorMode hideCursorMode,
: base(inputManager, glLogLevel, aspectRatio, enableMouse, hideCursorMode) bool ignoreControllerApplet)
: base(inputManager, glLogLevel, aspectRatio, enableMouse, hideCursorMode, ignoreControllerApplet)
{ {
_glLogLevel = glLogLevel; _glLogLevel = glLogLevel;
} }

View File

@@ -225,6 +225,9 @@ namespace Ryujinx.Headless.SDL2
[Option("ignore-missing-services", Required = false, Default = false, HelpText = "Enable ignoring missing services.")] [Option("ignore-missing-services", Required = false, Default = false, HelpText = "Enable ignoring missing services.")]
public bool IgnoreMissingServices { get; set; } public bool IgnoreMissingServices { get; set; }
[Option("ignore-controller-applet", Required = false, Default = false, HelpText = "Enable ignoring the controller applet when your game loses connection to your controller.")]
public bool IgnoreControllerApplet { get; set; }
// Values // Values

View File

@@ -444,8 +444,7 @@ namespace Ryujinx.Headless.SDL2
{ {
Logger.AddTarget(new AsyncLogTargetWrapper( Logger.AddTarget(new AsyncLogTargetWrapper(
new FileLogTarget("file", logFile), new FileLogTarget("file", logFile),
1000, 1000
AsyncLogTargetOverflowAction.Block
)); ));
} }
else else
@@ -506,8 +505,8 @@ namespace Ryujinx.Headless.SDL2
private static WindowBase CreateWindow(Options options) private static WindowBase CreateWindow(Options options)
{ {
return options.GraphicsBackend == GraphicsBackend.Vulkan return options.GraphicsBackend == GraphicsBackend.Vulkan
? new VulkanWindow(_inputManager, options.LoggingGraphicsDebugLevel, options.AspectRatio, options.EnableMouse, options.HideCursorMode) ? new VulkanWindow(_inputManager, options.LoggingGraphicsDebugLevel, options.AspectRatio, options.EnableMouse, options.HideCursorMode, options.IgnoreControllerApplet)
: new OpenGLWindow(_inputManager, options.LoggingGraphicsDebugLevel, options.AspectRatio, options.EnableMouse, options.HideCursorMode); : new OpenGLWindow(_inputManager, options.LoggingGraphicsDebugLevel, options.AspectRatio, options.EnableMouse, options.HideCursorMode, options.IgnoreControllerApplet);
} }
private static IRenderer CreateRenderer(Options options, WindowBase window) private static IRenderer CreateRenderer(Options options, WindowBase window)

View File

@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net8.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
@@ -17,7 +17,7 @@
</ItemGroup> </ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$([MSBuild]::IsOSPlatform('OSX'))"> <Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$([MSBuild]::IsOSPlatform('OSX'))">
<Exec Command="codesign --entitlements '$(ProjectDir)..\..\distribution\macos\entitlements.xml' -f --deep -s $(SigningCertificate) '$(TargetDir)$(TargetName)'" /> <Exec Command="codesign --entitlements '$(ProjectDir)..\..\distribution\macos\entitlements.xml' -f -s $(SigningCertificate) '$(TargetDir)$(TargetName)'" />
</Target> </Target>
<ItemGroup> <ItemGroup>

View File

@@ -17,8 +17,9 @@ namespace Ryujinx.Headless.SDL2.Vulkan
GraphicsDebugLevel glLogLevel, GraphicsDebugLevel glLogLevel,
AspectRatio aspectRatio, AspectRatio aspectRatio,
bool enableMouse, bool enableMouse,
HideCursorMode hideCursorMode) HideCursorMode hideCursorMode,
: base(inputManager, glLogLevel, aspectRatio, enableMouse, hideCursorMode) bool ignoreControllerApplet)
: base(inputManager, glLogLevel, aspectRatio, enableMouse, hideCursorMode, ignoreControllerApplet)
{ {
_glLogLevel = glLogLevel; _glLogLevel = glLogLevel;
} }

View File

@@ -86,13 +86,15 @@ namespace Ryujinx.Headless.SDL2
private readonly AspectRatio _aspectRatio; private readonly AspectRatio _aspectRatio;
private readonly bool _enableMouse; private readonly bool _enableMouse;
private readonly bool _ignoreControllerApplet;
public WindowBase( public WindowBase(
InputManager inputManager, InputManager inputManager,
GraphicsDebugLevel glLogLevel, GraphicsDebugLevel glLogLevel,
AspectRatio aspectRatio, AspectRatio aspectRatio,
bool enableMouse, bool enableMouse,
HideCursorMode hideCursorMode) HideCursorMode hideCursorMode,
bool ignoreControllerApplet)
{ {
MouseDriver = new SDL2MouseDriver(hideCursorMode); MouseDriver = new SDL2MouseDriver(hideCursorMode);
_inputManager = inputManager; _inputManager = inputManager;
@@ -108,6 +110,7 @@ namespace Ryujinx.Headless.SDL2
_gpuDoneEvent = new ManualResetEvent(false); _gpuDoneEvent = new ManualResetEvent(false);
_aspectRatio = aspectRatio; _aspectRatio = aspectRatio;
_enableMouse = enableMouse; _enableMouse = enableMouse;
_ignoreControllerApplet = ignoreControllerApplet;
HostUITheme = new HeadlessHostUiTheme(); HostUITheme = new HeadlessHostUiTheme();
SDL2Driver.Instance.Initialize(); SDL2Driver.Instance.Initialize();
@@ -484,6 +487,8 @@ namespace Ryujinx.Headless.SDL2
public bool DisplayMessageDialog(ControllerAppletUIArgs args) public bool DisplayMessageDialog(ControllerAppletUIArgs args)
{ {
if (_ignoreControllerApplet) return false;
string playerCount = args.PlayerCountMin == args.PlayerCountMax ? $"exactly {args.PlayerCountMin}" : $"{args.PlayerCountMin}-{args.PlayerCountMax}"; string playerCount = args.PlayerCountMin == args.PlayerCountMax ? $"exactly {args.PlayerCountMin}" : $"{args.PlayerCountMin}-{args.PlayerCountMax}";
string message = $"Application requests {playerCount} {"player".ToQuantity(args.PlayerCountMin + args.PlayerCountMax, ShowQuantityAs.None)} with:\n\n" string message = $"Application requests {playerCount} {"player".ToQuantity(args.PlayerCountMin + args.PlayerCountMax, ShowQuantityAs.None)} with:\n\n"

View File

@@ -13,8 +13,6 @@ using Ryujinx.UI.Common.Configuration.UI;
using Ryujinx.UI.Common.Helper; using Ryujinx.UI.Common.Helper;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization;
using System.Text.Json.Nodes;
namespace Ryujinx.UI.Common.Configuration namespace Ryujinx.UI.Common.Configuration
{ {
@@ -201,7 +199,7 @@ namespace Ryujinx.UI.Common.Configuration
IsAscendingOrder = new ReactiveObject<bool>(); IsAscendingOrder = new ReactiveObject<bool>();
LanguageCode = new ReactiveObject<string>(); LanguageCode = new ReactiveObject<string>();
ShowConsole = new ReactiveObject<bool>(); ShowConsole = new ReactiveObject<bool>();
ShowConsole.Event += static (s, e) => { ConsoleHelper.SetConsoleWindowState(e.NewValue); }; ShowConsole.Event += static (_, e) => ConsoleHelper.SetConsoleWindowState(e.NewValue);
} }
} }
@@ -268,6 +266,7 @@ namespace Ryujinx.UI.Common.Configuration
public LoggerSection() public LoggerSection()
{ {
EnableDebug = new ReactiveObject<bool>(); EnableDebug = new ReactiveObject<bool>();
EnableDebug.LogChangesToValue(nameof(EnableDebug));
EnableStub = new ReactiveObject<bool>(); EnableStub = new ReactiveObject<bool>();
EnableInfo = new ReactiveObject<bool>(); EnableInfo = new ReactiveObject<bool>();
EnableWarn = new ReactiveObject<bool>(); EnableWarn = new ReactiveObject<bool>();
@@ -277,7 +276,7 @@ namespace Ryujinx.UI.Common.Configuration
EnableFsAccessLog = new ReactiveObject<bool>(); EnableFsAccessLog = new ReactiveObject<bool>();
FilteredClasses = new ReactiveObject<LogClass[]>(); FilteredClasses = new ReactiveObject<LogClass[]>();
EnableFileLog = new ReactiveObject<bool>(); EnableFileLog = new ReactiveObject<bool>();
EnableFileLog.Event += static (sender, e) => LogValueChange(e, nameof(EnableFileLog)); EnableFileLog.LogChangesToValue(nameof(EnableFileLog));
GraphicsDebugLevel = new ReactiveObject<GraphicsDebugLevel>(); GraphicsDebugLevel = new ReactiveObject<GraphicsDebugLevel>();
} }
} }
@@ -370,33 +369,37 @@ namespace Ryujinx.UI.Common.Configuration
public SystemSection() public SystemSection()
{ {
Language = new ReactiveObject<Language>(); Language = new ReactiveObject<Language>();
Language.LogChangesToValue(nameof(Language));
Region = new ReactiveObject<Region>(); Region = new ReactiveObject<Region>();
Region.LogChangesToValue(nameof(Region));
TimeZone = new ReactiveObject<string>(); TimeZone = new ReactiveObject<string>();
TimeZone.LogChangesToValue(nameof(TimeZone));
SystemTimeOffset = new ReactiveObject<long>(); SystemTimeOffset = new ReactiveObject<long>();
SystemTimeOffset.LogChangesToValue(nameof(SystemTimeOffset));
EnableDockedMode = new ReactiveObject<bool>(); EnableDockedMode = new ReactiveObject<bool>();
EnableDockedMode.Event += static (sender, e) => LogValueChange(e, nameof(EnableDockedMode)); EnableDockedMode.LogChangesToValue(nameof(EnableDockedMode));
EnablePtc = new ReactiveObject<bool>(); EnablePtc = new ReactiveObject<bool>();
EnablePtc.Event += static (sender, e) => LogValueChange(e, nameof(EnablePtc)); EnablePtc.LogChangesToValue(nameof(EnablePtc));
EnableLowPowerPtc = new ReactiveObject<bool>(); EnableLowPowerPtc = new ReactiveObject<bool>();
EnableLowPowerPtc.Event += static (sender, e) => LogValueChange(e, nameof(EnableLowPowerPtc)); EnableLowPowerPtc.LogChangesToValue(nameof(EnableLowPowerPtc));
EnableInternetAccess = new ReactiveObject<bool>(); EnableInternetAccess = new ReactiveObject<bool>();
EnableInternetAccess.Event += static (sender, e) => LogValueChange(e, nameof(EnableInternetAccess)); EnableInternetAccess.LogChangesToValue(nameof(EnableInternetAccess));
EnableFsIntegrityChecks = new ReactiveObject<bool>(); EnableFsIntegrityChecks = new ReactiveObject<bool>();
EnableFsIntegrityChecks.Event += static (sender, e) => LogValueChange(e, nameof(EnableFsIntegrityChecks)); EnableFsIntegrityChecks.LogChangesToValue(nameof(EnableFsIntegrityChecks));
FsGlobalAccessLogMode = new ReactiveObject<int>(); FsGlobalAccessLogMode = new ReactiveObject<int>();
FsGlobalAccessLogMode.Event += static (sender, e) => LogValueChange(e, nameof(FsGlobalAccessLogMode)); FsGlobalAccessLogMode.LogChangesToValue(nameof(FsGlobalAccessLogMode));
AudioBackend = new ReactiveObject<AudioBackend>(); AudioBackend = new ReactiveObject<AudioBackend>();
AudioBackend.Event += static (sender, e) => LogValueChange(e, nameof(AudioBackend)); AudioBackend.LogChangesToValue(nameof(AudioBackend));
MemoryManagerMode = new ReactiveObject<MemoryManagerMode>(); MemoryManagerMode = new ReactiveObject<MemoryManagerMode>();
MemoryManagerMode.Event += static (sender, e) => LogValueChange(e, nameof(MemoryManagerMode)); MemoryManagerMode.LogChangesToValue(nameof(MemoryManagerMode));
DramSize = new ReactiveObject<MemoryConfiguration>(); DramSize = new ReactiveObject<MemoryConfiguration>();
DramSize.Event += static (sender, e) => LogValueChange(e, nameof(DramSize)); DramSize.LogChangesToValue(nameof(DramSize));
IgnoreMissingServices = new ReactiveObject<bool>(); IgnoreMissingServices = new ReactiveObject<bool>();
IgnoreMissingServices.Event += static (sender, e) => LogValueChange(e, nameof(IgnoreMissingServices)); IgnoreMissingServices.LogChangesToValue(nameof(IgnoreMissingServices));
AudioVolume = new ReactiveObject<float>(); AudioVolume = new ReactiveObject<float>();
AudioVolume.Event += static (sender, e) => LogValueChange(e, nameof(AudioVolume)); AudioVolume.LogChangesToValue(nameof(AudioVolume));
UseHypervisor = new ReactiveObject<bool>(); UseHypervisor = new ReactiveObject<bool>();
UseHypervisor.Event += static (sender, e) => LogValueChange(e, nameof(UseHypervisor)); UseHypervisor.LogChangesToValue(nameof(UseHypervisor));
} }
} }
@@ -524,36 +527,36 @@ namespace Ryujinx.UI.Common.Configuration
public GraphicsSection() public GraphicsSection()
{ {
BackendThreading = new ReactiveObject<BackendThreading>(); BackendThreading = new ReactiveObject<BackendThreading>();
BackendThreading.Event += static (_, e) => LogValueChange(e, nameof(BackendThreading)); BackendThreading.LogChangesToValue(nameof(BackendThreading));
ResScale = new ReactiveObject<int>(); ResScale = new ReactiveObject<int>();
ResScale.Event += static (_, e) => LogValueChange(e, nameof(ResScale)); ResScale.LogChangesToValue(nameof(ResScale));
ResScaleCustom = new ReactiveObject<float>(); ResScaleCustom = new ReactiveObject<float>();
ResScaleCustom.Event += static (_, e) => LogValueChange(e, nameof(ResScaleCustom)); ResScaleCustom.LogChangesToValue(nameof(ResScaleCustom));
MaxAnisotropy = new ReactiveObject<float>(); MaxAnisotropy = new ReactiveObject<float>();
MaxAnisotropy.Event += static (_, e) => LogValueChange(e, nameof(MaxAnisotropy)); MaxAnisotropy.LogChangesToValue(nameof(MaxAnisotropy));
AspectRatio = new ReactiveObject<AspectRatio>(); AspectRatio = new ReactiveObject<AspectRatio>();
AspectRatio.Event += static (_, e) => LogValueChange(e, nameof(AspectRatio)); AspectRatio.LogChangesToValue(nameof(AspectRatio));
ShadersDumpPath = new ReactiveObject<string>(); ShadersDumpPath = new ReactiveObject<string>();
EnableVsync = new ReactiveObject<bool>(); EnableVsync = new ReactiveObject<bool>();
EnableVsync.Event += static (_, e) => LogValueChange(e, nameof(EnableVsync)); EnableVsync.LogChangesToValue(nameof(EnableVsync));
EnableShaderCache = new ReactiveObject<bool>(); EnableShaderCache = new ReactiveObject<bool>();
EnableShaderCache.Event += static (_, e) => LogValueChange(e, nameof(EnableShaderCache)); EnableShaderCache.LogChangesToValue(nameof(EnableShaderCache));
EnableTextureRecompression = new ReactiveObject<bool>(); EnableTextureRecompression = new ReactiveObject<bool>();
EnableTextureRecompression.Event += static (_, e) => LogValueChange(e, nameof(EnableTextureRecompression)); EnableTextureRecompression.LogChangesToValue(nameof(EnableTextureRecompression));
GraphicsBackend = new ReactiveObject<GraphicsBackend>(); GraphicsBackend = new ReactiveObject<GraphicsBackend>();
GraphicsBackend.Event += static (_, e) => LogValueChange(e, nameof(GraphicsBackend)); GraphicsBackend.LogChangesToValue(nameof(GraphicsBackend));
PreferredGpu = new ReactiveObject<string>(); PreferredGpu = new ReactiveObject<string>();
PreferredGpu.Event += static (_, e) => LogValueChange(e, nameof(PreferredGpu)); PreferredGpu.LogChangesToValue(nameof(PreferredGpu));
EnableMacroHLE = new ReactiveObject<bool>(); EnableMacroHLE = new ReactiveObject<bool>();
EnableMacroHLE.Event += static (_, e) => LogValueChange(e, nameof(EnableMacroHLE)); EnableMacroHLE.LogChangesToValue(nameof(EnableMacroHLE));
EnableColorSpacePassthrough = new ReactiveObject<bool>(); EnableColorSpacePassthrough = new ReactiveObject<bool>();
EnableColorSpacePassthrough.Event += static (_, e) => LogValueChange(e, nameof(EnableColorSpacePassthrough)); EnableColorSpacePassthrough.LogChangesToValue(nameof(EnableColorSpacePassthrough));
AntiAliasing = new ReactiveObject<AntiAliasing>(); AntiAliasing = new ReactiveObject<AntiAliasing>();
AntiAliasing.Event += static (_, e) => LogValueChange(e, nameof(AntiAliasing)); AntiAliasing.LogChangesToValue(nameof(AntiAliasing));
ScalingFilter = new ReactiveObject<ScalingFilter>(); ScalingFilter = new ReactiveObject<ScalingFilter>();
ScalingFilter.Event += static (_, e) => LogValueChange(e, nameof(ScalingFilter)); ScalingFilter.LogChangesToValue(nameof(ScalingFilter));
ScalingFilterLevel = new ReactiveObject<int>(); ScalingFilterLevel = new ReactiveObject<int>();
ScalingFilterLevel.Event += static (_, e) => LogValueChange(e, nameof(ScalingFilterLevel)); ScalingFilterLevel.LogChangesToValue(nameof(ScalingFilterLevel));
} }
} }
@@ -576,7 +579,7 @@ namespace Ryujinx.UI.Common.Configuration
{ {
LanInterfaceId = new ReactiveObject<string>(); LanInterfaceId = new ReactiveObject<string>();
Mode = new ReactiveObject<MultiplayerMode>(); Mode = new ReactiveObject<MultiplayerMode>();
Mode.Event += static (_, e) => LogValueChange(e, nameof(MultiplayerMode)); Mode.LogChangesToValue(nameof(Mode));
} }
} }
@@ -667,6 +670,7 @@ namespace Ryujinx.UI.Common.Configuration
CheckUpdatesOnStart = new ReactiveObject<bool>(); CheckUpdatesOnStart = new ReactiveObject<bool>();
ShowConfirmExit = new ReactiveObject<bool>(); ShowConfirmExit = new ReactiveObject<bool>();
IgnoreApplet = new ReactiveObject<bool>(); IgnoreApplet = new ReactiveObject<bool>();
IgnoreApplet.LogChangesToValue(nameof(IgnoreApplet));
RememberWindowState = new ReactiveObject<bool>(); RememberWindowState = new ReactiveObject<bool>();
ShowTitleBar = new ReactiveObject<bool>(); ShowTitleBar = new ReactiveObject<bool>();
EnableHardwareAcceleration = new ReactiveObject<bool>(); EnableHardwareAcceleration = new ReactiveObject<bool>();
@@ -1654,13 +1658,6 @@ namespace Ryujinx.UI.Common.Configuration
return GraphicsBackend.OpenGl; return GraphicsBackend.OpenGl;
} }
private static void LogValueChange<T>(ReactiveEventArgs<T> eventArgs, string valueName)
{
string message = string.Create(CultureInfo.InvariantCulture, $"{valueName} set to: {eventArgs.NewValue}");
Ryujinx.Common.Logging.Logger.Info?.Print(LogClass.Configuration, message);
}
public static void Initialize() public static void Initialize()
{ {
if (Instance != null) if (Instance != null)

View File

@@ -122,70 +122,145 @@ namespace Ryujinx.UI.Common
private static readonly string[] _discordGameAssetKeys = private static readonly string[] _discordGameAssetKeys =
[ [
"01002da013484000", // The Legend of Zelda: Skyward Sword HD "010055d009f78000", // Fire Emblem: Three Houses
"0100a12011cc8000", // Fire Emblem: Shadow Dragon
"0100a6301214e000", // Fire Emblem Engage
"0100f15003e64000", // Fire Emblem Warriors
"010071f0143ea000", // Fire Emblem Warriors: Three Hopes
"01007e3006dda000", // Kirby Star Allies
"01004d300c5ae000", // Kirby and the Forgotten Land
"01006b601380e000", // Kirby's Return to Dream Land Deluxe
"01003fb00c5a8000", // Super Kirby Clash
"0100227010460000", // Kirby Fighters 2
"0100a8e016236000", // Kirby's Dream Buffet
"01007ef00011e000", // The Legend of Zelda: Breath of the Wild "01007ef00011e000", // The Legend of Zelda: Breath of the Wild
"01006bb00c6f0000", // The Legend of Zelda: Link's Awakening
"01002da013484000", // The Legend of Zelda: Skyward Sword HD
"0100f2c0115b6000", // The Legend of Zelda: Tears of the Kingdom "0100f2c0115b6000", // The Legend of Zelda: Tears of the Kingdom
"01008cf01baac000", // The Legend of Zelda: Echoes of Wisdom "01008cf01baac000", // The Legend of Zelda: Echoes of Wisdom
"01006bb00c6f0000", // The Legend of Zelda: Link's Awakening "01000b900d8b0000", // Cadence of Hyrule
"0100ae00096ea000", // Hyrule Warriors: Definitive Edition
"0100000000010000", // SUPER MARIO ODYSSEY "01002b00111a2000", // Hyrule Warriors: Age of Calamity
"010015100b514000", // Super Mario Bros. Wonder
"0100152000022000", // Mario Kart 8 Deluxe
"01006fe013472000", // Mario Party Superstars
"0100965017338000", // Super Mario Party Jamboree
"010049900f546000", // Super Mario 3D All-Stars
"010028600ebda000", // Super Mario 3D World + Bowser's Fury
"0100ecd018ebe000", // Paper Mario: The Thousand-Year Door
"010019401051c000", // Mario Strikers League
"0100ea80032ea000", // Super Mario Bros. U Deluxe
"0100bc0018138000", // Super Mario RPG
"0100bde00862a000", // Mario Tennis Aces
"010048701995e000", // Luigi's Mansion 2 HD "010048701995e000", // Luigi's Mansion 2 HD
"0100dca0064a6000", // Luigi's Mansion 3 "0100dca0064a6000", // Luigi's Mansion 3
"01008f6008c5e000", // Pokémon Violet "010093801237c000", // Metroid Dread
"0100abf008968000", // Pokémon Sword "010012101468c000", // Metroid Prime Remastered
"01008db008c2c000", // Pokémon Shield
"0100000011d90000", // Pokémon Brilliant Diamond "0100000000010000", // SUPER MARIO ODYSSEY
"01001f5010dfa000", // Pokémon Legends: Arceus "0100ea80032ea000", // Super Mario Bros. U Deluxe
"01009b90006dc000", // Super Mario Maker 2
"010049900f546000", // Super Mario 3D All-Stars
"010049900F546001", // ^ 64
"010049900F546002", // ^ Sunshine
"010049900F546003", // ^ Galaxy
"010028600ebda000", // Super Mario 3D World + Bowser's Fury
"010015100b514000", // Super Mario Bros. Wonder
"0100152000022000", // Mario Kart 8 Deluxe
"010036b0034e4000", // Super Mario Party
"01006fe013472000", // Mario Party Superstars
"0100965017338000", // Super Mario Party Jamboree
"01006d0017f7a000", // Mario & Luigi: Brothership
"010067300059a000", // Mario + Rabbids: Kingdom Battle
"0100317013770000", // Mario + Rabbids: Sparks of Hope
"0100a3900c3e2000", // Paper Mario: The Origami King
"0100ecd018ebe000", // Paper Mario: The Thousand-Year Door
"0100bc0018138000", // Super Mario RPG
"0100bde00862a000", // Mario Tennis Aces
"0100c9c00e25c000", // Mario Golf: Super Rush
"010019401051c000", // Mario Strikers: Battle League
"010003000e146000", // Mario & Sonic at the Olympic Games Tokyo 2020
"0100b99019412000", // Mario vs. Donkey Kong
"0100aa80194b0000", // Pikmin 1 "0100aa80194b0000", // Pikmin 1
"0100d680194b2000", // Pikmin 2 "0100d680194b2000", // Pikmin 2
"0100f4c009322000", // Pikmin 3 Deluxe "0100f4c009322000", // Pikmin 3 Deluxe
"0100b7c00933a000", // Pikmin 4 "0100b7c00933a000", // Pikmin 4
"010003f003a34000", // Pokémon: Let's Go Pikachu!
"0100187003a36000", // Pokémon: Let's Go Eevee!
"0100abf008968000", // Pokémon Sword
"01008db008c2c000", // Pokémon Shield
"0100000011d90000", // Pokémon Brilliant Diamond
"010018e011d92000", // Pokémon Shining Pearl
"01001f5010dfa000", // Pokémon Legends: Arceus
"0100a3d008c5c000", // Pokémon Scarlet
"01008f6008c5e000", // Pokémon Violet
"0100b3f000be2000", // Pokkén Tournament DX
"0100f4300bf2c000", // New Pokémon Snap
"01003bc0000a0000", // Splatoon 2 (US)
"0100f8f0000a2000", // Splatoon 2 (EU)
"01003c700009c000", // Splatoon 2 (JP)
"0100c2500fc20000", // Splatoon 3
"0100ba0018500000", // Splatoon 3: Splatfest World Premiere
"010040600c5ce000", // Tetris 99
"0100277011f1a000", // Super Mario Bros. 35
"0100ad9012510000", // PAC-MAN 99
"0100ccf019c8c000", // F-ZERO 99
"0100d870045b6000", // NES - Nintendo Switch Online
"01008d300c50c000", // SNES - Nintendo Switch Online
"0100c9a00ece6000", // N64 - Nintendo Switch Online
"0100e0601c632000", // N64 - Nintendo Switch Online 18+
"0100c62011050000", // GB - Nintendo Switch Online
"010012f017576000", // GBA - Nintendo Switch Online
"01000320000cc000", // 1-2 Switch
"0100300012f2a000", // Advance Wars 1+2: Re-Boot Camp
"01006f8002326000", // Animal Crossing: New Horizons
"0100620012d6e000", // Big Brain Academy: Brain vs. Brain
"010018300d006000", // BOXBOY! + BOXGIRL!
"0100c1f0051b6000", // Donkey Kong Country: Tropical Freeze
"0100ed000d390000", // Dr. Kawashima's Brain Training
"010067b017588000", // Endless Ocean Luminous
"0100d2f00d5c0000", // Nintendo Switch Sports
"01006b5012b32000", // Part Time UFO
"0100704000B3A000", // Snipperclips
"01006a800016e000", // Super Smash Bros. Ultimate
"0100a9400c9c2000", // Tokyo Mirage Sessions #FE Encore
"010076f0049a2000", // Bayonetta
"01007960049a0000", // Bayonetta 2
"01004a4010fea000", // Bayonetta 3
"0100cf5010fec000", // Bayonetta Origins: Cereza and the Lost Demon
"0100dcd01525a000", // Persona 3 Portable
"010062b01525c000", // Persona 4 Golden
"010075a016a3a000", // Persona 4 Arena Ultimax
"01005ca01580e000", // Persona 5 Royal
"0100801011c3e000", // Persona 5 Strikers
"010087701b092000", // Persona 5 Tactica
"01009aa000faa000", // Sonic Mania
"01004ad014bf0000", // Sonic Frontiers "01004ad014bf0000", // Sonic Frontiers
"01005ea01c0fc000", // SONIC X SHADOW GENERATIONS "01005ea01c0fc000", // SONIC X SHADOW GENERATIONS
"01005ea01c0fc001", // ^ "01005ea01c0fc001", // ^
"01004d300c5ae000", // Kirby and the Forgotten Land
"01006b601380e000", // Kirby's Return to Dreamland Deluxe
"01007e3006dda000", // Kirby Star Allies
"0100c2500fc20000", // Splatoon 3
"0100ba0018500000", // Splatoon 3: Splatfest World Premiere
"01000a10041ea000", // The Elder Scrolls V: Skyrim
"01007820196a6000", // Red Dead Redemption
"01008c8012920000", // Dying Light Platinum Edition
"0100744001588000", // Cars 3: Driven to Win
"0100c1f0051b6000", // Donkey Kong Country: Tropical Freeze
"01002b00111a2000", // Hyrule Warriors: Age of Calamity
"01006f8002326000", // Animal Crossing: New Horizons
"0100853015e86000", // No Man's Sky
"01008d100d43e000", // Saints Row IV
"0100de600beee000", // Saints Row: The Third - The Full Package
"0100d7a01b7a2000", // Star Wars: Bounty Hunter
"0100dbf01000a000", // Burnout Paradise Remastered
"0100e46006708000", // Terraria
"010056e00853a000", // A Hat in Time "010056e00853a000", // A Hat in Time
"01006a800016e000", // Super Smash Bros. Ultimate "0100dbf01000a000", // Burnout Paradise Remastered
"0100744001588000", // Cars 3: Driven to Win
"0100b41013c82000", // Cruis'n Blast
"01008c8012920000", // Dying Light Platinum Edition
"01000a10041ea000", // The Elder Scrolls V: Skyrim
"0100770008dd8000", // Monster Hunter Generations Ultimate
"0100b04011742000", // Monster Hunter Rise
"0100853015e86000", // No Man's Sky
"01007bb017812000", // Portal "01007bb017812000", // Portal
"0100abd01785c000", // Portal 2 "0100abd01785c000", // Portal 2
"01008e200c5c2000", // Muse Dash "01008e200c5c2000", // Muse Dash
"01007820196a6000", // Red Dead Redemption
"01002f7013224000", // Rune Factory 5
"01008d100d43e000", // Saints Row IV
"0100de600beee000", // Saints Row: The Third - The Full Package
"01001180021fa000", // Shovel Knight: Specter of Torment "01001180021fa000", // Shovel Knight: Specter of Torment
"010012101468c000", // Metroid Prime Remastered "0100d7a01b7a2000", // Star Wars: Bounty Hunter
"0100c9a00ece6000", // Nintendo 64 - Nintendo Switch Online "0100800015926000", // Suika Game
"0100e46006708000", // Terraria
"010080b00ad66000", // Undertale
]; ];
} }
} }

View File

@@ -4,6 +4,7 @@ using Ryujinx.Common.Logging;
using System; using System;
using System.Diagnostics; using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Runtime.Versioning; using System.Runtime.Versioning;
@@ -23,6 +24,26 @@ namespace Ryujinx.UI.Common.Helper
public static partial void SHChangeNotify(uint wEventId, uint uFlags, nint dwItem1, nint dwItem2); public static partial void SHChangeNotify(uint wEventId, uint uFlags, nint dwItem1, nint dwItem2);
public static bool IsTypeAssociationSupported => (OperatingSystem.IsLinux() || OperatingSystem.IsWindows()) && !ReleaseInformation.IsFlatHubBuild; public static bool IsTypeAssociationSupported => (OperatingSystem.IsLinux() || OperatingSystem.IsWindows()) && !ReleaseInformation.IsFlatHubBuild;
public static bool AreMimeTypesRegistered
{
get
{
if (OperatingSystem.IsLinux())
{
return AreMimeTypesRegisteredLinux();
}
if (OperatingSystem.IsWindows())
{
return AreMimeTypesRegisteredWindows();
}
// TODO: Add macOS support.
return false;
}
}
[SupportedOSPlatform("linux")] [SupportedOSPlatform("linux")]
private static bool AreMimeTypesRegisteredLinux() => File.Exists(Path.Combine(_mimeDbPath, "packages", "Ryujinx.xml")); private static bool AreMimeTypesRegisteredLinux() => File.Exists(Path.Combine(_mimeDbPath, "packages", "Ryujinx.xml"));
@@ -72,6 +93,10 @@ namespace Ryujinx.UI.Common.Helper
[SupportedOSPlatform("windows")] [SupportedOSPlatform("windows")]
private static bool AreMimeTypesRegisteredWindows() private static bool AreMimeTypesRegisteredWindows()
{ {
return _fileExtensions.Aggregate(false,
(current, ext) => current | CheckRegistering(ext)
);
static bool CheckRegistering(string ext) static bool CheckRegistering(string ext)
{ {
RegistryKey key = Registry.CurrentUser.OpenSubKey(@$"Software\Classes\{ext}"); RegistryKey key = Registry.CurrentUser.OpenSubKey(@$"Software\Classes\{ext}");
@@ -87,20 +112,20 @@ namespace Ryujinx.UI.Common.Helper
return keyValue is not null && (keyValue.Contains("Ryujinx") || keyValue.Contains(AppDomain.CurrentDomain.FriendlyName)); return keyValue is not null && (keyValue.Contains("Ryujinx") || keyValue.Contains(AppDomain.CurrentDomain.FriendlyName));
} }
bool registered = false;
foreach (string ext in _fileExtensions)
{
registered |= CheckRegistering(ext);
}
return registered;
} }
[SupportedOSPlatform("windows")] [SupportedOSPlatform("windows")]
private static bool InstallWindowsMimeTypes(bool uninstall = false) private static bool InstallWindowsMimeTypes(bool uninstall = false)
{ {
bool registered = _fileExtensions.Aggregate(false,
(current, ext) => current | RegisterExtension(ext, uninstall)
);
// Notify Explorer the file association has been changed.
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSH, nint.Zero, nint.Zero);
return registered;
static bool RegisterExtension(string ext, bool uninstall = false) static bool RegisterExtension(string ext, bool uninstall = false)
{ {
string keyString = @$"Software\Classes\{ext}"; string keyString = @$"Software\Classes\{ext}";
@@ -127,42 +152,13 @@ namespace Ryujinx.UI.Common.Helper
Logger.Debug?.Print(LogClass.Application, $"Adding type association {ext}"); Logger.Debug?.Print(LogClass.Application, $"Adding type association {ext}");
using var openCmd = key.CreateSubKey(@"shell\open\command"); using var openCmd = key.CreateSubKey(@"shell\open\command");
openCmd.SetValue("", $"\"{Environment.ProcessPath}\" \"%1\""); openCmd.SetValue(string.Empty, $"\"{Environment.ProcessPath}\" \"%1\"");
Logger.Debug?.Print(LogClass.Application, $"Added type association {ext}"); Logger.Debug?.Print(LogClass.Application, $"Added type association {ext}");
} }
return true; return true;
} }
bool registered = false;
foreach (string ext in _fileExtensions)
{
registered |= RegisterExtension(ext, uninstall);
}
// Notify Explorer the file association has been changed.
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSH, nint.Zero, nint.Zero);
return registered;
}
public static bool AreMimeTypesRegistered()
{
if (OperatingSystem.IsLinux())
{
return AreMimeTypesRegisteredLinux();
}
if (OperatingSystem.IsWindows())
{
return AreMimeTypesRegisteredWindows();
}
// TODO: Add macOS support.
return false;
} }
public static bool Install() public static bool Install()

View File

@@ -5,6 +5,8 @@ namespace Ryujinx.UI.Common.Models.Github
public class GithubReleasesJsonResponse public class GithubReleasesJsonResponse
{ {
public string Name { get; set; } public string Name { get; set; }
public string TagName { get; set; }
public List<GithubReleaseAssetJsonResponse> Assets { get; set; } public List<GithubReleaseAssetJsonResponse> Assets { get; set; }
} }
} }

View File

@@ -43,8 +43,8 @@ namespace Ryujinx.UI.Common.Models
{ {
if (obj == null) if (obj == null)
return false; return false;
else
return this.Path == obj.Path; return this.Path == obj.Path;
} }
public override int GetHashCode() public override int GetHashCode()

View File

@@ -23,8 +23,10 @@ namespace Ryujinx.Ava
{ {
internal static string FormatTitle(LocaleKeys? windowTitleKey = null) internal static string FormatTitle(LocaleKeys? windowTitleKey = null)
=> windowTitleKey is null => windowTitleKey is null
? $"Ryujinx {Program.Version}" ? $"{FullAppName} {Program.Version}"
: $"Ryujinx {Program.Version} - {LocaleManager.Instance[windowTitleKey.Value]}"; : $"{FullAppName} {Program.Version} - {LocaleManager.Instance[windowTitleKey.Value]}";
public static readonly string FullAppName = ReleaseInformation.IsCanaryBuild ? "Ryujinx Canary" : "Ryujinx";
public static MainWindow MainWindow => Current! public static MainWindow MainWindow => Current!
.ApplicationLifetime.Cast<IClassicDesktopStyleApplicationLifetime>() .ApplicationLifetime.Cast<IClassicDesktopStyleApplicationLifetime>()

View File

@@ -10,7 +10,10 @@
"SettingsTabSystemUseHypervisor": "استخدم مراقب الأجهزة الافتراضية", "SettingsTabSystemUseHypervisor": "استخدم مراقب الأجهزة الافتراضية",
"MenuBarFile": "_ملف", "MenuBarFile": "_ملف",
"MenuBarFileOpenFromFile": "_تحميل تطبيق من ملف", "MenuBarFileOpenFromFile": "_تحميل تطبيق من ملف",
"MenuBarFileOpenFromFileError": "No applications found in selected file.",
"MenuBarFileOpenUnpacked": "تحميل لُعْبَة غير محزومة", "MenuBarFileOpenUnpacked": "تحميل لُعْبَة غير محزومة",
"MenuBarFileLoadDlcFromFolder": "Load DLC From Folder",
"MenuBarFileLoadTitleUpdatesFromFolder": "Load Title Updates From Folder",
"MenuBarFileOpenEmuFolder": "‫فتح مجلد Ryujinx", "MenuBarFileOpenEmuFolder": "‫فتح مجلد Ryujinx",
"MenuBarFileOpenLogsFolder": "فتح مجلد السجلات", "MenuBarFileOpenLogsFolder": "فتح مجلد السجلات",
"MenuBarFileExit": "_خروج", "MenuBarFileExit": "_خروج",
@@ -103,6 +106,8 @@
"SettingsTabGeneralHideCursorOnIdle": "عند الخمول", "SettingsTabGeneralHideCursorOnIdle": "عند الخمول",
"SettingsTabGeneralHideCursorAlways": "دائما", "SettingsTabGeneralHideCursorAlways": "دائما",
"SettingsTabGeneralGameDirectories": "مجلدات الألعاب", "SettingsTabGeneralGameDirectories": "مجلدات الألعاب",
"SettingsTabGeneralAutoloadDirectories": "Autoload DLC/Updates Directories",
"SettingsTabGeneralAutoloadNote": "DLC and Updates which refer to missing files will be unloaded automatically",
"SettingsTabGeneralAdd": "إضافة", "SettingsTabGeneralAdd": "إضافة",
"SettingsTabGeneralRemove": "إزالة", "SettingsTabGeneralRemove": "إزالة",
"SettingsTabSystem": "النظام", "SettingsTabSystem": "النظام",
@@ -402,6 +407,7 @@
"AvatarSetBackgroundColor": "تعيين لون الخلفية", "AvatarSetBackgroundColor": "تعيين لون الخلفية",
"AvatarClose": "إغلاق", "AvatarClose": "إغلاق",
"ControllerSettingsLoadProfileToolTip": "تحميل الملف الشخصي", "ControllerSettingsLoadProfileToolTip": "تحميل الملف الشخصي",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "إضافة ملف شخصي", "ControllerSettingsAddProfileToolTip": "إضافة ملف شخصي",
"ControllerSettingsRemoveProfileToolTip": "إزالة الملف الشخصي", "ControllerSettingsRemoveProfileToolTip": "إزالة الملف الشخصي",
"ControllerSettingsSaveProfileToolTip": "حفظ الملف الشخصي", "ControllerSettingsSaveProfileToolTip": "حفظ الملف الشخصي",
@@ -411,6 +417,7 @@
"GameListContextMenuToggleFavorite": "تعيين كمفضل", "GameListContextMenuToggleFavorite": "تعيين كمفضل",
"GameListContextMenuToggleFavoriteToolTip": "تبديل الحالة المفضلة للعبة", "GameListContextMenuToggleFavoriteToolTip": "تبديل الحالة المفضلة للعبة",
"SettingsTabGeneralTheme": "السمة:", "SettingsTabGeneralTheme": "السمة:",
"SettingsTabGeneralThemeAuto": "Auto",
"SettingsTabGeneralThemeDark": "داكن", "SettingsTabGeneralThemeDark": "داكن",
"SettingsTabGeneralThemeLight": "فاتح", "SettingsTabGeneralThemeLight": "فاتح",
"ControllerSettingsConfigureGeneral": "ضبط", "ControllerSettingsConfigureGeneral": "ضبط",
@@ -431,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "حدث خطأ أثناء البحث عن بيانات الحفظ المحددة: {0}", "DialogMessageFindSaveErrorMessage": "حدث خطأ أثناء البحث عن بيانات الحفظ المحددة: {0}",
"FolderDialogExtractTitle": "اختر المجلد الذي تريد الاستخراج إليه", "FolderDialogExtractTitle": "اختر المجلد الذي تريد الاستخراج إليه",
"DialogNcaExtractionMessage": "استخراج قسم {0} من {1}...", "DialogNcaExtractionMessage": "استخراج قسم {0} من {1}...",
"DialogNcaExtractionTitle": "ريوجينكس - مستخرج قسم NCA", "DialogNcaExtractionTitle": "مستخرج قسم NCA",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "فشل الاستخراج. لم يكن NCA الرئيسي موجودا في الملف المحدد.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "فشل الاستخراج. لم يكن NCA الرئيسي موجودا في الملف المحدد.",
"DialogNcaExtractionCheckLogErrorMessage": "فشل الاستخراج. اقرأ ملف التسجيل لمزيد من المعلومات.", "DialogNcaExtractionCheckLogErrorMessage": "فشل الاستخراج. اقرأ ملف التسجيل لمزيد من المعلومات.",
"DialogNcaExtractionSuccessMessage": "تم الاستخراج بنجاح.", "DialogNcaExtractionSuccessMessage": "تم الاستخراج بنجاح.",
@@ -561,6 +568,9 @@
"AddGameDirBoxTooltip": "أدخل مجلد اللعبة لإضافته إلى القائمة", "AddGameDirBoxTooltip": "أدخل مجلد اللعبة لإضافته إلى القائمة",
"AddGameDirTooltip": "إضافة مجلد اللعبة إلى القائمة", "AddGameDirTooltip": "إضافة مجلد اللعبة إلى القائمة",
"RemoveGameDirTooltip": "إزالة مجلد اللعبة المحدد", "RemoveGameDirTooltip": "إزالة مجلد اللعبة المحدد",
"AddAutoloadDirBoxTooltip": "Enter an autoload directory to add to the list",
"AddAutoloadDirTooltip": "Add an autoload directory to the list",
"RemoveAutoloadDirTooltip": "Remove selected autoload directory",
"CustomThemeCheckTooltip": "استخدم سمة أفالونيا المخصصة لواجهة المستخدم الرسومية لتغيير مظهر قوائم المحاكي", "CustomThemeCheckTooltip": "استخدم سمة أفالونيا المخصصة لواجهة المستخدم الرسومية لتغيير مظهر قوائم المحاكي",
"CustomThemePathTooltip": "مسار سمة واجهة المستخدم المخصصة", "CustomThemePathTooltip": "مسار سمة واجهة المستخدم المخصصة",
"CustomThemeBrowseTooltip": "تصفح للحصول على سمة واجهة المستخدم المخصصة", "CustomThemeBrowseTooltip": "تصفح للحصول على سمة واجهة المستخدم المخصصة",
@@ -606,6 +616,8 @@
"DebugLogTooltip": "طباعة رسائل سجل التصحيح في وحدة التحكم.\n\nاستخدم هذا فقط إذا طلب منك أحد الموظفين تحديدًا ذلك، لأنه سيجعل من الصعب قراءة السجلات وسيؤدي إلى تدهور أداء المحاكي.", "DebugLogTooltip": "طباعة رسائل سجل التصحيح في وحدة التحكم.\n\nاستخدم هذا فقط إذا طلب منك أحد الموظفين تحديدًا ذلك، لأنه سيجعل من الصعب قراءة السجلات وسيؤدي إلى تدهور أداء المحاكي.",
"LoadApplicationFileTooltip": "افتح مستكشف الملفات لاختيار ملف متوافق مع سويتش لتحميله", "LoadApplicationFileTooltip": "افتح مستكشف الملفات لاختيار ملف متوافق مع سويتش لتحميله",
"LoadApplicationFolderTooltip": "افتح مستكشف الملفات لاختيار تطبيق متوافق مع سويتش للتحميل", "LoadApplicationFolderTooltip": "افتح مستكشف الملفات لاختيار تطبيق متوافق مع سويتش للتحميل",
"LoadDlcFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load DLC from",
"LoadTitleUpdatesFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load title updates from",
"OpenRyujinxFolderTooltip": "فتح مجلد نظام ملفات ريوجينكس", "OpenRyujinxFolderTooltip": "فتح مجلد نظام ملفات ريوجينكس",
"OpenRyujinxLogsTooltip": "يفتح المجلد الذي تتم كتابة السجلات إليه", "OpenRyujinxLogsTooltip": "يفتح المجلد الذي تتم كتابة السجلات إليه",
"ExitTooltip": "الخروج من ريوجينكس", "ExitTooltip": "الخروج من ريوجينكس",
@@ -657,6 +669,8 @@
"OpenSetupGuideMessage": "فتح دليل الإعداد", "OpenSetupGuideMessage": "فتح دليل الإعداد",
"NoUpdate": "لا يوجد تحديث", "NoUpdate": "لا يوجد تحديث",
"TitleUpdateVersionLabel": "الإصدار: {0}", "TitleUpdateVersionLabel": "الإصدار: {0}",
"TitleBundledUpdateVersionLabel": "Bundled: Version {0}",
"TitleBundledDlcLabel": "Bundled:",
"RyujinxInfo": "ريوجينكس - معلومات", "RyujinxInfo": "ريوجينكس - معلومات",
"RyujinxConfirm": "ريوجينكس - تأكيد", "RyujinxConfirm": "ريوجينكس - تأكيد",
"FileDialogAllTypes": "كل الأنواع", "FileDialogAllTypes": "كل الأنواع",
@@ -714,9 +728,17 @@
"DlcWindowTitle": "إدارة المحتوى القابل للتنزيل لـ {0} ({1})", "DlcWindowTitle": "إدارة المحتوى القابل للتنزيل لـ {0} ({1})",
"ModWindowTitle": "إدارة التعديلات لـ {0} ({1})", "ModWindowTitle": "إدارة التعديلات لـ {0} ({1})",
"UpdateWindowTitle": "مدير تحديث العنوان", "UpdateWindowTitle": "مدير تحديث العنوان",
"UpdateWindowUpdateAddedMessage": "{0} new update(s) added",
"UpdateWindowBundledContentNotice": "Bundled updates cannot be removed, only disabled.",
"CheatWindowHeading": "الغش متوفر لـ {0} [{1}]", "CheatWindowHeading": "الغش متوفر لـ {0} [{1}]",
"BuildId": "معرف البناء:", "BuildId": "معرف البناء:",
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
"DlcWindowHeading": "المحتويات القابلة للتنزيل {0}", "DlcWindowHeading": "المحتويات القابلة للتنزيل {0}",
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
"AutoloadUpdateAddedMessage": "{0} new update(s) added",
"AutoloadUpdateRemovedMessage": "{0} missing update(s) removed",
"ModWindowHeading": "{0} تعديل", "ModWindowHeading": "{0} تعديل",
"UserProfilesEditProfile": "تعديل المحدد", "UserProfilesEditProfile": "تعديل المحدد",
"Cancel": "إلغاء", "Cancel": "إلغاء",
@@ -767,6 +789,7 @@
"GraphicsScalingFilterBilinear": "Bilinear", "GraphicsScalingFilterBilinear": "Bilinear",
"GraphicsScalingFilterNearest": "Nearest", "GraphicsScalingFilterNearest": "Nearest",
"GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterFsr": "FSR",
"GraphicsScalingFilterArea": "Area",
"GraphicsScalingFilterLevelLabel": "المستوى", "GraphicsScalingFilterLevelLabel": "المستوى",
"GraphicsScalingFilterLevelTooltip": "اضبط مستوى وضوح FSR 1.0. الأعلى هو أكثر وضوحا.", "GraphicsScalingFilterLevelTooltip": "اضبط مستوى وضوح FSR 1.0. الأعلى هو أكثر وضوحا.",
"SmaaLow": "SMAA منخفض", "SmaaLow": "SMAA منخفض",

View File

@@ -10,7 +10,10 @@
"SettingsTabSystemUseHypervisor": "Hypervisor verwenden", "SettingsTabSystemUseHypervisor": "Hypervisor verwenden",
"MenuBarFile": "_Datei", "MenuBarFile": "_Datei",
"MenuBarFileOpenFromFile": "Datei _öffnen", "MenuBarFileOpenFromFile": "Datei _öffnen",
"MenuBarFileOpenFromFileError": "No applications found in selected file.",
"MenuBarFileOpenUnpacked": "_Entpacktes Spiel öffnen", "MenuBarFileOpenUnpacked": "_Entpacktes Spiel öffnen",
"MenuBarFileLoadDlcFromFolder": "Load DLC From Folder",
"MenuBarFileLoadTitleUpdatesFromFolder": "Load Title Updates From Folder",
"MenuBarFileOpenEmuFolder": "Ryujinx-Ordner öffnen", "MenuBarFileOpenEmuFolder": "Ryujinx-Ordner öffnen",
"MenuBarFileOpenLogsFolder": "Logs-Ordner öffnen", "MenuBarFileOpenLogsFolder": "Logs-Ordner öffnen",
"MenuBarFileExit": "_Beenden", "MenuBarFileExit": "_Beenden",
@@ -103,6 +106,8 @@
"SettingsTabGeneralHideCursorOnIdle": "Mauszeiger bei Inaktivität ausblenden", "SettingsTabGeneralHideCursorOnIdle": "Mauszeiger bei Inaktivität ausblenden",
"SettingsTabGeneralHideCursorAlways": "Immer", "SettingsTabGeneralHideCursorAlways": "Immer",
"SettingsTabGeneralGameDirectories": "Spielverzeichnisse", "SettingsTabGeneralGameDirectories": "Spielverzeichnisse",
"SettingsTabGeneralAutoloadDirectories": "Autoload DLC/Updates Directories",
"SettingsTabGeneralAutoloadNote": "DLC and Updates which refer to missing files will be unloaded automatically",
"SettingsTabGeneralAdd": "Hinzufügen", "SettingsTabGeneralAdd": "Hinzufügen",
"SettingsTabGeneralRemove": "Entfernen", "SettingsTabGeneralRemove": "Entfernen",
"SettingsTabSystem": "System", "SettingsTabSystem": "System",
@@ -402,6 +407,7 @@
"AvatarSetBackgroundColor": "Hintergrundfarbe auswählen", "AvatarSetBackgroundColor": "Hintergrundfarbe auswählen",
"AvatarClose": "Schließen", "AvatarClose": "Schließen",
"ControllerSettingsLoadProfileToolTip": "Lädt ein Profil", "ControllerSettingsLoadProfileToolTip": "Lädt ein Profil",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "Fügt ein Profil hinzu", "ControllerSettingsAddProfileToolTip": "Fügt ein Profil hinzu",
"ControllerSettingsRemoveProfileToolTip": "Entfernt ein Profil", "ControllerSettingsRemoveProfileToolTip": "Entfernt ein Profil",
"ControllerSettingsSaveProfileToolTip": "Speichert ein Profil", "ControllerSettingsSaveProfileToolTip": "Speichert ein Profil",
@@ -411,6 +417,7 @@
"GameListContextMenuToggleFavorite": "Als Favoriten hinzufügen/entfernen", "GameListContextMenuToggleFavorite": "Als Favoriten hinzufügen/entfernen",
"GameListContextMenuToggleFavoriteToolTip": "Aktiviert den Favoriten-Status des Spiels", "GameListContextMenuToggleFavoriteToolTip": "Aktiviert den Favoriten-Status des Spiels",
"SettingsTabGeneralTheme": "Design:", "SettingsTabGeneralTheme": "Design:",
"SettingsTabGeneralThemeAuto": "Auto",
"SettingsTabGeneralThemeDark": "Dunkel", "SettingsTabGeneralThemeDark": "Dunkel",
"SettingsTabGeneralThemeLight": "Hell", "SettingsTabGeneralThemeLight": "Hell",
"ControllerSettingsConfigureGeneral": "Konfigurieren", "ControllerSettingsConfigureGeneral": "Konfigurieren",
@@ -431,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "Es ist ein Fehler beim Suchen der angegebenen Speicherdaten aufgetreten: {0}", "DialogMessageFindSaveErrorMessage": "Es ist ein Fehler beim Suchen der angegebenen Speicherdaten aufgetreten: {0}",
"FolderDialogExtractTitle": "Wähle den Ordner, in welchen die Dateien entpackt werden sollen", "FolderDialogExtractTitle": "Wähle den Ordner, in welchen die Dateien entpackt werden sollen",
"DialogNcaExtractionMessage": "Extrahiert {0} abschnitt von {1}...", "DialogNcaExtractionMessage": "Extrahiert {0} abschnitt von {1}...",
"DialogNcaExtractionTitle": "Ryujinx - NCA-Abschnitt-Extraktor", "DialogNcaExtractionTitle": "NCA-Abschnitt-Extraktor",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "Extraktion fehlgeschlagen. Der Hauptheader der NCA war in der ausgewählten Datei nicht vorhanden.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "Extraktion fehlgeschlagen. Der Hauptheader der NCA war in der ausgewählten Datei nicht vorhanden.",
"DialogNcaExtractionCheckLogErrorMessage": "Extraktion fehlgeschlagen. Überprüfe die Logs für weitere Informationen.", "DialogNcaExtractionCheckLogErrorMessage": "Extraktion fehlgeschlagen. Überprüfe die Logs für weitere Informationen.",
"DialogNcaExtractionSuccessMessage": "Extraktion erfolgreich abgeschlossen.", "DialogNcaExtractionSuccessMessage": "Extraktion erfolgreich abgeschlossen.",
@@ -561,6 +568,9 @@
"AddGameDirBoxTooltip": "Gibt das Spielverzeichnis an, das der Liste hinzuzufügt wird", "AddGameDirBoxTooltip": "Gibt das Spielverzeichnis an, das der Liste hinzuzufügt wird",
"AddGameDirTooltip": "Fügt ein neues Spielverzeichnis hinzu", "AddGameDirTooltip": "Fügt ein neues Spielverzeichnis hinzu",
"RemoveGameDirTooltip": "Entfernt das ausgewähltes Spielverzeichnis", "RemoveGameDirTooltip": "Entfernt das ausgewähltes Spielverzeichnis",
"AddAutoloadDirBoxTooltip": "Enter an autoload directory to add to the list",
"AddAutoloadDirTooltip": "Add an autoload directory to the list",
"RemoveAutoloadDirTooltip": "Remove selected autoload directory",
"CustomThemeCheckTooltip": "Verwende ein eigenes Design für die Emulator-Benutzeroberfläche", "CustomThemeCheckTooltip": "Verwende ein eigenes Design für die Emulator-Benutzeroberfläche",
"CustomThemePathTooltip": "Gibt den Pfad zum Design für die Emulator-Benutzeroberfläche an", "CustomThemePathTooltip": "Gibt den Pfad zum Design für die Emulator-Benutzeroberfläche an",
"CustomThemeBrowseTooltip": "Ermöglicht die Suche nach einem benutzerdefinierten Design für die Emulator-Benutzeroberfläche", "CustomThemeBrowseTooltip": "Ermöglicht die Suche nach einem benutzerdefinierten Design für die Emulator-Benutzeroberfläche",
@@ -606,6 +616,8 @@
"DebugLogTooltip": "Ausgabe von Debug-Logs in der Konsole.\n\nVerwende diese Option nur auf ausdrückliche Anweisung von Ryujinx Entwicklern, da sie das Lesen der Protokolle erschwert und die Leistung des Emulators verschlechtert.", "DebugLogTooltip": "Ausgabe von Debug-Logs in der Konsole.\n\nVerwende diese Option nur auf ausdrückliche Anweisung von Ryujinx Entwicklern, da sie das Lesen der Protokolle erschwert und die Leistung des Emulators verschlechtert.",
"LoadApplicationFileTooltip": "Öffnet die Dateiauswahl um Datei zu laden, welche mit der Switch kompatibel ist", "LoadApplicationFileTooltip": "Öffnet die Dateiauswahl um Datei zu laden, welche mit der Switch kompatibel ist",
"LoadApplicationFolderTooltip": "Öffnet die Dateiauswahl um ein Spiel zu laden, welches mit der Switch kompatibel ist", "LoadApplicationFolderTooltip": "Öffnet die Dateiauswahl um ein Spiel zu laden, welches mit der Switch kompatibel ist",
"LoadDlcFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load DLC from",
"LoadTitleUpdatesFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load title updates from",
"OpenRyujinxFolderTooltip": "Öffnet den Ordner, der das Ryujinx Dateisystem enthält", "OpenRyujinxFolderTooltip": "Öffnet den Ordner, der das Ryujinx Dateisystem enthält",
"OpenRyujinxLogsTooltip": "Öffnet den Ordner, in welchem die Logs gespeichert werden", "OpenRyujinxLogsTooltip": "Öffnet den Ordner, in welchem die Logs gespeichert werden",
"ExitTooltip": "Beendet Ryujinx", "ExitTooltip": "Beendet Ryujinx",
@@ -657,6 +669,8 @@
"OpenSetupGuideMessage": "Öffne den 'Setup Guide'", "OpenSetupGuideMessage": "Öffne den 'Setup Guide'",
"NoUpdate": "Kein Update", "NoUpdate": "Kein Update",
"TitleUpdateVersionLabel": "Version {0} - {1}", "TitleUpdateVersionLabel": "Version {0} - {1}",
"TitleBundledUpdateVersionLabel": "Bundled: Version {0}",
"TitleBundledDlcLabel": "Bundled:",
"RyujinxInfo": "Ryujinx - Info", "RyujinxInfo": "Ryujinx - Info",
"RyujinxConfirm": "Ryujinx - Bestätigung", "RyujinxConfirm": "Ryujinx - Bestätigung",
"FileDialogAllTypes": "Alle Typen", "FileDialogAllTypes": "Alle Typen",
@@ -714,9 +728,17 @@
"DlcWindowTitle": "Spiel-DLC verwalten", "DlcWindowTitle": "Spiel-DLC verwalten",
"ModWindowTitle": "Manage Mods for {0} ({1})", "ModWindowTitle": "Manage Mods for {0} ({1})",
"UpdateWindowTitle": "Spiel-Updates verwalten", "UpdateWindowTitle": "Spiel-Updates verwalten",
"UpdateWindowUpdateAddedMessage": "{0} new update(s) added",
"UpdateWindowBundledContentNotice": "Bundled updates cannot be removed, only disabled.",
"CheatWindowHeading": "Cheats verfügbar für {0} [{1}]", "CheatWindowHeading": "Cheats verfügbar für {0} [{1}]",
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
"BuildId": "BuildId:", "BuildId": "BuildId:",
"DlcWindowHeading": "DLC verfügbar für {0} [{1}]", "DlcWindowHeading": "DLC verfügbar für {0} [{1}]",
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
"AutoloadUpdateAddedMessage": "{0} new update(s) added",
"AutoloadUpdateRemovedMessage": "{0} missing update(s) removed",
"ModWindowHeading": "{0} Mod(s)", "ModWindowHeading": "{0} Mod(s)",
"UserProfilesEditProfile": "Profil bearbeiten", "UserProfilesEditProfile": "Profil bearbeiten",
"Cancel": "Abbrechen", "Cancel": "Abbrechen",
@@ -767,6 +789,7 @@
"GraphicsScalingFilterBilinear": "Bilinear", "GraphicsScalingFilterBilinear": "Bilinear",
"GraphicsScalingFilterNearest": "Nächstes", "GraphicsScalingFilterNearest": "Nächstes",
"GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterFsr": "FSR",
"GraphicsScalingFilterArea": "Area",
"GraphicsScalingFilterLevelLabel": "Stufe", "GraphicsScalingFilterLevelLabel": "Stufe",
"GraphicsScalingFilterLevelTooltip": "FSR 1.0 Schärfelevel festlegen. Höher ist schärfer.", "GraphicsScalingFilterLevelTooltip": "FSR 1.0 Schärfelevel festlegen. Höher ist schärfer.",
"SmaaLow": "SMAA Niedrig", "SmaaLow": "SMAA Niedrig",

View File

@@ -10,7 +10,10 @@
"SettingsTabSystemUseHypervisor": "Χρήση Hypervisor", "SettingsTabSystemUseHypervisor": "Χρήση Hypervisor",
"MenuBarFile": "_Αρχείο", "MenuBarFile": "_Αρχείο",
"MenuBarFileOpenFromFile": "_Φόρτωση Αρχείου Εφαρμογής", "MenuBarFileOpenFromFile": "_Φόρτωση Αρχείου Εφαρμογής",
"MenuBarFileOpenFromFileError": "No applications found in selected file.",
"MenuBarFileOpenUnpacked": "Φόρτωση Απακετάριστου _Παιχνιδιού", "MenuBarFileOpenUnpacked": "Φόρτωση Απακετάριστου _Παιχνιδιού",
"MenuBarFileLoadDlcFromFolder": "Load DLC From Folder",
"MenuBarFileLoadTitleUpdatesFromFolder": "Load Title Updates From Folder",
"MenuBarFileOpenEmuFolder": "Άνοιγμα Φακέλου Ryujinx", "MenuBarFileOpenEmuFolder": "Άνοιγμα Φακέλου Ryujinx",
"MenuBarFileOpenLogsFolder": "Άνοιγμα Φακέλου Καταγραφής", "MenuBarFileOpenLogsFolder": "Άνοιγμα Φακέλου Καταγραφής",
"MenuBarFileExit": "_Έξοδος", "MenuBarFileExit": "_Έξοδος",
@@ -103,6 +106,8 @@
"SettingsTabGeneralHideCursorOnIdle": "Απόκρυψη Δρομέα στην Αδράνεια", "SettingsTabGeneralHideCursorOnIdle": "Απόκρυψη Δρομέα στην Αδράνεια",
"SettingsTabGeneralHideCursorAlways": "Πάντα", "SettingsTabGeneralHideCursorAlways": "Πάντα",
"SettingsTabGeneralGameDirectories": "Τοποθεσίες παιχνιδιών", "SettingsTabGeneralGameDirectories": "Τοποθεσίες παιχνιδιών",
"SettingsTabGeneralAutoloadDirectories": "Autoload DLC/Updates Directories",
"SettingsTabGeneralAutoloadNote": "DLC and Updates which refer to missing files will be unloaded automatically",
"SettingsTabGeneralAdd": "Προσθήκη", "SettingsTabGeneralAdd": "Προσθήκη",
"SettingsTabGeneralRemove": "Αφαίρεση", "SettingsTabGeneralRemove": "Αφαίρεση",
"SettingsTabSystem": "Σύστημα", "SettingsTabSystem": "Σύστημα",
@@ -402,6 +407,7 @@
"AvatarSetBackgroundColor": "Ορισμός Χρώματος Φόντου", "AvatarSetBackgroundColor": "Ορισμός Χρώματος Φόντου",
"AvatarClose": "Κλείσιμο", "AvatarClose": "Κλείσιμο",
"ControllerSettingsLoadProfileToolTip": "Φόρτωση Προφίλ", "ControllerSettingsLoadProfileToolTip": "Φόρτωση Προφίλ",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "Προσθήκη Προφίλ", "ControllerSettingsAddProfileToolTip": "Προσθήκη Προφίλ",
"ControllerSettingsRemoveProfileToolTip": "Κατάργηση Προφίλ", "ControllerSettingsRemoveProfileToolTip": "Κατάργηση Προφίλ",
"ControllerSettingsSaveProfileToolTip": "Αποθήκευση Προφίλ", "ControllerSettingsSaveProfileToolTip": "Αποθήκευση Προφίλ",
@@ -411,6 +417,7 @@
"GameListContextMenuToggleFavorite": "Εναλλαγή Αγαπημένου", "GameListContextMenuToggleFavorite": "Εναλλαγή Αγαπημένου",
"GameListContextMenuToggleFavoriteToolTip": "Εναλλαγή της Κατάστασης Αγαπημένο του Παιχνιδιού", "GameListContextMenuToggleFavoriteToolTip": "Εναλλαγή της Κατάστασης Αγαπημένο του Παιχνιδιού",
"SettingsTabGeneralTheme": "Theme:", "SettingsTabGeneralTheme": "Theme:",
"SettingsTabGeneralThemeAuto": "Auto",
"SettingsTabGeneralThemeDark": "Dark", "SettingsTabGeneralThemeDark": "Dark",
"SettingsTabGeneralThemeLight": "Light", "SettingsTabGeneralThemeLight": "Light",
"ControllerSettingsConfigureGeneral": "Παραμέτρων", "ControllerSettingsConfigureGeneral": "Παραμέτρων",
@@ -431,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "Σφάλμα κατά την εύρεση των αποθηκευμένων δεδομένων: {0}", "DialogMessageFindSaveErrorMessage": "Σφάλμα κατά την εύρεση των αποθηκευμένων δεδομένων: {0}",
"FolderDialogExtractTitle": "Επιλέξτε τον φάκελο στον οποίο θέλετε να εξαγάγετε", "FolderDialogExtractTitle": "Επιλέξτε τον φάκελο στον οποίο θέλετε να εξαγάγετε",
"DialogNcaExtractionMessage": "Εξαγωγή ενότητας {0} από {1}...", "DialogNcaExtractionMessage": "Εξαγωγή ενότητας {0} από {1}...",
"DialogNcaExtractionTitle": "Ryujinx - NCA Εξαγωγέας Τμημάτων", "DialogNcaExtractionTitle": "NCA Εξαγωγέας Τμημάτων",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "Αποτυχία εξαγωγής. Η κύρια NCA δεν υπήρχε στο επιλεγμένο αρχείο.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "Αποτυχία εξαγωγής. Η κύρια NCA δεν υπήρχε στο επιλεγμένο αρχείο.",
"DialogNcaExtractionCheckLogErrorMessage": "Αποτυχία εξαγωγής. Διαβάστε το αρχείο καταγραφής για περισσότερες πληροφορίες.", "DialogNcaExtractionCheckLogErrorMessage": "Αποτυχία εξαγωγής. Διαβάστε το αρχείο καταγραφής για περισσότερες πληροφορίες.",
"DialogNcaExtractionSuccessMessage": "Η εξαγωγή ολοκληρώθηκε με επιτυχία.", "DialogNcaExtractionSuccessMessage": "Η εξαγωγή ολοκληρώθηκε με επιτυχία.",
@@ -561,6 +568,9 @@
"AddGameDirBoxTooltip": "Εισαγάγετε μία τοποθεσία παιχνιδιών για προσθήκη στη λίστα", "AddGameDirBoxTooltip": "Εισαγάγετε μία τοποθεσία παιχνιδιών για προσθήκη στη λίστα",
"AddGameDirTooltip": "Προσθέστε μία τοποθεσία παιχνιδιών στη λίστα", "AddGameDirTooltip": "Προσθέστε μία τοποθεσία παιχνιδιών στη λίστα",
"RemoveGameDirTooltip": "Αφαιρέστε την επιλεγμένη τοποθεσία παιχνιδιών", "RemoveGameDirTooltip": "Αφαιρέστε την επιλεγμένη τοποθεσία παιχνιδιών",
"AddAutoloadDirBoxTooltip": "Enter an autoload directory to add to the list",
"AddAutoloadDirTooltip": "Add an autoload directory to the list",
"RemoveAutoloadDirTooltip": "Remove selected autoload directory",
"CustomThemeCheckTooltip": "Ενεργοποίηση ή απενεργοποίηση προσαρμοσμένων θεμάτων στο GUI", "CustomThemeCheckTooltip": "Ενεργοποίηση ή απενεργοποίηση προσαρμοσμένων θεμάτων στο GUI",
"CustomThemePathTooltip": "Διαδρομή προς το προσαρμοσμένο θέμα GUI", "CustomThemePathTooltip": "Διαδρομή προς το προσαρμοσμένο θέμα GUI",
"CustomThemeBrowseTooltip": "Αναζητήστε ένα προσαρμοσμένο θέμα GUI", "CustomThemeBrowseTooltip": "Αναζητήστε ένα προσαρμοσμένο θέμα GUI",
@@ -606,6 +616,8 @@
"DebugLogTooltip": "Ενεργοποιεί την εκτύπωση μηνυμάτων αρχείου καταγραφής εντοπισμού σφαλμάτων", "DebugLogTooltip": "Ενεργοποιεί την εκτύπωση μηνυμάτων αρχείου καταγραφής εντοπισμού σφαλμάτων",
"LoadApplicationFileTooltip": "Ανοίξτε έναν επιλογέα αρχείων για να επιλέξετε ένα αρχείο συμβατό με το Switch για φόρτωση", "LoadApplicationFileTooltip": "Ανοίξτε έναν επιλογέα αρχείων για να επιλέξετε ένα αρχείο συμβατό με το Switch για φόρτωση",
"LoadApplicationFolderTooltip": "Ανοίξτε έναν επιλογέα αρχείων για να επιλέξετε μία μη συσκευασμένη εφαρμογή, συμβατή με το Switch για φόρτωση", "LoadApplicationFolderTooltip": "Ανοίξτε έναν επιλογέα αρχείων για να επιλέξετε μία μη συσκευασμένη εφαρμογή, συμβατή με το Switch για φόρτωση",
"LoadDlcFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load DLC from",
"LoadTitleUpdatesFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load title updates from",
"OpenRyujinxFolderTooltip": "Ανοίξτε το φάκελο συστήματος αρχείων Ryujinx", "OpenRyujinxFolderTooltip": "Ανοίξτε το φάκελο συστήματος αρχείων Ryujinx",
"OpenRyujinxLogsTooltip": "Ανοίξτε το φάκελο στον οποίο διατηρούνται τα αρχεία καταγραφής", "OpenRyujinxLogsTooltip": "Ανοίξτε το φάκελο στον οποίο διατηρούνται τα αρχεία καταγραφής",
"ExitTooltip": "Έξοδος από το Ryujinx", "ExitTooltip": "Έξοδος από το Ryujinx",
@@ -657,6 +669,8 @@
"OpenSetupGuideMessage": "Ανοίξτε τον Οδηγό Εγκατάστασης.", "OpenSetupGuideMessage": "Ανοίξτε τον Οδηγό Εγκατάστασης.",
"NoUpdate": "Καμία Eνημέρωση", "NoUpdate": "Καμία Eνημέρωση",
"TitleUpdateVersionLabel": "Version {0} - {1}", "TitleUpdateVersionLabel": "Version {0} - {1}",
"TitleBundledUpdateVersionLabel": "Bundled: Version {0}",
"TitleBundledDlcLabel": "Bundled:",
"RyujinxInfo": "Ryujinx - Πληροφορίες", "RyujinxInfo": "Ryujinx - Πληροφορίες",
"RyujinxConfirm": "Ryujinx - Επιβεβαίωση", "RyujinxConfirm": "Ryujinx - Επιβεβαίωση",
"FileDialogAllTypes": "Όλοι οι τύποι", "FileDialogAllTypes": "Όλοι οι τύποι",
@@ -714,9 +728,17 @@
"DlcWindowTitle": "Downloadable Content Manager", "DlcWindowTitle": "Downloadable Content Manager",
"ModWindowTitle": "Manage Mods for {0} ({1})", "ModWindowTitle": "Manage Mods for {0} ({1})",
"UpdateWindowTitle": "Διαχειριστής Ενημερώσεων Τίτλου", "UpdateWindowTitle": "Διαχειριστής Ενημερώσεων Τίτλου",
"UpdateWindowUpdateAddedMessage": "{0} new update(s) added",
"UpdateWindowBundledContentNotice": "Bundled updates cannot be removed, only disabled.",
"CheatWindowHeading": "Διαθέσιμα Cheats για {0} [{1}]", "CheatWindowHeading": "Διαθέσιμα Cheats για {0} [{1}]",
"BuildId": "BuildId:", "BuildId": "BuildId:",
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
"DlcWindowHeading": "{0} Downloadable Content(s) available for {1} ({2})", "DlcWindowHeading": "{0} Downloadable Content(s) available for {1} ({2})",
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
"AutoloadUpdateAddedMessage": "{0} new update(s) added",
"AutoloadUpdateRemovedMessage": "{0} missing update(s) removed",
"ModWindowHeading": "{0} Mod(s)", "ModWindowHeading": "{0} Mod(s)",
"UserProfilesEditProfile": "Επεξεργασία Επιλεγμένων", "UserProfilesEditProfile": "Επεξεργασία Επιλεγμένων",
"Cancel": "Ακύρωση", "Cancel": "Ακύρωση",
@@ -767,6 +789,7 @@
"GraphicsScalingFilterBilinear": "Bilinear", "GraphicsScalingFilterBilinear": "Bilinear",
"GraphicsScalingFilterNearest": "Nearest", "GraphicsScalingFilterNearest": "Nearest",
"GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterFsr": "FSR",
"GraphicsScalingFilterArea": "Area",
"GraphicsScalingFilterLevelLabel": "Επίπεδο", "GraphicsScalingFilterLevelLabel": "Επίπεδο",
"GraphicsScalingFilterLevelTooltip": "Set FSR 1.0 sharpening level. Higher is sharper.", "GraphicsScalingFilterLevelTooltip": "Set FSR 1.0 sharpening level. Higher is sharper.",
"SmaaLow": "Χαμηλό SMAA", "SmaaLow": "Χαμηλό SMAA",

View File

@@ -413,6 +413,7 @@
"AvatarSetBackgroundColor": "Set Background Color", "AvatarSetBackgroundColor": "Set Background Color",
"AvatarClose": "Close", "AvatarClose": "Close",
"ControllerSettingsLoadProfileToolTip": "Load Profile", "ControllerSettingsLoadProfileToolTip": "Load Profile",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "Add Profile", "ControllerSettingsAddProfileToolTip": "Add Profile",
"ControllerSettingsRemoveProfileToolTip": "Remove Profile", "ControllerSettingsRemoveProfileToolTip": "Remove Profile",
"ControllerSettingsSaveProfileToolTip": "Save Profile", "ControllerSettingsSaveProfileToolTip": "Save Profile",
@@ -443,7 +444,7 @@
"DialogMessageFindSaveErrorMessage": "There was an error finding the specified savedata: {0}", "DialogMessageFindSaveErrorMessage": "There was an error finding the specified savedata: {0}",
"FolderDialogExtractTitle": "Choose the folder to extract into", "FolderDialogExtractTitle": "Choose the folder to extract into",
"DialogNcaExtractionMessage": "Extracting {0} section from {1}...", "DialogNcaExtractionMessage": "Extracting {0} section from {1}...",
"DialogNcaExtractionTitle": "Ryujinx - NCA Section Extractor", "DialogNcaExtractionTitle": "NCA Section Extractor",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "Extraction failure. The main NCA was not present in the selected file.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "Extraction failure. The main NCA was not present in the selected file.",
"DialogNcaExtractionCheckLogErrorMessage": "Extraction failed. Please check the log file for more details.", "DialogNcaExtractionCheckLogErrorMessage": "Extraction failed. Please check the log file for more details.",
"DialogNcaExtractionSuccessMessage": "Extraction completed successfully.", "DialogNcaExtractionSuccessMessage": "Extraction completed successfully.",
@@ -451,7 +452,7 @@
"DialogUpdaterCancelUpdateMessage": "Update canceled!", "DialogUpdaterCancelUpdateMessage": "Update canceled!",
"DialogUpdaterAlreadyOnLatestVersionMessage": "You are already using the latest version of Ryujinx!", "DialogUpdaterAlreadyOnLatestVersionMessage": "You are already using the latest version of Ryujinx!",
"DialogUpdaterFailedToGetVersionMessage": "An error occurred while trying to retrieve release information from GitHub. This may happen if a new release is currently being compiled by GitHub Actions. Please try again in a few minutes.", "DialogUpdaterFailedToGetVersionMessage": "An error occurred while trying to retrieve release information from GitHub. This may happen if a new release is currently being compiled by GitHub Actions. Please try again in a few minutes.",
"DialogUpdaterConvertFailedGithubMessage": "Failed to convert the Ryujinx version received from GitHub." "DialogUpdaterConvertFailedGithubMessage": "Failed to convert the Ryujinx version received from GitHub.",
"DialogUpdaterDownloadingMessage": "Downloading Update...", "DialogUpdaterDownloadingMessage": "Downloading Update...",
"DialogUpdaterExtractionMessage": "Extracting Update...", "DialogUpdaterExtractionMessage": "Extracting Update...",
"DialogUpdaterRenamingMessage": "Renaming Update...", "DialogUpdaterRenamingMessage": "Renaming Update...",
@@ -460,7 +461,7 @@
"DialogUpdaterRestartMessage": "Do you want to restart Ryujinx now?", "DialogUpdaterRestartMessage": "Do you want to restart Ryujinx now?",
"DialogUpdaterNoInternetMessage": "You are not connected to the Internet!", "DialogUpdaterNoInternetMessage": "You are not connected to the Internet!",
"DialogUpdaterNoInternetSubMessage": "Please verify that you have a working Internet connection!", "DialogUpdaterNoInternetSubMessage": "Please verify that you have a working Internet connection!",
"DialogUpdaterDirtyBuildMessage": "You Cannot update a Dirty build of Ryujinx!", "DialogUpdaterDirtyBuildMessage": "You cannot update a Dirty build of Ryujinx!",
"DialogUpdaterDirtyBuildSubMessage": "Please download Ryujinx at https://github.com/GreemDev/Ryujinx/releases/ if you are looking for a supported version.", "DialogUpdaterDirtyBuildSubMessage": "Please download Ryujinx at https://github.com/GreemDev/Ryujinx/releases/ if you are looking for a supported version.",
"DialogRestartRequiredMessage": "Restart Required", "DialogRestartRequiredMessage": "Restart Required",
"DialogThemeRestartMessage": "Theme has been saved. A restart is needed to apply the theme.", "DialogThemeRestartMessage": "Theme has been saved. A restart is needed to apply the theme.",
@@ -771,7 +772,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)", "DlcWindowHeading": "{0} Downloadable Content(s) available for {1} ({2})",
"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",

View File

@@ -10,7 +10,10 @@
"SettingsTabSystemUseHypervisor": "Usar hipervisor", "SettingsTabSystemUseHypervisor": "Usar hipervisor",
"MenuBarFile": "_Archivo", "MenuBarFile": "_Archivo",
"MenuBarFileOpenFromFile": "_Cargar aplicación desde un archivo", "MenuBarFileOpenFromFile": "_Cargar aplicación desde un archivo",
"MenuBarFileOpenFromFileError": "No applications found in selected file.",
"MenuBarFileOpenUnpacked": "Cargar juego _desempaquetado", "MenuBarFileOpenUnpacked": "Cargar juego _desempaquetado",
"MenuBarFileLoadDlcFromFolder": "Load DLC From Folder",
"MenuBarFileLoadTitleUpdatesFromFolder": "Load Title Updates From Folder",
"MenuBarFileOpenEmuFolder": "Abrir carpeta de Ryujinx", "MenuBarFileOpenEmuFolder": "Abrir carpeta de Ryujinx",
"MenuBarFileOpenLogsFolder": "Abrir carpeta de registros", "MenuBarFileOpenLogsFolder": "Abrir carpeta de registros",
"MenuBarFileExit": "_Salir", "MenuBarFileExit": "_Salir",
@@ -103,6 +106,8 @@
"SettingsTabGeneralHideCursorOnIdle": "Ocultar cursor cuando esté inactivo", "SettingsTabGeneralHideCursorOnIdle": "Ocultar cursor cuando esté inactivo",
"SettingsTabGeneralHideCursorAlways": "Siempre", "SettingsTabGeneralHideCursorAlways": "Siempre",
"SettingsTabGeneralGameDirectories": "Carpetas de juegos", "SettingsTabGeneralGameDirectories": "Carpetas de juegos",
"SettingsTabGeneralAutoloadDirectories": "Autoload DLC/Updates Directories",
"SettingsTabGeneralAutoloadNote": "DLC and Updates which refer to missing files will be unloaded automatically",
"SettingsTabGeneralAdd": "Agregar", "SettingsTabGeneralAdd": "Agregar",
"SettingsTabGeneralRemove": "Quitar", "SettingsTabGeneralRemove": "Quitar",
"SettingsTabSystem": "Sistema", "SettingsTabSystem": "Sistema",
@@ -402,6 +407,7 @@
"AvatarSetBackgroundColor": "Establecer color de fondo", "AvatarSetBackgroundColor": "Establecer color de fondo",
"AvatarClose": "Cerrar", "AvatarClose": "Cerrar",
"ControllerSettingsLoadProfileToolTip": "Cargar perfil", "ControllerSettingsLoadProfileToolTip": "Cargar perfil",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "Agregar perfil", "ControllerSettingsAddProfileToolTip": "Agregar perfil",
"ControllerSettingsRemoveProfileToolTip": "Eliminar perfil", "ControllerSettingsRemoveProfileToolTip": "Eliminar perfil",
"ControllerSettingsSaveProfileToolTip": "Guardar perfil", "ControllerSettingsSaveProfileToolTip": "Guardar perfil",
@@ -411,6 +417,7 @@
"GameListContextMenuToggleFavorite": "Marcar favorito", "GameListContextMenuToggleFavorite": "Marcar favorito",
"GameListContextMenuToggleFavoriteToolTip": "Marca o desmarca el juego como favorito", "GameListContextMenuToggleFavoriteToolTip": "Marca o desmarca el juego como favorito",
"SettingsTabGeneralTheme": "Tema:", "SettingsTabGeneralTheme": "Tema:",
"SettingsTabGeneralThemeAuto": "Auto",
"SettingsTabGeneralThemeDark": "Oscuro", "SettingsTabGeneralThemeDark": "Oscuro",
"SettingsTabGeneralThemeLight": "Claro", "SettingsTabGeneralThemeLight": "Claro",
"ControllerSettingsConfigureGeneral": "Configurar", "ControllerSettingsConfigureGeneral": "Configurar",
@@ -431,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "Hubo un error encontrando los datos de guardado especificados: {0}", "DialogMessageFindSaveErrorMessage": "Hubo un error encontrando los datos de guardado especificados: {0}",
"FolderDialogExtractTitle": "Elige la carpeta en la que deseas extraer", "FolderDialogExtractTitle": "Elige la carpeta en la que deseas extraer",
"DialogNcaExtractionMessage": "Extrayendo {0} sección de {1}...", "DialogNcaExtractionMessage": "Extrayendo {0} sección de {1}...",
"DialogNcaExtractionTitle": "Ryujinx - Extractor de sección NCA", "DialogNcaExtractionTitle": "Extractor de sección NCA",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "Fallo de extracción. El NCA principal no estaba presente en el archivo seleccionado.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "Fallo de extracción. El NCA principal no estaba presente en el archivo seleccionado.",
"DialogNcaExtractionCheckLogErrorMessage": "Fallo de extracción. Lee el registro para más información.", "DialogNcaExtractionCheckLogErrorMessage": "Fallo de extracción. Lee el registro para más información.",
"DialogNcaExtractionSuccessMessage": "Se completó la extracción con éxito.", "DialogNcaExtractionSuccessMessage": "Se completó la extracción con éxito.",
@@ -561,6 +568,9 @@
"AddGameDirBoxTooltip": "Elige un directorio de juegos para mostrar en la ventana principal", "AddGameDirBoxTooltip": "Elige un directorio de juegos para mostrar en la ventana principal",
"AddGameDirTooltip": "Agrega un directorio de juegos a la lista", "AddGameDirTooltip": "Agrega un directorio de juegos a la lista",
"RemoveGameDirTooltip": "Quita el directorio seleccionado de la lista", "RemoveGameDirTooltip": "Quita el directorio seleccionado de la lista",
"AddAutoloadDirBoxTooltip": "Enter an autoload directory to add to the list",
"AddAutoloadDirTooltip": "Add an autoload directory to the list",
"RemoveAutoloadDirTooltip": "Remove selected autoload directory",
"CustomThemeCheckTooltip": "Activa o desactiva los temas personalizados para la interfaz", "CustomThemeCheckTooltip": "Activa o desactiva los temas personalizados para la interfaz",
"CustomThemePathTooltip": "Carpeta que contiene los temas personalizados para la interfaz", "CustomThemePathTooltip": "Carpeta que contiene los temas personalizados para la interfaz",
"CustomThemeBrowseTooltip": "Busca un tema personalizado para la interfaz", "CustomThemeBrowseTooltip": "Busca un tema personalizado para la interfaz",
@@ -606,6 +616,8 @@
"DebugLogTooltip": "Escribe mensajes de debug en la consola\n\nActiva esto solo si un miembro del equipo te lo pide expresamente, pues hará que el registro sea difícil de leer y empeorará el rendimiento del emulador.", "DebugLogTooltip": "Escribe mensajes de debug en la consola\n\nActiva esto solo si un miembro del equipo te lo pide expresamente, pues hará que el registro sea difícil de leer y empeorará el rendimiento del emulador.",
"LoadApplicationFileTooltip": "Abre el explorador de archivos para elegir un archivo compatible con Switch para cargar", "LoadApplicationFileTooltip": "Abre el explorador de archivos para elegir un archivo compatible con Switch para cargar",
"LoadApplicationFolderTooltip": "Abre el explorador de archivos para elegir un archivo desempaquetado y compatible con Switch para cargar", "LoadApplicationFolderTooltip": "Abre el explorador de archivos para elegir un archivo desempaquetado y compatible con Switch para cargar",
"LoadDlcFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load DLC from",
"LoadTitleUpdatesFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load title updates from",
"OpenRyujinxFolderTooltip": "Abre la carpeta de sistema de Ryujinx", "OpenRyujinxFolderTooltip": "Abre la carpeta de sistema de Ryujinx",
"OpenRyujinxLogsTooltip": "Abre la carpeta en la que se guardan los registros", "OpenRyujinxLogsTooltip": "Abre la carpeta en la que se guardan los registros",
"ExitTooltip": "Cierra Ryujinx", "ExitTooltip": "Cierra Ryujinx",
@@ -657,6 +669,8 @@
"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}",
"TitleBundledDlcLabel": "Bundled:",
"RyujinxInfo": "Ryujinx - Info", "RyujinxInfo": "Ryujinx - Info",
"RyujinxConfirm": "Ryujinx - Confirmación", "RyujinxConfirm": "Ryujinx - Confirmación",
"FileDialogAllTypes": "Todos los tipos", "FileDialogAllTypes": "Todos los tipos",
@@ -714,9 +728,16 @@
"DlcWindowTitle": "Administrar contenido descargable", "DlcWindowTitle": "Administrar contenido descargable",
"ModWindowTitle": "Manage Mods for {0} ({1})", "ModWindowTitle": "Manage Mods for {0} ({1})",
"UpdateWindowTitle": "Administrar actualizaciones", "UpdateWindowTitle": "Administrar actualizaciones",
"UpdateWindowUpdateAddedMessage": "{0} new update(s) added",
"UpdateWindowBundledContentNotice": "Bundled updates cannot be removed, only disabled.",
"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": "Contenido descargable disponible para {0} [{1}]",
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
"AutoloadUpdateAddedMessage": "{0} new update(s) added",
"AutoloadUpdateRemovedMessage": "{0} missing update(s) removed",
"ModWindowHeading": "{0} Mod(s)", "ModWindowHeading": "{0} Mod(s)",
"UserProfilesEditProfile": "Editar selección", "UserProfilesEditProfile": "Editar selección",
"Cancel": "Cancelar", "Cancel": "Cancelar",
@@ -767,6 +788,7 @@
"GraphicsScalingFilterBilinear": "Bilinear\n", "GraphicsScalingFilterBilinear": "Bilinear\n",
"GraphicsScalingFilterNearest": "Cercano", "GraphicsScalingFilterNearest": "Cercano",
"GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterFsr": "FSR",
"GraphicsScalingFilterArea": "Area",
"GraphicsScalingFilterLevelLabel": "Nivel", "GraphicsScalingFilterLevelLabel": "Nivel",
"GraphicsScalingFilterLevelTooltip": "Ajuste el nivel de nitidez FSR 1.0. Mayor es más nítido.", "GraphicsScalingFilterLevelTooltip": "Ajuste el nivel de nitidez FSR 1.0. Mayor es más nítido.",
"SmaaLow": "SMAA Bajo", "SmaaLow": "SMAA Bajo",

View File

@@ -100,7 +100,7 @@
"SettingsTabGeneralCheckUpdatesOnLaunch": "Vérifier les mises à jour au démarrage", "SettingsTabGeneralCheckUpdatesOnLaunch": "Vérifier les mises à jour au démarrage",
"SettingsTabGeneralShowConfirmExitDialog": "Afficher le message de \"Confirmation de sortie\"", "SettingsTabGeneralShowConfirmExitDialog": "Afficher le message de \"Confirmation de sortie\"",
"SettingsTabGeneralRememberWindowState": "Mémoriser la taille/position de la fenêtre", "SettingsTabGeneralRememberWindowState": "Mémoriser la taille/position de la fenêtre",
"SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralShowTitleBar": "Afficher Barre de Titre (Nécessite redémarrage)",
"SettingsTabGeneralHideCursor": "Masquer le Curseur :", "SettingsTabGeneralHideCursor": "Masquer le Curseur :",
"SettingsTabGeneralHideCursorNever": "Jamais", "SettingsTabGeneralHideCursorNever": "Jamais",
"SettingsTabGeneralHideCursorOnIdle": "Masquer le curseur si inactif", "SettingsTabGeneralHideCursorOnIdle": "Masquer le curseur si inactif",
@@ -151,7 +151,7 @@
"SettingsTabSystemAudioBackendSDL2": "SDL2", "SettingsTabSystemAudioBackendSDL2": "SDL2",
"SettingsTabSystemHacks": "Hacks", "SettingsTabSystemHacks": "Hacks",
"SettingsTabSystemHacksNote": "Cela peut causer des instabilités", "SettingsTabSystemHacksNote": "Cela peut causer des instabilités",
"SettingsTabSystemDramSize": "Taille de la DRAM:", "SettingsTabSystemDramSize": "Taille de la DRAM :",
"SettingsTabSystemDramSize4GiB": "4GiO", "SettingsTabSystemDramSize4GiB": "4GiO",
"SettingsTabSystemDramSize6GiB": "6GiO", "SettingsTabSystemDramSize6GiB": "6GiO",
"SettingsTabSystemDramSize8GiB": "8GiO", "SettingsTabSystemDramSize8GiB": "8GiO",
@@ -181,7 +181,7 @@
"SettingsTabGraphicsAspectRatio32x9": "32:9", "SettingsTabGraphicsAspectRatio32x9": "32:9",
"SettingsTabGraphicsAspectRatioStretch": "Étirer pour remplir la fenêtre", "SettingsTabGraphicsAspectRatioStretch": "Étirer pour remplir la fenêtre",
"SettingsTabGraphicsDeveloperOptions": "Options développeur", "SettingsTabGraphicsDeveloperOptions": "Options développeur",
"SettingsTabGraphicsShaderDumpPath": "Chemin du dossier de copie des shaders:", "SettingsTabGraphicsShaderDumpPath": "Chemin du dossier de copie des shaders :",
"SettingsTabLogging": "Journaux", "SettingsTabLogging": "Journaux",
"SettingsTabLoggingLogging": "Journaux", "SettingsTabLoggingLogging": "Journaux",
"SettingsTabLoggingEnableLoggingToFile": "Activer la sauvegarde des journaux vers un fichier", "SettingsTabLoggingEnableLoggingToFile": "Activer la sauvegarde des journaux vers un fichier",
@@ -387,7 +387,7 @@
"UserProfilesSelectedUserProfile": "Profil utilisateur sélectionné :", "UserProfilesSelectedUserProfile": "Profil utilisateur sélectionné :",
"UserProfilesSaveProfileName": "Enregistrer le nom du profil", "UserProfilesSaveProfileName": "Enregistrer le nom du profil",
"UserProfilesChangeProfileImage": "Changer l'image du profil", "UserProfilesChangeProfileImage": "Changer l'image du profil",
"UserProfilesAvailableUserProfiles": "Profils utilisateurs disponibles:", "UserProfilesAvailableUserProfiles": "Profils utilisateurs disponibles :",
"UserProfilesAddNewProfile": "Créer un profil", "UserProfilesAddNewProfile": "Créer un profil",
"UserProfilesDelete": "Supprimer", "UserProfilesDelete": "Supprimer",
"UserProfilesClose": "Fermer", "UserProfilesClose": "Fermer",
@@ -408,6 +408,7 @@
"AvatarClose": "Fermer", "AvatarClose": "Fermer",
"ControllerSettingsLoadProfileToolTip": "Charger un profil", "ControllerSettingsLoadProfileToolTip": "Charger un profil",
"ControllerSettingsAddProfileToolTip": "Ajouter un profil", "ControllerSettingsAddProfileToolTip": "Ajouter un profil",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsRemoveProfileToolTip": "Supprimer un profil", "ControllerSettingsRemoveProfileToolTip": "Supprimer un profil",
"ControllerSettingsSaveProfileToolTip": "Enregistrer un profil", "ControllerSettingsSaveProfileToolTip": "Enregistrer un profil",
"MenuBarFileToolsTakeScreenshot": "Prendre une capture d'écran", "MenuBarFileToolsTakeScreenshot": "Prendre une capture d'écran",
@@ -437,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "Une erreur s'est produite lors de la recherche de la sauvegarde spécifiée : {0}", "DialogMessageFindSaveErrorMessage": "Une erreur s'est produite lors de la recherche de la sauvegarde spécifiée : {0}",
"FolderDialogExtractTitle": "Choisissez le dossier dans lequel extraire", "FolderDialogExtractTitle": "Choisissez le dossier dans lequel extraire",
"DialogNcaExtractionMessage": "Extraction de la section {0} depuis {1}...", "DialogNcaExtractionMessage": "Extraction de la section {0} depuis {1}...",
"DialogNcaExtractionTitle": "Ryujinx - Extracteur de la section NCA", "DialogNcaExtractionTitle": "Extracteur de la section NCA",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "Échec de l'extraction. Le NCA principal n'était pas présent dans le fichier sélectionné.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "Échec de l'extraction. Le NCA principal n'était pas présent dans le fichier sélectionné.",
"DialogNcaExtractionCheckLogErrorMessage": "Échec de l'extraction. Lisez le fichier journal pour plus d'informations.", "DialogNcaExtractionCheckLogErrorMessage": "Échec de l'extraction. Lisez le fichier journal pour plus d'informations.",
"DialogNcaExtractionSuccessMessage": "Extraction terminée avec succès.", "DialogNcaExtractionSuccessMessage": "Extraction terminée avec succès.",
@@ -669,7 +670,7 @@
"NoUpdate": "Aucune mise à jour", "NoUpdate": "Aucune mise à jour",
"TitleUpdateVersionLabel": "Version {0}", "TitleUpdateVersionLabel": "Version {0}",
"TitleBundledUpdateVersionLabel": "Inclus avec le jeu: Version {0}", "TitleBundledUpdateVersionLabel": "Inclus avec le jeu: Version {0}",
"TitleBundledDlcLabel": "Inclus avec le jeu:", "TitleBundledDlcLabel": "Inclus avec le jeu :",
"RyujinxInfo": "Ryujinx - Info", "RyujinxInfo": "Ryujinx - Info",
"RyujinxConfirm": "Ryujinx - Confirmation", "RyujinxConfirm": "Ryujinx - Confirmation",
"FileDialogAllTypes": "Tous les types", "FileDialogAllTypes": "Tous les types",

View File

@@ -10,7 +10,10 @@
"SettingsTabSystemUseHypervisor": "השתמש ב Hypervisor", "SettingsTabSystemUseHypervisor": "השתמש ב Hypervisor",
"MenuBarFile": "_קובץ", "MenuBarFile": "_קובץ",
"MenuBarFileOpenFromFile": "_טען יישום מקובץ", "MenuBarFileOpenFromFile": "_טען יישום מקובץ",
"MenuBarFileOpenFromFileError": "No applications found in selected file.",
"MenuBarFileOpenUnpacked": "טען משחק _שאינו ארוז", "MenuBarFileOpenUnpacked": "טען משחק _שאינו ארוז",
"MenuBarFileLoadDlcFromFolder": "Load DLC From Folder",
"MenuBarFileLoadTitleUpdatesFromFolder": "Load Title Updates From Folder",
"MenuBarFileOpenEmuFolder": "פתח את תיקיית ריוג'ינקס", "MenuBarFileOpenEmuFolder": "פתח את תיקיית ריוג'ינקס",
"MenuBarFileOpenLogsFolder": "פתח את תיקיית קבצי הלוג", "MenuBarFileOpenLogsFolder": "פתח את תיקיית קבצי הלוג",
"MenuBarFileExit": "_יציאה", "MenuBarFileExit": "_יציאה",
@@ -103,6 +106,8 @@
"SettingsTabGeneralHideCursorOnIdle": "במצב סרק", "SettingsTabGeneralHideCursorOnIdle": "במצב סרק",
"SettingsTabGeneralHideCursorAlways": "תמיד", "SettingsTabGeneralHideCursorAlways": "תמיד",
"SettingsTabGeneralGameDirectories": "תקיות משחקים", "SettingsTabGeneralGameDirectories": "תקיות משחקים",
"SettingsTabGeneralAutoloadDirectories": "Autoload DLC/Updates Directories",
"SettingsTabGeneralAutoloadNote": "DLC and Updates which refer to missing files will be unloaded automatically",
"SettingsTabGeneralAdd": "הוסף", "SettingsTabGeneralAdd": "הוסף",
"SettingsTabGeneralRemove": "הסר", "SettingsTabGeneralRemove": "הסר",
"SettingsTabSystem": "מערכת", "SettingsTabSystem": "מערכת",
@@ -402,6 +407,7 @@
"AvatarSetBackgroundColor": "הגדר צבע רקע", "AvatarSetBackgroundColor": "הגדר צבע רקע",
"AvatarClose": "סגור", "AvatarClose": "סגור",
"ControllerSettingsLoadProfileToolTip": "טען פרופיל", "ControllerSettingsLoadProfileToolTip": "טען פרופיל",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "הוסף פרופיל", "ControllerSettingsAddProfileToolTip": "הוסף פרופיל",
"ControllerSettingsRemoveProfileToolTip": "הסר פרופיל", "ControllerSettingsRemoveProfileToolTip": "הסר פרופיל",
"ControllerSettingsSaveProfileToolTip": "שמור פרופיל", "ControllerSettingsSaveProfileToolTip": "שמור פרופיל",
@@ -411,6 +417,7 @@
"GameListContextMenuToggleFavorite": "למתג העדפה", "GameListContextMenuToggleFavorite": "למתג העדפה",
"GameListContextMenuToggleFavoriteToolTip": "למתג סטטוס העדפה של משחק", "GameListContextMenuToggleFavoriteToolTip": "למתג סטטוס העדפה של משחק",
"SettingsTabGeneralTheme": "ערכת נושא:", "SettingsTabGeneralTheme": "ערכת נושא:",
"SettingsTabGeneralThemeAuto": "Auto",
"SettingsTabGeneralThemeDark": "כהה", "SettingsTabGeneralThemeDark": "כהה",
"SettingsTabGeneralThemeLight": "בהיר", "SettingsTabGeneralThemeLight": "בהיר",
"ControllerSettingsConfigureGeneral": "הגדר", "ControllerSettingsConfigureGeneral": "הגדר",
@@ -431,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "אירעה שגיאה במציאת שמור המשחק שצויין: {0}", "DialogMessageFindSaveErrorMessage": "אירעה שגיאה במציאת שמור המשחק שצויין: {0}",
"FolderDialogExtractTitle": "בחרו את התיקייה לחילוץ", "FolderDialogExtractTitle": "בחרו את התיקייה לחילוץ",
"DialogNcaExtractionMessage": "מלחץ {0} ממקטע {1}...", "DialogNcaExtractionMessage": "מלחץ {0} ממקטע {1}...",
"DialogNcaExtractionTitle": "ריוג'ינקס - מחלץ מקטע NCA", "DialogNcaExtractionTitle": "מחלץ מקטע NCA",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "כשל בחילוץ. ה-NCA הראשי לא היה קיים בקובץ שנבחר.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "כשל בחילוץ. ה-NCA הראשי לא היה קיים בקובץ שנבחר.",
"DialogNcaExtractionCheckLogErrorMessage": "כשל בחילוץ. קרא את קובץ הרישום למידע נוסף.", "DialogNcaExtractionCheckLogErrorMessage": "כשל בחילוץ. קרא את קובץ הרישום למידע נוסף.",
"DialogNcaExtractionSuccessMessage": "החילוץ הושלם בהצלחה.", "DialogNcaExtractionSuccessMessage": "החילוץ הושלם בהצלחה.",
@@ -561,6 +568,9 @@
"AddGameDirBoxTooltip": "הזן תקיית משחקים כדי להוסיף לרשימה", "AddGameDirBoxTooltip": "הזן תקיית משחקים כדי להוסיף לרשימה",
"AddGameDirTooltip": "הוסף תקיית משחקים לרשימה", "AddGameDirTooltip": "הוסף תקיית משחקים לרשימה",
"RemoveGameDirTooltip": "הסר את תקיית המשחקים שנבחרה", "RemoveGameDirTooltip": "הסר את תקיית המשחקים שנבחרה",
"AddAutoloadDirBoxTooltip": "Enter an autoload directory to add to the list",
"AddAutoloadDirTooltip": "Add an autoload directory to the list",
"RemoveAutoloadDirTooltip": "Remove selected autoload directory",
"CustomThemeCheckTooltip": "השתמש בעיצוב מותאם אישית של אבלוניה עבור ה-ממשק הגראפי כדי לשנות את המראה של תפריטי האמולטור", "CustomThemeCheckTooltip": "השתמש בעיצוב מותאם אישית של אבלוניה עבור ה-ממשק הגראפי כדי לשנות את המראה של תפריטי האמולטור",
"CustomThemePathTooltip": "נתיב לערכת נושא לממשק גראפי מותאם אישית", "CustomThemePathTooltip": "נתיב לערכת נושא לממשק גראפי מותאם אישית",
"CustomThemeBrowseTooltip": "חפש עיצוב ממשק גראפי מותאם אישית", "CustomThemeBrowseTooltip": "חפש עיצוב ממשק גראפי מותאם אישית",
@@ -606,6 +616,8 @@
"DebugLogTooltip": "מדפיס הודעות יומן ניפוי באגים בשורת הפקודות.", "DebugLogTooltip": "מדפיס הודעות יומן ניפוי באגים בשורת הפקודות.",
"LoadApplicationFileTooltip": "פתח סייר קבצים כדי לבחור קובץ תואם סוויץ' לטעינה", "LoadApplicationFileTooltip": "פתח סייר קבצים כדי לבחור קובץ תואם סוויץ' לטעינה",
"LoadApplicationFolderTooltip": "פתח סייר קבצים כדי לבחור יישום תואם סוויץ', לא ארוז לטעינה.", "LoadApplicationFolderTooltip": "פתח סייר קבצים כדי לבחור יישום תואם סוויץ', לא ארוז לטעינה.",
"LoadDlcFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load DLC from",
"LoadTitleUpdatesFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load title updates from",
"OpenRyujinxFolderTooltip": "פתח את תיקיית מערכת הקבצים ריוג'ינקס", "OpenRyujinxFolderTooltip": "פתח את תיקיית מערכת הקבצים ריוג'ינקס",
"OpenRyujinxLogsTooltip": "פותח את התיקיה שאליה נכתבים רישומים", "OpenRyujinxLogsTooltip": "פותח את התיקיה שאליה נכתבים רישומים",
"ExitTooltip": "צא מריוג'ינקס", "ExitTooltip": "צא מריוג'ינקס",
@@ -657,6 +669,8 @@
"OpenSetupGuideMessage": "פתח מדריך התקנה", "OpenSetupGuideMessage": "פתח מדריך התקנה",
"NoUpdate": "אין עדכון", "NoUpdate": "אין עדכון",
"TitleUpdateVersionLabel": "גרסה {0}", "TitleUpdateVersionLabel": "גרסה {0}",
"TitleBundledUpdateVersionLabel": "Bundled: Version {0}",
"TitleBundledDlcLabel": "Bundled:",
"RyujinxInfo": "ריוג'ינקס - מידע", "RyujinxInfo": "ריוג'ינקס - מידע",
"RyujinxConfirm": "ריוג'ינקס - אישור", "RyujinxConfirm": "ריוג'ינקס - אישור",
"FileDialogAllTypes": "כל הסוגים", "FileDialogAllTypes": "כל הסוגים",
@@ -714,9 +728,17 @@
"DlcWindowTitle": "נהל הרחבות משחק עבור {0} ({1})", "DlcWindowTitle": "נהל הרחבות משחק עבור {0} ({1})",
"ModWindowTitle": "Manage Mods for {0} ({1})", "ModWindowTitle": "Manage Mods for {0} ({1})",
"UpdateWindowTitle": "נהל עדכוני משחקים", "UpdateWindowTitle": "נהל עדכוני משחקים",
"UpdateWindowUpdateAddedMessage": "{0} new update(s) added",
"UpdateWindowBundledContentNotice": "Bundled updates cannot be removed, only disabled.",
"CheatWindowHeading": "צ'יטים זמינים עבור {0} [{1}]", "CheatWindowHeading": "צ'יטים זמינים עבור {0} [{1}]",
"BuildId": "מזהה בניה:", "BuildId": "מזהה בניה:",
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
"DlcWindowHeading": "{0} הרחבות משחק", "DlcWindowHeading": "{0} הרחבות משחק",
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
"AutoloadUpdateAddedMessage": "{0} new update(s) added",
"AutoloadUpdateRemovedMessage": "{0} missing update(s) removed",
"ModWindowHeading": "{0} מוד(ים)", "ModWindowHeading": "{0} מוד(ים)",
"UserProfilesEditProfile": "ערוך נבחר/ים", "UserProfilesEditProfile": "ערוך נבחר/ים",
"Cancel": "בטל", "Cancel": "בטל",
@@ -767,6 +789,7 @@
"GraphicsScalingFilterBilinear": "Bilinear", "GraphicsScalingFilterBilinear": "Bilinear",
"GraphicsScalingFilterNearest": "Nearest", "GraphicsScalingFilterNearest": "Nearest",
"GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterFsr": "FSR",
"GraphicsScalingFilterArea": "Area",
"GraphicsScalingFilterLevelLabel": "רמה", "GraphicsScalingFilterLevelLabel": "רמה",
"GraphicsScalingFilterLevelTooltip": "Set FSR 1.0 sharpening level. Higher is sharper.", "GraphicsScalingFilterLevelTooltip": "Set FSR 1.0 sharpening level. Higher is sharper.",
"SmaaLow": "SMAA נמוך", "SmaaLow": "SMAA נמוך",

View File

@@ -407,6 +407,7 @@
"AvatarSetBackgroundColor": "Imposta colore di sfondo", "AvatarSetBackgroundColor": "Imposta colore di sfondo",
"AvatarClose": "Chiudi", "AvatarClose": "Chiudi",
"ControllerSettingsLoadProfileToolTip": "Carica profilo", "ControllerSettingsLoadProfileToolTip": "Carica profilo",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "Aggiungi profilo", "ControllerSettingsAddProfileToolTip": "Aggiungi profilo",
"ControllerSettingsRemoveProfileToolTip": "Rimuovi profilo", "ControllerSettingsRemoveProfileToolTip": "Rimuovi profilo",
"ControllerSettingsSaveProfileToolTip": "Salva profilo", "ControllerSettingsSaveProfileToolTip": "Salva profilo",
@@ -437,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "C'è stato un errore durante la ricerca dei dati di salvataggio: {0}", "DialogMessageFindSaveErrorMessage": "C'è stato un errore durante la ricerca dei dati di salvataggio: {0}",
"FolderDialogExtractTitle": "Scegli una cartella in cui estrarre", "FolderDialogExtractTitle": "Scegli una cartella in cui estrarre",
"DialogNcaExtractionMessage": "Estrazione della sezione {0} da {1}...", "DialogNcaExtractionMessage": "Estrazione della sezione {0} da {1}...",
"DialogNcaExtractionTitle": "Ryujinx - Estrazione sezione NCA", "DialogNcaExtractionTitle": "Estrazione sezione NCA",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "L'estrazione è fallita. L'NCA principale non era presente nel file selezionato.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "L'estrazione è fallita. L'NCA principale non era presente nel file selezionato.",
"DialogNcaExtractionCheckLogErrorMessage": "L'estrazione è fallita. Consulta il file di log per maggiori informazioni.", "DialogNcaExtractionCheckLogErrorMessage": "L'estrazione è fallita. Consulta il file di log per maggiori informazioni.",
"DialogNcaExtractionSuccessMessage": "Estrazione completata con successo.", "DialogNcaExtractionSuccessMessage": "Estrazione completata con successo.",
@@ -788,12 +789,12 @@
"GraphicsScalingFilterBilinear": "Bilineare", "GraphicsScalingFilterBilinear": "Bilineare",
"GraphicsScalingFilterNearest": "Nearest", "GraphicsScalingFilterNearest": "Nearest",
"GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterFsr": "FSR",
"GraphicsScalingFilterArea": "Area",
"GraphicsScalingFilterLevelLabel": "Livello", "GraphicsScalingFilterLevelLabel": "Livello",
"GraphicsScalingFilterLevelTooltip": "Imposta il livello di nitidezza di FSR 1.0. Valori più alti comportano una maggiore nitidezza.", "GraphicsScalingFilterLevelTooltip": "Imposta il livello di nitidezza di FSR 1.0. Valori più alti comportano una maggiore nitidezza.",
"SmaaLow": "SMAA Basso", "SmaaLow": "SMAA Basso",
"SmaaMedium": "SMAA Medio", "SmaaMedium": "SMAA Medio",
"SmaaHigh": "SMAA Alto", "SmaaHigh": "SMAA Alto",
"GraphicsScalingFilterArea": "Area",
"SmaaUltra": "SMAA Ultra", "SmaaUltra": "SMAA Ultra",
"UserEditorTitle": "Modificare L'Utente", "UserEditorTitle": "Modificare L'Utente",
"UserEditorTitleCreate": "Crea Un Utente", "UserEditorTitleCreate": "Crea Un Utente",

View File

@@ -10,7 +10,10 @@
"SettingsTabSystemUseHypervisor": "ハイパーバイザーを使用", "SettingsTabSystemUseHypervisor": "ハイパーバイザーを使用",
"MenuBarFile": "ファイル(_F)", "MenuBarFile": "ファイル(_F)",
"MenuBarFileOpenFromFile": "ファイルからアプリケーションをロード(_L)", "MenuBarFileOpenFromFile": "ファイルからアプリケーションをロード(_L)",
"MenuBarFileOpenFromFileError": "No applications found in selected file.",
"MenuBarFileOpenUnpacked": "展開されたゲームをロード", "MenuBarFileOpenUnpacked": "展開されたゲームをロード",
"MenuBarFileLoadDlcFromFolder": "Load DLC From Folder",
"MenuBarFileLoadTitleUpdatesFromFolder": "Load Title Updates From Folder",
"MenuBarFileOpenEmuFolder": "Ryujinx フォルダを開く", "MenuBarFileOpenEmuFolder": "Ryujinx フォルダを開く",
"MenuBarFileOpenLogsFolder": "ログフォルダを開く", "MenuBarFileOpenLogsFolder": "ログフォルダを開く",
"MenuBarFileExit": "終了(_E)", "MenuBarFileExit": "終了(_E)",
@@ -103,6 +106,8 @@
"SettingsTabGeneralHideCursorOnIdle": "アイドル時", "SettingsTabGeneralHideCursorOnIdle": "アイドル時",
"SettingsTabGeneralHideCursorAlways": "常時", "SettingsTabGeneralHideCursorAlways": "常時",
"SettingsTabGeneralGameDirectories": "ゲームディレクトリ", "SettingsTabGeneralGameDirectories": "ゲームディレクトリ",
"SettingsTabGeneralAutoloadDirectories": "Autoload DLC/Updates Directories",
"SettingsTabGeneralAutoloadNote": "DLC and Updates which refer to missing files will be unloaded automatically",
"SettingsTabGeneralAdd": "追加", "SettingsTabGeneralAdd": "追加",
"SettingsTabGeneralRemove": "削除", "SettingsTabGeneralRemove": "削除",
"SettingsTabSystem": "システム", "SettingsTabSystem": "システム",
@@ -402,6 +407,7 @@
"AvatarSetBackgroundColor": "背景色を指定", "AvatarSetBackgroundColor": "背景色を指定",
"AvatarClose": "閉じる", "AvatarClose": "閉じる",
"ControllerSettingsLoadProfileToolTip": "プロファイルをロード", "ControllerSettingsLoadProfileToolTip": "プロファイルをロード",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "プロファイルを追加", "ControllerSettingsAddProfileToolTip": "プロファイルを追加",
"ControllerSettingsRemoveProfileToolTip": "プロファイルを削除", "ControllerSettingsRemoveProfileToolTip": "プロファイルを削除",
"ControllerSettingsSaveProfileToolTip": "プロファイルをセーブ", "ControllerSettingsSaveProfileToolTip": "プロファイルをセーブ",
@@ -411,6 +417,7 @@
"GameListContextMenuToggleFavorite": "お気に入りを切り替え", "GameListContextMenuToggleFavorite": "お気に入りを切り替え",
"GameListContextMenuToggleFavoriteToolTip": "ゲームをお気に入りに含めるかどうかを切り替えます", "GameListContextMenuToggleFavoriteToolTip": "ゲームをお気に入りに含めるかどうかを切り替えます",
"SettingsTabGeneralTheme": "テーマ:", "SettingsTabGeneralTheme": "テーマ:",
"SettingsTabGeneralThemeAuto": "Auto",
"SettingsTabGeneralThemeDark": "ダーク", "SettingsTabGeneralThemeDark": "ダーク",
"SettingsTabGeneralThemeLight": "ライト", "SettingsTabGeneralThemeLight": "ライト",
"ControllerSettingsConfigureGeneral": "設定", "ControllerSettingsConfigureGeneral": "設定",
@@ -431,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "セーブデータ: {0} の検索中にエラーが発生しました", "DialogMessageFindSaveErrorMessage": "セーブデータ: {0} の検索中にエラーが発生しました",
"FolderDialogExtractTitle": "展開フォルダを選択", "FolderDialogExtractTitle": "展開フォルダを選択",
"DialogNcaExtractionMessage": "{1} から {0} セクションを展開中...", "DialogNcaExtractionMessage": "{1} から {0} セクションを展開中...",
"DialogNcaExtractionTitle": "Ryujinx - NCA セクション展開", "DialogNcaExtractionTitle": "NCA セクション展開",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "展開に失敗しました. 選択されたファイルにはメイン NCA が存在しません.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "展開に失敗しました. 選択されたファイルにはメイン NCA が存在しません.",
"DialogNcaExtractionCheckLogErrorMessage": "展開に失敗しました. 詳細はログを確認してください.", "DialogNcaExtractionCheckLogErrorMessage": "展開に失敗しました. 詳細はログを確認してください.",
"DialogNcaExtractionSuccessMessage": "展開が正常終了しました", "DialogNcaExtractionSuccessMessage": "展開が正常終了しました",
@@ -561,6 +568,9 @@
"AddGameDirBoxTooltip": "リストに追加するゲームディレクトリを入力します", "AddGameDirBoxTooltip": "リストに追加するゲームディレクトリを入力します",
"AddGameDirTooltip": "リストにゲームディレクトリを追加します", "AddGameDirTooltip": "リストにゲームディレクトリを追加します",
"RemoveGameDirTooltip": "選択したゲームディレクトリを削除します", "RemoveGameDirTooltip": "選択したゲームディレクトリを削除します",
"AddAutoloadDirBoxTooltip": "Enter an autoload directory to add to the list",
"AddAutoloadDirTooltip": "Add an autoload directory to the list",
"RemoveAutoloadDirTooltip": "Remove selected autoload directory",
"CustomThemeCheckTooltip": "エミュレータのメニュー外観を変更するためカスタム Avalonia テーマを使用します", "CustomThemeCheckTooltip": "エミュレータのメニュー外観を変更するためカスタム Avalonia テーマを使用します",
"CustomThemePathTooltip": "カスタム GUI テーマのパスです", "CustomThemePathTooltip": "カスタム GUI テーマのパスです",
"CustomThemeBrowseTooltip": "カスタム GUI テーマを参照します", "CustomThemeBrowseTooltip": "カスタム GUI テーマを参照します",
@@ -606,6 +616,8 @@
"DebugLogTooltip": "デバッグログメッセージをコンソールに出力します.\n\nログが読みづらくなり,エミュレータのパフォーマンスが低下するため,開発者から特別な指示がある場合のみ使用してください.", "DebugLogTooltip": "デバッグログメッセージをコンソールに出力します.\n\nログが読みづらくなり,エミュレータのパフォーマンスが低下するため,開発者から特別な指示がある場合のみ使用してください.",
"LoadApplicationFileTooltip": "ロードする Switch 互換のファイルを選択するためファイルエクスプローラを開きます", "LoadApplicationFileTooltip": "ロードする Switch 互換のファイルを選択するためファイルエクスプローラを開きます",
"LoadApplicationFolderTooltip": "ロードする Switch 互換の展開済みアプリケーションを選択するためファイルエクスプローラを開きます", "LoadApplicationFolderTooltip": "ロードする Switch 互換の展開済みアプリケーションを選択するためファイルエクスプローラを開きます",
"LoadDlcFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load DLC from",
"LoadTitleUpdatesFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load title updates from",
"OpenRyujinxFolderTooltip": "Ryujinx ファイルシステムフォルダを開きます", "OpenRyujinxFolderTooltip": "Ryujinx ファイルシステムフォルダを開きます",
"OpenRyujinxLogsTooltip": "ログが格納されるフォルダを開きます", "OpenRyujinxLogsTooltip": "ログが格納されるフォルダを開きます",
"ExitTooltip": "Ryujinx を終了します", "ExitTooltip": "Ryujinx を終了します",
@@ -657,6 +669,8 @@
"OpenSetupGuideMessage": "セットアップガイドを開く", "OpenSetupGuideMessage": "セットアップガイドを開く",
"NoUpdate": "アップデートなし", "NoUpdate": "アップデートなし",
"TitleUpdateVersionLabel": "バージョン {0} - {1}", "TitleUpdateVersionLabel": "バージョン {0} - {1}",
"TitleBundledUpdateVersionLabel": "Bundled: Version {0}",
"TitleBundledDlcLabel": "Bundled:",
"RyujinxInfo": "Ryujinx - 情報", "RyujinxInfo": "Ryujinx - 情報",
"RyujinxConfirm": "Ryujinx - 確認", "RyujinxConfirm": "Ryujinx - 確認",
"FileDialogAllTypes": "すべての種別", "FileDialogAllTypes": "すべての種別",
@@ -714,9 +728,16 @@
"DlcWindowTitle": "DLC 管理", "DlcWindowTitle": "DLC 管理",
"ModWindowTitle": "Manage Mods for {0} ({1})", "ModWindowTitle": "Manage Mods for {0} ({1})",
"UpdateWindowTitle": "アップデート管理", "UpdateWindowTitle": "アップデート管理",
"UpdateWindowUpdateAddedMessage": "{0} new update(s) added",
"UpdateWindowBundledContentNotice": "Bundled updates cannot be removed, only disabled.",
"CheatWindowHeading": "利用可能なチート {0} [{1}]", "CheatWindowHeading": "利用可能なチート {0} [{1}]",
"BuildId": "ビルドID:", "BuildId": "ビルドID:",
"DlcWindowHeading": "利用可能な DLC {0} [{1}]", "DlcWindowHeading": "利用可能な DLC {0} [{1}]",
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
"AutoloadUpdateAddedMessage": "{0} new update(s) added",
"AutoloadUpdateRemovedMessage": "{0} missing update(s) removed",
"ModWindowHeading": "{0} Mod(s)", "ModWindowHeading": "{0} Mod(s)",
"UserProfilesEditProfile": "編集", "UserProfilesEditProfile": "編集",
"Cancel": "キャンセル", "Cancel": "キャンセル",
@@ -767,6 +788,7 @@
"GraphicsScalingFilterBilinear": "Bilinear", "GraphicsScalingFilterBilinear": "Bilinear",
"GraphicsScalingFilterNearest": "Nearest", "GraphicsScalingFilterNearest": "Nearest",
"GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterFsr": "FSR",
"GraphicsScalingFilterArea": "Area",
"GraphicsScalingFilterLevelLabel": "レベル", "GraphicsScalingFilterLevelLabel": "レベル",
"GraphicsScalingFilterLevelTooltip": "FSR 1.0のシャープ化レベルを設定します. 高い値ほどシャープになります.", "GraphicsScalingFilterLevelTooltip": "FSR 1.0のシャープ化レベルを設定します. 高い値ほどシャープになります.",
"SmaaLow": "SMAA Low", "SmaaLow": "SMAA Low",

View File

@@ -10,7 +10,10 @@
"SettingsTabSystemUseHypervisor": "하이퍼바이저 사용하기", "SettingsTabSystemUseHypervisor": "하이퍼바이저 사용하기",
"MenuBarFile": "_파일", "MenuBarFile": "_파일",
"MenuBarFileOpenFromFile": "_파일에서 응용 프로그램 불러오기", "MenuBarFileOpenFromFile": "_파일에서 응용 프로그램 불러오기",
"MenuBarFileOpenFromFileError": "No applications found in selected file.",
"MenuBarFileOpenUnpacked": "_압축을 푼 게임 불러오기", "MenuBarFileOpenUnpacked": "_압축을 푼 게임 불러오기",
"MenuBarFileLoadDlcFromFolder": "Load DLC From Folder",
"MenuBarFileLoadTitleUpdatesFromFolder": "Load Title Updates From Folder",
"MenuBarFileOpenEmuFolder": "Ryujinx 폴더 열기", "MenuBarFileOpenEmuFolder": "Ryujinx 폴더 열기",
"MenuBarFileOpenLogsFolder": "로그 폴더 열기", "MenuBarFileOpenLogsFolder": "로그 폴더 열기",
"MenuBarFileExit": "_종료", "MenuBarFileExit": "_종료",
@@ -103,6 +106,8 @@
"SettingsTabGeneralHideCursorOnIdle": "유휴 상태", "SettingsTabGeneralHideCursorOnIdle": "유휴 상태",
"SettingsTabGeneralHideCursorAlways": "언제나", "SettingsTabGeneralHideCursorAlways": "언제나",
"SettingsTabGeneralGameDirectories": "게임 디렉터리", "SettingsTabGeneralGameDirectories": "게임 디렉터리",
"SettingsTabGeneralAutoloadDirectories": "Autoload DLC/Updates Directories",
"SettingsTabGeneralAutoloadNote": "DLC and Updates which refer to missing files will be unloaded automatically",
"SettingsTabGeneralAdd": "추가", "SettingsTabGeneralAdd": "추가",
"SettingsTabGeneralRemove": "제거", "SettingsTabGeneralRemove": "제거",
"SettingsTabSystem": "시스템", "SettingsTabSystem": "시스템",
@@ -402,6 +407,7 @@
"AvatarSetBackgroundColor": "배경색 설정", "AvatarSetBackgroundColor": "배경색 설정",
"AvatarClose": "닫기", "AvatarClose": "닫기",
"ControllerSettingsLoadProfileToolTip": "프로필 불러오기", "ControllerSettingsLoadProfileToolTip": "프로필 불러오기",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "프로필 추가", "ControllerSettingsAddProfileToolTip": "프로필 추가",
"ControllerSettingsRemoveProfileToolTip": "프로필 제거", "ControllerSettingsRemoveProfileToolTip": "프로필 제거",
"ControllerSettingsSaveProfileToolTip": "프로필 저장", "ControllerSettingsSaveProfileToolTip": "프로필 저장",
@@ -411,6 +417,7 @@
"GameListContextMenuToggleFavorite": "즐겨찾기 전환", "GameListContextMenuToggleFavorite": "즐겨찾기 전환",
"GameListContextMenuToggleFavoriteToolTip": "게임 즐겨찾기 상태 전환", "GameListContextMenuToggleFavoriteToolTip": "게임 즐겨찾기 상태 전환",
"SettingsTabGeneralTheme": "테마:", "SettingsTabGeneralTheme": "테마:",
"SettingsTabGeneralThemeAuto": "Auto",
"SettingsTabGeneralThemeDark": "어두운 테마", "SettingsTabGeneralThemeDark": "어두운 테마",
"SettingsTabGeneralThemeLight": "밝은 테마", "SettingsTabGeneralThemeLight": "밝은 테마",
"ControllerSettingsConfigureGeneral": "구성", "ControllerSettingsConfigureGeneral": "구성",
@@ -431,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "지정된 저장 데이터를 찾는 중에 오류 발생: {0}", "DialogMessageFindSaveErrorMessage": "지정된 저장 데이터를 찾는 중에 오류 발생: {0}",
"FolderDialogExtractTitle": "추출할 폴더 선택", "FolderDialogExtractTitle": "추출할 폴더 선택",
"DialogNcaExtractionMessage": "{1}에서 {0} 섹션을 추출하는 중...", "DialogNcaExtractionMessage": "{1}에서 {0} 섹션을 추출하는 중...",
"DialogNcaExtractionTitle": "Ryujinx - NCA 섹션 추출기", "DialogNcaExtractionTitle": "NCA 섹션 추출기",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "추출 실패하였습니다. 선택한 파일에 기본 NCA가 없습니다.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "추출 실패하였습니다. 선택한 파일에 기본 NCA가 없습니다.",
"DialogNcaExtractionCheckLogErrorMessage": "추출 실패하였습니다. 자세한 내용은 로그 파일을 읽으세요.", "DialogNcaExtractionCheckLogErrorMessage": "추출 실패하였습니다. 자세한 내용은 로그 파일을 읽으세요.",
"DialogNcaExtractionSuccessMessage": "추출이 성공적으로 완료되었습니다.", "DialogNcaExtractionSuccessMessage": "추출이 성공적으로 완료되었습니다.",
@@ -561,6 +568,9 @@
"AddGameDirBoxTooltip": "목록에 추가할 게임 디렉터리 입력", "AddGameDirBoxTooltip": "목록에 추가할 게임 디렉터리 입력",
"AddGameDirTooltip": "목록에 게임 디렉터리 추가", "AddGameDirTooltip": "목록에 게임 디렉터리 추가",
"RemoveGameDirTooltip": "선택한 게임 디렉터리 제거", "RemoveGameDirTooltip": "선택한 게임 디렉터리 제거",
"AddAutoloadDirBoxTooltip": "Enter an autoload directory to add to the list",
"AddAutoloadDirTooltip": "Add an autoload directory to the list",
"RemoveAutoloadDirTooltip": "Remove selected autoload directory",
"CustomThemeCheckTooltip": "GUI에 사용자 지정 Avalonia 테마를 사용하여 에뮬레이터 메뉴의 모양 변경", "CustomThemeCheckTooltip": "GUI에 사용자 지정 Avalonia 테마를 사용하여 에뮬레이터 메뉴의 모양 변경",
"CustomThemePathTooltip": "사용자 정의 GUI 테마 경로", "CustomThemePathTooltip": "사용자 정의 GUI 테마 경로",
"CustomThemeBrowseTooltip": "사용자 정의 GUI 테마 찾아보기", "CustomThemeBrowseTooltip": "사용자 정의 GUI 테마 찾아보기",
@@ -606,6 +616,8 @@
"DebugLogTooltip": "콘솔에 디버그 로그 메시지를 인쇄합니다.\n\n로그를 읽기 어렵게 만들고 에뮬레이터 성능을 악화시키므로 직원이 구체적으로 지시한 경우에만 사용하세요.", "DebugLogTooltip": "콘솔에 디버그 로그 메시지를 인쇄합니다.\n\n로그를 읽기 어렵게 만들고 에뮬레이터 성능을 악화시키므로 직원이 구체적으로 지시한 경우에만 사용하세요.",
"LoadApplicationFileTooltip": "파일 탐색기를 열어 불러올 스위치 호환 파일 선택", "LoadApplicationFileTooltip": "파일 탐색기를 열어 불러올 스위치 호환 파일 선택",
"LoadApplicationFolderTooltip": "파일 탐색기를 열어 불러올 스위치 호환 압축 해제 응용 프로그램 선택", "LoadApplicationFolderTooltip": "파일 탐색기를 열어 불러올 스위치 호환 압축 해제 응용 프로그램 선택",
"LoadDlcFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load DLC from",
"LoadTitleUpdatesFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load title updates from",
"OpenRyujinxFolderTooltip": "Ryujinx 파일 시스템 폴더 열기", "OpenRyujinxFolderTooltip": "Ryujinx 파일 시스템 폴더 열기",
"OpenRyujinxLogsTooltip": "로그가 기록된 폴더 열기", "OpenRyujinxLogsTooltip": "로그가 기록된 폴더 열기",
"ExitTooltip": "Ryujinx 종료", "ExitTooltip": "Ryujinx 종료",
@@ -657,6 +669,8 @@
"OpenSetupGuideMessage": "설정 가이드 열기", "OpenSetupGuideMessage": "설정 가이드 열기",
"NoUpdate": "업데이트 없음", "NoUpdate": "업데이트 없음",
"TitleUpdateVersionLabel": "버전 {0}", "TitleUpdateVersionLabel": "버전 {0}",
"TitleBundledUpdateVersionLabel": "Bundled: Version {0}",
"TitleBundledDlcLabel": "Bundled:",
"RyujinxInfo": "Ryujinx - 정보", "RyujinxInfo": "Ryujinx - 정보",
"RyujinxConfirm": "Ryujinx - 확인", "RyujinxConfirm": "Ryujinx - 확인",
"FileDialogAllTypes": "모든 유형", "FileDialogAllTypes": "모든 유형",
@@ -714,9 +728,17 @@
"DlcWindowTitle": "{0} ({1})의 다운로드 가능한 콘텐츠 관리", "DlcWindowTitle": "{0} ({1})의 다운로드 가능한 콘텐츠 관리",
"ModWindowTitle": "{0} ({1})의 Mod 관리", "ModWindowTitle": "{0} ({1})의 Mod 관리",
"UpdateWindowTitle": "타이틀 업데이트 관리자", "UpdateWindowTitle": "타이틀 업데이트 관리자",
"UpdateWindowUpdateAddedMessage": "{0} new update(s) added",
"UpdateWindowBundledContentNotice": "Bundled updates cannot be removed, only disabled.",
"CheatWindowHeading": "{0} [{1}]에 사용할 수 있는 치트", "CheatWindowHeading": "{0} [{1}]에 사용할 수 있는 치트",
"BuildId": "빌드ID :", "BuildId": "빌드ID :",
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
"DlcWindowHeading": "{0} 내려받기 가능한 콘텐츠", "DlcWindowHeading": "{0} 내려받기 가능한 콘텐츠",
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
"AutoloadUpdateAddedMessage": "{0} new update(s) added",
"AutoloadUpdateRemovedMessage": "{0} missing update(s) removed",
"ModWindowHeading": "{0} Mod(s)", "ModWindowHeading": "{0} Mod(s)",
"UserProfilesEditProfile": "선택된 항목 편집", "UserProfilesEditProfile": "선택된 항목 편집",
"Cancel": "취소", "Cancel": "취소",
@@ -767,6 +789,7 @@
"GraphicsScalingFilterBilinear": "Bilinear", "GraphicsScalingFilterBilinear": "Bilinear",
"GraphicsScalingFilterNearest": "Nearest", "GraphicsScalingFilterNearest": "Nearest",
"GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterFsr": "FSR",
"GraphicsScalingFilterArea": "Area",
"GraphicsScalingFilterLevelLabel": "수준", "GraphicsScalingFilterLevelLabel": "수준",
"GraphicsScalingFilterLevelTooltip": "FSR 1.0의 샤프닝 레벨을 설정하세요. 높을수록 더 또렷해집니다.", "GraphicsScalingFilterLevelTooltip": "FSR 1.0의 샤프닝 레벨을 설정하세요. 높을수록 더 또렷해집니다.",
"SmaaLow": "SMAA 낮음", "SmaaLow": "SMAA 낮음",

View File

@@ -10,7 +10,10 @@
"SettingsTabSystemUseHypervisor": "Użyj Hipernadzorcy", "SettingsTabSystemUseHypervisor": "Użyj Hipernadzorcy",
"MenuBarFile": "_Plik", "MenuBarFile": "_Plik",
"MenuBarFileOpenFromFile": "_Załaduj aplikację z pliku", "MenuBarFileOpenFromFile": "_Załaduj aplikację z pliku",
"MenuBarFileOpenFromFileError": "No applications found in selected file.",
"MenuBarFileOpenUnpacked": "Załaduj _rozpakowaną grę", "MenuBarFileOpenUnpacked": "Załaduj _rozpakowaną grę",
"MenuBarFileLoadDlcFromFolder": "Load DLC From Folder",
"MenuBarFileLoadTitleUpdatesFromFolder": "Load Title Updates From Folder",
"MenuBarFileOpenEmuFolder": "Otwórz folder Ryujinx", "MenuBarFileOpenEmuFolder": "Otwórz folder Ryujinx",
"MenuBarFileOpenLogsFolder": "Otwórz folder plików dziennika zdarzeń", "MenuBarFileOpenLogsFolder": "Otwórz folder plików dziennika zdarzeń",
"MenuBarFileExit": "_Wyjdź", "MenuBarFileExit": "_Wyjdź",
@@ -103,6 +106,8 @@
"SettingsTabGeneralHideCursorOnIdle": "Gdy bezczynny", "SettingsTabGeneralHideCursorOnIdle": "Gdy bezczynny",
"SettingsTabGeneralHideCursorAlways": "Zawsze", "SettingsTabGeneralHideCursorAlways": "Zawsze",
"SettingsTabGeneralGameDirectories": "Katalogi gier", "SettingsTabGeneralGameDirectories": "Katalogi gier",
"SettingsTabGeneralAutoloadDirectories": "Autoload DLC/Updates Directories",
"SettingsTabGeneralAutoloadNote": "DLC and Updates which refer to missing files will be unloaded automatically",
"SettingsTabGeneralAdd": "Dodaj", "SettingsTabGeneralAdd": "Dodaj",
"SettingsTabGeneralRemove": "Usuń", "SettingsTabGeneralRemove": "Usuń",
"SettingsTabSystem": "System", "SettingsTabSystem": "System",
@@ -402,6 +407,7 @@
"AvatarSetBackgroundColor": "Ustaw kolor tła", "AvatarSetBackgroundColor": "Ustaw kolor tła",
"AvatarClose": "Zamknij", "AvatarClose": "Zamknij",
"ControllerSettingsLoadProfileToolTip": "Wczytaj profil", "ControllerSettingsLoadProfileToolTip": "Wczytaj profil",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "Dodaj profil", "ControllerSettingsAddProfileToolTip": "Dodaj profil",
"ControllerSettingsRemoveProfileToolTip": "Usuń profil", "ControllerSettingsRemoveProfileToolTip": "Usuń profil",
"ControllerSettingsSaveProfileToolTip": "Zapisz profil", "ControllerSettingsSaveProfileToolTip": "Zapisz profil",
@@ -411,6 +417,7 @@
"GameListContextMenuToggleFavorite": "Przełącz na ulubione", "GameListContextMenuToggleFavorite": "Przełącz na ulubione",
"GameListContextMenuToggleFavoriteToolTip": "Przełącz status Ulubionej Gry", "GameListContextMenuToggleFavoriteToolTip": "Przełącz status Ulubionej Gry",
"SettingsTabGeneralTheme": "Motyw:", "SettingsTabGeneralTheme": "Motyw:",
"SettingsTabGeneralThemeAuto": "Auto",
"SettingsTabGeneralThemeDark": "Ciemny", "SettingsTabGeneralThemeDark": "Ciemny",
"SettingsTabGeneralThemeLight": "Jasny", "SettingsTabGeneralThemeLight": "Jasny",
"ControllerSettingsConfigureGeneral": "Konfiguruj", "ControllerSettingsConfigureGeneral": "Konfiguruj",
@@ -431,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "Wystąpił błąd podczas próby znalezienia określonych zapisanych danych: {0}", "DialogMessageFindSaveErrorMessage": "Wystąpił błąd podczas próby znalezienia określonych zapisanych danych: {0}",
"FolderDialogExtractTitle": "Wybierz folder, do którego chcesz rozpakować", "FolderDialogExtractTitle": "Wybierz folder, do którego chcesz rozpakować",
"DialogNcaExtractionMessage": "Wypakowywanie sekcji {0} z {1}...", "DialogNcaExtractionMessage": "Wypakowywanie sekcji {0} z {1}...",
"DialogNcaExtractionTitle": "Ryujinx - Asystent wypakowania sekcji NCA", "DialogNcaExtractionTitle": "Asystent wypakowania sekcji NCA",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "Niepowodzenie podczas wypakowywania. W wybranym pliku nie było głównego NCA.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "Niepowodzenie podczas wypakowywania. W wybranym pliku nie było głównego NCA.",
"DialogNcaExtractionCheckLogErrorMessage": "Niepowodzenie podczas wypakowywania. Przeczytaj plik dziennika, aby uzyskać więcej informacji.", "DialogNcaExtractionCheckLogErrorMessage": "Niepowodzenie podczas wypakowywania. Przeczytaj plik dziennika, aby uzyskać więcej informacji.",
"DialogNcaExtractionSuccessMessage": "Wypakowywanie zakończone pomyślnie.", "DialogNcaExtractionSuccessMessage": "Wypakowywanie zakończone pomyślnie.",
@@ -561,6 +568,9 @@
"AddGameDirBoxTooltip": "Wprowadź katalog gier aby dodać go do listy", "AddGameDirBoxTooltip": "Wprowadź katalog gier aby dodać go do listy",
"AddGameDirTooltip": "Dodaj katalog gier do listy", "AddGameDirTooltip": "Dodaj katalog gier do listy",
"RemoveGameDirTooltip": "Usuń wybrany katalog gier", "RemoveGameDirTooltip": "Usuń wybrany katalog gier",
"AddAutoloadDirBoxTooltip": "Enter an autoload directory to add to the list",
"AddAutoloadDirTooltip": "Add an autoload directory to the list",
"RemoveAutoloadDirTooltip": "Remove selected autoload directory",
"CustomThemeCheckTooltip": "Użyj niestandardowego motywu Avalonia dla GUI, aby zmienić wygląd menu emulatora", "CustomThemeCheckTooltip": "Użyj niestandardowego motywu Avalonia dla GUI, aby zmienić wygląd menu emulatora",
"CustomThemePathTooltip": "Ścieżka do niestandardowego motywu GUI", "CustomThemePathTooltip": "Ścieżka do niestandardowego motywu GUI",
"CustomThemeBrowseTooltip": "Wyszukaj niestandardowy motyw GUI", "CustomThemeBrowseTooltip": "Wyszukaj niestandardowy motyw GUI",
@@ -606,6 +616,8 @@
"DebugLogTooltip": "Wyświetla komunikaty dziennika debugowania w konsoli.\n\nUżywaj tego tylko na wyraźne polecenie członka załogi, ponieważ utrudni to odczytanie dzienników i pogorszy wydajność emulatora.", "DebugLogTooltip": "Wyświetla komunikaty dziennika debugowania w konsoli.\n\nUżywaj tego tylko na wyraźne polecenie członka załogi, ponieważ utrudni to odczytanie dzienników i pogorszy wydajność emulatora.",
"LoadApplicationFileTooltip": "Otwórz eksplorator plików, aby wybrać plik kompatybilny z Switch do wczytania", "LoadApplicationFileTooltip": "Otwórz eksplorator plików, aby wybrać plik kompatybilny z Switch do wczytania",
"LoadApplicationFolderTooltip": "Otwórz eksplorator plików, aby wybrać zgodną z Switch, rozpakowaną aplikację do załadowania", "LoadApplicationFolderTooltip": "Otwórz eksplorator plików, aby wybrać zgodną z Switch, rozpakowaną aplikację do załadowania",
"LoadDlcFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load DLC from",
"LoadTitleUpdatesFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load title updates from",
"OpenRyujinxFolderTooltip": "Otwórz folder systemu plików Ryujinx", "OpenRyujinxFolderTooltip": "Otwórz folder systemu plików Ryujinx",
"OpenRyujinxLogsTooltip": "Otwiera folder, w którym zapisywane są logi", "OpenRyujinxLogsTooltip": "Otwiera folder, w którym zapisywane są logi",
"ExitTooltip": "Wyjdź z Ryujinx", "ExitTooltip": "Wyjdź z Ryujinx",
@@ -657,6 +669,8 @@
"OpenSetupGuideMessage": "Otwórz Podręcznik Konfiguracji", "OpenSetupGuideMessage": "Otwórz Podręcznik Konfiguracji",
"NoUpdate": "Brak Aktualizacji", "NoUpdate": "Brak Aktualizacji",
"TitleUpdateVersionLabel": "Wersja {0} - {1}", "TitleUpdateVersionLabel": "Wersja {0} - {1}",
"TitleBundledUpdateVersionLabel": "Bundled: Version {0}",
"TitleBundledDlcLabel": "Bundled:",
"RyujinxInfo": "Ryujinx - Info", "RyujinxInfo": "Ryujinx - Info",
"RyujinxConfirm": "Ryujinx - Potwierdzenie", "RyujinxConfirm": "Ryujinx - Potwierdzenie",
"FileDialogAllTypes": "Wszystkie typy", "FileDialogAllTypes": "Wszystkie typy",
@@ -714,9 +728,17 @@
"DlcWindowTitle": "Menedżer Zawartości do Pobrania", "DlcWindowTitle": "Menedżer Zawartości do Pobrania",
"ModWindowTitle": "Zarządzaj modami dla {0} ({1})", "ModWindowTitle": "Zarządzaj modami dla {0} ({1})",
"UpdateWindowTitle": "Menedżer Aktualizacji Tytułu", "UpdateWindowTitle": "Menedżer Aktualizacji Tytułu",
"UpdateWindowUpdateAddedMessage": "{0} new update(s) added",
"UpdateWindowBundledContentNotice": "Bundled updates cannot be removed, only disabled.",
"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.",
"DlcWindowHeading": "{0} Zawartości do Pobrania dostępna dla {1} ({2})", "DlcWindowHeading": "{0} Zawartości do Pobrania dostępna dla {1} ({2})",
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
"AutoloadUpdateAddedMessage": "{0} new update(s) added",
"AutoloadUpdateRemovedMessage": "{0} missing update(s) removed",
"ModWindowHeading": "{0} Mod(y/ów)", "ModWindowHeading": "{0} Mod(y/ów)",
"UserProfilesEditProfile": "Edytuj Zaznaczone", "UserProfilesEditProfile": "Edytuj Zaznaczone",
"Cancel": "Anuluj", "Cancel": "Anuluj",
@@ -767,6 +789,7 @@
"GraphicsScalingFilterBilinear": "Dwuliniowe", "GraphicsScalingFilterBilinear": "Dwuliniowe",
"GraphicsScalingFilterNearest": "Najbliższe", "GraphicsScalingFilterNearest": "Najbliższe",
"GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterFsr": "FSR",
"GraphicsScalingFilterArea": "Area",
"GraphicsScalingFilterLevelLabel": "Poziom", "GraphicsScalingFilterLevelLabel": "Poziom",
"GraphicsScalingFilterLevelTooltip": "Ustaw poziom ostrzeżenia FSR 1.0. Wyższy jest ostrzejszy.", "GraphicsScalingFilterLevelTooltip": "Ustaw poziom ostrzeżenia FSR 1.0. Wyższy jest ostrzejszy.",
"SmaaLow": "SMAA Niskie", "SmaaLow": "SMAA Niskie",

View File

@@ -407,6 +407,7 @@
"AvatarSetBackgroundColor": "Definir cor de fundo", "AvatarSetBackgroundColor": "Definir cor de fundo",
"AvatarClose": "Fechar", "AvatarClose": "Fechar",
"ControllerSettingsLoadProfileToolTip": "Carregar perfil", "ControllerSettingsLoadProfileToolTip": "Carregar perfil",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "Adicionar perfil", "ControllerSettingsAddProfileToolTip": "Adicionar perfil",
"ControllerSettingsRemoveProfileToolTip": "Remover perfil", "ControllerSettingsRemoveProfileToolTip": "Remover perfil",
"ControllerSettingsSaveProfileToolTip": "Salvar perfil", "ControllerSettingsSaveProfileToolTip": "Salvar perfil",
@@ -437,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "Ocorreu um erro ao tentar encontrar o diretório de salvamento: {0}", "DialogMessageFindSaveErrorMessage": "Ocorreu um erro ao tentar encontrar o diretório de salvamento: {0}",
"FolderDialogExtractTitle": "Escolha o diretório onde os arquivos serão extraídos", "FolderDialogExtractTitle": "Escolha o diretório onde os arquivos serão extraídos",
"DialogNcaExtractionMessage": "Extraindo seção {0} de {1}...", "DialogNcaExtractionMessage": "Extraindo seção {0} de {1}...",
"DialogNcaExtractionTitle": "Ryujinx - Extrator de seções NCA", "DialogNcaExtractionTitle": "Extrator de seções NCA",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "Falha na extração. O NCA principal não foi encontrado no arquivo selecionado.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "Falha na extração. O NCA principal não foi encontrado no arquivo selecionado.",
"DialogNcaExtractionCheckLogErrorMessage": "Falha na extração. Leia o arquivo de log para mais informações.", "DialogNcaExtractionCheckLogErrorMessage": "Falha na extração. Leia o arquivo de log para mais informações.",
"DialogNcaExtractionSuccessMessage": "Extração concluída com êxito.", "DialogNcaExtractionSuccessMessage": "Extração concluída com êxito.",

View File

@@ -10,7 +10,10 @@
"SettingsTabSystemUseHypervisor": "Использовать Hypervisor", "SettingsTabSystemUseHypervisor": "Использовать Hypervisor",
"MenuBarFile": "_Файл", "MenuBarFile": "_Файл",
"MenuBarFileOpenFromFile": "_Добавить приложение из файла", "MenuBarFileOpenFromFile": "_Добавить приложение из файла",
"MenuBarFileOpenFromFileError": "No applications found in selected file.",
"MenuBarFileOpenUnpacked": "Добавить _распакованную игру", "MenuBarFileOpenUnpacked": "Добавить _распакованную игру",
"MenuBarFileLoadDlcFromFolder": "Load DLC From Folder",
"MenuBarFileLoadTitleUpdatesFromFolder": "Load Title Updates From Folder",
"MenuBarFileOpenEmuFolder": "Открыть папку Ryujinx", "MenuBarFileOpenEmuFolder": "Открыть папку Ryujinx",
"MenuBarFileOpenLogsFolder": "Открыть папку с логами", "MenuBarFileOpenLogsFolder": "Открыть папку с логами",
"MenuBarFileExit": "_Выход", "MenuBarFileExit": "_Выход",
@@ -103,6 +106,8 @@
"SettingsTabGeneralHideCursorOnIdle": "В простое", "SettingsTabGeneralHideCursorOnIdle": "В простое",
"SettingsTabGeneralHideCursorAlways": "Всегда", "SettingsTabGeneralHideCursorAlways": "Всегда",
"SettingsTabGeneralGameDirectories": "Папки с играми", "SettingsTabGeneralGameDirectories": "Папки с играми",
"SettingsTabGeneralAutoloadDirectories": "Autoload DLC/Updates Directories",
"SettingsTabGeneralAutoloadNote": "DLC and Updates which refer to missing files will be unloaded automatically",
"SettingsTabGeneralAdd": "Добавить", "SettingsTabGeneralAdd": "Добавить",
"SettingsTabGeneralRemove": "Удалить", "SettingsTabGeneralRemove": "Удалить",
"SettingsTabSystem": "Система", "SettingsTabSystem": "Система",
@@ -402,6 +407,7 @@
"AvatarSetBackgroundColor": "Установить цвет фона", "AvatarSetBackgroundColor": "Установить цвет фона",
"AvatarClose": "Закрыть", "AvatarClose": "Закрыть",
"ControllerSettingsLoadProfileToolTip": "Загрузить профиль", "ControllerSettingsLoadProfileToolTip": "Загрузить профиль",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "Добавить профиль", "ControllerSettingsAddProfileToolTip": "Добавить профиль",
"ControllerSettingsRemoveProfileToolTip": "Удалить профиль", "ControllerSettingsRemoveProfileToolTip": "Удалить профиль",
"ControllerSettingsSaveProfileToolTip": "Сохранить профиль", "ControllerSettingsSaveProfileToolTip": "Сохранить профиль",
@@ -411,6 +417,7 @@
"GameListContextMenuToggleFavorite": "Добавить в избранное", "GameListContextMenuToggleFavorite": "Добавить в избранное",
"GameListContextMenuToggleFavoriteToolTip": "Добавляет игру в избранное и помечает звездочкой", "GameListContextMenuToggleFavoriteToolTip": "Добавляет игру в избранное и помечает звездочкой",
"SettingsTabGeneralTheme": "Тема:", "SettingsTabGeneralTheme": "Тема:",
"SettingsTabGeneralThemeAuto": "Auto",
"SettingsTabGeneralThemeDark": "Темная", "SettingsTabGeneralThemeDark": "Темная",
"SettingsTabGeneralThemeLight": "Светлая", "SettingsTabGeneralThemeLight": "Светлая",
"ControllerSettingsConfigureGeneral": "Настройка", "ControllerSettingsConfigureGeneral": "Настройка",
@@ -431,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "Произошла ошибка при поиске указанных данных сохранения: {0}", "DialogMessageFindSaveErrorMessage": "Произошла ошибка при поиске указанных данных сохранения: {0}",
"FolderDialogExtractTitle": "Выберите папку для извлечения", "FolderDialogExtractTitle": "Выберите папку для извлечения",
"DialogNcaExtractionMessage": "Извлечение {0} раздела из {1}...", "DialogNcaExtractionMessage": "Извлечение {0} раздела из {1}...",
"DialogNcaExtractionTitle": "Ryujinx - Извлечение разделов NCA", "DialogNcaExtractionTitle": "Извлечение разделов NCA",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "Ошибка извлечения. Основной NCA не присутствовал в выбранном файле.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "Ошибка извлечения. Основной NCA не присутствовал в выбранном файле.",
"DialogNcaExtractionCheckLogErrorMessage": "Ошибка извлечения. Прочтите файл журнала для получения дополнительной информации.", "DialogNcaExtractionCheckLogErrorMessage": "Ошибка извлечения. Прочтите файл журнала для получения дополнительной информации.",
"DialogNcaExtractionSuccessMessage": "Извлечение завершено успешно.", "DialogNcaExtractionSuccessMessage": "Извлечение завершено успешно.",
@@ -561,6 +568,9 @@
"AddGameDirBoxTooltip": "Введите путь к папке с играми для добавления ее в список выше", "AddGameDirBoxTooltip": "Введите путь к папке с играми для добавления ее в список выше",
"AddGameDirTooltip": "Добавить папку с играми в список", "AddGameDirTooltip": "Добавить папку с играми в список",
"RemoveGameDirTooltip": "Удалить выбранную папку игры", "RemoveGameDirTooltip": "Удалить выбранную папку игры",
"AddAutoloadDirBoxTooltip": "Enter an autoload directory to add to the list",
"AddAutoloadDirTooltip": "Add an autoload directory to the list",
"RemoveAutoloadDirTooltip": "Remove selected autoload directory",
"CustomThemeCheckTooltip": "Включить или отключить пользовательские темы", "CustomThemeCheckTooltip": "Включить или отключить пользовательские темы",
"CustomThemePathTooltip": "Путь к пользовательской теме для интерфейса", "CustomThemePathTooltip": "Путь к пользовательской теме для интерфейса",
"CustomThemeBrowseTooltip": "Просмотр пользовательской темы интерфейса", "CustomThemeBrowseTooltip": "Просмотр пользовательской темы интерфейса",
@@ -606,6 +616,8 @@
"DebugLogTooltip": "Выводит журнал сообщений отладки в консоли.\n\nИспользуйте только в случае просьбы разработчика, так как включение этой функции затруднит чтение журналов и ухудшит работу эмулятора.", "DebugLogTooltip": "Выводит журнал сообщений отладки в консоли.\n\nИспользуйте только в случае просьбы разработчика, так как включение этой функции затруднит чтение журналов и ухудшит работу эмулятора.",
"LoadApplicationFileTooltip": "Открывает файловый менеджер для выбора файла, совместимого с Nintendo Switch.", "LoadApplicationFileTooltip": "Открывает файловый менеджер для выбора файла, совместимого с Nintendo Switch.",
"LoadApplicationFolderTooltip": "Открывает файловый менеджер для выбора распакованного приложения, совместимого с Nintendo Switch.", "LoadApplicationFolderTooltip": "Открывает файловый менеджер для выбора распакованного приложения, совместимого с Nintendo Switch.",
"LoadDlcFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load DLC from",
"LoadTitleUpdatesFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load title updates from",
"OpenRyujinxFolderTooltip": "Открывает папку с файлами Ryujinx. ", "OpenRyujinxFolderTooltip": "Открывает папку с файлами Ryujinx. ",
"OpenRyujinxLogsTooltip": "Открывает папку в которую записываются логи", "OpenRyujinxLogsTooltip": "Открывает папку в которую записываются логи",
"ExitTooltip": "Выйти из Ryujinx", "ExitTooltip": "Выйти из Ryujinx",
@@ -657,6 +669,8 @@
"OpenSetupGuideMessage": "Открыть руководство по установке", "OpenSetupGuideMessage": "Открыть руководство по установке",
"NoUpdate": "Без обновлений", "NoUpdate": "Без обновлений",
"TitleUpdateVersionLabel": "Version {0} - {1}", "TitleUpdateVersionLabel": "Version {0} - {1}",
"TitleBundledUpdateVersionLabel": "Bundled: Version {0}",
"TitleBundledDlcLabel": "Bundled:",
"RyujinxInfo": "Ryujinx - Информация", "RyujinxInfo": "Ryujinx - Информация",
"RyujinxConfirm": "Ryujinx - Подтверждение", "RyujinxConfirm": "Ryujinx - Подтверждение",
"FileDialogAllTypes": "Все типы", "FileDialogAllTypes": "Все типы",
@@ -714,9 +728,17 @@
"DlcWindowTitle": "Управление DLC для {0} ({1})", "DlcWindowTitle": "Управление DLC для {0} ({1})",
"ModWindowTitle": "Управление модами для {0} ({1})", "ModWindowTitle": "Управление модами для {0} ({1})",
"UpdateWindowTitle": "Менеджер обновлений игр", "UpdateWindowTitle": "Менеджер обновлений игр",
"UpdateWindowUpdateAddedMessage": "{0} new update(s) added",
"UpdateWindowBundledContentNotice": "Bundled updates cannot be removed, only disabled.",
"CheatWindowHeading": "Доступные читы для {0} [{1}]", "CheatWindowHeading": "Доступные читы для {0} [{1}]",
"BuildId": "ID версии:", "BuildId": "ID версии:",
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
"DlcWindowHeading": "{0} DLC", "DlcWindowHeading": "{0} DLC",
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
"AutoloadUpdateAddedMessage": "{0} new update(s) added",
"AutoloadUpdateRemovedMessage": "{0} missing update(s) removed",
"ModWindowHeading": "Моды для {0} ", "ModWindowHeading": "Моды для {0} ",
"UserProfilesEditProfile": "Изменить выбранные", "UserProfilesEditProfile": "Изменить выбранные",
"Cancel": "Отмена", "Cancel": "Отмена",
@@ -767,6 +789,7 @@
"GraphicsScalingFilterBilinear": "Билинейная", "GraphicsScalingFilterBilinear": "Билинейная",
"GraphicsScalingFilterNearest": "Ступенчатая", "GraphicsScalingFilterNearest": "Ступенчатая",
"GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterFsr": "FSR",
"GraphicsScalingFilterArea": "Area",
"GraphicsScalingFilterLevelLabel": "Уровень", "GraphicsScalingFilterLevelLabel": "Уровень",
"GraphicsScalingFilterLevelTooltip": "Выбор режима работы FSR 1.0. Выше - четче.", "GraphicsScalingFilterLevelTooltip": "Выбор режима работы FSR 1.0. Выше - четче.",
"SmaaLow": "SMAA Низкое", "SmaaLow": "SMAA Низкое",

View File

@@ -107,6 +107,7 @@
"SettingsTabGeneralHideCursorAlways": "ตลอดเวลา", "SettingsTabGeneralHideCursorAlways": "ตลอดเวลา",
"SettingsTabGeneralGameDirectories": "ไดเรกทอรี่ของเกม", "SettingsTabGeneralGameDirectories": "ไดเรกทอรี่ของเกม",
"SettingsTabGeneralAutoloadDirectories": "โหลดไดเรกทอรี DLC/ไฟล์อัปเดต อัตโนมัติ", "SettingsTabGeneralAutoloadDirectories": "โหลดไดเรกทอรี DLC/ไฟล์อัปเดต อัตโนมัติ",
"SettingsTabGeneralAutoloadNote": "DLC and Updates which refer to missing files will be unloaded automatically",
"SettingsTabGeneralAdd": "เพิ่ม", "SettingsTabGeneralAdd": "เพิ่ม",
"SettingsTabGeneralRemove": "เอาออก", "SettingsTabGeneralRemove": "เอาออก",
"SettingsTabSystem": "ระบบ", "SettingsTabSystem": "ระบบ",
@@ -406,6 +407,7 @@
"AvatarSetBackgroundColor": "ตั้งค่าสีพื้นหลัง", "AvatarSetBackgroundColor": "ตั้งค่าสีพื้นหลัง",
"AvatarClose": "ปิด", "AvatarClose": "ปิด",
"ControllerSettingsLoadProfileToolTip": "โหลด โปรไฟล์", "ControllerSettingsLoadProfileToolTip": "โหลด โปรไฟล์",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "เพิ่ม โปรไฟล์", "ControllerSettingsAddProfileToolTip": "เพิ่ม โปรไฟล์",
"ControllerSettingsRemoveProfileToolTip": "ลบ โปรไฟล์", "ControllerSettingsRemoveProfileToolTip": "ลบ โปรไฟล์",
"ControllerSettingsSaveProfileToolTip": "บันทึก โปรไฟล์", "ControllerSettingsSaveProfileToolTip": "บันทึก โปรไฟล์",
@@ -436,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "มีข้อผิดพลาดในการค้นหาข้อมูลบันทึกที่ระบุไว้: {0}", "DialogMessageFindSaveErrorMessage": "มีข้อผิดพลาดในการค้นหาข้อมูลบันทึกที่ระบุไว้: {0}",
"FolderDialogExtractTitle": "เลือกโฟลเดอร์ที่จะแตกไฟล์เข้าไป", "FolderDialogExtractTitle": "เลือกโฟลเดอร์ที่จะแตกไฟล์เข้าไป",
"DialogNcaExtractionMessage": "กำลังแตกไฟล์ {0} จากส่วน {1}...", "DialogNcaExtractionMessage": "กำลังแตกไฟล์ {0} จากส่วน {1}...",
"DialogNcaExtractionTitle": "Ryujinx - เครื่องมือแตกไฟล์ของ NCA", "DialogNcaExtractionTitle": "เครื่องมือแตกไฟล์ของ NCA",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "เกิดความล้มเหลวในการแตกไฟล์เนื่องจากไม่พบ NCA หลักในไฟล์ที่เลือก", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "เกิดความล้มเหลวในการแตกไฟล์เนื่องจากไม่พบ NCA หลักในไฟล์ที่เลือก",
"DialogNcaExtractionCheckLogErrorMessage": "เกิดความล้มเหลวในการแตกไฟล์ โปรดอ่านไฟล์บันทึกประวัติเพื่อดูข้อมูลเพิ่มเติม", "DialogNcaExtractionCheckLogErrorMessage": "เกิดความล้มเหลวในการแตกไฟล์ โปรดอ่านไฟล์บันทึกประวัติเพื่อดูข้อมูลเพิ่มเติม",
"DialogNcaExtractionSuccessMessage": "การแตกไฟล์เสร็จสมบูรณ์แล้ว", "DialogNcaExtractionSuccessMessage": "การแตกไฟล์เสร็จสมบูรณ์แล้ว",
@@ -734,8 +736,9 @@
"DlcWindowHeading": "{0} DLC ที่สามารถดาวน์โหลดได้", "DlcWindowHeading": "{0} DLC ที่สามารถดาวน์โหลดได้",
"DlcWindowDlcAddedMessage": "{0} DLC ใหม่ที่เพิ่มเข้ามา", "DlcWindowDlcAddedMessage": "{0} DLC ใหม่ที่เพิ่มเข้ามา",
"AutoloadDlcAddedMessage": "{0} ใหม่ที่เพิ่มเข้ามา", "AutoloadDlcAddedMessage": "{0} ใหม่ที่เพิ่มเข้ามา",
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
"AutoloadUpdateAddedMessage": "{0} อัพเดตใหม่ที่เพิ่มเข้ามา", "AutoloadUpdateAddedMessage": "{0} อัพเดตใหม่ที่เพิ่มเข้ามา",
"AutoloadDlcAndUpdateAddedMessage": "{0} DLC ใหม่ที่เพิ่มเข้ามาและ {1} อัพเดตใหม่ที่เพิ่มเข้ามา", "AutoloadUpdateRemovedMessage": "{0} missing update(s) removed",
"ModWindowHeading": "{0} ม็อด", "ModWindowHeading": "{0} ม็อด",
"UserProfilesEditProfile": "แก้ไขที่เลือกแล้ว", "UserProfilesEditProfile": "แก้ไขที่เลือกแล้ว",
"Cancel": "ยกเลิก", "Cancel": "ยกเลิก",

View File

@@ -10,7 +10,10 @@
"SettingsTabSystemUseHypervisor": "Hypervisor Kullan", "SettingsTabSystemUseHypervisor": "Hypervisor Kullan",
"MenuBarFile": "_Dosya", "MenuBarFile": "_Dosya",
"MenuBarFileOpenFromFile": "_Dosyadan Uygulama Aç", "MenuBarFileOpenFromFile": "_Dosyadan Uygulama Aç",
"MenuBarFileOpenFromFileError": "No applications found in selected file.",
"MenuBarFileOpenUnpacked": "_Sıkıştırılmamış Oyun Aç", "MenuBarFileOpenUnpacked": "_Sıkıştırılmamış Oyun Aç",
"MenuBarFileLoadDlcFromFolder": "Load DLC From Folder",
"MenuBarFileLoadTitleUpdatesFromFolder": "Load Title Updates From Folder",
"MenuBarFileOpenEmuFolder": "Ryujinx Klasörünü aç", "MenuBarFileOpenEmuFolder": "Ryujinx Klasörünü aç",
"MenuBarFileOpenLogsFolder": "Logs Klasörünü aç", "MenuBarFileOpenLogsFolder": "Logs Klasörünü aç",
"MenuBarFileExit": "_Çıkış", "MenuBarFileExit": "_Çıkış",
@@ -103,6 +106,8 @@
"SettingsTabGeneralHideCursorOnIdle": "Hareketsiz Durumda", "SettingsTabGeneralHideCursorOnIdle": "Hareketsiz Durumda",
"SettingsTabGeneralHideCursorAlways": "Her Zaman", "SettingsTabGeneralHideCursorAlways": "Her Zaman",
"SettingsTabGeneralGameDirectories": "Oyun Dizinleri", "SettingsTabGeneralGameDirectories": "Oyun Dizinleri",
"SettingsTabGeneralAutoloadDirectories": "Autoload DLC/Updates Directories",
"SettingsTabGeneralAutoloadNote": "DLC and Updates which refer to missing files will be unloaded automatically",
"SettingsTabGeneralAdd": "Ekle", "SettingsTabGeneralAdd": "Ekle",
"SettingsTabGeneralRemove": "Kaldır", "SettingsTabGeneralRemove": "Kaldır",
"SettingsTabSystem": "Sistem", "SettingsTabSystem": "Sistem",
@@ -402,6 +407,7 @@
"AvatarSetBackgroundColor": "Arka Plan Rengi Ayarla", "AvatarSetBackgroundColor": "Arka Plan Rengi Ayarla",
"AvatarClose": "Kapat", "AvatarClose": "Kapat",
"ControllerSettingsLoadProfileToolTip": "Profil Yükle", "ControllerSettingsLoadProfileToolTip": "Profil Yükle",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "Profil Ekle", "ControllerSettingsAddProfileToolTip": "Profil Ekle",
"ControllerSettingsRemoveProfileToolTip": "Profili Kaldır", "ControllerSettingsRemoveProfileToolTip": "Profili Kaldır",
"ControllerSettingsSaveProfileToolTip": "Profili Kaydet", "ControllerSettingsSaveProfileToolTip": "Profili Kaydet",
@@ -411,6 +417,7 @@
"GameListContextMenuToggleFavorite": "Favori Ayarla", "GameListContextMenuToggleFavorite": "Favori Ayarla",
"GameListContextMenuToggleFavoriteToolTip": "Oyunu Favorilere Ekle/Çıkar", "GameListContextMenuToggleFavoriteToolTip": "Oyunu Favorilere Ekle/Çıkar",
"SettingsTabGeneralTheme": "Tema:", "SettingsTabGeneralTheme": "Tema:",
"SettingsTabGeneralThemeAuto": "Auto",
"SettingsTabGeneralThemeDark": "Karanlık", "SettingsTabGeneralThemeDark": "Karanlık",
"SettingsTabGeneralThemeLight": "Aydınlık", "SettingsTabGeneralThemeLight": "Aydınlık",
"ControllerSettingsConfigureGeneral": "Ayarla", "ControllerSettingsConfigureGeneral": "Ayarla",
@@ -431,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "Belirtilen kayıt verisi bulunmaya çalışırken hata: {0}", "DialogMessageFindSaveErrorMessage": "Belirtilen kayıt verisi bulunmaya çalışırken hata: {0}",
"FolderDialogExtractTitle": "İçine ayıklanacak klasörü seç", "FolderDialogExtractTitle": "İçine ayıklanacak klasörü seç",
"DialogNcaExtractionMessage": "{1} den {0} kısmı ayıklanıyor...", "DialogNcaExtractionMessage": "{1} den {0} kısmı ayıklanıyor...",
"DialogNcaExtractionTitle": "Ryujinx - NCA Kısmı Ayıklayıcısı", "DialogNcaExtractionTitle": "NCA Kısmı Ayıklayıcısı",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "Ayıklama hatası. Ana NCA seçilen dosyada bulunamadı.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "Ayıklama hatası. Ana NCA seçilen dosyada bulunamadı.",
"DialogNcaExtractionCheckLogErrorMessage": "Ayıklama hatası. Ek bilgi için kayıt dosyasını okuyun.", "DialogNcaExtractionCheckLogErrorMessage": "Ayıklama hatası. Ek bilgi için kayıt dosyasını okuyun.",
"DialogNcaExtractionSuccessMessage": "Ayıklama başarıyla tamamlandı.", "DialogNcaExtractionSuccessMessage": "Ayıklama başarıyla tamamlandı.",
@@ -561,6 +568,9 @@
"AddGameDirBoxTooltip": "Listeye eklemek için oyun dizini seçin", "AddGameDirBoxTooltip": "Listeye eklemek için oyun dizini seçin",
"AddGameDirTooltip": "Listeye oyun dizini ekle", "AddGameDirTooltip": "Listeye oyun dizini ekle",
"RemoveGameDirTooltip": "Seçili oyun dizinini kaldır", "RemoveGameDirTooltip": "Seçili oyun dizinini kaldır",
"AddAutoloadDirBoxTooltip": "Enter an autoload directory to add to the list",
"AddAutoloadDirTooltip": "Add an autoload directory to the list",
"RemoveAutoloadDirTooltip": "Remove selected autoload directory",
"CustomThemeCheckTooltip": "Emülatör pencerelerinin görünümünü değiştirmek için özel bir Avalonia teması kullan", "CustomThemeCheckTooltip": "Emülatör pencerelerinin görünümünü değiştirmek için özel bir Avalonia teması kullan",
"CustomThemePathTooltip": "Özel arayüz temasının yolu", "CustomThemePathTooltip": "Özel arayüz temasının yolu",
"CustomThemeBrowseTooltip": "Özel arayüz teması için göz at", "CustomThemeBrowseTooltip": "Özel arayüz teması için göz at",
@@ -606,6 +616,8 @@
"DebugLogTooltip": "Debug log mesajlarını konsola yazdırır.\n\nBu seçeneği yalnızca geliştirici üyemiz belirtirse aktifleştirin, çünkü bu seçenek log dosyasını okumayı zorlaştırır ve emülatörün performansını düşürür.", "DebugLogTooltip": "Debug log mesajlarını konsola yazdırır.\n\nBu seçeneği yalnızca geliştirici üyemiz belirtirse aktifleştirin, çünkü bu seçenek log dosyasını okumayı zorlaştırır ve emülatörün performansını düşürür.",
"LoadApplicationFileTooltip": "Switch ile uyumlu bir dosya yüklemek için dosya tarayıcısını açar", "LoadApplicationFileTooltip": "Switch ile uyumlu bir dosya yüklemek için dosya tarayıcısını açar",
"LoadApplicationFolderTooltip": "Switch ile uyumlu ayrıştırılmamış bir uygulama yüklemek için dosya tarayıcısını açar", "LoadApplicationFolderTooltip": "Switch ile uyumlu ayrıştırılmamış bir uygulama yüklemek için dosya tarayıcısını açar",
"LoadDlcFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load DLC from",
"LoadTitleUpdatesFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load title updates from",
"OpenRyujinxFolderTooltip": "Ryujinx dosya sistem klasörünü açar", "OpenRyujinxFolderTooltip": "Ryujinx dosya sistem klasörünü açar",
"OpenRyujinxLogsTooltip": "Log dosyalarının bulunduğu klasörü açar", "OpenRyujinxLogsTooltip": "Log dosyalarının bulunduğu klasörü açar",
"ExitTooltip": "Ryujinx'ten çıkış yapmayı sağlar", "ExitTooltip": "Ryujinx'ten çıkış yapmayı sağlar",
@@ -657,6 +669,8 @@
"OpenSetupGuideMessage": "Kurulum Kılavuzunu Aç", "OpenSetupGuideMessage": "Kurulum Kılavuzunu Aç",
"NoUpdate": "Güncelleme Yok", "NoUpdate": "Güncelleme Yok",
"TitleUpdateVersionLabel": "Sürüm {0} - {1}", "TitleUpdateVersionLabel": "Sürüm {0} - {1}",
"TitleBundledUpdateVersionLabel": "Bundled: Version {0}",
"TitleBundledDlcLabel": "Bundled:",
"RyujinxInfo": "Ryujinx - Bilgi", "RyujinxInfo": "Ryujinx - Bilgi",
"RyujinxConfirm": "Ryujinx - Doğrulama", "RyujinxConfirm": "Ryujinx - Doğrulama",
"FileDialogAllTypes": "Tüm türler", "FileDialogAllTypes": "Tüm türler",
@@ -714,9 +728,17 @@
"DlcWindowTitle": "Oyun DLC'lerini Yönet", "DlcWindowTitle": "Oyun DLC'lerini Yönet",
"ModWindowTitle": "Manage Mods for {0} ({1})", "ModWindowTitle": "Manage Mods for {0} ({1})",
"UpdateWindowTitle": "Oyun Güncellemelerini Yönet", "UpdateWindowTitle": "Oyun Güncellemelerini Yönet",
"UpdateWindowUpdateAddedMessage": "{0} new update(s) added",
"UpdateWindowBundledContentNotice": "Bundled updates cannot be removed, only disabled.",
"CheatWindowHeading": "{0} için Hile mevcut [{1}]", "CheatWindowHeading": "{0} için Hile mevcut [{1}]",
"BuildId": "BuildId:", "BuildId": "BuildId:",
"DlcWindowHeading": "{0} için DLC mevcut [{1}]", "DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
"DlcWindowHeading": "{0} Downloadable Content(s) available for {1} ({2})",
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
"AutoloadUpdateAddedMessage": "{0} new update(s) added",
"AutoloadUpdateRemovedMessage": "{0} missing update(s) removed",
"ModWindowHeading": "{0} Mod(lar)", "ModWindowHeading": "{0} Mod(lar)",
"UserProfilesEditProfile": "Seçiliyi Düzenle", "UserProfilesEditProfile": "Seçiliyi Düzenle",
"Cancel": "İptal", "Cancel": "İptal",
@@ -767,6 +789,7 @@
"GraphicsScalingFilterBilinear": "Bilinear", "GraphicsScalingFilterBilinear": "Bilinear",
"GraphicsScalingFilterNearest": "Nearest", "GraphicsScalingFilterNearest": "Nearest",
"GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterFsr": "FSR",
"GraphicsScalingFilterArea": "Area",
"GraphicsScalingFilterLevelLabel": "Seviye", "GraphicsScalingFilterLevelLabel": "Seviye",
"GraphicsScalingFilterLevelTooltip": "Set FSR 1.0 sharpening level. Higher is sharper.", "GraphicsScalingFilterLevelTooltip": "Set FSR 1.0 sharpening level. Higher is sharper.",
"SmaaLow": "Düşük SMAA", "SmaaLow": "Düşük SMAA",

View File

@@ -10,7 +10,10 @@
"SettingsTabSystemUseHypervisor": "Використовувати гіпервізор", "SettingsTabSystemUseHypervisor": "Використовувати гіпервізор",
"MenuBarFile": "_Файл", "MenuBarFile": "_Файл",
"MenuBarFileOpenFromFile": "_Завантажити програму з файлу", "MenuBarFileOpenFromFile": "_Завантажити програму з файлу",
"MenuBarFileOpenFromFileError": "No applications found in selected file.",
"MenuBarFileOpenUnpacked": "Завантажити _розпаковану гру", "MenuBarFileOpenUnpacked": "Завантажити _розпаковану гру",
"MenuBarFileLoadDlcFromFolder": "Load DLC From Folder",
"MenuBarFileLoadTitleUpdatesFromFolder": "Load Title Updates From Folder",
"MenuBarFileOpenEmuFolder": "Відкрити теку Ryujinx", "MenuBarFileOpenEmuFolder": "Відкрити теку Ryujinx",
"MenuBarFileOpenLogsFolder": "Відкрити теку журналів змін", "MenuBarFileOpenLogsFolder": "Відкрити теку журналів змін",
"MenuBarFileExit": "_Вихід", "MenuBarFileExit": "_Вихід",
@@ -103,6 +106,8 @@
"SettingsTabGeneralHideCursorOnIdle": "Сховати у режимі очікування", "SettingsTabGeneralHideCursorOnIdle": "Сховати у режимі очікування",
"SettingsTabGeneralHideCursorAlways": "Завжди", "SettingsTabGeneralHideCursorAlways": "Завжди",
"SettingsTabGeneralGameDirectories": "Тека ігор", "SettingsTabGeneralGameDirectories": "Тека ігор",
"SettingsTabGeneralAutoloadDirectories": "Autoload DLC/Updates Directories",
"SettingsTabGeneralAutoloadNote": "DLC and Updates which refer to missing files will be unloaded automatically",
"SettingsTabGeneralAdd": "Додати", "SettingsTabGeneralAdd": "Додати",
"SettingsTabGeneralRemove": "Видалити", "SettingsTabGeneralRemove": "Видалити",
"SettingsTabSystem": "Система", "SettingsTabSystem": "Система",
@@ -402,6 +407,7 @@
"AvatarSetBackgroundColor": "Встановити колір фону", "AvatarSetBackgroundColor": "Встановити колір фону",
"AvatarClose": "Закрити", "AvatarClose": "Закрити",
"ControllerSettingsLoadProfileToolTip": "Завантажити профіль", "ControllerSettingsLoadProfileToolTip": "Завантажити профіль",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "Додати профіль", "ControllerSettingsAddProfileToolTip": "Додати профіль",
"ControllerSettingsRemoveProfileToolTip": "Видалити профіль", "ControllerSettingsRemoveProfileToolTip": "Видалити профіль",
"ControllerSettingsSaveProfileToolTip": "Зберегти профіль", "ControllerSettingsSaveProfileToolTip": "Зберегти профіль",
@@ -411,6 +417,7 @@
"GameListContextMenuToggleFavorite": "Перемкнути вибране", "GameListContextMenuToggleFavorite": "Перемкнути вибране",
"GameListContextMenuToggleFavoriteToolTip": "Перемкнути улюблений статус гри", "GameListContextMenuToggleFavoriteToolTip": "Перемкнути улюблений статус гри",
"SettingsTabGeneralTheme": "Тема:", "SettingsTabGeneralTheme": "Тема:",
"SettingsTabGeneralThemeAuto": "Auto",
"SettingsTabGeneralThemeDark": "Темна", "SettingsTabGeneralThemeDark": "Темна",
"SettingsTabGeneralThemeLight": "Світла", "SettingsTabGeneralThemeLight": "Світла",
"ControllerSettingsConfigureGeneral": "Налаштування", "ControllerSettingsConfigureGeneral": "Налаштування",
@@ -431,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "Під час пошуку вказаних даних збереження сталася помилка: {0}", "DialogMessageFindSaveErrorMessage": "Під час пошуку вказаних даних збереження сталася помилка: {0}",
"FolderDialogExtractTitle": "Виберіть папку для видобування", "FolderDialogExtractTitle": "Виберіть папку для видобування",
"DialogNcaExtractionMessage": "Видобування розділу {0} з {1}...", "DialogNcaExtractionMessage": "Видобування розділу {0} з {1}...",
"DialogNcaExtractionTitle": "Ryujinx - Екстрактор розділів NCA", "DialogNcaExtractionTitle": "Екстрактор розділів NCA",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "Помилка видобування. Основний NCA не був присутній у вибраному файлі.", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "Помилка видобування. Основний NCA не був присутній у вибраному файлі.",
"DialogNcaExtractionCheckLogErrorMessage": "Помилка видобування. Прочитайте файл журналу для отримання додаткової інформації.", "DialogNcaExtractionCheckLogErrorMessage": "Помилка видобування. Прочитайте файл журналу для отримання додаткової інформації.",
"DialogNcaExtractionSuccessMessage": "Видобування успішно завершено.", "DialogNcaExtractionSuccessMessage": "Видобування успішно завершено.",
@@ -561,6 +568,9 @@
"AddGameDirBoxTooltip": "Введіть каталог ігор, щоб додати до списку", "AddGameDirBoxTooltip": "Введіть каталог ігор, щоб додати до списку",
"AddGameDirTooltip": "Додати каталог гри до списку", "AddGameDirTooltip": "Додати каталог гри до списку",
"RemoveGameDirTooltip": "Видалити вибраний каталог гри", "RemoveGameDirTooltip": "Видалити вибраний каталог гри",
"AddAutoloadDirBoxTooltip": "Enter an autoload directory to add to the list",
"AddAutoloadDirTooltip": "Add an autoload directory to the list",
"RemoveAutoloadDirTooltip": "Remove selected autoload directory",
"CustomThemeCheckTooltip": "Використовуйте користувацьку тему Avalonia для графічного інтерфейсу, щоб змінити вигляд меню емулятора", "CustomThemeCheckTooltip": "Використовуйте користувацьку тему Avalonia для графічного інтерфейсу, щоб змінити вигляд меню емулятора",
"CustomThemePathTooltip": "Шлях до користувацької теми графічного інтерфейсу", "CustomThemePathTooltip": "Шлях до користувацької теми графічного інтерфейсу",
"CustomThemeBrowseTooltip": "Огляд користувацької теми графічного інтерфейсу", "CustomThemeBrowseTooltip": "Огляд користувацької теми графічного інтерфейсу",
@@ -606,6 +616,8 @@
"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",
"LoadTitleUpdatesFromFolderTooltip": "Open a file explorer to choose one or more folders to bulk load title updates from",
"OpenRyujinxFolderTooltip": "Відкриває папку файлової системи Ryujinx", "OpenRyujinxFolderTooltip": "Відкриває папку файлової системи Ryujinx",
"OpenRyujinxLogsTooltip": "Відкриває папку, куди записуються журнали", "OpenRyujinxLogsTooltip": "Відкриває папку, куди записуються журнали",
"ExitTooltip": "Виходить з Ryujinx", "ExitTooltip": "Виходить з Ryujinx",
@@ -657,6 +669,8 @@
"OpenSetupGuideMessage": "Відкрити посібник із налаштування", "OpenSetupGuideMessage": "Відкрити посібник із налаштування",
"NoUpdate": "Немає оновлень", "NoUpdate": "Немає оновлень",
"TitleUpdateVersionLabel": "Версія {0} - {1}", "TitleUpdateVersionLabel": "Версія {0} - {1}",
"TitleBundledUpdateVersionLabel": "Bundled: Version {0}",
"TitleBundledDlcLabel": "Bundled:",
"RyujinxInfo": "Ryujin x - Інформація", "RyujinxInfo": "Ryujin x - Інформація",
"RyujinxConfirm": "Ryujinx - Підтвердження", "RyujinxConfirm": "Ryujinx - Підтвердження",
"FileDialogAllTypes": "Всі типи", "FileDialogAllTypes": "Всі типи",
@@ -714,9 +728,17 @@
"DlcWindowTitle": "Менеджер вмісту для завантаження", "DlcWindowTitle": "Менеджер вмісту для завантаження",
"ModWindowTitle": "Керувати модами для {0} ({1})", "ModWindowTitle": "Керувати модами для {0} ({1})",
"UpdateWindowTitle": "Менеджер оновлення назв", "UpdateWindowTitle": "Менеджер оновлення назв",
"UpdateWindowUpdateAddedMessage": "{0} new update(s) added",
"UpdateWindowBundledContentNotice": "Bundled updates cannot be removed, only disabled.",
"CheatWindowHeading": "Коди доступні для {0} [{1}]", "CheatWindowHeading": "Коди доступні для {0} [{1}]",
"BuildId": "ID збірки:", "BuildId": "ID збірки:",
"DlcWindowBundledContentNotice": "Bundled DLC cannot be removed, only disabled.",
"DlcWindowHeading": "Вміст для завантаження, доступний для {1} ({2}): {0}", "DlcWindowHeading": "Вміст для завантаження, доступний для {1} ({2}): {0}",
"DlcWindowDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcAddedMessage": "{0} new downloadable content(s) added",
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
"AutoloadUpdateAddedMessage": "{0} new update(s) added",
"AutoloadUpdateRemovedMessage": "{0} missing update(s) removed",
"ModWindowHeading": "{0} мод(ів)", "ModWindowHeading": "{0} мод(ів)",
"UserProfilesEditProfile": "Редагувати вибране", "UserProfilesEditProfile": "Редагувати вибране",
"Cancel": "Скасувати", "Cancel": "Скасувати",
@@ -767,6 +789,7 @@
"GraphicsScalingFilterBilinear": "Білінійний", "GraphicsScalingFilterBilinear": "Білінійний",
"GraphicsScalingFilterNearest": "Найближчий", "GraphicsScalingFilterNearest": "Найближчий",
"GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterFsr": "FSR",
"GraphicsScalingFilterArea": "Area",
"GraphicsScalingFilterLevelLabel": "Рівень", "GraphicsScalingFilterLevelLabel": "Рівень",
"GraphicsScalingFilterLevelTooltip": "Встановити рівень різкості в FSR 1.0. Чим вище - тим різкіше.", "GraphicsScalingFilterLevelTooltip": "Встановити рівень різкості в FSR 1.0. Чим вище - тим різкіше.",
"SmaaLow": "SMAA Низький", "SmaaLow": "SMAA Низький",

View File

@@ -107,6 +107,7 @@
"SettingsTabGeneralHideCursorAlways": "始终隐藏", "SettingsTabGeneralHideCursorAlways": "始终隐藏",
"SettingsTabGeneralGameDirectories": "游戏目录", "SettingsTabGeneralGameDirectories": "游戏目录",
"SettingsTabGeneralAutoloadDirectories": "自动加载DLC/游戏更新目录", "SettingsTabGeneralAutoloadDirectories": "自动加载DLC/游戏更新目录",
"SettingsTabGeneralAutoloadNote": "DLC and Updates which refer to missing files will be unloaded automatically",
"SettingsTabGeneralAdd": "添加", "SettingsTabGeneralAdd": "添加",
"SettingsTabGeneralRemove": "删除", "SettingsTabGeneralRemove": "删除",
"SettingsTabSystem": "系统", "SettingsTabSystem": "系统",
@@ -406,6 +407,7 @@
"AvatarSetBackgroundColor": "设置背景色", "AvatarSetBackgroundColor": "设置背景色",
"AvatarClose": "关闭", "AvatarClose": "关闭",
"ControllerSettingsLoadProfileToolTip": "加载配置文件", "ControllerSettingsLoadProfileToolTip": "加载配置文件",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "新增配置文件", "ControllerSettingsAddProfileToolTip": "新增配置文件",
"ControllerSettingsRemoveProfileToolTip": "删除配置文件", "ControllerSettingsRemoveProfileToolTip": "删除配置文件",
"ControllerSettingsSaveProfileToolTip": "保存配置文件", "ControllerSettingsSaveProfileToolTip": "保存配置文件",
@@ -436,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "查找指定存档时出错:{0}", "DialogMessageFindSaveErrorMessage": "查找指定存档时出错:{0}",
"FolderDialogExtractTitle": "选择要提取到的文件夹", "FolderDialogExtractTitle": "选择要提取到的文件夹",
"DialogNcaExtractionMessage": "提取 {1} 的 {0} 分区...", "DialogNcaExtractionMessage": "提取 {1} 的 {0} 分区...",
"DialogNcaExtractionTitle": "Ryujinx - NCA 分区提取", "DialogNcaExtractionTitle": "NCA 分区提取",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "提取失败,所选文件中没有 NCA 文件", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "提取失败,所选文件中没有 NCA 文件",
"DialogNcaExtractionCheckLogErrorMessage": "提取失败,请查看日志文件获取详情", "DialogNcaExtractionCheckLogErrorMessage": "提取失败,请查看日志文件获取详情",
"DialogNcaExtractionSuccessMessage": "提取成功!", "DialogNcaExtractionSuccessMessage": "提取成功!",
@@ -734,8 +736,9 @@
"DlcWindowHeading": "{0} 个 DLC", "DlcWindowHeading": "{0} 个 DLC",
"DlcWindowDlcAddedMessage": "{0} 个DLC被添加", "DlcWindowDlcAddedMessage": "{0} 个DLC被添加",
"AutoloadDlcAddedMessage": "{0} 个DLC被添加", "AutoloadDlcAddedMessage": "{0} 个DLC被添加",
"AutoloadDlcRemovedMessage": "{0} missing downloadable content(s) removed",
"AutoloadUpdateAddedMessage": "{0} 个游戏更新被添加", "AutoloadUpdateAddedMessage": "{0} 个游戏更新被添加",
"AutoloadDlcAndUpdateAddedMessage": "{0} 个DLC和{1} 个游戏更新被添加", "AutoloadUpdateRemovedMessage": "{0} missing update(s) removed",
"ModWindowHeading": "{0} Mod(s)", "ModWindowHeading": "{0} Mod(s)",
"UserProfilesEditProfile": "编辑所选", "UserProfilesEditProfile": "编辑所选",
"Cancel": "取消", "Cancel": "取消",

View File

@@ -10,7 +10,10 @@
"SettingsTabSystemUseHypervisor": "使用 Hypervisor", "SettingsTabSystemUseHypervisor": "使用 Hypervisor",
"MenuBarFile": "檔案(_F)", "MenuBarFile": "檔案(_F)",
"MenuBarFileOpenFromFile": "從檔案載入應用程式(_L)", "MenuBarFileOpenFromFile": "從檔案載入應用程式(_L)",
"MenuBarFileOpenFromFileError": "未能從已選擇的檔案中找到應用程式。",
"MenuBarFileOpenUnpacked": "載入未封裝的遊戲(_U)", "MenuBarFileOpenUnpacked": "載入未封裝的遊戲(_U)",
"MenuBarFileLoadDlcFromFolder": "從資料夾中載入 DLC",
"MenuBarFileLoadTitleUpdatesFromFolder": "從資料夾中載入遊戲更新",
"MenuBarFileOpenEmuFolder": "開啟 Ryujinx 資料夾", "MenuBarFileOpenEmuFolder": "開啟 Ryujinx 資料夾",
"MenuBarFileOpenLogsFolder": "開啟日誌資料夾", "MenuBarFileOpenLogsFolder": "開啟日誌資料夾",
"MenuBarFileExit": "結束(_E)", "MenuBarFileExit": "結束(_E)",
@@ -97,12 +100,14 @@
"SettingsTabGeneralCheckUpdatesOnLaunch": "啟動時檢查更新", "SettingsTabGeneralCheckUpdatesOnLaunch": "啟動時檢查更新",
"SettingsTabGeneralShowConfirmExitDialog": "顯示「確認結束」對話方塊", "SettingsTabGeneralShowConfirmExitDialog": "顯示「確認結束」對話方塊",
"SettingsTabGeneralRememberWindowState": "記住視窗大小/位置", "SettingsTabGeneralRememberWindowState": "記住視窗大小/位置",
"SettingsTabGeneralShowTitleBar": "Show Title Bar (Requires restart)", "SettingsTabGeneralShowTitleBar": "顯示「標題列」 (需要重新開啟Ryujinx)",
"SettingsTabGeneralHideCursor": "隱藏滑鼠游標:", "SettingsTabGeneralHideCursor": "隱藏滑鼠游標:",
"SettingsTabGeneralHideCursorNever": "從不", "SettingsTabGeneralHideCursorNever": "從不",
"SettingsTabGeneralHideCursorOnIdle": "閒置時", "SettingsTabGeneralHideCursorOnIdle": "閒置時",
"SettingsTabGeneralHideCursorAlways": "總是", "SettingsTabGeneralHideCursorAlways": "總是",
"SettingsTabGeneralGameDirectories": "遊戲資料夾", "SettingsTabGeneralGameDirectories": "遊戲資料夾",
"SettingsTabGeneralAutoloadDirectories": "自動載入 DLC/遊戲更新資料夾",
"SettingsTabGeneralAutoloadNote": "遺失的 DLC 及遊戲更新檔案將會在自動載入中移除",
"SettingsTabGeneralAdd": "新增", "SettingsTabGeneralAdd": "新增",
"SettingsTabGeneralRemove": "刪除", "SettingsTabGeneralRemove": "刪除",
"SettingsTabSystem": "系統", "SettingsTabSystem": "系統",
@@ -137,7 +142,7 @@
"SettingsTabSystemSystemTime": "系統時鐘:", "SettingsTabSystemSystemTime": "系統時鐘:",
"SettingsTabSystemEnableVsync": "垂直同步", "SettingsTabSystemEnableVsync": "垂直同步",
"SettingsTabSystemEnablePptc": "PPTC (剖析式持久轉譯快取, Profiled Persistent Translation Cache)", "SettingsTabSystemEnablePptc": "PPTC (剖析式持久轉譯快取, Profiled Persistent Translation Cache)",
"SettingsTabSystemEnableLowPowerPptc": "Low-power PPTC", "SettingsTabSystemEnableLowPowerPptc": "低功耗 PPTC",
"SettingsTabSystemEnableFsIntegrityChecks": "檔案系統完整性檢查", "SettingsTabSystemEnableFsIntegrityChecks": "檔案系統完整性檢查",
"SettingsTabSystemAudioBackend": "音效後端:", "SettingsTabSystemAudioBackend": "音效後端:",
"SettingsTabSystemAudioBackendDummy": "虛設 (Dummy)", "SettingsTabSystemAudioBackendDummy": "虛設 (Dummy)",
@@ -402,6 +407,7 @@
"AvatarSetBackgroundColor": "設定背景顏色", "AvatarSetBackgroundColor": "設定背景顏色",
"AvatarClose": "關閉", "AvatarClose": "關閉",
"ControllerSettingsLoadProfileToolTip": "載入設定檔", "ControllerSettingsLoadProfileToolTip": "載入設定檔",
"ControllerSettingsViewProfileToolTip": "View Profile",
"ControllerSettingsAddProfileToolTip": "新增設定檔", "ControllerSettingsAddProfileToolTip": "新增設定檔",
"ControllerSettingsRemoveProfileToolTip": "刪除設定檔", "ControllerSettingsRemoveProfileToolTip": "刪除設定檔",
"ControllerSettingsSaveProfileToolTip": "儲存設定檔", "ControllerSettingsSaveProfileToolTip": "儲存設定檔",
@@ -411,6 +417,7 @@
"GameListContextMenuToggleFavorite": "加入/移除為我的最愛", "GameListContextMenuToggleFavorite": "加入/移除為我的最愛",
"GameListContextMenuToggleFavoriteToolTip": "切換遊戲的我的最愛狀態", "GameListContextMenuToggleFavoriteToolTip": "切換遊戲的我的最愛狀態",
"SettingsTabGeneralTheme": "佈景主題:", "SettingsTabGeneralTheme": "佈景主題:",
"SettingsTabGeneralThemeAuto": "自動",
"SettingsTabGeneralThemeDark": "深色", "SettingsTabGeneralThemeDark": "深色",
"SettingsTabGeneralThemeLight": "淺色", "SettingsTabGeneralThemeLight": "淺色",
"ControllerSettingsConfigureGeneral": "配置", "ControllerSettingsConfigureGeneral": "配置",
@@ -431,7 +438,7 @@
"DialogMessageFindSaveErrorMessage": "尋找指定的存檔時出現錯誤: {0}", "DialogMessageFindSaveErrorMessage": "尋找指定的存檔時出現錯誤: {0}",
"FolderDialogExtractTitle": "選擇要解壓到的資料夾", "FolderDialogExtractTitle": "選擇要解壓到的資料夾",
"DialogNcaExtractionMessage": "從 {1} 提取 {0} 分區...", "DialogNcaExtractionMessage": "從 {1} 提取 {0} 分區...",
"DialogNcaExtractionTitle": "Ryujinx - NCA 分區提取器", "DialogNcaExtractionTitle": "NCA 分區提取器",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "提取失敗。所選檔案中不存在主 NCA 檔案。", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "提取失敗。所選檔案中不存在主 NCA 檔案。",
"DialogNcaExtractionCheckLogErrorMessage": "提取失敗。請閱讀日誌檔案了解更多資訊。", "DialogNcaExtractionCheckLogErrorMessage": "提取失敗。請閱讀日誌檔案了解更多資訊。",
"DialogNcaExtractionSuccessMessage": "提取成功。", "DialogNcaExtractionSuccessMessage": "提取成功。",
@@ -561,6 +568,9 @@
"AddGameDirBoxTooltip": "輸入要新增到清單中的遊戲資料夾", "AddGameDirBoxTooltip": "輸入要新增到清單中的遊戲資料夾",
"AddGameDirTooltip": "新增遊戲資料夾到清單中", "AddGameDirTooltip": "新增遊戲資料夾到清單中",
"RemoveGameDirTooltip": "移除選取的遊戲資料夾", "RemoveGameDirTooltip": "移除選取的遊戲資料夾",
"AddAutoloadDirBoxTooltip": "輸入要新增到清單中的「自動載入 DLC/遊戲更新資料夾」",
"AddAutoloadDirTooltip": "新增「自動載入 DLC/遊戲更新資料夾」到清單中",
"RemoveAutoloadDirTooltip": "移除選取的「自動載入 DLC/遊戲更新資料夾」",
"CustomThemeCheckTooltip": "為圖形使用者介面使用自訂 Avalonia 佈景主題,變更模擬器功能表的外觀", "CustomThemeCheckTooltip": "為圖形使用者介面使用自訂 Avalonia 佈景主題,變更模擬器功能表的外觀",
"CustomThemePathTooltip": "自訂 GUI 佈景主題的路徑", "CustomThemePathTooltip": "自訂 GUI 佈景主題的路徑",
"CustomThemeBrowseTooltip": "瀏覽自訂 GUI 佈景主題", "CustomThemeBrowseTooltip": "瀏覽自訂 GUI 佈景主題",
@@ -573,7 +583,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": "使用 CPU 核心數量的三分之一載入 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": "變更客體記憶體的映射和存取方式。這會極大地影響模擬 CPU 效能。\n\n如果不確定請設定為主體略過檢查模式。", "MemoryManagerTooltip": "變更客體記憶體的映射和存取方式。這會極大地影響模擬 CPU 效能。\n\n如果不確定請設定為主體略過檢查模式。",
@@ -581,7 +591,7 @@
"MemoryManagerHostTooltip": "直接映射主體位址空間中的記憶體。更快的 JIT 編譯和執行速度。", "MemoryManagerHostTooltip": "直接映射主體位址空間中的記憶體。更快的 JIT 編譯和執行速度。",
"MemoryManagerUnsafeTooltip": "直接映射記憶體,但在存取前不封鎖客體位址空間內的位址。速度更快,但相對不安全。訪客應用程式可以從 Ryujinx 中的任何地方存取記憶體,因此只能使用該模式執行您信任的程式。", "MemoryManagerUnsafeTooltip": "直接映射記憶體,但在存取前不封鎖客體位址空間內的位址。速度更快,但相對不安全。訪客應用程式可以從 Ryujinx 中的任何地方存取記憶體,因此只能使用該模式執行您信任的程式。",
"UseHypervisorTooltip": "使用 Hypervisor 取代 JIT。使用時可大幅提高效能但在目前狀態下可能不穩定。", "UseHypervisorTooltip": "使用 Hypervisor 取代 JIT。使用時可大幅提高效能但在目前狀態下可能不穩定。",
"DRamTooltip": "利用另一種 MemoryMode 配置來模仿 Switch 開發模式。\n\n這僅對高解析度紋理套件或 4K 解析度模組有用。不會提高效能。\n\n如果不確定保持關閉狀態。", "DRamTooltip": "利用另一種 MemoryMode 配置來模仿 Switch 開發模式。\n\n這僅對高解析度紋理套件或 4K 解析度模組有用。不會提高效能。\n\n如果不確定設定為 4GiB。",
"IgnoreMissingServicesTooltip": "忽略未實現的 Horizon OS 服務。這可能有助於在啟動某些遊戲時避免崩潰。\n\n如果不確定請保持關閉狀態。", "IgnoreMissingServicesTooltip": "忽略未實現的 Horizon OS 服務。這可能有助於在啟動某些遊戲時避免崩潰。\n\n如果不確定請保持關閉狀態。",
"IgnoreAppletTooltip": "如果遊戲手把在遊戲過程中斷開連接,則外部對話方塊「控制器小程式」將不會出現。不會提示關閉對話方塊或設定新控制器。一旦先前斷開的控制器重新連接,遊戲將自動恢復。", "IgnoreAppletTooltip": "如果遊戲手把在遊戲過程中斷開連接,則外部對話方塊「控制器小程式」將不會出現。不會提示關閉對話方塊或設定新控制器。一旦先前斷開的控制器重新連接,遊戲將自動恢復。",
"GraphicsBackendThreadingTooltip": "在第二個執行緒上執行圖形後端指令。\n\n在本身不支援多執行緒的 GPU 驅動程式上,可加快著色器編譯、減少卡頓並提高效能。在支援多執行緒的驅動程式上效能略有提升。\n\n如果不確定請設定為自動。", "GraphicsBackendThreadingTooltip": "在第二個執行緒上執行圖形後端指令。\n\n在本身不支援多執行緒的 GPU 驅動程式上,可加快著色器編譯、減少卡頓並提高效能。在支援多執行緒的驅動程式上效能略有提升。\n\n如果不確定請設定為自動。",
@@ -606,6 +616,8 @@
"DebugLogTooltip": "在控制台中輸出偵錯日誌訊息。\n\n只有在人員特別指示的情況下才能使用因為這會導致日誌難以閱讀並降低模擬器效能。", "DebugLogTooltip": "在控制台中輸出偵錯日誌訊息。\n\n只有在人員特別指示的情況下才能使用因為這會導致日誌難以閱讀並降低模擬器效能。",
"LoadApplicationFileTooltip": "開啟檔案總管,選擇與 Switch 相容的檔案來載入", "LoadApplicationFileTooltip": "開啟檔案總管,選擇與 Switch 相容的檔案來載入",
"LoadApplicationFolderTooltip": "開啟檔案總管,選擇與 Switch 相容且未封裝的應用程式來載入", "LoadApplicationFolderTooltip": "開啟檔案總管,選擇與 Switch 相容且未封裝的應用程式來載入",
"LoadDlcFromFolderTooltip": "開啟檔案總管,選擇一個或多個資料夾來大量載入 DLC",
"LoadTitleUpdatesFromFolderTooltip": "開啟檔案總管,選擇一個或多個資料夾來大量載入遊戲更新",
"OpenRyujinxFolderTooltip": "開啟 Ryujinx 檔案系統資料夾", "OpenRyujinxFolderTooltip": "開啟 Ryujinx 檔案系統資料夾",
"OpenRyujinxLogsTooltip": "開啟日誌被寫入的資料夾", "OpenRyujinxLogsTooltip": "開啟日誌被寫入的資料夾",
"ExitTooltip": "結束 Ryujinx", "ExitTooltip": "結束 Ryujinx",
@@ -657,6 +669,8 @@
"OpenSetupGuideMessage": "開啟設定指南", "OpenSetupGuideMessage": "開啟設定指南",
"NoUpdate": "沒有更新", "NoUpdate": "沒有更新",
"TitleUpdateVersionLabel": "版本 {0}", "TitleUpdateVersionLabel": "版本 {0}",
"TitleBundledUpdateVersionLabel": "附帶: 版本 {0}",
"TitleBundledDlcLabel": "附帶:",
"RyujinxInfo": "Ryujinx - 資訊", "RyujinxInfo": "Ryujinx - 資訊",
"RyujinxConfirm": "Ryujinx - 確認", "RyujinxConfirm": "Ryujinx - 確認",
"FileDialogAllTypes": "全部類型", "FileDialogAllTypes": "全部類型",
@@ -714,9 +728,17 @@
"DlcWindowTitle": "管理 {0} 的可下載內容 ({1})", "DlcWindowTitle": "管理 {0} 的可下載內容 ({1})",
"ModWindowTitle": "管理 {0} 的模組 ({1})", "ModWindowTitle": "管理 {0} 的模組 ({1})",
"UpdateWindowTitle": "遊戲更新管理員", "UpdateWindowTitle": "遊戲更新管理員",
"UpdateWindowUpdateAddedMessage": "已加入 {0} 個遊戲更新",
"UpdateWindowBundledContentNotice": "附帶的遊戲更新只能被停用而無法被刪除。",
"CheatWindowHeading": "可用於 {0} [{1}] 的密技", "CheatWindowHeading": "可用於 {0} [{1}] 的密技",
"BuildId": "組建識別碼:", "BuildId": "組建識別碼:",
"DlcWindowBundledContentNotice": "附帶的 DLC 只能被停用而無法被刪除。",
"DlcWindowHeading": "{0} 個可下載內容", "DlcWindowHeading": "{0} 個可下載內容",
"DlcWindowDlcAddedMessage": "已加入 {0} 個 DLC",
"AutoloadDlcAddedMessage": "已加入 {0} 個 DLC",
"AutoloadDlcRemovedMessage": "已刪除 {0} 個遺失的 DLC",
"AutoloadUpdateAddedMessage": "已加入 {0} 個遊戲更新",
"AutoloadUpdateRemovedMessage": "已刪除 {0} 個遺失的遊戲更新",
"ModWindowHeading": "{0} 模組", "ModWindowHeading": "{0} 模組",
"UserProfilesEditProfile": "編輯所選", "UserProfilesEditProfile": "編輯所選",
"Cancel": "取消", "Cancel": "取消",
@@ -767,6 +789,7 @@
"GraphicsScalingFilterBilinear": "雙線性 (Bilinear)", "GraphicsScalingFilterBilinear": "雙線性 (Bilinear)",
"GraphicsScalingFilterNearest": "近鄰性 (Nearest)", "GraphicsScalingFilterNearest": "近鄰性 (Nearest)",
"GraphicsScalingFilterFsr": "FSR", "GraphicsScalingFilterFsr": "FSR",
"GraphicsScalingFilterArea": "Area",
"GraphicsScalingFilterLevelLabel": "日誌等級", "GraphicsScalingFilterLevelLabel": "日誌等級",
"GraphicsScalingFilterLevelTooltip": "設定 FSR 1.0 銳化等級。越高越清晰。", "GraphicsScalingFilterLevelTooltip": "設定 FSR 1.0 銳化等級。越高越清晰。",
"SmaaLow": "低階 SMAA", "SmaaLow": "低階 SMAA",

View File

@@ -146,7 +146,7 @@ namespace Ryujinx.Ava.Common
var cancellationToken = new CancellationTokenSource(); var cancellationToken = new CancellationTokenSource();
UpdateWaitWindow waitingDialog = new( UpdateWaitWindow waitingDialog = new(
LocaleManager.Instance[LocaleKeys.DialogNcaExtractionTitle], App.FormatTitle(LocaleKeys.DialogNcaExtractionTitle),
LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogNcaExtractionMessage, ncaSectionType, Path.GetFileName(titleFilePath)), LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogNcaExtractionMessage, ncaSectionType, Path.GetFileName(titleFilePath)),
cancellationToken); cancellationToken);
@@ -269,7 +269,7 @@ namespace Ryujinx.Ava.Common
Dispatcher.UIThread.Post(waitingDialog.Close); Dispatcher.UIThread.Post(waitingDialog.Close);
NotificationHelper.Show( NotificationHelper.Show(
LocaleManager.Instance[LocaleKeys.DialogNcaExtractionTitle], App.FormatTitle(LocaleKeys.DialogNcaExtractionTitle),
$"{titleName}\n\n{LocaleManager.Instance[LocaleKeys.DialogNcaExtractionSuccessMessage]}", $"{titleName}\n\n{LocaleManager.Instance[LocaleKeys.DialogNcaExtractionSuccessMessage]}",
NotificationType.Information); NotificationType.Information);
} }

View File

@@ -2,19 +2,38 @@
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.Markup.Xaml.MarkupExtensions; using Avalonia.Markup.Xaml.MarkupExtensions;
using Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings; using Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings;
using Gommon;
using System; using System;
// ReSharper disable VirtualMemberNeverOverridden.Global
// ReSharper disable MemberCanBeProtected.Global
// ReSharper disable MemberCanBePrivate.Global
#nullable enable
namespace Ryujinx.Ava.Common.Markup namespace Ryujinx.Ava.Common.Markup
{ {
internal abstract class BasicMarkupExtension : MarkupExtension internal abstract class BasicMarkupExtension<T> : MarkupExtension
{ {
protected abstract ClrPropertyInfo PropertyInfo { get; } public virtual string Name => "Item";
public virtual Action<object, T?>? Setter => null;
public override object ProvideValue(IServiceProvider serviceProvider) =>
new CompiledBindingExtension( protected abstract T? GetValue();
new CompiledBindingPathBuilder()
.Property(PropertyInfo, PropertyInfoAccessorFactory.CreateInpcPropertyAccessor) protected virtual void ConfigureBindingExtension(CompiledBindingExtension _) { }
.Build()
).ProvideValue(serviceProvider); private ClrPropertyInfo PropertyInfo =>
new(Name,
_ => GetValue(),
Setter as Action<object, object?>,
typeof(T));
public override object ProvideValue(IServiceProvider serviceProvider)
=> new CompiledBindingExtension(
new CompiledBindingPathBuilder()
.Property(PropertyInfo, PropertyInfoAccessorFactory.CreateInpcPropertyAccessor)
.Build()
)
.Apply(ConfigureBindingExtension)
.ProvideValue(serviceProvider);
} }
} }

View File

@@ -1,51 +1,24 @@
using Avalonia.Data.Core;
using Avalonia.Markup.Xaml;
using Avalonia.Markup.Xaml.MarkupExtensions; using Avalonia.Markup.Xaml.MarkupExtensions;
using Avalonia.Markup.Xaml.MarkupExtensions.CompiledBindings;
using Projektanker.Icons.Avalonia; using Projektanker.Icons.Avalonia;
using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.Common.Locale;
using System;
namespace Ryujinx.Ava.Common.Markup namespace Ryujinx.Ava.Common.Markup
{ {
internal class IconExtension(string iconString) : BasicMarkupExtension internal class IconExtension(string iconString) : BasicMarkupExtension<Icon>
{ {
protected override ClrPropertyInfo PropertyInfo protected override Icon GetValue() => new() { Value = iconString };
=> new(
"Item",
_ => new Icon { Value = iconString },
null,
typeof(Icon)
);
} }
internal class SpinningIconExtension(string iconString) : BasicMarkupExtension internal class SpinningIconExtension(string iconString) : BasicMarkupExtension<Icon>
{ {
protected override ClrPropertyInfo PropertyInfo protected override Icon GetValue() => new() { Value = iconString, Animation = IconAnimation.Spin };
=> new(
"Item",
_ => new Icon { Value = iconString, Animation = IconAnimation.Spin },
null,
typeof(Icon)
);
} }
internal class LocaleExtension(LocaleKeys key) : MarkupExtension internal class LocaleExtension(LocaleKeys key) : BasicMarkupExtension<string>
{ {
private ClrPropertyInfo PropertyInfo protected override string GetValue() => LocaleManager.Instance[key];
=> new(
"Item", protected override void ConfigureBindingExtension(CompiledBindingExtension bindingExtension)
_ => LocaleManager.Instance[key], => bindingExtension.Source = LocaleManager.Instance;
null,
typeof(string)
);
public override object ProvideValue(IServiceProvider serviceProvider) =>
new CompiledBindingExtension(
new CompiledBindingPathBuilder()
.Property(PropertyInfo, PropertyInfoAccessorFactory.CreateInpcPropertyAccessor)
.Build()
) { Source = LocaleManager.Instance }
.ProvideValue(serviceProvider);
} }
} }

View File

@@ -23,21 +23,15 @@ namespace Ryujinx.Ava.Input
public bool IsConnected => true; public bool IsConnected => true;
public GamepadFeaturesFlag Features => GamepadFeaturesFlag.None; public GamepadFeaturesFlag Features => GamepadFeaturesFlag.None;
private class ButtonMappingEntry private class ButtonMappingEntry(GamepadButtonInputId to, Key from)
{ {
public readonly Key From; public readonly GamepadButtonInputId To = to;
public readonly GamepadButtonInputId To; public readonly Key From = from;
public ButtonMappingEntry(GamepadButtonInputId to, Key from)
{
To = to;
From = from;
}
} }
public AvaloniaKeyboard(AvaloniaKeyboardDriver driver, string id, string name) public AvaloniaKeyboard(AvaloniaKeyboardDriver driver, string id, string name)
{ {
_buttonsUserMapping = new List<ButtonMappingEntry>(); _buttonsUserMapping = [];
_driver = driver; _driver = driver;
Id = id; Id = id;

View File

@@ -100,7 +100,7 @@ namespace Ryujinx.Ava
// Delete backup files after updating. // Delete backup files after updating.
Task.Run(Updater.CleanupUpdate); Task.Run(Updater.CleanupUpdate);
Console.Title = $"Ryujinx Console {Version}"; Console.Title = $"{App.FullAppName} Console {Version}";
// Hook unhandled exception and process exit events. // Hook unhandled exception and process exit events.
AppDomain.CurrentDomain.UnhandledException += (sender, e) AppDomain.CurrentDomain.UnhandledException += (sender, e)

View File

@@ -14,7 +14,7 @@
</PropertyGroup> </PropertyGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$([MSBuild]::IsOSPlatform('OSX'))"> <Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$([MSBuild]::IsOSPlatform('OSX'))">
<Exec Command="codesign --entitlements '$(ProjectDir)..\..\distribution\macos\entitlements.xml' -f --deep -s $(SigningCertificate) '$(TargetDir)$(TargetName)'" /> <Exec Command="codesign --entitlements '$(ProjectDir)..\..\distribution\macos\entitlements.xml' -f -s $(SigningCertificate) '$(TargetDir)$(TargetName)'" />
</Target> </Target>
<PropertyGroup Condition="'$(RuntimeIdentifier)' != ''"> <PropertyGroup Condition="'$(RuntimeIdentifier)' != ''">

View File

@@ -127,11 +127,11 @@ namespace Ryujinx.Ava.UI.Applet
try try
{ {
_parent.ViewModel.AppHost.NpadManager.BlockInputUpdates(); _parent.ViewModel.AppHost.NpadManager.BlockInputUpdates();
var response = await SwkbdAppletDialog.ShowInputDialog(LocaleManager.Instance[LocaleKeys.SoftwareKeyboard], args); (UserResult result, string userInput) = await SwkbdAppletDialog.ShowInputDialog(LocaleManager.Instance[LocaleKeys.SoftwareKeyboard], args);
if (response.Result == UserResult.Ok) if (result == UserResult.Ok)
{ {
inputText = response.Input; inputText = userInput;
okPressed = true; okPressed = true;
} }
} }

View File

@@ -226,6 +226,24 @@ namespace Ryujinx.Ava.UI.Helpers
(int)Symbol.Help, (int)Symbol.Help,
primaryButtonResult); primaryButtonResult);
internal static async Task<UserResult> CreateDeniableConfirmationDialog(
string primaryText,
string secondaryText,
string acceptButtonText,
string noAcceptButtonText,
string cancelButtonText,
string title,
UserResult primaryButtonResult = UserResult.Yes)
=> await ShowTextDialog(
string.IsNullOrWhiteSpace(title) ? LocaleManager.Instance[LocaleKeys.DialogConfirmationTitle] : title,
primaryText,
secondaryText,
acceptButtonText,
noAcceptButtonText,
cancelButtonText,
(int)Symbol.Help,
primaryButtonResult);
internal static async Task<UserResult> CreateLocalizedConfirmationDialog(string primaryText, string secondaryText) internal static async Task<UserResult> CreateLocalizedConfirmationDialog(string primaryText, string secondaryText)
=> await CreateConfirmationDialog( => await CreateConfirmationDialog(
primaryText, primaryText,

View File

@@ -44,6 +44,7 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
private readonly MainWindow _mainWindow; private readonly MainWindow _mainWindow;
private PlayerIndex _playerId; private PlayerIndex _playerId;
private PlayerIndex _playerIdChoose;
private int _controller; private int _controller;
private string _controllerImage; private string _controllerImage;
private int _device; private int _device;
@@ -83,6 +84,12 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
} }
} }
public PlayerIndex PlayerIdChoose
{
get => _playerIdChoose;
set { }
}
public PlayerIndex PlayerId public PlayerIndex PlayerId
{ {
get => _playerId; get => _playerId;
@@ -90,6 +97,8 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
{ {
if (IsModified) if (IsModified)
{ {
_playerIdChoose = value;
return; return;
} }
@@ -99,7 +108,9 @@ namespace Ryujinx.Ava.UI.ViewModels.Input
if (!Enum.IsDefined(typeof(PlayerIndex), _playerId)) if (!Enum.IsDefined(typeof(PlayerIndex), _playerId))
{ {
_playerId = PlayerIndex.Player1; _playerId = PlayerIndex.Player1;
} }
_isLoaded = false;
LoadConfiguration(); LoadConfiguration();
LoadDevice(); LoadDevice();

View File

@@ -802,6 +802,11 @@ namespace Ryujinx.Ava.UI.ViewModels
{ {
get => FileAssociationHelper.IsTypeAssociationSupported; get => FileAssociationHelper.IsTypeAssociationSupported;
} }
public bool AreMimeTypesRegistered
{
get => FileAssociationHelper.AreMimeTypesRegistered;
}
public ObservableCollectionExtended<ApplicationData> Applications public ObservableCollectionExtended<ApplicationData> Applications
{ {

View File

@@ -4,11 +4,14 @@ using Avalonia.Controls.Primitives;
using Avalonia.Input; using Avalonia.Input;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using Avalonia.LogicalTree; using Avalonia.LogicalTree;
using DiscordRPC;
using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels.Input; using Ryujinx.Ava.UI.ViewModels.Input;
using Ryujinx.Common.Configuration.Hid.Controller; using Ryujinx.Common.Configuration.Hid.Controller;
using Ryujinx.Common.Logging;
using Ryujinx.Input; using Ryujinx.Input;
using Ryujinx.Input.Assigner; using Ryujinx.Input.Assigner;
using System;
using StickInputId = Ryujinx.Common.Configuration.Hid.Controller.StickInputId; using StickInputId = Ryujinx.Common.Configuration.Hid.Controller.StickInputId;
namespace Ryujinx.Ava.UI.Views.Input namespace Ryujinx.Ava.UI.Views.Input
@@ -23,9 +26,17 @@ namespace Ryujinx.Ava.UI.Views.Input
foreach (ILogical visual in SettingButtons.GetLogicalDescendants()) foreach (ILogical visual in SettingButtons.GetLogicalDescendants())
{ {
if (visual is ToggleButton button and not CheckBox) switch (visual)
{ {
button.IsCheckedChanged += Button_IsCheckedChanged; case ToggleButton button and not CheckBox:
button.IsCheckedChanged += Button_IsCheckedChanged;
break;
case CheckBox check:
check.IsCheckedChanged += CheckBox_IsCheckedChanged;
break;
case Slider slider:
slider.PropertyChanged += Slider_ValueChanged;
break;
} }
} }
} }
@@ -34,17 +45,49 @@ namespace Ryujinx.Ava.UI.Views.Input
{ {
base.OnPointerReleased(e); base.OnPointerReleased(e);
if (_currentAssigner != null && _currentAssigner.ToggledButton != null && !_currentAssigner.ToggledButton.IsPointerOver) if (_currentAssigner is { ToggledButton.IsPointerOver: false })
{ {
_currentAssigner.Cancel(); _currentAssigner.Cancel();
} }
} }
private float _changeSlider = float.NaN;
private void Slider_ValueChanged(object sender, AvaloniaPropertyChangedEventArgs e)
{
if (sender is Slider check)
{
_changeSlider = check.IsPointerOver switch
{
true when float.IsNaN(_changeSlider) => (float)check.Value,
false => float.NaN,
_ => _changeSlider
};
if (!float.IsNaN(_changeSlider) && _changeSlider != (float)check.Value)
{
(DataContext as ControllerInputViewModel)!.ParentModel.IsModified = true;
_changeSlider = (float)check.Value;
}
}
}
private void CheckBox_IsCheckedChanged(object sender, RoutedEventArgs e)
{
if (sender is CheckBox { IsPointerOver: true })
{
(DataContext as ControllerInputViewModel)!.ParentModel.IsModified = true;
_currentAssigner?.Cancel();
_currentAssigner = null;
}
}
private void Button_IsCheckedChanged(object sender, RoutedEventArgs e) private void Button_IsCheckedChanged(object sender, RoutedEventArgs e)
{ {
if (sender is ToggleButton button) if (sender is ToggleButton button)
{ {
if ((bool)button.IsChecked) if (button.IsChecked is true)
{ {
if (_currentAssigner != null && button == _currentAssigner.ToggledButton) if (_currentAssigner != null && button == _currentAssigner.ToggledButton)
{ {

View File

@@ -108,7 +108,7 @@
ToolTip.Tip="{ext:Locale ControllerSettingsLoadProfileToolTip}" ToolTip.Tip="{ext:Locale ControllerSettingsLoadProfileToolTip}"
Command="{Binding LoadProfile}"> Command="{Binding LoadProfile}">
<ui:SymbolIcon <ui:SymbolIcon
Symbol="Upload" Symbol="View"
FontSize="15" FontSize="15"
Height="20" /> Height="20" />
</Button> </Button>

View File

@@ -25,17 +25,27 @@ namespace Ryujinx.Ava.UI.Views.Input
private async void PlayerIndexBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e) private async void PlayerIndexBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{ {
if (PlayerIndexBox != null)
{
if (PlayerIndexBox.SelectedIndex != (int)ViewModel.PlayerId)
{
PlayerIndexBox.SelectedIndex = (int)ViewModel.PlayerId;
}
}
if (ViewModel.IsModified && !_dialogOpen) if (ViewModel.IsModified && !_dialogOpen)
{ {
_dialogOpen = true; _dialogOpen = true;
var result = await ContentDialogHelper.CreateConfirmationDialog( var result = await ContentDialogHelper.CreateDeniableConfirmationDialog(
LocaleManager.Instance[LocaleKeys.DialogControllerSettingsModifiedConfirmMessage], LocaleManager.Instance[LocaleKeys.DialogControllerSettingsModifiedConfirmMessage],
LocaleManager.Instance[LocaleKeys.DialogControllerSettingsModifiedConfirmSubMessage], LocaleManager.Instance[LocaleKeys.DialogControllerSettingsModifiedConfirmSubMessage],
LocaleManager.Instance[LocaleKeys.InputDialogYes], LocaleManager.Instance[LocaleKeys.InputDialogYes],
LocaleManager.Instance[LocaleKeys.InputDialogNo], LocaleManager.Instance[LocaleKeys.InputDialogNo],
LocaleManager.Instance[LocaleKeys.Cancel],
LocaleManager.Instance[LocaleKeys.RyujinxConfirm]); LocaleManager.Instance[LocaleKeys.RyujinxConfirm]);
if (result == UserResult.Yes) if (result == UserResult.Yes)
{ {
ViewModel.Save(); ViewModel.Save();
@@ -43,14 +53,21 @@ namespace Ryujinx.Ava.UI.Views.Input
_dialogOpen = false; _dialogOpen = false;
ViewModel.IsModified = false; if (result == UserResult.Cancel)
if (e.AddedItems.Count > 0)
{ {
var player = (PlayerModel)e.AddedItems[0]; if (e.AddedItems.Count > 0)
ViewModel.PlayerId = player.Id; {
ViewModel.IsModified = true;
ViewModel.PlayerId = ((PlayerModel)e.AddedItems[0])!.Id;
}
return;
} }
ViewModel.PlayerId = ViewModel.PlayerIdChoose;
ViewModel.IsModified = false;
} }
} }
public void Dispose() public void Dispose()

View File

@@ -33,7 +33,7 @@ namespace Ryujinx.Ava.UI.Views.Input
{ {
base.OnPointerReleased(e); base.OnPointerReleased(e);
if (_currentAssigner != null && _currentAssigner.ToggledButton != null && !_currentAssigner.ToggledButton.IsPointerOver) if (_currentAssigner is { ToggledButton.IsPointerOver: false })
{ {
_currentAssigner.Cancel(); _currentAssigner.Cancel();
} }
@@ -41,143 +41,146 @@ namespace Ryujinx.Ava.UI.Views.Input
private void Button_IsCheckedChanged(object sender, RoutedEventArgs e) private void Button_IsCheckedChanged(object sender, RoutedEventArgs e)
{ {
if (sender is ToggleButton button) if (sender is not ToggleButton button)
return;
if (button.IsChecked is true)
{ {
if ((bool)button.IsChecked) if (_currentAssigner != null && button == _currentAssigner.ToggledButton)
{ {
if (_currentAssigner != null && button == _currentAssigner.ToggledButton) return;
{ }
if (_currentAssigner == null)
{
_currentAssigner = new ButtonKeyAssigner(button);
Focus(NavigationMethod.Pointer);
PointerPressed += MouseClick;
if (DataContext is not KeyboardInputViewModel viewModel)
return; return;
}
if (_currentAssigner == null) IKeyboard keyboard =
(IKeyboard)viewModel.ParentModel.AvaloniaKeyboardDriver.GetGamepad("0"); // Open Avalonia keyboard for cancel operations.
IButtonAssigner assigner =
new KeyboardKeyAssigner((IKeyboard)viewModel.ParentModel.SelectedGamepad);
_currentAssigner.ButtonAssigned += (_, e) =>
{ {
_currentAssigner = new ButtonKeyAssigner(button); if (e.ButtonValue.HasValue)
Focus(NavigationMethod.Pointer);
PointerPressed += MouseClick;
var viewModel = (DataContext as KeyboardInputViewModel);
IKeyboard keyboard = (IKeyboard)viewModel.ParentModel.AvaloniaKeyboardDriver.GetGamepad("0"); // Open Avalonia keyboard for cancel operations.
IButtonAssigner assigner = CreateButtonAssigner();
_currentAssigner.ButtonAssigned += (sender, e) =>
{ {
if (e.ButtonValue.HasValue) var buttonValue = e.ButtonValue.Value;
viewModel.ParentModel.IsModified = true;
switch (button.Name)
{ {
var buttonValue = e.ButtonValue.Value; case "ButtonZl":
viewModel.ParentModel.IsModified = true; viewModel.Config.ButtonZl = buttonValue.AsHidType<Key>();
break;
switch (button.Name) case "ButtonL":
{ viewModel.Config.ButtonL = buttonValue.AsHidType<Key>();
case "ButtonZl": break;
viewModel.Config.ButtonZl = buttonValue.AsHidType<Key>(); case "ButtonMinus":
break; viewModel.Config.ButtonMinus = buttonValue.AsHidType<Key>();
case "ButtonL": break;
viewModel.Config.ButtonL = buttonValue.AsHidType<Key>(); case "LeftStickButton":
break; viewModel.Config.LeftStickButton = buttonValue.AsHidType<Key>();
case "ButtonMinus": break;
viewModel.Config.ButtonMinus = buttonValue.AsHidType<Key>(); case "LeftStickUp":
break; viewModel.Config.LeftStickUp = buttonValue.AsHidType<Key>();
case "LeftStickButton": break;
viewModel.Config.LeftStickButton = buttonValue.AsHidType<Key>(); case "LeftStickDown":
break; viewModel.Config.LeftStickDown = buttonValue.AsHidType<Key>();
case "LeftStickUp": break;
viewModel.Config.LeftStickUp = buttonValue.AsHidType<Key>(); case "LeftStickRight":
break; viewModel.Config.LeftStickRight = buttonValue.AsHidType<Key>();
case "LeftStickDown": break;
viewModel.Config.LeftStickDown = buttonValue.AsHidType<Key>(); case "LeftStickLeft":
break; viewModel.Config.LeftStickLeft = buttonValue.AsHidType<Key>();
case "LeftStickRight": break;
viewModel.Config.LeftStickRight = buttonValue.AsHidType<Key>(); case "DpadUp":
break; viewModel.Config.DpadUp = buttonValue.AsHidType<Key>();
case "LeftStickLeft": break;
viewModel.Config.LeftStickLeft = buttonValue.AsHidType<Key>(); case "DpadDown":
break; viewModel.Config.DpadDown = buttonValue.AsHidType<Key>();
case "DpadUp": break;
viewModel.Config.DpadUp = buttonValue.AsHidType<Key>(); case "DpadLeft":
break; viewModel.Config.DpadLeft = buttonValue.AsHidType<Key>();
case "DpadDown": break;
viewModel.Config.DpadDown = buttonValue.AsHidType<Key>(); case "DpadRight":
break; viewModel.Config.DpadRight = buttonValue.AsHidType<Key>();
case "DpadLeft": break;
viewModel.Config.DpadLeft = buttonValue.AsHidType<Key>(); case "LeftButtonSr":
break; viewModel.Config.LeftButtonSr = buttonValue.AsHidType<Key>();
case "DpadRight": break;
viewModel.Config.DpadRight = buttonValue.AsHidType<Key>(); case "LeftButtonSl":
break; viewModel.Config.LeftButtonSl = buttonValue.AsHidType<Key>();
case "LeftButtonSr": break;
viewModel.Config.LeftButtonSr = buttonValue.AsHidType<Key>(); case "RightButtonSr":
break; viewModel.Config.RightButtonSr = buttonValue.AsHidType<Key>();
case "LeftButtonSl": break;
viewModel.Config.LeftButtonSl = buttonValue.AsHidType<Key>(); case "RightButtonSl":
break; viewModel.Config.RightButtonSl = buttonValue.AsHidType<Key>();
case "RightButtonSr": break;
viewModel.Config.RightButtonSr = buttonValue.AsHidType<Key>(); case "ButtonZr":
break; viewModel.Config.ButtonZr = buttonValue.AsHidType<Key>();
case "RightButtonSl": break;
viewModel.Config.RightButtonSl = buttonValue.AsHidType<Key>(); case "ButtonR":
break; viewModel.Config.ButtonR = buttonValue.AsHidType<Key>();
case "ButtonZr": break;
viewModel.Config.ButtonZr = buttonValue.AsHidType<Key>(); case "ButtonPlus":
break; viewModel.Config.ButtonPlus = buttonValue.AsHidType<Key>();
case "ButtonR": break;
viewModel.Config.ButtonR = buttonValue.AsHidType<Key>(); case "ButtonA":
break; viewModel.Config.ButtonA = buttonValue.AsHidType<Key>();
case "ButtonPlus": break;
viewModel.Config.ButtonPlus = buttonValue.AsHidType<Key>(); case "ButtonB":
break; viewModel.Config.ButtonB = buttonValue.AsHidType<Key>();
case "ButtonA": break;
viewModel.Config.ButtonA = buttonValue.AsHidType<Key>(); case "ButtonX":
break; viewModel.Config.ButtonX = buttonValue.AsHidType<Key>();
case "ButtonB": break;
viewModel.Config.ButtonB = buttonValue.AsHidType<Key>(); case "ButtonY":
break; viewModel.Config.ButtonY = buttonValue.AsHidType<Key>();
case "ButtonX": break;
viewModel.Config.ButtonX = buttonValue.AsHidType<Key>(); case "RightStickButton":
break; viewModel.Config.RightStickButton = buttonValue.AsHidType<Key>();
case "ButtonY": break;
viewModel.Config.ButtonY = buttonValue.AsHidType<Key>(); case "RightStickUp":
break; viewModel.Config.RightStickUp = buttonValue.AsHidType<Key>();
case "RightStickButton": break;
viewModel.Config.RightStickButton = buttonValue.AsHidType<Key>(); case "RightStickDown":
break; viewModel.Config.RightStickDown = buttonValue.AsHidType<Key>();
case "RightStickUp": break;
viewModel.Config.RightStickUp = buttonValue.AsHidType<Key>(); case "RightStickRight":
break; viewModel.Config.RightStickRight = buttonValue.AsHidType<Key>();
case "RightStickDown": break;
viewModel.Config.RightStickDown = buttonValue.AsHidType<Key>(); case "RightStickLeft":
break; viewModel.Config.RightStickLeft = buttonValue.AsHidType<Key>();
case "RightStickRight": break;
viewModel.Config.RightStickRight = buttonValue.AsHidType<Key>();
break;
case "RightStickLeft":
viewModel.Config.RightStickLeft = buttonValue.AsHidType<Key>();
break;
}
} }
};
_currentAssigner.GetInputAndAssign(assigner, keyboard);
}
else
{
if (_currentAssigner != null)
{
_currentAssigner.Cancel();
_currentAssigner = null;
button.IsChecked = false;
} }
} };
_currentAssigner.GetInputAndAssign(assigner, keyboard);
} }
else else
{ {
_currentAssigner?.Cancel(); if (_currentAssigner != null)
_currentAssigner = null; {
_currentAssigner.Cancel();
_currentAssigner = null;
button.IsChecked = false;
}
} }
} }
else
{
_currentAssigner?.Cancel();
_currentAssigner = null;
}
} }
private void MouseClick(object sender, PointerPressedEventArgs e) private void MouseClick(object sender, PointerPressedEventArgs e)
@@ -189,15 +192,6 @@ namespace Ryujinx.Ava.UI.Views.Input
PointerPressed -= MouseClick; PointerPressed -= MouseClick;
} }
private IButtonAssigner CreateButtonAssigner()
{
IButtonAssigner assigner;
assigner = new KeyboardKeyAssigner((IKeyboard)(DataContext as KeyboardInputViewModel).ParentModel.SelectedGamepad);
return assigner;
}
protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e) protected override void OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs e)
{ {
base.OnDetachedFromVisualTree(e); base.OnDetachedFromVisualTree(e);

View File

@@ -4,8 +4,10 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ext="clr-namespace:Ryujinx.Ava.Common.Markup" xmlns:ext="clr-namespace:Ryujinx.Ava.Common.Markup"
xmlns:uih="clr-namespace:Ryujinx.UI.Common.Helper"
mc:Ignorable="d" mc:Ignorable="d"
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
xmlns:helper="clr-namespace:Ryujinx.UI.Common.Helper;assembly=Ryujinx.UI.Common"
x:DataType="viewModels:MainWindowViewModel" x:DataType="viewModels:MainWindowViewModel"
x:Class="Ryujinx.Ava.UI.Views.Main.MainMenuBarView"> x:Class="Ryujinx.Ava.UI.Views.Main.MainMenuBarView">
<Design.DataContext> <Design.DataContext>
@@ -265,16 +267,16 @@
<MenuItem Command="{Binding InstallFirmwareFromFolder}" Header="{ext:Locale MenuBarFileToolsInstallFirmwareFromDirectory}" Icon="{ext:Icon mdi-folder-cog}" /> <MenuItem Command="{Binding InstallFirmwareFromFolder}" Header="{ext:Locale MenuBarFileToolsInstallFirmwareFromDirectory}" Icon="{ext:Icon mdi-folder-cog}" />
</MenuItem> </MenuItem>
<MenuItem Header="{ext:Locale MenuBarToolsManageFileTypes}" IsVisible="{Binding ManageFileTypesVisible}"> <MenuItem Header="{ext:Locale MenuBarToolsManageFileTypes}" IsVisible="{Binding ManageFileTypesVisible}">
<MenuItem Header="{ext:Locale MenuBarToolsInstallFileTypes}" Click="InstallFileTypes_Click"/> <MenuItem Header="{ext:Locale MenuBarToolsInstallFileTypes}" Click="InstallFileTypes_Click" IsEnabled="{Binding AreMimeTypesRegistered, Converter={x:Static BoolConverters.Not}}" />
<MenuItem Header="{ext:Locale MenuBarToolsUninstallFileTypes}" Click="UninstallFileTypes_Click"/> <MenuItem Header="{ext:Locale MenuBarToolsUninstallFileTypes}" Click="UninstallFileTypes_Click" IsEnabled="{Binding AreMimeTypesRegistered}" />
</MenuItem> </MenuItem>
<Separator /> <Separator />
<MenuItem Header="{ext:Locale MenuBarToolsXCITrimmer}" Click="OpenXCITrimmerWindow" Icon="{ext:Icon fa-solid fa-scissors}" /> <MenuItem Header="{ext:Locale MenuBarToolsXCITrimmer}" IsEnabled="{Binding EnableNonGameRunningControls}" Click="OpenXCITrimmerWindow" Icon="{ext:Icon fa-solid fa-scissors}" />
</MenuItem> </MenuItem>
<MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarView}"> <MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarView}">
<MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarViewWindow}"> <MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarViewWindow}">
<MenuItem Header="{ext:Locale MenuBarViewWindow720}" Tag="720 1280" Click="ChangeWindowSize_Click" /> <MenuItem Header="{ext:Locale MenuBarViewWindow720}" Tag="1280 720" Click="ChangeWindowSize_Click" />
<MenuItem Header="{ext:Locale MenuBarViewWindow1080}" Tag="1080 1920" Click="ChangeWindowSize_Click" /> <MenuItem Header="{ext:Locale MenuBarViewWindow1080}" Tag="1920 1080" Click="ChangeWindowSize_Click" />
</MenuItem> </MenuItem>
</MenuItem> </MenuItem>
<MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarHelp}"> <MenuItem VerticalAlignment="Center" Header="{ext:Locale MenuBarHelp}">

View File

@@ -184,8 +184,10 @@ namespace Ryujinx.Ava.UI.Views.Main
if (sender is not MenuItem { Tag: string resolution }) if (sender is not MenuItem { Tag: string resolution })
return; return;
(int height, int width) = resolution.Split(' ') (int width, int height) = resolution.Split(' ', 2)
.Into(parts => (int.Parse(parts[0]), int.Parse(parts[1]))); .Into(parts =>
(int.Parse(parts[0]), int.Parse(parts[1]))
);
await Dispatcher.UIThread.InvokeAsync(() => await Dispatcher.UIThread.InvokeAsync(() =>
{ {
@@ -200,7 +202,7 @@ namespace Ryujinx.Ava.UI.Views.Main
public async void CheckForUpdates(object sender, RoutedEventArgs e) public async void CheckForUpdates(object sender, RoutedEventArgs e)
{ {
if (Updater.CanUpdate(true)) if (Updater.CanUpdate(true))
await Updater.BeginParse(Window, true); await Window.BeginUpdateAsync(true);
} }
public async void OpenXCITrimmerWindow(object sender, RoutedEventArgs e) => await XCITrimmerWindow.Show(ViewModel); public async void OpenXCITrimmerWindow(object sender, RoutedEventArgs e) => await XCITrimmerWindow.Show(ViewModel);

View File

@@ -33,7 +33,7 @@ namespace Ryujinx.Ava.UI.Views.Main
LocaleManager.Instance.LocaleChanged += () => Dispatcher.UIThread.Post(() => LocaleManager.Instance.LocaleChanged += () => Dispatcher.UIThread.Post(() =>
{ {
if (Window.ViewModel.EnableNonGameRunningControls) if (Window.ViewModel.EnableNonGameRunningControls)
Refresh_OnClick(null, null); Window.LoadApplications();
}); });
} }
} }

View File

@@ -63,8 +63,7 @@ namespace Ryujinx.Ava.UI.Views.User
private async void Import_OnClick(object sender, RoutedEventArgs e) private async void Import_OnClick(object sender, RoutedEventArgs e)
{ {
var window = this.GetVisualRoot() as Window; var result = await ((Window)this.GetVisualRoot()!).StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
var result = await window.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
{ {
AllowMultiple = false, AllowMultiple = false,
FileTypeFilter = new List<FilePickerFileType> FileTypeFilter = new List<FilePickerFileType>

View File

@@ -75,7 +75,7 @@ namespace Ryujinx.Ava.UI.Windows
string parentPath = currentCheatFile.Replace(titleModsPath, string.Empty); string parentPath = currentCheatFile.Replace(titleModsPath, string.Empty);
buildId = Path.GetFileNameWithoutExtension(currentCheatFile).ToUpper(); buildId = Path.GetFileNameWithoutExtension(currentCheatFile).ToUpper();
currentGroup = new CheatNode("", buildId, parentPath, true); currentGroup = new CheatNode(string.Empty, buildId, parentPath, true);
LoadedCheats.Add(currentGroup); LoadedCheats.Add(currentGroup);
} }

View File

@@ -28,6 +28,7 @@ using Ryujinx.UI.Common.Configuration;
using Ryujinx.UI.Common.Helper; using Ryujinx.UI.Common.Helper;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Reactive.Linq; using System.Reactive.Linq;
using System.Runtime.Versioning; using System.Runtime.Versioning;
using System.Threading; using System.Threading;
@@ -349,12 +350,12 @@ namespace Ryujinx.Ava.UI.Windows
await Dispatcher.UIThread.InvokeAsync(async () => await UserErrorDialog.ShowUserErrorDialog(UserError.NoKeys)); await Dispatcher.UIThread.InvokeAsync(async () => await UserErrorDialog.ShowUserErrorDialog(UserError.NoKeys));
} }
if (ConfigurationState.Instance.CheckUpdatesOnStart && Updater.CanUpdate(false)) if (ConfigurationState.Instance.CheckUpdatesOnStart && Updater.CanUpdate())
{ {
await Updater.BeginParse(this, false).ContinueWith(task => await this.BeginUpdateAsync()
{ .ContinueWith(
Logger.Error?.Print(LogClass.Application, $"Updater Error: {task.Exception}"); task => Logger.Error?.Print(LogClass.Application, $"Updater Error: {task.Exception}"),
}, TaskContinuationOptions.OnlyOnFaulted); TaskContinuationOptions.OnlyOnFaulted);
} }
} }
@@ -392,30 +393,17 @@ namespace Ryujinx.Ava.UI.Windows
ViewModel.WindowState = ConfigurationState.Instance.UI.WindowStartup.WindowMaximized.Value ? WindowState.Maximized : WindowState.Normal; ViewModel.WindowState = ConfigurationState.Instance.UI.WindowStartup.WindowMaximized.Value ? WindowState.Maximized : WindowState.Normal;
if (CheckScreenBounds(savedPoint)) if (Screens.All.Any(screen => screen.Bounds.Contains(savedPoint)))
{ {
Position = savedPoint; Position = savedPoint;
} }
else else
{ {
Logger.Warning?.Print(LogClass.Application, "Failed to find valid start-up coordinates. Defaulting to primary monitor center.");
WindowStartupLocation = WindowStartupLocation.CenterScreen; WindowStartupLocation = WindowStartupLocation.CenterScreen;
} }
} }
private bool CheckScreenBounds(PixelPoint configPoint)
{
for (int i = 0; i < Screens.ScreenCount; i++)
{
if (Screens.All[i].Bounds.Contains(configPoint))
{
return true;
}
}
Logger.Warning?.Print(LogClass.Application, "Failed to find valid start-up coordinates. Defaulting to primary monitor center.");
return false;
}
private void SaveWindowSizePosition() private void SaveWindowSizePosition()
{ {
ConfigurationState.Instance.UI.WindowStartup.WindowMaximized.Value = WindowState == WindowState.Maximized; ConfigurationState.Instance.UI.WindowStartup.WindowMaximized.Value = WindowState == WindowState.Maximized;
@@ -507,8 +495,7 @@ namespace Ryujinx.Ava.UI.Windows
private void VolumeStatus_CheckedChanged(object sender, RoutedEventArgs e) private void VolumeStatus_CheckedChanged(object sender, RoutedEventArgs e)
{ {
var volumeSplitButton = sender as ToggleSplitButton; if (ViewModel.IsGameRunning && sender is ToggleSplitButton volumeSplitButton)
if (ViewModel.IsGameRunning)
{ {
if (!volumeSplitButton.IsChecked) if (!volumeSplitButton.IsChecked)
{ {

View File

@@ -32,9 +32,9 @@ namespace Ryujinx.Ava.UI.Windows
{ {
ContentDialog contentDialog = new() ContentDialog contentDialog = new()
{ {
PrimaryButtonText = "", PrimaryButtonText = string.Empty,
SecondaryButtonText = "", SecondaryButtonText = string.Empty,
CloseButtonText = "", CloseButtonText = string.Empty,
Content = new XCITrimmerWindow(mainWindowViewModel), Content = new XCITrimmerWindow(mainWindowViewModel),
Title = string.Format(LocaleManager.Instance[LocaleKeys.XCITrimmerWindowTitle]), Title = string.Format(LocaleManager.Instance[LocaleKeys.XCITrimmerWindowTitle]),
}; };

View File

@@ -32,6 +32,9 @@ namespace Ryujinx.Ava
internal static class Updater internal static class Updater
{ {
private const string GitHubApiUrl = "https://api.github.com"; private const string GitHubApiUrl = "https://api.github.com";
private const string LatestReleaseUrl =
$"{GitHubApiUrl}/repos/{ReleaseInformation.ReleaseChannelOwner}/{ReleaseInformation.ReleaseChannelRepo}/releases/latest";
private static readonly GithubReleasesJsonSerializerContext _serializerContext = new(JsonHelper.GetDefaultSerializerOptions()); private static readonly GithubReleasesJsonSerializerContext _serializerContext = new(JsonHelper.GetDefaultSerializerOptions());
private static readonly string _homeDir = AppDomain.CurrentDomain.BaseDirectory; private static readonly string _homeDir = AppDomain.CurrentDomain.BaseDirectory;
@@ -46,9 +49,9 @@ namespace Ryujinx.Ava
private static bool _updateSuccessful; private static bool _updateSuccessful;
private static bool _running; private static bool _running;
private static readonly string[] _windowsDependencyDirs = Array.Empty<string>(); private static readonly string[] _windowsDependencyDirs = [];
public static async Task BeginParse(Window mainWindow, bool showVersionUpToDate) public static async Task BeginUpdateAsync(this Window mainWindow, bool showVersionUpToDate = false)
{ {
if (_running) if (_running)
{ {
@@ -81,7 +84,7 @@ namespace Ryujinx.Ava
} }
catch catch
{ {
Logger.Error?.Print(LogClass.Application, "Failed to convert the current Ryujinx version!"); Logger.Error?.Print(LogClass.Application, $"Failed to convert the current {App.FullAppName} version!");
await ContentDialogHelper.CreateWarningDialog( await ContentDialogHelper.CreateWarningDialog(
LocaleManager.Instance[LocaleKeys.DialogUpdaterConvertFailedMessage], LocaleManager.Instance[LocaleKeys.DialogUpdaterConvertFailedMessage],
@@ -96,11 +99,10 @@ namespace Ryujinx.Ava
try try
{ {
using HttpClient jsonClient = ConstructHttpClient(); using HttpClient jsonClient = ConstructHttpClient();
string buildInfoUrl = $"{GitHubApiUrl}/repos/{ReleaseInformation.ReleaseChannelOwner}/{ReleaseInformation.ReleaseChannelRepo}/releases/latest"; string fetchedJson = await jsonClient.GetStringAsync(LatestReleaseUrl);
string fetchedJson = await jsonClient.GetStringAsync(buildInfoUrl);
var fetched = JsonHelper.Deserialize(fetchedJson, _serializerContext.GithubReleasesJsonResponse); var fetched = JsonHelper.Deserialize(fetchedJson, _serializerContext.GithubReleasesJsonResponse);
_buildVer = fetched.Name; _buildVer = fetched.TagName;
foreach (var asset in fetched.Assets) foreach (var asset in fetched.Assets)
{ {
@@ -159,7 +161,7 @@ namespace Ryujinx.Ava
} }
catch catch
{ {
Logger.Error?.Print(LogClass.Application, "Failed to convert the received Ryujinx version from Github!"); Logger.Error?.Print(LogClass.Application, $"Failed to convert the received {App.FullAppName} version from GitHub!");
await ContentDialogHelper.CreateWarningDialog( await ContentDialogHelper.CreateWarningDialog(
LocaleManager.Instance[LocaleKeys.DialogUpdaterConvertFailedGithubMessage], LocaleManager.Instance[LocaleKeys.DialogUpdaterConvertFailedGithubMessage],
@@ -636,7 +638,7 @@ namespace Ryujinx.Ava
taskDialog.Hide(); taskDialog.Hide();
} }
public static bool CanUpdate(bool showWarnings) public static bool CanUpdate(bool showWarnings = false)
{ {
#if !DISABLE_UPDATER #if !DISABLE_UPDATER
if (!NetworkInterface.GetIsNetworkAvailable()) if (!NetworkInterface.GetIsNetworkAvailable())