Merge branch 'master' into mmdurrant/texture-tests

This commit is contained in:
mmdurrant 2023-10-30 22:23:07 -06:00 committed by GitHub
commit fd40bd064e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
631 changed files with 26187 additions and 7698 deletions

View file

@ -14,6 +14,13 @@ tab_width = 4
end_of_line = lf end_of_line = lf
insert_final_newline = true insert_final_newline = true
# JSON files
[*.json]
# Indentation and spacing
indent_size = 2
tab_width = 2
# C# files # C# files
[*.cs] [*.cs]

18
.github/csc.json vendored Normal file
View file

@ -0,0 +1,18 @@
{
"problemMatcher": [
{
"owner": "csc",
"pattern": [
{
"regexp": "^((?:\\\\|/)(?:[^\\\\/:]+(?:\\\\|/))+[^\\\\/]+)\\((\\d+),(\\d+)\\):\\s+([a-zA-Z]+)\\s+([^:]+):\\s+([^[]+)\\s+\\[",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"code": 5,
"message": 6
}
]
}
]
}

View file

@ -29,4 +29,4 @@ infra:
- TSRBerry - TSRBerry
default: default:
- marysaka - '@developers'

View file

@ -1,79 +0,0 @@
from pathlib import Path
from typing import List, Set
from github import Github
from github.Repository import Repository
from github.GithubException import GithubException
import sys
import yaml
def add_reviewers(
reviewers: Set[str], team_reviewers: Set[str], new_entries: List[str]
):
for reviewer in new_entries:
if reviewer.startswith("@"):
team_reviewers.add(reviewer[1:])
else:
reviewers.add(reviewer)
def update_reviewers(config, repo: Repository, pr_id: int) -> int:
pull_request = repo.get_pull(pr_id)
if not pull_request:
sys.stderr.writable(f"Unknown PR #{pr_id}\n")
return 1
pull_request_author = pull_request.user.login
reviewers = set()
team_reviewers = set()
for label in pull_request.labels:
if label.name in config:
add_reviewers(reviewers, team_reviewers, config[label.name])
if "default" in config:
add_reviewers(reviewers, team_reviewers, config["default"])
if pull_request_author in reviewers:
reviewers.remove(pull_request_author)
try:
reviewers = list(reviewers)
team_reviewers = list(team_reviewers)
print(
f"Attempting to assign reviewers ({reviewers}) and team_reviewers ({team_reviewers})"
)
pull_request.create_review_request(reviewers, team_reviewers)
return 0
except GithubException as e:
sys.stderr.write(f"Cannot assign review request for PR #{pr_id}: {e}\n")
return 1
if __name__ == "__main__":
if len(sys.argv) != 5:
sys.stderr.write("usage: <token> <repo_path> <pr_id> <config_path>\n")
sys.exit(1)
token = sys.argv[1]
repo_path = sys.argv[2]
pr_id = int(sys.argv[3])
config_path = Path(sys.argv[4])
g = Github(token)
repo = g.get_repo(repo_path)
if not repo:
sys.stderr.write("Repository not found!\n")
sys.exit(1)
if not config_path.exists():
sys.stderr.write(f'Config "{config_path}" not found!\n')
sys.exit(1)
with open(config_path, "r") as f:
config = yaml.safe_load(f)
sys.exit(update_reviewers(config, repo, pr_id))

View file

@ -3,10 +3,6 @@ name: Build job
on: on:
workflow_call: workflow_call:
concurrency:
group: pr-builds-${{ github.event.number }}
cancel-in-progress: true
env: env:
POWERSHELL_TELEMETRY_OPTOUT: 1 POWERSHELL_TELEMETRY_OPTOUT: 1
DOTNET_CLI_TELEMETRY_OPTOUT: 1 DOTNET_CLI_TELEMETRY_OPTOUT: 1
@ -39,12 +35,15 @@ jobs:
fail-fast: false fail-fast: false
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions/setup-dotnet@v3 - uses: actions/setup-dotnet@v3
with: with:
global-json-file: global.json global-json-file: global.json
- name: Overwrite csc problem matcher
run: echo "::add-matcher::.github/csc.json"
- name: Get git short hash - name: Get git short hash
id: git_short_hash id: git_short_hash
run: echo "result=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT run: echo "result=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT
@ -54,7 +53,11 @@ jobs:
run: dotnet build -c "${{ matrix.configuration }}" -p:Version="${{ env.RYUJINX_BASE_VERSION }}" -p:SourceRevisionId="${{ steps.git_short_hash.outputs.result }}" -p:ExtraDefineConstants=DISABLE_UPDATER run: dotnet build -c "${{ matrix.configuration }}" -p:Version="${{ env.RYUJINX_BASE_VERSION }}" -p:SourceRevisionId="${{ steps.git_short_hash.outputs.result }}" -p:ExtraDefineConstants=DISABLE_UPDATER
- name: Test - name: Test
run: dotnet test --no-build -c "${{ matrix.configuration }}" uses: TSRBerry/unstable-commands@v1
with:
commands: dotnet test --no-build -c "${{ matrix.configuration }}"
timeout-minutes: 10
retry-codes: 139
- name: Publish Ryujinx - name: Publish Ryujinx
run: dotnet publish -c "${{ matrix.configuration }}" -r "${{ matrix.DOTNET_RUNTIME_IDENTIFIER }}" -o ./publish -p:Version="${{ env.RYUJINX_BASE_VERSION }}" -p:DebugType=embedded -p:SourceRevisionId="${{ steps.git_short_hash.outputs.result }}" -p:ExtraDefineConstants=DISABLE_UPDATER src/Ryujinx --self-contained true run: dotnet publish -c "${{ matrix.configuration }}" -r "${{ matrix.DOTNET_RUNTIME_IDENTIFIER }}" -o ./publish -p:Version="${{ env.RYUJINX_BASE_VERSION }}" -p:DebugType=embedded -p:SourceRevisionId="${{ steps.git_short_hash.outputs.result }}" -p:ExtraDefineConstants=DISABLE_UPDATER src/Ryujinx --self-contained true
@ -105,7 +108,7 @@ jobs:
configuration: [ Debug, Release ] configuration: [ Debug, Release ]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions/setup-dotnet@v3 - uses: actions/setup-dotnet@v3
with: with:
@ -132,9 +135,13 @@ jobs:
id: git_short_hash id: git_short_hash
run: echo "result=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT run: echo "result=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT
- name: Publish macOS - name: Publish macOS Ryujinx.Ava
run: | run: |
./distribution/macos/create_macos_build.sh . publish_tmp publish_ava ./distribution/macos/entitlements.xml "${{ env.RYUJINX_BASE_VERSION }}" "${{ steps.git_short_hash.outputs.result }}" "${{ matrix.configuration }}" "-p:ExtraDefineConstants=DISABLE_UPDATER" ./distribution/macos/create_macos_build_ava.sh . publish_tmp_ava publish_ava ./distribution/macos/entitlements.xml "${{ env.RYUJINX_BASE_VERSION }}" "${{ steps.git_short_hash.outputs.result }}" "${{ matrix.configuration }}" "-p:ExtraDefineConstants=DISABLE_UPDATER"
- name: Publish macOS Ryujinx.Headless.SDL2
run: |
./distribution/macos/create_macos_build_headless.sh . publish_tmp_headless publish_headless ./distribution/macos/entitlements.xml "${{ env.RYUJINX_BASE_VERSION }}" "${{ steps.git_short_hash.outputs.result }}" "${{ matrix.configuration }}" "-p:ExtraDefineConstants=DISABLE_UPDATER"
- name: Upload Ryujinx.Ava artifact - name: Upload Ryujinx.Ava artifact
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
@ -142,3 +149,10 @@ jobs:
name: ava-ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-macos_universal name: ava-ryujinx-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-macos_universal
path: "publish_ava/*.tar.gz" path: "publish_ava/*.tar.gz"
if: github.event_name == 'pull_request' if: github.event_name == 'pull_request'
- name: Upload Ryujinx.Headless.SDL2 artifact
uses: actions/upload-artifact@v3
with:
name: sdl2-ryujinx-headless-${{ matrix.configuration }}-${{ env.RYUJINX_BASE_VERSION }}+${{ steps.git_short_hash.outputs.result }}-macos_universal
path: "publish_headless/*.tar.gz"
if: github.event_name == 'pull_request'

View file

@ -23,7 +23,7 @@ jobs:
format: format:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
@ -31,6 +31,9 @@ jobs:
with: with:
global-json-file: global.json global-json-file: global.json
- name: Overwrite csc problem matcher
run: echo "::add-matcher::.github/csc.json"
- run: dotnet restore - run: dotnet restore
- name: Print dotnet format version - name: Print dotnet format version
@ -40,23 +43,23 @@ jobs:
run: | run: |
dotnet format whitespace --verify-no-changes --report ./whitespace-report.json -v d dotnet format whitespace --verify-no-changes --report ./whitespace-report.json -v d
# For some unknown reason this step sometimes fails with exit code 139 (segfault?),
# so in that case we'll try again (3 tries max).
- name: Run dotnet format style - name: Run dotnet format style
run: | uses: TSRBerry/unstable-commands@v1
dotnet format style --severity info --verify-no-changes --report ./style-report.json -v d with:
commands: dotnet format style --severity info --verify-no-changes --report ./style-report.json -v d
timeout-minutes: 5
retry-codes: 139
# For some reason this step sometimes fails with exit code 139 (segfault?), # For some unknown reason this step sometimes fails with exit code 139 (segfault?),
# so should that be the case we'll try again (3 tries max). # so in that case we'll try again (3 tries max).
- name: Run dotnet format analyzers - name: Run dotnet format analyzers
run: | uses: TSRBerry/unstable-commands@v1
attempt=0 with:
exit_code=139 commands: dotnet format analyzers --severity info --verify-no-changes --report ./analyzers-report.json -v d
until [ $attempt -ge 3 ] || [ $exit_code -ne 139 ]; do timeout-minutes: 5
((attempt+=1)) retry-codes: 139
exit_code=0
echo "Attempt: ${attempt}/3"
dotnet format analyzers --severity info --verify-no-changes --report ./analyzers-report.json -v d || exit_code=$?
done
exit $exit_code
- name: Upload report - name: Upload report
if: failure() if: failure()

View file

@ -24,7 +24,7 @@ jobs:
RYUJINX_VERSION: "${{ inputs.ryujinx_version }}" RYUJINX_VERSION: "${{ inputs.ryujinx_version }}"
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with: with:
path: Ryujinx path: Ryujinx
@ -38,7 +38,7 @@ jobs:
run: | run: |
echo "git_hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT echo "git_hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with: with:
repository: flathub/org.ryujinx.Ryujinx repository: flathub/org.ryujinx.Ryujinx
token: ${{ secrets.RYUJINX_BOT_PAT }} token: ${{ secrets.RYUJINX_BOT_PAT }}

View file

@ -12,14 +12,24 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
# Grab sources to get update_reviewers.py and reviewers.yml # Grab sources to get latest labeler.yml
- name: Fetch sources - name: Fetch sources
uses: actions/checkout@v3 uses: actions/checkout@v4
with: with:
# Ensure we pin the source origin as pull_request_target run under forks. # Ensure we pin the source origin as pull_request_target run under forks.
fetch-depth: 0 fetch-depth: 0
repository: Ryujinx/Ryujinx repository: Ryujinx/Ryujinx
ref: master ref: master
- name: Checkout Ryujinx-Mako
uses: actions/checkout@v4
with:
repository: Ryujinx/Ryujinx-Mako
ref: master
path: '.ryujinx-mako'
- name: Setup Ryujinx-Mako
uses: ./.ryujinx-mako/.github/actions/setup-mako
- name: Update labels based on changes - name: Update labels based on changes
uses: actions/labeler@v4 uses: actions/labeler@v4
@ -29,6 +39,9 @@ jobs:
- name: Assign reviewers - name: Assign reviewers
run: | run: |
pip3 install PyGithub poetry -n -C .ryujinx-mako run ryujinx-mako update-reviewers ${{ github.repository }} ${{ github.event.pull_request.number }} .github/reviewers.yml
python3 .github/update_reviewers.py ${{ secrets.GITHUB_TOKEN }} ${{ github.repository }} ${{ github.event.pull_request.number }} .github/reviewers.yml
shell: bash shell: bash
env:
MAKO_APP_ID: ${{ secrets.MAKO_APP_ID }}
MAKO_PRIVATE_KEY: ${{ secrets.MAKO_PRIVATE_KEY }}
MAKO_INSTALLATION_ID: ${{ secrets.MAKO_INSTALLATION_ID }}

View file

@ -62,12 +62,15 @@ jobs:
DOTNET_RUNTIME_IDENTIFIER: win10-x64 DOTNET_RUNTIME_IDENTIFIER: win10-x64
RELEASE_ZIP_OS_NAME: win_x64 RELEASE_ZIP_OS_NAME: win_x64
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions/setup-dotnet@v3 - uses: actions/setup-dotnet@v3
with: with:
global-json-file: global.json global-json-file: global.json
- name: Overwrite csc problem matcher
run: echo "::add-matcher::.github/csc.json"
- name: Get version info - name: Get version info
id: version_info id: version_info
run: | run: |
@ -147,7 +150,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: ${{ fromJSON(vars.JOB_TIMEOUT) }} timeout-minutes: ${{ fromJSON(vars.JOB_TIMEOUT) }}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions/setup-dotnet@v3 - uses: actions/setup-dotnet@v3
with: with:
@ -185,15 +188,19 @@ jobs:
sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_REPO\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/g;' src/Ryujinx.Common/ReleaseInformation.cs sed -r --in-place 's/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_REPO\%\%/${{ env.RYUJINX_TARGET_RELEASE_CHANNEL_REPO }}/g;' src/Ryujinx.Common/ReleaseInformation.cs
shell: bash shell: bash
- name: Publish macOS - name: Publish macOS Ryujinx.Ava
run: | run: |
./distribution/macos/create_macos_build.sh . publish_tmp 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_ava ./distribution/macos/entitlements.xml "${{ steps.version_info.outputs.build_version }}" "${{ steps.version_info.outputs.git_short_hash }}" Release
- name: Publish macOS Ryujinx.Headless.SDL2
run: |
./distribution/macos/create_macos_build_headless.sh . publish_tmp_headless publish_headless ./distribution/macos/entitlements.xml "${{ steps.version_info.outputs.build_version }}" "${{ steps.version_info.outputs.git_short_hash }}" Release
- 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: "publish_ava/*.tar.gz" artifacts: "publish_ava/*.tar.gz, publish_headless/*.tar.gz"
tag: ${{ steps.version_info.outputs.build_version }} tag: ${{ steps.version_info.outputs.build_version }}
body: "For more information about this release please check out the official [Changelog](https://github.com/Ryujinx/Ryujinx/wiki/Changelog)." body: "For more information about this release please check out the official [Changelog](https://github.com/Ryujinx/Ryujinx/wiki/Changelog)."
omitBodyDuringUpdate: true omitBodyDuringUpdate: true

147
CONTRIBUTING.md Normal file
View file

@ -0,0 +1,147 @@
# Contribution to Ryujinx
You can contribute to Ryujinx with PRs, testing of PRs and issues. Contributing code and other implementations is greatly appreciated alongside simply filing issues for problems you encounter.
Please read the entire document before continuing as it can potentially save everyone involved a significant amount of time.
# Quick Links
* [Code Style Documentation](docs/coding-guidelines/coding-style.md)
* [Pull Request Guidelines](docs/workflow/pr-guide.md)
## Reporting Issues
We always welcome bug reports, feature proposals and overall feedback. Here are a few tips on how you can make reporting your issue as effective as possible.
### Identify Where to Report
The Ryujinx codebase is distributed across multiple repositories in the [Ryujinx organization](https://github.com/Ryujinx). Depending on the feedback you might want to file the issue on a different repo. Here are a few common repos:
* [Ryujinx/Ryujinx](https://github.com/Ryujinx/Ryujinx) Ryujinx core project files.
* [Ryujinx/Ryujinx-Games-List](https://github.com/Ryujinx/Ryujinx-Games-List) Ryujinx game compatibility list.
* [Ryujinx/Ryujinx-Website](https://github.com/Ryujinx/Ryujinx-Website) Ryujinx website source code.
* [Ryujinx/Ryujinx-Ldn-Website](https://github.com/Ryujinx/Ryujinx-Ldn-Website) Ryujinx LDN website source code.
### Finding Existing Issues
Before filing a new issue, please search our [open issues](https://github.com/Ryujinx/Ryujinx/issues) to check if it already exists.
If you do find an existing issue, please include your own feedback in the discussion. Do consider upvoting (👍 reaction) the original post, as this helps us prioritize popular issues in our backlog.
### Writing a Good Feature Request
Please review any feature requests already opened to both check it has not already been suggested, and to familiarize yourself with the format. When ready to submit a proposal, please use the [Feature Request issue template](https://github.com/Ryujinx/Ryujinx/issues/new?assignees=&labels=&projects=&template=feature_request.yml&title=%5BFeature+Request%5D).
### Writing a Good Bug Report
Good bug reports make it easier for maintainers to verify and root cause the underlying problem. The better a bug report, the faster the problem will be resolved.
Ideally, a bug report should contain the following information:
* A high-level description of the problem.
* A _minimal reproduction_, i.e. the smallest time commitment/configuration required to reproduce the wrong behavior. This can be in the form of a small homebrew application, or by providing a save file and reproduction steps for a specific game.
* A description of the _expected behavior_, contrasted with the _actual behavior_ observed.
* Information on the environment: OS/distro, CPU, GPU (including driver), RAM etc.
* A Ryujinx log file of the run instance where the issue occurred. Log files can be found in `[Executable Folder]/Logs` and are named chronologically.
* Additional information, e.g. is it a regression from previous versions? Are there any known workarounds?
When ready to submit a bug report, please use the [Bug Report issue template](https://github.com/Ryujinx/Ryujinx/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D).
## Contributing Changes
Project maintainers will merge changes that both improve the project and meet our standards for code quality.
The [Pull Request Guide](docs/workflow/pr-guide.md) and [License](https://github.com/Ryujinx/Ryujinx/blob/master/LICENSE.txt) docs define additional guidance.
### DOs and DON'Ts
Please do:
* **DO** follow our [coding style](docs/coding-guidelines/coding-style.md) (C# code-specific).
* **DO** give priority to the current style of the project or file you're changing even if it diverges from the general guidelines.
* **DO** keep the discussions focused. When a new or related topic comes up
it's often better to create new issue than to side track the discussion.
* **DO** clearly state on an issue that you are going to take on implementing it.
* **DO** blog and tweet (or whatever) about your contributions, frequently!
Please do not:
* **DON'T** make PRs for style changes.
* **DON'T** surprise us with big pull requests. Instead, file an issue and talk with us on Discord to start
a discussion so we can agree on a direction before you invest a large amount
of time.
* **DON'T** commit code that you didn't write. If you find code that you think is a good fit to add to Ryujinx, file an issue or talk to us on Discord to start a discussion before proceeding.
* **DON'T** submit PRs that alter licensing related files or headers. If you believe there's a problem with them, file an issue and we'll be happy to discuss it.
### Suggested Workflow
We use and recommend the following workflow:
1. Create or find an issue for your work.
- You can skip this step for trivial changes.
- Get agreement from the team and the community that your proposed change is a good one if it is of significant size or changes core functionality.
- Clearly state that you are going to take on implementing it, if that's the case. You can request that the issue be assigned to you. Note: The issue filer and the implementer don't have to be the same person.
2. Create a personal fork of the repository on GitHub (if you don't already have one).
3. In your fork, create a branch off of main (`git checkout -b mybranch`).
- Branches are useful since they isolate your changes from incoming changes from upstream. They also enable you to create multiple PRs from the same fork.
4. Make and commit your changes to your branch.
- [Build Instructions](https://github.com/Ryujinx/Ryujinx#building) explains how to build and test.
- Commit messages should be clear statements of action and intent.
6. Build the repository with your changes.
- Make sure that the builds are clean.
- Make sure that `dotnet format` has been run and any corrections tested and committed.
7. Create a pull request (PR) against the Ryujinx/Ryujinx repository's **main** branch.
- State in the description what issue or improvement your change is addressing.
- Check if all the Continuous Integration checks are passing. Refer to [Actions](https://github.com/Ryujinx/Ryujinx/actions) to check for outstanding errors.
8. Wait for feedback or approval of your changes from the [core development team](https://github.com/orgs/Ryujinx/teams/developers)
- Details about the pull request [review procedure](docs/workflow/ci/pr-guide.md).
9. When the team members have signed off, and all checks are green, your PR will be merged.
- The next official build will automatically include your change.
- You can delete the branch you used for making the change.
### Good First Issues
The team marks the most straightforward issues as [good first issues](https://github.com/Ryujinx/Ryujinx/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22). This set of issues is the place to start if you are interested in contributing but new to the codebase.
### Commit Messages
Please format commit messages as follows (based on [A Note About Git Commit Messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)):
```
Summarize change in 50 characters or less
Provide more detail after the first line. Leave one blank line below the
summary and wrap all lines at 72 characters or less.
If the change fixes an issue, leave another blank line after the final
paragraph and indicate which issue is fixed in the specific format
below.
Fix #42
```
Also do your best to factor commits appropriately, not too large with unrelated things in the same commit, and not too small with the same small change applied N times in N different commits.
### PR - CI Process
The [Ryujinx continuous integration](https://github.com/Ryujinx/Ryujinx/actions) (CI) system will automatically perform the required builds and run tests (including the ones you are expected to run) for PRs. Builds and test runs must be clean or have bugs properly filed against flaky/unexpected failures that are unrelated to your change.
If the CI build fails for any reason, the PR actions tab should be consulted for further information on the failure. There are a few usual suspects for such a failure:
* `dotnet format` has not been run on the PR and has outstanding stylistic issues.
* There is an error within the PR that fails a test or errors the compiler.
* Random failure of the workflow can occasionally result in a CI failure. In this scenario a maintainer will manually restart the job.
### PR Feedback
Ryujinx team and community members will provide feedback on your change. Community feedback is highly valued. You may see the absence of team feedback if the community has already provided good review feedback.
Two Ryujinx team members must review and approve every PR prior to merge. They will often reply with "LGTM, see nit". That means that the PR will be merged once the feedback is resolved. "LGTM" == "looks good to me".
There are lots of thoughts and [approaches](https://github.com/antlr/antlr4-cpp/blob/master/CONTRIBUTING.md#emoji) for how to efficiently discuss changes. It is best to be clear and explicit with your feedback. Please be patient with people who might not understand the finer details about your approach to feedback.
#### Copying Changes from Other Projects
Ryujinx uses some implementations and frameworks from other projects. The following rules must be followed for PRs that include changes from another project:
- The license of the file is [permissive](https://en.wikipedia.org/wiki/Permissive_free_software_licence).
- The license of the file is left in-tact.
- The contribution is correctly attributed in the [3rd party notices](https://github.com/Ryujinx/Ryujinx/blob/master/distribution/legal/THIRDPARTY.md) file in the repository, as needed.

View file

@ -3,27 +3,28 @@
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageVersion Include="Avalonia" Version="0.10.21" /> <PackageVersion Include="Avalonia" Version="11.0.5" />
<PackageVersion Include="Avalonia.Controls.DataGrid" Version="0.10.21" /> <PackageVersion Include="Avalonia.Controls.DataGrid" Version="11.0.5" />
<PackageVersion Include="Avalonia.Desktop" Version="0.10.21" /> <PackageVersion Include="Avalonia.Desktop" Version="11.0.5" />
<PackageVersion Include="Avalonia.Diagnostics" Version="0.10.21" /> <PackageVersion Include="Avalonia.Diagnostics" Version="11.0.5" />
<PackageVersion Include="Avalonia.Markup.Xaml.Loader" Version="0.10.21" /> <PackageVersion Include="Avalonia.Markup.Xaml.Loader" Version="11.0.5" />
<PackageVersion Include="Avalonia.Svg" Version="0.10.18" /> <PackageVersion Include="Avalonia.Svg" Version="11.0.0.3" />
<PackageVersion Include="Avalonia.Svg.Skia" Version="0.10.18" /> <PackageVersion Include="Avalonia.Svg.Skia" Version="11.0.0.3" />
<PackageVersion Include="CommandLineParser" Version="2.9.1" /> <PackageVersion Include="CommandLineParser" Version="2.9.1" />
<PackageVersion Include="Concentus" Version="1.1.7" /> <PackageVersion Include="Concentus" Version="1.1.7" />
<PackageVersion Include="DiscordRichPresence" Version="1.1.3.18" /> <PackageVersion Include="DiscordRichPresence" Version="1.2.1.24" />
<PackageVersion Include="DynamicData" Version="7.14.2" /> <PackageVersion Include="DynamicData" Version="7.14.2" />
<PackageVersion Include="FluentAvaloniaUI" Version="1.4.5" /> <PackageVersion Include="FluentAvaloniaUI" Version="2.0.4" />
<PackageVersion Include="GtkSharp.Dependencies" Version="1.1.1" /> <PackageVersion Include="GtkSharp.Dependencies" Version="1.1.1" />
<PackageVersion Include="GtkSharp.Dependencies.osx" Version="0.0.5" /> <PackageVersion Include="GtkSharp.Dependencies.osx" Version="0.0.5" />
<PackageVersion Include="jp2masa.Avalonia.Flexbox" Version="0.2.0" /> <PackageVersion Include="jp2masa.Avalonia.Flexbox" Version="0.3.0-beta.4" />
<PackageVersion Include="LibHac" Version="0.18.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.6.0" /> <PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.7.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.6.3" /> <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
<PackageVersion Include="Microsoft.IO.RecyclableMemoryStream" Version="2.3.2" /> <PackageVersion Include="Microsoft.IO.RecyclableMemoryStream" Version="2.3.2" />
<PackageVersion Include="MsgPack.Cli" Version="1.0.1" /> <PackageVersion Include="MsgPack.Cli" Version="1.0.1" />
<PackageVersion Include="NetCoreServer" Version="7.0.0" />
<PackageVersion Include="NUnit" Version="3.13.3" /> <PackageVersion Include="NUnit" Version="3.13.3" />
<PackageVersion Include="NUnit3TestAdapter" Version="4.1.0" /> <PackageVersion Include="NUnit3TestAdapter" Version="4.1.0" />
<PackageVersion Include="OpenTK.Core" Version="4.7.7" /> <PackageVersion Include="OpenTK.Core" Version="4.7.7" />
@ -35,6 +36,7 @@
<PackageVersion Include="Ryujinx.Graphics.Vulkan.Dependencies.MoltenVK" Version="1.2.0" /> <PackageVersion Include="Ryujinx.Graphics.Vulkan.Dependencies.MoltenVK" Version="1.2.0" />
<PackageVersion Include="Ryujinx.GtkSharp" Version="3.24.24.59-ryujinx" /> <PackageVersion Include="Ryujinx.GtkSharp" Version="3.24.24.59-ryujinx" />
<PackageVersion Include="Ryujinx.SDL2-CS" Version="2.28.1-build28" /> <PackageVersion Include="Ryujinx.SDL2-CS" Version="2.28.1-build28" />
<PackageVersion Include="securifybv.ShellLink" Version="0.1.0" />
<PackageVersion Include="shaderc.net" Version="0.1.0" /> <PackageVersion Include="shaderc.net" Version="0.1.0" />
<PackageVersion Include="SharpZipLib" Version="1.4.2" /> <PackageVersion Include="SharpZipLib" Version="1.4.2" />
<PackageVersion Include="Silk.NET.Vulkan" Version="2.16.0" /> <PackageVersion Include="Silk.NET.Vulkan" Version="2.16.0" />
@ -44,10 +46,9 @@
<PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta11" /> <PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta11" />
<PackageVersion Include="SPB" Version="0.0.4-build28" /> <PackageVersion Include="SPB" Version="0.0.4-build28" />
<PackageVersion Include="System.Drawing.Common" Version="7.0.0" /> <PackageVersion Include="System.Drawing.Common" Version="7.0.0" />
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="6.31.0" /> <PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="7.0.0" />
<PackageVersion Include="System.IO.Hashing" Version="7.0.0" /> <PackageVersion Include="System.IO.Hashing" Version="7.0.0" />
<PackageVersion Include="System.Management" Version="7.0.2" /> <PackageVersion Include="System.Management" Version="7.0.2" />
<PackageVersion Include="UnicornEngine.Unicorn" Version="2.0.2-rc1-fb78016" /> <PackageVersion Include="UnicornEngine.Unicorn" Version="2.0.2-rc1-fb78016" />
<PackageVersion Include="XamlNameReferenceGenerator" Version="1.6.1" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View file

@ -141,3 +141,5 @@ See [LICENSE.txt](LICENSE.txt) and [THIRDPARTY.md](distribution/legal/THIRDPARTY
- [LibHac](https://github.com/Thealexbarney/LibHac) is used for our file-system. - [LibHac](https://github.com/Thealexbarney/LibHac) is used for our file-system.
- [AmiiboAPI](https://www.amiiboapi.com) is used in our Amiibo emulation. - [AmiiboAPI](https://www.amiiboapi.com) is used in our Amiibo emulation.
- [ldn_mitm](https://github.com/spacemeowx2/ldn_mitm) is used for one of our available multiplayer modes.
- [ShellLink](https://github.com/securifybv/ShellLink) is used for Windows shortcut generation.

View file

@ -682,3 +682,32 @@
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS
``` ```
</details> </details>
# ShellLink (MIT)
<details>
<summary>See License</summary>
```
MIT License
Copyright (c) 2017 Yorick Koster, Securify B.V.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
</details>

View file

@ -3,8 +3,8 @@ Version=1.0
Name=Ryujinx Name=Ryujinx
Type=Application Type=Application
Icon=Ryujinx Icon=Ryujinx
Exec=env DOTNET_EnableAlternateStackCheck=1 Ryujinx %f Exec=Ryujinx.sh %f
Comment=A Nintendo Switch Emulator Comment=Plays Nintendo Switch applications
GenericName=Nintendo Switch Emulator GenericName=Nintendo Switch Emulator
Terminal=false Terminal=false
Categories=Game;Emulator; Categories=Game;Emulator;

View file

@ -0,0 +1,13 @@
[Desktop Entry]
Version=1.0
Name={0}
Type=Application
Icon={1}
Exec={2} %f
Comment=Nintendo Switch application
GenericName=Nintendo Switch Emulator
Terminal=false
Categories=Game;Emulator;
Keywords=Switch;Nintendo;Emulator;
StartupWMClass=Ryujinx
PrefersNonDefaultGPU=true

View file

@ -44,9 +44,114 @@
<string>public.app-category.games</string> <string>public.app-category.games</string>
<key>LSMinimumSystemVersion</key> <key>LSMinimumSystemVersion</key>
<string>11.0</string> <string>11.0</string>
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeDescription</key>
<string>Extensible Application Markup Language</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.xml</string>
</array>
<key>UTTypeIdentifier</key>
<string>com.ryujinx.xaml</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>xaml</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeDescription</key>
<string>Nintendo Submission Package</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeIdentifier</key>
<string>com.ryujinx.nsp</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>nsp</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeDescription</key>
<string>Nintendo Switch Cartridge</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeIdentifier</key>
<string>com.ryujinx.xci</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>xci</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeDescription</key>
<string>Nintendo Content Archive</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeIdentifier</key>
<string>com.ryujinx.nca</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>nca</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeDescription</key>
<string>Nintendo Relocatable Object</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeIdentifier</key>
<string>com.ryujinx.nro</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>nro</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeDescription</key>
<string>Nintendo Shared Object</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeIdentifier</key>
<string>com.ryujinx.nso</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>nso</string>
</array>
</dict>
</dict>
</array>
<key>LSEnvironment</key> <key>LSEnvironment</key>
<dict> <dict>
<key>COMPlus_DefaultStackSize</key> <key>DOTNET_DefaultStackSize</key>
<string>200000</string> <string>200000</string>
</dict> </dict>
</dict> </dict>

View file

@ -0,0 +1,111 @@
#!/bin/bash
set -e
if [ "$#" -lt 7 ]; then
echo "usage <BASE_DIR> <TEMP_DIRECTORY> <OUTPUT_DIRECTORY> <ENTITLEMENTS_FILE_PATH> <VERSION> <SOURCE_REVISION_ID> <CONFIGURATION> <EXTRA_ARGS>"
exit 1
fi
mkdir -p "$1"
mkdir -p "$2"
mkdir -p "$3"
BASE_DIR=$(readlink -f "$1")
TEMP_DIRECTORY=$(readlink -f "$2")
OUTPUT_DIRECTORY=$(readlink -f "$3")
ENTITLEMENTS_FILE_PATH=$(readlink -f "$4")
VERSION=$5
SOURCE_REVISION_ID=$6
CONFIGURATION=$7
EXTRA_ARGS=$8
if [ "$VERSION" == "1.1.0" ];
then
RELEASE_TAR_FILE_NAME=sdl2-ryujinx-headless-$CONFIGURATION-$VERSION+$SOURCE_REVISION_ID-macos_universal.tar
else
RELEASE_TAR_FILE_NAME=sdl2-ryujinx-headless-$VERSION-macos_universal.tar
fi
ARM64_OUTPUT="$TEMP_DIRECTORY/publish_arm64"
X64_OUTPUT="$TEMP_DIRECTORY/publish_x64"
UNIVERSAL_OUTPUT="$OUTPUT_DIRECTORY/publish"
EXECUTABLE_SUB_PATH=Ryujinx.Headless.SDL2
rm -rf "$TEMP_DIRECTORY"
mkdir -p "$TEMP_DIRECTORY"
DOTNET_COMMON_ARGS=(-p:DebugType=embedded -p:Version="$VERSION" -p:SourceRevisionId="$SOURCE_REVISION_ID" --self-contained true $EXTRA_ARGS)
dotnet restore
dotnet build -c "$CONFIGURATION" src/Ryujinx.Headless.SDL2
dotnet publish -c "$CONFIGURATION" -r osx-arm64 -o "$TEMP_DIRECTORY/publish_arm64" "${DOTNET_COMMON_ARGS[@]}" src/Ryujinx.Headless.SDL2
dotnet publish -c "$CONFIGURATION" -r osx-x64 -o "$TEMP_DIRECTORY/publish_x64" "${DOTNET_COMMON_ARGS[@]}" src/Ryujinx.Headless.SDL2
# Get rid of the support library for ARMeilleure for x64 (that's only for arm64)
rm -rf "$TEMP_DIRECTORY/publish_x64/libarmeilleure-jitsupport.dylib"
# Get rid of libsoundio from arm64 builds as we don't have a arm64 variant
# TODO: remove this once done
rm -rf "$TEMP_DIRECTORY/publish_arm64/libsoundio.dylib"
rm -rf "$OUTPUT_DIRECTORY"
mkdir -p "$OUTPUT_DIRECTORY"
# Let's copy one of the two different outputs and remove the executable
cp -R "$ARM64_OUTPUT/" "$UNIVERSAL_OUTPUT"
rm "$UNIVERSAL_OUTPUT/$EXECUTABLE_SUB_PATH"
# Make it libraries universal
python3 "$BASE_DIR/distribution/macos/construct_universal_dylib.py" "$ARM64_OUTPUT" "$X64_OUTPUT" "$UNIVERSAL_OUTPUT" "**/*.dylib"
if ! [ -x "$(command -v lipo)" ];
then
if ! [ -x "$(command -v llvm-lipo-14)" ];
then
LIPO=llvm-lipo
else
LIPO=llvm-lipo-14
fi
else
LIPO=lipo
fi
# Make the executable universal
$LIPO "$ARM64_OUTPUT/$EXECUTABLE_SUB_PATH" "$X64_OUTPUT/$EXECUTABLE_SUB_PATH" -output "$UNIVERSAL_OUTPUT/$EXECUTABLE_SUB_PATH" -create
# Now sign it
if ! [ -x "$(command -v codesign)" ];
then
if ! [ -x "$(command -v rcodesign)" ];
then
echo "Cannot find rcodesign on your system, please install rcodesign."
exit 1
fi
# NOTE: Currently require https://github.com/indygreg/apple-platform-rs/pull/44 to work on other OSes.
# cargo install --git "https://github.com/marysaka/apple-platform-rs" --branch "fix/adhoc-app-bundle" apple-codesign --bin "rcodesign"
echo "Using rcodesign for ad-hoc signing"
for FILE in "$UNIVERSAL_OUTPUT"/*; do
if [[ $(file "$FILE") == *"Mach-O"* ]]; then
rcodesign sign --entitlements-xml-path "$ENTITLEMENTS_FILE_PATH" "$FILE"
fi
done
else
echo "Using codesign for ad-hoc signing"
for FILE in "$UNIVERSAL_OUTPUT"/*; do
if [[ $(file "$FILE") == *"Mach-O"* ]]; then
codesign --entitlements "$ENTITLEMENTS_FILE_PATH" -f --deep -s - "$FILE"
fi
done
fi
echo "Creating archive"
pushd "$OUTPUT_DIRECTORY"
tar --exclude "publish/Ryujinx.Headless.SDL2" -cvf "$RELEASE_TAR_FILE_NAME" publish 1> /dev/null
python3 "$BASE_DIR/distribution/misc/add_tar_exec.py" "$RELEASE_TAR_FILE_NAME" "publish/Ryujinx.Headless.SDL2" "publish/Ryujinx.Headless.SDL2"
gzip -9 < "$RELEASE_TAR_FILE_NAME" > "$RELEASE_TAR_FILE_NAME.gz"
rm "$RELEASE_TAR_FILE_NAME"
popd
echo "Done"

View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>{0}</string>
<key>CFBundleGetInfoString</key>
<string>{1}</string>
<key>CFBundleIconFile</key>
<string>{2}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>NSHighResolutionCapable</key>
<true/>
<key>CSResourcesFileMapped</key>
<true/>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2018 - 2023 Ryujinx Team and Contributors.</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.games</string>
<key>LSMinimumSystemVersion</key>
<string>11.0</string>
<key>UIPrerenderedIcon</key>
<true/>
<key>LSEnvironment</key>
<dict>
<key>DOTNET_DefaultStackSize</key>
<string>200000</string>
</dict>
</dict>
</plist>

40
docs/README.md Normal file
View file

@ -0,0 +1,40 @@
# Documents Index
This repo includes several documents that explain both high-level and low-level concepts about Ryujinx and its functions. These are very useful for contributors, to get context that can be very difficult to acquire from just reading code.
Intro to Ryujinx
==================
Ryujinx is an open-source Nintendo Switch emulator, created by gdkchan, written in C#.
* The CPU emulator, ARMeilleure, emulates an ARMv8 CPU and currently has support for most 64-bit ARMv8 and some of the ARMv7 (and older) instructions.
* The GPU emulator emulates the Switch's Maxwell GPU using either the OpenGL (version 4.5 minimum), Vulkan, or Metal (via MoltenVK) APIs through a custom build of OpenTK or Silk.NET respectively.
* Audio output is entirely supported via C# wrappers for SDL2, with OpenAL & libsoundio as fallbacks.
Getting Started
===============
- [Installing the .NET SDK](https://dotnet.microsoft.com/download)
- [Official .NET Docs](https://docs.microsoft.com/dotnet/core/)
Contributing (Building, testing, benchmarking, profiling, etc.)
===============
If you want to contribute a code change to this repo, start here.
- [Contributor Guide](../CONTRIBUTING.md)
Coding Guidelines
=================
- [C# coding style](coding-guidelines/coding-style.md)
- [Service Implementation Guidelines - WIP](https://gist.github.com/gdkchan/84ba88cd50efbe58d1babfaa7cd7c455)
Project Docs
=================
To be added. Many project files will contain basic XML docs for key functions and classes in the meantime.
Other Information
=================
- N/A

View file

@ -0,0 +1,116 @@
# C# Coding Style
The general rule we follow is "use Visual Studio defaults".
Using an IDE that supports the `.editorconfig` standard will make this much simpler.
1. We use [Allman style](http://en.wikipedia.org/wiki/Indent_style#Allman_style) braces, where each brace begins on a new line. A single line statement block can go without braces but the block must be properly indented on its own line and must not be nested in other statement blocks that use braces (See rule 18 for more details). One exception is that a `using` statement is permitted to be nested within another `using` statement by starting on the following line at the same indentation level, even if the nested `using` contains a controlled block.
2. We use four spaces of indentation (no tabs).
3. We use `_camelCase` for internal and private fields and use `readonly` where possible. Prefix internal and private instance fields with `_`, static fields with `s_` and thread static fields with `t_`. When used on static fields, `readonly` should come after `static` (e.g. `static readonly` not `readonly static`). Public fields should be used sparingly and should use PascalCasing with no prefix when used.
4. We avoid `this.` unless absolutely necessary.
5. We always specify the visibility, even if it's the default (e.g.
`private string _foo` not `string _foo`). Visibility should be the first modifier (e.g.
`public abstract` not `abstract public`).
6. Namespace imports should be specified at the top of the file, *outside* of `namespace` declarations.
7. Avoid more than one empty line at any time. For example, do not have two
blank lines between members of a type.
8. Avoid spurious free spaces.
For example avoid `if (someVar == 0)...`, where the dots mark the spurious free spaces.
Consider enabling "View White Space (Ctrl+R, Ctrl+W)" or "Edit -> Advanced -> View White Space" if using Visual Studio to aid detection.
9. If a file happens to differ in style from these guidelines (e.g. private members are named `m_member`
rather than `_member`), the existing style in that file takes precedence.
10. We only use `var` when the type is explicitly named on the right-hand side, typically due to either `new` or an explicit cast, e.g. `var stream = new FileStream(...)` not `var stream = OpenStandardInput()`.
- Similarly, target-typed `new()` can only be used when the type is explicitly named on the left-hand side, in a variable definition statement or a field definition statement. e.g. `FileStream stream = new(...);`, but not `stream = new(...);` (where the type was specified on a previous line).
11. We use language keywords instead of BCL types (e.g. `int, string, float` instead of `Int32, String, Single`, etc) for both type references as well as method calls (e.g. `int.Parse` instead of `Int32.Parse`). See issue [#13976](https://github.com/dotnet/runtime/issues/13976) for examples.
12. We use PascalCasing to name all our constant local variables and fields. The only exception is for interop code where the constant value should exactly match the name and value of the code you are calling via interop.
13. We use PascalCasing for all method names, including local functions.
14. We use ```nameof(...)``` instead of ```"..."``` whenever possible and relevant.
15. Fields should be specified at the top within type declarations.
16. When including non-ASCII characters in the source code use Unicode escape sequences (\uXXXX) instead of literal characters. Literal non-ASCII characters occasionally get garbled by a tool or editor.
17. When using labels (for goto), indent the label one less than the current indentation.
18. When using a single-statement if, we follow these conventions:
- Never use single-line form (for example: `if (source == null) throw new ArgumentNullException("source");`)
- Using braces is always accepted, and required if any block of an `if`/`else if`/.../`else` compound statement uses braces or if a single statement body spans multiple lines.
- Braces may be omitted only if the body of *every* block associated with an `if`/`else if`/.../`else` compound statement is placed on a single line.
19. Make all internal and private types static or sealed unless derivation from them is required. As with any implementation detail, they can be changed if/when derivation is required in the future.
20. XML docs should be used when writing interfaces or when a class/method is deemed sufficient in scope or complexity.
21. So-called [Magic Numbers](https://en.wikipedia.org/wiki/Magic_number_(programming)) should be defined as named constants before use (for example `for (int i = 56; i < 68; i++)` could read `for (int i = _currentAge; i < _retireAge; i++)`).
This may be ignored for trivial or syntactically common statements.
An [EditorConfig](https://editorconfig.org "EditorConfig homepage") file (`.editorconfig`) has been provided at the root of the runtime repository, enabling C# auto-formatting conforming to the above guidelines.
### Example File:
``ShaderCache.cs:``
```C#
using Ryujinx.Common.Configuration;
using Ryujinx.Common.Logging;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine.Threed;
using Ryujinx.Graphics.Gpu.Engine.Types;
using Ryujinx.Graphics.Gpu.Image;
using Ryujinx.Graphics.Gpu.Memory;
using Ryujinx.Graphics.Gpu.Shader.DiskCache;
using Ryujinx.Graphics.Shader;
using Ryujinx.Graphics.Shader.Translation;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
namespace Ryujinx.Graphics.Gpu.Shader
{
/// <summary>
/// Memory cache of shader code.
/// </summary>
class ShaderCache : IDisposable
{
/// <summary>
/// Default flags used on the shader translation process.
/// </summary>
public const TranslationFlags DefaultFlags = TranslationFlags.DebugMode;
private readonly struct TranslatedShader
{
public readonly CachedShaderStage Shader;
public readonly ShaderProgram Program;
public TranslatedShader(CachedShaderStage shader, ShaderProgram program)
{
Shader = shader;
Program = program;
}
}
...
/// <summary>
/// Processes the queue of shaders that must save their binaries to the disk cache.
/// </summary>
public void ProcessShaderCacheQueue()
{
// Check to see if the binaries for previously compiled shaders are ready, and save them out.
while (_programsToSaveQueue.TryPeek(out ProgramToSave programToSave))
{
ProgramLinkStatus result = programToSave.HostProgram.CheckProgramLink(false);
if (result != ProgramLinkStatus.Incomplete)
{
if (result == ProgramLinkStatus.Success)
{
_cacheWriter.AddShader(programToSave.CachedProgram, programToSave.BinaryCode ?? programToSave.HostProgram.GetBinary());
}
_programsToSaveQueue.Dequeue();
}
else
{
break;
}
}
}
}
}
```
For other languages, our current best guidance is consistency. When editing files, keep new code and changes consistent with the style in the files. For new files, it should conform to the style for that component. If there is a completely new component, anything that is reasonably broadly accepted is fine.

56
docs/workflow/pr-guide.md Normal file
View file

@ -0,0 +1,56 @@
# Pull Request Guide
## Contributing Rules
All contributions to Ryujinx/Ryujinx repository are made via pull requests (PRs) rather than through direct commits. The pull requests are reviewed and merged by the maintainers after a review and at least two approvals from the core development team.
To merge pull requests, you must have write permissions in the repository.
## Quick Code Review Rules
* Do not mix unrelated changes in one pull request. For example, a code style change should never be mixed with a bug fix.
* All changes should follow the existing code style. You can read more about our code style at [docs/coding-guidelines](../coding-guidelines/coding-style.md).
* Adding external dependencies is to be avoided unless not doing so would introduce _significant_ complexity. Any dependency addition should be justified and discussed before merge.
* Use Draft pull requests for changes you are still working on but want early CI loop feedback. When you think your changes are ready for review, [change the status](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/changing-the-stage-of-a-pull-request) of your pull request.
* Rebase your changes when required or directly requested. Changes should always be commited on top of the upstream branch, not the other way around.
* If you are asked to make changes during the review process do them as a new commit.
* Only resolve GitHub conversations with reviewers once they have been addressed with a commit, or via a mutual agreement.
## Pull Request Ownership
Every pull request will have automatically have labels and reviewers assigned. The label not only indicates the code segment which the change touches but also the area reviewers to be assigned.
If during the code review process a merge conflict occurs, the PR author is responsible for its resolution. Help will be provided if necessary although GitHub makes this easier by allowing simple conflict resolution using the [conflict-editor](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github).
## Pull Request Builds
When submitting a PR to the `Ryujinx/Ryujinx` repository, various builds will run validating many areas to ensure we keep developer productivity and product quality high. These various workflows can be tracked in the [Actions](https://github.com/Ryujinx/Ryujinx/actions) tab of the repository. If the job continues to completion, the build artifacts will be uploaded and posted as a comment in the PR discussion.
## Review Turnaround Times
Ryujinx is a project that is maintained by volunteers on a completely free-time basis. As such we cannot guarantee any particular timeframe for pull request review and approval. Weeks to months are common for larger (>500 line) PRs but there are some additional best practises to avoid review purgatory.
* Make the reviewers life easier wherever possible. Make use of descriptive commit names, code comments and XML docs where applicable.
* If there is disagreement on feedback then always lean on the side of the development team and community over any personal opinion.
* We're human. We miss things. We forget things. If there has been radio silence on your changes for a substantial period of time then do not hesitate to reach out directly either with something simple like "bump" on GitHub or a directly on Discord.
To re-iterate, make the review as easy for us as possible, respond promptly and be comfortable to interact directly with us for anything else.
## Merging Pull Requests
Anyone with write access can merge a pull request manually when the following conditions have been met:
* The PR has been approved by two reviewers and any other objections are addressed.
* You can request follow up reviews from the original reviewers if they requested changes.
* The PR successfully builds and passes all tests in the Continuous Integration (CI) system. In case of failures, refer to the [Actions](https://github.com/Ryujinx/Ryujinx/actions) tab of your PR.
Typically, PRs are merged as one commit (squash merges). It creates a simpler history than a Merge Commit. "Special circumstances" are rare, and typically mean that there are a series of cleanly separated changes that will be too hard to understand if squashed together, or for some reason we want to preserve the ability to dissect them.
## Blocking Pull Request Merging
If for whatever reason you would like to move your pull request back to an in-progress status to avoid merging it in the current form, you can turn the PR into a draft PR by selecting the option under the reviewers section. Alternatively, you can do that by adding [WIP] prefix to the pull request title.
## Old Pull Request Policy
From time to time we will review older PRs and check them for relevance. If we find the PR is inactive or no longer applies, we will close it. As the PR owner, you can simply reopen it if you feel your closed PR needs our attention.

View file

@ -1,6 +1,7 @@
using System.Collections.Concurrent; using System.Collections.Concurrent;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Text;
namespace ARMeilleure.Diagnostics namespace ARMeilleure.Diagnostics
{ {
@ -33,7 +34,6 @@ namespace ARMeilleure.Diagnostics
public static string Get(ulong address) public static string Get(ulong address)
{ {
if (_symbols.TryGetValue(address, out string result)) if (_symbols.TryGetValue(address, out string result))
{ {
return result; return result;
@ -48,13 +48,15 @@ namespace ARMeilleure.Diagnostics
ulong diff = address - symbol.Start; ulong diff = address - symbol.Start;
ulong rem = diff % symbol.ElementSize; ulong rem = diff % symbol.ElementSize;
result = symbol.Name + "_" + diff / symbol.ElementSize; StringBuilder resultBuilder = new();
resultBuilder.Append($"{symbol.Name}_{diff / symbol.ElementSize}");
if (rem != 0) if (rem != 0)
{ {
result += "+" + rem; resultBuilder.Append($"+{rem}");
} }
result = resultBuilder.ToString();
_symbols.TryAdd(address, result); _symbols.TryAdd(address, result);
return result; return result;

View file

@ -32,7 +32,7 @@ namespace ARMeilleure.Instructions
15L << 56 | 14L << 48 | 13L << 40 | 12L << 32 | 07L << 24 | 06L << 16 | 05L << 8 | 04L << 0, // S 15L << 56 | 14L << 48 | 13L << 40 | 12L << 32 | 07L << 24 | 06L << 16 | 05L << 8 | 04L << 0, // S
}; };
public static readonly long ZeroMask = 128L << 56 | 128L << 48 | 128L << 40 | 128L << 32 | 128L << 24 | 128L << 16 | 128L << 8 | 128L << 0; public const long ZeroMask = 128L << 56 | 128L << 48 | 128L << 40 | 128L << 32 | 128L << 24 | 128L << 16 | 128L << 8 | 128L << 0;
public static ulong X86GetGf2p8LogicalShiftLeft(int shift) public static ulong X86GetGf2p8LogicalShiftLeft(int shift)
{ {

View file

@ -189,7 +189,7 @@ namespace ARMeilleure.Translation
{ {
if (start.CompareTo(node.End) < 0) if (start.CompareTo(node.End) < 0)
{ {
if (overlaps.Length >= overlapCount) if (overlaps.Length <= overlapCount)
{ {
Array.Resize(ref overlaps, overlapCount + ArrayGrowthSize); Array.Resize(ref overlaps, overlapCount + ArrayGrowthSize);
} }

View file

@ -29,7 +29,7 @@ namespace ARMeilleure.Translation.PTC
private const string OuterHeaderMagicString = "PTCohd\0\0"; private const string OuterHeaderMagicString = "PTCohd\0\0";
private const string InnerHeaderMagicString = "PTCihd\0\0"; private const string InnerHeaderMagicString = "PTCihd\0\0";
private const uint InternalVersion = 5502; //! To be incremented manually for each change to the ARMeilleure project. private const uint InternalVersion = 5518; //! To be incremented manually for each change to the ARMeilleure project.
private const string ActualDir = "0"; private const string ActualDir = "0";
private const string BackupDir = "1"; private const string BackupDir = "1";

View file

@ -27,6 +27,26 @@ namespace ARMeilleure.Translation.PTC
return dictionary; return dictionary;
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static Dictionary<TKey, TValue> DeserializeAndUpdateDictionary<TKey, TValue>(Stream stream, Func<Stream, TValue> valueFunc, Func<TKey, TValue, (TKey, TValue)> updateFunc) where TKey : struct
{
Dictionary<TKey, TValue> dictionary = new();
int count = DeserializeStructure<int>(stream);
for (int i = 0; i < count; i++)
{
TKey key = DeserializeStructure<TKey>(stream);
TValue value = valueFunc(stream);
(key, value) = updateFunc(key, value);
dictionary.Add(key, value);
}
return dictionary;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static List<T> DeserializeList<T>(Stream stream) where T : struct public static List<T> DeserializeList<T>(Stream stream) where T : struct
{ {

View file

@ -9,10 +9,13 @@ 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.CompilerServices; using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Threading; using System.Threading;
using System.Timers;
using static ARMeilleure.Translation.PTC.PtcFormatter; using static ARMeilleure.Translation.PTC.PtcFormatter;
using Timer = System.Timers.Timer;
namespace ARMeilleure.Translation.PTC namespace ARMeilleure.Translation.PTC
{ {
@ -20,7 +23,11 @@ namespace ARMeilleure.Translation.PTC
{ {
private const string OuterHeaderMagicString = "Pohd\0\0\0\0"; private const string OuterHeaderMagicString = "Pohd\0\0\0\0";
private const uint InternalVersion = 1866; //! Not to be incremented manually for each change to the ARMeilleure project. private const uint InternalVersion = 5518; //! Not to be incremented manually for each change to the ARMeilleure project.
private static readonly uint[] _migrateInternalVersions = {
1866,
};
private const int SaveInterval = 30; // Seconds. private const int SaveInterval = 30; // Seconds.
@ -28,7 +35,7 @@ namespace ARMeilleure.Translation.PTC
private readonly Ptc _ptc; private readonly Ptc _ptc;
private readonly System.Timers.Timer _timer; private readonly Timer _timer;
private readonly ulong _outerHeaderMagic; private readonly ulong _outerHeaderMagic;
@ -51,7 +58,7 @@ namespace ARMeilleure.Translation.PTC
{ {
_ptc = ptc; _ptc = ptc;
_timer = new System.Timers.Timer((double)SaveInterval * 1000d); _timer = new Timer(SaveInterval * 1000d);
_timer.Elapsed += PreSave; _timer.Elapsed += PreSave;
_outerHeaderMagic = BinaryPrimitives.ReadUInt64LittleEndian(EncodingCache.UTF8NoBOM.GetBytes(OuterHeaderMagicString).AsSpan()); _outerHeaderMagic = BinaryPrimitives.ReadUInt64LittleEndian(EncodingCache.UTF8NoBOM.GetBytes(OuterHeaderMagicString).AsSpan());
@ -168,7 +175,7 @@ namespace ARMeilleure.Translation.PTC
return false; return false;
} }
if (outerHeader.InfoFileVersion != InternalVersion) if (outerHeader.InfoFileVersion != InternalVersion && !_migrateInternalVersions.Contains(outerHeader.InfoFileVersion))
{ {
InvalidateCompressedStream(compressedStream); InvalidateCompressedStream(compressedStream);
@ -211,7 +218,19 @@ namespace ARMeilleure.Translation.PTC
return false; return false;
} }
ProfiledFuncs = Deserialize(stream); switch (outerHeader.InfoFileVersion)
{
case InternalVersion:
ProfiledFuncs = Deserialize(stream);
break;
case 1866:
ProfiledFuncs = Deserialize(stream, (address, profile) => (address + 0x500000UL, profile));
break;
default:
Logger.Error?.Print(LogClass.Ptc, $"No migration path for {nameof(outerHeader.InfoFileVersion)} '{outerHeader.InfoFileVersion}'. Discarding cache.");
InvalidateCompressedStream(compressedStream);
return false;
}
Debug.Assert(stream.Position == stream.Length); Debug.Assert(stream.Position == stream.Length);
@ -225,9 +244,14 @@ namespace ARMeilleure.Translation.PTC
return true; return true;
} }
private static Dictionary<ulong, FuncProfile> Deserialize(Stream stream) private static Dictionary<ulong, FuncProfile> Deserialize(Stream stream, Func<ulong, FuncProfile, (ulong, FuncProfile)> migrateEntryFunc = null)
{ {
return DeserializeDictionary<ulong, FuncProfile>(stream, (stream) => DeserializeStructure<FuncProfile>(stream)); if (migrateEntryFunc != null)
{
return DeserializeAndUpdateDictionary(stream, DeserializeStructure<FuncProfile>, migrateEntryFunc);
}
return DeserializeDictionary<ulong, FuncProfile>(stream, DeserializeStructure<FuncProfile>);
} }
private static ReadOnlySpan<byte> GetReadOnlySpan(MemoryStream memoryStream) private static ReadOnlySpan<byte> GetReadOnlySpan(MemoryStream memoryStream)
@ -240,7 +264,7 @@ namespace ARMeilleure.Translation.PTC
compressedStream.SetLength(0L); compressedStream.SetLength(0L);
} }
private void PreSave(object source, System.Timers.ElapsedEventArgs e) private void PreSave(object source, ElapsedEventArgs e)
{ {
_waitEvent.Reset(); _waitEvent.Reset();
@ -277,7 +301,7 @@ namespace ARMeilleure.Translation.PTC
{ {
Debug.Assert(stream.Seek(0L, SeekOrigin.Begin) == 0L && stream.Length == 0L); Debug.Assert(stream.Seek(0L, SeekOrigin.Begin) == 0L && stream.Length == 0L);
stream.Seek((long)Unsafe.SizeOf<Hash128>(), SeekOrigin.Begin); stream.Seek(Unsafe.SizeOf<Hash128>(), SeekOrigin.Begin);
lock (_lock) lock (_lock)
{ {
@ -288,7 +312,7 @@ namespace ARMeilleure.Translation.PTC
Debug.Assert(stream.Position == stream.Length); Debug.Assert(stream.Position == stream.Length);
stream.Seek((long)Unsafe.SizeOf<Hash128>(), SeekOrigin.Begin); stream.Seek(Unsafe.SizeOf<Hash128>(), SeekOrigin.Begin);
Hash128 hash = XXHash128.ComputeHash(GetReadOnlySpan(stream)); Hash128 hash = XXHash128.ComputeHash(GetReadOnlySpan(stream));
stream.Seek(0L, SeekOrigin.Begin); stream.Seek(0L, SeekOrigin.Begin);
@ -332,7 +356,7 @@ namespace ARMeilleure.Translation.PTC
private static void Serialize(Stream stream, Dictionary<ulong, FuncProfile> profiledFuncs) private static void Serialize(Stream stream, Dictionary<ulong, FuncProfile> profiledFuncs)
{ {
SerializeDictionary(stream, profiledFuncs, (stream, structure) => SerializeStructure(stream, structure)); SerializeDictionary(stream, profiledFuncs, SerializeStructure);
} }
[StructLayout(LayoutKind.Sequential, Pack = 1/*, Size = 29*/)] [StructLayout(LayoutKind.Sequential, Pack = 1/*, Size = 29*/)]

View file

@ -7,14 +7,14 @@ namespace ARMeilleure.Translation
internal class TranslatorCache<T> internal class TranslatorCache<T>
{ {
private readonly IntervalTree<ulong, T> _tree; private readonly IntervalTree<ulong, T> _tree;
private readonly ReaderWriterLock _treeLock; private readonly ReaderWriterLockSlim _treeLock;
public int Count => _tree.Count; public int Count => _tree.Count;
public TranslatorCache() public TranslatorCache()
{ {
_tree = new IntervalTree<ulong, T>(); _tree = new IntervalTree<ulong, T>();
_treeLock = new ReaderWriterLock(); _treeLock = new ReaderWriterLockSlim();
} }
public bool TryAdd(ulong address, ulong size, T value) public bool TryAdd(ulong address, ulong size, T value)
@ -24,70 +24,70 @@ namespace ARMeilleure.Translation
public bool AddOrUpdate(ulong address, ulong size, T value, Func<ulong, T, T> updateFactoryCallback) public bool AddOrUpdate(ulong address, ulong size, T value, Func<ulong, T, T> updateFactoryCallback)
{ {
_treeLock.AcquireWriterLock(Timeout.Infinite); _treeLock.EnterWriteLock();
bool result = _tree.AddOrUpdate(address, address + size, value, updateFactoryCallback); bool result = _tree.AddOrUpdate(address, address + size, value, updateFactoryCallback);
_treeLock.ReleaseWriterLock(); _treeLock.ExitWriteLock();
return result; return result;
} }
public T GetOrAdd(ulong address, ulong size, T value) public T GetOrAdd(ulong address, ulong size, T value)
{ {
_treeLock.AcquireWriterLock(Timeout.Infinite); _treeLock.EnterWriteLock();
value = _tree.GetOrAdd(address, address + size, value); value = _tree.GetOrAdd(address, address + size, value);
_treeLock.ReleaseWriterLock(); _treeLock.ExitWriteLock();
return value; return value;
} }
public bool Remove(ulong address) public bool Remove(ulong address)
{ {
_treeLock.AcquireWriterLock(Timeout.Infinite); _treeLock.EnterWriteLock();
bool removed = _tree.Remove(address) != 0; bool removed = _tree.Remove(address) != 0;
_treeLock.ReleaseWriterLock(); _treeLock.ExitWriteLock();
return removed; return removed;
} }
public void Clear() public void Clear()
{ {
_treeLock.AcquireWriterLock(Timeout.Infinite); _treeLock.EnterWriteLock();
_tree.Clear(); _tree.Clear();
_treeLock.ReleaseWriterLock(); _treeLock.ExitWriteLock();
} }
public bool ContainsKey(ulong address) public bool ContainsKey(ulong address)
{ {
_treeLock.AcquireReaderLock(Timeout.Infinite); _treeLock.EnterReadLock();
bool result = _tree.ContainsKey(address); bool result = _tree.ContainsKey(address);
_treeLock.ReleaseReaderLock(); _treeLock.ExitReadLock();
return result; return result;
} }
public bool TryGetValue(ulong address, out T value) public bool TryGetValue(ulong address, out T value)
{ {
_treeLock.AcquireReaderLock(Timeout.Infinite); _treeLock.EnterReadLock();
bool result = _tree.TryGet(address, out value); bool result = _tree.TryGet(address, out value);
_treeLock.ReleaseReaderLock(); _treeLock.ExitReadLock();
return result; return result;
} }
public int GetOverlaps(ulong address, ulong size, ref ulong[] overlaps) public int GetOverlaps(ulong address, ulong size, ref ulong[] overlaps)
{ {
_treeLock.AcquireReaderLock(Timeout.Infinite); _treeLock.EnterReadLock();
int count = _tree.Get(address, address + size, ref overlaps); int count = _tree.Get(address, address + size, ref overlaps);
_treeLock.ReleaseReaderLock(); _treeLock.ExitReadLock();
return count; return count;
} }
public List<T> AsList() public List<T> AsList()
{ {
_treeLock.AcquireReaderLock(Timeout.Infinite); _treeLock.EnterReadLock();
List<T> list = _tree.AsList(); List<T> list = _tree.AsList();
_treeLock.ReleaseReaderLock(); _treeLock.ExitReadLock();
return list; return list;
} }

View file

@ -31,9 +31,18 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command
public bool IsEffectEnabled { get; } public bool IsEffectEnabled { get; }
public AuxiliaryBufferCommand(uint bufferOffset, byte inputBufferOffset, byte outputBufferOffset, public AuxiliaryBufferCommand(
ref AuxiliaryBufferAddresses sendBufferInfo, bool isEnabled, uint countMax, uint bufferOffset,
CpuAddress outputBuffer, CpuAddress inputBuffer, uint updateCount, uint writeOffset, int nodeId) byte inputBufferOffset,
byte outputBufferOffset,
ref AuxiliaryBufferAddresses sendBufferInfo,
bool isEnabled,
uint countMax,
CpuAddress outputBuffer,
CpuAddress inputBuffer,
uint updateCount,
uint writeOffset,
int nodeId)
{ {
Enabled = true; Enabled = true;
NodeId = nodeId; NodeId = nodeId;

View file

@ -21,7 +21,14 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command
private BiquadFilterParameter _parameter; private BiquadFilterParameter _parameter;
public BiquadFilterCommand(int baseIndex, ref BiquadFilterParameter filter, Memory<BiquadFilterState> biquadFilterStateMemory, int inputBufferOffset, int outputBufferOffset, bool needInitialization, int nodeId) public BiquadFilterCommand(
int baseIndex,
ref BiquadFilterParameter filter,
Memory<BiquadFilterState> biquadFilterStateMemory,
int inputBufferOffset,
int outputBufferOffset,
bool needInitialization,
int nodeId)
{ {
_parameter = filter; _parameter = filter;
BiquadFilterState = biquadFilterStateMemory; BiquadFilterState = biquadFilterStateMemory;

View file

@ -77,7 +77,7 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
public unsafe void ClearBuffer(int index) public unsafe void ClearBuffer(int index)
{ {
Unsafe.InitBlock((void*)GetBufferPointer(index), 0, SampleCount); Unsafe.InitBlock((void*)GetBufferPointer(index), 0, SampleCount * sizeof(float));
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
@ -89,7 +89,7 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
public unsafe void CopyBuffer(int outputBufferIndex, int inputBufferIndex) public unsafe void CopyBuffer(int outputBufferIndex, int inputBufferIndex)
{ {
Unsafe.CopyBlock((void*)GetBufferPointer(outputBufferIndex), (void*)GetBufferPointer(inputBufferIndex), SampleCount); Unsafe.CopyBlock((void*)GetBufferPointer(outputBufferIndex), (void*)GetBufferPointer(inputBufferIndex), SampleCount * sizeof(float));
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]

View file

@ -94,18 +94,18 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command
float newMean = inputMovingAverage.Update(FloatingPointHelper.MeanSquare(channelInput), _parameter.InputGain); float newMean = inputMovingAverage.Update(FloatingPointHelper.MeanSquare(channelInput), _parameter.InputGain);
float y = FloatingPointHelper.Log10(newMean) * 10.0f; float y = FloatingPointHelper.Log10(newMean) * 10.0f;
float z = 0.0f; float z = 1.0f;
bool unknown10OutOfRange = false; bool unknown10OutOfRange = y >= state.Unknown10;
if (newMean < 1.0e-10f) if (newMean < 1.0e-10f)
{ {
z = 1.0f; y = -100.0f;
unknown10OutOfRange = state.Unknown10 < -100.0f; unknown10OutOfRange = state.Unknown10 <= -100.0f;
} }
if (y >= state.Unknown10 || unknown10OutOfRange) if (unknown10OutOfRange)
{ {
float tmpGain; float tmpGain;
@ -118,7 +118,7 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command
tmpGain = (y - state.Unknown10) * ((y - state.Unknown10) * -state.CompressorGainReduction); tmpGain = (y - state.Unknown10) * ((y - state.Unknown10) * -state.CompressorGainReduction);
} }
z = FloatingPointHelper.DecibelToLinearExtended(tmpGain); z = FloatingPointHelper.DecibelToLinear(tmpGain);
} }
float unknown4New = z; float unknown4New = z;

View file

@ -88,7 +88,7 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command
float outGain = FixedPointHelper.ToFloat(Parameter.OutGain, FixedPointPrecision); float outGain = FixedPointHelper.ToFloat(Parameter.OutGain, FixedPointPrecision);
Matrix2x2 delayFeedback = new(delayFeedbackBaseGain, delayFeedbackCrossGain, Matrix2x2 delayFeedback = new(delayFeedbackBaseGain, delayFeedbackCrossGain,
delayFeedbackCrossGain, delayFeedbackBaseGain); delayFeedbackCrossGain, delayFeedbackBaseGain);
for (int i = 0; i < sampleCount; i++) for (int i = 0; i < sampleCount; i++)
{ {
@ -125,9 +125,9 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command
float outGain = FixedPointHelper.ToFloat(Parameter.OutGain, FixedPointPrecision); float outGain = FixedPointHelper.ToFloat(Parameter.OutGain, FixedPointPrecision);
Matrix4x4 delayFeedback = new(delayFeedbackBaseGain, delayFeedbackCrossGain, delayFeedbackCrossGain, 0.0f, Matrix4x4 delayFeedback = new(delayFeedbackBaseGain, delayFeedbackCrossGain, delayFeedbackCrossGain, 0.0f,
delayFeedbackCrossGain, delayFeedbackBaseGain, 0.0f, delayFeedbackCrossGain, delayFeedbackCrossGain, delayFeedbackBaseGain, 0.0f, delayFeedbackCrossGain,
delayFeedbackCrossGain, 0.0f, delayFeedbackBaseGain, delayFeedbackCrossGain, delayFeedbackCrossGain, 0.0f, delayFeedbackBaseGain, delayFeedbackCrossGain,
0.0f, delayFeedbackCrossGain, delayFeedbackCrossGain, delayFeedbackBaseGain); 0.0f, delayFeedbackCrossGain, delayFeedbackCrossGain, delayFeedbackBaseGain);
for (int i = 0; i < sampleCount; i++) for (int i = 0; i < sampleCount; i++)
@ -172,11 +172,11 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command
float outGain = FixedPointHelper.ToFloat(Parameter.OutGain, FixedPointPrecision); float outGain = FixedPointHelper.ToFloat(Parameter.OutGain, FixedPointPrecision);
Matrix6x6 delayFeedback = new(delayFeedbackBaseGain, 0.0f, delayFeedbackCrossGain, 0.0f, delayFeedbackCrossGain, 0.0f, Matrix6x6 delayFeedback = new(delayFeedbackBaseGain, 0.0f, delayFeedbackCrossGain, 0.0f, delayFeedbackCrossGain, 0.0f,
0.0f, delayFeedbackBaseGain, delayFeedbackCrossGain, 0.0f, 0.0f, delayFeedbackCrossGain, 0.0f, delayFeedbackBaseGain, delayFeedbackCrossGain, 0.0f, 0.0f, delayFeedbackCrossGain,
delayFeedbackCrossGain, delayFeedbackCrossGain, delayFeedbackBaseGain, 0.0f, 0.0f, 0.0f, delayFeedbackCrossGain, delayFeedbackCrossGain, delayFeedbackBaseGain, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, feedbackGain, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, feedbackGain, 0.0f, 0.0f,
delayFeedbackCrossGain, 0.0f, 0.0f, 0.0f, delayFeedbackBaseGain, delayFeedbackCrossGain, delayFeedbackCrossGain, 0.0f, 0.0f, 0.0f, delayFeedbackBaseGain, delayFeedbackCrossGain,
0.0f, delayFeedbackCrossGain, 0.0f, 0.0f, delayFeedbackCrossGain, delayFeedbackBaseGain); 0.0f, delayFeedbackCrossGain, 0.0f, 0.0f, delayFeedbackCrossGain, delayFeedbackBaseGain);
for (int i = 0; i < sampleCount; i++) for (int i = 0; i < sampleCount; i++)
{ {

View file

@ -28,7 +28,14 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command
private LimiterParameter _parameter; private LimiterParameter _parameter;
public LimiterCommandVersion2(uint bufferOffset, LimiterParameter parameter, Memory<LimiterState> state, Memory<EffectResultState> resultState, bool isEnabled, ulong workBuffer, int nodeId) public LimiterCommandVersion2(
uint bufferOffset,
LimiterParameter parameter,
Memory<LimiterState> state,
Memory<EffectResultState> resultState,
bool isEnabled,
ulong workBuffer,
int nodeId)
{ {
Enabled = true; Enabled = true;
NodeId = nodeId; NodeId = nodeId;

View file

@ -79,53 +79,57 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
private void ProcessReverbMono(ref ReverbState state, ReadOnlySpan<IntPtr> outputBuffers, ReadOnlySpan<IntPtr> inputBuffers, uint sampleCount) private void ProcessReverbMono(ref ReverbState state, ReadOnlySpan<IntPtr> outputBuffers, ReadOnlySpan<IntPtr> inputBuffers, uint sampleCount)
{ {
ProcessReverbGeneric(ref state, ProcessReverbGeneric(
outputBuffers, ref state,
inputBuffers, outputBuffers,
sampleCount, inputBuffers,
_outputEarlyIndicesTableMono, sampleCount,
_targetEarlyDelayLineIndicesTableMono, _outputEarlyIndicesTableMono,
_targetOutputFeedbackIndicesTableMono, _targetEarlyDelayLineIndicesTableMono,
_outputIndicesTableMono); _targetOutputFeedbackIndicesTableMono,
_outputIndicesTableMono);
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
private void ProcessReverbStereo(ref ReverbState state, ReadOnlySpan<IntPtr> outputBuffers, ReadOnlySpan<IntPtr> inputBuffers, uint sampleCount) private void ProcessReverbStereo(ref ReverbState state, ReadOnlySpan<IntPtr> outputBuffers, ReadOnlySpan<IntPtr> inputBuffers, uint sampleCount)
{ {
ProcessReverbGeneric(ref state, ProcessReverbGeneric(
outputBuffers, ref state,
inputBuffers, outputBuffers,
sampleCount, inputBuffers,
_outputEarlyIndicesTableStereo, sampleCount,
_targetEarlyDelayLineIndicesTableStereo, _outputEarlyIndicesTableStereo,
_targetOutputFeedbackIndicesTableStereo, _targetEarlyDelayLineIndicesTableStereo,
_outputIndicesTableStereo); _targetOutputFeedbackIndicesTableStereo,
_outputIndicesTableStereo);
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
private void ProcessReverbQuadraphonic(ref ReverbState state, ReadOnlySpan<IntPtr> outputBuffers, ReadOnlySpan<IntPtr> inputBuffers, uint sampleCount) private void ProcessReverbQuadraphonic(ref ReverbState state, ReadOnlySpan<IntPtr> outputBuffers, ReadOnlySpan<IntPtr> inputBuffers, uint sampleCount)
{ {
ProcessReverbGeneric(ref state, ProcessReverbGeneric(
outputBuffers, ref state,
inputBuffers, outputBuffers,
sampleCount, inputBuffers,
_outputEarlyIndicesTableQuadraphonic, sampleCount,
_targetEarlyDelayLineIndicesTableQuadraphonic, _outputEarlyIndicesTableQuadraphonic,
_targetOutputFeedbackIndicesTableQuadraphonic, _targetEarlyDelayLineIndicesTableQuadraphonic,
_outputIndicesTableQuadraphonic); _targetOutputFeedbackIndicesTableQuadraphonic,
_outputIndicesTableQuadraphonic);
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
private void ProcessReverbSurround(ref ReverbState state, ReadOnlySpan<IntPtr> outputBuffers, ReadOnlySpan<IntPtr> inputBuffers, uint sampleCount) private void ProcessReverbSurround(ref ReverbState state, ReadOnlySpan<IntPtr> outputBuffers, ReadOnlySpan<IntPtr> inputBuffers, uint sampleCount)
{ {
ProcessReverbGeneric(ref state, ProcessReverbGeneric(
outputBuffers, ref state,
inputBuffers, outputBuffers,
sampleCount, inputBuffers,
_outputEarlyIndicesTableSurround, sampleCount,
_targetEarlyDelayLineIndicesTableSurround, _outputEarlyIndicesTableSurround,
_targetOutputFeedbackIndicesTableSurround, _targetEarlyDelayLineIndicesTableSurround,
_outputIndicesTableSurround); _targetOutputFeedbackIndicesTableSurround,
_outputIndicesTableSurround);
} }
private unsafe void ProcessReverbGeneric(ref ReverbState state, ReadOnlySpan<IntPtr> outputBuffers, ReadOnlySpan<IntPtr> inputBuffers, uint sampleCount, ReadOnlySpan<int> outputEarlyIndicesTable, ReadOnlySpan<int> targetEarlyDelayLineIndicesTable, ReadOnlySpan<int> targetOutputFeedbackIndicesTable, ReadOnlySpan<int> outputIndicesTable) private unsafe void ProcessReverbGeneric(ref ReverbState state, ReadOnlySpan<IntPtr> outputBuffers, ReadOnlySpan<IntPtr> inputBuffers, uint sampleCount, ReadOnlySpan<int> outputEarlyIndicesTable, ReadOnlySpan<int> targetEarlyDelayLineIndicesTable, ReadOnlySpan<int> targetOutputFeedbackIndicesTable, ReadOnlySpan<int> outputIndicesTable)

View file

@ -52,7 +52,7 @@ namespace Ryujinx.Audio.Renderer.Dsp
{ {
// NOTE: Nintendo uses an approximation of log10, we don't. // NOTE: Nintendo uses an approximation of log10, we don't.
// As such, we support the same ranges as Nintendo to avoid unexpected behaviours. // As such, we support the same ranges as Nintendo to avoid unexpected behaviours.
return MathF.Pow(10, MathF.Max(x, 1.0e-10f)); return MathF.Log10(MathF.Max(x, 1.0e-10f));
} }
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
@ -62,7 +62,8 @@ namespace Ryujinx.Audio.Renderer.Dsp
foreach (float input in inputs) foreach (float input in inputs)
{ {
res += (input * input); float normInput = input * (1f / 32768f);
res += normInput * normInput;
} }
res /= inputs.Length; res /= inputs.Length;
@ -81,19 +82,6 @@ namespace Ryujinx.Audio.Renderer.Dsp
return MathF.Pow(10.0f, db / 20.0f); return MathF.Pow(10.0f, db / 20.0f);
} }
/// <summary>
/// Map decibel to linear in [0, 2] range.
/// </summary>
/// <param name="db">The decibel value to convert</param>
/// <returns>Converted linear value in [0, 2] range</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float DecibelToLinearExtended(float db)
{
float tmp = MathF.Log2(DecibelToLinear(db));
return MathF.Truncate(tmp) + MathF.Pow(2.0f, tmp - MathF.Truncate(tmp));
}
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float DegreesToRadians(float degrees) public static float DegreesToRadians(float degrees)
{ {

View file

@ -20,6 +20,11 @@ namespace Ryujinx.Audio.Renderer.Dsp
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
public static int GetBufferSize<T>(int startSampleOffset, int endSampleOffset, int offset, int count) where T : unmanaged public static int GetBufferSize<T>(int startSampleOffset, int endSampleOffset, int offset, int count) where T : unmanaged
{ {
if (endSampleOffset < startSampleOffset)
{
return 0;
}
return GetCountToDecode(startSampleOffset, endSampleOffset, offset, count) * Unsafe.SizeOf<T>(); return GetCountToDecode(startSampleOffset, endSampleOffset, offset, count) * Unsafe.SizeOf<T>();
} }

View file

@ -3,7 +3,7 @@ using Ryujinx.Audio.Renderer.Parameter.Effect;
namespace Ryujinx.Audio.Renderer.Dsp.State namespace Ryujinx.Audio.Renderer.Dsp.State
{ {
public class CompressorState public struct CompressorState
{ {
public ExponentialMovingAverage InputMovingAverage; public ExponentialMovingAverage InputMovingAverage;
public float Unknown4; public float Unknown4;
@ -45,7 +45,7 @@ namespace Ryujinx.Audio.Renderer.Dsp.State
CompressorGainReduction = (1.0f - ratio) / Constants.ChannelCountMax; CompressorGainReduction = (1.0f - ratio) / Constants.ChannelCountMax;
Unknown10 = threshold - 1.5f; Unknown10 = threshold - 1.5f;
Unknown14 = threshold + 1.5f; Unknown14 = threshold + 1.5f;
OutputGain = FloatingPointHelper.DecibelToLinearExtended(parameter.OutputGain + makeupGain); OutputGain = FloatingPointHelper.DecibelToLinear(parameter.OutputGain + makeupGain);
} }
} }
} }

View file

@ -4,7 +4,7 @@ using System.Runtime.CompilerServices;
namespace Ryujinx.Audio.Renderer.Dsp.State namespace Ryujinx.Audio.Renderer.Dsp.State
{ {
public class DelayState public struct DelayState
{ {
public DelayLine[] DelayLines { get; } public DelayLine[] DelayLines { get; }
public float[] LowPassZ { get; set; } public float[] LowPassZ { get; set; }
@ -53,7 +53,7 @@ namespace Ryujinx.Audio.Renderer.Dsp.State
LowPassBaseGain = 1.0f - LowPassFeedbackGain; LowPassBaseGain = 1.0f - LowPassFeedbackGain;
} }
public void UpdateLowPassFilter(ref float tempRawRef, uint channelCount) public readonly void UpdateLowPassFilter(ref float tempRawRef, uint channelCount)
{ {
for (int i = 0; i < channelCount; i++) for (int i = 0; i < channelCount; i++)
{ {

View file

@ -4,7 +4,7 @@ using System;
namespace Ryujinx.Audio.Renderer.Dsp.State namespace Ryujinx.Audio.Renderer.Dsp.State
{ {
public class LimiterState public struct LimiterState
{ {
public ExponentialMovingAverage[] DetectorAverage; public ExponentialMovingAverage[] DetectorAverage;
public ExponentialMovingAverage[] CompressionGainAverage; public ExponentialMovingAverage[] CompressionGainAverage;

View file

@ -4,7 +4,7 @@ using System;
namespace Ryujinx.Audio.Renderer.Dsp.State namespace Ryujinx.Audio.Renderer.Dsp.State
{ {
public class Reverb3dState public struct Reverb3dState
{ {
private readonly float[] _fdnDelayMinTimes = new float[4] { 5.0f, 6.0f, 13.0f, 14.0f }; private readonly float[] _fdnDelayMinTimes = new float[4] { 5.0f, 6.0f, 13.0f, 14.0f };
private readonly float[] _fdnDelayMaxTimes = new float[4] { 45.704f, 82.782f, 149.94f, 271.58f }; private readonly float[] _fdnDelayMaxTimes = new float[4] { 45.704f, 82.782f, 149.94f, 271.58f };

View file

@ -5,7 +5,7 @@ using System;
namespace Ryujinx.Audio.Renderer.Dsp.State namespace Ryujinx.Audio.Renderer.Dsp.State
{ {
public class ReverbState public struct ReverbState
{ {
private static readonly float[] _fdnDelayTimes = new float[20] private static readonly float[] _fdnDelayTimes = new float[20]
{ {

View file

@ -264,8 +264,8 @@ namespace Ryujinx.Audio.Renderer.Parameter
{ {
uint dataTypeSize = (uint)Unsafe.SizeOf<T>(); uint dataTypeSize = (uint)Unsafe.SizeOf<T>();
return StartSampleOffset * dataTypeSize <= Size && return (ulong)StartSampleOffset * dataTypeSize <= Size &&
EndSampleOffset * dataTypeSize <= Size; (ulong)EndSampleOffset * dataTypeSize <= Size;
} }
/// <summary> /// <summary>

View file

@ -3,7 +3,15 @@
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sty="using:FluentAvalonia.Styling"> xmlns:sty="using:FluentAvalonia.Styling">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<MergeResourceInclude Source="/Assets/Styles/Themes.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
<Application.Styles> <Application.Styles>
<sty:FluentAvaloniaTheme PreferSystemTheme="False" /> <sty:FluentAvaloniaTheme PreferSystemTheme="False" />
<StyleInclude Source="/Assets/Styles/Styles.xaml"/>
</Application.Styles> </Application.Styles>
</Application> </Application>

View file

@ -3,7 +3,6 @@ using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.Styling; using Avalonia.Styling;
using Avalonia.Threading; using Avalonia.Threading;
using FluentAvalonia.Styling;
using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Windows; using Ryujinx.Ava.UI.Windows;
@ -24,6 +23,11 @@ namespace Ryujinx.Ava
Name = $"Ryujinx {Program.Version}"; Name = $"Ryujinx {Program.Version}";
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
if (OperatingSystem.IsMacOS())
{
Process.Start("/usr/bin/defaults", "write org.ryujinx.Ryujinx ApplePressAndHoldEnabled -bool false");
}
} }
public override void OnFrameworkInitializationCompleted() public override void OnFrameworkInitializationCompleted()
@ -89,8 +93,6 @@ namespace Ryujinx.Ava
string themePath = ConfigurationState.Instance.Ui.CustomThemePath; string themePath = ConfigurationState.Instance.Ui.CustomThemePath;
bool enableCustomTheme = ConfigurationState.Instance.Ui.EnableCustomTheme; bool enableCustomTheme = ConfigurationState.Instance.Ui.EnableCustomTheme;
const string BaseStyleUrl = "avares://Ryujinx.Ava/Assets/Styles/Base{0}.xaml";
if (string.IsNullOrWhiteSpace(baseStyle)) if (string.IsNullOrWhiteSpace(baseStyle))
{ {
ConfigurationState.Instance.Ui.BaseStyle.Value = "Dark"; ConfigurationState.Instance.Ui.BaseStyle.Value = "Dark";
@ -98,31 +100,12 @@ namespace Ryujinx.Ava
baseStyle = ConfigurationState.Instance.Ui.BaseStyle; baseStyle = ConfigurationState.Instance.Ui.BaseStyle;
} }
var theme = AvaloniaLocator.Current.GetService<FluentAvaloniaTheme>(); RequestedThemeVariant = baseStyle switch
theme.RequestedTheme = baseStyle;
var currentStyles = this.Styles;
// Remove all styles except the base style.
if (currentStyles.Count > 1)
{ {
currentStyles.RemoveRange(1, currentStyles.Count - 1); "Light" => ThemeVariant.Light,
} "Dark" => ThemeVariant.Dark,
_ => ThemeVariant.Default,
IStyle newStyles = null; };
// Load requested style, and fallback to Dark theme if loading failed.
try
{
newStyles = (Styles)AvaloniaXamlLoader.Load(new Uri(string.Format(BaseStyleUrl, baseStyle), UriKind.Absolute));
}
catch (XamlLoadException)
{
newStyles = (Styles)AvaloniaXamlLoader.Load(new Uri(string.Format(BaseStyleUrl, "Dark"), UriKind.Absolute));
}
currentStyles.Add(newStyles);
if (enableCustomTheme) if (enableCustomTheme)
{ {
@ -133,7 +116,7 @@ namespace Ryujinx.Ava
var themeContent = File.ReadAllText(themePath); var themeContent = File.ReadAllText(themePath);
var customStyle = AvaloniaRuntimeXamlLoader.Parse<IStyle>(themeContent); var customStyle = AvaloniaRuntimeXamlLoader.Parse<IStyle>(themeContent);
currentStyles.Add(customStyle); Styles.Add(customStyle);
} }
catch (Exception ex) catch (Exception ex)
{ {

View file

@ -20,6 +20,7 @@ using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ava.UI.Windows; using Ryujinx.Ava.UI.Windows;
using Ryujinx.Common; using Ryujinx.Common;
using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Multiplayer;
using Ryujinx.Common.Logging; using Ryujinx.Common.Logging;
using Ryujinx.Common.SystemInterop; using Ryujinx.Common.SystemInterop;
using Ryujinx.Graphics.GAL; using Ryujinx.Graphics.GAL;
@ -54,6 +55,7 @@ using static Ryujinx.Ava.UI.Helpers.Win32NativeInterop;
using AntiAliasing = Ryujinx.Common.Configuration.AntiAliasing; using AntiAliasing = Ryujinx.Common.Configuration.AntiAliasing;
using Image = SixLabors.ImageSharp.Image; using Image = SixLabors.ImageSharp.Image;
using InputManager = Ryujinx.Input.HLE.InputManager; using InputManager = Ryujinx.Input.HLE.InputManager;
using IRenderer = Ryujinx.Graphics.GAL.IRenderer;
using Key = Ryujinx.Input.Key; using Key = Ryujinx.Input.Key;
using MouseButton = Ryujinx.Input.MouseButton; using MouseButton = Ryujinx.Input.MouseButton;
using ScalingFilter = Ryujinx.Common.Configuration.ScalingFilter; using ScalingFilter = Ryujinx.Common.Configuration.ScalingFilter;
@ -167,9 +169,9 @@ namespace Ryujinx.Ava
ConfigurationState.Instance.HideCursor.Event += HideCursorState_Changed; ConfigurationState.Instance.HideCursor.Event += HideCursorState_Changed;
_topLevel.PointerMoved += TopLevel_PointerEnterOrMoved; _topLevel.PointerMoved += TopLevel_PointerEnteredOrMoved;
_topLevel.PointerEnter += TopLevel_PointerEnterOrMoved; _topLevel.PointerEntered += TopLevel_PointerEnteredOrMoved;
_topLevel.PointerLeave += TopLevel_PointerLeave; _topLevel.PointerExited += TopLevel_PointerExited;
if (OperatingSystem.IsWindows()) if (OperatingSystem.IsWindows())
{ {
@ -186,33 +188,33 @@ namespace Ryujinx.Ava
ConfigurationState.Instance.Graphics.AntiAliasing.Event += UpdateAntiAliasing; ConfigurationState.Instance.Graphics.AntiAliasing.Event += UpdateAntiAliasing;
ConfigurationState.Instance.Graphics.ScalingFilter.Event += UpdateScalingFilter; ConfigurationState.Instance.Graphics.ScalingFilter.Event += UpdateScalingFilter;
ConfigurationState.Instance.Graphics.ScalingFilterLevel.Event += UpdateScalingFilterLevel; ConfigurationState.Instance.Graphics.ScalingFilterLevel.Event += UpdateScalingFilterLevel;
ConfigurationState.Instance.Graphics.EnableColorSpacePassthrough.Event += UpdateColorSpacePassthrough;
ConfigurationState.Instance.System.EnableInternetAccess.Event += UpdateEnableInternetAccessState;
ConfigurationState.Instance.Multiplayer.LanInterfaceId.Event += UpdateLanInterfaceIdState; ConfigurationState.Instance.Multiplayer.LanInterfaceId.Event += UpdateLanInterfaceIdState;
ConfigurationState.Instance.Multiplayer.Mode.Event += UpdateMultiplayerModeState;
_gpuCancellationTokenSource = new CancellationTokenSource(); _gpuCancellationTokenSource = new CancellationTokenSource();
_gpuDoneEvent = new ManualResetEvent(false); _gpuDoneEvent = new ManualResetEvent(false);
} }
private void TopLevel_PointerEnterOrMoved(object sender, PointerEventArgs e) private void TopLevel_PointerEnteredOrMoved(object sender, PointerEventArgs e)
{ {
if (sender is MainWindow window) if (sender is MainWindow window)
{ {
_lastCursorMoveTime = Stopwatch.GetTimestamp(); _lastCursorMoveTime = Stopwatch.GetTimestamp();
if (RendererHost.EmbeddedWindow.TransformedBounds != null) var point = e.GetCurrentPoint(window).Position;
{ var bounds = RendererHost.EmbeddedWindow.Bounds;
var point = e.GetCurrentPoint(window).Position;
var bounds = RendererHost.EmbeddedWindow.TransformedBounds.Value.Clip;
_isCursorInRenderer = point.X >= bounds.X && _isCursorInRenderer = point.X >= bounds.X &&
point.X <= bounds.Width + bounds.X && point.X <= bounds.Width + bounds.X &&
point.Y >= bounds.Y && point.Y >= bounds.Y &&
point.Y <= bounds.Height + bounds.Y; point.Y <= bounds.Height + bounds.Y;
}
} }
} }
private void TopLevel_PointerLeave(object sender, PointerEventArgs e) private void TopLevel_PointerExited(object sender, PointerEventArgs e)
{ {
_isCursorInRenderer = false; _isCursorInRenderer = false;
} }
@ -229,6 +231,11 @@ namespace Ryujinx.Ava
_renderer.Window?.SetScalingFilterLevel(ConfigurationState.Instance.Graphics.ScalingFilterLevel.Value); _renderer.Window?.SetScalingFilterLevel(ConfigurationState.Instance.Graphics.ScalingFilterLevel.Value);
} }
private void UpdateColorSpacePassthrough(object sender, ReactiveEventArgs<bool> e)
{
_renderer.Window?.SetColorSpacePassthrough((bool)ConfigurationState.Instance.Graphics.EnableColorSpacePassthrough.Value);
}
private void ShowCursor() private void ShowCursor()
{ {
Dispatcher.UIThread.Post(() => Dispatcher.UIThread.Post(() =>
@ -259,7 +266,7 @@ namespace Ryujinx.Ava
{ {
if (_renderer != null) if (_renderer != null)
{ {
double scale = _topLevel.PlatformImpl.RenderScaling; double scale = _topLevel.RenderScaling;
_renderer.Window?.SetSize((int)(size.Width * scale), (int)(size.Height * scale)); _renderer.Window?.SetSize((int)(size.Width * scale), (int)(size.Height * scale));
} }
@ -353,7 +360,7 @@ namespace Ryujinx.Ava
_viewModel.SetUiProgressHandlers(Device); _viewModel.SetUiProgressHandlers(Device);
RendererHost.SizeChanged += Window_SizeChanged; RendererHost.BoundsChanged += Window_BoundsChanged;
_isActive = true; _isActive = true;
@ -402,11 +409,21 @@ namespace Ryujinx.Ava
}); });
} }
private void UpdateEnableInternetAccessState(object sender, ReactiveEventArgs<bool> e)
{
Device.Configuration.EnableInternetAccess = e.NewValue;
}
private void UpdateLanInterfaceIdState(object sender, ReactiveEventArgs<string> e) private void UpdateLanInterfaceIdState(object sender, ReactiveEventArgs<string> e)
{ {
Device.Configuration.MultiplayerLanInterfaceId = e.NewValue; Device.Configuration.MultiplayerLanInterfaceId = e.NewValue;
} }
private void UpdateMultiplayerModeState(object sender, ReactiveEventArgs<MultiplayerMode> e)
{
Device.Configuration.MultiplayerMode = e.NewValue;
}
public void Stop() public void Stop()
{ {
_isActive = false; _isActive = false;
@ -461,10 +478,11 @@ namespace Ryujinx.Ava
ConfigurationState.Instance.Graphics.ScalingFilter.Event -= UpdateScalingFilter; ConfigurationState.Instance.Graphics.ScalingFilter.Event -= UpdateScalingFilter;
ConfigurationState.Instance.Graphics.ScalingFilterLevel.Event -= UpdateScalingFilterLevel; ConfigurationState.Instance.Graphics.ScalingFilterLevel.Event -= UpdateScalingFilterLevel;
ConfigurationState.Instance.Graphics.AntiAliasing.Event -= UpdateAntiAliasing; ConfigurationState.Instance.Graphics.AntiAliasing.Event -= UpdateAntiAliasing;
ConfigurationState.Instance.Graphics.EnableColorSpacePassthrough.Event -= UpdateColorSpacePassthrough;
_topLevel.PointerMoved -= TopLevel_PointerEnterOrMoved; _topLevel.PointerMoved -= TopLevel_PointerEnteredOrMoved;
_topLevel.PointerEnter -= TopLevel_PointerEnterOrMoved; _topLevel.PointerEntered -= TopLevel_PointerEnteredOrMoved;
_topLevel.PointerLeave -= TopLevel_PointerLeave; _topLevel.PointerExited -= TopLevel_PointerExited;
_gpuCancellationTokenSource.Cancel(); _gpuCancellationTokenSource.Cancel();
_gpuCancellationTokenSource.Dispose(); _gpuCancellationTokenSource.Dispose();
@ -776,7 +794,8 @@ namespace Ryujinx.Ava
ConfigurationState.Instance.Graphics.AspectRatio, ConfigurationState.Instance.Graphics.AspectRatio,
ConfigurationState.Instance.System.AudioVolume, ConfigurationState.Instance.System.AudioVolume,
ConfigurationState.Instance.System.UseHypervisor, ConfigurationState.Instance.System.UseHypervisor,
ConfigurationState.Instance.Multiplayer.LanInterfaceId.Value); ConfigurationState.Instance.Multiplayer.LanInterfaceId.Value,
ConfigurationState.Instance.Multiplayer.Mode);
Device = new Switch(configuration); Device = new Switch(configuration);
} }
@ -842,7 +861,7 @@ namespace Ryujinx.Ava
return deviceDriver; return deviceDriver;
} }
private void Window_SizeChanged(object sender, Size e) private void Window_BoundsChanged(object sender, Size e)
{ {
Width = (int)e.Width; Width = (int)e.Width;
Height = (int)e.Height; Height = (int)e.Height;
@ -887,11 +906,12 @@ namespace Ryujinx.Ava
_renderer?.Window?.SetAntiAliasing((Graphics.GAL.AntiAliasing)ConfigurationState.Instance.Graphics.AntiAliasing.Value); _renderer?.Window?.SetAntiAliasing((Graphics.GAL.AntiAliasing)ConfigurationState.Instance.Graphics.AntiAliasing.Value);
_renderer?.Window?.SetScalingFilter((Graphics.GAL.ScalingFilter)ConfigurationState.Instance.Graphics.ScalingFilter.Value); _renderer?.Window?.SetScalingFilter((Graphics.GAL.ScalingFilter)ConfigurationState.Instance.Graphics.ScalingFilter.Value);
_renderer?.Window?.SetScalingFilterLevel(ConfigurationState.Instance.Graphics.ScalingFilterLevel.Value); _renderer?.Window?.SetScalingFilterLevel(ConfigurationState.Instance.Graphics.ScalingFilterLevel.Value);
_renderer?.Window?.SetColorSpacePassthrough(ConfigurationState.Instance.Graphics.EnableColorSpacePassthrough.Value);
Width = (int)RendererHost.Bounds.Width; Width = (int)RendererHost.Bounds.Width;
Height = (int)RendererHost.Bounds.Height; Height = (int)RendererHost.Bounds.Height;
_renderer.Window.SetSize((int)(Width * _topLevel.PlatformImpl.RenderScaling), (int)(Height * _topLevel.PlatformImpl.RenderScaling)); _renderer.Window.SetSize((int)(Width * _topLevel.RenderScaling), (int)(Height * _topLevel.RenderScaling));
_chrono.Start(); _chrono.Start();

View file

@ -1,12 +1,13 @@
{ {
"Language": "Deutsch", "Language": "Deutsch",
"MenuBarFileOpenApplet": "Applet öffnen", "MenuBarFileOpenApplet": "Öffne Anwendung",
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "Öffnet das Mii Editor Applet im Standalone Modus", "MenuBarFileOpenAppletOpenMiiAppletToolTip": "Öffnet das Mii-Editor-Applet im Standalone-Modus",
"SettingsTabInputDirectMouseAccess": "Direkter Mauszugriff", "SettingsTabInputDirectMouseAccess": "Direkter Mauszugriff",
"SettingsTabSystemMemoryManagerMode": "Speichermanagermodus:", "SettingsTabSystemMemoryManagerMode": "Speichermanagermodus:",
"SettingsTabSystemMemoryManagerModeSoftware": "Software", "SettingsTabSystemMemoryManagerModeSoftware": "Software",
"SettingsTabSystemMemoryManagerModeHost": "Host (schnell)", "SettingsTabSystemMemoryManagerModeHost": "Host (schnell)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "Host ungeprüft (am schnellsten, unsicher)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "Host ungeprüft (am schnellsten, unsicher)",
"SettingsTabSystemUseHypervisor": "Hypervisor verwenden",
"MenuBarFile": "_Datei", "MenuBarFile": "_Datei",
"MenuBarFileOpenFromFile": "_Datei öffnen", "MenuBarFileOpenFromFile": "_Datei öffnen",
"MenuBarFileOpenUnpacked": "_Entpacktes Spiel öffnen", "MenuBarFileOpenUnpacked": "_Entpacktes Spiel öffnen",
@ -18,14 +19,17 @@
"MenuBarOptionsStartGamesInFullscreen": "Spiele im Vollbildmodus starten", "MenuBarOptionsStartGamesInFullscreen": "Spiele im Vollbildmodus starten",
"MenuBarOptionsStopEmulation": "Emulation beenden", "MenuBarOptionsStopEmulation": "Emulation beenden",
"MenuBarOptionsSettings": "_Einstellungen", "MenuBarOptionsSettings": "_Einstellungen",
"MenuBarOptionsManageUserProfiles": "_Profilverwaltung", "MenuBarOptionsManageUserProfiles": "_Benutzerprofile verwalten",
"MenuBarActions": "_Aktionen", "MenuBarActions": "_Aktionen",
"MenuBarOptionsSimulateWakeUpMessage": "Aufwachnachricht", "MenuBarOptionsSimulateWakeUpMessage": "Aufwachnachricht simulieren",
"MenuBarActionsScanAmiibo": "Scanne ein Amiibo", "MenuBarActionsScanAmiibo": "Amiibo scannen",
"MenuBarTools": "_Werkzeuge", "MenuBarTools": "_Werkzeuge",
"MenuBarToolsInstallFirmware": "Firmware installieren", "MenuBarToolsInstallFirmware": "Firmware installieren",
"MenuBarFileToolsInstallFirmwareFromFile": "Installiere Firmware von einer XCI oder einer ZIP Datei", "MenuBarFileToolsInstallFirmwareFromFile": "Firmware von einer XCI- oder einer ZIP-Datei installieren",
"MenuBarFileToolsInstallFirmwareFromDirectory": "Installiere Firmware aus einem Verzeichnis", "MenuBarFileToolsInstallFirmwareFromDirectory": "Firmware aus einem Verzeichnis installieren",
"MenuBarToolsManageFileTypes": "Dateitypen verwalten",
"MenuBarToolsInstallFileTypes": "Dateitypen installieren",
"MenuBarToolsUninstallFileTypes": "Dateitypen deinstallieren",
"MenuBarHelp": "Hilfe", "MenuBarHelp": "Hilfe",
"MenuBarHelpCheckForUpdates": "Nach Updates suchen", "MenuBarHelpCheckForUpdates": "Nach Updates suchen",
"MenuBarHelpAbout": "Über Ryujinx", "MenuBarHelpAbout": "Über Ryujinx",
@ -45,8 +49,8 @@
"GameListContextMenuOpenDeviceSaveDirectory": "Benutzer-Geräte-Verzeichnis öffnen", "GameListContextMenuOpenDeviceSaveDirectory": "Benutzer-Geräte-Verzeichnis öffnen",
"GameListContextMenuOpenDeviceSaveDirectoryToolTip": "Öffnet das Verzeichnis, welches den Geräte-Spielstände beinhaltet", "GameListContextMenuOpenDeviceSaveDirectoryToolTip": "Öffnet das Verzeichnis, welches den Geräte-Spielstände beinhaltet",
"GameListContextMenuOpenBcatSaveDirectory": "Benutzer-BCAT-Vezeichnis öffnen", "GameListContextMenuOpenBcatSaveDirectory": "Benutzer-BCAT-Vezeichnis öffnen",
"GameListContextMenuOpenBcatSaveDirectoryToolTip": "Öffnet das Verzeichnis, welches den BCAT Cache des Spiels beinhaltet", "GameListContextMenuOpenBcatSaveDirectoryToolTip": "Öffnet das Verzeichnis, welches den BCAT-Cache des Spiels beinhaltet",
"GameListContextMenuManageTitleUpdates": "Verwalten von Spiel Updates", "GameListContextMenuManageTitleUpdates": "Verwalte Spiel-Updates",
"GameListContextMenuManageTitleUpdatesToolTip": "Öffnet den Spiel-Update-Manager", "GameListContextMenuManageTitleUpdatesToolTip": "Öffnet den Spiel-Update-Manager",
"GameListContextMenuManageDlc": "Verwalten von DLC", "GameListContextMenuManageDlc": "Verwalten von DLC",
"GameListContextMenuManageDlcToolTip": "Öffnet den DLC-Manager", "GameListContextMenuManageDlcToolTip": "Öffnet den DLC-Manager",
@ -56,10 +60,10 @@
"GameListContextMenuCacheManagementPurgePptc": "PPTC als ungültig markieren", "GameListContextMenuCacheManagementPurgePptc": "PPTC als ungültig markieren",
"GameListContextMenuCacheManagementPurgePptcToolTip": "Markiert den PPTC als ungültig, sodass dieser beim nächsten Spielstart neu erstellt wird", "GameListContextMenuCacheManagementPurgePptcToolTip": "Markiert den PPTC als ungültig, sodass dieser beim nächsten Spielstart neu erstellt wird",
"GameListContextMenuCacheManagementPurgeShaderCache": "Shader Cache löschen", "GameListContextMenuCacheManagementPurgeShaderCache": "Shader Cache löschen",
"GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "Löscht den Shader Cache der Anwendung", "GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "Löscht den Shader-Cache der Anwendung",
"GameListContextMenuCacheManagementOpenPptcDirectory": "PPTC Verzeichnis öffnen", "GameListContextMenuCacheManagementOpenPptcDirectory": "PPTC-Verzeichnis öffnen",
"GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "Öffnet das Verzeichnis, das den PPTC Cache der Anwendung beinhaltet", "GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "Öffnet das Verzeichnis, das den PPTC-Cache der Anwendung beinhaltet",
"GameListContextMenuCacheManagementOpenShaderCacheDirectory": "Shader Cache Verzeichnis öffnen", "GameListContextMenuCacheManagementOpenShaderCacheDirectory": "Shader-Cache-Verzeichnis öffnen",
"GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "Öffnet das Verzeichnis, das den Shader Cache der Anwendung beinhaltet", "GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "Öffnet das Verzeichnis, das den Shader Cache der Anwendung beinhaltet",
"GameListContextMenuExtractData": "Daten extrahieren", "GameListContextMenuExtractData": "Daten extrahieren",
"GameListContextMenuExtractDataExeFS": "ExeFS", "GameListContextMenuExtractDataExeFS": "ExeFS",
@ -70,13 +74,23 @@
"GameListContextMenuExtractDataLogoToolTip": "Extrahiert das Logo aus der aktuellen Anwendungskonfiguration (einschließlich Updates)", "GameListContextMenuExtractDataLogoToolTip": "Extrahiert das Logo aus der aktuellen Anwendungskonfiguration (einschließlich Updates)",
"StatusBarGamesLoaded": "{0}/{1} Spiele geladen", "StatusBarGamesLoaded": "{0}/{1} Spiele geladen",
"StatusBarSystemVersion": "Systemversion: {0}", "StatusBarSystemVersion": "Systemversion: {0}",
"LinuxVmMaxMapCountDialogTitle": "Niedriges Limit für Speicherzuordnungen erkannt",
"LinuxVmMaxMapCountDialogTextPrimary": "Möchtest Du den Wert von vm.max_map_count auf {0} erhöhen",
"LinuxVmMaxMapCountDialogTextSecondary": "Einige Spiele könnten versuchen, mehr Speicherzuordnungen zu erstellen, als derzeit erlaubt. Ryujinx wird abstürzen, sobald dieses Limit überschritten wird.",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "Ja, bis zum nächsten Neustart",
"LinuxVmMaxMapCountDialogButtonPersistent": "Ja, permanent",
"LinuxVmMaxMapCountWarningTextPrimary": "Maximale Anzahl an Speicherzuordnungen ist niedriger als empfohlen.",
"LinuxVmMaxMapCountWarningTextSecondary": "Der aktuelle Wert von vm.max_map_count ({0}) ist kleiner als {1}. Einige Spiele könnten versuchen, mehr Speicherzuordnungen zu erstellen, als derzeit erlaubt. Ryujinx wird abstürzen, sobald dieses Limit überschritten wird.\n\nDu kannst das Limit entweder manuell erhöhen oder pkexec installieren, damit Ryujinx Dir dabei hilft.",
"Settings": "Einstellungen", "Settings": "Einstellungen",
"SettingsTabGeneral": "Allgemein", "SettingsTabGeneral": "Oberfläche",
"SettingsTabGeneralGeneral": "Allgemein", "SettingsTabGeneralGeneral": "Allgemein",
"SettingsTabGeneralEnableDiscordRichPresence": "Aktiviere Discord Rich Presence", "SettingsTabGeneralEnableDiscordRichPresence": "Aktiviere die Statusanzeige für Discord",
"SettingsTabGeneralCheckUpdatesOnLaunch": "Beim Start nach Updates suchen", "SettingsTabGeneralCheckUpdatesOnLaunch": "Beim Start nach Updates suchen",
"SettingsTabGeneralShowConfirmExitDialog": "Zeige den \"Beenden bestätigen\" Dialog", "SettingsTabGeneralShowConfirmExitDialog": "Zeige den \"Beenden bestätigen\"-Dialog",
"SettingsTabGeneralHideCursor": "Mauszeiger ausblenden",
"SettingsTabGeneralHideCursorNever": "Niemals",
"SettingsTabGeneralHideCursorOnIdle": "Mauszeiger bei Inaktivität ausblenden", "SettingsTabGeneralHideCursorOnIdle": "Mauszeiger bei Inaktivität ausblenden",
"SettingsTabGeneralHideCursorAlways": "Immer",
"SettingsTabGeneralGameDirectories": "Spielverzeichnisse", "SettingsTabGeneralGameDirectories": "Spielverzeichnisse",
"SettingsTabGeneralAdd": "Hinzufügen", "SettingsTabGeneralAdd": "Hinzufügen",
"SettingsTabGeneralRemove": "Entfernen", "SettingsTabGeneralRemove": "Entfernen",
@ -108,10 +122,10 @@
"SettingsTabSystemSystemLanguageLatinAmericanSpanish": "Lateinamerikanisches Spanisch", "SettingsTabSystemSystemLanguageLatinAmericanSpanish": "Lateinamerikanisches Spanisch",
"SettingsTabSystemSystemLanguageSimplifiedChinese": "Vereinfachtes Chinesisch", "SettingsTabSystemSystemLanguageSimplifiedChinese": "Vereinfachtes Chinesisch",
"SettingsTabSystemSystemLanguageTraditionalChinese": "Traditionelles Chinesisch", "SettingsTabSystemSystemLanguageTraditionalChinese": "Traditionelles Chinesisch",
"SettingsTabSystemSystemTimeZone": "System Zeitzone:", "SettingsTabSystemSystemTimeZone": "System-Zeitzone:",
"SettingsTabSystemSystemTime": "System Zeit:", "SettingsTabSystemSystemTime": "Systemzeit:",
"SettingsTabSystemEnableVsync": "VSync", "SettingsTabSystemEnableVsync": "VSync",
"SettingsTabSystemEnablePptc": "PPTC Cache (Profiled Persistent Translation Cache)", "SettingsTabSystemEnablePptc": "PPTC (Profiled Persistent Translation Cache)",
"SettingsTabSystemEnableFsIntegrityChecks": "FS Integritätsprüfung", "SettingsTabSystemEnableFsIntegrityChecks": "FS Integritätsprüfung",
"SettingsTabSystemAudioBackend": "Audio-Backend:", "SettingsTabSystemAudioBackend": "Audio-Backend:",
"SettingsTabSystemAudioBackendDummy": "Ohne Funktion", "SettingsTabSystemAudioBackendDummy": "Ohne Funktion",
@ -124,7 +138,7 @@
"SettingsTabSystemIgnoreMissingServices": "Ignoriere fehlende Dienste", "SettingsTabSystemIgnoreMissingServices": "Ignoriere fehlende Dienste",
"SettingsTabGraphics": "Grafik", "SettingsTabGraphics": "Grafik",
"SettingsTabGraphicsAPI": "Grafik-API", "SettingsTabGraphicsAPI": "Grafik-API",
"SettingsTabGraphicsEnableShaderCache": "Shader Cache", "SettingsTabGraphicsEnableShaderCache": "Shader-Cache aktivieren",
"SettingsTabGraphicsAnisotropicFiltering": "Anisotrope Filterung:", "SettingsTabGraphicsAnisotropicFiltering": "Anisotrope Filterung:",
"SettingsTabGraphicsAnisotropicFilteringAuto": "Auto", "SettingsTabGraphicsAnisotropicFilteringAuto": "Auto",
"SettingsTabGraphicsAnisotropicFiltering2x": "2x", "SettingsTabGraphicsAnisotropicFiltering2x": "2x",
@ -143,12 +157,12 @@
"SettingsTabGraphicsAspectRatio16x10": "16:10", "SettingsTabGraphicsAspectRatio16x10": "16:10",
"SettingsTabGraphicsAspectRatio21x9": "21:9", "SettingsTabGraphicsAspectRatio21x9": "21:9",
"SettingsTabGraphicsAspectRatio32x9": "32:9", "SettingsTabGraphicsAspectRatio32x9": "32:9",
"SettingsTabGraphicsAspectRatioStretch": "Dehnen, um sich an das Fenster anzupassen", "SettingsTabGraphicsAspectRatioStretch": "An Fenster anpassen",
"SettingsTabGraphicsDeveloperOptions": "Optionen für Entwickler", "SettingsTabGraphicsDeveloperOptions": "Optionen für Entwickler",
"SettingsTabGraphicsShaderDumpPath": "Grafik-Shader Dump Pfad:", "SettingsTabGraphicsShaderDumpPath": "Grafik-Shader-Dump-Pfad:",
"SettingsTabLogging": "Logs", "SettingsTabLogging": "Logs",
"SettingsTabLoggingLogging": "Logs", "SettingsTabLoggingLogging": "Logs",
"SettingsTabLoggingEnableLoggingToFile": "Aktiviere Erstellung von Log-Datei", "SettingsTabLoggingEnableLoggingToFile": "Protokollierung in Datei aktivieren",
"SettingsTabLoggingEnableStubLogs": "Aktiviere Stub-Logs", "SettingsTabLoggingEnableStubLogs": "Aktiviere Stub-Logs",
"SettingsTabLoggingEnableInfoLogs": "Aktiviere Info-Logs", "SettingsTabLoggingEnableInfoLogs": "Aktiviere Info-Logs",
"SettingsTabLoggingEnableWarningLogs": "Aktiviere Warn-Logs", "SettingsTabLoggingEnableWarningLogs": "Aktiviere Warn-Logs",
@ -157,15 +171,16 @@
"SettingsTabLoggingEnableGuestLogs": "Aktiviere Gast-Logs", "SettingsTabLoggingEnableGuestLogs": "Aktiviere Gast-Logs",
"SettingsTabLoggingEnableFsAccessLogs": "Aktiviere Fs Zugriff-Logs", "SettingsTabLoggingEnableFsAccessLogs": "Aktiviere Fs Zugriff-Logs",
"SettingsTabLoggingFsGlobalAccessLogMode": "Fs Globaler Zugriff-Log-Modus:", "SettingsTabLoggingFsGlobalAccessLogMode": "Fs Globaler Zugriff-Log-Modus:",
"SettingsTabLoggingDeveloperOptions": "Entwickleroptionen (WARNUNG: Beeinträchtigt die Leistung)", "SettingsTabLoggingDeveloperOptions": "Entwickleroptionen",
"SettingsTabLoggingGraphicsBackendLogLevel": "Graphics Backend Log Level:", "SettingsTabLoggingDeveloperOptionsNote": "ACHTUNG: Wird die Leistung reduzieren",
"SettingsTabLoggingGraphicsBackendLogLevel": "Protokollstufe des Grafik-Backends:",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "Keine", "SettingsTabLoggingGraphicsBackendLogLevelNone": "Keine",
"SettingsTabLoggingGraphicsBackendLogLevelError": "Fehler", "SettingsTabLoggingGraphicsBackendLogLevelError": "Fehler",
"SettingsTabLoggingGraphicsBackendLogLevelPerformance": "Verlangsamungen", "SettingsTabLoggingGraphicsBackendLogLevelPerformance": "Verlangsamungen",
"SettingsTabLoggingGraphicsBackendLogLevelAll": "Alle", "SettingsTabLoggingGraphicsBackendLogLevelAll": "Alle",
"SettingsTabLoggingEnableDebugLogs": "Aktiviere Debug-Log", "SettingsTabLoggingEnableDebugLogs": "Aktiviere Debug-Log",
"SettingsTabInput": "Eingabe", "SettingsTabInput": "Eingabe",
"SettingsTabInputEnableDockedMode": "Docked Modus", "SettingsTabInputEnableDockedMode": "Angedockter Modus",
"SettingsTabInputDirectKeyboardAccess": "Direkter Tastaturzugriff", "SettingsTabInputDirectKeyboardAccess": "Direkter Tastaturzugriff",
"SettingsButtonSave": "Speichern", "SettingsButtonSave": "Speichern",
"SettingsButtonClose": "Schließen", "SettingsButtonClose": "Schließen",
@ -185,12 +200,12 @@
"ControllerSettingsInputDevice": "Eingabegerät", "ControllerSettingsInputDevice": "Eingabegerät",
"ControllerSettingsRefresh": "Aktualisieren", "ControllerSettingsRefresh": "Aktualisieren",
"ControllerSettingsDeviceDisabled": "Deaktiviert", "ControllerSettingsDeviceDisabled": "Deaktiviert",
"ControllerSettingsControllerType": "Controller Typ", "ControllerSettingsControllerType": "Controller-Typ",
"ControllerSettingsControllerTypeHandheld": "Handheld", "ControllerSettingsControllerTypeHandheld": "Handheld",
"ControllerSettingsControllerTypeProController": "Pro Controller", "ControllerSettingsControllerTypeProController": "Pro Controller",
"ControllerSettingsControllerTypeJoyConPair": "Joy-Con Paar", "ControllerSettingsControllerTypeJoyConPair": "Joy-Con-Paar",
"ControllerSettingsControllerTypeJoyConLeft": "Joy-Con Links", "ControllerSettingsControllerTypeJoyConLeft": "Linker Joy-Con",
"ControllerSettingsControllerTypeJoyConRight": "Joy-Con Rechts", "ControllerSettingsControllerTypeJoyConRight": "Rechter Joy-Con",
"ControllerSettingsProfile": "Profil", "ControllerSettingsProfile": "Profil",
"ControllerSettingsProfileDefault": "Standard", "ControllerSettingsProfileDefault": "Standard",
"ControllerSettingsLoad": "Laden", "ControllerSettingsLoad": "Laden",
@ -208,26 +223,17 @@
"ControllerSettingsDPadDown": "Runter", "ControllerSettingsDPadDown": "Runter",
"ControllerSettingsDPadLeft": "Links", "ControllerSettingsDPadLeft": "Links",
"ControllerSettingsDPadRight": "Rechts", "ControllerSettingsDPadRight": "Rechts",
"ControllerSettingsStickButton": "Button",
"ControllerSettingsStickUp": "Hoch",
"ControllerSettingsStickDown": "Runter",
"ControllerSettingsStickLeft": "Links",
"ControllerSettingsStickRight": "Rechts",
"ControllerSettingsStickStick": "Stick",
"ControllerSettingsStickInvertXAxis": "X-Achse invertieren",
"ControllerSettingsStickInvertYAxis": "Y-Achse invertieren",
"ControllerSettingsStickDeadzone": "Deadzone:",
"ControllerSettingsLStick": "Linker Analogstick", "ControllerSettingsLStick": "Linker Analogstick",
"ControllerSettingsLStickButton": "L3",
"ControllerSettingsLStickUp": "Hoch",
"ControllerSettingsLStickDown": "Runter",
"ControllerSettingsLStickLeft": "Links",
"ControllerSettingsLStickRight": "Rechts",
"ControllerSettingsLStickStick": "Analogstick",
"ControllerSettingsLStickInvertXAxis": "X-Achse invertieren",
"ControllerSettingsLStickInvertYAxis": "Y-Achse invertieren",
"ControllerSettingsLStickDeadzone": "Deadzone:",
"ControllerSettingsRStick": "Rechter Analogstick", "ControllerSettingsRStick": "Rechter Analogstick",
"ControllerSettingsRStickButton": "R3",
"ControllerSettingsRStickUp": "Hoch",
"ControllerSettingsRStickDown": "Runter",
"ControllerSettingsRStickLeft": "Links",
"ControllerSettingsRStickRight": "Rechts",
"ControllerSettingsRStickStick": "Analogstick",
"ControllerSettingsRStickInvertXAxis": "X-Achse invertieren",
"ControllerSettingsRStickInvertYAxis": "Y-Achse invertieren",
"ControllerSettingsRStickDeadzone": "Deadzone:",
"ControllerSettingsTriggersLeft": "Linker Trigger", "ControllerSettingsTriggersLeft": "Linker Trigger",
"ControllerSettingsTriggersRight": "Rechter Trigger", "ControllerSettingsTriggersRight": "Rechter Trigger",
"ControllerSettingsTriggersButtonsLeft": "Linke Schultertaste", "ControllerSettingsTriggersButtonsLeft": "Linke Schultertaste",
@ -247,12 +253,12 @@
"ControllerSettingsTriggerThreshold": "Empfindlichkeit:", "ControllerSettingsTriggerThreshold": "Empfindlichkeit:",
"ControllerSettingsMotion": "Bewegung", "ControllerSettingsMotion": "Bewegung",
"ControllerSettingsMotionUseCemuhookCompatibleMotion": "CemuHook kompatible Bewegungssteuerung", "ControllerSettingsMotionUseCemuhookCompatibleMotion": "CemuHook kompatible Bewegungssteuerung",
"ControllerSettingsMotionControllerSlot": "Kontroller Slot:", "ControllerSettingsMotionControllerSlot": "Controller-Slot:",
"ControllerSettingsMotionMirrorInput": "Spiegele Eingabe", "ControllerSettingsMotionMirrorInput": "Eingabe spiegeln",
"ControllerSettingsMotionRightJoyConSlot": "Rechter Joy-Con Slot:", "ControllerSettingsMotionRightJoyConSlot": "Rechter Joy-Con-Slot:",
"ControllerSettingsMotionServerHost": "Server Host:", "ControllerSettingsMotionServerHost": "Server Host:",
"ControllerSettingsMotionGyroSensitivity": "Gyro Empfindlichkeit:", "ControllerSettingsMotionGyroSensitivity": "Gyro-Empfindlichkeit:",
"ControllerSettingsMotionGyroDeadzone": "Gyro Deadzone:", "ControllerSettingsMotionGyroDeadzone": "Gyro-Deadzone:",
"ControllerSettingsSave": "Speichern", "ControllerSettingsSave": "Speichern",
"ControllerSettingsClose": "Schließen", "ControllerSettingsClose": "Schließen",
"UserProfilesSelectedUserProfile": "Ausgewähltes Profil:", "UserProfilesSelectedUserProfile": "Ausgewähltes Profil:",
@ -262,26 +268,28 @@
"UserProfilesAddNewProfile": "Neues Profil", "UserProfilesAddNewProfile": "Neues Profil",
"UserProfilesDelete": "Löschen", "UserProfilesDelete": "Löschen",
"UserProfilesClose": "Schließen", "UserProfilesClose": "Schließen",
"ProfileNameSelectionWatermark": "Wähle einen Spitznamen",
"ProfileImageSelectionTitle": "Auswahl des Profilbildes", "ProfileImageSelectionTitle": "Auswahl des Profilbildes",
"ProfileImageSelectionHeader": "Wähle ein Profilbild aus", "ProfileImageSelectionHeader": "Wähle ein Profilbild aus",
"ProfileImageSelectionNote": "Es kann ein eigenes Profilbild importiert werden oder ein Avatar aus der System-Firmware", "ProfileImageSelectionNote": "Es kann ein eigenes Profilbild importiert werden oder ein Avatar aus der System-Firmware",
"ProfileImageSelectionImportImage": "Bilddatei importieren", "ProfileImageSelectionImportImage": "Bilddatei importieren",
"ProfileImageSelectionSelectAvatar": "Firmware Avatar auswählen", "ProfileImageSelectionSelectAvatar": "Firmware-Avatar auswählen",
"InputDialogTitle": "Eingabe Dialog", "InputDialogTitle": "Eingabe-Dialog",
"InputDialogOk": "OK", "InputDialogOk": "OK",
"InputDialogCancel": "Abbrechen", "InputDialogCancel": "Abbrechen",
"InputDialogAddNewProfileTitle": "Wähle den Profilnamen", "InputDialogAddNewProfileTitle": "Wähle den Profilnamen",
"InputDialogAddNewProfileHeader": "Bitte gebe einen Profilnamen ein", "InputDialogAddNewProfileHeader": "Bitte gebe einen Profilnamen ein",
"InputDialogAddNewProfileSubtext": "(Maximale Länge: {0})", "InputDialogAddNewProfileSubtext": "(Maximale Länge: {0})",
"AvatarChoose": "Bestätigen", "AvatarChoose": "Bestätigen",
"AvatarSetBackgroundColor": "Hintergrundfarbe einstellen", "AvatarSetBackgroundColor": "Hintergrundfarbe auswählen",
"AvatarClose": "Schließen", "AvatarClose": "Schließen",
"ControllerSettingsLoadProfileToolTip": "Lädt ein Profil", "ControllerSettingsLoadProfileToolTip": "Lädt ein Profil",
"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",
"MenuBarFileToolsTakeScreenshot": "Screenshot aufnehmen", "MenuBarFileToolsTakeScreenshot": "Screenshot aufnehmen",
"MenuBarFileToolsHideUi": "Hide UI", "MenuBarFileToolsHideUi": "Oberfläche ausblenden",
"GameListContextMenuRunApplication": "Anwendung ausführen",
"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",
@ -296,7 +304,7 @@
"ControllerSettingsRumbleStrongMultiplier": "Starker Vibrations-Multiplikator", "ControllerSettingsRumbleStrongMultiplier": "Starker Vibrations-Multiplikator",
"ControllerSettingsRumbleWeakMultiplier": "Schwacher Vibrations-Multiplikator", "ControllerSettingsRumbleWeakMultiplier": "Schwacher Vibrations-Multiplikator",
"DialogMessageSaveNotAvailableMessage": "Es existieren keine Speicherdaten für {0} [{1:x16}]", "DialogMessageSaveNotAvailableMessage": "Es existieren keine Speicherdaten für {0} [{1:x16}]",
"DialogMessageSaveNotAvailableCreateSaveMessage": "Soll Ryujinx Speicherdaten für dieses Spiel erstellen?", "DialogMessageSaveNotAvailableCreateSaveMessage": "Sollen Speicherdaten für dieses Spiel erstellt werden?",
"DialogConfirmationTitle": "Ryujinx - Bestätigung", "DialogConfirmationTitle": "Ryujinx - Bestätigung",
"DialogUpdaterTitle": "Ryujinx - Updater", "DialogUpdaterTitle": "Ryujinx - Updater",
"DialogErrorTitle": "Ryujinx - Fehler", "DialogErrorTitle": "Ryujinx - Fehler",
@ -306,26 +314,26 @@
"DialogExitMessage": "Ryujinx wirklich schließen?", "DialogExitMessage": "Ryujinx wirklich schließen?",
"DialogExitSubMessage": "Alle nicht gespeicherten Daten gehen verloren!", "DialogExitSubMessage": "Alle nicht gespeicherten Daten gehen verloren!",
"DialogMessageCreateSaveErrorMessage": "Es ist ein Fehler bei der Erstellung der angegebenen Speicherdaten aufgetreten: {0}", "DialogMessageCreateSaveErrorMessage": "Es ist ein Fehler bei der Erstellung der angegebenen Speicherdaten aufgetreten: {0}",
"DialogMessageFindSaveErrorMessage": "Es ist ein Fehler beim Auffinden 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": "Ryujinx - 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.",
"DialogUpdaterConvertFailedMessage": "Die Konvertierung der aktuellen Ryujinx Version ist fehlgeschlagen.", "DialogUpdaterConvertFailedMessage": "Die Konvertierung der aktuellen Ryujinx-Version ist fehlgeschlagen.",
"DialogUpdaterCancelUpdateMessage": "Download wird abgebrochen!", "DialogUpdaterCancelUpdateMessage": "Download wird abgebrochen!",
"DialogUpdaterAlreadyOnLatestVersionMessage": "Es wird bereits die aktuellste Version von Ryujinx benutzt", "DialogUpdaterAlreadyOnLatestVersionMessage": "Es wird bereits die aktuellste Version von Ryujinx benutzt",
"DialogUpdaterFailedToGetVersionMessage": "An error has occurred when trying to get release information from GitHub Release. This can be caused if a new release is being compiled by GitHub Actions. Try again in a few minutes.", "DialogUpdaterFailedToGetVersionMessage": "Beim Versuch, Veröffentlichungs-Info von GitHub Release zu erhalten, ist ein Fehler aufgetreten. Dies kann aufgrund einer neuen Veröffentlichung, die gerade von GitHub Actions kompiliert wird, verursacht werden.",
"DialogUpdaterConvertFailedGithubMessage": "Failed to convert the received Ryujinx version from Github Release.", "DialogUpdaterConvertFailedGithubMessage": "Fehler beim Konvertieren der erhaltenen Ryujinx-Version von GitHub Release.",
"DialogUpdaterDownloadingMessage": "Update wird Heruntergeladen...", "DialogUpdaterDownloadingMessage": "Update wird heruntergeladen...",
"DialogUpdaterExtractionMessage": "Update wird entpackt...", "DialogUpdaterExtractionMessage": "Update wird entpackt...",
"DialogUpdaterRenamingMessage": "Update wird umbenannt...", "DialogUpdaterRenamingMessage": "Update wird umbenannt...",
"DialogUpdaterAddingFilesMessage": "Update wird hinzugefügt...", "DialogUpdaterAddingFilesMessage": "Update wird hinzugefügt...",
"DialogUpdaterCompleteMessage": "Update abgeschlossen!", "DialogUpdaterCompleteMessage": "Update abgeschlossen!",
"DialogUpdaterRestartMessage": "Ryujinx jetzt neu starten?", "DialogUpdaterRestartMessage": "Ryujinx jetzt neu starten?",
"DialogUpdaterArchNotSupportedMessage": "Eine nicht unterstützte Systemarchitektur wird benutzt!", "DialogUpdaterArchNotSupportedMessage": "Eine nicht unterstützte Systemarchitektur wird benutzt!",
"DialogUpdaterArchNotSupportedSubMessage": "Nur x64 Systeme werden unterstützt!", "DialogUpdaterArchNotSupportedSubMessage": "Nur 64-Bit-Systeme werden unterstützt!",
"DialogUpdaterNoInternetMessage": "Es besteht keine Verbindung mit dem Internet!", "DialogUpdaterNoInternetMessage": "Es besteht keine Verbindung mit dem Internet!",
"DialogUpdaterNoInternetSubMessage": "Bitte vergewissern, dass eine funktionierende Internetverbindung existiert!", "DialogUpdaterNoInternetSubMessage": "Bitte vergewissern, dass eine funktionierende Internetverbindung existiert!",
"DialogUpdaterDirtyBuildMessage": "Inoffizielle Versionen von Ryujinx können nicht aktualisiert werden", "DialogUpdaterDirtyBuildMessage": "Inoffizielle Versionen von Ryujinx können nicht aktualisiert werden",
@ -337,6 +345,10 @@
"DialogFirmwareInstallEmbeddedSuccessMessage": "Es wurde keine installierte Firmware gefunden, aber Ryujinx konnte die Firmware {0} aus dem bereitgestellten Spiel installieren.\nRyujinx wird nun gestartet.", "DialogFirmwareInstallEmbeddedSuccessMessage": "Es wurde keine installierte Firmware gefunden, aber Ryujinx konnte die Firmware {0} aus dem bereitgestellten Spiel installieren.\nRyujinx wird nun gestartet.",
"DialogFirmwareNoFirmwareInstalledMessage": "Keine Firmware installiert", "DialogFirmwareNoFirmwareInstalledMessage": "Keine Firmware installiert",
"DialogFirmwareInstalledMessage": "Firmware {0} wurde installiert", "DialogFirmwareInstalledMessage": "Firmware {0} wurde installiert",
"DialogInstallFileTypesSuccessMessage": "Dateitypen erfolgreich installiert!",
"DialogInstallFileTypesErrorMessage": "Dateitypen konnten nicht installiert werden.",
"DialogUninstallFileTypesSuccessMessage": "Dateitypen erfolgreich deinstalliert!",
"DialogUninstallFileTypesErrorMessage": "Deinstallation der Dateitypen fehlgeschlagen.",
"DialogOpenSettingsWindowLabel": "Fenster-Einstellungen öffnen", "DialogOpenSettingsWindowLabel": "Fenster-Einstellungen öffnen",
"DialogControllerAppletTitle": "Controller-Applet", "DialogControllerAppletTitle": "Controller-Applet",
"DialogMessageDialogErrorExceptionMessage": "Fehler bei der Anzeige des Meldungs-Dialogs: {0}", "DialogMessageDialogErrorExceptionMessage": "Fehler bei der Anzeige des Meldungs-Dialogs: {0}",
@ -345,7 +357,7 @@
"DialogUserErrorDialogMessage": "{0}: {1}", "DialogUserErrorDialogMessage": "{0}: {1}",
"DialogUserErrorDialogInfoMessage": "\nWeitere Informationen zur Behebung dieses Fehlers können in unserem Setup-Guide gefunden werden.", "DialogUserErrorDialogInfoMessage": "\nWeitere Informationen zur Behebung dieses Fehlers können in unserem Setup-Guide gefunden werden.",
"DialogUserErrorDialogTitle": "Ryujinx Fehler ({0})", "DialogUserErrorDialogTitle": "Ryujinx Fehler ({0})",
"DialogAmiiboApiTitle": "Amiibo API", "DialogAmiiboApiTitle": "Amiibo-API",
"DialogAmiiboApiFailFetchMessage": "Beim Abrufen von Informationen aus der API ist ein Fehler aufgetreten.", "DialogAmiiboApiFailFetchMessage": "Beim Abrufen von Informationen aus der API ist ein Fehler aufgetreten.",
"DialogAmiiboApiConnectErrorMessage": "Verbindung zum Amiibo API Server kann nicht hergestellt werden. Der Dienst ist möglicherweise nicht verfügbar oder es existiert keine Internetverbindung.", "DialogAmiiboApiConnectErrorMessage": "Verbindung zum Amiibo API Server kann nicht hergestellt werden. Der Dienst ist möglicherweise nicht verfügbar oder es existiert keine Internetverbindung.",
"DialogProfileInvalidProfileErrorMessage": "Das Profil {0} ist mit dem aktuellen Eingabekonfigurationssystem nicht kompatibel.", "DialogProfileInvalidProfileErrorMessage": "Das Profil {0} ist mit dem aktuellen Eingabekonfigurationssystem nicht kompatibel.",
@ -368,6 +380,9 @@
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Systemversion {0} wurde erfolgreich installiert.", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Systemversion {0} wurde erfolgreich installiert.",
"DialogUserProfileDeletionWarningMessage": "Es können keine anderen Profile geöffnet werden, wenn das ausgewählte Profil gelöscht wird.", "DialogUserProfileDeletionWarningMessage": "Es können keine anderen Profile geöffnet werden, wenn das ausgewählte Profil gelöscht wird.",
"DialogUserProfileDeletionConfirmMessage": "Möchtest du das ausgewählte Profil löschen?", "DialogUserProfileDeletionConfirmMessage": "Möchtest du das ausgewählte Profil löschen?",
"DialogUserProfileUnsavedChangesTitle": "Warnung - Nicht gespeicherte Änderungen",
"DialogUserProfileUnsavedChangesMessage": "Sie haben Änderungen an diesem Nutzerprofil vorgenommen, die nicht gespeichert wurden.",
"DialogUserProfileUnsavedChangesSubMessage": "Möchten Sie Ihre Änderungen wirklich verwerfen?",
"DialogControllerSettingsModifiedConfirmMessage": "Die aktuellen Controller-Einstellungen wurden aktualisiert.", "DialogControllerSettingsModifiedConfirmMessage": "Die aktuellen Controller-Einstellungen wurden aktualisiert.",
"DialogControllerSettingsModifiedConfirmSubMessage": "Controller-Einstellungen speichern?", "DialogControllerSettingsModifiedConfirmSubMessage": "Controller-Einstellungen speichern?",
"DialogLoadNcaErrorMessage": "{0}. Fehlerhafte Datei: {1}", "DialogLoadNcaErrorMessage": "{0}. Fehlerhafte Datei: {1}",
@ -416,6 +431,7 @@
"DlcManagerEnableAllButton": "Alle aktivieren", "DlcManagerEnableAllButton": "Alle aktivieren",
"DlcManagerDisableAllButton": "Alle deaktivieren", "DlcManagerDisableAllButton": "Alle deaktivieren",
"MenuBarOptionsChangeLanguage": "Sprache ändern", "MenuBarOptionsChangeLanguage": "Sprache ändern",
"MenuBarShowFileTypes": "Dateitypen anzeigen",
"CommonSort": "Sortieren", "CommonSort": "Sortieren",
"CommonShowNames": "Spiel-Namen anzeigen", "CommonShowNames": "Spiel-Namen anzeigen",
"CommonFavorite": "Favoriten", "CommonFavorite": "Favoriten",
@ -445,6 +461,7 @@
"MemoryManagerSoftwareTooltip": "Verwendung einer Software-Seitentabelle für die Adressumsetzung. Höchste Genauigkeit, aber langsamste Leistung.", "MemoryManagerSoftwareTooltip": "Verwendung einer Software-Seitentabelle für die Adressumsetzung. Höchste Genauigkeit, aber langsamste Leistung.",
"MemoryManagerHostTooltip": "Direkte Zuordnung von Speicher im Host-Adressraum. Viel schnellere JIT-Kompilierung und Ausführung.", "MemoryManagerHostTooltip": "Direkte Zuordnung von Speicher im Host-Adressraum. Viel schnellere JIT-Kompilierung und Ausführung.",
"MemoryManagerUnsafeTooltip": "Direkte Zuordnung des Speichers, aber keine Maskierung der Adresse innerhalb des Gastadressraums vor dem Zugriff. Schneller, aber auf Kosten der Sicherheit. Die Gastanwendung kann von überall in Ryujinx auf den Speicher zugreifen, daher sollte in diesem Modus nur Programme ausgeführt werden denen vertraut wird.", "MemoryManagerUnsafeTooltip": "Direkte Zuordnung des Speichers, aber keine Maskierung der Adresse innerhalb des Gastadressraums vor dem Zugriff. Schneller, aber auf Kosten der Sicherheit. Die Gastanwendung kann von überall in Ryujinx auf den Speicher zugreifen, daher sollte in diesem Modus nur Programme ausgeführt werden denen vertraut wird.",
"UseHypervisorTooltip": "Verwende Hypervisor anstelle von JIT. Verbessert die Leistung stark, falls vorhanden, kann jedoch in seinem aktuellen Zustand instabil sein.",
"DRamTooltip": "Erhöht den Arbeitsspeicher des emulierten Systems von 4 GiB auf 6 GiB.\n\nDies ist nur für Texturenpakete mit höherer Auflösung oder Mods mit 4K-Auflösung nützlich. Diese Option verbessert NICHT die Leistung.\n\nIm Zweifelsfall AUS lassen.", "DRamTooltip": "Erhöht den Arbeitsspeicher des emulierten Systems von 4 GiB auf 6 GiB.\n\nDies ist nur für Texturenpakete mit höherer Auflösung oder Mods mit 4K-Auflösung nützlich. Diese Option verbessert NICHT die Leistung.\n\nIm Zweifelsfall AUS lassen.",
"IgnoreMissingServicesTooltip": "Durch diese Option werden nicht implementierte Dienste der Switch-Firmware ignoriert. Dies kann dabei helfen, Abstürze beim Starten bestimmter Spiele zu umgehen.\n\nIm Zweifelsfall AUS lassen.", "IgnoreMissingServicesTooltip": "Durch diese Option werden nicht implementierte Dienste der Switch-Firmware ignoriert. Dies kann dabei helfen, Abstürze beim Starten bestimmter Spiele zu umgehen.\n\nIm Zweifelsfall AUS lassen.",
"GraphicsBackendThreadingTooltip": "Führt Grafik-Backend Befehle auf einem zweiten Thread aus.\n\nDies beschleunigt die Shader-Kompilierung, reduziert Stottern und verbessert die Leistung auf GPU-Treibern ohne eigene Multithreading-Unterstützung. Geringfügig bessere Leistung bei Treibern mit Multithreading.\n\nIm Zweifelsfall auf AUTO stellen.", "GraphicsBackendThreadingTooltip": "Führt Grafik-Backend Befehle auf einem zweiten Thread aus.\n\nDies beschleunigt die Shader-Kompilierung, reduziert Stottern und verbessert die Leistung auf GPU-Treibern ohne eigene Multithreading-Unterstützung. Geringfügig bessere Leistung bei Treibern mit Multithreading.\n\nIm Zweifelsfall auf AUTO stellen.",
@ -527,6 +544,9 @@
"SwkbdMinCharacters": "Muss mindestens {0} Zeichen lang sein", "SwkbdMinCharacters": "Muss mindestens {0} Zeichen lang sein",
"SwkbdMinRangeCharacters": "Muss {0}-{1} Zeichen lang sein", "SwkbdMinRangeCharacters": "Muss {0}-{1} Zeichen lang sein",
"SoftwareKeyboard": "Software-Tastatur", "SoftwareKeyboard": "Software-Tastatur",
"SoftwareKeyboardModeNumbersOnly": "Nur Zahlen",
"SoftwareKeyboardModeAlphabet": "Keine CJK-Zeichen",
"SoftwareKeyboardModeASCII": "Nur ASCII-Text",
"DialogControllerAppletMessagePlayerRange": "Die Anwendung benötigt {0} Spieler mit:\n\nTYPEN: {1}\n\nSPIELER: {2}\n\n{3}Bitte öffne die Einstellungen und rekonfiguriere die Controller Einstellungen oder drücke auf schließen.", "DialogControllerAppletMessagePlayerRange": "Die Anwendung benötigt {0} Spieler mit:\n\nTYPEN: {1}\n\nSPIELER: {2}\n\n{3}Bitte öffne die Einstellungen und rekonfiguriere die Controller Einstellungen oder drücke auf schließen.",
"DialogControllerAppletMessage": "Die Anwendung benötigt genau {0} Speieler mit:\n\nTYPEN: {1}\n\nSPIELER: {2}\n\n{3}Bitte öffne die Einstellungen und rekonfiguriere die Controller Einstellungen oder drücke auf schließen.", "DialogControllerAppletMessage": "Die Anwendung benötigt genau {0} Speieler mit:\n\nTYPEN: {1}\n\nSPIELER: {2}\n\n{3}Bitte öffne die Einstellungen und rekonfiguriere die Controller Einstellungen oder drücke auf schließen.",
"DialogControllerAppletDockModeSet": "Der 'Docked Modus' ist ausgewählt. Handheld ist ebenfalls ungültig.\n\n", "DialogControllerAppletDockModeSet": "Der 'Docked Modus' ist ausgewählt. Handheld ist ebenfalls ungültig.\n\n",
@ -572,6 +592,7 @@
"DlcWindowTitle": "Spiel-DLC verwalten", "DlcWindowTitle": "Spiel-DLC verwalten",
"UpdateWindowTitle": "Spiel-Updates verwalten", "UpdateWindowTitle": "Spiel-Updates verwalten",
"CheatWindowHeading": "Cheats verfügbar für {0} [{1}]", "CheatWindowHeading": "Cheats verfügbar für {0} [{1}]",
"BuildId": "BuildId:",
"DlcWindowHeading": "DLC verfügbar für {0} [{1}]", "DlcWindowHeading": "DLC verfügbar für {0} [{1}]",
"UserProfilesEditProfile": "Profil bearbeiten", "UserProfilesEditProfile": "Profil bearbeiten",
"Cancel": "Abbrechen", "Cancel": "Abbrechen",
@ -598,7 +619,9 @@
"SettingsTabHotkeysVolumeUpHotkey": "Lautstärke erhöhen:", "SettingsTabHotkeysVolumeUpHotkey": "Lautstärke erhöhen:",
"SettingsTabHotkeysVolumeDownHotkey": "Lautstärke verringern:", "SettingsTabHotkeysVolumeDownHotkey": "Lautstärke verringern:",
"SettingsEnableMacroHLE": "HLE Makros aktivieren", "SettingsEnableMacroHLE": "HLE Makros aktivieren",
"SettingsEnableMacroHLETooltip": "High-level emulation of GPU Macro code.\n\nImproves performance, but may cause graphical glitches in some games.\n\nLeave ON if unsure.", "SettingsEnableMacroHLETooltip": "High-Level-Emulation von GPU-Makrocode.\n\nVerbessert die Leistung, kann aber in einigen Spielen zu Grafikfehlern führen.\n\nBei Unsicherheit AKTIVIEREN.",
"SettingsEnableColorSpacePassthrough": "Farbraum Passthrough",
"SettingsEnableColorSpacePassthroughTooltip": "Weist das Vulkan-Backend an, Farbinformationen ohne Angabe eines Farbraums weiterzuleiten. Für Benutzer mit Wide-Gamut-Displays kann dies zu lebendigeren Farben führen, allerdings auf Kosten der Farbkorrektheit.",
"VolumeShort": "Vol", "VolumeShort": "Vol",
"UserProfilesManageSaves": "Speicherstände verwalten", "UserProfilesManageSaves": "Speicherstände verwalten",
"DeleteUserSave": "Möchtest du den Spielerstand für dieses Spiel löschen?", "DeleteUserSave": "Möchtest du den Spielerstand für dieses Spiel löschen?",
@ -610,5 +633,24 @@
"Search": "Suche", "Search": "Suche",
"UserProfilesRecoverLostAccounts": "Konto wiederherstellen", "UserProfilesRecoverLostAccounts": "Konto wiederherstellen",
"Recover": "Wiederherstellen", "Recover": "Wiederherstellen",
"UserProfilesRecoverHeading": "Speicherstände wurden für die folgenden Konten gefunden" "UserProfilesRecoverHeading": "Speicherstände wurden für die folgenden Konten gefunden",
"UserProfilesRecoverEmptyList": "Keine Profile zum Wiederherstellen",
"GraphicsAATooltip": "Wendet Anti-Aliasing auf das Spiel-Rendering an",
"GraphicsAALabel": "Antialiasing:",
"GraphicsScalingFilterLabel": "Skalierungsfilter:",
"GraphicsScalingFilterTooltip": "Ermöglicht Framebuffer-Skalierung",
"GraphicsScalingFilterLevelLabel": "Stufe",
"GraphicsScalingFilterLevelTooltip": "Skalierungsfilter-Stufe festlegen",
"SmaaLow": "SMAA Niedrig",
"SmaaMedium": "SMAA Mittel",
"SmaaHigh": "SMAA Hoch",
"SmaaUltra": "SMAA Ultra",
"UserEditorTitle": "Nutzer bearbeiten",
"UserEditorTitleCreate": "Nutzer erstellen",
"SettingsTabNetworkInterface": "Netzwerkschnittstelle:",
"NetworkInterfaceTooltip": "Die Netzwerkschnittstelle, die für LAN-Funktionen verwendet wird",
"NetworkInterfaceDefault": "Standard",
"PackagingShaders": "Verpackt Shader",
"AboutChangelogButton": "Changelog in GitHub öffnen",
"AboutChangelogButtonTooltipMessage": "Klicke hier, um das Changelog für diese Version in Ihrem Standardbrowser zu öffnen."
} }

View file

@ -7,6 +7,7 @@
"SettingsTabSystemMemoryManagerModeSoftware": "Λογισμικό", "SettingsTabSystemMemoryManagerModeSoftware": "Λογισμικό",
"SettingsTabSystemMemoryManagerModeHost": "Υπολογιστής (γρήγορο)", "SettingsTabSystemMemoryManagerModeHost": "Υπολογιστής (γρήγορο)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "Χωρίς Ελέγχους (γρηγορότερο, μη ασφαλές)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "Χωρίς Ελέγχους (γρηγορότερο, μη ασφαλές)",
"SettingsTabSystemUseHypervisor": "Χρήση Hypervisor",
"MenuBarFile": "_Αρχείο", "MenuBarFile": "_Αρχείο",
"MenuBarFileOpenFromFile": "_Φόρτωση Αρχείου Εφαρμογής", "MenuBarFileOpenFromFile": "_Φόρτωση Αρχείου Εφαρμογής",
"MenuBarFileOpenUnpacked": "Φόρτωση Απακετάριστου _Παιχνιδιού", "MenuBarFileOpenUnpacked": "Φόρτωση Απακετάριστου _Παιχνιδιού",
@ -22,10 +23,13 @@
"MenuBarActions": "_Δράσεις", "MenuBarActions": "_Δράσεις",
"MenuBarOptionsSimulateWakeUpMessage": "Προσομοίωση Μηνύματος Αφύπνισης", "MenuBarOptionsSimulateWakeUpMessage": "Προσομοίωση Μηνύματος Αφύπνισης",
"MenuBarActionsScanAmiibo": "Σάρωση Amiibo", "MenuBarActionsScanAmiibo": "Σάρωση Amiibo",
"MenuBarTools": "Εργα_λεία", "MenuBarTools": "_Εργαλεία",
"MenuBarToolsInstallFirmware": "Εγκατάσταση Firmware", "MenuBarToolsInstallFirmware": "Εγκατάσταση Firmware",
"MenuBarFileToolsInstallFirmwareFromFile": "Εγκατάσταση Firmware από XCI ή ZIP", "MenuBarFileToolsInstallFirmwareFromFile": "Εγκατάσταση Firmware από XCI ή ZIP",
"MenuBarFileToolsInstallFirmwareFromDirectory": "Εγκατάσταση Firmware από τοποθεσία", "MenuBarFileToolsInstallFirmwareFromDirectory": "Εγκατάσταση Firmware από τοποθεσία",
"MenuBarToolsManageFileTypes": "Διαχείριση τύπων αρχείων",
"MenuBarToolsInstallFileTypes": "Εγκαταστήσετε τύπους αρχείων.",
"MenuBarToolsUninstallFileTypes": "Απεγκαταστήσετε τύπους αρχείων",
"MenuBarHelp": "Βοήθεια", "MenuBarHelp": "Βοήθεια",
"MenuBarHelpCheckForUpdates": "Έλεγχος για Ενημερώσεις", "MenuBarHelpCheckForUpdates": "Έλεγχος για Ενημερώσεις",
"MenuBarHelpAbout": "Σχετικά με", "MenuBarHelpAbout": "Σχετικά με",
@ -38,7 +42,7 @@
"GameListHeaderTimePlayed": "Χρόνος", "GameListHeaderTimePlayed": "Χρόνος",
"GameListHeaderLastPlayed": "Παίχτηκε", "GameListHeaderLastPlayed": "Παίχτηκε",
"GameListHeaderFileExtension": "Κατάληξη", "GameListHeaderFileExtension": "Κατάληξη",
"GameListHeaderFileSize": "Μέγεθος", "GameListHeaderFileSize": "Μέγεθος Αρχείου",
"GameListHeaderPath": "Τοποθεσία", "GameListHeaderPath": "Τοποθεσία",
"GameListContextMenuOpenUserSaveDirectory": "Άνοιγμα Τοποθεσίας Αποθήκευσης Χρήστη", "GameListContextMenuOpenUserSaveDirectory": "Άνοιγμα Τοποθεσίας Αποθήκευσης Χρήστη",
"GameListContextMenuOpenUserSaveDirectoryToolTip": "Ανοίγει την τοποθεσία που περιέχει την Αποθήκευση Χρήστη της εφαρμογής", "GameListContextMenuOpenUserSaveDirectoryToolTip": "Ανοίγει την τοποθεσία που περιέχει την Αποθήκευση Χρήστη της εφαρμογής",
@ -70,13 +74,23 @@
"GameListContextMenuExtractDataLogoToolTip": "Εξαγωγή της ενότητας Logo από την τρέχουσα διαμόρφωση της εφαρμογής (συμπεριλαμβανομένου ενημερώσεων)", "GameListContextMenuExtractDataLogoToolTip": "Εξαγωγή της ενότητας Logo από την τρέχουσα διαμόρφωση της εφαρμογής (συμπεριλαμβανομένου ενημερώσεων)",
"StatusBarGamesLoaded": "{0}/{1} Φορτωμένα Παιχνίδια", "StatusBarGamesLoaded": "{0}/{1} Φορτωμένα Παιχνίδια",
"StatusBarSystemVersion": "Έκδοση Συστήματος: {0}", "StatusBarSystemVersion": "Έκδοση Συστήματος: {0}",
"LinuxVmMaxMapCountDialogTitle": "Low limit for memory mappings detected",
"LinuxVmMaxMapCountDialogTextPrimary": "Would you like to increase the value of vm.max_map_count to {0}",
"LinuxVmMaxMapCountDialogTextSecondary": "Some games might try to create more memory mappings than currently allowed. Ryujinx will crash as soon as this limit gets exceeded.",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "Yes, until the next restart",
"LinuxVmMaxMapCountDialogButtonPersistent": "Yes, permanently",
"LinuxVmMaxMapCountWarningTextPrimary": "Max amount of memory mappings is lower than recommended.",
"LinuxVmMaxMapCountWarningTextSecondary": "The current value of vm.max_map_count ({0}) is lower than {1}. Some games might try to create more memory mappings than currently allowed. Ryujinx will crash as soon as this limit gets exceeded.\n\nYou might want to either manually increase the limit or install pkexec, which allows Ryujinx to assist with that.",
"Settings": "Ρυθμίσεις", "Settings": "Ρυθμίσεις",
"SettingsTabGeneral": "Εμφάνιση", "SettingsTabGeneral": "Εμφάνιση",
"SettingsTabGeneralGeneral": "Γενικά", "SettingsTabGeneralGeneral": "Γενικά",
"SettingsTabGeneralEnableDiscordRichPresence": "Ενεργοποίηση Εμπλουτισμένης Παρουσίας Discord", "SettingsTabGeneralEnableDiscordRichPresence": "Ενεργοποίηση Εμπλουτισμένης Παρουσίας Discord",
"SettingsTabGeneralCheckUpdatesOnLaunch": "Έλεγχος για Ενημερώσεις στην Εκκίνηση", "SettingsTabGeneralCheckUpdatesOnLaunch": "Έλεγχος για Ενημερώσεις στην Εκκίνηση",
"SettingsTabGeneralShowConfirmExitDialog": "Εμφάνιση διαλόγου \"Επιβεβαίωση Εξόδου\".", "SettingsTabGeneralShowConfirmExitDialog": "Εμφάνιση διαλόγου \"Επιβεβαίωση Εξόδου\".",
"SettingsTabGeneralHideCursor": "Απόκρυψη Κέρσορα:",
"SettingsTabGeneralHideCursorNever": "Ποτέ",
"SettingsTabGeneralHideCursorOnIdle": "Απόκρυψη Δρομέα στην Αδράνεια", "SettingsTabGeneralHideCursorOnIdle": "Απόκρυψη Δρομέα στην Αδράνεια",
"SettingsTabGeneralHideCursorAlways": "Πάντα",
"SettingsTabGeneralGameDirectories": "Τοποθεσίες παιχνιδιών", "SettingsTabGeneralGameDirectories": "Τοποθεσίες παιχνιδιών",
"SettingsTabGeneralAdd": "Προσθήκη", "SettingsTabGeneralAdd": "Προσθήκη",
"SettingsTabGeneralRemove": "Αφαίρεση", "SettingsTabGeneralRemove": "Αφαίρεση",
@ -158,6 +172,7 @@
"SettingsTabLoggingEnableFsAccessLogs": "Ενεργοποίηση Καταγραφής Πρόσβασης FS", "SettingsTabLoggingEnableFsAccessLogs": "Ενεργοποίηση Καταγραφής Πρόσβασης FS",
"SettingsTabLoggingFsGlobalAccessLogMode": "Λειτουργία Καταγραφής Καθολικής Πρόσβασης FS:", "SettingsTabLoggingFsGlobalAccessLogMode": "Λειτουργία Καταγραφής Καθολικής Πρόσβασης FS:",
"SettingsTabLoggingDeveloperOptions": "Επιλογές Προγραμματιστή (ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η απόδοση Θα μειωθεί)", "SettingsTabLoggingDeveloperOptions": "Επιλογές Προγραμματιστή (ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η απόδοση Θα μειωθεί)",
"SettingsTabLoggingDeveloperOptionsNote": "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Θα μειώσει την απόδοση",
"SettingsTabLoggingGraphicsBackendLogLevel": "Επίπεδο Καταγραφής Διεπαφής Γραφικών:", "SettingsTabLoggingGraphicsBackendLogLevel": "Επίπεδο Καταγραφής Διεπαφής Γραφικών:",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "Κανένα", "SettingsTabLoggingGraphicsBackendLogLevelNone": "Κανένα",
"SettingsTabLoggingGraphicsBackendLogLevelError": "Σφάλμα", "SettingsTabLoggingGraphicsBackendLogLevelError": "Σφάλμα",
@ -208,26 +223,17 @@
"ControllerSettingsDPadDown": "Κάτω", "ControllerSettingsDPadDown": "Κάτω",
"ControllerSettingsDPadLeft": "Αριστερά", "ControllerSettingsDPadLeft": "Αριστερά",
"ControllerSettingsDPadRight": "Δεξιά", "ControllerSettingsDPadRight": "Δεξιά",
"ControllerSettingsStickButton": "Κουμπί",
"ControllerSettingsStickUp": "Πάνω",
"ControllerSettingsStickDown": "Κάτω",
"ControllerSettingsStickLeft": "Αριστερά",
"ControllerSettingsStickRight": "Δεξιά",
"ControllerSettingsStickStick": "Stick",
"ControllerSettingsStickInvertXAxis": "Invert Stick X",
"ControllerSettingsStickInvertYAxis": "Invert Stick Y",
"ControllerSettingsStickDeadzone": "Deadzone:",
"ControllerSettingsLStick": "Αριστερός Μοχλός", "ControllerSettingsLStick": "Αριστερός Μοχλός",
"ControllerSettingsLStickButton": "Κουμπί",
"ControllerSettingsLStickUp": "Πάνω",
"ControllerSettingsLStickDown": "Κάτω",
"ControllerSettingsLStickLeft": "Αριστερά",
"ControllerSettingsLStickRight": "Δεξιά",
"ControllerSettingsLStickStick": "Μοχλός",
"ControllerSettingsLStickInvertXAxis": "Αντιστροφή Μοχλού X",
"ControllerSettingsLStickInvertYAxis": "Αντιστροφή Μοχλού Y",
"ControllerSettingsLStickDeadzone": "Νεκρή Ζώνη:",
"ControllerSettingsRStick": "Δεξιός Μοχλός", "ControllerSettingsRStick": "Δεξιός Μοχλός",
"ControllerSettingsRStickButton": "Κουμπί",
"ControllerSettingsRStickUp": "Πάνω",
"ControllerSettingsRStickDown": "Κάτω",
"ControllerSettingsRStickLeft": "Αριστερά",
"ControllerSettingsRStickRight": "Δεξιά",
"ControllerSettingsRStickStick": "Μοχλός",
"ControllerSettingsRStickInvertXAxis": "Αντιστροφή Μοχλού X",
"ControllerSettingsRStickInvertYAxis": "Αντιστροφή Μοχλού Y",
"ControllerSettingsRStickDeadzone": "Νεκρή Ζώνη:",
"ControllerSettingsTriggersLeft": "Αριστερή Σκανδάλη", "ControllerSettingsTriggersLeft": "Αριστερή Σκανδάλη",
"ControllerSettingsTriggersRight": "Δεξιά Σκανδάλη", "ControllerSettingsTriggersRight": "Δεξιά Σκανδάλη",
"ControllerSettingsTriggersButtonsLeft": "Αριστερά Κουμπιά Σκανδάλης", "ControllerSettingsTriggersButtonsLeft": "Αριστερά Κουμπιά Σκανδάλης",
@ -262,6 +268,7 @@
"UserProfilesAddNewProfile": "Προσθήκη Νέου Προφίλ", "UserProfilesAddNewProfile": "Προσθήκη Νέου Προφίλ",
"UserProfilesDelete": "Διαγράφω", "UserProfilesDelete": "Διαγράφω",
"UserProfilesClose": "Κλείσιμο", "UserProfilesClose": "Κλείσιμο",
"ProfileNameSelectionWatermark": "Επιλέξτε ψευδώνυμο",
"ProfileImageSelectionTitle": "Επιλογή Εικόνας Προφίλ", "ProfileImageSelectionTitle": "Επιλογή Εικόνας Προφίλ",
"ProfileImageSelectionHeader": "Επιλέξτε μία Εικόνα Προφίλ", "ProfileImageSelectionHeader": "Επιλέξτε μία Εικόνα Προφίλ",
"ProfileImageSelectionNote": "Μπορείτε να εισαγάγετε μία προσαρμοσμένη εικόνα προφίλ ή να επιλέξετε ένα avatar από το Firmware", "ProfileImageSelectionNote": "Μπορείτε να εισαγάγετε μία προσαρμοσμένη εικόνα προφίλ ή να επιλέξετε ένα avatar από το Firmware",
@ -282,6 +289,7 @@
"ControllerSettingsSaveProfileToolTip": "Αποθήκευση Προφίλ", "ControllerSettingsSaveProfileToolTip": "Αποθήκευση Προφίλ",
"MenuBarFileToolsTakeScreenshot": "Λήψη Στιγμιότυπου", "MenuBarFileToolsTakeScreenshot": "Λήψη Στιγμιότυπου",
"MenuBarFileToolsHideUi": "Απόκρυψη UI", "MenuBarFileToolsHideUi": "Απόκρυψη UI",
"GameListContextMenuRunApplication": "Run Application",
"GameListContextMenuToggleFavorite": "Εναλλαγή Αγαπημένου", "GameListContextMenuToggleFavorite": "Εναλλαγή Αγαπημένου",
"GameListContextMenuToggleFavoriteToolTip": "Εναλλαγή της Κατάστασης Αγαπημένο του Παιχνιδιού", "GameListContextMenuToggleFavoriteToolTip": "Εναλλαγή της Κατάστασης Αγαπημένο του Παιχνιδιού",
"SettingsTabGeneralTheme": "Θέμα", "SettingsTabGeneralTheme": "Θέμα",
@ -337,6 +345,10 @@
"DialogFirmwareInstallEmbeddedSuccessMessage": "Δεν βρέθηκε εγκατεστημένο Firmware, αλλά το Ryujinx μπόρεσε να εγκαταστήσει το Firmware {0} από το παρεχόμενο παιχνίδι.\nΟ εξομοιωτής θα ξεκινήσει τώρα.", "DialogFirmwareInstallEmbeddedSuccessMessage": "Δεν βρέθηκε εγκατεστημένο Firmware, αλλά το Ryujinx μπόρεσε να εγκαταστήσει το Firmware {0} από το παρεχόμενο παιχνίδι.\nΟ εξομοιωτής θα ξεκινήσει τώρα.",
"DialogFirmwareNoFirmwareInstalledMessage": "Δεν έχει εγκατασταθεί Firmware", "DialogFirmwareNoFirmwareInstalledMessage": "Δεν έχει εγκατασταθεί Firmware",
"DialogFirmwareInstalledMessage": "Το Firmware {0} εγκαταστάθηκε", "DialogFirmwareInstalledMessage": "Το Firmware {0} εγκαταστάθηκε",
"DialogInstallFileTypesSuccessMessage": "Επιτυχής εγκατάσταση τύπων αρχείων!",
"DialogInstallFileTypesErrorMessage": "Απέτυχε η εγκατάσταση τύπων αρχείων.",
"DialogUninstallFileTypesSuccessMessage": "Επιτυχής απεγκατάσταση τύπων αρχείων!",
"DialogUninstallFileTypesErrorMessage": "Αποτυχία απεγκατάστασης τύπων αρχείων.",
"DialogOpenSettingsWindowLabel": "Άνοιγμα Παραθύρου Ρυθμίσεων", "DialogOpenSettingsWindowLabel": "Άνοιγμα Παραθύρου Ρυθμίσεων",
"DialogControllerAppletTitle": "Applet Χειρισμού", "DialogControllerAppletTitle": "Applet Χειρισμού",
"DialogMessageDialogErrorExceptionMessage": "Σφάλμα εμφάνισης του διαλόγου Μηνυμάτων: {0}", "DialogMessageDialogErrorExceptionMessage": "Σφάλμα εμφάνισης του διαλόγου Μηνυμάτων: {0}",
@ -345,7 +357,7 @@
"DialogUserErrorDialogMessage": "{0}: {1}", "DialogUserErrorDialogMessage": "{0}: {1}",
"DialogUserErrorDialogInfoMessage": "\nΓια πληροφορίες σχετικά με τον τρόπο διόρθωσης του σφάλματος, ακολουθήστε τον Οδηγό Εγκατάστασης.", "DialogUserErrorDialogInfoMessage": "\nΓια πληροφορίες σχετικά με τον τρόπο διόρθωσης του σφάλματος, ακολουθήστε τον Οδηγό Εγκατάστασης.",
"DialogUserErrorDialogTitle": "Σφάλμα Ryujinx ({0})", "DialogUserErrorDialogTitle": "Σφάλμα Ryujinx ({0})",
"DialogAmiiboApiTitle": "Amiibo API", "DialogAmiiboApiTitle": "API για Amiibo.",
"DialogAmiiboApiFailFetchMessage": "Παρουσιάστηκε σφάλμα κατά την ανάκτηση πληροφοριών από το API.", "DialogAmiiboApiFailFetchMessage": "Παρουσιάστηκε σφάλμα κατά την ανάκτηση πληροφοριών από το API.",
"DialogAmiiboApiConnectErrorMessage": "Δεν είναι δυνατή η σύνδεση με τον διακομιστή Amiibo API. Η υπηρεσία μπορεί να είναι εκτός λειτουργίας ή μπορεί να χρειαστεί να επαληθεύσετε ότι έχετε ενεργή σύνδεσή στο Διαδίκτυο.", "DialogAmiiboApiConnectErrorMessage": "Δεν είναι δυνατή η σύνδεση με τον διακομιστή Amiibo API. Η υπηρεσία μπορεί να είναι εκτός λειτουργίας ή μπορεί να χρειαστεί να επαληθεύσετε ότι έχετε ενεργή σύνδεσή στο Διαδίκτυο.",
"DialogProfileInvalidProfileErrorMessage": "Το προφίλ {0} δεν είναι συμβατό με το τρέχον σύστημα χειρισμού.", "DialogProfileInvalidProfileErrorMessage": "Το προφίλ {0} δεν είναι συμβατό με το τρέχον σύστημα χειρισμού.",
@ -368,6 +380,9 @@
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Η έκδοση συστήματος {0} εγκαταστάθηκε με επιτυχία.", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Η έκδοση συστήματος {0} εγκαταστάθηκε με επιτυχία.",
"DialogUserProfileDeletionWarningMessage": "Δεν θα υπάρχουν άλλα προφίλ εάν διαγραφεί το επιλεγμένο", "DialogUserProfileDeletionWarningMessage": "Δεν θα υπάρχουν άλλα προφίλ εάν διαγραφεί το επιλεγμένο",
"DialogUserProfileDeletionConfirmMessage": "Θέλετε να διαγράψετε το επιλεγμένο προφίλ", "DialogUserProfileDeletionConfirmMessage": "Θέλετε να διαγράψετε το επιλεγμένο προφίλ",
"DialogUserProfileUnsavedChangesTitle": "Προσοχή - Μην Αποθηκευμένες Αλλαγές.",
"DialogUserProfileUnsavedChangesMessage": "Έχετε κάνει αλλαγές σε αυτό το προφίλ χρήστη που δεν έχουν αποθηκευτεί.",
"DialogUserProfileUnsavedChangesSubMessage": "Θέλετε να απορρίψετε τις αλλαγές σας;",
"DialogControllerSettingsModifiedConfirmMessage": "Οι τρέχουσες ρυθμίσεις χειρισμού έχουν ενημερωθεί.", "DialogControllerSettingsModifiedConfirmMessage": "Οι τρέχουσες ρυθμίσεις χειρισμού έχουν ενημερωθεί.",
"DialogControllerSettingsModifiedConfirmSubMessage": "Θέλετε να αποθηκεύσετε;", "DialogControllerSettingsModifiedConfirmSubMessage": "Θέλετε να αποθηκεύσετε;",
"DialogLoadNcaErrorMessage": "{0}. Σφάλμα Αρχείου: {1}", "DialogLoadNcaErrorMessage": "{0}. Σφάλμα Αρχείου: {1}",
@ -386,7 +401,7 @@
"CommonAuto": "Αυτόματο", "CommonAuto": "Αυτόματο",
"CommonOff": "Ανενεργό", "CommonOff": "Ανενεργό",
"CommonOn": "Ενεργό", "CommonOn": "Ενεργό",
"InputDialogYes": "Ναί", "InputDialogYes": "Ναι",
"InputDialogNo": "Όχι", "InputDialogNo": "Όχι",
"DialogProfileInvalidProfileNameErrorMessage": "Το όνομα αρχείου περιέχει μη έγκυρους χαρακτήρες. Παρακαλώ προσπαθήστε ξανά.", "DialogProfileInvalidProfileNameErrorMessage": "Το όνομα αρχείου περιέχει μη έγκυρους χαρακτήρες. Παρακαλώ προσπαθήστε ξανά.",
"MenuBarOptionsPauseEmulation": "Παύση", "MenuBarOptionsPauseEmulation": "Παύση",
@ -408,7 +423,7 @@
"AmiiboScanButtonLabel": "Σαρώστε το", "AmiiboScanButtonLabel": "Σαρώστε το",
"AmiiboOptionsShowAllLabel": "Εμφάνιση όλων των Amiibo", "AmiiboOptionsShowAllLabel": "Εμφάνιση όλων των Amiibo",
"AmiiboOptionsUsRandomTagLabel": "Hack: Χρησιμοποιήστε τυχαίο αναγνωριστικό UUID", "AmiiboOptionsUsRandomTagLabel": "Hack: Χρησιμοποιήστε τυχαίο αναγνωριστικό UUID",
"DlcManagerTableHeadingEnabledLabel": "Ενεργοποιήθηκε", "DlcManagerTableHeadingEnabledLabel": "Ενεργοποιημένο",
"DlcManagerTableHeadingTitleIdLabel": "Αναγνωριστικό τίτλου", "DlcManagerTableHeadingTitleIdLabel": "Αναγνωριστικό τίτλου",
"DlcManagerTableHeadingContainerPathLabel": "Τοποθεσία DLC", "DlcManagerTableHeadingContainerPathLabel": "Τοποθεσία DLC",
"DlcManagerTableHeadingFullPathLabel": "Πλήρης τοποθεσία", "DlcManagerTableHeadingFullPathLabel": "Πλήρης τοποθεσία",
@ -416,6 +431,7 @@
"DlcManagerEnableAllButton": "Ενεργοποίηση Όλων", "DlcManagerEnableAllButton": "Ενεργοποίηση Όλων",
"DlcManagerDisableAllButton": "Απενεργοποίηση Όλων", "DlcManagerDisableAllButton": "Απενεργοποίηση Όλων",
"MenuBarOptionsChangeLanguage": "Αλλαξε γλώσσα", "MenuBarOptionsChangeLanguage": "Αλλαξε γλώσσα",
"MenuBarShowFileTypes": "Εμφάνιση Τύπων Αρχείων",
"CommonSort": "Κατάταξη", "CommonSort": "Κατάταξη",
"CommonShowNames": "Εμφάνιση ονομάτων", "CommonShowNames": "Εμφάνιση ονομάτων",
"CommonFavorite": "Αγαπημένα", "CommonFavorite": "Αγαπημένα",
@ -445,6 +461,7 @@
"MemoryManagerSoftwareTooltip": "Χρησιμοποιήστε έναν πίνακα σελίδων λογισμικού για τη μετάφραση διευθύνσεων. Υψηλότερη ακρίβεια αλλά πιο αργή απόδοση.", "MemoryManagerSoftwareTooltip": "Χρησιμοποιήστε έναν πίνακα σελίδων λογισμικού για τη μετάφραση διευθύνσεων. Υψηλότερη ακρίβεια αλλά πιο αργή απόδοση.",
"MemoryManagerHostTooltip": "Απευθείας αντιστοίχιση της μνήμης στον χώρο διευθύνσεων υπολογιστή υποδοχής. Πολύ πιο γρήγορη μεταγλώττιση και εκτέλεση JIT.", "MemoryManagerHostTooltip": "Απευθείας αντιστοίχιση της μνήμης στον χώρο διευθύνσεων υπολογιστή υποδοχής. Πολύ πιο γρήγορη μεταγλώττιση και εκτέλεση JIT.",
"MemoryManagerUnsafeTooltip": "Απευθείας χαρτογράφηση της μνήμης, αλλά μην καλύπτετε τη διεύθυνση εντός του χώρου διευθύνσεων επισκέπτη πριν από την πρόσβαση. Πιο γρήγορα, αλλά με κόστος ασφάλειας. Η εφαρμογή μπορεί να έχει πρόσβαση στη μνήμη από οπουδήποτε στο Ryujinx, επομένως εκτελείτε μόνο προγράμματα που εμπιστεύεστε με αυτήν τη λειτουργία.", "MemoryManagerUnsafeTooltip": "Απευθείας χαρτογράφηση της μνήμης, αλλά μην καλύπτετε τη διεύθυνση εντός του χώρου διευθύνσεων επισκέπτη πριν από την πρόσβαση. Πιο γρήγορα, αλλά με κόστος ασφάλειας. Η εφαρμογή μπορεί να έχει πρόσβαση στη μνήμη από οπουδήποτε στο Ryujinx, επομένως εκτελείτε μόνο προγράμματα που εμπιστεύεστε με αυτήν τη λειτουργία.",
"UseHypervisorTooltip": "Χρησιμοποιήστε Hypervisor αντί για JIT. Βελτιώνει σημαντικά την απόδοση όταν διατίθεται, αλλά μπορεί να είναι ασταθής στην τρέχουσα κατάστασή του.",
"DRamTooltip": "Επεκτείνει την ποσότητα της μνήμης στο εξομοιούμενο σύστημα από 4 GiB σε 6 GiB", "DRamTooltip": "Επεκτείνει την ποσότητα της μνήμης στο εξομοιούμενο σύστημα από 4 GiB σε 6 GiB",
"IgnoreMissingServicesTooltip": "Ενεργοποίηση ή απενεργοποίηση της αγνοώησης για υπηρεσίες που λείπουν", "IgnoreMissingServicesTooltip": "Ενεργοποίηση ή απενεργοποίηση της αγνοώησης για υπηρεσίες που λείπουν",
"GraphicsBackendThreadingTooltip": "Ενεργοποίηση Πολυνηματικής Επεξεργασίας Γραφικών", "GraphicsBackendThreadingTooltip": "Ενεργοποίηση Πολυνηματικής Επεξεργασίας Γραφικών",
@ -499,116 +516,141 @@
"DialogUpdaterFlatpakNotSupportedMessage": "Παρακαλούμε ενημερώστε το Ryujinx μέσω FlatHub.", "DialogUpdaterFlatpakNotSupportedMessage": "Παρακαλούμε ενημερώστε το Ryujinx μέσω FlatHub.",
"UpdaterDisabledWarningTitle": "Ο Διαχειριστής Ενημερώσεων Είναι Απενεργοποιημένος!", "UpdaterDisabledWarningTitle": "Ο Διαχειριστής Ενημερώσεων Είναι Απενεργοποιημένος!",
"GameListContextMenuOpenSdModsDirectory": "Άνοιγμα Της Τοποθεσίας Των Atmosphere Mods", "GameListContextMenuOpenSdModsDirectory": "Άνοιγμα Της Τοποθεσίας Των Atmosphere Mods",
"GameListContextMenuOpenSdModsDirectoryToolTip": "Opens the alternative SD card Atmosphere directory which contains Application's Mods. Useful for mods that are packaged for real hardware.", "GameListContextMenuOpenSdModsDirectoryToolTip": "Ανοίγει τον εναλλακτικό SD card Atmosphere κατάλογο που περιέχει Mods για το Application. Χρήσιμο για mods τα οποία συσκευάστηκαν για την πραγματική κονσόλα.",
"ControllerSettingsRotate90": "Rotate 90° Clockwise", "ControllerSettingsRotate90": "Περιστροφή 90° Δεξιόστροφα",
"IconSize": "Icon Size", "IconSize": "Μέγεθος Εικονιδίου",
"IconSizeTooltip": "Change the size of game icons", "IconSizeTooltip": "Αλλάξτε μέγεθος εικονιδίων των παιχνιδιών",
"MenuBarOptionsShowConsole": "Show Console", "MenuBarOptionsShowConsole": "Εμφάνιση Κονσόλας",
"ShaderCachePurgeError": "Error purging shader cache at {0}: {1}", "ShaderCachePurgeError": "Σφάλμα κατά την εκκαθάριση του shader cache στο {0}: {1}",
"UserErrorNoKeys": "Keys not found", "UserErrorNoKeys": "Τα κλειδιά δεν βρέθηκαν",
"UserErrorNoFirmware": "Firmware not found", "UserErrorNoFirmware": "Το firmware δε βρέθηκε",
"UserErrorFirmwareParsingFailed": "Firmware parsing error", "UserErrorFirmwareParsingFailed": "Σφάλμα ανάλυσης firmware",
"UserErrorApplicationNotFound": "Application not found", "UserErrorApplicationNotFound": "Η εφαρμογή δε βρέθηκε",
"UserErrorUnknown": "Unknown error", "UserErrorUnknown": "Άγνωστο σφάλμα",
"UserErrorUndefined": "Undefined error", "UserErrorUndefined": "Αόριστο σφάλμα",
"UserErrorNoKeysDescription": "Ryujinx was unable to find your 'prod.keys' file", "UserErrorNoKeysDescription": "Το Ryujinx δεν κατάφερε να εντοπίσει το αρχείο 'prod.keys'",
"UserErrorNoFirmwareDescription": "Ryujinx was unable to find any firmwares installed", "UserErrorNoFirmwareDescription": "Το Ryujinx δεν κατάφερε να εντοπίσει κανένα εγκατεστημένο firmware",
"UserErrorFirmwareParsingFailedDescription": "Ryujinx was unable to parse the provided firmware. This is usually caused by outdated keys.", "UserErrorFirmwareParsingFailedDescription": "Το Ryujinx δεν κατάφερε να αναλύσει το συγκεκριμένο firmware. Αυτό συνήθως οφείλετε σε ξεπερασμένα/παλιά κλειδιά.",
"UserErrorApplicationNotFoundDescription": "Ryujinx couldn't find a valid application at the given path.", "UserErrorApplicationNotFoundDescription": "Το Ryujinx δεν κατάφερε να εντοπίσει έγκυρη εφαρμογή στη συγκεκριμένη διαδρομή.",
"UserErrorUnknownDescription": "An unknown error occured!", "UserErrorUnknownDescription": "Παρουσιάστηκε άγνωστο σφάλμα.",
"UserErrorUndefinedDescription": "An undefined error occured! This shouldn't happen, please contact a dev!", "UserErrorUndefinedDescription": "Παρουσιάστηκε ένα άγνωστο σφάλμα! Αυτό δεν πρέπει να συμβεί, παρακαλώ επικοινωνήστε με έναν προγραμματιστή!",
"OpenSetupGuideMessage": "Open the Setup Guide", "OpenSetupGuideMessage": "Ανοίξτε τον Οδηγό Εγκατάστασης.",
"NoUpdate": "No Update", "NoUpdate": "Καμία Eνημέρωση",
"TitleUpdateVersionLabel": "Version {0} - {1}", "TitleUpdateVersionLabel": "Version {0} - {1}",
"RyujinxInfo": "Ryujinx - Info", "RyujinxInfo": "Ryujinx - Πληροφορίες",
"RyujinxConfirm": "Ryujinx - Confirmation", "RyujinxConfirm": "Ryujinx - Επιβεβαίωση",
"FileDialogAllTypes": "All types", "FileDialogAllTypes": "Όλοι οι τύποι",
"Never": "Never", "Never": "Ποτέ",
"SwkbdMinCharacters": "Must be at least {0} characters long", "SwkbdMinCharacters": "Πρέπει να έχει μήκος τουλάχιστον {0} χαρακτήρες",
"SwkbdMinRangeCharacters": "Must be {0}-{1} characters long", "SwkbdMinRangeCharacters": "Πρέπει να έχει μήκος {0}-{1} χαρακτήρες",
"SoftwareKeyboard": "Software Keyboard", "SoftwareKeyboard": "Εικονικό Πληκτρολόγιο",
"DialogControllerAppletMessagePlayerRange": "Application requests {0} player(s) with:\n\nTYPES: {1}\n\nPLAYERS: {2}\n\n{3}Please open Settings and reconfigure Input now or press Close.", "SoftwareKeyboardModeNumbersOnly": "Must be numbers only",
"DialogControllerAppletMessage": "Application requests exactly {0} player(s) with:\n\nTYPES: {1}\n\nPLAYERS: {2}\n\n{3}Please open Settings and reconfigure Input now or press Close.", "SoftwareKeyboardModeAlphabet": "Must be non CJK-characters only",
"DialogControllerAppletDockModeSet": "Docked mode set. Handheld is also invalid.\n\n", "SoftwareKeyboardModeASCII": "Must be ASCII text only",
"UpdaterRenaming": "Renaming Old Files...", "DialogControllerAppletMessagePlayerRange": "Η εφαρμογή ζητά {0} παίκτη(ες) με:\n\nΤΥΠΟΥΣ: {1}\n\nΠΑΙΚΤΕΣ: {2}\n\n{3}Παρακαλώ ανοίξτε τις ρυθμίσεις και αλλάξτε τις ρυθμίσεις εισαγωγής τώρα ή πατήστε Κλείσιμο.",
"UpdaterRenameFailed": "Updater was unable to rename file: {0}", "DialogControllerAppletMessage": "Η εφαρμογή ζητά ακριβώς {0} παίκτη(ες) με:\n\nΤΥΠΟΥΣ: {1}\n\nΠΑΙΚΤΕΣ: {2}\n\n{3}Παρακαλώ ανοίξτε τις ρυθμίσεις και αλλάξτε τις Ρυθμίσεις εισαγωγής τώρα ή πατήστε Κλείσιμο.",
"UpdaterAddingFiles": "Adding New Files...", "DialogControllerAppletDockModeSet": "Η κατάσταση Docked ενεργοποιήθηκε. Το συσκευή παλάμης είναι επίσης μην αποδεκτό.",
"UpdaterExtracting": "Extracting Update...", "UpdaterRenaming": "Μετονομασία Παλαιών Αρχείων...",
"UpdaterDownloading": "Downloading Update...", "UpdaterRenameFailed": "Δεν ήταν δυνατή η μετονομασία του αρχείου: {0}",
"Game": "Game", "UpdaterAddingFiles": "Προσθήκη Νέων Αρχείων...",
"Docked": "Docked", "UpdaterExtracting": "Εξαγωγή Ενημέρωσης...",
"Handheld": "Handheld", "UpdaterDownloading": "Λήψη Ενημέρωσης...",
"ConnectionError": "Connection Error.", "Game": "Παιχνίδι",
"AboutPageDeveloperListMore": "{0} and more...", "Docked": "Προσκολλημένο",
"ApiError": "API Error.", "Handheld": "Χειροκίνητο",
"LoadingHeading": "Loading {0}", "ConnectionError": "Σφάλμα Σύνδεσης.",
"CompilingPPTC": "Compiling PTC", "AboutPageDeveloperListMore": "{0} και περισσότερα...",
"CompilingShaders": "Compiling Shaders", "ApiError": "Σφάλμα API.",
"AllKeyboards": "All keyboards", "LoadingHeading": "Φόρτωση {0}",
"OpenFileDialogTitle": "Select a supported file to open", "CompilingPPTC": "Μεταγλώττιση του PTC",
"OpenFolderDialogTitle": "Select a folder with an unpacked game", "CompilingShaders": "Σύνταξη των Shaders",
"AllSupportedFormats": "All Supported Formats", "AllKeyboards": "Όλα τα πληκτρολόγια",
"RyujinxUpdater": "Ryujinx Updater", "OpenFileDialogTitle": "Επιλέξτε ένα υποστηριζόμενο αρχείο για άνοιγμα",
"SettingsTabHotkeys": "Keyboard Hotkeys", "OpenFolderDialogTitle": "Επιλέξτε ένα φάκελο με ένα αποσυμπιεσμένο παιχνίδι",
"SettingsTabHotkeysHotkeys": "Keyboard Hotkeys", "AllSupportedFormats": "Όλες Οι Υποστηριζόμενες Μορφές",
"SettingsTabHotkeysToggleVsyncHotkey": "Toggle VSync:", "RyujinxUpdater": "Ryujinx Ενημερωτής",
"SettingsTabHotkeysScreenshotHotkey": "Screenshot:", "SettingsTabHotkeys": "Συντομεύσεις Πληκτρολογίου",
"SettingsTabHotkeysShowUiHotkey": "Show UI:", "SettingsTabHotkeysHotkeys": "Συντομεύσεις Πληκτρολογίου",
"SettingsTabHotkeysPauseHotkey": "Pause:", "SettingsTabHotkeysToggleVsyncHotkey": "Εναλλαγή VSync:",
"SettingsTabHotkeysToggleMuteHotkey": "Mute:", "SettingsTabHotkeysScreenshotHotkey": "Στιγμιότυπο Οθόνης:",
"ControllerMotionTitle": "Motion Control Settings", "SettingsTabHotkeysShowUiHotkey": "Εμφάνιση Διεπαφής Χρήστη:",
"ControllerRumbleTitle": "Rumble Settings", "SettingsTabHotkeysPauseHotkey": "Παύση:",
"SettingsSelectThemeFileDialogTitle": "Select Theme File", "SettingsTabHotkeysToggleMuteHotkey": "Σίγαση:",
"SettingsXamlThemeFile": "Xaml Theme File", "ControllerMotionTitle": "Ρυθμίσεις Ελέγχου Κίνησης",
"AvatarWindowTitle": "Manage Accounts - Avatar", "ControllerRumbleTitle": "Ρυθμίσεις Δόνησης",
"SettingsSelectThemeFileDialogTitle": "Επιλογή Αρχείου Θέματος",
"SettingsXamlThemeFile": "Αρχείο Θέματος Xaml",
"AvatarWindowTitle": "Διαχείριση Λογαριασμών - Avatar",
"Amiibo": "Amiibo", "Amiibo": "Amiibo",
"Unknown": "Unknown", "Unknown": "Άγνωστο",
"Usage": "Usage", "Usage": "Χρήση",
"Writable": "Writable", "Writable": "Εγγράψιμο",
"SelectDlcDialogTitle": "Select DLC files", "SelectDlcDialogTitle": "Επιλογή αρχείων DLC",
"SelectUpdateDialogTitle": "Select update files", "SelectUpdateDialogTitle": "Επιλογή αρχείων ενημέρωσης",
"UserProfileWindowTitle": "User Profiles Manager", "UserProfileWindowTitle": "Διαχειριστής Προφίλ Χρήστη",
"CheatWindowTitle": "Cheats Manager", "CheatWindowTitle": "Διαχειριστής των Cheats",
"DlcWindowTitle": "Downloadable Content Manager", "DlcWindowTitle": "Downloadable Content Manager",
"UpdateWindowTitle": "Title Update Manager", "UpdateWindowTitle": "Διαχειριστής Ενημερώσεων Τίτλου",
"CheatWindowHeading": "Cheats Available for {0} [{1}]", "CheatWindowHeading": "Διαθέσιμα Cheats για {0} [{1}]",
"BuildId": "BuildId:",
"DlcWindowHeading": "{0} Downloadable Content(s) available for {1} ({2})", "DlcWindowHeading": "{0} Downloadable Content(s) available for {1} ({2})",
"UserProfilesEditProfile": "Edit Selected", "UserProfilesEditProfile": "Επεξεργασία Επιλεγμένων",
"Cancel": "Cancel", "Cancel": "Ακύρωση",
"Save": "Save", "Save": "Αποθήκευση",
"Discard": "Discard", "Discard": "Απόρριψη",
"UserProfilesSetProfileImage": "Set Profile Image", "UserProfilesSetProfileImage": "Ορισμός Εικόνας Προφίλ",
"UserProfileEmptyNameError": "Name is required", "UserProfileEmptyNameError": "Απαιτείται όνομα",
"UserProfileNoImageError": "Profile image must be set", "UserProfileNoImageError": "Η εικόνα προφίλ πρέπει να οριστεί",
"GameUpdateWindowHeading": "{0} Update(s) available for {1} ({2})", "GameUpdateWindowHeading": "{0} Update(s) available for {1} ({2})",
"SettingsTabHotkeysResScaleUpHotkey": "Increase resolution:", "SettingsTabHotkeysResScaleUpHotkey": "Αύξηση της ανάλυσης:",
"SettingsTabHotkeysResScaleDownHotkey": "Decrease resolution:", "SettingsTabHotkeysResScaleDownHotkey": "Μείωση της ανάλυσης:",
"UserProfilesName": "Name:", "UserProfilesName": "Όνομα:",
"UserProfilesUserId": "User Id:", "UserProfilesUserId": "User Id:",
"SettingsTabGraphicsBackend": "Graphics Backend", "SettingsTabGraphicsBackend": "Σύστημα Υποστήριξης Γραφικών",
"SettingsTabGraphicsBackendTooltip": "Graphics Backend to use", "SettingsTabGraphicsBackendTooltip": "Backend Γραφικών που θα χρησιμοποιηθεί",
"SettingsEnableTextureRecompression": "Enable Texture Recompression", "SettingsEnableTextureRecompression": "Ενεργοποίηση Επανασυμπίεσης Των Texture",
"SettingsEnableTextureRecompressionTooltip": "Compresses certain textures in order to reduce VRAM usage.\n\nRecommended for use with GPUs that have less than 4GiB VRAM.\n\nLeave OFF if unsure.", "SettingsEnableTextureRecompressionTooltip": "Συμπιέζει συγκεκριμένα texture για να μειωθεί η χρήση της VRAM.\nΣυνίσταται για χρήση σε κάρτες γραφικών με λιγότερο από 4 GiB VRAM.\nΑφήστε το Απενεργοποιημένο αν είστε αβέβαιοι.",
"SettingsTabGraphicsPreferredGpu": "Preferred GPU", "SettingsTabGraphicsPreferredGpu": "Προτιμώμενη GPU",
"SettingsTabGraphicsPreferredGpuTooltip": "Select the graphics card that will be used with the Vulkan graphics backend.\n\nDoes not affect the GPU that OpenGL will use.\n\nSet to the GPU flagged as \"dGPU\" if unsure. If there isn't one, leave untouched.", "SettingsTabGraphicsPreferredGpuTooltip": "Επιλέξτε την κάρτα γραφικών η οποία θα χρησιμοποιηθεί από το Vulkan.\n\nΔεν επηρεάζει το OpenGL.\n\nΔιαλέξτε την GPU που διαθέτει την υπόδειξη \"dGPU\" αν δεν είστε βέβαιοι. Αν δεν υπάρχει κάποιαν, το πειράξετε",
"SettingsAppRequiredRestartMessage": "Ryujinx Restart Required", "SettingsAppRequiredRestartMessage": "Απαιτείται Επανεκκίνηση Του Ryujinx",
"SettingsGpuBackendRestartMessage": "Graphics Backend or GPU settings have been modified. This will require a restart to be applied", "SettingsGpuBackendRestartMessage": "Οι ρυθμίσεις GPU έχουν αλλαχτεί. Θα χρειαστεί επανεκκίνηση του Ryujinx για να τεθούν σε ισχύ.",
"SettingsGpuBackendRestartSubMessage": "Do you want to restart now?", "SettingsGpuBackendRestartSubMessage": "Θέλετε να κάνετε επανεκκίνηση τώρα;",
"RyujinxUpdaterMessage": "Do you want to update Ryujinx to the latest version?", "RyujinxUpdaterMessage": "Θέλετε να ενημερώσετε το Ryujinx στην πιο πρόσφατη έκδοση:",
"SettingsTabHotkeysVolumeUpHotkey": "Increase Volume:", "SettingsTabHotkeysVolumeUpHotkey": "Αύξηση Έντασης:",
"SettingsTabHotkeysVolumeDownHotkey": "Decrease Volume:", "SettingsTabHotkeysVolumeDownHotkey": "Μείωση Έντασης:",
"SettingsEnableMacroHLE": "Enable Macro HLE", "SettingsEnableMacroHLE": "Ενεργοποίηση του Macro HLE",
"SettingsEnableMacroHLETooltip": "High-level emulation of GPU Macro code.\n\nImproves performance, but may cause graphical glitches in some games.\n\nLeave ON if unsure.", "SettingsEnableMacroHLETooltip": "Προσομοίωση του κώδικα GPU Macro .\n\nΒελτιώνει την απόδοση, αλλά μπορεί να προκαλέσει γραφικά προβλήματα σε μερικά παιχνίδια.\n\nΑφήστε ΕΝΕΡΓΟ αν δεν είστε σίγουροι.",
"VolumeShort": "Vol", "SettingsEnableColorSpacePassthrough": "Color Space Passthrough",
"UserProfilesManageSaves": "Manage Saves", "SettingsEnableColorSpacePassthroughTooltip": "Directs the Vulkan backend to pass through color information without specifying a color space. For users with wide gamut displays, this may result in more vibrant colors, at the cost of color correctness.",
"DeleteUserSave": "Do you want to delete user save for this game?", "VolumeShort": "Έντ.",
"IrreversibleActionNote": "This action is not reversible.", "UserProfilesManageSaves": "Διαχείριση Των Save",
"DeleteUserSave": "Επιθυμείτε να διαγράψετε το save χρήστη για το συγκεκριμένο παιχνίδι;",
"IrreversibleActionNote": "Αυτή η ενέργεια είναι μη αναστρέψιμη.",
"SaveManagerHeading": "Manage Saves for {0}", "SaveManagerHeading": "Manage Saves for {0}",
"SaveManagerTitle": "Save Manager", "SaveManagerTitle": "Διαχειριστής Save",
"Name": "Name", "Name": "Όνομα",
"Size": "Size", "Size": "Μέγεθος",
"Search": "Search", "Search": "Αναζήτηση",
"UserProfilesRecoverLostAccounts": "Recover Lost Accounts", "UserProfilesRecoverLostAccounts": "Ανάκτηση Χαμένων Λογαριασμών",
"Recover": "Recover", "Recover": "Ανάκτηση",
"UserProfilesRecoverHeading": "Saves were found for the following accounts" "UserProfilesRecoverHeading": "Βρέθηκαν save για τους ακόλουθους λογαριασμούς",
"UserProfilesRecoverEmptyList": "Δεν υπάρχουν προφίλ για ανάκτηση",
"GraphicsAATooltip": "Εφαρμόζει anti-aliasing στην απόδοση του παιχνιδιού",
"GraphicsAALabel": "Anti-Aliasing",
"GraphicsScalingFilterLabel": "Φίλτρο Κλιμάκωσης:",
"GraphicsScalingFilterTooltip": "Ενεργοποιεί Κλίμακα Framebuffer",
"GraphicsScalingFilterLevelLabel": "Επίπεδο",
"GraphicsScalingFilterLevelTooltip": "Ορισμός Επιπέδου Φίλτρου Κλιμάκωσης",
"SmaaLow": "Χαμηλό SMAA",
"SmaaMedium": " Μεσαίο SMAA",
"SmaaHigh": "Υψηλό SMAA",
"SmaaUltra": "Oύλτρα SMAA",
"UserEditorTitle": "Επεξεργασία Χρήστη",
"UserEditorTitleCreate": "Δημιουργία Χρήστη",
"SettingsTabNetworkInterface": "Διεπαφή Δικτύου",
"NetworkInterfaceTooltip": "Η διεπαφή δικτύου που χρησιμοποιείται για τα χαρακτηριστικά LAN",
"NetworkInterfaceDefault": "Προεπιλογή",
"PackagingShaders": "Shaders Συσκευασίας",
"AboutChangelogButton": "View Changelog on GitHub",
"AboutChangelogButtonTooltipMessage": "Click to open the changelog for this version in your default browser."
} }

View file

@ -72,6 +72,8 @@
"GameListContextMenuExtractDataRomFSToolTip": "Extract the RomFS section from Application's current config (including updates)", "GameListContextMenuExtractDataRomFSToolTip": "Extract the RomFS section from Application's current config (including updates)",
"GameListContextMenuExtractDataLogo": "Logo", "GameListContextMenuExtractDataLogo": "Logo",
"GameListContextMenuExtractDataLogoToolTip": "Extract the Logo section from Application's current config (including updates)", "GameListContextMenuExtractDataLogoToolTip": "Extract the Logo section from Application's current config (including updates)",
"GameListContextMenuCreateShortcut": "Create Application Shortcut",
"GameListContextMenuCreateShortcutToolTip": "Create a Desktop Shortcut that launches the selected Application",
"StatusBarGamesLoaded": "{0}/{1} Games Loaded", "StatusBarGamesLoaded": "{0}/{1} Games Loaded",
"StatusBarSystemVersion": "System Version: {0}", "StatusBarSystemVersion": "System Version: {0}",
"LinuxVmMaxMapCountDialogTitle": "Low limit for memory mappings detected", "LinuxVmMaxMapCountDialogTitle": "Low limit for memory mappings detected",
@ -544,7 +546,7 @@
"SwkbdMinCharacters": "Must be at least {0} characters long", "SwkbdMinCharacters": "Must be at least {0} characters long",
"SwkbdMinRangeCharacters": "Must be {0}-{1} characters long", "SwkbdMinRangeCharacters": "Must be {0}-{1} characters long",
"SoftwareKeyboard": "Software Keyboard", "SoftwareKeyboard": "Software Keyboard",
"SoftwareKeyboardModeNumbersOnly": "Must be numbers only", "SoftwareKeyboardModeNumeric": "Must be 0-9 or '.' only",
"SoftwareKeyboardModeAlphabet": "Must be non CJK-characters only", "SoftwareKeyboardModeAlphabet": "Must be non CJK-characters only",
"SoftwareKeyboardModeASCII": "Must be ASCII text only", "SoftwareKeyboardModeASCII": "Must be ASCII text only",
"DialogControllerAppletMessagePlayerRange": "Application requests {0} player(s) with:\n\nTYPES: {1}\n\nPLAYERS: {2}\n\n{3}Please open Settings and reconfigure Input now or press Close.", "DialogControllerAppletMessagePlayerRange": "Application requests {0} player(s) with:\n\nTYPES: {1}\n\nPLAYERS: {2}\n\n{3}Please open Settings and reconfigure Input now or press Close.",
@ -620,6 +622,8 @@
"SettingsTabHotkeysVolumeDownHotkey": "Decrease Volume:", "SettingsTabHotkeysVolumeDownHotkey": "Decrease Volume:",
"SettingsEnableMacroHLE": "Enable Macro HLE", "SettingsEnableMacroHLE": "Enable Macro HLE",
"SettingsEnableMacroHLETooltip": "High-level emulation of GPU Macro code.\n\nImproves performance, but may cause graphical glitches in some games.\n\nLeave ON if unsure.", "SettingsEnableMacroHLETooltip": "High-level emulation of GPU Macro code.\n\nImproves performance, but may cause graphical glitches in some games.\n\nLeave ON if unsure.",
"SettingsEnableColorSpacePassthrough": "Color Space Passthrough",
"SettingsEnableColorSpacePassthroughTooltip": "Directs the Vulkan backend to pass through color information without specifying a color space. For users with wide gamut displays, this may result in more vibrant colors, at the cost of color correctness.",
"VolumeShort": "Vol", "VolumeShort": "Vol",
"UserProfilesManageSaves": "Manage Saves", "UserProfilesManageSaves": "Manage Saves",
"DeleteUserSave": "Do you want to delete user save for this game?", "DeleteUserSave": "Do you want to delete user save for this game?",
@ -646,9 +650,12 @@
"UserEditorTitle": "Edit User", "UserEditorTitle": "Edit User",
"UserEditorTitleCreate": "Create User", "UserEditorTitleCreate": "Create User",
"SettingsTabNetworkInterface": "Network Interface:", "SettingsTabNetworkInterface": "Network Interface:",
"NetworkInterfaceTooltip": "The network interface used for LAN features", "NetworkInterfaceTooltip": "The network interface used for LAN/LDN features",
"NetworkInterfaceDefault": "Default", "NetworkInterfaceDefault": "Default",
"PackagingShaders": "Packaging Shaders", "PackagingShaders": "Packaging Shaders",
"AboutChangelogButton": "View Changelog on GitHub", "AboutChangelogButton": "View Changelog on GitHub",
"AboutChangelogButtonTooltipMessage": "Click to open the changelog for this version in your default browser." "AboutChangelogButtonTooltipMessage": "Click to open the changelog for this version in your default browser.",
"SettingsTabNetworkMultiplayer": "Multiplayer",
"MultiplayerMode": "Mode:",
"MultiplayerModeTooltip": "Change multiplayer mode"
} }

View file

@ -7,6 +7,7 @@
"SettingsTabSystemMemoryManagerModeSoftware": "Software", "SettingsTabSystemMemoryManagerModeSoftware": "Software",
"SettingsTabSystemMemoryManagerModeHost": "Host (rápido)", "SettingsTabSystemMemoryManagerModeHost": "Host (rápido)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "Host sin verificación (más rápido, inseguro)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "Host sin verificación (más rápido, inseguro)",
"SettingsTabSystemUseHypervisor": "Usar hipervisor",
"MenuBarFile": "_Archivo", "MenuBarFile": "_Archivo",
"MenuBarFileOpenFromFile": "_Cargar aplicación desde un archivo", "MenuBarFileOpenFromFile": "_Cargar aplicación desde un archivo",
"MenuBarFileOpenUnpacked": "Cargar juego _desempaquetado", "MenuBarFileOpenUnpacked": "Cargar juego _desempaquetado",
@ -26,6 +27,9 @@
"MenuBarToolsInstallFirmware": "Instalar firmware", "MenuBarToolsInstallFirmware": "Instalar firmware",
"MenuBarFileToolsInstallFirmwareFromFile": "Instalar firmware desde un archivo XCI o ZIP", "MenuBarFileToolsInstallFirmwareFromFile": "Instalar firmware desde un archivo XCI o ZIP",
"MenuBarFileToolsInstallFirmwareFromDirectory": "Instalar firmware desde una carpeta", "MenuBarFileToolsInstallFirmwareFromDirectory": "Instalar firmware desde una carpeta",
"MenuBarToolsManageFileTypes": "Administrar tipos de archivo",
"MenuBarToolsInstallFileTypes": "Instalar tipos de archivo",
"MenuBarToolsUninstallFileTypes": "Desinstalar tipos de archivo",
"MenuBarHelp": "Ayuda", "MenuBarHelp": "Ayuda",
"MenuBarHelpCheckForUpdates": "Buscar actualizaciones", "MenuBarHelpCheckForUpdates": "Buscar actualizaciones",
"MenuBarHelpAbout": "Acerca de", "MenuBarHelpAbout": "Acerca de",
@ -70,13 +74,23 @@
"GameListContextMenuExtractDataLogoToolTip": "Extraer la sección Logo de la configuración actual de la aplicación (incluyendo actualizaciones)", "GameListContextMenuExtractDataLogoToolTip": "Extraer la sección Logo de la configuración actual de la aplicación (incluyendo actualizaciones)",
"StatusBarGamesLoaded": "{0}/{1} juegos cargados", "StatusBarGamesLoaded": "{0}/{1} juegos cargados",
"StatusBarSystemVersion": "Versión del sistema: {0}", "StatusBarSystemVersion": "Versión del sistema: {0}",
"LinuxVmMaxMapCountDialogTitle": "Límite inferior para mapeos de memoria detectado",
"LinuxVmMaxMapCountDialogTextPrimary": "¿Quieres aumentar el valor de vm.max_map_count a {0}?",
"LinuxVmMaxMapCountDialogTextSecondary": "Algunos juegos podrían intentar crear más mapeos de memoria de los permitidos. Ryujinx se bloqueará tan pronto como se supere este límite.",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "Sí, hasta el próximo reinicio",
"LinuxVmMaxMapCountDialogButtonPersistent": "Si, permanentemente",
"LinuxVmMaxMapCountWarningTextPrimary": "La cantidad máxima de mapeos de memoria es menor de lo recomendado.",
"LinuxVmMaxMapCountWarningTextSecondary": "El valor actual de vm.max_map_count ({0}) es menor que {1}. Algunos juegos podrían intentar crear más mapeos de memoria de los permitidos actualmente. Ryujinx se bloqueará tan pronto como se supere este límite.\n\nPuede que desee aumentar manualmente el límite o instalar pkexec, lo que permite a Ryujinx ayudar con eso.",
"Settings": "Configuración", "Settings": "Configuración",
"SettingsTabGeneral": "Interfaz de usuario", "SettingsTabGeneral": "Interfaz de usuario",
"SettingsTabGeneralGeneral": "General", "SettingsTabGeneralGeneral": "General",
"SettingsTabGeneralEnableDiscordRichPresence": "Habilitar estado en Discord", "SettingsTabGeneralEnableDiscordRichPresence": "Habilitar estado en Discord",
"SettingsTabGeneralCheckUpdatesOnLaunch": "Buscar actualizaciones al iniciar", "SettingsTabGeneralCheckUpdatesOnLaunch": "Buscar actualizaciones al iniciar",
"SettingsTabGeneralShowConfirmExitDialog": "Mostrar diálogo de confirmación al cerrar", "SettingsTabGeneralShowConfirmExitDialog": "Mostrar diálogo de confirmación al cerrar",
"SettingsTabGeneralHideCursor": "Esconder el cursor:",
"SettingsTabGeneralHideCursorNever": "Nunca",
"SettingsTabGeneralHideCursorOnIdle": "Ocultar cursor cuando esté inactivo", "SettingsTabGeneralHideCursorOnIdle": "Ocultar cursor cuando esté inactivo",
"SettingsTabGeneralHideCursorAlways": "Siempre",
"SettingsTabGeneralGameDirectories": "Carpetas de juegos", "SettingsTabGeneralGameDirectories": "Carpetas de juegos",
"SettingsTabGeneralAdd": "Agregar", "SettingsTabGeneralAdd": "Agregar",
"SettingsTabGeneralRemove": "Quitar", "SettingsTabGeneralRemove": "Quitar",
@ -158,6 +172,7 @@
"SettingsTabLoggingEnableFsAccessLogs": "Habilitar registros de Fs Access", "SettingsTabLoggingEnableFsAccessLogs": "Habilitar registros de Fs Access",
"SettingsTabLoggingFsGlobalAccessLogMode": "Modo de registros Fs Global Access:", "SettingsTabLoggingFsGlobalAccessLogMode": "Modo de registros Fs Global Access:",
"SettingsTabLoggingDeveloperOptions": "Opciones de desarrollador (ADVERTENCIA: empeorarán el rendimiento)", "SettingsTabLoggingDeveloperOptions": "Opciones de desarrollador (ADVERTENCIA: empeorarán el rendimiento)",
"SettingsTabLoggingDeveloperOptionsNote": "ADVERTENCIA: Reducirá el rendimiento",
"SettingsTabLoggingGraphicsBackendLogLevel": "Nivel de registro de backend gráficos:", "SettingsTabLoggingGraphicsBackendLogLevel": "Nivel de registro de backend gráficos:",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "Nada", "SettingsTabLoggingGraphicsBackendLogLevelNone": "Nada",
"SettingsTabLoggingGraphicsBackendLogLevelError": "Errores", "SettingsTabLoggingGraphicsBackendLogLevelError": "Errores",
@ -208,26 +223,17 @@
"ControllerSettingsDPadDown": "Abajo", "ControllerSettingsDPadDown": "Abajo",
"ControllerSettingsDPadLeft": "Izquierda", "ControllerSettingsDPadLeft": "Izquierda",
"ControllerSettingsDPadRight": "Derecha", "ControllerSettingsDPadRight": "Derecha",
"ControllerSettingsStickButton": "Botón",
"ControllerSettingsStickUp": "Arriba",
"ControllerSettingsStickDown": "Abajo",
"ControllerSettingsStickLeft": "Izquierda",
"ControllerSettingsStickRight": "Derecha",
"ControllerSettingsStickStick": "Palanca",
"ControllerSettingsStickInvertXAxis": "Invertir eje X",
"ControllerSettingsStickInvertYAxis": "Invertir eje Y",
"ControllerSettingsStickDeadzone": "Zona muerta:",
"ControllerSettingsLStick": "Palanca izquierda", "ControllerSettingsLStick": "Palanca izquierda",
"ControllerSettingsLStickButton": "Botón (L3)",
"ControllerSettingsLStickUp": "Arriba",
"ControllerSettingsLStickDown": "Abajo",
"ControllerSettingsLStickLeft": "Izquierda",
"ControllerSettingsLStickRight": "Derecha",
"ControllerSettingsLStickStick": "Palanca",
"ControllerSettingsLStickInvertXAxis": "Invertir eje X",
"ControllerSettingsLStickInvertYAxis": "Invertir eje Y",
"ControllerSettingsLStickDeadzone": "Zona muerta:",
"ControllerSettingsRStick": "Palanca derecha", "ControllerSettingsRStick": "Palanca derecha",
"ControllerSettingsRStickButton": "Botón (R3)",
"ControllerSettingsRStickUp": "Arriba",
"ControllerSettingsRStickDown": "Abajo",
"ControllerSettingsRStickLeft": "Izquierda",
"ControllerSettingsRStickRight": "Derecha",
"ControllerSettingsRStickStick": "Palanca",
"ControllerSettingsRStickInvertXAxis": "Invertir eje X",
"ControllerSettingsRStickInvertYAxis": "Invertir eje Y",
"ControllerSettingsRStickDeadzone": "Zona muerta:",
"ControllerSettingsTriggersLeft": "Gatillos izquierdos", "ControllerSettingsTriggersLeft": "Gatillos izquierdos",
"ControllerSettingsTriggersRight": "Gatillos derechos", "ControllerSettingsTriggersRight": "Gatillos derechos",
"ControllerSettingsTriggersButtonsLeft": "Botones de gatillo izquierdos", "ControllerSettingsTriggersButtonsLeft": "Botones de gatillo izquierdos",
@ -262,6 +268,7 @@
"UserProfilesAddNewProfile": "Añadir nuevo perfil", "UserProfilesAddNewProfile": "Añadir nuevo perfil",
"UserProfilesDelete": "Eliminar", "UserProfilesDelete": "Eliminar",
"UserProfilesClose": "Cerrar", "UserProfilesClose": "Cerrar",
"ProfileNameSelectionWatermark": "Escoge un apodo",
"ProfileImageSelectionTitle": "Selección de imagen de perfil", "ProfileImageSelectionTitle": "Selección de imagen de perfil",
"ProfileImageSelectionHeader": "Elige una imagen de perfil", "ProfileImageSelectionHeader": "Elige una imagen de perfil",
"ProfileImageSelectionNote": "Puedes importar una imagen de perfil personalizada, o seleccionar un avatar del firmware de sistema", "ProfileImageSelectionNote": "Puedes importar una imagen de perfil personalizada, o seleccionar un avatar del firmware de sistema",
@ -282,6 +289,7 @@
"ControllerSettingsSaveProfileToolTip": "Guardar perfil", "ControllerSettingsSaveProfileToolTip": "Guardar perfil",
"MenuBarFileToolsTakeScreenshot": "Captura de pantalla", "MenuBarFileToolsTakeScreenshot": "Captura de pantalla",
"MenuBarFileToolsHideUi": "Ocultar interfaz", "MenuBarFileToolsHideUi": "Ocultar interfaz",
"GameListContextMenuRunApplication": "Ejecutar aplicación",
"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",
@ -337,6 +345,10 @@
"DialogFirmwareInstallEmbeddedSuccessMessage": "No se encontró firmware instalado pero Ryujinx pudo instalar el firmware {0} a partir de este juego.\nA continuación, se iniciará el emulador.", "DialogFirmwareInstallEmbeddedSuccessMessage": "No se encontró firmware instalado pero Ryujinx pudo instalar el firmware {0} a partir de este juego.\nA continuación, se iniciará el emulador.",
"DialogFirmwareNoFirmwareInstalledMessage": "No hay firmware instalado", "DialogFirmwareNoFirmwareInstalledMessage": "No hay firmware instalado",
"DialogFirmwareInstalledMessage": "Se instaló el firmware {0}", "DialogFirmwareInstalledMessage": "Se instaló el firmware {0}",
"DialogInstallFileTypesSuccessMessage": "¡Tipos de archivos instalados con éxito!",
"DialogInstallFileTypesErrorMessage": "No se pudo desinstalar los tipos de archivo.",
"DialogUninstallFileTypesSuccessMessage": "¡Tipos de archivos desinstalados con éxito!",
"DialogUninstallFileTypesErrorMessage": "No se pudo desinstalar los tipos de archivo.",
"DialogOpenSettingsWindowLabel": "Abrir ventana de opciones", "DialogOpenSettingsWindowLabel": "Abrir ventana de opciones",
"DialogControllerAppletTitle": "Applet de mandos", "DialogControllerAppletTitle": "Applet de mandos",
"DialogMessageDialogErrorExceptionMessage": "Error al mostrar cuadro de diálogo: {0}", "DialogMessageDialogErrorExceptionMessage": "Error al mostrar cuadro de diálogo: {0}",
@ -368,6 +380,9 @@
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Versión de sistema {0} instalada con éxito.", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Versión de sistema {0} instalada con éxito.",
"DialogUserProfileDeletionWarningMessage": "Si eliminas el perfil seleccionado no quedará ningún otro perfil", "DialogUserProfileDeletionWarningMessage": "Si eliminas el perfil seleccionado no quedará ningún otro perfil",
"DialogUserProfileDeletionConfirmMessage": "¿Quieres eliminar el perfil seleccionado?", "DialogUserProfileDeletionConfirmMessage": "¿Quieres eliminar el perfil seleccionado?",
"DialogUserProfileUnsavedChangesTitle": "Advertencia - Cambios sin guardar",
"DialogUserProfileUnsavedChangesMessage": "Ha realizado cambios en este perfil de usuario que no han sido guardados.",
"DialogUserProfileUnsavedChangesSubMessage": "¿Quieres descartar los cambios realizados?",
"DialogControllerSettingsModifiedConfirmMessage": "Se ha actualizado la configuración del mando actual.", "DialogControllerSettingsModifiedConfirmMessage": "Se ha actualizado la configuración del mando actual.",
"DialogControllerSettingsModifiedConfirmSubMessage": "¿Guardar cambios?", "DialogControllerSettingsModifiedConfirmSubMessage": "¿Guardar cambios?",
"DialogLoadNcaErrorMessage": "{0}. Archivo con error: {1}", "DialogLoadNcaErrorMessage": "{0}. Archivo con error: {1}",
@ -416,6 +431,7 @@
"DlcManagerEnableAllButton": "Activar todas", "DlcManagerEnableAllButton": "Activar todas",
"DlcManagerDisableAllButton": "Desactivar todos", "DlcManagerDisableAllButton": "Desactivar todos",
"MenuBarOptionsChangeLanguage": "Cambiar idioma", "MenuBarOptionsChangeLanguage": "Cambiar idioma",
"MenuBarShowFileTypes": "Mostrar tipos de archivo",
"CommonSort": "Orden", "CommonSort": "Orden",
"CommonShowNames": "Mostrar nombres", "CommonShowNames": "Mostrar nombres",
"CommonFavorite": "Favorito", "CommonFavorite": "Favorito",
@ -445,6 +461,7 @@
"MemoryManagerSoftwareTooltip": "Usa una tabla de paginación de software para traducir direcciones. Ofrece la precisión más exacta pero el rendimiento más lento.", "MemoryManagerSoftwareTooltip": "Usa una tabla de paginación de software para traducir direcciones. Ofrece la precisión más exacta pero el rendimiento más lento.",
"MemoryManagerHostTooltip": "Mapea la memoria directamente en la dirección de espacio del host. Compilación y ejecución JIT mucho más rápida.", "MemoryManagerHostTooltip": "Mapea la memoria directamente en la dirección de espacio del host. Compilación y ejecución JIT mucho más rápida.",
"MemoryManagerUnsafeTooltip": "Mapea la memoria directamente, pero no enmascara la dirección dentro del espacio de dirección del guest antes del acceso. El modo más rápido, pero a costa de seguridad. La aplicación guest puede acceder a la memoria desde cualquier parte en Ryujinx, así que ejecuta solo programas en los que confíes cuando uses este modo.", "MemoryManagerUnsafeTooltip": "Mapea la memoria directamente, pero no enmascara la dirección dentro del espacio de dirección del guest antes del acceso. El modo más rápido, pero a costa de seguridad. La aplicación guest puede acceder a la memoria desde cualquier parte en Ryujinx, así que ejecuta solo programas en los que confíes cuando uses este modo.",
"UseHypervisorTooltip": "Usar Hypervisor en lugar de JIT. Mejora enormemente el rendimiento cuando está disponible, pero puede ser inestable en su estado actual.",
"DRamTooltip": "Expande la memoria DRAM del sistema emulado de 4GiB a 6GiB.\n\nUtilizar solo con packs de texturas HD o mods de resolución 4K. NO mejora el rendimiento.\n\nDesactívalo si no sabes qué hacer.", "DRamTooltip": "Expande la memoria DRAM del sistema emulado de 4GiB a 6GiB.\n\nUtilizar solo con packs de texturas HD o mods de resolución 4K. NO mejora el rendimiento.\n\nDesactívalo si no sabes qué hacer.",
"IgnoreMissingServicesTooltip": "Hack para ignorar servicios no implementados del Horizon OS. Esto puede ayudar a sobrepasar crasheos cuando inicies ciertos juegos.\n\nDesactívalo si no sabes qué hacer.", "IgnoreMissingServicesTooltip": "Hack para ignorar servicios no implementados del Horizon OS. Esto puede ayudar a sobrepasar crasheos cuando inicies ciertos juegos.\n\nDesactívalo si no sabes qué hacer.",
"GraphicsBackendThreadingTooltip": "Ejecuta los comandos del motor gráfico en un segundo hilo. Acelera la compilación de sombreadores, reduce los tirones, y mejora el rendimiento en controladores gráficos que no realicen su propio multihilado. Rendimiento máximo ligeramente superior en controladores gráficos que soporten multihilado.\n\nSelecciona \"Auto\" si no sabes qué hacer.", "GraphicsBackendThreadingTooltip": "Ejecuta los comandos del motor gráfico en un segundo hilo. Acelera la compilación de sombreadores, reduce los tirones, y mejora el rendimiento en controladores gráficos que no realicen su propio multihilado. Rendimiento máximo ligeramente superior en controladores gráficos que soporten multihilado.\n\nSelecciona \"Auto\" si no sabes qué hacer.",
@ -527,6 +544,9 @@
"SwkbdMinCharacters": "Debe tener al menos {0} caracteres", "SwkbdMinCharacters": "Debe tener al menos {0} caracteres",
"SwkbdMinRangeCharacters": "Debe tener {0}-{1} caracteres", "SwkbdMinRangeCharacters": "Debe tener {0}-{1} caracteres",
"SoftwareKeyboard": "Teclado de software", "SoftwareKeyboard": "Teclado de software",
"SoftwareKeyboardModeNumbersOnly": "Solo deben ser números",
"SoftwareKeyboardModeAlphabet": "Solo deben ser caracteres no CJK",
"SoftwareKeyboardModeASCII": "Solo deben ser texto ASCII",
"DialogControllerAppletMessagePlayerRange": "La aplicación require {0} jugador(es) con:\n\nTYPES: {1}\n\nPLAYERS: {2}\n\n{3}Por favor abre las opciones y reconfigura los dispositivos de entrada o presiona 'Cerrar'.", "DialogControllerAppletMessagePlayerRange": "La aplicación require {0} jugador(es) con:\n\nTYPES: {1}\n\nPLAYERS: {2}\n\n{3}Por favor abre las opciones y reconfigura los dispositivos de entrada o presiona 'Cerrar'.",
"DialogControllerAppletMessage": "La aplicación require exactamente {0} jugador(es) con:\n\nTYPES: {1}\n\nPLAYERS: {2}\n\n{3}Por favor abre las opciones y reconfigura los dispositivos de entrada o presiona 'Cerrar'.", "DialogControllerAppletMessage": "La aplicación require exactamente {0} jugador(es) con:\n\nTYPES: {1}\n\nPLAYERS: {2}\n\n{3}Por favor abre las opciones y reconfigura los dispositivos de entrada o presiona 'Cerrar'.",
"DialogControllerAppletDockModeSet": "Modo dock/TV activo. El control portátil también es inválido.\n\n", "DialogControllerAppletDockModeSet": "Modo dock/TV activo. El control portátil también es inválido.\n\n",
@ -572,6 +592,7 @@
"DlcWindowTitle": "Administrar contenido descargable", "DlcWindowTitle": "Administrar contenido descargable",
"UpdateWindowTitle": "Administrar actualizaciones", "UpdateWindowTitle": "Administrar actualizaciones",
"CheatWindowHeading": "Cheats disponibles para {0} [{1}]", "CheatWindowHeading": "Cheats disponibles para {0} [{1}]",
"BuildId": "Id de compilación:",
"DlcWindowHeading": "Contenido descargable disponible para {0} [{1}]", "DlcWindowHeading": "Contenido descargable disponible para {0} [{1}]",
"UserProfilesEditProfile": "Editar selección", "UserProfilesEditProfile": "Editar selección",
"Cancel": "Cancelar", "Cancel": "Cancelar",
@ -586,29 +607,50 @@
"UserProfilesName": "Nombre:", "UserProfilesName": "Nombre:",
"UserProfilesUserId": "Id de Usuario:", "UserProfilesUserId": "Id de Usuario:",
"SettingsTabGraphicsBackend": "Fondo de gráficos", "SettingsTabGraphicsBackend": "Fondo de gráficos",
"SettingsTabGraphicsBackendTooltip": "Graphics Backend to use", "SettingsTabGraphicsBackendTooltip": "Back-end de los gráficos a utilizar",
"SettingsEnableTextureRecompression": "Enable Texture Recompression", "SettingsEnableTextureRecompression": "Activar recompresión de texturas",
"SettingsEnableTextureRecompressionTooltip": "Compresses certain textures in order to reduce VRAM usage.\n\nRecommended for use with GPUs that have less than 4GiB VRAM.\n\nLeave OFF if unsure.", "SettingsEnableTextureRecompressionTooltip": "Comprime ciertas texturas para reducir el uso de la VRAM.\n\nRecomendado para GPUs que tienen menos de 4 GB de VRAM.\n\nMantén esta opción desactivada si no estás seguro.",
"SettingsTabGraphicsPreferredGpu": "Preferred GPU", "SettingsTabGraphicsPreferredGpu": "GPU preferida",
"SettingsTabGraphicsPreferredGpuTooltip": "Select the graphics card that will be used with the Vulkan graphics backend.\n\nDoes not affect the GPU that OpenGL will use.\n\nSet to the GPU flagged as \"dGPU\" if unsure. If there isn't one, leave untouched.", "SettingsTabGraphicsPreferredGpuTooltip": "Selecciona la tarjeta gráfica que se utilizará con los back-end de gráficos Vulkan.\n\nNo afecta la GPU que utilizará OpenGL.\n\nFije a la GPU marcada como \"dGUP\" ante dudas. Si no hay una, no haga modificaciones.",
"SettingsAppRequiredRestartMessage": "Ryujinx Restart Required", "SettingsAppRequiredRestartMessage": "Reinicio de Ryujinx requerido.",
"SettingsGpuBackendRestartMessage": "Graphics Backend or GPU settings have been modified. This will require a restart to be applied", "SettingsGpuBackendRestartMessage": "La configuración de la GPU o del back-end de los gráficos fue modificada. Es necesario reiniciar para que se aplique.",
"SettingsGpuBackendRestartSubMessage": "Do you want to restart now?", "SettingsGpuBackendRestartSubMessage": "¿Quieres reiniciar ahora?",
"RyujinxUpdaterMessage": "Do you want to update Ryujinx to the latest version?", "RyujinxUpdaterMessage": "¿Quieres actualizar Ryujinx a la última versión?",
"SettingsTabHotkeysVolumeUpHotkey": "Increase Volume:", "SettingsTabHotkeysVolumeUpHotkey": "Aumentar volumen:",
"SettingsTabHotkeysVolumeDownHotkey": "Decrease Volume:", "SettingsTabHotkeysVolumeDownHotkey": "Disminuir volumen:",
"SettingsEnableMacroHLE": "Enable Macro HLE", "SettingsEnableMacroHLE": "Activar Macros HLE",
"SettingsEnableMacroHLETooltip": "High-level emulation of GPU Macro code.\n\nImproves performance, but may cause graphical glitches in some games.\n\nLeave ON if unsure.", "SettingsEnableMacroHLETooltip": "Emulación alto-nivel del código de Macros de GPU\n\nIncrementa el rendimiento, pero puede causar errores gráficos en algunos juegos.\n\nDeja esta opción activada si no estás seguro.",
"VolumeShort": "Vol", "SettingsEnableColorSpacePassthrough": "Paso de espacio de color",
"UserProfilesManageSaves": "Manage Saves", "SettingsEnableColorSpacePassthroughTooltip": "Dirige el backend de Vulkan a pasar a través de la información del color sin especificar un espacio de color. Para los usuarios con pantallas de gran gama, esto puede resultar en colores más vibrantes, a costa de la corrección del color.",
"DeleteUserSave": "Do you want to delete user save for this game?", "VolumeShort": "Volumen",
"IrreversibleActionNote": "This action is not reversible.", "UserProfilesManageSaves": "Administrar mis partidas guardadas",
"DeleteUserSave": "¿Quieres borrar los datos de usuario de este juego?",
"IrreversibleActionNote": "Esta acción no es reversible.",
"SaveManagerHeading": "Manage Saves for {0}", "SaveManagerHeading": "Manage Saves for {0}",
"SaveManagerTitle": "Save Manager", "SaveManagerTitle": "Administrador de datos de guardado.",
"Name": "Name", "Name": "Nombre",
"Size": "Size", "Size": "Tamaño",
"Search": "Search", "Search": "Buscar",
"UserProfilesRecoverLostAccounts": "Recover Lost Accounts", "UserProfilesRecoverLostAccounts": "Recuperar cuentas perdidas",
"Recover": "Recover", "Recover": "Recuperar",
"UserProfilesRecoverHeading": "Saves were found for the following accounts" "UserProfilesRecoverHeading": "Datos de guardado fueron encontrados para las siguientes cuentas",
"UserProfilesRecoverEmptyList": "No hay perfiles a recuperar",
"GraphicsAATooltip": "Aplica el suavizado de bordes al procesamiento del juego",
"GraphicsAALabel": "Suavizado de bordes:",
"GraphicsScalingFilterLabel": "Filtro de escalado:",
"GraphicsScalingFilterTooltip": "Activa el escalado de búfer de fotogramas",
"GraphicsScalingFilterLevelLabel": "Nivel",
"GraphicsScalingFilterLevelTooltip": "Establecer nivel del filtro de escalado",
"SmaaLow": "SMAA Bajo",
"SmaaMedium": "SMAA Medio",
"SmaaHigh": "SMAA Alto",
"SmaaUltra": "SMAA Ultra",
"UserEditorTitle": "Editar usuario",
"UserEditorTitleCreate": "Crear Usuario",
"SettingsTabNetworkInterface": "Interfaz de Red",
"NetworkInterfaceTooltip": "Interfaz de red usada para las características LAN",
"NetworkInterfaceDefault": "Predeterminado",
"PackagingShaders": "Empaquetando sombreadores",
"AboutChangelogButton": "Ver registro de cambios en GitHub",
"AboutChangelogButtonTooltipMessage": "Haga clic para abrir el registro de cambios para esta versión en su navegador predeterminado."
} }

View file

@ -1,43 +1,47 @@
{ {
"Language": "Français", "Language": "Français",
"MenuBarFileOpenApplet": "Ouvrir Applet", "MenuBarFileOpenApplet": "Ouvrir Applet",
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "Ouvrir l'Applet Mii Editor en mode Standalone", "MenuBarFileOpenAppletOpenMiiAppletToolTip": "Ouvrir l'Éditeur Applet Mii en mode autonome",
"SettingsTabInputDirectMouseAccess": "Accès direct à la souris", "SettingsTabInputDirectMouseAccess": "Accès direct à la souris",
"SettingsTabSystemMemoryManagerMode": "Mode de gestion mémoire :", "SettingsTabSystemMemoryManagerMode": "Mode de gestion de la mémoire :",
"SettingsTabSystemMemoryManagerModeSoftware": "Logiciel", "SettingsTabSystemMemoryManagerModeSoftware": "Logiciel",
"SettingsTabSystemMemoryManagerModeHost": "Hôte (rapide)", "SettingsTabSystemMemoryManagerModeHost": "Hôte (rapide)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "Hôte non vérifié (plus rapide, non sécurisé)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "Hôte non vérifié (plus rapide, non sécurisé)",
"SettingsTabSystemUseHypervisor": "Utiliser l'Hyperviseur",
"MenuBarFile": "_Fichier", "MenuBarFile": "_Fichier",
"MenuBarFileOpenFromFile": "_Charger un jeu depuis un fichier", "MenuBarFileOpenFromFile": "_Charger un jeu depuis un fichier",
"MenuBarFileOpenUnpacked": "Charger un jeu _extrait", "MenuBarFileOpenUnpacked": "Charger un jeu extrait",
"MenuBarFileOpenEmuFolder": "Ouvrir le dossier Ryujinx", "MenuBarFileOpenEmuFolder": "Ouvrir le dossier Ryujinx",
"MenuBarFileOpenLogsFolder": "Ouvrir le dossier des journaux", "MenuBarFileOpenLogsFolder": "Ouvrir le dossier des journaux",
"MenuBarFileExit": "_Quitter", "MenuBarFileExit": "_Quitter",
"MenuBarOptions": "Options", "MenuBarOptions": "Options",
"MenuBarOptionsToggleFullscreen": "Basculer en plein écran", "MenuBarOptionsToggleFullscreen": "Basculer en plein écran",
"MenuBarOptionsStartGamesInFullscreen": "Démarrer le jeu en plein écran", "MenuBarOptionsStartGamesInFullscreen": "Démarrer jeux en plein écran",
"MenuBarOptionsStopEmulation": "Arrêter l'émulation", "MenuBarOptionsStopEmulation": "Arrêter l'émulation",
"MenuBarOptionsSettings": "_Paramètres", "MenuBarOptionsSettings": "_Paramètres",
"MenuBarOptionsManageUserProfiles": "_Gêrer les profils d'utilisateurs", "MenuBarOptionsManageUserProfiles": "_Gérer les profils d'utilisateurs",
"MenuBarActions": "_Actions", "MenuBarActions": "_Actions",
"MenuBarOptionsSimulateWakeUpMessage": "Simuler une sortie de veille", "MenuBarOptionsSimulateWakeUpMessage": "Simuler un message de réveil",
"MenuBarActionsScanAmiibo": "Scanner un Amiibo", "MenuBarActionsScanAmiibo": "Scanner un Amiibo",
"MenuBarTools": "_Outils", "MenuBarTools": "_Outils",
"MenuBarToolsInstallFirmware": "Installer un firmware", "MenuBarToolsInstallFirmware": "Installer un firmware",
"MenuBarFileToolsInstallFirmwareFromFile": "Installer un firmware depuis un fichier XCI ou ZIP", "MenuBarFileToolsInstallFirmwareFromFile": "Installer un firmware depuis un fichier XCI ou ZIP",
"MenuBarFileToolsInstallFirmwareFromDirectory": "Installer un firmware depuis un dossier", "MenuBarFileToolsInstallFirmwareFromDirectory": "Installer un firmware depuis un dossier",
"MenuBarToolsManageFileTypes": "Gérer les types de fichiers",
"MenuBarToolsInstallFileTypes": "Installer les types de fichiers",
"MenuBarToolsUninstallFileTypes": "Désinstaller les types de fichiers",
"MenuBarHelp": "Aide", "MenuBarHelp": "Aide",
"MenuBarHelpCheckForUpdates": "Vérifier les mises à jour", "MenuBarHelpCheckForUpdates": "Vérifier les mises à jour",
"MenuBarHelpAbout": "Á propos", "MenuBarHelpAbout": "Á propos",
"MenuSearch": "Rechercher...", "MenuSearch": "Rechercher...",
"GameListHeaderFavorite": "Favoris", "GameListHeaderFavorite": "Favoris",
"GameListHeaderIcon": "Icône", "GameListHeaderIcon": "Icône",
"GameListHeaderApplication": "Application", "GameListHeaderApplication": "Nom",
"GameListHeaderDeveloper": "Développeur", "GameListHeaderDeveloper": "Développeur",
"GameListHeaderVersion": "Version", "GameListHeaderVersion": "Version",
"GameListHeaderTimePlayed": "Temps de jeu", "GameListHeaderTimePlayed": "Temps de jeu",
"GameListHeaderLastPlayed": "Dernière partie", "GameListHeaderLastPlayed": "jouer la dernière fois",
"GameListHeaderFileExtension": "Extension du Fichier", "GameListHeaderFileExtension": "Fichier externe",
"GameListHeaderFileSize": "Taille du Fichier", "GameListHeaderFileSize": "Taille du Fichier",
"GameListHeaderPath": "Chemin", "GameListHeaderPath": "Chemin",
"GameListContextMenuOpenUserSaveDirectory": "Ouvrir le dossier de sauvegarde utilisateur", "GameListContextMenuOpenUserSaveDirectory": "Ouvrir le dossier de sauvegarde utilisateur",
@ -46,8 +50,8 @@
"GameListContextMenuOpenDeviceSaveDirectoryToolTip": "Ouvre le dossier contenant la sauvegarde console du jeu", "GameListContextMenuOpenDeviceSaveDirectoryToolTip": "Ouvre le dossier contenant la sauvegarde console du jeu",
"GameListContextMenuOpenBcatSaveDirectory": "Ouvrir le dossier de sauvegarde BCAT", "GameListContextMenuOpenBcatSaveDirectory": "Ouvrir le dossier de sauvegarde BCAT",
"GameListContextMenuOpenBcatSaveDirectoryToolTip": "Ouvre le dossier contenant la sauvegarde BCAT du jeu", "GameListContextMenuOpenBcatSaveDirectoryToolTip": "Ouvre le dossier contenant la sauvegarde BCAT du jeu",
"GameListContextMenuManageTitleUpdates": "Gérer les mises à jour", "GameListContextMenuManageTitleUpdates": "Gérer la mise à jour des titres",
"GameListContextMenuManageTitleUpdatesToolTip": "Ouvre la fenêtre de gestion des mises à jour", "GameListContextMenuManageTitleUpdatesToolTip": "Ouvre la fenêtre de gestion de la mise à jour des titres",
"GameListContextMenuManageDlc": "Gérer les DLC", "GameListContextMenuManageDlc": "Gérer les DLC",
"GameListContextMenuManageDlcToolTip": "Ouvre la fenêtre de gestion des DLC", "GameListContextMenuManageDlcToolTip": "Ouvre la fenêtre de gestion des DLC",
"GameListContextMenuOpenModsDirectory": "Ouvrir le dossier des Mods", "GameListContextMenuOpenModsDirectory": "Ouvrir le dossier des Mods",
@ -70,13 +74,23 @@
"GameListContextMenuExtractDataLogoToolTip": "Extrait la section Logo du jeu (mise à jour incluse)", "GameListContextMenuExtractDataLogoToolTip": "Extrait la section Logo du jeu (mise à jour incluse)",
"StatusBarGamesLoaded": "{0}/{1} Jeux chargés", "StatusBarGamesLoaded": "{0}/{1} Jeux chargés",
"StatusBarSystemVersion": "Version du Firmware: {0}", "StatusBarSystemVersion": "Version du Firmware: {0}",
"LinuxVmMaxMapCountDialogTitle": "Limite basse pour les mappages de mémoire détectés",
"LinuxVmMaxMapCountDialogTextPrimary": "Voulez-vous augmenter la valeur de vm.max_map_count à {0}",
"LinuxVmMaxMapCountDialogTextSecondary": "Certains jeux peuvent essayer de créer plus de mappages de mémoire que ce qui est actuellement autorisé. Ryujinx plantera dès que cette limite sera dépassée.",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "Oui, jusqu'au prochain redémarrage",
"LinuxVmMaxMapCountDialogButtonPersistent": "Oui, en permanence",
"LinuxVmMaxMapCountWarningTextPrimary": "La quantité maximale de mappings mémoire est inférieure à la valeur recommandée.",
"LinuxVmMaxMapCountWarningTextSecondary": "La valeur actuelle de vm.max_map_count ({0}) est inférieure à {1}. Certains jeux peuvent essayer de créer plus de mappings mémoire que ceux actuellement autorisés. Ryujinx s'écrasera dès que cette limite sera dépassée.\n\nVous pouvez soit augmenter manuellement la limite, soit installer pkexec, ce qui permet à Ryujinx de l'aider.",
"Settings": "Paramètres", "Settings": "Paramètres",
"SettingsTabGeneral": "Général", "SettingsTabGeneral": "Interface Utilisateur",
"SettingsTabGeneralGeneral": "Général", "SettingsTabGeneralGeneral": "Général",
"SettingsTabGeneralEnableDiscordRichPresence": "Active Discord Rich Presence", "SettingsTabGeneralEnableDiscordRichPresence": "Activer Discord Rich Presence",
"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 fermeture\"", "SettingsTabGeneralShowConfirmExitDialog": "Afficher le message de \"Confirmation de sortie\"",
"SettingsTabGeneralHideCursor": "Masquer le Curseur :",
"SettingsTabGeneralHideCursorNever": "Jamais",
"SettingsTabGeneralHideCursorOnIdle": "Masquer le curseur si inactif", "SettingsTabGeneralHideCursorOnIdle": "Masquer le curseur si inactif",
"SettingsTabGeneralHideCursorAlways": "Toujours",
"SettingsTabGeneralGameDirectories": "Dossiers de Jeux", "SettingsTabGeneralGameDirectories": "Dossiers de Jeux",
"SettingsTabGeneralAdd": "Ajouter", "SettingsTabGeneralAdd": "Ajouter",
"SettingsTabGeneralRemove": "Supprimer", "SettingsTabGeneralRemove": "Supprimer",
@ -92,7 +106,7 @@
"SettingsTabSystemSystemRegionTaiwan": "Taïwan", "SettingsTabSystemSystemRegionTaiwan": "Taïwan",
"SettingsTabSystemSystemLanguage": "Langue du système:", "SettingsTabSystemSystemLanguage": "Langue du système:",
"SettingsTabSystemSystemLanguageJapanese": "Japonais", "SettingsTabSystemSystemLanguageJapanese": "Japonais",
"SettingsTabSystemSystemLanguageAmericanEnglish": "Américain", "SettingsTabSystemSystemLanguageAmericanEnglish": "Anglais Américain",
"SettingsTabSystemSystemLanguageFrench": "Français", "SettingsTabSystemSystemLanguageFrench": "Français",
"SettingsTabSystemSystemLanguageGerman": "Allemand", "SettingsTabSystemSystemLanguageGerman": "Allemand",
"SettingsTabSystemSystemLanguageItalian": "Italien", "SettingsTabSystemSystemLanguageItalian": "Italien",
@ -103,25 +117,25 @@
"SettingsTabSystemSystemLanguagePortuguese": "Portugais", "SettingsTabSystemSystemLanguagePortuguese": "Portugais",
"SettingsTabSystemSystemLanguageRussian": "Russe", "SettingsTabSystemSystemLanguageRussian": "Russe",
"SettingsTabSystemSystemLanguageTaiwanese": "Taïwanais", "SettingsTabSystemSystemLanguageTaiwanese": "Taïwanais",
"SettingsTabSystemSystemLanguageBritishEnglish": "Anglais", "SettingsTabSystemSystemLanguageBritishEnglish": "Anglais britannique ",
"SettingsTabSystemSystemLanguageCanadianFrench": "Canadien", "SettingsTabSystemSystemLanguageCanadianFrench": "Français Canadien",
"SettingsTabSystemSystemLanguageLatinAmericanSpanish": "Espagnol latino-américain", "SettingsTabSystemSystemLanguageLatinAmericanSpanish": "Espagnol latino-américain",
"SettingsTabSystemSystemLanguageSimplifiedChinese": "Chinois simplifié", "SettingsTabSystemSystemLanguageSimplifiedChinese": "Chinois simplifié",
"SettingsTabSystemSystemLanguageTraditionalChinese": "Chinois traditionnel", "SettingsTabSystemSystemLanguageTraditionalChinese": "Chinois traditionnel",
"SettingsTabSystemSystemTimeZone": "Fuseau horaire du système:", "SettingsTabSystemSystemTimeZone": "Fuseau horaire du système :",
"SettingsTabSystemSystemTime": "Heure du système:", "SettingsTabSystemSystemTime": "Heure du système:",
"SettingsTabSystemEnableVsync": "Activer la VSync", "SettingsTabSystemEnableVsync": "Activer le VSync",
"SettingsTabSystemEnablePptc": "Activer le PPTC (Profiled Persistent Translation Cache)", "SettingsTabSystemEnablePptc": "Activer le PPTC (Profiled Persistent Translation Cache)",
"SettingsTabSystemEnableFsIntegrityChecks": "Activer la vérification de l'intégrité du système de fichiers", "SettingsTabSystemEnableFsIntegrityChecks": "Activer la vérification de l'intégrité du système de fichiers",
"SettingsTabSystemAudioBackend": "Bibliothèque Audio :", "SettingsTabSystemAudioBackend": "Back-end audio",
"SettingsTabSystemAudioBackendDummy": "Factice", "SettingsTabSystemAudioBackendDummy": "Factice",
"SettingsTabSystemAudioBackendOpenAL": "OpenAL", "SettingsTabSystemAudioBackendOpenAL": "OpenAL",
"SettingsTabSystemAudioBackendSoundIO": "SoundIO", "SettingsTabSystemAudioBackendSoundIO": "SoundIO",
"SettingsTabSystemAudioBackendSDL2": "SDL2", "SettingsTabSystemAudioBackendSDL2": "SDL2",
"SettingsTabSystemHacks": "Hacks", "SettingsTabSystemHacks": "Hacks",
"SettingsTabSystemHacksNote": " (Cela peut causer des instabilités)", "SettingsTabSystemHacksNote": " (Cela peut causer des instabilités)",
"SettingsTabSystemExpandDramSize": "Augmenter la taille de la DRAM à 6GiB", "SettingsTabSystemExpandDramSize": "Utiliser disposition alternative de la mémoire (développeur)",
"SettingsTabSystemIgnoreMissingServices": "Ignorer les services manquant", "SettingsTabSystemIgnoreMissingServices": "Ignorer les services manquants",
"SettingsTabGraphics": "Graphique", "SettingsTabGraphics": "Graphique",
"SettingsTabGraphicsAPI": "API Graphique", "SettingsTabGraphicsAPI": "API Graphique",
"SettingsTabGraphicsEnableShaderCache": "Activer le cache des shaders", "SettingsTabGraphicsEnableShaderCache": "Activer le cache des shaders",
@ -132,12 +146,12 @@
"SettingsTabGraphicsAnisotropicFiltering8x": "x8", "SettingsTabGraphicsAnisotropicFiltering8x": "x8",
"SettingsTabGraphicsAnisotropicFiltering16x": "x16", "SettingsTabGraphicsAnisotropicFiltering16x": "x16",
"SettingsTabGraphicsResolutionScale": "Échelle de résolution:", "SettingsTabGraphicsResolutionScale": "Échelle de résolution:",
"SettingsTabGraphicsResolutionScaleCustom": "Customisée (Non recommandée)", "SettingsTabGraphicsResolutionScaleCustom": "Personnalisée (Non recommandée)",
"SettingsTabGraphicsResolutionScaleNative": "Natif (720p/1080p)", "SettingsTabGraphicsResolutionScaleNative": "Natif (720p/1080p)",
"SettingsTabGraphicsResolutionScale2x": "x2 (1440p/2160p)", "SettingsTabGraphicsResolutionScale2x": "x2 (1440p/2160p)",
"SettingsTabGraphicsResolutionScale3x": "x3 (2160p/3240p)", "SettingsTabGraphicsResolutionScale3x": "x3 (2160p/3240p)",
"SettingsTabGraphicsResolutionScale4x": "x4 (2880p/4320p)", "SettingsTabGraphicsResolutionScale4x": "x4 (2880p/4320p)",
"SettingsTabGraphicsAspectRatio": "Format:", "SettingsTabGraphicsAspectRatio": "Format :",
"SettingsTabGraphicsAspectRatio4x3": "4:3", "SettingsTabGraphicsAspectRatio4x3": "4:3",
"SettingsTabGraphicsAspectRatio16x9": "16:9", "SettingsTabGraphicsAspectRatio16x9": "16:9",
"SettingsTabGraphicsAspectRatio16x10": "16:10", "SettingsTabGraphicsAspectRatio16x10": "16:10",
@ -158,6 +172,7 @@
"SettingsTabLoggingEnableFsAccessLogs": "Activer les journaux des accès au système de fichiers", "SettingsTabLoggingEnableFsAccessLogs": "Activer les journaux des accès au système de fichiers",
"SettingsTabLoggingFsGlobalAccessLogMode": "Niveau des journaux des accès au système de fichiers:", "SettingsTabLoggingFsGlobalAccessLogMode": "Niveau des journaux des accès au système de fichiers:",
"SettingsTabLoggingDeveloperOptions": "Options développeur (ATTENTION: Cela peut réduire les performances)", "SettingsTabLoggingDeveloperOptions": "Options développeur (ATTENTION: Cela peut réduire les performances)",
"SettingsTabLoggingDeveloperOptionsNote": "ATTENTION : Réduira les performances",
"SettingsTabLoggingGraphicsBackendLogLevel": "Niveau du journal du backend graphique :", "SettingsTabLoggingGraphicsBackendLogLevel": "Niveau du journal du backend graphique :",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "Aucun", "SettingsTabLoggingGraphicsBackendLogLevelNone": "Aucun",
"SettingsTabLoggingGraphicsBackendLogLevelError": "Erreur", "SettingsTabLoggingGraphicsBackendLogLevelError": "Erreur",
@ -208,26 +223,17 @@
"ControllerSettingsDPadDown": "Bas", "ControllerSettingsDPadDown": "Bas",
"ControllerSettingsDPadLeft": "Gauche", "ControllerSettingsDPadLeft": "Gauche",
"ControllerSettingsDPadRight": "Droite", "ControllerSettingsDPadRight": "Droite",
"ControllerSettingsStickButton": "Bouton",
"ControllerSettingsStickUp": "Haut",
"ControllerSettingsStickDown": "Bas",
"ControllerSettingsStickLeft": "Gauche",
"ControllerSettingsStickRight": "Droite",
"ControllerSettingsStickStick": "Stick",
"ControllerSettingsStickInvertXAxis": "Inverser l'axe X",
"ControllerSettingsStickInvertYAxis": "Inverser l'axe Y",
"ControllerSettingsStickDeadzone": "Zone morte :",
"ControllerSettingsLStick": "Joystick Gauche", "ControllerSettingsLStick": "Joystick Gauche",
"ControllerSettingsLStickButton": "Bouton",
"ControllerSettingsLStickUp": "Haut",
"ControllerSettingsLStickDown": "Bas",
"ControllerSettingsLStickLeft": "Gauche",
"ControllerSettingsLStickRight": "Droite",
"ControllerSettingsLStickStick": "Joystick",
"ControllerSettingsLStickInvertXAxis": "Inverser l'axe X",
"ControllerSettingsLStickInvertYAxis": "Inverser l'axe Y",
"ControllerSettingsLStickDeadzone": "Zone morte:",
"ControllerSettingsRStick": "Joystick Droit", "ControllerSettingsRStick": "Joystick Droit",
"ControllerSettingsRStickButton": "Bouton",
"ControllerSettingsRStickUp": "Haut",
"ControllerSettingsRStickDown": "Bas",
"ControllerSettingsRStickLeft": "Gauche",
"ControllerSettingsRStickRight": "Droite",
"ControllerSettingsRStickStick": "Joystick",
"ControllerSettingsRStickInvertXAxis": "Inverser l'axe X",
"ControllerSettingsRStickInvertYAxis": "Inverser l'axe Y",
"ControllerSettingsRStickDeadzone": "Zone morte:",
"ControllerSettingsTriggersLeft": "Gachettes Gauche", "ControllerSettingsTriggersLeft": "Gachettes Gauche",
"ControllerSettingsTriggersRight": "Gachettes Droite", "ControllerSettingsTriggersRight": "Gachettes Droite",
"ControllerSettingsTriggersButtonsLeft": "Boutons Gachettes Gauche", "ControllerSettingsTriggersButtonsLeft": "Boutons Gachettes Gauche",
@ -262,6 +268,7 @@
"UserProfilesAddNewProfile": "Ajouter un nouveau profil", "UserProfilesAddNewProfile": "Ajouter un nouveau profil",
"UserProfilesDelete": "Supprimer", "UserProfilesDelete": "Supprimer",
"UserProfilesClose": "Fermer", "UserProfilesClose": "Fermer",
"ProfileNameSelectionWatermark": "Choisir un pseudo",
"ProfileImageSelectionTitle": "Sélection de l'image du profil", "ProfileImageSelectionTitle": "Sélection de l'image du profil",
"ProfileImageSelectionHeader": "Choisir l'image du profil", "ProfileImageSelectionHeader": "Choisir l'image du profil",
"ProfileImageSelectionNote": "Vous pouvez importer une image de profil personnalisée ou sélectionner un avatar à partir du firmware", "ProfileImageSelectionNote": "Vous pouvez importer une image de profil personnalisée ou sélectionner un avatar à partir du firmware",
@ -282,6 +289,7 @@
"ControllerSettingsSaveProfileToolTip": "Enregistrer un profil", "ControllerSettingsSaveProfileToolTip": "Enregistrer un profil",
"MenuBarFileToolsTakeScreenshot": "Prendre une Capture d'Écran", "MenuBarFileToolsTakeScreenshot": "Prendre une Capture d'Écran",
"MenuBarFileToolsHideUi": "Masquer l'interface utilisateur", "MenuBarFileToolsHideUi": "Masquer l'interface utilisateur",
"GameListContextMenuRunApplication": "Démarrer l'application",
"GameListContextMenuToggleFavorite": "Ajouter/Retirer des favoris", "GameListContextMenuToggleFavorite": "Ajouter/Retirer des favoris",
"GameListContextMenuToggleFavoriteToolTip": "Activer/désactiver le statut favori du jeu", "GameListContextMenuToggleFavoriteToolTip": "Activer/désactiver le statut favori du jeu",
"SettingsTabGeneralTheme": "Thème", "SettingsTabGeneralTheme": "Thème",
@ -337,6 +345,10 @@
"DialogFirmwareInstallEmbeddedSuccessMessage": "Aucun firmware installé n'a été trouvé mais Ryujinx a pu installer le firmware {0} à partir du jeu fourni.\\nL'émulateur va maintenant démarrer.", "DialogFirmwareInstallEmbeddedSuccessMessage": "Aucun firmware installé n'a été trouvé mais Ryujinx a pu installer le firmware {0} à partir du jeu fourni.\\nL'émulateur va maintenant démarrer.",
"DialogFirmwareNoFirmwareInstalledMessage": "Aucun Firmware installé", "DialogFirmwareNoFirmwareInstalledMessage": "Aucun Firmware installé",
"DialogFirmwareInstalledMessage": "Le firmware {0} a été installé", "DialogFirmwareInstalledMessage": "Le firmware {0} a été installé",
"DialogInstallFileTypesSuccessMessage": "Types de fichiers installés avec succès!",
"DialogInstallFileTypesErrorMessage": "Échec de l'installation des types de fichiers.",
"DialogUninstallFileTypesSuccessMessage": "Types de fichiers désinstallés avec succès!",
"DialogUninstallFileTypesErrorMessage": "Échec de la désinstallation des types de fichiers.",
"DialogOpenSettingsWindowLabel": "Ouvrir la fenêtre de configuration", "DialogOpenSettingsWindowLabel": "Ouvrir la fenêtre de configuration",
"DialogControllerAppletTitle": "Controller Applet", "DialogControllerAppletTitle": "Controller Applet",
"DialogMessageDialogErrorExceptionMessage": "Erreur lors de l'affichage de la boîte de dialogue : {0}", "DialogMessageDialogErrorExceptionMessage": "Erreur lors de l'affichage de la boîte de dialogue : {0}",
@ -368,6 +380,9 @@
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Version du système {0} installée avec succès.", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Version du système {0} installée avec succès.",
"DialogUserProfileDeletionWarningMessage": "Il n'y aurait aucun autre profil à ouvrir si le profil sélectionné est supprimé", "DialogUserProfileDeletionWarningMessage": "Il n'y aurait aucun autre profil à ouvrir si le profil sélectionné est supprimé",
"DialogUserProfileDeletionConfirmMessage": "Voulez-vous supprimer le profil sélectionné ?", "DialogUserProfileDeletionConfirmMessage": "Voulez-vous supprimer le profil sélectionné ?",
"DialogUserProfileUnsavedChangesTitle": "Avertissement - Modifications non enregistrées",
"DialogUserProfileUnsavedChangesMessage": "Vous avez effectué des modifications sur ce profil d'utilisateur qui n'ont pas été enregistrées.",
"DialogUserProfileUnsavedChangesSubMessage": "Voulez-vous annuler les modifications ?",
"DialogControllerSettingsModifiedConfirmMessage": "Les paramètres actuels du contrôleur ont été mis à jour.", "DialogControllerSettingsModifiedConfirmMessage": "Les paramètres actuels du contrôleur ont été mis à jour.",
"DialogControllerSettingsModifiedConfirmSubMessage": "Voulez-vous sauvegarder?", "DialogControllerSettingsModifiedConfirmSubMessage": "Voulez-vous sauvegarder?",
"DialogLoadNcaErrorMessage": "{0}. Fichier erroné : {1}", "DialogLoadNcaErrorMessage": "{0}. Fichier erroné : {1}",
@ -416,6 +431,7 @@
"DlcManagerEnableAllButton": "Activer Tout", "DlcManagerEnableAllButton": "Activer Tout",
"DlcManagerDisableAllButton": "Désactiver Tout", "DlcManagerDisableAllButton": "Désactiver Tout",
"MenuBarOptionsChangeLanguage": "Changer la Langue", "MenuBarOptionsChangeLanguage": "Changer la Langue",
"MenuBarShowFileTypes": "Afficher les types de fichiers",
"CommonSort": "Trier", "CommonSort": "Trier",
"CommonShowNames": "Afficher les noms", "CommonShowNames": "Afficher les noms",
"CommonFavorite": "Favoris", "CommonFavorite": "Favoris",
@ -427,46 +443,47 @@
"AddGameDirBoxTooltip": "Entrez un répertoire de jeux à ajouter à la liste", "AddGameDirBoxTooltip": "Entrez un répertoire de jeux à ajouter à la liste",
"AddGameDirTooltip": "Ajouter un répertoire de jeux à la liste", "AddGameDirTooltip": "Ajouter un répertoire de jeux à la liste",
"RemoveGameDirTooltip": "Supprimer le dossier sélectionné", "RemoveGameDirTooltip": "Supprimer le dossier sélectionné",
"CustomThemeCheckTooltip": "Use a custom Avalonia theme for the GUI to change the appearance of the emulator menus", "CustomThemeCheckTooltip": "Utilisez un thème personnalisé Avalonia pour modifier l'apparence des menus de l'émulateur",
"CustomThemePathTooltip": "Chemin vers le thème personnalisé de l'interface utilisateur", "CustomThemePathTooltip": "Chemin vers le thème personnalisé de l'interface utilisateur",
"CustomThemeBrowseTooltip": "Parcourir vers un thème personnalisé pour l'interface utilisateur", "CustomThemeBrowseTooltip": "Parcourir vers un thème personnalisé pour l'interface utilisateur",
"DockModeToggleTooltip": "Le mode station d'accueil permet à la console émulée de se comporter comme une Nintendo Switch en mode station d'accueil, ce qui améliore la fidélité graphique dans la plupart des jeux. Inversement, la désactivation de cette option rendra la console émulée comme une console Nintendo Switch portable, réduisant la qualité graphique.\n\nConfigurer les controles du joueur 1 si vous prévoyez d'utiliser le mode station d'accueil; configurez les commandes portable si vous prévoyez d'utiliser le mode portable.\n\nLaissez ACTIVER si vous n'êtes pas sûr.", "DockModeToggleTooltip": "Le mode station d'accueil permet à la console émulée de se comporter comme une Nintendo Switch en mode station d'accueil, ce qui améliore la fidélité graphique dans la plupart des jeux. Inversement, la désactivation de cette option rendra la console émulée comme une console Nintendo Switch portable, réduisant la qualité graphique.\n\nConfigurer les controles du joueur 1 si vous prévoyez d'utiliser le mode station d'accueil; configurez les commandes portable si vous prévoyez d'utiliser le mode portable.\n\nLaissez ACTIVER si vous n'êtes pas sûr.",
"DirectKeyboardTooltip": "Direct keyboard access (HID) support. Provides games access to your keyboard as a text entry device.", "DirectKeyboardTooltip": "Prise en charge de l'accès direct au clavier (HID). Fournit aux jeux l'accès à votre clavier en tant que périphérique de saisie de texte.",
"DirectMouseTooltip": "Direct mouse access (HID) support. Provides games access to your mouse as a pointing device.", "DirectMouseTooltip": "Prise en charge de l'accès à la souris (HID). Permet aux jeux d'accéder a votre souris en tant que périphérique de pointage.",
"RegionTooltip": "Changer la région du système", "RegionTooltip": "Changer la région du système",
"LanguageTooltip": "Changer la langue du système", "LanguageTooltip": "Changer la langue du système",
"TimezoneTooltip": "Changer le fuseau horaire du système", "TimezoneTooltip": "Changer le fuseau horaire du système",
"TimeTooltip": "Changer l'heure du système", "TimeTooltip": "Changer l'heure du système",
"VSyncToggleTooltip": "Emulated console's Vertical Sync. Essentially a frame-limiter for the majority of games; disabling it may cause games to run at higher speed or make loading screens take longer or get stuck.\n\nCan be toggled in-game with a hotkey of your preference. We recommend doing this if you plan on disabling it.\n\nLeave ON if unsure.", "VSyncToggleTooltip": "Synchronisation verticale de l'émulateur. Généralement un limiteur d'FPS pour la majorité des jeux, le désactiver peut accélérer les jeux pour rendre les écrans de chargement plus court, mais augemente le risque de crash lors des chargements.\n\nPeut être activer ou desactiver en jeu avec un raccourci de votre choix. Nous vous recommandons de le laisser.\n\nLaissez activer, si vous n'êtes pas sûr.",
"PptcToggleTooltip": "Saves translated JIT functions so that they do not need to be translated every time the game loads.\n\nReduces stuttering and significantly speeds up boot times after the first boot of a game.\n\nLeave ON if unsure.", "PptcToggleTooltip": "Sauvegarde les fonctions JIT afin qu'elles n'aient pas besoin d'être à chaque fois recompiler lorsque le jeu se charge.\n\nRéduit les lags et accélère considérablement le temps de chargement après le premier lancement d'un jeu.\n\nLaissez par défaut si vous n'êtes pas sûr.",
"FsIntegrityToggleTooltip": "Checks for corrupt files when booting a game, and if corrupt files are detected, displays a hash error in the log.\n\nHas no impact on performance and is meant to help troubleshooting.\n\nLeave ON if unsure.", "FsIntegrityToggleTooltip": "Vérifie si des fichiers sont corrompus lors du lancement d'un jeu, et si des fichiers corrompus sont détectés, affiche une erreur de hachage dans la console.\n\nN'a aucun impact sur les performances et est destiné à aider le dépannage.\n\nLaissez activer en cas d'incertitude.",
"AudioBackendTooltip": "Changes the backend used to render audio.\n\nSDL2 is the preferred one, while OpenAL and SoundIO are used as fallbacks. Dummy will have no sound.\n\nSet to SDL2 if unsure.", "AudioBackendTooltip": "Modifie le backend utilisé pour donnée un rendu audio.\n\nSDL2 est préféré, tandis que OpenAL et SoundIO sont utilisés comme backend secondaire. Le backend Dummy (Factice) ne rends aucun son.\n\nLaissez sur SDL2 si vous n'êtes pas sûr.",
"MemoryManagerTooltip": "Change how guest memory is mapped and accessed. Greatly affects emulated CPU performance.\n\nSet to HOST UNCHECKED if unsure.", "MemoryManagerTooltip": "Change la façon dont la mémoire émulée est mappée et utiliser. Cela affecte grandement les performances du processeur.\n\nRéglez sur Host Uncheked en cas d'incertitude.",
"MemoryManagerSoftwareTooltip": "Use a software page table for address translation. Highest accuracy but slowest performance.", "MemoryManagerSoftwareTooltip": "Utilisez une table logicielle pour la traduction d'adresses. La plus grande précision est fournie, mais les performances en seront impacter.",
"MemoryManagerHostTooltip": "Directly map memory in the host address space. Much faster JIT compilation and execution.", "MemoryManagerHostTooltip": "Mappez directement la mémoire dans l'espace d'adresses de l'hôte. Compilation et exécution JIT beaucoup plus rapides.",
"MemoryManagerUnsafeTooltip": "Directly map memory, but do not mask the address within the guest address space before access. Faster, but at the cost of safety. The guest application can access memory from anywhere in Ryujinx, so only run programs you trust with this mode.", "MemoryManagerUnsafeTooltip": "Mapper directement la mémoire dans la carte, mais ne pas masquer l'adresse dans l'espace d'adressage du client avant l'accès. Plus rapide, mais la sécurité sera négliger. L'application peut accéder à la mémoire depuis n'importe où dans Ryujinx, donc exécutez uniquement les programmes en qui vous avez confiance avec ce mode.",
"DRamTooltip": "Utilizes an alternative MemoryMode layout to mimic a Switch development model.\n\nThis is only useful for higher-resolution texture packs or 4k resolution mods. Does NOT improve performance.\n\nLeave OFF if unsure.", "UseHypervisorTooltip": "Utiliser l'Hyperviseur au lieu du JIT. Améliore considérablement les performances lorsqu'il est disponible, mais peut être instable dans son état actuel.",
"IgnoreMissingServicesTooltip": "Ignores unimplemented Horizon OS services. This may help in bypassing crashes when booting certain games.\n\nLeave OFF if unsure.", "DRamTooltip": "Utilise une disposition alternative de la mémoire pour imiter le kit de développeur de la Switch.\n\nActiver cette option uniquement pour les packs de textures 4k ou les mods à résolution 4k.\nN'améliore pas les performances, cause des crashs dans certains jeux si activer.\n\nLaissez Désactiver en cas d'incertitude.",
"GraphicsBackendThreadingTooltip": "Executes graphics backend commands on a second thread.\n\nSpeeds up shader compilation, reduces stuttering, and improves performance on GPU drivers without multithreading support of their own. Slightly better performance on drivers with multithreading.\n\nSet to AUTO if unsure.", "IgnoreMissingServicesTooltip": "Ignore les services Horizon OS non-intégré. Cela peut aider à contourner les plantages lors du démarrage de certains jeux.\n\nActivez-le en cas d'incertitude.",
"GalThreadingTooltip": "Executes graphics backend commands on a second thread.\n\nSpeeds up shader compilation, reduces stuttering, and improves performance on GPU drivers without multithreading support of their own. Slightly better performance on drivers with multithreading.\n\nSet to AUTO if unsure.", "GraphicsBackendThreadingTooltip": "Exécute des commandes du backend graphiques sur un second thread.\n\nAccélère la compilation des shaders, réduit les crashs et les lags, améliore les performances sur les pilotes GPU sans support de multithreading. Légère augementation des performances sur les pilotes avec multithreading intégrer.\n\nRéglez sur Auto en cas d'incertitude.",
"ShaderCacheToggleTooltip": "Saves a disk shader cache which reduces stuttering in subsequent runs.\n\nLeave ON if unsure.", "GalThreadingTooltip": "Exécute des commandes du backend graphiques sur un second thread.\n\nAccélère la compilation des shaders, réduit les crashs et les lags, améliore les performances sur les pilotes GPU sans support de multithreading. Légère augementation des performances sur les pilotes avec multithreading intégrer.\n\nRéglez sur Auto en cas d'incertitude.",
"ResolutionScaleTooltip": "Resolution Scale applied to applicable render targets", "ShaderCacheToggleTooltip": "Enregistre un cache de shaders sur le disque dur, réduit le lag lors de multiples exécutions.\n\nLaissez Activer si vous n'êtes pas sûr.",
"ResolutionScaleEntryTooltip": "Floating point resolution scale, such as 1.5. Non-integral scales are more likely to cause issues or crash.", "ResolutionScaleTooltip": "Échelle de résolution appliquer au rendu du jeu",
"AnisotropyTooltip": "Level of Anisotropic Filtering (set to Auto to use the value requested by the game)", "ResolutionScaleEntryTooltip": "Échelle de résolution à virgule flottante, telle que : 1.5. Les échelles non intégrales sont plus susceptibles de causer des problèmes ou des crashs.",
"AnisotropyTooltip": "Niveau de Filtrage Anisotropique (mettre sur Auto pour utiliser la valeur demandée par le jeu)",
"AspectRatioTooltip": "Ratio d'aspect appliqué à la fenêtre de rendu", "AspectRatioTooltip": "Ratio d'aspect appliqué à la fenêtre de rendu",
"ShaderDumpPathTooltip": "Chemin de copie des Shaders Graphiques", "ShaderDumpPathTooltip": "Chemin de copie des Shaders Graphiques",
"FileLogTooltip": "Sauver le journal de la console dans un fichier journal sur le disque. Cela n'affecte pas les performances.", "FileLogTooltip": "Sauver le journal de la console dans un fichier journal sur le disque. Cela n'affecte pas les performances.",
"StubLogTooltip": "Prints stub log messages in the console. Does not affect performance.", "StubLogTooltip": "Affiche les messages de log dans la console. N'affecte pas les performances.",
"InfoLogTooltip": "Prints info log messages in the console. Does not affect performance.", "InfoLogTooltip": "Affiche les messages de log d'informations dans la console. N'affecte pas les performances.",
"WarnLogTooltip": "Prints warning log messages in the console. Does not affect performance.", "WarnLogTooltip": "Affiche les messages d'avertissement dans la console. N'affecte pas les performances.",
"ErrorLogTooltip": "Prints error log messages in the console. Does not affect performance.", "ErrorLogTooltip": "Affiche les messages de log d'erreur dans la console. N'affecte pas les performances.",
"TraceLogTooltip": "Prints trace log messages in the console. Does not affect performance.", "TraceLogTooltip": "Affiche la trace des messages de log dans la console. N'affecte pas les performances.",
"GuestLogTooltip": "Prints guest log messages in the console. Does not affect performance.", "GuestLogTooltip": "Affiche les messages de log des invités dans la console. N'affecte pas les performances.",
"FileAccessLogTooltip": "Prints file access log messages in the console.", "FileAccessLogTooltip": "Affiche les messages de log d'accès aux fichiers dans la console.",
"FSAccessLogModeTooltip": "Enables FS access log output to the console. Possible modes are 0-3", "FSAccessLogModeTooltip": "Active la sortie du journal d'accès FS de la console. Les modes possibles sont 0-3",
"DeveloperOptionTooltip": "Utiliser avec précaution", "DeveloperOptionTooltip": "Utiliser avec précaution",
"OpenGlLogLevel": "Nécessite l'activation des niveaux de journalisation appropriés", "OpenGlLogLevel": "Nécessite l'activation des niveaux de journalisation appropriés",
"DebugLogTooltip": "Prints debug log messages in the console.\n\nOnly use this if specifically instructed by a staff member, as it will make logs difficult to read and worsen emulator performance.", "DebugLogTooltip": "Affiche les messages de débogage dans la console.\n\nN'utilisez ceci que si un membre du personnel le demande, car cela rendra les logs difficiles à lire et réduit les performances de l'émulateur.",
"LoadApplicationFileTooltip": "Ouvrir un explorateur de fichiers pour choisir un fichier compatible Switch à charger", "LoadApplicationFileTooltip": "Ouvrir un explorateur de fichiers pour choisir un fichier compatible Switch à charger",
"LoadApplicationFolderTooltip": "Ouvrir un explorateur de fichiers pour choisir une application Switch compatible et décompressée à charger", "LoadApplicationFolderTooltip": "Ouvrir un explorateur de fichiers pour choisir une application Switch compatible et décompressée à charger",
"OpenRyujinxFolderTooltip": "Ouvrir le dossier du système de fichiers Ryujinx", "OpenRyujinxFolderTooltip": "Ouvrir le dossier du système de fichiers Ryujinx",
@ -511,7 +528,7 @@
"UserErrorApplicationNotFound": " Application introuvable", "UserErrorApplicationNotFound": " Application introuvable",
"UserErrorUnknown": "Erreur inconnue", "UserErrorUnknown": "Erreur inconnue",
"UserErrorUndefined": "Erreur non définie", "UserErrorUndefined": "Erreur non définie",
"UserErrorNoKeysDescription": "Ryujinx n'a pas trouvé votre fichier 'prod.keys'", "UserErrorNoKeysDescription": "Ryujinx n'a pas pu trouver votre fichier 'prod.keys'",
"UserErrorNoFirmwareDescription": "Ryujinx n'a pas trouvé de firmwares installés", "UserErrorNoFirmwareDescription": "Ryujinx n'a pas trouvé de firmwares installés",
"UserErrorFirmwareParsingFailedDescription": "Ryujinx n'a pas pu analyser le firmware fourni. Cela est généralement dû à des clés obsolètes.", "UserErrorFirmwareParsingFailedDescription": "Ryujinx n'a pas pu analyser le firmware fourni. Cela est généralement dû à des clés obsolètes.",
"UserErrorApplicationNotFoundDescription": "Ryujinx n'a pas pu trouver une application valide dans le chemin indiqué.", "UserErrorApplicationNotFoundDescription": "Ryujinx n'a pas pu trouver une application valide dans le chemin indiqué.",
@ -527,6 +544,9 @@
"SwkbdMinCharacters": "Doit comporter au moins {0} caractères", "SwkbdMinCharacters": "Doit comporter au moins {0} caractères",
"SwkbdMinRangeCharacters": "Doit contenir {0}-{1} caractères en longueur", "SwkbdMinRangeCharacters": "Doit contenir {0}-{1} caractères en longueur",
"SoftwareKeyboard": "Clavier logiciel", "SoftwareKeyboard": "Clavier logiciel",
"SoftwareKeyboardModeNumbersOnly": "Doit être uniquement des chiffres",
"SoftwareKeyboardModeAlphabet": "Doit être uniquement des caractères non CJK",
"SoftwareKeyboardModeASCII": "Doit être uniquement du texte ASCII",
"DialogControllerAppletMessagePlayerRange": "L'application demande {0} joueur(s) avec :\n\nTYPES : {1}\n\nJOUEURS : {2}\n\n{3}Merci d'ouvrir les Paramètres et de reconfigurer les Périphériques maintenant ou appuyez sur Fermer.", "DialogControllerAppletMessagePlayerRange": "L'application demande {0} joueur(s) avec :\n\nTYPES : {1}\n\nJOUEURS : {2}\n\n{3}Merci d'ouvrir les Paramètres et de reconfigurer les Périphériques maintenant ou appuyez sur Fermer.",
"DialogControllerAppletMessage": "L'application demande exactement {0} joueur(s) avec :\n\nTYPES : {1}\n\nJOUEURS : {2}\n\n{3}Merci d'ouvrir les Paramètres et de reconfigurer les Périphériques maintenant ou appuyez sur Fermer.", "DialogControllerAppletMessage": "L'application demande exactement {0} joueur(s) avec :\n\nTYPES : {1}\n\nJOUEURS : {2}\n\n{3}Merci d'ouvrir les Paramètres et de reconfigurer les Périphériques maintenant ou appuyez sur Fermer.",
"DialogControllerAppletDockModeSet": "Mode station d'accueil défini. Le portable est également invalide.\n\n", "DialogControllerAppletDockModeSet": "Mode station d'accueil défini. Le portable est également invalide.\n\n",
@ -572,6 +592,7 @@
"DlcWindowTitle": "Gestionnaire de contenus téléchargeables", "DlcWindowTitle": "Gestionnaire de contenus téléchargeables",
"UpdateWindowTitle": "Gestionnaire de mises à jour", "UpdateWindowTitle": "Gestionnaire de mises à jour",
"CheatWindowHeading": "Cheats disponibles pour {0} [{1}]", "CheatWindowHeading": "Cheats disponibles pour {0} [{1}]",
"BuildId": "BuildId:",
"DlcWindowHeading": "{0} Contenu(s) téléchargeable(s) disponible pour {1} ({2})", "DlcWindowHeading": "{0} Contenu(s) téléchargeable(s) disponible pour {1} ({2})",
"UserProfilesEditProfile": "Éditer la sélection", "UserProfilesEditProfile": "Éditer la sélection",
"Cancel": "Annuler", "Cancel": "Annuler",
@ -599,6 +620,8 @@
"SettingsTabHotkeysVolumeDownHotkey": "Diminuer le volume :", "SettingsTabHotkeysVolumeDownHotkey": "Diminuer le volume :",
"SettingsEnableMacroHLE": "Activer les macros HLE", "SettingsEnableMacroHLE": "Activer les macros HLE",
"SettingsEnableMacroHLETooltip": "Émulation de haut niveau du code de Macro GPU.\n\nAméliore les performances, mais peut causer des bugs graphiques dans certains jeux.\n\nLaissez ACTIVER si vous n'êtes pas sûr.", "SettingsEnableMacroHLETooltip": "Émulation de haut niveau du code de Macro GPU.\n\nAméliore les performances, mais peut causer des bugs graphiques dans certains jeux.\n\nLaissez ACTIVER si vous n'êtes pas sûr.",
"SettingsEnableColorSpacePassthrough": "Traversée de l'espace colorimétrique",
"SettingsEnableColorSpacePassthroughTooltip": "Dirige l'interface graphique Vulkan pour qu'il transmette les informations de couleur sans spécifier d'espace colorimétrique. Pour les utilisateurs possédant des écrans haut de gamme, cela peut entraîner des couleurs plus vives, au détriment de l'exactitude des couleurs.",
"VolumeShort": "Vol", "VolumeShort": "Vol",
"UserProfilesManageSaves": "Gérer les sauvegardes", "UserProfilesManageSaves": "Gérer les sauvegardes",
"DeleteUserSave": "Voulez-vous supprimer la sauvegarde de l'utilisateur pour ce jeu?", "DeleteUserSave": "Voulez-vous supprimer la sauvegarde de l'utilisateur pour ce jeu?",
@ -610,5 +633,24 @@
"Search": "Rechercher", "Search": "Rechercher",
"UserProfilesRecoverLostAccounts": "Récupérer les comptes perdus", "UserProfilesRecoverLostAccounts": "Récupérer les comptes perdus",
"Recover": "Récupérer", "Recover": "Récupérer",
"UserProfilesRecoverHeading": "Des sauvegardes ont été trouvées pour les comptes suivants" "UserProfilesRecoverHeading": "Des sauvegardes ont été trouvées pour les comptes suivants",
"UserProfilesRecoverEmptyList": "Aucun profil à restaurer",
"GraphicsAATooltip": "Applique l'anticrénelage au rendu du jeu",
"GraphicsAALabel": "Anticrénelage :",
"GraphicsScalingFilterLabel": "Filtre de mise à l'échelle :",
"GraphicsScalingFilterTooltip": "Active la mise à l'échelle du tampon d'image",
"GraphicsScalingFilterLevelLabel": "Niveau ",
"GraphicsScalingFilterLevelTooltip": "Définir le niveau du filtre de mise à l'échelle",
"SmaaLow": "SMAA Faible",
"SmaaMedium": "SMAA moyen",
"SmaaHigh": "SMAA Élevé",
"SmaaUltra": "SMAA Ultra",
"UserEditorTitle": "Modifier Utilisateur",
"UserEditorTitleCreate": "Créer Utilisateur",
"SettingsTabNetworkInterface": "Interface Réseau :",
"NetworkInterfaceTooltip": "Interface réseau pour les fonctionnalités LAN",
"NetworkInterfaceDefault": "Par défaut",
"PackagingShaders": "Empaquetage des Shaders",
"AboutChangelogButton": "Voir le Changelog sur GitHub",
"AboutChangelogButtonTooltipMessage": "Cliquez pour ouvrir le changelog de cette version dans votre navigateur par défaut."
} }

View file

@ -0,0 +1,656 @@
{
"Language": "אנגלית (ארה\"ב)",
"MenuBarFileOpenApplet": "פתח יישומון",
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "פתח את יישומון עורך ה- Mii במצב עצמאי",
"SettingsTabInputDirectMouseAccess": "גישה ישירה לעכבר",
"SettingsTabSystemMemoryManagerMode": "מצב מנהל זיכרון:",
"SettingsTabSystemMemoryManagerModeSoftware": "תוכנה",
"SettingsTabSystemMemoryManagerModeHost": "מארח (מהיר)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "מארח לא מבוקר (המהיר ביותר, לא בטוח)",
"SettingsTabSystemUseHypervisor": "השתמש ב Hypervisor",
"MenuBarFile": "_קובץ",
"MenuBarFileOpenFromFile": "_טען יישום מקובץ",
"MenuBarFileOpenUnpacked": "טען משחק _שאינו ארוז",
"MenuBarFileOpenEmuFolder": "פתח את תיקיית ריוג'ינקס",
"MenuBarFileOpenLogsFolder": "פתח את תיקיית קבצי הלוג",
"MenuBarFileExit": "_יציאה",
"MenuBarOptions": "הגדרות",
"MenuBarOptionsToggleFullscreen": "שנה מצב- מסך מלא",
"MenuBarOptionsStartGamesInFullscreen": "התחל משחקים במסך מלא",
"MenuBarOptionsStopEmulation": "עצור אמולציה",
"MenuBarOptionsSettings": "_הגדרות",
"MenuBarOptionsManageUserProfiles": "_נהל פרופילי משתמש",
"MenuBarActions": "_פעולות",
"MenuBarOptionsSimulateWakeUpMessage": "דמה הודעת השכמה",
"MenuBarActionsScanAmiibo": "סרוק אמיבו",
"MenuBarTools": "_כלים",
"MenuBarToolsInstallFirmware": "התקן קושחה",
"MenuBarFileToolsInstallFirmwareFromFile": "התקן קושחה מקובץ- ZIP/XCI",
"MenuBarFileToolsInstallFirmwareFromDirectory": "התקן קושחה מתוך תקייה",
"MenuBarToolsManageFileTypes": "ניהול סוגי קבצים",
"MenuBarToolsInstallFileTypes": "סוגי קבצי התקנה",
"MenuBarToolsUninstallFileTypes": "סוגי קבצי הסרה",
"MenuBarHelp": "עזרה",
"MenuBarHelpCheckForUpdates": "חפש עדכונים",
"MenuBarHelpAbout": "אודות",
"MenuSearch": "חפש...",
"GameListHeaderFavorite": "אהוב",
"GameListHeaderIcon": "סמל",
"GameListHeaderApplication": "שם",
"GameListHeaderDeveloper": "מפתח",
"GameListHeaderVersion": "גרסה",
"GameListHeaderTimePlayed": "זמן משחק",
"GameListHeaderLastPlayed": "שוחק לאחרונה",
"GameListHeaderFileExtension": "סיומת קובץ",
"GameListHeaderFileSize": "גודל הקובץ",
"GameListHeaderPath": "נתיב",
"GameListContextMenuOpenUserSaveDirectory": "פתח את תקיית השמור של המשתמש",
"GameListContextMenuOpenUserSaveDirectoryToolTip": "פותח את תקיית השמור של המשתמש ביישום הנוכחי",
"GameListContextMenuOpenDeviceSaveDirectory": "פתח את תקיית השמור של המכשיר",
"GameListContextMenuOpenDeviceSaveDirectoryToolTip": "פותח את הספרייה המכילה את שמור המכשיר של היישום",
"GameListContextMenuOpenBcatSaveDirectory": "פתח את תקיית השמור של ה-BCAT",
"GameListContextMenuOpenBcatSaveDirectoryToolTip": "פותח את תקיית שמור ה-BCAT של היישום",
"GameListContextMenuManageTitleUpdates": "מנהל עדכוני משחקים",
"GameListContextMenuManageTitleUpdatesToolTip": "פותח את חלון מנהל עדכוני המשחקים",
"GameListContextMenuManageDlc": "מנהל הרחבות",
"GameListContextMenuManageDlcToolTip": "פותח את חלון מנהל הרחבות המשחקים",
"GameListContextMenuOpenModsDirectory": "פתח את תקיית המודים",
"GameListContextMenuOpenModsDirectoryToolTip": "פותח את התקייה המכילה את המודים של היישום",
"GameListContextMenuCacheManagement": "ניהול מטמון",
"GameListContextMenuCacheManagementPurgePptc": "הוסף PPTC לתור בנייה מחדש",
"GameListContextMenuCacheManagementPurgePptcToolTip": "גרום ל-PPTC להבנות מחדש בפתיחה הבאה של המשחק",
"GameListContextMenuCacheManagementPurgeShaderCache": "ניקוי מטמון הצללות",
"GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "מוחק את מטמון ההצללות של היישום",
"GameListContextMenuCacheManagementOpenPptcDirectory": "פתח את תקיית PPTC",
"GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "פותח את התקייה של מטמון ה-PPTC של האפליקציה",
"GameListContextMenuCacheManagementOpenShaderCacheDirectory": "פתח את תקיית המטמון של ההצללות",
"GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "פותח את תקיית מטמון ההצללות של היישום",
"GameListContextMenuExtractData": "חילוץ נתונים",
"GameListContextMenuExtractDataExeFS": "ExeFS",
"GameListContextMenuExtractDataExeFSToolTip": "חלץ את קטע ה-ExeFS מתצורת היישום הנוכחית (כולל עדכונים)",
"GameListContextMenuExtractDataRomFS": "RomFS",
"GameListContextMenuExtractDataRomFSToolTip": "חלץ את קטע ה-RomFS מתצורת היישום הנוכחית (כולל עדכונים)",
"GameListContextMenuExtractDataLogo": "Logo",
"GameListContextMenuExtractDataLogoToolTip": "חלץ את קטע ה-Logo מתצורת היישום הנוכחית (כולל עדכונים)",
"StatusBarGamesLoaded": "{1}/{0} משחקים נטענו",
"StatusBarSystemVersion": "גרסת מערכת: {0}",
"LinuxVmMaxMapCountDialogTitle": "זוהתה מגבלה נמוכה עבור מיפויי זיכרון",
"LinuxVmMaxMapCountDialogTextPrimary": "האם תרצה להגביר את הערך של vm.max_map_count ל{0}",
"LinuxVmMaxMapCountDialogTextSecondary": "משחקים מסוימים עלולים לייצר עוד מיפויי זיכרון ממה שמתאפשר. Ryujinx יקרוס ברגע שהמגבלה תחרוג.",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "כן, עד האתחול הבא",
"LinuxVmMaxMapCountDialogButtonPersistent": "כן, לצמיתות",
"LinuxVmMaxMapCountWarningTextPrimary": "הכמות המירבית של מיפויי הזיכרון נמוכה מהמומלץ.",
"LinuxVmMaxMapCountWarningTextSecondary": "הערך הנוכחי של vm.max_map_count {0} נמוך מ{1}. משחקים מסוימים עלולים לייצר עוד מיפוי זיכרון ממה שמתאפשר.Ryujinx יקרוס ברגע שהמגבלה תחרוג.\n\nיתכן ותרצה להעלות את המגבלה הנוכחית או להתקין את pkexec, אשר יאפשר לRyujinx לסייע בכך.",
"Settings": "הגדרות",
"SettingsTabGeneral": "ממשק משתמש",
"SettingsTabGeneralGeneral": "כללי",
"SettingsTabGeneralEnableDiscordRichPresence": "הפעלת תצוגה עשירה בדיסקורד",
"SettingsTabGeneralCheckUpdatesOnLaunch": "בדוק אם קיימים עדכונים בהפעלה",
"SettingsTabGeneralShowConfirmExitDialog": "הראה דיאלוג \"אשר יציאה\"",
"SettingsTabGeneralHideCursor": "הסתר את הסמן",
"SettingsTabGeneralHideCursorNever": "אף פעם",
"SettingsTabGeneralHideCursorOnIdle": "במצב סרק",
"SettingsTabGeneralHideCursorAlways": "תמיד",
"SettingsTabGeneralGameDirectories": "תקיות משחקים",
"SettingsTabGeneralAdd": "הוסף",
"SettingsTabGeneralRemove": "הסר",
"SettingsTabSystem": "מערכת",
"SettingsTabSystemCore": "ליבה",
"SettingsTabSystemSystemRegion": "אזור מערכת:",
"SettingsTabSystemSystemRegionJapan": "יפן",
"SettingsTabSystemSystemRegionUSA": "ארה\"ב",
"SettingsTabSystemSystemRegionEurope": "אירופה",
"SettingsTabSystemSystemRegionAustralia": "אוסטרליה",
"SettingsTabSystemSystemRegionChina": "סין",
"SettingsTabSystemSystemRegionKorea": "קוריאה",
"SettingsTabSystemSystemRegionTaiwan": "טייוואן",
"SettingsTabSystemSystemLanguage": "שפת המערכת:",
"SettingsTabSystemSystemLanguageJapanese": "יפנית",
"SettingsTabSystemSystemLanguageAmericanEnglish": "אנגלית אמריקאית",
"SettingsTabSystemSystemLanguageFrench": "צרפתית",
"SettingsTabSystemSystemLanguageGerman": "גרמנית",
"SettingsTabSystemSystemLanguageItalian": "איטלקית",
"SettingsTabSystemSystemLanguageSpanish": "ספרדית",
"SettingsTabSystemSystemLanguageChinese": "סינית",
"SettingsTabSystemSystemLanguageKorean": "קוריאנית",
"SettingsTabSystemSystemLanguageDutch": "הולנדית",
"SettingsTabSystemSystemLanguagePortuguese": "פורטוגזית",
"SettingsTabSystemSystemLanguageRussian": "רוסית",
"SettingsTabSystemSystemLanguageTaiwanese": "טייוואנית",
"SettingsTabSystemSystemLanguageBritishEnglish": "אנגלית בריטית",
"SettingsTabSystemSystemLanguageCanadianFrench": "צרפתית קנדית",
"SettingsTabSystemSystemLanguageLatinAmericanSpanish": "ספרדית אמריקה הלטינית",
"SettingsTabSystemSystemLanguageSimplifiedChinese": "סינית פשוטה",
"SettingsTabSystemSystemLanguageTraditionalChinese": "סינית מסורתית",
"SettingsTabSystemSystemTimeZone": "אזור זמן מערכת:",
"SettingsTabSystemSystemTime": "זמן מערכת:",
"SettingsTabSystemEnableVsync": "VSync",
"SettingsTabSystemEnablePptc": "PPTC (Profiled Persistent Translation Cache)",
"SettingsTabSystemEnableFsIntegrityChecks": "FS בדיקות תקינות",
"SettingsTabSystemAudioBackend": "אחראי שמע:",
"SettingsTabSystemAudioBackendDummy": "גולם",
"SettingsTabSystemAudioBackendOpenAL": "OpenAL",
"SettingsTabSystemAudioBackendSoundIO": "SoundIO",
"SettingsTabSystemAudioBackendSDL2": "SDL2",
"SettingsTabSystemHacks": "האצות",
"SettingsTabSystemHacksNote": "עלול לגרום לאי יציבות",
"SettingsTabSystemExpandDramSize": "השתמש בפריסת זיכרון חלופית (נועד למפתחים)",
"SettingsTabSystemIgnoreMissingServices": "התעלם משירותים חסרים",
"SettingsTabGraphics": "גרפיקה",
"SettingsTabGraphicsAPI": "ממשק גראפי",
"SettingsTabGraphicsEnableShaderCache": "הפעל מטמון הצללות",
"SettingsTabGraphicsAnisotropicFiltering": "סינון אניסוטרופי:",
"SettingsTabGraphicsAnisotropicFilteringAuto": "אוטומטי",
"SettingsTabGraphicsAnisotropicFiltering2x": "2x",
"SettingsTabGraphicsAnisotropicFiltering4x": "4x",
"SettingsTabGraphicsAnisotropicFiltering8x": "8x",
"SettingsTabGraphicsAnisotropicFiltering16x": "16x",
"SettingsTabGraphicsResolutionScale": "קנה מידה של רזולוציה:",
"SettingsTabGraphicsResolutionScaleCustom": "מותאם אישית (לא מומלץ)",
"SettingsTabGraphicsResolutionScaleNative": "מקורי (720p/1080p)",
"SettingsTabGraphicsResolutionScale2x": "2x (1440p/2160p)",
"SettingsTabGraphicsResolutionScale3x": "3x (2160p/3240p)",
"SettingsTabGraphicsResolutionScale4x": "4x (2880p/4320p)",
"SettingsTabGraphicsAspectRatio": "יחס גובה-רוחב:",
"SettingsTabGraphicsAspectRatio4x3": "4:3",
"SettingsTabGraphicsAspectRatio16x9": "16:9",
"SettingsTabGraphicsAspectRatio16x10": "16:10",
"SettingsTabGraphicsAspectRatio21x9": "21:9",
"SettingsTabGraphicsAspectRatio32x9": "32:9",
"SettingsTabGraphicsAspectRatioStretch": "מתח לגודל חלון",
"SettingsTabGraphicsDeveloperOptions": "אפשרויות מפתח",
"SettingsTabGraphicsShaderDumpPath": "Graphics Shader Dump Path:",
"SettingsTabLogging": "רישום",
"SettingsTabLoggingLogging": "רישום",
"SettingsTabLoggingEnableLoggingToFile": "אפשר רישום לקובץ",
"SettingsTabLoggingEnableStubLogs": "אפשר רישום בדל",
"SettingsTabLoggingEnableInfoLogs": "אפשר רישום מידע",
"SettingsTabLoggingEnableWarningLogs": "אפשר רישום אזהרות",
"SettingsTabLoggingEnableErrorLogs": "אפשר רישום שגיאות",
"SettingsTabLoggingEnableTraceLogs": "הפעל רישום מעקבי",
"SettingsTabLoggingEnableGuestLogs": "הפעל רישום מארח",
"SettingsTabLoggingEnableFsAccessLogs": "אפשר רישום גישת קבצי מערכת",
"SettingsTabLoggingFsGlobalAccessLogMode": "מצב רישום גלובלי של גישת קבצי מערכת",
"SettingsTabLoggingDeveloperOptions": "אפשרויות מפתח",
"SettingsTabLoggingDeveloperOptionsNote": "אזהרה: יפחית ביצועים",
"SettingsTabLoggingGraphicsBackendLogLevel": "רישום גרפיקת קצה אחורי:",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "כלום",
"SettingsTabLoggingGraphicsBackendLogLevelError": "שגיאה",
"SettingsTabLoggingGraphicsBackendLogLevelPerformance": "האטות",
"SettingsTabLoggingGraphicsBackendLogLevelAll": "הכל",
"SettingsTabLoggingEnableDebugLogs": "אפשר רישום ניפוי באגים",
"SettingsTabInput": "קלט",
"SettingsTabInputEnableDockedMode": "מצב עגינה",
"SettingsTabInputDirectKeyboardAccess": "גישה ישירה למקלדת",
"SettingsButtonSave": "שמירה",
"SettingsButtonClose": "סגירה",
"SettingsButtonOk": "אישור",
"SettingsButtonCancel": "ביטול",
"SettingsButtonApply": "החל",
"ControllerSettingsPlayer": "שחקן/ית",
"ControllerSettingsPlayer1": "שחקן/ית 1",
"ControllerSettingsPlayer2": "שחקן/ית 2",
"ControllerSettingsPlayer3": "שחקן/ית 3",
"ControllerSettingsPlayer4": "שחקן/ית 4",
"ControllerSettingsPlayer5": "שחקן/ית 5",
"ControllerSettingsPlayer6": "שחקן/ית 6",
"ControllerSettingsPlayer7": "שחקן/ית 7",
"ControllerSettingsPlayer8": "שחקן/ית 8",
"ControllerSettingsHandheld": "נייד",
"ControllerSettingsInputDevice": "מכשיר קלט",
"ControllerSettingsRefresh": "רענון",
"ControllerSettingsDeviceDisabled": "מושבת",
"ControllerSettingsControllerType": "סוג שלט",
"ControllerSettingsControllerTypeHandheld": "נייד",
"ControllerSettingsControllerTypeProController": "שלט פרו ",
"ControllerSettingsControllerTypeJoyConPair": "ג'ויקון הותאם",
"ControllerSettingsControllerTypeJoyConLeft": "ג'ויקון שמאלי ",
"ControllerSettingsControllerTypeJoyConRight": "ג'ויקון ימני",
"ControllerSettingsProfile": "פרופיל",
"ControllerSettingsProfileDefault": "ברירת המחדל",
"ControllerSettingsLoad": "טעינה",
"ControllerSettingsAdd": "הוספה",
"ControllerSettingsRemove": "הסר",
"ControllerSettingsButtons": "כפתורים",
"ControllerSettingsButtonA": "A",
"ControllerSettingsButtonB": "B",
"ControllerSettingsButtonX": "X",
"ControllerSettingsButtonY": "Y",
"ControllerSettingsButtonPlus": "+",
"ControllerSettingsButtonMinus": "-",
"ControllerSettingsDPad": "כפתורי כיוונים",
"ControllerSettingsDPadUp": "מעלה",
"ControllerSettingsDPadDown": "מטה",
"ControllerSettingsDPadLeft": "שמאלה",
"ControllerSettingsDPadRight": "ימינה",
"ControllerSettingsStickButton": "כפתור",
"ControllerSettingsStickUp": "למעלה",
"ControllerSettingsStickDown": "למטה",
"ControllerSettingsStickLeft": "שמאלה",
"ControllerSettingsStickRight": "ימינה",
"ControllerSettingsStickStick": "סטיק",
"ControllerSettingsStickInvertXAxis": "הפיכת הX של הסטיק",
"ControllerSettingsStickInvertYAxis": "הפיכת הY של הסטיק",
"ControllerSettingsStickDeadzone": "שטח מת:",
"ControllerSettingsLStick": "מקל שמאלי",
"ControllerSettingsRStick": "מקל ימני",
"ControllerSettingsTriggersLeft": "הדק שמאלי",
"ControllerSettingsTriggersRight": "הדק ימני",
"ControllerSettingsTriggersButtonsLeft": "כפתור הדק שמאלי",
"ControllerSettingsTriggersButtonsRight": "כפתור הדק ימני",
"ControllerSettingsTriggers": "הדקים",
"ControllerSettingsTriggerL": "L",
"ControllerSettingsTriggerR": "R",
"ControllerSettingsTriggerZL": "ZL",
"ControllerSettingsTriggerZR": "ZR",
"ControllerSettingsLeftSL": "SL",
"ControllerSettingsLeftSR": "SR",
"ControllerSettingsRightSL": "SL",
"ControllerSettingsRightSR": "SR",
"ControllerSettingsExtraButtonsLeft": "כפתורים משמאל",
"ControllerSettingsExtraButtonsRight": "כפתורים מימין",
"ControllerSettingsMisc": "שונות",
"ControllerSettingsTriggerThreshold": "סף הדק:",
"ControllerSettingsMotion": "תנועה",
"ControllerSettingsMotionUseCemuhookCompatibleMotion": "השתמש בתנועת CemuHook תואמת ",
"ControllerSettingsMotionControllerSlot": "מיקום שלט",
"ControllerSettingsMotionMirrorInput": "קלט מראה",
"ControllerSettingsMotionRightJoyConSlot": "מיקום ג'ויקון ימני",
"ControllerSettingsMotionServerHost": "מארח השרת:",
"ControllerSettingsMotionGyroSensitivity": "רגישות ג'ירוסקופ:",
"ControllerSettingsMotionGyroDeadzone": "שטח מת של הג'ירוסקופ:",
"ControllerSettingsSave": "שמירה",
"ControllerSettingsClose": "סגירה",
"UserProfilesSelectedUserProfile": "פרופיל המשתמש הנבחר:",
"UserProfilesSaveProfileName": "שמור שם פרופיל",
"UserProfilesChangeProfileImage": "שנה תמונת פרופיל",
"UserProfilesAvailableUserProfiles": "פרופילי משתמש זמינים:",
"UserProfilesAddNewProfile": "צור פרופיל",
"UserProfilesDelete": "מחיקה",
"UserProfilesClose": "סגור",
"ProfileNameSelectionWatermark": "בחרו כינוי",
"ProfileImageSelectionTitle": "בחירת תמונת פרופיל",
"ProfileImageSelectionHeader": "בחרו תמונת פרופיל",
"ProfileImageSelectionNote": "אתם יכולים לייבא תמונת פרופיל מותאמת אישית, או לבחור אווטאר מקושחת המערכת",
"ProfileImageSelectionImportImage": "ייבוא קובץ תמונה",
"ProfileImageSelectionSelectAvatar": "בחרו אוואטר קושחה",
"InputDialogTitle": "דיאלוג קלט",
"InputDialogOk": "בסדר",
"InputDialogCancel": "ביטול",
"InputDialogAddNewProfileTitle": "בחרו את שם הפרופיל",
"InputDialogAddNewProfileHeader": "אנא הזינו שם לפרופיל",
"InputDialogAddNewProfileSubtext": "(אורך מרבי: {0})",
"AvatarChoose": "בחרו דמות",
"AvatarSetBackgroundColor": "הגדר צבע רקע",
"AvatarClose": "סגור",
"ControllerSettingsLoadProfileToolTip": "טען פרופיל",
"ControllerSettingsAddProfileToolTip": "הוסף פרופיל",
"ControllerSettingsRemoveProfileToolTip": "הסר פרופיל",
"ControllerSettingsSaveProfileToolTip": "שמור פרופיל",
"MenuBarFileToolsTakeScreenshot": "צלם מסך",
"MenuBarFileToolsHideUi": "הסתר ממשק משתמש ",
"GameListContextMenuRunApplication": "הרץ יישום",
"GameListContextMenuToggleFavorite": "למתג העדפה",
"GameListContextMenuToggleFavoriteToolTip": "למתג סטטוס העדפה של משחק",
"SettingsTabGeneralTheme": "ערכת נושא",
"SettingsTabGeneralThemeCustomTheme": "נתיב ערכת נושא מותאמת אישית",
"SettingsTabGeneralThemeBaseStyle": "סגנון בסיס",
"SettingsTabGeneralThemeBaseStyleDark": "כהה",
"SettingsTabGeneralThemeBaseStyleLight": "בהיר",
"SettingsTabGeneralThemeEnableCustomTheme": "אפשר ערכת נושא מותאמת אישית",
"ButtonBrowse": "עיין",
"ControllerSettingsConfigureGeneral": "הגדר",
"ControllerSettingsRumble": "רטט",
"ControllerSettingsRumbleStrongMultiplier": "העצמת רטט חזק",
"ControllerSettingsRumbleWeakMultiplier": "מכפיל רטט חלש",
"DialogMessageSaveNotAvailableMessage": "אין שמור משחק עבור [{1:x16}] {0}",
"DialogMessageSaveNotAvailableCreateSaveMessage": "האם תרצה ליצור שמור משחק עבור המשחק הזה?",
"DialogConfirmationTitle": "ריוג'ינקס - אישור",
"DialogUpdaterTitle": "ריוג'ינקס - מעדכן",
"DialogErrorTitle": "ריוג'ינקס - שגיאה",
"DialogWarningTitle": "ריוג'ינקס - אזהרה",
"DialogExitTitle": "ריוג'ינקס - יציאה",
"DialogErrorMessage": "ריוג'ינקס נתקל בשגיאה",
"DialogExitMessage": "האם אתם בטוחים שאתם רוצים לסגור את ריוג'ינקס?",
"DialogExitSubMessage": "כל הנתונים שלא נשמרו יאבדו!",
"DialogMessageCreateSaveErrorMessage": "אירעה שגיאה ביצירת שמור המשחק שצויין: {0}",
"DialogMessageFindSaveErrorMessage": "אירעה שגיאה במציאת שמור המשחק שצויין: {0}",
"FolderDialogExtractTitle": "בחרו את התיקייה לחילוץ",
"DialogNcaExtractionMessage": "מלחץ {0} ממקטע {1}...",
"DialogNcaExtractionTitle": "ריוג'ינקס - מחלץ מקטע NCA",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "כשל בחילוץ. ה-NCA הראשי לא היה קיים בקובץ שנבחר.",
"DialogNcaExtractionCheckLogErrorMessage": "כשל בחילוץ. קרא את קובץ הרישום למידע נוסף.",
"DialogNcaExtractionSuccessMessage": "החילוץ הושלם בהצלחה.",
"DialogUpdaterConvertFailedMessage": "המרת הגרסה הנוכחית של ריוג'ינקס נכשלה.",
"DialogUpdaterCancelUpdateMessage": "מבטל עדכון!",
"DialogUpdaterAlreadyOnLatestVersionMessage": "אתם כבר משתמשים בגרסה המעודכנת ביותר של ריוג'ינקס!",
"DialogUpdaterFailedToGetVersionMessage": "אירעה שגיאה בעת ניסיון לקבל עדכונים מ-גיטהב. זה יכול להיגרם אם הגרסה המעודכנת האחרונה נוצרה על ידי פעולות של גיטהב. נסה שוב בעוד מספר דקות.",
"DialogUpdaterConvertFailedGithubMessage": "המרת גרסת ריוג'ינקס שהתקבלה מ-עדכון הגרסאות של גיטהב נכשלה.",
"DialogUpdaterDownloadingMessage": "מוריד עדכון...",
"DialogUpdaterExtractionMessage": "מחלץ עדכון...",
"DialogUpdaterRenamingMessage": "משנה את שם העדכון...",
"DialogUpdaterAddingFilesMessage": "מוסיף עדכון חדש...",
"DialogUpdaterCompleteMessage": "העדכון הושלם!",
"DialogUpdaterRestartMessage": "האם אתם רוצים להפעיל מחדש את ריוג'ינקס עכשיו?",
"DialogUpdaterArchNotSupportedMessage": "אינך מריץ ארכיטקטורת מערכת נתמכת!",
"DialogUpdaterArchNotSupportedSubMessage": "(רק מערכות x64 נתמכות!)",
"DialogUpdaterNoInternetMessage": "אתם לא מחוברים לאינטרנט!",
"DialogUpdaterNoInternetSubMessage": "אנא ודא שיש לך חיבור אינטרנט תקין!",
"DialogUpdaterDirtyBuildMessage": "אתם לא יכולים לעדכן מבנה מלוכלך של ריוג'ינקס!",
"DialogUpdaterDirtyBuildSubMessage": "אם אתם מחפשים גרסא נתמכת, אנא הורידו את ריוג'ינקס בכתובת https://ryujinx.org",
"DialogRestartRequiredMessage": "אתחול נדרש",
"DialogThemeRestartMessage": "ערכת הנושא נשמרה. יש צורך בהפעלה מחדש כדי להחיל את ערכת הנושא.",
"DialogThemeRestartSubMessage": "האם ברצונך להפעיל מחדש?",
"DialogFirmwareInstallEmbeddedMessage": "האם תרצו להתקין את הקושחה המוטמעת במשחק הזה? (קושחה {0})",
"DialogFirmwareInstallEmbeddedSuccessMessage": "לא נמצאה קושחה מותקנת אבל ריוג'ינקס הצליח להתקין קושחה {0} מהמשחק שסופק. \\nהאמולטור יופעל כעת.",
"DialogFirmwareNoFirmwareInstalledMessage": "לא מותקנת קושחה",
"DialogFirmwareInstalledMessage": "הקושחה {0} הותקנה",
"DialogInstallFileTypesSuccessMessage": "סוגי קבצים הותקנו בהצלחה!",
"DialogInstallFileTypesErrorMessage": "נכשל בהתקנת סוגי קבצים.",
"DialogUninstallFileTypesSuccessMessage": "סוגי קבצים הוסרו בהצלחה!",
"DialogUninstallFileTypesErrorMessage": "נכשל בהסרת סוגי קבצים.",
"DialogOpenSettingsWindowLabel": "פתח את חלון ההגדרות",
"DialogControllerAppletTitle": "יישומון בקר",
"DialogMessageDialogErrorExceptionMessage": "שגיאה בהצגת דיאלוג ההודעה: {0}",
"DialogSoftwareKeyboardErrorExceptionMessage": "שגיאה בהצגת תוכנת המקלדת: {0}",
"DialogErrorAppletErrorExceptionMessage": "שגיאה בהצגת דיאלוג ErrorApplet: {0}",
"DialogUserErrorDialogMessage": "{0}: {1}",
"DialogUserErrorDialogInfoMessage": "\nלמידע נוסף על איך לתקן שגיאה זו, עקוב אחר מדריך ההתקנה שלנו.",
"DialogUserErrorDialogTitle": "שגיאת Ryujinx ({0})",
"DialogAmiiboApiTitle": "ממשק תכנות אמיבו",
"DialogAmiiboApiFailFetchMessage": "אירעה שגיאה בעת שליפת מידע מהממשק.",
"DialogAmiiboApiConnectErrorMessage": "לא ניתן להתחבר לממשק שרת האמיבו. ייתכן שהשירות מושבת או שתצטרך לוודא שהחיבור לאינטרנט שלך מקוון.",
"DialogProfileInvalidProfileErrorMessage": "הפרופיל {0} אינו תואם למערכת תצורת הקלט הנוכחית.",
"DialogProfileDefaultProfileOverwriteErrorMessage": "לא ניתן להחליף את פרופיל ברירת המחדל",
"DialogProfileDeleteProfileTitle": "מוחק פרופיל",
"DialogProfileDeleteProfileMessage": "פעולה זו היא בלתי הפיכה, האם אתם בטוחים שברצונכם להמשיך?",
"DialogWarning": "אזהרה",
"DialogPPTCDeletionMessage": "אם תמשיכו אתם עומדים לגרום לבנייה מחדש של מטמון ה-PPTC עבור:\n\n{0}",
"DialogPPTCDeletionErrorMessage": "שגיאה בטיהור מטמון PPTC ב-{0}: {1}",
"DialogShaderDeletionMessage": "אם תמשיכו אתם עומדים למחוק את מטמון ההצללות עבור:\n\n{0}",
"DialogShaderDeletionErrorMessage": "שגיאה בניקוי מטמון ההצללות ב-{0}: {1}",
"DialogRyujinxErrorMessage": "ריוג'ינקס נתקלה בשגיאה",
"DialogInvalidTitleIdErrorMessage": "שגיאת ממשק משתמש: למשחק שנבחר לא קיים מזהה משחק",
"DialogFirmwareInstallerFirmwareNotFoundErrorMessage": "לא נמצאה קושחת מערכת תקפה ב-{0}.",
"DialogFirmwareInstallerFirmwareInstallTitle": "התקן קושחה {0}",
"DialogFirmwareInstallerFirmwareInstallMessage": "גירסת המערכת {0} תותקן.",
"DialogFirmwareInstallerFirmwareInstallSubMessage": "\n\nזה יחליף את גרסת המערכת הנוכחית {0}.",
"DialogFirmwareInstallerFirmwareInstallConfirmMessage": "\n\nהאם ברצונך להמשיך?",
"DialogFirmwareInstallerFirmwareInstallWaitMessage": "מתקין קושחה...",
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "גרסת המערכת {0} הותקנה בהצלחה.",
"DialogUserProfileDeletionWarningMessage": "לא יהיו פרופילים אחרים שייפתחו אם הפרופיל שנבחר יימחק",
"DialogUserProfileDeletionConfirmMessage": "האם ברצונך למחוק את הפרופיל שנבחר",
"DialogUserProfileUnsavedChangesTitle": "אזהרה - שינויים לא שמורים",
"DialogUserProfileUnsavedChangesMessage": "ביצעת שינויים בפרופיל משתמש זה שלא נשמרו.",
"DialogUserProfileUnsavedChangesSubMessage": "האם ברצונך למחוק את השינויים האחרונים?",
"DialogControllerSettingsModifiedConfirmMessage": "הגדרות השלט הנוכחי עודכנו.",
"DialogControllerSettingsModifiedConfirmSubMessage": "האם ברצונך לשמור?",
"DialogLoadNcaErrorMessage": "{0}. קובץ שגוי: {1}",
"DialogDlcNoDlcErrorMessage": "הקובץ שצוין אינו מכיל DLC עבור המשחק שנבחר!",
"DialogPerformanceCheckLoggingEnabledMessage": "הפעלת רישום מעקב, אשר נועד לשמש מפתחים בלבד.",
"DialogPerformanceCheckLoggingEnabledConfirmMessage": "לביצועים מיטביים, מומלץ להשבית את רישום המעקב. האם ברצונך להשבית את רישום המעקב כעת?",
"DialogPerformanceCheckShaderDumpEnabledMessage": "הפעלת השלכת הצללה, שנועדה לשמש מפתחים בלבד.",
"DialogPerformanceCheckShaderDumpEnabledConfirmMessage": "לביצועים מיטביים, מומלץ להשבית את השלכת הצללה. האם ברצונך להשבית את השלכת הצללה עכשיו?",
"DialogLoadAppGameAlreadyLoadedMessage": "ישנו משחק שכבר רץ כעת",
"DialogLoadAppGameAlreadyLoadedSubMessage": "אנא הפסק את האמולציה או סגור את האמולטור לפני הפעלת משחק אחר.",
"DialogUpdateAddUpdateErrorMessage": "הקובץ שצוין אינו מכיל עדכון עבור המשחק שנבחר!",
"DialogSettingsBackendThreadingWarningTitle": "אזהרה - ריבוי תהליכי רקע",
"DialogSettingsBackendThreadingWarningMessage": "יש להפעיל מחדש את ריוג'ינקס לאחר שינוי אפשרות זו כדי שהיא תחול במלואה. בהתאם לפלטפורמה שלך, ייתכן שיהיה עליך להשבית ידנית את ריבוי ההליכים של ההתקן שלך בעת השימוש ב-ריוג'ינקס.",
"SettingsTabGraphicsFeaturesOptions": "אפשרויות",
"SettingsTabGraphicsBackendMultithreading": "אחראי גרפיקה רב-תהליכי:",
"CommonAuto": "אוטומטי",
"CommonOff": "כבוי",
"CommonOn": "דלוק",
"InputDialogYes": "כן",
"InputDialogNo": "לא",
"DialogProfileInvalidProfileNameErrorMessage": "שם הקובץ מכיל תווים לא חוקיים. אנא נסה שוב.",
"MenuBarOptionsPauseEmulation": "הפסק",
"MenuBarOptionsResumeEmulation": "המשך",
"AboutUrlTooltipMessage": "לחץ כדי לפתוח את אתר ריוג'ינקס בדפדפן ברירת המחדל שלך.",
"AboutDisclaimerMessage": "ריוג'ינקס אינה מזוהת עם נינטנדו,\nאו שוטפייה בכל דרך שהיא.",
"AboutAmiiboDisclaimerMessage": "ממשק אמיבו (www.amiiboapi.com) משומש בהדמיית האמיבו שלנו.",
"AboutPatreonUrlTooltipMessage": "לחץ כדי לפתוח את דף הפטראון של ריוג'ינקס בדפדפן ברירת המחדל שלך.",
"AboutGithubUrlTooltipMessage": "לחץ כדי לפתוח את דף הגיטהב של ריוג'ינקס בדפדפן ברירת המחדל שלך.",
"AboutDiscordUrlTooltipMessage": "לחץ כדי לפתוח הזמנה לשרת הדיסקורד של ריוג'ינקס בדפדפן ברירת המחדל שלך.",
"AboutTwitterUrlTooltipMessage": "לחץ כדי לפתוח את דף הטוויטר של Ryujinx בדפדפן ברירת המחדל שלך.",
"AboutRyujinxAboutTitle": "אודות:",
"AboutRyujinxAboutContent": "ריוג'ינקס הוא אמולטור עבור הנינטנדו סוויץ' (כל הזכויות שמורות).\nבבקשה תתמכו בנו בפטראון.\nקבל את כל החדשות האחרונות בטוויטר או בדיסקורד שלנו.\nמפתחים המעוניינים לתרום יכולים לקבל מידע נוסף ב-גיטהאב או ב-דיסקורד שלנו.",
"AboutRyujinxMaintainersTitle": "מתוחזק על ידי:",
"AboutRyujinxMaintainersContentTooltipMessage": "לחץ כדי לפתוח את דף התורמים בדפדפן ברירת המחדל שלך.",
"AboutRyujinxSupprtersTitle": "תמוך באמצעות Patreon",
"AmiiboSeriesLabel": "סדרת אמיבו",
"AmiiboCharacterLabel": "דמות",
"AmiiboScanButtonLabel": "סרוק את זה",
"AmiiboOptionsShowAllLabel": "הצג את כל האמיבואים",
"AmiiboOptionsUsRandomTagLabel": "האצה: השתמש בתג Uuid אקראי",
"DlcManagerTableHeadingEnabledLabel": "מאופשר",
"DlcManagerTableHeadingTitleIdLabel": "מזהה משחק",
"DlcManagerTableHeadingContainerPathLabel": "נתיב מכיל",
"DlcManagerTableHeadingFullPathLabel": "נתיב מלא",
"DlcManagerRemoveAllButton": "מחק הכל",
"DlcManagerEnableAllButton": "אפשר הכל",
"DlcManagerDisableAllButton": "השבת הכל",
"MenuBarOptionsChangeLanguage": "החלף שפה",
"MenuBarShowFileTypes": "הצג מזהה סוג קובץ",
"CommonSort": "מיין",
"CommonShowNames": "הצג שמות",
"CommonFavorite": "מועדף",
"OrderAscending": "סדר עולה",
"OrderDescending": "סדר יורד",
"SettingsTabGraphicsFeatures": "תכונות ושיפורים",
"ErrorWindowTitle": "חלון שגיאה",
"ToggleDiscordTooltip": "בחרו להציג את ריוג'ינקס או לא בפעילות הדיסקורד שלכם \"משוחק כרגע\".",
"AddGameDirBoxTooltip": "הזן תקיית משחקים כדי להוסיף לרשימה",
"AddGameDirTooltip": "הוסף תקיית משחקים לרשימה",
"RemoveGameDirTooltip": "הסר את תקיית המשחקים שנבחרה",
"CustomThemeCheckTooltip": "השתמש בעיצוב מותאם אישית של אבלוניה עבור ה-ממשק הגראפי כדי לשנות את המראה של תפריטי האמולטור",
"CustomThemePathTooltip": "נתיב לערכת נושא לממשק גראפי מותאם אישית",
"CustomThemeBrowseTooltip": "חפש עיצוב ממשק גראפי מותאם אישית",
"DockModeToggleTooltip": "מצב עגינה גורם למערכת המדומה להתנהג כ-נינטנדו סוויץ' בתחנת עגינתו. זה משפר את הנאמנות הגרפית ברוב המשחקים.\n לעומת זאת, השבתה של תכונה זו תגרום למערכת המדומה להתנהג כ- נינטנדו סוויץ' נייד, ולהפחית את איכות הגרפיקה.\n\nהגדירו את שלט שחקן 1 אם אתם מתכננים להשתמש במצב עגינה; הגדירו את פקדי כף היד אם אתם מתכננים להשתמש במצב נייד.\n\nמוטב להשאיר דלוק אם אתם לא בטוחים.",
"DirectKeyboardTooltip": "תמיכה ישירה למקלדת (HID). מספק גישה בשביל משחקים למקלדת שלך כמכשיר להזנת טקסט.",
"DirectMouseTooltip": "תמיכה ישירה לעכבר (HID). מספק גישה בשביל משחקים לעכבר שלך כהתקן הצבעה.",
"RegionTooltip": "שנה אזור מערכת",
"LanguageTooltip": "שנה שפת מערכת",
"TimezoneTooltip": "שנה את אזור הזמן של המערכת",
"TimeTooltip": "שנה זמן מערכת",
"VSyncToggleTooltip": "מדמה סנכרון אנכי של קונסולה. כלומר חסם הפריימים לרוב המשחקים; השבתה שלו עלולה לגרום למשחקים לרוץ מהר יותר או לגרום למסכי טעינה לקחת יותר זמן או להתקע.\n\nניתן לשנות מצב של תפריט זה בזמן משחק עם המקש לבחירתך. אנו ממליצים לעשות זאת אם אתם מתכננים להשבית אותו.\n\nמוטב להשאיר דלוק אם לא בטוחים.",
"PptcToggleTooltip": "שומר את פונקציות ה-JIT המתורגמות כך שלא יצטרכו לעבור תרגום שוב כאשר משחק עולה.\n\nמפחית תקיעות ומשפר מהירות עלייה של המערכת אחרי הפתיחה הראשונה של המשחק.\n\nמוטב להשאיר דלוק אם לא בטוחים.",
"FsIntegrityToggleTooltip": "בודק לקבצים שגויים כאשר משחק עולה, ואם מתגלים כאלו, מציג את מזהה השגיאה שלהם לקובץ הלוג.\n\nאין לכך השפעה על הביצועים ונועד לעזור לבדיקה וניפוי שגיאות של האמולטור.\n\nמוטב להשאיר דלוק אם לא בטוחים.",
"AudioBackendTooltip": "משנה את אחראי השמע.\n\nSDL2 הוא הנבחר, למראת שOpenAL וגם SoundIO משומשים כאפשרויות חלופיות. אפשרות הDummy לא תשמיע קול כלל.\n\nמוטב להשאיר על SDL2 אם לא בטוחים.",
"MemoryManagerTooltip": "שנה איך שזיכרון מארח מיוחד ומונגד. משפיע מאוד על ביצועי המעבד המדומה.\n\nמוטב להשאיר על מארח לא מבוקר אם לא בטוחים.",
"MemoryManagerSoftwareTooltip": "השתמש בתוכנת ה-page table בכדי להתייחס לתרגומים. דיוק מרבי לקונסולה אך המימוש הכי איטי.",
"MemoryManagerHostTooltip": "ממפה זיכרון ישירות לכתובת המארח. מהיר בהרבה ביכולות קימפול ה-JIT והריצה.",
"MemoryManagerUnsafeTooltip": "ממפה זיכרון ישירות, אך לא ממסך את הכתובת בתוך כתובת המארח לפני הגישה. מהיר, אך במחיר של הגנה. יישום המארח בעל גישה לזיכרון מכל מקום בריוג'ינקס, לכן הריצו איתו רק קבצים שאתם סומכים עליהם.",
"UseHypervisorTooltip": "השתמש ב- Hypervisor במקום JIT. משפר מאוד ביצועים כשניתן, אבל יכול להיות לא יציב במצבו הנוכחי.",
"DRamTooltip": "מנצל תצורת מצב-זיכרון חלופית לחכות את מכשיר הפיתוח של הסוויץ'.\n\nזה שימושי להחלפת חבילות מרקמים באיכותיים יותר או כאלו ברזולוציית 4k. לא משפר ביצועים.\n\nמוטב להשאיר כבוי אם לא בטוחים.",
"IgnoreMissingServicesTooltip": "מתעלם מפעולות שלא קיבלו מימוש במערכת ההפעלה Horizon OS. זה עלול לעזור לעקוף קריסות של היישום במשחקים מסויימים.\n\nמוטב להשאיר כבוי אם לא בטוחים.",
"GraphicsBackendThreadingTooltip": "מריץ פקודות גראפיקה בתהליך שני נפרד.\n\nמאיץ עיבוד הצללות, מפחית תקיעות ומשפר ביצועים של דרייבר כרטיסי מסך אשר לא תומכים בהרצה רב-תהליכית.\n\nמוטב להשאיר על אוטומטי אם לא בטוחים.",
"GalThreadingTooltip": "מריץ פקודות גראפיקה בתהליך שני נפרד.\n\nמאיץ עיבוד הצללות, מפחית תקיעות ומשפר ביצועים של דרייבר כרטיסי מסך אשר לא תומכים בהרצה רב-תהליכית.\n\nמוטב להשאיר על אוטומטי אם לא בטוחים.",
"ShaderCacheToggleTooltip": "שומר זכרון מטמון של הצללות, דבר שמפחית תקיעות בריצות מסוימות.\n\nמוטב להשאיר דלוק אם לא בטוחים.",
"ResolutionScaleTooltip": "שיפור רזולוצייה המאופשרת לעיבוד מטרות.",
"ResolutionScaleEntryTooltip": "שיפור רזולוציית נקודה צפה, כגון 1.5. הוא שיפור לא אינטגרלי הנוטה לגרום יותר בעיות או להקריס.",
"AnisotropyTooltip": "רמת סינון אניסוטרופי (מוגדר לאוטומטי כדי להשתמש בערך המבוקש על ידי המשחק)",
"AspectRatioTooltip": "יחס גובה-רוחב הוחל על חלון המעבד.",
"ShaderDumpPathTooltip": "נתיב השלכת הצללות גראפיות",
"FileLogTooltip": "שומר את רישומי שורת הפקודות לזיכרון, לא משפיע על ביצועי היישום.",
"StubLogTooltip": "מדפיס רישומים כושלים לשורת הפקודות. לא משפיע על ביצועי היישום.",
"InfoLogTooltip": "מדפיק רישומי מידע לשורת הפקודות. לא משפיע על ביצועי היישום.",
"WarnLogTooltip": "מדפיק רישומי הערות לשורת הפקודות. לא משפיע על ביצועי היישום.",
"ErrorLogTooltip": "מדפיס רישומי שגיאות לשורת הפקודות. לא משפיע על ביצועי היישום.",
"TraceLogTooltip": "מדפיק רישומי זיכרון לשורת הפקודות. לא משפיע על ביצועי היישום.",
"GuestLogTooltip": "מדפיס רישומי אורח לשורת הפקודות. לא משפיע על ביצועי היישום.",
"FileAccessLogTooltip": "מדפיס גישות לקבצי רישום לשורת הפקודות.",
"FSAccessLogModeTooltip": "מאפשר גישה לרישומי FS ליציאת שורת הפקודות. האפשרויות הינן 0-3.",
"DeveloperOptionTooltip": "השתמש בזהירות",
"OpenGlLogLevel": "דורש הפעלת רמות רישום מתאימות",
"DebugLogTooltip": "מדפיס הודעות יומן ניפוי באגים בשורת הפקודות.",
"LoadApplicationFileTooltip": "פתח סייר קבצים כדי לבחור קובץ תואם סוויץ' לטעינה",
"LoadApplicationFolderTooltip": "פתח סייר קבצים כדי לבחור יישום תואם סוויץ', לא ארוז לטעינה.",
"OpenRyujinxFolderTooltip": "פתח את תיקיית מערכת הקבצים ריוג'ינקס",
"OpenRyujinxLogsTooltip": "פותח את התיקיה שאליה נכתבים רישומים",
"ExitTooltip": "צא מריוג'ינקס",
"OpenSettingsTooltip": "פתח את חלון ההגדרות",
"OpenProfileManagerTooltip": "פתח את חלון מנהל פרופילי המשתמש",
"StopEmulationTooltip": "הפסק את הדמייה של המשחק הנוכחי וחזור למסך בחירת המשחק",
"CheckUpdatesTooltip": "בדוק אם קיימים עדכונים לריוג'ינקס",
"OpenAboutTooltip": "פתח את חלון אודות היישום",
"GridSize": "גודל רשת",
"GridSizeTooltip": "שנה את גודל המוצרים על הרשת.",
"SettingsTabSystemSystemLanguageBrazilianPortuguese": "פורטוגלית ברזילאית",
"AboutRyujinxContributorsButtonHeader": "צפה בכל התורמים",
"SettingsTabSystemAudioVolume": "עוצמת קול: ",
"AudioVolumeTooltip": "שנה עוצמת קול",
"SettingsTabSystemEnableInternetAccess": "אפשר גישה לאינטרנט בתור אורח/חיבור לאן",
"EnableInternetAccessTooltip": "מאפשר ליישומים באמולצייה להתחבר לאינטרנט.\n\nמשחקים עם חיבור לאן יכולים להתחבר אחד לשני כשאופצייה זו מופעלת והמערכות מתחברות לאותה נקודת גישה. כמו כן זה כולל שורות פקודות אמיתיות גם.\n\nאופצייה זו לא מאפשרת חיבור לשרתי נינטנדו. כשהאופצייה דלוקה היא עלולה לגרום לקריסת היישום במשחקים מסויימים שמנסים להתחבר לאינטרנט.\n\nמוטב להשאיר כבוי אם לא בטוחים.",
"GameListContextMenuManageCheatToolTip": "נהל צ'יטים",
"GameListContextMenuManageCheat": "נהל צ'יטים",
"ControllerSettingsStickRange": "טווח:",
"DialogStopEmulationTitle": "ריוג'ינקס - עצור אמולציה",
"DialogStopEmulationMessage": "האם אתם בטוחים שאתם רוצים לסגור את האמולצייה?",
"SettingsTabCpu": "מעבד",
"SettingsTabAudio": "שמע",
"SettingsTabNetwork": "רשת",
"SettingsTabNetworkConnection": "חיבור רשת",
"SettingsTabCpuCache": "מטמון מעבד",
"SettingsTabCpuMemory": "מצב מעבד",
"DialogUpdaterFlatpakNotSupportedMessage": "בבקשה עדכן את ריוג'ינקס דרך פלאטהב.",
"UpdaterDisabledWarningTitle": "מעדכן מושבת!",
"GameListContextMenuOpenSdModsDirectory": "פתח את תקיית המודים של אטמוספרה",
"GameListContextMenuOpenSdModsDirectoryToolTip": "פותח את תקיית כרטיס ה-SD החלופית של אטמוספרה המכילה את המודים של האפליקציה. שימושי עבור מודים ארוזים עבור חומרה אמיתית.",
"ControllerSettingsRotate90": "סובב 90° עם בכיוון השעון",
"IconSize": "גודל הסמל",
"IconSizeTooltip": "שנה את גודל הסמלים של משחקים",
"MenuBarOptionsShowConsole": "הצג שורת פקודות",
"ShaderCachePurgeError": "שגיאה בניקוי מטמון ההצללות ב-{0}: {1}",
"UserErrorNoKeys": "המפתחות לא נמצאו",
"UserErrorNoFirmware": "קושחה לא נמצאה",
"UserErrorFirmwareParsingFailed": "שגיאת ניתוח קושחה",
"UserErrorApplicationNotFound": "יישום לא נמצא",
"UserErrorUnknown": "שגיאה לא ידועה",
"UserErrorUndefined": "שגיאה לא מוגדרת",
"UserErrorNoKeysDescription": "ריוג'ינקס לא הצליח למצוא את קובץ ה-'prod.keys' שלך",
"UserErrorNoFirmwareDescription": "ריוג'ינקס לא הצליחה למצוא קושחה מותקנת",
"UserErrorFirmwareParsingFailedDescription": "ריוג'ינקס לא הצליחה לנתח את הקושחה שסופקה. זה נגרם בדרך כלל על ידי מפתחות לא עדכניים.",
"UserErrorApplicationNotFoundDescription": "ריוג'ינקס לא מצאה יישום תקין בנתיב הנתון",
"UserErrorUnknownDescription": "קרתה שגיאה לא ידועה!",
"UserErrorUndefinedDescription": "קרתה שגיאה לא מוגדרת! זה לא אמור לקרות, אנא צרו קשר עם מפתח!",
"OpenSetupGuideMessage": "פתח מדריך התקנה",
"NoUpdate": "אין עדכון",
"TitleUpdateVersionLabel": "גרסה {0}",
"RyujinxInfo": "ריוג'ינקס - מידע",
"RyujinxConfirm": "ריוג'ינקס - אישור",
"FileDialogAllTypes": "כל הסוגים",
"Never": "אף פעם",
"SwkbdMinCharacters": "לפחות {0} תווים",
"SwkbdMinRangeCharacters": "באורך {0}-{1} תווים",
"SoftwareKeyboard": "מקלדת וירטואלית",
"SoftwareKeyboardModeNumbersOnly": "מחויב להיות מספרי בלבד",
"SoftwareKeyboardModeAlphabet": "מחויב להיות ללא אותיות CJK",
"SoftwareKeyboardModeASCII": "מחויב להיות טקסט אסקיי",
"DialogControllerAppletMessagePlayerRange": "האפליקציה מבקשת {0} שחקנים עם:\n\nסוגים: {1}\n\nשחקנים: {2}\n\n{3}אנא פתח את ההגדרות והגדר מחדש את הקלט כעת או סגור.",
"DialogControllerAppletMessage": "האפליקציה מבקשת בדיוק {0} שחקנים עם:\n\nסוגים: {1}\n\nשחקנים: {2}\n\n{3}אנא פתח את ההגדרות והגדר מחדש את הקלט כעת או סגור.",
"DialogControllerAppletDockModeSet": "במצב עגינה. בנוסף מצב נייד לא אפשרי.\n\n",
"UpdaterRenaming": "משנה שמות של קבצים ישנים...",
"UpdaterRenameFailed": "המעדכן לא הצליח לשנות את שם הקובץ: {0}",
"UpdaterAddingFiles": "מוסיף קבצים חדשים...",
"UpdaterExtracting": "מחלץ עדכון...",
"UpdaterDownloading": "מוריד עדכון...",
"Game": "משחק",
"Docked": "בתחנת עגינה",
"Handheld": "נייד",
"ConnectionError": "שגיאת חיבור",
"AboutPageDeveloperListMore": "{0} ועוד...",
"ApiError": "שגיאת ממשק.",
"LoadingHeading": "טוען {0}",
"CompilingPPTC": "קימפול PTC",
"CompilingShaders": "קימפול הצללות",
"AllKeyboards": "כל המקלדות",
"OpenFileDialogTitle": "בחר קובץ נתמך לפתיחה",
"OpenFolderDialogTitle": "בחר תיקיה עם משחק לא ארוז",
"AllSupportedFormats": "כל הפורמטים הנתמכים",
"RyujinxUpdater": "מעדכן ריוג'ינקס",
"SettingsTabHotkeys": "מקשי קיצור במקלדת",
"SettingsTabHotkeysHotkeys": "מקשי קיצור במקלדת",
"SettingsTabHotkeysToggleVsyncHotkey": "שנה סינכרון אנכי:",
"SettingsTabHotkeysScreenshotHotkey": "צילום מסך:",
"SettingsTabHotkeysShowUiHotkey": "הצג ממשק משתמש:",
"SettingsTabHotkeysPauseHotkey": "הפסק:",
"SettingsTabHotkeysToggleMuteHotkey": "השתק:",
"ControllerMotionTitle": "הגדרות שליטת תנועות ג'ירוסקופ",
"ControllerRumbleTitle": "הגדרות רטט",
"SettingsSelectThemeFileDialogTitle": "בחרו קובץ ערכת נושא",
"SettingsXamlThemeFile": "קובץ ערכת נושא Xaml",
"AvatarWindowTitle": "ניהול חשבונות - אוואטר",
"Amiibo": "אמיבו",
"Unknown": "לא ידוע",
"Usage": "שימוש",
"Writable": "ניתן לכתיבה",
"SelectDlcDialogTitle": "בחרו קבצי הרחבות משחק",
"SelectUpdateDialogTitle": "בחרו קבצי עדכון",
"UserProfileWindowTitle": "ניהול פרופילי משתמש",
"CheatWindowTitle": "נהל צ'יטים למשחק",
"DlcWindowTitle": "נהל הרחבות משחק עבור {0} ({1})",
"UpdateWindowTitle": "נהל עדכוני משחקים",
"CheatWindowHeading": "צ'יטים זמינים עבור {0} [{1}]",
"BuildId": "מזהה בניה:",
"DlcWindowHeading": "{0} הרחבות משחק",
"UserProfilesEditProfile": "ערוך נבחר/ים",
"Cancel": "בטל",
"Save": "שמור",
"Discard": "השלך",
"UserProfilesSetProfileImage": "הגדר תמונת פרופיל",
"UserProfileEmptyNameError": "נדרש שם",
"UserProfileNoImageError": "נדרשת תמונת פרופיל",
"GameUpdateWindowHeading": "נהל עדכונים עבור {0} ({1})",
"SettingsTabHotkeysResScaleUpHotkey": "שפר רזולוציה:",
"SettingsTabHotkeysResScaleDownHotkey": "הפחת רזולוציה:",
"UserProfilesName": "שם:",
"UserProfilesUserId": "מזהה משתמש:",
"SettingsTabGraphicsBackend": "אחראי גראפיקה",
"SettingsTabGraphicsBackendTooltip": "אחראי גראפיקה לשימוש",
"SettingsEnableTextureRecompression": "אפשר דחיסה מחדש של המרקם",
"SettingsEnableTextureRecompressionTooltip": " דוחס מרקמים מסויימים להפחתת השימוש בראם הוירטואלי.\n\nמומלץ לשימוש עם כרטיס גראפי בעל פחות מ-4GiB בראם הוירטואלי.\n\nמוטב להשאיר כבוי אם אינכם בטוחים.",
"SettingsTabGraphicsPreferredGpu": "כרטיס גראפי מועדף",
"SettingsTabGraphicsPreferredGpuTooltip": "בחר את הכרטיס הגראפי שישומש עם הגראפיקה של וולקאן.\n\nדבר זה לא משפיע על הכרטיס הגראפי שישומש עם OpenGL.\n\nמוטב לבחור את ה-GPU המסומן כ-\"dGPU\" אם אינכם בטוחים, אם זו לא אופצייה, אל תשנו דבר.",
"SettingsAppRequiredRestartMessage": "ריוג'ינקס דורש אתחול מחדש",
"SettingsGpuBackendRestartMessage": "הגדרות אחראי גרפיקה או כרטיס גראפי שונו. זה ידרוש הפעלה מחדש כדי להחיל שינויים",
"SettingsGpuBackendRestartSubMessage": "האם ברצונך להפעיל מחדש כעט?",
"RyujinxUpdaterMessage": "האם ברצונך לעדכן את ריוג'ינקס לגרסא האחרונה?",
"SettingsTabHotkeysVolumeUpHotkey": "הגבר את עוצמת הקול:",
"SettingsTabHotkeysVolumeDownHotkey": "הנמך את עוצמת הקול:",
"SettingsEnableMacroHLE": "Enable Macro HLE",
"SettingsEnableMacroHLETooltip": "אמולצייה ברמה גבוהה של כרטיס גראפי עם קוד מקרו.\n\nמשפר את ביצועי היישום אך עלול לגרום לגליצ'ים חזותיים במשחקים מסויימים.\n\nמוטב להשאיר דלוק אם אינך בטוח.",
"SettingsEnableColorSpacePassthrough": "Color Space Passthrough",
"SettingsEnableColorSpacePassthroughTooltip": "Directs the Vulkan backend to pass through color information without specifying a color space. For users with wide gamut displays, this may result in more vibrant colors, at the cost of color correctness.",
"VolumeShort": "שמע",
"UserProfilesManageSaves": "נהל שמורים",
"DeleteUserSave": "האם ברצונך למחוק את תקיית השמור למשחק זה?",
"IrreversibleActionNote": "הפעולה הזו בלתי הפיכה.",
"SaveManagerHeading": "נהל שמורי משחק עבור {0} ({1})",
"SaveManagerTitle": "מנהל שמירות",
"Name": "שם",
"Size": "גודל",
"Search": "חפש",
"UserProfilesRecoverLostAccounts": "שחזר חשבון שאבד",
"Recover": "שחזר",
"UserProfilesRecoverHeading": "שמורים נמצאו לחשבונות הבאים",
"UserProfilesRecoverEmptyList": "אין פרופילים לשחזור",
"GraphicsAATooltip": "מחיל החלקת-עקומות על עיבוד המשחק",
"GraphicsAALabel": "החלקת-עקומות:",
"GraphicsScalingFilterLabel": "מסנן מידת איכות:",
"GraphicsScalingFilterTooltip": "אפשר מידת איכות מסוג איגור-תמונה",
"GraphicsScalingFilterLevelLabel": "רמה",
"GraphicsScalingFilterLevelTooltip": "קבע מידת איכות תמונה לפי רמת סינון",
"SmaaLow": "SMAA נמוך",
"SmaaMedium": "SMAA בינוני",
"SmaaHigh": "SMAA גבוהה",
"SmaaUltra": "SMAA אולטרה",
"UserEditorTitle": "ערוך משתמש",
"UserEditorTitleCreate": "צור משתמש",
"SettingsTabNetworkInterface": "ממשק רשת",
"NetworkInterfaceTooltip": "ממשק הרשת המשומש עבור יכולות לאן",
"NetworkInterfaceDefault": "ברירת המחדל",
"PackagingShaders": "אורז הצללות",
"AboutChangelogButton": "צפה במידע אודות שינויים בגיטהב",
"AboutChangelogButtonTooltipMessage": "לחץ כדי לפתוח את יומן השינויים עבור גרסה זו בדפדפן ברירת המחדל שלך."
}

View file

@ -2,16 +2,17 @@
"Language": "Italiano", "Language": "Italiano",
"MenuBarFileOpenApplet": "Apri Applet", "MenuBarFileOpenApplet": "Apri Applet",
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "Apri l'applet Mii Editor in modalità Standalone", "MenuBarFileOpenAppletOpenMiiAppletToolTip": "Apri l'applet Mii Editor in modalità Standalone",
"SettingsTabInputDirectMouseAccess": "Accesso diretto al mouse", "SettingsTabInputDirectMouseAccess": "Accesso diretto mouse",
"SettingsTabSystemMemoryManagerMode": "Modalità di gestione della memoria:", "SettingsTabSystemMemoryManagerMode": "Modalità di gestione della memoria:",
"SettingsTabSystemMemoryManagerModeSoftware": "Software", "SettingsTabSystemMemoryManagerModeSoftware": "Software",
"SettingsTabSystemMemoryManagerModeHost": "Host (veloce)", "SettingsTabSystemMemoryManagerModeHost": "Host (veloce)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "Host Unchecked (più veloce, non sicura)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "Host Unchecked (più veloce, non sicura)",
"SettingsTabSystemUseHypervisor": "Usa Hypervisor",
"MenuBarFile": "_File", "MenuBarFile": "_File",
"MenuBarFileOpenFromFile": "_Carica applicazione da un file", "MenuBarFileOpenFromFile": "_Carica applicazione da un file",
"MenuBarFileOpenUnpacked": "Carica _gioco estratto", "MenuBarFileOpenUnpacked": "Carica _gioco estratto",
"MenuBarFileOpenEmuFolder": "Apri cartella di Ryujinx", "MenuBarFileOpenEmuFolder": "Apri cartella di Ryujinx",
"MenuBarFileOpenLogsFolder": "Apri cartella dei logs", "MenuBarFileOpenLogsFolder": "Apri cartella dei Log",
"MenuBarFileExit": "_Esci", "MenuBarFileExit": "_Esci",
"MenuBarOptions": "Opzioni", "MenuBarOptions": "Opzioni",
"MenuBarOptionsToggleFullscreen": "Schermo intero", "MenuBarOptionsToggleFullscreen": "Schermo intero",
@ -26,11 +27,14 @@
"MenuBarToolsInstallFirmware": "Installa firmware", "MenuBarToolsInstallFirmware": "Installa firmware",
"MenuBarFileToolsInstallFirmwareFromFile": "Installa un firmware da file XCI o ZIP", "MenuBarFileToolsInstallFirmwareFromFile": "Installa un firmware da file XCI o ZIP",
"MenuBarFileToolsInstallFirmwareFromDirectory": "Installa un firmare da una cartella", "MenuBarFileToolsInstallFirmwareFromDirectory": "Installa un firmare da una cartella",
"MenuBarToolsManageFileTypes": "Gestisci i tipi di file",
"MenuBarToolsInstallFileTypes": "Installa i tipi di file",
"MenuBarToolsUninstallFileTypes": "Disinstalla i tipi di file",
"MenuBarHelp": "Aiuto", "MenuBarHelp": "Aiuto",
"MenuBarHelpCheckForUpdates": "Controlla aggiornamenti", "MenuBarHelpCheckForUpdates": "Controlla aggiornamenti",
"MenuBarHelpAbout": "Informazioni", "MenuBarHelpAbout": "Informazioni",
"MenuSearch": "Cerca...", "MenuSearch": "Cerca...",
"GameListHeaderFavorite": "Pref", "GameListHeaderFavorite": "Preferito",
"GameListHeaderIcon": "Icona", "GameListHeaderIcon": "Icona",
"GameListHeaderApplication": "Nome", "GameListHeaderApplication": "Nome",
"GameListHeaderDeveloper": "Sviluppatore", "GameListHeaderDeveloper": "Sviluppatore",
@ -70,13 +74,23 @@
"GameListContextMenuExtractDataLogoToolTip": "Estrae la sezione Logo dall'attuale configurazione dell'applicazione (includendo aggiornamenti)", "GameListContextMenuExtractDataLogoToolTip": "Estrae la sezione Logo dall'attuale configurazione dell'applicazione (includendo aggiornamenti)",
"StatusBarGamesLoaded": "{0}/{1} Giochi caricati", "StatusBarGamesLoaded": "{0}/{1} Giochi caricati",
"StatusBarSystemVersion": "Versione di sistema: {0}", "StatusBarSystemVersion": "Versione di sistema: {0}",
"LinuxVmMaxMapCountDialogTitle": "Limite basso per le mappature di memoria rilevate",
"LinuxVmMaxMapCountDialogTextPrimary": "Vuoi aumentare il valore di vm.max_map_count a {0}?",
"LinuxVmMaxMapCountDialogTextSecondary": "Alcuni giochi potrebbero provare a creare più mappature di memoria di quanto sia attualmente consentito. Ryujinx si bloccherà non appena questo limite viene superato.",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "Sì, fino al prossimo riavvio",
"LinuxVmMaxMapCountDialogButtonPersistent": "Sì, in modo permanente",
"LinuxVmMaxMapCountWarningTextPrimary": "La quantità massima di mappature di memoria è inferiore a quella consigliata.",
"LinuxVmMaxMapCountWarningTextSecondary": "Il valore corrente di vm.max_map_count ({0}) è inferiore a {1}. Alcuni giochi potrebbero provare a creare più mappature di memoria di quanto sia attualmente consentito. Ryujinx si bloccherà non appena questo limite viene superato.\n\nPotresti voler aumentare manualmente il limite o installare pkexec, il che permette a Ryujinx di assisterlo.",
"Settings": "Impostazioni", "Settings": "Impostazioni",
"SettingsTabGeneral": "Interfaccia utente", "SettingsTabGeneral": "Interfaccia utente",
"SettingsTabGeneralGeneral": "Generali", "SettingsTabGeneralGeneral": "Generali",
"SettingsTabGeneralEnableDiscordRichPresence": "Attiva Discord Rich Presence", "SettingsTabGeneralEnableDiscordRichPresence": "Attiva Discord Rich Presence",
"SettingsTabGeneralCheckUpdatesOnLaunch": "Controlla aggiornamenti all'avvio", "SettingsTabGeneralCheckUpdatesOnLaunch": "Controlla aggiornamenti all'avvio",
"SettingsTabGeneralShowConfirmExitDialog": "Mostra dialogo \"Conferma Uscita\"", "SettingsTabGeneralShowConfirmExitDialog": "Mostra dialogo \"Conferma Uscita\"",
"SettingsTabGeneralHideCursor": "Nascondi il cursore:",
"SettingsTabGeneralHideCursorNever": "Mai",
"SettingsTabGeneralHideCursorOnIdle": "Nascondi cursore inattivo", "SettingsTabGeneralHideCursorOnIdle": "Nascondi cursore inattivo",
"SettingsTabGeneralHideCursorAlways": "Sempre",
"SettingsTabGeneralGameDirectories": "Cartelle dei giochi", "SettingsTabGeneralGameDirectories": "Cartelle dei giochi",
"SettingsTabGeneralAdd": "Aggiungi", "SettingsTabGeneralAdd": "Aggiungi",
"SettingsTabGeneralRemove": "Rimuovi", "SettingsTabGeneralRemove": "Rimuovi",
@ -89,7 +103,7 @@
"SettingsTabSystemSystemRegionAustralia": "Australia", "SettingsTabSystemSystemRegionAustralia": "Australia",
"SettingsTabSystemSystemRegionChina": "Cina", "SettingsTabSystemSystemRegionChina": "Cina",
"SettingsTabSystemSystemRegionKorea": "Corea", "SettingsTabSystemSystemRegionKorea": "Corea",
"SettingsTabSystemSystemRegionTaiwan": "Tailandia", "SettingsTabSystemSystemRegionTaiwan": "Taiwan",
"SettingsTabSystemSystemLanguage": "Lingua del sistema:", "SettingsTabSystemSystemLanguage": "Lingua del sistema:",
"SettingsTabSystemSystemLanguageJapanese": "Giapponese", "SettingsTabSystemSystemLanguageJapanese": "Giapponese",
"SettingsTabSystemSystemLanguageAmericanEnglish": "Inglese americano", "SettingsTabSystemSystemLanguageAmericanEnglish": "Inglese americano",
@ -158,6 +172,7 @@
"SettingsTabLoggingEnableFsAccessLogs": "Attiva Fs Access Logs", "SettingsTabLoggingEnableFsAccessLogs": "Attiva Fs Access Logs",
"SettingsTabLoggingFsGlobalAccessLogMode": "Modalità log accesso globale Fs:", "SettingsTabLoggingFsGlobalAccessLogMode": "Modalità log accesso globale Fs:",
"SettingsTabLoggingDeveloperOptions": "Opzioni da sviluppatore (AVVISO: Ridurrà le prestazioni)", "SettingsTabLoggingDeveloperOptions": "Opzioni da sviluppatore (AVVISO: Ridurrà le prestazioni)",
"SettingsTabLoggingDeveloperOptionsNote": "ATTENZIONE: ridurrà le prestazioni",
"SettingsTabLoggingGraphicsBackendLogLevel": "Livello registro backend grafico:", "SettingsTabLoggingGraphicsBackendLogLevel": "Livello registro backend grafico:",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "Nessuno", "SettingsTabLoggingGraphicsBackendLogLevelNone": "Nessuno",
"SettingsTabLoggingGraphicsBackendLogLevelError": "Errore", "SettingsTabLoggingGraphicsBackendLogLevelError": "Errore",
@ -208,26 +223,17 @@
"ControllerSettingsDPadDown": "Giù", "ControllerSettingsDPadDown": "Giù",
"ControllerSettingsDPadLeft": "Sinistra", "ControllerSettingsDPadLeft": "Sinistra",
"ControllerSettingsDPadRight": "Destra", "ControllerSettingsDPadRight": "Destra",
"ControllerSettingsStickButton": "Pulsante",
"ControllerSettingsStickUp": "Su",
"ControllerSettingsStickDown": "Giù",
"ControllerSettingsStickLeft": "Sinistra",
"ControllerSettingsStickRight": "Destra",
"ControllerSettingsStickStick": "Levetta",
"ControllerSettingsStickInvertXAxis": "Inverti levetta X",
"ControllerSettingsStickInvertYAxis": "Inverti levetta Y",
"ControllerSettingsStickDeadzone": "Zona morta:",
"ControllerSettingsLStick": "Stick sinistro", "ControllerSettingsLStick": "Stick sinistro",
"ControllerSettingsLStickButton": "Pulsante",
"ControllerSettingsLStickUp": "Su",
"ControllerSettingsLStickDown": "Giù",
"ControllerSettingsLStickLeft": "Sinistra",
"ControllerSettingsLStickRight": "Destra",
"ControllerSettingsLStickStick": "Levetta",
"ControllerSettingsLStickInvertXAxis": "Inverti stick X",
"ControllerSettingsLStickInvertYAxis": "Inverti stick Y",
"ControllerSettingsLStickDeadzone": "Zona morta:",
"ControllerSettingsRStick": "Stick destro", "ControllerSettingsRStick": "Stick destro",
"ControllerSettingsRStickButton": "Pulsante",
"ControllerSettingsRStickUp": "Su",
"ControllerSettingsRStickDown": "Giù",
"ControllerSettingsRStickLeft": "Sinistra",
"ControllerSettingsRStickRight": "Destra",
"ControllerSettingsRStickStick": "Levetta",
"ControllerSettingsRStickInvertXAxis": "Inverti stick X",
"ControllerSettingsRStickInvertYAxis": "Inverti stick Y",
"ControllerSettingsRStickDeadzone": "Zona morta:",
"ControllerSettingsTriggersLeft": "Grilletto sinistro", "ControllerSettingsTriggersLeft": "Grilletto sinistro",
"ControllerSettingsTriggersRight": "Grilletto destro", "ControllerSettingsTriggersRight": "Grilletto destro",
"ControllerSettingsTriggersButtonsLeft": "Pulsante dorsale sinistro", "ControllerSettingsTriggersButtonsLeft": "Pulsante dorsale sinistro",
@ -260,8 +266,9 @@
"UserProfilesChangeProfileImage": "Cambia immagine profilo", "UserProfilesChangeProfileImage": "Cambia immagine profilo",
"UserProfilesAvailableUserProfiles": "Profili utente disponibili:", "UserProfilesAvailableUserProfiles": "Profili utente disponibili:",
"UserProfilesAddNewProfile": "Aggiungi nuovo profilo", "UserProfilesAddNewProfile": "Aggiungi nuovo profilo",
"UserProfilesDeleteSelectedProfile": "Elimina il profilo selezionato", "UserProfilesDelete": "Elimina",
"UserProfilesClose": "Chiudi", "UserProfilesClose": "Chiudi",
"ProfileNameSelectionWatermark": "Scegli un soprannome",
"ProfileImageSelectionTitle": "Selezione dell'immagine profilo", "ProfileImageSelectionTitle": "Selezione dell'immagine profilo",
"ProfileImageSelectionHeader": "Scegli un'immagine profilo", "ProfileImageSelectionHeader": "Scegli un'immagine profilo",
"ProfileImageSelectionNote": "Puoi importare un'immagine profilo personalizzata o selezionare un avatar dal firmware del sistema", "ProfileImageSelectionNote": "Puoi importare un'immagine profilo personalizzata o selezionare un avatar dal firmware del sistema",
@ -282,6 +289,7 @@
"ControllerSettingsSaveProfileToolTip": "Salva profilo", "ControllerSettingsSaveProfileToolTip": "Salva profilo",
"MenuBarFileToolsTakeScreenshot": "Fai uno screenshot", "MenuBarFileToolsTakeScreenshot": "Fai uno screenshot",
"MenuBarFileToolsHideUi": "Nascondi UI", "MenuBarFileToolsHideUi": "Nascondi UI",
"GameListContextMenuRunApplication": "Esegui applicazione",
"GameListContextMenuToggleFavorite": "Preferito", "GameListContextMenuToggleFavorite": "Preferito",
"GameListContextMenuToggleFavoriteToolTip": "Segna il gioco come preferito", "GameListContextMenuToggleFavoriteToolTip": "Segna il gioco come preferito",
"SettingsTabGeneralTheme": "Tema", "SettingsTabGeneralTheme": "Tema",
@ -337,6 +345,10 @@
"DialogFirmwareInstallEmbeddedSuccessMessage": "Non è stato trovato alcun firmware installato, ma Ryujinx è riuscito ad installare il firmware {0} dal gioco fornito.\nL'emulatore si avvierà adesso.", "DialogFirmwareInstallEmbeddedSuccessMessage": "Non è stato trovato alcun firmware installato, ma Ryujinx è riuscito ad installare il firmware {0} dal gioco fornito.\nL'emulatore si avvierà adesso.",
"DialogFirmwareNoFirmwareInstalledMessage": "Nessun firmware installato", "DialogFirmwareNoFirmwareInstalledMessage": "Nessun firmware installato",
"DialogFirmwareInstalledMessage": "Il firmware {0} è stato installato", "DialogFirmwareInstalledMessage": "Il firmware {0} è stato installato",
"DialogInstallFileTypesSuccessMessage": "Tipi di file installati con successo!",
"DialogInstallFileTypesErrorMessage": "Impossibile installare i tipi di file.",
"DialogUninstallFileTypesSuccessMessage": "Tipi di file disinstallati con successo!",
"DialogUninstallFileTypesErrorMessage": "Disinstallazione dei tipi di file non riuscita.",
"DialogOpenSettingsWindowLabel": "Apri finestra delle impostazioni", "DialogOpenSettingsWindowLabel": "Apri finestra delle impostazioni",
"DialogControllerAppletTitle": "Applet del controller", "DialogControllerAppletTitle": "Applet del controller",
"DialogMessageDialogErrorExceptionMessage": "Errore nella visualizzazione del Message Dialog: {0}", "DialogMessageDialogErrorExceptionMessage": "Errore nella visualizzazione del Message Dialog: {0}",
@ -368,6 +380,9 @@
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "La versione del sistema {0} è stata installata.", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "La versione del sistema {0} è stata installata.",
"DialogUserProfileDeletionWarningMessage": "Non ci sarebbero altri profili da aprire se il profilo selezionato viene cancellato", "DialogUserProfileDeletionWarningMessage": "Non ci sarebbero altri profili da aprire se il profilo selezionato viene cancellato",
"DialogUserProfileDeletionConfirmMessage": "Vuoi eliminare il profilo selezionato?", "DialogUserProfileDeletionConfirmMessage": "Vuoi eliminare il profilo selezionato?",
"DialogUserProfileUnsavedChangesTitle": "Attenzione - Modifiche Non Salvate",
"DialogUserProfileUnsavedChangesMessage": "Hai apportato modifiche a questo profilo utente che non sono state salvate.",
"DialogUserProfileUnsavedChangesSubMessage": "Vuoi scartare le modifiche?",
"DialogControllerSettingsModifiedConfirmMessage": "Le attuali impostazioni del controller sono state aggiornate.", "DialogControllerSettingsModifiedConfirmMessage": "Le attuali impostazioni del controller sono state aggiornate.",
"DialogControllerSettingsModifiedConfirmSubMessage": "Vuoi salvare?", "DialogControllerSettingsModifiedConfirmSubMessage": "Vuoi salvare?",
"DialogLoadNcaErrorMessage": "{0}. File errato: {1}", "DialogLoadNcaErrorMessage": "{0}. File errato: {1}",
@ -409,13 +424,14 @@
"AmiiboOptionsShowAllLabel": "Mostra tutti gli amiibo", "AmiiboOptionsShowAllLabel": "Mostra tutti gli amiibo",
"AmiiboOptionsUsRandomTagLabel": "Hack: Usa un tag uuid casuale", "AmiiboOptionsUsRandomTagLabel": "Hack: Usa un tag uuid casuale",
"DlcManagerTableHeadingEnabledLabel": "Abilitato", "DlcManagerTableHeadingEnabledLabel": "Abilitato",
"DlcManagerTableHeadingTitleIdLabel": "Titolo ID", "DlcManagerTableHeadingTitleIdLabel": "ID Titolo",
"DlcManagerTableHeadingContainerPathLabel": "Percorso del contenitore", "DlcManagerTableHeadingContainerPathLabel": "Percorso del contenitore",
"DlcManagerTableHeadingFullPathLabel": "Percorso completo", "DlcManagerTableHeadingFullPathLabel": "Percorso completo",
"DlcManagerRemoveAllButton": "Rimuovi tutti", "DlcManagerRemoveAllButton": "Rimuovi tutti",
"DlcManagerEnableAllButton": "Abilita tutto", "DlcManagerEnableAllButton": "Abilita tutto",
"DlcManagerDisableAllButton": "Disabilita tutto", "DlcManagerDisableAllButton": "Disabilita tutto",
"MenuBarOptionsChangeLanguage": "Cambia lingua", "MenuBarOptionsChangeLanguage": "Cambia lingua",
"MenuBarShowFileTypes": "Mostra tipi di file",
"CommonSort": "Ordina", "CommonSort": "Ordina",
"CommonShowNames": "Mostra nomi", "CommonShowNames": "Mostra nomi",
"CommonFavorite": "Preferito", "CommonFavorite": "Preferito",
@ -445,6 +461,7 @@
"MemoryManagerSoftwareTooltip": "Usa una software page table per la traduzione degli indirizzi. Massima precisione ma prestazioni più lente.", "MemoryManagerSoftwareTooltip": "Usa una software page table per la traduzione degli indirizzi. Massima precisione ma prestazioni più lente.",
"MemoryManagerHostTooltip": "Mappa direttamente la memoria nello spazio degli indirizzi dell'host. Compilazione ed esecuzione JIT molto più veloce.", "MemoryManagerHostTooltip": "Mappa direttamente la memoria nello spazio degli indirizzi dell'host. Compilazione ed esecuzione JIT molto più veloce.",
"MemoryManagerUnsafeTooltip": "Mappa direttamente la memoria, ma non maschera l'indirizzo all'interno dello spazio degli indirizzi guest prima dell'accesso. Più veloce, ma a costo della sicurezza. L'applicazione guest può accedere alla memoria da qualsiasi punto di Ryujinx, quindi esegui solo programmi di cui ti fidi con questa modalità.", "MemoryManagerUnsafeTooltip": "Mappa direttamente la memoria, ma non maschera l'indirizzo all'interno dello spazio degli indirizzi guest prima dell'accesso. Più veloce, ma a costo della sicurezza. L'applicazione guest può accedere alla memoria da qualsiasi punto di Ryujinx, quindi esegui solo programmi di cui ti fidi con questa modalità.",
"UseHypervisorTooltip": "Usa Hypervisor invece di JIT. Migliora notevolmente le prestazioni quando disponibile, ma può essere instabile nel suo stato attuale.",
"DRamTooltip": "Espande l'ammontare di memoria sul sistema emulato da 4GiB A 6GiB", "DRamTooltip": "Espande l'ammontare di memoria sul sistema emulato da 4GiB A 6GiB",
"IgnoreMissingServicesTooltip": "Attiva o disattiva l'opzione di ignorare i servizi mancanti", "IgnoreMissingServicesTooltip": "Attiva o disattiva l'opzione di ignorare i servizi mancanti",
"GraphicsBackendThreadingTooltip": "Attiva il Graphics Backend Multithreading", "GraphicsBackendThreadingTooltip": "Attiva il Graphics Backend Multithreading",
@ -527,6 +544,9 @@
"SwkbdMinCharacters": "Non può avere meno di {0} caratteri", "SwkbdMinCharacters": "Non può avere meno di {0} caratteri",
"SwkbdMinRangeCharacters": "Può avere da {0} a {1} caratteri", "SwkbdMinRangeCharacters": "Può avere da {0} a {1} caratteri",
"SoftwareKeyboard": "Tastiera software", "SoftwareKeyboard": "Tastiera software",
"SoftwareKeyboardModeNumbersOnly": "Deve essere solo numeri",
"SoftwareKeyboardModeAlphabet": "Deve essere solo caratteri non CJK",
"SoftwareKeyboardModeASCII": "Deve essere solo testo ASCII",
"DialogControllerAppletMessagePlayerRange": "L'applicazione richiede {0} giocatori con:\n\nTIPI: {1}\n\nGIOCATORI: {2}\n\n{3}Apri le impostazioni e riconfigura l'input adesso o premi Chiudi.", "DialogControllerAppletMessagePlayerRange": "L'applicazione richiede {0} giocatori con:\n\nTIPI: {1}\n\nGIOCATORI: {2}\n\n{3}Apri le impostazioni e riconfigura l'input adesso o premi Chiudi.",
"DialogControllerAppletMessage": "L'applicazione richiede esattamente {0} giocatori con:\n\nTIPI: {1}\n\nGIOCATORI: {2}\n\n{3}Apri le impostazioni e riconfigura l'input adesso o premi Chiudi.", "DialogControllerAppletMessage": "L'applicazione richiede esattamente {0} giocatori con:\n\nTIPI: {1}\n\nGIOCATORI: {2}\n\n{3}Apri le impostazioni e riconfigura l'input adesso o premi Chiudi.",
"DialogControllerAppletDockModeSet": "Modalità TV attivata. Neanche portatile è valida.\n\n", "DialogControllerAppletDockModeSet": "Modalità TV attivata. Neanche portatile è valida.\n\n",
@ -572,6 +592,7 @@
"DlcWindowTitle": "Gestisci DLC dei giochi", "DlcWindowTitle": "Gestisci DLC dei giochi",
"UpdateWindowTitle": "Gestisci aggiornamenti dei giochi", "UpdateWindowTitle": "Gestisci aggiornamenti dei giochi",
"CheatWindowHeading": "Cheat disponibiili per {0} [{1}]", "CheatWindowHeading": "Cheat disponibiili per {0} [{1}]",
"BuildId": "ID Build",
"DlcWindowHeading": "DLC disponibili per {0} [{1}]", "DlcWindowHeading": "DLC disponibili per {0} [{1}]",
"UserProfilesEditProfile": "Modifica selezionati", "UserProfilesEditProfile": "Modifica selezionati",
"Cancel": "Annulla", "Cancel": "Annulla",
@ -599,6 +620,8 @@
"SettingsTabHotkeysVolumeDownHotkey": "Diminuire il volume:", "SettingsTabHotkeysVolumeDownHotkey": "Diminuire il volume:",
"SettingsEnableMacroHLE": "Abilita Macro HLE", "SettingsEnableMacroHLE": "Abilita Macro HLE",
"SettingsEnableMacroHLETooltip": "Emulazione di alto livello del codice Macro GPU.\n\nMigliora le prestazioni, ma può causare anomalie grafiche in alcuni giochi.\n\nLasciare ON se non sei sicuro.", "SettingsEnableMacroHLETooltip": "Emulazione di alto livello del codice Macro GPU.\n\nMigliora le prestazioni, ma può causare anomalie grafiche in alcuni giochi.\n\nLasciare ON se non sei sicuro.",
"SettingsEnableColorSpacePassthrough": "Spazio colore passante",
"SettingsEnableColorSpacePassthroughTooltip": "Indica al backend Vulkan di passare le informazioni sul colore senza specificare uno spazio colore. Per gli utenti con schermi ad ampia gamma, questo può risultare in colori più vivaci, al costo della correttezza del colore.",
"VolumeShort": "Vol", "VolumeShort": "Vol",
"UserProfilesManageSaves": "Gestisci i salvataggi", "UserProfilesManageSaves": "Gestisci i salvataggi",
"DeleteUserSave": "Vuoi eliminare il salvataggio utente per questo gioco?", "DeleteUserSave": "Vuoi eliminare il salvataggio utente per questo gioco?",
@ -610,5 +633,24 @@
"Search": "Cerca", "Search": "Cerca",
"UserProfilesRecoverLostAccounts": "Recupera il tuo account", "UserProfilesRecoverLostAccounts": "Recupera il tuo account",
"Recover": "Recupera", "Recover": "Recupera",
"UserProfilesRecoverHeading": "Sono stati trovati dei salvataggi per i seguenti account" "UserProfilesRecoverHeading": "Sono stati trovati dei salvataggi per i seguenti account",
"UserProfilesRecoverEmptyList": "Nessun profilo da recuperare",
"GraphicsAATooltip": "Applica anti-aliasing al rendering del gioco",
"GraphicsAALabel": "Anti-Aliasing:",
"GraphicsScalingFilterLabel": "Filtro di scala:",
"GraphicsScalingFilterTooltip": "Abilita scalatura Framebuffer",
"GraphicsScalingFilterLevelLabel": "Livello",
"GraphicsScalingFilterLevelTooltip": "Imposta livello del filtro di scala",
"SmaaLow": "SMAA Basso",
"SmaaMedium": "SMAA Medio",
"SmaaHigh": "SMAA Alto",
"SmaaUltra": "SMAA Ultra",
"UserEditorTitle": "Modificare L'Utente",
"UserEditorTitleCreate": "Crea Un Utente",
"SettingsTabNetworkInterface": "Interfaccia di rete:",
"NetworkInterfaceTooltip": "L'interfaccia di rete utilizzata per le funzionalità LAN",
"NetworkInterfaceDefault": "Predefinito",
"PackagingShaders": "Comprimendo shader",
"AboutChangelogButton": "Visualizza changelog su GitHub",
"AboutChangelogButtonTooltipMessage": "Clicca per aprire il changelog per questa versione nel tuo browser predefinito."
} }

View file

@ -1,5 +1,5 @@
{ {
"Language": "日本語", "Language": "英語 (アメリカ)",
"MenuBarFileOpenApplet": "アプレットを開く", "MenuBarFileOpenApplet": "アプレットを開く",
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "スタンドアロンモードで Mii エディタアプレットを開きます", "MenuBarFileOpenAppletOpenMiiAppletToolTip": "スタンドアロンモードで Mii エディタアプレットを開きます",
"SettingsTabInputDirectMouseAccess": "マウス直接アクセス", "SettingsTabInputDirectMouseAccess": "マウス直接アクセス",
@ -7,6 +7,7 @@
"SettingsTabSystemMemoryManagerModeSoftware": "ソフトウェア", "SettingsTabSystemMemoryManagerModeSoftware": "ソフトウェア",
"SettingsTabSystemMemoryManagerModeHost": "ホスト (高速)", "SettingsTabSystemMemoryManagerModeHost": "ホスト (高速)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "ホスト, チェックなし (最高速, 安全でない)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "ホスト, チェックなし (最高速, 安全でない)",
"SettingsTabSystemUseHypervisor": "ハイパーバイザーを使用",
"MenuBarFile": "ファイル(_F)", "MenuBarFile": "ファイル(_F)",
"MenuBarFileOpenFromFile": "ファイルからアプリケーションをロード(_L)", "MenuBarFileOpenFromFile": "ファイルからアプリケーションをロード(_L)",
"MenuBarFileOpenUnpacked": "展開されたゲームをロード", "MenuBarFileOpenUnpacked": "展開されたゲームをロード",
@ -26,6 +27,9 @@
"MenuBarToolsInstallFirmware": "ファームウェアをインストール", "MenuBarToolsInstallFirmware": "ファームウェアをインストール",
"MenuBarFileToolsInstallFirmwareFromFile": "XCI または ZIP からファームウェアをインストール", "MenuBarFileToolsInstallFirmwareFromFile": "XCI または ZIP からファームウェアをインストール",
"MenuBarFileToolsInstallFirmwareFromDirectory": "ディレクトリからファームウェアをインストール", "MenuBarFileToolsInstallFirmwareFromDirectory": "ディレクトリからファームウェアをインストール",
"MenuBarToolsManageFileTypes": "ファイル形式を管理",
"MenuBarToolsInstallFileTypes": "ファイル形式をインストール",
"MenuBarToolsUninstallFileTypes": "ファイル形式をアンインストール",
"MenuBarHelp": "ヘルプ", "MenuBarHelp": "ヘルプ",
"MenuBarHelpCheckForUpdates": "アップデートを確認", "MenuBarHelpCheckForUpdates": "アップデートを確認",
"MenuBarHelpAbout": "Ryujinx について", "MenuBarHelpAbout": "Ryujinx について",
@ -55,12 +59,12 @@
"GameListContextMenuCacheManagement": "キャッシュ管理", "GameListContextMenuCacheManagement": "キャッシュ管理",
"GameListContextMenuCacheManagementPurgePptc": "PPTC を再構築", "GameListContextMenuCacheManagementPurgePptc": "PPTC を再構築",
"GameListContextMenuCacheManagementPurgePptcToolTip": "次回のゲーム起動時に PPTC を再構築します", "GameListContextMenuCacheManagementPurgePptcToolTip": "次回のゲーム起動時に PPTC を再構築します",
"GameListContextMenuCacheManagementPurgeShaderCache": "シェーダキャッシュを破棄", "GameListContextMenuCacheManagementPurgeShaderCache": "シェーダキャッシュを破棄",
"GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "アプリケーションのシェーダキャッシュを破棄します", "GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "アプリケーションのシェーダキャッシュを破棄します",
"GameListContextMenuCacheManagementOpenPptcDirectory": "PPTC ディレクトリを開く", "GameListContextMenuCacheManagementOpenPptcDirectory": "PPTC ディレクトリを開く",
"GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "アプリケーションの PPTC キャッシュを格納するディレクトリを開きます", "GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "アプリケーションの PPTC キャッシュを格納するディレクトリを開きます",
"GameListContextMenuCacheManagementOpenShaderCacheDirectory": "シェーダキャッシュディレクトリを開く", "GameListContextMenuCacheManagementOpenShaderCacheDirectory": "シェーダキャッシュディレクトリを開く",
"GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "アプリケーションのシェーダキャッシュを格納するディレクトリを開きます", "GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "アプリケーションのシェーダキャッシュを格納するディレクトリを開きます",
"GameListContextMenuExtractData": "データを展開", "GameListContextMenuExtractData": "データを展開",
"GameListContextMenuExtractDataExeFS": "ExeFS", "GameListContextMenuExtractDataExeFS": "ExeFS",
"GameListContextMenuExtractDataExeFSToolTip": "現在のアプリケーション設定(アップデート含む)から ExeFS セクションを展開します", "GameListContextMenuExtractDataExeFSToolTip": "現在のアプリケーション設定(アップデート含む)から ExeFS セクションを展開します",
@ -70,13 +74,23 @@
"GameListContextMenuExtractDataLogoToolTip": "現在のアプリケーション設定(アップデート含む)からロゴセクションを展開します", "GameListContextMenuExtractDataLogoToolTip": "現在のアプリケーション設定(アップデート含む)からロゴセクションを展開します",
"StatusBarGamesLoaded": "{0}/{1} ゲーム", "StatusBarGamesLoaded": "{0}/{1} ゲーム",
"StatusBarSystemVersion": "システムバージョン: {0}", "StatusBarSystemVersion": "システムバージョン: {0}",
"LinuxVmMaxMapCountDialogTitle": "メモリマッピング上限値が小さすぎます",
"LinuxVmMaxMapCountDialogTextPrimary": "vm.max_map_count の値を {0}に増やしますか?",
"LinuxVmMaxMapCountDialogTextSecondary": "ゲームによっては, 現在許可されているサイズより大きなメモリマッピングを作成しようとすることがあります. この制限を超えると, Ryjinx はすぐにクラッシュします.",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "はい, 次回再起動まで",
"LinuxVmMaxMapCountDialogButtonPersistent": "はい, 恒久的に",
"LinuxVmMaxMapCountWarningTextPrimary": "メモリマッピングの最大量が推奨値よりも小さいです.",
"LinuxVmMaxMapCountWarningTextSecondary": "vm.max_map_count の現在値 {0} は {1} よりも小さいです. ゲームによっては現在許可されている値よりも大きなメモリマッピングを作成しようとする場合があります. 上限を越えた場合, Ryujinx はクラッシュします.",
"Settings": "設定", "Settings": "設定",
"SettingsTabGeneral": "ユーザインタフェース", "SettingsTabGeneral": "ユーザインタフェース",
"SettingsTabGeneralGeneral": "一般", "SettingsTabGeneralGeneral": "一般",
"SettingsTabGeneralEnableDiscordRichPresence": "Discord リッチプレゼンスを有効", "SettingsTabGeneralEnableDiscordRichPresence": "Discord リッチプレゼンスを有効にする",
"SettingsTabGeneralCheckUpdatesOnLaunch": "起動時にアップデートを確認", "SettingsTabGeneralCheckUpdatesOnLaunch": "起動時にアップデートを確認する",
"SettingsTabGeneralShowConfirmExitDialog": "\"終了を確認\" ダイアログを表示", "SettingsTabGeneralShowConfirmExitDialog": "\"終了を確認\" ダイアログを表示する",
"SettingsTabGeneralHideCursorOnIdle": "アイドル時にカーソルを隠す", "SettingsTabGeneralHideCursor": "マウスカーソルを非表示",
"SettingsTabGeneralHideCursorNever": "決して",
"SettingsTabGeneralHideCursorOnIdle": "アイドル時",
"SettingsTabGeneralHideCursorAlways": "常時",
"SettingsTabGeneralGameDirectories": "ゲームディレクトリ", "SettingsTabGeneralGameDirectories": "ゲームディレクトリ",
"SettingsTabGeneralAdd": "追加", "SettingsTabGeneralAdd": "追加",
"SettingsTabGeneralRemove": "削除", "SettingsTabGeneralRemove": "削除",
@ -120,11 +134,11 @@
"SettingsTabSystemAudioBackendSDL2": "SDL2", "SettingsTabSystemAudioBackendSDL2": "SDL2",
"SettingsTabSystemHacks": "ハック", "SettingsTabSystemHacks": "ハック",
"SettingsTabSystemHacksNote": " (挙動が不安定になる可能性があります)", "SettingsTabSystemHacksNote": " (挙動が不安定になる可能性があります)",
"SettingsTabSystemExpandDramSize": "DRAMサイズを6GiBに拡大", "SettingsTabSystemExpandDramSize": "DRAMサイズを6GiBに拡大する",
"SettingsTabSystemIgnoreMissingServices": "未実装サービスを無視", "SettingsTabSystemIgnoreMissingServices": "未実装サービスを無視する",
"SettingsTabGraphics": "グラフィックス", "SettingsTabGraphics": "グラフィックス",
"SettingsTabGraphicsAPI": "グラフィックスAPI", "SettingsTabGraphicsAPI": "グラフィックスAPI",
"SettingsTabGraphicsEnableShaderCache": "シェーダキャッシュを有効", "SettingsTabGraphicsEnableShaderCache": "シェーダキャッシュを有効にする",
"SettingsTabGraphicsAnisotropicFiltering": "異方性フィルタリング:", "SettingsTabGraphicsAnisotropicFiltering": "異方性フィルタリング:",
"SettingsTabGraphicsAnisotropicFilteringAuto": "自動", "SettingsTabGraphicsAnisotropicFilteringAuto": "自動",
"SettingsTabGraphicsAnisotropicFiltering2x": "2x", "SettingsTabGraphicsAnisotropicFiltering2x": "2x",
@ -145,25 +159,26 @@
"SettingsTabGraphicsAspectRatio32x9": "32:9", "SettingsTabGraphicsAspectRatio32x9": "32:9",
"SettingsTabGraphicsAspectRatioStretch": "ウインドウサイズに合わせる", "SettingsTabGraphicsAspectRatioStretch": "ウインドウサイズに合わせる",
"SettingsTabGraphicsDeveloperOptions": "開発者向けオプション", "SettingsTabGraphicsDeveloperOptions": "開発者向けオプション",
"SettingsTabGraphicsShaderDumpPath": "グラフィックス シェーダダンプパス:", "SettingsTabGraphicsShaderDumpPath": "グラフィックス シェーダダンプパス:",
"SettingsTabLogging": "ロギング", "SettingsTabLogging": "ロギング",
"SettingsTabLoggingLogging": "ロギング", "SettingsTabLoggingLogging": "ロギング",
"SettingsTabLoggingEnableLoggingToFile": "ファイルへのロギングを有効", "SettingsTabLoggingEnableLoggingToFile": "ファイルへのロギングを有効にする",
"SettingsTabLoggingEnableStubLogs": "Stub ログを有効", "SettingsTabLoggingEnableStubLogs": "Stub ログを有効にする",
"SettingsTabLoggingEnableInfoLogs": "Info ログを有効", "SettingsTabLoggingEnableInfoLogs": "Info ログを有効にする",
"SettingsTabLoggingEnableWarningLogs": "Warning ログを有効", "SettingsTabLoggingEnableWarningLogs": "Warning ログを有効にする",
"SettingsTabLoggingEnableErrorLogs": "Error ログを有効", "SettingsTabLoggingEnableErrorLogs": "Error ログを有効にする",
"SettingsTabLoggingEnableTraceLogs": "Trace ログを有効", "SettingsTabLoggingEnableTraceLogs": "Trace ログを有効にする",
"SettingsTabLoggingEnableGuestLogs": "Guest ログを有効", "SettingsTabLoggingEnableGuestLogs": "Guest ログを有効にする",
"SettingsTabLoggingEnableFsAccessLogs": "Fs アクセスログを有効", "SettingsTabLoggingEnableFsAccessLogs": "Fs アクセスログを有効にする",
"SettingsTabLoggingFsGlobalAccessLogMode": "Fs グローバルアクセスログモード:", "SettingsTabLoggingFsGlobalAccessLogMode": "Fs グローバルアクセスログモード:",
"SettingsTabLoggingDeveloperOptions": "開発者オプション (警告: パフォーマンスが低下します)", "SettingsTabLoggingDeveloperOptions": "開発者オプション",
"SettingsTabLoggingDeveloperOptionsNote": "警告: パフォーマンスを低下させます",
"SettingsTabLoggingGraphicsBackendLogLevel": "グラフィックスバックエンド ログレベル:", "SettingsTabLoggingGraphicsBackendLogLevel": "グラフィックスバックエンド ログレベル:",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "なし", "SettingsTabLoggingGraphicsBackendLogLevelNone": "なし",
"SettingsTabLoggingGraphicsBackendLogLevelError": "エラー", "SettingsTabLoggingGraphicsBackendLogLevelError": "エラー",
"SettingsTabLoggingGraphicsBackendLogLevelPerformance": "パフォーマンス低下", "SettingsTabLoggingGraphicsBackendLogLevelPerformance": "パフォーマンス低下",
"SettingsTabLoggingGraphicsBackendLogLevelAll": "すべて", "SettingsTabLoggingGraphicsBackendLogLevelAll": "すべて",
"SettingsTabLoggingEnableDebugLogs": "デバッグログを有効", "SettingsTabLoggingEnableDebugLogs": "デバッグログを有効にする",
"SettingsTabInput": "入力", "SettingsTabInput": "入力",
"SettingsTabInputEnableDockedMode": "ドッキングモード", "SettingsTabInputEnableDockedMode": "ドッキングモード",
"SettingsTabInputDirectKeyboardAccess": "キーボード直接アクセス", "SettingsTabInputDirectKeyboardAccess": "キーボード直接アクセス",
@ -208,26 +223,17 @@
"ControllerSettingsDPadDown": "下", "ControllerSettingsDPadDown": "下",
"ControllerSettingsDPadLeft": "左", "ControllerSettingsDPadLeft": "左",
"ControllerSettingsDPadRight": "右", "ControllerSettingsDPadRight": "右",
"ControllerSettingsStickButton": "ボタン",
"ControllerSettingsStickUp": "上",
"ControllerSettingsStickDown": "下",
"ControllerSettingsStickLeft": "左",
"ControllerSettingsStickRight": "右",
"ControllerSettingsStickStick": "スティック",
"ControllerSettingsStickInvertXAxis": "X軸を反転",
"ControllerSettingsStickInvertYAxis": "Y軸を反転",
"ControllerSettingsStickDeadzone": "遊び:",
"ControllerSettingsLStick": "左スティック", "ControllerSettingsLStick": "左スティック",
"ControllerSettingsLStickButton": "ボタン",
"ControllerSettingsLStickUp": "上",
"ControllerSettingsLStickDown": "下",
"ControllerSettingsLStickLeft": "左",
"ControllerSettingsLStickRight": "右",
"ControllerSettingsLStickStick": "スティック",
"ControllerSettingsLStickInvertXAxis": "X軸を反転",
"ControllerSettingsLStickInvertYAxis": "Y軸を反転",
"ControllerSettingsLStickDeadzone": "遊び:",
"ControllerSettingsRStick": "右スティック", "ControllerSettingsRStick": "右スティック",
"ControllerSettingsRStickButton": "ボタン",
"ControllerSettingsRStickUp": "上",
"ControllerSettingsRStickDown": "下",
"ControllerSettingsRStickLeft": "左",
"ControllerSettingsRStickRight": "右",
"ControllerSettingsRStickStick": "スティック",
"ControllerSettingsRStickInvertXAxis": "X軸を反転",
"ControllerSettingsRStickInvertYAxis": "Y軸を反転",
"ControllerSettingsRStickDeadzone": "遊び:",
"ControllerSettingsTriggersLeft": "左トリガー", "ControllerSettingsTriggersLeft": "左トリガー",
"ControllerSettingsTriggersRight": "右トリガー", "ControllerSettingsTriggersRight": "右トリガー",
"ControllerSettingsTriggersButtonsLeft": "左トリガーボタン", "ControllerSettingsTriggersButtonsLeft": "左トリガーボタン",
@ -262,6 +268,7 @@
"UserProfilesAddNewProfile": "プロファイルを作成", "UserProfilesAddNewProfile": "プロファイルを作成",
"UserProfilesDelete": "削除", "UserProfilesDelete": "削除",
"UserProfilesClose": "閉じる", "UserProfilesClose": "閉じる",
"ProfileNameSelectionWatermark": "ニックネームを選択",
"ProfileImageSelectionTitle": "プロファイル画像選択", "ProfileImageSelectionTitle": "プロファイル画像選択",
"ProfileImageSelectionHeader": "プロファイル画像を選択", "ProfileImageSelectionHeader": "プロファイル画像を選択",
"ProfileImageSelectionNote": "カスタム画像をインポート, またはファームウェア内のアバターを選択できます", "ProfileImageSelectionNote": "カスタム画像をインポート, またはファームウェア内のアバターを選択できます",
@ -281,7 +288,8 @@
"ControllerSettingsRemoveProfileToolTip": "プロファイルを削除", "ControllerSettingsRemoveProfileToolTip": "プロファイルを削除",
"ControllerSettingsSaveProfileToolTip": "プロファイルをセーブ", "ControllerSettingsSaveProfileToolTip": "プロファイルをセーブ",
"MenuBarFileToolsTakeScreenshot": "スクリーンショットを撮影", "MenuBarFileToolsTakeScreenshot": "スクリーンショットを撮影",
"MenuBarFileToolsHideUi": "Hide UI", "MenuBarFileToolsHideUi": "UIを隠す",
"GameListContextMenuRunApplication": "アプリケーションを実行",
"GameListContextMenuToggleFavorite": "お気に入りを切り替え", "GameListContextMenuToggleFavorite": "お気に入りを切り替え",
"GameListContextMenuToggleFavoriteToolTip": "ゲームをお気に入りに含めるかどうかを切り替えます", "GameListContextMenuToggleFavoriteToolTip": "ゲームをお気に入りに含めるかどうかを切り替えます",
"SettingsTabGeneralTheme": "テーマ", "SettingsTabGeneralTheme": "テーマ",
@ -289,7 +297,7 @@
"SettingsTabGeneralThemeBaseStyle": "基本スタイル", "SettingsTabGeneralThemeBaseStyle": "基本スタイル",
"SettingsTabGeneralThemeBaseStyleDark": "ダーク", "SettingsTabGeneralThemeBaseStyleDark": "ダーク",
"SettingsTabGeneralThemeBaseStyleLight": "ライト", "SettingsTabGeneralThemeBaseStyleLight": "ライト",
"SettingsTabGeneralThemeEnableCustomTheme": "カスタムテーマを有効", "SettingsTabGeneralThemeEnableCustomTheme": "カスタムテーマを有効にする",
"ButtonBrowse": "参照", "ButtonBrowse": "参照",
"ControllerSettingsConfigureGeneral": "設定", "ControllerSettingsConfigureGeneral": "設定",
"ControllerSettingsRumble": "振動", "ControllerSettingsRumble": "振動",
@ -316,7 +324,7 @@
"DialogUpdaterConvertFailedMessage": "現在の Ryujinx バージョンの変換に失敗しました.", "DialogUpdaterConvertFailedMessage": "現在の Ryujinx バージョンの変換に失敗しました.",
"DialogUpdaterCancelUpdateMessage": "アップデータをキャンセル中!", "DialogUpdaterCancelUpdateMessage": "アップデータをキャンセル中!",
"DialogUpdaterAlreadyOnLatestVersionMessage": "最新バージョンの Ryujinx を使用中です!", "DialogUpdaterAlreadyOnLatestVersionMessage": "最新バージョンの Ryujinx を使用中です!",
"DialogUpdaterFailedToGetVersionMessage": "An error has occurred when trying to get release information from GitHub Release. This can be caused if a new release is being compiled by GitHub Actions. Try again in a few minutes.", "DialogUpdaterFailedToGetVersionMessage": "Github からのリリース情報取得時にエラーが発生しました. Github Actions でリリースファイルを作成中かもしれません. 後ほどもう一度試してみてください.",
"DialogUpdaterConvertFailedGithubMessage": "Github から取得した Ryujinx バージョンの変換に失敗しました.", "DialogUpdaterConvertFailedGithubMessage": "Github から取得した Ryujinx バージョンの変換に失敗しました.",
"DialogUpdaterDownloadingMessage": "アップデートをダウンロード中...", "DialogUpdaterDownloadingMessage": "アップデートをダウンロード中...",
"DialogUpdaterExtractionMessage": "アップデートを展開中...", "DialogUpdaterExtractionMessage": "アップデートを展開中...",
@ -337,6 +345,10 @@
"DialogFirmwareInstallEmbeddedSuccessMessage": "ファームウェアがインストールされていませんが, ゲームに含まれるファームウェア {0} をインストールできます.\\nエミュレータが開始します.", "DialogFirmwareInstallEmbeddedSuccessMessage": "ファームウェアがインストールされていませんが, ゲームに含まれるファームウェア {0} をインストールできます.\\nエミュレータが開始します.",
"DialogFirmwareNoFirmwareInstalledMessage": "ファームウェアがインストールされていません", "DialogFirmwareNoFirmwareInstalledMessage": "ファームウェアがインストールされていません",
"DialogFirmwareInstalledMessage": "ファームウェア {0} がインストールされました", "DialogFirmwareInstalledMessage": "ファームウェア {0} がインストールされました",
"DialogInstallFileTypesSuccessMessage": "ファイル形式のインストールに成功しました!",
"DialogInstallFileTypesErrorMessage": "ファイル形式のインストールに失敗しました.",
"DialogUninstallFileTypesSuccessMessage": "ファイル形式のアンインストールに成功しました!",
"DialogUninstallFileTypesErrorMessage": "ファイル形式のアンインストールに失敗しました.",
"DialogOpenSettingsWindowLabel": "設定ウインドウを開く", "DialogOpenSettingsWindowLabel": "設定ウインドウを開く",
"DialogControllerAppletTitle": "コントローラアプレット", "DialogControllerAppletTitle": "コントローラアプレット",
"DialogMessageDialogErrorExceptionMessage": "メッセージダイアログ表示エラー: {0}", "DialogMessageDialogErrorExceptionMessage": "メッセージダイアログ表示エラー: {0}",
@ -355,8 +367,8 @@
"DialogWarning": "警告", "DialogWarning": "警告",
"DialogPPTCDeletionMessage": "次回起動時に PPTC を再構築します:\n\n{0}\n\n実行してよろしいですか?", "DialogPPTCDeletionMessage": "次回起動時に PPTC を再構築します:\n\n{0}\n\n実行してよろしいですか?",
"DialogPPTCDeletionErrorMessage": "PPTC キャッシュ破棄エラー {0}: {1}", "DialogPPTCDeletionErrorMessage": "PPTC キャッシュ破棄エラー {0}: {1}",
"DialogShaderDeletionMessage": "シェーダキャッシュを破棄しようとしています:\n\n{0}\n\n実行してよろしいですか?", "DialogShaderDeletionMessage": "シェーダキャッシュを破棄しようとしています:\n\n{0}\n\n実行してよろしいですか?",
"DialogShaderDeletionErrorMessage": "シェーダキャッシュ破棄エラー {0}: {1}", "DialogShaderDeletionErrorMessage": "シェーダキャッシュ破棄エラー {0}: {1}",
"DialogRyujinxErrorMessage": "エラーが発生しました", "DialogRyujinxErrorMessage": "エラーが発生しました",
"DialogInvalidTitleIdErrorMessage": "UI エラー: 選択されたゲームは有効なタイトル ID を保持していません", "DialogInvalidTitleIdErrorMessage": "UI エラー: 選択されたゲームは有効なタイトル ID を保持していません",
"DialogFirmwareInstallerFirmwareNotFoundErrorMessage": "{0} には有効なシステムファームウェアがありません.", "DialogFirmwareInstallerFirmwareNotFoundErrorMessage": "{0} には有効なシステムファームウェアがありません.",
@ -368,14 +380,17 @@
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "システムバージョン {0} が正常にインストールされました.", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "システムバージョン {0} が正常にインストールされました.",
"DialogUserProfileDeletionWarningMessage": "選択されたプロファイルを削除すると,プロファイルがひとつも存在しなくなります", "DialogUserProfileDeletionWarningMessage": "選択されたプロファイルを削除すると,プロファイルがひとつも存在しなくなります",
"DialogUserProfileDeletionConfirmMessage": "選択されたプロファイルを削除しますか", "DialogUserProfileDeletionConfirmMessage": "選択されたプロファイルを削除しますか",
"DialogUserProfileUnsavedChangesTitle": "警告 - 保存されていない変更",
"DialogUserProfileUnsavedChangesMessage": "保存されていないユーザプロファイルを変更しました.",
"DialogUserProfileUnsavedChangesSubMessage": "変更を破棄しますか?",
"DialogControllerSettingsModifiedConfirmMessage": "現在のコントローラ設定が更新されました.", "DialogControllerSettingsModifiedConfirmMessage": "現在のコントローラ設定が更新されました.",
"DialogControllerSettingsModifiedConfirmSubMessage": "セーブしますか?", "DialogControllerSettingsModifiedConfirmSubMessage": "セーブしますか?",
"DialogLoadNcaErrorMessage": "{0}. エラー発生ファイル: {1}", "DialogLoadNcaErrorMessage": "{0}. エラー発生ファイル: {1}",
"DialogDlcNoDlcErrorMessage": "選択されたファイルはこのタイトル用の DLC ではありません!", "DialogDlcNoDlcErrorMessage": "選択されたファイルはこのタイトル用の DLC ではありません!",
"DialogPerformanceCheckLoggingEnabledMessage": "トレースロギングを有効にします. これは開発者のみに有用な機能です.", "DialogPerformanceCheckLoggingEnabledMessage": "トレースロギングを有効にします. これは開発者のみに有用な機能です.",
"DialogPerformanceCheckLoggingEnabledConfirmMessage": "パフォーマンス最適化のためには,トレースロギングを無効にすることを推奨します. トレースロギングを無効にしてよろしいですか?", "DialogPerformanceCheckLoggingEnabledConfirmMessage": "パフォーマンス最適化のためには,トレースロギングを無効にすることを推奨します. トレースロギングを無効にしてよろしいですか?",
"DialogPerformanceCheckShaderDumpEnabledMessage": "シェーダダンプを有効にします. これは開発者のみに有用な機能です.", "DialogPerformanceCheckShaderDumpEnabledMessage": "シェーダダンプを有効にします. これは開発者のみに有用な機能です.",
"DialogPerformanceCheckShaderDumpEnabledConfirmMessage": "パフォーマンス最適化のためには, シェーダダンプを無効にすることを推奨します. シェーダダンプを無効にしてよろしいですか?", "DialogPerformanceCheckShaderDumpEnabledConfirmMessage": "パフォーマンス最適化のためには, シェーダダンプを無効にすることを推奨します. シェーダダンプを無効にしてよろしいですか?",
"DialogLoadAppGameAlreadyLoadedMessage": "ゲームはすでにロード済みです", "DialogLoadAppGameAlreadyLoadedMessage": "ゲームはすでにロード済みです",
"DialogLoadAppGameAlreadyLoadedSubMessage": "別のゲームを起動する前に, エミュレーションを停止またはエミュレータを閉じてください.", "DialogLoadAppGameAlreadyLoadedSubMessage": "別のゲームを起動する前に, エミュレーションを停止またはエミュレータを閉じてください.",
"DialogUpdateAddUpdateErrorMessage": "選択されたファイルはこのタイトル用のアップデートではありません!", "DialogUpdateAddUpdateErrorMessage": "選択されたファイルはこのタイトル用のアップデートではありません!",
@ -416,6 +431,7 @@
"DlcManagerEnableAllButton": "すべて有効", "DlcManagerEnableAllButton": "すべて有効",
"DlcManagerDisableAllButton": "すべて無効", "DlcManagerDisableAllButton": "すべて無効",
"MenuBarOptionsChangeLanguage": "言語を変更", "MenuBarOptionsChangeLanguage": "言語を変更",
"MenuBarShowFileTypes": "ファイル形式を表示",
"CommonSort": "並べ替え", "CommonSort": "並べ替え",
"CommonShowNames": "名称を表示", "CommonShowNames": "名称を表示",
"CommonFavorite": "お気に入り", "CommonFavorite": "お気に入り",
@ -445,16 +461,17 @@
"MemoryManagerSoftwareTooltip": "アドレス変換にソフトウェアページテーブルを使用します. 非常に正確ですがパフォーマンスが大きく低下します.", "MemoryManagerSoftwareTooltip": "アドレス変換にソフトウェアページテーブルを使用します. 非常に正確ですがパフォーマンスが大きく低下します.",
"MemoryManagerHostTooltip": "ホストのアドレス空間にメモリを直接マップします.JITのコンパイルと実行速度が大きく向上します.", "MemoryManagerHostTooltip": "ホストのアドレス空間にメモリを直接マップします.JITのコンパイルと実行速度が大きく向上します.",
"MemoryManagerUnsafeTooltip": "メモリを直接マップしますが, アクセス前にゲストのアドレス空間内のアドレスをマスクしません. より高速になりますが, 安全性が犠牲になります. ゲストアプリケーションは Ryujinx のどこからでもメモリにアクセスできるので,このモードでは信頼できるプログラムだけを実行するようにしてください.", "MemoryManagerUnsafeTooltip": "メモリを直接マップしますが, アクセス前にゲストのアドレス空間内のアドレスをマスクしません. より高速になりますが, 安全性が犠牲になります. ゲストアプリケーションは Ryujinx のどこからでもメモリにアクセスできるので,このモードでは信頼できるプログラムだけを実行するようにしてください.",
"UseHypervisorTooltip": "JIT の代わりにハイパーバイザーを使用します. 利用可能な場合, パフォーマンスが大幅に向上しますが, 現在の状態では不安定になる可能性があります.",
"DRamTooltip": "エミュレートされたシステムのメモリ容量を 4GiB から 6GiB に増加します.\n\n高解像度のテクスチャパックや 4K解像度の mod を使用する場合に有用です. パフォーマンスを改善するものではありません.\n\nよくわからない場合はオフのままにしてください.", "DRamTooltip": "エミュレートされたシステムのメモリ容量を 4GiB から 6GiB に増加します.\n\n高解像度のテクスチャパックや 4K解像度の mod を使用する場合に有用です. パフォーマンスを改善するものではありません.\n\nよくわからない場合はオフのままにしてください.",
"IgnoreMissingServicesTooltip": "未実装の Horizon OS サービスを無視します. 特定のゲームにおいて起動時のクラッシュを回避できる場合があります.\n\nよくわからない場合はオフのままにしてください.", "IgnoreMissingServicesTooltip": "未実装の Horizon OS サービスを無視します. 特定のゲームにおいて起動時のクラッシュを回避できる場合があります.\n\nよくわからない場合はオフのままにしてください.",
"GraphicsBackendThreadingTooltip": "グラフィックスバックエンドのコマンドを別スレッドで実行します.\n\nシェーダのコンパイルを高速化し, 遅延を軽減し, マルチスレッド非対応の GPU ドライバにおいてパフォーマンスを改善します. マルチスレッド対応のドライバでも若干パフォーマンス改善が見られます.\n\nよくわからない場合は自動に設定してください.", "GraphicsBackendThreadingTooltip": "グラフィックスバックエンドのコマンドを別スレッドで実行します.\n\nシェーダのコンパイルを高速化し, 遅延を軽減し, マルチスレッド非対応の GPU ドライバにおいてパフォーマンスを改善します. マルチスレッド対応のドライバでも若干パフォーマンス改善が見られます.\n\nよくわからない場合は自動に設定してください.",
"GalThreadingTooltip": "グラフィックスバックエンドのコマンドを別スレッドで実行します.\n\nシェーダのコンパイルを高速化し, 遅延を軽減し, マルチスレッド非対応の GPU ドライバにおいてパフォーマンスを改善します. マルチスレッド対応のドライバでも若干パフォーマンス改善が見られます.\n\nよくわからない場合は自動に設定してください.", "GalThreadingTooltip": "グラフィックスバックエンドのコマンドを別スレッドで実行します.\n\nシェーダのコンパイルを高速化し, 遅延を軽減し, マルチスレッド非対応の GPU ドライバにおいてパフォーマンスを改善します. マルチスレッド対応のドライバでも若干パフォーマンス改善が見られます.\n\nよくわからない場合は自動に設定してください.",
"ShaderCacheToggleTooltip": "ディスクシェーダキャッシュをセーブし,次回以降の実行時遅延を軽減します.\n\nよくわからない場合はオンのままにしてください.", "ShaderCacheToggleTooltip": "ディスクシェーダキャッシュをセーブし,次回以降の実行時遅延を軽減します.\n\nよくわからない場合はオンのままにしてください.",
"ResolutionScaleTooltip": "レンダリングに適用される解像度の倍率です", "ResolutionScaleTooltip": "レンダリングに適用される解像度の倍率です",
"ResolutionScaleEntryTooltip": "1.5 のような整数でない倍率を指定すると,問題が発生したりクラッシュしたりする場合があります.", "ResolutionScaleEntryTooltip": "1.5 のような整数でない倍率を指定すると,問題が発生したりクラッシュしたりする場合があります.",
"AnisotropyTooltip": "異方性フィルタリングのレベルです (ゲームが要求する値を使用する場合は「自動」を設定してください)", "AnisotropyTooltip": "異方性フィルタリングのレベルです (ゲームが要求する値を使用する場合は「自動」を設定してください)",
"AspectRatioTooltip": "レンダリングに適用されるアスペクト比です.", "AspectRatioTooltip": "レンダリングに適用されるアスペクト比です.",
"ShaderDumpPathTooltip": "グラフィックス シェーダダンプのパスです", "ShaderDumpPathTooltip": "グラフィックス シェーダダンプのパスです",
"FileLogTooltip": "コンソール出力されるログをディスク上のログファイルにセーブします. パフォーマンスには影響を与えません.", "FileLogTooltip": "コンソール出力されるログをディスク上のログファイルにセーブします. パフォーマンスには影響を与えません.",
"StubLogTooltip": "stub ログメッセージをコンソールに出力します. パフォーマンスには影響を与えません.", "StubLogTooltip": "stub ログメッセージをコンソールに出力します. パフォーマンスには影響を与えません.",
"InfoLogTooltip": "info ログメッセージをコンソールに出力します. パフォーマンスには影響を与えません.", "InfoLogTooltip": "info ログメッセージをコンソールに出力します. パフォーマンスには影響を与えません.",
@ -504,7 +521,7 @@
"IconSize": "アイコンサイズ", "IconSize": "アイコンサイズ",
"IconSizeTooltip": "ゲームアイコンのサイズを変更します", "IconSizeTooltip": "ゲームアイコンのサイズを変更します",
"MenuBarOptionsShowConsole": "コンソールを表示", "MenuBarOptionsShowConsole": "コンソールを表示",
"ShaderCachePurgeError": "シェーダキャッシュの破棄エラー {0}: {1}", "ShaderCachePurgeError": "シェーダキャッシュの破棄エラー {0}: {1}",
"UserErrorNoKeys": "Keys がありません", "UserErrorNoKeys": "Keys がありません",
"UserErrorNoFirmware": "ファームウェアがありません", "UserErrorNoFirmware": "ファームウェアがありません",
"UserErrorFirmwareParsingFailed": "ファームウェアのパーズエラー", "UserErrorFirmwareParsingFailed": "ファームウェアのパーズエラー",
@ -523,10 +540,13 @@
"RyujinxInfo": "Ryujinx - 情報", "RyujinxInfo": "Ryujinx - 情報",
"RyujinxConfirm": "Ryujinx - 確認", "RyujinxConfirm": "Ryujinx - 確認",
"FileDialogAllTypes": "すべての種別", "FileDialogAllTypes": "すべての種別",
"Never": "Never", "Never": "決して",
"SwkbdMinCharacters": "最低 {0} 文字必要です", "SwkbdMinCharacters": "最低 {0} 文字必要です",
"SwkbdMinRangeCharacters": "{0}-{1} 文字にしてください", "SwkbdMinRangeCharacters": "{0}-{1} 文字にしてください",
"SoftwareKeyboard": "ソフトウェアキーボード", "SoftwareKeyboard": "ソフトウェアキーボード",
"SoftwareKeyboardModeNumbersOnly": "数字のみ",
"SoftwareKeyboardModeAlphabet": "CJK文字以外のみ",
"SoftwareKeyboardModeASCII": "ASCII文字列のみ",
"DialogControllerAppletMessagePlayerRange": "アプリケーションは {0} 名のプレイヤーを要求しています:\n\n種別: {1}\n\nプレイヤー: {2}\n\n{3}設定を開き各プレイヤーの入力設定を行ってから閉じるを押してください.", "DialogControllerAppletMessagePlayerRange": "アプリケーションは {0} 名のプレイヤーを要求しています:\n\n種別: {1}\n\nプレイヤー: {2}\n\n{3}設定を開き各プレイヤーの入力設定を行ってから閉じるを押してください.",
"DialogControllerAppletMessage": "アプリケーションは {0} 名のプレイヤーを要求しています:\n\n種別: {1}\n\nプレイヤー: {2}\n\n{3}設定を開き各プレイヤーの入力設定を行ってから閉じるを押してください.", "DialogControllerAppletMessage": "アプリケーションは {0} 名のプレイヤーを要求しています:\n\n種別: {1}\n\nプレイヤー: {2}\n\n{3}設定を開き各プレイヤーの入力設定を行ってから閉じるを押してください.",
"DialogControllerAppletDockModeSet": "ドッキングモードに設定されました. 携帯モードは無効になります.\n\n", "DialogControllerAppletDockModeSet": "ドッキングモードに設定されました. 携帯モードは無効になります.\n\n",
@ -543,7 +563,7 @@
"ApiError": "API エラー.", "ApiError": "API エラー.",
"LoadingHeading": "ロード中: {0}", "LoadingHeading": "ロード中: {0}",
"CompilingPPTC": "PTC をコンパイル中", "CompilingPPTC": "PTC をコンパイル中",
"CompilingShaders": "シェーダをコンパイル中", "CompilingShaders": "シェーダをコンパイル中",
"AllKeyboards": "すべてのキーボード", "AllKeyboards": "すべてのキーボード",
"OpenFileDialogTitle": "開くファイルを選択", "OpenFileDialogTitle": "開くファイルを選択",
"OpenFolderDialogTitle": "展開されたゲームフォルダを選択", "OpenFolderDialogTitle": "展開されたゲームフォルダを選択",
@ -572,6 +592,7 @@
"DlcWindowTitle": "DLC 管理", "DlcWindowTitle": "DLC 管理",
"UpdateWindowTitle": "アップデート管理", "UpdateWindowTitle": "アップデート管理",
"CheatWindowHeading": "利用可能なチート {0} [{1}]", "CheatWindowHeading": "利用可能なチート {0} [{1}]",
"BuildId": "ビルドID:",
"DlcWindowHeading": "利用可能な DLC {0} [{1}]", "DlcWindowHeading": "利用可能な DLC {0} [{1}]",
"UserProfilesEditProfile": "編集", "UserProfilesEditProfile": "編集",
"Cancel": "キャンセル", "Cancel": "キャンセル",
@ -587,7 +608,7 @@
"UserProfilesUserId": "ユーザID:", "UserProfilesUserId": "ユーザID:",
"SettingsTabGraphicsBackend": "グラフィックスバックエンド", "SettingsTabGraphicsBackend": "グラフィックスバックエンド",
"SettingsTabGraphicsBackendTooltip": "使用するグラフィックスバックエンドです", "SettingsTabGraphicsBackendTooltip": "使用するグラフィックスバックエンドです",
"SettingsEnableTextureRecompression": "テクスチャの再圧縮を有効", "SettingsEnableTextureRecompression": "テクスチャの再圧縮を有効にする",
"SettingsEnableTextureRecompressionTooltip": "VRAMの使用量を削減するためテクスチャを圧縮します.\n\nGPUのVRAMが4GiB未満の場合は使用を推奨します.\n\nよくわからない場合はオフのままにしてください.", "SettingsEnableTextureRecompressionTooltip": "VRAMの使用量を削減するためテクスチャを圧縮します.\n\nGPUのVRAMが4GiB未満の場合は使用を推奨します.\n\nよくわからない場合はオフのままにしてください.",
"SettingsTabGraphicsPreferredGpu": "優先使用するGPU", "SettingsTabGraphicsPreferredGpu": "優先使用するGPU",
"SettingsTabGraphicsPreferredGpuTooltip": "Vulkanグラフィックスバックエンドで使用されるグラフィックスカードを選択します.\n\nOpenGLが使用するGPUには影響しません.\n\n不明な場合は, \"dGPU\" としてフラグが立っているGPUに設定します. ない場合はそのままにします.", "SettingsTabGraphicsPreferredGpuTooltip": "Vulkanグラフィックスバックエンドで使用されるグラフィックスカードを選択します.\n\nOpenGLが使用するGPUには影響しません.\n\n不明な場合は, \"dGPU\" としてフラグが立っているGPUに設定します. ない場合はそのままにします.",
@ -597,8 +618,10 @@
"RyujinxUpdaterMessage": "Ryujinx を最新版にアップデートしますか?", "RyujinxUpdaterMessage": "Ryujinx を最新版にアップデートしますか?",
"SettingsTabHotkeysVolumeUpHotkey": "音量を上げる:", "SettingsTabHotkeysVolumeUpHotkey": "音量を上げる:",
"SettingsTabHotkeysVolumeDownHotkey": "音量を下げる:", "SettingsTabHotkeysVolumeDownHotkey": "音量を下げる:",
"SettingsEnableMacroHLE": "マクロの高レベルエミュレーション (HLE) を有効", "SettingsEnableMacroHLE": "マクロの高レベルエミュレーション (HLE) を有効にする",
"SettingsEnableMacroHLETooltip": "GPU マクロコードの高レベルエミュレーションです.\n\nパフォーマンスを向上させますが, 一部のゲームでグラフィックに不具合が発生する可能性があります.\n\nよくわからない場合はオンのままにしてください.", "SettingsEnableMacroHLETooltip": "GPU マクロコードの高レベルエミュレーションです.\n\nパフォーマンスを向上させますが, 一部のゲームでグラフィックに不具合が発生する可能性があります.\n\nよくわからない場合はオンのままにしてください.",
"SettingsEnableColorSpacePassthrough": "色空間をパススルー",
"SettingsEnableColorSpacePassthroughTooltip": "Vulkan バックエンドに対して, 色空間を指定せずに色情報を渡します. 高色域ディスプレイを使用する場合, 正確ではないですがより鮮やかな色になる可能性があります.",
"VolumeShort": "音量", "VolumeShort": "音量",
"UserProfilesManageSaves": "セーブデータの管理", "UserProfilesManageSaves": "セーブデータの管理",
"DeleteUserSave": "このゲームのユーザセーブデータを削除しますか?", "DeleteUserSave": "このゲームのユーザセーブデータを削除しますか?",
@ -610,5 +633,24 @@
"Search": "検索", "Search": "検索",
"UserProfilesRecoverLostAccounts": "アカウントの復旧", "UserProfilesRecoverLostAccounts": "アカウントの復旧",
"Recover": "復旧", "Recover": "復旧",
"UserProfilesRecoverHeading": "以下のアカウントのセーブデータが見つかりました" "UserProfilesRecoverHeading": "以下のアカウントのセーブデータが見つかりました",
"UserProfilesRecoverEmptyList": "復元するプロファイルはありません",
"GraphicsAATooltip": "ゲームのレンダリングにアンチエイリアスを適用します",
"GraphicsAALabel": "アンチエイリアス:",
"GraphicsScalingFilterLabel": "スケーリングフィルタ:",
"GraphicsScalingFilterTooltip": "フレームバッファスケーリングを有効にします",
"GraphicsScalingFilterLevelLabel": "レベル",
"GraphicsScalingFilterLevelTooltip": "スケーリングフィルタのレベルを設定",
"SmaaLow": "SMAA Low",
"SmaaMedium": "SMAA Medium",
"SmaaHigh": "SMAA High",
"SmaaUltra": "SMAA Ultra",
"UserEditorTitle": "ユーザを編集",
"UserEditorTitleCreate": "ユーザを作成",
"SettingsTabNetworkInterface": "ネットワークインタフェース:",
"NetworkInterfaceTooltip": "LAN機能に使用されるネットワークインタフェース",
"NetworkInterfaceDefault": "デフォルト",
"PackagingShaders": "シェーダーを構築中",
"AboutChangelogButton": "GitHub で更新履歴を表示",
"AboutChangelogButtonTooltipMessage": "クリックして, このバージョンの更新履歴をデフォルトのブラウザで開きます."
} }

View file

@ -3,10 +3,11 @@
"MenuBarFileOpenApplet": "애플릿 열기", "MenuBarFileOpenApplet": "애플릿 열기",
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "독립 실행형 모드에서 Mii 편집기 애플릿 열기", "MenuBarFileOpenAppletOpenMiiAppletToolTip": "독립 실행형 모드에서 Mii 편집기 애플릿 열기",
"SettingsTabInputDirectMouseAccess": "직접 마우스 접속", "SettingsTabInputDirectMouseAccess": "직접 마우스 접속",
"SettingsTabSystemMemoryManagerMode": "메모리 관리자 모드 :", "SettingsTabSystemMemoryManagerMode": "메모리 관리자 모드:",
"SettingsTabSystemMemoryManagerModeSoftware": "소프트웨어", "SettingsTabSystemMemoryManagerModeSoftware": "소프트웨어",
"SettingsTabSystemMemoryManagerModeHost": "호스트 (빠름)", "SettingsTabSystemMemoryManagerModeHost": "호스트 (빠름)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "호스트가 확인되지 않음 (가장 빠르나 안전하지 않음)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "호스트 확인 안함 (가장 빠르나 안전하지 않음)",
"SettingsTabSystemUseHypervisor": "하이퍼바이저 사용하기",
"MenuBarFile": "_파일", "MenuBarFile": "_파일",
"MenuBarFileOpenFromFile": "_파일에서 응용 프로그램 불러오기", "MenuBarFileOpenFromFile": "_파일에서 응용 프로그램 불러오기",
"MenuBarFileOpenUnpacked": "_압축을 푼 게임 불러오기", "MenuBarFileOpenUnpacked": "_압축을 푼 게임 불러오기",
@ -18,15 +19,18 @@
"MenuBarOptionsStartGamesInFullscreen": "전체 화면 모드에서 게임 시작", "MenuBarOptionsStartGamesInFullscreen": "전체 화면 모드에서 게임 시작",
"MenuBarOptionsStopEmulation": "에뮬레이션 중지", "MenuBarOptionsStopEmulation": "에뮬레이션 중지",
"MenuBarOptionsSettings": "_설정", "MenuBarOptionsSettings": "_설정",
"MenuBarOptionsManageUserProfiles": "_사용자 프로파일 관리\n", "MenuBarOptionsManageUserProfiles": "_사용자 프로파일 관리",
"MenuBarActions": "_동작", "MenuBarActions": "_동작",
"MenuBarOptionsSimulateWakeUpMessage": "모닝콜 메세지 시뮬레이션\n", "MenuBarOptionsSimulateWakeUpMessage": "깨우기 메시지 시뮬레이션",
"MenuBarActionsScanAmiibo": "Amiibo 스캔", "MenuBarActionsScanAmiibo": "Amiibo 스캔",
"MenuBarTools": "_도구", "MenuBarTools": "_도구",
"MenuBarToolsInstallFirmware": "펌웨어 설치", "MenuBarToolsInstallFirmware": "펌웨어 설치",
"MenuBarFileToolsInstallFirmwareFromFile": "XCI 또는 ZIP에서 펌웨어 설치", "MenuBarFileToolsInstallFirmwareFromFile": "XCI 또는 ZIP에서 펌웨어 설치",
"MenuBarFileToolsInstallFirmwareFromDirectory": "디렉토리에서 펌웨어 설치", "MenuBarFileToolsInstallFirmwareFromDirectory": "디렉터리에서 펌웨어 설치",
"MenuBarHelp": "도움", "MenuBarToolsManageFileTypes": "파일 형식 관리",
"MenuBarToolsInstallFileTypes": "파일 형식 설치",
"MenuBarToolsUninstallFileTypes": "파일 형식 설치 제거",
"MenuBarHelp": "도움말",
"MenuBarHelpCheckForUpdates": "업데이트 확인", "MenuBarHelpCheckForUpdates": "업데이트 확인",
"MenuBarHelpAbout": "정보", "MenuBarHelpAbout": "정보",
"MenuSearch": "검색...", "MenuSearch": "검색...",
@ -40,49 +44,59 @@
"GameListHeaderFileExtension": "파일 확장자", "GameListHeaderFileExtension": "파일 확장자",
"GameListHeaderFileSize": "파일 크기", "GameListHeaderFileSize": "파일 크기",
"GameListHeaderPath": "경로", "GameListHeaderPath": "경로",
"GameListContextMenuOpenUserSaveDirectory": "사용자 저장 디렉토리 열기\n", "GameListContextMenuOpenUserSaveDirectory": "사용자 저장 디렉터리 열기",
"GameListContextMenuOpenUserSaveDirectoryToolTip": "응용 프로그램의 사용자 저장이 포함된 디렉토리 열기\n", "GameListContextMenuOpenUserSaveDirectoryToolTip": "응용프로그램의 사용자 저장이 포함된 디렉터리 열기",
"GameListContextMenuOpenDeviceSaveDirectory": "사용자 장치 디렉리 열기", "GameListContextMenuOpenDeviceSaveDirectory": "사용자 장치 디렉리 열기",
"GameListContextMenuOpenDeviceSaveDirectoryToolTip": "응용 프로그램의 장치 저장이 포함된 디렉토리 열기\n", "GameListContextMenuOpenDeviceSaveDirectoryToolTip": "응용프로그램의 장치 저장이 포함된 디렉터리 열기",
"GameListContextMenuOpenBcatSaveDirectory": "사용자의 BCAT 디렉토리 열기\n", "GameListContextMenuOpenBcatSaveDirectory": "BCAT 저장 디렉터리 열기",
"GameListContextMenuOpenBcatSaveDirectoryToolTip": "응용 프로그램의 BCAT 저장이 포함된 디렉토리 열기\n", "GameListContextMenuOpenBcatSaveDirectoryToolTip": "응용프로그램의 BCAT 저장이 포함된 디렉터리 열기",
"GameListContextMenuManageTitleUpdates": "타이틀 업데이트 관리\n", "GameListContextMenuManageTitleUpdates": "타이틀 업데이트 관리",
"GameListContextMenuManageTitleUpdatesToolTip": "타이틀 업데이트 관리 창 열기", "GameListContextMenuManageTitleUpdatesToolTip": "타이틀 업데이트 관리 창 열기",
"GameListContextMenuManageDlc": "DLC 관리", "GameListContextMenuManageDlc": "DLC 관리",
"GameListContextMenuManageDlcToolTip": "DLC 관리 창 열기", "GameListContextMenuManageDlcToolTip": "DLC 관리 창 열기",
"GameListContextMenuOpenModsDirectory": "Mod 디렉리 열기", "GameListContextMenuOpenModsDirectory": "Mod 디렉리 열기",
"GameListContextMenuOpenModsDirectoryToolTip": "응용 프로그램의 Mod들이 포함된 디렉터리 열기", "GameListContextMenuOpenModsDirectoryToolTip": "응용프로그램의 Mod가 포함된 디렉터리 열기",
"GameListContextMenuCacheManagement": "캐시 관리", "GameListContextMenuCacheManagement": "캐시 관리",
"GameListContextMenuCacheManagementPurgePptc": "대기열 PPTC 재구성", "GameListContextMenuCacheManagementPurgePptc": "대기열 PPTC 재구성",
"GameListContextMenuCacheManagementPurgePptcToolTip": "다음 게임 시작 시 부팅 시 PPTC가 다시 빌드되도록 트리거\n", "GameListContextMenuCacheManagementPurgePptcToolTip": "다음 게임 시작에서 부팅 시 PPTC가 다시 빌드하도록 트리거",
"GameListContextMenuCacheManagementPurgeShaderCache": "셰이더 캐시 제거", "GameListContextMenuCacheManagementPurgeShaderCache": "셰이더 캐시 제거",
"GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "응용 프로그램 셰이더 캐시 삭제\n", "GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "응용프로그램 셰이더 캐시 삭제\n",
"GameListContextMenuCacheManagementOpenPptcDirectory": "PPTC 디렉리 열기", "GameListContextMenuCacheManagementOpenPptcDirectory": "PPTC 디렉리 열기",
"GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "응용 프로그램 PPTC 캐시가 포함된 디렉터리 열기\n", "GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "응용프로그램 PPTC 캐시가 포함된 디렉터리 열기",
"GameListContextMenuCacheManagementOpenShaderCacheDirectory": "셰이더 캐시 디렉리 열기", "GameListContextMenuCacheManagementOpenShaderCacheDirectory": "셰이더 캐시 디렉리 열기",
"GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "응용 프로그램 셰이더 캐시가 포함된 디렉터리 열기\n", "GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "응용프로그램 셰이더 캐시가 포함된 디렉터리 열기",
"GameListContextMenuExtractData": "데이터 추출", "GameListContextMenuExtractData": "데이터 추출",
"GameListContextMenuExtractDataExeFS": "ExeFS", "GameListContextMenuExtractDataExeFS": "ExeFS",
"GameListContextMenuExtractDataExeFSToolTip": "애플리케이션의 현재 구성에서 ExeFS 추출 (업데이트 포함)", "GameListContextMenuExtractDataExeFSToolTip": "응용프로그램의 현재 구성에서 ExeFS 추출 (업데이트 포함)",
"GameListContextMenuExtractDataRomFS": "RomFS", "GameListContextMenuExtractDataRomFS": "RomFS",
"GameListContextMenuExtractDataRomFSToolTip": "응용 프로그램의 현재 구성에서 RomFS 추출 (업데이트 포함)\n", "GameListContextMenuExtractDataRomFSToolTip": "응용 프로그램의 현재 구성에서 RomFS 추출 (업데이트 포함)",
"GameListContextMenuExtractDataLogo": "로고", "GameListContextMenuExtractDataLogo": "로고",
"GameListContextMenuExtractDataLogoToolTip": "응용 프로그램의 현재 구성에서 로고 섹션 추출 (업데이트 포함)\n", "GameListContextMenuExtractDataLogoToolTip": "응용프로그램의 현재 구성에서 로고 섹션 추출 (업데이트 포함)",
"StatusBarGamesLoaded": "불러온 {0}/{1} 개의 게임", "StatusBarGamesLoaded": "{0}/{1}개의 게임 불러옴",
"StatusBarSystemVersion": "시스템 버전 : {0}", "StatusBarSystemVersion": "시스템 버전 : {0}",
"LinuxVmMaxMapCountDialogTitle": "감지된 메모리 매핑의 하한선",
"LinuxVmMaxMapCountDialogTextPrimary": "vm.max_map_count의 값을 {0}으로 늘리시겠습니까?",
"LinuxVmMaxMapCountDialogTextSecondary": "일부 게임은 현재 허용된 것보다 더 많은 메모리 매핑을 생성하려고 시도할 수 있습니다. 이 제한을 초과하는 즉시 Ryujinx에 문제가 발생합니다.",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "예, 다음에 다시 시작할 때까지",
"LinuxVmMaxMapCountDialogButtonPersistent": "예, 영구적으로",
"LinuxVmMaxMapCountWarningTextPrimary": "메모리 매핑의 최대 용량이 권장 용량보다 적습니다.",
"LinuxVmMaxMapCountWarningTextSecondary": "vm.max_map_count({0})의 현재 값이 {1}보다 낮습니다. 일부 게임은 현재 허용된 것보다 더 많은 메모리 매핑을 생성하려고 시도할 수 있습니다. 이 제한을 초과하는 즉시 Ryujinx에 문제가 발생합니다.\n\n수동으로 제한을 늘리거나 Ryujinx의 도움을 받을 수 있는 pkexec을 설치하는 것이 좋습니다.",
"Settings": "설정", "Settings": "설정",
"SettingsTabGeneral": "사용자 인터페이스", "SettingsTabGeneral": "사용자 인터페이스",
"SettingsTabGeneralGeneral": "일반", "SettingsTabGeneralGeneral": "일반",
"SettingsTabGeneralEnableDiscordRichPresence": "디스코드 활동 상태 활성화\n", "SettingsTabGeneralEnableDiscordRichPresence": "디스코드 활동 상태 활성화",
"SettingsTabGeneralCheckUpdatesOnLaunch": "실행 시 업데이트 확인\n", "SettingsTabGeneralCheckUpdatesOnLaunch": "시작 시, 업데이트 확인",
"SettingsTabGeneralShowConfirmExitDialog": "\"종료 확인\" 대화 상자 표시", "SettingsTabGeneralShowConfirmExitDialog": "\"종료 확인\" 대화 상자 표시",
"SettingsTabGeneralHideCursorOnIdle": "유휴 상태에서 커서 숨기기", "SettingsTabGeneralHideCursor": "마우스 커서 숨기기",
"SettingsTabGeneralGameDirectories": "게임 디렉토리", "SettingsTabGeneralHideCursorNever": "절대 안 함",
"SettingsTabGeneralHideCursorOnIdle": "유휴 상태",
"SettingsTabGeneralHideCursorAlways": "언제나",
"SettingsTabGeneralGameDirectories": "게임 디렉터리",
"SettingsTabGeneralAdd": "추가", "SettingsTabGeneralAdd": "추가",
"SettingsTabGeneralRemove": "제거", "SettingsTabGeneralRemove": "제거",
"SettingsTabSystem": "시스템", "SettingsTabSystem": "시스템",
"SettingsTabSystemCore": "코어", "SettingsTabSystemCore": "코어",
"SettingsTabSystemSystemRegion": "시스템 지역 :", "SettingsTabSystemSystemRegion": "시스템 지역:",
"SettingsTabSystemSystemRegionJapan": "일본", "SettingsTabSystemSystemRegionJapan": "일본",
"SettingsTabSystemSystemRegionUSA": "미국", "SettingsTabSystemSystemRegionUSA": "미국",
"SettingsTabSystemSystemRegionEurope": "유럽", "SettingsTabSystemSystemRegionEurope": "유럽",
@ -103,41 +117,41 @@
"SettingsTabSystemSystemLanguagePortuguese": "포르투갈어", "SettingsTabSystemSystemLanguagePortuguese": "포르투갈어",
"SettingsTabSystemSystemLanguageRussian": "러시아어", "SettingsTabSystemSystemLanguageRussian": "러시아어",
"SettingsTabSystemSystemLanguageTaiwanese": "대만어", "SettingsTabSystemSystemLanguageTaiwanese": "대만어",
"SettingsTabSystemSystemLanguageBritishEnglish": "영어 (영국)", "SettingsTabSystemSystemLanguageBritishEnglish": "영어(영국)",
"SettingsTabSystemSystemLanguageCanadianFrench": "프랑스어 (캐나다)", "SettingsTabSystemSystemLanguageCanadianFrench": "프랑스어(캐나다)",
"SettingsTabSystemSystemLanguageLatinAmericanSpanish": "스페인어 (라틴 아메리카)", "SettingsTabSystemSystemLanguageLatinAmericanSpanish": "스페인어(라틴 아메리카)",
"SettingsTabSystemSystemLanguageSimplifiedChinese": "중국어 간체", "SettingsTabSystemSystemLanguageSimplifiedChinese": "중국어 간체",
"SettingsTabSystemSystemLanguageTraditionalChinese": "중국어 번체", "SettingsTabSystemSystemLanguageTraditionalChinese": "중국어 번체",
"SettingsTabSystemSystemTimeZone": "시스템 시간대 :", "SettingsTabSystemSystemTimeZone": "시스템 시간대:",
"SettingsTabSystemSystemTime": "시스템 시간 :", "SettingsTabSystemSystemTime": "시스템 시간:",
"SettingsTabSystemEnableVsync": "수직 동기화", "SettingsTabSystemEnableVsync": "수직 동기화",
"SettingsTabSystemEnablePptc": "PPTC (프로파일된 영구 번역 캐시) 활성화", "SettingsTabSystemEnablePptc": "PPTC(프로파일된 영구 번역 캐시)",
"SettingsTabSystemEnableFsIntegrityChecks": "FS 무결성 검사", "SettingsTabSystemEnableFsIntegrityChecks": "파일 시스템 무결성 검사",
"SettingsTabSystemAudioBackend": "오디오 백엔드:", "SettingsTabSystemAudioBackend": "음향 후단부 :",
"SettingsTabSystemAudioBackendDummy": "더미", "SettingsTabSystemAudioBackendDummy": "더미",
"SettingsTabSystemAudioBackendOpenAL": "OpenAL", "SettingsTabSystemAudioBackendOpenAL": "OpenAL",
"SettingsTabSystemAudioBackendSoundIO": "사운드IO", "SettingsTabSystemAudioBackendSoundIO": "사운드IO",
"SettingsTabSystemAudioBackendSDL2": "SDL2", "SettingsTabSystemAudioBackendSDL2": "SDL2",
"SettingsTabSystemHacks": "해킹", "SettingsTabSystemHacks": "해킹",
"SettingsTabSystemHacksNote": " (불안정을 일으킬 수 있음)", "SettingsTabSystemHacksNote": "불안정성을 유발할 수 있음",
"SettingsTabSystemExpandDramSize": "대체 메모리 레이아웃 사용 (개발자)\n", "SettingsTabSystemExpandDramSize": "대체 메모리 레이아웃 사용(개발자)",
"SettingsTabSystemIgnoreMissingServices": "누락된 서비스 무시", "SettingsTabSystemIgnoreMissingServices": "누락된 서비스 무시",
"SettingsTabGraphics": "그래픽", "SettingsTabGraphics": "그래픽",
"SettingsTabGraphicsAPI": "그래픽 API", "SettingsTabGraphicsAPI": "그래픽 API",
"SettingsTabGraphicsEnableShaderCache": "셰이더 캐시 활성화", "SettingsTabGraphicsEnableShaderCache": "셰이더 캐시 활성화",
"SettingsTabGraphicsAnisotropicFiltering": "이방성 필터링:", "SettingsTabGraphicsAnisotropicFiltering": "이방성 필터링 :",
"SettingsTabGraphicsAnisotropicFilteringAuto": "자동", "SettingsTabGraphicsAnisotropicFilteringAuto": "자동",
"SettingsTabGraphicsAnisotropicFiltering2x": "2 배", "SettingsTabGraphicsAnisotropicFiltering2x": "2배",
"SettingsTabGraphicsAnisotropicFiltering4x": "4 배", "SettingsTabGraphicsAnisotropicFiltering4x": "4배",
"SettingsTabGraphicsAnisotropicFiltering8x": "8 배", "SettingsTabGraphicsAnisotropicFiltering8x": "8배",
"SettingsTabGraphicsAnisotropicFiltering16x": "16 배", "SettingsTabGraphicsAnisotropicFiltering16x": "16배",
"SettingsTabGraphicsResolutionScale": "해상도 스케일:", "SettingsTabGraphicsResolutionScale": "해상도 배율 :",
"SettingsTabGraphicsResolutionScaleCustom": "사용자 지정 (권장하지 않음)", "SettingsTabGraphicsResolutionScaleCustom": "사용자 정의(권장하지 않음)",
"SettingsTabGraphicsResolutionScaleNative": "기본 (720p/1080p)", "SettingsTabGraphicsResolutionScaleNative": "원본(720p/1080p)",
"SettingsTabGraphicsResolutionScale2x": "2(1440p/2160p)", "SettingsTabGraphicsResolutionScale2x": "2(1440p/2160p)",
"SettingsTabGraphicsResolutionScale3x": "3(2160p/3240p)", "SettingsTabGraphicsResolutionScale3x": "3(2160p/3240p)",
"SettingsTabGraphicsResolutionScale4x": "4(2880p/4320p)", "SettingsTabGraphicsResolutionScale4x": "4(2880p/4320p)",
"SettingsTabGraphicsAspectRatio": "화면비:", "SettingsTabGraphicsAspectRatio": "종횡비 :",
"SettingsTabGraphicsAspectRatio4x3": "4:3", "SettingsTabGraphicsAspectRatio4x3": "4:3",
"SettingsTabGraphicsAspectRatio16x9": "16:9", "SettingsTabGraphicsAspectRatio16x9": "16:9",
"SettingsTabGraphicsAspectRatio16x10": "16:10", "SettingsTabGraphicsAspectRatio16x10": "16:10",
@ -145,10 +159,10 @@
"SettingsTabGraphicsAspectRatio32x9": "32:9", "SettingsTabGraphicsAspectRatio32x9": "32:9",
"SettingsTabGraphicsAspectRatioStretch": "창에 맞게 늘리기", "SettingsTabGraphicsAspectRatioStretch": "창에 맞게 늘리기",
"SettingsTabGraphicsDeveloperOptions": "개발자 옵션", "SettingsTabGraphicsDeveloperOptions": "개발자 옵션",
"SettingsTabGraphicsShaderDumpPath": "그래픽 쉐이더 덤프 경로:", "SettingsTabGraphicsShaderDumpPath": "그래픽 셰이더 덤프 경로 :",
"SettingsTabLogging": "로", "SettingsTabLogging": "로그 기록",
"SettingsTabLoggingLogging": "로", "SettingsTabLoggingLogging": "로그 기록",
"SettingsTabLoggingEnableLoggingToFile": "파일에 로 활성화", "SettingsTabLoggingEnableLoggingToFile": "파일에 로그 기록 활성화",
"SettingsTabLoggingEnableStubLogs": "스텁 로그 활성화", "SettingsTabLoggingEnableStubLogs": "스텁 로그 활성화",
"SettingsTabLoggingEnableInfoLogs": "정보 로그 활성화", "SettingsTabLoggingEnableInfoLogs": "정보 로그 활성화",
"SettingsTabLoggingEnableWarningLogs": "경고 로그 활성화", "SettingsTabLoggingEnableWarningLogs": "경고 로그 활성화",
@ -156,12 +170,13 @@
"SettingsTabLoggingEnableTraceLogs": "추적 로그 활성화", "SettingsTabLoggingEnableTraceLogs": "추적 로그 활성화",
"SettingsTabLoggingEnableGuestLogs": "게스트 로그 활성화", "SettingsTabLoggingEnableGuestLogs": "게스트 로그 활성화",
"SettingsTabLoggingEnableFsAccessLogs": "Fs 접속 로그 활성화", "SettingsTabLoggingEnableFsAccessLogs": "Fs 접속 로그 활성화",
"SettingsTabLoggingFsGlobalAccessLogMode": "Fs 글로벌 접속 로그 모드:", "SettingsTabLoggingFsGlobalAccessLogMode": "Fs 전역 접속 로그 모드 :",
"SettingsTabLoggingDeveloperOptions": "개발자 옵션 (경고 : 성능이 저하됨)", "SettingsTabLoggingDeveloperOptions": "개발자 옵션",
"SettingsTabLoggingGraphicsBackendLogLevel": "그래픽 백엔드 로그 수준:", "SettingsTabLoggingDeveloperOptionsNote": "경고: 성능이 저하됨",
"SettingsTabLoggingGraphicsBackendLogLevel": "그래픽 후단부 로그 수준 :",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "없음", "SettingsTabLoggingGraphicsBackendLogLevelNone": "없음",
"SettingsTabLoggingGraphicsBackendLogLevelError": "오류", "SettingsTabLoggingGraphicsBackendLogLevelError": "오류",
"SettingsTabLoggingGraphicsBackendLogLevelPerformance": "감속", "SettingsTabLoggingGraphicsBackendLogLevelPerformance": "느려짐",
"SettingsTabLoggingGraphicsBackendLogLevelAll": "모두", "SettingsTabLoggingGraphicsBackendLogLevelAll": "모두",
"SettingsTabLoggingEnableDebugLogs": "디버그 로그 활성화", "SettingsTabLoggingEnableDebugLogs": "디버그 로그 활성화",
"SettingsTabInput": "입력", "SettingsTabInput": "입력",
@ -181,111 +196,104 @@
"ControllerSettingsPlayer6": "플레이어 6", "ControllerSettingsPlayer6": "플레이어 6",
"ControllerSettingsPlayer7": "플레이어 7", "ControllerSettingsPlayer7": "플레이어 7",
"ControllerSettingsPlayer8": "플레이어 8", "ControllerSettingsPlayer8": "플레이어 8",
"ControllerSettingsHandheld": "휴대", "ControllerSettingsHandheld": "휴대 모드",
"ControllerSettingsInputDevice": "입력 장치", "ControllerSettingsInputDevice": "입력 장치",
"ControllerSettingsRefresh": "새로 고침", "ControllerSettingsRefresh": "새로 고침",
"ControllerSettingsDeviceDisabled": "비활성화됨", "ControllerSettingsDeviceDisabled": "비활성화됨",
"ControllerSettingsControllerType": "컨트롤러 유형", "ControllerSettingsControllerType": "컨트롤러 유형",
"ControllerSettingsControllerTypeHandheld": "휴대", "ControllerSettingsControllerTypeHandheld": "휴대 모드",
"ControllerSettingsControllerTypeProController": "프로 컨트롤러", "ControllerSettingsControllerTypeProController": "프로 컨트롤러",
"ControllerSettingsControllerTypeJoyConPair": "조이콘 페어링", "ControllerSettingsControllerTypeJoyConPair": "조이콘 페어링",
"ControllerSettingsControllerTypeJoyConLeft": "왼쪽 조이콘", "ControllerSettingsControllerTypeJoyConLeft": "좌측 조이콘",
"ControllerSettingsControllerTypeJoyConRight": "오른쪽 조이콘", "ControllerSettingsControllerTypeJoyConRight": "우측 조이콘",
"ControllerSettingsProfile": "프로파일", "ControllerSettingsProfile": "프로",
"ControllerSettingsProfileDefault": "기본", "ControllerSettingsProfileDefault": "기본",
"ControllerSettingsLoad": "불러오기", "ControllerSettingsLoad": "불러오기",
"ControllerSettingsAdd": "추가", "ControllerSettingsAdd": "추가",
"ControllerSettingsRemove": "제거", "ControllerSettingsRemove": "제거",
"ControllerSettingsButtons": "버튼", "ControllerSettingsButtons": "버튼",
"ControllerSettingsButtonA": "A 버튼", "ControllerSettingsButtonA": "A",
"ControllerSettingsButtonB": "B 버튼", "ControllerSettingsButtonB": "B",
"ControllerSettingsButtonX": "X 버튼", "ControllerSettingsButtonX": "X",
"ControllerSettingsButtonY": "Y 버튼", "ControllerSettingsButtonY": "Y",
"ControllerSettingsButtonPlus": "+ 버튼", "ControllerSettingsButtonPlus": "+",
"ControllerSettingsButtonMinus": "- 버튼", "ControllerSettingsButtonMinus": "-",
"ControllerSettingsDPad": "방향 패드", "ControllerSettingsDPad": "방향 패드",
"ControllerSettingsDPadUp": "위쪽", "ControllerSettingsDPadUp": "↑",
"ControllerSettingsDPadDown": "아래쪽", "ControllerSettingsDPadDown": "↓",
"ControllerSettingsDPadLeft": "왼쪽", "ControllerSettingsDPadLeft": "←",
"ControllerSettingsDPadRight": "오른쪽", "ControllerSettingsDPadRight": "→",
"ControllerSettingsLStick": "왼쪽 스틱", "ControllerSettingsStickButton": "버튼",
"ControllerSettingsLStickButton": "버튼", "ControllerSettingsStickUp": "↑",
"ControllerSettingsLStickUp": "위쪽", "ControllerSettingsStickDown": "↓",
"ControllerSettingsLStickDown": "아래쪽", "ControllerSettingsStickLeft": "←",
"ControllerSettingsLStickLeft": "왼쪽", "ControllerSettingsStickRight": "→",
"ControllerSettingsLStickRight": "오른쪽", "ControllerSettingsStickStick": "스틱",
"ControllerSettingsLStickStick": "스틱", "ControllerSettingsStickInvertXAxis": "스틱 X 축 반전",
"ControllerSettingsLStickInvertXAxis": "스틱 X 축 반전", "ControllerSettingsStickInvertYAxis": "스틱 Y 축 반전",
"ControllerSettingsLStickInvertYAxis": "스틱 Y 축 반전", "ControllerSettingsStickDeadzone": "사각지대 :",
"ControllerSettingsLStickDeadzone": "데드존:", "ControllerSettingsLStick": "좌측 스틱",
"ControllerSettingsRStick": "오른쪽 스틱", "ControllerSettingsRStick": "우측 스틱",
"ControllerSettingsRStickButton": "버튼", "ControllerSettingsTriggersLeft": "좌측 트리거",
"ControllerSettingsRStickUp": "위쪽", "ControllerSettingsTriggersRight": "우측 트리거",
"ControllerSettingsRStickDown": "아래쪽", "ControllerSettingsTriggersButtonsLeft": "좌측 트리거 버튼",
"ControllerSettingsRStickLeft": "왼쪽", "ControllerSettingsTriggersButtonsRight": "우측 트리거 버튼",
"ControllerSettingsRStickRight": "오른쪽",
"ControllerSettingsRStickStick": "스틱",
"ControllerSettingsRStickInvertXAxis": "스틱 X 축 반전",
"ControllerSettingsRStickInvertYAxis": "스틱 Y 축 반전",
"ControllerSettingsRStickDeadzone": "데드존:",
"ControllerSettingsTriggersLeft": "왼쪽 트리거",
"ControllerSettingsTriggersRight": "오른쪽 트리거",
"ControllerSettingsTriggersButtonsLeft": "왼쪽 트리거 버튼",
"ControllerSettingsTriggersButtonsRight": "오른쪽 트리거 버튼",
"ControllerSettingsTriggers": "트리거 버튼", "ControllerSettingsTriggers": "트리거 버튼",
"ControllerSettingsTriggerL": "L 버튼", "ControllerSettingsTriggerL": "L",
"ControllerSettingsTriggerR": "R 버튼", "ControllerSettingsTriggerR": "R",
"ControllerSettingsTriggerZL": "ZL 버튼", "ControllerSettingsTriggerZL": "ZL",
"ControllerSettingsTriggerZR": "ZR 버튼", "ControllerSettingsTriggerZR": "ZR",
"ControllerSettingsLeftSL": "SL 버튼", "ControllerSettingsLeftSL": "SL",
"ControllerSettingsLeftSR": "SR 버튼", "ControllerSettingsLeftSR": "SR",
"ControllerSettingsRightSL": "SL 버튼", "ControllerSettingsRightSL": "SL",
"ControllerSettingsRightSR": "SR 버튼", "ControllerSettingsRightSR": "SR",
"ControllerSettingsExtraButtonsLeft": "왼쪽 버튼", "ControllerSettingsExtraButtonsLeft": "좌측 버튼",
"ControllerSettingsExtraButtonsRight": "오른쪽 버튼", "ControllerSettingsExtraButtonsRight": "우측 버튼",
"ControllerSettingsMisc": "기타", "ControllerSettingsMisc": "기타",
"ControllerSettingsTriggerThreshold": "트리거 임계값 :", "ControllerSettingsTriggerThreshold": "트리거 임계값 :",
"ControllerSettingsMotion": "동작", "ControllerSettingsMotion": "동작",
"ControllerSettingsMotionUseCemuhookCompatibleMotion": "CemuHook 호환 모션 사용", "ControllerSettingsMotionUseCemuhookCompatibleMotion": "CemuHook 호환 모션 사용",
"ControllerSettingsMotionControllerSlot": "컨트롤러 슬롯:", "ControllerSettingsMotionControllerSlot": "컨트롤러 슬롯 :",
"ControllerSettingsMotionMirrorInput": "미러 입력", "ControllerSettingsMotionMirrorInput": "미러 입력",
"ControllerSettingsMotionRightJoyConSlot": "오른쪽 조이콘 슬롯 :", "ControllerSettingsMotionRightJoyConSlot": "우측 조이콘 슬롯 :",
"ControllerSettingsMotionServerHost": "서버 호스트:", "ControllerSettingsMotionServerHost": "서버 호스트 :",
"ControllerSettingsMotionGyroSensitivity": "자이로 감도:", "ControllerSettingsMotionGyroSensitivity": "자이로 감도 :",
"ControllerSettingsMotionGyroDeadzone": "자이로 데드존:", "ControllerSettingsMotionGyroDeadzone": "자이로 사각지대 :",
"ControllerSettingsSave": "저장", "ControllerSettingsSave": "저장",
"ControllerSettingsClose": "닫기", "ControllerSettingsClose": "닫기",
"UserProfilesSelectedUserProfile": "선택한 사용자 프로파일:", "UserProfilesSelectedUserProfile": "선택한 사용자 프로:",
"UserProfilesSaveProfileName": "프로파일 이름 저장", "UserProfilesSaveProfileName": "프로 이름 저장",
"UserProfilesChangeProfileImage": "프로파일 이미지 변경", "UserProfilesChangeProfileImage": "프로 이미지 변경",
"UserProfilesAvailableUserProfiles": "사용 가능한 사용자 프로파일:", "UserProfilesAvailableUserProfiles": "사용 가능한 사용자 프로:",
"UserProfilesAddNewProfile": "프로파일 생성", "UserProfilesAddNewProfile": "프로 생성",
"UserProfilesDeleteSelectedProfile": "선택한 프로파일 삭제", "UserProfilesDelete": "삭제",
"UserProfilesClose": "닫기", "UserProfilesClose": "닫기",
"ProfileImageSelectionTitle": "프로파일 이미지 선택", "ProfileNameSelectionWatermark": "닉네임을 입력하세요",
"ProfileImageSelectionHeader": "프로파일 이미지 선택", "ProfileImageSelectionTitle": "프로필 이미지 선택",
"ProfileImageSelectionNote": "사용자 지정 프로파일 이미지를 가져오거나 시스템 펌웨어에서 아바타를 선택할 수 있음\n", "ProfileImageSelectionHeader": "프로필 이미지 선택",
"ProfileImageSelectionNote": "사용자 지정 프로필 이미지를 가져오거나 시스템 펌웨어에서 아바타 선택 가능",
"ProfileImageSelectionImportImage": "이미지 파일 가져오기", "ProfileImageSelectionImportImage": "이미지 파일 가져오기",
"ProfileImageSelectionSelectAvatar": "펌웨어 아바타 선택", "ProfileImageSelectionSelectAvatar": "펌웨어 아바타 선택",
"InputDialogTitle": "입력 대화상자", "InputDialogTitle": "입력 대화상자",
"InputDialogOk": "확인", "InputDialogOk": "확인",
"InputDialogCancel": "취소", "InputDialogCancel": "취소",
"InputDialogAddNewProfileTitle": "프로파일 이름 선택", "InputDialogAddNewProfileTitle": "프로 이름 선택",
"InputDialogAddNewProfileHeader": "프로파일 이름 입력", "InputDialogAddNewProfileHeader": "프로 이름 입력",
"InputDialogAddNewProfileSubtext": "(최대 길이: {0})\n", "InputDialogAddNewProfileSubtext": "(최대 길이 : {0})",
"AvatarChoose": "선택", "AvatarChoose": "선택",
"AvatarSetBackgroundColor": "배경색 설정", "AvatarSetBackgroundColor": "배경색 설정",
"AvatarClose": "닫기", "AvatarClose": "닫기",
"ControllerSettingsLoadProfileToolTip": "프로파일 불러오기", "ControllerSettingsLoadProfileToolTip": "프로 불러오기",
"ControllerSettingsAddProfileToolTip": "프로파일 추가", "ControllerSettingsAddProfileToolTip": "프로 추가",
"ControllerSettingsRemoveProfileToolTip": "프로파일 제거", "ControllerSettingsRemoveProfileToolTip": "프로 제거",
"ControllerSettingsSaveProfileToolTip": "프로파일 저장", "ControllerSettingsSaveProfileToolTip": "프로 저장",
"MenuBarFileToolsTakeScreenshot": "스크린 샷 찍기", "MenuBarFileToolsTakeScreenshot": "스크린 샷 찍기",
"MenuBarFileToolsHideUi": "Hide UI", "MenuBarFileToolsHideUi": "UI 숨기기",
"GameListContextMenuRunApplication": "응용프로그램 실행",
"GameListContextMenuToggleFavorite": "즐겨찾기 전환", "GameListContextMenuToggleFavorite": "즐겨찾기 전환",
"GameListContextMenuToggleFavoriteToolTip": "게임 즐겨찾기 상태 전환\n", "GameListContextMenuToggleFavoriteToolTip": "게임 즐겨찾기 상태 전환",
"SettingsTabGeneralTheme": "테마", "SettingsTabGeneralTheme": "테마",
"SettingsTabGeneralThemeCustomTheme": "사용자 정의 테마 경로", "SettingsTabGeneralThemeCustomTheme": "커스텀 테마 경로",
"SettingsTabGeneralThemeBaseStyle": "기본 스타일", "SettingsTabGeneralThemeBaseStyle": "기본 스타일",
"SettingsTabGeneralThemeBaseStyleDark": "어두움", "SettingsTabGeneralThemeBaseStyleDark": "어두움",
"SettingsTabGeneralThemeBaseStyleLight": "밝음", "SettingsTabGeneralThemeBaseStyleLight": "밝음",
@ -295,8 +303,8 @@
"ControllerSettingsRumble": "진동", "ControllerSettingsRumble": "진동",
"ControllerSettingsRumbleStrongMultiplier": "강력한 진동 증폭기", "ControllerSettingsRumbleStrongMultiplier": "강력한 진동 증폭기",
"ControllerSettingsRumbleWeakMultiplier": "약한 진동 증폭기", "ControllerSettingsRumbleWeakMultiplier": "약한 진동 증폭기",
"DialogMessageSaveNotAvailableMessage": "{0} [{1:x16}]에 대한 저장 데이터가 없음\n", "DialogMessageSaveNotAvailableMessage": "{0} [{1:x16}]에 대한 저장 데이터가 없음",
"DialogMessageSaveNotAvailableCreateSaveMessage": "이 게임에 대한 저장 데이터를 생성하겠습니까?\n", "DialogMessageSaveNotAvailableCreateSaveMessage": "이 게임에 대한 저장 데이터를 생성하겠습니까?",
"DialogConfirmationTitle": "Ryujinx - 확인", "DialogConfirmationTitle": "Ryujinx - 확인",
"DialogUpdaterTitle": "Ryujinx - 업데이터", "DialogUpdaterTitle": "Ryujinx - 업데이터",
"DialogErrorTitle": "Ryujinx - 오류", "DialogErrorTitle": "Ryujinx - 오류",
@ -305,60 +313,64 @@
"DialogErrorMessage": "Ryujinx 오류 발생", "DialogErrorMessage": "Ryujinx 오류 발생",
"DialogExitMessage": "Ryujinx를 종료하겠습니까?", "DialogExitMessage": "Ryujinx를 종료하겠습니까?",
"DialogExitSubMessage": "저장하지 않은 모든 데이터는 손실됩니다!", "DialogExitSubMessage": "저장하지 않은 모든 데이터는 손실됩니다!",
"DialogMessageCreateSaveErrorMessage": "지정된 저장 데이터를 작성하는 중에 오류 발생: {0}\n", "DialogMessageCreateSaveErrorMessage": "지정된 저장 데이터를 작성하는 중에 오류 발생: {0}",
"DialogMessageFindSaveErrorMessage": "지정된 저장 데이터를 찾는 중에 오류 발생: {0}\n", "DialogMessageFindSaveErrorMessage": "지정된 저장 데이터를 찾는 중에 오류 발생: {0}",
"FolderDialogExtractTitle": "추출할 폴더 선택", "FolderDialogExtractTitle": "추출할 폴더 선택",
"DialogNcaExtractionMessage": "{1}에서 {0} 섹션을 추출하는 중...\n", "DialogNcaExtractionMessage": "{1}에서 {0} 섹션을 추출하는 중...",
"DialogNcaExtractionTitle": "Ryujinx - NCA 섹션 추출기", "DialogNcaExtractionTitle": "Ryujinx - NCA 섹션 추출기",
"DialogNcaExtractionMainNcaNotFoundErrorMessage": "추출 실패하였습니다. 선택한 파일에 기본 NCA가 없습니다.\n", "DialogNcaExtractionMainNcaNotFoundErrorMessage": "추출 실패하였습니다. 선택한 파일에 기본 NCA가 없습니다.",
"DialogNcaExtractionCheckLogErrorMessage": "추출 실패하였습니다. 자세한 내용은 로그 파일을 읽으세요.\n", "DialogNcaExtractionCheckLogErrorMessage": "추출 실패하였습니다. 자세한 내용은 로그 파일을 읽으세요.",
"DialogNcaExtractionSuccessMessage": "추출이 성공적으로 완료되었습니다.", "DialogNcaExtractionSuccessMessage": "추출이 성공적으로 완료되었습니다.",
"DialogUpdaterConvertFailedMessage": "현재 Ryujinx 버전을 변환하지 못했습니다.", "DialogUpdaterConvertFailedMessage": "현재 Ryujinx 버전을 변환하지 못했습니다.",
"DialogUpdaterCancelUpdateMessage": "업데이트 취소 중 입니다!", "DialogUpdaterCancelUpdateMessage": "업데이트 취소 중 입니다!",
"DialogUpdaterAlreadyOnLatestVersionMessage": "이미 최신 버전의 Ryujinx를 사용하고 있습니다!", "DialogUpdaterAlreadyOnLatestVersionMessage": "이미 최신 버전의 Ryujinx를 사용하고 있습니다!",
"DialogUpdaterFailedToGetVersionMessage": "GitHub 릴리스에서 릴리스 정보를 가져오는 중에 오류가 발생했습니다. 이는 GitHub Actions에서 새 릴리스를 컴파일하는 경우 발생할 수 있습니다. 몇 분 후에 다시 시도하세요.", "DialogUpdaterFailedToGetVersionMessage": "GitHub 릴리스에서 릴리스 정보를 가져오는 중에 오류가 발생했습니다. 이는 GitHub Actions에서 새 릴리스를 컴파일하는 경우 발생할 수 있습니다. 몇 분 후에 다시 시도하세요.",
"DialogUpdaterConvertFailedGithubMessage": "Github 개정에서 받은 Ryujinx 버전을 변환하지 못했습니다.\n", "DialogUpdaterConvertFailedGithubMessage": "Github 개정에서 받은 Ryujinx 버전을 변환하지 못했습니다.",
"DialogUpdaterDownloadingMessage": "업데이트 다운로드 중...\n", "DialogUpdaterDownloadingMessage": "업데이트 다운로드 중...",
"DialogUpdaterExtractionMessage": "업데이트 추출 중...\n", "DialogUpdaterExtractionMessage": "업데이트 추출 중...",
"DialogUpdaterRenamingMessage": "업데이트 이름 바꾸는 중...\n", "DialogUpdaterRenamingMessage": "업데이트 이름 바꾸는 중...",
"DialogUpdaterAddingFilesMessage": "새 업데이트 추가 중...\n", "DialogUpdaterAddingFilesMessage": "새 업데이트 추가 중...",
"DialogUpdaterCompleteMessage": "업데이트 완료하였습니다!\n", "DialogUpdaterCompleteMessage": "업데이트를 완료했습니다!",
"DialogUpdaterRestartMessage": "지금 Ryujinx를 다시 시작하겠습니까?", "DialogUpdaterRestartMessage": "지금 Ryujinx를 다시 시작하겠습니까?",
"DialogUpdaterArchNotSupportedMessage": "지원되는 시스템 아키텍처를 실행하고 있지 않습니다!", "DialogUpdaterArchNotSupportedMessage": "지원되는 시스템 아키텍처를 실행하고 있지 않습니다!",
"DialogUpdaterArchNotSupportedSubMessage": "(x64 시스템만 지원됩니다!)\n", "DialogUpdaterArchNotSupportedSubMessage": "(64비트 시스템만 지원됩니다!)",
"DialogUpdaterNoInternetMessage": "인터넷에 연결되어 있지 않습니다!", "DialogUpdaterNoInternetMessage": "인터넷에 연결되어 있지 않습니다!",
"DialogUpdaterNoInternetSubMessage": "인터넷 연결이 작동하는지 확인하세요!", "DialogUpdaterNoInternetSubMessage": "인터넷 연결이 작동하는지 확인하세요!",
"DialogUpdaterDirtyBuildMessage": "Ryujinx의 나쁜 빌드는 업데이트할 수 없습니다!\n", "DialogUpdaterDirtyBuildMessage": "Ryujinx의 나쁜 빌드는 업데이트할 수 없습니다!\n",
"DialogUpdaterDirtyBuildSubMessage": "지원되는 버전을 찾고 있다면 https://ryujinx.org/에서 Ryujinx를 다운로드하세요.", "DialogUpdaterDirtyBuildSubMessage": "지원되는 버전을 찾고 있다면 https://ryujinx.org/에서 Ryujinx를 다운로드하세요.",
"DialogRestartRequiredMessage": "재시작 필요", "DialogRestartRequiredMessage": "재시작 필요",
"DialogThemeRestartMessage": "테마가 저장되었습니다. 테마를 적용하려면 다시 시작해야 합니다.", "DialogThemeRestartMessage": "테마가 저장되었습니다. 테마를 적용하려면 다시 시작해야 합니다.",
"DialogThemeRestartSubMessage": "다시 시작하겠습니까?\n", "DialogThemeRestartSubMessage": "다시 시작하겠습니까?",
"DialogFirmwareInstallEmbeddedMessage": "이 게임에 내장된 펌웨어를 설치하겠습니까? (펌웨어 {0})", "DialogFirmwareInstallEmbeddedMessage": "이 게임에 내장된 펌웨어를 설치하겠습니까? (펌웨어 {0})",
"DialogFirmwareInstallEmbeddedSuccessMessage": "설치된 펌웨어가 없지만 Ryujinx가 제공된 게임에서 펌웨어 {0}을(를) 설치할 수 있었습니다.\\n이제 에뮬레이터가 시작됩니다.", "DialogFirmwareInstallEmbeddedSuccessMessage": "설치된 펌웨어가 없지만 Ryujinx가 제공된 게임에서 펌웨어 {0}을(를) 설치할 수 있었습니다.\\n이제 에뮬레이터가 시작됩니다.",
"DialogFirmwareNoFirmwareInstalledMessage": "설치된 펌웨어 없음", "DialogFirmwareNoFirmwareInstalledMessage": "설치된 펌웨어 없음",
"DialogFirmwareInstalledMessage": "펌웨어 {0}이(가) 설치됨", "DialogFirmwareInstalledMessage": "펌웨어 {0}이(가) 설치됨",
"DialogInstallFileTypesSuccessMessage": "파일 형식을 성공적으로 설치했습니다!",
"DialogInstallFileTypesErrorMessage": "파일 형식을 설치하지 못했습니다.",
"DialogUninstallFileTypesSuccessMessage": "파일 형식을 성공적으로 제거했습니다!",
"DialogUninstallFileTypesErrorMessage": "파일 형식을 제거하지 못했습니다.",
"DialogOpenSettingsWindowLabel": "설정 창 열기", "DialogOpenSettingsWindowLabel": "설정 창 열기",
"DialogControllerAppletTitle": "컨트롤러 애플릿", "DialogControllerAppletTitle": "컨트롤러 애플릿",
"DialogMessageDialogErrorExceptionMessage": "메시지 대화상자를 표시하는 동안 오류 발생: {0}\n", "DialogMessageDialogErrorExceptionMessage": "메시지 대화상자를 표시하는 동안 오류 발생 : {0}",
"DialogSoftwareKeyboardErrorExceptionMessage": "소프트웨어 키보드를 표시하는 동안 오류 발생: {0}", "DialogSoftwareKeyboardErrorExceptionMessage": "소프트웨어 키보드를 표시하는 동안 오류 발생 : {0}",
"DialogErrorAppletErrorExceptionMessage": "오류에플릿 대화상자를 표시하는 동안 오류 발생: {0}", "DialogErrorAppletErrorExceptionMessage": "오류에플릿 대화상자를 표시하는 동안 오류 발생 : {0}",
"DialogUserErrorDialogMessage": "{0}: {1}", "DialogUserErrorDialogMessage": "{0}: {1}",
"DialogUserErrorDialogInfoMessage": "\n이 오류를 수정하는 방법에 대한 자세한 내용은 설정 가이드를 따르세요.", "DialogUserErrorDialogInfoMessage": "\n이 오류를 수정하는 방법에 대한 자세한 내용은 설정 가이드를 따르세요.",
"DialogUserErrorDialogTitle": "Ryuijnx 오류 ({0})", "DialogUserErrorDialogTitle": "Ryuijnx 오류 ({0})",
"DialogAmiiboApiTitle": "Amiibo API", "DialogAmiiboApiTitle": "Amiibo API",
"DialogAmiiboApiFailFetchMessage": "API에서 정보를 가져오는 동안 오류가 발생했습니다.", "DialogAmiiboApiFailFetchMessage": "API에서 정보를 가져오는 동안 오류가 발생했습니다.",
"DialogAmiiboApiConnectErrorMessage": "Amiibo API 서버에 연결할 수 없습니다. 서비스가 다운되었거나 인터넷 연결이 오프라인인지 확인해야 할 수 있습니다.", "DialogAmiiboApiConnectErrorMessage": "Amiibo API 서버에 연결할 수 없습니다. 서비스가 다운되었거나 인터넷 연결이 온라인 상태인지 확인해야 할 수 있습니다.",
"DialogProfileInvalidProfileErrorMessage": "{0} 프로파일은 현재 입력 구성 시스템과 호환되지 않습니다.", "DialogProfileInvalidProfileErrorMessage": "{0} 프로은 현재 입력 구성 시스템과 호환되지 않습니다.",
"DialogProfileDefaultProfileOverwriteErrorMessage": "기본 프로파일을 덮어쓸 수 없음", "DialogProfileDefaultProfileOverwriteErrorMessage": "기본 프로을 덮어쓸 수 없음",
"DialogProfileDeleteProfileTitle": "프로파일 삭제", "DialogProfileDeleteProfileTitle": "프로 삭제",
"DialogProfileDeleteProfileMessage": "이 작업은 되돌릴 수 없습니다. 계속하겠습니까?", "DialogProfileDeleteProfileMessage": "이 작업은 되돌릴 수 없습니다. 계속하겠습니까?",
"DialogWarning": "경고", "DialogWarning": "경고",
"DialogPPTCDeletionMessage": "다음에 부팅할 때 PPTC 재구축을 대기시키려고 합니다:\n\n{0}\n\n계속하겠습니까?", "DialogPPTCDeletionMessage": "다음 부팅 시, PPTC 재구축을 대기열에 추가 :\n\n{0}\n\n계속하겠습니까?",
"DialogPPTCDeletionErrorMessage": "{0}에서 PPTC 캐시 삭제 오류: {1}", "DialogPPTCDeletionErrorMessage": "{0}에서 PPTC 캐시 삭제 오류 : {1}",
"DialogShaderDeletionMessage": "다음에 대한 셰이더 캐시를 삭제하려고 합니다:\n\n{0}\n\n계속하겠습니까?", "DialogShaderDeletionMessage": "다음에 대한 셰이더 캐시 삭제 :\n\n{0}\n\n계속하겠습니까?",
"DialogShaderDeletionErrorMessage": "{0}에서 셰이더 캐시 제거 오류: {1}", "DialogShaderDeletionErrorMessage": "{0}에서 셰이더 캐시 제거 오류 : {1}",
"DialogRyujinxErrorMessage": "Ryujinx에 오류 발생", "DialogRyujinxErrorMessage": "Ryujinx에 오류 발생",
"DialogInvalidTitleIdErrorMessage": "UI 오류: 선택한 게임에 유효한 타이틀 ID가 없음", "DialogInvalidTitleIdErrorMessage": "UI 오류 : 선택한 게임에 유효한 타이틀 ID가 없음",
"DialogFirmwareInstallerFirmwareNotFoundErrorMessage": "{0}에서 유효한 시스템 펌웨어를 찾을 수 없습니다.", "DialogFirmwareInstallerFirmwareNotFoundErrorMessage": "{0}에서 유효한 시스템 펌웨어를 찾을 수 없습니다.",
"DialogFirmwareInstallerFirmwareInstallTitle": "펌웨어 {0} 설치", "DialogFirmwareInstallerFirmwareInstallTitle": "펌웨어 {0} 설치",
"DialogFirmwareInstallerFirmwareInstallMessage": "시스템 버전 {0}이(가) 설치됩니다.", "DialogFirmwareInstallerFirmwareInstallMessage": "시스템 버전 {0}이(가) 설치됩니다.",
@ -368,39 +380,42 @@
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "시스템 버전 {0}이(가) 성공적으로 설치되었습니다.", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "시스템 버전 {0}이(가) 성공적으로 설치되었습니다.",
"DialogUserProfileDeletionWarningMessage": "선택한 프로파일이 삭제되면 사용 가능한 다른 프로파일이 없음", "DialogUserProfileDeletionWarningMessage": "선택한 프로파일이 삭제되면 사용 가능한 다른 프로파일이 없음",
"DialogUserProfileDeletionConfirmMessage": "선택한 프로파일을 삭제하겠습니까?", "DialogUserProfileDeletionConfirmMessage": "선택한 프로파일을 삭제하겠습니까?",
"DialogUserProfileUnsavedChangesTitle": "경고 - 변경사항 저장되지 않음",
"DialogUserProfileUnsavedChangesMessage": "저장되지 않은 사용자 프로파일을 수정했습니다.",
"DialogUserProfileUnsavedChangesSubMessage": "변경사항을 저장하지 않으시겠습니까?",
"DialogControllerSettingsModifiedConfirmMessage": "현재 컨트롤러 설정이 업데이트되었습니다.", "DialogControllerSettingsModifiedConfirmMessage": "현재 컨트롤러 설정이 업데이트되었습니다.",
"DialogControllerSettingsModifiedConfirmSubMessage": "저장하겠습니까?", "DialogControllerSettingsModifiedConfirmSubMessage": "저장하겠습니까?",
"DialogLoadNcaErrorMessage": "{0}입니다. 오류 발생 파일: {1}", "DialogLoadNcaErrorMessage": "{0}. 오류 발생 파일 : {1}",
"DialogDlcNoDlcErrorMessage": "지정된 파일에 선택한 타이틀에 대한 DLC가 포함되어 있지 않습니다!", "DialogDlcNoDlcErrorMessage": "지정된 파일에 선택한 타이틀에 대한 DLC가 포함되어 있지 않습니다!",
"DialogPerformanceCheckLoggingEnabledMessage": "개발자만 사용하도록 설계된 추적 로이 활성화되어 있습니다.", "DialogPerformanceCheckLoggingEnabledMessage": "개발자만 사용하도록 설계된 추적 로그 기록이 활성화되어 있습니다.",
"DialogPerformanceCheckLoggingEnabledConfirmMessage": "최적의 성능을 위해 추적 로깅을 비활성화하는 것이 좋습니다. 지금 추적 로깅을 비활성화하겠습니까?", "DialogPerformanceCheckLoggingEnabledConfirmMessage": "최적의 성능을 위해 추적 로그 생성을 비활성화하는 것이 좋습니다. 지금 추적 로그 기록을 비활성화하겠습니까?",
"DialogPerformanceCheckShaderDumpEnabledMessage": "개발자만 사용하도록 설계된 셰이더 덤프를 활성화했습니다.", "DialogPerformanceCheckShaderDumpEnabledMessage": "개발자만 사용하도록 설계된 셰이더 덤프를 활성화했습니다.",
"DialogPerformanceCheckShaderDumpEnabledConfirmMessage": "최적의 성능을 위해 세이더 덤핑을 비활성화하는 것이 좋습니다. 지금 세이더 덤핑을 비활성화하겠습니까?", "DialogPerformanceCheckShaderDumpEnabledConfirmMessage": "최적의 성능을 위해 세이더 덤핑을 비활성화하는 것이 좋습니다. 지금 세이더 덤핑을 비활성화하겠습니까?",
"DialogLoadAppGameAlreadyLoadedMessage": "게임을 이미 불러 왔습니다.", "DialogLoadAppGameAlreadyLoadedMessage": "이미 게임 불러옴",
"DialogLoadAppGameAlreadyLoadedSubMessage": "다른 게임을 시작하기 전에 에뮬레이션을 중지하거나 에뮬레이터를 닫으세요.", "DialogLoadAppGameAlreadyLoadedSubMessage": "다른 게임을 시작하기 전에 에뮬레이션을 중지하거나 에뮬레이터를 닫으세요.",
"DialogUpdateAddUpdateErrorMessage": "지정된 파일에 선택한 제목에 대한 업데이트가 포함되어 있지 않습니다!", "DialogUpdateAddUpdateErrorMessage": "지정된 파일에 선택한 제목에 대한 업데이트가 포함되어 있지 않습니다!",
"DialogSettingsBackendThreadingWarningTitle": "경고 - 백엔드 스레딩", "DialogSettingsBackendThreadingWarningTitle": "경고 - 후단부 스레딩",
"DialogSettingsBackendThreadingWarningMessage": "변경 사항을 완전히 적용하려면 이 옵션을 변경한 후 Ryujinx를 다시 시작해야 합니다. 플랫폼에 따라 Ryujinx를 사용할 때 드라이버 자체의 멀티스레딩을 수동으로 비활성화해야 할 수도 있습니다.", "DialogSettingsBackendThreadingWarningMessage": "변경 사항을 완전히 적용하려면 이 옵션을 변경한 후, Ryujinx를 다시 시작해야 합니다. 플랫폼에 따라 Ryujinx를 사용할 때 드라이버 자체의 멀티스레딩을 수동으로 비활성화해야 할 수도 있습니다.",
"SettingsTabGraphicsFeaturesOptions": "기능", "SettingsTabGraphicsFeaturesOptions": "기능",
"SettingsTabGraphicsBackendMultithreading": "그래픽 백엔드 멀티스레딩:", "SettingsTabGraphicsBackendMultithreading": "그래픽 후단부 멀티스레딩 :",
"CommonAuto": "자동", "CommonAuto": "자동",
"CommonOff": "끔", "CommonOff": "끔",
"CommonOn": "켬", "CommonOn": "켬",
"InputDialogYes": "", "InputDialogYes": "",
"InputDialogNo": "아니오", "InputDialogNo": "아니오",
"DialogProfileInvalidProfileNameErrorMessage": "파일 이름에 잘못된 문자가 포함되어 있습니다. 다시 시도하세요.", "DialogProfileInvalidProfileNameErrorMessage": "파일 이름에 잘못된 문자가 포함되어 있습니다. 다시 시도하세요.",
"MenuBarOptionsPauseEmulation": "일시 정지", "MenuBarOptionsPauseEmulation": "일시 정지",
"MenuBarOptionsResumeEmulation": "다시 시작", "MenuBarOptionsResumeEmulation": "다시 시작",
"AboutUrlTooltipMessage": "기본 브라우저에서 Ryujinx 웹사이트를 열려면 클릭하세요.", "AboutUrlTooltipMessage": "기본 브라우저에서 Ryujinx 웹사이트를 열려면 클릭하세요.",
"AboutDisclaimerMessage": "Ryujinx는 닌텐도™,\n또는 그 파트너와 제휴하지 않습니다.", "AboutDisclaimerMessage": "Ryujinx는 닌텐도™,\n또는 그 파트너와 제휴한 바가 없습니다.",
"AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com)는\nAmiibo 에뮬레이션에 사용됩니다.", "AboutAmiiboDisclaimerMessage": "AmiiboAPI (www.amiiboapi.com)는\nAmiibo 에뮬레이션에 사용됩니다.",
"AboutPatreonUrlTooltipMessage": "기본 브라우저에서 Ryujinx Patreon 페이지를 열려면 클릭하세요.", "AboutPatreonUrlTooltipMessage": "기본 브라우저에서 Ryujinx Patreon 페이지를 열려면 클릭하세요.",
"AboutGithubUrlTooltipMessage": "기본 브라우저에서 Ryujinx GitHub 페이지를 열려면 클릭하세요.", "AboutGithubUrlTooltipMessage": "기본 브라우저에서 Ryujinx GitHub 페이지를 열려면 클릭하세요.",
"AboutDiscordUrlTooltipMessage": "기본 브라우저에서 Ryujinx 디스코드 서버에 대한 초대를 열려면 클릭하세요.", "AboutDiscordUrlTooltipMessage": "기본 브라우저에서 Ryujinx 디스코드 서버에 대한 초대를 열려면 클릭하세요.",
"AboutTwitterUrlTooltipMessage": "기본 브라우저에서 Ryujinx 트위터 페이지를 열려면 클릭하세요.", "AboutTwitterUrlTooltipMessage": "기본 브라우저에서 Ryujinx 트위터 페이지를 열려면 클릭하세요.",
"AboutRyujinxAboutTitle": "정보:", "AboutRyujinxAboutTitle": "정보 :",
"AboutRyujinxAboutContent": "Ryujinx는 닌텐도 스위치™용 에뮬레이터입니다.\nPatreon에서 지원해 주세요.\n모든 최신 뉴스는 트위터 또는 디스코드에서 확인하세요.\n기여에 관심이 있는 개발자는 GitHub 또는 디스코드에서 자세한 내용을 확인할 수 있습니다", "AboutRyujinxAboutContent": "Ryujinx는 닌텐도 스위치™용 에뮬레이터입니다.\nPatreon에서 지원해 주세요.\n트위터나 디스코드에서 최신 소식을 받아보세요.\n기여에 참여하고자 하는 개발자는 GitHub 또는 디스코드에서 자세한 내용을 확인할 수 있습니다.",
"AboutRyujinxMaintainersTitle": "유지 관리:", "AboutRyujinxMaintainersTitle": "유지 관리 :",
"AboutRyujinxMaintainersContentTooltipMessage": "기본 브라우저에서 기여자 페이지를 열려면 클릭하세요.", "AboutRyujinxMaintainersContentTooltipMessage": "기본 브라우저에서 기여자 페이지를 열려면 클릭하세요.",
"AboutRyujinxSupprtersTitle": "Patreon에서 후원:", "AboutRyujinxSupprtersTitle": "Patreon에서 후원:",
"AmiiboSeriesLabel": "Amiibo 시리즈", "AmiiboSeriesLabel": "Amiibo 시리즈",
@ -416,6 +431,7 @@
"DlcManagerEnableAllButton": "모두 활성화", "DlcManagerEnableAllButton": "모두 활성화",
"DlcManagerDisableAllButton": "모두 비활성화", "DlcManagerDisableAllButton": "모두 비활성화",
"MenuBarOptionsChangeLanguage": "언어 변경", "MenuBarOptionsChangeLanguage": "언어 변경",
"MenuBarShowFileTypes": "파일 유형 표시",
"CommonSort": "정렬", "CommonSort": "정렬",
"CommonShowNames": "이름 표시", "CommonShowNames": "이름 표시",
"CommonFavorite": "즐겨찾기", "CommonFavorite": "즐겨찾기",
@ -424,13 +440,13 @@
"SettingsTabGraphicsFeatures": "기능ㆍ개선 사항", "SettingsTabGraphicsFeatures": "기능ㆍ개선 사항",
"ErrorWindowTitle": "오류 창", "ErrorWindowTitle": "오류 창",
"ToggleDiscordTooltip": "\"현재 재생 중인\" 디스코드 활동에 Ryujinx를 표시할지 여부 선택", "ToggleDiscordTooltip": "\"현재 재생 중인\" 디스코드 활동에 Ryujinx를 표시할지 여부 선택",
"AddGameDirBoxTooltip": "목록에 추가할 게임 디렉리 입력", "AddGameDirBoxTooltip": "목록에 추가할 게임 디렉리 입력",
"AddGameDirTooltip": "목록에 게임 디렉리 추가", "AddGameDirTooltip": "목록에 게임 디렉리 추가",
"RemoveGameDirTooltip": "선택한 게임 디렉리 제거", "RemoveGameDirTooltip": "선택한 게임 디렉리 제거",
"CustomThemeCheckTooltip": "GUI에 사용자 지정 Avalonia 테마를 사용하여 에뮬레이터 메뉴의 모양 변경", "CustomThemeCheckTooltip": "GUI에 사용자 지정 Avalonia 테마를 사용하여 에뮬레이터 메뉴의 모양 변경",
"CustomThemePathTooltip": "사용자 정의 GUI 테마 경로", "CustomThemePathTooltip": "사용자 정의 GUI 테마 경로",
"CustomThemeBrowseTooltip": "사용자 정의 GUI 테마 찾아보기", "CustomThemeBrowseTooltip": "사용자 정의 GUI 테마 찾아보기",
"DockModeToggleTooltip": "도킹 모드에서는 에뮬레이트된 시스템이 도킹된 닌텐도 스위치처럼 작동합니다. 이것은 대부분의 게임에서 그래픽 충실도를 향상시킵니다. 반대로 이 기능을 비활성화하면 에뮬레이트된 시스템이 휴대용 닌텐도 스위치처럼 작동하여 그래픽 품질이 저하됩니다.\n\n도킹 모드를 사용하려는 경우 플레이어 1 컨트롤을 구성하세요. 휴대용 모드를 사용하려는 경우 휴대용 컨트롤을 구성합니다.\n\n확실하지 않으면 켜 두세요.", "DockModeToggleTooltip": " 모드에서는 에뮬레이트된 시스템이 도킹된 닌텐도 스위치처럼 작동합니다. 이것은 대부분의 게임에서 그래픽 품질을 향상시킵니다. 반대로 이 기능을 비활성화하면 에뮬레이트된 시스템이 휴대용 닌텐도 스위치처럼 작동하여 그래픽 품질이 저하됩니다.\n\n독 모드를 사용하려는 경우 플레이어 1의 컨트롤을 구성하세요. 휴대 모드를 사용하려는 경우 휴대용 컨트롤을 구성하세요.\n\n확실하지 않으면 켜 두세요.",
"DirectKeyboardTooltip": "직접 키보드 접속 (HID) 지원합니다. 텍스트 입력 장치로 키보드에 대한 게임 접속을 제공합니다.", "DirectKeyboardTooltip": "직접 키보드 접속 (HID) 지원합니다. 텍스트 입력 장치로 키보드에 대한 게임 접속을 제공합니다.",
"DirectMouseTooltip": "직접 마우스 접속 (HID) 지원합니다. 포인팅 장치로 마우스에 대한 게임 접속을 제공합니다.", "DirectMouseTooltip": "직접 마우스 접속 (HID) 지원합니다. 포인팅 장치로 마우스에 대한 게임 접속을 제공합니다.",
"RegionTooltip": "시스템 지역 변경", "RegionTooltip": "시스템 지역 변경",
@ -441,10 +457,11 @@
"PptcToggleTooltip": "게임이 불러올 때마다 번역할 필요가 없도록 번역된 JIT 기능을 저장합니다.\n\n게임을 처음 부팅한 후 끊김 현상을 줄이고 부팅 시간을 크게 단축합니다.\n\n확실하지 않으면 켜 두세요.", "PptcToggleTooltip": "게임이 불러올 때마다 번역할 필요가 없도록 번역된 JIT 기능을 저장합니다.\n\n게임을 처음 부팅한 후 끊김 현상을 줄이고 부팅 시간을 크게 단축합니다.\n\n확실하지 않으면 켜 두세요.",
"FsIntegrityToggleTooltip": "게임을 부팅할 때 손상된 파일을 확인하고 손상된 파일이 감지되면 로그에 해시 오류를 표시합니다.\n\n성능에 영향을 미치지 않으며 문제 해결에 도움이 됩니다.\n\n확실하지 않으면 켜 두세요.", "FsIntegrityToggleTooltip": "게임을 부팅할 때 손상된 파일을 확인하고 손상된 파일이 감지되면 로그에 해시 오류를 표시합니다.\n\n성능에 영향을 미치지 않으며 문제 해결에 도움이 됩니다.\n\n확실하지 않으면 켜 두세요.",
"AudioBackendTooltip": "오디오를 렌더링하는 데 사용되는 백엔드를 변경합니다.\n\nSDL2가 선호되는 반면 OpenAL 및 사운드IO는 폴백으로 사용됩니다. 더미는 소리가 나지 않습니다.\n\n확실하지 않으면 SDL2로 설정하세요.", "AudioBackendTooltip": "오디오를 렌더링하는 데 사용되는 백엔드를 변경합니다.\n\nSDL2가 선호되는 반면 OpenAL 및 사운드IO는 폴백으로 사용됩니다. 더미는 소리가 나지 않습니다.\n\n확실하지 않으면 SDL2로 설정하세요.",
"MemoryManagerTooltip": "게스트 메모리가 매핑되고 접속되는 방식을 변경합니다. 에뮬레이트된 CPU 성능에 크게 영향을 미칩니다.\n\n확실하지 않은 경우 호스트 확인 안함으로 설정하십시오.", "MemoryManagerTooltip": "게스트 메모리가 매핑되고 접속되는 방식을 변경합니다. 에뮬레이트된 CPU 성능에 크게 영향을 미칩니다.\n\n확실하지 않은 경우 호스트 확인 안함으로 설정하세요.",
"MemoryManagerSoftwareTooltip": "주소 변환을 위해 소프트웨어 페이지 테이블을 사용하세요. 정확도는 가장 높지만 성능은 가장 느립니다.", "MemoryManagerSoftwareTooltip": "주소 변환을 위해 소프트웨어 페이지 테이블을 사용하세요. 정확도는 가장 높지만 성능은 가장 느립니다.",
"MemoryManagerHostTooltip": "호스트 주소 공간의 메모리를 직접 매핑합니다. 훨씬 빠른 JIT 컴파일 및 실행합니다.", "MemoryManagerHostTooltip": "호스트 주소 공간의 메모리를 직접 매핑합니다. 훨씬 빠른 JIT 컴파일 및 실행합니다.",
"MemoryManagerUnsafeTooltip": "메모리를 직접 매핑하지만 접속하기 전에 게스트 주소 공간 내의 주소를 마스킹하지 마십시오. 더 빠르지만 안전을 희생해야 합니다. 게스트 응용 프로그램은 Ryujinx의 어디에서나 메모리에 접속할 수 있으므로 이 모드에서는 신뢰할 수 있는 프로그램만 실행하세요.", "MemoryManagerUnsafeTooltip": "메모리를 직접 매핑하지만 접속하기 전에 게스트 주소 공간 내의 주소를 마스킹하지 마십시오. 더 빠르지만 안전을 희생해야 합니다. 게스트 응용 프로그램은 Ryujinx의 어디에서나 메모리에 접속할 수 있으므로 이 모드에서는 신뢰할 수 있는 프로그램만 실행하세요.",
"UseHypervisorTooltip": "JIT 대신 하이퍼바이저를 사용합니다. 하이퍼바이저를 사용할 수 있을 때 성능을 향상시키지만, 현재 상태에서는 불안정할 수 있습니다.",
"DRamTooltip": "대체 메모리모드 레이아웃을 활용하여 스위치 개발 모델을 모방합니다.\n\n고해상도 텍스처 팩 또는 4k 해상도 모드에만 유용합니다. 성능을 향상시키지 않습니다.\n\n확실하지 않으면 꺼 두세요.", "DRamTooltip": "대체 메모리모드 레이아웃을 활용하여 스위치 개발 모델을 모방합니다.\n\n고해상도 텍스처 팩 또는 4k 해상도 모드에만 유용합니다. 성능을 향상시키지 않습니다.\n\n확실하지 않으면 꺼 두세요.",
"IgnoreMissingServicesTooltip": "구현되지 않은 호라이즌 OS 서비스를 무시합니다. 이것은 특정 게임을 부팅할 때 충돌을 우회하는 데 도움이 될 수 있습니다.\n\n확실하지 않으면 꺼 두세요.", "IgnoreMissingServicesTooltip": "구현되지 않은 호라이즌 OS 서비스를 무시합니다. 이것은 특정 게임을 부팅할 때 충돌을 우회하는 데 도움이 될 수 있습니다.\n\n확실하지 않으면 꺼 두세요.",
"GraphicsBackendThreadingTooltip": "두 번째 스레드에서 그래픽 백엔드 명령을 실행합니다.\n\n세이더 컴파일 속도를 높이고 끊김 현상을 줄이며 자체 멀티스레딩 지원 없이 GPU 드라이버의 성능을 향상시킵니다. 멀티스레딩이 있는 드라이버에서 성능이 약간 향상되었습니다.\n\n잘 모르겠으면 자동으로 설정하세요.", "GraphicsBackendThreadingTooltip": "두 번째 스레드에서 그래픽 백엔드 명령을 실행합니다.\n\n세이더 컴파일 속도를 높이고 끊김 현상을 줄이며 자체 멀티스레딩 지원 없이 GPU 드라이버의 성능을 향상시킵니다. 멀티스레딩이 있는 드라이버에서 성능이 약간 향상되었습니다.\n\n잘 모르겠으면 자동으로 설정하세요.",
@ -452,7 +469,7 @@
"ShaderCacheToggleTooltip": "후속 실행에서 끊김 현상을 줄이는 디스크 세이더 캐시를 저장합니다.\n\n확실하지 않으면 켜 두세요.", "ShaderCacheToggleTooltip": "후속 실행에서 끊김 현상을 줄이는 디스크 세이더 캐시를 저장합니다.\n\n확실하지 않으면 켜 두세요.",
"ResolutionScaleTooltip": "적용 가능한 렌더 타겟에 적용된 해상도 스케일", "ResolutionScaleTooltip": "적용 가능한 렌더 타겟에 적용된 해상도 스케일",
"ResolutionScaleEntryTooltip": "1.5와 같은 부동 소수점 분해능 스케일입니다. 비통합 척도는 문제나 충돌을 일으킬 가능성이 더 큽니다.", "ResolutionScaleEntryTooltip": "1.5와 같은 부동 소수점 분해능 스케일입니다. 비통합 척도는 문제나 충돌을 일으킬 가능성이 더 큽니다.",
"AnisotropyTooltip": "방성 필터링 수준 (게임에서 요청한 값을 사용하려면 자동으로 설정)", "AnisotropyTooltip": "비등방성 필터링 수준 (게임에서 요청한 값을 사용하려면 자동으로 설정)",
"AspectRatioTooltip": "렌더러 창에 적용된 화면비입니다.", "AspectRatioTooltip": "렌더러 창에 적용된 화면비입니다.",
"ShaderDumpPathTooltip": "그래픽 셰이더 덤프 경로", "ShaderDumpPathTooltip": "그래픽 셰이더 덤프 경로",
"FileLogTooltip": "디스크의 로그 파일에 콘솔 로깅을 저장합니다. 성능에 영향을 미치지 않습니다.", "FileLogTooltip": "디스크의 로그 파일에 콘솔 로깅을 저장합니다. 성능에 영향을 미치지 않습니다.",
@ -468,7 +485,7 @@
"OpenGlLogLevel": "적절한 로그 수준을 활성화해야 함", "OpenGlLogLevel": "적절한 로그 수준을 활성화해야 함",
"DebugLogTooltip": "콘솔에 디버그 로그 메시지를 인쇄합니다.\n\n로그를 읽기 어렵게 만들고 에뮬레이터 성능을 악화시키므로 직원이 구체적으로 지시한 경우에만 사용하세요.", "DebugLogTooltip": "콘솔에 디버그 로그 메시지를 인쇄합니다.\n\n로그를 읽기 어렵게 만들고 에뮬레이터 성능을 악화시키므로 직원이 구체적으로 지시한 경우에만 사용하세요.",
"LoadApplicationFileTooltip": "파일 탐색기를 열어 불러올 스위치 호환 파일 선택", "LoadApplicationFileTooltip": "파일 탐색기를 열어 불러올 스위치 호환 파일 선택",
"LoadApplicationFolderTooltip": "파일 탐색기를 열어 불러올 스위치 호환 압축 해제 애플리케이션 선택", "LoadApplicationFolderTooltip": "파일 탐색기를 열어 불러올 스위치 호환 압축 해제 응용 프로그램 선택",
"OpenRyujinxFolderTooltip": "Ryujinx 파일 시스템 폴더 열기", "OpenRyujinxFolderTooltip": "Ryujinx 파일 시스템 폴더 열기",
"OpenRyujinxLogsTooltip": "로그가 기록된 폴더 열기", "OpenRyujinxLogsTooltip": "로그가 기록된 폴더 열기",
"ExitTooltip": "Ryujinx 종료", "ExitTooltip": "Ryujinx 종료",
@ -478,16 +495,16 @@
"CheckUpdatesTooltip": "Ryujinx 업데이트 확인", "CheckUpdatesTooltip": "Ryujinx 업데이트 확인",
"OpenAboutTooltip": "정보 창 열기", "OpenAboutTooltip": "정보 창 열기",
"GridSize": "격자 크기", "GridSize": "격자 크기",
"GridSizeTooltip": "격자 항목의 크기 변경\n", "GridSizeTooltip": "격자 항목의 크기 변경",
"SettingsTabSystemSystemLanguageBrazilianPortuguese": "포르투갈어 (브라질)", "SettingsTabSystemSystemLanguageBrazilianPortuguese": "포르투갈어(브라질)",
"AboutRyujinxContributorsButtonHeader": "모든 기여자 보기", "AboutRyujinxContributorsButtonHeader": "모든 기여자 보기",
"SettingsTabSystemAudioVolume": "볼륨 : ", "SettingsTabSystemAudioVolume": "음량 : ",
"AudioVolumeTooltip": "오디오 볼륨 변경", "AudioVolumeTooltip": "음향 음량 변경",
"SettingsTabSystemEnableInternetAccess": "게스트 인터넷 접속/LAN 모드", "SettingsTabSystemEnableInternetAccess": "게스트 인터넷 접속/LAN 모드",
"EnableInternetAccessTooltip": "에뮬레이션된 애플리케이션이 인터넷에 연결되도록 허용합니다.\n\nLAN 모드가 있는 게임은 이 모드가 활성화되고 시스템이 동일한 접속 포인트에 연결된 경우 서로 연결할 수 있습니다. 여기에는 실제 콘솔도 포함됩니다.\n\n닌텐도 서버에 연결할 수 없습니다. 인터넷에 연결을 시도하는 특정 게임에서 충돌이 발생할 수 있습니다.\n\n확실하지 않으면 꺼두세요.", "EnableInternetAccessTooltip": "에뮬레이션된 응용프로그램이 인터넷에 연결되도록 허용합니다.\n\nLAN 모드가 있는 게임은 이 모드가 활성화되고 시스템이 동일한 접속 포인트에 연결된 경우 서로 연결할 수 있습니다. 여기에는 실제 콘솔도 포함됩니다.\n\n닌텐도 서버에 연결할 수 없습니다. 인터넷에 연결을 시도하는 특정 게임에서 충돌이 발생할 수 있습니다.\n\n확실하지 않으면 꺼두세요.",
"GameListContextMenuManageCheatToolTip": "치트 관리", "GameListContextMenuManageCheatToolTip": "치트 관리",
"GameListContextMenuManageCheat": "치트 관리", "GameListContextMenuManageCheat": "치트 관리",
"ControllerSettingsStickRange": "범위:", "ControllerSettingsStickRange": "범위 :",
"DialogStopEmulationTitle": "Ryujinx - 에뮬레이션 중지", "DialogStopEmulationTitle": "Ryujinx - 에뮬레이션 중지",
"DialogStopEmulationMessage": "에뮬레이션을 중지하겠습니까?", "DialogStopEmulationMessage": "에뮬레이션을 중지하겠습니까?",
"SettingsTabCpu": "CPU", "SettingsTabCpu": "CPU",
@ -495,11 +512,11 @@
"SettingsTabNetwork": "네트워크", "SettingsTabNetwork": "네트워크",
"SettingsTabNetworkConnection": "네트워크 연결", "SettingsTabNetworkConnection": "네트워크 연결",
"SettingsTabCpuCache": "CPU 캐시", "SettingsTabCpuCache": "CPU 캐시",
"SettingsTabCpuMemory": "CPU 메모리", "SettingsTabCpuMemory": "CPU 모드",
"DialogUpdaterFlatpakNotSupportedMessage": "FlatHub를 통해 Ryujinx를 업데이트하세요.", "DialogUpdaterFlatpakNotSupportedMessage": "FlatHub를 통해 Ryujinx를 업데이트하세요.",
"UpdaterDisabledWarningTitle": "업데이터 비활성화입니다!", "UpdaterDisabledWarningTitle": "업데이터 비활성화입니다!",
"GameListContextMenuOpenSdModsDirectory": "엣모스피어 Mod 디렉토리 열기", "GameListContextMenuOpenSdModsDirectory": "분위기 모드 디렉터리 열기",
"GameListContextMenuOpenSdModsDirectoryToolTip": "응용 프로그램의 모드가 포함된 대체 SD 카드 Atmosphere 디렉토리를 엽니다. 실제 하드웨어용으로 패키징된 모드에 유용합니다.\n", "GameListContextMenuOpenSdModsDirectoryToolTip": "응용프로그램의 모드가 포함된 대체 SD 카드 분위기 디렉터리를 엽니다. 실제 하드웨어용으로 패키징된 모드에 유용합니다.",
"ControllerSettingsRotate90": "시계 방향으로 90° 회전", "ControllerSettingsRotate90": "시계 방향으로 90° 회전",
"IconSize": "아이콘 크기", "IconSize": "아이콘 크기",
"IconSizeTooltip": "게임 아이콘 크기 변경", "IconSizeTooltip": "게임 아이콘 크기 변경",
@ -513,25 +530,28 @@
"UserErrorUndefined": "정의되지 않은 오류", "UserErrorUndefined": "정의되지 않은 오류",
"UserErrorNoKeysDescription": "Ryujinx가 'prod.keys' 파일을 찾을 수 없음", "UserErrorNoKeysDescription": "Ryujinx가 'prod.keys' 파일을 찾을 수 없음",
"UserErrorNoFirmwareDescription": "Ryujinx가 설치된 펌웨어를 찾을 수 없음", "UserErrorNoFirmwareDescription": "Ryujinx가 설치된 펌웨어를 찾을 수 없음",
"UserErrorFirmwareParsingFailedDescription": "Ryujinx가 제공된 펌웨어를 구문 분석할 수 없습니다. 일반적으로 오래된 키가 원인입니다.\n", "UserErrorFirmwareParsingFailedDescription": "Ryujinx가 제공된 펌웨어를 구문 분석할 수 없습니다. 일반적으로 오래된 키가 원인입니다.",
"UserErrorApplicationNotFoundDescription": "Ryujinx가 지정된 경로에서 유효한 응용 프로그램을 찾을 수 없습니다.\n", "UserErrorApplicationNotFoundDescription": "Ryujinx가 지정된 경로에서 유효한 응용 프로그램을 찾을 수 없습니다.",
"UserErrorUnknownDescription": "알 수 없는 오류가 발생했습니다!\n", "UserErrorUnknownDescription": "알 수 없는 오류가 발생했습니다!",
"UserErrorUndefinedDescription": "정의되지 않은 오류가 발생했습니다! 이런 일이 발생하면 안 되므로, 개발자에게 문의하세요!\n", "UserErrorUndefinedDescription": "정의되지 않은 오류가 발생했습니다! 이런 일이 발생하면 안 되므로, 개발자에게 문의하세요!",
"OpenSetupGuideMessage": "설정 가이드 열기", "OpenSetupGuideMessage": "설정 가이드 열기",
"NoUpdate": "업데이트 없음", "NoUpdate": "업데이트 없음",
"TitleUpdateVersionLabel": "버전 {0} - {1}", "TitleUpdateVersionLabel": "버전 {0}",
"RyujinxInfo": "Ryujinx - 정보", "RyujinxInfo": "Ryujinx - 정보",
"RyujinxConfirm": "Ryujinx - 확인", "RyujinxConfirm": "Ryujinx - 확인",
"FileDialogAllTypes": "모든 유형", "FileDialogAllTypes": "모든 유형",
"Never": "절대 안 함", "Never": "절대 안 함",
"SwkbdMinCharacters": "{0} 자 이상이어야 함", "SwkbdMinCharacters": "{0}자 이상이어야 함",
"SwkbdMinRangeCharacters": "{0}-{1} 자여야 함", "SwkbdMinRangeCharacters": "{0}-{1}자여야 함",
"SoftwareKeyboard": "소프트웨어 키보드", "SoftwareKeyboard": "소프트웨어 키보드",
"DialogControllerAppletMessagePlayerRange": "응용 프로그램은 다음을 사용하여 {0} 플레이어를 요청합니다:\n\n유형: {1}\n\n플레이어: {2}\n\n{3} 지금 설정을 열고 입력을 재구성하거나 닫기를 누르세요.\n", "SoftwareKeyboardModeNumbersOnly": "숫자만 가능",
"DialogControllerAppletMessage": "애플리케이션은 다음을 사용하여 정확히 {0}명의 플레이어를 요청합니다:\n\n유형: {1}\n\n플레이어: {2}\n\n{3} 지금 설정을 열고 입력을 재구성하거나 닫기를 누르세요.\n", "SoftwareKeyboardModeAlphabet": "한중일 문자가 아닌 문자만 가능",
"DialogControllerAppletDockModeSet": "도킹 모드가 설정되었습니다. 휴대용도 유효하지 않습니다.\n\n\n", "SoftwareKeyboardModeASCII": "ASCII 텍스트만 가능",
"DialogControllerAppletMessagePlayerRange": "응용 프로그램은 다음을 사용하는 {0} 명의 플레이어를 요청합니다:\n\n유형: {1}\n\n플레이어: {2}\n\n{3} 지금 설정을 열고 입력을 재구성하거나 닫기를 누르세요.\n",
"DialogControllerAppletMessage": "응용 프로그램은 다음을 사용하는 정확히 {0}명의 플레이어를 요청합니다:\n\n유형: {1}\n\n플레이어: {2}\n\n{3} 지금 설정을 열고 입력을 재구성하거나 닫기를 누르세요.\n",
"DialogControllerAppletDockModeSet": "독 모드가 설정되었습니다. 휴대 모드도 유효하지 않습니다.",
"UpdaterRenaming": "이전 파일 이름 바꾸는 중...", "UpdaterRenaming": "이전 파일 이름 바꾸는 중...",
"UpdaterRenameFailed": "업데이터가 파일 이름을 바꿀 수 없습니다: {0}", "UpdaterRenameFailed": "업데이터가 파일 이름을 바꿀 수 없: {0}",
"UpdaterAddingFiles": "새로운 파일을 추가하는 중...", "UpdaterAddingFiles": "새로운 파일을 추가하는 중...",
"UpdaterExtracting": "업데이트를 추출하는 중...", "UpdaterExtracting": "업데이트를 추출하는 중...",
"UpdaterDownloading": "업데이트 다운로드 중...", "UpdaterDownloading": "업데이트 다운로드 중...",
@ -543,7 +563,7 @@
"ApiError": "API 오류입니다.", "ApiError": "API 오류입니다.",
"LoadingHeading": "{0} 로딩 중", "LoadingHeading": "{0} 로딩 중",
"CompilingPPTC": "PTC 컴파일 중", "CompilingPPTC": "PTC 컴파일 중",
"CompilingShaders": "세이더 컴파일", "CompilingShaders": "셰이더 컴파일 중",
"AllKeyboards": "모든 키보드", "AllKeyboards": "모든 키보드",
"OpenFileDialogTitle": "지원되는 파일을 선택", "OpenFileDialogTitle": "지원되는 파일을 선택",
"OpenFolderDialogTitle": "압축을 푼 게임이 있는 폴더 선택", "OpenFolderDialogTitle": "압축을 푼 게임이 있는 폴더 선택",
@ -551,11 +571,11 @@
"RyujinxUpdater": "Ryujinx 업데이터", "RyujinxUpdater": "Ryujinx 업데이터",
"SettingsTabHotkeys": "키보드 단축키", "SettingsTabHotkeys": "키보드 단축키",
"SettingsTabHotkeysHotkeys": "키보드 단축키", "SettingsTabHotkeysHotkeys": "키보드 단축키",
"SettingsTabHotkeysToggleVsyncHotkey": "수직 동기화 전환:", "SettingsTabHotkeysToggleVsyncHotkey": "수직 동기화 전환 :",
"SettingsTabHotkeysScreenshotHotkey": "스크린샷:", "SettingsTabHotkeysScreenshotHotkey": "스크린샷 :",
"SettingsTabHotkeysShowUiHotkey": "UI 표시:", "SettingsTabHotkeysShowUiHotkey": "UI 표시 :",
"SettingsTabHotkeysPauseHotkey": "일시정지:", "SettingsTabHotkeysPauseHotkey": "일시 중지 :",
"SettingsTabHotkeysToggleMuteHotkey": "음소거:", "SettingsTabHotkeysToggleMuteHotkey": "음 소거 :",
"ControllerMotionTitle": "동작 제어 설정", "ControllerMotionTitle": "동작 제어 설정",
"ControllerRumbleTitle": "진동 설정", "ControllerRumbleTitle": "진동 설정",
"SettingsSelectThemeFileDialogTitle": "테마 파일 선택", "SettingsSelectThemeFileDialogTitle": "테마 파일 선택",
@ -569,46 +589,68 @@
"SelectUpdateDialogTitle": "업데이트 파일 선택", "SelectUpdateDialogTitle": "업데이트 파일 선택",
"UserProfileWindowTitle": "사용자 프로파일 관리자", "UserProfileWindowTitle": "사용자 프로파일 관리자",
"CheatWindowTitle": "치트 관리자", "CheatWindowTitle": "치트 관리자",
"DlcWindowTitle": "다운로드 가능한 콘텐츠 관리", "DlcWindowTitle": "{0} ({1})의 다운로드 가능한 콘텐츠 관리",
"UpdateWindowTitle": "타이틀 업데이트 관리자", "UpdateWindowTitle": "타이틀 업데이트 관리자",
"CheatWindowHeading": "{0} [{1}]에 사용할 수 있는 치트", "CheatWindowHeading": "{0} [{1}]에 사용할 수 있는 치트",
"DlcWindowHeading": "{1} ({2})에 사용할 수 있는 {0} 다운로드 가능한 콘텐츠", "BuildId": "빌드ID :",
"UserProfilesEditProfile": "선택 항목 편집", "DlcWindowHeading": "{0} 내려받기 가능한 콘텐츠",
"UserProfilesEditProfile": "선택된 항목 편집",
"Cancel": "취소", "Cancel": "취소",
"Save": "저장", "Save": "저장",
"Discard": "삭제", "Discard": "삭제",
"UserProfilesSetProfileImage": "프로파일 이미지 설정", "UserProfilesSetProfileImage": "프로파일 이미지 설정",
"UserProfileEmptyNameError": "이름 필요", "UserProfileEmptyNameError": "이름 필요",
"UserProfileNoImageError": "프로파일 이미지를 설정해야 함", "UserProfileNoImageError": "프로파일 이미지를 설정해야 함",
"GameUpdateWindowHeading": "{1} ({2})에 대한 {0} 업데이트 사용 가능", "GameUpdateWindowHeading": "{0} ({1})에 대한 업데이트 관리",
"SettingsTabHotkeysResScaleUpHotkey": "해상도 증가:", "SettingsTabHotkeysResScaleUpHotkey": "해상도 증가 :",
"SettingsTabHotkeysResScaleDownHotkey": "해상도 감소:", "SettingsTabHotkeysResScaleDownHotkey": "해상도 감소 :",
"UserProfilesName": "이름:", "UserProfilesName": "이름 :",
"UserProfilesUserId": "사용자 Id:", "UserProfilesUserId": "사용자 ID :",
"SettingsTabGraphicsBackend": "그래픽 백엔드", "SettingsTabGraphicsBackend": "그래픽 후단부",
"SettingsTabGraphicsBackendTooltip": "사용할 그래픽 백엔드", "SettingsTabGraphicsBackendTooltip": "사용할 그래픽 후단부",
"SettingsEnableTextureRecompression": "텍스처 재압축 활성화", "SettingsEnableTextureRecompression": "텍스처 재압축 활성화",
"SettingsEnableTextureRecompressionTooltip": "VRAM 사용량을 줄이기 위해 특정 텍스처를 압축합니다.\n\n4GiB VRAM 미만의 GPU와 함께 사용하는 것이 좋습니다.\n\n확실하지 않으면 꺼 두세요.", "SettingsEnableTextureRecompressionTooltip": "VRAM 사용량을 줄이기 위해 특정 텍스처를 압축합니다.\n\n4GiB VRAM 미만의 GPU와 함께 사용하는 것이 좋습니다.\n\n확실하지 않으면 꺼 두세요.",
"SettingsTabGraphicsPreferredGpu": "선호하는 GPU", "SettingsTabGraphicsPreferredGpu": "선호하는 GPU",
"SettingsTabGraphicsPreferredGpuTooltip": "Vulkan 그래픽 백엔드와 함께 사용할 그래픽 카드를 선택하세요.\n\nOpenGL이 사용할 GPU에는 영향을 미치지 않습니다.\n\n확실하지 않은 경우 \"dGPU\" 플래그가 지정된 GPU로 설정하세요. 없는 경우, 그대로 두세요.\n", "SettingsTabGraphicsPreferredGpuTooltip": "Vulkan 그래픽 후단부와 함께 사용할 그래픽 카드를 선택하세요.\n\nOpenGL이 사용할 GPU에는 영향을 미치지 않습니다.\n\n확실하지 않은 경우 \"dGPU\" 플래그가 지정된 GPU로 설정하세요. 없는 경우, 그대로 두세요.",
"SettingsAppRequiredRestartMessage": "Ryujinx 시작 필요", "SettingsAppRequiredRestartMessage": "Ryujinx 다시 시작 필요",
"SettingsGpuBackendRestartMessage": "그래픽 백엔드 또는 GPU 설정이 수정되었습니다. 적용하려면 다시 시작해야 함\n", "SettingsGpuBackendRestartMessage": "그래픽 후단부 또는 GPU 설정이 수정되었습니다. 적용하려면 다시 시작해야 합니다.",
"SettingsGpuBackendRestartSubMessage": "지금 다시 시작하겠습니까?", "SettingsGpuBackendRestartSubMessage": "지금 다시 시작하겠습니까?",
"RyujinxUpdaterMessage": "Ryujinx를 최신 버전으로 업데이트하겠습니까?", "RyujinxUpdaterMessage": "Ryujinx를 최신 버전으로 업데이트하겠습니까?",
"SettingsTabHotkeysVolumeUpHotkey": "볼륨 증가:", "SettingsTabHotkeysVolumeUpHotkey": "음량 증가 :",
"SettingsTabHotkeysVolumeDownHotkey": "볼륨 감소:", "SettingsTabHotkeysVolumeDownHotkey": "음량 감소 :",
"SettingsEnableMacroHLE": "매크로 HLE 활성화", "SettingsEnableMacroHLE": "매크로 HLE 활성화",
"SettingsEnableMacroHLETooltip": "GPU 매크로 코드의 높은 수준 에뮬레이션입니다.\n\n성능이 향상되지만 일부 게임에서 그래픽 결함이 발생할 수 있습니다.\n\n확실하지 않으면 켜 두세요.", "SettingsEnableMacroHLETooltip": "GPU 매크로 코드의 높은 수준 에뮬레이션입니다.\n\n성능이 향상되지만 일부 게임에서 그래픽 결함이 발생할 수 있습니다.\n\n확실하지 않으면 켜 두세요.",
"VolumeShort": "볼륨", "SettingsEnableColorSpacePassthrough": "색 공간 통과",
"SettingsEnableColorSpacePassthroughTooltip": "색 공간을 지정하지 않고 색상 정보를 전달하도록 Vulkan 후단에 지시합니다. 와이드 가멋 디스플레이를 사용하는 사용자의 경우 색 정확도가 저하되지만 더 생생한 색상을 얻을 수 있습니다.",
"VolumeShort": "음량",
"UserProfilesManageSaves": "저장 관리", "UserProfilesManageSaves": "저장 관리",
"DeleteUserSave": "이 게임에 대한 사용자 저장을 삭제하겠습니까?", "DeleteUserSave": "이 게임에 대한 사용자 저장을 삭제하겠습니까?",
"IrreversibleActionNote": "이 작업은 되돌릴 수 없습니다.", "IrreversibleActionNote": "이 작업은 되돌릴 수 없습니다.",
"SaveManagerHeading": "{0}의 저장 관리", "SaveManagerHeading": "{0} ({1})의 저장 관리",
"SaveManagerTitle": "저장 관리자", "SaveManagerTitle": "저장 관리자",
"Name": "이름", "Name": "이름",
"Size": "크기", "Size": "크기",
"Search": "검색", "Search": "검색",
"UserProfilesRecoverLostAccounts": "잃어버린 계정 복구", "UserProfilesRecoverLostAccounts": "잃어버린 계정 복구",
"Recover": "복구", "Recover": "복구",
"UserProfilesRecoverHeading": "다음 계정에 대한 저장 발견" "UserProfilesRecoverHeading": "다음 계정에 대한 저장 발견",
"UserProfilesRecoverEmptyList": "복구할 프로파일이 없습니다",
"GraphicsAATooltip": "게임 렌더링에 안티 앨리어싱을 적용",
"GraphicsAALabel": "안티 앨리어싱:",
"GraphicsScalingFilterLabel": "스케일링 필터:",
"GraphicsScalingFilterTooltip": "프레임버퍼 스케일링 활성화",
"GraphicsScalingFilterLevelLabel": "수준",
"GraphicsScalingFilterLevelTooltip": "스케일링 필터 수준 설정",
"SmaaLow": "SMAA 낮음",
"SmaaMedium": "SMAA 중간",
"SmaaHigh": "SMAA 높음",
"SmaaUltra": "SMAA 울트라",
"UserEditorTitle": "사용자 수정",
"UserEditorTitleCreate": "사용자 생성",
"SettingsTabNetworkInterface": "네트워크 인터페이스:",
"NetworkInterfaceTooltip": "LAN 기능에 사용되는 네트워크 인터페이스",
"NetworkInterfaceDefault": "기본",
"PackagingShaders": "셰이더 패키징 중",
"AboutChangelogButton": "GitHub에서 변경 로그 보기",
"AboutChangelogButtonTooltipMessage": "기본 브라우저에서 이 버전의 변경 로그를 열려면 클릭합니다."
} }

View file

@ -1,12 +1,13 @@
{ {
"Language": "Polski", "Language": "Angielski (USA)",
"MenuBarFileOpenApplet": "Otwórz Aplet", "MenuBarFileOpenApplet": "Otwórz Aplet",
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "Otwórz aplet Mii Editor w trybie Indywidualnym", "MenuBarFileOpenAppletOpenMiiAppletToolTip": "Otwórz aplet Mii Editor w trybie Indywidualnym",
"SettingsTabInputDirectMouseAccess": "Bezpośredni Dostęp do Myszy", "SettingsTabInputDirectMouseAccess": "Bezpośredni Dostęp do Myszy",
"SettingsTabSystemMemoryManagerMode": "Tryb Menedżera Pamięci:", "SettingsTabSystemMemoryManagerMode": "Tryb Menedżera Pamięci:",
"SettingsTabSystemMemoryManagerModeSoftware": "Oprogramowania", "SettingsTabSystemMemoryManagerModeSoftware": "Oprogramowanie",
"SettingsTabSystemMemoryManagerModeHost": "Host (szybko)", "SettingsTabSystemMemoryManagerModeHost": "Host (szybko)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "Host Niesprawdzony (najszybciej, niebezpiecznie)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "Host Niesprawdzony (najszybciej, niebezpiecznie)",
"SettingsTabSystemUseHypervisor": "Użyj Hiperwizora",
"MenuBarFile": "_Plik", "MenuBarFile": "_Plik",
"MenuBarFileOpenFromFile": "_Załaduj Aplikację z Pliku", "MenuBarFileOpenFromFile": "_Załaduj Aplikację z Pliku",
"MenuBarFileOpenUnpacked": "Załaduj _Rozpakowaną Grę", "MenuBarFileOpenUnpacked": "Załaduj _Rozpakowaną Grę",
@ -26,6 +27,9 @@
"MenuBarToolsInstallFirmware": "Zainstaluj Firmware", "MenuBarToolsInstallFirmware": "Zainstaluj Firmware",
"MenuBarFileToolsInstallFirmwareFromFile": "Zainstaluj Firmware z XCI lub ZIP", "MenuBarFileToolsInstallFirmwareFromFile": "Zainstaluj Firmware z XCI lub ZIP",
"MenuBarFileToolsInstallFirmwareFromDirectory": "Zainstaluj Firmware z Katalogu", "MenuBarFileToolsInstallFirmwareFromDirectory": "Zainstaluj Firmware z Katalogu",
"MenuBarToolsManageFileTypes": "Zarządzaj rodzajem plików",
"MenuBarToolsInstallFileTypes": "Instalacja typów plików",
"MenuBarToolsUninstallFileTypes": "Odinstaluj rodzaje plików",
"MenuBarHelp": "Pomoc", "MenuBarHelp": "Pomoc",
"MenuBarHelpCheckForUpdates": "Sprawdź Aktualizacje", "MenuBarHelpCheckForUpdates": "Sprawdź Aktualizacje",
"MenuBarHelpAbout": "O Aplikacji", "MenuBarHelpAbout": "O Aplikacji",
@ -70,13 +74,23 @@
"GameListContextMenuExtractDataLogoToolTip": "Wyodrębnij sekcję Logo z bieżącej konfiguracji aplikacji (w tym aktualizacje)", "GameListContextMenuExtractDataLogoToolTip": "Wyodrębnij sekcję Logo z bieżącej konfiguracji aplikacji (w tym aktualizacje)",
"StatusBarGamesLoaded": "{0}/{1} Załadowane Gry", "StatusBarGamesLoaded": "{0}/{1} Załadowane Gry",
"StatusBarSystemVersion": "Wersja Systemu: {0}", "StatusBarSystemVersion": "Wersja Systemu: {0}",
"LinuxVmMaxMapCountDialogTitle": "Wykryto niski limit dla mapowania pamięci",
"LinuxVmMaxMapCountDialogTextPrimary": "Czy chciałbyś zwiększyć wartość vm.max_map_count do {0}",
"LinuxVmMaxMapCountDialogTextSecondary": "Niektóre gry mogą próbować stworzyć więcej mapowań pamięci niż obecnie, jest to dozwolone. Ryujinx napotka crash, gdy dojdzie do takiej sytuacji.",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "Tak, do następnego ponownego uruchomienia",
"LinuxVmMaxMapCountDialogButtonPersistent": "Tak, permanentnie ",
"LinuxVmMaxMapCountWarningTextPrimary": "Maksymalna ilość mapowania pamięci jest mniejsza niż zalecana.",
"LinuxVmMaxMapCountWarningTextSecondary": "Obecna wartość vm.max_map_count ({0}) jest mniejsza niż {1}. Niektóre gry mogą próbować stworzyć więcej mapowań pamięci niż obecnie jest to dozwolone. Ryujinx napotka crash, gdy dojdzie do takiej sytuacji.\n\nMożesz chcieć ręcznie zwiększyć limit lub zainstalować pkexec, co pozwala Ryujinx na pomoc w tym zakresie.",
"Settings": "Ustawienia", "Settings": "Ustawienia",
"SettingsTabGeneral": "Interfejs Użytkownika", "SettingsTabGeneral": "Interfejs Użytkownika",
"SettingsTabGeneralGeneral": "Ogólne", "SettingsTabGeneralGeneral": "Ogólne",
"SettingsTabGeneralEnableDiscordRichPresence": "Włącz Bogatą Obecność Discord", "SettingsTabGeneralEnableDiscordRichPresence": "Włącz Bogatą Obecność Discord",
"SettingsTabGeneralCheckUpdatesOnLaunch": "Sprawdź Aktualizacje przy Uruchomieniu", "SettingsTabGeneralCheckUpdatesOnLaunch": "Sprawdź Aktualizacje przy Uruchomieniu",
"SettingsTabGeneralShowConfirmExitDialog": "Pokaż Okno Dialogowe \"Potwierdzenia Wyjścia\"", "SettingsTabGeneralShowConfirmExitDialog": "Pokaż Okno Dialogowe \"Potwierdzenia Wyjścia\"",
"SettingsTabGeneralHideCursor": "Ukryj kursor:",
"SettingsTabGeneralHideCursorNever": "Nigdy",
"SettingsTabGeneralHideCursorOnIdle": "Ukryj Kursor Podczas Bezczynności", "SettingsTabGeneralHideCursorOnIdle": "Ukryj Kursor Podczas Bezczynności",
"SettingsTabGeneralHideCursorAlways": "Zawsze",
"SettingsTabGeneralGameDirectories": "Katalogi Gier", "SettingsTabGeneralGameDirectories": "Katalogi Gier",
"SettingsTabGeneralAdd": "Dodaj", "SettingsTabGeneralAdd": "Dodaj",
"SettingsTabGeneralRemove": "Usuń", "SettingsTabGeneralRemove": "Usuń",
@ -110,7 +124,7 @@
"SettingsTabSystemSystemLanguageTraditionalChinese": "Chiński Tradycyjny", "SettingsTabSystemSystemLanguageTraditionalChinese": "Chiński Tradycyjny",
"SettingsTabSystemSystemTimeZone": "Strefa Czasowa Systemu:", "SettingsTabSystemSystemTimeZone": "Strefa Czasowa Systemu:",
"SettingsTabSystemSystemTime": "Czas Systemu:", "SettingsTabSystemSystemTime": "Czas Systemu:",
"SettingsTabSystemEnableVsync": "VSync", "SettingsTabSystemEnableVsync": "Włącz synchronizację pionową",
"SettingsTabSystemEnablePptc": "PPTC (Profilowany Cache Trwałych Tłumaczeń)", "SettingsTabSystemEnablePptc": "PPTC (Profilowany Cache Trwałych Tłumaczeń)",
"SettingsTabSystemEnableFsIntegrityChecks": "Kontrole Integralności Systemu Plików", "SettingsTabSystemEnableFsIntegrityChecks": "Kontrole Integralności Systemu Plików",
"SettingsTabSystemAudioBackend": "Backend Dżwięku:", "SettingsTabSystemAudioBackend": "Backend Dżwięku:",
@ -126,7 +140,7 @@
"SettingsTabGraphicsAPI": "Graficzne API", "SettingsTabGraphicsAPI": "Graficzne API",
"SettingsTabGraphicsEnableShaderCache": "Włącz Cache Shaderów", "SettingsTabGraphicsEnableShaderCache": "Włącz Cache Shaderów",
"SettingsTabGraphicsAnisotropicFiltering": "Filtrowanie Anizotropowe:", "SettingsTabGraphicsAnisotropicFiltering": "Filtrowanie Anizotropowe:",
"SettingsTabGraphicsAnisotropicFilteringAuto": "Auto", "SettingsTabGraphicsAnisotropicFilteringAuto": "Automatyczny",
"SettingsTabGraphicsAnisotropicFiltering2x": "2x", "SettingsTabGraphicsAnisotropicFiltering2x": "2x",
"SettingsTabGraphicsAnisotropicFiltering4x": "4x", "SettingsTabGraphicsAnisotropicFiltering4x": "4x",
"SettingsTabGraphicsAnisotropicFiltering8x": "8x", "SettingsTabGraphicsAnisotropicFiltering8x": "8x",
@ -158,6 +172,7 @@
"SettingsTabLoggingEnableFsAccessLogs": "Włącz Logi Dostępu do Systemu Plików", "SettingsTabLoggingEnableFsAccessLogs": "Włącz Logi Dostępu do Systemu Plików",
"SettingsTabLoggingFsGlobalAccessLogMode": "Tryb Globalnych Logów Systemu Plików:", "SettingsTabLoggingFsGlobalAccessLogMode": "Tryb Globalnych Logów Systemu Plików:",
"SettingsTabLoggingDeveloperOptions": "Opcje programistyczne (OSTRZEŻENIE: Zmniejszą wydajność)", "SettingsTabLoggingDeveloperOptions": "Opcje programistyczne (OSTRZEŻENIE: Zmniejszą wydajność)",
"SettingsTabLoggingDeveloperOptionsNote": "UWAGA: Zredukuje wydajność",
"SettingsTabLoggingGraphicsBackendLogLevel": "Ilość Logów Backendu Graficznego:", "SettingsTabLoggingGraphicsBackendLogLevel": "Ilość Logów Backendu Graficznego:",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "Żadne", "SettingsTabLoggingGraphicsBackendLogLevelNone": "Żadne",
"SettingsTabLoggingGraphicsBackendLogLevelError": "Błędy", "SettingsTabLoggingGraphicsBackendLogLevelError": "Błędy",
@ -187,7 +202,7 @@
"ControllerSettingsDeviceDisabled": "Wyłączone", "ControllerSettingsDeviceDisabled": "Wyłączone",
"ControllerSettingsControllerType": "Typ Kontrolera", "ControllerSettingsControllerType": "Typ Kontrolera",
"ControllerSettingsControllerTypeHandheld": "Przenośny", "ControllerSettingsControllerTypeHandheld": "Przenośny",
"ControllerSettingsControllerTypeProController": "Pro Controller", "ControllerSettingsControllerTypeProController": "Pro Kontroler",
"ControllerSettingsControllerTypeJoyConPair": "Para JoyCon-ów", "ControllerSettingsControllerTypeJoyConPair": "Para JoyCon-ów",
"ControllerSettingsControllerTypeJoyConLeft": "Lewy JoyCon", "ControllerSettingsControllerTypeJoyConLeft": "Lewy JoyCon",
"ControllerSettingsControllerTypeJoyConRight": "Prawy JoyCon", "ControllerSettingsControllerTypeJoyConRight": "Prawy JoyCon",
@ -208,26 +223,17 @@
"ControllerSettingsDPadDown": "Dół", "ControllerSettingsDPadDown": "Dół",
"ControllerSettingsDPadLeft": "Lewo", "ControllerSettingsDPadLeft": "Lewo",
"ControllerSettingsDPadRight": "Prawo", "ControllerSettingsDPadRight": "Prawo",
"ControllerSettingsStickButton": "Przycisk",
"ControllerSettingsStickUp": "Góra ",
"ControllerSettingsStickDown": "Dół ",
"ControllerSettingsStickLeft": "Lewo",
"ControllerSettingsStickRight": "Prawo",
"ControllerSettingsStickStick": "Gałka",
"ControllerSettingsStickInvertXAxis": "Odwróć gałkę X",
"ControllerSettingsStickInvertYAxis": "Odwróć gałkę Y",
"ControllerSettingsStickDeadzone": "Martwa strefa:",
"ControllerSettingsLStick": "Lewa Gałka", "ControllerSettingsLStick": "Lewa Gałka",
"ControllerSettingsLStickButton": "Przycisk",
"ControllerSettingsLStickUp": "Góra",
"ControllerSettingsLStickDown": "Dół",
"ControllerSettingsLStickLeft": "Lewo",
"ControllerSettingsLStickRight": "Prawo",
"ControllerSettingsLStickStick": "Gałka",
"ControllerSettingsLStickInvertXAxis": "Odwróć X Gałki",
"ControllerSettingsLStickInvertYAxis": "Odwróć Y Gałki",
"ControllerSettingsLStickDeadzone": "Martwa Strefa:",
"ControllerSettingsRStick": "Prawa Gałka", "ControllerSettingsRStick": "Prawa Gałka",
"ControllerSettingsRStickButton": "Przycisk",
"ControllerSettingsRStickUp": "Góra",
"ControllerSettingsRStickDown": "Dół",
"ControllerSettingsRStickLeft": "Lewo",
"ControllerSettingsRStickRight": "Prawo",
"ControllerSettingsRStickStick": "Gałka",
"ControllerSettingsRStickInvertXAxis": "Odwróć X Gałki",
"ControllerSettingsRStickInvertYAxis": "Odwróć Y Gałki",
"ControllerSettingsRStickDeadzone": "Martwa Strefa:",
"ControllerSettingsTriggersLeft": "Lewe Triggery", "ControllerSettingsTriggersLeft": "Lewe Triggery",
"ControllerSettingsTriggersRight": "Prawe Triggery", "ControllerSettingsTriggersRight": "Prawe Triggery",
"ControllerSettingsTriggersButtonsLeft": "Lewe Przyciski Triggerów", "ControllerSettingsTriggersButtonsLeft": "Lewe Przyciski Triggerów",
@ -262,6 +268,7 @@
"UserProfilesAddNewProfile": "Utwórz Profil", "UserProfilesAddNewProfile": "Utwórz Profil",
"UserProfilesDelete": "Usuwać", "UserProfilesDelete": "Usuwać",
"UserProfilesClose": "Zamknij", "UserProfilesClose": "Zamknij",
"ProfileNameSelectionWatermark": "Wybierz pseudonim",
"ProfileImageSelectionTitle": "Wybór Obrazu Profilu", "ProfileImageSelectionTitle": "Wybór Obrazu Profilu",
"ProfileImageSelectionHeader": "Wybierz zdjęcie profilowe", "ProfileImageSelectionHeader": "Wybierz zdjęcie profilowe",
"ProfileImageSelectionNote": "Możesz zaimportować niestandardowy obraz profilu lub wybrać awatar z firmware'u systemowego", "ProfileImageSelectionNote": "Możesz zaimportować niestandardowy obraz profilu lub wybrać awatar z firmware'u systemowego",
@ -282,6 +289,7 @@
"ControllerSettingsSaveProfileToolTip": "Zapisz Profil", "ControllerSettingsSaveProfileToolTip": "Zapisz Profil",
"MenuBarFileToolsTakeScreenshot": "Zrób Zrzut Ekranu", "MenuBarFileToolsTakeScreenshot": "Zrób Zrzut Ekranu",
"MenuBarFileToolsHideUi": "Ukryj UI", "MenuBarFileToolsHideUi": "Ukryj UI",
"GameListContextMenuRunApplication": "Uruchom aplikację ",
"GameListContextMenuToggleFavorite": "Przełącz Ulubione", "GameListContextMenuToggleFavorite": "Przełącz Ulubione",
"GameListContextMenuToggleFavoriteToolTip": "Przełącz status Ulubionej Gry", "GameListContextMenuToggleFavoriteToolTip": "Przełącz status Ulubionej Gry",
"SettingsTabGeneralTheme": "Motyw", "SettingsTabGeneralTheme": "Motyw",
@ -337,6 +345,10 @@
"DialogFirmwareInstallEmbeddedSuccessMessage": "Nie znaleziono zainstalowanego firmware'u, ale Ryujinx był w stanie zainstalować firmware {0} z dostarczonej gry.\n\nEmulator uruchomi się teraz.", "DialogFirmwareInstallEmbeddedSuccessMessage": "Nie znaleziono zainstalowanego firmware'u, ale Ryujinx był w stanie zainstalować firmware {0} z dostarczonej gry.\n\nEmulator uruchomi się teraz.",
"DialogFirmwareNoFirmwareInstalledMessage": "Brak Zainstalowanego Firmware'u", "DialogFirmwareNoFirmwareInstalledMessage": "Brak Zainstalowanego Firmware'u",
"DialogFirmwareInstalledMessage": "Firmware {0} został zainstalowany", "DialogFirmwareInstalledMessage": "Firmware {0} został zainstalowany",
"DialogInstallFileTypesSuccessMessage": "Pomyślnie zainstalowano typy plików!",
"DialogInstallFileTypesErrorMessage": "Nie udało się zainstalować typów plików.",
"DialogUninstallFileTypesSuccessMessage": "Pomyślnie odinstalowano typy plików!",
"DialogUninstallFileTypesErrorMessage": "Nie udało się odinstalować typów plików.",
"DialogOpenSettingsWindowLabel": "Otwórz Okno Ustawień", "DialogOpenSettingsWindowLabel": "Otwórz Okno Ustawień",
"DialogControllerAppletTitle": "Aplet Kontrolera", "DialogControllerAppletTitle": "Aplet Kontrolera",
"DialogMessageDialogErrorExceptionMessage": "Błąd wyświetlania okna Dialogowego Wiadomości: {0}", "DialogMessageDialogErrorExceptionMessage": "Błąd wyświetlania okna Dialogowego Wiadomości: {0}",
@ -368,6 +380,9 @@
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Wersja systemu {0} została pomyślnie zainstalowana.", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Wersja systemu {0} została pomyślnie zainstalowana.",
"DialogUserProfileDeletionWarningMessage": "Nie będzie innych profili do otwarcia, jeśli wybrany profil zostanie usunięty", "DialogUserProfileDeletionWarningMessage": "Nie będzie innych profili do otwarcia, jeśli wybrany profil zostanie usunięty",
"DialogUserProfileDeletionConfirmMessage": "Czy chcesz usunąć wybrany profil", "DialogUserProfileDeletionConfirmMessage": "Czy chcesz usunąć wybrany profil",
"DialogUserProfileUnsavedChangesTitle": "Uwaga - Niezapisane zmiany",
"DialogUserProfileUnsavedChangesMessage": "Wprowadziłeś zmiany dla tego profilu użytkownika, które nie zostały zapisane.",
"DialogUserProfileUnsavedChangesSubMessage": "Czy chcesz odrzucić zmiany?",
"DialogControllerSettingsModifiedConfirmMessage": "Aktualne ustawienia kontrolera zostały zaktualizowane.", "DialogControllerSettingsModifiedConfirmMessage": "Aktualne ustawienia kontrolera zostały zaktualizowane.",
"DialogControllerSettingsModifiedConfirmSubMessage": "Czy chcesz zapisać?", "DialogControllerSettingsModifiedConfirmSubMessage": "Czy chcesz zapisać?",
"DialogLoadNcaErrorMessage": "{0}. Błędny Plik: {1}", "DialogLoadNcaErrorMessage": "{0}. Błędny Plik: {1}",
@ -416,6 +431,7 @@
"DlcManagerEnableAllButton": "Włącz Wszystkie", "DlcManagerEnableAllButton": "Włącz Wszystkie",
"DlcManagerDisableAllButton": "Wyłącz Wszystkie", "DlcManagerDisableAllButton": "Wyłącz Wszystkie",
"MenuBarOptionsChangeLanguage": "Zmień Język", "MenuBarOptionsChangeLanguage": "Zmień Język",
"MenuBarShowFileTypes": "Pokaż typy plików",
"CommonSort": "Sortuj", "CommonSort": "Sortuj",
"CommonShowNames": "Pokaż Nazwy", "CommonShowNames": "Pokaż Nazwy",
"CommonFavorite": "Ulubione", "CommonFavorite": "Ulubione",
@ -445,6 +461,7 @@
"MemoryManagerSoftwareTooltip": "Użyj tabeli stron oprogramowania do translacji adresów. Najwyższa celność, ale najwolniejsza wydajność.", "MemoryManagerSoftwareTooltip": "Użyj tabeli stron oprogramowania do translacji adresów. Najwyższa celność, ale najwolniejsza wydajność.",
"MemoryManagerHostTooltip": "Bezpośrednio mapuj pamięć w przestrzeni adresowej hosta. Znacznie szybsza kompilacja i wykonanie JIT.", "MemoryManagerHostTooltip": "Bezpośrednio mapuj pamięć w przestrzeni adresowej hosta. Znacznie szybsza kompilacja i wykonanie JIT.",
"MemoryManagerUnsafeTooltip": "Bezpośrednio mapuj pamięć, ale nie maskuj adresu w przestrzeni adresowej gościa przed uzyskaniem dostępu. Szybciej, ale kosztem bezpieczeństwa. Aplikacja gościa może uzyskać dostęp do pamięci z dowolnego miejsca w Ryujinx, więc w tym trybie uruchamiaj tylko programy, którym ufasz.", "MemoryManagerUnsafeTooltip": "Bezpośrednio mapuj pamięć, ale nie maskuj adresu w przestrzeni adresowej gościa przed uzyskaniem dostępu. Szybciej, ale kosztem bezpieczeństwa. Aplikacja gościa może uzyskać dostęp do pamięci z dowolnego miejsca w Ryujinx, więc w tym trybie uruchamiaj tylko programy, którym ufasz.",
"UseHypervisorTooltip": "Użyj Hiperwizora zamiast JIT. Znacznie poprawia wydajność, gdy jest dostępny, ale może być niestabilny w swoim obecnym stanie ",
"DRamTooltip": "Wykorzystuje alternatywny układ MemoryMode, aby naśladować model rozwojowy Switcha.\n\nJest to przydatne tylko w przypadku pakietów tekstur o wyższej rozdzielczości lub modów w rozdzielczości 4k. NIE poprawia wydajności.\n\nW razie wątpliwości pozostaw WYŁĄCZONE.", "DRamTooltip": "Wykorzystuje alternatywny układ MemoryMode, aby naśladować model rozwojowy Switcha.\n\nJest to przydatne tylko w przypadku pakietów tekstur o wyższej rozdzielczości lub modów w rozdzielczości 4k. NIE poprawia wydajności.\n\nW razie wątpliwości pozostaw WYŁĄCZONE.",
"IgnoreMissingServicesTooltip": "Ignoruje niezaimplementowane usługi Horizon OS. Może to pomóc w ominięciu awarii podczas uruchamiania niektórych gier.\n\nW razie wątpliwości pozostaw WYŁĄCZONE.", "IgnoreMissingServicesTooltip": "Ignoruje niezaimplementowane usługi Horizon OS. Może to pomóc w ominięciu awarii podczas uruchamiania niektórych gier.\n\nW razie wątpliwości pozostaw WYŁĄCZONE.",
"GraphicsBackendThreadingTooltip": "Wykonuje polecenia backend'u graficznego w drugim wątku.\n\nPrzyspiesza kompilację shaderów, zmniejsza zacinanie się i poprawia wydajność sterowników GPU bez własnej obsługi wielowątkowości. Nieco lepsza wydajność w sterownikach z wielowątkowością.\n\nUstaw na AUTO, jeśli nie masz pewności.", "GraphicsBackendThreadingTooltip": "Wykonuje polecenia backend'u graficznego w drugim wątku.\n\nPrzyspiesza kompilację shaderów, zmniejsza zacinanie się i poprawia wydajność sterowników GPU bez własnej obsługi wielowątkowości. Nieco lepsza wydajność w sterownikach z wielowątkowością.\n\nUstaw na AUTO, jeśli nie masz pewności.",
@ -527,6 +544,9 @@
"SwkbdMinCharacters": "Musi mieć co najmniej {0} znaków", "SwkbdMinCharacters": "Musi mieć co najmniej {0} znaków",
"SwkbdMinRangeCharacters": "Musi mieć długość od {0}-{1} znaków", "SwkbdMinRangeCharacters": "Musi mieć długość od {0}-{1} znaków",
"SoftwareKeyboard": "Klawiatura Oprogramowania", "SoftwareKeyboard": "Klawiatura Oprogramowania",
"SoftwareKeyboardModeNumbersOnly": "Mogą być tylko liczby ",
"SoftwareKeyboardModeAlphabet": "Nie może zawierać znaków CJK",
"SoftwareKeyboardModeASCII": "Musi zawierać tylko tekst ASCII",
"DialogControllerAppletMessagePlayerRange": "Aplikacja żąda {0} graczy z:\n\nTYPY: {1}\n\nGRACZE: {2}\n\n{3}Otwórz Ustawienia i ponownie skonfiguruj Sterowanie lub naciśnij Zamknij.", "DialogControllerAppletMessagePlayerRange": "Aplikacja żąda {0} graczy z:\n\nTYPY: {1}\n\nGRACZE: {2}\n\n{3}Otwórz Ustawienia i ponownie skonfiguruj Sterowanie lub naciśnij Zamknij.",
"DialogControllerAppletMessage": "Aplikacja żąda dokładnie {0} graczy z:\n\nTYPY: {1}\n\nGRACZE: {2}\n\n{3}Otwórz teraz Ustawienia i ponownie skonfiguruj Sterowanie lub naciśnij Zamknij.", "DialogControllerAppletMessage": "Aplikacja żąda dokładnie {0} graczy z:\n\nTYPY: {1}\n\nGRACZE: {2}\n\n{3}Otwórz teraz Ustawienia i ponownie skonfiguruj Sterowanie lub naciśnij Zamknij.",
"DialogControllerAppletDockModeSet": "Ustawiono tryb Zadokowane. Przenośny też jest nieprawidłowy.\n\n", "DialogControllerAppletDockModeSet": "Ustawiono tryb Zadokowane. Przenośny też jest nieprawidłowy.\n\n",
@ -572,6 +592,7 @@
"DlcWindowTitle": "Menedżer Zawartości do Pobrania", "DlcWindowTitle": "Menedżer Zawartości do Pobrania",
"UpdateWindowTitle": "Menedżer Aktualizacji Tytułu", "UpdateWindowTitle": "Menedżer Aktualizacji Tytułu",
"CheatWindowHeading": "Kody Dostępne dla {0} [{1}]", "CheatWindowHeading": "Kody Dostępne dla {0} [{1}]",
"BuildId": "Identyfikator wersji:",
"DlcWindowHeading": "{0} Zawartości do Pobrania dostępna dla {1} ({2})", "DlcWindowHeading": "{0} Zawartości do Pobrania dostępna dla {1} ({2})",
"UserProfilesEditProfile": "Edytuj Zaznaczone", "UserProfilesEditProfile": "Edytuj Zaznaczone",
"Cancel": "Anuluj", "Cancel": "Anuluj",
@ -599,6 +620,8 @@
"SettingsTabHotkeysVolumeDownHotkey": "Zmniejsz Głośność:", "SettingsTabHotkeysVolumeDownHotkey": "Zmniejsz Głośność:",
"SettingsEnableMacroHLE": "Włącz Macro HLE", "SettingsEnableMacroHLE": "Włącz Macro HLE",
"SettingsEnableMacroHLETooltip": "Wysokopoziomowa emulacja kodu GPU Macro.\n\nPoprawia wydajność, ale może powodować błędy graficzne w niektórych grach.\n\nW razie wątpliwości pozostaw WŁĄCZONE.", "SettingsEnableMacroHLETooltip": "Wysokopoziomowa emulacja kodu GPU Macro.\n\nPoprawia wydajność, ale może powodować błędy graficzne w niektórych grach.\n\nW razie wątpliwości pozostaw WŁĄCZONE.",
"SettingsEnableColorSpacePassthrough": "Color Space Passthrough",
"SettingsEnableColorSpacePassthroughTooltip": "Directs the Vulkan backend to pass through color information without specifying a color space. For users with wide gamut displays, this may result in more vibrant colors, at the cost of color correctness.",
"VolumeShort": "Głoś", "VolumeShort": "Głoś",
"UserProfilesManageSaves": "Zarządzaj Zapisami", "UserProfilesManageSaves": "Zarządzaj Zapisami",
"DeleteUserSave": "Czy chcesz usunąć zapis użytkownika dla tej gry?", "DeleteUserSave": "Czy chcesz usunąć zapis użytkownika dla tej gry?",
@ -610,5 +633,24 @@
"Search": "Wyszukaj", "Search": "Wyszukaj",
"UserProfilesRecoverLostAccounts": "Odzyskaj Utracone Konta", "UserProfilesRecoverLostAccounts": "Odzyskaj Utracone Konta",
"Recover": "Odzyskaj", "Recover": "Odzyskaj",
"UserProfilesRecoverHeading": "Znaleziono zapisy dla następujących kont" "UserProfilesRecoverHeading": "Znaleziono zapisy dla następujących kont",
"UserProfilesRecoverEmptyList": "Brak profili do odzyskania",
"GraphicsAATooltip": "Stosuje antyaliasing do renderowania gry",
"GraphicsAALabel": "Antyaliasing:",
"GraphicsScalingFilterLabel": "Filtr skalowania:",
"GraphicsScalingFilterTooltip": "Włącza skalowanie bufora ramki",
"GraphicsScalingFilterLevelLabel": "Poziom",
"GraphicsScalingFilterLevelTooltip": "Ustaw poziom filtra skalowania",
"SmaaLow": "SMAA Niskie",
"SmaaMedium": "SMAA Średnie",
"SmaaHigh": "SMAA Wysokie",
"SmaaUltra": "SMAA Ultra",
"UserEditorTitle": "Edytuj użytkownika",
"UserEditorTitleCreate": "Utwórz użytkownika",
"SettingsTabNetworkInterface": "Interfejs sieci:",
"NetworkInterfaceTooltip": "Interfejs sieciowy używany do funkcji LAN",
"NetworkInterfaceDefault": "Domyślny",
"PackagingShaders": "Pakuje Shadery ",
"AboutChangelogButton": "Zobacz listę zmian na GitHubie",
"AboutChangelogButtonTooltipMessage": "Kliknij, aby otworzyć listę zmian dla tej wersji w domyślnej przeglądarce."
} }

View file

@ -7,6 +7,7 @@
"SettingsTabSystemMemoryManagerModeSoftware": "Software", "SettingsTabSystemMemoryManagerModeSoftware": "Software",
"SettingsTabSystemMemoryManagerModeHost": "Hóspede (rápido)", "SettingsTabSystemMemoryManagerModeHost": "Hóspede (rápido)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "Hóspede sem verificação (mais rápido, inseguro)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "Hóspede sem verificação (mais rápido, inseguro)",
"SettingsTabSystemUseHypervisor": "Usar Hipervisor",
"MenuBarFile": "_Arquivo", "MenuBarFile": "_Arquivo",
"MenuBarFileOpenFromFile": "_Abrir ROM do jogo...", "MenuBarFileOpenFromFile": "_Abrir ROM do jogo...",
"MenuBarFileOpenUnpacked": "Abrir jogo _extraído...", "MenuBarFileOpenUnpacked": "Abrir jogo _extraído...",
@ -26,6 +27,9 @@
"MenuBarToolsInstallFirmware": "_Instalar firmware", "MenuBarToolsInstallFirmware": "_Instalar firmware",
"MenuBarFileToolsInstallFirmwareFromFile": "Instalar firmware a partir de um arquivo ZIP/XCI", "MenuBarFileToolsInstallFirmwareFromFile": "Instalar firmware a partir de um arquivo ZIP/XCI",
"MenuBarFileToolsInstallFirmwareFromDirectory": "Instalar firmware a partir de um diretório", "MenuBarFileToolsInstallFirmwareFromDirectory": "Instalar firmware a partir de um diretório",
"MenuBarToolsManageFileTypes": "Gerenciar tipos de arquivo",
"MenuBarToolsInstallFileTypes": "Instalar tipos de arquivo",
"MenuBarToolsUninstallFileTypes": "Desinstalar tipos de arquivos",
"MenuBarHelp": "A_juda", "MenuBarHelp": "A_juda",
"MenuBarHelpCheckForUpdates": "_Verificar se há atualizações", "MenuBarHelpCheckForUpdates": "_Verificar se há atualizações",
"MenuBarHelpAbout": "_Sobre", "MenuBarHelpAbout": "_Sobre",
@ -70,13 +74,23 @@
"GameListContextMenuExtractDataLogoToolTip": "Extrai a seção Logo do jogo (incluindo atualizações)", "GameListContextMenuExtractDataLogoToolTip": "Extrai a seção Logo do jogo (incluindo atualizações)",
"StatusBarGamesLoaded": "{0}/{1} jogos carregados", "StatusBarGamesLoaded": "{0}/{1} jogos carregados",
"StatusBarSystemVersion": "Versão do firmware: {0}", "StatusBarSystemVersion": "Versão do firmware: {0}",
"LinuxVmMaxMapCountDialogTitle": "Low limit for memory mappings detected",
"LinuxVmMaxMapCountDialogTextPrimary": "Would you like to increase the value of vm.max_map_count to {0}",
"LinuxVmMaxMapCountDialogTextSecondary": "Some games might try to create more memory mappings than currently allowed. Ryujinx will crash as soon as this limit gets exceeded.",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "Yes, until the next restart",
"LinuxVmMaxMapCountDialogButtonPersistent": "Yes, permanently",
"LinuxVmMaxMapCountWarningTextPrimary": "Max amount of memory mappings is lower than recommended.",
"LinuxVmMaxMapCountWarningTextSecondary": "The current value of vm.max_map_count ({0}) is lower than {1}. Some games might try to create more memory mappings than currently allowed. Ryujinx will crash as soon as this limit gets exceeded.\n\nYou might want to either manually increase the limit or install pkexec, which allows Ryujinx to assist with that.",
"Settings": "Configurações", "Settings": "Configurações",
"SettingsTabGeneral": "Geral", "SettingsTabGeneral": "Geral",
"SettingsTabGeneralGeneral": "Geral", "SettingsTabGeneralGeneral": "Geral",
"SettingsTabGeneralEnableDiscordRichPresence": "Habilitar Rich Presence do Discord", "SettingsTabGeneralEnableDiscordRichPresence": "Habilitar Rich Presence do Discord",
"SettingsTabGeneralCheckUpdatesOnLaunch": "Verificar se há atualizações ao iniciar", "SettingsTabGeneralCheckUpdatesOnLaunch": "Verificar se há atualizações ao iniciar",
"SettingsTabGeneralShowConfirmExitDialog": "Exibir diálogo de confirmação ao sair", "SettingsTabGeneralShowConfirmExitDialog": "Exibir diálogo de confirmação ao sair",
"SettingsTabGeneralHideCursor": "Esconder o cursor do mouse:",
"SettingsTabGeneralHideCursorNever": "Nunca",
"SettingsTabGeneralHideCursorOnIdle": "Esconder o cursor quando ocioso", "SettingsTabGeneralHideCursorOnIdle": "Esconder o cursor quando ocioso",
"SettingsTabGeneralHideCursorAlways": "Sempre",
"SettingsTabGeneralGameDirectories": "Diretórios de jogo", "SettingsTabGeneralGameDirectories": "Diretórios de jogo",
"SettingsTabGeneralAdd": "Adicionar", "SettingsTabGeneralAdd": "Adicionar",
"SettingsTabGeneralRemove": "Remover", "SettingsTabGeneralRemove": "Remover",
@ -158,6 +172,7 @@
"SettingsTabLoggingEnableFsAccessLogs": "Habilitar logs de acesso ao sistema de arquivos", "SettingsTabLoggingEnableFsAccessLogs": "Habilitar logs de acesso ao sistema de arquivos",
"SettingsTabLoggingFsGlobalAccessLogMode": "Modo global de logs do sistema de arquivos:", "SettingsTabLoggingFsGlobalAccessLogMode": "Modo global de logs do sistema de arquivos:",
"SettingsTabLoggingDeveloperOptions": "Opções do desenvolvedor (AVISO: Vai reduzir a performance)", "SettingsTabLoggingDeveloperOptions": "Opções do desenvolvedor (AVISO: Vai reduzir a performance)",
"SettingsTabLoggingDeveloperOptionsNote": "AVISO: Reduzirá o desempenho",
"SettingsTabLoggingGraphicsBackendLogLevel": "Nível de log do backend gráfico:", "SettingsTabLoggingGraphicsBackendLogLevel": "Nível de log do backend gráfico:",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "Nenhum", "SettingsTabLoggingGraphicsBackendLogLevelNone": "Nenhum",
"SettingsTabLoggingGraphicsBackendLogLevelError": "Erro", "SettingsTabLoggingGraphicsBackendLogLevelError": "Erro",
@ -208,26 +223,17 @@
"ControllerSettingsDPadDown": "Baixo", "ControllerSettingsDPadDown": "Baixo",
"ControllerSettingsDPadLeft": "Esquerda", "ControllerSettingsDPadLeft": "Esquerda",
"ControllerSettingsDPadRight": "Direita", "ControllerSettingsDPadRight": "Direita",
"ControllerSettingsStickButton": "Button",
"ControllerSettingsStickUp": "Up",
"ControllerSettingsStickDown": "Down",
"ControllerSettingsStickLeft": "Left",
"ControllerSettingsStickRight": "Right",
"ControllerSettingsStickStick": "Stick",
"ControllerSettingsStickInvertXAxis": "Invert Stick X",
"ControllerSettingsStickInvertYAxis": "Invert Stick Y",
"ControllerSettingsStickDeadzone": "Deadzone:",
"ControllerSettingsLStick": "Analógico esquerdo", "ControllerSettingsLStick": "Analógico esquerdo",
"ControllerSettingsLStickButton": "Botão",
"ControllerSettingsLStickUp": "Cima",
"ControllerSettingsLStickDown": "Baixo",
"ControllerSettingsLStickLeft": "Esquerda",
"ControllerSettingsLStickRight": "Direita",
"ControllerSettingsLStickStick": "Analógico",
"ControllerSettingsLStickInvertXAxis": "Inverter eixo X",
"ControllerSettingsLStickInvertYAxis": "Inverter eixo Y",
"ControllerSettingsLStickDeadzone": "Zona morta:",
"ControllerSettingsRStick": "Analógico direito", "ControllerSettingsRStick": "Analógico direito",
"ControllerSettingsRStickButton": "Botão",
"ControllerSettingsRStickUp": "Cima",
"ControllerSettingsRStickDown": "Baixo",
"ControllerSettingsRStickLeft": "Esquerda",
"ControllerSettingsRStickRight": "Direita",
"ControllerSettingsRStickStick": "Analógico",
"ControllerSettingsRStickInvertXAxis": "Inverter eixo X",
"ControllerSettingsRStickInvertYAxis": "Inverter eixo Y",
"ControllerSettingsRStickDeadzone": "Zona morta:",
"ControllerSettingsTriggersLeft": "Gatilhos esquerda", "ControllerSettingsTriggersLeft": "Gatilhos esquerda",
"ControllerSettingsTriggersRight": "Gatilhos direita", "ControllerSettingsTriggersRight": "Gatilhos direita",
"ControllerSettingsTriggersButtonsLeft": "Botões de gatilho esquerda", "ControllerSettingsTriggersButtonsLeft": "Botões de gatilho esquerda",
@ -262,6 +268,7 @@
"UserProfilesAddNewProfile": "Adicionar novo perfil", "UserProfilesAddNewProfile": "Adicionar novo perfil",
"UserProfilesDelete": "Apagar", "UserProfilesDelete": "Apagar",
"UserProfilesClose": "Fechar", "UserProfilesClose": "Fechar",
"ProfileNameSelectionWatermark": "Escolha um apelido",
"ProfileImageSelectionTitle": "Seleção da imagem de perfil", "ProfileImageSelectionTitle": "Seleção da imagem de perfil",
"ProfileImageSelectionHeader": "Escolha uma imagem de perfil", "ProfileImageSelectionHeader": "Escolha uma imagem de perfil",
"ProfileImageSelectionNote": "Você pode importar uma imagem customizada, ou selecionar um avatar do firmware", "ProfileImageSelectionNote": "Você pode importar uma imagem customizada, ou selecionar um avatar do firmware",
@ -281,7 +288,8 @@
"ControllerSettingsRemoveProfileToolTip": "Remover perfil", "ControllerSettingsRemoveProfileToolTip": "Remover perfil",
"ControllerSettingsSaveProfileToolTip": "Salvar perfil", "ControllerSettingsSaveProfileToolTip": "Salvar perfil",
"MenuBarFileToolsTakeScreenshot": "Salvar captura de tela", "MenuBarFileToolsTakeScreenshot": "Salvar captura de tela",
"MenuBarFileToolsHideUi": "Hide UI", "MenuBarFileToolsHideUi": "Esconder Interface",
"GameListContextMenuRunApplication": "Run Application",
"GameListContextMenuToggleFavorite": "Alternar favorito", "GameListContextMenuToggleFavorite": "Alternar favorito",
"GameListContextMenuToggleFavoriteToolTip": "Marca ou desmarca jogo como favorito", "GameListContextMenuToggleFavoriteToolTip": "Marca ou desmarca jogo como favorito",
"SettingsTabGeneralTheme": "Tema", "SettingsTabGeneralTheme": "Tema",
@ -337,6 +345,10 @@
"DialogFirmwareInstallEmbeddedSuccessMessage": "Nenhum firmware instalado foi encontrado, mas Ryujinx conseguiu instalar o firmware {0} do jogo fornecido.\nO emulador será reiniciado.", "DialogFirmwareInstallEmbeddedSuccessMessage": "Nenhum firmware instalado foi encontrado, mas Ryujinx conseguiu instalar o firmware {0} do jogo fornecido.\nO emulador será reiniciado.",
"DialogFirmwareNoFirmwareInstalledMessage": "Firmware não foi instalado", "DialogFirmwareNoFirmwareInstalledMessage": "Firmware não foi instalado",
"DialogFirmwareInstalledMessage": "Firmware {0} foi instalado", "DialogFirmwareInstalledMessage": "Firmware {0} foi instalado",
"DialogInstallFileTypesSuccessMessage": "Tipos de arquivo instalados com sucesso!",
"DialogInstallFileTypesErrorMessage": "Falha ao instalar tipos de arquivo.",
"DialogUninstallFileTypesSuccessMessage": "Tipos de arquivo desinstalados com sucesso!",
"DialogUninstallFileTypesErrorMessage": "Falha ao desinstalar tipos de arquivo.",
"DialogOpenSettingsWindowLabel": "Abrir janela de configurações", "DialogOpenSettingsWindowLabel": "Abrir janela de configurações",
"DialogControllerAppletTitle": "Applet de controle", "DialogControllerAppletTitle": "Applet de controle",
"DialogMessageDialogErrorExceptionMessage": "Erro ao exibir diálogo de mensagem: {0}", "DialogMessageDialogErrorExceptionMessage": "Erro ao exibir diálogo de mensagem: {0}",
@ -368,6 +380,9 @@
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Versão do sistema {0} instalada com sucesso.", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Versão do sistema {0} instalada com sucesso.",
"DialogUserProfileDeletionWarningMessage": "Não haveria nenhum perfil selecionado se o perfil atual fosse deletado", "DialogUserProfileDeletionWarningMessage": "Não haveria nenhum perfil selecionado se o perfil atual fosse deletado",
"DialogUserProfileDeletionConfirmMessage": "Deseja deletar o perfil selecionado", "DialogUserProfileDeletionConfirmMessage": "Deseja deletar o perfil selecionado",
"DialogUserProfileUnsavedChangesTitle": "Alerta - Alterações não salvas",
"DialogUserProfileUnsavedChangesMessage": "Você fez alterações para este perfil de usuário que não foram salvas.",
"DialogUserProfileUnsavedChangesSubMessage": "Deseja descartar as alterações?",
"DialogControllerSettingsModifiedConfirmMessage": "As configurações de controle atuais foram atualizadas.", "DialogControllerSettingsModifiedConfirmMessage": "As configurações de controle atuais foram atualizadas.",
"DialogControllerSettingsModifiedConfirmSubMessage": "Deseja salvar?", "DialogControllerSettingsModifiedConfirmSubMessage": "Deseja salvar?",
"DialogLoadNcaErrorMessage": "{0}. Arquivo com erro: {1}", "DialogLoadNcaErrorMessage": "{0}. Arquivo com erro: {1}",
@ -416,6 +431,7 @@
"DlcManagerEnableAllButton": "Habilitar todos", "DlcManagerEnableAllButton": "Habilitar todos",
"DlcManagerDisableAllButton": "Desabilitar todos", "DlcManagerDisableAllButton": "Desabilitar todos",
"MenuBarOptionsChangeLanguage": "Mudar idioma", "MenuBarOptionsChangeLanguage": "Mudar idioma",
"MenuBarShowFileTypes": "Mostrar tipos de arquivo",
"CommonSort": "Ordenar", "CommonSort": "Ordenar",
"CommonShowNames": "Exibir nomes", "CommonShowNames": "Exibir nomes",
"CommonFavorite": "Favorito", "CommonFavorite": "Favorito",
@ -445,6 +461,7 @@
"MemoryManagerSoftwareTooltip": "Usar uma tabela de página via software para tradução de endereços. Maior precisão, porém performance mais baixa.", "MemoryManagerSoftwareTooltip": "Usar uma tabela de página via software para tradução de endereços. Maior precisão, porém performance mais baixa.",
"MemoryManagerHostTooltip": "Mapeia memória no espaço de endereço hóspede diretamente. Compilação e execução do JIT muito mais rápida.", "MemoryManagerHostTooltip": "Mapeia memória no espaço de endereço hóspede diretamente. Compilação e execução do JIT muito mais rápida.",
"MemoryManagerUnsafeTooltip": "Mapeia memória diretamente, mas sem limitar o acesso ao espaço de endereçamento do sistema convidado. Mais rápido, porém menos seguro. O aplicativo convidado pode acessar memória de qualquer parte do Ryujinx, então apenas rode programas em que você confia nesse modo.", "MemoryManagerUnsafeTooltip": "Mapeia memória diretamente, mas sem limitar o acesso ao espaço de endereçamento do sistema convidado. Mais rápido, porém menos seguro. O aplicativo convidado pode acessar memória de qualquer parte do Ryujinx, então apenas rode programas em que você confia nesse modo.",
"UseHypervisorTooltip": "Usa o Hypervisor em vez de JIT (recompilador dinâmico). Melhora significativamente o desempenho quando disponível, mas pode ser instável no seu estado atual.",
"DRamTooltip": "Expande a memória do sistema emulado de 4GiB para 6GiB", "DRamTooltip": "Expande a memória do sistema emulado de 4GiB para 6GiB",
"IgnoreMissingServicesTooltip": "Habilita ou desabilita a opção de ignorar serviços não implementados", "IgnoreMissingServicesTooltip": "Habilita ou desabilita a opção de ignorar serviços não implementados",
"GraphicsBackendThreadingTooltip": "Habilita multithreading do backend gráfico", "GraphicsBackendThreadingTooltip": "Habilita multithreading do backend gráfico",
@ -527,6 +544,9 @@
"SwkbdMinCharacters": "Deve ter pelo menos {0} caracteres", "SwkbdMinCharacters": "Deve ter pelo menos {0} caracteres",
"SwkbdMinRangeCharacters": "Deve ter entre {0}-{1} caracteres", "SwkbdMinRangeCharacters": "Deve ter entre {0}-{1} caracteres",
"SoftwareKeyboard": "Teclado por Software", "SoftwareKeyboard": "Teclado por Software",
"SoftwareKeyboardModeNumbersOnly": "Must be numbers only",
"SoftwareKeyboardModeAlphabet": "Must be non CJK-characters only",
"SoftwareKeyboardModeASCII": "Must be ASCII text only",
"DialogControllerAppletMessagePlayerRange": "O aplicativo requer {0} jogador(es) com:\n\nTIPOS: {1}\n\nJOGADORES: {2}\n\n{3}Por favor, abra as configurações e reconfigure os controles agora ou clique em Fechar.", "DialogControllerAppletMessagePlayerRange": "O aplicativo requer {0} jogador(es) com:\n\nTIPOS: {1}\n\nJOGADORES: {2}\n\n{3}Por favor, abra as configurações e reconfigure os controles agora ou clique em Fechar.",
"DialogControllerAppletMessage": "O aplicativo requer exatamente {0} jogador(es) com:\n\nTIPOS: {1}\n\nJOGADORES: {2}\n\n{3}Por favor, abra as configurações e reconfigure os controles agora ou clique em Fechar.", "DialogControllerAppletMessage": "O aplicativo requer exatamente {0} jogador(es) com:\n\nTIPOS: {1}\n\nJOGADORES: {2}\n\n{3}Por favor, abra as configurações e reconfigure os controles agora ou clique em Fechar.",
"DialogControllerAppletDockModeSet": "Modo TV ativado. Portátil também não é válido.\n\n", "DialogControllerAppletDockModeSet": "Modo TV ativado. Portátil também não é válido.\n\n",
@ -572,6 +592,7 @@
"DlcWindowTitle": "Gerenciador de DLC", "DlcWindowTitle": "Gerenciador de DLC",
"UpdateWindowTitle": "Gerenciador de atualizações", "UpdateWindowTitle": "Gerenciador de atualizações",
"CheatWindowHeading": "Cheats disponíveis para {0} [{1}]", "CheatWindowHeading": "Cheats disponíveis para {0} [{1}]",
"BuildId": "BuildId:",
"DlcWindowHeading": "{0} DLCs disponíveis para {1} ({2})", "DlcWindowHeading": "{0} DLCs disponíveis para {1} ({2})",
"UserProfilesEditProfile": "Editar selecionado", "UserProfilesEditProfile": "Editar selecionado",
"Cancel": "Cancelar", "Cancel": "Cancelar",
@ -599,6 +620,8 @@
"SettingsTabHotkeysVolumeDownHotkey": "Diminuir volume:", "SettingsTabHotkeysVolumeDownHotkey": "Diminuir volume:",
"SettingsEnableMacroHLE": "Habilitar emulação de alto nível para Macros", "SettingsEnableMacroHLE": "Habilitar emulação de alto nível para Macros",
"SettingsEnableMacroHLETooltip": "Habilita emulação de alto nível de códigos Macro da GPU.\n\nMelhora a performance, mas pode causar problemas gráficos em alguns jogos.\n\nEm caso de dúvida, deixe ATIVADO.", "SettingsEnableMacroHLETooltip": "Habilita emulação de alto nível de códigos Macro da GPU.\n\nMelhora a performance, mas pode causar problemas gráficos em alguns jogos.\n\nEm caso de dúvida, deixe ATIVADO.",
"SettingsEnableColorSpacePassthrough": "Color Space Passthrough",
"SettingsEnableColorSpacePassthroughTooltip": "Directs the Vulkan backend to pass through color information without specifying a color space. For users with wide gamut displays, this may result in more vibrant colors, at the cost of color correctness.",
"VolumeShort": "Vol", "VolumeShort": "Vol",
"UserProfilesManageSaves": "Gerenciar jogos salvos", "UserProfilesManageSaves": "Gerenciar jogos salvos",
"DeleteUserSave": "Deseja apagar o jogo salvo do usuário para este jogo?", "DeleteUserSave": "Deseja apagar o jogo salvo do usuário para este jogo?",
@ -610,5 +633,24 @@
"Search": "Buscar", "Search": "Buscar",
"UserProfilesRecoverLostAccounts": "Recuperar contas perdidas", "UserProfilesRecoverLostAccounts": "Recuperar contas perdidas",
"Recover": "Recuperar", "Recover": "Recuperar",
"UserProfilesRecoverHeading": "Jogos salvos foram encontrados para as seguintes contas" "UserProfilesRecoverHeading": "Jogos salvos foram encontrados para as seguintes contas",
"UserProfilesRecoverEmptyList": "Nenhum perfil para recuperar",
"GraphicsAATooltip": "Aplica anti-serrilhamento à renderização do jogo",
"GraphicsAALabel": "Anti-serrilhado:",
"GraphicsScalingFilterLabel": "Filtro de escala:",
"GraphicsScalingFilterTooltip": "Habilita escala do Framebuffer",
"GraphicsScalingFilterLevelLabel": "Nível",
"GraphicsScalingFilterLevelTooltip": "Define o nível do filtro de escala",
"SmaaLow": "SMAA Baixo",
"SmaaMedium": "SMAA Médio",
"SmaaHigh": "SMAA Alto",
"SmaaUltra": "SMAA Ultra",
"UserEditorTitle": "Editar usuário",
"UserEditorTitleCreate": "Criar usuário",
"SettingsTabNetworkInterface": "Interface de rede:",
"NetworkInterfaceTooltip": "A interface de rede usada para recursos LAN (rede local)",
"NetworkInterfaceDefault": "Padrão",
"PackagingShaders": "Packaging Shaders",
"AboutChangelogButton": "View Changelog on GitHub",
"AboutChangelogButtonTooltipMessage": "Click to open the changelog for this version in your default browser."
} }

View file

@ -1,12 +1,13 @@
{ {
"Language": "Русский", "Language": "Русский",
"MenuBarFileOpenApplet": "Открыть апплет", "MenuBarFileOpenApplet": "Открыть апплет",
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "Открыть апплет Mii Editor в автономном режиме.", "MenuBarFileOpenAppletOpenMiiAppletToolTip": "Открыть апплет Mii Editor в автономном режиме",
"SettingsTabInputDirectMouseAccess": "Прямой доступ с помощью мыши", "SettingsTabInputDirectMouseAccess": "Прямой доступ к мыши",
"SettingsTabSystemMemoryManagerMode": "Режим диспетчера памяти:", "SettingsTabSystemMemoryManagerMode": "Режим диспетчера памяти:",
"SettingsTabSystemMemoryManagerModeSoftware": "Программное обеспечение", "SettingsTabSystemMemoryManagerModeSoftware": "Программное обеспечение",
"SettingsTabSystemMemoryManagerModeHost": "Хост (быстро)", "SettingsTabSystemMemoryManagerModeHost": "Хост (быстро)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "Хост не установлен (самый быстрый, небезопасный)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "Хост не установлен (самый быстрый, небезопасный)",
"SettingsTabSystemUseHypervisor": "Использовать Гипервизор",
"MenuBarFile": "_Файл", "MenuBarFile": "_Файл",
"MenuBarFileOpenFromFile": "_Загрузить приложение из файла", "MenuBarFileOpenFromFile": "_Загрузить приложение из файла",
"MenuBarFileOpenUnpacked": "Загрузить _Распакованную игру", "MenuBarFileOpenUnpacked": "Загрузить _Распакованную игру",
@ -25,10 +26,13 @@
"MenuBarTools": "_Инструменты", "MenuBarTools": "_Инструменты",
"MenuBarToolsInstallFirmware": "Установить прошивку", "MenuBarToolsInstallFirmware": "Установить прошивку",
"MenuBarFileToolsInstallFirmwareFromFile": "Установить прошивку из XCI или ZIP", "MenuBarFileToolsInstallFirmwareFromFile": "Установить прошивку из XCI или ZIP",
"MenuBarFileToolsInstallFirmwareFromDirectory": "Установить прошивку из каталога", "MenuBarFileToolsInstallFirmwareFromDirectory": "Установить прошивку из папки",
"MenuBarToolsManageFileTypes": "Управление типами файлов",
"MenuBarToolsInstallFileTypes": "Установить типы файлов",
"MenuBarToolsUninstallFileTypes": "Удалить типы файлов",
"MenuBarHelp": "Помощь", "MenuBarHelp": "Помощь",
"MenuBarHelpCheckForUpdates": "Проверить обновление", "MenuBarHelpCheckForUpdates": "Проверка обновления",
"MenuBarHelpAbout": "О", "MenuBarHelpAbout": "О программе",
"MenuSearch": "Поиск...", "MenuSearch": "Поиск...",
"GameListHeaderFavorite": "Избранные", "GameListHeaderFavorite": "Избранные",
"GameListHeaderIcon": "Значок", "GameListHeaderIcon": "Значок",
@ -40,44 +44,54 @@
"GameListHeaderFileExtension": "Расширение файла", "GameListHeaderFileExtension": "Расширение файла",
"GameListHeaderFileSize": "Размер файла", "GameListHeaderFileSize": "Размер файла",
"GameListHeaderPath": "Путь", "GameListHeaderPath": "Путь",
"GameListContextMenuOpenUserSaveDirectory": "Открыть каталог сохранений пользователя", "GameListContextMenuOpenUserSaveDirectory": "Открыть папку сохранений пользователя",
"GameListContextMenuOpenUserSaveDirectoryToolTip": "Открывает каталог, содержащий пользовательское сохранение приложения", "GameListContextMenuOpenUserSaveDirectoryToolTip": "Открывает папку, содержащую пользовательские сохранения",
"GameListContextMenuOpenDeviceSaveDirectory": "Открыть каталог пользовательских устройств", "GameListContextMenuOpenDeviceSaveDirectory": "Открыть папку сохраненных устройств",
"GameListContextMenuOpenDeviceSaveDirectoryToolTip": "Открывает каталог, содержащий сохранение устройства приложения", "GameListContextMenuOpenDeviceSaveDirectoryToolTip": "Открывает папку, содержащую сохраненные устройства",
"GameListContextMenuOpenBcatSaveDirectory": "Открыть каталог пользователей BCAT", "GameListContextMenuOpenBcatSaveDirectory": "Открыть папку сохраненных BCAT",
"GameListContextMenuOpenBcatSaveDirectoryToolTip": "Открывает каталог, содержащий BCAT сохранения приложения.", "GameListContextMenuOpenBcatSaveDirectoryToolTip": "Открывает папку, содержащую сохраненные BCAT.",
"GameListContextMenuManageTitleUpdates": "Управление обновлениями заголовков", "GameListContextMenuManageTitleUpdates": "Управление обновлениями названий",
"GameListContextMenuManageTitleUpdatesToolTip": "Открывает окно управления обновлением заголовков", "GameListContextMenuManageTitleUpdatesToolTip": "Открывает окно управления обновлением заголовков",
"GameListContextMenuManageDlc": "Управление DLC", "GameListContextMenuManageDlc": "Управление DLC",
"GameListContextMenuManageDlcToolTip": "Открывает окно управления DLC", "GameListContextMenuManageDlcToolTip": "Открывает окно управления DLC",
"GameListContextMenuOpenModsDirectory": "Открыть каталог модификаций", "GameListContextMenuOpenModsDirectory": "Открыть папку с модами",
"GameListContextMenuOpenModsDirectoryToolTip": "Открывает каталог, содержащий модификации приложения", "GameListContextMenuOpenModsDirectoryToolTip": "Открывает папку, содержащую моды приложений и игр",
"GameListContextMenuCacheManagement": "Управление кэшем", "GameListContextMenuCacheManagement": "Управление кэшем",
"GameListContextMenuCacheManagementPurgePptc": "Очистить кэш PPTC", "GameListContextMenuCacheManagementPurgePptc": "Перестройка очереди PPTC",
"GameListContextMenuCacheManagementPurgePptcToolTip": "Удаляет кэш PPTC приложения", "GameListContextMenuCacheManagementPurgePptcToolTip": "Запускает перестройку PPTC во время запуска следующей игры.",
"GameListContextMenuCacheManagementPurgeShaderCache": "Очистить кэш шейдеров", "GameListContextMenuCacheManagementPurgeShaderCache": "Очистить кэш шейдеров",
"GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "Удаляет кеш шейдеров приложения", "GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "Удаляет кеш шейдеров приложения",
"GameListContextMenuCacheManagementOpenPptcDirectory": "Открыть PPTC каталог", "GameListContextMenuCacheManagementOpenPptcDirectory": "Открыть папку PPTC",
"GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "Открывает каталог, содержащий PPTC кэш приложения", "GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "Открывает папку, содержащую PPTC кэш приложений и игр",
"GameListContextMenuCacheManagementOpenShaderCacheDirectory": "Открыть каталог кэша шейдеров", "GameListContextMenuCacheManagementOpenShaderCacheDirectory": "Открыть папку кэша шейдеров",
"GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "Открывает каталог, содержащий кэш шейдеров приложения", "GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "Открывает папку, содержащую кэш шейдеров приложений и игр",
"GameListContextMenuExtractData": "Извлечь данные", "GameListContextMenuExtractData": "Извлечь данные",
"GameListContextMenuExtractDataExeFS": "ExeFS", "GameListContextMenuExtractDataExeFS": "ExeFS",
"GameListContextMenuExtractDataExeFSToolTip": "Извлеrftn раздел ExeFS из текущей конфигурации приложения (включая обновления)", "GameListContextMenuExtractDataExeFSToolTip": "Извлечение раздела ExeFS из текущих настроек приложения (включая обновления)",
"GameListContextMenuExtractDataRomFS": "RomFS", "GameListContextMenuExtractDataRomFS": "RomFS",
"GameListContextMenuExtractDataRomFSToolTip": "Извлекает раздел RomFS из текущей конфигурации приложения (включая обновления)", "GameListContextMenuExtractDataRomFSToolTip": "Извлечение раздела RomFS из текущих настроек приложения (включая обновления)",
"GameListContextMenuExtractDataLogo": "Logo", "GameListContextMenuExtractDataLogo": "Логотип",
"GameListContextMenuExtractDataLogoToolTip": "Извлекает раздел логотипа из текущей конфигурации приложения (включая обновления)", "GameListContextMenuExtractDataLogoToolTip": "Извлечение раздела с логотипом из текущих настроек приложения (включая обновления)",
"StatusBarGamesLoaded": "{0}/{1} Игр загружено", "StatusBarGamesLoaded": "{0}/{1} Игр загружено",
"StatusBarSystemVersion": "Версия системы: {0}", "StatusBarSystemVersion": "Версия системы: {0}",
"LinuxVmMaxMapCountDialogTitle": "Обнаружен низкий лимит разметки памяти",
"LinuxVmMaxMapCountDialogTextPrimary": "Вы хотите увеличить значение vm.max_map_count до {0}",
"LinuxVmMaxMapCountDialogTextSecondary": "Некоторые игры могут создавать большую разметку памяти, чем разрешено на данный момент по умолчанию. Ryujinx вылетит при превышении этого лимита.",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "Да, до следующего перезапуска",
"LinuxVmMaxMapCountDialogButtonPersistent": "Да, постоянно",
"LinuxVmMaxMapCountWarningTextPrimary": "Максимальная разметка памяти меньше, чем рекомендуется.",
"LinuxVmMaxMapCountWarningTextSecondary": "Текущее значение vm.max_map_count ({0}) меньше, чем {1}. Некоторые игры могут попытаться создать большую разметку памяти, чем разрешено в данный момент. Ryujinx вылетит как только этот лимит будет превышен.\n\nВозможно, вы захотите вручную увеличить лимит или установить pkexec, что позволит Ryujinx помочь справиться с превышением лимита.",
"Settings": "Параметры", "Settings": "Параметры",
"SettingsTabGeneral": "Пользовательский интерфейс", "SettingsTabGeneral": "Пользовательский интерфейс",
"SettingsTabGeneralGeneral": "Общее", "SettingsTabGeneralGeneral": "Общее",
"SettingsTabGeneralEnableDiscordRichPresence": "Включить расширенное присутствие Discord", "SettingsTabGeneralEnableDiscordRichPresence": "Включить Discord Rich Presence",
"SettingsTabGeneralCheckUpdatesOnLaunch": "Проверять наличие обновлений при запуске", "SettingsTabGeneralCheckUpdatesOnLaunch": "Проверять наличие обновлений при запуске",
"SettingsTabGeneralShowConfirmExitDialog": "Показать диалоговое окно \"Подтвердить выход\"", "SettingsTabGeneralShowConfirmExitDialog": "Показать диалоговое окно \"Подтвердить выход\"",
"SettingsTabGeneralHideCursor": "Скрыть курсор",
"SettingsTabGeneralHideCursorNever": "Никогда",
"SettingsTabGeneralHideCursorOnIdle": "Скрыть курсор в режиме ожидания", "SettingsTabGeneralHideCursorOnIdle": "Скрыть курсор в режиме ожидания",
"SettingsTabGeneralGameDirectories": "Каталоги игр", "SettingsTabGeneralHideCursorAlways": "Всегда",
"SettingsTabGeneralGameDirectories": "Папки с играми",
"SettingsTabGeneralAdd": "Добавить", "SettingsTabGeneralAdd": "Добавить",
"SettingsTabGeneralRemove": "Удалить", "SettingsTabGeneralRemove": "Удалить",
"SettingsTabSystem": "Система", "SettingsTabSystem": "Система",
@ -149,21 +163,22 @@
"SettingsTabLogging": "Журналирование", "SettingsTabLogging": "Журналирование",
"SettingsTabLoggingLogging": "Журналирование", "SettingsTabLoggingLogging": "Журналирование",
"SettingsTabLoggingEnableLoggingToFile": "Включить запись в файл", "SettingsTabLoggingEnableLoggingToFile": "Включить запись в файл",
"SettingsTabLoggingEnableStubLogs": "Включить журналы-заглушки", "SettingsTabLoggingEnableStubLogs": "Включить журнал-заглушку",
"SettingsTabLoggingEnableInfoLogs": "Включить информационные журналы", "SettingsTabLoggingEnableInfoLogs": "Включить информационный журнал",
"SettingsTabLoggingEnableWarningLogs": "Включить журналы предупреждений", "SettingsTabLoggingEnableWarningLogs": "Включить журнал предупреждений",
"SettingsTabLoggingEnableErrorLogs": "Включить журналы ошибок", "SettingsTabLoggingEnableErrorLogs": "Включить журнал ошибок",
"SettingsTabLoggingEnableTraceLogs": "Включить журнал трассировки", "SettingsTabLoggingEnableTraceLogs": "Включить журнал трассировки",
"SettingsTabLoggingEnableGuestLogs": "Включить гостевые журналы", "SettingsTabLoggingEnableGuestLogs": "Включить гостевые журналы",
"SettingsTabLoggingEnableFsAccessLogs": "Включить журналы доступа Fs", "SettingsTabLoggingEnableFsAccessLogs": "Включить журналы доступа файловой системы",
"SettingsTabLoggingFsGlobalAccessLogMode": "Режим журнала глобального доступа Fs:", "SettingsTabLoggingFsGlobalAccessLogMode": "Режим журнала глобального доступа файловой системы:",
"SettingsTabLoggingDeveloperOptions": "Параметры разработчика (ВНИМАНИЕ: снизит производительность)", "SettingsTabLoggingDeveloperOptions": "Параметры разработчика",
"SettingsTabLoggingGraphicsBackendLogLevel": "Graphics Backend Log Level:", "SettingsTabLoggingDeveloperOptionsNote": "ВНИМАНИЕ: Снижает производительность",
"SettingsTabLoggingGraphicsBackendLogLevel": "Уровень журнала бэкенда графики:",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "Ничего", "SettingsTabLoggingGraphicsBackendLogLevelNone": "Ничего",
"SettingsTabLoggingGraphicsBackendLogLevelError": "Ошибка", "SettingsTabLoggingGraphicsBackendLogLevelError": "Ошибка",
"SettingsTabLoggingGraphicsBackendLogLevelPerformance": "Замедления", "SettingsTabLoggingGraphicsBackendLogLevelPerformance": "Замедления",
"SettingsTabLoggingGraphicsBackendLogLevelAll": "Всё", "SettingsTabLoggingGraphicsBackendLogLevelAll": "Всё",
"SettingsTabLoggingEnableDebugLogs": "Включить журналы отладки", "SettingsTabLoggingEnableDebugLogs": "Включить журнал отладки",
"SettingsTabInput": "Управление", "SettingsTabInput": "Управление",
"SettingsTabInputEnableDockedMode": "Включить режим закрепления", "SettingsTabInputEnableDockedMode": "Включить режим закрепления",
"SettingsTabInputDirectKeyboardAccess": "Прямой доступ с клавиатуры", "SettingsTabInputDirectKeyboardAccess": "Прямой доступ с клавиатуры",
@ -187,7 +202,7 @@
"ControllerSettingsDeviceDisabled": "Отключить", "ControllerSettingsDeviceDisabled": "Отключить",
"ControllerSettingsControllerType": "Тип контроллера", "ControllerSettingsControllerType": "Тип контроллера",
"ControllerSettingsControllerTypeHandheld": "Портативный", "ControllerSettingsControllerTypeHandheld": "Портативный",
"ControllerSettingsControllerTypeProController": "Pro Controller", "ControllerSettingsControllerTypeProController": "Pro Контроллер",
"ControllerSettingsControllerTypeJoyConPair": "JoyCon Пара", "ControllerSettingsControllerTypeJoyConPair": "JoyCon Пара",
"ControllerSettingsControllerTypeJoyConLeft": "JoyCon Левый", "ControllerSettingsControllerTypeJoyConLeft": "JoyCon Левый",
"ControllerSettingsControllerTypeJoyConRight": "JoyCon Правый", "ControllerSettingsControllerTypeJoyConRight": "JoyCon Правый",
@ -204,30 +219,21 @@
"ControllerSettingsButtonPlus": "+", "ControllerSettingsButtonPlus": "+",
"ControllerSettingsButtonMinus": "-", "ControllerSettingsButtonMinus": "-",
"ControllerSettingsDPad": "Направляющая панель", "ControllerSettingsDPad": "Направляющая панель",
"ControllerSettingsDPadUp": "Верх", "ControllerSettingsDPadUp": "Вверх",
"ControllerSettingsDPadDown": "Низ", "ControllerSettingsDPadDown": "Вниз",
"ControllerSettingsDPadLeft": "Лево", "ControllerSettingsDPadLeft": "Влево",
"ControllerSettingsDPadRight": "Право", "ControllerSettingsDPadRight": "Вправо",
"ControllerSettingsStickButton": "Кнопка",
"ControllerSettingsStickUp": "Вверх",
"ControllerSettingsStickDown": "Вниз",
"ControllerSettingsStickLeft": "Влево",
"ControllerSettingsStickRight": "Вправо",
"ControllerSettingsStickStick": "Стик",
"ControllerSettingsStickInvertXAxis": "Инвертировать X ось",
"ControllerSettingsStickInvertYAxis": "Инвертировать Y ось",
"ControllerSettingsStickDeadzone": "Мёртвая зона:",
"ControllerSettingsLStick": "Левый стик", "ControllerSettingsLStick": "Левый стик",
"ControllerSettingsLStickButton": "Кнопки",
"ControllerSettingsLStickUp": "Верх",
"ControllerSettingsLStickDown": "Низ",
"ControllerSettingsLStickLeft": "Лево",
"ControllerSettingsLStickRight": "Право",
"ControllerSettingsLStickStick": "Стик",
"ControllerSettingsLStickInvertXAxis": "Перевернуть стик X",
"ControllerSettingsLStickInvertYAxis": "Перевернуть стик Y",
"ControllerSettingsLStickDeadzone": "Мёртвая зона:",
"ControllerSettingsRStick": "Правый стик", "ControllerSettingsRStick": "Правый стик",
"ControllerSettingsRStickButton": "Кнопки",
"ControllerSettingsRStickUp": "Верх",
"ControllerSettingsRStickDown": "Низ",
"ControllerSettingsRStickLeft": "Лево",
"ControllerSettingsRStickRight": "Право",
"ControllerSettingsRStickStick": "Стик",
"ControllerSettingsRStickInvertXAxis": "Перевернуть стик X",
"ControllerSettingsRStickInvertYAxis": "Перевернуть стик Y",
"ControllerSettingsRStickDeadzone": "Мёртвая зона:",
"ControllerSettingsTriggersLeft": "Триггеры слева", "ControllerSettingsTriggersLeft": "Триггеры слева",
"ControllerSettingsTriggersRight": "Триггеры справа", "ControllerSettingsTriggersRight": "Триггеры справа",
"ControllerSettingsTriggersButtonsLeft": "Триггерные кнопки слева", "ControllerSettingsTriggersButtonsLeft": "Триггерные кнопки слева",
@ -241,7 +247,7 @@
"ControllerSettingsLeftSR": "SR", "ControllerSettingsLeftSR": "SR",
"ControllerSettingsRightSL": "SL", "ControllerSettingsRightSL": "SL",
"ControllerSettingsRightSR": "SR", "ControllerSettingsRightSR": "SR",
"ControllerSettingsExtraButtonsLeft": "Левый кнопки", "ControllerSettingsExtraButtonsLeft": "Левые кнопки",
"ControllerSettingsExtraButtonsRight": "Правые кнопки", "ControllerSettingsExtraButtonsRight": "Правые кнопки",
"ControllerSettingsMisc": "Разное", "ControllerSettingsMisc": "Разное",
"ControllerSettingsTriggerThreshold": "Порог срабатывания:", "ControllerSettingsTriggerThreshold": "Порог срабатывания:",
@ -262,18 +268,19 @@
"UserProfilesAddNewProfile": "Добавить новый профиль", "UserProfilesAddNewProfile": "Добавить новый профиль",
"UserProfilesDelete": "Удалить", "UserProfilesDelete": "Удалить",
"UserProfilesClose": "Закрыть", "UserProfilesClose": "Закрыть",
"ProfileNameSelectionWatermark": "Выберите псевдоним",
"ProfileImageSelectionTitle": "Выбор изображения профиля", "ProfileImageSelectionTitle": "Выбор изображения профиля",
"ProfileImageSelectionHeader": "Выберите изображение профиля", "ProfileImageSelectionHeader": "Выберите изображение профиля",
"ProfileImageSelectionNote": "Вы можете импортировать собственное изображение профиля или выбрать аватар из системной прошивки.", "ProfileImageSelectionNote": "Вы можете импортировать собственное изображение профиля или выбрать аватар из системной прошивки.",
"ProfileImageSelectionImportImage": "Импорт файла изображени", "ProfileImageSelectionImportImage": "Импорт файла изображения",
"ProfileImageSelectionSelectAvatar": "Выберите аватар прошивки", "ProfileImageSelectionSelectAvatar": "Выберите аватар прошивки",
"InputDialogTitle": "Диалоговое окно ввода", "InputDialogTitle": "Диалоговое окно ввода",
"InputDialogOk": "Да", "InputDialogOk": "ОК",
"InputDialogCancel": "Закрыть", "InputDialogCancel": "Отмена",
"InputDialogAddNewProfileTitle": "Выберите имя профиля", "InputDialogAddNewProfileTitle": "Выберите имя профиля",
"InputDialogAddNewProfileHeader": "Пожалуйста, введите имя профиля", "InputDialogAddNewProfileHeader": "Пожалуйста, введите имя профиля",
"InputDialogAddNewProfileSubtext": "(Максимальная длина: {0})", "InputDialogAddNewProfileSubtext": "(Максимальная длина: {0})",
"AvatarChoose": "Выбор", "AvatarChoose": "Выбор аватара",
"AvatarSetBackgroundColor": "Установить цвет фона", "AvatarSetBackgroundColor": "Установить цвет фона",
"AvatarClose": "Закрыть", "AvatarClose": "Закрыть",
"ControllerSettingsLoadProfileToolTip": "Загрузить профиль", "ControllerSettingsLoadProfileToolTip": "Загрузить профиль",
@ -282,6 +289,7 @@
"ControllerSettingsSaveProfileToolTip": "Сохранить профиль", "ControllerSettingsSaveProfileToolTip": "Сохранить профиль",
"MenuBarFileToolsTakeScreenshot": "Сделать снимок экрана", "MenuBarFileToolsTakeScreenshot": "Сделать снимок экрана",
"MenuBarFileToolsHideUi": "Скрыть UI", "MenuBarFileToolsHideUi": "Скрыть UI",
"GameListContextMenuRunApplication": "Запуск приложения",
"GameListContextMenuToggleFavorite": "Переключить Избранное", "GameListContextMenuToggleFavorite": "Переключить Избранное",
"GameListContextMenuToggleFavoriteToolTip": "Переключить любимый статус игры", "GameListContextMenuToggleFavoriteToolTip": "Переключить любимый статус игры",
"SettingsTabGeneralTheme": "Тема", "SettingsTabGeneralTheme": "Тема",
@ -296,7 +304,7 @@
"ControllerSettingsRumbleStrongMultiplier": "Множитель сильной вибрации", "ControllerSettingsRumbleStrongMultiplier": "Множитель сильной вибрации",
"ControllerSettingsRumbleWeakMultiplier": "Множитель слабой вибрации", "ControllerSettingsRumbleWeakMultiplier": "Множитель слабой вибрации",
"DialogMessageSaveNotAvailableMessage": "Нет сохраненных данных для {0} [{1:x16}]", "DialogMessageSaveNotAvailableMessage": "Нет сохраненных данных для {0} [{1:x16}]",
"DialogMessageSaveNotAvailableCreateSaveMessage": "Хотите создать данные сохранения для этой игры?", "DialogMessageSaveNotAvailableCreateSaveMessage": "Создать сохранение для этой игры?",
"DialogConfirmationTitle": "Ryujinx - Подтверждение", "DialogConfirmationTitle": "Ryujinx - Подтверждение",
"DialogUpdaterTitle": "Ryujinx - Обновление", "DialogUpdaterTitle": "Ryujinx - Обновление",
"DialogErrorTitle": "Ryujinx - Ошибка", "DialogErrorTitle": "Ryujinx - Ошибка",
@ -316,7 +324,7 @@
"DialogUpdaterConvertFailedMessage": "Не удалось преобразовать текущую версию Ryujinx.", "DialogUpdaterConvertFailedMessage": "Не удалось преобразовать текущую версию Ryujinx.",
"DialogUpdaterCancelUpdateMessage": "Отмена обновления!", "DialogUpdaterCancelUpdateMessage": "Отмена обновления!",
"DialogUpdaterAlreadyOnLatestVersionMessage": "Вы уже используете самую последнюю версию Ryujinx!", "DialogUpdaterAlreadyOnLatestVersionMessage": "Вы уже используете самую последнюю версию Ryujinx!",
"DialogUpdaterFailedToGetVersionMessage": "Произошла ошибка при попытке получить информацию о выпуске от GitHub Release. Это может быть вызвано, если GitHub Actions компилирует новый релиз. Попробуйте ещё раз через несколько минут.", "DialogUpdaterFailedToGetVersionMessage": "Произошла ошибка при попытке получить информацию о выпуске от GitHub Release. Это может быть вызвано тем, что в данный момент в GitHub Actions компилируется новый релиз. Повторите попытку позже.",
"DialogUpdaterConvertFailedGithubMessage": "Не удалось преобразовать полученную версию Ryujinx из Github Release.", "DialogUpdaterConvertFailedGithubMessage": "Не удалось преобразовать полученную версию Ryujinx из Github Release.",
"DialogUpdaterDownloadingMessage": "Загрузка обновления...", "DialogUpdaterDownloadingMessage": "Загрузка обновления...",
"DialogUpdaterExtractionMessage": "Извлечение обновления...", "DialogUpdaterExtractionMessage": "Извлечение обновления...",
@ -325,18 +333,22 @@
"DialogUpdaterCompleteMessage": "Обновление завершено!", "DialogUpdaterCompleteMessage": "Обновление завершено!",
"DialogUpdaterRestartMessage": "Вы хотите перезапустить Ryujinx сейчас?", "DialogUpdaterRestartMessage": "Вы хотите перезапустить Ryujinx сейчас?",
"DialogUpdaterArchNotSupportedMessage": "Вы используете не поддерживаемую системную архитектуру!", "DialogUpdaterArchNotSupportedMessage": "Вы используете не поддерживаемую системную архитектуру!",
"DialogUpdaterArchNotSupportedSubMessage": "(Поддерживаются только системы x64!)", "DialogUpdaterArchNotSupportedSubMessage": "(Поддерживаются только x64 системы)",
"DialogUpdaterNoInternetMessage": "Вы не подключены к Интернету!", "DialogUpdaterNoInternetMessage": "Вы не подключены к интернету!",
"DialogUpdaterNoInternetSubMessage": "Убедитесь, что у вас есть работающее подключение к Интернету!", "DialogUpdaterNoInternetSubMessage": "Убедитесь, что у вас есть работающее подключение к интернету!",
"DialogUpdaterDirtyBuildMessage": "Вы не можете обновить Dirty Build Ryujinx!", "DialogUpdaterDirtyBuildMessage": "Вы не можете обновить Dirty Build!",
"DialogUpdaterDirtyBuildSubMessage": "Загрузите Ryujinx по адресу https://ryujinx.org/ , если вам нужна поддерживаемая версия.", "DialogUpdaterDirtyBuildSubMessage": "Загрузите Ryujinx по адресу https://ryujinx.org/ если вам нужна поддерживаемая версия.",
"DialogRestartRequiredMessage": "Требуется перезагрузка", "DialogRestartRequiredMessage": "Требуется перезагрузка",
"DialogThemeRestartMessage": "Тема сохранена. Для применения темы требуется перезагрузка.", "DialogThemeRestartMessage": "Тема сохранена. Для применения темы требуется перезапуск.",
"DialogThemeRestartSubMessage": "Вы хотите перезапустить?", "DialogThemeRestartSubMessage": "Вы хотите перезапустить?",
"DialogFirmwareInstallEmbeddedMessage": "Хотите установить прошивку, встроенную в эту игру? (Прошивка {0})", "DialogFirmwareInstallEmbeddedMessage": "Хотите установить прошивку, встроенную в эту игру? (Прошивка {0})",
"DialogFirmwareInstallEmbeddedSuccessMessage": "Установленная прошивка не найдена, но Ryujinx удалось установить прошивку {0} из предоставленной игры.\nЭмулятор запустится.", "DialogFirmwareInstallEmbeddedSuccessMessage": "Установленная прошивка не найдена, но Ryujinx удалось установить прошивку {0} из предоставленной игры.\nТеперь эмулятор запустится.",
"DialogFirmwareNoFirmwareInstalledMessage": "Прошивка не установлена", "DialogFirmwareNoFirmwareInstalledMessage": "Прошивка не установлена",
"DialogFirmwareInstalledMessage": "Прошивка {0} была установлена", "DialogFirmwareInstalledMessage": "Прошивка {0} была установлена",
"DialogInstallFileTypesSuccessMessage": "Успешно установлены типы файлов!",
"DialogInstallFileTypesErrorMessage": "Не удалось установить типы файлов.",
"DialogUninstallFileTypesSuccessMessage": "Успешно удалены типы файлов!",
"DialogUninstallFileTypesErrorMessage": "Не удалось удалить типы файлов.",
"DialogOpenSettingsWindowLabel": "Открыть окно настроек", "DialogOpenSettingsWindowLabel": "Открыть окно настроек",
"DialogControllerAppletTitle": "Апплет контроллера", "DialogControllerAppletTitle": "Апплет контроллера",
"DialogMessageDialogErrorExceptionMessage": "Ошибка отображения диалогового окна сообщений: {0}", "DialogMessageDialogErrorExceptionMessage": "Ошибка отображения диалогового окна сообщений: {0}",
@ -368,6 +380,9 @@
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Версия системы {0} успешно установлена.", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Версия системы {0} успешно установлена.",
"DialogUserProfileDeletionWarningMessage": "Если выбранный профиль будет удален, другие профили не будут открываться.", "DialogUserProfileDeletionWarningMessage": "Если выбранный профиль будет удален, другие профили не будут открываться.",
"DialogUserProfileDeletionConfirmMessage": "Вы хотите удалить выбранный профиль", "DialogUserProfileDeletionConfirmMessage": "Вы хотите удалить выбранный профиль",
"DialogUserProfileUnsavedChangesTitle": "Внимание - Несохраненные изменения",
"DialogUserProfileUnsavedChangesMessage": "Вы внесли изменения в этот профиль пользователя которые не были сохранены.",
"DialogUserProfileUnsavedChangesSubMessage": "Вы хотите отменить изменения?",
"DialogControllerSettingsModifiedConfirmMessage": "Текущие настройки контроллера обновлены.", "DialogControllerSettingsModifiedConfirmMessage": "Текущие настройки контроллера обновлены.",
"DialogControllerSettingsModifiedConfirmSubMessage": "Вы хотите сохранить?", "DialogControllerSettingsModifiedConfirmSubMessage": "Вы хотите сохранить?",
"DialogLoadNcaErrorMessage": "{0}. Файл с ошибкой: {1}", "DialogLoadNcaErrorMessage": "{0}. Файл с ошибкой: {1}",
@ -416,6 +431,7 @@
"DlcManagerEnableAllButton": "Включить все", "DlcManagerEnableAllButton": "Включить все",
"DlcManagerDisableAllButton": "Отключить все", "DlcManagerDisableAllButton": "Отключить все",
"MenuBarOptionsChangeLanguage": "Изменить язык", "MenuBarOptionsChangeLanguage": "Изменить язык",
"MenuBarShowFileTypes": "Показать типы файлов",
"CommonSort": "Сортировать", "CommonSort": "Сортировать",
"CommonShowNames": "Показать названия", "CommonShowNames": "Показать названия",
"CommonFavorite": "Избранные", "CommonFavorite": "Избранные",
@ -423,68 +439,69 @@
"OrderDescending": "По убыванию", "OrderDescending": "По убыванию",
"SettingsTabGraphicsFeatures": "Функции", "SettingsTabGraphicsFeatures": "Функции",
"ErrorWindowTitle": "Окно ошибки", "ErrorWindowTitle": "Окно ошибки",
"ToggleDiscordTooltip": "Включает или отключает Discord Rich Presenc", "ToggleDiscordTooltip": "Включает или отключает отображение в Discord статуса \"Сейчас играет\"",
"AddGameDirBoxTooltip": "Введите каталог игры, чтобы добавить его в список", "AddGameDirBoxTooltip": "Введите папку игры для добавления в список",
"AddGameDirTooltip": "AДобавить папку с игрой в список", "AddGameDirTooltip": "AДобавить папку с игрой в список",
"RemoveGameDirTooltip": "Удалить выбранный каталог игры", "RemoveGameDirTooltip": "Удалить выбранную папку игры",
"CustomThemeCheckTooltip": "Включить или отключить пользовательские темы в графическом интерфейсе", "CustomThemeCheckTooltip": "Включить или отключить пользовательские темы в графическом интерфейсе",
"CustomThemePathTooltip": "Путь к пользовательской теме графического интерфейса", "CustomThemePathTooltip": "Путь к пользовательской теме интерфейса",
"CustomThemeBrowseTooltip": "Обзор пользовательской темы графического интерфейса", "CustomThemeBrowseTooltip": "Просмотр пользовательской темы интерфейса",
"DockModeToggleTooltip": "Включить или отключить режим закрепления", "DockModeToggleTooltip": "\"Стационарный\" режим запускает эмулятор, как если бы Nintendo Switch находилась в доке, что улучшает графику и разрешение в большинстве игр. И наоборот, при отключении этого режима эмулятор будет запускать игры в \"Портативном\" режиме, снижая качество графики.\n\nНастройте управление для Игрока 1 если планируете использовать в \"Стационарном\" режиме; настройте портативное управление если планируете использовать эмулятор в \"Портативном\" режиме.\n\nОставьте включенным если не уверены.",
"DirectKeyboardTooltip": "Включить или отключить «поддержку прямого доступа к клавиатуре (HID)» (предоставляет играм доступ к клавиатуре как к устройству ввода текста)", "DirectKeyboardTooltip": "Включить или отключить «поддержку прямого доступа к клавиатуре (HID)» (предоставляет играм доступ к клавиатуре как к устройству ввода текста)",
"DirectMouseTooltip": "Включить или отключить «поддержку прямого доступа к мыши (HID)» (предоставляет играм доступ к вашей мыши как указывающему устройству)", "DirectMouseTooltip": "Включить или отключить «поддержку прямого доступа к мыши (HID)» (предоставляет играм доступ к вашей мыши как указывающему устройству)",
"RegionTooltip": "Изменяет регион системы", "RegionTooltip": "Изменение региона системы",
"LanguageTooltip": "Изменяет язык системы", "LanguageTooltip": "Изменение языка системы",
"TimezoneTooltip": "Изменяет часовой пояс системы", "TimezoneTooltip": "Изменение часового пояса системы",
"TimeTooltip": "Изменяет системное время", "TimeTooltip": "Изменение системного времени",
"VSyncToggleTooltip": "Включает или отключает Вертикальную Синхронизацию", "VSyncToggleTooltip": "Эмуляция вертикальной синхронизации консоли, которая ограничивает количество кадров в секунду в большинстве игр; отключение может привести к тому, что игры будут запущены с более высокой частотой кадров, но загрузка игры может занять больше времени, либо игра не запустится вообще.\n\nМожно включать и выключать эту настройку непосредственно в игре с помощью горячих клавиш. Если планируете отключить вериткальную синхронизацию, мы рекомендуем настроить горячие клавиши.\n\nРекомендуется оставить включенным.",
"PptcToggleTooltip": "Включает или отключает PPTC", "PptcToggleTooltip": "Сохранение преобразованных JIT-функций таким образом, чтобы их не нужно преобразовывать по новой каждый раз при загрузке игры.\n\nУменьшает статтеры и значительно ускоряет последующую загрузку игр.\n\nРекомендуется оставить включенным.",
"FsIntegrityToggleTooltip": "Включает проверку целостности файлов содержимого игры.", "FsIntegrityToggleTooltip": "Проверяет поврежденные файлы при загрузке игры и если поврежденные файлы обнаружены, отображает ошибку о поврежденном хэше в журнале.\n\nНе влияет на производительность и необходим для содействия в устранении неполадок.\n\nРекомендуется оставить включенным.",
"AudioBackendTooltip": "Изменяет аудио-бэкэнд", "AudioBackendTooltip": "Изменяет используемый аудио-бэкенд для рендера звука.\n\nSDL2 является предпочтительным, в то время как OpenAL и SoundIO используются в качестве резервных. При выборе \"Заглушки\" звук будет отсутствовать.\n\nРекомендуется использование SDL2.",
"MemoryManagerTooltip": "Изменяет способ отображения и доступа к гостевой памяти. Сильно влияет на производительность эмулируемого процессора.", "MemoryManagerTooltip": "Изменение разметки и доступа к гостевой памяти. Значительно влияет на производительность процессора.\n\nРекомендуется оставить \"Хост не установлен\"",
"MemoryManagerSoftwareTooltip": "Использует таблицу страниц программного обеспечения для преобразования адресов. Самая высокая точность, но самая медленная производительность.", "MemoryManagerSoftwareTooltip": "Использует таблицу страниц для преобразования адресов. Самая высокая точность, но самая низкая производительность.",
"MemoryManagerHostTooltip": "Непосредственное отображение памяти в адресном пространстве хоста. Значительно более быстрая JIT-компиляция и выполнение.", "MemoryManagerHostTooltip": "Прямая разметка памяти в адресном пространстве хоста. Значительно более быстрая JIT-компиляция и запуск.",
"MemoryManagerUnsafeTooltip": "Напрямую сопоставляет память, но не маскируйте адрес в гостевом адресном пространстве перед доступом. Быстрее, но ценой безопасности. Гостевое приложение может получить доступ к памяти из любой точки Ryujinx, поэтому в этом режиме запускайте только те программы, которым вы доверяете.", "MemoryManagerUnsafeTooltip": "Производит прямую разметку памяти, но не маскирует адрес в гостевом адресном пространстве перед получением доступа. Быстрее, но менее безопасно. Гостевое приложение может получить доступ к памяти из любой точки Ryujinx, поэтому в этом режиме рекомендуется запускать только те программы, которым вы доверяете.",
"DRamTooltip": "Увеличивает объем памяти в эмулируемой системе с 4 ГБ до 6 ГБ.", "UseHypervisorTooltip": "Использует Гипервизор вместо JIT. Значительно увеличивает производительность, но может быть работать нестабильно.",
"IgnoreMissingServicesTooltip": "Включает или отключает параметр игнорирования отсутствующих служб", "DRamTooltip": "Использует альтернативный макет MemoryMode для имитации использования Nintendo Switch для разработчика.\n\nПолезно только для пакетов текстур с высоким разрешением или модов добавляющих разрешение 4К. Не улучшает производительность.\n\nРекомендуется оставить выключенным.",
"GraphicsBackendThreadingTooltip": "Включает многопоточность графического бэкенда", "IgnoreMissingServicesTooltip": "Игнорирует нереализованные сервисы Horizon OS. Это поможет избежать вылеты при загрузке определенных игр.\n\nРекомендуется оставить выключенным.",
"GalThreadingTooltip": "Выполняет команды графического бэкэнда во втором потоке. Обеспечивает многопоточность компиляции шейдеров во время выполнения, уменьшает заикание и повышает производительность драйверов без собственной поддержки многопоточности. Немного различается пиковая производительность на драйверах с многопоточностью. Ryujinx может потребоваться перезапустить, чтобы правильно отключить встроенную многопоточность драйвера, или вам может потребоваться сделать это вручную, чтобы получить максимальную производительность.", "GraphicsBackendThreadingTooltip": "Выполняет команды графического бэкенда на втором потоке.\n\nУскоряет компиляцию шейдеров, уменьшает статтеры и повышает производительность на драйверах GPU без поддержки многопоточности. Производительность на драйверах с многопоточностью немного выше.\n\nРекомендуется оставить в Авто.",
"ShaderCacheToggleTooltip": "Включает или отключает кэш шейдеров", "GalThreadingTooltip": "Выполняет команды графического бэкенда на во втором потоке.\n\nУскоряет компиляцию шейдеров, уменьшает статтеры и повышает производительность на драйверах GPU без поддержки многопоточности. Производительность на драйверах с многопоточностью немного выше.\n\nРекомендуется оставить в Авто.",
"ResolutionScaleTooltip": "Масштаб разрешения, применяемый к применимым целям рендеринга", "ShaderCacheToggleTooltip": "Сохраняет кэш шейдеров на диске, который уменьшает статтеры при последующих запусках.\n\nРекомендуется оставить включенным.",
"ResolutionScaleEntryTooltip": "Шкала разрешения с плавающей запятой, например 1,5. Неинтегральные весы с большей вероятностью вызовут проблемы или сбои.", "ResolutionScaleTooltip": "Масштабирование разрешения",
"AnisotropyTooltip": "Уровень анизотропной фильтрации (установите значение «Авто», чтобы использовать значение, запрошенное игрой)", "ResolutionScaleEntryTooltip": "Масштабирование разрешения с плавающей запятой, например 1,5. Неинтегральное масштабирование с большой вероятностью вызовет сбои в работе.",
"AspectRatioTooltip": "Соотношение сторон, применяемое к окну рендерера.", "AnisotropyTooltip": "Уровень анизотропной фильтрации (установите значение «Авто», чтобы использовать значение в игре по умолчанию)",
"AspectRatioTooltip": "Соотношение сторон, применяемое к окну.",
"ShaderDumpPathTooltip": "Путь дампа графических шейдеров", "ShaderDumpPathTooltip": "Путь дампа графических шейдеров",
"FileLogTooltip": "Включает или отключает ведение журнала в файл на диске", "FileLogTooltip": "Включает или отключает ведение журнала в файл на диске. Не влияет на производительность.",
"StubLogTooltip": "Включает печать сообщений журнала-заглушки", "StubLogTooltip": "Включает ведение журнала-заглушки. Не влияет на производительность.",
"InfoLogTooltip": "Включает печать сообщений информационного журнала", "InfoLogTooltip": "Включает печать сообщений информационного журнала. Не влияет на производительность.",
"WarnLogTooltip": "Включает печать сообщений журнала предупреждений", "WarnLogTooltip": "Включает печать сообщений журнала предупреждений. Не влияет на производительность.",
"ErrorLogTooltip": "Включает печать сообщений журнала ошибок", "ErrorLogTooltip": "Включает печать сообщений журнала ошибок. Не влияет на производительность.",
"TraceLogTooltip": "Выводит сообщения журнала трассировки в консоли. Не влияет на производительность.", "TraceLogTooltip": "Выводит сообщения журнала трассировки в консоли. Не влияет на производительность.",
"GuestLogTooltip": "Включает печать сообщений гостевого журнала", "GuestLogTooltip": "Включает печать сообщений гостевого журнала. Не влияет на производительность.",
"FileAccessLogTooltip": "Включает печать сообщений журнала доступа к файлам", "FileAccessLogTooltip": "Включает печать сообщений журнала доступа к файлам",
"FSAccessLogModeTooltip": "Включает вывод журнала доступа к FS на консоль. Возможные режимы 0-3", "FSAccessLogModeTooltip": "Включает вывод журнала доступа к файловой системе. Возможные режимы: 0-3",
"DeveloperOptionTooltip": "Используйте с осторожностью", "DeveloperOptionTooltip": "Используйте с осторожностью",
"OpenGlLogLevel": "Требует включения соответствующих уровней ведения журнала", "OpenGlLogLevel": "Требует включения соответствующих уровней ведения журнала",
"DebugLogTooltip": "Включает печать сообщений журнала отладки", "DebugLogTooltip": "Выводит журнал сообщений отладки в консоли.\n\nИспользуйте только в случае просьбы разработчика, так как включение этой функции затруднит чтение журналов и ухудшит работу эмулятора.",
"LoadApplicationFileTooltip": "Загружает средство выбора файлов, чтобы выбрать файл, совместимый с Switch, для загрузки", "LoadApplicationFileTooltip": "Открыть файловый менеджер для выбора файла, совместимого с Nintendo Switch.",
"LoadApplicationFolderTooltip": "Загружает средство выбора файлов, чтобы выбрать распакованное приложение, совместимое с Switch, для загрузки", "LoadApplicationFolderTooltip": "Открыть файловый менеджер для выбора распакованного приложения, совместимого с Nintendo Switch.",
"OpenRyujinxFolderTooltip": "Открывает папку файловой системы Ryujinx. ", "OpenRyujinxFolderTooltip": "Открывает папку файловой системы Ryujinx. ",
"OpenRyujinxLogsTooltip": "Открывает папку, в которую записываются журналы", "OpenRyujinxLogsTooltip": "Открывает папку, в которую записываются журналы",
"ExitTooltip": "Выходит из Ryujinx", "ExitTooltip": "Выйти из Ryujinx",
"OpenSettingsTooltip": "Открывает окно настроек", "OpenSettingsTooltip": "Открыть окно настроек",
"OpenProfileManagerTooltip": "Открывает окно диспетчера профилей пользователей", "OpenProfileManagerTooltip": "Открыть диспетчер профилей",
"StopEmulationTooltip": "Останавливает эмуляцию текущей игры и вовращение к выбору игры", "StopEmulationTooltip": "Остановка эмуляции текущей игры и возврат к списку игр",
"CheckUpdatesTooltip": "Проверяет наличие обновлений Ryujinx", "CheckUpdatesTooltip": "Проверка наличия обновления Ryujinx",
"OpenAboutTooltip": "Открывает окно «О программе»", "OpenAboutTooltip": "Открыть окно «О программе»",
"GridSize": "Размер сетки", "GridSize": "Размер сетки",
"GridSizeTooltip": "Изменение размера элементов сетки", "GridSizeTooltip": "Изменение размера элементов сетки",
"SettingsTabSystemSystemLanguageBrazilianPortuguese": "Португальский язык (Бразилия)", "SettingsTabSystemSystemLanguageBrazilianPortuguese": "Португальский язык (Бразилия)",
"AboutRyujinxContributorsButtonHeader": "Посмотреть всех участников", "AboutRyujinxContributorsButtonHeader": "Посмотреть всех участников",
"SettingsTabSystemAudioVolume": "Громкость: ", "SettingsTabSystemAudioVolume": "Громкость: ",
"AudioVolumeTooltip": "Изменяет громкость звука", "AudioVolumeTooltip": "Изменяет громкость звука",
"SettingsTabSystemEnableInternetAccess": "Включить гостевой доступ в Интернет", "SettingsTabSystemEnableInternetAccess": "Включить гостевой доступ в Интернет/сетевой режим",
"EnableInternetAccessTooltip": "Включает гостевой доступ в Интернет. Если этот параметр включен, приложение будет вести себя так, как если бы эмулированная консоль Switch была подключена к Интернету. Обратите внимание, что в некоторых случаях приложения могут по-прежнему получать доступ к Интернету, даже если эта опция отключена.", "EnableInternetAccessTooltip": "Позволяет эмулированному приложению подключаться к Интернету.\n\nПри включении этой функции игры с возможностью сетевой игры могут подключаться друг к другу, если все эмуляторы (или реальные консоли) подключены к одной и той же точке доступа.\n\nНЕ разрешает подключение к серверам Nintendo. Может вызвать сбой в некоторых играх, которые пытаются подключиться к Интернету.\n\nРекомендутеся оставить выключенным.",
"GameListContextMenuManageCheatToolTip": "Управление читами", "GameListContextMenuManageCheatToolTip": "Управление читами",
"GameListContextMenuManageCheat": "Управление читами", "GameListContextMenuManageCheat": "Управление читами",
"ControllerSettingsStickRange": "Диапазон:", "ControllerSettingsStickRange": "Диапазон:",
@ -497,118 +514,143 @@
"SettingsTabCpuCache": "Кэш ЦП", "SettingsTabCpuCache": "Кэш ЦП",
"SettingsTabCpuMemory": "Память ЦП", "SettingsTabCpuMemory": "Память ЦП",
"DialogUpdaterFlatpakNotSupportedMessage": "Пожалуйста, обновите Ryujinx через FlatHub.", "DialogUpdaterFlatpakNotSupportedMessage": "Пожалуйста, обновите Ryujinx через FlatHub.",
"UpdaterDisabledWarningTitle": "Updater Disabled!", "UpdaterDisabledWarningTitle": "Обновление выключено!",
"GameListContextMenuOpenSdModsDirectory": "Open Atmosphere Mods Directory", "GameListContextMenuOpenSdModsDirectory": "Открыть папку с модами Atmosphere",
"GameListContextMenuOpenSdModsDirectoryToolTip": "Opens the alternative SD card Atmosphere directory which contains Application's Mods. Useful for mods that are packaged for real hardware.", "GameListContextMenuOpenSdModsDirectoryToolTip": "Открывает альтернативную папку SD-карты Atmosphere, которая содержит моды для приложений и игр. Полезно для модов, сделанных для реальной консоли.",
"ControllerSettingsRotate90": "Rotate 90° Clockwise", "ControllerSettingsRotate90": "Повернуть на 90° по часовой стрелке",
"IconSize": "Icon Size", "IconSize": "Размер иконки",
"IconSizeTooltip": "Change the size of game icons", "IconSizeTooltip": "Изменить размер игровых иконок",
"MenuBarOptionsShowConsole": "Открыть консоль", "MenuBarOptionsShowConsole": "Показать консоль",
"ShaderCachePurgeError": "Error purging shader cache at {0}: {1}", "ShaderCachePurgeError": "Ошибка очистки кэша шейдеров в {0}: {1}",
"UserErrorNoKeys": "Keys not found", "UserErrorNoKeys": "Ключи не найдены",
"UserErrorNoFirmware": "Прошивка не найдена", "UserErrorNoFirmware": "Прошивка не найдена",
"UserErrorFirmwareParsingFailed": "Firmware parsing error", "UserErrorFirmwareParsingFailed": "Ошибка извлечения прошивки",
"UserErrorApplicationNotFound": "Приложение не найдено", "UserErrorApplicationNotFound": "Приложение не найдено",
"UserErrorUnknown": "Неизвестная ошибка", "UserErrorUnknown": "Неизвестная ошибка",
"UserErrorUndefined": "Неопределенная ошибка", "UserErrorUndefined": "Неопределенная ошибка",
"UserErrorNoKeysDescription": "Ryujinx was unable to find your 'prod.keys' file", "UserErrorNoKeysDescription": "Ryujinx не удалось найти ваш 'prod.keys' файл",
"UserErrorNoFirmwareDescription": "Ryujinx was unable to find any firmwares installed", "UserErrorNoFirmwareDescription": "Ryujinx не удалось найти ни одной установленной прошивки",
"UserErrorFirmwareParsingFailedDescription": "Ryujinx was unable to parse the provided firmware. This is usually caused by outdated keys.", "UserErrorFirmwareParsingFailedDescription": "Ryujinx не удалось распаковать выбранную прошивку. Обычно это вызвано устаревшими ключами.",
"UserErrorApplicationNotFoundDescription": "Ryujinx couldn't find a valid application at the given path.", "UserErrorApplicationNotFoundDescription": "Ryujinx не удалось найти действительное приложение по указанному пути.",
"UserErrorUnknownDescription": "Произошла неизвестная ошибка!", "UserErrorUnknownDescription": "Произошла неизвестная ошибка!",
"UserErrorUndefinedDescription": "Произошла неизвестная ошибка! Такого не должно происходить. Пожалуйста, свяжитесь с разработчиками!", "UserErrorUndefinedDescription": "Произошла неизвестная ошибка! Такого не должно происходить. Пожалуйста, свяжитесь с разработчиками!",
"OpenSetupGuideMessage": "Open the Setup Guide", "OpenSetupGuideMessage": "Открыть руководство по установке",
"NoUpdate": "No Update", "NoUpdate": "Нет обновлений",
"TitleUpdateVersionLabel": "Version {0} - {1}", "TitleUpdateVersionLabel": "Version {0} - {1}",
"RyujinxInfo": "Ryujinx - Info", "RyujinxInfo": "Ryujinx - Информация",
"RyujinxConfirm": "Ryujinx - Confirmation", "RyujinxConfirm": "Ryujinx - Подтверждение",
"FileDialogAllTypes": "Все типы", "FileDialogAllTypes": "Все типы",
"Never": "Никогда", "Never": "Никогда",
"SwkbdMinCharacters": "Must be at least {0} characters long", "SwkbdMinCharacters": "Должно быть не менее {0} символов.",
"SwkbdMinRangeCharacters": "Must be {0}-{1} characters long", "SwkbdMinRangeCharacters": "Должно быть {0}-{1} символов",
"SoftwareKeyboard": "Software Keyboard", "SoftwareKeyboard": "Программная клавиатура",
"DialogControllerAppletMessagePlayerRange": "Application requests {0} player(s) with:\n\nTYPES: {1}\n\nPLAYERS: {2}\n\n{3}Please open Settings and reconfigure Input now or press Close.", "SoftwareKeyboardModeNumbersOnly": "Должны быть только цифры",
"DialogControllerAppletMessage": "Application requests exactly {0} player(s) with:\n\nTYPES: {1}\n\nPLAYERS: {2}\n\n{3}Please open Settings and reconfigure Input now or press Close.", "SoftwareKeyboardModeAlphabet": "Не должно быть CJK-символов",
"DialogControllerAppletDockModeSet": "Docked mode set. Handheld is also invalid.\n\n", "SoftwareKeyboardModeASCII": "Текст должен быть только в ASCII кодировке",
"DialogControllerAppletMessagePlayerRange": "Приложение запрашивает {0} игроков с:\n\nТИПЫ: {1}\n\nИГРОКИ: {2}\n\n{3}Пожалуйста, откройте \"Настройки\" и перенастройте сейчас или нажмите \"Закрыть\".",
"DialogControllerAppletMessage": "Приложение запрашивает ровно {0} игроков с:\n\nТИПЫ: {1}\n\nИГРОКИ: {2}\n\n{3}Пожалуйста, откройте \"Настройки\" и перенастройте Ввод или нажмите \"Закрыть\".",
"DialogControllerAppletDockModeSet": "Установлен стационарный режим. Портативный режим недоступен.",
"UpdaterRenaming": "Переименование старых файлов...", "UpdaterRenaming": "Переименование старых файлов...",
"UpdaterRenameFailed": "Updater was unable to rename file: {0}", "UpdaterRenameFailed": "Программе обновления не удалось переименовать файл: {0}",
"UpdaterAddingFiles": "Добавление новых файлов...", "UpdaterAddingFiles": "Добавление новых файлов...",
"UpdaterExtracting": "Извлечение обновления...", "UpdaterExtracting": "Извлечение обновления...",
"UpdaterDownloading": "Загрузка обновления...", "UpdaterDownloading": "Загрузка обновления...",
"Game": "Игра", "Game": "Игра",
"Docked": "Docked", "Docked": "Стационарный режим",
"Handheld": "Handheld", "Handheld": "Портативный режим",
"ConnectionError": "Connection Error.", "ConnectionError": "Ошибка соединения!",
"AboutPageDeveloperListMore": "{0} and more...", "AboutPageDeveloperListMore": "{0} и больше...",
"ApiError": "Ошибка API.", "ApiError": "Ошибка API.",
"LoadingHeading": "Loading {0}", "LoadingHeading": "Загрузка {0}",
"CompilingPPTC": "Compiling PTC", "CompilingPPTC": "Компиляция PTC",
"CompilingShaders": "Компилируем шейдеры", "CompilingShaders": "Компиляция шейдеров",
"AllKeyboards": "Все клавиатуры", "AllKeyboards": "Все клавиатуры",
"OpenFileDialogTitle": "Select a supported file to open", "OpenFileDialogTitle": "Выберите совместимый файл для открытия",
"OpenFolderDialogTitle": "Select a folder with an unpacked game", "OpenFolderDialogTitle": "Выберите папку с распакованной игрой",
"AllSupportedFormats": "Все поддерживаемые форматы", "AllSupportedFormats": "Все поддерживаемые форматы",
"RyujinxUpdater": "Ryujinx Updater", "RyujinxUpdater": "Ryujinx - Обновление",
"SettingsTabHotkeys": "Keyboard Hotkeys", "SettingsTabHotkeys": "Горячие клавиши",
"SettingsTabHotkeysHotkeys": "Keyboard Hotkeys", "SettingsTabHotkeysHotkeys": "Горячие клавиши",
"SettingsTabHotkeysToggleVsyncHotkey": "Toggle VSync:", "SettingsTabHotkeysToggleVsyncHotkey": "Переключить VSync:",
"SettingsTabHotkeysScreenshotHotkey": "Скриншот:", "SettingsTabHotkeysScreenshotHotkey": "Скриншот:",
"SettingsTabHotkeysShowUiHotkey": "Показать UI:", "SettingsTabHotkeysShowUiHotkey": "Показать UI:",
"SettingsTabHotkeysPauseHotkey": "Pause:", "SettingsTabHotkeysPauseHotkey": "Пауза:",
"SettingsTabHotkeysToggleMuteHotkey": "Mute:", "SettingsTabHotkeysToggleMuteHotkey": "Приглушить:",
"ControllerMotionTitle": "Motion Control Settings", "ControllerMotionTitle": "Настройки управления движением",
"ControllerRumbleTitle": "Rumble Settings", "ControllerRumbleTitle": "Настройки вибрации",
"SettingsSelectThemeFileDialogTitle": "Select Theme File", "SettingsSelectThemeFileDialogTitle": "Выбрать файл темы",
"SettingsXamlThemeFile": "Xaml Theme File", "SettingsXamlThemeFile": "Файл темы Xaml",
"AvatarWindowTitle": "Manage Accounts - Avatar", "AvatarWindowTitle": "Управление аккаунтами - Аватар",
"Amiibo": "Amiibo", "Amiibo": "Amiibo",
"Unknown": "Unknown", "Unknown": "Неизвестно",
"Usage": "Usage", "Usage": "Применение",
"Writable": "Writable", "Writable": "Доступно для записи",
"SelectDlcDialogTitle": "Выберите файлы DLC", "SelectDlcDialogTitle": "Выберите файлы DLC",
"SelectUpdateDialogTitle": "Выберите файлы обновления", "SelectUpdateDialogTitle": "Выберите файлы обновления",
"UserProfileWindowTitle": "User Profiles Manager", "UserProfileWindowTitle": "Менеджер профилей пользователей",
"CheatWindowTitle": "Cheats Manager", "CheatWindowTitle": "Менеджер читов",
"DlcWindowTitle": "Downloadable Content Manager", "DlcWindowTitle": "Управление загружаемым контентом для {0} ({1})",
"UpdateWindowTitle": "Title Update Manager", "UpdateWindowTitle": "Менеджер обновления названий",
"CheatWindowHeading": "Cheats Available for {0} [{1}]", "CheatWindowHeading": "Читы доступны для {0} [{1}]",
"DlcWindowHeading": "{0} Downloadable Content(s) available for {1} ({2})", "BuildId": "ID версии:",
"UserProfilesEditProfile": "Edit Selected", "DlcWindowHeading": "{0} Загружаемый контент",
"Cancel": "Cancel", "UserProfilesEditProfile": "Изменить выбранные",
"Cancel": "Отмена",
"Save": "Сохранить", "Save": "Сохранить",
"Discard": "Discard", "Discard": "Отменить",
"UserProfilesSetProfileImage": "Set Profile Image", "UserProfilesSetProfileImage": "Установить изображение профиля",
"UserProfileEmptyNameError": "Name is required", "UserProfileEmptyNameError": "Имя обязательно",
"UserProfileNoImageError": "Profile image must be set", "UserProfileNoImageError": "Изображение профиля должно быть установлено",
"GameUpdateWindowHeading": "{0} Update(s) available for {1} ({2})", "GameUpdateWindowHeading": "Обновление доступно для {0} ({1})",
"SettingsTabHotkeysResScaleUpHotkey": "Увеличить разрешение:", "SettingsTabHotkeysResScaleUpHotkey": "Увеличить разрешение:",
"SettingsTabHotkeysResScaleDownHotkey": "Уменьшить разрешение:", "SettingsTabHotkeysResScaleDownHotkey": "Уменьшить разрешение:",
"UserProfilesName": "Name:", "UserProfilesName": "Имя:",
"UserProfilesUserId": "User Id:", "UserProfilesUserId": "ID пользователя:",
"SettingsTabGraphicsBackend": "Graphics Backend", "SettingsTabGraphicsBackend": "Бэкенд графики",
"SettingsTabGraphicsBackendTooltip": "Graphics Backend to use", "SettingsTabGraphicsBackendTooltip": "Использовать графический бэкенд",
"SettingsEnableTextureRecompression": "Включить пережатие текстур", "SettingsEnableTextureRecompression": "Включить пережатие текстур",
"SettingsEnableTextureRecompressionTooltip": "Сжимает некоторые текстуры для уменьшения использования видеопамяти.\n\nРекомендуется для ГП с 4 ГиБ видеопамяти и менее.\n\nЕсли не уверены, оставьте ВЫКЛ.", "SettingsEnableTextureRecompressionTooltip": "Сжимает некоторые текстуры для уменьшения использования видеопамяти.\n\nРекомендуется для GPU с 4 гб видеопамяти и менее.\n\nРекомендуется оставить выключенным.",
"SettingsTabGraphicsPreferredGpu": "Preferred GPU", "SettingsTabGraphicsPreferredGpu": "Предпочтительный GPU",
"SettingsTabGraphicsPreferredGpuTooltip": "Select the graphics card that will be used with the Vulkan graphics backend.\n\nDoes not affect the GPU that OpenGL will use.\n\nSet to the GPU flagged as \"dGPU\" if unsure. If there isn't one, leave untouched.", "SettingsTabGraphicsPreferredGpuTooltip": "Выберите видеокарту, которая будет использоваться с графическим бэкендом Vulkan.\n\nНе влияет на GPU, который будет использовать OpenGL.\n\nУстановите графический процессор, помеченный как \"dGPU\", если вы не уверены. Если его нет, оставьте нетронутым.",
"SettingsAppRequiredRestartMessage": "Ryujinx Restart Required", "SettingsAppRequiredRestartMessage": "Требуется перезапуск Ryujinx",
"SettingsGpuBackendRestartMessage": "Graphics Backend or GPU settings have been modified. This will require a restart to be applied", "SettingsGpuBackendRestartMessage": "Графический бэкенд или настройки графического процессора были изменены. Требуется перезапуск для вступления в силу изменений.",
"SettingsGpuBackendRestartSubMessage": "Do you want to restart now?", "SettingsGpuBackendRestartSubMessage": "Перезапустить сейчас?",
"RyujinxUpdaterMessage": "Вы хотите обновить Ryujinx до последней версии?", "RyujinxUpdaterMessage": "Вы хотите обновить Ryujinx до последней версии?",
"SettingsTabHotkeysVolumeUpHotkey": "Увеличить громкость:", "SettingsTabHotkeysVolumeUpHotkey": "Увеличить громкость:",
"SettingsTabHotkeysVolumeDownHotkey": "Уменьшить громкость:", "SettingsTabHotkeysVolumeDownHotkey": "Уменьшить громкость:",
"SettingsEnableMacroHLE": "Enable Macro HLE", "SettingsEnableMacroHLE": "Включить Macro HLE",
"SettingsEnableMacroHLETooltip": "High-level emulation of GPU Macro code.\n\nImproves performance, but may cause graphical glitches in some games.\n\nLeave ON if unsure.", "SettingsEnableMacroHLETooltip": "Высокоуровневая эмуляции макроса GPU.\n\nПовышает производительность, но может вызывать графические сбои в некоторых играх.\n\nРекомендуется оставить включенным.",
"VolumeShort": "Vol", "SettingsEnableColorSpacePassthrough": "Пропуск цветового пространства",
"UserProfilesManageSaves": "Manage Saves", "SettingsEnableColorSpacePassthroughTooltip": "Направляет бэкэнд Vulkan на передачу информации о цвете без указания цветового пространства. Для пользователей с экранами с расширенной гаммой данная настройка приводит к получению более ярких цветов за счет снижения корректности цветопередачи.",
"DeleteUserSave": "Do you want to delete user save for this game?", "VolumeShort": "Громкость",
"UserProfilesManageSaves": "Управление сохранениями",
"DeleteUserSave": "Вы хотите удалить сохранение пользователя для этой игры?",
"IrreversibleActionNote": "Данное действие является необратимым.", "IrreversibleActionNote": "Данное действие является необратимым.",
"SaveManagerHeading": "Manage Saves for {0}", "SaveManagerHeading": "Редактирование сохранений для {0} ({1})",
"SaveManagerTitle": "Save Manager", "SaveManagerTitle": "Менеджер сохранений",
"Name": "Название", "Name": "Название",
"Size": "Размер", "Size": "Размер",
"Search": "Search", "Search": "Поиск",
"UserProfilesRecoverLostAccounts": "Recover Lost Accounts", "UserProfilesRecoverLostAccounts": "Восстановить утерянные аккаунты",
"Recover": "Recover", "Recover": "Восстановление",
"UserProfilesRecoverHeading": "Saves were found for the following accounts" "UserProfilesRecoverHeading": "Были найдены сохранения для следующих аккаунтов",
"UserProfilesRecoverEmptyList": "Нет профилей для восстановления",
"GraphicsAATooltip": "Применяет сглаживание к рейдеру игры.",
"GraphicsAALabel": "Сглаживание:",
"GraphicsScalingFilterLabel": "Масштабирующий фильтр:",
"GraphicsScalingFilterTooltip": "Включает масштабирование кадрового буфера",
"GraphicsScalingFilterLevelLabel": "Уровень",
"GraphicsScalingFilterLevelTooltip": "Установить уровень фильтра масштабирования",
"SmaaLow": "SMAA Низкое",
"SmaaMedium": "SMAA Среднее",
"SmaaHigh": "SMAA Высокое",
"SmaaUltra": "SMAA Ультра",
"UserEditorTitle": "Редактирование пользователя",
"UserEditorTitleCreate": "Создание пользователя",
"SettingsTabNetworkInterface": "Сетевой Интерфейс",
"NetworkInterfaceTooltip": "Сетевой интерфейс, используемый для функций LAN",
"NetworkInterfaceDefault": "По умолчанию",
"PackagingShaders": "Упаковка шейдеров",
"AboutChangelogButton": "Список изменений на GitHub",
"AboutChangelogButtonTooltipMessage": "Нажмите, чтобы открыть список изменений для этой версии в браузере."
} }

View file

@ -7,6 +7,7 @@
"SettingsTabSystemMemoryManagerModeSoftware": "Yazılım", "SettingsTabSystemMemoryManagerModeSoftware": "Yazılım",
"SettingsTabSystemMemoryManagerModeHost": "Host (hızlı)", "SettingsTabSystemMemoryManagerModeHost": "Host (hızlı)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "Host Unchecked (en hızlısı, tehlikeli)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "Host Unchecked (en hızlısı, tehlikeli)",
"SettingsTabSystemUseHypervisor": "Hypervisor Kullan",
"MenuBarFile": "_Dosya", "MenuBarFile": "_Dosya",
"MenuBarFileOpenFromFile": "_Dosyadan Uygulama Aç", "MenuBarFileOpenFromFile": "_Dosyadan Uygulama Aç",
"MenuBarFileOpenUnpacked": "_Sıkıştırılmamış Oyun Aç", "MenuBarFileOpenUnpacked": "_Sıkıştırılmamış Oyun Aç",
@ -26,6 +27,9 @@
"MenuBarToolsInstallFirmware": "Yazılım Yükle", "MenuBarToolsInstallFirmware": "Yazılım Yükle",
"MenuBarFileToolsInstallFirmwareFromFile": "XCI veya ZIP'ten Yazılım Yükle", "MenuBarFileToolsInstallFirmwareFromFile": "XCI veya ZIP'ten Yazılım Yükle",
"MenuBarFileToolsInstallFirmwareFromDirectory": "Bir Dizin Üzerinden Yazılım Yükle", "MenuBarFileToolsInstallFirmwareFromDirectory": "Bir Dizin Üzerinden Yazılım Yükle",
"MenuBarToolsManageFileTypes": "Dosya uzantılarını yönet",
"MenuBarToolsInstallFileTypes": "Dosya uzantılarını yükle",
"MenuBarToolsUninstallFileTypes": "Dosya uzantılarını kaldır",
"MenuBarHelp": "Yardım", "MenuBarHelp": "Yardım",
"MenuBarHelpCheckForUpdates": "Güncellemeleri Denetle", "MenuBarHelpCheckForUpdates": "Güncellemeleri Denetle",
"MenuBarHelpAbout": "Hakkında", "MenuBarHelpAbout": "Hakkında",
@ -66,17 +70,27 @@
"GameListContextMenuExtractDataExeFSToolTip": "Uygulamanın geçerli yapılandırmasından ExeFS kısmını ayıkla (Güncellemeler dahil)", "GameListContextMenuExtractDataExeFSToolTip": "Uygulamanın geçerli yapılandırmasından ExeFS kısmını ayıkla (Güncellemeler dahil)",
"GameListContextMenuExtractDataRomFS": "RomFS", "GameListContextMenuExtractDataRomFS": "RomFS",
"GameListContextMenuExtractDataRomFSToolTip": "Uygulamanın geçerli yapılandırmasından RomFS kısmını ayıkla (Güncellemeler dahil)", "GameListContextMenuExtractDataRomFSToolTip": "Uygulamanın geçerli yapılandırmasından RomFS kısmını ayıkla (Güncellemeler dahil)",
"GameListContextMenuExtractDataLogo": "Logo", "GameListContextMenuExtractDataLogo": "Simge",
"GameListContextMenuExtractDataLogoToolTip": "Uygulamanın geçerli yapılandırmasından Logo kısmını ayıkla (Güncellemeler dahil)", "GameListContextMenuExtractDataLogoToolTip": "Uygulamanın geçerli yapılandırmasından Logo kısmını ayıkla (Güncellemeler dahil)",
"StatusBarGamesLoaded": "{0}/{1} Oyun Yüklendi", "StatusBarGamesLoaded": "{0}/{1} Oyun Yüklendi",
"StatusBarSystemVersion": "Sistem Sürümü: {0}", "StatusBarSystemVersion": "Sistem Sürümü: {0}",
"LinuxVmMaxMapCountDialogTitle": "Bellek Haritaları İçin Düşük Limit Tespit Edildi ",
"LinuxVmMaxMapCountDialogTextPrimary": "vm.max_map_count değerini {0} sayısına yükseltmek ister misiniz",
"LinuxVmMaxMapCountDialogTextSecondary": "Bazı oyunlar şu an izin verilen bellek haritası limitinden daha fazlasını yaratmaya çalışabilir. Ryujinx bu limitin geçildiği takdirde kendini kapatıcaktır.",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "Evet, bir sonraki yeniden başlatmaya kadar",
"LinuxVmMaxMapCountDialogButtonPersistent": "Evet, kalıcı olarak",
"LinuxVmMaxMapCountWarningTextPrimary": "İzin verilen maksimum bellek haritası değeri tavsiye edildiğinden daha düşük. ",
"LinuxVmMaxMapCountWarningTextSecondary": "Şu anki vm.max_map_count değeri {0}, bu {1} değerinden daha az. Bazı oyunlar şu an izin verilen bellek haritası limitinden daha fazlasını yaratmaya çalışabilir. Ryujinx bu limitin geçildiği takdirde kendini kapatıcaktır.\n\nManuel olarak bu limiti arttırmayı deneyebilir ya da pkexec'i yükleyebilirsiniz, bu da Ryujinx'in yardımcı olmasına izin verir.",
"Settings": "Ayarlar", "Settings": "Ayarlar",
"SettingsTabGeneral": "Kullancı Arayüzü", "SettingsTabGeneral": "Kullancı Arayüzü",
"SettingsTabGeneralGeneral": "Genel", "SettingsTabGeneralGeneral": "Genel",
"SettingsTabGeneralEnableDiscordRichPresence": "Discord Zengin İçerik'i Etkinleştir", "SettingsTabGeneralEnableDiscordRichPresence": "Discord Zengin İçerik'i Etkinleştir",
"SettingsTabGeneralCheckUpdatesOnLaunch": "Her Açılışta Güncellemeleri Denetle", "SettingsTabGeneralCheckUpdatesOnLaunch": "Her Açılışta Güncellemeleri Denetle",
"SettingsTabGeneralShowConfirmExitDialog": "\"Çıkışı Onayla\" Diyaloğunu Göster", "SettingsTabGeneralShowConfirmExitDialog": "\"Çıkışı Onayla\" Diyaloğunu Göster",
"SettingsTabGeneralHideCursorOnIdle": "Hareketsizlik durumunda imleci gizle", "SettingsTabGeneralHideCursor": "İşaretçiyi Gizle:",
"SettingsTabGeneralHideCursorNever": "Hiçbir Zaman",
"SettingsTabGeneralHideCursorOnIdle": "Hareketsiz Durumda",
"SettingsTabGeneralHideCursorAlways": "Her Zaman",
"SettingsTabGeneralGameDirectories": "Oyun Dizinleri", "SettingsTabGeneralGameDirectories": "Oyun Dizinleri",
"SettingsTabGeneralAdd": "Ekle", "SettingsTabGeneralAdd": "Ekle",
"SettingsTabGeneralRemove": "Kaldır", "SettingsTabGeneralRemove": "Kaldır",
@ -110,7 +124,7 @@
"SettingsTabSystemSystemLanguageTraditionalChinese": "Geleneksel Çince", "SettingsTabSystemSystemLanguageTraditionalChinese": "Geleneksel Çince",
"SettingsTabSystemSystemTimeZone": "Sistem Saat Dilimi:", "SettingsTabSystemSystemTimeZone": "Sistem Saat Dilimi:",
"SettingsTabSystemSystemTime": "Sistem Saati:", "SettingsTabSystemSystemTime": "Sistem Saati:",
"SettingsTabSystemEnableVsync": "VSync", "SettingsTabSystemEnableVsync": "Dikey Eşitleme",
"SettingsTabSystemEnablePptc": "PPTC (Profilli Sürekli Çeviri Önbelleği)", "SettingsTabSystemEnablePptc": "PPTC (Profilli Sürekli Çeviri Önbelleği)",
"SettingsTabSystemEnableFsIntegrityChecks": "FS Bütünlük Kontrolleri", "SettingsTabSystemEnableFsIntegrityChecks": "FS Bütünlük Kontrolleri",
"SettingsTabSystemAudioBackend": "Ses Motoru:", "SettingsTabSystemAudioBackend": "Ses Motoru:",
@ -158,6 +172,7 @@
"SettingsTabLoggingEnableFsAccessLogs": "Fs Erişim Loglarını Etkinleştir", "SettingsTabLoggingEnableFsAccessLogs": "Fs Erişim Loglarını Etkinleştir",
"SettingsTabLoggingFsGlobalAccessLogMode": "Fs Evrensel Erişim Log Modu:", "SettingsTabLoggingFsGlobalAccessLogMode": "Fs Evrensel Erişim Log Modu:",
"SettingsTabLoggingDeveloperOptions": "Geliştirici Seçenekleri (UYARI: Performansı düşürecektir)", "SettingsTabLoggingDeveloperOptions": "Geliştirici Seçenekleri (UYARI: Performansı düşürecektir)",
"SettingsTabLoggingDeveloperOptionsNote": "UYARI: Oyun performansı azalacak",
"SettingsTabLoggingGraphicsBackendLogLevel": "Grafik Arka Uç Günlük Düzeyi", "SettingsTabLoggingGraphicsBackendLogLevel": "Grafik Arka Uç Günlük Düzeyi",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "Hiçbiri", "SettingsTabLoggingGraphicsBackendLogLevelNone": "Hiçbiri",
"SettingsTabLoggingGraphicsBackendLogLevelError": "Hata", "SettingsTabLoggingGraphicsBackendLogLevelError": "Hata",
@ -208,26 +223,17 @@
"ControllerSettingsDPadDown": "Aşağı", "ControllerSettingsDPadDown": "Aşağı",
"ControllerSettingsDPadLeft": "Sol", "ControllerSettingsDPadLeft": "Sol",
"ControllerSettingsDPadRight": "Sağ", "ControllerSettingsDPadRight": "Sağ",
"ControllerSettingsStickButton": "Tuş",
"ControllerSettingsStickUp": "Yukarı",
"ControllerSettingsStickDown": "Aşağı",
"ControllerSettingsStickLeft": "Sol",
"ControllerSettingsStickRight": "Sağ",
"ControllerSettingsStickStick": "Analog",
"ControllerSettingsStickInvertXAxis": "X Eksenini Tersine Çevir",
"ControllerSettingsStickInvertYAxis": "Y Eksenini Tersine Çevir",
"ControllerSettingsStickDeadzone": "Ölü Bölge",
"ControllerSettingsLStick": "Sol Analog", "ControllerSettingsLStick": "Sol Analog",
"ControllerSettingsLStickButton": "Tuş",
"ControllerSettingsLStickUp": "Yukarı",
"ControllerSettingsLStickDown": "Aşağı",
"ControllerSettingsLStickLeft": "Sol",
"ControllerSettingsLStickRight": "Sağ",
"ControllerSettingsLStickStick": "Analog",
"ControllerSettingsLStickInvertXAxis": "X Eksenini Tersine Çevir",
"ControllerSettingsLStickInvertYAxis": "Y Eksenini Tersine Çevir",
"ControllerSettingsLStickDeadzone": "Ölü Bölge:",
"ControllerSettingsRStick": "Sağ Analog", "ControllerSettingsRStick": "Sağ Analog",
"ControllerSettingsRStickButton": "Tuş",
"ControllerSettingsRStickUp": "Yukarı",
"ControllerSettingsRStickDown": "Aşağı",
"ControllerSettingsRStickLeft": "Sol",
"ControllerSettingsRStickRight": "Sağ",
"ControllerSettingsRStickStick": "Analog",
"ControllerSettingsRStickInvertXAxis": "X Eksenini Tersine Çevir",
"ControllerSettingsRStickInvertYAxis": "Y Eksenini Tersine Çevir",
"ControllerSettingsRStickDeadzone": "Ölü Bölge:",
"ControllerSettingsTriggersLeft": "Tetikler Sol", "ControllerSettingsTriggersLeft": "Tetikler Sol",
"ControllerSettingsTriggersRight": "Tetikler Sağ", "ControllerSettingsTriggersRight": "Tetikler Sağ",
"ControllerSettingsTriggersButtonsLeft": "Tetik Tuşları Sol", "ControllerSettingsTriggersButtonsLeft": "Tetik Tuşları Sol",
@ -262,6 +268,7 @@
"UserProfilesAddNewProfile": "Yeni Profil Ekle", "UserProfilesAddNewProfile": "Yeni Profil Ekle",
"UserProfilesDelete": "Sil", "UserProfilesDelete": "Sil",
"UserProfilesClose": "Kapat", "UserProfilesClose": "Kapat",
"ProfileNameSelectionWatermark": "Kullanıcı Adı Seç",
"ProfileImageSelectionTitle": "Profil Resmi Seçimi", "ProfileImageSelectionTitle": "Profil Resmi Seçimi",
"ProfileImageSelectionHeader": "Profil Resmi Seç", "ProfileImageSelectionHeader": "Profil Resmi Seç",
"ProfileImageSelectionNote": "Özel bir profil resmi içeri aktarabilir veya sistem avatarlarından birini seçebilirsiniz", "ProfileImageSelectionNote": "Özel bir profil resmi içeri aktarabilir veya sistem avatarlarından birini seçebilirsiniz",
@ -282,6 +289,7 @@
"ControllerSettingsSaveProfileToolTip": "Profili Kaydet", "ControllerSettingsSaveProfileToolTip": "Profili Kaydet",
"MenuBarFileToolsTakeScreenshot": "Ekran Görüntüsü Al", "MenuBarFileToolsTakeScreenshot": "Ekran Görüntüsü Al",
"MenuBarFileToolsHideUi": "Arayüzü Gizle", "MenuBarFileToolsHideUi": "Arayüzü Gizle",
"GameListContextMenuRunApplication": "Uygulamayı Çalıştır",
"GameListContextMenuToggleFavorite": "Favori Ayarla", "GameListContextMenuToggleFavorite": "Favori Ayarla",
"GameListContextMenuToggleFavoriteToolTip": "Oyunu Favorilere Ekle/Çıkar", "GameListContextMenuToggleFavoriteToolTip": "Oyunu Favorilere Ekle/Çıkar",
"SettingsTabGeneralTheme": "Tema", "SettingsTabGeneralTheme": "Tema",
@ -337,6 +345,10 @@
"DialogFirmwareInstallEmbeddedSuccessMessage": "Yüklü firmware bulunamadı ancak Ryujinx sağlanan oyundan {0} firmware sürümünü yükledi.\nEmülatör şimdi başlatılacak.", "DialogFirmwareInstallEmbeddedSuccessMessage": "Yüklü firmware bulunamadı ancak Ryujinx sağlanan oyundan {0} firmware sürümünü yükledi.\nEmülatör şimdi başlatılacak.",
"DialogFirmwareNoFirmwareInstalledMessage": "Yazılım Yüklü Değil", "DialogFirmwareNoFirmwareInstalledMessage": "Yazılım Yüklü Değil",
"DialogFirmwareInstalledMessage": "Yazılım {0} yüklendi", "DialogFirmwareInstalledMessage": "Yazılım {0} yüklendi",
"DialogInstallFileTypesSuccessMessage": "Dosya uzantıları başarıyla yüklendi!",
"DialogInstallFileTypesErrorMessage": "Dosya uzantıları yükleme işlemi başarısız oldu.",
"DialogUninstallFileTypesSuccessMessage": "Dosya uzantıları başarıyla kaldırıldı!",
"DialogUninstallFileTypesErrorMessage": "Dosya uzantıları kaldırma işlemi başarısız oldu.",
"DialogOpenSettingsWindowLabel": "Seçenekler Penceresini Aç", "DialogOpenSettingsWindowLabel": "Seçenekler Penceresini Aç",
"DialogControllerAppletTitle": "Kontrolcü Applet'i", "DialogControllerAppletTitle": "Kontrolcü Applet'i",
"DialogMessageDialogErrorExceptionMessage": "Mesaj diyaloğu gösterilirken hata: {0}", "DialogMessageDialogErrorExceptionMessage": "Mesaj diyaloğu gösterilirken hata: {0}",
@ -368,6 +380,9 @@
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Sistem sürümü {0} başarıyla yüklendi.", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Sistem sürümü {0} başarıyla yüklendi.",
"DialogUserProfileDeletionWarningMessage": "Seçilen profil silinirse kullanılabilen başka profil kalmayacak", "DialogUserProfileDeletionWarningMessage": "Seçilen profil silinirse kullanılabilen başka profil kalmayacak",
"DialogUserProfileDeletionConfirmMessage": "Seçilen profili silmek istiyor musunuz", "DialogUserProfileDeletionConfirmMessage": "Seçilen profili silmek istiyor musunuz",
"DialogUserProfileUnsavedChangesTitle": "Uyarı - Kaydedilmemiş Değişiklikler",
"DialogUserProfileUnsavedChangesMessage": "Kullanıcı profilinizde kaydedilmemiş değişiklikler var.",
"DialogUserProfileUnsavedChangesSubMessage": "Yaptığınız değişiklikleri iptal etmek istediğinize emin misiniz?",
"DialogControllerSettingsModifiedConfirmMessage": "Güncel kontrolcü seçenekleri güncellendi.", "DialogControllerSettingsModifiedConfirmMessage": "Güncel kontrolcü seçenekleri güncellendi.",
"DialogControllerSettingsModifiedConfirmSubMessage": "Kaydetmek istiyor musunuz?", "DialogControllerSettingsModifiedConfirmSubMessage": "Kaydetmek istiyor musunuz?",
"DialogLoadNcaErrorMessage": "{0}. Hatalı Dosya: {1}", "DialogLoadNcaErrorMessage": "{0}. Hatalı Dosya: {1}",
@ -416,6 +431,7 @@
"DlcManagerEnableAllButton": "Tümünü Aktif Et", "DlcManagerEnableAllButton": "Tümünü Aktif Et",
"DlcManagerDisableAllButton": "Tümünü Devre Dışı Bırak", "DlcManagerDisableAllButton": "Tümünü Devre Dışı Bırak",
"MenuBarOptionsChangeLanguage": "Dili Değiştir", "MenuBarOptionsChangeLanguage": "Dili Değiştir",
"MenuBarShowFileTypes": "Dosya Uzantılarını Göster",
"CommonSort": "Sırala", "CommonSort": "Sırala",
"CommonShowNames": "İsimleri Göster", "CommonShowNames": "İsimleri Göster",
"CommonFavorite": "Favori", "CommonFavorite": "Favori",
@ -445,6 +461,7 @@
"MemoryManagerSoftwareTooltip": "Adres çevirisi için bir işlemci sayfası kullanır. En yüksek doğruluğu ve en yavaş performansı sunar.", "MemoryManagerSoftwareTooltip": "Adres çevirisi için bir işlemci sayfası kullanır. En yüksek doğruluğu ve en yavaş performansı sunar.",
"MemoryManagerHostTooltip": "Hafızayı doğrudan host adres aralığında tahsis eder. Çok daha hızlı JIT derleme ve işletimi sunar.", "MemoryManagerHostTooltip": "Hafızayı doğrudan host adres aralığında tahsis eder. Çok daha hızlı JIT derleme ve işletimi sunar.",
"MemoryManagerUnsafeTooltip": "Hafızayı doğrudan tahsis eder, ancak host aralığına erişimden önce adresi maskelemez. Daha iyi performansa karşılık emniyetten ödün verir. Misafir uygulama Ryujinx içerisinden istediği hafızaya erişebilir, bu sebeple bu seçenek ile sadece güvendiğiniz uygulamaları çalıştırın.", "MemoryManagerUnsafeTooltip": "Hafızayı doğrudan tahsis eder, ancak host aralığına erişimden önce adresi maskelemez. Daha iyi performansa karşılık emniyetten ödün verir. Misafir uygulama Ryujinx içerisinden istediği hafızaya erişebilir, bu sebeple bu seçenek ile sadece güvendiğiniz uygulamaları çalıştırın.",
"UseHypervisorTooltip": "JIT yerine Hypervisor kullan. Uygun durumlarda performansı büyük oranda arttırır. Ancak şu anki halinde stabil durumda çalışmayabilir.",
"DRamTooltip": "Emüle edilen sistem hafızasını 4GiB'dan 6GiB'a yükseltir.\n\nBu seçenek yalnızca yüksek çözünürlük doku paketleri veya 4k çözünürlük modları için kullanılır. Performansı artırMAZ!\n\nEmin değilseniz devre dışı bırakın.", "DRamTooltip": "Emüle edilen sistem hafızasını 4GiB'dan 6GiB'a yükseltir.\n\nBu seçenek yalnızca yüksek çözünürlük doku paketleri veya 4k çözünürlük modları için kullanılır. Performansı artırMAZ!\n\nEmin değilseniz devre dışı bırakın.",
"IgnoreMissingServicesTooltip": "Henüz programlanmamış Horizon işletim sistemi servislerini görmezden gelir. Bu seçenek belirli oyunların açılırken çökmesinin önüne geçmeye yardımcı olabilir.\n\nEmin değilseniz devre dışı bırakın.", "IgnoreMissingServicesTooltip": "Henüz programlanmamış Horizon işletim sistemi servislerini görmezden gelir. Bu seçenek belirli oyunların açılırken çökmesinin önüne geçmeye yardımcı olabilir.\n\nEmin değilseniz devre dışı bırakın.",
"GraphicsBackendThreadingTooltip": "Grafik arka uç komutlarını ikinci bir iş parçacığında işletir.\n\nKendi multithreading desteği olmayan sürücülerde shader derlemeyi hızlandırıp performansı artırır. Multithreading desteği olan sürücülerde çok az daha iyi performans sağlar.\n\nEmin değilseniz Otomatik seçeneğine ayarlayın.", "GraphicsBackendThreadingTooltip": "Grafik arka uç komutlarını ikinci bir iş parçacığında işletir.\n\nKendi multithreading desteği olmayan sürücülerde shader derlemeyi hızlandırıp performansı artırır. Multithreading desteği olan sürücülerde çok az daha iyi performans sağlar.\n\nEmin değilseniz Otomatik seçeneğine ayarlayın.",
@ -527,6 +544,9 @@
"SwkbdMinCharacters": "En az {0} karakter uzunluğunda olmalı", "SwkbdMinCharacters": "En az {0} karakter uzunluğunda olmalı",
"SwkbdMinRangeCharacters": "{0}-{1} karakter uzunluğunda olmalı", "SwkbdMinRangeCharacters": "{0}-{1} karakter uzunluğunda olmalı",
"SoftwareKeyboard": "Yazılım Klavyesi", "SoftwareKeyboard": "Yazılım Klavyesi",
"SoftwareKeyboardModeNumbersOnly": "Sadece Numara Olabilir",
"SoftwareKeyboardModeAlphabet": "Sadece CJK-characters olmayan karakterler olabilir",
"SoftwareKeyboardModeASCII": "Sadece ASCII karakterler olabilir",
"DialogControllerAppletMessagePlayerRange": "Uygulama belirtilen türde {0} oyuncu istiyor:\n\nTÜRLER: {1}\n\nOYUNCULAR: {2}\n\n{3}Lütfen şimdi seçeneklerden giriş aygıtlarını ayarlayın veya Kapat'a basın.", "DialogControllerAppletMessagePlayerRange": "Uygulama belirtilen türde {0} oyuncu istiyor:\n\nTÜRLER: {1}\n\nOYUNCULAR: {2}\n\n{3}Lütfen şimdi seçeneklerden giriş aygıtlarını ayarlayın veya Kapat'a basın.",
"DialogControllerAppletMessage": "Uygulama belirtilen türde tam olarak {0} oyuncu istiyor:\n\nTÜRLER: {1}\n\nOYUNCULAR: {2}\n\n{3}Lütfen şimdi seçeneklerden giriş aygıtlarını ayarlayın veya Kapat'a basın.", "DialogControllerAppletMessage": "Uygulama belirtilen türde tam olarak {0} oyuncu istiyor:\n\nTÜRLER: {1}\n\nOYUNCULAR: {2}\n\n{3}Lütfen şimdi seçeneklerden giriş aygıtlarını ayarlayın veya Kapat'a basın.",
"DialogControllerAppletDockModeSet": "Docked mode etkin. Handheld geçersiz.\n\n", "DialogControllerAppletDockModeSet": "Docked mode etkin. Handheld geçersiz.\n\n",
@ -572,6 +592,7 @@
"DlcWindowTitle": "Oyun DLC'lerini Yönet", "DlcWindowTitle": "Oyun DLC'lerini Yönet",
"UpdateWindowTitle": "Oyun Güncellemelerini Yönet", "UpdateWindowTitle": "Oyun Güncellemelerini Yönet",
"CheatWindowHeading": "{0} için Hile mevcut [{1}]", "CheatWindowHeading": "{0} için Hile mevcut [{1}]",
"BuildId": "BuildId:",
"DlcWindowHeading": "{0} için DLC mevcut [{1}]", "DlcWindowHeading": "{0} için DLC mevcut [{1}]",
"UserProfilesEditProfile": "Seçiliyi Düzenle", "UserProfilesEditProfile": "Seçiliyi Düzenle",
"Cancel": "İptal", "Cancel": "İptal",
@ -599,6 +620,8 @@
"SettingsTabHotkeysVolumeDownHotkey": "Sesi Azalt:", "SettingsTabHotkeysVolumeDownHotkey": "Sesi Azalt:",
"SettingsEnableMacroHLE": "Macro HLE'yi Aktifleştir", "SettingsEnableMacroHLE": "Macro HLE'yi Aktifleştir",
"SettingsEnableMacroHLETooltip": "GPU Macro kodunun yüksek seviye emülasyonu.\n\nPerformansı arttırır, ama bazı oyunlarda grafik hatalarına yol açabilir.\n\nEmin değilseniz AÇIK bırakın.", "SettingsEnableMacroHLETooltip": "GPU Macro kodunun yüksek seviye emülasyonu.\n\nPerformansı arttırır, ama bazı oyunlarda grafik hatalarına yol açabilir.\n\nEmin değilseniz AÇIK bırakın.",
"SettingsEnableColorSpacePassthrough": "Renk Alanı Geçişi",
"SettingsEnableColorSpacePassthroughTooltip": "Vulkan Backend'ini renk alanı belirtmeden renk bilgisinden geçmeye yönlendirir. Geniş gam ekranlı kullanıcılar için bu, renk doğruluğu pahasına daha canlı renklerle sonuçlanabilir.",
"VolumeShort": "Ses", "VolumeShort": "Ses",
"UserProfilesManageSaves": "Kayıtları Yönet", "UserProfilesManageSaves": "Kayıtları Yönet",
"DeleteUserSave": "Bu oyun için kullanıcı kaydını silmek istiyor musunuz?", "DeleteUserSave": "Bu oyun için kullanıcı kaydını silmek istiyor musunuz?",
@ -610,5 +633,24 @@
"Search": "Ara", "Search": "Ara",
"UserProfilesRecoverLostAccounts": "Kayıp Hesapları Kurtar", "UserProfilesRecoverLostAccounts": "Kayıp Hesapları Kurtar",
"Recover": "Kurtar", "Recover": "Kurtar",
"UserProfilesRecoverHeading": "Aşağıdaki hesaplar için kayıtlar bulundu" "UserProfilesRecoverHeading": "Aşağıdaki hesaplar için kayıtlar bulundu",
"UserProfilesRecoverEmptyList": "Kurtarılacak profil bulunamadı",
"GraphicsAATooltip": "Oyuna Kenar Yumuşatma Ekler",
"GraphicsAALabel": "Kenar Yumuşatma:",
"GraphicsScalingFilterLabel": "Ölçekleme Filtresi:",
"GraphicsScalingFilterTooltip": "Çerçeve Arabellek Filtresini Açar",
"GraphicsScalingFilterLevelLabel": "Seviye",
"GraphicsScalingFilterLevelTooltip": "Ölçekleme Filtre Seviyesini Belirle",
"SmaaLow": "Düşük SMAA",
"SmaaMedium": "Orta SMAA",
"SmaaHigh": "Yüksek SMAA",
"SmaaUltra": "En Yüksek SMAA",
"UserEditorTitle": "Kullanıcıyı Düzenle",
"UserEditorTitleCreate": "Kullanıcı Oluştur",
"SettingsTabNetworkInterface": "Ağ Bağlantısı:",
"NetworkInterfaceTooltip": "LAN özellikleri için kullanılan ağ bağlantısı",
"NetworkInterfaceDefault": "Varsayılan",
"PackagingShaders": "Gölgeler Paketleniyor",
"AboutChangelogButton": "GitHub'da Değişiklikleri Görüntüle",
"AboutChangelogButtonTooltipMessage": "Kullandığınız versiyon için olan değişiklikleri varsayılan tarayıcınızda görmek için tıklayın"
} }

View file

@ -7,6 +7,7 @@
"SettingsTabSystemMemoryManagerModeSoftware": "Програмне забезпечення", "SettingsTabSystemMemoryManagerModeSoftware": "Програмне забезпечення",
"SettingsTabSystemMemoryManagerModeHost": "Хост (швидко)", "SettingsTabSystemMemoryManagerModeHost": "Хост (швидко)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "Неперевірений хост (найшвидший, небезпечний)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "Неперевірений хост (найшвидший, небезпечний)",
"SettingsTabSystemUseHypervisor": "Use Hypervisor",
"MenuBarFile": "_Файл", "MenuBarFile": "_Файл",
"MenuBarFileOpenFromFile": "_Завантажити програму з файлу", "MenuBarFileOpenFromFile": "_Завантажити програму з файлу",
"MenuBarFileOpenUnpacked": "Завантажити _розпаковану гру", "MenuBarFileOpenUnpacked": "Завантажити _розпаковану гру",
@ -26,6 +27,9 @@
"MenuBarToolsInstallFirmware": "Встановити прошивку", "MenuBarToolsInstallFirmware": "Встановити прошивку",
"MenuBarFileToolsInstallFirmwareFromFile": "Встановити прошивку з XCI або ZIP", "MenuBarFileToolsInstallFirmwareFromFile": "Встановити прошивку з XCI або ZIP",
"MenuBarFileToolsInstallFirmwareFromDirectory": "Встановити прошивку з теки", "MenuBarFileToolsInstallFirmwareFromDirectory": "Встановити прошивку з теки",
"MenuBarToolsManageFileTypes": "Manage file types",
"MenuBarToolsInstallFileTypes": "Install file types",
"MenuBarToolsUninstallFileTypes": "Uninstall file types",
"MenuBarHelp": "Довідка", "MenuBarHelp": "Довідка",
"MenuBarHelpCheckForUpdates": "Перевірити оновлення", "MenuBarHelpCheckForUpdates": "Перевірити оновлення",
"MenuBarHelpAbout": "Про програму", "MenuBarHelpAbout": "Про програму",
@ -70,13 +74,23 @@
"GameListContextMenuExtractDataLogoToolTip": "Видобуває розділ логотипу з поточної конфігурації програми (включаючи оновлення)", "GameListContextMenuExtractDataLogoToolTip": "Видобуває розділ логотипу з поточної конфігурації програми (включаючи оновлення)",
"StatusBarGamesLoaded": "{0}/{1} Ігор завантажено", "StatusBarGamesLoaded": "{0}/{1} Ігор завантажено",
"StatusBarSystemVersion": "Версія системи: {0}", "StatusBarSystemVersion": "Версія системи: {0}",
"LinuxVmMaxMapCountDialogTitle": "Low limit for memory mappings detected",
"LinuxVmMaxMapCountDialogTextPrimary": "Would you like to increase the value of vm.max_map_count to {0}",
"LinuxVmMaxMapCountDialogTextSecondary": "Some games might try to create more memory mappings than currently allowed. Ryujinx will crash as soon as this limit gets exceeded.",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "Yes, until the next restart",
"LinuxVmMaxMapCountDialogButtonPersistent": "Yes, permanently",
"LinuxVmMaxMapCountWarningTextPrimary": "Max amount of memory mappings is lower than recommended.",
"LinuxVmMaxMapCountWarningTextSecondary": "The current value of vm.max_map_count ({0}) is lower than {1}. Some games might try to create more memory mappings than currently allowed. Ryujinx will crash as soon as this limit gets exceeded.\n\nYou might want to either manually increase the limit or install pkexec, which allows Ryujinx to assist with that.",
"Settings": "Налаштування", "Settings": "Налаштування",
"SettingsTabGeneral": "Інтерфейс користувача", "SettingsTabGeneral": "Інтерфейс користувача",
"SettingsTabGeneralGeneral": "Загальні", "SettingsTabGeneralGeneral": "Загальні",
"SettingsTabGeneralEnableDiscordRichPresence": "Увімкнути розширену присутність Discord", "SettingsTabGeneralEnableDiscordRichPresence": "Увімкнути розширену присутність Discord",
"SettingsTabGeneralCheckUpdatesOnLaunch": "Перевіряти наявність оновлень під час запуску", "SettingsTabGeneralCheckUpdatesOnLaunch": "Перевіряти наявність оновлень під час запуску",
"SettingsTabGeneralShowConfirmExitDialog": "Показати діалогове вікно «Підтвердити вихід».", "SettingsTabGeneralShowConfirmExitDialog": "Показати діалогове вікно «Підтвердити вихід».",
"SettingsTabGeneralHideCursor": "Hide Cursor:",
"SettingsTabGeneralHideCursorNever": "Never",
"SettingsTabGeneralHideCursorOnIdle": "Приховати курсор у режимі очікування", "SettingsTabGeneralHideCursorOnIdle": "Приховати курсор у режимі очікування",
"SettingsTabGeneralHideCursorAlways": "Always",
"SettingsTabGeneralGameDirectories": "Каталоги ігор", "SettingsTabGeneralGameDirectories": "Каталоги ігор",
"SettingsTabGeneralAdd": "Додати", "SettingsTabGeneralAdd": "Додати",
"SettingsTabGeneralRemove": "Видалити", "SettingsTabGeneralRemove": "Видалити",
@ -158,6 +172,7 @@
"SettingsTabLoggingEnableFsAccessLogs": "Увімкнути журнали доступу Fs", "SettingsTabLoggingEnableFsAccessLogs": "Увімкнути журнали доступу Fs",
"SettingsTabLoggingFsGlobalAccessLogMode": "Режим журналу глобального доступу Fs:", "SettingsTabLoggingFsGlobalAccessLogMode": "Режим журналу глобального доступу Fs:",
"SettingsTabLoggingDeveloperOptions": "Параметри розробника (УВАГА: знизиться продуктивність)", "SettingsTabLoggingDeveloperOptions": "Параметри розробника (УВАГА: знизиться продуктивність)",
"SettingsTabLoggingDeveloperOptionsNote": "WARNING: Will reduce performance",
"SettingsTabLoggingGraphicsBackendLogLevel": "Рівень журналу графічного сервера:", "SettingsTabLoggingGraphicsBackendLogLevel": "Рівень журналу графічного сервера:",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "Ні", "SettingsTabLoggingGraphicsBackendLogLevelNone": "Ні",
"SettingsTabLoggingGraphicsBackendLogLevelError": "Помилка", "SettingsTabLoggingGraphicsBackendLogLevelError": "Помилка",
@ -208,26 +223,17 @@
"ControllerSettingsDPadDown": "Вниз", "ControllerSettingsDPadDown": "Вниз",
"ControllerSettingsDPadLeft": "Вліво", "ControllerSettingsDPadLeft": "Вліво",
"ControllerSettingsDPadRight": "Вправо", "ControllerSettingsDPadRight": "Вправо",
"ControllerSettingsStickButton": "Button",
"ControllerSettingsStickUp": "Up",
"ControllerSettingsStickDown": "Down",
"ControllerSettingsStickLeft": "Left",
"ControllerSettingsStickRight": "Right",
"ControllerSettingsStickStick": "Stick",
"ControllerSettingsStickInvertXAxis": "Invert Stick X",
"ControllerSettingsStickInvertYAxis": "Invert Stick Y",
"ControllerSettingsStickDeadzone": "Deadzone:",
"ControllerSettingsLStick": "Лівий джойстик", "ControllerSettingsLStick": "Лівий джойстик",
"ControllerSettingsLStickButton": "Кнопка",
"ControllerSettingsLStickUp": "Вгору",
"ControllerSettingsLStickDown": "Вниз",
"ControllerSettingsLStickLeft": "Вліво",
"ControllerSettingsLStickRight": "Вправо",
"ControllerSettingsLStickStick": "Джойстик",
"ControllerSettingsLStickInvertXAxis": "Інвертувати джойстик по X",
"ControllerSettingsLStickInvertYAxis": "Інвертувати джойстик по Y",
"ControllerSettingsLStickDeadzone": "Мертва зона:",
"ControllerSettingsRStick": "Правий джойстик", "ControllerSettingsRStick": "Правий джойстик",
"ControllerSettingsRStickButton": "Кнопка",
"ControllerSettingsRStickUp": "Вгору",
"ControllerSettingsRStickDown": "Вниз",
"ControllerSettingsRStickLeft": "Вліво",
"ControllerSettingsRStickRight": "Вправо",
"ControllerSettingsRStickStick": "Джойстик",
"ControllerSettingsRStickInvertXAxis": "Інвертувати джойстик по X",
"ControllerSettingsRStickInvertYAxis": "Інвертувати джойстик по Y",
"ControllerSettingsRStickDeadzone": "Мертва зона:",
"ControllerSettingsTriggersLeft": "Тригери ліворуч", "ControllerSettingsTriggersLeft": "Тригери ліворуч",
"ControllerSettingsTriggersRight": "Тригери праворуч", "ControllerSettingsTriggersRight": "Тригери праворуч",
"ControllerSettingsTriggersButtonsLeft": "Кнопки тригерів ліворуч", "ControllerSettingsTriggersButtonsLeft": "Кнопки тригерів ліворуч",
@ -260,8 +266,9 @@
"UserProfilesChangeProfileImage": "Змінити зображення профілю", "UserProfilesChangeProfileImage": "Змінити зображення профілю",
"UserProfilesAvailableUserProfiles": "Доступні профілі користувачів:", "UserProfilesAvailableUserProfiles": "Доступні профілі користувачів:",
"UserProfilesAddNewProfile": "Створити профіль", "UserProfilesAddNewProfile": "Створити профіль",
"UserProfilesDeleteSelectedProfile": "Видалити вибране", "UserProfilesDelete": "Delete",
"UserProfilesClose": "Закрити", "UserProfilesClose": "Закрити",
"ProfileNameSelectionWatermark": "Choose a nickname",
"ProfileImageSelectionTitle": "Вибір зображення профілю", "ProfileImageSelectionTitle": "Вибір зображення профілю",
"ProfileImageSelectionHeader": "Виберіть зображення профілю", "ProfileImageSelectionHeader": "Виберіть зображення профілю",
"ProfileImageSelectionNote": "Ви можете імпортувати власне зображення профілю або вибрати аватар із мікропрограми системи", "ProfileImageSelectionNote": "Ви можете імпортувати власне зображення профілю або вибрати аватар із мікропрограми системи",
@ -282,6 +289,7 @@
"ControllerSettingsSaveProfileToolTip": "Зберегти профіль", "ControllerSettingsSaveProfileToolTip": "Зберегти профіль",
"MenuBarFileToolsTakeScreenshot": "Зробити знімок екрана", "MenuBarFileToolsTakeScreenshot": "Зробити знімок екрана",
"MenuBarFileToolsHideUi": "Сховати інтерфейс", "MenuBarFileToolsHideUi": "Сховати інтерфейс",
"GameListContextMenuRunApplication": "Run Application",
"GameListContextMenuToggleFavorite": "Перемкнути вибране", "GameListContextMenuToggleFavorite": "Перемкнути вибране",
"GameListContextMenuToggleFavoriteToolTip": "Перемкнути улюблений статус гри", "GameListContextMenuToggleFavoriteToolTip": "Перемкнути улюблений статус гри",
"SettingsTabGeneralTheme": "Тема", "SettingsTabGeneralTheme": "Тема",
@ -337,6 +345,10 @@
"DialogFirmwareInstallEmbeddedSuccessMessage": "Встановлену прошивку не знайдено, але Ryujinx вдалося встановити прошивку {0} з наданої гри.\\nТепер запуститься емулятор.", "DialogFirmwareInstallEmbeddedSuccessMessage": "Встановлену прошивку не знайдено, але Ryujinx вдалося встановити прошивку {0} з наданої гри.\\nТепер запуститься емулятор.",
"DialogFirmwareNoFirmwareInstalledMessage": "Прошивка не встановлена", "DialogFirmwareNoFirmwareInstalledMessage": "Прошивка не встановлена",
"DialogFirmwareInstalledMessage": "Встановлено прошивку {0}", "DialogFirmwareInstalledMessage": "Встановлено прошивку {0}",
"DialogInstallFileTypesSuccessMessage": "Successfully installed file types!",
"DialogInstallFileTypesErrorMessage": "Failed to install file types.",
"DialogUninstallFileTypesSuccessMessage": "Successfully uninstalled file types!",
"DialogUninstallFileTypesErrorMessage": "Failed to uninstall file types.",
"DialogOpenSettingsWindowLabel": "Відкрити вікно налаштувань", "DialogOpenSettingsWindowLabel": "Відкрити вікно налаштувань",
"DialogControllerAppletTitle": "Аплет контролера", "DialogControllerAppletTitle": "Аплет контролера",
"DialogMessageDialogErrorExceptionMessage": "Помилка показу діалогового вікна повідомлення: {0}", "DialogMessageDialogErrorExceptionMessage": "Помилка показу діалогового вікна повідомлення: {0}",
@ -368,6 +380,9 @@
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Версію системи {0} успішно встановлено.", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "Версію системи {0} успішно встановлено.",
"DialogUserProfileDeletionWarningMessage": "Якщо вибраний профіль буде видалено, інші профілі не відкриватимуться", "DialogUserProfileDeletionWarningMessage": "Якщо вибраний профіль буде видалено, інші профілі не відкриватимуться",
"DialogUserProfileDeletionConfirmMessage": "Ви хочете видалити вибраний профіль", "DialogUserProfileDeletionConfirmMessage": "Ви хочете видалити вибраний профіль",
"DialogUserProfileUnsavedChangesTitle": "Warning - Unsaved Changes",
"DialogUserProfileUnsavedChangesMessage": "You have made changes to this user profile that have not been saved.",
"DialogUserProfileUnsavedChangesSubMessage": "Do you want to discard your changes?",
"DialogControllerSettingsModifiedConfirmMessage": "Поточні налаштування контролера оновлено.", "DialogControllerSettingsModifiedConfirmMessage": "Поточні налаштування контролера оновлено.",
"DialogControllerSettingsModifiedConfirmSubMessage": "Ви хочете зберегти?", "DialogControllerSettingsModifiedConfirmSubMessage": "Ви хочете зберегти?",
"DialogLoadNcaErrorMessage": "{0}. Файл з помилкою: {1}", "DialogLoadNcaErrorMessage": "{0}. Файл з помилкою: {1}",
@ -416,6 +431,7 @@
"DlcManagerEnableAllButton": "Увімкнути всі", "DlcManagerEnableAllButton": "Увімкнути всі",
"DlcManagerDisableAllButton": "Вимкнути всі", "DlcManagerDisableAllButton": "Вимкнути всі",
"MenuBarOptionsChangeLanguage": "Змінити мову", "MenuBarOptionsChangeLanguage": "Змінити мову",
"MenuBarShowFileTypes": "Show File Types",
"CommonSort": "Сортувати", "CommonSort": "Сортувати",
"CommonShowNames": "Показати назви", "CommonShowNames": "Показати назви",
"CommonFavorite": "Вибрані", "CommonFavorite": "Вибрані",
@ -445,6 +461,7 @@
"MemoryManagerSoftwareTooltip": "Використовує програмну таблицю сторінок для перекладу адрес. Найвища точність, але найповільніша продуктивність.", "MemoryManagerSoftwareTooltip": "Використовує програмну таблицю сторінок для перекладу адрес. Найвища точність, але найповільніша продуктивність.",
"MemoryManagerHostTooltip": "Пряме відображення пам'яті в адресному просторі хосту. Набагато швидша компіляція та виконання JIT.", "MemoryManagerHostTooltip": "Пряме відображення пам'яті в адресному просторі хосту. Набагато швидша компіляція та виконання JIT.",
"MemoryManagerUnsafeTooltip": "Пряме відображення пам’яті, але не маскує адресу в гостьовому адресному просторі перед доступом. Швидше, але ціною безпеки. Гостьова програма може отримати доступ до пам’яті з будь-якого місця в Ryujinx, тому запускайте в цьому режимі лише програми, яким ви довіряєте.", "MemoryManagerUnsafeTooltip": "Пряме відображення пам’яті, але не маскує адресу в гостьовому адресному просторі перед доступом. Швидше, але ціною безпеки. Гостьова програма може отримати доступ до пам’яті з будь-якого місця в Ryujinx, тому запускайте в цьому режимі лише програми, яким ви довіряєте.",
"UseHypervisorTooltip": "Use Hypervisor instead of JIT. Greatly improves performance when available, but can be unstable in its current state.",
"DRamTooltip": "Використовує альтернативний макет MemoryMode для імітації моделі розробки Switch.\n\nЦе корисно лише для пакетів текстур з вищою роздільною здатністю або модифікацій із роздільною здатністю 4K. НЕ покращує продуктивність.\n\nЗалиште вимкненим, якщо не впевнені.", "DRamTooltip": "Використовує альтернативний макет MemoryMode для імітації моделі розробки Switch.\n\nЦе корисно лише для пакетів текстур з вищою роздільною здатністю або модифікацій із роздільною здатністю 4K. НЕ покращує продуктивність.\n\nЗалиште вимкненим, якщо не впевнені.",
"IgnoreMissingServicesTooltip": "Ігнорує нереалізовані служби Horizon OS. Це може допомогти в обході збоїв під час завантаження певних ігор.\n\nЗалиште вимкненим, якщо не впевнені.", "IgnoreMissingServicesTooltip": "Ігнорує нереалізовані служби Horizon OS. Це може допомогти в обході збоїв під час завантаження певних ігор.\n\nЗалиште вимкненим, якщо не впевнені.",
"GraphicsBackendThreadingTooltip": "Виконує команди графічного сервера в другому потоці.\n\nПрискорює компіляцію шейдерів, зменшує затримки та покращує продуктивність драйверів GPU без власної підтримки багатопоточності. Трохи краща продуктивність на драйверах з багатопотоковістю.\nВстановіть значення «Авто», якщо не впевнені", "GraphicsBackendThreadingTooltip": "Виконує команди графічного сервера в другому потоці.\n\nПрискорює компіляцію шейдерів, зменшує затримки та покращує продуктивність драйверів GPU без власної підтримки багатопоточності. Трохи краща продуктивність на драйверах з багатопотоковістю.\nВстановіть значення «Авто», якщо не впевнені",
@ -527,6 +544,9 @@
"SwkbdMinCharacters": "Мінімальна кількість символів: {0}", "SwkbdMinCharacters": "Мінімальна кількість символів: {0}",
"SwkbdMinRangeCharacters": "Має бути {0}-{1} символів", "SwkbdMinRangeCharacters": "Має бути {0}-{1} символів",
"SoftwareKeyboard": "Програмна клавіатура", "SoftwareKeyboard": "Програмна клавіатура",
"SoftwareKeyboardModeNumbersOnly": "Must be numbers only",
"SoftwareKeyboardModeAlphabet": "Must be non CJK-characters only",
"SoftwareKeyboardModeASCII": "Must be ASCII text only",
"DialogControllerAppletMessagePlayerRange": "Програма запитує {0} гравця(ів) з:\n\nТИПИ: {1}\n\nГРАВЦІ: {2}\n\n{3}Будь ласка, відкрийте «Налаштування» та повторно налаштуйте «Введення» або натисніть «Закрити».", "DialogControllerAppletMessagePlayerRange": "Програма запитує {0} гравця(ів) з:\n\nТИПИ: {1}\n\nГРАВЦІ: {2}\n\n{3}Будь ласка, відкрийте «Налаштування» та повторно налаштуйте «Введення» або натисніть «Закрити».",
"DialogControllerAppletMessage": "Програма запитує рівно стільки гравців: {0} з:\n\nТИПАМИ: {1}\n\nГРАВЦІВ: {2}\n\n{3}Будь ласка, відкрийте «Налаштування» та повторно налаштуйте «Введення» або натисніть «Закрити».", "DialogControllerAppletMessage": "Програма запитує рівно стільки гравців: {0} з:\n\nТИПАМИ: {1}\n\nГРАВЦІВ: {2}\n\n{3}Будь ласка, відкрийте «Налаштування» та повторно налаштуйте «Введення» або натисніть «Закрити».",
"DialogControllerAppletDockModeSet": "Встановлено режим док-станції. Ручний також недійсний.\n", "DialogControllerAppletDockModeSet": "Встановлено режим док-станції. Ручний також недійсний.\n",
@ -572,6 +592,7 @@
"DlcWindowTitle": "Менеджер вмісту для завантаження", "DlcWindowTitle": "Менеджер вмісту для завантаження",
"UpdateWindowTitle": "Менеджер оновлення назв", "UpdateWindowTitle": "Менеджер оновлення назв",
"CheatWindowHeading": "Коди доступні для {0} [{1}]", "CheatWindowHeading": "Коди доступні для {0} [{1}]",
"BuildId": "BuildId:",
"DlcWindowHeading": "Вміст для завантаження, доступний для {1} ({2}): {0}", "DlcWindowHeading": "Вміст для завантаження, доступний для {1} ({2}): {0}",
"UserProfilesEditProfile": "Редагувати вибране", "UserProfilesEditProfile": "Редагувати вибране",
"Cancel": "Скасувати", "Cancel": "Скасувати",
@ -599,6 +620,8 @@
"SettingsTabHotkeysVolumeDownHotkey": "Зменшити гучність:", "SettingsTabHotkeysVolumeDownHotkey": "Зменшити гучність:",
"SettingsEnableMacroHLE": "Увімкнути макрос HLE", "SettingsEnableMacroHLE": "Увімкнути макрос HLE",
"SettingsEnableMacroHLETooltip": "Високорівнева емуляція коду макросу GPU.\n\nПокращує продуктивність, але може викликати графічні збої в деяких іграх.\n\nЗалиште увімкненим, якщо не впевнені.", "SettingsEnableMacroHLETooltip": "Високорівнева емуляція коду макросу GPU.\n\nПокращує продуктивність, але може викликати графічні збої в деяких іграх.\n\nЗалиште увімкненим, якщо не впевнені.",
"SettingsEnableColorSpacePassthrough": "Color Space Passthrough",
"SettingsEnableColorSpacePassthroughTooltip": "Directs the Vulkan backend to pass through color information without specifying a color space. For users with wide gamut displays, this may result in more vibrant colors, at the cost of color correctness.",
"VolumeShort": "Гуч", "VolumeShort": "Гуч",
"UserProfilesManageSaves": "Керувати збереженнями", "UserProfilesManageSaves": "Керувати збереженнями",
"DeleteUserSave": "Ви хочете видалити збереження користувача для цієї гри?", "DeleteUserSave": "Ви хочете видалити збереження користувача для цієї гри?",
@ -610,5 +633,24 @@
"Search": "Пошук", "Search": "Пошук",
"UserProfilesRecoverLostAccounts": "Відновлення втрачених облікових записів", "UserProfilesRecoverLostAccounts": "Відновлення втрачених облікових записів",
"Recover": "Відновити", "Recover": "Відновити",
"UserProfilesRecoverHeading": "Знайдено збереження для наступних облікових записів" "UserProfilesRecoverHeading": "Знайдено збереження для наступних облікових записів",
"UserProfilesRecoverEmptyList": "No profiles to recover",
"GraphicsAATooltip": "Applies anti-aliasing to the game render",
"GraphicsAALabel": "Anti-Aliasing:",
"GraphicsScalingFilterLabel": "Scaling Filter:",
"GraphicsScalingFilterTooltip": "Enables Framebuffer Scaling",
"GraphicsScalingFilterLevelLabel": "Level",
"GraphicsScalingFilterLevelTooltip": "Set Scaling Filter Level",
"SmaaLow": "SMAA Low",
"SmaaMedium": "SMAA Medium",
"SmaaHigh": "SMAA High",
"SmaaUltra": "SMAA Ultra",
"UserEditorTitle": "Edit User",
"UserEditorTitleCreate": "Create User",
"SettingsTabNetworkInterface": "Network Interface:",
"NetworkInterfaceTooltip": "The network interface used for LAN features",
"NetworkInterfaceDefault": "Default",
"PackagingShaders": "Packaging Shaders",
"AboutChangelogButton": "View Changelog on GitHub",
"AboutChangelogButtonTooltipMessage": "Click to open the changelog for this version in your default browser."
} }

View file

@ -7,6 +7,7 @@
"SettingsTabSystemMemoryManagerModeSoftware": "软件", "SettingsTabSystemMemoryManagerModeSoftware": "软件",
"SettingsTabSystemMemoryManagerModeHost": "本机 (快速)", "SettingsTabSystemMemoryManagerModeHost": "本机 (快速)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "跳过检查的本机 (最快)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "跳过检查的本机 (最快)",
"SettingsTabSystemUseHypervisor": "使用 Hypervisor 虚拟化",
"MenuBarFile": "文件", "MenuBarFile": "文件",
"MenuBarFileOpenFromFile": "加载文件", "MenuBarFileOpenFromFile": "加载文件",
"MenuBarFileOpenUnpacked": "加载解包后的游戏", "MenuBarFileOpenUnpacked": "加载解包后的游戏",
@ -26,10 +27,13 @@
"MenuBarToolsInstallFirmware": "安装固件", "MenuBarToolsInstallFirmware": "安装固件",
"MenuBarFileToolsInstallFirmwareFromFile": "从 XCI 或 ZIP 安装固件", "MenuBarFileToolsInstallFirmwareFromFile": "从 XCI 或 ZIP 安装固件",
"MenuBarFileToolsInstallFirmwareFromDirectory": "从文件夹安装固件", "MenuBarFileToolsInstallFirmwareFromDirectory": "从文件夹安装固件",
"MenuBarToolsManageFileTypes": "管理文件扩展名",
"MenuBarToolsInstallFileTypes": "关联文件扩展名",
"MenuBarToolsUninstallFileTypes": "取消关联扩展名",
"MenuBarHelp": "帮助", "MenuBarHelp": "帮助",
"MenuBarHelpCheckForUpdates": "检查更新", "MenuBarHelpCheckForUpdates": "检查更新",
"MenuBarHelpAbout": "关于", "MenuBarHelpAbout": "关于",
"MenuSearch": "搜索…", "MenuSearch": "搜索…",
"GameListHeaderFavorite": "收藏", "GameListHeaderFavorite": "收藏",
"GameListHeaderIcon": "图标", "GameListHeaderIcon": "图标",
"GameListHeaderApplication": "名称", "GameListHeaderApplication": "名称",
@ -40,9 +44,9 @@
"GameListHeaderFileExtension": "扩展名", "GameListHeaderFileExtension": "扩展名",
"GameListHeaderFileSize": "大小", "GameListHeaderFileSize": "大小",
"GameListHeaderPath": "路径", "GameListHeaderPath": "路径",
"GameListContextMenuOpenUserSaveDirectory": "打开用存档目录", "GameListContextMenuOpenUserSaveDirectory": "打开存档目录",
"GameListContextMenuOpenUserSaveDirectoryToolTip": "打开储存游戏存档的目录", "GameListContextMenuOpenUserSaveDirectoryToolTip": "打开储存游戏存档的目录",
"GameListContextMenuOpenDeviceSaveDirectory": "打开应用系统目录", "GameListContextMenuOpenDeviceSaveDirectory": "打开系统目录",
"GameListContextMenuOpenDeviceSaveDirectoryToolTip": "打开包含游戏系统设置的目录", "GameListContextMenuOpenDeviceSaveDirectoryToolTip": "打开包含游戏系统设置的目录",
"GameListContextMenuOpenBcatSaveDirectory": "打开 BCAT 目录", "GameListContextMenuOpenBcatSaveDirectory": "打开 BCAT 目录",
"GameListContextMenuOpenBcatSaveDirectoryToolTip": "打开包含游戏 BCAT 数据的目录", "GameListContextMenuOpenBcatSaveDirectoryToolTip": "打开包含游戏 BCAT 数据的目录",
@ -60,7 +64,7 @@
"GameListContextMenuCacheManagementOpenPptcDirectory": "打开 PPTC 目录", "GameListContextMenuCacheManagementOpenPptcDirectory": "打开 PPTC 目录",
"GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "打开包含游戏 PPTC 缓存的目录", "GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "打开包含游戏 PPTC 缓存的目录",
"GameListContextMenuCacheManagementOpenShaderCacheDirectory": "打开着色器缓存目录", "GameListContextMenuCacheManagementOpenShaderCacheDirectory": "打开着色器缓存目录",
"GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "打开包含应用程序着色器缓存的目录", "GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "打开包含游戏着色器缓存的目录",
"GameListContextMenuExtractData": "提取数据", "GameListContextMenuExtractData": "提取数据",
"GameListContextMenuExtractDataExeFS": "ExeFS", "GameListContextMenuExtractDataExeFS": "ExeFS",
"GameListContextMenuExtractDataExeFSToolTip": "从游戏的当前状态中提取 ExeFS 分区 (包括更新)", "GameListContextMenuExtractDataExeFSToolTip": "从游戏的当前状态中提取 ExeFS 分区 (包括更新)",
@ -70,13 +74,23 @@
"GameListContextMenuExtractDataLogoToolTip": "从游戏的当前状态中提取图标 (包括更新)", "GameListContextMenuExtractDataLogoToolTip": "从游戏的当前状态中提取图标 (包括更新)",
"StatusBarGamesLoaded": "{0}/{1} 游戏加载完成", "StatusBarGamesLoaded": "{0}/{1} 游戏加载完成",
"StatusBarSystemVersion": "系统版本:{0}", "StatusBarSystemVersion": "系统版本:{0}",
"LinuxVmMaxMapCountDialogTitle": "检测到内存映射的限制过低",
"LinuxVmMaxMapCountDialogTextPrimary": "你想要将 vm.max_map_count 的值增加到 {0} 吗",
"LinuxVmMaxMapCountDialogTextSecondary": "有些游戏可能会试图创建超过当前允许的内存映射数量。当超过此限制时Ryujinx会立即崩溃。",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "确定,关闭后重置",
"LinuxVmMaxMapCountDialogButtonPersistent": "确定,永久保存",
"LinuxVmMaxMapCountWarningTextPrimary": "内存映射的最大数量低于推荐值。",
"LinuxVmMaxMapCountWarningTextSecondary": "vm.max_map_count ({0}) 的当前值小于 {1}。 有些游戏可能会试图创建超过当前允许的内存映射量。当大于此限制时Ryujinx 会立即崩溃。\n\n你可以手动增加内存映射限制或者安装 pkexec它可以辅助Ryujinx解决该问题。",
"Settings": "设置", "Settings": "设置",
"SettingsTabGeneral": "用户界面", "SettingsTabGeneral": "用户界面",
"SettingsTabGeneralGeneral": "常规", "SettingsTabGeneralGeneral": "常规",
"SettingsTabGeneralEnableDiscordRichPresence": "启用 Discord 在线状态展示", "SettingsTabGeneralEnableDiscordRichPresence": "启用 Discord 在线状态展示",
"SettingsTabGeneralCheckUpdatesOnLaunch": "自动检查更新", "SettingsTabGeneralCheckUpdatesOnLaunch": "自动检查更新",
"SettingsTabGeneralShowConfirmExitDialog": "显示 \"确认退出\" 对话框", "SettingsTabGeneralShowConfirmExitDialog": "显示 \"确认退出\" 对话框",
"SettingsTabGeneralHideCursorOnIdle": "自动隐藏鼠标", "SettingsTabGeneralHideCursor": "隐藏鼠标指针:",
"SettingsTabGeneralHideCursorNever": "从不",
"SettingsTabGeneralHideCursorOnIdle": "自动隐藏",
"SettingsTabGeneralHideCursorAlways": "始终",
"SettingsTabGeneralGameDirectories": "游戏目录", "SettingsTabGeneralGameDirectories": "游戏目录",
"SettingsTabGeneralAdd": "添加", "SettingsTabGeneralAdd": "添加",
"SettingsTabGeneralRemove": "删除", "SettingsTabGeneralRemove": "删除",
@ -97,12 +111,12 @@
"SettingsTabSystemSystemLanguageGerman": "德语", "SettingsTabSystemSystemLanguageGerman": "德语",
"SettingsTabSystemSystemLanguageItalian": "意大利语", "SettingsTabSystemSystemLanguageItalian": "意大利语",
"SettingsTabSystemSystemLanguageSpanish": "西班牙语", "SettingsTabSystemSystemLanguageSpanish": "西班牙语",
"SettingsTabSystemSystemLanguageChinese": "中文(简体)——无效", "SettingsTabSystemSystemLanguageChinese": "简体中文",
"SettingsTabSystemSystemLanguageKorean": "韩语", "SettingsTabSystemSystemLanguageKorean": "韩语",
"SettingsTabSystemSystemLanguageDutch": "荷兰语", "SettingsTabSystemSystemLanguageDutch": "荷兰语",
"SettingsTabSystemSystemLanguagePortuguese": "葡萄牙语", "SettingsTabSystemSystemLanguagePortuguese": "葡萄牙语",
"SettingsTabSystemSystemLanguageRussian": "俄语", "SettingsTabSystemSystemLanguageRussian": "俄语",
"SettingsTabSystemSystemLanguageTaiwanese": "中文(繁体)——无效", "SettingsTabSystemSystemLanguageTaiwanese": "繁体中文(台湾)",
"SettingsTabSystemSystemLanguageBritishEnglish": "英式英语", "SettingsTabSystemSystemLanguageBritishEnglish": "英式英语",
"SettingsTabSystemSystemLanguageCanadianFrench": "加拿大法语", "SettingsTabSystemSystemLanguageCanadianFrench": "加拿大法语",
"SettingsTabSystemSystemLanguageLatinAmericanSpanish": "拉美西班牙语", "SettingsTabSystemSystemLanguageLatinAmericanSpanish": "拉美西班牙语",
@ -116,10 +130,10 @@
"SettingsTabSystemAudioBackend": "音频后端:", "SettingsTabSystemAudioBackend": "音频后端:",
"SettingsTabSystemAudioBackendDummy": "无", "SettingsTabSystemAudioBackendDummy": "无",
"SettingsTabSystemAudioBackendOpenAL": "OpenAL", "SettingsTabSystemAudioBackendOpenAL": "OpenAL",
"SettingsTabSystemAudioBackendSoundIO": "SoundIO", "SettingsTabSystemAudioBackendSoundIO": "音频输入/输出",
"SettingsTabSystemAudioBackendSDL2": "SDL2", "SettingsTabSystemAudioBackendSDL2": "SDL2",
"SettingsTabSystemHacks": "修正", "SettingsTabSystemHacks": "修正",
"SettingsTabSystemHacksNote": " (会引起模拟器不稳定)", "SettingsTabSystemHacksNote": "(会引起模拟器不稳定)",
"SettingsTabSystemExpandDramSize": "使用开发机的内存布局", "SettingsTabSystemExpandDramSize": "使用开发机的内存布局",
"SettingsTabSystemIgnoreMissingServices": "忽略缺失的服务", "SettingsTabSystemIgnoreMissingServices": "忽略缺失的服务",
"SettingsTabGraphics": "图形", "SettingsTabGraphics": "图形",
@ -131,33 +145,34 @@
"SettingsTabGraphicsAnisotropicFiltering4x": "4x", "SettingsTabGraphicsAnisotropicFiltering4x": "4x",
"SettingsTabGraphicsAnisotropicFiltering8x": "8x", "SettingsTabGraphicsAnisotropicFiltering8x": "8x",
"SettingsTabGraphicsAnisotropicFiltering16x": "16x", "SettingsTabGraphicsAnisotropicFiltering16x": "16x",
"SettingsTabGraphicsResolutionScale": "分辨率缩放:", "SettingsTabGraphicsResolutionScale": "分辨率缩放",
"SettingsTabGraphicsResolutionScaleCustom": "自定义 (不推荐)", "SettingsTabGraphicsResolutionScaleCustom": "自定义(不推荐)",
"SettingsTabGraphicsResolutionScaleNative": "原生 (720p/1080p)", "SettingsTabGraphicsResolutionScaleNative": "原生 (720p/1080p)",
"SettingsTabGraphicsResolutionScale2x": "2x (1440p/2160p)", "SettingsTabGraphicsResolutionScale2x": "2x (1440p/2160p)",
"SettingsTabGraphicsResolutionScale3x": "3x (2160p/3240p)", "SettingsTabGraphicsResolutionScale3x": "3x (2160p/3240p)",
"SettingsTabGraphicsResolutionScale4x": "4x (2880p/4320p)", "SettingsTabGraphicsResolutionScale4x": "4x (2880p/4320p)",
"SettingsTabGraphicsAspectRatio": "宽高比:", "SettingsTabGraphicsAspectRatio": "宽高比",
"SettingsTabGraphicsAspectRatio4x3": "4:3", "SettingsTabGraphicsAspectRatio4x3": "4:3",
"SettingsTabGraphicsAspectRatio16x9": "16:9", "SettingsTabGraphicsAspectRatio16x9": "16:9",
"SettingsTabGraphicsAspectRatio16x10": "16:10", "SettingsTabGraphicsAspectRatio16x10": "16:10",
"SettingsTabGraphicsAspectRatio21x9": "21:9", "SettingsTabGraphicsAspectRatio21x9": "21:9",
"SettingsTabGraphicsAspectRatio32x9": "32:9", "SettingsTabGraphicsAspectRatio32x9": "32:9",
"SettingsTabGraphicsAspectRatioStretch": "拉伸至屏幕", "SettingsTabGraphicsAspectRatioStretch": "拉伸以适应窗口",
"SettingsTabGraphicsDeveloperOptions": "开发者选项", "SettingsTabGraphicsDeveloperOptions": "开发者选项",
"SettingsTabGraphicsShaderDumpPath": "图形着色器转储路径:", "SettingsTabGraphicsShaderDumpPath": "图形着色器转储路径",
"SettingsTabLogging": "日志", "SettingsTabLogging": "日志",
"SettingsTabLoggingLogging": "日志", "SettingsTabLoggingLogging": "日志",
"SettingsTabLoggingEnableLoggingToFile": "保存日志为文件", "SettingsTabLoggingEnableLoggingToFile": "保存日志为文件",
"SettingsTabLoggingEnableStubLogs": "记录Stub", "SettingsTabLoggingEnableStubLogs": "启用 Stub 日志",
"SettingsTabLoggingEnableInfoLogs": "记录Info", "SettingsTabLoggingEnableInfoLogs": "启用信息日志",
"SettingsTabLoggingEnableWarningLogs": "记录Warning", "SettingsTabLoggingEnableWarningLogs": "启用警告日志",
"SettingsTabLoggingEnableErrorLogs": "记录Error", "SettingsTabLoggingEnableErrorLogs": "启用错误日志",
"SettingsTabLoggingEnableTraceLogs": "记录Trace", "SettingsTabLoggingEnableTraceLogs": "启用跟踪日志",
"SettingsTabLoggingEnableGuestLogs": "记录Guest", "SettingsTabLoggingEnableGuestLogs": "启用来宾日志",
"SettingsTabLoggingEnableFsAccessLogs": "记录文件访问", "SettingsTabLoggingEnableFsAccessLogs": "启用访问日志",
"SettingsTabLoggingFsGlobalAccessLogMode": "记录全局文件访问模式:", "SettingsTabLoggingFsGlobalAccessLogMode": "全局访问日志模式:",
"SettingsTabLoggingDeveloperOptions": "开发者选项 (警告: 会降低性能)", "SettingsTabLoggingDeveloperOptions": "开发者选项",
"SettingsTabLoggingDeveloperOptionsNote": "警告:会降低性能",
"SettingsTabLoggingGraphicsBackendLogLevel": "图形后端日志级别:", "SettingsTabLoggingGraphicsBackendLogLevel": "图形后端日志级别:",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "无", "SettingsTabLoggingGraphicsBackendLogLevelNone": "无",
"SettingsTabLoggingGraphicsBackendLogLevelError": "错误", "SettingsTabLoggingGraphicsBackendLogLevelError": "错误",
@ -169,7 +184,7 @@
"SettingsTabInputDirectKeyboardAccess": "直通键盘控制", "SettingsTabInputDirectKeyboardAccess": "直通键盘控制",
"SettingsButtonSave": "保存", "SettingsButtonSave": "保存",
"SettingsButtonClose": "取消", "SettingsButtonClose": "取消",
"SettingsButtonOk": "保存", "SettingsButtonOk": "确定",
"SettingsButtonCancel": "取消", "SettingsButtonCancel": "取消",
"SettingsButtonApply": "应用", "SettingsButtonApply": "应用",
"ControllerSettingsPlayer": "玩家", "ControllerSettingsPlayer": "玩家",
@ -188,7 +203,7 @@
"ControllerSettingsControllerType": "手柄类型", "ControllerSettingsControllerType": "手柄类型",
"ControllerSettingsControllerTypeHandheld": "掌机", "ControllerSettingsControllerTypeHandheld": "掌机",
"ControllerSettingsControllerTypeProController": "Pro 手柄", "ControllerSettingsControllerTypeProController": "Pro 手柄",
"ControllerSettingsControllerTypeJoyConPair": "JoyCon", "ControllerSettingsControllerTypeJoyConPair": "JoyCon 组合",
"ControllerSettingsControllerTypeJoyConLeft": "左 JoyCon", "ControllerSettingsControllerTypeJoyConLeft": "左 JoyCon",
"ControllerSettingsControllerTypeJoyConRight": "右 JoyCon", "ControllerSettingsControllerTypeJoyConRight": "右 JoyCon",
"ControllerSettingsProfile": "预设", "ControllerSettingsProfile": "预设",
@ -196,7 +211,7 @@
"ControllerSettingsLoad": "加载", "ControllerSettingsLoad": "加载",
"ControllerSettingsAdd": "新建", "ControllerSettingsAdd": "新建",
"ControllerSettingsRemove": "删除", "ControllerSettingsRemove": "删除",
"ControllerSettingsButtons": "按", "ControllerSettingsButtons": "按",
"ControllerSettingsButtonA": "A", "ControllerSettingsButtonA": "A",
"ControllerSettingsButtonB": "B", "ControllerSettingsButtonB": "B",
"ControllerSettingsButtonX": "X", "ControllerSettingsButtonX": "X",
@ -208,26 +223,17 @@
"ControllerSettingsDPadDown": "下", "ControllerSettingsDPadDown": "下",
"ControllerSettingsDPadLeft": "左", "ControllerSettingsDPadLeft": "左",
"ControllerSettingsDPadRight": "右", "ControllerSettingsDPadRight": "右",
"ControllerSettingsStickButton": "按下摇杆",
"ControllerSettingsStickUp": "上",
"ControllerSettingsStickDown": "下",
"ControllerSettingsStickLeft": "左",
"ControllerSettingsStickRight": "右",
"ControllerSettingsStickStick": "摇杆",
"ControllerSettingsStickInvertXAxis": "反转 X 轴方向",
"ControllerSettingsStickInvertYAxis": "反转 Y 轴方向",
"ControllerSettingsStickDeadzone": "死区:",
"ControllerSettingsLStick": "左摇杆", "ControllerSettingsLStick": "左摇杆",
"ControllerSettingsLStickButton": "按下摇杆",
"ControllerSettingsLStickUp": "上",
"ControllerSettingsLStickDown": "下",
"ControllerSettingsLStickLeft": "左",
"ControllerSettingsLStickRight": "右",
"ControllerSettingsLStickStick": "摇杆",
"ControllerSettingsLStickInvertXAxis": "反转 X 方向",
"ControllerSettingsLStickInvertYAxis": "反转 Y 方向",
"ControllerSettingsLStickDeadzone": "死区:",
"ControllerSettingsRStick": "右摇杆", "ControllerSettingsRStick": "右摇杆",
"ControllerSettingsRStickButton": "按下摇杆",
"ControllerSettingsRStickUp": "上",
"ControllerSettingsRStickDown": "下",
"ControllerSettingsRStickLeft": "左",
"ControllerSettingsRStickRight": "右",
"ControllerSettingsRStickStick": "摇杆",
"ControllerSettingsRStickInvertXAxis": "反转 X 方向",
"ControllerSettingsRStickInvertYAxis": "反转 Y 方向",
"ControllerSettingsRStickDeadzone": "死区:",
"ControllerSettingsTriggersLeft": "左扳机", "ControllerSettingsTriggersLeft": "左扳机",
"ControllerSettingsTriggersRight": "右扳机", "ControllerSettingsTriggersRight": "右扳机",
"ControllerSettingsTriggersButtonsLeft": "左扳机键", "ControllerSettingsTriggersButtonsLeft": "左扳机键",
@ -244,25 +250,26 @@
"ControllerSettingsExtraButtonsLeft": "左背键", "ControllerSettingsExtraButtonsLeft": "左背键",
"ControllerSettingsExtraButtonsRight": "右背键", "ControllerSettingsExtraButtonsRight": "右背键",
"ControllerSettingsMisc": "其他", "ControllerSettingsMisc": "其他",
"ControllerSettingsTriggerThreshold": "扳机阈值:", "ControllerSettingsTriggerThreshold": "扳机阈值",
"ControllerSettingsMotion": "体感", "ControllerSettingsMotion": "体感",
"ControllerSettingsMotionUseCemuhookCompatibleMotion": "使用 CemuHook 体感协议", "ControllerSettingsMotionUseCemuhookCompatibleMotion": "使用 CemuHook 体感协议",
"ControllerSettingsMotionControllerSlot": "手柄:", "ControllerSettingsMotionControllerSlot": "手柄",
"ControllerSettingsMotionMirrorInput": "镜像操作", "ControllerSettingsMotionMirrorInput": "镜像操作",
"ControllerSettingsMotionRightJoyConSlot": "右JoyCon:", "ControllerSettingsMotionRightJoyConSlot": "右JoyCon",
"ControllerSettingsMotionServerHost": "服务器 Host:", "ControllerSettingsMotionServerHost": "服务器Host",
"ControllerSettingsMotionGyroSensitivity": "陀螺仪敏感度:", "ControllerSettingsMotionGyroSensitivity": "陀螺仪敏感度",
"ControllerSettingsMotionGyroDeadzone": "陀螺仪死区:", "ControllerSettingsMotionGyroDeadzone": "陀螺仪死区",
"ControllerSettingsSave": "保存", "ControllerSettingsSave": "保存",
"ControllerSettingsClose": "关闭", "ControllerSettingsClose": "关闭",
"UserProfilesSelectedUserProfile": "选择的用户账户:", "UserProfilesSelectedUserProfile": "选择的用户账户",
"UserProfilesSaveProfileName": "保存名称", "UserProfilesSaveProfileName": "保存名称",
"UserProfilesChangeProfileImage": "更换头像", "UserProfilesChangeProfileImage": "更换头像",
"UserProfilesAvailableUserProfiles": "现有账户:", "UserProfilesAvailableUserProfiles": "现有账户",
"UserProfilesAddNewProfile": "新建账户", "UserProfilesAddNewProfile": "新建账户",
"UserProfilesDeleteSelectedProfile": "删除选中账户", "UserProfilesDelete": "删除",
"UserProfilesClose": "关闭", "UserProfilesClose": "关闭",
"ProfileImageSelectionTitle": "头像选择", "ProfileNameSelectionWatermark": "选择昵称",
"ProfileImageSelectionTitle": "选择头像",
"ProfileImageSelectionHeader": "选择合适的头像图片", "ProfileImageSelectionHeader": "选择合适的头像图片",
"ProfileImageSelectionNote": "您可以导入自定义头像,或从系统中选择头像", "ProfileImageSelectionNote": "您可以导入自定义头像,或从系统中选择头像",
"ProfileImageSelectionImportImage": "导入图像文件", "ProfileImageSelectionImportImage": "导入图像文件",
@ -272,8 +279,8 @@
"InputDialogCancel": "取消", "InputDialogCancel": "取消",
"InputDialogAddNewProfileTitle": "选择用户名称", "InputDialogAddNewProfileTitle": "选择用户名称",
"InputDialogAddNewProfileHeader": "请输入账户名称", "InputDialogAddNewProfileHeader": "请输入账户名称",
"InputDialogAddNewProfileSubtext": "(最大长度: {0})", "InputDialogAddNewProfileSubtext": "(最大长度{0})",
"AvatarChoose": "选择", "AvatarChoose": "选择头像",
"AvatarSetBackgroundColor": "设置背景色", "AvatarSetBackgroundColor": "设置背景色",
"AvatarClose": "关闭", "AvatarClose": "关闭",
"ControllerSettingsLoadProfileToolTip": "加载预设", "ControllerSettingsLoadProfileToolTip": "加载预设",
@ -281,7 +288,8 @@
"ControllerSettingsRemoveProfileToolTip": "删除预设", "ControllerSettingsRemoveProfileToolTip": "删除预设",
"ControllerSettingsSaveProfileToolTip": "保存预设", "ControllerSettingsSaveProfileToolTip": "保存预设",
"MenuBarFileToolsTakeScreenshot": "保存截图", "MenuBarFileToolsTakeScreenshot": "保存截图",
"MenuBarFileToolsHideUi": "Hide UI", "MenuBarFileToolsHideUi": "隐藏界面",
"GameListContextMenuRunApplication": "运行应用",
"GameListContextMenuToggleFavorite": "收藏", "GameListContextMenuToggleFavorite": "收藏",
"GameListContextMenuToggleFavoriteToolTip": "标记喜爱的游戏", "GameListContextMenuToggleFavoriteToolTip": "标记喜爱的游戏",
"SettingsTabGeneralTheme": "主题", "SettingsTabGeneralTheme": "主题",
@ -304,9 +312,9 @@
"DialogExitTitle": "Ryujinx - 关闭", "DialogExitTitle": "Ryujinx - 关闭",
"DialogErrorMessage": "Ryujinx 发生错误", "DialogErrorMessage": "Ryujinx 发生错误",
"DialogExitMessage": "是否关闭 Ryujinx", "DialogExitMessage": "是否关闭 Ryujinx",
"DialogExitSubMessage": "未保存的进度会丢失", "DialogExitSubMessage": "未保存的进度会丢失",
"DialogMessageCreateSaveErrorMessage": "创建特定的存档时出错: {0}", "DialogMessageCreateSaveErrorMessage": "创建特定的存档时出错{0}",
"DialogMessageFindSaveErrorMessage": "查找特定的存档时出错: {0}", "DialogMessageFindSaveErrorMessage": "查找特定的存档时出错{0}",
"FolderDialogExtractTitle": "选择要解压到的文件夹", "FolderDialogExtractTitle": "选择要解压到的文件夹",
"DialogNcaExtractionMessage": "提取 {1} 的 {0} 分区...", "DialogNcaExtractionMessage": "提取 {1} 的 {0} 分区...",
"DialogNcaExtractionTitle": "Ryujinx - NCA分区提取", "DialogNcaExtractionTitle": "Ryujinx - NCA分区提取",
@ -316,13 +324,13 @@
"DialogUpdaterConvertFailedMessage": "无法转换当前 Ryujinx 版本。", "DialogUpdaterConvertFailedMessage": "无法转换当前 Ryujinx 版本。",
"DialogUpdaterCancelUpdateMessage": "更新取消!", "DialogUpdaterCancelUpdateMessage": "更新取消!",
"DialogUpdaterAlreadyOnLatestVersionMessage": "您使用的 Ryujinx 是最新版本。", "DialogUpdaterAlreadyOnLatestVersionMessage": "您使用的 Ryujinx 是最新版本。",
"DialogUpdaterFailedToGetVersionMessage": "尝试从 Github 获取版本信息时无效。\n可能由于 GitHub Actions 正在编译新版本。请过几分钟重试。", "DialogUpdaterFailedToGetVersionMessage": "尝试从 Github 获取版本信息时无效。\n可能由于 GitHub Actions 正在编译新版本。请过一会再试。",
"DialogUpdaterConvertFailedGithubMessage": "无法转换从 Github 接收到的 Ryujinx 版本。", "DialogUpdaterConvertFailedGithubMessage": "无法转换从 Github 接收到的 Ryujinx 版本。",
"DialogUpdaterDownloadingMessage": "下载新版本中...", "DialogUpdaterDownloadingMessage": "下载新版本中...",
"DialogUpdaterExtractionMessage": "正在提取更新...", "DialogUpdaterExtractionMessage": "正在提取更新...",
"DialogUpdaterRenamingMessage": "正在删除旧文件...", "DialogUpdaterRenamingMessage": "正在删除旧文件...",
"DialogUpdaterAddingFilesMessage": "安装更新中...", "DialogUpdaterAddingFilesMessage": "安装更新中...",
"DialogUpdaterCompleteMessage": "更新成功!", "DialogUpdaterCompleteMessage": "更新成功",
"DialogUpdaterRestartMessage": "立即重启 Ryujinx 完成更新?", "DialogUpdaterRestartMessage": "立即重启 Ryujinx 完成更新?",
"DialogUpdaterArchNotSupportedMessage": "您运行的系统架构不受支持!", "DialogUpdaterArchNotSupportedMessage": "您运行的系统架构不受支持!",
"DialogUpdaterArchNotSupportedSubMessage": "(仅支持 x64 系统)", "DialogUpdaterArchNotSupportedSubMessage": "(仅支持 x64 系统)",
@ -336,41 +344,48 @@
"DialogFirmwareInstallEmbeddedMessage": "要安装游戏内置的固件吗?(固件 {0})", "DialogFirmwareInstallEmbeddedMessage": "要安装游戏内置的固件吗?(固件 {0})",
"DialogFirmwareInstallEmbeddedSuccessMessage": "未找到已安装的固件,但 Ryujinx 可以从现有的游戏安装固件{0}.\n模拟器现在可以运行。", "DialogFirmwareInstallEmbeddedSuccessMessage": "未找到已安装的固件,但 Ryujinx 可以从现有的游戏安装固件{0}.\n模拟器现在可以运行。",
"DialogFirmwareNoFirmwareInstalledMessage": "未安装固件", "DialogFirmwareNoFirmwareInstalledMessage": "未安装固件",
"DialogFirmwareInstalledMessage": "已安装固件{0}", "DialogFirmwareInstalledMessage": "已安装固件 {0}",
"DialogInstallFileTypesSuccessMessage": "关联文件类型成功!",
"DialogInstallFileTypesErrorMessage": "关联文件类型失败。",
"DialogUninstallFileTypesSuccessMessage": "成功解除文件类型关联!",
"DialogUninstallFileTypesErrorMessage": "解除文件类型关联失败。",
"DialogOpenSettingsWindowLabel": "打开设置窗口", "DialogOpenSettingsWindowLabel": "打开设置窗口",
"DialogControllerAppletTitle": "控制器小窗口", "DialogControllerAppletTitle": "控制器小窗口",
"DialogMessageDialogErrorExceptionMessage": "显示消息对话框时出错: {0}", "DialogMessageDialogErrorExceptionMessage": "显示消息对话框时出错{0}",
"DialogSoftwareKeyboardErrorExceptionMessage": "显示软件键盘时出错: {0}", "DialogSoftwareKeyboardErrorExceptionMessage": "显示软件键盘时出错{0}",
"DialogErrorAppletErrorExceptionMessage": "显示错误对话框时出错: {0}", "DialogErrorAppletErrorExceptionMessage": "显示错误对话框时出错{0}",
"DialogUserErrorDialogMessage": "{0}: {1}", "DialogUserErrorDialogMessage": "{0}: {1}",
"DialogUserErrorDialogInfoMessage": "\n有关修复此错误的更多信息可以遵循我们的设置指南。", "DialogUserErrorDialogInfoMessage": "\n有关修复此错误的更多信息可以遵循我们的设置指南。",
"DialogUserErrorDialogTitle": "Ryujinx 错误 ({0})", "DialogUserErrorDialogTitle": "Ryujinx 错误 ({0})",
"DialogAmiiboApiTitle": "Amiibo API", "DialogAmiiboApiTitle": "Amiibo API",
"DialogAmiiboApiFailFetchMessage": "从 API 获取信息时出错。", "DialogAmiiboApiFailFetchMessage": "从 API 获取信息时出错。",
"DialogAmiiboApiConnectErrorMessage": "无法连接到 Amiibo API 服务器。服务器可能已关闭,或者您没有连接网络。", "DialogAmiiboApiConnectErrorMessage": "无法连接到 Amiibo API 服务器。服务器可能已关闭,或者您没有连接网络。",
"DialogProfileInvalidProfileErrorMessage": "预设{0} 与当前输入配置系统不兼容。", "DialogProfileInvalidProfileErrorMessage": "预设 {0} 与当前输入配置系统不兼容。",
"DialogProfileDefaultProfileOverwriteErrorMessage": "默认预设不能被覆盖", "DialogProfileDefaultProfileOverwriteErrorMessage": "默认预设不能被覆盖",
"DialogProfileDeleteProfileTitle": "删除预设", "DialogProfileDeleteProfileTitle": "删除预设",
"DialogProfileDeleteProfileMessage": "删除后不可恢复,确认删除吗?", "DialogProfileDeleteProfileMessage": "删除后不可恢复,确认删除吗?",
"DialogWarning": "警告", "DialogWarning": "警告",
"DialogPPTCDeletionMessage": "您即将删除:\n\n{0}的 PPTC 缓存\n\n确定吗", "DialogPPTCDeletionMessage": "您即将删除\n\n{0} 的 PPTC 缓存\n\n确定吗",
"DialogPPTCDeletionErrorMessage": "清除位于{0}的 PPTC 缓存时出错: {1}", "DialogPPTCDeletionErrorMessage": "清除位于 {0} 的 PPTC 缓存时出错:{1}",
"DialogShaderDeletionMessage": "您即将删除:\n\n{0}的着色器缓存\n\n确定吗", "DialogShaderDeletionMessage": "您即将删除\n\n{0} 的着色器缓存\n\n确定吗",
"DialogShaderDeletionErrorMessage": "清除位于{0}的着色器缓存时出错: {1}", "DialogShaderDeletionErrorMessage": "清除位于 {0} 的着色器缓存时出错:{1}",
"DialogRyujinxErrorMessage": "Ryujinx 遇到错误", "DialogRyujinxErrorMessage": "Ryujinx 遇到错误",
"DialogInvalidTitleIdErrorMessage": "UI 错误:所选游戏没有有效的标题ID", "DialogInvalidTitleIdErrorMessage": "UI错误:所选游戏没有有效的标题ID",
"DialogFirmwareInstallerFirmwareNotFoundErrorMessage": "路径{0}找不到有效的系统固件。", "DialogFirmwareInstallerFirmwareNotFoundErrorMessage": "路径 {0} 找不到有效的系统固件。",
"DialogFirmwareInstallerFirmwareInstallTitle": "固件{0}", "DialogFirmwareInstallerFirmwareInstallTitle": "固件 {0}",
"DialogFirmwareInstallerFirmwareInstallMessage": "即将安装系统版本{0}。", "DialogFirmwareInstallerFirmwareInstallMessage": "即将安装系统版本 {0} 。",
"DialogFirmwareInstallerFirmwareInstallSubMessage": "\n\n会替换当前系统版本{0}。", "DialogFirmwareInstallerFirmwareInstallSubMessage": "\n\n会替换当前系统版本 {0} 。",
"DialogFirmwareInstallerFirmwareInstallConfirmMessage": "\n\n是否确认继续", "DialogFirmwareInstallerFirmwareInstallConfirmMessage": "\n\n是否确认继续",
"DialogFirmwareInstallerFirmwareInstallWaitMessage": "安装固件中...", "DialogFirmwareInstallerFirmwareInstallWaitMessage": "安装固件中...",
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "成功安装系统版本{0}。", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "成功安装系统版本 {0} 。",
"DialogUserProfileDeletionWarningMessage": "删除后将没有可选择的用户账户", "DialogUserProfileDeletionWarningMessage": "删除后将没有可选择的用户账户",
"DialogUserProfileDeletionConfirmMessage": "是否删除选择的账户", "DialogUserProfileDeletionConfirmMessage": "是否删除选择的账户",
"DialogUserProfileUnsavedChangesTitle": "警告 - 未保存的更改",
"DialogUserProfileUnsavedChangesMessage": "您为该用户做出的部分改动尚未保存。",
"DialogUserProfileUnsavedChangesSubMessage": "是否舍弃这些改动?",
"DialogControllerSettingsModifiedConfirmMessage": "目前的输入预设已更新", "DialogControllerSettingsModifiedConfirmMessage": "目前的输入预设已更新",
"DialogControllerSettingsModifiedConfirmSubMessage": "要保存吗?", "DialogControllerSettingsModifiedConfirmSubMessage": "要保存吗?",
"DialogLoadNcaErrorMessage": "{0}. 错误的文件: {1}", "DialogLoadNcaErrorMessage": "{0}. 错误的文件{1}",
"DialogDlcNoDlcErrorMessage": "选择的文件不包含所选游戏的 DLC", "DialogDlcNoDlcErrorMessage": "选择的文件不包含所选游戏的 DLC",
"DialogPerformanceCheckLoggingEnabledMessage": "您启用了跟踪日志,仅供开发人员使用。", "DialogPerformanceCheckLoggingEnabledMessage": "您启用了跟踪日志,仅供开发人员使用。",
"DialogPerformanceCheckLoggingEnabledConfirmMessage": "为了获得最佳性能,建议禁用跟踪日志记录。您是否要立即禁用?", "DialogPerformanceCheckLoggingEnabledConfirmMessage": "为了获得最佳性能,建议禁用跟踪日志记录。您是否要立即禁用?",
@ -382,7 +397,7 @@
"DialogSettingsBackendThreadingWarningTitle": "警告 - 后端多线程", "DialogSettingsBackendThreadingWarningTitle": "警告 - 后端多线程",
"DialogSettingsBackendThreadingWarningMessage": "改变此选项后必须重启 Ryujinx 才能生效。\n\n取决于您的硬件可能需要手动禁用驱动面板中的线程优化。", "DialogSettingsBackendThreadingWarningMessage": "改变此选项后必须重启 Ryujinx 才能生效。\n\n取决于您的硬件可能需要手动禁用驱动面板中的线程优化。",
"SettingsTabGraphicsFeaturesOptions": "功能", "SettingsTabGraphicsFeaturesOptions": "功能",
"SettingsTabGraphicsBackendMultithreading": "后端多线程:", "SettingsTabGraphicsBackendMultithreading": "多线程图形后端:",
"CommonAuto": "自动(推荐)", "CommonAuto": "自动(推荐)",
"CommonOff": "关闭", "CommonOff": "关闭",
"CommonOn": "打开", "CommonOn": "打开",
@ -391,18 +406,18 @@
"DialogProfileInvalidProfileNameErrorMessage": "文件名包含无效字符,请重试。", "DialogProfileInvalidProfileNameErrorMessage": "文件名包含无效字符,请重试。",
"MenuBarOptionsPauseEmulation": "暂停", "MenuBarOptionsPauseEmulation": "暂停",
"MenuBarOptionsResumeEmulation": "继续", "MenuBarOptionsResumeEmulation": "继续",
"AboutUrlTooltipMessage": "在浏览器中打开 Ryujinx 官网。", "AboutUrlTooltipMessage": "在浏览器中打开 Ryujinx 官网。",
"AboutDisclaimerMessage": "Ryujinx 以任何方式与Nintendo™及其任何商业伙伴都没有关联", "AboutDisclaimerMessage": "Ryujinx 以任何方式与 Nintendo™ 及其任何商业伙伴都没有关联",
"AboutAmiiboDisclaimerMessage": "我们的 Amiibo 模拟使用了\nAmiiboAPI (www.amiiboapi.com) ", "AboutAmiiboDisclaimerMessage": "我们的 Amiibo 模拟使用了\nAmiiboAPI (www.amiiboapi.com) ",
"AboutPatreonUrlTooltipMessage": "在浏览器中打开 Ryujinx 的 Patreon 赞助页。", "AboutPatreonUrlTooltipMessage": "在浏览器中打开 Ryujinx 的 Patreon 赞助页。",
"AboutGithubUrlTooltipMessage": "在浏览器中打开 Ryujinx 的 GitHub 代码库。", "AboutGithubUrlTooltipMessage": "在浏览器中打开 Ryujinx 的 GitHub 代码库。",
"AboutDiscordUrlTooltipMessage": "在浏览器中打开 Ryujinx 的 Discord 邀请链接。", "AboutDiscordUrlTooltipMessage": "在浏览器中打开 Ryujinx 的 Discord 邀请链接。",
"AboutTwitterUrlTooltipMessage": "在浏览器中打开 Ryujinx 的 Twitter 主页。", "AboutTwitterUrlTooltipMessage": "在浏览器中打开 Ryujinx 的 Twitter 主页。",
"AboutRyujinxAboutTitle": "关于:", "AboutRyujinxAboutTitle": "关于",
"AboutRyujinxAboutContent": "Ryujinx是一款Nintendo Switch™模拟器。\n您可以在 Patreon 上赞助 Ryujinx。\n关注 Twitter 或 Discord 可以获取模拟器最新动态。\n如果您对开发感兴趣欢迎来 GitHub Discord 加入我们!", "AboutRyujinxAboutContent": "Ryujinx 是一款 Nintendo Switch™ 模拟器。\n您可以在 Patreon 上赞助 Ryujinx。\n关注 Twitter 或 Discord 可以获取模拟器最新动态。\n如果您对开发感兴趣欢迎来 GitHub Discord 加入我们!",
"AboutRyujinxMaintainersTitle": "由以下作者维护:", "AboutRyujinxMaintainersTitle": "由以下作者维护",
"AboutRyujinxMaintainersContentTooltipMessage": "在浏览器中打开贡献者的网页", "AboutRyujinxMaintainersContentTooltipMessage": "在浏览器中打开贡献者",
"AboutRyujinxSupprtersTitle": "感谢 Patreon 的赞助者:", "AboutRyujinxSupprtersTitle": "感谢 Patreon 的赞助者",
"AmiiboSeriesLabel": "Amiibo 系列", "AmiiboSeriesLabel": "Amiibo 系列",
"AmiiboCharacterLabel": "角色", "AmiiboCharacterLabel": "角色",
"AmiiboScanButtonLabel": "扫描", "AmiiboScanButtonLabel": "扫描",
@ -413,9 +428,10 @@
"DlcManagerTableHeadingContainerPathLabel": "文件夹路径", "DlcManagerTableHeadingContainerPathLabel": "文件夹路径",
"DlcManagerTableHeadingFullPathLabel": "完整路径", "DlcManagerTableHeadingFullPathLabel": "完整路径",
"DlcManagerRemoveAllButton": "全部删除", "DlcManagerRemoveAllButton": "全部删除",
"DlcManagerEnableAllButton": "全部选择", "DlcManagerEnableAllButton": "全部启用",
"DlcManagerDisableAllButton": "全部禁用", "DlcManagerDisableAllButton": "全部禁用",
"MenuBarOptionsChangeLanguage": "更改语言", "MenuBarOptionsChangeLanguage": "更改语言",
"MenuBarShowFileTypes": "主页显示的文件类型",
"CommonSort": "排序", "CommonSort": "排序",
"CommonShowNames": "显示名称", "CommonShowNames": "显示名称",
"CommonFavorite": "收藏", "CommonFavorite": "收藏",
@ -430,41 +446,42 @@
"CustomThemeCheckTooltip": "使用自定义UI主题来更改模拟器的外观样式", "CustomThemeCheckTooltip": "使用自定义UI主题来更改模拟器的外观样式",
"CustomThemePathTooltip": "自定义主题的目录", "CustomThemePathTooltip": "自定义主题的目录",
"CustomThemeBrowseTooltip": "查找自定义主题", "CustomThemeBrowseTooltip": "查找自定义主题",
"DockModeToggleTooltip": "启用 Switch 的主机模式。\n绝大多数游戏画质会提高略微增加性能消耗。\n在掌机和主机模式切换的过程中您可能需要重新设置手柄类型", "DockModeToggleTooltip": "启用 Switch 的主机模式。\n绝大多数游戏画质会提高略微增加性能消耗。\n在掌机和主机模式切换的过程中您可能需要重新设置手柄类型",
"DirectKeyboardTooltip": "开启 \"直连键盘访问(HID)支持\"\n部分游戏可以使用您的键盘输入文字", "DirectKeyboardTooltip": "开启 \"直连键盘访问(HID)支持\"\n部分游戏可以使用您的键盘输入文字",
"DirectMouseTooltip": "开启 \"直连鼠标访问(HID)支持\"\n部分游戏可以使用您的鼠标导航", "DirectMouseTooltip": "开启 \"直连鼠标访问(HID)支持\"\n部分游戏可以使用您的鼠标导航",
"RegionTooltip": "更改系统区域", "RegionTooltip": "更改系统区域",
"LanguageTooltip": "更改系统语言", "LanguageTooltip": "更改系统语言",
"TimezoneTooltip": "更改系统时区", "TimezoneTooltip": "更改系统时区",
"TimeTooltip": "更改系统时钟", "TimeTooltip": "更改系统时钟",
"VSyncToggleTooltip": "关闭后小部分游戏可以超过60FPS帧率以获得高帧率体验。\n但是可能出现软锁或读盘时间增加。\n如不确定或没有需求请保持选项开启", "VSyncToggleTooltip": "关闭后小部分游戏可以超过60FPS帧率以获得高帧率体验。\n但是可能出现软锁或读盘时间增加。\n如不确定就请保持开启状态。",
"PptcToggleTooltip": "缓存编译完成的游戏CPU指令。减少启动时间和卡顿提高游戏响应速度", "PptcToggleTooltip": "缓存编译完成的游戏CPU指令。减少启动时间和卡顿提高游戏响应速度。\n如不确定就请保持开启状态。",
"FsIntegrityToggleTooltip": "检查游戏文件内容的完整性。\n遇到损坏的文件则记录到日志文件有助于排查错误。\n对性能没有影响。", "FsIntegrityToggleTooltip": "检查游戏文件内容的完整性。\n遇到损坏的文件则记录到日志文件有助于排查错误。\n对性能没有影响。\n如不确定就请保持开启状态。",
"AudioBackendTooltip": "默认推荐SDL但每种音频后端对各类游戏兼容性不同遇到音频问题可以尝试切换后端", "AudioBackendTooltip": "默认推荐SDL2但每种音频后端对各类游戏兼容性不同遇到音频问题可以尝试切换后端。",
"MemoryManagerTooltip": "改变 Switch 内存映射到电脑内存的方式会影响CPU性能消耗", "MemoryManagerTooltip": "改变 Switch 内存映射到电脑内存的方式会影响CPU性能消耗。",
"MemoryManagerSoftwareTooltip": "使用软件内存页管理,最精确但是速度最慢", "MemoryManagerSoftwareTooltip": "使用软件内存页管理,最精确但是速度最慢。",
"MemoryManagerHostTooltip": "直接映射内存页到电脑内存JIT效率高", "MemoryManagerHostTooltip": "直接映射内存页到电脑内存,使得即时编译效率更高。",
"MemoryManagerUnsafeTooltip": "直接映射内存页但不检查内存溢出JIT效率最高。\nRyujinx可以访问任何位置的内存因而相对不安全。\n此模式下只应运行您信任的游戏或软件(即官方游戏)", "MemoryManagerUnsafeTooltip": "直接映射内存页,但不检查内存溢出,使得即时编译效率更高。\nRyujinx 可以访问任何位置的内存,因而相对不安全。\n此模式下只应运行您信任的游戏或软件(即官方游戏)。",
"UseHypervisorTooltip": "使用 Hypervisor 虚拟机代替即时编译。在可用的情况下能大幅提高性能。但目前可能不稳定。",
"DRamTooltip": "使用Switch开发机的内存布局。\n不会提高任何性能某些高清纹理包或 4k 分辨率 MOD 可能需要此选项。\n如果不确定请始终关闭该选项。", "DRamTooltip": "使用Switch开发机的内存布局。\n不会提高任何性能某些高清纹理包或 4k 分辨率 MOD 可能需要此选项。\n如果不确定请始终关闭该选项。",
"IgnoreMissingServicesTooltip": "开启后,游戏会忽略未实现的系统服务,从而继续运行。\n少部分新发布的游戏由于使用新的未知系统服务可能需要此选项来避免闪退。\n模拟器更新完善系统服务之后则无需开启选项。\n如您的游戏已经正常运行请保持此选项关闭", "IgnoreMissingServicesTooltip": "开启后,游戏会忽略未实现的系统服务,从而继续运行。\n少部分新发布的游戏由于使用新的未知系统服务可能需要此选项来避免闪退。\n模拟器更新完善系统服务之后则无需开启选项。\n如您的游戏已经正常运行请保持此选项关闭",
"GraphicsBackendThreadingTooltip": "启用后端多线程", "GraphicsBackendThreadingTooltip": "在第二个线程上执行图形后端命令。\n\n加速着色器编译减少卡顿提高 GPU 的性能。\n\n如果不确定请设置为自动。",
"GalThreadingTooltip": "使用模拟器内置的多线程优化,减少着色器编译的卡顿,并提高驱动程序的性能(尤其是缺失多线程的AMD)。\nNVIDIA显卡需要重启模拟器才能禁用驱动本身的线程优化您也可以手动在控制面板将其禁用", "GalThreadingTooltip": "在第二个线程上执行图形后端命令。\n\n加速着色器编译减少卡顿提高 GPU 的性能。\n\n如果不确定请设置为自动。",
"ShaderCacheToggleTooltip": "开启后,模拟器会保存编译完成的着色器到磁盘,减少游戏渲染新特效和场景时的卡顿", "ShaderCacheToggleTooltip": "开启后,模拟器会保存编译完成的着色器到磁盘,减少游戏渲染新特效和场景时的卡顿",
"ResolutionScaleTooltip": "缩放渲染的分辨率", "ResolutionScaleTooltip": "缩放渲染的分辨率",
"ResolutionScaleEntryTooltip": "尽可能使用例如1.5的浮点倍数。非整数的倍率易引起 BUG", "ResolutionScaleEntryTooltip": "尽可能使用例如1.5的浮点倍数。非整数的倍率易引起 BUG",
"AnisotropyTooltip": "各向异性过滤等级。提高倾斜视角纹理的清晰度\n('自动'使用游戏默认的等级)", "AnisotropyTooltip": "各向异性过滤等级。提高倾斜视角纹理的清晰度\n('自动'使用游戏默认的等级)",
"AspectRatioTooltip": "渲染窗口的宽高比", "AspectRatioTooltip": "渲染窗口的宽高比",
"ShaderDumpPathTooltip": "转储图形着色器的路径", "ShaderDumpPathTooltip": "转储图形着色器的路径",
"FileLogTooltip": "是否保存日志文件到硬盘", "FileLogTooltip": "保存日志文件到硬盘。不会影响性能。",
"StubLogTooltip": "记录Stub消息", "StubLogTooltip": "在控制台中打印 stub 日志消息。不影响性能。",
"InfoLogTooltip": "记录Info消息", "InfoLogTooltip": "在控制台中打印信息日志消息。不影响性能。",
"WarnLogTooltip": "记录Warning消息", "WarnLogTooltip": "在控制台中打印警告日志消息。不影响性能。",
"ErrorLogTooltip": "记录Error消息", "ErrorLogTooltip": "打印控制台中的错误日志消息。不影响性能。",
"TraceLogTooltip": "记录Trace消息", "TraceLogTooltip": "在控制台中打印跟踪日志消息。不影响性能。",
"GuestLogTooltip": "记录Guest消息", "GuestLogTooltip": "在控制台中打印访客日志消息。不影响性能。",
"FileAccessLogTooltip": "记录文件访问消息", "FileAccessLogTooltip": "在控制台中打印文件访问日志信息。",
"FSAccessLogModeTooltip": "记录FS访问消息输出到控制台。可选的模式是0-3", "FSAccessLogModeTooltip": "启用访问日志输出到控制台。可能的模式为 0-3",
"DeveloperOptionTooltip": "使用请谨慎", "DeveloperOptionTooltip": "谨慎使用",
"OpenGlLogLevel": "需要打开适当的日志等级", "OpenGlLogLevel": "需要打开适当的日志等级",
"DebugLogTooltip": "记录Debug消息", "DebugLogTooltip": "记录Debug消息",
"LoadApplicationFileTooltip": "选择 Switch 支持的游戏格式并加载", "LoadApplicationFileTooltip": "选择 Switch 支持的游戏格式并加载",
@ -476,18 +493,18 @@
"OpenProfileManagerTooltip": "打开用户账户管理界面", "OpenProfileManagerTooltip": "打开用户账户管理界面",
"StopEmulationTooltip": "停止运行当前游戏并回到主界面", "StopEmulationTooltip": "停止运行当前游戏并回到主界面",
"CheckUpdatesTooltip": "检查 Ryujinx 新版本", "CheckUpdatesTooltip": "检查 Ryujinx 新版本",
"OpenAboutTooltip": "打开'关于'窗口", "OpenAboutTooltip": "打开“关于”窗口",
"GridSize": "网格尺寸", "GridSize": "网格尺寸",
"GridSizeTooltip": "调整网格模式的大小", "GridSizeTooltip": "调整网格模式的大小",
"SettingsTabSystemSystemLanguageBrazilianPortuguese": "巴西葡萄牙语", "SettingsTabSystemSystemLanguageBrazilianPortuguese": "巴西葡萄牙语",
"AboutRyujinxContributorsButtonHeader": "查看所有参与者", "AboutRyujinxContributorsButtonHeader": "查看所有参与者",
"SettingsTabSystemAudioVolume": "音量: ", "SettingsTabSystemAudioVolume": "音量",
"AudioVolumeTooltip": "调节音量", "AudioVolumeTooltip": "调节音量",
"SettingsTabSystemEnableInternetAccess": "允许网络访问/局域网模式", "SettingsTabSystemEnableInternetAccess": "允许网络访问/局域网模式",
"EnableInternetAccessTooltip": "允许模拟的游戏进程访问互联网。\n当多个模拟器/真实Switch连接到同一个局域网时带有 LAN 模式的游戏可以相互通信。\n即使开启选项也无法访问 Nintendo 服务器。此外可能导致某些尝试联网的游戏崩溃。\n如果您不确定请关闭该选项。", "EnableInternetAccessTooltip": "允许模拟的游戏进程访问互联网。\n当多个模拟器/真实Switch 连接到同一个局域网时,带有 LAN 模式的游戏可以相互通信。\n即使开启选项也无法访问 Nintendo 服务器。此外可能导致某些尝试联网的游戏崩溃。\n如果您不确定请关闭该选项。",
"GameListContextMenuManageCheatToolTip": "管理金手指", "GameListContextMenuManageCheatToolTip": "管理金手指",
"GameListContextMenuManageCheat": "管理金手指", "GameListContextMenuManageCheat": "管理金手指",
"ControllerSettingsStickRange": "范围", "ControllerSettingsStickRange": "范围",
"DialogStopEmulationTitle": "Ryujinx - 停止模拟", "DialogStopEmulationTitle": "Ryujinx - 停止模拟",
"DialogStopEmulationMessage": "是否确定停止模拟?", "DialogStopEmulationMessage": "是否确定停止模拟?",
"SettingsTabCpu": "CPU", "SettingsTabCpu": "CPU",
@ -497,14 +514,14 @@
"SettingsTabCpuCache": "CPU 缓存", "SettingsTabCpuCache": "CPU 缓存",
"SettingsTabCpuMemory": "CPU 内存", "SettingsTabCpuMemory": "CPU 内存",
"DialogUpdaterFlatpakNotSupportedMessage": "请通过 FlatHub 更新 Ryujinx。", "DialogUpdaterFlatpakNotSupportedMessage": "请通过 FlatHub 更新 Ryujinx。",
"UpdaterDisabledWarningTitle": "更新已禁用!", "UpdaterDisabledWarningTitle": "更新已禁用",
"GameListContextMenuOpenSdModsDirectory": "打开 Atmosphere MOD 目录", "GameListContextMenuOpenSdModsDirectory": "打开 Atmosphere MOD 目录",
"GameListContextMenuOpenSdModsDirectoryToolTip": "打开适用于 Atmosphere 自制系统的 MOD 目录", "GameListContextMenuOpenSdModsDirectoryToolTip": "打开适用于 Atmosphere 自制系统的 MOD 目录",
"ControllerSettingsRotate90": "顺时针旋转 90°", "ControllerSettingsRotate90": "顺时针旋转 90°",
"IconSize": "图标尺寸", "IconSize": "图标尺寸",
"IconSizeTooltip": "更改游戏图标大小", "IconSizeTooltip": "更改游戏图标大小",
"MenuBarOptionsShowConsole": "显示控制台", "MenuBarOptionsShowConsole": "显示控制台",
"ShaderCachePurgeError": "清除着色器缓存时出错: {0}: {1}", "ShaderCachePurgeError": "清除着色器缓存时出错{0}: {1}",
"UserErrorNoKeys": "找不到密钥", "UserErrorNoKeys": "找不到密钥",
"UserErrorNoFirmware": "找不到固件", "UserErrorNoFirmware": "找不到固件",
"UserErrorFirmwareParsingFailed": "固件解析错误", "UserErrorFirmwareParsingFailed": "固件解析错误",
@ -513,28 +530,28 @@
"UserErrorUndefined": "未定义错误", "UserErrorUndefined": "未定义错误",
"UserErrorNoKeysDescription": "Ryujinx 找不到 'prod.keys' 文件", "UserErrorNoKeysDescription": "Ryujinx 找不到 'prod.keys' 文件",
"UserErrorNoFirmwareDescription": "Ryujinx 找不到任何已安装的固件", "UserErrorNoFirmwareDescription": "Ryujinx 找不到任何已安装的固件",
"UserErrorFirmwareParsingFailedDescription": "Ryujinx 无法解密选择的固件。这通常是由于过旧的密钥。", "UserErrorFirmwareParsingFailedDescription": "Ryujinx 无法解密选择的固件。这通常是由于使用了过旧的密钥。",
"UserErrorApplicationNotFoundDescription": "Ryujinx 在选中路径找不到有效的应用程序。", "UserErrorApplicationNotFoundDescription": "Ryujinx 在选中路径找不到有效的应用程序。",
"UserErrorUnknownDescription": "发生未知错误!", "UserErrorUnknownDescription": "发生未知错误!",
"UserErrorUndefinedDescription": "发生了未定义错误!此类错误不应出现,请联系开发人员!", "UserErrorUndefinedDescription": "发生了未定义错误!此类错误不应出现,请联系开发人员!",
"OpenSetupGuideMessage": "打开设置教程", "OpenSetupGuideMessage": "打开设置教程",
"NoUpdate": "无更新", "NoUpdate": "无更新",
"TitleUpdateVersionLabel": "版本 {0} - {1}", "TitleUpdateVersionLabel": "版本 {0}",
"RyujinxInfo": "Ryujinx - 信息", "RyujinxInfo": "Ryujinx - 信息",
"RyujinxConfirm": "Ryujinx - 确认", "RyujinxConfirm": "Ryujinx - 确认",
"FileDialogAllTypes": "全部类型", "FileDialogAllTypes": "全部类型",
"Never": "从", "Never": "从",
"SwkbdMinCharacters": "至少应为 {0} 个字长", "SwkbdMinCharacters": "至少应为 {0} 个字长",
"SwkbdMinRangeCharacters": "必须为 {0}-{1} 个字长", "SwkbdMinRangeCharacters": "必须为 {0}-{1} 个字长",
"SoftwareKeyboard": "软件键盘", "SoftwareKeyboard": "软件键盘",
"SoftwareKeyboardModeNumbersOnly": "只接受数字", "SoftwareKeyboardModeNumbersOnly": "只接受数字",
"SoftwareKeyboardModeAlphabet": "只接受英文字母", "SoftwareKeyboardModeAlphabet": "只接受非中日韩文字",
"SoftwareKeyboardModeASCII": "只接受 ASCII 符号", "SoftwareKeyboardModeASCII": "只接受 ASCII 符号",
"DialogControllerAppletMessagePlayerRange": "游戏需要 {0} 个玩家并满足以下要求:\n\n手柄类型{1}\n\n玩家类型{2}\n\n{3}请打开设置窗口,重新配置手柄输入;或者关闭返回。", "DialogControllerAppletMessagePlayerRange": "游戏需要 {0} 个玩家并满足以下要求:\n\n手柄类型{1}\n\n玩家类型{2}\n\n{3} 请打开设置窗口,重新配置手柄输入;或者关闭返回。",
"DialogControllerAppletMessage": "游戏需要刚好 {0} 个玩家并满足以下要求:\n\n手柄类型{1}\n\n玩家类型{2}\n\n{3}请打开设置窗口,重新配置手柄输入;或者关闭返回。", "DialogControllerAppletMessage": "游戏需要刚好 {0} 个玩家并满足以下要求:\n\n手柄类型{1}\n\n玩家类型{2}\n\n{3} 请打开设置窗口,重新配置手柄输入;或者关闭返回。",
"DialogControllerAppletDockModeSet": "目前处于主机模式,无法使用掌机操作方式", "DialogControllerAppletDockModeSet": "目前处于主机模式,无法使用掌机操作方式",
"UpdaterRenaming": "正在删除旧文件...", "UpdaterRenaming": "正在删除旧文件...",
"UpdaterRenameFailed": "更新过程中无法重命名文件: {0}", "UpdaterRenameFailed": "更新过程中无法重命名文件{0}",
"UpdaterAddingFiles": "安装更新中...", "UpdaterAddingFiles": "安装更新中...",
"UpdaterExtracting": "正在提取更新...", "UpdaterExtracting": "正在提取更新...",
"UpdaterDownloading": "下载新版本中...", "UpdaterDownloading": "下载新版本中...",
@ -548,17 +565,17 @@
"CompilingPPTC": "编译PPTC缓存中", "CompilingPPTC": "编译PPTC缓存中",
"CompilingShaders": "编译着色器中", "CompilingShaders": "编译着色器中",
"AllKeyboards": "所有键盘", "AllKeyboards": "所有键盘",
"OpenFileDialogTitle": "选择支持的文件格式", "OpenFileDialogTitle": "选择一个支持的文件以打开",
"OpenFolderDialogTitle": "选择一个包含解包游戏的文件夹", "OpenFolderDialogTitle": "选择一个包含解包游戏的文件夹",
"AllSupportedFormats": "所有支持的格式", "AllSupportedFormats": "所有支持的格式",
"RyujinxUpdater": "Ryujinx 更新程序", "RyujinxUpdater": "Ryujinx 更新程序",
"SettingsTabHotkeys": "快捷键", "SettingsTabHotkeys": "快捷键",
"SettingsTabHotkeysHotkeys": "键盘快捷键", "SettingsTabHotkeysHotkeys": "键盘快捷键",
"SettingsTabHotkeysToggleVsyncHotkey": "切换垂直同步", "SettingsTabHotkeysToggleVsyncHotkey": "切换垂直同步",
"SettingsTabHotkeysScreenshotHotkey": "截屏", "SettingsTabHotkeysScreenshotHotkey": "截屏",
"SettingsTabHotkeysShowUiHotkey": "隐藏UI", "SettingsTabHotkeysShowUiHotkey": "隐藏 界面:",
"SettingsTabHotkeysPauseHotkey": "暂停", "SettingsTabHotkeysPauseHotkey": "暂停",
"SettingsTabHotkeysToggleMuteHotkey": "静音", "SettingsTabHotkeysToggleMuteHotkey": "静音",
"ControllerMotionTitle": "体感操作设置", "ControllerMotionTitle": "体感操作设置",
"ControllerRumbleTitle": "震动设置", "ControllerRumbleTitle": "震动设置",
"SettingsSelectThemeFileDialogTitle": "选择主题文件", "SettingsSelectThemeFileDialogTitle": "选择主题文件",
@ -572,9 +589,10 @@
"SelectUpdateDialogTitle": "选择更新文件", "SelectUpdateDialogTitle": "选择更新文件",
"UserProfileWindowTitle": "管理用户账户", "UserProfileWindowTitle": "管理用户账户",
"CheatWindowTitle": "金手指管理器", "CheatWindowTitle": "金手指管理器",
"DlcWindowTitle": "管理游戏 DLC", "DlcWindowTitle": "管理 {0} ({1}) 的 DLC",
"UpdateWindowTitle": "游戏更新管理器", "UpdateWindowTitle": "游戏更新管理器",
"CheatWindowHeading": "适用于 {0} [{1}] 的金手指", "CheatWindowHeading": "适用于 {0} [{1}] 的金手指",
"BuildId": "游戏版本ID:",
"DlcWindowHeading": "{0} 个适用于 {1} ({2}) 的 DLC", "DlcWindowHeading": "{0} 个适用于 {1} ({2}) 的 DLC",
"UserProfilesEditProfile": "编辑选中账户", "UserProfilesEditProfile": "编辑选中账户",
"Cancel": "取消", "Cancel": "取消",
@ -583,35 +601,56 @@
"UserProfilesSetProfileImage": "选择头像", "UserProfilesSetProfileImage": "选择头像",
"UserProfileEmptyNameError": "必须输入名称", "UserProfileEmptyNameError": "必须输入名称",
"UserProfileNoImageError": "请选择您的头像", "UserProfileNoImageError": "请选择您的头像",
"GameUpdateWindowHeading": "{0} 个适用于 {1} ({2}) 的更新", "GameUpdateWindowHeading": "管理 {0} ({1}) 的更新",
"SettingsTabHotkeysResScaleUpHotkey": "提高分辨率:", "SettingsTabHotkeysResScaleUpHotkey": "提高分辨率",
"SettingsTabHotkeysResScaleDownHotkey": "降低分辨率:", "SettingsTabHotkeysResScaleDownHotkey": "降低分辨率",
"UserProfilesName": "名称:", "UserProfilesName": "名称",
"UserProfilesUserId": "用户 ID:", "UserProfilesUserId": "用户ID",
"SettingsTabGraphicsBackend": "图形后端", "SettingsTabGraphicsBackend": "图形后端",
"SettingsTabGraphicsBackendTooltip": "显卡使用的图形后端", "SettingsTabGraphicsBackendTooltip": "显卡使用的图形后端",
"SettingsEnableTextureRecompression": "启用纹理重压缩", "SettingsEnableTextureRecompression": "启用纹理重压缩",
"SettingsEnableTextureRecompressionTooltip": "压缩某些纹理以减少显存的使用。\n适合显存小于 4GiB 的 GPU开启。\n如果您不确定请保持此项关闭。", "SettingsEnableTextureRecompressionTooltip": "压缩某些纹理以减少显存的使用。\n适合显存小于 4GiB 的 GPU 开启。\n如果您不确定请保持此项关闭。",
"SettingsTabGraphicsPreferredGpu": "首选 GPU", "SettingsTabGraphicsPreferredGpu": "首选 GPU",
"SettingsTabGraphicsPreferredGpuTooltip": "选择Vulkan API使用的显卡。\n此选项不会影响OpenGL API。\n如果您不确定建议选择\"dGPU(独立显卡)\"。如果没有独立显卡,则无需改动此选项", "SettingsTabGraphicsPreferredGpuTooltip": "选择 Vulkan API 使用的显卡。\n此选项不会影响 OpenGL API。\n如果您不确定建议选择\"dGPU(独立显卡)\"。如果没有独立显卡,则无需改动此选项",
"SettingsAppRequiredRestartMessage": "Ryujinx 需要重启", "SettingsAppRequiredRestartMessage": "Ryujinx 需要重启",
"SettingsGpuBackendRestartMessage": "您修改了图形 API 或显卡设置。需要重新启动才能生效", "SettingsGpuBackendRestartMessage": "您修改了图形 API 或显卡设置。需要重新启动才能生效",
"SettingsGpuBackendRestartSubMessage": "是否重启模拟器?", "SettingsGpuBackendRestartSubMessage": "是否重启模拟器?",
"RyujinxUpdaterMessage": "是否更新 Ryujinx 到最新的版本?", "RyujinxUpdaterMessage": "是否更新 Ryujinx 到最新的版本?",
"SettingsTabHotkeysVolumeUpHotkey": "音量加", "SettingsTabHotkeysVolumeUpHotkey": "音量加",
"SettingsTabHotkeysVolumeDownHotkey": "音量减", "SettingsTabHotkeysVolumeDownHotkey": "音量减",
"SettingsEnableMacroHLE": "启用 HLE 宏", "SettingsEnableMacroHLE": "启用 HLE 宏",
"SettingsEnableMacroHLETooltip": "GPU 宏代码的高级模拟。\n提高性能表现但可能在某些游戏中引起图形错误。\n如果您不确定请保持此项为开启。", "SettingsEnableMacroHLETooltip": "GPU 宏代码的高级模拟。\n提高性能表现但可能在某些游戏中引起图形错误。\n如果您不确定请保持此项开启。",
"SettingsEnableColorSpacePassthrough": "颜色空间穿透",
"SettingsEnableColorSpacePassthroughTooltip": "指示 Vulkan 后端在不指定颜色空间的情况下传递颜色信息。对于具有宽色域显示器的用户来说,这可能会以颜色正确性为代价,产生更鲜艳的颜色。",
"VolumeShort": "音量", "VolumeShort": "音量",
"UserProfilesManageSaves": "管理存档", "UserProfilesManageSaves": "管理存档",
"DeleteUserSave": "确定删除这个游戏的存档吗?", "DeleteUserSave": "确定删除这个游戏的存档吗?",
"IrreversibleActionNote": "删除后不可恢复。", "IrreversibleActionNote": "删除后不可恢复。",
"SaveManagerHeading": "管理 {0} 的存档", "SaveManagerHeading": "管理 {0} ({1}) 的存档",
"SaveManagerTitle": "存档管理器", "SaveManagerTitle": "存档管理器",
"Name": "名称", "Name": "名称",
"Size": "大小", "Size": "大小",
"Search": "搜索", "Search": "搜索",
"UserProfilesRecoverLostAccounts": "恢复丢失的账户", "UserProfilesRecoverLostAccounts": "恢复丢失的账户",
"Recover": "恢复", "Recover": "恢复",
"UserProfilesRecoverHeading": "找到了这些用户的存档数据" "UserProfilesRecoverHeading": "找到了这些用户的存档数据",
"UserProfilesRecoverEmptyList": "没有可以恢复的配置文件",
"GraphicsAATooltip": "将抗锯齿使用到游戏渲染中",
"GraphicsAALabel": "抗锯齿:",
"GraphicsScalingFilterLabel": "缩放过滤:",
"GraphicsScalingFilterTooltip": "对帧缓冲区进行缩放",
"GraphicsScalingFilterLevelLabel": "等级",
"GraphicsScalingFilterLevelTooltip": "设置缩放过滤级别",
"SmaaLow": "SMAA 低质量",
"SmaaMedium": "SMAA 中质量",
"SmaaHigh": "SMAA 高质量",
"SmaaUltra": "SMAA 极致质量",
"UserEditorTitle": "编辑用户",
"UserEditorTitleCreate": "创建用户",
"SettingsTabNetworkInterface": "网络接口:",
"NetworkInterfaceTooltip": "用于局域网功能的网络接口",
"NetworkInterfaceDefault": "默认",
"PackagingShaders": "整合着色器中",
"AboutChangelogButton": "在Github上查看更新日志",
"AboutChangelogButtonTooltipMessage": "点击这里在您的默认浏览器中打开此版本的更新日志。"
} }

View file

@ -1,15 +1,16 @@
{ {
"Language": "繁體中文", "Language": "英文 (美國)",
"MenuBarFileOpenApplet": "打開小程式", "MenuBarFileOpenApplet": "開啟 Applet 應用程序",
"MenuBarFileOpenAppletOpenMiiAppletToolTip": "打開獨立的 Mii 小程式", "MenuBarFileOpenAppletOpenMiiAppletToolTip": "開啟獨立的Mii修改器應用程序",
"SettingsTabInputDirectMouseAccess": "直通滑鼠操作", "SettingsTabInputDirectMouseAccess": "滑鼠直接操作",
"SettingsTabSystemMemoryManagerMode": "記憶體管理模式:", "SettingsTabSystemMemoryManagerMode": "記憶體管理模式",
"SettingsTabSystemMemoryManagerModeSoftware": "軟體", "SettingsTabSystemMemoryManagerModeSoftware": "軟體",
"SettingsTabSystemMemoryManagerModeHost": "Host (快速)", "SettingsTabSystemMemoryManagerModeHost": "主機模式 (快速)",
"SettingsTabSystemMemoryManagerModeHostUnchecked": "Host 略過檢查 (最快,但較不安全)", "SettingsTabSystemMemoryManagerModeHostUnchecked": "主機略過檢查模式 (最快, 但不安全)",
"SettingsTabSystemUseHypervisor": "使用 Hypervisor",
"MenuBarFile": "_檔案", "MenuBarFile": "_檔案",
"MenuBarFileOpenFromFile": "_載入檔案", "MenuBarFileOpenFromFile": "_載入檔案",
"MenuBarFileOpenUnpacked": "載入_解包後的遊戲", "MenuBarFileOpenUnpacked": "載入_已解開封裝的遊戲",
"MenuBarFileOpenEmuFolder": "開啟 Ryujinx 資料夾", "MenuBarFileOpenEmuFolder": "開啟 Ryujinx 資料夾",
"MenuBarFileOpenLogsFolder": "開啟日誌資料夾", "MenuBarFileOpenLogsFolder": "開啟日誌資料夾",
"MenuBarFileExit": "_退出", "MenuBarFileExit": "_退出",
@ -18,7 +19,7 @@
"MenuBarOptionsStartGamesInFullscreen": "使用全螢幕模式啟動遊戲", "MenuBarOptionsStartGamesInFullscreen": "使用全螢幕模式啟動遊戲",
"MenuBarOptionsStopEmulation": "停止模擬", "MenuBarOptionsStopEmulation": "停止模擬",
"MenuBarOptionsSettings": "_設定", "MenuBarOptionsSettings": "_設定",
"MenuBarOptionsManageUserProfiles": "_管理使用者帳", "MenuBarOptionsManageUserProfiles": "_管理使用者帳",
"MenuBarActions": "_動作", "MenuBarActions": "_動作",
"MenuBarOptionsSimulateWakeUpMessage": "模擬喚醒訊息", "MenuBarOptionsSimulateWakeUpMessage": "模擬喚醒訊息",
"MenuBarActionsScanAmiibo": "掃描 Amiibo", "MenuBarActionsScanAmiibo": "掃描 Amiibo",
@ -26,6 +27,9 @@
"MenuBarToolsInstallFirmware": "安裝韌體", "MenuBarToolsInstallFirmware": "安裝韌體",
"MenuBarFileToolsInstallFirmwareFromFile": "從 XCI 或 ZIP 安裝韌體", "MenuBarFileToolsInstallFirmwareFromFile": "從 XCI 或 ZIP 安裝韌體",
"MenuBarFileToolsInstallFirmwareFromDirectory": "從資料夾安裝韌體", "MenuBarFileToolsInstallFirmwareFromDirectory": "從資料夾安裝韌體",
"MenuBarToolsManageFileTypes": "管理檔案類型",
"MenuBarToolsInstallFileTypes": "註冊檔案類型",
"MenuBarToolsUninstallFileTypes": "取消註冊檔案類型",
"MenuBarHelp": "幫助", "MenuBarHelp": "幫助",
"MenuBarHelpCheckForUpdates": "檢查更新", "MenuBarHelpCheckForUpdates": "檢查更新",
"MenuBarHelpAbout": "關於", "MenuBarHelpAbout": "關於",
@ -33,34 +37,34 @@
"GameListHeaderFavorite": "收藏", "GameListHeaderFavorite": "收藏",
"GameListHeaderIcon": "圖示", "GameListHeaderIcon": "圖示",
"GameListHeaderApplication": "名稱", "GameListHeaderApplication": "名稱",
"GameListHeaderDeveloper": "開發", "GameListHeaderDeveloper": "開發人員",
"GameListHeaderVersion": "版本", "GameListHeaderVersion": "版本",
"GameListHeaderTimePlayed": "遊玩時", "GameListHeaderTimePlayed": "遊玩時",
"GameListHeaderLastPlayed": "上次遊玩", "GameListHeaderLastPlayed": "最近遊玩",
"GameListHeaderFileExtension": "副檔名", "GameListHeaderFileExtension": "副檔名",
"GameListHeaderFileSize": "大小", "GameListHeaderFileSize": "檔案大小",
"GameListHeaderPath": "路徑", "GameListHeaderPath": "路徑",
"GameListContextMenuOpenUserSaveDirectory": "開啟使用者存檔資料夾", "GameListContextMenuOpenUserSaveDirectory": "開啟使用者存檔資料夾",
"GameListContextMenuOpenUserSaveDirectoryToolTip": "開啟儲存遊戲存檔的資料夾", "GameListContextMenuOpenUserSaveDirectoryToolTip": "開啟此遊戲的存檔資料夾",
"GameListContextMenuOpenDeviceSaveDirectory": "開啟系統資料夾", "GameListContextMenuOpenDeviceSaveDirectory": "開啟系統資料夾",
"GameListContextMenuOpenDeviceSaveDirectoryToolTip": "開啟包含遊戲系統設定的資料夾", "GameListContextMenuOpenDeviceSaveDirectoryToolTip": "開啟此遊戲的系統設定資料夾",
"GameListContextMenuOpenBcatSaveDirectory": "開啟 BCAT 資料夾", "GameListContextMenuOpenBcatSaveDirectory": "開啟 BCAT 資料夾",
"GameListContextMenuOpenBcatSaveDirectoryToolTip": "開啟包含遊戲 BCAT 資料的資料夾", "GameListContextMenuOpenBcatSaveDirectoryToolTip": "開啟此遊戲的 BCAT 資料夾\n",
"GameListContextMenuManageTitleUpdates": "管理遊戲更新", "GameListContextMenuManageTitleUpdates": "管理遊戲更新",
"GameListContextMenuManageTitleUpdatesToolTip": "開啟更新管理視窗", "GameListContextMenuManageTitleUpdatesToolTip": "開啟遊戲更新管理視窗",
"GameListContextMenuManageDlc": "管理 DLC", "GameListContextMenuManageDlc": "管理 DLC",
"GameListContextMenuManageDlcToolTip": "開啟 DLC 管理視窗", "GameListContextMenuManageDlcToolTip": "開啟 DLC 管理視窗",
"GameListContextMenuOpenModsDirectory": "開啟模組資料夾", "GameListContextMenuOpenModsDirectory": "開啟模組資料夾",
"GameListContextMenuOpenModsDirectoryToolTip": "開啟存放遊戲模組的資料夾", "GameListContextMenuOpenModsDirectoryToolTip": "開啟此遊戲的模組資料夾",
"GameListContextMenuCacheManagement": "快取管理", "GameListContextMenuCacheManagement": "快取管理",
"GameListContextMenuCacheManagementPurgePptc": "清除 PPTC 快取", "GameListContextMenuCacheManagementPurgePptc": "清除 PPTC 快取",
"GameListContextMenuCacheManagementPurgePptcToolTip": "刪除遊戲的 PPTC 快取", "GameListContextMenuCacheManagementPurgePptcToolTip": "刪除遊戲的 PPTC 快取",
"GameListContextMenuCacheManagementPurgeShaderCache": "清除渲染器快取", "GameListContextMenuCacheManagementPurgeShaderCache": "清除著色器快取",
"GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "刪除遊戲的渲染器快取", "GameListContextMenuCacheManagementPurgeShaderCacheToolTip": "刪除遊戲的著色器快取",
"GameListContextMenuCacheManagementOpenPptcDirectory": "開啟 PPTC 資料夾", "GameListContextMenuCacheManagementOpenPptcDirectory": "開啟 PPTC 資料夾",
"GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "開啟包含遊戲 PPTC 快取的資料夾", "GameListContextMenuCacheManagementOpenPptcDirectoryToolTip": "開啟此遊戲的 PPTC 快取資料夾",
"GameListContextMenuCacheManagementOpenShaderCacheDirectory": "開啟渲染器快取資料夾", "GameListContextMenuCacheManagementOpenShaderCacheDirectory": "開啟著色器快取資料夾",
"GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "開啟包含應用程式渲染器快取的資料夾", "GameListContextMenuCacheManagementOpenShaderCacheDirectoryToolTip": "開啟此遊戲的著色器快取資料夾",
"GameListContextMenuExtractData": "提取資料", "GameListContextMenuExtractData": "提取資料",
"GameListContextMenuExtractDataExeFS": "ExeFS", "GameListContextMenuExtractDataExeFS": "ExeFS",
"GameListContextMenuExtractDataExeFSToolTip": "從遊戲的目前狀態中提取 ExeFS 分區(包含更新)", "GameListContextMenuExtractDataExeFSToolTip": "從遊戲的目前狀態中提取 ExeFS 分區(包含更新)",
@ -69,14 +73,24 @@
"GameListContextMenuExtractDataLogo": "圖示", "GameListContextMenuExtractDataLogo": "圖示",
"GameListContextMenuExtractDataLogoToolTip": "從遊戲的目前狀態中提取圖示(包含更新)", "GameListContextMenuExtractDataLogoToolTip": "從遊戲的目前狀態中提取圖示(包含更新)",
"StatusBarGamesLoaded": "{0}/{1} 遊戲載入完成", "StatusBarGamesLoaded": "{0}/{1} 遊戲載入完成",
"StatusBarSystemVersion": "系統版本: {0}", "StatusBarSystemVersion": "系統版本: {0}",
"LinuxVmMaxMapCountDialogTitle": "檢測到映射的記憶體上限過低",
"LinuxVmMaxMapCountDialogTextPrimary": "你願意增加 vm.max_map_count to {0} 的數值嗎?",
"LinuxVmMaxMapCountDialogTextSecondary": "遊戲佔用的記憶體超出了映射的上限. Ryujinx的處理程序即將面臨崩潰.",
"LinuxVmMaxMapCountDialogButtonUntilRestart": "碓定 (直至下一次重新啟動)",
"LinuxVmMaxMapCountDialogButtonPersistent": "碓定 (永遠設定)",
"LinuxVmMaxMapCountWarningTextPrimary": "映射記憶體的最大值少於目前建議的下限.",
"LinuxVmMaxMapCountWarningTextSecondary": "目前 vm.max_map_count ({0}) 的數值少於 {1}. 遊戲佔用的記憶體超出了映射的上限. Ryujinx的處理程序即將面臨崩潰.\n\n你可能需要手動增加上限或安裝 pkexec, 這些都能協助Ryujinx完成此操作.",
"Settings": "設定", "Settings": "設定",
"SettingsTabGeneral": "使用者介面", "SettingsTabGeneral": "使用者介面",
"SettingsTabGeneralGeneral": "一般", "SettingsTabGeneralGeneral": "一般",
"SettingsTabGeneralEnableDiscordRichPresence": "啟用 Discord 動態狀態展示", "SettingsTabGeneralEnableDiscordRichPresence": "啟用 Discord 動態狀態展示",
"SettingsTabGeneralCheckUpdatesOnLaunch": "自動檢查更新", "SettingsTabGeneralCheckUpdatesOnLaunch": "自動檢查更新",
"SettingsTabGeneralShowConfirmExitDialog": "顯示「確認離開」對話框", "SettingsTabGeneralShowConfirmExitDialog": "顯示「確認離開」對話框",
"SettingsTabGeneralHideCursor": "隱藏滑鼠遊標:",
"SettingsTabGeneralHideCursorNever": "永不",
"SettingsTabGeneralHideCursorOnIdle": "自動隱藏滑鼠", "SettingsTabGeneralHideCursorOnIdle": "自動隱藏滑鼠",
"SettingsTabGeneralHideCursorAlways": "總是",
"SettingsTabGeneralGameDirectories": "遊戲資料夾", "SettingsTabGeneralGameDirectories": "遊戲資料夾",
"SettingsTabGeneralAdd": "新增", "SettingsTabGeneralAdd": "新增",
"SettingsTabGeneralRemove": "刪除", "SettingsTabGeneralRemove": "刪除",
@ -91,85 +105,86 @@
"SettingsTabSystemSystemRegionKorea": "韓國", "SettingsTabSystemSystemRegionKorea": "韓國",
"SettingsTabSystemSystemRegionTaiwan": "台灣", "SettingsTabSystemSystemRegionTaiwan": "台灣",
"SettingsTabSystemSystemLanguage": "系統語言:", "SettingsTabSystemSystemLanguage": "系統語言:",
"SettingsTabSystemSystemLanguageJapanese": "日", "SettingsTabSystemSystemLanguageJapanese": "日",
"SettingsTabSystemSystemLanguageAmericanEnglish": "美式英語", "SettingsTabSystemSystemLanguageAmericanEnglish": "英文 (美國)",
"SettingsTabSystemSystemLanguageFrench": "法", "SettingsTabSystemSystemLanguageFrench": "法",
"SettingsTabSystemSystemLanguageGerman": "德", "SettingsTabSystemSystemLanguageGerman": "德",
"SettingsTabSystemSystemLanguageItalian": "義大利", "SettingsTabSystemSystemLanguageItalian": "義大利",
"SettingsTabSystemSystemLanguageSpanish": "西班牙", "SettingsTabSystemSystemLanguageSpanish": "西班牙",
"SettingsTabSystemSystemLanguageChinese": "中文 (中國)", "SettingsTabSystemSystemLanguageChinese": "中文 (中國)",
"SettingsTabSystemSystemLanguageKorean": "韓", "SettingsTabSystemSystemLanguageKorean": "韓",
"SettingsTabSystemSystemLanguageDutch": "荷蘭", "SettingsTabSystemSystemLanguageDutch": "荷蘭",
"SettingsTabSystemSystemLanguagePortuguese": "葡萄牙", "SettingsTabSystemSystemLanguagePortuguese": "葡萄牙",
"SettingsTabSystemSystemLanguageRussian": "俄", "SettingsTabSystemSystemLanguageRussian": "俄",
"SettingsTabSystemSystemLanguageTaiwanese": "中文 (台灣)", "SettingsTabSystemSystemLanguageTaiwanese": "中文 (台灣)",
"SettingsTabSystemSystemLanguageBritishEnglish": "英式英語", "SettingsTabSystemSystemLanguageBritishEnglish": "英文 (英國)",
"SettingsTabSystemSystemLanguageCanadianFrench": "加拿大法語", "SettingsTabSystemSystemLanguageCanadianFrench": "加拿大法語",
"SettingsTabSystemSystemLanguageLatinAmericanSpanish": "拉美西班牙語", "SettingsTabSystemSystemLanguageLatinAmericanSpanish": "拉丁美洲西班牙文",
"SettingsTabSystemSystemLanguageSimplifiedChinese": "簡體中文 (推薦)", "SettingsTabSystemSystemLanguageSimplifiedChinese": "簡體中文",
"SettingsTabSystemSystemLanguageTraditionalChinese": "繁體中文 (推薦)", "SettingsTabSystemSystemLanguageTraditionalChinese": "繁體中文",
"SettingsTabSystemSystemTimeZone": "系統時區:", "SettingsTabSystemSystemTimeZone": "系統時區",
"SettingsTabSystemSystemTime": "系統時鐘:", "SettingsTabSystemSystemTime": "系統時鐘",
"SettingsTabSystemEnableVsync": "開啟 VSync", "SettingsTabSystemEnableVsync": "垂直同步",
"SettingsTabSystemEnablePptc": "啟 PPTC 快取", "SettingsTabSystemEnablePptc": " PPTC 快取",
"SettingsTabSystemEnableFsIntegrityChecks": "開啟檔案系統完整性檢查", "SettingsTabSystemEnableFsIntegrityChecks": "開啟檔案系統完整性檢查",
"SettingsTabSystemAudioBackend": "音訊後端:", "SettingsTabSystemAudioBackend": "音效處理後台架構:",
"SettingsTabSystemAudioBackendDummy": "", "SettingsTabSystemAudioBackendDummy": "模擬",
"SettingsTabSystemAudioBackendOpenAL": "OpenAL", "SettingsTabSystemAudioBackendOpenAL": "OpenAL",
"SettingsTabSystemAudioBackendSoundIO": "SoundIO", "SettingsTabSystemAudioBackendSoundIO": "SoundIO",
"SettingsTabSystemAudioBackendSDL2": "SDL2", "SettingsTabSystemAudioBackendSDL2": "SDL2",
"SettingsTabSystemHacks": "修正", "SettingsTabSystemHacks": "修正",
"SettingsTabSystemHacksNote": " (會引起模擬器不穩定)", "SettingsTabSystemHacksNote": " (會引起模擬器不穩定)",
"SettingsTabSystemExpandDramSize": "使用替代記憶體布局 (開發人員)", "SettingsTabSystemExpandDramSize": "使用額外的記憶體佈局 (開發人員)",
"SettingsTabSystemIgnoreMissingServices": "忽略缺少的服務", "SettingsTabSystemIgnoreMissingServices": "忽略缺少的服務",
"SettingsTabGraphics": "圖", "SettingsTabGraphics": "圖",
"SettingsTabGraphicsAPI": "圖形 API", "SettingsTabGraphicsAPI": "圖像處理應用程式介面",
"SettingsTabGraphicsEnableShaderCache": "啟用渲染器快取", "SettingsTabGraphicsEnableShaderCache": "啟用著色器快取",
"SettingsTabGraphicsAnisotropicFiltering": "各向異性過濾:", "SettingsTabGraphicsAnisotropicFiltering": "各向異性過濾",
"SettingsTabGraphicsAnisotropicFilteringAuto": "自動", "SettingsTabGraphicsAnisotropicFilteringAuto": "自動",
"SettingsTabGraphicsAnisotropicFiltering2x": "2 倍", "SettingsTabGraphicsAnisotropicFiltering2x": "2 倍",
"SettingsTabGraphicsAnisotropicFiltering4x": "4 倍", "SettingsTabGraphicsAnisotropicFiltering4x": "4 倍",
"SettingsTabGraphicsAnisotropicFiltering8x": "8 倍", "SettingsTabGraphicsAnisotropicFiltering8x": "8 倍",
"SettingsTabGraphicsAnisotropicFiltering16x": "16倍", "SettingsTabGraphicsAnisotropicFiltering16x": "16倍",
"SettingsTabGraphicsResolutionScale": "解析度縮放", "SettingsTabGraphicsResolutionScale": "解析度比例",
"SettingsTabGraphicsResolutionScaleCustom": "自訂 (不推薦)", "SettingsTabGraphicsResolutionScaleCustom": "自訂 (不建議使用)",
"SettingsTabGraphicsResolutionScaleNative": "原生 (720p/1080p)", "SettingsTabGraphicsResolutionScaleNative": "原生 (720p/1080p)",
"SettingsTabGraphicsResolutionScale2x": "2 倍 (1440p/2160p)", "SettingsTabGraphicsResolutionScale2x": "2 倍 (1440p/2160p)",
"SettingsTabGraphicsResolutionScale3x": "3 倍 (2160p/3240p)", "SettingsTabGraphicsResolutionScale3x": "3 倍 (2160p/3240p)",
"SettingsTabGraphicsResolutionScale4x": "4 倍 (2880p/4320p)", "SettingsTabGraphicsResolutionScale4x": "4 倍 (2880p/4320p)",
"SettingsTabGraphicsAspectRatio": "寬高比:", "SettingsTabGraphicsAspectRatio": "螢幕長寬比例:",
"SettingsTabGraphicsAspectRatio4x3": "4:3", "SettingsTabGraphicsAspectRatio4x3": "43",
"SettingsTabGraphicsAspectRatio16x9": "16:9", "SettingsTabGraphicsAspectRatio16x9": "169",
"SettingsTabGraphicsAspectRatio16x10": "16:10", "SettingsTabGraphicsAspectRatio16x10": "1610",
"SettingsTabGraphicsAspectRatio21x9": "21:9", "SettingsTabGraphicsAspectRatio21x9": "219",
"SettingsTabGraphicsAspectRatio32x9": "32:9", "SettingsTabGraphicsAspectRatio32x9": "329",
"SettingsTabGraphicsAspectRatioStretch": "伸至螢幕大小", "SettingsTabGraphicsAspectRatioStretch": "至螢幕大小",
"SettingsTabGraphicsDeveloperOptions": "開發者選項", "SettingsTabGraphicsDeveloperOptions": "開發者選項",
"SettingsTabGraphicsShaderDumpPath": "圖形渲染器轉儲路徑:", "SettingsTabGraphicsShaderDumpPath": "圖形著色器轉存路徑:",
"SettingsTabLogging": "日誌", "SettingsTabLogging": "日誌",
"SettingsTabLoggingLogging": "日誌", "SettingsTabLoggingLogging": "日誌",
"SettingsTabLoggingEnableLoggingToFile": "儲存日誌為檔案", "SettingsTabLoggingEnableLoggingToFile": "儲存記錄日誌為檔案",
"SettingsTabLoggingEnableStubLogs": "記錄 Stub", "SettingsTabLoggingEnableStubLogs": "啟用 Stub 記錄",
"SettingsTabLoggingEnableInfoLogs": "記錄資訊", "SettingsTabLoggingEnableInfoLogs": "啟用資訊記錄",
"SettingsTabLoggingEnableWarningLogs": "記錄警告", "SettingsTabLoggingEnableWarningLogs": "啟用警告記錄",
"SettingsTabLoggingEnableErrorLogs": "記錄錯誤", "SettingsTabLoggingEnableErrorLogs": "啟用錯誤記錄",
"SettingsTabLoggingEnableTraceLogs": "記錄 Trace", "SettingsTabLoggingEnableTraceLogs": "啟用追蹤記錄",
"SettingsTabLoggingEnableGuestLogs": "記錄 Guest", "SettingsTabLoggingEnableGuestLogs": "啟用賓客記錄",
"SettingsTabLoggingEnableFsAccessLogs": "記錄檔案存取", "SettingsTabLoggingEnableFsAccessLogs": "啟用檔案存取記錄",
"SettingsTabLoggingFsGlobalAccessLogMode": "記錄全域檔案存取模式:", "SettingsTabLoggingFsGlobalAccessLogMode": "記錄全域檔案存取模式:",
"SettingsTabLoggingDeveloperOptions": "開發者選項 (警告: 會降低效能)", "SettingsTabLoggingDeveloperOptions": "開發者選項",
"SettingsTabLoggingGraphicsBackendLogLevel": "圖形顯示後端日誌等級:", "SettingsTabLoggingDeveloperOptionsNote": "警告:此操作會降低效能",
"SettingsTabLoggingGraphicsBackendLogLevel": "圖像處理後台記錄等級:",
"SettingsTabLoggingGraphicsBackendLogLevelNone": "無", "SettingsTabLoggingGraphicsBackendLogLevelNone": "無",
"SettingsTabLoggingGraphicsBackendLogLevelError": "錯誤", "SettingsTabLoggingGraphicsBackendLogLevelError": "錯誤",
"SettingsTabLoggingGraphicsBackendLogLevelPerformance": "減速", "SettingsTabLoggingGraphicsBackendLogLevelPerformance": "減速",
"SettingsTabLoggingGraphicsBackendLogLevelAll": "全部", "SettingsTabLoggingGraphicsBackendLogLevelAll": "全部",
"SettingsTabLoggingEnableDebugLogs": "啟用除錯日誌", "SettingsTabLoggingEnableDebugLogs": "啟用除錯記錄",
"SettingsTabInput": "輸入", "SettingsTabInput": "輸入",
"SettingsTabInputEnableDockedMode": "Docked 模式", "SettingsTabInputEnableDockedMode": "Docked 模式",
"SettingsTabInputDirectKeyboardAccess": "直通鍵盤控制", "SettingsTabInputDirectKeyboardAccess": "鍵盤直接操作",
"SettingsButtonSave": "儲存", "SettingsButtonSave": "儲存",
"SettingsButtonClose": "關閉", "SettingsButtonClose": "關閉",
"SettingsButtonOk": "嘛好", "SettingsButtonOk": "確定",
"SettingsButtonCancel": "取消", "SettingsButtonCancel": "取消",
"SettingsButtonApply": "套用", "SettingsButtonApply": "套用",
"ControllerSettingsPlayer": "玩家", "ControllerSettingsPlayer": "玩家",
@ -182,21 +197,21 @@
"ControllerSettingsPlayer7": "玩家 7", "ControllerSettingsPlayer7": "玩家 7",
"ControllerSettingsPlayer8": "玩家 8", "ControllerSettingsPlayer8": "玩家 8",
"ControllerSettingsHandheld": "掌機模式", "ControllerSettingsHandheld": "掌機模式",
"ControllerSettingsInputDevice": "輸入設備", "ControllerSettingsInputDevice": "輸入裝置",
"ControllerSettingsRefresh": "更新", "ControllerSettingsRefresh": "更新",
"ControllerSettingsDeviceDisabled": "關閉", "ControllerSettingsDeviceDisabled": "關閉",
"ControllerSettingsControllerType": "手把類型", "ControllerSettingsControllerType": "控制器類型",
"ControllerSettingsControllerTypeHandheld": "掌機", "ControllerSettingsControllerTypeHandheld": "掌機",
"ControllerSettingsControllerTypeProController": "Pro 手把", "ControllerSettingsControllerTypeProController": "Nintendo Switch Pro控制器",
"ControllerSettingsControllerTypeJoyConPair": "JoyCon", "ControllerSettingsControllerTypeJoyConPair": "JoyCon",
"ControllerSettingsControllerTypeJoyConLeft": "左 JoyCon", "ControllerSettingsControllerTypeJoyConLeft": "左 JoyCon",
"ControllerSettingsControllerTypeJoyConRight": "右 JoyCon", "ControllerSettingsControllerTypeJoyConRight": "右 JoyCon",
"ControllerSettingsProfile": "預設", "ControllerSettingsProfile": "配置檔案",
"ControllerSettingsProfileDefault": "預設", "ControllerSettingsProfileDefault": "預設",
"ControllerSettingsLoad": "載入", "ControllerSettingsLoad": "載入",
"ControllerSettingsAdd": "建立", "ControllerSettingsAdd": "建立",
"ControllerSettingsRemove": "刪除", "ControllerSettingsRemove": "刪除",
"ControllerSettingsButtons": "按", "ControllerSettingsButtons": "按",
"ControllerSettingsButtonA": "A", "ControllerSettingsButtonA": "A",
"ControllerSettingsButtonB": "B", "ControllerSettingsButtonB": "B",
"ControllerSettingsButtonX": "X", "ControllerSettingsButtonX": "X",
@ -208,26 +223,17 @@
"ControllerSettingsDPadDown": "下", "ControllerSettingsDPadDown": "下",
"ControllerSettingsDPadLeft": "左", "ControllerSettingsDPadLeft": "左",
"ControllerSettingsDPadRight": "右", "ControllerSettingsDPadRight": "右",
"ControllerSettingsStickButton": "按鍵",
"ControllerSettingsStickUp": "上",
"ControllerSettingsStickDown": "下",
"ControllerSettingsStickLeft": "左",
"ControllerSettingsStickRight": "右",
"ControllerSettingsStickStick": "搖桿",
"ControllerSettingsStickInvertXAxis": "搖桿左右反向",
"ControllerSettingsStickInvertYAxis": "搖桿上下反向",
"ControllerSettingsStickDeadzone": "盲區:",
"ControllerSettingsLStick": "左搖桿", "ControllerSettingsLStick": "左搖桿",
"ControllerSettingsLStickButton": "按下",
"ControllerSettingsLStickUp": "上",
"ControllerSettingsLStickDown": "下",
"ControllerSettingsLStickLeft": "左",
"ControllerSettingsLStickRight": "右",
"ControllerSettingsLStickStick": "桿",
"ControllerSettingsLStickInvertXAxis": "反轉 X 方向",
"ControllerSettingsLStickInvertYAxis": "反轉 Y 方向",
"ControllerSettingsLStickDeadzone": "死區:",
"ControllerSettingsRStick": "右搖桿", "ControllerSettingsRStick": "右搖桿",
"ControllerSettingsRStickButton": "按下",
"ControllerSettingsRStickUp": "上",
"ControllerSettingsRStickDown": "下",
"ControllerSettingsRStickLeft": "左",
"ControllerSettingsRStickRight": "右",
"ControllerSettingsRStickStick": "桿",
"ControllerSettingsRStickInvertXAxis": "反轉 X 方向",
"ControllerSettingsRStickInvertYAxis": "反轉 Y 方向",
"ControllerSettingsRStickDeadzone": "死區:",
"ControllerSettingsTriggersLeft": "左 Triggers", "ControllerSettingsTriggersLeft": "左 Triggers",
"ControllerSettingsTriggersRight": "右 Triggers", "ControllerSettingsTriggersRight": "右 Triggers",
"ControllerSettingsTriggersButtonsLeft": "左 Triggers 鍵", "ControllerSettingsTriggersButtonsLeft": "左 Triggers 鍵",
@ -244,69 +250,71 @@
"ControllerSettingsExtraButtonsLeft": "左按鍵", "ControllerSettingsExtraButtonsLeft": "左按鍵",
"ControllerSettingsExtraButtonsRight": "右按鍵", "ControllerSettingsExtraButtonsRight": "右按鍵",
"ControllerSettingsMisc": "其他", "ControllerSettingsMisc": "其他",
"ControllerSettingsTriggerThreshold": "Triggers 閾值:", "ControllerSettingsTriggerThreshold": "Triggers 閾值",
"ControllerSettingsMotion": "體感", "ControllerSettingsMotion": "傳感器",
"ControllerSettingsMotionUseCemuhookCompatibleMotion": "使用 CemuHook 體感協議", "ControllerSettingsMotionUseCemuhookCompatibleMotion": "使用 CemuHook 相容性傳感協定",
"ControllerSettingsMotionControllerSlot": "手把:", "ControllerSettingsMotionControllerSlot": "控制器插槽:",
"ControllerSettingsMotionMirrorInput": "鏡像操作", "ControllerSettingsMotionMirrorInput": "鏡像輸入",
"ControllerSettingsMotionRightJoyConSlot": "右 JoyCon:", "ControllerSettingsMotionRightJoyConSlot": "右 JoyCon",
"ControllerSettingsMotionServerHost": "伺服器 Host:", "ControllerSettingsMotionServerHost": "伺服器IP地址",
"ControllerSettingsMotionGyroSensitivity": "陀螺儀敏感度:", "ControllerSettingsMotionGyroSensitivity": "陀螺儀敏感度",
"ControllerSettingsMotionGyroDeadzone": "陀螺儀死區:", "ControllerSettingsMotionGyroDeadzone": "陀螺儀盲區:",
"ControllerSettingsSave": "儲存", "ControllerSettingsSave": "儲存",
"ControllerSettingsClose": "關閉", "ControllerSettingsClose": "關閉",
"UserProfilesSelectedUserProfile": "選擇使用者帳號:", "UserProfilesSelectedUserProfile": "選擇使用者帳戶:",
"UserProfilesSaveProfileName": "儲存帳名稱", "UserProfilesSaveProfileName": "儲存帳名稱",
"UserProfilesChangeProfileImage": "更換頭貼", "UserProfilesChangeProfileImage": "更換帳戶頭像",
"UserProfilesAvailableUserProfiles": "現有的帳號:", "UserProfilesAvailableUserProfiles": "現有的使用者帳戶:",
"UserProfilesAddNewProfile": "建立帳", "UserProfilesAddNewProfile": "建立帳",
"UserProfilesDelete": "刪除", "UserProfilesDelete": "刪除",
"UserProfilesClose": "關閉", "UserProfilesClose": "關閉",
"ProfileImageSelectionTitle": "頭貼選擇", "ProfileNameSelectionWatermark": "選擇一個暱稱",
"ProfileImageSelectionHeader": "選擇合適的頭貼圖片", "ProfileImageSelectionTitle": "帳戶頭像選擇",
"ProfileImageSelectionNote": "您可以導入自訂頭貼,或從系統中選擇頭貼", "ProfileImageSelectionHeader": "選擇帳戶頭像",
"ProfileImageSelectionNote": "你可以導入自訂頭像,或從系統中選擇頭像",
"ProfileImageSelectionImportImage": "導入圖片檔案", "ProfileImageSelectionImportImage": "導入圖片檔案",
"ProfileImageSelectionSelectAvatar": "選擇系統頭", "ProfileImageSelectionSelectAvatar": "選擇系統頭",
"InputDialogTitle": "輸入對話框", "InputDialogTitle": "輸入對話框",
"InputDialogOk": "完成", "InputDialogOk": "完成",
"InputDialogCancel": "取消", "InputDialogCancel": "取消",
"InputDialogAddNewProfileTitle": "選擇使用者名稱", "InputDialogAddNewProfileTitle": "選擇帳戶名稱",
"InputDialogAddNewProfileHeader": "請輸入帳名稱", "InputDialogAddNewProfileHeader": "請輸入帳名稱",
"InputDialogAddNewProfileSubtext": "(最大長度: {0})", "InputDialogAddNewProfileSubtext": "(最大長度{0})",
"AvatarChoose": "選擇", "AvatarChoose": "選擇",
"AvatarSetBackgroundColor": "設定背景顏色", "AvatarSetBackgroundColor": "設定背景顏色",
"AvatarClose": "關閉", "AvatarClose": "關閉",
"ControllerSettingsLoadProfileToolTip": "載入預設", "ControllerSettingsLoadProfileToolTip": "載入配置檔案",
"ControllerSettingsAddProfileToolTip": "新增預設", "ControllerSettingsAddProfileToolTip": "新增配置檔案",
"ControllerSettingsRemoveProfileToolTip": "刪除預設", "ControllerSettingsRemoveProfileToolTip": "刪除配置檔案",
"ControllerSettingsSaveProfileToolTip": "儲存預設", "ControllerSettingsSaveProfileToolTip": "儲存配置檔案",
"MenuBarFileToolsTakeScreenshot": "儲存截圖", "MenuBarFileToolsTakeScreenshot": "儲存截圖",
"MenuBarFileToolsHideUi": "Hide UI", "MenuBarFileToolsHideUi": "隱藏使用者介面",
"GameListContextMenuRunApplication": "執行程式",
"GameListContextMenuToggleFavorite": "標記為收藏", "GameListContextMenuToggleFavorite": "標記為收藏",
"GameListContextMenuToggleFavoriteToolTip": "啟用或取消收藏標記", "GameListContextMenuToggleFavoriteToolTip": "啟用或取消收藏標記",
"SettingsTabGeneralTheme": "主題", "SettingsTabGeneralTheme": "佈景主題",
"SettingsTabGeneralThemeCustomTheme": "自主題路徑", "SettingsTabGeneralThemeCustomTheme": "自訂佈景主題路徑",
"SettingsTabGeneralThemeBaseStyle": "主題樣式", "SettingsTabGeneralThemeBaseStyle": "基本佈景主題式樣",
"SettingsTabGeneralThemeBaseStyleDark": "深色模式", "SettingsTabGeneralThemeBaseStyleDark": "深色模式",
"SettingsTabGeneralThemeBaseStyleLight": "淺色模式", "SettingsTabGeneralThemeBaseStyleLight": "淺色模式",
"SettingsTabGeneralThemeEnableCustomTheme": "使用自訂主題介面", "SettingsTabGeneralThemeEnableCustomTheme": "使用自訂佈景主題",
"ButtonBrowse": "瀏覽", "ButtonBrowse": "瀏覽",
"ControllerSettingsConfigureGeneral": "配置", "ControllerSettingsConfigureGeneral": "配置",
"ControllerSettingsRumble": "震動", "ControllerSettingsRumble": "震動",
"ControllerSettingsRumbleStrongMultiplier": "強震動調節", "ControllerSettingsRumbleStrongMultiplier": "強震動調節",
"ControllerSettingsRumbleWeakMultiplier": "弱震動調節", "ControllerSettingsRumbleWeakMultiplier": "弱震動調節",
"DialogMessageSaveNotAvailableMessage": "沒有{0} [{1:x16}]的遊戲存檔", "DialogMessageSaveNotAvailableMessage": "沒有{0} [{1:x16}]的遊戲存檔",
"DialogMessageSaveNotAvailableCreateSaveMessage": "是否建立該遊戲的存檔資料夾?", "DialogMessageSaveNotAvailableCreateSaveMessage": "是否建立該遊戲的存檔資料夾",
"DialogConfirmationTitle": "Ryujinx - 設定", "DialogConfirmationTitle": "Ryujinx - 設定",
"DialogUpdaterTitle": "Ryujinx - 更新", "DialogUpdaterTitle": "Ryujinx - 更新",
"DialogErrorTitle": "Ryujinx - 錯誤", "DialogErrorTitle": "Ryujinx - 錯誤",
"DialogWarningTitle": "Ryujinx - 警告", "DialogWarningTitle": "Ryujinx - 警告",
"DialogExitTitle": "Ryujinx - 關閉", "DialogExitTitle": "Ryujinx - 關閉",
"DialogErrorMessage": "Ryujinx 遇到了錯誤", "DialogErrorMessage": "Ryujinx 遇到了錯誤",
"DialogExitMessage": "是否關閉 Ryujinx", "DialogExitMessage": "你確定要關閉 Ryujinx 嗎",
"DialogExitSubMessage": "所有未儲存的進度會遺失!", "DialogExitSubMessage": "所有未儲存的資料將會遺失!",
"DialogMessageCreateSaveErrorMessage": "建立特定的存檔時出錯: {0}", "DialogMessageCreateSaveErrorMessage": "建立特定的存檔時出現錯誤: {0}",
"DialogMessageFindSaveErrorMessage": "查找特定的存檔時出錯: {0}", "DialogMessageFindSaveErrorMessage": "查找特定的存檔時出現錯誤: {0}",
"FolderDialogExtractTitle": "選擇要解壓到的資料夾", "FolderDialogExtractTitle": "選擇要解壓到的資料夾",
"DialogNcaExtractionMessage": "提取{1}的{0}分區...", "DialogNcaExtractionMessage": "提取{1}的{0}分區...",
"DialogNcaExtractionTitle": "Ryujinx - NCA分區提取", "DialogNcaExtractionTitle": "Ryujinx - NCA分區提取",
@ -315,74 +323,81 @@
"DialogNcaExtractionSuccessMessage": "提取成功。", "DialogNcaExtractionSuccessMessage": "提取成功。",
"DialogUpdaterConvertFailedMessage": "無法轉換目前 Ryujinx 版本。", "DialogUpdaterConvertFailedMessage": "無法轉換目前 Ryujinx 版本。",
"DialogUpdaterCancelUpdateMessage": "更新取消!", "DialogUpdaterCancelUpdateMessage": "更新取消!",
"DialogUpdaterAlreadyOnLatestVersionMessage": "使用的 Ryujinx 是最新版本。", "DialogUpdaterAlreadyOnLatestVersionMessage": "使用的 Ryujinx 是最新版本。",
"DialogUpdaterFailedToGetVersionMessage": "嘗試從 Github 取得版本訊息時無效。可能是因為 GitHub Actions 正在編譯新版本。請過幾分鐘重試。", "DialogUpdaterFailedToGetVersionMessage": "嘗試從 Github 取得版本訊息時失敗。可能是因為 GitHub Actions 正在編譯新版本。請於數分數後重試。",
"DialogUpdaterConvertFailedGithubMessage": "無法轉換從 Github 接收到的 Ryujinx 版本。", "DialogUpdaterConvertFailedGithubMessage": "無法轉換從 Github 接收到的 Ryujinx 版本。",
"DialogUpdaterDownloadingMessage": "下載新版本中...", "DialogUpdaterDownloadingMessage": "下載新版本中...",
"DialogUpdaterExtractionMessage": "正在提取更新...", "DialogUpdaterExtractionMessage": "正在提取更新...",
"DialogUpdaterRenamingMessage": "正在刪除舊檔案...", "DialogUpdaterRenamingMessage": "正在刪除舊檔案...",
"DialogUpdaterAddingFilesMessage": "安裝更新中...", "DialogUpdaterAddingFilesMessage": "安裝更新中...",
"DialogUpdaterCompleteMessage": "更新成功!", "DialogUpdaterCompleteMessage": "更新成功!",
"DialogUpdaterRestartMessage": "立即重啟 Ryujinx 完成更新", "DialogUpdaterRestartMessage": "你確定要立即重新啟動 Ryujinx 嗎",
"DialogUpdaterArchNotSupportedMessage": "您執行的系統架構不受支援!", "DialogUpdaterArchNotSupportedMessage": "你執行的系統架構不被支援!",
"DialogUpdaterArchNotSupportedSubMessage": "(僅支援 x64 系統)", "DialogUpdaterArchNotSupportedSubMessage": "(僅支援 x64 系統)",
"DialogUpdaterNoInternetMessage": "沒有連接到網路", "DialogUpdaterNoInternetMessage": "你沒有連接到網際網絡!",
"DialogUpdaterNoInternetSubMessage": "請確保網路連接正常。", "DialogUpdaterNoInternetSubMessage": "請確保網際網絡連接正常!",
"DialogUpdaterDirtyBuildMessage": "不能更新非官方版本的 Ryujinx", "DialogUpdaterDirtyBuildMessage": "不能更新非官方版本的 Ryujinx",
"DialogUpdaterDirtyBuildSubMessage": "如果希望使用受支援的版本,請您在 https://ryujinx.org/ 下載。", "DialogUpdaterDirtyBuildSubMessage": "如果你希望使用被受支援的Ryujinx版本請你在官方網址 https://ryujinx.org/ 下載.",
"DialogRestartRequiredMessage": "需要重啟模擬器", "DialogRestartRequiredMessage": "模擬器必須重新啟動",
"DialogThemeRestartMessage": "主題設定已儲存。需要重新啟動才能生效。", "DialogThemeRestartMessage": "佈景主題設定已儲存。需要重新啟動才能生效。",
"DialogThemeRestartSubMessage": "您是否要重啟", "DialogThemeRestartSubMessage": "你確定要現在重新啟動嗎",
"DialogFirmwareInstallEmbeddedMessage": "要安裝遊戲內建的韌體嗎?(韌體 {0})", "DialogFirmwareInstallEmbeddedMessage": "要安裝遊戲內建的韌體嗎?(韌體 {0})",
"DialogFirmwareInstallEmbeddedSuccessMessage": "未找到已安裝的韌體,但 Ryujinx 可以從現有的遊戲安裝韌體{0}.\\n模擬器現在可以執行。", "DialogFirmwareInstallEmbeddedSuccessMessage": "未找到已安裝的韌體,但 Ryujinx 可以從現有的遊戲安裝韌體{0}.\\n模擬器現在可以執行。",
"DialogFirmwareNoFirmwareInstalledMessage": "未安裝韌體", "DialogFirmwareNoFirmwareInstalledMessage": "未安裝韌體",
"DialogFirmwareInstalledMessage": "已安裝韌體{0}", "DialogFirmwareInstalledMessage": "已安裝韌體{0}",
"DialogOpenSettingsWindowLabel": "打開設定視窗", "DialogInstallFileTypesSuccessMessage": "成功註冊檔案類型!",
"DialogInstallFileTypesErrorMessage": "註冊檔案類型失敗。",
"DialogUninstallFileTypesSuccessMessage": "成功取消註冊檔案類型!",
"DialogUninstallFileTypesErrorMessage": "取消註冊檔案類型失敗。",
"DialogOpenSettingsWindowLabel": "開啟設定視窗",
"DialogControllerAppletTitle": "控制器小視窗", "DialogControllerAppletTitle": "控制器小視窗",
"DialogMessageDialogErrorExceptionMessage": "顯示訊息對話框時出錯: {0}", "DialogMessageDialogErrorExceptionMessage": "顯示訊息對話框時出現錯誤: {0}",
"DialogSoftwareKeyboardErrorExceptionMessage": "顯示軟體鍵盤時出錯: {0}", "DialogSoftwareKeyboardErrorExceptionMessage": "顯示軟體鍵盤時出現錯誤: {0}",
"DialogErrorAppletErrorExceptionMessage": "顯示錯誤對話框時出錯: {0}", "DialogErrorAppletErrorExceptionMessage": "顯示錯誤對話框時出現錯誤: {0}",
"DialogUserErrorDialogMessage": "{0} {1}", "DialogUserErrorDialogMessage": "{0} {1}",
"DialogUserErrorDialogInfoMessage": "\n有關修復此錯誤的更多訊息可以遵循我們的設定指南。", "DialogUserErrorDialogInfoMessage": "\n有關修復此錯誤的更多訊息可以遵循我們的設定指南。",
"DialogUserErrorDialogTitle": "Ryujinx 錯誤 ({0})", "DialogUserErrorDialogTitle": "Ryujinx 錯誤 ({0})",
"DialogAmiiboApiTitle": "Amiibo API", "DialogAmiiboApiTitle": "Amiibo 應用程式介面",
"DialogAmiiboApiFailFetchMessage": "從 API 取得訊息時出錯。", "DialogAmiiboApiFailFetchMessage": "從 API 取得訊息時出錯。",
"DialogAmiiboApiConnectErrorMessage": "無法連接到 Amiibo API 伺服器。伺服器可能已關閉,或者您沒有網路連接。", "DialogAmiiboApiConnectErrorMessage": "無法連接到 Amiibo API 伺服器。伺服器可能已關閉,或你沒有連接到網際網路。",
"DialogProfileInvalidProfileErrorMessage": "預設{0} 與目前輸入配置系統不相容。", "DialogProfileInvalidProfileErrorMessage": "配置檔案 {0} 與目前輸入系統不相容。",
"DialogProfileDefaultProfileOverwriteErrorMessage": "無法覆蓋預設的配置檔案", "DialogProfileDefaultProfileOverwriteErrorMessage": "無法覆蓋預設的配置檔案",
"DialogProfileDeleteProfileTitle": "刪除配置檔", "DialogProfileDeleteProfileTitle": "刪除帳戶",
"DialogProfileDeleteProfileMessage": "刪除後不可恢復,確定嗎?", "DialogProfileDeleteProfileMessage": "此操作不可撤銷, 您確定要繼續嗎?",
"DialogWarning": "警告", "DialogWarning": "警告",
"DialogPPTCDeletionMessage": "您即將刪除:\n\n{0}的 PPTC 快取\n\n確定嗎?", "DialogPPTCDeletionMessage": "下一次重啟時將會重新建立以下遊戲的 PPTC 快取\n\n{0}\n\n你確定要繼續嗎?",
"DialogPPTCDeletionErrorMessage": "清除位於{0}的 PPTC 快取時出錯: {1}", "DialogPPTCDeletionErrorMessage": "清除位於{0}的 PPTC 快取時出錯: {1}",
"DialogShaderDeletionMessage": "您即將刪除:\n\n{0}的渲染器快取\n\n確定嗎?", "DialogShaderDeletionMessage": "即將刪除以下遊戲的著色器快取:\n\n{0}\n\n你確定要繼續嗎?",
"DialogShaderDeletionErrorMessage": "清除位於{0}的渲染器快取時出錯: {1}", "DialogShaderDeletionErrorMessage": "清除{0}的著色器快取時出現錯誤: {1}",
"DialogRyujinxErrorMessage": "Ryujinx 遇到錯誤", "DialogRyujinxErrorMessage": "Ryujinx 遇到錯誤",
"DialogInvalidTitleIdErrorMessage": "UI 錯誤:所選遊戲沒有有效的標題ID", "DialogInvalidTitleIdErrorMessage": "UI 錯誤:所選遊戲沒有有效的標題ID",
"DialogFirmwareInstallerFirmwareNotFoundErrorMessage": "路徑{0}找不到有效的系統韌體。", "DialogFirmwareInstallerFirmwareNotFoundErrorMessage": "路徑{0}找不到有效的系統韌體。",
"DialogFirmwareInstallerFirmwareInstallTitle": "安裝韌體{0}", "DialogFirmwareInstallerFirmwareInstallTitle": "安裝韌體{0}",
"DialogFirmwareInstallerFirmwareInstallMessage": "將安裝{0}版本的系統。", "DialogFirmwareInstallerFirmwareInstallMessage": "將安裝{0}版本的系統。",
"DialogFirmwareInstallerFirmwareInstallSubMessage": "\n\n這將替換目前系統版本{0}。", "DialogFirmwareInstallerFirmwareInstallSubMessage": "\n\n這將替換目前系統版本{0}。",
"DialogFirmwareInstallerFirmwareInstallConfirmMessage": "\n\n確認進行?", "DialogFirmwareInstallerFirmwareInstallConfirmMessage": "你確定要繼續嗎?",
"DialogFirmwareInstallerFirmwareInstallWaitMessage": "安裝韌體中...", "DialogFirmwareInstallerFirmwareInstallWaitMessage": "安裝韌體中...",
"DialogFirmwareInstallerFirmwareInstallSuccessMessage": "成功安裝系統版本{0}。", "DialogFirmwareInstallerFirmwareInstallSuccessMessage": "成功安裝系統版本{0}。",
"DialogUserProfileDeletionWarningMessage": "刪除後將沒有可選擇的使用者帳號", "DialogUserProfileDeletionWarningMessage": "刪除後將沒有可選擇的使用者帳戶",
"DialogUserProfileDeletionConfirmMessage": "是否刪除選擇的帳號", "DialogUserProfileDeletionConfirmMessage": "你確定要刪除選擇中的帳戶嗎?",
"DialogControllerSettingsModifiedConfirmMessage": "目前的輸入預設已更新", "DialogUserProfileUnsavedChangesTitle": "警告 - 有未儲存的更改",
"DialogControllerSettingsModifiedConfirmSubMessage": "要儲存嗎?", "DialogUserProfileUnsavedChangesMessage": "你對此帳戶所做的更改尚未儲存.",
"DialogUserProfileUnsavedChangesSubMessage": "你確定要捨棄更改嗎?",
"DialogControllerSettingsModifiedConfirmMessage": "目前的輸入配置檔案已更新",
"DialogControllerSettingsModifiedConfirmSubMessage": "你確定要儲存嗎?",
"DialogLoadNcaErrorMessage": "{0}. 錯誤的檔案: {1}", "DialogLoadNcaErrorMessage": "{0}. 錯誤的檔案: {1}",
"DialogDlcNoDlcErrorMessage": "選擇的檔案不包含所選遊戲的 DLC", "DialogDlcNoDlcErrorMessage": "選擇的檔案不包含所選遊戲的 DLC",
"DialogPerformanceCheckLoggingEnabledMessage": "您啟用了跟蹤日誌,僅供開發人員使用。", "DialogPerformanceCheckLoggingEnabledMessage": "你啟用了跟蹤記錄,它的設計僅限開發人員使用。",
"DialogPerformanceCheckLoggingEnabledConfirmMessage": "為了獲得最佳效能,建議停用跟蹤日誌記錄。您是否要立即停用?", "DialogPerformanceCheckLoggingEnabledConfirmMessage": "為了獲得最佳效能,建議停用追蹤記錄。你是否要立即停用?",
"DialogPerformanceCheckShaderDumpEnabledMessage": "您啟用了渲染器轉儲,僅供開發人員使用。", "DialogPerformanceCheckShaderDumpEnabledMessage": "你啟用了著色器轉存,它的設計僅限開發人員使用。",
"DialogPerformanceCheckShaderDumpEnabledConfirmMessage": "為了獲得最佳效能,建議停用渲染器轉儲。您是否要立即停用?", "DialogPerformanceCheckShaderDumpEnabledConfirmMessage": "為了獲得最佳效能,建議停用著色器轉存。你是否要立即停用?",
"DialogLoadAppGameAlreadyLoadedMessage": "目前已載入遊戲", "DialogLoadAppGameAlreadyLoadedMessage": "目前已載入遊戲",
"DialogLoadAppGameAlreadyLoadedSubMessage": "請停止模擬或關閉程式,再啟動另一個遊戲。", "DialogLoadAppGameAlreadyLoadedSubMessage": "請停止模擬或關閉程式,再啟動另一個遊戲。",
"DialogUpdateAddUpdateErrorMessage": "選擇的檔案不包含所選遊戲的更新!", "DialogUpdateAddUpdateErrorMessage": "選擇的檔案不包含所選遊戲的更新!",
"DialogSettingsBackendThreadingWarningTitle": "警告 - 後端多執行緒", "DialogSettingsBackendThreadingWarningTitle": "警告 - 後台多工執行中",
"DialogSettingsBackendThreadingWarningMessage": "此選項後必須重啟 Ryujinx 才能生效。根據您的硬體您開啟該選項時可能需要手動停用驅動程式本身的GL多執行緒。", "DialogSettingsBackendThreadingWarningMessage": "改此選項後必須重啟 Ryujinx 才能生效。根據你的硬體您開啟該選項時可能需要手動停用驅動程式本身的GPU多執行緒。",
"SettingsTabGraphicsFeaturesOptions": "功能", "SettingsTabGraphicsFeaturesOptions": "功能",
"SettingsTabGraphicsBackendMultithreading": "後端多執行緒:", "SettingsTabGraphicsBackendMultithreading": "圖像處理後台多線程支援:",
"CommonAuto": "自動(推薦)", "CommonAuto": "自動(推薦)",
"CommonOff": "關閉", "CommonOff": "關閉",
"CommonOn": "打開", "CommonOn": "打開",
@ -391,89 +406,91 @@
"DialogProfileInvalidProfileNameErrorMessage": "檔案名包含無效字元,請重試。", "DialogProfileInvalidProfileNameErrorMessage": "檔案名包含無效字元,請重試。",
"MenuBarOptionsPauseEmulation": "暫停", "MenuBarOptionsPauseEmulation": "暫停",
"MenuBarOptionsResumeEmulation": "繼續", "MenuBarOptionsResumeEmulation": "繼續",
"AboutUrlTooltipMessage": "在瀏覽器中打開 Ryujinx 的官。", "AboutUrlTooltipMessage": "在瀏覽器中打開 Ryujinx 的官方網站。",
"AboutDisclaimerMessage": "Ryujinx 以任何方式與 Nintendo™ 及其合作伙伴都沒有任何關聯。", "AboutDisclaimerMessage": "Ryujinx 與 Nintendo™ 並沒有任何關聯, 包括其合作伙伴, 及任何形式上。",
"AboutAmiiboDisclaimerMessage": "我們的 Amiibo 模擬使用了\nAmiiboAPI (www.amiiboapi.com) ", "AboutAmiiboDisclaimerMessage": "我們的 Amiibo 模擬使用了\nAmiiboAPI (www.amiiboapi.com) ",
"AboutPatreonUrlTooltipMessage": "在瀏覽器中打開 Ryujinx 的 Patreon 贊助頁。", "AboutPatreonUrlTooltipMessage": "在瀏覽器中打開 Ryujinx 的 Patreon 贊助頁。",
"AboutGithubUrlTooltipMessage": "在瀏覽器中打開 Ryujinx 的 GitHub 儲存庫。", "AboutGithubUrlTooltipMessage": "在瀏覽器中打開 Ryujinx 的 GitHub 儲存庫。",
"AboutDiscordUrlTooltipMessage": "在瀏覽器中打開 Ryujinx 的 Discord 伺服器邀請連結。", "AboutDiscordUrlTooltipMessage": "在瀏覽器中打開 Ryujinx 的 Discord 伺服器邀請連結。",
"AboutTwitterUrlTooltipMessage": "在瀏覽器中打開 Ryujinx 的 Twitter 首頁。", "AboutTwitterUrlTooltipMessage": "在瀏覽器中打開 Ryujinx 的 Twitter 首頁。",
"AboutRyujinxAboutTitle": "關於:", "AboutRyujinxAboutTitle": "關於",
"AboutRyujinxAboutContent": "Ryujinx 是一款 Nintendo Switch™ 模擬器。\n您可以在 Patreon 上贊助 Ryujinx。\n關注 Twitter 或 Discord 可以取得模擬器最新動態。\n如果您對開發本軟體感興趣歡迎來 GitHub 和 Discord 加入我們!", "AboutRyujinxAboutContent": "Ryujinx 是 Nintendo Switch™ 的一款模擬器。\n懇請您在 Patreon 上贊助我們。\n關注 Twitter 或 Discord 可以取得我們的最新動態。\n如果您對開發本軟體感興趣歡迎來 GitHub 和 Discord 加入我們!",
"AboutRyujinxMaintainersTitle": "由以下作者維護:", "AboutRyujinxMaintainersTitle": "開發及維護名單:",
"AboutRyujinxMaintainersContentTooltipMessage": "在瀏覽器中打開貢獻者的網頁", "AboutRyujinxMaintainersContentTooltipMessage": "在瀏覽器中打開貢獻者的網頁",
"AboutRyujinxSupprtersTitle": "感謝 Patreon 的贊助者:", "AboutRyujinxSupprtersTitle": "Patreon 的贊助人:",
"AmiiboSeriesLabel": "Amiibo 系列", "AmiiboSeriesLabel": "Amiibo 系列",
"AmiiboCharacterLabel": "角色", "AmiiboCharacterLabel": "角色",
"AmiiboScanButtonLabel": "掃描", "AmiiboScanButtonLabel": "掃描",
"AmiiboOptionsShowAllLabel": "顯示所有 Amiibo", "AmiiboOptionsShowAllLabel": "顯示所有 Amiibo",
"AmiiboOptionsUsRandomTagLabel": "修正: 使用隨機標記的 Uuid", "AmiiboOptionsUsRandomTagLabel": "侵略:使用隨機標記的 Uuid 編碼",
"DlcManagerTableHeadingEnabledLabel": "啟用", "DlcManagerTableHeadingEnabledLabel": "啟用",
"DlcManagerTableHeadingTitleIdLabel": "遊戲ID", "DlcManagerTableHeadingTitleIdLabel": "遊戲ID",
"DlcManagerTableHeadingContainerPathLabel": "資料夾路徑", "DlcManagerTableHeadingContainerPathLabel": "資料夾路徑",
"DlcManagerTableHeadingFullPathLabel": "完整路徑", "DlcManagerTableHeadingFullPathLabel": "完整路徑",
"DlcManagerRemoveAllButton": "全部刪除", "DlcManagerRemoveAllButton": "全部刪除",
"DlcManagerEnableAllButton": "啟用全部", "DlcManagerEnableAllButton": "啟用全部",
"DlcManagerDisableAllButton": "停用全部", "DlcManagerDisableAllButton": "停用全部",
"MenuBarOptionsChangeLanguage": "變更語言", "MenuBarOptionsChangeLanguage": "更改語言",
"MenuBarShowFileTypes": "顯示檔案類型",
"CommonSort": "排序", "CommonSort": "排序",
"CommonShowNames": "顯示名稱", "CommonShowNames": "顯示名稱",
"CommonFavorite": "收藏", "CommonFavorite": "收藏",
"OrderAscending": "從小到大", "OrderAscending": "從小到大",
"OrderDescending": "從大到小", "OrderDescending": "從大到小",
"SettingsTabGraphicsFeatures": "額外功能", "SettingsTabGraphicsFeatures": "功能及優化",
"ErrorWindowTitle": "錯誤視窗", "ErrorWindowTitle": "錯誤視窗",
"ToggleDiscordTooltip": "啟用或關閉 Discord 動態狀態展示", "ToggleDiscordTooltip": "啟用或關閉 Discord 動態狀態展示",
"AddGameDirBoxTooltip": "輸入要添加的遊戲資料夾", "AddGameDirBoxTooltip": "輸入要添加的遊戲資料夾",
"AddGameDirTooltip": "添加遊戲資料夾到列表中", "AddGameDirTooltip": "添加遊戲資料夾到列表中",
"RemoveGameDirTooltip": "移除選中的資料夾", "RemoveGameDirTooltip": "移除選中的遊戲資料夾",
"CustomThemeCheckTooltip": "啟用或關閉自訂主題", "CustomThemeCheckTooltip": "啟用或關閉自訂佈景主題",
"CustomThemePathTooltip": "自訂主題的資料夾", "CustomThemePathTooltip": "自訂佈景主題的資料夾",
"CustomThemeBrowseTooltip": "查找自訂主題", "CustomThemeBrowseTooltip": "查找自訂佈景主題",
"DockModeToggleTooltip": "是否開啟 Switch 的 Docked 模式", "DockModeToggleTooltip": "是否開啟 Switch 的 Docked 模式",
"DirectKeyboardTooltip": "是否開啟\"直連鍵盤存取(HID) 支援\"\n(部分遊戲可以使用您的鍵盤輸入文字)", "DirectKeyboardTooltip": "支援鍵盤直接存取 (HID協定) . 可供給遊戲使用你的鍵盤作為輸入文字裝置.",
"DirectMouseTooltip": "是否開啟\"直連滑鼠存取(HID) 支援\"\n(部分遊戲可以使用您的滑鼠導航)", "DirectMouseTooltip": "支援滑鼠直接存取 (HID協定) . 可供給遊戲使用你的滑鼠作為瞄準裝置.",
"RegionTooltip": "更系統區域", "RegionTooltip": "系統區域",
"LanguageTooltip": "更系統語言", "LanguageTooltip": "系統語言",
"TimezoneTooltip": "更系統時區", "TimezoneTooltip": "系統時區",
"TimeTooltip": "更系統時鐘", "TimeTooltip": "系統時鐘",
"VSyncToggleTooltip": "關閉後,部分使用動態更新率的遊戲可以超過 60Hz 更新率", "VSyncToggleTooltip": "模擬遊戲主機垂直同步更新頻率. 重要地反映著遊戲本身的速度; 關閉它可能會令後使用動態更新率的遊戲速度過高, 或會引致載入錯誤等等.\n\n可在遊戲中利用自訂快速鍵開關此功能. 我們也建議使用快速鍵, 如果你計劃關上它.\n\n如果不確定請設定為\"開啟\".",
"PptcToggleTooltip": "開啟以後減少遊戲啟動時間和卡頓", "PptcToggleTooltip": "開啟以後減少遊戲啟動時間和卡頓",
"FsIntegrityToggleTooltip": "是否檢查遊戲檔案內容的完整性", "FsIntegrityToggleTooltip": "是否檢查遊戲檔案內容的完整性",
"AudioBackendTooltip": "預設推薦 SDL但每種音訊後端對各類遊戲相容性不同遇到音訊問題可以切換後端", "AudioBackendTooltip": "更改音效處理後台架構.\n\n推薦使用SDL2架構, 而OpenAL及SoundIO架構用作後備. Dummy是沒有音效的.\n\n如果不確定請設定為\"SDL2\".",
"MemoryManagerTooltip": "改變 Switch 記憶體映射到電腦記憶體的方式會影響CPU效能消耗", "MemoryManagerTooltip": "更改模擬器記憶體至電腦記憶體的映射和存取方式極其影響CPU效能.\n\n如果不確定, 請設定為\"主機略過檢查模式\".",
"MemoryManagerSoftwareTooltip": "使用軟體記憶體頁管理,最精確但是速度最慢", "MemoryManagerSoftwareTooltip": "使用軟體虛擬分頁表換算, 最精確但是速度最慢.",
"MemoryManagerHostTooltip": "直接映射記憶體頁到電腦記憶體, JIT 效率高", "MemoryManagerHostTooltip": "直接地映射模擬記憶體到電腦記憶體. 對 JIT 編譯和執行效率有顯著提升. ",
"MemoryManagerUnsafeTooltip": "直接映射記憶體頁但是不檢查記憶體溢出JIT效率最高。\nRyujinx 可以存取任何位置的記憶體,因而相對不安全。此模式下只應執行您信任的遊戲或軟體(即官方遊戲)", "MemoryManagerUnsafeTooltip": "直接地映射模擬記憶體到電腦記憶體, 但是不檢查記憶體溢出. 由於 Ryujinx 的子程式可以存取任何位置的記憶體, 因而相對不安全. 故在此模式下只應執行你信任的遊戲或軟體.",
"DRamTooltip": "擴充模擬的 Switch 記憶體為 6GiB某些高畫質材質模組或 4K 模組需要此選項\n這並不會提升性能\n\n如果不確定請關閉本功能", "UseHypervisorTooltip": "使用 Hypervisor 代替 JIT。在本功能可用時就可以大幅增大效能但目前狀態還不穩定。",
"IgnoreMissingServicesTooltip": "忽略某些未實作的系統服務,少部分遊戲需要此選項才能啟動", "DRamTooltip": "利用可選擇性的記憶體模式來模擬Switch發展中型號.\n\n此選項只會對高畫質材質包或4K模組有用. 而這並不會提升效能. \n\n如果不確定請關閉本功能.",
"GraphicsBackendThreadingTooltip": "啟用後端多執行緒", "IgnoreMissingServicesTooltip": "忽略某些未被實施的系統服務. 此功能有助於繞過當啟動遊戲時帶來的故障.\n\n如果不確定請關閉本功能。",
"GalThreadingTooltip": "使用模擬器自帶的多執行緒調度,減少渲染器編譯的卡頓,並提高驅動程式的效能(尤其是缺失多執行緒的AMD)。\nNVIDIA使用者需要重啟模擬器才能停用驅動本身的多執行緒否則您需手動執行停用獲得最佳效能", "GraphicsBackendThreadingTooltip": "執行雙線程後台繪圖指令, 能夠減少著色器編譯斷續, 並提高GPU驅動效能, 即將它不支持多線程處理. 而對於多線程處理也有少量提升.\n\n如果你不確定請設定為\"自動\"",
"ShaderCacheToggleTooltip": "開啟後快取渲染器到硬碟,減少遊戲卡頓", "GalThreadingTooltip": "執行雙線程後台繪圖指令.\n\n能夠加速著色器編譯及減少斷續, 並提高GPU驅動效能, 即將它不支持多線程處理. 而對於多線程處理也有少量提升.\n\n如果你不確定請設定為\"自動\"",
"ResolutionScaleTooltip": "縮放渲染的解析度", "ShaderCacheToggleTooltip": "儲存著色器快取到硬碟,減少存取斷續。\n\n如果不確定請設定為\"開啟\"。",
"ResolutionScaleTooltip": "解析度繪圖倍率",
"ResolutionScaleEntryTooltip": "盡量使用如1.5的浮點倍數。非整數的倍率易引起錯誤", "ResolutionScaleEntryTooltip": "盡量使用如1.5的浮點倍數。非整數的倍率易引起錯誤",
"AnisotropyTooltip": "各向異性過濾等級。提高傾斜視角材質的清晰度\n(選擇「自動」將使用遊戲預設指定的等級)", "AnisotropyTooltip": "各向異性過濾等級。提高傾斜視角材質的清晰度\n(選擇「自動」將使用遊戲預設指定的等級)",
"AspectRatioTooltip": "模擬器渲染視窗的寬高比", "AspectRatioTooltip": "模擬器視窗解析度的長寬比",
"ShaderDumpPathTooltip": "轉儲圖形渲染器的路徑", "ShaderDumpPathTooltip": "圖形著色器轉存路徑",
"FileLogTooltip": "是否儲存日誌檔案到硬碟", "FileLogTooltip": "是否儲存日誌檔案到硬碟",
"StubLogTooltip": "記錄 Stub 訊息", "StubLogTooltip": "在控制台顯示及記錄 Stub 訊息",
"InfoLogTooltip": "記錄資訊訊息", "InfoLogTooltip": "在控制台顯示及記錄資訊訊息",
"WarnLogTooltip": "記錄警告訊息", "WarnLogTooltip": "在控制台顯示及記錄警告訊息\n",
"ErrorLogTooltip": "記錄錯誤訊息", "ErrorLogTooltip": "在控制台顯示及記錄錯誤訊息",
"TraceLogTooltip": "記錄 Trace 訊息", "TraceLogTooltip": "在控制台顯示及記錄追蹤訊息",
"GuestLogTooltip": "記錄 Guest 訊息", "GuestLogTooltip": "在控制台顯示及記錄賓客訊息",
"FileAccessLogTooltip": "記錄檔案存取訊息", "FileAccessLogTooltip": "在控制台顯示及記錄檔案存取訊息",
"FSAccessLogModeTooltip": "記錄 FS 存取訊息,輸出到控制台。可選的模式是 0-3", "FSAccessLogModeTooltip": "在控制台顯示及記錄FS 存取訊息. 可選的模式是 0-3",
"DeveloperOptionTooltip": "使用請謹慎", "DeveloperOptionTooltip": "使用請謹慎",
"OpenGlLogLevel": "需要打開適當的日誌等級", "OpenGlLogLevel": "需要打開適當的日誌等級",
"DebugLogTooltip": "記錄Debug訊息", "DebugLogTooltip": "在控制台顯示及記錄除錯訊息.\n\n僅限於受訓的成員使用, 因為它很難理解而且令模擬的效能非常地差.\n",
"LoadApplicationFileTooltip": "選擇 Switch 支援的遊戲格式並載入", "LoadApplicationFileTooltip": "選擇 Switch 支援的遊戲格式並載入",
"LoadApplicationFolderTooltip": "選擇解包後的 Switch 遊戲並載入", "LoadApplicationFolderTooltip": "選擇解包後的 Switch 遊戲並載入",
"OpenRyujinxFolderTooltip": "開 Ryujinx 系統資料夾", "OpenRyujinxFolderTooltip": " Ryujinx 系統資料夾",
"OpenRyujinxLogsTooltip": "打開日誌存放的資料夾", "OpenRyujinxLogsTooltip": "開啟存放日誌的資料夾",
"ExitTooltip": "關閉 Ryujinx", "ExitTooltip": "關閉 Ryujinx",
"OpenSettingsTooltip": "開設定視窗", "OpenSettingsTooltip": "設定視窗",
"OpenProfileManagerTooltip": "打開使用者帳號管理器", "OpenProfileManagerTooltip": "開啟使用者帳戶管理視窗",
"StopEmulationTooltip": "停止執行目前遊戲並回到選擇界面", "StopEmulationTooltip": "停止執行目前遊戲並回到選擇界面",
"CheckUpdatesTooltip": "檢查 Ryujinx 新版本", "CheckUpdatesTooltip": "檢查 Ryujinx 新版本",
"OpenAboutTooltip": "開啟關於視窗", "OpenAboutTooltip": "開啟關於視窗",
@ -481,30 +498,30 @@
"GridSizeTooltip": "調整網格模式的大小", "GridSizeTooltip": "調整網格模式的大小",
"SettingsTabSystemSystemLanguageBrazilianPortuguese": "巴西葡萄牙語", "SettingsTabSystemSystemLanguageBrazilianPortuguese": "巴西葡萄牙語",
"AboutRyujinxContributorsButtonHeader": "查看所有參與者", "AboutRyujinxContributorsButtonHeader": "查看所有參與者",
"SettingsTabSystemAudioVolume": "音量: ", "SettingsTabSystemAudioVolume": "音量",
"AudioVolumeTooltip": "調節音量", "AudioVolumeTooltip": "調節音量",
"SettingsTabSystemEnableInternetAccess": "啟用網路連接", "SettingsTabSystemEnableInternetAccess": "啟用網路連接",
"EnableInternetAccessTooltip": "開啟網路存取。此選項打開後,效果類似於 Switch 連接到網路的狀態。注意即使此選項關閉,應用程式偶爾也有可能連接到網路", "EnableInternetAccessTooltip": "開啟網路存取。此選項打開後,效果類似於 Switch 連接到網路的狀態。注意即使此選項關閉,應用程式偶爾也有可能連接到網路",
"GameListContextMenuManageCheatToolTip": "管理金手指", "GameListContextMenuManageCheatToolTip": "管理金手指",
"GameListContextMenuManageCheat": "管理金手指", "GameListContextMenuManageCheat": "管理金手指",
"ControllerSettingsStickRange": "範圍", "ControllerSettingsStickRange": "範圍",
"DialogStopEmulationTitle": "Ryujinx - 停止模擬", "DialogStopEmulationTitle": "Ryujinx - 停止模擬",
"DialogStopEmulationMessage": "是否確定停止模擬?", "DialogStopEmulationMessage": "你確定要停止模擬嗎?",
"SettingsTabCpu": "CPU", "SettingsTabCpu": "處理器",
"SettingsTabAudio": "音訊", "SettingsTabAudio": "音訊",
"SettingsTabNetwork": "網路", "SettingsTabNetwork": "網路",
"SettingsTabNetworkConnection": "網路連接", "SettingsTabNetworkConnection": "網路連接",
"SettingsTabCpuCache": "CPU 快取", "SettingsTabCpuCache": "CPU 快取",
"SettingsTabCpuMemory": "CPU 記憶體", "SettingsTabCpuMemory": "CPU 模式",
"DialogUpdaterFlatpakNotSupportedMessage": "請透過 Flathub 更新 Ryujinx。", "DialogUpdaterFlatpakNotSupportedMessage": "請透過 Flathub 更新 Ryujinx。",
"UpdaterDisabledWarningTitle": "更新已停用!", "UpdaterDisabledWarningTitle": "更新已停用!",
"GameListContextMenuOpenSdModsDirectory": "開 Atmosphere 模組資料夾", "GameListContextMenuOpenSdModsDirectory": " Atmosphere 模組資料夾",
"GameListContextMenuOpenSdModsDirectoryToolTip": "打開包含應用程式模組的額外 Atmosphere SD卡資料夾", "GameListContextMenuOpenSdModsDirectoryToolTip": "開啟此遊戲額外的SD記憶卡Atmosphere模組資料夾. 有用於包裝在真實主機上的模組.\n",
"ControllerSettingsRotate90": "順時針旋轉 90°", "ControllerSettingsRotate90": "順時針旋轉 90°",
"IconSize": "圖示尺寸", "IconSize": "圖示尺寸",
"IconSizeTooltip": "更遊戲圖示大小", "IconSizeTooltip": "遊戲圖示大小",
"MenuBarOptionsShowConsole": "顯示控制台", "MenuBarOptionsShowConsole": "顯示控制台",
"ShaderCachePurgeError": "清除渲染器快取時出錯: {0}: {1}", "ShaderCachePurgeError": "清除 {0} 著色器快取時出現錯誤: {1}",
"UserErrorNoKeys": "找不到金鑰", "UserErrorNoKeys": "找不到金鑰",
"UserErrorNoFirmware": "找不到韌體", "UserErrorNoFirmware": "找不到韌體",
"UserErrorFirmwareParsingFailed": "韌體解析錯誤", "UserErrorFirmwareParsingFailed": "韌體解析錯誤",
@ -517,7 +534,7 @@
"UserErrorApplicationNotFoundDescription": "Ryujinx 在選中路徑找不到有效的應用程式。", "UserErrorApplicationNotFoundDescription": "Ryujinx 在選中路徑找不到有效的應用程式。",
"UserErrorUnknownDescription": "發生未知錯誤!", "UserErrorUnknownDescription": "發生未知錯誤!",
"UserErrorUndefinedDescription": "發生了未定義錯誤!此類錯誤不應出現,請聯絡開發人員!", "UserErrorUndefinedDescription": "發生了未定義錯誤!此類錯誤不應出現,請聯絡開發人員!",
"OpenSetupGuideMessage": "開設定教學", "OpenSetupGuideMessage": "設定教學",
"NoUpdate": "沒有新版本", "NoUpdate": "沒有新版本",
"TitleUpdateVersionLabel": "版本 {0} - {1}", "TitleUpdateVersionLabel": "版本 {0} - {1}",
"RyujinxInfo": "Ryujinx - 訊息", "RyujinxInfo": "Ryujinx - 訊息",
@ -528,13 +545,13 @@
"SwkbdMinRangeCharacters": "必須為 {0}-{1} 個字長", "SwkbdMinRangeCharacters": "必須為 {0}-{1} 個字長",
"SoftwareKeyboard": "軟體鍵盤", "SoftwareKeyboard": "軟體鍵盤",
"SoftwareKeyboardModeNumbersOnly": "只接受數字", "SoftwareKeyboardModeNumbersOnly": "只接受數字",
"SoftwareKeyboardModeAlphabet": "只接受英文字母", "SoftwareKeyboardModeAlphabet": "不支援中日韓統一表意文字字元",
"SoftwareKeyboardModeASCII": "只接受 ASCII 符號", "SoftwareKeyboardModeASCII": "只接受 ASCII 符號",
"DialogControllerAppletMessagePlayerRange": "本遊戲需要 {0} 個玩家持有:\n\n類型{1}\n\n玩家{2}\n\n{3}請打開設定畫面,配置手把,或者關閉本視窗。", "DialogControllerAppletMessagePlayerRange": "本遊戲需要 {0} 個玩家持有:\n\n類型{1}\n\n玩家{2}\n\n{3}請打開設定畫面並配置控制器,或者關閉本視窗。",
"DialogControllerAppletMessage": "本遊戲需要剛好 {0} 個玩家持有:\n\n類型{1}\n\n玩家{2}\n\n{3}請打開設定畫面,配置手把,或者關閉本視窗。", "DialogControllerAppletMessage": "本遊戲需要剛好 {0} 個玩家持有:\n\n類型{1}\n\n玩家{2}\n\n{3}請打開設定畫面並配置控制器,或者關閉本視窗。",
"DialogControllerAppletDockModeSet": "現在處於主機模式,無法使用掌機操作方式\n\n", "DialogControllerAppletDockModeSet": "現在處於主機模式,無法使用掌機操作方式\n\n",
"UpdaterRenaming": "正在重新命名舊檔案...", "UpdaterRenaming": "正在重新命名舊檔案...",
"UpdaterRenameFailed": "更新過程中無法重新命名檔案: {0}", "UpdaterRenameFailed": "更新過程中無法重新命名檔案 {0}",
"UpdaterAddingFiles": "安裝更新中...", "UpdaterAddingFiles": "安裝更新中...",
"UpdaterExtracting": "正在提取更新...", "UpdaterExtracting": "正在提取更新...",
"UpdaterDownloading": "下載新版本中...", "UpdaterDownloading": "下載新版本中...",
@ -546,19 +563,19 @@
"ApiError": "API 錯誤", "ApiError": "API 錯誤",
"LoadingHeading": "正在啟動 {0}", "LoadingHeading": "正在啟動 {0}",
"CompilingPPTC": "編譯 PPTC 快取中", "CompilingPPTC": "編譯 PPTC 快取中",
"CompilingShaders": "編譯渲染器中", "CompilingShaders": "編譯著色器中",
"AllKeyboards": "所有鍵盤", "AllKeyboards": "所有鍵盤",
"OpenFileDialogTitle": "選擇支援的檔案格式", "OpenFileDialogTitle": "選擇支援的檔案格式",
"OpenFolderDialogTitle": "選擇一個包含已解包遊戲的資料夾", "OpenFolderDialogTitle": "選擇一個包含已解開封裝遊戲的資料夾\n",
"AllSupportedFormats": "全部支援的格式", "AllSupportedFormats": "全部支援的格式",
"RyujinxUpdater": "Ryujinx 更新程式", "RyujinxUpdater": "Ryujinx 更新程式",
"SettingsTabHotkeys": "快捷鍵", "SettingsTabHotkeys": "快捷鍵",
"SettingsTabHotkeysHotkeys": "鍵盤快捷鍵", "SettingsTabHotkeysHotkeys": "鍵盤快捷鍵",
"SettingsTabHotkeysToggleVsyncHotkey": "切換垂直同步", "SettingsTabHotkeysToggleVsyncHotkey": "切換垂直同步",
"SettingsTabHotkeysScreenshotHotkey": "截圖", "SettingsTabHotkeysScreenshotHotkey": "截圖",
"SettingsTabHotkeysShowUiHotkey": "隱藏使用者介面", "SettingsTabHotkeysShowUiHotkey": "隱藏使用者介面",
"SettingsTabHotkeysPauseHotkey": "暫停", "SettingsTabHotkeysPauseHotkey": "暫停",
"SettingsTabHotkeysToggleMuteHotkey": "靜音", "SettingsTabHotkeysToggleMuteHotkey": "靜音",
"ControllerMotionTitle": "體感操作設定", "ControllerMotionTitle": "體感操作設定",
"ControllerRumbleTitle": "震動設定", "ControllerRumbleTitle": "震動設定",
"SettingsSelectThemeFileDialogTitle": "選擇主題檔案", "SettingsSelectThemeFileDialogTitle": "選擇主題檔案",
@ -570,48 +587,70 @@
"Writable": "可寫入", "Writable": "可寫入",
"SelectDlcDialogTitle": "選擇 DLC 檔案", "SelectDlcDialogTitle": "選擇 DLC 檔案",
"SelectUpdateDialogTitle": "選擇更新檔", "SelectUpdateDialogTitle": "選擇更新檔",
"UserProfileWindowTitle": "管理使用者設定檔", "UserProfileWindowTitle": "管理使用者帳戶",
"CheatWindowTitle": "管理遊戲金手指", "CheatWindowTitle": "管理遊戲金手指",
"DlcWindowTitle": "管理遊戲 DLC", "DlcWindowTitle": "管理遊戲 DLC",
"UpdateWindowTitle": "管理遊戲更新", "UpdateWindowTitle": "管理遊戲更新",
"CheatWindowHeading": "金手指可用於 {0} [{1}]", "CheatWindowHeading": "金手指可用於 {0} [{1}]",
"BuildId": "版本編號:",
"DlcWindowHeading": "DLC 可用於 {0} [{1}]", "DlcWindowHeading": "DLC 可用於 {0} [{1}]",
"UserProfilesEditProfile": "編輯所選", "UserProfilesEditProfile": "編輯所選",
"Cancel": "取消", "Cancel": "取消",
"Save": "儲存", "Save": "儲存",
"Discard": "放棄更", "Discard": "放棄",
"UserProfilesSetProfileImage": "設定帳號頭貼", "UserProfilesSetProfileImage": "設定帳戶頭像",
"UserProfileEmptyNameError": "使用者名稱為必填", "UserProfileEmptyNameError": "使用者名稱為必填",
"UserProfileNoImageError": "必須設定帳號頭貼", "UserProfileNoImageError": "必須設定帳戶頭像",
"GameUpdateWindowHeading": "更新可用於 {0} [{1}]", "GameUpdateWindowHeading": "更新可用於 {0} [{1}]",
"SettingsTabHotkeysResScaleUpHotkey": "提高解析度:", "SettingsTabHotkeysResScaleUpHotkey": "提高解析度:",
"SettingsTabHotkeysResScaleDownHotkey": "降低解析度:", "SettingsTabHotkeysResScaleDownHotkey": "降低解析度:",
"UserProfilesName": "使用者名稱:", "UserProfilesName": "使用者名稱:",
"UserProfilesUserId": "使用者 ID", "UserProfilesUserId": "使用者 ID",
"SettingsTabGraphicsBackend": "圖形顯示後端", "SettingsTabGraphicsBackend": "圖像處理後台架構",
"SettingsTabGraphicsBackendTooltip": "要用來處理圖形相關內容的後端", "SettingsTabGraphicsBackendTooltip": "用來圖像處理的後台架構",
"SettingsEnableTextureRecompression": "開啟材質重新壓縮", "SettingsEnableTextureRecompression": "開啟材質重新壓縮",
"SettingsEnableTextureRecompressionTooltip": "壓縮某些材質以減少 VRAM 使用。\n\n推薦用於小於 4GiB VRAM 的 GPU。\n\n如果不確定請關閉本功能。", "SettingsEnableTextureRecompressionTooltip": "壓縮某些材質以減少 VRAM 使用。\n\n推薦用於小於 4GiB VRAM 的 GPU。\n\n如果不確定請關閉本功能。",
"SettingsTabGraphicsPreferredGpu": "首選 GPU", "SettingsTabGraphicsPreferredGpu": "優先選取的 GPU",
"SettingsTabGraphicsPreferredGpuTooltip": "選擇與 Vulkan 圖形顯示後端一起使用的 GPU。\n\n不影響 OpenGL 圖形後端所使用的 GPU。\n\n如果不確定請設定為標記為「dGPU」的 GPU。如果沒有請保持原設定。", "SettingsTabGraphicsPreferredGpuTooltip": "選擇支持運行Vulkan圖像處理架構的GPU.\n\n此設定不會影響GPU運行OpenGL.\n\n如果不確定, 請設定標籤為\"dGPU\"的GPU. 如果沒有, 請保留原始設定.",
"SettingsAppRequiredRestartMessage": "必須重啟 Ryujinx", "SettingsAppRequiredRestartMessage": "必須重啟 Ryujinx",
"SettingsGpuBackendRestartMessage": "圖形顯示後端或 GPU 相關設定已被修改。需要重新啟動才能套用。", "SettingsGpuBackendRestartMessage": "圖像處理後台架構或GPU相關設定已被修改。需要重新啟動才能套用。",
"SettingsGpuBackendRestartSubMessage": "您想要現在重新啟動本程式嗎?", "SettingsGpuBackendRestartSubMessage": "你確定要現在重新啟動嗎?",
"RyujinxUpdaterMessage": "您想要將 Ryujinx 更新到最新版本嗎?", "RyujinxUpdaterMessage": "你確定要將 Ryujinx 更新到最新版本嗎?",
"SettingsTabHotkeysVolumeUpHotkey": "增加音量:", "SettingsTabHotkeysVolumeUpHotkey": "增加音量:",
"SettingsTabHotkeysVolumeDownHotkey": "降低音量:", "SettingsTabHotkeysVolumeDownHotkey": "降低音量:",
"SettingsEnableMacroHLE": "啟用 Macro HLE", "SettingsEnableMacroHLE": "啟用 Macro HLE",
"SettingsEnableMacroHLETooltip": "GPU Macro 代碼的進階模擬。\n\n可以提升性能但可能會導致某些遊戲出現圖形顯示故障。\n\n如果不確定請關閉本功能。", "SettingsEnableMacroHLETooltip": "GPU 微代碼的高階模擬。\n\n可以提升效能但可能會導致某些遊戲出現圖形顯示故障。\n\n如果不確定請設定為\"開啟\"。",
"SettingsEnableColorSpacePassthrough": "色彩空間直通",
"SettingsEnableColorSpacePassthroughTooltip": "指揮Vulkan後端直通色彩資訊而不需指定色彩空間對於廣色域顯示的使用者這會造成較多抖色犧牲色彩正確性。",
"VolumeShort": "音量", "VolumeShort": "音量",
"UserProfilesManageSaves": "管理遊戲存檔", "UserProfilesManageSaves": "管理遊戲存檔",
"DeleteUserSave": "您想要刪除本遊戲的存檔嗎?", "DeleteUserSave": "你確定要刪除此遊戲的存檔嗎?",
"IrreversibleActionNote": "本動作將無法挽回。", "IrreversibleActionNote": "本動作將無法挽回。",
"SaveManagerHeading": "管理 {0} 的遊戲存檔", "SaveManagerHeading": "管理 {0} 的遊戲存檔",
"SaveManagerTitle": "遊戲存檔管理器", "SaveManagerTitle": "遊戲存檔管理器",
"Name": "名稱", "Name": "名稱",
"Size": "大小", "Size": "大小",
"Search": "搜尋", "Search": "搜尋",
"UserProfilesRecoverLostAccounts": "恢復遺失的帳", "UserProfilesRecoverLostAccounts": "恢復遺失的帳",
"Recover": "恢復", "Recover": "恢復",
"UserProfilesRecoverHeading": "在以下帳號找到了一些遊戲存檔" "UserProfilesRecoverHeading": "在以下帳戶找到了一些遊戲存檔",
"UserProfilesRecoverEmptyList": "沒有可恢復的使用者帳戶",
"GraphicsAATooltip": "在遊戲繪圖上套用抗鋸齒",
"GraphicsAALabel": "抗鋸齒:",
"GraphicsScalingFilterLabel": "縮放過濾器:",
"GraphicsScalingFilterTooltip": "啟用畫幀緩衝區縮放",
"GraphicsScalingFilterLevelLabel": "記錄檔等級",
"GraphicsScalingFilterLevelTooltip": "設定縮放過濾器的強度",
"SmaaLow": "低階 SMAA",
"SmaaMedium": "中階 SMAA",
"SmaaHigh": "高階 SMAA",
"SmaaUltra": "超高階 SMAA",
"UserEditorTitle": "編輯使用者",
"UserEditorTitleCreate": "建立使用者",
"SettingsTabNetworkInterface": "網路介面:",
"NetworkInterfaceTooltip": "用於具有 LAN 功能的網路介面",
"NetworkInterfaceDefault": "預設",
"PackagingShaders": "著色器封裝",
"AboutChangelogButton": "在 GitHub 查看更新日誌",
"AboutChangelogButtonTooltipMessage": "在瀏覽器中打開此Ryujinx版本的更新日誌。"
} }

View file

@ -1,65 +0,0 @@
<Styles xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StyleInclude Source="avares://Ryujinx.Ava/Assets/Styles/Styles.xaml" />
<Design.PreviewWith>
<Border Height="2000" Padding="20">
<StackPanel Spacing="5">
<TextBlock Text="Code Font Family" />
<Grid RowDefinitions="*,Auto">
<Menu Grid.Row="1" Width="100">
<MenuItem Header="File">
<MenuItem Header="Test 1" />
<MenuItem Header="Test 2" />
<MenuItem Header="Test 3">
<MenuItem.Icon>
<CheckBox Margin="0" IsChecked="{Binding Checkbox, Mode=TwoWay}" />
</MenuItem.Icon>
</MenuItem>
</MenuItem>
</Menu>
<StackPanel Orientation="Horizontal">
<Button
Name="btnAdd"
HorizontalAlignment="Right"
Content="Add" />
<Button
Name="btnRem"
HorizontalAlignment="Right"
Content="Add" />
<TextBox
Width="100"
VerticalAlignment="Center"
Text="Rrrrr"
UseFloatingWatermark="True"
Watermark="Hello" />
<CheckBox>Test Check</CheckBox>
</StackPanel>
</Grid>
</StackPanel>
</Border>
</Design.PreviewWith>
<Styles.Resources>
<SolidColorBrush x:Key="DataGridSelectionBackgroundBrush" Color="{DynamicResource DataGridSelectionColor}" />
<SolidColorBrush x:Key="ThemeAccentColorBrush" Color="{DynamicResource SystemAccentColor}" />
<SolidColorBrush x:Key="ThemeAccentBrush4" Color="{DynamicResource ThemeAccentColor4}" />
<Color x:Key="ControlFillColorSecondary">#008AA8</Color>
<SolidColorBrush x:Key="ControlFillColorSecondaryBrush" Color="{StaticResource ControlFillColorSecondary}" />
<StaticResource x:Key="ButtonBackgroundPointerOver" ResourceKey="ControlFillColorSecondaryBrush" />
<Color x:Key="SystemAccentColor">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorDark1">#FF99b000</Color>
<Color x:Key="SystemAccentColorDark2">#FF006d7d</Color>
<Color x:Key="SystemAccentColorDark3">#FF00525E</Color>
<Color x:Key="SystemAccentColorLight1">#FF00dbff</Color>
<Color x:Key="SystemAccentColorLight2">#FF19dfff</Color>
<Color x:Key="SystemAccentColorLight3">#FF33e3ff</Color>
<Color x:Key="DataGridSelectionColor">#FF00FABB</Color>
<Color x:Key="ThemeContentBackgroundColor">#FF2D2D2D</Color>
<Color x:Key="ThemeControlBorderColor">#FF505050</Color>
<Color x:Key="TextOnAccentFillColorPrimary">#FFFFFFFF</Color>
<Color x:Key="SystemChromeWhiteColor">#FFFFFFFF</Color>
<Color x:Key="ThemeForegroundColor">#FFFFFFFF</Color>
<Color x:Key="MenuFlyoutPresenterBorderColor">#3D3D3D</Color>
<Color x:Key="AppListBackgroundColor">#0FFFFFFF</Color>
<Color x:Key="AppListHoverBackgroundColor">#1EFFFFFF</Color>
<Color x:Key="SecondaryTextColor">#A0FFFFFF</Color>
</Styles.Resources>
</Styles>

View file

@ -1,57 +0,0 @@
<Styles xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StyleInclude Source="avares://Ryujinx.Ava/Assets/Styles/Styles.xaml" />
<Design.PreviewWith>
<Border Height="2000" Padding="20">
<StackPanel Spacing="5">
<TextBlock Text="Code Font Family" />
<Grid RowDefinitions="*,Auto">
<Menu Grid.Row="1" Width="100">
<MenuItem Header="File">
<MenuItem Header="Test 1" />
<MenuItem Header="Test 2" />
<MenuItem Header="Test 3">
<MenuItem.Icon>
<CheckBox Margin="0" IsChecked="{Binding Checkbox, Mode=TwoWay}" />
</MenuItem.Icon>
</MenuItem>
</MenuItem>
</Menu>
<StackPanel Orientation="Horizontal">
<Button
Name="btnAdd"
HorizontalAlignment="Right"
Content="Add" />
<Button
Name="btnRem"
HorizontalAlignment="Right"
Content="Add" />
<TextBox
Width="100"
VerticalAlignment="Center"
Text="Rrrrr"
UseFloatingWatermark="True"
Watermark="Hello" />
<CheckBox>Test Check</CheckBox>
</StackPanel>
</Grid>
</StackPanel>
</Border>
</Design.PreviewWith>
<Styles.Resources>
<SolidColorBrush x:Key="DataGridSelectionBackgroundBrush" Color="{DynamicResource DataGridSelectionColor}" />
<SolidColorBrush x:Key="ThemeAccentColorBrush" Color="{DynamicResource SystemAccentColor}" />
<SolidColorBrush x:Key="ThemeAccentBrush4" Color="{DynamicResource ThemeAccentColor4}" />
<Color x:Key="SystemAccentColor">#FF00C3E3</Color>
<Color x:Key="ThemeAccentColor4">#FFe8e8e8</Color>
<Color x:Key="DataGridSelectionColor">#FF00FABB</Color>
<Color x:Key="ThemeContentBackgroundColor">#FFF0F0F0</Color>
<Color x:Key="ThemeControlBorderColor">#FFd6d6d6</Color>
<Color x:Key="TextOnAccentFillColorPrimary">#FFFFFFFF</Color>
<Color x:Key="SystemChromeWhiteColor">#FFFFFFFF</Color>
<Color x:Key="ThemeForegroundColor">#FF000000</Color>
<Color x:Key="MenuFlyoutPresenterBorderColor">#C1C1C1</Color>
<Color x:Key="AppListBackgroundColor">#b3ffffff</Color>
<Color x:Key="AppListHoverBackgroundColor">#80cccccc</Color>
<Color x:Key="SecondaryTextColor">#A0000000</Color>
</Styles.Resources>
</Styles>

View file

@ -3,17 +3,20 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"> xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia">
<Design.PreviewWith> <Design.PreviewWith>
<Border Height="2000" Padding="20"> <Border Height="2000"
Padding="20">
<StackPanel Spacing="5"> <StackPanel Spacing="5">
<TextBlock Text="Code Font Family" /> <TextBlock Text="Code Font Family" />
<Grid RowDefinitions="*,Auto"> <Grid RowDefinitions="*,Auto">
<Menu Grid.Row="1" Width="100"> <Menu Grid.Row="1"
Width="100">
<MenuItem Header="File"> <MenuItem Header="File">
<MenuItem Header="Test 1" /> <MenuItem Header="Test 1" />
<MenuItem Header="Test 2" /> <MenuItem Header="Test 2" />
<MenuItem Header="Test 3"> <MenuItem Header="Test 3">
<MenuItem.Icon> <MenuItem.Icon>
<CheckBox Margin="0" IsChecked="{Binding Checkbox, Mode=TwoWay}" /> <CheckBox Margin="0"
IsChecked="{ReflectionBinding Checkbox, Mode=TwoWay}" />
</MenuItem.Icon> </MenuItem.Icon>
</MenuItem> </MenuItem>
</MenuItem> </MenuItem>
@ -42,57 +45,80 @@
</Border> </Border>
</Design.PreviewWith> </Design.PreviewWith>
<Style Selector="Border.small"> <Style Selector="Border.small">
<Setter Property="Width" Value="100" /> <Setter Property="Width"
Value="100" />
</Style> </Style>
<Style Selector="Border.normal"> <Style Selector="Border.normal">
<Setter Property="Width" Value="130" /> <Setter Property="Width"
Value="130" />
</Style> </Style>
<Style Selector="Border.large"> <Style Selector="Border.large">
<Setter Property="Width" Value="160" /> <Setter Property="Width"
Value="160" />
</Style> </Style>
<Style Selector="Border.huge"> <Style Selector="Border.huge">
<Setter Property="Width" Value="200" /> <Setter Property="Width"
Value="200" />
</Style> </Style>
<Style Selector="Border.settings"> <Style Selector="Border.settings">
<Setter Property="Background" Value="{DynamicResource ThemeDarkColor}" /> <Setter Property="Background"
<Setter Property="BorderBrush" Value="{DynamicResource MenuFlyoutPresenterBorderColor}" /> Value="{DynamicResource ThemeDarkColor}" />
<Setter Property="BorderThickness" Value="1" /> <Setter Property="BorderBrush"
<Setter Property="CornerRadius" Value="5" /> Value="{DynamicResource MenuFlyoutPresenterBorderColor}" />
<Setter Property="BorderThickness"
Value="1" />
<Setter Property="CornerRadius"
Value="5" />
</Style> </Style>
<Style Selector="Image.small"> <Style Selector="Image.small">
<Setter Property="Width" Value="50" /> <Setter Property="Width"
Value="50" />
</Style> </Style>
<Style Selector="Image.normal"> <Style Selector="Image.normal">
<Setter Property="Width" Value="80" /> <Setter Property="Width"
Value="80" />
</Style> </Style>
<Style Selector="Image.large"> <Style Selector="Image.large">
<Setter Property="Width" Value="100" /> <Setter Property="Width"
Value="100" />
</Style> </Style>
<Style Selector="Image.huge"> <Style Selector="Image.huge">
<Setter Property="Width" Value="120" /> <Setter Property="Width"
Value="120" />
</Style> </Style>
<Style Selector="#TitleBarHost &gt; Image"> <Style Selector="#TitleBarHost &gt; Image">
<Setter Property="Margin" Value="10" /> <Setter Property="Margin"
Value="10" />
</Style> </Style>
<Style Selector="#TitleBarHost &gt; Label"> <Style Selector="#TitleBarHost &gt; Label">
<Setter Property="Margin" Value="5" /> <Setter Property="Margin"
<Setter Property="FontSize" Value="14" /> Value="5" />
<Setter Property="FontSize"
Value="14" />
</Style> </Style>
<Style Selector="Button.SystemCaption"> <Style Selector="Button.SystemCaption">
<Setter Property="MinWidth" Value="10" /> <Setter Property="MinWidth"
Value="10" />
</Style> </Style>
<Style Selector="DataGridColumnHeader"> <Style Selector="DataGridColumnHeader">
<Setter Property="Foreground" Value="{DynamicResource ThemeForegroundBrush}" /> <Setter Property="Foreground"
<Setter Property="HorizontalContentAlignment" Value="Center" /> Value="{DynamicResource ThemeForegroundBrush}" />
<Setter Property="BorderThickness" Value="1" /> <Setter Property="HorizontalContentAlignment"
<Setter Property="VerticalContentAlignment" Value="Center" /> Value="Center" />
<Setter Property="Background" Value="{DynamicResource ThemeControlBorderColor}" /> <Setter Property="BorderThickness"
<Setter Property="SeparatorBrush" Value="{DynamicResource ThemeControlBorderColor}" /> Value="1" />
<Setter Property="Padding" Value="5" /> <Setter Property="VerticalContentAlignment"
<Setter Property="Background" Value="{DynamicResource ThemeContentBackgroundColor}" /> Value="Center" />
<Setter Property="SeparatorBrush"
Value="{DynamicResource ThemeControlBorderColor}" />
<Setter Property="Padding"
Value="5" />
<Setter Property="Background"
Value="{DynamicResource ThemeContentBackgroundColor}" />
<Setter Property="Template"> <Setter Property="Template">
<ControlTemplate> <ControlTemplate>
<Grid Background="{TemplateBinding Background}" ColumnDefinitions="*,Auto"> <Grid Background="{TemplateBinding Background}"
ColumnDefinitions="*,Auto">
<Grid <Grid
Margin="{TemplateBinding Padding}" Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
@ -122,193 +148,240 @@
</Setter> </Setter>
</Style> </Style>
<Style Selector="DataGrid"> <Style Selector="DataGrid">
<Setter Property="RowBackground" Value="{DynamicResource ThemeAccentBrush4}" /> <Setter Property="RowBackground"
<Setter Property="AlternatingRowBackground" Value="#00FFFFFF" /> Value="{DynamicResource ThemeAccentBrush4}" />
<Setter Property="Background" Value="{DynamicResource ThemeBackgroundBrush}" /> <Setter Property="Background"
<Setter Property="BorderBrush" Value="{DynamicResource ThemeBorderLowColor}" /> Value="{DynamicResource ThemeBackgroundBrush}" />
<Setter Property="BorderThickness" Value="{DynamicResource ThemeBorderThickness}" /> <Setter Property="BorderBrush"
Value="{DynamicResource ThemeBorderLowColor}" />
<Setter Property="BorderThickness"
Value="{DynamicResource ThemeBorderThickness}" />
</Style> </Style>
<Style Selector="DataGridRow:selected:focus /template/ Rectangle#BackgroundRectangle"> <Style Selector="DataGridRow:selected:focus /template/ Rectangle#BackgroundRectangle">
<Setter Property="Fill" Value="{DynamicResource SystemAccentColor}" /> <Setter Property="Fill"
<Setter Property="Opacity" Value="{DynamicResource DataGridRowSelectedBackgroundOpacity}" /> Value="{DynamicResource SystemAccentColor}" />
<Setter Property="Opacity"
Value="{DynamicResource DataGridRowSelectedBackgroundOpacity}" />
</Style> </Style>
<Style Selector="DataGridRow:pointerover /template/ Rectangle#BackgroundRectangle"> <Style Selector="DataGridRow:pointerover /template/ Rectangle#BackgroundRectangle">
<Setter Property="Fill" Value="{DynamicResource SystemListLowColor}" /> <Setter Property="Fill"
Value="{DynamicResource SystemListLowColor}" />
</Style> </Style>
<Style Selector="DataGridRow:selected /template/ Rectangle#BackgroundRectangle"> <Style Selector="DataGridRow:selected /template/ Rectangle#BackgroundRectangle">
<Setter Property="Fill" Value="{DynamicResource SystemAccentColor}" /> <Setter Property="Fill"
<Setter Property="Opacity" Value="{DynamicResource DataGridRowSelectedUnfocusedBackgroundOpacity}" /> Value="{DynamicResource SystemAccentColor}" />
<Setter Property="Opacity"
Value="{DynamicResource DataGridRowSelectedUnfocusedBackgroundOpacity}" />
</Style> </Style>
<Style Selector="DataGridRow:selected:pointerover /template/ Rectangle#BackgroundRectangle"> <Style Selector="DataGridRow:selected:pointerover /template/ Rectangle#BackgroundRectangle">
<Setter Property="Fill" Value="{DynamicResource SystemAccentColor}" /> <Setter Property="Fill"
<Setter Property="Opacity" Value="{DynamicResource DataGridRowSelectedHoveredUnfocusedBackgroundOpacity}" /> Value="{DynamicResource SystemAccentColor}" />
<Setter Property="Opacity"
Value="{DynamicResource DataGridRowSelectedHoveredUnfocusedBackgroundOpacity}" />
</Style> </Style>
<Style Selector="DataGridRow:selected:pointerover:focus /template/ Rectangle#BackgroundRectangle"> <Style Selector="DataGridRow:selected:pointerover:focus /template/ Rectangle#BackgroundRectangle">
<Setter Property="Fill" Value="{DynamicResource SystemAccentColor}" /> <Setter Property="Fill"
<Setter Property="Opacity" Value="{DynamicResource DataGridRowSelectedHoveredBackgroundOpacity}" /> Value="{DynamicResource SystemAccentColor}" />
<Setter Property="Opacity"
Value="{DynamicResource DataGridRowSelectedHoveredBackgroundOpacity}" />
</Style> </Style>
<Style Selector="DataGridCell"> <Style Selector="DataGridCell">
<Setter Property="HorizontalAlignment" Value="Center" /> <Setter Property="HorizontalAlignment"
<Setter Property="HorizontalContentAlignment" Value="Center" /> Value="Center" />
<Setter Property="HorizontalContentAlignment"
Value="Center" />
</Style> </Style>
<Style Selector="DataGridCell.Left"> <Style Selector="DataGridCell.Left">
<Setter Property="HorizontalAlignment" Value="Left" /> <Setter Property="HorizontalAlignment"
Value="Left" />
</Style> </Style>
<Style Selector="CheckBox"> <Style Selector="CheckBox">
<Setter Property="BorderThickness" Value="1" /> <Setter Property="BorderThickness"
Value="1" />
</Style> </Style>
<Style Selector="MenuItem"> <Style Selector="MenuItem">
<Setter Property="Height" Value="{DynamicResource MenuItemHeight}" /> <Setter Property="Height"
<Setter Property="Padding" Value="{DynamicResource MenuItemPadding}" /> Value="{DynamicResource MenuItemHeight}" />
<Setter Property="FontSize" Value="12" /> <Setter Property="Padding"
Value="{DynamicResource MenuItemPadding}" />
<Setter Property="FontSize"
Value="12" />
</Style> </Style>
<Style Selector="MenuItem:selected /template/ Border#root"> <Style Selector="MenuItem:selected /template/ Border#root">
<Setter Property="Background" Value="{DynamicResource ThemeControlBorderColor}" /> <Setter Property="Background"
<Setter Property="BorderBrush" Value="{DynamicResource ThemeControlBorderColor}" /> Value="{DynamicResource ThemeControlBorderColor}" />
<Setter Property="BorderBrush"
Value="{DynamicResource ThemeControlBorderColor}" />
</Style> </Style>
<Style Selector="TabItem > ScrollViewer"> <Style Selector="TabItem > ScrollViewer">
<Setter Property="Background" Value="{DynamicResource ThemeBackgroundColor}" /> <Setter Property="Background"
<Setter Property="Margin" Value="0,-5,0,0" /> Value="{DynamicResource ThemeBackgroundColor}" />
<Setter Property="Margin"
Value="0,-5,0,0" />
</Style> </Style>
<Style Selector="TabItem > ScrollViewer > Border"> <Style Selector="TabItem > ScrollViewer > Border">
<Setter Property="BorderThickness" Value="0,1,0,0" /> <Setter Property="BorderThickness"
<Setter Property="Background" Value="{DynamicResource ThemeBackgroundColor}" /> Value="0,1,0,0" />
<Setter Property="BorderBrush" Value="{DynamicResource HighlightBrush}" /> <Setter Property="Background"
Value="{DynamicResource ThemeBackgroundColor}" />
<Setter Property="BorderBrush"
Value="{DynamicResource HighlightBrush}" />
</Style> </Style>
<Style Selector="Button"> <Style Selector="Button">
<Setter Property="MinWidth" Value="80" /> <Setter Property="MinWidth"
Value="80" />
</Style> </Style>
<Style Selector="ProgressBar /template/ Border#ProgressBarTrack"> <Style Selector="ProgressBar /template/ Border#ProgressBarTrack">
<Setter Property="IsVisible" Value="False" /> <Setter Property="IsVisible"
Value="False" />
</Style> </Style>
<Style Selector="ToggleButton"> <Style Selector="ToggleButton">
<Setter Property="Padding" Value="0,-5,0,0" /> <Setter Property="Padding"
Value="0,-5,0,0" />
</Style> </Style>
<Style Selector="TabItem"> <Style Selector="TabItem">
<Setter Property="FontSize" Value="14" /> <Setter Property="FontSize"
<Setter Property="BorderThickness" Value="0,0,1,0" /> Value="14" />
<Setter Property="BorderBrush" Value="{DynamicResource ThemeButtonForegroundColor}" /> <Setter Property="BorderThickness"
<Setter Property="Background" Value="{DynamicResource HighlightColor}" /> Value="0,0,1,0" />
<Setter Property="BorderBrush"
Value="{DynamicResource ThemeButtonForegroundColor}" />
<Setter Property="Background"
Value="{DynamicResource SystemAccentColorLight2}" />
</Style> </Style>
<Style Selector="TabItem:pointerover"> <Style Selector="TabItem:pointerover">
<Setter Property="Foreground" Value="{DynamicResource ThemeButtonForegroundColor}" /> <Setter Property="Foreground"
Value="{DynamicResource ThemeButtonForegroundColor}" />
</Style> </Style>
<Style Selector="TabItem:selected"> <Style Selector="TabItem:selected">
<Setter Property="Background" Value="{DynamicResource HighlightColor}" /> <Setter Property="Background"
<Setter Property="Foreground" Value="{DynamicResource ThemeBackgroundColor}" /> Value="{DynamicResource SystemAccentColorLight2}" />
<Setter Property="Foreground"
Value="{DynamicResource ThemeBackgroundColor}" />
</Style> </Style>
<Style Selector="TextBlock"> <Style Selector="TextBlock">
<Setter Property="Margin" Value="{DynamicResource TextMargin}" /> <Setter Property="Margin"
<Setter Property="FontSize" Value="{DynamicResource FontSize}" /> Value="{DynamicResource TextMargin}" />
<Setter Property="VerticalAlignment" Value="Center" /> <Setter Property="FontSize"
<Setter Property="TextWrapping" Value="WrapWithOverflow" /> Value="{DynamicResource FontSize}" />
<Setter Property="VerticalAlignment"
Value="Center" />
<Setter Property="TextWrapping"
Value="WrapWithOverflow" />
</Style> </Style>
<Style Selector="TextBlock.h1"> <Style Selector="TextBlock.h1">
<Setter Property="Margin" Value="{DynamicResource TextMargin}" /> <Setter Property="Margin"
<Setter Property="VerticalAlignment" Value="Center" /> Value="{DynamicResource TextMargin}" />
<Setter Property="FontWeight" Value="Bold" /> <Setter Property="VerticalAlignment"
<Setter Property="FontSize" Value="16" /> Value="Center" />
<Setter Property="TextWrapping" Value="WrapWithOverflow" /> <Setter Property="FontWeight"
Value="Bold" />
<Setter Property="FontSize"
Value="16" />
<Setter Property="TextWrapping"
Value="WrapWithOverflow" />
</Style> </Style>
<Style Selector="Separator"> <Style Selector="Separator">
<Setter Property="Background" Value="{DynamicResource ThemeControlBorderColor}" /> <Setter Property="Background"
<Setter Property="Foreground" Value="{DynamicResource ThemeControlBorderColor}" /> Value="{DynamicResource ThemeControlBorderColor}" />
<Setter Property="MinHeight" Value="1" /> <Setter Property="Foreground"
Value="{DynamicResource ThemeControlBorderColor}" />
<Setter Property="MinHeight"
Value="1" />
</Style> </Style>
<Style Selector=":is(Button).DateTimeFlyoutButtonStyle"> <Style Selector=":is(Button).DateTimeFlyoutButtonStyle">
<Setter Property="Background" Value="{DynamicResource HighlightColor}" /> <Setter Property="Background"
<Setter Property="Foreground" Value="{DynamicResource ThemeBackgroundColor}" /> Value="{DynamicResource SystemAccentColorLight2}" />
<Setter Property="Foreground"
Value="{DynamicResource ThemeBackgroundColor}" />
</Style> </Style>
<Style Selector="DatePickerPresenter"> <Style Selector="DatePickerPresenter">
<Setter Property="BorderThickness" Value="1" /> <Setter Property="BorderThickness"
<Setter Property="BorderBrush" Value="{DynamicResource ThemeButtonForegroundColor}" /> Value="1" />
<Setter Property="BorderBrush"
Value="{DynamicResource ThemeButtonForegroundColor}" />
</Style> </Style>
<Style Selector="DataGridCell"> <Style Selector="DataGridCell">
<Setter Property="FontSize" Value="14" /> <Setter Property="FontSize"
Value="14" />
</Style> </Style>
<Style Selector="CheckBox TextBlock"> <Style Selector="CheckBox TextBlock">
<Setter Property="Margin" Value="0,5,0,0" /> <Setter Property="Margin"
Value="0,5,0,0" />
</Style> </Style>
<Style Selector="ContextMenu"> <Style Selector="ContextMenu">
<Setter Property="BorderBrush" Value="{DynamicResource MenuFlyoutPresenterBorderBrush}" /> <Setter Property="BorderBrush"
<Setter Property="BorderThickness" Value="{DynamicResource MenuFlyoutPresenterBorderThemeThickness}" /> Value="{DynamicResource MenuFlyoutPresenterBorderBrush}" />
<Setter Property="BorderThickness"
Value="{DynamicResource MenuFlyoutPresenterBorderThemeThickness}" />
</Style> </Style>
<Style Selector="TextBox"> <Style Selector="TextBox">
<Setter Property="VerticalContentAlignment" Value="Center" /> <Setter Property="VerticalContentAlignment"
Value="Center" />
</Style> </Style>
<Style Selector="TextBox.NumberBoxTextBoxStyle"> <Style Selector="TextBox.NumberBoxTextBoxStyle">
<Setter Property="Foreground" Value="{DynamicResource ThemeForegroundColor}" /> <Setter Property="Foreground"
Value="{DynamicResource ThemeForegroundColor}" />
</Style> </Style>
<Style Selector="ListBox ListBoxItem"> <Style Selector="ListBox ListBoxItem">
<Setter Property="Padding" Value="0" /> <Setter Property="Padding"
<Setter Property="Margin" Value="0" /> Value="0" />
<Setter Property="CornerRadius" Value="5" /> <Setter Property="Margin"
<Setter Property="Background" Value="{DynamicResource AppListBackgroundColor}" /> Value="0" />
<Setter Property="BorderThickness" Value="2"/> <Setter Property="CornerRadius"
<Style.Animations> Value="5" />
<Animation Duration="0:0:0.7"> <Setter Property="Background"
<KeyFrame Cue="0%"> Value="{DynamicResource AppListBackgroundColor}" />
<Setter Property="MaxHeight" Value="0" /> <Setter Property="BorderThickness"
<Setter Property="Opacity" Value="0.0" /> Value="2"/>
</KeyFrame>
<KeyFrame Cue="50%">
<Setter Property="MaxHeight" Value="1000" />
<Setter Property="Opacity" Value="0.3" />
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="MaxHeight" Value="1000" />
<Setter Property="Opacity" Value="1.0" />
</KeyFrame>
</Animation>
</Style.Animations>
</Style> </Style>
<Style Selector="ListBox ListBoxItem:selected /template/ ContentPresenter"> <Style Selector="ListBox ListBoxItem:selected /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource AppListBackgroundColor}" /> <Setter Property="Background"
Value="{DynamicResource AppListBackgroundColor}" />
</Style>
<Style Selector="ListBox">
<Setter Property="Background"
Value="{DynamicResource ThemeContentBackgroundColor}" />
</Style>
<Style Selector="FlyoutPresenter, ContextMenu, MenuFlyoutPresenter">
<Setter Property="BorderBrush"
Value="{DynamicResource MenuFlyoutPresenterBorderColor}" />
</Style> </Style>
<Style Selector="ListBox ListBoxItem:pointerover /template/ ContentPresenter"> <Style Selector="ListBox ListBoxItem:pointerover /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource AppListHoverBackgroundColor}" /> <Setter Property="Background"
Value="{DynamicResource AppListHoverBackgroundColor}" />
</Style> </Style>
<Styles.Resources> <Styles.Resources>
<SolidColorBrush x:Key="ThemeAccentColorBrush" Color="{DynamicResource SystemAccentColor}" /> <SolidColorBrush x:Key="ThemeAccentColorBrush"
<StaticResource x:Key="ListViewItemBackgroundSelected" ResourceKey="ThemeAccentColorBrush" /> Color="{DynamicResource SystemAccentColor}" />
<StaticResource x:Key="ListViewItemBackgroundPressed" ResourceKey="SystemAccentColorDark1" /> <StaticResource x:Key="ListViewItemBackgroundSelected"
<StaticResource x:Key="ListViewItemBackgroundPointerOver" ResourceKey="SystemAccentColorDark2" /> ResourceKey="ThemeAccentColorBrush" />
<StaticResource x:Key="ListViewItemBackgroundSelectedPressed" ResourceKey="ThemeAccentColorBrush" /> <StaticResource x:Key="ListViewItemBackgroundPressed"
<StaticResource x:Key="ListViewItemBackgroundSelectedPointerOver" ResourceKey="SystemAccentColorDark2" /> ResourceKey="SystemAccentColorDark1" />
<StaticResource x:Key="ListViewItemBackgroundPointerOver"
ResourceKey="SystemAccentColorDark2" />
<StaticResource x:Key="ListViewItemBackgroundSelectedPressed"
ResourceKey="ThemeAccentColorBrush" />
<StaticResource x:Key="ListViewItemBackgroundSelectedPointerOver"
ResourceKey="SystemAccentColorDark2" />
<SolidColorBrush <SolidColorBrush
x:Key="DataGridGridLinesBrush" x:Key="DataGridGridLinesBrush"
Opacity="0.4" Opacity="0.4"
Color="{DynamicResource SystemBaseMediumLowColor}" /> Color="{DynamicResource SystemBaseMediumLowColor}" />
<SolidColorBrush x:Key="DataGridSelectionBackgroundBrush" Color="{DynamicResource DataGridSelectionColor}" /> <SolidColorBrush x:Key="DataGridSelectionBackgroundBrush"
<SolidColorBrush x:Key="MenuFlyoutPresenterBorderBrush" Color="{DynamicResource MenuFlyoutPresenterBorderColor}" /> Color="{DynamicResource DataGridSelectionColor}" />
<SolidColorBrush x:Key="FlyoutBorderThemeBrush" Color="{DynamicResource MenuFlyoutPresenterBorderColor}" /> <SolidColorBrush x:Key="SplitButtonBackgroundChecked"
<SolidColorBrush x:Key="ListBoxBackground" Color="{DynamicResource ThemeContentBackgroundColor}" /> Color="#00E81123" />
<SolidColorBrush x:Key="ThemeForegroundBrush" Color="{DynamicResource ThemeForegroundColor}" /> <SolidColorBrush x:Key="SplitButtonBackgroundCheckedPointerOver"
<SolidColorBrush x:Key="ThemeAccentBrush4" Color="{DynamicResource ThemeAccentColor4}" /> Color="#00E81123" />
<SolidColorBrush x:Key="SplitButtonBackgroundChecked" Color="#00E81123" /> <SolidColorBrush x:Key="SplitButtonBackgroundCheckedPressed"
<SolidColorBrush x:Key="SplitButtonBackgroundCheckedPointerOver" Color="#00E81123" /> Color="#00E81123" />
<SolidColorBrush x:Key="SplitButtonBackgroundCheckedPressed" Color="#00E81123" /> <SolidColorBrush x:Key="SplitButtonBackgroundCheckedDisabled"
<SolidColorBrush x:Key="SplitButtonBackgroundCheckedDisabled" Color="#00E81123" /> Color="#00E81123" />
<Thickness x:Key="PageMargin">40 0 40 0</Thickness> <Thickness x:Key="PageMargin">40 0 40 0</Thickness>
<Thickness x:Key="Margin">0 5 0 5</Thickness> <Thickness x:Key="Margin">0 5 0 5</Thickness>
<Thickness x:Key="MenuItemPadding">5 0 5 0</Thickness> <Thickness x:Key="MenuItemPadding">5 0 5 0</Thickness>
<Color x:Key="MenuFlyoutPresenterBorderColor">#00000000</Color>
<Color x:Key="SystemAccentColor">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorDark1">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorDark2">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorDark3">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorLight1">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorLight2">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorLight3">#FF00C3E3</Color>
<Color x:Key="DataGridSelectionColor">#FF00FABB</Color>
<Color x:Key="ThemeContentBackgroundColor">#FF2D2D2D</Color>
<Color x:Key="ThemeControlBorderColor">#FF505050</Color>
<Color x:Key="VsyncEnabled">#FF2EEAC9</Color>
<Color x:Key="VsyncDisabled">#FFFF4554</Color>
<Color x:Key="AppListBackgroundColor">#0FFFFFFF</Color>
<Color x:Key="AppListHoverBackgroundColor">#1EFFFFFF</Color>
<Color x:Key="SecondaryTextColor">#A0FFFFFF</Color>
<x:Double x:Key="ScrollBarThickness">15</x:Double> <x:Double x:Key="ScrollBarThickness">15</x:Double>
<x:Double x:Key="FontSizeSmall">8</x:Double> <x:Double x:Key="FontSizeSmall">8</x:Double>
<x:Double x:Key="FontSizeNormal">10</x:Double> <x:Double x:Key="FontSizeNormal">10</x:Double>

View file

@ -0,0 +1,85 @@
<ResourceDictionary xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Default">
<SolidColorBrush x:Key="DataGridSelectionBackgroundBrush"
Color="{DynamicResource DataGridSelectionColor}" />
<SolidColorBrush x:Key="ThemeAccentColorBrush"
Color="{DynamicResource SystemAccentColor}" />
<SolidColorBrush x:Key="ThemeAccentBrush4"
Color="{DynamicResource ThemeAccentColor4}" />
<Color x:Key="SystemAccentColor">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorDark1">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorDark2">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorDark3">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorLight1">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorLight2">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorLight3">#FF00C3E3</Color>
<Color x:Key="ThemeAccentColor4">#FFe8e8e8</Color>
<Color x:Key="DataGridSelectionColor">#FF00FABB</Color>
<Color x:Key="ThemeContentBackgroundColor">#FFF0F0F0</Color>
<Color x:Key="ThemeControlBorderColor">#FFd6d6d6</Color>
<Color x:Key="TextOnAccentFillColorPrimary">#FFFFFFFF</Color>
<Color x:Key="SystemChromeWhiteColor">#FFFFFFFF</Color>
<Color x:Key="ThemeForegroundColor">#FF000000</Color>
<Color x:Key="MenuFlyoutPresenterBorderColor">#C1C1C1</Color>
<Color x:Key="AppListBackgroundColor">#b3ffffff</Color>
<Color x:Key="AppListHoverBackgroundColor">#80cccccc</Color>
<Color x:Key="SecondaryTextColor">#A0000000</Color>
<Color x:Key="VsyncEnabled">#FF2EEAC9</Color>
<Color x:Key="VsyncDisabled">#FFFF4554</Color>
</ResourceDictionary>
<ResourceDictionary x:Key="Light">
<SolidColorBrush x:Key="DataGridSelectionBackgroundBrush"
Color="{DynamicResource DataGridSelectionColor}" />
<SolidColorBrush x:Key="ThemeAccentColorBrush"
Color="{DynamicResource SystemAccentColor}" />
<SolidColorBrush x:Key="ThemeAccentBrush4"
Color="{DynamicResource ThemeAccentColor4}" />
<Color x:Key="SystemAccentColor">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorDark1">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorDark2">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorDark3">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorLight1">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorLight2">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorLight3">#FF00C3E3</Color>
<Color x:Key="ThemeAccentColor4">#FFe8e8e8</Color>
<Color x:Key="DataGridSelectionColor">#FF00FABB</Color>
<Color x:Key="ThemeContentBackgroundColor">#FFF0F0F0</Color>
<Color x:Key="ThemeControlBorderColor">#FFd6d6d6</Color>
<Color x:Key="TextOnAccentFillColorPrimary">#FFFFFFFF</Color>
<Color x:Key="SystemChromeWhiteColor">#FFFFFFFF</Color>
<Color x:Key="ThemeForegroundColor">#FF000000</Color>
<Color x:Key="MenuFlyoutPresenterBorderColor">#C1C1C1</Color>
<Color x:Key="AppListBackgroundColor">#b3ffffff</Color>
<Color x:Key="AppListHoverBackgroundColor">#80cccccc</Color>
<Color x:Key="SecondaryTextColor">#A0000000</Color>
</ResourceDictionary>
<ResourceDictionary x:Key="Dark">
<SolidColorBrush x:Key="DataGridSelectionBackgroundBrush"
Color="{DynamicResource DataGridSelectionColor}" />
<SolidColorBrush x:Key="ThemeAccentColorBrush"
Color="{DynamicResource SystemAccentColor}" />
<SolidColorBrush x:Key="ThemeAccentBrush4"
Color="{DynamicResource ThemeAccentColor4}" />
<Color x:Key="ControlFillColorSecondary">#008AA8</Color>
<Color x:Key="SystemAccentColor">#FF00C3E3</Color>
<Color x:Key="SystemAccentColorDark1">#FF99b000</Color>
<Color x:Key="SystemAccentColorDark2">#FF006d7d</Color>
<Color x:Key="SystemAccentColorDark3">#FF00525E</Color>
<Color x:Key="SystemAccentColorLight1">#FF00dbff</Color>
<Color x:Key="SystemAccentColorLight2">#FF19dfff</Color>
<Color x:Key="SystemAccentColorLight3">#FF33e3ff</Color>
<Color x:Key="DataGridSelectionColor">#FF00FABB</Color>
<Color x:Key="ThemeContentBackgroundColor">#FF2D2D2D</Color>
<Color x:Key="ThemeControlBorderColor">#FF505050</Color>
<Color x:Key="TextOnAccentFillColorPrimary">#FFFFFFFF</Color>
<Color x:Key="SystemChromeWhiteColor">#FFFFFFFF</Color>
<Color x:Key="ThemeForegroundColor">#FFFFFFFF</Color>
<Color x:Key="MenuFlyoutPresenterBorderColor">#3D3D3D</Color>
<Color x:Key="AppListBackgroundColor">#0FFFFFFF</Color>
<Color x:Key="AppListHoverBackgroundColor">#1EFFFFFF</Color>
<Color x:Key="SecondaryTextColor">#A0FFFFFF</Color>
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>

View file

@ -1,5 +1,5 @@
using Avalonia.Controls;
using Avalonia.Controls.Notifications; using Avalonia.Controls.Notifications;
using Avalonia.Platform.Storage;
using Avalonia.Threading; using Avalonia.Threading;
using LibHac; using LibHac;
using LibHac.Account; using LibHac.Account;
@ -15,7 +15,6 @@ using LibHac.Tools.FsSystem.NcaUtils;
using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Controls; using Ryujinx.Ava.UI.Controls;
using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Windows;
using Ryujinx.Common.Logging; using Ryujinx.Common.Logging;
using Ryujinx.HLE.FileSystem; using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.HOS.Services.Account.Acc; using Ryujinx.HLE.HOS.Services.Account.Acc;
@ -36,11 +35,9 @@ namespace Ryujinx.Ava.Common
private static HorizonClient _horizonClient; private static HorizonClient _horizonClient;
private static AccountManager _accountManager; private static AccountManager _accountManager;
private static VirtualFileSystem _virtualFileSystem; private static VirtualFileSystem _virtualFileSystem;
private static StyleableWindow _owner;
public static void Initialize(VirtualFileSystem virtualFileSystem, AccountManager accountManager, HorizonClient horizonClient, StyleableWindow owner) public static void Initialize(VirtualFileSystem virtualFileSystem, AccountManager accountManager, HorizonClient horizonClient)
{ {
_owner = owner;
_virtualFileSystem = virtualFileSystem; _virtualFileSystem = virtualFileSystem;
_horizonClient = horizonClient; _horizonClient = horizonClient;
_accountManager = accountManager; _accountManager = accountManager;
@ -143,14 +140,20 @@ namespace Ryujinx.Ava.Common
} }
} }
public static async Task ExtractSection(NcaSectionType ncaSectionType, string titleFilePath, string titleName, int programIndex = 0) public static async Task ExtractSection(IStorageProvider storageProvider, NcaSectionType ncaSectionType, string titleFilePath, string titleName, int programIndex = 0)
{ {
OpenFolderDialog folderDialog = new() var result = await storageProvider.OpenFolderPickerAsync(new FolderPickerOpenOptions
{ {
Title = LocaleManager.Instance[LocaleKeys.FolderDialogExtractTitle], Title = LocaleManager.Instance[LocaleKeys.FolderDialogExtractTitle],
}; AllowMultiple = false,
});
string destination = await folderDialog.ShowAsync(_owner); if (result.Count == 0)
{
return;
}
var destination = result[0].Path.LocalPath;
var cancellationToken = new CancellationTokenSource(); var cancellationToken = new CancellationTokenSource();
UpdateWaitWindow waitingDialog = new( UpdateWaitWindow waitingDialog = new(
@ -158,148 +161,147 @@ namespace Ryujinx.Ava.Common
LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogNcaExtractionMessage, ncaSectionType, Path.GetFileName(titleFilePath)), LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogNcaExtractionMessage, ncaSectionType, Path.GetFileName(titleFilePath)),
cancellationToken); cancellationToken);
if (!string.IsNullOrWhiteSpace(destination)) Thread extractorThread = new(() =>
{ {
Thread extractorThread = new(() => Dispatcher.UIThread.Post(waitingDialog.Show);
using FileStream file = new(titleFilePath, FileMode.Open, FileAccess.Read);
Nca mainNca = null;
Nca patchNca = null;
string extension = Path.GetExtension(titleFilePath).ToLower();
if (extension == ".nsp" || extension == ".pfs0" || extension == ".xci")
{ {
Dispatcher.UIThread.Post(waitingDialog.Show); IFileSystem pfs;
using FileStream file = new(titleFilePath, FileMode.Open, FileAccess.Read); if (extension == ".xci")
Nca mainNca = null;
Nca patchNca = null;
string extension = Path.GetExtension(titleFilePath).ToLower();
if (extension == ".nsp" || extension == ".pfs0" || extension == ".xci")
{ {
PartitionFileSystem pfs; pfs = new Xci(_virtualFileSystem.KeySet, file.AsStorage()).OpenPartition(XciPartitionType.Secure);
}
else
{
var pfsTemp = new PartitionFileSystem();
pfsTemp.Initialize(file.AsStorage()).ThrowIfFailure();
pfs = pfsTemp;
}
if (extension == ".xci") foreach (DirectoryEntryEx fileEntry in pfs.EnumerateEntries("/", "*.nca"))
{
using var ncaFile = new UniqueRef<IFile>();
pfs.OpenFile(ref ncaFile.Ref, fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
Nca nca = new(_virtualFileSystem.KeySet, ncaFile.Get.AsStorage());
if (nca.Header.ContentType == NcaContentType.Program)
{ {
pfs = new Xci(_virtualFileSystem.KeySet, file.AsStorage()).OpenPartition(XciPartitionType.Secure); int dataIndex = Nca.GetSectionIndexFromType(NcaSectionType.Data, NcaContentType.Program);
} if (nca.SectionExists(NcaSectionType.Data) && nca.Header.GetFsHeader(dataIndex).IsPatchSection())
else
{
pfs = new PartitionFileSystem(file.AsStorage());
}
foreach (DirectoryEntryEx fileEntry in pfs.EnumerateEntries("/", "*.nca"))
{
using var ncaFile = new UniqueRef<IFile>();
pfs.OpenFile(ref ncaFile.Ref, fileEntry.FullPath.ToU8Span(), OpenMode.Read).ThrowIfFailure();
Nca nca = new(_virtualFileSystem.KeySet, ncaFile.Get.AsStorage());
if (nca.Header.ContentType == NcaContentType.Program)
{ {
int dataIndex = Nca.GetSectionIndexFromType(NcaSectionType.Data, NcaContentType.Program); patchNca = nca;
if (nca.SectionExists(NcaSectionType.Data) && nca.Header.GetFsHeader(dataIndex).IsPatchSection()) }
{ else
patchNca = nca; {
} mainNca = nca;
else
{
mainNca = nca;
}
} }
} }
} }
else if (extension == ".nca") }
{ else if (extension == ".nca")
mainNca = new Nca(_virtualFileSystem.KeySet, file.AsStorage());
}
if (mainNca == null)
{
Logger.Error?.Print(LogClass.Application, "Extraction failure. The main NCA was not present in the selected file");
Dispatcher.UIThread.InvokeAsync(async () =>
{
waitingDialog.Close();
await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogNcaExtractionMainNcaNotFoundErrorMessage]);
});
return;
}
(Nca updatePatchNca, _) = ApplicationLibrary.GetGameUpdateData(_virtualFileSystem, mainNca.Header.TitleId.ToString("x16"), programIndex, out _);
if (updatePatchNca != null)
{
patchNca = updatePatchNca;
}
int index = Nca.GetSectionIndexFromType(ncaSectionType, mainNca.Header.ContentType);
try
{
bool sectionExistsInPatch = false;
if (patchNca != null)
{
sectionExistsInPatch = patchNca.CanOpenSection(index);
}
IFileSystem ncaFileSystem = sectionExistsInPatch ? mainNca.OpenFileSystemWithPatch(patchNca, index, IntegrityCheckLevel.ErrorOnInvalid)
: mainNca.OpenFileSystem(index, IntegrityCheckLevel.ErrorOnInvalid);
FileSystemClient fsClient = _horizonClient.Fs;
string source = DateTime.Now.ToFileTime().ToString()[10..];
string output = DateTime.Now.ToFileTime().ToString()[10..];
using var uniqueSourceFs = new UniqueRef<IFileSystem>(ncaFileSystem);
using var uniqueOutputFs = new UniqueRef<IFileSystem>(new LocalFileSystem(destination));
fsClient.Register(source.ToU8Span(), ref uniqueSourceFs.Ref);
fsClient.Register(output.ToU8Span(), ref uniqueOutputFs.Ref);
(Result? resultCode, bool canceled) = CopyDirectory(fsClient, $"{source}:/", $"{output}:/", cancellationToken.Token);
if (!canceled)
{
if (resultCode.Value.IsFailure())
{
Logger.Error?.Print(LogClass.Application, $"LibHac returned error code: {resultCode.Value.ErrorCode}");
Dispatcher.UIThread.InvokeAsync(async () =>
{
waitingDialog.Close();
await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogNcaExtractionCheckLogErrorMessage]);
});
}
else if (resultCode.Value.IsSuccess())
{
Dispatcher.UIThread.Post(waitingDialog.Close);
NotificationHelper.Show(
LocaleManager.Instance[LocaleKeys.DialogNcaExtractionTitle],
$"{titleName}\n\n{LocaleManager.Instance[LocaleKeys.DialogNcaExtractionSuccessMessage]}",
NotificationType.Information);
}
}
fsClient.Unmount(source.ToU8Span());
fsClient.Unmount(output.ToU8Span());
}
catch (ArgumentException ex)
{
Logger.Error?.Print(LogClass.Application, $"{ex.Message}");
Dispatcher.UIThread.InvokeAsync(async () =>
{
waitingDialog.Close();
await ContentDialogHelper.CreateErrorDialog(ex.Message);
});
}
})
{ {
Name = "GUI.NcaSectionExtractorThread", mainNca = new Nca(_virtualFileSystem.KeySet, file.AsStorage());
IsBackground = true, }
};
extractorThread.Start(); if (mainNca == null)
} {
Logger.Error?.Print(LogClass.Application, "Extraction failure. The main NCA was not present in the selected file");
Dispatcher.UIThread.InvokeAsync(async () =>
{
waitingDialog.Close();
await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogNcaExtractionMainNcaNotFoundErrorMessage]);
});
return;
}
(Nca updatePatchNca, _) = ApplicationLibrary.GetGameUpdateData(_virtualFileSystem, mainNca.Header.TitleId.ToString("x16"), programIndex, out _);
if (updatePatchNca != null)
{
patchNca = updatePatchNca;
}
int index = Nca.GetSectionIndexFromType(ncaSectionType, mainNca.Header.ContentType);
try
{
bool sectionExistsInPatch = false;
if (patchNca != null)
{
sectionExistsInPatch = patchNca.CanOpenSection(index);
}
IFileSystem ncaFileSystem = sectionExistsInPatch ? mainNca.OpenFileSystemWithPatch(patchNca, index, IntegrityCheckLevel.ErrorOnInvalid)
: mainNca.OpenFileSystem(index, IntegrityCheckLevel.ErrorOnInvalid);
FileSystemClient fsClient = _horizonClient.Fs;
string source = DateTime.Now.ToFileTime().ToString()[10..];
string output = DateTime.Now.ToFileTime().ToString()[10..];
using var uniqueSourceFs = new UniqueRef<IFileSystem>(ncaFileSystem);
using var uniqueOutputFs = new UniqueRef<IFileSystem>(new LocalFileSystem(destination));
fsClient.Register(source.ToU8Span(), ref uniqueSourceFs.Ref);
fsClient.Register(output.ToU8Span(), ref uniqueOutputFs.Ref);
(Result? resultCode, bool canceled) = CopyDirectory(fsClient, $"{source}:/", $"{output}:/", cancellationToken.Token);
if (!canceled)
{
if (resultCode.Value.IsFailure())
{
Logger.Error?.Print(LogClass.Application, $"LibHac returned error code: {resultCode.Value.ErrorCode}");
Dispatcher.UIThread.InvokeAsync(async () =>
{
waitingDialog.Close();
await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogNcaExtractionCheckLogErrorMessage]);
});
}
else if (resultCode.Value.IsSuccess())
{
Dispatcher.UIThread.Post(waitingDialog.Close);
NotificationHelper.Show(
LocaleManager.Instance[LocaleKeys.DialogNcaExtractionTitle],
$"{titleName}\n\n{LocaleManager.Instance[LocaleKeys.DialogNcaExtractionSuccessMessage]}",
NotificationType.Information);
}
}
fsClient.Unmount(source.ToU8Span());
fsClient.Unmount(output.ToU8Span());
}
catch (ArgumentException ex)
{
Logger.Error?.Print(LogClass.Application, $"{ex.Message}");
Dispatcher.UIThread.InvokeAsync(async () =>
{
waitingDialog.Close();
await ContentDialogHelper.CreateErrorDialog(ex.Message);
});
}
})
{
Name = "GUI.NcaSectionExtractorThread",
IsBackground = true,
};
extractorThread.Start();
} }
public static (Result? result, bool canceled) CopyDirectory(FileSystemClient fs, string sourcePath, string destPath, CancellationToken token) public static (Result? result, bool canceled) CopyDirectory(FileSystemClient fs, string sourcePath, string destPath, CancellationToken token)

View file

@ -1,6 +1,7 @@
using Avalonia.Data; using Avalonia.Data.Core;
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 System; using System;
namespace Ryujinx.Ava.Common.Locale namespace Ryujinx.Ava.Common.Locale
@ -18,11 +19,20 @@ namespace Ryujinx.Ava.Common.Locale
{ {
LocaleKeys keyToUse = Key; LocaleKeys keyToUse = Key;
ReflectionBindingExtension binding = new($"[{keyToUse}]") var builder = new CompiledBindingPathBuilder();
{
Mode = BindingMode.OneWay, builder.SetRawSource(LocaleManager.Instance)
Source = LocaleManager.Instance, .Property(new ClrPropertyInfo("Item",
}; obj => (LocaleManager.Instance[keyToUse]),
null,
typeof(string)), (weakRef, iPropInfo) =>
{
return PropertyInfoAccessorFactory.CreateInpcPropertyAccessor(weakRef, iPropInfo);
});
var path = builder.Build();
var binding = new CompiledBindingExtension(path);
return binding.ProvideValue(serviceProvider); return binding.ProvideValue(serviceProvider);
} }

View file

@ -1,6 +1,5 @@
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Input; using Avalonia.Input;
using Avalonia.Interactivity;
using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.Common.Locale;
using Ryujinx.Input; using Ryujinx.Input;
using System; using System;
@ -31,7 +30,6 @@ namespace Ryujinx.Ava.Input
_control.KeyDown += OnKeyPress; _control.KeyDown += OnKeyPress;
_control.KeyUp += OnKeyRelease; _control.KeyUp += OnKeyRelease;
_control.TextInput += Control_TextInput; _control.TextInput += Control_TextInput;
_control.AddHandler(InputElement.TextInputEvent, Control_LastChanceTextInput, RoutingStrategies.Bubble);
} }
private void Control_TextInput(object sender, TextInputEventArgs e) private void Control_TextInput(object sender, TextInputEventArgs e)
@ -39,12 +37,6 @@ namespace Ryujinx.Ava.Input
TextInput?.Invoke(this, e.Text); TextInput?.Invoke(this, e.Text);
} }
private void Control_LastChanceTextInput(object sender, TextInputEventArgs e)
{
// Swallow event
e.Handled = true;
}
public event Action<string> OnGamepadConnected public event Action<string> OnGamepadConnected
{ {
add { } add { }

View file

@ -37,7 +37,7 @@ namespace Ryujinx.Modules
private static readonly string _homeDir = AppDomain.CurrentDomain.BaseDirectory; private static readonly string _homeDir = AppDomain.CurrentDomain.BaseDirectory;
private static readonly string _updateDir = Path.Combine(Path.GetTempPath(), "Ryujinx", "update"); private static readonly string _updateDir = Path.Combine(Path.GetTempPath(), "Ryujinx", "update");
private static readonly string _updatePublishDir = Path.Combine(_updateDir, "publish"); private static readonly string _updatePublishDir = Path.Combine(_updateDir, "publish");
private static readonly int _connectionCount = 4; private const int ConnectionCount = 4;
private static string _buildVer; private static string _buildVer;
private static string _platformExt; private static string _platformExt;
@ -82,12 +82,9 @@ namespace Ryujinx.Modules
{ {
Logger.Error?.Print(LogClass.Application, "Failed to convert the current Ryujinx version!"); Logger.Error?.Print(LogClass.Application, "Failed to convert the current Ryujinx version!");
Dispatcher.UIThread.Post(async () => await ContentDialogHelper.CreateWarningDialog(
{ LocaleManager.Instance[LocaleKeys.DialogUpdaterConvertFailedMessage],
await ContentDialogHelper.CreateWarningDialog( LocaleManager.Instance[LocaleKeys.DialogUpdaterCancelUpdateMessage]);
LocaleManager.Instance[LocaleKeys.DialogUpdaterConvertFailedMessage],
LocaleManager.Instance[LocaleKeys.DialogUpdaterCancelUpdateMessage]);
});
_running = false; _running = false;
@ -114,10 +111,9 @@ namespace Ryujinx.Modules
{ {
if (showVersionUpToDate) if (showVersionUpToDate)
{ {
Dispatcher.UIThread.Post(async () => await ContentDialogHelper.CreateUpdaterInfoDialog(
{ LocaleManager.Instance[LocaleKeys.DialogUpdaterAlreadyOnLatestVersionMessage],
await ContentDialogHelper.CreateUpdaterInfoDialog(LocaleManager.Instance[LocaleKeys.DialogUpdaterAlreadyOnLatestVersionMessage], ""); "");
});
} }
_running = false; _running = false;
@ -134,10 +130,9 @@ namespace Ryujinx.Modules
{ {
if (showVersionUpToDate) if (showVersionUpToDate)
{ {
Dispatcher.UIThread.Post(async () => await ContentDialogHelper.CreateUpdaterInfoDialog(
{ LocaleManager.Instance[LocaleKeys.DialogUpdaterAlreadyOnLatestVersionMessage],
await ContentDialogHelper.CreateUpdaterInfoDialog(LocaleManager.Instance[LocaleKeys.DialogUpdaterAlreadyOnLatestVersionMessage], ""); "");
});
} }
_running = false; _running = false;
@ -149,10 +144,8 @@ namespace Ryujinx.Modules
{ {
Logger.Error?.Print(LogClass.Application, exception.Message); Logger.Error?.Print(LogClass.Application, exception.Message);
Dispatcher.UIThread.Post(async () => await ContentDialogHelper.CreateErrorDialog(
{ LocaleManager.Instance[LocaleKeys.DialogUpdaterFailedToGetVersionMessage]);
await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogUpdaterFailedToGetVersionMessage]);
});
_running = false; _running = false;
@ -167,12 +160,9 @@ namespace Ryujinx.Modules
{ {
Logger.Error?.Print(LogClass.Application, "Failed to convert the received Ryujinx version from Github!"); Logger.Error?.Print(LogClass.Application, "Failed to convert the received Ryujinx version from Github!");
Dispatcher.UIThread.Post(async () => await ContentDialogHelper.CreateWarningDialog(
{ LocaleManager.Instance[LocaleKeys.DialogUpdaterConvertFailedGithubMessage],
await ContentDialogHelper.CreateWarningDialog( LocaleManager.Instance[LocaleKeys.DialogUpdaterCancelUpdateMessage]);
LocaleManager.Instance[LocaleKeys.DialogUpdaterConvertFailedGithubMessage],
LocaleManager.Instance[LocaleKeys.DialogUpdaterCancelUpdateMessage]);
});
_running = false; _running = false;
@ -183,10 +173,9 @@ namespace Ryujinx.Modules
{ {
if (showVersionUpToDate) if (showVersionUpToDate)
{ {
Dispatcher.UIThread.Post(async () => await ContentDialogHelper.CreateUpdaterInfoDialog(
{ LocaleManager.Instance[LocaleKeys.DialogUpdaterAlreadyOnLatestVersionMessage],
await ContentDialogHelper.CreateUpdaterInfoDialog(LocaleManager.Instance[LocaleKeys.DialogUpdaterAlreadyOnLatestVersionMessage], ""); "");
});
} }
_running = false; _running = false;
@ -212,7 +201,7 @@ namespace Ryujinx.Modules
_buildSize = -1; _buildSize = -1;
} }
Dispatcher.UIThread.Post(async () => await Dispatcher.UIThread.InvokeAsync(async () =>
{ {
// Show a message asking the user if they want to update // Show a message asking the user if they want to update
var shouldUpdate = await ContentDialogHelper.CreateChoiceDialog( var shouldUpdate = await ContentDialogHelper.CreateChoiceDialog(
@ -222,7 +211,7 @@ namespace Ryujinx.Modules
if (shouldUpdate) if (shouldUpdate)
{ {
UpdateRyujinx(mainWindow, _buildUrl); await UpdateRyujinx(mainWindow, _buildUrl);
} }
else else
{ {
@ -241,7 +230,7 @@ namespace Ryujinx.Modules
return result; return result;
} }
private static async void UpdateRyujinx(Window parent, string downloadUrl) private static async Task UpdateRyujinx(Window parent, string downloadUrl)
{ {
_updateSuccessful = false; _updateSuccessful = false;
@ -344,22 +333,22 @@ namespace Ryujinx.Modules
private static void DoUpdateWithMultipleThreads(TaskDialog taskDialog, string downloadUrl, string updateFile) private static void DoUpdateWithMultipleThreads(TaskDialog taskDialog, string downloadUrl, string updateFile)
{ {
// Multi-Threaded Updater // Multi-Threaded Updater
long chunkSize = _buildSize / _connectionCount; long chunkSize = _buildSize / ConnectionCount;
long remainderChunk = _buildSize % _connectionCount; long remainderChunk = _buildSize % ConnectionCount;
int completedRequests = 0; int completedRequests = 0;
int totalProgressPercentage = 0; int totalProgressPercentage = 0;
int[] progressPercentage = new int[_connectionCount]; int[] progressPercentage = new int[ConnectionCount];
List<byte[]> list = new(_connectionCount); List<byte[]> list = new(ConnectionCount);
List<WebClient> webClients = new(_connectionCount); List<WebClient> webClients = new(ConnectionCount);
for (int i = 0; i < _connectionCount; i++) for (int i = 0; i < ConnectionCount; i++)
{ {
list.Add(Array.Empty<byte>()); list.Add(Array.Empty<byte>());
} }
for (int i = 0; i < _connectionCount; i++) for (int i = 0; i < ConnectionCount; i++)
{ {
#pragma warning disable SYSLIB0014 #pragma warning disable SYSLIB0014
// TODO: WebClient is obsolete and need to be replaced with a more complex logic using HttpClient. // TODO: WebClient is obsolete and need to be replaced with a more complex logic using HttpClient.
@ -368,7 +357,7 @@ namespace Ryujinx.Modules
webClients.Add(client); webClients.Add(client);
if (i == _connectionCount - 1) if (i == ConnectionCount - 1)
{ {
client.Headers.Add("Range", $"bytes={chunkSize * i}-{(chunkSize * (i + 1) - 1) + remainderChunk}"); client.Headers.Add("Range", $"bytes={chunkSize * i}-{(chunkSize * (i + 1) - 1) + remainderChunk}");
} }
@ -385,7 +374,7 @@ namespace Ryujinx.Modules
Interlocked.Exchange(ref progressPercentage[index], args.ProgressPercentage); Interlocked.Exchange(ref progressPercentage[index], args.ProgressPercentage);
Interlocked.Add(ref totalProgressPercentage, args.ProgressPercentage); Interlocked.Add(ref totalProgressPercentage, args.ProgressPercentage);
taskDialog.SetProgressBarState(totalProgressPercentage / _connectionCount, TaskDialogProgressState.Normal); taskDialog.SetProgressBarState(totalProgressPercentage / ConnectionCount, TaskDialogProgressState.Normal);
}; };
client.DownloadDataCompleted += (_, args) => client.DownloadDataCompleted += (_, args) =>
@ -404,10 +393,10 @@ namespace Ryujinx.Modules
list[index] = args.Result; list[index] = args.Result;
Interlocked.Increment(ref completedRequests); Interlocked.Increment(ref completedRequests);
if (Equals(completedRequests, _connectionCount)) if (Equals(completedRequests, ConnectionCount))
{ {
byte[] mergedFileBytes = new byte[_buildSize]; byte[] mergedFileBytes = new byte[_buildSize];
for (int connectionIndex = 0, destinationOffset = 0; connectionIndex < _connectionCount; connectionIndex++) for (int connectionIndex = 0, destinationOffset = 0; connectionIndex < ConnectionCount; connectionIndex++)
{ {
Array.Copy(list[connectionIndex], 0, mergedFileBytes, destinationOffset, list[connectionIndex].Length); Array.Copy(list[connectionIndex], 0, mergedFileBytes, destinationOffset, list[connectionIndex].Length);
destinationOffset += list[connectionIndex].Length; destinationOffset += list[connectionIndex].Length;
@ -579,27 +568,24 @@ namespace Ryujinx.Modules
} }
} }
private static async void InstallUpdate(TaskDialog taskDialog, string updateFile) private static void InstallUpdate(TaskDialog taskDialog, string updateFile)
{ {
// Extract Update // Extract Update
taskDialog.SubHeader = LocaleManager.Instance[LocaleKeys.UpdaterExtracting]; taskDialog.SubHeader = LocaleManager.Instance[LocaleKeys.UpdaterExtracting];
taskDialog.SetProgressBarState(0, TaskDialogProgressState.Normal); taskDialog.SetProgressBarState(0, TaskDialogProgressState.Normal);
await Task.Run(() => if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS())
{ {
if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) ExtractTarGzipFile(taskDialog, updateFile, _updateDir);
{ }
ExtractTarGzipFile(taskDialog, updateFile, _updateDir); else if (OperatingSystem.IsWindows())
} {
else if (OperatingSystem.IsWindows()) ExtractZipFile(taskDialog, updateFile, _updateDir);
{ }
ExtractZipFile(taskDialog, updateFile, _updateDir); else
} {
else throw new NotSupportedException();
{ }
throw new NotSupportedException();
}
});
// Delete downloaded zip // Delete downloaded zip
File.Delete(updateFile); File.Delete(updateFile);
@ -613,36 +599,33 @@ namespace Ryujinx.Modules
if (!OperatingSystem.IsMacOS()) if (!OperatingSystem.IsMacOS())
{ {
// Replace old files // Replace old files
await Task.Run(() => double count = 0;
foreach (string file in allFiles)
{ {
double count = 0; count++;
foreach (string file in allFiles) try
{ {
count++; File.Move(file, file + ".ryuold");
try
{
File.Move(file, file + ".ryuold");
Dispatcher.UIThread.Post(() => Dispatcher.UIThread.InvokeAsync(() =>
{
taskDialog.SetProgressBarState(GetPercentage(count, allFiles.Count), TaskDialogProgressState.Normal);
});
}
catch
{ {
Logger.Warning?.Print(LogClass.Application, LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.UpdaterRenameFailed, file)); taskDialog.SetProgressBarState(GetPercentage(count, allFiles.Count), TaskDialogProgressState.Normal);
} });
} }
catch
Dispatcher.UIThread.Post(() =>
{ {
taskDialog.SubHeader = LocaleManager.Instance[LocaleKeys.UpdaterAddingFiles]; Logger.Warning?.Print(LogClass.Application, LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.UpdaterRenameFailed, file));
taskDialog.SetProgressBarState(0, TaskDialogProgressState.Normal); }
}); }
MoveAllFilesOver(_updatePublishDir, _homeDir, taskDialog); Dispatcher.UIThread.InvokeAsync(() =>
{
taskDialog.SubHeader = LocaleManager.Instance[LocaleKeys.UpdaterAddingFiles];
taskDialog.SetProgressBarState(0, TaskDialogProgressState.Normal);
}); });
MoveAllFilesOver(_updatePublishDir, _homeDir, taskDialog);
Directory.Delete(_updateDir, true); Directory.Delete(_updateDir, true);
} }
@ -658,12 +641,11 @@ namespace Ryujinx.Modules
{ {
if (showWarnings) if (showWarnings)
{ {
Dispatcher.UIThread.Post(async () => Dispatcher.UIThread.InvokeAsync(() =>
{ ContentDialogHelper.CreateWarningDialog(
await ContentDialogHelper.CreateWarningDialog(
LocaleManager.Instance[LocaleKeys.DialogUpdaterArchNotSupportedMessage], LocaleManager.Instance[LocaleKeys.DialogUpdaterArchNotSupportedMessage],
LocaleManager.Instance[LocaleKeys.DialogUpdaterArchNotSupportedSubMessage]); LocaleManager.Instance[LocaleKeys.DialogUpdaterArchNotSupportedSubMessage])
}); );
} }
return false; return false;
@ -673,12 +655,11 @@ namespace Ryujinx.Modules
{ {
if (showWarnings) if (showWarnings)
{ {
Dispatcher.UIThread.Post(async () => Dispatcher.UIThread.InvokeAsync(() =>
{ ContentDialogHelper.CreateWarningDialog(
await ContentDialogHelper.CreateWarningDialog(
LocaleManager.Instance[LocaleKeys.DialogUpdaterNoInternetMessage], LocaleManager.Instance[LocaleKeys.DialogUpdaterNoInternetMessage],
LocaleManager.Instance[LocaleKeys.DialogUpdaterNoInternetSubMessage]); LocaleManager.Instance[LocaleKeys.DialogUpdaterNoInternetSubMessage])
}); );
} }
return false; return false;
@ -688,12 +669,11 @@ namespace Ryujinx.Modules
{ {
if (showWarnings) if (showWarnings)
{ {
Dispatcher.UIThread.Post(async () => Dispatcher.UIThread.InvokeAsync(() =>
{ ContentDialogHelper.CreateWarningDialog(
await ContentDialogHelper.CreateWarningDialog(
LocaleManager.Instance[LocaleKeys.DialogUpdaterDirtyBuildMessage], LocaleManager.Instance[LocaleKeys.DialogUpdaterDirtyBuildMessage],
LocaleManager.Instance[LocaleKeys.DialogUpdaterDirtyBuildSubMessage]); LocaleManager.Instance[LocaleKeys.DialogUpdaterDirtyBuildSubMessage])
}); );
} }
return false; return false;
@ -705,21 +685,19 @@ namespace Ryujinx.Modules
{ {
if (ReleaseInformation.IsFlatHubBuild()) if (ReleaseInformation.IsFlatHubBuild())
{ {
Dispatcher.UIThread.Post(async () => Dispatcher.UIThread.InvokeAsync(() =>
{ ContentDialogHelper.CreateWarningDialog(
await ContentDialogHelper.CreateWarningDialog(
LocaleManager.Instance[LocaleKeys.UpdaterDisabledWarningTitle], LocaleManager.Instance[LocaleKeys.UpdaterDisabledWarningTitle],
LocaleManager.Instance[LocaleKeys.DialogUpdaterFlatpakNotSupportedMessage]); LocaleManager.Instance[LocaleKeys.DialogUpdaterFlatpakNotSupportedMessage])
}); );
} }
else else
{ {
Dispatcher.UIThread.Post(async () => Dispatcher.UIThread.InvokeAsync(() =>
{ ContentDialogHelper.CreateWarningDialog(
await ContentDialogHelper.CreateWarningDialog(
LocaleManager.Instance[LocaleKeys.UpdaterDisabledWarningTitle], LocaleManager.Instance[LocaleKeys.UpdaterDisabledWarningTitle],
LocaleManager.Instance[LocaleKeys.DialogUpdaterDirtyBuildSubMessage]); LocaleManager.Instance[LocaleKeys.DialogUpdaterDirtyBuildSubMessage])
}); );
} }
} }

View file

@ -59,15 +59,12 @@ namespace Ryujinx.Ava
{ {
EnableMultiTouch = true, EnableMultiTouch = true,
EnableIme = true, EnableIme = true,
UseEGL = false, RenderingMode = new[] { X11RenderingMode.Glx, X11RenderingMode.Software },
UseGpu = true,
}) })
.With(new Win32PlatformOptions .With(new Win32PlatformOptions
{ {
EnableMultitouch = true, WinUICompositionBackdropCornerRadius = 8.0f,
UseWgl = false, RenderingMode = new[] { Win32RenderingMode.AngleEgl, Win32RenderingMode.Software },
AllowEglInitialization = false,
CompositionBackdropCornerRadius = 8.0f,
}) })
.UseSkia(); .UseSkia();
} }
@ -103,8 +100,6 @@ namespace Ryujinx.Ava
ReloadConfig(); ReloadConfig();
ForceDpiAware.Windows();
WindowScaleFactor = ForceDpiAware.GetWindowScaleFactor(); WindowScaleFactor = ForceDpiAware.GetWindowScaleFactor();
// Logging system information. // Logging system information.

View file

@ -10,6 +10,8 @@
<RootNamespace>Ryujinx.Ava</RootNamespace> <RootNamespace>Ryujinx.Ava</RootNamespace>
<ApplicationIcon>Ryujinx.ico</ApplicationIcon> <ApplicationIcon>Ryujinx.ico</ApplicationIcon>
<TieredPGO>true</TieredPGO> <TieredPGO>true</TieredPGO>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup> </PropertyGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$([MSBuild]::IsOSPlatform('OSX'))"> <Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$([MSBuild]::IsOSPlatform('OSX'))">
@ -26,7 +28,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" /> <PackageReference Include="Avalonia" />
<PackageReference Include="Avalonia.Desktop" /> <PackageReference Include="Avalonia.Desktop" />
<PackageReference Include="Avalonia.Diagnostics" /> <PackageReference Include="Avalonia.Diagnostics" Condition="'$(Configuration)'=='Debug'" />
<PackageReference Include="Avalonia.Controls.DataGrid" /> <PackageReference Include="Avalonia.Controls.DataGrid" />
<PackageReference Include="Avalonia.Markup.Xaml.Loader" /> <PackageReference Include="Avalonia.Markup.Xaml.Loader" />
<PackageReference Include="Avalonia.Svg" /> <PackageReference Include="Avalonia.Svg" />
@ -34,7 +36,6 @@
<PackageReference Include="jp2masa.Avalonia.Flexbox" /> <PackageReference Include="jp2masa.Avalonia.Flexbox" />
<PackageReference Include="DynamicData" /> <PackageReference Include="DynamicData" />
<PackageReference Include="FluentAvaloniaUI" /> <PackageReference Include="FluentAvaloniaUI" />
<PackageReference Include="XamlNameReferenceGenerator" />
<PackageReference Include="OpenTK.Core" /> <PackageReference Include="OpenTK.Core" />
<PackageReference Include="Ryujinx.Audio.OpenAL.Dependencies" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64' AND '$(RuntimeIdentifier)' != 'osx-arm64'" /> <PackageReference Include="Ryujinx.Audio.OpenAL.Dependencies" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64' AND '$(RuntimeIdentifier)' != 'osx-arm64'" />
@ -97,10 +98,7 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
</AvaloniaResource> </AvaloniaResource>
<AvaloniaResource Include="Assets\Fonts\SegoeFluentIcons.ttf" /> <AvaloniaResource Include="Assets\Fonts\SegoeFluentIcons.ttf" />
<AvaloniaResource Include="Assets\Styles\BaseLight.xaml"> <AvaloniaResource Include="Assets\Styles\Themes.xaml">
<Generator>MSBuild:Compile</Generator>
</AvaloniaResource>
<AvaloniaResource Include="Assets\Styles\BaseDark.xaml">
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</AvaloniaResource> </AvaloniaResource>
<AvaloniaResource Include="Assets\Styles\Styles.xaml" /> <AvaloniaResource Include="Assets\Styles\Styles.xaml" />
@ -123,8 +121,7 @@
<None Remove="Assets\Locales\zh_CN.json" /> <None Remove="Assets\Locales\zh_CN.json" />
<None Remove="Assets\Locales\zh_TW.json" /> <None Remove="Assets\Locales\zh_TW.json" />
<None Remove="Assets\Styles\Styles.xaml" /> <None Remove="Assets\Styles\Styles.xaml" />
<None Remove="Assets\Styles\BaseDark.xaml" /> <None Remove="Assets\Styles\Themes.xaml" />
<None Remove="Assets\Styles\BaseLight.xaml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View file

@ -106,7 +106,7 @@ namespace Ryujinx.Ava.UI.Applet
bool error = false; bool error = false;
string inputText = args.InitialText ?? ""; string inputText = args.InitialText ?? "";
Dispatcher.UIThread.Post(async () => Dispatcher.UIThread.InvokeAsync(async () =>
{ {
try try
{ {
@ -149,7 +149,7 @@ namespace Ryujinx.Ava.UI.Applet
bool showDetails = false; bool showDetails = false;
Dispatcher.UIThread.Post(async () => Dispatcher.UIThread.InvokeAsync(async () =>
{ {
try try
{ {

View file

@ -6,9 +6,11 @@
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="{locale:Locale ErrorWindowTitle}" Title="{locale:Locale ErrorWindowTitle}"
xmlns:views="using:Ryujinx.Ava.UI.Applet"
Width="450" Width="450"
Height="340" Height="340"
CanResize="False" CanResize="False"
x:DataType="views:ErrorAppletWindow"
SizeToContent="Height" SizeToContent="Height"
mc:Ignorable="d" mc:Ignorable="d"
Focusable="True"> Focusable="True">

View file

@ -4,9 +4,6 @@ using Avalonia.Threading;
using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.Common.Locale;
using Ryujinx.Ava.UI.Windows; using Ryujinx.Ava.UI.Windows;
using System.Threading.Tasks; using System.Threading.Tasks;
#if DEBUG
using Avalonia;
#endif
namespace Ryujinx.Ava.UI.Applet namespace Ryujinx.Ava.UI.Applet
{ {
@ -21,9 +18,7 @@ namespace Ryujinx.Ava.UI.Applet
Message = message; Message = message;
DataContext = this; DataContext = this;
InitializeComponent(); InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
int responseId = 0; int responseId = 0;
if (buttons != null) if (buttons != null)
@ -44,9 +39,6 @@ namespace Ryujinx.Ava.UI.Applet
{ {
DataContext = this; DataContext = this;
InitializeComponent(); InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
} }
public string Message { get; set; } public string Message { get; set; }

View file

@ -4,7 +4,9 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
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:views="using:Ryujinx.Ava.UI.Controls"
Width="400" Width="400"
x:DataType="views:SwkbdAppletDialog"
mc:Ignorable="d" mc:Ignorable="d"
Focusable="True"> Focusable="True">
<Grid <Grid

View file

@ -136,10 +136,10 @@ namespace Ryujinx.Ava.UI.Controls
string localeText; string localeText;
switch (mode) switch (mode)
{ {
case KeyboardMode.NumbersOnly: case KeyboardMode.Numeric:
localeText = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.SoftwareKeyboardModeNumbersOnly); localeText = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.SoftwareKeyboardModeNumeric);
validationInfoText = string.IsNullOrEmpty(validationInfoText) ? localeText : string.Join("\n", validationInfoText, localeText); validationInfoText = string.IsNullOrEmpty(validationInfoText) ? localeText : string.Join("\n", validationInfoText, localeText);
_checkInput = text => text.All(char.IsDigit); _checkInput = text => text.All(NumericCharacterValidation.IsNumeric);
break; break;
case KeyboardMode.Alphabet: case KeyboardMode.Alphabet:
localeText = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.SoftwareKeyboardModeAlphabet); localeText = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.SoftwareKeyboardModeAlphabet);

View file

@ -2,7 +2,9 @@
x:Class="Ryujinx.Ava.UI.Controls.ApplicationContextMenu" x:Class="Ryujinx.Ava.UI.Controls.ApplicationContextMenu"
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"> xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
x:DataType="viewModels:MainWindowViewModel">
<MenuItem <MenuItem
Click="RunApplication_Click" Click="RunApplication_Click"
Header="{locale:Locale GameListContextMenuRunApplication}" /> Header="{locale:Locale GameListContextMenuRunApplication}" />
@ -80,4 +82,9 @@
Header="{locale:Locale GameListContextMenuExtractDataLogo}" Header="{locale:Locale GameListContextMenuExtractDataLogo}"
ToolTip.Tip="{locale:Locale GameListContextMenuExtractDataLogoToolTip}" /> ToolTip.Tip="{locale:Locale GameListContextMenuExtractDataLogoToolTip}" />
</MenuItem> </MenuItem>
<MenuItem
Click="CreateApplicationShortcut_Click"
Header="{locale:Locale GameListContextMenuCreateShortcut}"
IsEnabled="{Binding CreateShortcutEnabled}"
ToolTip.Tip="{locale:Locale GameListContextMenuCreateShortcutToolTip}" />
</MenuFlyout> </MenuFlyout>

View file

@ -54,7 +54,7 @@ namespace Ryujinx.Ava.UI.Controls
{ {
if (sender is MenuItem { DataContext: MainWindowViewModel viewModel }) if (sender is MenuItem { DataContext: MainWindowViewModel viewModel })
{ {
OpenSaveDirectory(viewModel, SaveDataType.Account, userId: new UserId((ulong)viewModel.AccountManager.LastOpenedUser.UserId.High, (ulong)viewModel.AccountManager.LastOpenedUser.UserId.Low)); OpenSaveDirectory(viewModel, SaveDataType.Account, new UserId((ulong)viewModel.AccountManager.LastOpenedUser.UserId.High, (ulong)viewModel.AccountManager.LastOpenedUser.UserId.Low));
} }
} }
@ -62,14 +62,14 @@ namespace Ryujinx.Ava.UI.Controls
{ {
var viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel; var viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel;
OpenSaveDirectory(viewModel, SaveDataType.Device, userId: default); OpenSaveDirectory(viewModel, SaveDataType.Device, default);
} }
public void OpenBcatSaveDirectory_Click(object sender, RoutedEventArgs args) public void OpenBcatSaveDirectory_Click(object sender, RoutedEventArgs args)
{ {
var viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel; var viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel;
OpenSaveDirectory(viewModel, SaveDataType.Bcat, userId: default); OpenSaveDirectory(viewModel, SaveDataType.Bcat, default);
} }
private static void OpenSaveDirectory(MainWindowViewModel viewModel, SaveDataType saveDataType, UserId userId) private static void OpenSaveDirectory(MainWindowViewModel viewModel, SaveDataType saveDataType, UserId userId)
@ -158,11 +158,12 @@ namespace Ryujinx.Ava.UI.Controls
if (viewModel?.SelectedApplication != null) if (viewModel?.SelectedApplication != null)
{ {
UserResult result = await ContentDialogHelper.CreateConfirmationDialog(LocaleManager.Instance[LocaleKeys.DialogWarning], UserResult result = await ContentDialogHelper.CreateConfirmationDialog(
LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogPPTCDeletionMessage, viewModel.SelectedApplication.TitleName), LocaleManager.Instance[LocaleKeys.DialogWarning],
LocaleManager.Instance[LocaleKeys.InputDialogYes], LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogPPTCDeletionMessage, viewModel.SelectedApplication.TitleName),
LocaleManager.Instance[LocaleKeys.InputDialogNo], LocaleManager.Instance[LocaleKeys.InputDialogYes],
LocaleManager.Instance[LocaleKeys.RyujinxConfirm]); LocaleManager.Instance[LocaleKeys.InputDialogNo],
LocaleManager.Instance[LocaleKeys.RyujinxConfirm]);
if (result == UserResult.Yes) if (result == UserResult.Yes)
{ {
@ -205,11 +206,12 @@ namespace Ryujinx.Ava.UI.Controls
if (viewModel?.SelectedApplication != null) if (viewModel?.SelectedApplication != null)
{ {
UserResult result = await ContentDialogHelper.CreateConfirmationDialog(LocaleManager.Instance[LocaleKeys.DialogWarning], UserResult result = await ContentDialogHelper.CreateConfirmationDialog(
LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogShaderDeletionMessage, viewModel.SelectedApplication.TitleName), LocaleManager.Instance[LocaleKeys.DialogWarning],
LocaleManager.Instance[LocaleKeys.InputDialogYes], LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogShaderDeletionMessage, viewModel.SelectedApplication.TitleName),
LocaleManager.Instance[LocaleKeys.InputDialogNo], LocaleManager.Instance[LocaleKeys.InputDialogYes],
LocaleManager.Instance[LocaleKeys.RyujinxConfirm]); LocaleManager.Instance[LocaleKeys.InputDialogNo],
LocaleManager.Instance[LocaleKeys.RyujinxConfirm]);
if (result == UserResult.Yes) if (result == UserResult.Yes)
{ {
@ -299,7 +301,11 @@ namespace Ryujinx.Ava.UI.Controls
if (viewModel?.SelectedApplication != null) if (viewModel?.SelectedApplication != null)
{ {
await ApplicationHelper.ExtractSection(NcaSectionType.Code, viewModel.SelectedApplication.Path, viewModel.SelectedApplication.TitleName); await ApplicationHelper.ExtractSection(
viewModel.StorageProvider,
NcaSectionType.Code,
viewModel.SelectedApplication.Path,
viewModel.SelectedApplication.TitleName);
} }
} }
@ -309,7 +315,11 @@ namespace Ryujinx.Ava.UI.Controls
if (viewModel?.SelectedApplication != null) if (viewModel?.SelectedApplication != null)
{ {
await ApplicationHelper.ExtractSection(NcaSectionType.Data, viewModel.SelectedApplication.Path, viewModel.SelectedApplication.TitleName); await ApplicationHelper.ExtractSection(
viewModel.StorageProvider,
NcaSectionType.Data,
viewModel.SelectedApplication.Path,
viewModel.SelectedApplication.TitleName);
} }
} }
@ -319,17 +329,32 @@ namespace Ryujinx.Ava.UI.Controls
if (viewModel?.SelectedApplication != null) if (viewModel?.SelectedApplication != null)
{ {
await ApplicationHelper.ExtractSection(NcaSectionType.Logo, viewModel.SelectedApplication.Path, viewModel.SelectedApplication.TitleName); await ApplicationHelper.ExtractSection(
viewModel.StorageProvider,
NcaSectionType.Logo,
viewModel.SelectedApplication.Path,
viewModel.SelectedApplication.TitleName);
} }
} }
public void RunApplication_Click(object sender, RoutedEventArgs args) public void CreateApplicationShortcut_Click(object sender, RoutedEventArgs args)
{ {
var viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel; var viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel;
if (viewModel?.SelectedApplication != null) if (viewModel?.SelectedApplication != null)
{ {
viewModel.LoadApplication(viewModel.SelectedApplication.Path); ApplicationData selectedApplication = viewModel.SelectedApplication;
ShortcutHelper.CreateAppShortcut(selectedApplication.Path, selectedApplication.TitleName, selectedApplication.TitleId, selectedApplication.Icon);
}
}
public async void RunApplication_Click(object sender, RoutedEventArgs args)
{
var viewModel = (sender as MenuItem)?.DataContext as MainWindowViewModel;
if (viewModel?.SelectedApplication != null)
{
await viewModel.LoadApplication(viewModel.SelectedApplication.Path);
} }
} }
} }

View file

@ -11,7 +11,9 @@
d:DesignHeight="450" d:DesignHeight="450"
d:DesignWidth="800" d:DesignWidth="800"
Focusable="True" Focusable="True"
mc:Ignorable="d"> mc:Ignorable="d"
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
x:DataType="viewModels:MainWindowViewModel">
<UserControl.Resources> <UserControl.Resources>
<helpers:BitmapArrayValueConverter x:Key="ByteImage" /> <helpers:BitmapArrayValueConverter x:Key="ByteImage" />
<controls:ApplicationContextMenu x:Key="ApplicationContextMenu" /> <controls:ApplicationContextMenu x:Key="ApplicationContextMenu" />
@ -27,7 +29,7 @@
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
ContextFlyout="{StaticResource ApplicationContextMenu}" ContextFlyout="{StaticResource ApplicationContextMenu}"
DoubleTapped="GameList_DoubleTapped" DoubleTapped="GameList_DoubleTapped"
Items="{Binding AppsObservableList}" ItemsSource="{Binding AppsObservableList}"
SelectionChanged="GameList_SelectionChanged"> SelectionChanged="GameList_SelectionChanged">
<ListBox.ItemsPanel> <ListBox.ItemsPanel>
<ItemsPanelTemplate> <ItemsPanelTemplate>
@ -43,8 +45,8 @@
<Setter Property="Margin" Value="5" /> <Setter Property="Margin" Value="5" />
<Setter Property="CornerRadius" Value="4" /> <Setter Property="CornerRadius" Value="4" />
</Style> </Style>
<Style Selector="ListBoxItem:selected /template/ Border#SelectionIndicator"> <Style Selector="ListBoxItem:selected /template/ Rectangle#SelectionIndicator">
<Setter Property="MinHeight" Value="{Binding $parent[UserControl].DataContext.GridItemSelectorSize}" /> <Setter Property="MinHeight" Value="{Binding $parent[UserControl].((viewModels:MainWindowViewModel)DataContext).GridItemSelectorSize}" />
</Style> </Style>
</ListBox.Styles> </ListBox.Styles>
<ListBox.ItemTemplate> <ListBox.ItemTemplate>
@ -54,10 +56,10 @@
Margin="10" Margin="10"
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
Classes.huge="{Binding $parent[UserControl].DataContext.IsGridHuge}" Classes.huge="{Binding $parent[UserControl].((viewModels:MainWindowViewModel)DataContext).IsGridHuge}"
Classes.large="{Binding $parent[UserControl].DataContext.IsGridLarge}" Classes.large="{Binding $parent[UserControl].((viewModels:MainWindowViewModel)DataContext).IsGridLarge}"
Classes.normal="{Binding $parent[UserControl].DataContext.IsGridMedium}" Classes.normal="{Binding $parent[UserControl].((viewModels:MainWindowViewModel)DataContext).IsGridMedium}"
Classes.small="{Binding $parent[UserControl].DataContext.IsGridSmall}" Classes.small="{Binding $parent[UserControl].((viewModels:MainWindowViewModel)DataContext).IsGridSmall}"
ClipToBounds="True" ClipToBounds="True"
CornerRadius="4"> CornerRadius="4">
<Grid> <Grid>
@ -76,9 +78,9 @@
Margin="0,10,0,0" Margin="0,10,0,0"
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
IsVisible="{Binding $parent[UserControl].DataContext.ShowNames}"> IsVisible="{Binding $parent[UserControl].((viewModels:MainWindowViewModel)DataContext).ShowNames}">
<TextBlock <TextBlock
HorizontalAlignment="Stretch" HorizontalAlignment="Center"
VerticalAlignment="Center" VerticalAlignment="Center"
Text="{Binding TitleName}" Text="{Binding TitleName}"
TextAlignment="Center" TextAlignment="Center"

View file

@ -1,7 +1,6 @@
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Input; using Avalonia.Input;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ui.App.Common; using Ryujinx.Ui.App.Common;
@ -25,12 +24,7 @@ namespace Ryujinx.Ava.UI.Controls
InitializeComponent(); InitializeComponent();
} }
private void InitializeComponent() public void GameList_DoubleTapped(object sender, TappedEventArgs args)
{
AvaloniaXamlLoader.Load(this);
}
public void GameList_DoubleTapped(object sender, RoutedEventArgs args)
{ {
if (sender is ListBox listBox) if (sender is ListBox listBox)
{ {

View file

@ -10,7 +10,9 @@
d:DesignHeight="450" d:DesignHeight="450"
d:DesignWidth="800" d:DesignWidth="800"
Focusable="True" Focusable="True"
mc:Ignorable="d"> mc:Ignorable="d"
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
x:DataType="viewModels:MainWindowViewModel">
<UserControl.Resources> <UserControl.Resources>
<helpers:BitmapArrayValueConverter x:Key="ByteImage" /> <helpers:BitmapArrayValueConverter x:Key="ByteImage" />
<controls:ApplicationContextMenu x:Key="ApplicationContextMenu" /> <controls:ApplicationContextMenu x:Key="ApplicationContextMenu" />
@ -27,7 +29,7 @@
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
ContextFlyout="{StaticResource ApplicationContextMenu}" ContextFlyout="{StaticResource ApplicationContextMenu}"
DoubleTapped="GameList_DoubleTapped" DoubleTapped="GameList_DoubleTapped"
Items="{Binding AppsObservableList}" ItemsSource="{Binding AppsObservableList}"
SelectionChanged="GameList_SelectionChanged"> SelectionChanged="GameList_SelectionChanged">
<ListBox.ItemsPanel> <ListBox.ItemsPanel>
<ItemsPanelTemplate> <ItemsPanelTemplate>
@ -39,8 +41,8 @@
</ItemsPanelTemplate> </ItemsPanelTemplate>
</ListBox.ItemsPanel> </ListBox.ItemsPanel>
<ListBox.Styles> <ListBox.Styles>
<Style Selector="ListBoxItem:selected /template/ Border#SelectionIndicator"> <Style Selector="ListBoxItem:selected /template/ Rectangle#SelectionIndicator">
<Setter Property="MinHeight" Value="{Binding $parent[UserControl].DataContext.ListItemSelectorSize}" /> <Setter Property="MinHeight" Value="{Binding $parent[UserControl].((viewModels:MainWindowViewModel)DataContext).ListItemSelectorSize}" />
</Style> </Style>
</ListBox.Styles> </ListBox.Styles>
<ListBox.ItemTemplate> <ListBox.ItemTemplate>
@ -65,10 +67,10 @@
Grid.RowSpan="3" Grid.RowSpan="3"
Grid.Column="0" Grid.Column="0"
Margin="0" Margin="0"
Classes.huge="{Binding $parent[UserControl].DataContext.IsGridHuge}" Classes.huge="{Binding $parent[UserControl].((viewModels:MainWindowViewModel)DataContext).IsGridHuge}"
Classes.large="{Binding $parent[UserControl].DataContext.IsGridLarge}" Classes.large="{Binding $parent[UserControl].((viewModels:MainWindowViewModel)DataContext).IsGridLarge}"
Classes.normal="{Binding $parent[UserControl].DataContext.IsGridMedium}" Classes.normal="{Binding $parent[UserControl].((viewModels:MainWindowViewModel)DataContext).IsGridMedium}"
Classes.small="{Binding $parent[UserControl].DataContext.IsGridSmall}" Classes.small="{Binding $parent[UserControl].((viewModels:MainWindowViewModel)DataContext).IsGridSmall}"
Source="{Binding Icon, Converter={StaticResource ByteImage}}" /> Source="{Binding Icon, Converter={StaticResource ByteImage}}" />
<Border <Border
Grid.Column="2" Grid.Column="2"

View file

@ -1,7 +1,6 @@
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Input; using Avalonia.Input;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Ava.UI.ViewModels;
using Ryujinx.Ui.App.Common; using Ryujinx.Ui.App.Common;
@ -25,12 +24,7 @@ namespace Ryujinx.Ava.UI.Controls
InitializeComponent(); InitializeComponent();
} }
private void InitializeComponent() public void GameList_DoubleTapped(object sender, TappedEventArgs args)
{
AvaloniaXamlLoader.Load(this);
}
public void GameList_DoubleTapped(object sender, RoutedEventArgs args)
{ {
if (sender is ListBox listBox) if (sender is ListBox listBox)
{ {

View file

@ -0,0 +1,31 @@
using Avalonia.Controls;
using Avalonia.Input;
using System;
namespace Ryujinx.Ava.UI.Controls
{
public class SliderScroll : Slider
{
protected override Type StyleKeyOverride => typeof(Slider);
protected override void OnPointerWheelChanged(PointerWheelEventArgs e)
{
var newValue = Value + e.Delta.Y * TickFrequency;
if (newValue < Minimum)
{
Value = Minimum;
}
else if (newValue > Maximum)
{
Value = Maximum;
}
else
{
Value = newValue;
}
e.Handled = true;
}
}
}

View file

@ -1,6 +1,4 @@
using Avalonia.Data;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.Markup.Xaml.MarkupExtensions;
using FluentAvalonia.UI.Controls; using FluentAvalonia.UI.Controls;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -38,13 +36,7 @@ namespace Ryujinx.Ava.UI.Helpers
public override object ProvideValue(IServiceProvider serviceProvider) public override object ProvideValue(IServiceProvider serviceProvider)
{ {
ReflectionBindingExtension binding = new($"[{_key}]") return this[_key];
{
Mode = BindingMode.OneWay,
Source = this,
};
return binding.ProvideValue(serviceProvider);
} }
} }
} }

View file

@ -1,52 +0,0 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Input;
using System;
using System.Windows.Input;
namespace Ryujinx.Ava.UI.Helpers
{
public class HotKeyControl : ContentControl, ICommandSource
{
public static readonly StyledProperty<object> CommandParameterProperty =
AvaloniaProperty.Register<HotKeyControl, object>(nameof(CommandParameter));
public static readonly DirectProperty<HotKeyControl, ICommand> CommandProperty =
AvaloniaProperty.RegisterDirect<HotKeyControl, ICommand>(nameof(Command),
control => control.Command, (control, command) => control.Command = command, enableDataValidation: true);
public static readonly StyledProperty<KeyGesture> HotKeyProperty = HotKeyManager.HotKeyProperty.AddOwner<Button>();
private ICommand _command;
private bool _commandCanExecute;
public ICommand Command
{
get { return _command; }
set { SetAndRaise(CommandProperty, ref _command, value); }
}
public KeyGesture HotKey
{
get { return GetValue(HotKeyProperty); }
set { SetValue(HotKeyProperty, value); }
}
public object CommandParameter
{
get { return GetValue(CommandParameterProperty); }
set { SetValue(CommandParameterProperty, value); }
}
public void CanExecuteChanged(object sender, EventArgs e)
{
var canExecute = Command == null || Command.CanExecute(CommandParameter);
if (canExecute != _commandCanExecute)
{
_commandCanExecute = canExecute;
UpdateIsEffectivelyEnabled();
}
}
}
}

View file

@ -42,21 +42,6 @@ namespace Ryujinx.Ava.UI.Helpers
GetLog(level)?.PrintMsg(RyuLogClass.Ui, Format(level, area, messageTemplate, source, null)); GetLog(level)?.PrintMsg(RyuLogClass.Ui, Format(level, area, messageTemplate, source, null));
} }
public void Log<T0>(AvaLogLevel level, string area, object source, string messageTemplate, T0 propertyValue0)
{
GetLog(level)?.PrintMsg(RyuLogClass.Ui, Format(level, area, messageTemplate, source, new object[] { propertyValue0 }));
}
public void Log<T0, T1>(AvaLogLevel level, string area, object source, string messageTemplate, T0 propertyValue0, T1 propertyValue1)
{
GetLog(level)?.PrintMsg(RyuLogClass.Ui, Format(level, area, messageTemplate, source, new object[] { propertyValue0, propertyValue1 }));
}
public void Log<T0, T1, T2>(AvaLogLevel level, string area, object source, string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2)
{
GetLog(level)?.PrintMsg(RyuLogClass.Ui, Format(level, area, messageTemplate, source, new object[] { propertyValue0, propertyValue1, propertyValue2 }));
}
public void Log(AvaLogLevel level, string area, object source, string messageTemplate, params object[] propertyValues) public void Log(AvaLogLevel level, string area, object source, string messageTemplate, params object[] propertyValues)
{ {
GetLog(level)?.PrintMsg(RyuLogClass.Ui, Format(level, area, messageTemplate, source, propertyValues)); GetLog(level)?.PrintMsg(RyuLogClass.Ui, Format(level, area, messageTemplate, source, propertyValues));

View file

@ -31,7 +31,6 @@ namespace Ryujinx.Ava.UI.Helpers
OnTextInput(new TextInputEventArgs OnTextInput(new TextInputEventArgs
{ {
Text = text, Text = text,
Device = KeyboardDevice.Instance,
Source = this, Source = this,
RoutedEvent = TextInputEvent, RoutedEvent = TextInputEvent,
}); });

View file

@ -0,0 +1,28 @@
using Avalonia.Data.Converters;
using System;
using System.Globalization;
using TimeZone = Ryujinx.Ava.UI.Models.TimeZone;
namespace Ryujinx.Ava.UI.Helpers
{
internal class TimeZoneConverter : IValueConverter
{
public static TimeZoneConverter Instance = new();
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
{
return null;
}
var timeZone = (TimeZone)value;
return string.Format("{0} {1} {2}", timeZone.UtcDifference, timeZone.Location, timeZone.Abbreviation);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View file

@ -1,4 +1,3 @@
using Avalonia;
using Avalonia.Media; using Avalonia.Media;
using Ryujinx.Ava.UI.Controls; using Ryujinx.Ava.UI.Controls;
using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Ava.UI.ViewModels;
@ -88,7 +87,8 @@ namespace Ryujinx.Ava.UI.Models
private void UpdateBackground() private void UpdateBackground()
{ {
Application.Current.Styles.TryGetResource("ControlFillColorSecondary", out object color); var currentApplication = Avalonia.Application.Current;
currentApplication.Styles.TryGetResource("ControlFillColorSecondary", currentApplication.ActualThemeVariant, out object color);
if (color is not null) if (color is not null)
{ {

View file

@ -34,7 +34,7 @@ namespace Ryujinx.Ava.UI.Renderer
private UpdateBoundsCallbackDelegate _updateBoundsCallback; private UpdateBoundsCallbackDelegate _updateBoundsCallback;
public event EventHandler<IntPtr> WindowCreated; public event EventHandler<IntPtr> WindowCreated;
public event EventHandler<Size> SizeChanged; public event EventHandler<Size> BoundsChanged;
public EmbeddedWindow() public EmbeddedWindow()
{ {
@ -67,7 +67,7 @@ namespace Ryujinx.Ava.UI.Renderer
private void StateChanged(Rect rect) private void StateChanged(Rect rect)
{ {
SizeChanged?.Invoke(this, rect.Size); BoundsChanged?.Invoke(this, rect.Size);
_updateBoundsCallback?.Invoke(rect); _updateBoundsCallback?.Invoke(rect);
} }
@ -149,9 +149,10 @@ namespace Ryujinx.Ava.UI.Renderer
msg == WindowsMessages.Rbuttonup || msg == WindowsMessages.Rbuttonup ||
msg == WindowsMessages.Mousemove) msg == WindowsMessages.Mousemove)
{ {
Point rootVisualPosition = this.TranslatePoint(new Point((long)lParam & 0xFFFF, (long)lParam >> 16 & 0xFFFF), VisualRoot).Value; Point rootVisualPosition = this.TranslatePoint(new Point((long)lParam & 0xFFFF, (long)lParam >> 16 & 0xFFFF), this).Value;
Pointer pointer = new(0, PointerType.Mouse, true); Pointer pointer = new(0, PointerType.Mouse, true);
#pragma warning disable CS0618 // Type or member is obsolete (As of Avalonia 11, the constructors for PointerPressedEventArgs & PointerEventArgs are marked as obsolete)
switch (msg) switch (msg)
{ {
case WindowsMessages.Lbuttondown: case WindowsMessages.Lbuttondown:
@ -164,7 +165,7 @@ namespace Ryujinx.Ava.UI.Renderer
var evnt = new PointerPressedEventArgs( var evnt = new PointerPressedEventArgs(
this, this,
pointer, pointer,
VisualRoot, this,
rootVisualPosition, rootVisualPosition,
(ulong)Environment.TickCount64, (ulong)Environment.TickCount64,
properties, properties,
@ -184,7 +185,7 @@ namespace Ryujinx.Ava.UI.Renderer
var evnt = new PointerReleasedEventArgs( var evnt = new PointerReleasedEventArgs(
this, this,
pointer, pointer,
VisualRoot, this,
rootVisualPosition, rootVisualPosition,
(ulong)Environment.TickCount64, (ulong)Environment.TickCount64,
properties, properties,
@ -201,7 +202,7 @@ namespace Ryujinx.Ava.UI.Renderer
PointerMovedEvent, PointerMovedEvent,
this, this,
pointer, pointer,
VisualRoot, this,
rootVisualPosition, rootVisualPosition,
(ulong)Environment.TickCount64, (ulong)Environment.TickCount64,
new PointerPointProperties(RawInputModifiers.None, PointerUpdateKind.Other), new PointerPointProperties(RawInputModifiers.None, PointerUpdateKind.Other),
@ -212,6 +213,7 @@ namespace Ryujinx.Ava.UI.Renderer
break; break;
} }
} }
#pragma warning restore CS0618
} }
} }

View file

@ -11,7 +11,7 @@ namespace Ryujinx.Ava.UI.Renderer
public readonly EmbeddedWindow EmbeddedWindow; public readonly EmbeddedWindow EmbeddedWindow;
public event EventHandler<EventArgs> WindowCreated; public event EventHandler<EventArgs> WindowCreated;
public event Action<object, Size> SizeChanged; public event Action<object, Size> BoundsChanged;
public RendererHost() public RendererHost()
{ {
@ -32,7 +32,7 @@ namespace Ryujinx.Ava.UI.Renderer
private void Initialize() private void Initialize()
{ {
EmbeddedWindow.WindowCreated += CurrentWindow_WindowCreated; EmbeddedWindow.WindowCreated += CurrentWindow_WindowCreated;
EmbeddedWindow.SizeChanged += CurrentWindow_SizeChanged; EmbeddedWindow.BoundsChanged += CurrentWindow_BoundsChanged;
Content = EmbeddedWindow; Content = EmbeddedWindow;
} }
@ -42,7 +42,7 @@ namespace Ryujinx.Ava.UI.Renderer
if (EmbeddedWindow != null) if (EmbeddedWindow != null)
{ {
EmbeddedWindow.WindowCreated -= CurrentWindow_WindowCreated; EmbeddedWindow.WindowCreated -= CurrentWindow_WindowCreated;
EmbeddedWindow.SizeChanged -= CurrentWindow_SizeChanged; EmbeddedWindow.BoundsChanged -= CurrentWindow_BoundsChanged;
} }
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
@ -55,9 +55,9 @@ namespace Ryujinx.Ava.UI.Renderer
Dispose(); Dispose();
} }
private void CurrentWindow_SizeChanged(object sender, Size e) private void CurrentWindow_BoundsChanged(object sender, Size e)
{ {
SizeChanged?.Invoke(sender, e); BoundsChanged?.Invoke(sender, e);
} }
private void CurrentWindow_WindowCreated(object sender, IntPtr e) private void CurrentWindow_WindowCreated(object sender, IntPtr e)

View file

@ -1,4 +1,3 @@
using Avalonia;
using Avalonia.Media.Imaging; using Avalonia.Media.Imaging;
using Avalonia.Platform; using Avalonia.Platform;
using Avalonia.Threading; using Avalonia.Threading;
@ -88,21 +87,19 @@ namespace Ryujinx.Ava.UI.ViewModels
{ {
Version = Program.Version; Version = Program.Version;
var assets = AvaloniaLocator.Current.GetService<IAssetLoader>();
if (ConfigurationState.Instance.Ui.BaseStyle.Value == "Light") if (ConfigurationState.Instance.Ui.BaseStyle.Value == "Light")
{ {
GithubLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_GitHub_Light.png?assembly=Ryujinx.Ui.Common"))); GithubLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_GitHub_Light.png?assembly=Ryujinx.Ui.Common")));
DiscordLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Discord_Light.png?assembly=Ryujinx.Ui.Common"))); DiscordLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Discord_Light.png?assembly=Ryujinx.Ui.Common")));
PatreonLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Patreon_Light.png?assembly=Ryujinx.Ui.Common"))); PatreonLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Patreon_Light.png?assembly=Ryujinx.Ui.Common")));
TwitterLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Twitter_Light.png?assembly=Ryujinx.Ui.Common"))); TwitterLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Twitter_Light.png?assembly=Ryujinx.Ui.Common")));
} }
else else
{ {
GithubLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_GitHub_Dark.png?assembly=Ryujinx.Ui.Common"))); GithubLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_GitHub_Dark.png?assembly=Ryujinx.Ui.Common")));
DiscordLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Discord_Dark.png?assembly=Ryujinx.Ui.Common"))); DiscordLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Discord_Dark.png?assembly=Ryujinx.Ui.Common")));
PatreonLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Patreon_Dark.png?assembly=Ryujinx.Ui.Common"))); PatreonLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Patreon_Dark.png?assembly=Ryujinx.Ui.Common")));
TwitterLogo = new Bitmap(assets.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Twitter_Dark.png?assembly=Ryujinx.Ui.Common"))); TwitterLogo = new Bitmap(AssetLoader.Open(new Uri("resm:Ryujinx.Ui.Common.Resources.Logo_Twitter_Dark.png?assembly=Ryujinx.Ui.Common")));
} }
Dispatcher.UIThread.InvokeAsync(DownloadPatronsJson); Dispatcher.UIThread.InvokeAsync(DownloadPatronsJson);

View file

@ -327,7 +327,7 @@ namespace Ryujinx.Ava.UI.ViewModels
string imageUrl = _amiiboList.Find(amiibo => amiibo.Equals(selected)).Image; string imageUrl = _amiiboList.Find(amiibo => amiibo.Equals(selected)).Image;
string usageString = ""; StringBuilder usageStringBuilder = new();
for (int i = 0; i < _amiiboList.Count; i++) for (int i = 0; i < _amiiboList.Count; i++)
{ {
@ -341,20 +341,19 @@ namespace Ryujinx.Ava.UI.ViewModels
{ {
foreach (AmiiboApiUsage usageItem in item.AmiiboUsage) foreach (AmiiboApiUsage usageItem in item.AmiiboUsage)
{ {
usageString += Environment.NewLine + usageStringBuilder.Append($"{Environment.NewLine}- {usageItem.Usage.Replace("/", Environment.NewLine + "-")}");
$"- {usageItem.Usage.Replace("/", Environment.NewLine + "-")}";
writable = usageItem.Write; writable = usageItem.Write;
} }
} }
} }
if (usageString.Length == 0) if (usageStringBuilder.Length == 0)
{ {
usageString = LocaleManager.Instance[LocaleKeys.Unknown] + "."; usageStringBuilder.Append($"{LocaleManager.Instance[LocaleKeys.Unknown]}.");
} }
Usage = $"{LocaleManager.Instance[LocaleKeys.Usage]} {(writable ? $" ({LocaleManager.Instance[LocaleKeys.Writable]})" : "")} : {usageString}"; Usage = $"{LocaleManager.Instance[LocaleKeys.Usage]} {(writable ? $" ({LocaleManager.Instance[LocaleKeys.Writable]})" : "")} : {usageStringBuilder}";
} }
} }

View file

@ -1,6 +1,6 @@
using Avalonia.Collections; using Avalonia.Collections;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Platform.Storage;
using Avalonia.Threading; using Avalonia.Threading;
using DynamicData; using DynamicData;
using LibHac.Common; using LibHac.Common;
@ -90,12 +90,19 @@ namespace Ryujinx.Ava.UI.ViewModels
get => string.Format(LocaleManager.Instance[LocaleKeys.DlcWindowHeading], DownloadableContents.Count); get => string.Format(LocaleManager.Instance[LocaleKeys.DlcWindowHeading], DownloadableContents.Count);
} }
public IStorageProvider StorageProvider;
public DownloadableContentManagerViewModel(VirtualFileSystem virtualFileSystem, ulong titleId) public DownloadableContentManagerViewModel(VirtualFileSystem virtualFileSystem, ulong titleId)
{ {
_virtualFileSystem = virtualFileSystem; _virtualFileSystem = virtualFileSystem;
_titleId = titleId; _titleId = titleId;
if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
StorageProvider = desktop.MainWindow.StorageProvider;
}
_downloadableContentJsonPath = Path.Combine(AppDataManager.GamesDirPath, titleId.ToString("x16"), "dlc.json"); _downloadableContentJsonPath = Path.Combine(AppDataManager.GamesDirPath, titleId.ToString("x16"), "dlc.json");
try try
@ -119,7 +126,8 @@ namespace Ryujinx.Ava.UI.ViewModels
{ {
using FileStream containerFile = File.OpenRead(downloadableContentContainer.ContainerPath); using FileStream containerFile = File.OpenRead(downloadableContentContainer.ContainerPath);
PartitionFileSystem partitionFileSystem = new(containerFile.AsStorage()); PartitionFileSystem partitionFileSystem = new();
partitionFileSystem.Initialize(containerFile.AsStorage()).ThrowIfFailure();
_virtualFileSystem.ImportTickets(partitionFileSystem); _virtualFileSystem.ImportTickets(partitionFileSystem);
@ -195,29 +203,24 @@ namespace Ryujinx.Ava.UI.ViewModels
public async void Add() public async void Add()
{ {
OpenFileDialog dialog = new() var result = await StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
{ {
Title = LocaleManager.Instance[LocaleKeys.SelectDlcDialogTitle], Title = LocaleManager.Instance[LocaleKeys.SelectDlcDialogTitle],
AllowMultiple = true, AllowMultiple = true,
}; FileTypeFilter = new List<FilePickerFileType>
{
dialog.Filters.Add(new FileDialogFilter new("NSP")
{ {
Name = "NSP", Patterns = new[] { "*.nsp" },
Extensions = { "nsp" }, AppleUniformTypeIdentifiers = new[] { "com.ryujinx.nsp" },
MimeTypes = new[] { "application/x-nx-nsp" },
},
},
}); });
if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) foreach (var file in result)
{ {
string[] files = await dialog.ShowAsync(desktop.MainWindow); await AddDownloadableContent(file.Path.LocalPath);
if (files != null)
{
foreach (string file in files)
{
await AddDownloadableContent(file);
}
}
} }
} }
@ -230,7 +233,8 @@ namespace Ryujinx.Ava.UI.ViewModels
using FileStream containerFile = File.OpenRead(path); using FileStream containerFile = File.OpenRead(path);
PartitionFileSystem partitionFileSystem = new(containerFile.AsStorage()); PartitionFileSystem partitionFileSystem = new();
partitionFileSystem.Initialize(containerFile.AsStorage()).ThrowIfFailure();
bool containsDownloadableContent = false; bool containsDownloadableContent = false;
_virtualFileSystem.ImportTickets(partitionFileSystem); _virtualFileSystem.ImportTickets(partitionFileSystem);

View file

@ -3,6 +3,7 @@ using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Input; using Avalonia.Input;
using Avalonia.Media; using Avalonia.Media;
using Avalonia.Platform.Storage;
using Avalonia.Threading; using Avalonia.Threading;
using DynamicData; using DynamicData;
using DynamicData.Binding; using DynamicData.Binding;
@ -25,6 +26,7 @@ using Ryujinx.HLE.FileSystem;
using Ryujinx.HLE.HOS; using Ryujinx.HLE.HOS;
using Ryujinx.HLE.HOS.Services.Account.Acc; using Ryujinx.HLE.HOS.Services.Account.Acc;
using Ryujinx.HLE.Ui; using Ryujinx.HLE.Ui;
using Ryujinx.Input.HLE;
using Ryujinx.Modules; using Ryujinx.Modules;
using Ryujinx.Ui.App.Common; using Ryujinx.Ui.App.Common;
using Ryujinx.Ui.Common; using Ryujinx.Ui.Common;
@ -38,7 +40,6 @@ using System.IO;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Image = SixLabors.ImageSharp.Image; using Image = SixLabors.ImageSharp.Image;
using InputManager = Ryujinx.Input.HLE.InputManager;
using Key = Ryujinx.Input.Key; using Key = Ryujinx.Input.Key;
using MissingKeyException = LibHac.Common.Keys.MissingKeyException; using MissingKeyException = LibHac.Common.Keys.MissingKeyException;
using ShaderCacheLoadingState = Ryujinx.Graphics.Gpu.Shader.ShaderCacheState; using ShaderCacheLoadingState = Ryujinx.Graphics.Gpu.Shader.ShaderCacheState;
@ -105,8 +106,6 @@ namespace Ryujinx.Ava.UI.ViewModels
public ApplicationData ListSelectedApplication; public ApplicationData ListSelectedApplication;
public ApplicationData GridSelectedApplication; public ApplicationData GridSelectedApplication;
public event Action ReloadGameList;
private string TitleName { get; set; } private string TitleName { get; set; }
internal AppHost AppHost { get; set; } internal AppHost AppHost { get; set; }
@ -131,6 +130,7 @@ namespace Ryujinx.Ava.UI.ViewModels
public void Initialize( public void Initialize(
ContentManager contentManager, ContentManager contentManager,
IStorageProvider storageProvider,
ApplicationLibrary applicationLibrary, ApplicationLibrary applicationLibrary,
VirtualFileSystem virtualFileSystem, VirtualFileSystem virtualFileSystem,
AccountManager accountManager, AccountManager accountManager,
@ -144,6 +144,7 @@ namespace Ryujinx.Ava.UI.ViewModels
TopLevel topLevel) TopLevel topLevel)
{ {
ContentManager = contentManager; ContentManager = contentManager;
StorageProvider = storageProvider;
ApplicationLibrary = applicationLibrary; ApplicationLibrary = applicationLibrary;
VirtualFileSystem = virtualFileSystem; VirtualFileSystem = virtualFileSystem;
AccountManager = accountManager; AccountManager = accountManager;
@ -355,6 +356,8 @@ namespace Ryujinx.Ava.UI.ViewModels
public bool OpenBcatSaveDirectoryEnabled => !SelectedApplication.ControlHolder.ByteSpan.IsZeros() && SelectedApplication.ControlHolder.Value.BcatDeliveryCacheStorageSize > 0; public bool OpenBcatSaveDirectoryEnabled => !SelectedApplication.ControlHolder.ByteSpan.IsZeros() && SelectedApplication.ControlHolder.Value.BcatDeliveryCacheStorageSize > 0;
public bool CreateShortcutEnabled => !ReleaseInformation.IsFlatHubBuild();
public string LoadHeading public string LoadHeading
{ {
get => _loadHeading; get => _loadHeading;
@ -891,6 +894,7 @@ namespace Ryujinx.Ava.UI.ViewModels
} }
public ContentManager ContentManager { get; private set; } public ContentManager ContentManager { get; private set; }
public IStorageProvider StorageProvider { get; private set; }
public ApplicationLibrary ApplicationLibrary { get; private set; } public ApplicationLibrary ApplicationLibrary { get; private set; }
public VirtualFileSystem VirtualFileSystem { get; private set; } public VirtualFileSystem VirtualFileSystem { get; private set; }
public AccountManager AccountManager { get; private set; } public AccountManager AccountManager { get; private set; }
@ -1066,9 +1070,7 @@ namespace Ryujinx.Ava.UI.ViewModels
{ {
Logger.Error?.Print(LogClass.Application, ex.ToString()); Logger.Error?.Print(LogClass.Application, ex.ToString());
static async void Action() => await UserErrorDialog.ShowUserErrorDialog(UserError.NoKeys); await UserErrorDialog.ShowUserErrorDialog(UserError.NoKeys);
Dispatcher.UIThread.Post(Action);
} }
} }
catch (Exception ex) catch (Exception ex)
@ -1161,16 +1163,13 @@ namespace Ryujinx.Ava.UI.ViewModels
AppHost?.DisposeContext(); AppHost?.DisposeContext();
} }
private void HandleRelaunch() private async Task HandleRelaunch()
{ {
if (UserChannelPersistence.PreviousIndex != -1 && UserChannelPersistence.ShouldRestart) if (UserChannelPersistence.PreviousIndex != -1 && UserChannelPersistence.ShouldRestart)
{ {
UserChannelPersistence.ShouldRestart = false; UserChannelPersistence.ShouldRestart = false;
Dispatcher.UIThread.Post(() => await LoadApplication(_currentEmulatedGamePath);
{
LoadApplication(_currentEmulatedGamePath);
});
} }
else else
{ {
@ -1188,7 +1187,9 @@ namespace Ryujinx.Ava.UI.ViewModels
{ {
Application.Current.Styles.TryGetResource(args.VSyncEnabled Application.Current.Styles.TryGetResource(args.VSyncEnabled
? "VsyncEnabled" ? "VsyncEnabled"
: "VsyncDisabled", out object color); : "VsyncDisabled",
Application.Current.ActualThemeVariant,
out object color);
if (color is not null) if (color is not null)
{ {
@ -1259,6 +1260,16 @@ namespace Ryujinx.Ava.UI.ViewModels
ShowMenuAndStatusBar = false; ShowMenuAndStatusBar = false;
} }
public void ToggleStartGamesInFullscreen()
{
StartGamesInFullscreen = !StartGamesInFullscreen;
}
public void ToggleShowConsole()
{
ShowConsole = !ShowConsole;
}
public void SetListMode() public void SetListMode()
{ {
Glyph = Glyph.List; Glyph = Glyph.List;
@ -1269,45 +1280,64 @@ namespace Ryujinx.Ava.UI.ViewModels
Glyph = Glyph.Grid; Glyph = Glyph.Grid;
} }
public async void InstallFirmwareFromFile() public void SetAspectRatio(AspectRatio aspectRatio)
{ {
if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) ConfigurationState.Instance.Graphics.AspectRatio.Value = aspectRatio;
}
public async Task InstallFirmwareFromFile()
{
var result = await StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
{ {
OpenFileDialog dialog = new() { AllowMultiple = false }; AllowMultiple = false,
dialog.Filters.Add(new FileDialogFilter { Name = LocaleManager.Instance[LocaleKeys.FileDialogAllTypes], Extensions = { "xci", "zip" } }); FileTypeFilter = new List<FilePickerFileType>
dialog.Filters.Add(new FileDialogFilter { Name = "XCI", Extensions = { "xci" } });
dialog.Filters.Add(new FileDialogFilter { Name = "ZIP", Extensions = { "zip" } });
string[] file = await dialog.ShowAsync(desktop.MainWindow);
if (file != null && file.Length > 0)
{ {
await HandleFirmwareInstallation(file[0]); new(LocaleManager.Instance[LocaleKeys.FileDialogAllTypes])
} {
Patterns = new[] { "*.xci", "*.zip" },
AppleUniformTypeIdentifiers = new[] { "com.ryujinx.xci", "public.zip-archive" },
MimeTypes = new[] { "application/x-nx-xci", "application/zip" },
},
new("XCI")
{
Patterns = new[] { "*.xci" },
AppleUniformTypeIdentifiers = new[] { "com.ryujinx.xci" },
MimeTypes = new[] { "application/x-nx-xci" },
},
new("ZIP")
{
Patterns = new[] { "*.zip" },
AppleUniformTypeIdentifiers = new[] { "public.zip-archive" },
MimeTypes = new[] { "application/zip" },
},
},
});
if (result.Count > 0)
{
await HandleFirmwareInstallation(result[0].Path.LocalPath);
} }
} }
public async void InstallFirmwareFromFolder() public async Task InstallFirmwareFromFolder()
{ {
if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) var result = await StorageProvider.OpenFolderPickerAsync(new FolderPickerOpenOptions
{ {
OpenFolderDialog dialog = new(); AllowMultiple = false,
});
string folder = await dialog.ShowAsync(desktop.MainWindow); if (result.Count > 0)
{
if (!string.IsNullOrEmpty(folder)) await HandleFirmwareInstallation(result[0].Path.LocalPath);
{
await HandleFirmwareInstallation(folder);
}
} }
} }
public static void OpenRyujinxFolder() public void OpenRyujinxFolder()
{ {
OpenHelper.OpenFolder(AppDataManager.BaseDirPath); OpenHelper.OpenFolder(AppDataManager.BaseDirPath);
} }
public static void OpenLogsFolder() public void OpenLogsFolder()
{ {
string logPath = Path.Combine(ReleaseInformation.GetBaseApplicationDirectory(), "Logs"); string logPath = Path.Combine(ReleaseInformation.GetBaseApplicationDirectory(), "Logs");
@ -1324,7 +1354,7 @@ namespace Ryujinx.Ava.UI.ViewModels
} }
} }
public async void ExitCurrentState() public async Task ExitCurrentState()
{ {
if (WindowState == WindowState.FullScreen) if (WindowState == WindowState.FullScreen)
{ {
@ -1349,26 +1379,7 @@ namespace Ryujinx.Ava.UI.ViewModels
} }
} }
public void ToggleFileType(string fileType) public async Task ManageProfiles()
{
_ = fileType switch
{
#pragma warning disable IDE0055 // Disable formatting
"NSP" => ConfigurationState.Instance.Ui.ShownFileTypes.NSP.Value = !ConfigurationState.Instance.Ui.ShownFileTypes.NSP,
"PFS0" => ConfigurationState.Instance.Ui.ShownFileTypes.PFS0.Value = !ConfigurationState.Instance.Ui.ShownFileTypes.PFS0,
"XCI" => ConfigurationState.Instance.Ui.ShownFileTypes.XCI.Value = !ConfigurationState.Instance.Ui.ShownFileTypes.XCI,
"NCA" => ConfigurationState.Instance.Ui.ShownFileTypes.NCA.Value = !ConfigurationState.Instance.Ui.ShownFileTypes.NCA,
"NRO" => ConfigurationState.Instance.Ui.ShownFileTypes.NRO.Value = !ConfigurationState.Instance.Ui.ShownFileTypes.NRO,
"NSO" => ConfigurationState.Instance.Ui.ShownFileTypes.NSO.Value = !ConfigurationState.Instance.Ui.ShownFileTypes.NSO,
_ => throw new ArgumentOutOfRangeException(fileType),
#pragma warning restore IDE0055
};
ConfigurationState.Instance.ToFileFormat().SaveConfig(Program.ConfigurationPath);
LoadApplications();
}
public async void ManageProfiles()
{ {
await NavigationDialogHost.Show(AccountManager, ContentManager, VirtualFileSystem, LibHacHorizonManager.RyujinxClient); await NavigationDialogHost.Show(AccountManager, ContentManager, VirtualFileSystem, LibHacHorizonManager.RyujinxClient);
} }
@ -1378,82 +1389,88 @@ namespace Ryujinx.Ava.UI.ViewModels
AppHost.Device.System.SimulateWakeUpMessage(); AppHost.Device.System.SimulateWakeUpMessage();
} }
public async void LoadApplications() public async Task OpenFile()
{ {
await Dispatcher.UIThread.InvokeAsync(() => var result = await StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
{ {
Applications.Clear(); Title = LocaleManager.Instance[LocaleKeys.OpenFileDialogTitle],
AllowMultiple = false,
StatusBarVisible = true; FileTypeFilter = new List<FilePickerFileType>
StatusBarProgressMaximum = 0; {
StatusBarProgressValue = 0; new(LocaleManager.Instance[LocaleKeys.AllSupportedFormats])
{
LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.StatusBarGamesLoaded, 0, 0); Patterns = new[] { "*.nsp", "*.xci", "*.nca", "*.nro", "*.nso" },
AppleUniformTypeIdentifiers = new[]
{
"com.ryujinx.nsp",
"com.ryujinx.xci",
"com.ryujinx.nca",
"com.ryujinx.nro",
"com.ryujinx.nso",
},
MimeTypes = new[]
{
"application/x-nx-nsp",
"application/x-nx-xci",
"application/x-nx-nca",
"application/x-nx-nro",
"application/x-nx-nso",
},
},
new("NSP")
{
Patterns = new[] { "*.nsp" },
AppleUniformTypeIdentifiers = new[] { "com.ryujinx.nsp" },
MimeTypes = new[] { "application/x-nx-nsp" },
},
new("XCI")
{
Patterns = new[] { "*.xci" },
AppleUniformTypeIdentifiers = new[] { "com.ryujinx.xci" },
MimeTypes = new[] { "application/x-nx-xci" },
},
new("NCA")
{
Patterns = new[] { "*.nca" },
AppleUniformTypeIdentifiers = new[] { "com.ryujinx.nca" },
MimeTypes = new[] { "application/x-nx-nca" },
},
new("NRO")
{
Patterns = new[] { "*.nro" },
AppleUniformTypeIdentifiers = new[] { "com.ryujinx.nro" },
MimeTypes = new[] { "application/x-nx-nro" },
},
new("NSO")
{
Patterns = new[] { "*.nso" },
AppleUniformTypeIdentifiers = new[] { "com.ryujinx.nso" },
MimeTypes = new[] { "application/x-nx-nso" },
},
},
}); });
ReloadGameList?.Invoke(); if (result.Count > 0)
}
public async void OpenFile()
{
if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{ {
OpenFileDialog dialog = new() await LoadApplication(result[0].Path.LocalPath);
{
Title = LocaleManager.Instance[LocaleKeys.OpenFileDialogTitle],
};
dialog.Filters.Add(new FileDialogFilter
{
Name = LocaleManager.Instance[LocaleKeys.AllSupportedFormats],
Extensions =
{
"nsp",
"pfs0",
"xci",
"nca",
"nro",
"nso",
},
});
#pragma warning disable IDE0055 // Disable formatting
dialog.Filters.Add(new FileDialogFilter { Name = "NSP", Extensions = { "nsp" } });
dialog.Filters.Add(new FileDialogFilter { Name = "PFS0", Extensions = { "pfs0" } });
dialog.Filters.Add(new FileDialogFilter { Name = "XCI", Extensions = { "xci" } });
dialog.Filters.Add(new FileDialogFilter { Name = "NCA", Extensions = { "nca" } });
dialog.Filters.Add(new FileDialogFilter { Name = "NRO", Extensions = { "nro" } });
dialog.Filters.Add(new FileDialogFilter { Name = "NSO", Extensions = { "nso" } });
#pragma warning restore IDE0055
string[] files = await dialog.ShowAsync(desktop.MainWindow);
if (files != null && files.Length > 0)
{
LoadApplication(files[0]);
}
} }
} }
public async void OpenFolder() public async Task OpenFolder()
{ {
if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) var result = await StorageProvider.OpenFolderPickerAsync(new FolderPickerOpenOptions
{ {
OpenFolderDialog dialog = new() Title = LocaleManager.Instance[LocaleKeys.OpenFolderDialogTitle],
{ AllowMultiple = false,
Title = LocaleManager.Instance[LocaleKeys.OpenFolderDialogTitle], });
};
string folder = await dialog.ShowAsync(desktop.MainWindow); if (result.Count > 0)
{
if (!string.IsNullOrWhiteSpace(folder) && Directory.Exists(folder)) await LoadApplication(result[0].Path.LocalPath);
{
LoadApplication(folder);
}
} }
} }
public async void LoadApplication(string path, bool startFullscreen = false, string titleName = "") public async Task LoadApplication(string path, bool startFullscreen = false, string titleName = "")
{ {
if (AppHost != null) if (AppHost != null)
{ {
@ -1473,7 +1490,7 @@ namespace Ryujinx.Ava.UI.ViewModels
Logger.RestartTime(); Logger.RestartTime();
SelectedIcon ??= ApplicationLibrary.GetApplicationIcon(path); SelectedIcon ??= ApplicationLibrary.GetApplicationIcon(path, ConfigurationState.Instance.System.Language);
PrepareLoadScreen(); PrepareLoadScreen();
@ -1490,35 +1507,30 @@ namespace Ryujinx.Ava.UI.ViewModels
this, this,
TopLevel); TopLevel);
async void Action() if (!await AppHost.LoadGuestApplication())
{ {
if (!await AppHost.LoadGuestApplication()) AppHost.DisposeContext();
{ AppHost = null;
AppHost.DisposeContext();
AppHost = null;
return; return;
}
CanUpdate = false;
LoadHeading = TitleName = titleName;
if (string.IsNullOrWhiteSpace(titleName))
{
LoadHeading = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.LoadingHeading, AppHost.Device.Processes.ActiveApplication.Name);
TitleName = AppHost.Device.Processes.ActiveApplication.Name;
}
SwitchToRenderer(startFullscreen);
_currentEmulatedGamePath = path;
Thread gameThread = new(InitializeGame) { Name = "GUI.WindowThread" };
gameThread.Start();
} }
Dispatcher.UIThread.Post(Action); CanUpdate = false;
LoadHeading = TitleName = titleName;
if (string.IsNullOrWhiteSpace(titleName))
{
LoadHeading = LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.LoadingHeading, AppHost.Device.Processes.ActiveApplication.Name);
TitleName = AppHost.Device.Processes.ActiveApplication.Name;
}
SwitchToRenderer(startFullscreen);
_currentEmulatedGamePath = path;
Thread gameThread = new(InitializeGame) { Name = "GUI.WindowThread" };
gameThread.Start();
} }
public void SwitchToRenderer(bool startFullscreen) public void SwitchToRenderer(bool startFullscreen)
@ -1581,7 +1593,7 @@ namespace Ryujinx.Ava.UI.ViewModels
IsGameRunning = false; IsGameRunning = false;
Dispatcher.UIThread.InvokeAsync(() => Dispatcher.UIThread.InvokeAsync(async () =>
{ {
ShowMenuAndStatusBar = true; ShowMenuAndStatusBar = true;
ShowContent = true; ShowContent = true;
@ -1594,7 +1606,7 @@ namespace Ryujinx.Ava.UI.ViewModels
AppHost = null; AppHost = null;
HandleRelaunch(); await HandleRelaunch();
}); });
RendererHostControl.WindowCreated -= RendererHost_Created; RendererHostControl.WindowCreated -= RendererHost_Created;
@ -1686,7 +1698,6 @@ namespace Ryujinx.Ava.UI.ViewModels
} }
} }
} }
#endregion #endregion
} }
} }

View file

@ -1,7 +1,6 @@
using Avalonia.Collections; using Avalonia.Collections;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Threading; using Avalonia.Threading;
using DynamicData;
using LibHac.Tools.FsSystem; using LibHac.Tools.FsSystem;
using Ryujinx.Audio.Backends.OpenAL; using Ryujinx.Audio.Backends.OpenAL;
using Ryujinx.Audio.Backends.SDL2; using Ryujinx.Audio.Backends.SDL2;
@ -11,6 +10,7 @@ using Ryujinx.Ava.UI.Helpers;
using Ryujinx.Ava.UI.Windows; using Ryujinx.Ava.UI.Windows;
using Ryujinx.Common.Configuration; using Ryujinx.Common.Configuration;
using Ryujinx.Common.Configuration.Hid; using Ryujinx.Common.Configuration.Hid;
using Ryujinx.Common.Configuration.Multiplayer;
using Ryujinx.Common.GraphicsDriver; using Ryujinx.Common.GraphicsDriver;
using Ryujinx.Common.Logging; using Ryujinx.Common.Logging;
using Ryujinx.Graphics.Vulkan; using Ryujinx.Graphics.Vulkan;
@ -24,6 +24,7 @@ using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
using System.Net.NetworkInformation; using System.Net.NetworkInformation;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Threading.Tasks;
using TimeZone = Ryujinx.Ava.UI.Models.TimeZone; using TimeZone = Ryujinx.Ava.UI.Models.TimeZone;
namespace Ryujinx.Ava.UI.ViewModels namespace Ryujinx.Ava.UI.ViewModels
@ -44,7 +45,7 @@ namespace Ryujinx.Ava.UI.ViewModels
private float _volume; private float _volume;
private bool _isVulkanAvailable = true; private bool _isVulkanAvailable = true;
private bool _directoryChanged; private bool _directoryChanged;
private List<string> _gpuIds = new(); private readonly List<string> _gpuIds = new();
private KeyboardHotkeys _keyboardHotkeys; private KeyboardHotkeys _keyboardHotkeys;
private int _graphicsBackendIndex; private int _graphicsBackendIndex;
private string _customThemePath; private string _customThemePath;
@ -54,6 +55,7 @@ namespace Ryujinx.Ava.UI.ViewModels
public event Action CloseWindow; public event Action CloseWindow;
public event Action SaveSettingsEvent; public event Action SaveSettingsEvent;
private int _networkInterfaceIndex; private int _networkInterfaceIndex;
private int _multiplayerModeIndex;
public int ResolutionScale public int ResolutionScale
{ {
@ -76,14 +78,13 @@ namespace Ryujinx.Ava.UI.ViewModels
if (_graphicsBackendMultithreadingIndex != (int)ConfigurationState.Instance.Graphics.BackendThreading.Value) if (_graphicsBackendMultithreadingIndex != (int)ConfigurationState.Instance.Graphics.BackendThreading.Value)
{ {
Dispatcher.UIThread.Post(async () => Dispatcher.UIThread.InvokeAsync(() =>
{ ContentDialogHelper.CreateInfoDialog(LocaleManager.Instance[LocaleKeys.DialogSettingsBackendThreadingWarningMessage],
await ContentDialogHelper.CreateInfoDialog(LocaleManager.Instance[LocaleKeys.DialogSettingsBackendThreadingWarningMessage],
"", "",
"", "",
LocaleManager.Instance[LocaleKeys.InputDialogOk], LocaleManager.Instance[LocaleKeys.InputDialogOk],
LocaleManager.Instance[LocaleKeys.DialogSettingsBackendThreadingWarningTitle]); LocaleManager.Instance[LocaleKeys.DialogSettingsBackendThreadingWarningTitle])
}); );
} }
OnPropertyChanged(); OnPropertyChanged();
@ -145,6 +146,8 @@ namespace Ryujinx.Ava.UI.ViewModels
public bool EnableShaderCache { get; set; } public bool EnableShaderCache { get; set; }
public bool EnableTextureRecompression { get; set; } public bool EnableTextureRecompression { get; set; }
public bool EnableMacroHLE { get; set; } public bool EnableMacroHLE { get; set; }
public bool EnableColorSpacePassthrough { get; set; }
public bool ColorSpacePassthroughAvailable => IsMacOS;
public bool EnableFileLog { get; set; } public bool EnableFileLog { get; set; }
public bool EnableStub { get; set; } public bool EnableStub { get; set; }
public bool EnableInfo { get; set; } public bool EnableInfo { get; set; }
@ -250,6 +253,11 @@ namespace Ryujinx.Ava.UI.ViewModels
get => new(_networkInterfaces.Keys); get => new(_networkInterfaces.Keys);
} }
public AvaloniaList<string> MultiplayerModes
{
get => new(Enum.GetNames<MultiplayerMode>());
}
public KeyboardHotkeys KeyboardHotkeys public KeyboardHotkeys KeyboardHotkeys
{ {
get => _keyboardHotkeys; get => _keyboardHotkeys;
@ -271,13 +279,23 @@ namespace Ryujinx.Ava.UI.ViewModels
} }
} }
public int MultiplayerModeIndex
{
get => _multiplayerModeIndex;
set
{
_multiplayerModeIndex = value;
ConfigurationState.Instance.Multiplayer.Mode.Value = (MultiplayerMode)_multiplayerModeIndex;
}
}
public SettingsViewModel(VirtualFileSystem virtualFileSystem, ContentManager contentManager) : this() public SettingsViewModel(VirtualFileSystem virtualFileSystem, ContentManager contentManager) : this()
{ {
_virtualFileSystem = virtualFileSystem; _virtualFileSystem = virtualFileSystem;
_contentManager = contentManager; _contentManager = contentManager;
if (Program.PreviewerDetached) if (Program.PreviewerDetached)
{ {
LoadTimeZones(); Task.Run(LoadTimeZones);
} }
} }
@ -289,27 +307,34 @@ namespace Ryujinx.Ava.UI.ViewModels
_validTzRegions = new List<string>(); _validTzRegions = new List<string>();
_networkInterfaces = new Dictionary<string, string>(); _networkInterfaces = new Dictionary<string, string>();
CheckSoundBackends(); Task.Run(CheckSoundBackends);
PopulateNetworkInterfaces(); Task.Run(PopulateNetworkInterfaces);
if (Program.PreviewerDetached) if (Program.PreviewerDetached)
{ {
LoadAvailableGpus(); Task.Run(LoadAvailableGpus);
LoadCurrentConfiguration(); LoadCurrentConfiguration();
} }
} }
public void CheckSoundBackends() public async Task CheckSoundBackends()
{ {
IsOpenAlEnabled = OpenALHardwareDeviceDriver.IsSupported; IsOpenAlEnabled = OpenALHardwareDeviceDriver.IsSupported;
IsSoundIoEnabled = SoundIoHardwareDeviceDriver.IsSupported; IsSoundIoEnabled = SoundIoHardwareDeviceDriver.IsSupported;
IsSDL2Enabled = SDL2HardwareDeviceDriver.IsSupported; IsSDL2Enabled = SDL2HardwareDeviceDriver.IsSupported;
await Dispatcher.UIThread.InvokeAsync(() =>
{
OnPropertyChanged(nameof(IsOpenAlEnabled));
OnPropertyChanged(nameof(IsSoundIoEnabled));
OnPropertyChanged(nameof(IsSDL2Enabled));
});
} }
private void LoadAvailableGpus() private async Task LoadAvailableGpus()
{ {
_gpuIds = new List<string>(); AvailableGpus.Clear();
List<string> names = new();
var devices = VulkanRenderer.GetPhysicalDevices(); var devices = VulkanRenderer.GetPhysicalDevices();
if (devices.Length == 0) if (devices.Length == 0)
@ -321,16 +346,23 @@ namespace Ryujinx.Ava.UI.ViewModels
{ {
foreach (var device in devices) foreach (var device in devices)
{ {
_gpuIds.Add(device.Id); await Dispatcher.UIThread.InvokeAsync(() =>
names.Add($"{device.Name} {(device.IsDiscrete ? "(dGPU)" : "")}"); {
_gpuIds.Add(device.Id);
AvailableGpus.Add(new ComboBoxItem { Content = $"{device.Name} {(device.IsDiscrete ? "(dGPU)" : "")}" });
});
} }
} }
AvailableGpus.Clear(); // GPU configuration needs to be loaded during the async method or it will always return 0.
AvailableGpus.AddRange(names.Select(x => new ComboBoxItem { Content = x })); PreferredGpuIndex = _gpuIds.Contains(ConfigurationState.Instance.Graphics.PreferredGpu) ?
_gpuIds.IndexOf(ConfigurationState.Instance.Graphics.PreferredGpu) : 0;
Dispatcher.UIThread.Post(() => OnPropertyChanged(nameof(PreferredGpuIndex)));
} }
public void LoadTimeZones() public async Task LoadTimeZones()
{ {
_timeZoneContentManager = new TimeZoneContentManager(); _timeZoneContentManager = new TimeZoneContentManager();
@ -343,21 +375,34 @@ namespace Ryujinx.Ava.UI.ViewModels
string abbr2 = abbr.StartsWith('+') || abbr.StartsWith('-') ? string.Empty : abbr; string abbr2 = abbr.StartsWith('+') || abbr.StartsWith('-') ? string.Empty : abbr;
TimeZones.Add(new TimeZone($"UTC{hours:+0#;-0#;+00}:{minutes:D2}", location, abbr2)); await Dispatcher.UIThread.InvokeAsync(() =>
{
TimeZones.Add(new TimeZone($"UTC{hours:+0#;-0#;+00}:{minutes:D2}", location, abbr2));
_validTzRegions.Add(location); _validTzRegions.Add(location);
});
} }
Dispatcher.UIThread.Post(() => OnPropertyChanged(nameof(TimeZone)));
} }
private void PopulateNetworkInterfaces() private async Task PopulateNetworkInterfaces()
{ {
_networkInterfaces.Clear(); _networkInterfaces.Clear();
_networkInterfaces.Add(LocaleManager.Instance[LocaleKeys.NetworkInterfaceDefault], "0"); _networkInterfaces.Add(LocaleManager.Instance[LocaleKeys.NetworkInterfaceDefault], "0");
foreach (NetworkInterface networkInterface in NetworkInterface.GetAllNetworkInterfaces()) foreach (NetworkInterface networkInterface in NetworkInterface.GetAllNetworkInterfaces())
{ {
_networkInterfaces.Add(networkInterface.Name, networkInterface.Id); await Dispatcher.UIThread.InvokeAsync(() =>
{
_networkInterfaces.Add(networkInterface.Name, networkInterface.Id);
});
} }
// Network interface index needs to be loaded during the async method or it will always return 0.
NetworkInterfaceIndex = _networkInterfaces.Values.ToList().IndexOf(ConfigurationState.Instance.Multiplayer.LanInterfaceId.Value);
Dispatcher.UIThread.Post(() => OnPropertyChanged(nameof(NetworkInterfaceIndex)));
} }
public void ValidateAndSetTimeZone(string location) public void ValidateAndSetTimeZone(string location)
@ -415,10 +460,11 @@ namespace Ryujinx.Ava.UI.ViewModels
// Graphics // Graphics
GraphicsBackendIndex = (int)config.Graphics.GraphicsBackend.Value; GraphicsBackendIndex = (int)config.Graphics.GraphicsBackend.Value;
PreferredGpuIndex = _gpuIds.Contains(config.Graphics.PreferredGpu) ? _gpuIds.IndexOf(config.Graphics.PreferredGpu) : 0; // Physical devices are queried asynchronously hence the prefered index config value is loaded in LoadAvailableGpus().
EnableShaderCache = config.Graphics.EnableShaderCache; EnableShaderCache = config.Graphics.EnableShaderCache;
EnableTextureRecompression = config.Graphics.EnableTextureRecompression; EnableTextureRecompression = config.Graphics.EnableTextureRecompression;
EnableMacroHLE = config.Graphics.EnableMacroHLE; EnableMacroHLE = config.Graphics.EnableMacroHLE;
EnableColorSpacePassthrough = config.Graphics.EnableColorSpacePassthrough;
ResolutionScale = config.Graphics.ResScale == -1 ? 4 : config.Graphics.ResScale - 1; ResolutionScale = config.Graphics.ResScale == -1 ? 4 : config.Graphics.ResScale - 1;
CustomResolutionScale = config.Graphics.ResScaleCustom; CustomResolutionScale = config.Graphics.ResScaleCustom;
MaxAnisotropy = config.Graphics.MaxAnisotropy == -1 ? 0 : (int)(MathF.Log2(config.Graphics.MaxAnisotropy)); MaxAnisotropy = config.Graphics.MaxAnisotropy == -1 ? 0 : (int)(MathF.Log2(config.Graphics.MaxAnisotropy));
@ -435,6 +481,7 @@ namespace Ryujinx.Ava.UI.ViewModels
// Network // Network
EnableInternetAccess = config.System.EnableInternetAccess; EnableInternetAccess = config.System.EnableInternetAccess;
// LAN interface index is loaded asynchronously in PopulateNetworkInterfaces()
// Logging // Logging
EnableFileLog = config.Logger.EnableFileLog; EnableFileLog = config.Logger.EnableFileLog;
@ -449,7 +496,7 @@ namespace Ryujinx.Ava.UI.ViewModels
FsGlobalAccessLogMode = config.System.FsGlobalAccessLogMode; FsGlobalAccessLogMode = config.System.FsGlobalAccessLogMode;
OpenglDebugLevel = (int)config.Logger.GraphicsDebugLevel.Value; OpenglDebugLevel = (int)config.Logger.GraphicsDebugLevel.Value;
NetworkInterfaceIndex = _networkInterfaces.Values.ToList().IndexOf(config.Multiplayer.LanInterfaceId.Value); MultiplayerModeIndex = (int)config.Multiplayer.Mode.Value;
} }
public void SaveSettings() public void SaveSettings()
@ -506,6 +553,7 @@ namespace Ryujinx.Ava.UI.ViewModels
config.Graphics.EnableShaderCache.Value = EnableShaderCache; config.Graphics.EnableShaderCache.Value = EnableShaderCache;
config.Graphics.EnableTextureRecompression.Value = EnableTextureRecompression; config.Graphics.EnableTextureRecompression.Value = EnableTextureRecompression;
config.Graphics.EnableMacroHLE.Value = EnableMacroHLE; config.Graphics.EnableMacroHLE.Value = EnableMacroHLE;
config.Graphics.EnableColorSpacePassthrough.Value = EnableColorSpacePassthrough;
config.Graphics.ResScale.Value = ResolutionScale == 4 ? -1 : ResolutionScale + 1; config.Graphics.ResScale.Value = ResolutionScale == 4 ? -1 : ResolutionScale + 1;
config.Graphics.ResScaleCustom.Value = CustomResolutionScale; config.Graphics.ResScaleCustom.Value = CustomResolutionScale;
config.Graphics.MaxAnisotropy.Value = MaxAnisotropy == 0 ? -1 : MathF.Pow(2, MaxAnisotropy); config.Graphics.MaxAnisotropy.Value = MaxAnisotropy == 0 ? -1 : MathF.Pow(2, MaxAnisotropy);
@ -550,6 +598,7 @@ namespace Ryujinx.Ava.UI.ViewModels
config.Logger.GraphicsDebugLevel.Value = (GraphicsDebugLevel)OpenglDebugLevel; config.Logger.GraphicsDebugLevel.Value = (GraphicsDebugLevel)OpenglDebugLevel;
config.Multiplayer.LanInterfaceId.Value = _networkInterfaces[NetworkInterfaceList[NetworkInterfaceIndex]]; config.Multiplayer.LanInterfaceId.Value = _networkInterfaces[NetworkInterfaceList[NetworkInterfaceIndex]];
config.Multiplayer.Mode.Value = (MultiplayerMode)MultiplayerModeIndex;
config.ToFileFormat().SaveConfig(Program.ConfigurationPath); config.ToFileFormat().SaveConfig(Program.ConfigurationPath);

View file

@ -1,7 +1,7 @@
using Avalonia; using Avalonia;
using Avalonia.Collections; using Avalonia.Collections;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Platform.Storage;
using Avalonia.Threading; using Avalonia.Threading;
using LibHac.Common; using LibHac.Common;
using LibHac.Fs; using LibHac.Fs;
@ -22,6 +22,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks;
using Path = System.IO.Path; using Path = System.IO.Path;
using SpanHelpers = LibHac.Common.SpanHelpers; using SpanHelpers = LibHac.Common.SpanHelpers;
@ -70,12 +71,19 @@ namespace Ryujinx.Ava.UI.ViewModels
} }
} }
public IStorageProvider StorageProvider;
public TitleUpdateViewModel(VirtualFileSystem virtualFileSystem, ulong titleId) public TitleUpdateViewModel(VirtualFileSystem virtualFileSystem, ulong titleId)
{ {
VirtualFileSystem = virtualFileSystem; VirtualFileSystem = virtualFileSystem;
TitleId = titleId; TitleId = titleId;
if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
StorageProvider = desktop.MainWindow.StorageProvider;
}
TitleUpdateJsonPath = Path.Combine(AppDataManager.GamesDirPath, titleId.ToString("x16"), "updates.json"); TitleUpdateJsonPath = Path.Combine(AppDataManager.GamesDirPath, titleId.ToString("x16"), "updates.json");
try try
@ -162,7 +170,9 @@ namespace Ryujinx.Ava.UI.ViewModels
try try
{ {
(Nca patchNca, Nca controlNca) = ApplicationLibrary.GetGameUpdateDataFromPartition(VirtualFileSystem, new PartitionFileSystem(file.AsStorage()), TitleId.ToString("x16"), 0); var pfs = new PartitionFileSystem();
pfs.Initialize(file.AsStorage()).ThrowIfFailure();
(Nca patchNca, Nca controlNca) = ApplicationLibrary.GetGameUpdateDataFromPartition(VirtualFileSystem, pfs, TitleId.ToString("x16"), 0);
if (controlNca != null && patchNca != null) if (controlNca != null && patchNca != null)
{ {
@ -177,18 +187,12 @@ namespace Ryujinx.Ava.UI.ViewModels
} }
else else
{ {
Dispatcher.UIThread.Post(async () => Dispatcher.UIThread.InvokeAsync(() => ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogUpdateAddUpdateErrorMessage]));
{
await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance[LocaleKeys.DialogUpdateAddUpdateErrorMessage]);
});
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
Dispatcher.UIThread.Post(async () => Dispatcher.UIThread.InvokeAsync(() => ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogLoadNcaErrorMessage, ex.Message, path)));
{
await ContentDialogHelper.CreateErrorDialog(LocaleManager.Instance.UpdateAndGetDynamicValue(LocaleKeys.DialogLoadNcaErrorMessage, ex.Message, path));
});
} }
} }
} }
@ -200,31 +204,25 @@ namespace Ryujinx.Ava.UI.ViewModels
SortUpdates(); SortUpdates();
} }
public async void Add() public async Task Add()
{ {
OpenFileDialog dialog = new() var result = await StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
{ {
Title = LocaleManager.Instance[LocaleKeys.SelectUpdateDialogTitle],
AllowMultiple = true, AllowMultiple = true,
}; FileTypeFilter = new List<FilePickerFileType>
{
dialog.Filters.Add(new FileDialogFilter new(LocaleManager.Instance[LocaleKeys.AllSupportedFormats])
{ {
Name = "NSP", Patterns = new[] { "*.nsp" },
Extensions = { "nsp" }, AppleUniformTypeIdentifiers = new[] { "com.ryujinx.nsp" },
MimeTypes = new[] { "application/x-nx-nsp" },
},
},
}); });
if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) foreach (var file in result)
{ {
string[] files = await dialog.ShowAsync(desktop.MainWindow); AddUpdate(file.Path.LocalPath);
if (files != null)
{
foreach (string file in files)
{
AddUpdate(file);
}
}
} }
SortUpdates(); SortUpdates();

View file

@ -5,6 +5,7 @@
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
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:controls="clr-namespace:Ryujinx.Ava.UI.Controls"
xmlns:models="clr-namespace:Ryujinx.Ava.UI.Models" xmlns:models="clr-namespace:Ryujinx.Ava.UI.Models"
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers" xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers"
@ -14,7 +15,6 @@
d:DesignWidth="800" d:DesignWidth="800"
x:Class="Ryujinx.Ava.UI.Views.Input.ControllerInputView" x:Class="Ryujinx.Ava.UI.Views.Input.ControllerInputView"
x:DataType="viewModels:ControllerInputViewModel" x:DataType="viewModels:ControllerInputViewModel"
x:CompileBindings="True"
mc:Ignorable="d" mc:Ignorable="d"
Focusable="True"> Focusable="True">
<Design.DataContext> <Design.DataContext>
@ -66,7 +66,7 @@
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
VerticalAlignment="Center" VerticalAlignment="Center"
SelectionChanged="PlayerIndexBox_OnSelectionChanged" SelectionChanged="PlayerIndexBox_OnSelectionChanged"
Items="{Binding PlayerIndexes}" ItemsSource="{Binding PlayerIndexes}"
SelectedIndex="{Binding PlayerId}"> SelectedIndex="{Binding PlayerId}">
<ComboBox.ItemTemplate> <ComboBox.ItemTemplate>
<DataTemplate> <DataTemplate>
@ -94,15 +94,15 @@
HorizontalAlignment="Left" HorizontalAlignment="Left"
VerticalAlignment="Center" VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsProfile}" /> Text="{locale:Locale ControllerSettingsProfile}" />
<ui:ComboBox <ui:FAComboBox
Grid.Column="1" Grid.Column="1"
IsEditable="True" IsEditable="True"
Name="ProfileBox" Name="ProfileBox"
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
VerticalAlignment="Center" VerticalAlignment="Center"
SelectedIndex="0" SelectedIndex="0"
Items="{Binding ProfilesList}" ItemsSource="{Binding ProfilesList}"
Text="{Binding ProfileName}" /> Text="{Binding ProfileName, Mode=TwoWay}" />
<Button <Button
Grid.Column="2" Grid.Column="2"
MinWidth="0" MinWidth="0"
@ -170,7 +170,7 @@
Name="DeviceBox" Name="DeviceBox"
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
VerticalAlignment="Center" VerticalAlignment="Center"
Items="{Binding DeviceList}" ItemsSource="{Binding DeviceList}"
SelectedIndex="{Binding Device}" /> SelectedIndex="{Binding Device}" />
<Button <Button
Grid.Column="2" Grid.Column="2"
@ -203,8 +203,8 @@
<ComboBox <ComboBox
Grid.Column="1" Grid.Column="1"
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
Items="{ReflectionBinding Controllers}" ItemsSource="{Binding Controllers}"
SelectedIndex="{ReflectionBinding Controller}"> SelectedIndex="{Binding Controller}">
<ComboBox.ItemTemplate> <ComboBox.ItemTemplate>
<DataTemplate DataType="models:ControllerModel"> <DataTemplate DataType="models:ControllerModel">
<TextBlock Text="{Binding Name}" /> <TextBlock Text="{Binding Name}" />
@ -461,11 +461,12 @@
HorizontalAlignment="Center" HorizontalAlignment="Center"
VerticalAlignment="Center" VerticalAlignment="Center"
Orientation="Horizontal"> Orientation="Horizontal">
<Slider <controls:SliderScroll
Width="130" Width="130"
Maximum="1" Maximum="1"
TickFrequency="0.01" TickFrequency="0.01"
IsSnapToTickEnabled="True" IsSnapToTickEnabled="True"
SmallChange="0.01"
Minimum="0" Minimum="0"
Value="{ReflectionBinding Configuration.DeadzoneLeft, Mode=TwoWay}" /> Value="{ReflectionBinding Configuration.DeadzoneLeft, Mode=TwoWay}" />
<TextBlock <TextBlock
@ -480,11 +481,12 @@
HorizontalAlignment="Center" HorizontalAlignment="Center"
VerticalAlignment="Center" VerticalAlignment="Center"
Orientation="Horizontal"> Orientation="Horizontal">
<Slider <controls:SliderScroll
Width="130" Width="130"
Maximum="2" Maximum="2"
TickFrequency="0.01" TickFrequency="0.01"
IsSnapToTickEnabled="True" IsSnapToTickEnabled="True"
SmallChange="0.01"
Minimum="0" Minimum="0"
Value="{ReflectionBinding Configuration.RangeLeft, Mode=TwoWay}" /> Value="{ReflectionBinding Configuration.RangeLeft, Mode=TwoWay}" />
<TextBlock <TextBlock
@ -603,11 +605,12 @@
<StackPanel <StackPanel
HorizontalAlignment="Center" HorizontalAlignment="Center"
Orientation="Horizontal"> Orientation="Horizontal">
<Slider <controls:SliderScroll
Width="130" Width="130"
Maximum="1" Maximum="1"
TickFrequency="0.01" TickFrequency="0.01"
IsSnapToTickEnabled="True" IsSnapToTickEnabled="True"
SmallChange="0.01"
Minimum="0" Minimum="0"
Value="{ReflectionBinding Configuration.TriggerThreshold, Mode=TwoWay}" /> Value="{ReflectionBinding Configuration.TriggerThreshold, Mode=TwoWay}" />
<TextBlock <TextBlock
@ -723,7 +726,7 @@
<Button <Button
Margin="10" Margin="10"
Grid.Column="1" Grid.Column="1"
Command="{ReflectionBinding ShowMotionConfig}"> Command="{Binding ShowMotionConfig}">
<TextBlock Text="{locale:Locale ControllerSettingsConfigureGeneral}" /> <TextBlock Text="{locale:Locale ControllerSettingsConfigureGeneral}" />
</Button> </Button>
</Grid> </Grid>
@ -750,7 +753,7 @@
<Button <Button
Margin="10" Margin="10"
Grid.Column="1" Grid.Column="1"
Command="{ReflectionBinding ShowRumbleConfig}"> Command="{Binding ShowRumbleConfig}">
<TextBlock Text="{locale:Locale ControllerSettingsConfigureGeneral}" /> <TextBlock Text="{locale:Locale ControllerSettingsConfigureGeneral}" />
</Button> </Button>
</Grid> </Grid>
@ -1081,11 +1084,12 @@
HorizontalAlignment="Center" HorizontalAlignment="Center"
VerticalAlignment="Center" VerticalAlignment="Center"
Orientation="Horizontal"> Orientation="Horizontal">
<Slider <controls:SliderScroll
Width="130" Width="130"
Maximum="1" Maximum="1"
TickFrequency="0.01" TickFrequency="0.01"
IsSnapToTickEnabled="True" IsSnapToTickEnabled="True"
SmallChange="0.01"
Padding="0" Padding="0"
VerticalAlignment="Center" VerticalAlignment="Center"
Minimum="0" Minimum="0"
@ -1102,11 +1106,12 @@
HorizontalAlignment="Center" HorizontalAlignment="Center"
VerticalAlignment="Center" VerticalAlignment="Center"
Orientation="Horizontal"> Orientation="Horizontal">
<Slider <controls:SliderScroll
Width="130" Width="130"
Maximum="2" Maximum="2"
TickFrequency="0.01" TickFrequency="0.01"
IsSnapToTickEnabled="True" IsSnapToTickEnabled="True"
SmallChange="0.01"
Minimum="0" Minimum="0"
Value="{ReflectionBinding Configuration.RangeRight, Mode=TwoWay}" /> Value="{ReflectionBinding Configuration.RangeRight, Mode=TwoWay}" />
<TextBlock <TextBlock

Some files were not shown because too many files have changed in this diff Show more