Compare commits
284 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
695102405b | ||
|
|
aeb6c64077 | ||
|
|
9050229b12 | ||
|
|
af4aa836a9 | ||
|
|
fb2272546a | ||
|
|
4b25b2c5eb | ||
|
|
c11d9edc4e | ||
|
|
e2a5454263 | ||
|
|
3ca82463cc | ||
|
|
793b36fd59 | ||
|
|
66fe526754 | ||
|
|
7c45d60e60 | ||
|
|
a9931a975d | ||
|
|
3e3ec71329 | ||
|
|
49abdc0590 | ||
|
|
4f931d2991 | ||
|
|
f7c5ccfa87 | ||
|
|
5ce23f29fa | ||
|
|
d13ad64099 | ||
|
|
be88bdb567 | ||
|
|
1bff57f9c9 | ||
|
|
4172d5d5b6 | ||
|
|
1cdea981de | ||
|
|
22ebfd4a82 | ||
|
|
798ac47487 | ||
|
|
fba8051007 | ||
|
|
15721b8e8a | ||
|
|
d43ca37875 | ||
|
|
1b5e7401f2 | ||
|
|
d8b2896bed | ||
|
|
6475f4316a | ||
|
|
93c38da742 | ||
|
|
8070268d2a | ||
|
|
2e6d757852 | ||
|
|
a91550174a | ||
|
|
52b166932d | ||
|
|
d50bcb650f | ||
|
|
654f3a1446 | ||
|
|
71415e5044 | ||
|
|
da33b9a6b9 | ||
|
|
fe2a1a3a80 | ||
|
|
a67171e2b8 | ||
|
|
cf908d63b9 | ||
|
|
ef25c3edc7 | ||
|
|
f956adabc3 | ||
|
|
4244be9592 | ||
|
|
a7fc19e28a | ||
|
|
cf192fca85 | ||
|
|
041bb2bbe5 | ||
|
|
df558d5dcc | ||
|
|
33de03a923 | ||
|
|
1000b9c8ec | ||
|
|
74fddecebc | ||
|
|
a64d4dce7a | ||
|
|
5daca4354c | ||
|
|
da9235f58e | ||
|
|
bd6566524c | ||
|
|
eadc46b0e4 | ||
|
|
71df5317be | ||
|
|
bd7eadc6a0 | ||
|
|
544272925d | ||
|
|
70a31be134 | ||
|
|
55ae2a63d9 | ||
|
|
5a53947a3e | ||
|
|
3bbb5ccb3c | ||
|
|
83472f1020 | ||
|
|
0167bf034c | ||
|
|
35abe363a6 | ||
|
|
97d3fd396e | ||
|
|
b98ccb927e | ||
|
|
db23f072a2 | ||
|
|
4d3d7e81d4 | ||
|
|
441807bc53 | ||
|
|
20e2d85843 | ||
|
|
e279a70606 | ||
|
|
5d9e24af31 | ||
|
|
078627e07b | ||
|
|
365ae2d0cb | ||
|
|
5b6e09b926 | ||
|
|
7072647611 | ||
|
|
30cf4826f8 | ||
|
|
ca47fc1f89 | ||
|
|
16a2c84edd | ||
|
|
df5e27dd06 | ||
|
|
d95226f8c0 | ||
|
|
164fec5b73 | ||
|
|
8dad96f39f | ||
|
|
2244e73c53 | ||
|
|
456cb02d2a | ||
|
|
f310704472 | ||
|
|
96e5a7081b | ||
|
|
1c93e18822 | ||
|
|
ac152454f0 | ||
|
|
7851f7f400 | ||
|
|
2b561dd438 | ||
|
|
3545f557fc | ||
|
|
8dfb9b9ba6 | ||
|
|
7cf36cd25f | ||
|
|
c53692022b | ||
|
|
0f3b7da0b2 | ||
|
|
e22daefb08 | ||
|
|
6fb5319da3 | ||
|
|
6970fec554 | ||
|
|
36be56647f | ||
|
|
cca6326314 | ||
|
|
9176c6780a | ||
|
|
b1a6b12cf3 | ||
|
|
c7cc11cc98 | ||
|
|
ec4b96b95d | ||
|
|
a2e343daa7 | ||
|
|
b811c9e3cd | ||
|
|
8ffaa56bc3 | ||
|
|
eca3358e57 | ||
|
|
757e380e08 | ||
|
|
6c1b5de932 | ||
|
|
d79ac126f7 | ||
|
|
2d7763444e | ||
|
|
1dafa2748c | ||
|
|
9f7bf9581c | ||
|
|
8f39acbaa2 | ||
|
|
81469d0ac9 | ||
|
|
1eae35f072 | ||
|
|
5b82e07b1c | ||
|
|
73886c28ae | ||
|
|
eea09f6e57 | ||
|
|
282c6e5493 | ||
|
|
2c2f602d14 | ||
|
|
f7f1254699 | ||
|
|
90f8a62823 | ||
|
|
e2a1c8b5e3 | ||
|
|
21f6f4b74d | ||
|
|
75d3b3ee0d | ||
|
|
0dde379932 | ||
|
|
9800bbecdf | ||
|
|
60e915c255 | ||
|
|
786f8a42fa | ||
|
|
5a4a0f75f2 | ||
|
|
5aca92a2cc | ||
|
|
7471885119 | ||
|
|
5038fb0c28 | ||
|
|
ff9f493460 | ||
|
|
89e82927ee | ||
|
|
651d9fa495 | ||
|
|
3141100457 | ||
|
|
6b4e81c935 | ||
|
|
e243d5b64e | ||
|
|
252cd0cee6 | ||
|
|
14abcc50b5 | ||
|
|
134aadad5a | ||
|
|
a56bc9e4fa | ||
|
|
5bd466a9b6 | ||
|
|
16c58512ec | ||
|
|
b1b0b13f2a | ||
|
|
03e77faf06 | ||
|
|
7e381924ab | ||
|
|
5763610e54 | ||
|
|
49956a3f84 | ||
|
|
b2915a8142 | ||
|
|
e002aa9ec2 | ||
|
|
0aaf460dbf | ||
|
|
76c8b806d0 | ||
|
|
61783bc530 | ||
|
|
a3a2a04991 | ||
|
|
b6304fca75 | ||
|
|
5612ae5691 | ||
|
|
657c160599 | ||
|
|
f66494aeb5 | ||
|
|
650e7812e5 | ||
|
|
cca54340a2 | ||
|
|
8161b52e7b | ||
|
|
9390bd3865 | ||
|
|
483be133a5 | ||
|
|
e2022eac4c | ||
|
|
977331c3b2 | ||
|
|
64a40ae672 | ||
|
|
4e5e1a801b | ||
|
|
01e06a79a5 | ||
|
|
c762dafc67 | ||
|
|
fd1d461ea8 | ||
|
|
2e14e4b09b | ||
|
|
fb7b37736b | ||
|
|
12e5069168 | ||
|
|
b81bc51b1c | ||
|
|
e3f846c9ec | ||
|
|
7d5876d881 | ||
|
|
990948b912 | ||
|
|
91a08d36b4 | ||
|
|
abc7a0799d | ||
|
|
ab973a3f99 | ||
|
|
d0179b8719 | ||
|
|
78ecdc014b | ||
|
|
0751fa9a2e | ||
|
|
f05230e870 | ||
|
|
9915307be0 | ||
|
|
62183f4524 | ||
|
|
ca1b31329d | ||
|
|
3a3b8008a1 | ||
|
|
e9f0d2349c | ||
|
|
26f195b54f | ||
|
|
aa48c1696d | ||
|
|
e526f376fe | ||
|
|
78bda75985 | ||
|
|
cf95128f0b | ||
|
|
6dbf48d73c | ||
|
|
1614c8e2e4 | ||
|
|
cdebcad4fe | ||
|
|
54c63d6f3b | ||
|
|
d840a8ddba | ||
|
|
c3b31d0fdd | ||
|
|
dd1a6eb25b | ||
|
|
271fab66f5 | ||
|
|
87642e914e | ||
|
|
45aa7c4e62 | ||
|
|
9b1788d1ec | ||
|
|
389a4cfef5 | ||
|
|
ac06631156 | ||
|
|
bc39e668eb | ||
|
|
e452615c77 | ||
|
|
588eb01379 | ||
|
|
4855a01f1a | ||
|
|
cb7fb0e506 | ||
|
|
cdb38f27a7 | ||
|
|
7804bbbcbc | ||
|
|
5db5f93af1 | ||
|
|
bab4bfce84 | ||
|
|
ec06763e50 | ||
|
|
5e315bd65f | ||
|
|
2edfe91ad6 | ||
|
|
7005118876 | ||
|
|
087d44fb40 | ||
|
|
e3722f2591 | ||
|
|
47855ce7b4 | ||
|
|
ec7caabdbd | ||
|
|
adf0a3b2cd | ||
|
|
f88e354ae8 | ||
|
|
df3d8d3990 | ||
|
|
f01dbf7c67 | ||
|
|
7c273f30f3 | ||
|
|
37890f157d | ||
|
|
a2c9b63dfd | ||
|
|
3df676df0f | ||
|
|
276ee36bfe | ||
|
|
17b622833a | ||
|
|
536c169255 | ||
|
|
38640ea696 | ||
|
|
372399a27d | ||
|
|
483b2b3ce0 | ||
|
|
e0040b625e | ||
|
|
10f079e881 | ||
|
|
4a058d3caf | ||
|
|
986ffdcd9c | ||
|
|
97085ef282 | ||
|
|
d02fbcf282 | ||
|
|
c8ae2a7872 | ||
|
|
79da00e098 | ||
|
|
0edd7c400f | ||
|
|
aa03256fd4 | ||
|
|
8f1084b24f | ||
|
|
55c952a51f | ||
|
|
dd6371997c | ||
|
|
c8c4a273c9 | ||
|
|
0570c14343 | ||
|
|
66f2171995 | ||
|
|
3178f11596 | ||
|
|
e2d9db8928 | ||
|
|
945d1f3ae6 | ||
|
|
0585bec6e5 | ||
|
|
11f4f3000a | ||
|
|
474843915c | ||
|
|
3146b951f2 | ||
|
|
2db9b72416 | ||
|
|
9b4710d386 | ||
|
|
ddf5b94f4d | ||
|
|
ecb2567757 | ||
|
|
b59a162473 | ||
|
|
ef5ff520d1 | ||
|
|
433c2e220c | ||
|
|
98ad2f485b | ||
|
|
9966e57e12 | ||
|
|
c11990e1bd | ||
|
|
9b1c0226e1 | ||
|
|
f38a671a7f | ||
|
|
fe952dc9f2 | ||
|
|
d063ffcb20 |
15
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# These are supported funding model platforms
|
||||||
|
|
||||||
|
github: ITotalJustice
|
||||||
|
patreon: totaljustice
|
||||||
|
open_collective: # Replace with a single Open Collective username
|
||||||
|
ko_fi: totaljustice
|
||||||
|
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||||
|
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||||
|
liberapay: # Replace with a single Liberapay username
|
||||||
|
issuehunt: # Replace with a single IssueHunt username
|
||||||
|
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||||
|
polar: # Replace with a single Polar username
|
||||||
|
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
|
||||||
|
thanks_dev: # Replace with a single thanks.dev username
|
||||||
|
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
||||||
31
.github/workflows/build_presets.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
name: build
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest]
|
||||||
|
preset: [MinSizeRel]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
container: devkitpro/devkita64:latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
# fetch latest cmake
|
||||||
|
- uses: lukka/get-cmake@latest
|
||||||
|
|
||||||
|
- name: Configure CMake
|
||||||
|
run: |
|
||||||
|
cmake --preset ${{ matrix.preset }} -DUSE_VFS_GC=0
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: cmake --build --preset ${{ matrix.preset }} --parallel 4
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@master
|
||||||
|
with:
|
||||||
|
name: sphaira-${{ matrix.preset }}
|
||||||
|
path: build/${{ matrix.preset }}/sphaira.nro
|
||||||
3
.gitignore
vendored
@@ -11,6 +11,7 @@ old_code
|
|||||||
created_ncas
|
created_ncas
|
||||||
assets/romfs/shaders
|
assets/romfs/shaders
|
||||||
.vscode/settings.json
|
.vscode/settings.json
|
||||||
|
.idea
|
||||||
info/
|
info/
|
||||||
romfs/shaders
|
romfs/shaders
|
||||||
assets/unused
|
assets/unused
|
||||||
@@ -22,3 +23,5 @@ libs/tweeny
|
|||||||
|
|
||||||
compile_commands.json
|
compile_commands.json
|
||||||
out
|
out
|
||||||
|
|
||||||
|
usb_test/
|
||||||
|
|||||||
@@ -42,5 +42,12 @@ function(dkp_fatal_if_not_found var package)
|
|||||||
endif()
|
endif()
|
||||||
endfunction(dkp_fatal_if_not_found var package)
|
endfunction(dkp_fatal_if_not_found var package)
|
||||||
|
|
||||||
|
# disable exceptions and rtti in order to shrink final binary size.
|
||||||
|
add_compile_options(
|
||||||
|
"$<$<COMPILE_LANGUAGE:C>:-fno-exceptions>"
|
||||||
|
"$<$<COMPILE_LANGUAGE:CXX>:-fno-exceptions>"
|
||||||
|
"$<$<COMPILE_LANGUAGE:CXX>:-fno-rtti>"
|
||||||
|
)
|
||||||
|
|
||||||
add_subdirectory(hbl)
|
add_subdirectory(hbl)
|
||||||
add_subdirectory(sphaira)
|
add_subdirectory(sphaira)
|
||||||
|
|||||||
81
README.md
@@ -1,12 +1,12 @@
|
|||||||
# sphaira
|
# Sphaira
|
||||||
|
|
||||||
A homebrew menu for the switch.
|
A homebrew menu for the Nintendo Switch.
|
||||||
|
|
||||||
It was built for my usage, as such, features that may seem out of place are included because i found them useful.
|
[See the GBATemp thread for more details / discussion](https://gbatemp.net/threads/sphaira-hbmenu-replacement.664523/).
|
||||||
|
|
||||||
[See the gbatemp thread for more details / discussion](https://gbatemp.net/threads/sphaira-hbmenu-replacement.664523/).
|
[We have now have a Discord server!](https://discord.gg/8vZBsrprEc). Please use the issues tab to report bugs, as it is much easier for me to track.
|
||||||
|
|
||||||
## showcase
|
## Showcase
|
||||||
|
|
||||||
| | |
|
| | |
|
||||||
:-------------------------:|:-------------------------:
|
:-------------------------:|:-------------------------:
|
||||||
@@ -15,20 +15,29 @@ It was built for my usage, as such, features that may seem out of place are incl
|
|||||||
 | 
|
 | 
|
||||||
 | 
|
 | 
|
||||||
|
|
||||||
## bug reports
|
## Bug reports
|
||||||
|
|
||||||
for any bug reports, please use the issues tab and explain in as much detail as possible!
|
For any bug reports, please use the issues tab and explain in as much detail as possible!
|
||||||
|
|
||||||
please include:
|
Please include:
|
||||||
|
|
||||||
- CFW type (i assume Atmosphere, but someone out there is still using Rajnx)
|
- CFW type (i assume Atmosphere, but someone out there is still using Rajnx);
|
||||||
- CFW version
|
- CFW version;
|
||||||
- FW version
|
- FW version;
|
||||||
- The bug itself and how to reproduce it
|
- The bug itself and how to reproduce it.
|
||||||
|
|
||||||
## file assoc
|
## FTP
|
||||||
|
|
||||||
sphaira has file assoc support. lets say your app supports loading .png files, then you could write an assoc file, then when using the file browser, clicking on a .png file will launch your app along with the .png file as argv[1]. This was primarly added for rom loading support for emulators / frontends such as retroarch, melonds, mgba etc.
|
FTP can be enabled via the network menu. It uses the same config as ftpsrv `/config/ftpsrv/config.ini`. [See here for the full list
|
||||||
|
of all configs available](https://github.com/ITotalJustice/ftpsrv/blob/master/assets/config.ini.template).
|
||||||
|
|
||||||
|
## MTP
|
||||||
|
|
||||||
|
MTP can be enabled via the Network menu.
|
||||||
|
|
||||||
|
## File association
|
||||||
|
|
||||||
|
Sphaira has file association support. Let's say your app supports loading .png files, then you could write an association file, then when using the file browser, clicking on a .png file will launch your app along with the .png file as argv[1]. This was primarly added for rom loading support for emulators / frontends such as RetroArch, MelonDS, mGBA etc.
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
[config]
|
[config]
|
||||||
@@ -36,9 +45,43 @@ path=/switch/your_app.nro
|
|||||||
supported_extensions=jpg|png|mp4|mp3
|
supported_extensions=jpg|png|mp4|mp3
|
||||||
```
|
```
|
||||||
|
|
||||||
the `path` field is optional. if left out, it will use the name of the ini to find the nro. For example, if the ini is called mgba.ini, it will try to find the nro in /switch/mgba.nro and /switch/folder/mgba.nro.
|
The `path` field is optional. If left out, it will use the name of the ini to find the nro. For example, if the ini is called mgba.ini, it will try to find the nro in /switch/mgba.nro and /switch/folder/mgba.nro.
|
||||||
|
|
||||||
see `assets/romfs/assoc/` for more examples of file assoc entries
|
See `assets/romfs/assoc/` for more examples of file assoc entries.
|
||||||
|
|
||||||
|
## Installing (applications)
|
||||||
|
|
||||||
|
Sphaira can install applications (nsp, xci, nsz, xcz) from various sources (sd card, gamecard, ftp, usb).
|
||||||
|
|
||||||
|
For informantion about the install options, [see the wiki](https://github.com/ITotalJustice/sphaira/wiki/Install).
|
||||||
|
|
||||||
|
### Usb (install)
|
||||||
|
|
||||||
|
The USB protocol is the same as tinfoil, so tools such as [ns-usbloader](https://github.com/developersu/ns-usbloader) and [fluffy](https://github.com/fourminute/Fluffy) should work with sphaira. You may also use the provided python script found [here](tools/usb_install_pc.py).
|
||||||
|
|
||||||
|
### Ftp (install)
|
||||||
|
|
||||||
|
Once you have connected your ftp client to your switch, you can upload files to install into the `install` folder.
|
||||||
|
|
||||||
|
## Building from source
|
||||||
|
|
||||||
|
You will first need to install [devkitPro](https://devkitpro.org/wiki/Getting_Started).
|
||||||
|
|
||||||
|
Next you will need to install the dependencies:
|
||||||
|
```sh
|
||||||
|
sudo pacman -S switch-dev deko3d switch-cmake switch-curl switch-glm switch-zlib
|
||||||
|
```
|
||||||
|
|
||||||
|
Once devkitPro and all dependencies are installed, you can now build sphaira.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://github.com/ITotalJustice/sphaira.git
|
||||||
|
cd sphaira
|
||||||
|
cmake --preset MinSizeRel
|
||||||
|
cmake --build --preset MinSizeRel
|
||||||
|
```
|
||||||
|
|
||||||
|
The output will be found in `build/MinSizeRel/sphaira.nro`
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
@@ -50,4 +93,8 @@ see `assets/romfs/assoc/` for more examples of file assoc entries
|
|||||||
- deko3d-nanovg
|
- deko3d-nanovg
|
||||||
- libpulsar
|
- libpulsar
|
||||||
- minIni
|
- minIni
|
||||||
- gbatemp
|
- GBATemp
|
||||||
|
- hb-appstore
|
||||||
|
- haze
|
||||||
|
- nxdumptool (for gamecard bin dumping and rsa verify code)
|
||||||
|
- Everyone who has contributed to this project!
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 569 B After Width: | Height: | Size: 569 B |
|
Before Width: | Height: | Size: 703 B After Width: | Height: | Size: 703 B |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 783 B After Width: | Height: | Size: 783 B |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
BIN
assets/icon.jpg
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 7.6 KiB |
@@ -1,4 +0,0 @@
|
|||||||
[config]
|
|
||||||
path=/retroarch/cores/2048_libretro_libnx.nro
|
|
||||||
supported_extensions=
|
|
||||||
database=2048
|
|
||||||
4
assets/romfs/assoc/DoubleCherryGB_libretro_libnx.ini
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[config]
|
||||||
|
path=/retroarch/cores/DoubleCherryGB_libretro_libnx.nro
|
||||||
|
supported_extensions=cgb|dmg|gb|gbc|sgb
|
||||||
|
database=Nintendo - Game Boy|Nintendo - Game Boy Color
|
||||||
2
assets/romfs/assoc/SwitchWave.ini
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[config]
|
||||||
|
supported_extensions=mp3|ogg|flac|wav|aac|ac3|aif|asf|mp4|mkv|m3u|m3u8|hls|vob|avi|dv|flv|m2ts|m2v|m4a|mov|mpeg|mpg|mts|swf|ts|vob|wma|wmv|png|jpg|jpeg|bmp|gif
|
||||||
4
assets/romfs/assoc/ardens_libretro_libnx.ini
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[config]
|
||||||
|
path=/retroarch/cores/ardens_libretro_libnx.nro
|
||||||
|
supported_extensions=hex|arduboy
|
||||||
|
database=Arduboy Inc - Arduboy
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/arduous_libretro_libnx.nro
|
path=/retroarch/cores/arduous_libretro_libnx.nro
|
||||||
supported_extensions=hex
|
supported_extensions=hex
|
||||||
database=Arduboy
|
database=Arduboy Inc - Arduboy
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/atari800_libretro_libnx.nro
|
path=/retroarch/cores/atari800_libretro_libnx.nro
|
||||||
supported_extensions=xfd|atr|cdm|cas|bin|a52|zip|atx|car|rom|com|xex
|
supported_extensions=xfd|atr|dcm|cas|bin|a52|zip|atx|car|rom|com|xex|m3u
|
||||||
database=Atari - 5200|Atari - 8-bit
|
database=Atari - 5200|Atari - 8-bit
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/bluemsx_libretro_libnx.nro
|
path=/retroarch/cores/bluemsx_libretro_libnx.nro
|
||||||
supported_extensions=rom|ri|mx1|mx2|col|dsk|cas|sg|sc|sf|m3u
|
supported_extensions=rom|ri|mx1|mx2|dsk|col|sg|sc|sf|cas|m3u
|
||||||
database=Microsoft - MSX|Microsoft - MSX2|Coleco - ColecoVision|Sega - SG-1000
|
database=Microsoft - MSX|Microsoft - MSX2|Coleco - ColecoVision|Sega - SG-1000|Spectravideo - SVI-318 - SVI-328
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
[config]
|
|
||||||
path=/retroarch/cores/citra_libretro_libnx.nro
|
|
||||||
supported_extensions=3ds|3dsx|elf|axf|cci|cxi|app
|
|
||||||
database=Nintendo - Nintendo 3DS
|
|
||||||
4
assets/romfs/assoc/dosbox_pure_libretro_libnx.ini
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[config]
|
||||||
|
path=/retroarch/cores/dosbox_pure_libretro_libnx.nro
|
||||||
|
supported_extensions=zip|dosz|exe|com|bat|iso|chd|cue|ins|img|ima|vhd|jrc|tc|m3u|m3u8|conf|/
|
||||||
|
database=DOS
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/dosbox_svn_libretro_libnx.nro
|
path=/retroarch/cores/dosbox_svn_libretro_libnx.nro
|
||||||
supported_extensions=exe|com|bat|conf|cue|iso
|
supported_extensions=exe|com|bat|conf|cue|iso|img|/
|
||||||
database=DOS
|
database=DOS
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
[config]
|
|
||||||
path=/retroarch/cores/fbalpha2012_cps1_libretro_libnx.nro
|
|
||||||
supported_extensions=zip
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
[config]
|
|
||||||
path=/retroarch/cores/fbalpha2012_cps2_libretro_libnx.nro
|
|
||||||
supported_extensions=zip
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
[config]
|
|
||||||
path=/retroarch/cores/fbalpha2012_libretro_libnx.nro
|
|
||||||
supported_extensions=iso|zip|7z
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
[config]
|
|
||||||
path=/retroarch/cores/fbalpha2012_neogeo_libretro_libnx.nro
|
|
||||||
supported_extensions=zip
|
|
||||||
@@ -2,3 +2,4 @@
|
|||||||
path=/retroarch/cores/fbneo_libretro_libnx.nro
|
path=/retroarch/cores/fbneo_libretro_libnx.nro
|
||||||
supported_extensions=zip|7z|cue|ccd
|
supported_extensions=zip|7z|cue|ccd
|
||||||
database=FBNeo - Arcade Games
|
database=FBNeo - Arcade Games
|
||||||
|
use_base_name=true
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/frodo_libretro_libnx.nro
|
path=/retroarch/cores/frodo_libretro_libnx.nro
|
||||||
supported_extensions=d64|t64|x64|p00|lnx|zip
|
supported_extensions=d64|t64|x64|p00|lnx|lyx|zip
|
||||||
database=Commodore - 64
|
database=Commodore - 64
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/fuse_libretro_libnx.nro
|
path=/retroarch/cores/fuse_libretro_libnx.nro
|
||||||
supported_extensions=tzx|tap|z80|rzx|scl|trd|dsk|zip
|
supported_extensions=tzx|tap|z80|rzx|scl|trd|dsk|dck|sna|szx|zip
|
||||||
database=Sinclair - ZX Spectrum +3|Sinclair - ZX Spectrum
|
database=Sinclair - ZX Spectrum +3|Sinclair - ZX Spectrum
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
[config]
|
|
||||||
path=/retroarch/cores/gme_libretro_libnx.nro
|
|
||||||
supported_extensions=ay|gbs|gym|hes|kss|nsf|nsfe|sap|spc|vgm|vgz|zip
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
[config]
|
|
||||||
path=/retroarch/cores/gong_libretro_libnx.nro
|
|
||||||
supported_extensions=
|
|
||||||
4
assets/romfs/assoc/gpsp_libretro_libnx.ini
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[config]
|
||||||
|
path=/retroarch/cores/gpsp_libretro_libnx.nro
|
||||||
|
supported_extensions=gba|bin
|
||||||
|
database=Nintendo - Game Boy Advance
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/handy_libretro_libnx.nro
|
path=/retroarch/cores/handy_libretro_libnx.nro
|
||||||
supported_extensions=lnx|o
|
supported_extensions=lnx|lyx|o
|
||||||
database=Atari - Lynx
|
database=Atari - Lynx
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/mame2000_libretro_libnx.nro
|
path=/retroarch/cores/mame2000_libretro_libnx.nro
|
||||||
supported_extensions=zip|7z|chd
|
supported_extensions=zip|7z
|
||||||
database=MAME 2000
|
database=MAME 2000
|
||||||
|
use_base_name=true
|
||||||
|
|||||||
@@ -2,3 +2,4 @@
|
|||||||
path=/retroarch/cores/mame2003_libretro_libnx.nro
|
path=/retroarch/cores/mame2003_libretro_libnx.nro
|
||||||
supported_extensions=zip
|
supported_extensions=zip
|
||||||
database=MAME 2003
|
database=MAME 2003
|
||||||
|
use_base_name=true
|
||||||
|
|||||||
@@ -2,3 +2,4 @@
|
|||||||
path=/retroarch/cores/mame2003_plus_libretro_libnx.nro
|
path=/retroarch/cores/mame2003_plus_libretro_libnx.nro
|
||||||
supported_extensions=zip
|
supported_extensions=zip
|
||||||
database=MAME 2003-Plus
|
database=MAME 2003-Plus
|
||||||
|
use_base_name=true
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/mednafen_lynx_libretro_libnx.nro
|
path=/retroarch/cores/mednafen_lynx_libretro_libnx.nro
|
||||||
supported_extensions=lnx|o
|
supported_extensions=lnx|lyx|o
|
||||||
database=Atari - Lynx
|
database=Atari - Lynx
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
[config]
|
|
||||||
path=/retroarch/cores/minivmac_libretro_libnx.nro
|
|
||||||
supported_extensions=dsk|img|zip|hvf|cmd
|
|
||||||
4
assets/romfs/assoc/mrboom_libretro_libnx.ini
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[config]
|
||||||
|
path=/retroarch/cores/mrboom_libretro_libnx.nro
|
||||||
|
supported_extensions=desktop
|
||||||
|
database=MrBoom
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
[config]
|
|
||||||
path=/retroarch/cores/mu_libretro_libnx.nro
|
|
||||||
supported_extensions=prc|pqa|img|pdb|zip
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
[config]
|
|
||||||
path=/retroarch/cores/numero_libretro_libnx.nro
|
|
||||||
supported_extensions=8xp|8xk|8xg
|
|
||||||
2
assets/romfs/assoc/nxmp.ini
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[config]
|
||||||
|
supported_extensions=mp3|ogg|flac|wav|aac|ac3|aif|asf|mp4|mkv|m3u|m3u8|hls|vob|avi|dv|flv|m2ts|m2v|m4a|mov|mpeg|mpg|mts|swf|ts|vob|wma|wmv|png|jpg|jpeg|bmp|gif
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/pcsx_rearmed_libretro_libnx.nro
|
path=/retroarch/cores/pcsx_rearmed_libretro_libnx.nro
|
||||||
supported_extensions=bin|cue|img|mdf|pbp|toc|cbn|m3u|ccd|chd
|
supported_extensions=bin|cue|img|mdf|pbp|toc|cbn|m3u|ccd|chd|iso|exe
|
||||||
database=Sony - PlayStation
|
database=Sony - PlayStation
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
[config]
|
|
||||||
path=/retroarch/cores/pocketcdg_libretro_libnx.nro
|
|
||||||
supported_extensions=cdg
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/ppsspp_libretro_libnx.nro
|
path=/retroarch/cores/ppsspp_libretro_libnx.nro
|
||||||
supported_extensions=elf|iso|cso|prx|pbp
|
supported_extensions=elf|iso|cso|prx|pbp|chd
|
||||||
database=Sony - PlayStation Portable
|
database=Sony - PlayStation Portable
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/px68k_libretro_libnx.nro
|
path=/retroarch/cores/px68k_libretro_libnx.nro
|
||||||
supported_extensions=dim|zip|img|d88|88d|hdm|dup|2hd|xdf|hdf|cmd|m3u
|
supported_extensions=dim|img|d88|88d|hdm|dup|2hd|xdf|hdf|cmd|m3u
|
||||||
database=Sharp - X68000
|
database=Sharp - X68000
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/quasi88_libretro_libnx.nro
|
path=/retroarch/cores/quasi88_libretro_libnx.nro
|
||||||
supported_extensions=d88|u88|m3u
|
supported_extensions=d88|u88|m3u
|
||||||
|
database=NEC - PC-8001 - PC-8801
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/retro8_libretro_libnx.nro
|
path=/retroarch/cores/retro8_libretro_libnx.nro
|
||||||
supported_extensions=p8|png
|
supported_extensions=p8|png
|
||||||
database=PICO8
|
database=PICO-8
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
[config]
|
|
||||||
ext=nro
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/stella_libretro_libnx.nro
|
path=/retroarch/cores/stella2023_libretro_libnx.nro
|
||||||
supported_extensions=a26|bin
|
supported_extensions=a26|bin
|
||||||
database=Atari - 2600
|
database=Atari - 2600
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
[config]
|
|
||||||
path=/retroarch/cores/superbroswar_libretro_libnx.nro
|
|
||||||
supported_extensions=game
|
|
||||||
4
assets/romfs/assoc/vircon32_libretro_libnx.ini
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[config]
|
||||||
|
path=/retroarch/cores/vircon32_libretro_libnx.nro
|
||||||
|
supported_extensions=v32|V32
|
||||||
|
database=Vircon32
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[config]
|
[config]
|
||||||
path=/retroarch/cores/x1_libretro_libnx.nro
|
path=/retroarch/cores/x1_libretro_libnx.nro
|
||||||
supported_extensions=dx1|zip|2d|2hd|tfd|d88|88d|hdm|xdf|dup|tap|cmd
|
supported_extensions=dx1|zip|2d|2hd|tfd|d88|88d|hdm|xdf|dup|tap|cmd
|
||||||
database=Sharp X1
|
database=Sharp - X1
|
||||||
|
|||||||
@@ -2,3 +2,4 @@
|
|||||||
path=/retroarch/cores/xrick_libretro_libnx.nro
|
path=/retroarch/cores/xrick_libretro_libnx.nro
|
||||||
supported_extensions=zip
|
supported_extensions=zip
|
||||||
database=Rick Dangerous
|
database=Rick Dangerous
|
||||||
|
use_base_name=true
|
||||||
|
|||||||
8
assets/romfs/github/ftpsrv.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"url": "https://github.com/ITotalJustice/ftpsrv",
|
||||||
|
"assets": [
|
||||||
|
{
|
||||||
|
"name": "switch"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
3
assets/romfs/github/sphaira.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"url": "https://github.com/ITotalJustice/sphaira"
|
||||||
|
}
|
||||||
3
assets/romfs/github/untitled.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"url": "https://github.com/ITotalJustice/untitled"
|
||||||
|
}
|
||||||
@@ -1,114 +1,392 @@
|
|||||||
{
|
{
|
||||||
"Launch": "Start",
|
"[Applet Mode]": " | Applet Modus |",
|
||||||
"Options": "Optionen",
|
"No Internet": "Kein Internet",
|
||||||
"Homebrew Options": "Homebrew-Optionen",
|
"Switch-Handheld!": "Handheld!",
|
||||||
"Sort By": "Sortieren nach",
|
"Switch-Docked!": "Angedockt!",
|
||||||
"Sort Options": "Sortieroptionen",
|
"Audio disabled due to suspended game": "Audio deaktivert wegen Spielabbruch",
|
||||||
"Updated": "Aktualisiert",
|
"Are you sure you wish to cancel?": "Bist du sicher dass du abbrechen willst?",
|
||||||
"Size": "Größe",
|
"An error occurred": "",
|
||||||
"Alphabetical": "Alphabetisch",
|
"If this message appears repeatedly, please open an issue.": "Bei wiederholtem Auftreten bitte Issue erstellen.",
|
||||||
"Decending": "Absteigend",
|
|
||||||
"Ascending": "Aufsteigend",
|
"Menu Options": " Menü | Optionen",
|
||||||
"Sort": "Sortieren",
|
"Menu": "Menü",
|
||||||
"Order": "Befehl",
|
"Theme": "Themes",
|
||||||
"Info": "Info",
|
"Theme Options": " Themes | Optionen",
|
||||||
"Delete": "Löschen",
|
"Select Theme": "Theme wählen",
|
||||||
"Hide Sphaira": "Sphaira verstecken",
|
|
||||||
"Are you sure you want to delete ": "Sind Sie sicher, dass Sie löschen möchten? ",
|
|
||||||
"Install Forwarder": "Weiterleitung installieren",
|
|
||||||
"WARNING: Installing forwarders will lead to a ban!": "ACHTUNG: Der Einbau von Forwardern führt zu einem Verbot!",
|
|
||||||
"Back": "Zurück",
|
|
||||||
"Install": "Installieren",
|
|
||||||
"Fs": "Fs",
|
|
||||||
"App": "App",
|
|
||||||
"Menu": "Speisekarte",
|
|
||||||
"Homebrew": "Homebrew",
|
|
||||||
"FileBrowser": "DateiBrowser",
|
|
||||||
"Open": "Offen",
|
|
||||||
"Theme Options": "Themenoptionen",
|
|
||||||
"Select Theme": "Wählen Sie Thema aus",
|
|
||||||
"Shuffle": "Shuffle",
|
|
||||||
"Music": "Musik",
|
"Music": "Musik",
|
||||||
"Show Hidden": "Versteckt anzeigen",
|
"12 Hour Time": "12-Std Zeitformat",
|
||||||
"Folders First": "Ordner zuerst",
|
"Download Default Music": "",
|
||||||
"Hidden Last": "Zuletzt versteckt",
|
"Failed to download default_music.bfstm, please try again": "",
|
||||||
"Yes": "Ja",
|
"Overwrite current default music?": "",
|
||||||
"No": "NEIN",
|
|
||||||
"Network Options": "Netzwerkoptionen",
|
"Network": "Konnektivität",
|
||||||
"Nxlink": "Nxlink",
|
"Network Options": "Konnektivität | Optionen",
|
||||||
"Check for update": "Suchen Sie nach Updates",
|
"Ftp": "FTP",
|
||||||
"File Options": "Dateioptionen",
|
"Mtp": "MTP",
|
||||||
"Cut": "Schneiden",
|
"Nxlink": "NXLink",
|
||||||
"Copy": "Kopie",
|
"Nxlink Connected": "NXLink | Verbunden",
|
||||||
"Rename": "Umbenennen",
|
"Nxlink Upload": "NXLink | wird hochgeladen...",
|
||||||
"Advanced Options": "Datei erstellen",
|
"Nxlink Finished": "NXLink | Hochladen beendet",
|
||||||
"Create File": "Datei erstellen",
|
|
||||||
"Create Folder": "Ordner erstellen",
|
"Language": "Sprache",
|
||||||
"View as text": "Als Text anzeigen",
|
"Auto": "Systemsprache",
|
||||||
"View as text (unfinished)": "Als Text anzeigen (unvollendet)",
|
"English": "English",
|
||||||
"Set Archive Bit": "Archivbit setzen",
|
"Japanese": "日本語",
|
||||||
"AppStore Options": "AppStore-Optionen",
|
"French": "Français",
|
||||||
"All": "Alle",
|
"German": "Deutsch",
|
||||||
|
"Italian": "Italiano",
|
||||||
|
"Spanish": "Español",
|
||||||
|
"Chinese": "中文",
|
||||||
|
"Korean": "한국어",
|
||||||
|
"Dutch": "Nederlands",
|
||||||
|
"Portuguese": "Português",
|
||||||
|
"Russian": "Русский",
|
||||||
|
"Swedish": "Svenska",
|
||||||
|
"Vietnamese": "tiếng Việt",
|
||||||
|
"Ukrainian": "Українська",
|
||||||
|
|
||||||
|
"Misc": "Extras",
|
||||||
|
"Misc Options": " Extras | Optionen",
|
||||||
"Games": "Spiele",
|
"Games": "Spiele",
|
||||||
"Emulators": "Emulatoren",
|
"Game Options": "",
|
||||||
"Tools": "Werkzeuge",
|
"Hide forwarders": "",
|
||||||
"Advanced": "Fortschrittlich",
|
"Launch random game": "",
|
||||||
"Themes": "Themen",
|
"List meta records": "",
|
||||||
"Legacy": "Vermächtnis",
|
"Entries": "",
|
||||||
"Misc": "Sonstiges",
|
"Failed to list application meta entries": "",
|
||||||
"Downloads": "Downloads",
|
"No meta entries found...\n": "",
|
||||||
"Filter": "Filter",
|
"Updating application record list": "",
|
||||||
"Search": "Suchen",
|
"Dump": "",
|
||||||
"Menu Options": "Menüoptionen",
|
"Select content to dump": "",
|
||||||
"Header": "Kopfzeile",
|
"Dump All": "",
|
||||||
"Theme": "Thema",
|
"Dump Application": "",
|
||||||
"Network": "Netzwerk",
|
"Dump Patch": "",
|
||||||
"Logging": "Protokollierung",
|
"Dump AddOnContent": "",
|
||||||
"Enabled": "Ermöglicht",
|
"Dump DataPatch": "",
|
||||||
"Disabled": "Deaktiviert",
|
"Select dump location": "",
|
||||||
"Replace hbmenu on exit": "Ersetzen Sie hbmenu beim Beenden",
|
"microSD card (/dumps/NSP/)": "",
|
||||||
"Misc Options": "Verschiedene Optionen",
|
"USB transfer (Switch 2 Switch)": "",
|
||||||
"Themezer": "Themezer",
|
"/dev/null (Speed Test)": "",
|
||||||
"Irs": "Irs",
|
"Dumping": "",
|
||||||
"Web": "Web",
|
"Dump successfull!": "",
|
||||||
"Download": "Herunterladen",
|
"Dump failed!": "",
|
||||||
"Next Page": "Nächste Seite",
|
"Success": "",
|
||||||
"Prev Page": "Vorherige Seite",
|
"Delete successfull!": "",
|
||||||
"Pad ": "Unterlage ",
|
"Delete failed!": "",
|
||||||
" (Unconnected)": " (Nicht verbunden)",
|
|
||||||
|
"Themezer": "Themezer | NX Themes",
|
||||||
|
"Themezer Options": " Themezer | Optionen",
|
||||||
|
"Nsfw": "NSFW",
|
||||||
|
"Page": "Seiten Nr. wählen ",
|
||||||
|
"Page %zu / %zu": " %zu / %zu",
|
||||||
|
"Enter Page Number": "Zu Seite Nr.: ___",
|
||||||
|
"Bad Page": "Seite nicht gefunden",
|
||||||
|
"Download theme?": "Theme herunterladen?",
|
||||||
|
|
||||||
|
"GitHub": "GitHub",
|
||||||
|
"Downloading json": "Lade JSON-File",
|
||||||
|
"Select asset to download for ": "Wähle Asset für den Download von ",
|
||||||
|
|
||||||
|
"FTP Install": "",
|
||||||
|
"FTP Install (EXPERIMENTAL)": "",
|
||||||
|
"Connection Type: WiFi | Strength: ": "",
|
||||||
|
"Connection Type: Ethernet": "",
|
||||||
|
"Connection Type: None": "",
|
||||||
|
"Host:": "",
|
||||||
|
"Port:": "",
|
||||||
|
"Username:": "",
|
||||||
|
"Password:": "",
|
||||||
|
"SSID:": "",
|
||||||
|
"Passphrase:": "",
|
||||||
|
"Failed to install via FTP, press B to exit...": "",
|
||||||
|
"Ftp install success!": "",
|
||||||
|
"Ftp install failed!": "",
|
||||||
|
"USB Install": "",
|
||||||
|
"USB": "",
|
||||||
|
"Connected, waiting for file list...": "",
|
||||||
|
"Connected, starting transfer...": "",
|
||||||
|
"Failed to init usb, press B to exit...": "",
|
||||||
|
"Waiting for connection...": "",
|
||||||
|
"Transferring data...": "",
|
||||||
|
"USB connected, sending file list": "",
|
||||||
|
"Sent file list, waiting for command...": "",
|
||||||
|
"waiting for usb connection...": "",
|
||||||
|
"Disable MTP for usb install": "",
|
||||||
|
"Re-enabled MTP": "",
|
||||||
|
"Installed via usb": "",
|
||||||
|
"Usb install success!": "",
|
||||||
|
"Usb install failed!": "",
|
||||||
|
"Press B to exit...": "",
|
||||||
|
"GameCard Install": "",
|
||||||
|
"GameCard": "",
|
||||||
|
"GC": "",
|
||||||
|
"System memory %.1f GB": "",
|
||||||
|
"microSD card %.1f GB": "",
|
||||||
|
"Nand Install": "",
|
||||||
|
"SD Card Install": "",
|
||||||
|
"Exit": "",
|
||||||
|
"Gc install success!": "",
|
||||||
|
"Gc install failed!": "",
|
||||||
|
|
||||||
|
"IRS (Infrared Joycon Camera)": "",
|
||||||
|
"IRS": "",
|
||||||
|
"Irs": "IR-Sensor",
|
||||||
|
"Ambient Noise Level: ": "Umgebungsrauschen: ",
|
||||||
|
"Controller": "Controller",
|
||||||
|
"Pad ": "Pad ",
|
||||||
"HandHeld": "Handheld",
|
"HandHeld": "Handheld",
|
||||||
" (Available)": " (Verfügbar)",
|
" (Available)": " (Verfügbar)",
|
||||||
"0 (Sideways)": "0 (Seitwärts)",
|
" (Unsupported)": " (Nicht unterstützt)",
|
||||||
"90 (Flat)": "90 (flach)",
|
" (Unconnected)": " (Nicht verbunden)",
|
||||||
"180 (-Sideways)": "180 (-Seitwärts)",
|
"Rotation": "Rotation",
|
||||||
"270 (Upside down)": "270 (verkehrt herum)",
|
"0 (Sideways)": "0° (Seitlich)",
|
||||||
|
"90 (Flat)": "90° (Flach)",
|
||||||
|
"180 (-Sideways)": "180° (-Seitlich)",
|
||||||
|
"270 (Upside down)": "270° (Kopfüber)",
|
||||||
|
"Colour": "Farbe",
|
||||||
"Grey": "Grau",
|
"Grey": "Grau",
|
||||||
"Ironbow": "Eisenbogen",
|
"Ironbow": "Ironbow",
|
||||||
"Green": "Grün",
|
"Green": "Grün",
|
||||||
"Red": "Rot",
|
"Red": "Rot",
|
||||||
"Blue": "Blau",
|
"Blue": "Blau",
|
||||||
|
"Light Target": "Lichtziel",
|
||||||
"All leds": "Alle LEDs",
|
"All leds": "Alle LEDs",
|
||||||
"Bright group": "Helle Gruppe",
|
"Bright group": "Helle Gruppe",
|
||||||
"Dim group": "Dunkle Gruppe",
|
"Dim group": "Dunkle Gruppe",
|
||||||
"None": "Keiner",
|
"None": "Keine",
|
||||||
"Normal image": "Normales Bild",
|
"Gain": "Verstärkung",
|
||||||
"Negative image": "Negatives Bild",
|
"Negative Image": "Negativ-Bild",
|
||||||
"320x240": "320x240",
|
"Normal image": "Normal-Bild",
|
||||||
"160x120": "160x120",
|
"Negative image": "Negativ-Bild",
|
||||||
"80x60": "80x60",
|
|
||||||
"40x30": "40x30",
|
|
||||||
"20x15": "20x15",
|
|
||||||
"Controller": "Regler",
|
|
||||||
"Rotation": "Drehung",
|
|
||||||
"Colour": "Farbe",
|
|
||||||
"Light Target": "Leichtes Ziel",
|
|
||||||
"Gain": "Gewinnen",
|
|
||||||
"Negative Image": "Negatives Bild",
|
|
||||||
"Format": "Format",
|
"Format": "Format",
|
||||||
"Trimming Format": "Zuschneideformat",
|
"Trimming Format": "Beschnitt-Format",
|
||||||
"External Light Filter": "Externer Lichtfilter",
|
"320x240": "320×240",
|
||||||
|
"160x120": "160×120",
|
||||||
|
"80x60": "80×60",
|
||||||
|
"40x30": "40×30",
|
||||||
|
"20x15": "20×15",
|
||||||
|
"External Light Filter": "Externes Lichtfilter",
|
||||||
"Load Default": "Standard laden",
|
"Load Default": "Standard laden",
|
||||||
"No Internet": "Kein Internet",
|
|
||||||
"[Applet Mode]": "[Applet-Modus]",
|
"Advanced": "Erweitert...",
|
||||||
"Language": "Sprache"
|
"Advanced Options": " Erweitert | Optionen",
|
||||||
}
|
"Logging": "Protokollieren",
|
||||||
|
"Replace hbmenu on exit": "hbmenu durch sphaira ersetzen",
|
||||||
|
"Restore hbmenu?": "hbmenu wiederherstellen?",
|
||||||
|
"Restore": "Wiederherstellen",
|
||||||
|
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "Die Datei /switch/hbmenu.nro fehlt.\nInstalliere hbmenu über den hb-AppStore.",
|
||||||
|
"Failed to restore hbmenu, please re-download hbmenu": "Fehler, hbmenu nicht wiederhergrstellt!\nInstalliere hbmenu über den hb-AppStore.",
|
||||||
|
"Failed to restore hbmenu, using sphaira instead": "Fehler, hbmenu nicht wiederhergrstellt!\nVerwende weiter sphaira",
|
||||||
|
"Restored hbmenu, closing sphaira": "hbmenu wurde wiederhergestellt, schließe sphaira",
|
||||||
|
"Restored hbmenu": "hbmenu wurde wiederhergestellt",
|
||||||
|
"Restart Sphaira?": "sphaira erneut starten?",
|
||||||
|
"Press OK to restart Sphaira": "Drücke OK um sphaira erneut zustarten",
|
||||||
|
"Text scroll speed": "Laufschrift Tempo",
|
||||||
|
"Slow": "Niedrig",
|
||||||
|
"Normal": "Mittel",
|
||||||
|
"Fast": "Hoch",
|
||||||
|
"Set right-side menu": "",
|
||||||
|
"Install options": "",
|
||||||
|
"Install Options": "",
|
||||||
|
"Enable sysmmc": "",
|
||||||
|
"Enable emummc": "",
|
||||||
|
"Show install warning": "Warnungen anzeigen",
|
||||||
|
"Install location": "Einhängepunkt",
|
||||||
|
"System memory": "NAND Systemspeicher",
|
||||||
|
"microSD card": "SD-Karte",
|
||||||
|
"Boost CPU clock": "",
|
||||||
|
"Allow downgrade": "",
|
||||||
|
"Skip if already installed": "",
|
||||||
|
"Ticket only": "",
|
||||||
|
"Skip base": "",
|
||||||
|
"Skip patch": "",
|
||||||
|
"Skip dlc": "",
|
||||||
|
"Skip data patch": "",
|
||||||
|
"Skip ticket": "",
|
||||||
|
"Skip NCA hash verify": "",
|
||||||
|
"Skip RSA header verify": "",
|
||||||
|
"Skip RSA NPDM verify": "",
|
||||||
|
"Ignore distribution bit": "",
|
||||||
|
"Convert to standard crypto": "",
|
||||||
|
"Lower master key": "",
|
||||||
|
"Lower system version": "",
|
||||||
|
|
||||||
|
"Homebrew": "hbmenu",
|
||||||
|
"Apps": "hb-Apps",
|
||||||
|
"Homebrew Options": " hbmenu | Optionen",
|
||||||
|
"Hide Sphaira": "Verstecke sphaira",
|
||||||
|
"Install Forwarder": "Forwarder installieren",
|
||||||
|
"WARNING: Installing forwarders will lead to a ban!": "Installiere Forwarder-NSP´s mit VORSICHT.\nEs erhöht das Risiko eines Konsolen-Banns!",
|
||||||
|
"Installing Forwarder": "Installiere Forwarder",
|
||||||
|
"Creating Program": "Erstelle Programm",
|
||||||
|
"Creating Control": "Erstelle Control",
|
||||||
|
"Creating Meta": "Erstelle Meta",
|
||||||
|
"Writing Nca": "Schreibe NCA",
|
||||||
|
"Updating ncm databse": "Aktualisiere NCM-Datenbank",
|
||||||
|
"Pushing application record": "Übertrage Anwendungsdaten",
|
||||||
|
"Failed to install forwarder": "Fehler beim installieren des Forwarders",
|
||||||
|
"Unstarred ": "Favorit entfernt ",
|
||||||
|
"Starred ": "Favorit ",
|
||||||
|
"Failed to remove old forwarder, please manually remove it!": "",
|
||||||
|
|
||||||
|
"AppStore": "hb-AppStore",
|
||||||
|
"Appstore": "",
|
||||||
|
"Store": "hb-Store",
|
||||||
|
"Filter: %s | Sort: %s | Order: %s": "Rubrik: %s | Sort.nach.: %s | Ordnung: %s",
|
||||||
|
"AppStore Options": " hb-AppStore | Optionen",
|
||||||
|
"Info": "Info",
|
||||||
|
"Changelog": "Neuerungen",
|
||||||
|
"Details": "Details",
|
||||||
|
"version: %s": "Version: %s",
|
||||||
|
"updated: %s": "Letztes Update am: %s",
|
||||||
|
"category: %s": "Rubrik: %s",
|
||||||
|
"extracted: %.2f MiB": "Größe: %.2f MiB",
|
||||||
|
"app_dls: %s": "Anzahl Downloads: %s",
|
||||||
|
"More by Author": "Weitere Apps des Entwicklers",
|
||||||
|
"Leave Feedback": "Feedback hinterlassen",
|
||||||
|
|
||||||
|
"FileBrowser": "Datei-Manager",
|
||||||
|
"Files": "Dateien",
|
||||||
|
"%zd files": "%zd Dateien",
|
||||||
|
"%zd dirs": "%zd Ordner",
|
||||||
|
"File Options": "Datei - Ordner | Optionen",
|
||||||
|
"Show Hidden": "Versteckte zeigen",
|
||||||
|
"Folders First": "Ordner zuerst",
|
||||||
|
"Hidden Last": "Versteckte zuletzt",
|
||||||
|
"Cut": "Ausschneiden",
|
||||||
|
"Copy": "Kopieren",
|
||||||
|
"Copying ": "Kopiert wird: ",
|
||||||
|
"Paste": "Einfügen",
|
||||||
|
"Paste ": "Einfügen von: ",
|
||||||
|
" file(s)?": " Datei/en?",
|
||||||
|
"Pasting ": "Eingefügt wird: ",
|
||||||
|
"Pasting": "Eingefügt wurde:",
|
||||||
|
"Rename": "Umbenennen",
|
||||||
|
"Set New File Name": "Neuen Dateinamen festlegen",
|
||||||
|
"Extract zip": "",
|
||||||
|
"Extract Options": "",
|
||||||
|
"Extract here": "",
|
||||||
|
"Extract to root": "",
|
||||||
|
"Are you sure you want to extract to root?": "",
|
||||||
|
"Extract to...": "",
|
||||||
|
"Enter the path to the folder to extract into": "",
|
||||||
|
"Extracting ": "",
|
||||||
|
"Extract success!": "",
|
||||||
|
"Extract failed!": "",
|
||||||
|
"Compress to zip": "",
|
||||||
|
"Compress Options": "",
|
||||||
|
"Compress": "",
|
||||||
|
"Compress to...": "",
|
||||||
|
"Compressing ": "",
|
||||||
|
"Compress success!": "",
|
||||||
|
"Compress failed!": "",
|
||||||
|
"Create File": "Neue Datei",
|
||||||
|
"Set File Name": "Dateiname festlegen",
|
||||||
|
"Create Folder": "Neuer Ordner",
|
||||||
|
"Set Folder Name": "Ordner umbenennen",
|
||||||
|
"Creating ": "Erstellt wird: ",
|
||||||
|
"Upload": "",
|
||||||
|
"Select upload location": "",
|
||||||
|
"No upload locations set!": "",
|
||||||
|
"Uploading": "",
|
||||||
|
"Upload successfull!": "",
|
||||||
|
"Upload failed!": "",
|
||||||
|
"View as text (unfinished)": "Als Text anzeigen",
|
||||||
|
"Ignore read only": "Schreibschutz umgehen?",
|
||||||
|
"Mount": "Einhängen",
|
||||||
|
"Sd": "SD-Karte | Root-Verzeichnis",
|
||||||
|
"Image System memory": "Album | NAND Systemspeicher",
|
||||||
|
"Image microSD card": "Album | SD-Karte",
|
||||||
|
"Empty...": "Keine Daten...",
|
||||||
|
"Open with DayBreak?": "Mit Daybreak öffnen?",
|
||||||
|
"Launch ": "Starte ",
|
||||||
|
"Launch option for: ": "Start Option für: ",
|
||||||
|
"Select launcher for: ": "Wähle Launcher für: ",
|
||||||
|
|
||||||
|
"Sort By": "Sortierung",
|
||||||
|
"Sort Options": " Sortierung | Optionen",
|
||||||
|
"Filter": "Rubrik",
|
||||||
|
"All": "Alles anzeigen",
|
||||||
|
"Emulators": "Emulatoren",
|
||||||
|
"Tools": "Tools",
|
||||||
|
"Themes": "Themes",
|
||||||
|
"Legacy": "Älteres",
|
||||||
|
"Sort": "Sortiert nach",
|
||||||
|
"Size": "Größe",
|
||||||
|
"Size (Star)": "Favorit | Größe",
|
||||||
|
"Alphabetical": "Name",
|
||||||
|
"Alphabetical (Star)": "Favorit | Name",
|
||||||
|
"Updated": "zuletzt aktualisiert",
|
||||||
|
"Updated (Star)": "Favorit | zuletzt aktualisiert",
|
||||||
|
"Downloads": "Downloads",
|
||||||
|
"Likes": "Beliebtheit",
|
||||||
|
"ID": "Theme | Paket ID",
|
||||||
|
"Order": "Anordnung",
|
||||||
|
"Descending": "Absteigend ↓",
|
||||||
|
"Descending (down)": "Absteigend ↓",
|
||||||
|
"Desc": " ↓",
|
||||||
|
"Ascending": "Aufsteigend ↑",
|
||||||
|
"Ascending (Up)": "Aufsteigend ↑",
|
||||||
|
"Asc": " ↑",
|
||||||
|
"Layout": "",
|
||||||
|
"List": "",
|
||||||
|
"Icon": "",
|
||||||
|
"Grid": "",
|
||||||
|
"Search": "Suchen",
|
||||||
|
|
||||||
|
"Options": "Optionen",
|
||||||
|
"OK": "OK",
|
||||||
|
"Back": "Zurück",
|
||||||
|
"Select": "Auswählen",
|
||||||
|
"Open": "Öffne",
|
||||||
|
"Launch": "Starte",
|
||||||
|
"Restart": "Neustart",
|
||||||
|
"Next": "",
|
||||||
|
"Prev": "",
|
||||||
|
"Unstar": "Kein Favorit",
|
||||||
|
"Star": "Favorit",
|
||||||
|
"Yes": "Ja",
|
||||||
|
"No": "Nein",
|
||||||
|
"On": "",
|
||||||
|
"Off": "",
|
||||||
|
|
||||||
|
"Install": "Installieren",
|
||||||
|
"Install Selected files?": "",
|
||||||
|
"Installing ": "Installiert wird: ",
|
||||||
|
"Installed ": "",
|
||||||
|
"Installed!": "Installiert!",
|
||||||
|
"Trying to load ": "Versucht zu laden wird: ",
|
||||||
|
"Checking MD5": "Checke MD5 Prüfsumme",
|
||||||
|
|
||||||
|
"Delete": "Löschen",
|
||||||
|
"Delete Selected files?": "Ausgewähle Dateien löschen?",
|
||||||
|
"Are you sure you want to delete ": "Bist du sicher zu löschen? Bestätige Löschung von: ",
|
||||||
|
"Scanning ": "Gescannt wird: ",
|
||||||
|
"Deleting ": "Gelöscht wird: ",
|
||||||
|
"Deleting": "Gelöscht wurde:",
|
||||||
|
"Remove": "Entfernen",
|
||||||
|
"Completely remove ": "Komplett gelöscht wird: ",
|
||||||
|
"Removing ": "Entfernt wird: ",
|
||||||
|
"Removed ": "Entfernt wurde: ",
|
||||||
|
"Uninstalling ": "Deinstalliert wird: ",
|
||||||
|
|
||||||
|
"Download": "Download",
|
||||||
|
"Downloading ": "Heruntergeladen wird: ",
|
||||||
|
"Downloaded ": "Heruntergeladen wurde: ",
|
||||||
|
|
||||||
|
"Update": "Update",
|
||||||
|
"Update avaliable: ": "Update verfügbar: ",
|
||||||
|
"Download update: ": " Herunterladen des Updates: ",
|
||||||
|
"Updated to ": "Aktualisiert auf: ",
|
||||||
|
"Failed to download update": "Herunterladen des Updates fehlgeschlagen!",
|
||||||
|
|
||||||
|
"%zu hours %zu minutes remaining": "",
|
||||||
|
"%zu minutes %zu seconds remaining": "",
|
||||||
|
"%zu seconds remaining": "",
|
||||||
|
|
||||||
|
"Loading...": "Wird geladen...",
|
||||||
|
"Loading": "Wird geladen",
|
||||||
|
"Empty!": "Keine Daten!",
|
||||||
|
"Not Ready...": "Nicht bereit...",
|
||||||
|
"Error loading page!": "Ladefehler!"
|
||||||
|
}
|
||||||
@@ -1,114 +1,392 @@
|
|||||||
{
|
{
|
||||||
"Launch" : "Launch",
|
"[Applet Mode]": "[Applet Mode]",
|
||||||
"Options" : "Options",
|
"No Internet": "No Internet",
|
||||||
"Homebrew Options" : "Homebrew Options",
|
"Switch-Handheld!": "Switch-Handheld!",
|
||||||
"Sort By" : "Sort By",
|
"Switch-Docked!": "Switch-Docked!",
|
||||||
"Sort Options" : "Sort Options",
|
"Audio disabled due to suspended game": "Audio disabled due to suspended game",
|
||||||
"Updated" : "Updated",
|
"Are you sure you wish to cancel?": "Are you sure you wish to cancel?",
|
||||||
"Size" : "Size",
|
"An error occurred": "An error occurred",
|
||||||
"Alphabetical" : "Alphabetical",
|
"If this message appears repeatedly, please open an issue.": "If this message appears repeatedly, please open an issue.",
|
||||||
"Decending" : "Decending",
|
|
||||||
"Ascending" : "Ascending",
|
"Menu Options": "Menu Options",
|
||||||
"Sort" : "Sort",
|
"Menu": "Menu",
|
||||||
"Order" : "Order",
|
"Theme": "Theme",
|
||||||
"Info" : "Info",
|
"Theme Options": "Theme Options",
|
||||||
"Delete" : "Delete",
|
"Select Theme": "Select Theme",
|
||||||
"Hide Sphaira" : "Hide Sphaira",
|
"Music": "Music",
|
||||||
"Are you sure you want to delete " : "Are you sure you want to delete ",
|
"12 Hour Time": "12 Hour Time",
|
||||||
"Install Forwarder" : "Install Forwarder",
|
"Download Default Music": "Download Default Music",
|
||||||
"WARNING: Installing forwarders will lead to a ban!" : "WARNING: Installing forwarders will lead to a ban!",
|
"Failed to download default_music.bfstm, please try again": "Failed to download default_music.bfstm, please try again",
|
||||||
"Back" : "Back",
|
"Overwrite current default music?": "Overwrite current default music?",
|
||||||
"Install" : "Install",
|
|
||||||
"Fs" : "Fs",
|
"Network": "Network",
|
||||||
"App" : "App",
|
"Network Options": "Network Options",
|
||||||
"Menu" : "Menu",
|
"Ftp": "FTP",
|
||||||
"Homebrew" : "Homebrew",
|
"Mtp": "MTP",
|
||||||
"FileBrowser" : "FileBrowser",
|
"Nxlink": "Nxlink",
|
||||||
"Open" : "Open",
|
"Nxlink Connected": "Nxlink Connected",
|
||||||
"Theme Options" : "Theme Options",
|
"Nxlink Upload": "Nxlink Upload",
|
||||||
"Select Theme" : "Select Theme",
|
"Nxlink Finished": "Nxlink Finished",
|
||||||
"Shuffle" : "Shuffle",
|
|
||||||
"Music" : "Music",
|
"Language": "Language",
|
||||||
"Show Hidden" : "Show Hidden",
|
"Auto": "Auto",
|
||||||
"Folders First" : "Folders First",
|
"English": "English",
|
||||||
"Hidden Last" : "Hidden Last",
|
"Japanese": "日本語",
|
||||||
"Yes" : "Yes",
|
"French": "Français",
|
||||||
"No" : "No",
|
"German": "Deutsch",
|
||||||
"Network Options" : "Network Options",
|
"Italian": "Italiano",
|
||||||
"Nxlink" : "Nxlink",
|
"Spanish": "Español",
|
||||||
"Check for update" : "Check for update",
|
"Chinese": "中文",
|
||||||
"File Options" : "File Options",
|
"Korean": "한국어",
|
||||||
"Cut" : "Cut",
|
"Dutch": "Dutch",
|
||||||
"Copy" : "Copy",
|
"Portuguese": "Português",
|
||||||
"Rename" : "Rename",
|
"Russian": "Русский",
|
||||||
"Advanced Options" : "Create File",
|
"Swedish": "Svenska",
|
||||||
"Create File" : "Create File",
|
"Vietnamese": "Vietnamese",
|
||||||
"Create Folder" : "Create Folder",
|
"Ukrainian": "Українська",
|
||||||
"View as text" : "View as text",
|
|
||||||
"View as text (unfinished)" : "View as text (unfinished)",
|
"Misc": "Misc",
|
||||||
"Set Archive Bit" : "Set Archive Bit",
|
"Misc Options": "Misc Options",
|
||||||
"AppStore Options" : "AppStore Options",
|
"Games": "Games",
|
||||||
"All" : "All",
|
"Game Options": "Game Options",
|
||||||
"Games" : "Games",
|
"Hide forwarders": "Hide forwarders",
|
||||||
"Emulators" : "Emulators",
|
"Launch random game": "Launch random game",
|
||||||
"Tools" : "Tools",
|
"List meta records": "List meta records",
|
||||||
"Advanced" : "Advanced",
|
"Entries": "Entries",
|
||||||
"Themes" : "Themes",
|
"Failed to list application meta entries": "Failed to list application meta entries",
|
||||||
"Legacy" : "Legacy",
|
"No meta entries found...\n": "No meta entries found...\n",
|
||||||
"Misc" : "Misc",
|
"Updating application record list": "Updating application record list",
|
||||||
"Downloads" : "Downloads",
|
"Dump": "Dump",
|
||||||
"Filter" : "Filter",
|
"Select content to dump": "Select content to dump",
|
||||||
"Search" : "Search",
|
"Dump All": "Dump All",
|
||||||
"Menu Options" : "Menu Options",
|
"Dump Application": "Dump Application",
|
||||||
"Header" : "Header",
|
"Dump Patch": "Dump Patch",
|
||||||
"Theme" : "Theme",
|
"Dump AddOnContent": "Dump AddOnContent",
|
||||||
"Network" : "Network",
|
"Dump DataPatch": "Dump DataPatch",
|
||||||
"Logging" : "Logging",
|
"Select dump location": "Select dump location",
|
||||||
"Enabled" : "Enabled",
|
"microSD card (/dumps/NSP/)": "microSD card (/dumps/NSP/)",
|
||||||
"Disabled" : "Disabled",
|
"USB transfer (Switch 2 Switch)": "USB transfer (Switch 2 Switch)",
|
||||||
"Replace hbmenu on exit" : "Replace hbmenu on exit",
|
"/dev/null (Speed Test)": "/dev/null (Speed Test)",
|
||||||
"Misc Options" : "Misc Options",
|
"Dumping": "Dumping",
|
||||||
"Themezer" : "Themezer",
|
"Dump successfull!": "Dump successfull!",
|
||||||
"Irs" : "Irs",
|
"Dump failed!": "Dump failed!",
|
||||||
"Web" : "Web",
|
"Success": "Success",
|
||||||
"Download" : "Download",
|
"Delete successfull!": "Delete successfull!",
|
||||||
"Next Page" : "Next Page",
|
"Delete failed!": "Delete failed!",
|
||||||
"Prev Page" : "Prev Page",
|
|
||||||
"Pad " : "Pad ",
|
"Themezer": "Themezer",
|
||||||
" (Unconnected)" : " (Unconnected)",
|
"Themezer Options": "Themezer Options",
|
||||||
"HandHeld" : "HandHeld",
|
"Nsfw": "Nsfw",
|
||||||
" (Available)" : " (Available)",
|
"Page": "Page",
|
||||||
"0 (Sideways)" : "0 (Sideways)",
|
"Page %zu / %zu": "Page %zu / %zu",
|
||||||
"90 (Flat)" : "90 (Flat)",
|
"Enter Page Number": "Enter Page Number",
|
||||||
"180 (-Sideways)" : "180 (-Sideways)",
|
"Bad Page": "Bad Page",
|
||||||
"270 (Upside down)" : "270 (Upside down)",
|
"Download theme?": "Download theme?",
|
||||||
"Grey" : "Grey",
|
|
||||||
"Ironbow" : "Ironbow",
|
"GitHub": "GitHub",
|
||||||
"Green" : "Green",
|
"Downloading json": "Downloading json",
|
||||||
"Red" : "Red",
|
"Select asset to download for ": "Select asset to download for ",
|
||||||
"Blue" : "Blue",
|
|
||||||
"All leds" : "All leds",
|
"FTP Install": "FTP Install",
|
||||||
"Bright group" : "Bright group",
|
"FTP Install (EXPERIMENTAL)": "FTP Install (EXPERIMENTAL)",
|
||||||
"Dim group" : "Dim group",
|
"Connection Type: WiFi | Strength: ": "Connection Type: WiFi | Strength: ",
|
||||||
"None" : "None",
|
"Connection Type: Ethernet": "Connection Type: Ethernet",
|
||||||
"Normal image" : "Normal image",
|
"Connection Type: None": "Connection Type: None",
|
||||||
"Negative image" : "Negative image",
|
"Host:": "Host:",
|
||||||
"320x240" : "320x240",
|
"Port:": "Port:",
|
||||||
"160x120" : "160x120",
|
"Username:": "Username:",
|
||||||
"80x60" : "80x60",
|
"Password:": "Password:",
|
||||||
"40x30" : "40x30",
|
"SSID:": "SSID:",
|
||||||
"20x15" : "20x15",
|
"Passphrase:": "Passphrase",
|
||||||
"Controller" : "Controller",
|
"Failed to install via FTP, press B to exit...": "Failed to install via FTP, press to exit...",
|
||||||
"Rotation" : "Rotation",
|
"Ftp install success!": "Ftp install success!",
|
||||||
"Colour" : "Colour",
|
"Ftp install failed!": "Ftp install failed!",
|
||||||
"Light Target" : "Light Target",
|
"USB Install": "USB Install",
|
||||||
"Gain" : "Gain",
|
"USB": "USB",
|
||||||
"Negative Image" : "Negative Image",
|
"Connected, waiting for file list...": "Connected, waiting for file list...",
|
||||||
"Format" : "Format",
|
"Connected, starting transfer...": "Connected, starting transfer...",
|
||||||
"Trimming Format" : "Trimming Format",
|
"Failed to init usb, press B to exit...": "Failed to init usb, press to exit...",
|
||||||
"External Light Filter" : "External Light Filter",
|
"Waiting for connection...": "Waiting for connection...",
|
||||||
"Load Default" : "Load Default",
|
"Transferring data...": "Transferring data...",
|
||||||
"No Internet" : "No Internet",
|
"USB connected, sending file list": "USB connected, sending file list",
|
||||||
"[Applet Mode]" : "[Applet Mode]",
|
"Sent file list, waiting for command...": "Sent file list, waiting for command...",
|
||||||
"Language": "Language"
|
"waiting for usb connection...": "waiting for usb connection...",
|
||||||
}
|
"Disable MTP for usb install": "Disable MTP for usb install",
|
||||||
|
"Re-enabled MTP": "Re-enabled MTP",
|
||||||
|
"Installed via usb": "Installed via usb",
|
||||||
|
"Usb install success!": "Usb install success!",
|
||||||
|
"Usb install failed!": "Usb install failed!",
|
||||||
|
"Press B to exit...": "Press to exit...",
|
||||||
|
"GameCard Install": "GameCard Install",
|
||||||
|
"GameCard": "GameCard",
|
||||||
|
"GC": "GC",
|
||||||
|
"System memory %.1f GB": "System memory %.1f GB",
|
||||||
|
"microSD card %.1f GB": "microSD card %.1f GB",
|
||||||
|
"Nand Install": "Nand Install",
|
||||||
|
"SD Card Install": "SD Card Install",
|
||||||
|
"Exit": "Exit",
|
||||||
|
"Gc install success!": "Gc install success!",
|
||||||
|
"Gc install failed!": "Gc install failed!",
|
||||||
|
|
||||||
|
"IRS (Infrared Joycon Camera)": "IRS (Infrared Joycon Camera)",
|
||||||
|
"IRS": "IRS",
|
||||||
|
"Irs": "Irs",
|
||||||
|
"Ambient Noise Level: ": "Ambient Noise Level: ",
|
||||||
|
"Controller": "Controller",
|
||||||
|
"Pad ": "Pad ",
|
||||||
|
"HandHeld": "HandHeld",
|
||||||
|
" (Available)": " (Available)",
|
||||||
|
" (Unsupported)": " (Unsupported)",
|
||||||
|
" (Unconnected)": " (Unconnected)",
|
||||||
|
"Rotation": "Rotation",
|
||||||
|
"0 (Sideways)": "0 (Sideways)",
|
||||||
|
"90 (Flat)": "90 (Flat)",
|
||||||
|
"180 (-Sideways)": "180 (-Sideways)",
|
||||||
|
"270 (Upside down)": "270 (Upside down)",
|
||||||
|
"Colour": "Colour",
|
||||||
|
"Grey": "Grey",
|
||||||
|
"Ironbow": "Ironbow",
|
||||||
|
"Green": "Green",
|
||||||
|
"Red": "Red",
|
||||||
|
"Blue": "Blue",
|
||||||
|
"Light Target": "Light Target",
|
||||||
|
"All leds": "All leds",
|
||||||
|
"Bright group": "Bright group",
|
||||||
|
"Dim group": "Dim group",
|
||||||
|
"None": "None",
|
||||||
|
"Gain": "Gain",
|
||||||
|
"Negative Image": "Negative Image",
|
||||||
|
"Normal image": "Normal image",
|
||||||
|
"Negative image": "Negative image",
|
||||||
|
"Format": "Format",
|
||||||
|
"Trimming Format": "Trimming Format",
|
||||||
|
"320x240": "320×240",
|
||||||
|
"160x120": "160×120",
|
||||||
|
"80x60": "80×60",
|
||||||
|
"40x30": "40×30",
|
||||||
|
"20x15": "20×15",
|
||||||
|
"External Light Filter": "External Light Filter",
|
||||||
|
"Load Default": "Load Default",
|
||||||
|
|
||||||
|
"Advanced": "Advanced",
|
||||||
|
"Advanced Options": "Advanced Options",
|
||||||
|
"Logging": "Logging",
|
||||||
|
"Replace hbmenu on exit": "Replace hbmenu on exit",
|
||||||
|
"Restore hbmenu?": "Restore hbmenu?",
|
||||||
|
"Restore": "Restore",
|
||||||
|
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu",
|
||||||
|
"Failed to restore hbmenu, please re-download hbmenu": "Failed to restore hbmenu, please re-download hbmenu",
|
||||||
|
"Failed to restore hbmenu, using sphaira instead": "Failed to restore hbmenu, using sphaira instead",
|
||||||
|
"Restored hbmenu, closing sphaira": "Restored hbmenu, closing sphaira",
|
||||||
|
"Restored hbmenu": "Restored hbmenu",
|
||||||
|
"Restart Sphaira?": "Restart Sphaira?",
|
||||||
|
"Press OK to restart Sphaira": "Press OK to restart Sphaira",
|
||||||
|
"Text scroll speed": "Text scroll speed",
|
||||||
|
"Slow": "Slow",
|
||||||
|
"Normal": "Normal",
|
||||||
|
"Fast": "Fast",
|
||||||
|
"Set right-side menu": "Set right-side menu",
|
||||||
|
"Install options": "Install options",
|
||||||
|
"Install Options": "Install Options",
|
||||||
|
"Enable sysmmc": "Enable sysmmc",
|
||||||
|
"Enable emummc": "Enable emummc",
|
||||||
|
"Show install warning": "Show install warning",
|
||||||
|
"Install location": "Install location",
|
||||||
|
"System memory": "System memory",
|
||||||
|
"microSD card": "microSD card",
|
||||||
|
"Boost CPU clock": "Boost CPU clock",
|
||||||
|
"Allow downgrade": "Allow downgrade",
|
||||||
|
"Skip if already installed": "Skip if already installed",
|
||||||
|
"Ticket only": "Ticket only",
|
||||||
|
"Skip base": "Skip base",
|
||||||
|
"Skip patch": "Skip patch",
|
||||||
|
"Skip dlc": "Skip dlc",
|
||||||
|
"Skip data patch": "Skip data patch",
|
||||||
|
"Skip ticket": "Skip ticket",
|
||||||
|
"Skip NCA hash verify": "Skip NCA hash verify",
|
||||||
|
"Skip RSA header verify": "Skip RSA header verify",
|
||||||
|
"Skip RSA NPDM verify": "Skip RSA NPDM verify",
|
||||||
|
"Ignore distribution bit": "Ignore distribution bit",
|
||||||
|
"Convert to standard crypto": "Convert to standard crypto",
|
||||||
|
"Lower master key": "Lower master key",
|
||||||
|
"Lower system version": "Lower system version",
|
||||||
|
|
||||||
|
"Homebrew": "Homebrew",
|
||||||
|
"Apps": "Apps",
|
||||||
|
"Homebrew Options": "Homebrew Options",
|
||||||
|
"Hide Sphaira": "Hide Sphaira",
|
||||||
|
"Install Forwarder": "Install Forwarder",
|
||||||
|
"WARNING: Installing forwarders will lead to a ban!": "WARNING: Installing forwarders will lead to a ban!",
|
||||||
|
"Installing Forwarder": "Installing Forwarder",
|
||||||
|
"Creating Program": "Creating Program",
|
||||||
|
"Creating Control": "Creating Control",
|
||||||
|
"Creating Meta": "Creating Meta",
|
||||||
|
"Writing Nca": "Writing Nca",
|
||||||
|
"Updating ncm databse": "Updating ncm databse",
|
||||||
|
"Pushing application record": "Pushing application record",
|
||||||
|
"Failed to install forwarder": "Failed to install forwarder",
|
||||||
|
"Unstarred ": "Unstarred ",
|
||||||
|
"Starred ": "Starred ",
|
||||||
|
"Failed to remove old forwarder, please manually remove it!": "Failed to remove old forwarder, please manually remove it!",
|
||||||
|
|
||||||
|
"AppStore": "AppStore",
|
||||||
|
"Appstore": "AppStore",
|
||||||
|
"Store": "Store",
|
||||||
|
"Filter: %s | Sort: %s | Order: %s": "Filter: %s | Sort: %s | Order: %s",
|
||||||
|
"AppStore Options": "AppStore Options",
|
||||||
|
"Info": "Info",
|
||||||
|
"Changelog": "Changelog",
|
||||||
|
"Details": "Details",
|
||||||
|
"version: %s": "version: %s",
|
||||||
|
"updated: %s": "updated: %s",
|
||||||
|
"category: %s": "category: %s",
|
||||||
|
"extracted: %.2f MiB": "extracted: %.2f MiB",
|
||||||
|
"app_dls: %s": "app_dls: %s",
|
||||||
|
"More by Author": "More by Author",
|
||||||
|
"Leave Feedback": "Leave Feedback",
|
||||||
|
|
||||||
|
"FileBrowser": "FileBrowser",
|
||||||
|
"Files": "Files",
|
||||||
|
"%zd files": "%zd files",
|
||||||
|
"%zd dirs": "%zd dirs",
|
||||||
|
"File Options": "File Options",
|
||||||
|
"Show Hidden": "Show Hidden",
|
||||||
|
"Folders First": "Folders First",
|
||||||
|
"Hidden Last": "Hidden Last",
|
||||||
|
"Cut": "Cut",
|
||||||
|
"Copy": "Copy",
|
||||||
|
"Copying ": "Copying ",
|
||||||
|
"Paste": "Paste",
|
||||||
|
"Paste ": "Paste ",
|
||||||
|
" file(s)?": " file(s)?",
|
||||||
|
"Pasting ": "Pasting ",
|
||||||
|
"Pasting": "Pasting",
|
||||||
|
"Rename": "Rename",
|
||||||
|
"Set New File Name": "Set New File Name",
|
||||||
|
"Extract zip": "Extract zip",
|
||||||
|
"Extract Options": "Extract Options",
|
||||||
|
"Extract here": "Extract here",
|
||||||
|
"Extract to root": "Extract to root",
|
||||||
|
"Are you sure you want to extract to root?": "Are you sure you want to extract to root?",
|
||||||
|
"Extract to...": "Extract to...",
|
||||||
|
"Enter the path to the folder to extract into": "Enter the path to the folder to extract into",
|
||||||
|
"Extracting ": "Extracting ",
|
||||||
|
"Extract success!": "Extract success!",
|
||||||
|
"Extract failed!": "Extract failed!",
|
||||||
|
"Compress to zip": "Compress to zip",
|
||||||
|
"Compress Options": "Compress Options",
|
||||||
|
"Compress": "Compress",
|
||||||
|
"Compress to...": "Compress to...",
|
||||||
|
"Compressing ": "Compressing ",
|
||||||
|
"Compress success!": "Compress success!",
|
||||||
|
"Compress failed!": "Compress failed!",
|
||||||
|
"Create File": "Create File",
|
||||||
|
"Set File Name": "Set File Name",
|
||||||
|
"Create Folder": "Create Folder",
|
||||||
|
"Set Folder Name": "Set Folder Name",
|
||||||
|
"Creating ": "Creating ",
|
||||||
|
"Upload": "Upload",
|
||||||
|
"Select upload location": "Select upload location",
|
||||||
|
"No upload locations set!": "No upload locations set!",
|
||||||
|
"Uploading": "Uploading",
|
||||||
|
"Upload successfull!": "Upload successfull!",
|
||||||
|
"Upload failed!": "Upload failed!",
|
||||||
|
"View as text (unfinished)": "View as text (unfinished)",
|
||||||
|
"Ignore read only": "Ignore read only",
|
||||||
|
"Mount": "Mount",
|
||||||
|
"Sd": "Sd",
|
||||||
|
"Image System memory": "Image System memory",
|
||||||
|
"Image microSD card": "Image microSD card",
|
||||||
|
"Empty...": "Empty...",
|
||||||
|
"Open with DayBreak?": "Open with DayBreak?",
|
||||||
|
"Launch ": "Launch ",
|
||||||
|
"Launch option for: ": "Launch option for: ",
|
||||||
|
"Select launcher for: ": "Select launcher for: ",
|
||||||
|
|
||||||
|
"Sort By": "Sort By",
|
||||||
|
"Sort Options": "Sort Options",
|
||||||
|
"Filter": "Filter",
|
||||||
|
"All": "All",
|
||||||
|
"Emulators": "Emulators",
|
||||||
|
"Tools": "Tools",
|
||||||
|
"Themes": "Themes",
|
||||||
|
"Legacy": "Legacy",
|
||||||
|
"Sort": "Sort",
|
||||||
|
"Size": "Size",
|
||||||
|
"Size (Star)": "Size (Star)",
|
||||||
|
"Alphabetical": "Alphabetical",
|
||||||
|
"Alphabetical (Star)": "Alphabetical (Star)",
|
||||||
|
"Updated": "Updated",
|
||||||
|
"Updated (Star)": "Updated (Star)",
|
||||||
|
"Downloads": "Downloads",
|
||||||
|
"Likes": "Likes",
|
||||||
|
"ID": "ID",
|
||||||
|
"Order": "Order",
|
||||||
|
"Descending": "Descending",
|
||||||
|
"Descending (down)": "Descending (down)",
|
||||||
|
"Desc": "Desc",
|
||||||
|
"Ascending": "Ascending",
|
||||||
|
"Ascending (Up)": "Ascending (Up)",
|
||||||
|
"Asc": "Asc",
|
||||||
|
"Layout": "Layout",
|
||||||
|
"List": "List",
|
||||||
|
"Icon": "Icon",
|
||||||
|
"Grid": "Grid",
|
||||||
|
"Search": "Search",
|
||||||
|
|
||||||
|
"Options": "Options",
|
||||||
|
"OK": "OK",
|
||||||
|
"Back": "Back",
|
||||||
|
"Select": "Select",
|
||||||
|
"Open": "Open",
|
||||||
|
"Launch": "Launch",
|
||||||
|
"Restart": "Restart",
|
||||||
|
"Next": "Next",
|
||||||
|
"Prev": "Prev",
|
||||||
|
"Unstar": "Unstar",
|
||||||
|
"Star": "Star",
|
||||||
|
"Yes": "Yes",
|
||||||
|
"No": "No",
|
||||||
|
"On": "On",
|
||||||
|
"Off": "Off",
|
||||||
|
|
||||||
|
"Install": "Install",
|
||||||
|
"Install Selected files?": "Install Selected files?",
|
||||||
|
"Installing ": "Installing ",
|
||||||
|
"Installed ": "Installed ",
|
||||||
|
"Installed!": "Installed!",
|
||||||
|
"Trying to load ": "Trying to load ",
|
||||||
|
"Checking MD5": "Checking MD5",
|
||||||
|
|
||||||
|
"Delete": "Delete",
|
||||||
|
"Delete Selected files?": "Delete Selected files?",
|
||||||
|
"Are you sure you want to delete ": "Are you sure you want to delete ",
|
||||||
|
"Scanning ": "Scanning ",
|
||||||
|
"Deleting ": "Deleting ",
|
||||||
|
"Deleting": "Deleting",
|
||||||
|
"Remove": "Remove",
|
||||||
|
"Completely remove ": "Completely remove ",
|
||||||
|
"Removing ": "Removing ",
|
||||||
|
"Removed ": "Removed ",
|
||||||
|
"Uninstalling ": "Uninstalling ",
|
||||||
|
|
||||||
|
"Download": "Download",
|
||||||
|
"Downloading ": "Downloading ",
|
||||||
|
"Downloaded ": "Downloaded ",
|
||||||
|
|
||||||
|
"Update": "Update",
|
||||||
|
"Update avaliable: ": "Update avaliable: ",
|
||||||
|
"Download update: ": "Download update: ",
|
||||||
|
"Updated to ": "Updated to ",
|
||||||
|
"Failed to download update": "Failed to download update",
|
||||||
|
|
||||||
|
"%zu hours %zu minutes remaining": "%zu hours %zu minutes remaining",
|
||||||
|
"%zu minutes %zu seconds remaining": "%zu minutes %zu seconds remaining",
|
||||||
|
"%zu seconds remaining": "%zu seconds remaining",
|
||||||
|
|
||||||
|
"Loading...": "Loading...",
|
||||||
|
"Loading": "Loading",
|
||||||
|
"Empty!": "Empty!",
|
||||||
|
"Not Ready...": "Not Ready...",
|
||||||
|
"Error loading page!": "Error loading page!"
|
||||||
|
}
|
||||||
@@ -1,114 +1,392 @@
|
|||||||
{
|
{
|
||||||
"Launch": "Lanzamiento",
|
"[Applet Mode]": "[Modo Applet]",
|
||||||
"Options": "Opciones",
|
"No Internet": "Sin Internet",
|
||||||
"Homebrew Options": "Opciones de elaboración casera",
|
"Switch-Handheld!": "¡Switch-Modo-Portátil!",
|
||||||
"Sort By": "Ordenar por",
|
"Switch-Docked!": "¡Switch-Modo-TV!",
|
||||||
"Sort Options": "Opciones de clasificación",
|
"Audio disabled due to suspended game": "",
|
||||||
"Updated": "Actualizado",
|
"Are you sure you wish to cancel?": "¿Estás seguro que deseas cancelar?",
|
||||||
"Size": "Tamaño",
|
"An error occurred": "",
|
||||||
"Alphabetical": "Alfabético",
|
"If this message appears repeatedly, please open an issue.": "Si este mensaje aparece repetidamente, por favor abrir un 'issue'.",
|
||||||
"Decending": "Descendente",
|
|
||||||
"Ascending": "Ascendente",
|
"Menu Options": "Opciones de menú",
|
||||||
"Sort": "Clasificar",
|
|
||||||
"Order": "Orden",
|
|
||||||
"Info": "Información",
|
|
||||||
"Delete": "Borrar",
|
|
||||||
"Hide Sphaira": "Ocultar Sphaira",
|
|
||||||
"Are you sure you want to delete ": "¿Estás seguro de que quieres eliminar? ",
|
|
||||||
"Install Forwarder": "Instalar reenviador",
|
|
||||||
"WARNING: Installing forwarders will lead to a ban!": "ADVERTENCIA: ¡La instalación de reenviadores dará lugar a una prohibición!",
|
|
||||||
"Back": "Atrás",
|
|
||||||
"Install": "Instalar",
|
|
||||||
"Fs": "fs",
|
|
||||||
"App": "Aplicación",
|
|
||||||
"Menu": "Menú",
|
"Menu": "Menú",
|
||||||
"Homebrew": "cerveza casera",
|
"Theme": "Tema",
|
||||||
"FileBrowser": "Explorador de archivos",
|
|
||||||
"Open": "Abierto",
|
|
||||||
"Theme Options": "Opciones de tema",
|
"Theme Options": "Opciones de tema",
|
||||||
"Select Theme": "Seleccionar tema",
|
"Select Theme": "Seleccionar tema",
|
||||||
"Shuffle": "Barajar",
|
|
||||||
"Music": "Música",
|
"Music": "Música",
|
||||||
"Show Hidden": "Mostrar oculto",
|
"12 Hour Time": "",
|
||||||
"Folders First": "Carpetas primero",
|
"Download Default Music": "",
|
||||||
"Hidden Last": "Oculto último",
|
"Failed to download default_music.bfstm, please try again": "",
|
||||||
"Yes": "Sí",
|
"Overwrite current default music?": "",
|
||||||
"No": "No",
|
|
||||||
"Network Options": "Opciones de red",
|
|
||||||
"Nxlink": "nxenlace",
|
|
||||||
"Check for update": "Buscar actualizaciones",
|
|
||||||
"File Options": "Opciones de archivo",
|
|
||||||
"Cut": "Cortar",
|
|
||||||
"Copy": "Copiar",
|
|
||||||
"Rename": "Rebautizar",
|
|
||||||
"Advanced Options": "Crear archivo",
|
|
||||||
"Create File": "Crear archivo",
|
|
||||||
"Create Folder": "Crear carpeta",
|
|
||||||
"View as text": "Ver como texto",
|
|
||||||
"View as text (unfinished)": "Ver como texto (sin terminar)",
|
|
||||||
"Set Archive Bit": "Establecer bit de archivo",
|
|
||||||
"AppStore Options": "Opciones de la tienda de aplicaciones",
|
|
||||||
"All": "Todo",
|
|
||||||
"Games": "Juegos",
|
|
||||||
"Emulators": "Emuladores",
|
|
||||||
"Tools": "Herramientas",
|
|
||||||
"Advanced": "Avanzado",
|
|
||||||
"Themes": "Temas",
|
|
||||||
"Legacy": "Legado",
|
|
||||||
"Misc": "Varios",
|
|
||||||
"Downloads": "Descargas",
|
|
||||||
"Filter": "Filtrar",
|
|
||||||
"Search": "Buscar",
|
|
||||||
"Menu Options": "Opciones de menú",
|
|
||||||
"Header": "Encabezamiento",
|
|
||||||
"Theme": "Tema",
|
|
||||||
"Network": "Red",
|
"Network": "Red",
|
||||||
"Logging": "Explotación florestal",
|
"Network Options": "Opciones de red",
|
||||||
"Enabled": "Activado",
|
"Ftp": "FTP",
|
||||||
"Disabled": "Desactivado",
|
"Mtp": "MTP",
|
||||||
"Replace hbmenu on exit": "Reemplazar hbmenu al salir",
|
"Nxlink": "NXlink",
|
||||||
|
"Nxlink Connected": "NXlink conectado",
|
||||||
|
"Nxlink Upload": "NXlink subida",
|
||||||
|
"Nxlink Finished": "NXlink finalizado",
|
||||||
|
|
||||||
|
"Language": "Idioma",
|
||||||
|
"Auto": "Automático",
|
||||||
|
"English": "English",
|
||||||
|
"Japanese": "日本語",
|
||||||
|
"French": "Français",
|
||||||
|
"German": "Deutsch",
|
||||||
|
"Italian": "Italiano",
|
||||||
|
"Spanish": "Español",
|
||||||
|
"Chinese": "中文",
|
||||||
|
"Korean": "한국어",
|
||||||
|
"Dutch": "Dutch",
|
||||||
|
"Portuguese": "Português",
|
||||||
|
"Russian": "Русский",
|
||||||
|
"Swedish": "Svenska",
|
||||||
|
"Vietnamese": "Vietnamese",
|
||||||
|
"Ukrainian": "Українська",
|
||||||
|
|
||||||
|
"Misc": "Varios",
|
||||||
"Misc Options": "Opciones varias",
|
"Misc Options": "Opciones varias",
|
||||||
"Themezer": "Temazer",
|
"Games": "Juegos",
|
||||||
"Irs": "irs",
|
"Game Options": "",
|
||||||
"Web": "Web",
|
"Hide forwarders": "",
|
||||||
"Download": "Descargar",
|
"Launch random game": "",
|
||||||
"Next Page": "Página siguiente",
|
"List meta records": "",
|
||||||
"Prev Page": "Página anterior",
|
"Entries": "",
|
||||||
"Pad ": "Almohadilla ",
|
"Failed to list application meta entries": "",
|
||||||
" (Unconnected)": " (Desconectado)",
|
"No meta entries found...\n": "",
|
||||||
|
"Updating application record list": "",
|
||||||
|
"Dump": "",
|
||||||
|
"Select content to dump": "",
|
||||||
|
"Dump All": "",
|
||||||
|
"Dump Application": "",
|
||||||
|
"Dump Patch": "",
|
||||||
|
"Dump AddOnContent": "",
|
||||||
|
"Dump DataPatch": "",
|
||||||
|
"Select dump location": "",
|
||||||
|
"microSD card (/dumps/NSP/)": "",
|
||||||
|
"USB transfer (Switch 2 Switch)": "",
|
||||||
|
"/dev/null (Speed Test)": "",
|
||||||
|
"Dumping": "",
|
||||||
|
"Dump successfull!": "",
|
||||||
|
"Dump failed!": "",
|
||||||
|
"Success": "",
|
||||||
|
"Delete successfull!": "",
|
||||||
|
"Delete failed!": "",
|
||||||
|
|
||||||
|
"Themezer": "Themezer",
|
||||||
|
"Themezer Options": "Opciones de Themezer",
|
||||||
|
"Nsfw": "NSFW",
|
||||||
|
"Page": "Página",
|
||||||
|
"Page %zu / %zu": "Pág. %zu / %zu",
|
||||||
|
"Enter Page Number": "Ingresar Número de Página",
|
||||||
|
"Bad Page": "Página Errónea",
|
||||||
|
"Download theme?": "¿Descargar Tema?",
|
||||||
|
|
||||||
|
"GitHub": "GitHub",
|
||||||
|
"Downloading json": "Descargando json",
|
||||||
|
"Select asset to download for ": "Seleccionar recurso a descargar para ",
|
||||||
|
|
||||||
|
"FTP Install": "",
|
||||||
|
"FTP Install (EXPERIMENTAL)": "",
|
||||||
|
"Connection Type: WiFi | Strength: ": "",
|
||||||
|
"Connection Type: Ethernet": "",
|
||||||
|
"Connection Type: None": "",
|
||||||
|
"Host:": "",
|
||||||
|
"Port:": "",
|
||||||
|
"Username:": "",
|
||||||
|
"Password:": "",
|
||||||
|
"SSID:": "",
|
||||||
|
"Passphrase:": "",
|
||||||
|
"Failed to install via FTP, press B to exit...": "",
|
||||||
|
"Ftp install success!": "",
|
||||||
|
"Ftp install failed!": "",
|
||||||
|
"USB Install": "",
|
||||||
|
"USB": "",
|
||||||
|
"Connected, waiting for file list...": "",
|
||||||
|
"Connected, starting transfer...": "",
|
||||||
|
"Failed to init usb, press B to exit...": "",
|
||||||
|
"Waiting for connection...": "",
|
||||||
|
"Transferring data...": "",
|
||||||
|
"USB connected, sending file list": "",
|
||||||
|
"Sent file list, waiting for command...": "",
|
||||||
|
"waiting for usb connection...": "",
|
||||||
|
"Disable MTP for usb install": "",
|
||||||
|
"Re-enabled MTP": "",
|
||||||
|
"Installed via usb": "",
|
||||||
|
"Usb install success!": "",
|
||||||
|
"Usb install failed!": "",
|
||||||
|
"Press B to exit...": "",
|
||||||
|
"GameCard Install": "",
|
||||||
|
"GameCard": "",
|
||||||
|
"GC": "",
|
||||||
|
"System memory %.1f GB": "",
|
||||||
|
"microSD card %.1f GB": "",
|
||||||
|
"Nand Install": "",
|
||||||
|
"SD Card Install": "",
|
||||||
|
"Exit": "",
|
||||||
|
"Gc install success!": "",
|
||||||
|
"Gc install failed!": "",
|
||||||
|
|
||||||
|
"IRS (Infrared Joycon Camera)": "",
|
||||||
|
"IRS": "",
|
||||||
|
"Irs": "IRS",
|
||||||
|
"Ambient Noise Level: ": "Nivel de Ruido Ambiente",
|
||||||
|
"Controller": "Control",
|
||||||
|
"Pad ": "GamePad ",
|
||||||
"HandHeld": "Portátil",
|
"HandHeld": "Portátil",
|
||||||
" (Available)": " (Disponible)",
|
" (Available)": " (Disponible)",
|
||||||
"0 (Sideways)": "0 (de lado)",
|
" (Unsupported)": "(No Compatible)",
|
||||||
"90 (Flat)": "90 (plano)",
|
" (Unconnected)": " (Desconectado)",
|
||||||
"180 (-Sideways)": "180 (-de lado)",
|
"Rotation": "Rotación",
|
||||||
"270 (Upside down)": "270 (al revés)",
|
"0 (Sideways)": "0° (De lado)",
|
||||||
|
"90 (Flat)": "90° (Plano)",
|
||||||
|
"180 (-Sideways)": "180° (De lado)",
|
||||||
|
"270 (Upside down)": "270° (Al revés)",
|
||||||
|
"Colour": "Color",
|
||||||
"Grey": "Gris",
|
"Grey": "Gris",
|
||||||
"Ironbow": "arco de hierro",
|
"Ironbow": "Paleta térmica",
|
||||||
"Green": "Verde",
|
"Green": "Verde",
|
||||||
"Red": "Rojo",
|
"Red": "Rojo",
|
||||||
"Blue": "Azul",
|
"Blue": "Azul",
|
||||||
"All leds": "todos los leds",
|
|
||||||
"Bright group": "grupo brillante",
|
|
||||||
"Dim group": "grupo tenue",
|
|
||||||
"None": "Ninguno",
|
|
||||||
"Normal image": "imagen normal",
|
|
||||||
"Negative image": "Imagen negativa",
|
|
||||||
"320x240": "320x240",
|
|
||||||
"160x120": "160x120",
|
|
||||||
"80x60": "80x60",
|
|
||||||
"40x30": "40x30",
|
|
||||||
"20x15": "20x15",
|
|
||||||
"Controller": "Controlador",
|
|
||||||
"Rotation": "Rotación",
|
|
||||||
"Colour": "Color",
|
|
||||||
"Light Target": "Objetivo de luz",
|
"Light Target": "Objetivo de luz",
|
||||||
"Gain": "Ganar",
|
"All leds": "Todos los leds",
|
||||||
|
"Bright group": "Grupo brillo",
|
||||||
|
"Dim group": "Grupo tenue",
|
||||||
|
"None": "Ninguno",
|
||||||
|
"Gain": "Ganancia",
|
||||||
"Negative Image": "Imagen negativa",
|
"Negative Image": "Imagen negativa",
|
||||||
|
"Normal image": "Imagen normal",
|
||||||
|
"Negative image": "Imagen negativa",
|
||||||
"Format": "Formato",
|
"Format": "Formato",
|
||||||
"Trimming Format": "Formato de recorte",
|
"Trimming Format": "Formato de recorte",
|
||||||
"External Light Filter": "Filtro de luz externo",
|
"320x240": "320×240",
|
||||||
|
"160x120": "160×120",
|
||||||
|
"80x60": "80×60",
|
||||||
|
"40x30": "40×30",
|
||||||
|
"20x15": "20×15",
|
||||||
|
"External Light Filter": "Filtro de luz externa",
|
||||||
"Load Default": "Cargar predeterminado",
|
"Load Default": "Cargar predeterminado",
|
||||||
"No Internet": "sin internet",
|
|
||||||
"[Applet Mode]": "[Modo subprograma]",
|
"Advanced": "Avanzado",
|
||||||
"Language": "Idioma"
|
"Advanced Options": "Opciones avanzadas",
|
||||||
}
|
"Logging": "Registro",
|
||||||
|
"Replace hbmenu on exit": "Reemplazar hbmenu",
|
||||||
|
"Restore hbmenu?": "¿Restaurar hbmenu?",
|
||||||
|
"Restore": "Restaurar",
|
||||||
|
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "Fallo al encontrar /switch/hbmenu.nro\nUsar la Tienda para reinstalar hbmenu",
|
||||||
|
"Failed to restore hbmenu, please re-download hbmenu": "Fallo al restaurar hbmenu, por favor volver a descargar hbmenu",
|
||||||
|
"Failed to restore hbmenu, using sphaira instead": "Fallo al restaurar hbmenu, se usará sphaira",
|
||||||
|
"Restored hbmenu, closing sphaira": "hbmenu restaurado, cerrando sphaira",
|
||||||
|
"Restored hbmenu": "hbmenu restaurado",
|
||||||
|
"Restart Sphaira?": "¿Reiniciar sphaira?",
|
||||||
|
"Press OK to restart Sphaira": "Presiona OK para reiniciar sphaira",
|
||||||
|
"Text scroll speed": "Velocidad de scroll",
|
||||||
|
"Slow": "Lento",
|
||||||
|
"Normal": "Normal",
|
||||||
|
"Fast": "Rápido",
|
||||||
|
"Set right-side menu": "",
|
||||||
|
"Install options": "",
|
||||||
|
"Install Options": "",
|
||||||
|
"Enable sysmmc": "",
|
||||||
|
"Enable emummc": "",
|
||||||
|
"Show install warning": "Precaución de instalación",
|
||||||
|
"Install location": "Dispositivo de instalación",
|
||||||
|
"System memory": "Memoria de sistema",
|
||||||
|
"microSD card": "microSD",
|
||||||
|
"Boost CPU clock": "",
|
||||||
|
"Allow downgrade": "",
|
||||||
|
"Skip if already installed": "",
|
||||||
|
"Ticket only": "",
|
||||||
|
"Skip base": "",
|
||||||
|
"Skip patch": "",
|
||||||
|
"Skip dlc": "",
|
||||||
|
"Skip data patch": "",
|
||||||
|
"Skip ticket": "",
|
||||||
|
"Skip NCA hash verify": "",
|
||||||
|
"Skip RSA header verify": "",
|
||||||
|
"Skip RSA NPDM verify": "",
|
||||||
|
"Ignore distribution bit": "",
|
||||||
|
"Convert to standard crypto": "",
|
||||||
|
"Lower master key": "",
|
||||||
|
"Lower system version": "",
|
||||||
|
|
||||||
|
"Homebrew": "Homebrew",
|
||||||
|
"Apps": "Apps",
|
||||||
|
"Homebrew Options": "Opciones de Homebrew",
|
||||||
|
"Hide Sphaira": "Ocultar Sphaira",
|
||||||
|
"Install Forwarder": "Instalar Forwarder",
|
||||||
|
"WARNING: Installing forwarders will lead to a ban!": "ADVERTENCIA: ¡La instalación de fordwarders podría producir un baneo de la consola!",
|
||||||
|
"Installing Forwarder": "Instalando Forwarder",
|
||||||
|
"Creating Program": "Creando Program",
|
||||||
|
"Creating Control": "Creando Control",
|
||||||
|
"Creating Meta": "Creando Meta",
|
||||||
|
"Writing Nca": "Creando NCA",
|
||||||
|
"Updating ncm databse": "Actualizando base de datos ncm",
|
||||||
|
"Pushing application record": "Registro de aplicación",
|
||||||
|
"Failed to install forwarder": "Fallo al instalar forwarder",
|
||||||
|
"Unstarred ": "Quitar Favorito",
|
||||||
|
"Starred ": "Favorito",
|
||||||
|
"Failed to remove old forwarder, please manually remove it!": "",
|
||||||
|
|
||||||
|
"AppStore": "Tienda",
|
||||||
|
"Appstore": "",
|
||||||
|
"Store": "Tienda",
|
||||||
|
"Filter: %s | Sort: %s | Order: %s": "Filtrar: %s | Clasificar: %s | Orden: %s",
|
||||||
|
"AppStore Options": "Opciones de la Tienda",
|
||||||
|
"Info": "Información",
|
||||||
|
"Changelog": "Log de cambios",
|
||||||
|
"Details": "Detalles",
|
||||||
|
"version: %s": "version: %s",
|
||||||
|
"updated: %s": "actualizado: %s",
|
||||||
|
"category: %s": "categoría: %s",
|
||||||
|
"extracted: %.2f MiB": "extraído: %.2f MiB",
|
||||||
|
"app_dls: %s": "app_dls: %s",
|
||||||
|
"More by Author": "Mostrar mas del Autor",
|
||||||
|
"Leave Feedback": "Dejar Mensaje",
|
||||||
|
|
||||||
|
"FileBrowser": "Explorador de archivos",
|
||||||
|
"Files": "Archivos",
|
||||||
|
"%zd files": "%zd archivos",
|
||||||
|
"%zd dirs": "%zd carpetas",
|
||||||
|
"File Options": "Opciones de archivo",
|
||||||
|
"Show Hidden": "Mostrar archivos ocultos",
|
||||||
|
"Folders First": "Carpetas primero",
|
||||||
|
"Hidden Last": "Ocultos al final",
|
||||||
|
"Cut": "Cortar",
|
||||||
|
"Copy": "Copiar",
|
||||||
|
"Copying ": "Copiando ",
|
||||||
|
"Paste": "Pegar",
|
||||||
|
"Paste ": "Pegar ",
|
||||||
|
" file(s)?": " ¿archivo(s)?",
|
||||||
|
"Pasting ": "Pegando ",
|
||||||
|
"Pasting": "Pegando",
|
||||||
|
"Rename": "Renombrar",
|
||||||
|
"Set New File Name": "Establecer nuevo nombre de archivo",
|
||||||
|
"Extract zip": "",
|
||||||
|
"Extract Options": "",
|
||||||
|
"Extract here": "",
|
||||||
|
"Extract to root": "",
|
||||||
|
"Are you sure you want to extract to root?": "",
|
||||||
|
"Extract to...": "",
|
||||||
|
"Enter the path to the folder to extract into": "",
|
||||||
|
"Extracting ": "",
|
||||||
|
"Extract success!": "",
|
||||||
|
"Extract failed!": "",
|
||||||
|
"Compress to zip": "",
|
||||||
|
"Compress Options": "",
|
||||||
|
"Compress": "",
|
||||||
|
"Compress to...": "",
|
||||||
|
"Compressing ": "",
|
||||||
|
"Compress success!": "",
|
||||||
|
"Compress failed!": "",
|
||||||
|
"Create File": "Crear archivo",
|
||||||
|
"Set File Name": "Establecer nombre de archivo",
|
||||||
|
"Create Folder": "Crear carpeta",
|
||||||
|
"Set Folder Name": "Establecer nombre de carpeta",
|
||||||
|
"Creating ": "Creando ",
|
||||||
|
"Upload": "",
|
||||||
|
"Select upload location": "",
|
||||||
|
"No upload locations set!": "",
|
||||||
|
"Uploading": "",
|
||||||
|
"Upload successfull!": "",
|
||||||
|
"Upload failed!": "",
|
||||||
|
"View as text (unfinished)": "Ver como texto (sin terminar)",
|
||||||
|
"Ignore read only": "Ignorar sólo lectura",
|
||||||
|
"Mount": "Montar",
|
||||||
|
"Sd": "SD",
|
||||||
|
"Image System memory": "Imagen memoria interna",
|
||||||
|
"Image microSD card": "Imagen tarjeta microSD",
|
||||||
|
"Empty...": "Vacío...",
|
||||||
|
"Open with DayBreak?": "¿Abrir con DayBreak?",
|
||||||
|
"Launch ": "Abrir ",
|
||||||
|
"Launch option for: ": "Opción de abrir con: ",
|
||||||
|
"Select launcher for: ": "Seleccionar abrir con: ",
|
||||||
|
|
||||||
|
"Sort By": "Ordenar por",
|
||||||
|
"Sort Options": "Opciones de clasificación",
|
||||||
|
"Filter": "Filtrar",
|
||||||
|
"All": "Todo",
|
||||||
|
"Emulators": "Emuladores",
|
||||||
|
"Tools": "Herramientas",
|
||||||
|
"Themes": "Temas",
|
||||||
|
"Legacy": "Legado",
|
||||||
|
"Sort": "Clasificar",
|
||||||
|
"Size": "Tamaño",
|
||||||
|
"Size (Star)": "Tamaño (favorito)",
|
||||||
|
"Alphabetical": "Alfabético",
|
||||||
|
"Alphabetical (Star)": "Alfabético (favorito)",
|
||||||
|
"Updated": "Actualizado",
|
||||||
|
"Updated (Star)": "Actualizado (favorito)",
|
||||||
|
"Downloads": "Descargas",
|
||||||
|
"Likes": "Me Gusta",
|
||||||
|
"ID": "ID",
|
||||||
|
"Order": "Orden",
|
||||||
|
"Descending": "Descendente",
|
||||||
|
"Descending (down)": "Descendente (abajo)",
|
||||||
|
"Desc": "Descendente",
|
||||||
|
"Ascending": "Ascendente",
|
||||||
|
"Ascending (Up)": "Ascendente (arriba)",
|
||||||
|
"Asc": "Ascendente",
|
||||||
|
"Layout": "",
|
||||||
|
"List": "",
|
||||||
|
"Icon": "",
|
||||||
|
"Grid": "",
|
||||||
|
"Search": "Buscar",
|
||||||
|
|
||||||
|
"Options": "Opciones",
|
||||||
|
"OK": "OK",
|
||||||
|
"Back": "Atrás",
|
||||||
|
"Select": "Seleccionar",
|
||||||
|
"Open": "Abrir",
|
||||||
|
"Launch": "Ejecutar",
|
||||||
|
"Restart": "Reiniciar",
|
||||||
|
"Next": "",
|
||||||
|
"Prev": "",
|
||||||
|
"Unstar": "Quitar favorito",
|
||||||
|
"Star": "Favorito",
|
||||||
|
"Yes": "Sí",
|
||||||
|
"No": "No",
|
||||||
|
"On": "",
|
||||||
|
"Off": "",
|
||||||
|
|
||||||
|
"Install": "Instalar",
|
||||||
|
"Install Selected files?": "",
|
||||||
|
"Installing ": "Instalando ",
|
||||||
|
"Installed ": "",
|
||||||
|
"Installed!": "¡Instalado!",
|
||||||
|
"Trying to load ": "Intentando cargar ",
|
||||||
|
"Checking MD5": "Chequeando MD5",
|
||||||
|
|
||||||
|
"Delete": "Borrar",
|
||||||
|
"Delete Selected files?": "¿Eliminar archivos seleccionados?",
|
||||||
|
"Are you sure you want to delete ": "¿Estás seguro que quieres eliminar? ",
|
||||||
|
"Scanning ": "Escaneando ",
|
||||||
|
"Deleting ": "Borrando ",
|
||||||
|
"Deleting": "Borrando",
|
||||||
|
"Remove": "Borrar",
|
||||||
|
"Completely remove ": "Eliminar completamente",
|
||||||
|
"Removing ": "Removiendo ",
|
||||||
|
"Removed ": "Removido ",
|
||||||
|
"Uninstalling ": "Desinstalando ",
|
||||||
|
|
||||||
|
"Download": "Descargar",
|
||||||
|
"Downloading ": "Descargando ",
|
||||||
|
"Downloaded ": "Descargado ",
|
||||||
|
|
||||||
|
"Update": "Actualizar",
|
||||||
|
"Update avaliable: ": "Actualización disponible: ",
|
||||||
|
"Download update: ": "Descargar actualización: ",
|
||||||
|
"Updated to ": "Actualizado a ",
|
||||||
|
"Failed to download update": "Fallo al descargar actualización",
|
||||||
|
|
||||||
|
"%zu hours %zu minutes remaining": "",
|
||||||
|
"%zu minutes %zu seconds remaining": "",
|
||||||
|
"%zu seconds remaining": "",
|
||||||
|
|
||||||
|
"Loading...": "Cargando...",
|
||||||
|
"Loading": "Cargando",
|
||||||
|
"Empty!": "¡Vacío!",
|
||||||
|
"Not Ready...": "No listo aún...",
|
||||||
|
"Error loading page!": "¡Error cargando la página!"
|
||||||
|
}
|
||||||
@@ -1,114 +1,392 @@
|
|||||||
{
|
{
|
||||||
"Launch": "Lancement",
|
"[Applet Mode]": "[Mode Applet]",
|
||||||
"Options": "Possibilités",
|
"No Internet": "Pas d'Internet",
|
||||||
"Homebrew Options": "Options de brassage maison",
|
"Switch-Handheld!": "Switch-Portable",
|
||||||
"Sort By": "Trier par",
|
"Switch-Docked!": "Switch-Dockée",
|
||||||
"Sort Options": "Options de tri",
|
"Audio disabled due to suspended game": "Audio désactivé à cause d'un jeu suspendu",
|
||||||
"Updated": "Mis à jour",
|
"Are you sure you wish to cancel?": "Souhaitez-vous vraiment annuler?",
|
||||||
"Size": "Taille",
|
"An error occurred": "Une erreur s'est produite",
|
||||||
"Alphabetical": "Alphabétique",
|
"If this message appears repeatedly, please open an issue.": "Si ce message apparait en boucle veuillez ouvrir une issue.",
|
||||||
"Decending": "Décroissant",
|
|
||||||
"Ascending": "Ascendant",
|
"Menu Options": "Options des Menus",
|
||||||
"Sort": "Trier",
|
|
||||||
"Order": "Commande",
|
|
||||||
"Info": "Informations",
|
|
||||||
"Delete": "Supprimer",
|
|
||||||
"Hide Sphaira": "Masquer Sphaira",
|
|
||||||
"Are you sure you want to delete ": "Etes-vous sûr de vouloir supprimer ",
|
|
||||||
"Install Forwarder": "Installer le redirecteur",
|
|
||||||
"WARNING: Installing forwarders will lead to a ban!": "ATTENTION : L'installation de transitaires entraînera une interdiction !",
|
|
||||||
"Back": "Dos",
|
|
||||||
"Install": "Installer",
|
|
||||||
"Fs": "Fs",
|
|
||||||
"App": "Application",
|
|
||||||
"Menu": "Menu",
|
"Menu": "Menu",
|
||||||
"Homebrew": "Homebrew",
|
|
||||||
"FileBrowser": "Navigateur de fichiers",
|
|
||||||
"Open": "Ouvrir",
|
|
||||||
"Theme Options": "Options de thème",
|
|
||||||
"Select Theme": "Sélectionnez un thème",
|
|
||||||
"Shuffle": "Mélanger",
|
|
||||||
"Music": "Musique",
|
|
||||||
"Show Hidden": "Afficher masqué",
|
|
||||||
"Folders First": "Les dossiers d'abord",
|
|
||||||
"Hidden Last": "Dernier caché",
|
|
||||||
"Yes": "Oui",
|
|
||||||
"No": "Non",
|
|
||||||
"Network Options": "Options réseau",
|
|
||||||
"Nxlink": "Nxlien",
|
|
||||||
"Check for update": "Vérifier la mise à jour",
|
|
||||||
"File Options": "Options de fichier",
|
|
||||||
"Cut": "Couper",
|
|
||||||
"Copy": "Copie",
|
|
||||||
"Rename": "Rebaptiser",
|
|
||||||
"Advanced Options": "Créer un fichier",
|
|
||||||
"Create File": "Créer un fichier",
|
|
||||||
"Create Folder": "Créer un dossier",
|
|
||||||
"View as text": "Afficher sous forme de texte",
|
|
||||||
"View as text (unfinished)": "Afficher sous forme de texte (inachevé)",
|
|
||||||
"Set Archive Bit": "Définir le bit d'archive",
|
|
||||||
"AppStore Options": "Options de l'AppStore",
|
|
||||||
"All": "Tous",
|
|
||||||
"Games": "Jeux",
|
|
||||||
"Emulators": "Émulateurs",
|
|
||||||
"Tools": "Outils",
|
|
||||||
"Advanced": "Avancé",
|
|
||||||
"Themes": "Thèmes",
|
|
||||||
"Legacy": "Héritage",
|
|
||||||
"Misc": "Divers",
|
|
||||||
"Downloads": "Téléchargements",
|
|
||||||
"Filter": "Filtre",
|
|
||||||
"Search": "Recherche",
|
|
||||||
"Menu Options": "Options des menus",
|
|
||||||
"Header": "En-tête",
|
|
||||||
"Theme": "Thème",
|
"Theme": "Thème",
|
||||||
|
"Theme Options": "Options de Thème",
|
||||||
|
"Select Theme": "Choisir un Thème",
|
||||||
|
"Music": "Musique",
|
||||||
|
"12 Hour Time": "Temps sur 12 heures",
|
||||||
|
"Download Default Music": "Télécharger la musique par défaut",
|
||||||
|
"Failed to download default_music.bfstm, please try again": "Echec du téléchargement de default_music.bfstm, veuillez réessayer",
|
||||||
|
"Overwrite current default music?": "Remplacer la musique actuelle par défaut?",
|
||||||
|
|
||||||
"Network": "Réseau",
|
"Network": "Réseau",
|
||||||
"Logging": "Enregistrement",
|
"Network Options": "Options Réseau",
|
||||||
"Enabled": "Activé",
|
"Ftp": "FTP",
|
||||||
"Disabled": "Désactivé",
|
"Mtp": "MTP",
|
||||||
"Replace hbmenu on exit": "Remplacer hbmenu à la sortie",
|
"Nxlink": "Nxlink",
|
||||||
"Misc Options": "Diverses options",
|
"Nxlink Connected": "Nxlink Connecté",
|
||||||
"Themezer": "Thème",
|
"Nxlink Upload": "Nxlink téléversement",
|
||||||
|
"Nxlink Finished": "Nxlink terminé",
|
||||||
|
|
||||||
|
"Language": "Langue",
|
||||||
|
"Auto": "Auto",
|
||||||
|
"English": "English",
|
||||||
|
"Japanese": "日本語",
|
||||||
|
"French": "Français",
|
||||||
|
"German": "Deutsch",
|
||||||
|
"Italian": "Italiano",
|
||||||
|
"Spanish": "Español",
|
||||||
|
"Chinese": "中文",
|
||||||
|
"Korean": "한국어",
|
||||||
|
"Dutch": "Dutch",
|
||||||
|
"Portuguese": "Português",
|
||||||
|
"Russian": "Русский",
|
||||||
|
"Swedish": "Svenska",
|
||||||
|
"Vietnamese": "Vietnamese",
|
||||||
|
"Ukrainian": "Українська",
|
||||||
|
|
||||||
|
"Misc": "Divers",
|
||||||
|
"Misc Options": "Options Diverses",
|
||||||
|
"Games": "Jeux",
|
||||||
|
"Game Options": "Options de jeu",
|
||||||
|
"Hide forwarders": "Masquer les forwarders",
|
||||||
|
"Launch random game": "Lancer un jeu au hasard",
|
||||||
|
"List meta records": "Lister les enregistrements meta",
|
||||||
|
"Entries": "Entrées",
|
||||||
|
"Failed to list application meta entries": "Le listage des entrées meta de l'application a échoué",
|
||||||
|
"No meta entries found...\n": "Aucune entrée meta trouvée...\n",
|
||||||
|
"Updating application record list": "Mise à jour de la liste d'enregistrement de l'application",
|
||||||
|
"Dump": "Dumper",
|
||||||
|
"Select content to dump": "Sélectionner un contenu à dumper",
|
||||||
|
"Dump All": "Tout dumper",
|
||||||
|
"Dump Application": "Dumper Application",
|
||||||
|
"Dump Patch": "Dumper mise à jour",
|
||||||
|
"Dump AddOnContent": "Dumper DLCs",
|
||||||
|
"Dump DataPatch": "Dumper patch de données",
|
||||||
|
"Select dump location": "Sélectionner l'emplacement du dump",
|
||||||
|
"microSD card (/dumps/NSP/)": "carte microSD (/dumps/NSP/)",
|
||||||
|
"USB transfer (Switch 2 Switch)": "Transfert USB (Switch à Switch",
|
||||||
|
"/dev/null (Speed Test)": "/dev/null (test de vitesse)",
|
||||||
|
"Dumping": "Dump en cours",
|
||||||
|
"Dump successfull!": "Dump réussi!",
|
||||||
|
"Dump failed!": "Dump échoué!",
|
||||||
|
"Success": "Succès",
|
||||||
|
"Delete successfull!": "Suprression réussie!",
|
||||||
|
"Delete failed!": "Suprression échouée!",
|
||||||
|
|
||||||
|
"Themezer": "Themezer",
|
||||||
|
"Themezer Options": "Options Themezer",
|
||||||
|
"Nsfw": "Nsfw",
|
||||||
|
"Page": "Page",
|
||||||
|
"Page %zu / %zu": "Page %zu / %zu",
|
||||||
|
"Enter Page Number": "Entrez Un Numéro De Page",
|
||||||
|
"Bad Page": "Page inexistante",
|
||||||
|
"Download theme?": "Télécharger le thème?",
|
||||||
|
|
||||||
|
"GitHub": "GitHub",
|
||||||
|
"Downloading json": "Téléchargement du json",
|
||||||
|
"Select asset to download for ": "Sélectionner l'asset à télécharger pour ",
|
||||||
|
|
||||||
|
"FTP Install": "Installation via FTP",
|
||||||
|
"FTP Install (EXPERIMENTAL)": "Installation via FTP (EXPERIMENTAL)",
|
||||||
|
"Connection Type: WiFi | Strength: ": "Type de connexion: WiFi, force du signal: ",
|
||||||
|
"Connection Type: Ethernet": "Type de connexion: Ethernet",
|
||||||
|
"Connection Type: None": "Type de connexion: Aucune",
|
||||||
|
"Host:": "Hôte:",
|
||||||
|
"Port:": "Port:",
|
||||||
|
"Username:": "Nom d'utilisateur:",
|
||||||
|
"Password:": "Mot de passe:",
|
||||||
|
"SSID:": "SSID:",
|
||||||
|
"Passphrase:": "Mot de passe:",
|
||||||
|
"Failed to install via FTP, press B to exit...": "Installation via FTP échouée, appuyer sur B pour quitter...",
|
||||||
|
"Ftp install success!": "Installation via FTP réussie!",
|
||||||
|
"Ftp install failed!": "Installation via FTP échouée!",
|
||||||
|
"USB Install": "Installation via USB",
|
||||||
|
"USB": "USB",
|
||||||
|
"Connected, waiting for file list...": "Connecté, en attente de la liste des fichiers...",
|
||||||
|
"Connected, starting transfer...": "Connecté, début du transfère...",
|
||||||
|
"Failed to init usb, press B to exit...": "Echec de l'initialisation de l'USB, appuyer sur B pour quitter...",
|
||||||
|
"Waiting for connection...": "En attente de la connexion...",
|
||||||
|
"Transferring data...": "Transfère de données...",
|
||||||
|
"USB connected, sending file list": "USB connecté, envoi de la liste des fichiers",
|
||||||
|
"Sent file list, waiting for command...": "Liste des fichiers envoyée, attente d'une commande...",
|
||||||
|
"waiting for usb connection...": "En attente d'une connexion USB...",
|
||||||
|
"Disable MTP for usb install": "Désactivation du MTP pour l'installation via USB",
|
||||||
|
"Re-enabled MTP": "Réactivation du MTP",
|
||||||
|
"Installed via usb": "Installé via USB",
|
||||||
|
"Usb install success!": "Installation via USB réussie!",
|
||||||
|
"Usb install failed!": "Installation via USB échouée!",
|
||||||
|
"Press B to exit...": "Appuyer sur B pour quitter...",
|
||||||
|
"GameCard Install": "Installation de la cartouche",
|
||||||
|
"GameCard": "Cartouche",
|
||||||
|
"GC": "GC",
|
||||||
|
"System memory %.1f GB": "Mémoire système %.1f GB",
|
||||||
|
"microSD card %.1f GB": "Carte microSD %.1f GB",
|
||||||
|
"Nand Install": "Installer sur la Nand",
|
||||||
|
"SD Card Install": "Installer sur la carte SD",
|
||||||
|
"Exit": "Quitter",
|
||||||
|
"Gc install success!": "Installation de la cartouche réussie!",
|
||||||
|
"Gc install failed!": "Installation de la cartouche échouée!",
|
||||||
|
|
||||||
|
"IRS (Infrared Joycon Camera)": "IRS (infrarouge de la caméra du Joycon",
|
||||||
|
"IRS": "IRS",
|
||||||
"Irs": "Irs",
|
"Irs": "Irs",
|
||||||
"Web": "Web",
|
"Ambient Noise Level: ": "Niveau De Bruit Ambiant: ",
|
||||||
"Download": "Télécharger",
|
"Controller": "Contrôleur",
|
||||||
"Next Page": "Page suivante",
|
"Pad ": "Manette ",
|
||||||
"Prev Page": "Page précédente",
|
|
||||||
"Pad ": "Tampon ",
|
|
||||||
" (Unconnected)": " (Sans rapport)",
|
|
||||||
"HandHeld": "Portable",
|
"HandHeld": "Portable",
|
||||||
" (Available)": " (Disponible)",
|
" (Available)": " (Disponible)",
|
||||||
"0 (Sideways)": "0 (latéralement)",
|
" (Unsupported)": "Non supporté",
|
||||||
"90 (Flat)": "90 (plat)",
|
" (Unconnected)": " (Non connectée)",
|
||||||
"180 (-Sideways)": "180 (-Côté)",
|
"Rotation": "Rotation",
|
||||||
"270 (Upside down)": "270 (à l'envers)",
|
"0 (Sideways)": "0 (Paysage)",
|
||||||
|
"90 (Flat)": "90 (Portrait)",
|
||||||
|
"180 (-Sideways)": "180 (-Paysage)",
|
||||||
|
"270 (Upside down)": "270 (Inversé)",
|
||||||
|
"Colour": "Couleur",
|
||||||
"Grey": "Gris",
|
"Grey": "Gris",
|
||||||
"Ironbow": "Arc de fer",
|
"Ironbow": "Ironbow",
|
||||||
"Green": "Vert",
|
"Green": "Vert",
|
||||||
"Red": "Rouge",
|
"Red": "Rouge",
|
||||||
"Blue": "Bleu",
|
"Blue": "Bleu",
|
||||||
|
"Light Target": "Luminosité",
|
||||||
"All leds": "Toutes les LED",
|
"All leds": "Toutes les LED",
|
||||||
"Bright group": "Groupe lumineux",
|
"Bright group": "Groupe lumineux",
|
||||||
"Dim group": "Groupe de gradation",
|
"Dim group": "Groupe sombre",
|
||||||
"None": "Aucun",
|
"None": "Aucun",
|
||||||
|
"Gain": "Gain",
|
||||||
|
"Negative Image": "Image Négative",
|
||||||
"Normal image": "Image normale",
|
"Normal image": "Image normale",
|
||||||
"Negative image": "Image négative",
|
"Negative image": "Image négative",
|
||||||
"320x240": "320x240",
|
|
||||||
"160x120": "160x120",
|
|
||||||
"80x60": "80x60",
|
|
||||||
"40x30": "40x30",
|
|
||||||
"20x15": "20x15",
|
|
||||||
"Controller": "Contrôleur",
|
|
||||||
"Rotation": "Rotation",
|
|
||||||
"Colour": "Couleur",
|
|
||||||
"Light Target": "Cible légère",
|
|
||||||
"Gain": "Gagner",
|
|
||||||
"Negative Image": "Image négative",
|
|
||||||
"Format": "Format",
|
"Format": "Format",
|
||||||
"Trimming Format": "Format de découpage",
|
"Trimming Format": "Format de Découpe",
|
||||||
"External Light Filter": "Filtre de lumière externe",
|
"320x240": "320×240",
|
||||||
"Load Default": "Charger par défaut",
|
"160x120": "160×120",
|
||||||
"No Internet": "Pas d'Internet",
|
"80x60": "80×60",
|
||||||
"[Applet Mode]": "[Mode Applet]",
|
"40x30": "40×30",
|
||||||
"Language": "Langue"
|
"20x15": "20×15",
|
||||||
}
|
"External Light Filter": "Filtre de Lumière Externe",
|
||||||
|
"Load Default": "Charger par Défaut",
|
||||||
|
|
||||||
|
"Advanced": "Avancé",
|
||||||
|
"Advanced Options": "Options Avancées",
|
||||||
|
"Logging": "Journalisation",
|
||||||
|
"Replace hbmenu on exit": "Remplacer hbmenu quand quitté",
|
||||||
|
"Restore hbmenu?": "Restaurer hbmenu?",
|
||||||
|
"Restore": "Restaurer",
|
||||||
|
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "/switch/hbmenu.nro n'a pas été trouvé\nUtiliser l'Appstore pour réinstaller le hbmenu",
|
||||||
|
"Failed to restore hbmenu, please re-download hbmenu": "Echec de la restauration de hbmenu, veuillez le réinstaller",
|
||||||
|
"Failed to restore hbmenu, using sphaira instead": "Echec de la restauration de hbmenu, sphaira sera utilisé à la place",
|
||||||
|
"Restored hbmenu, closing sphaira": "Hbmenu restauré, fermeture de sphaira",
|
||||||
|
"Restored hbmenu": "Hbmenu restauré",
|
||||||
|
"Restart Sphaira?": "Redémarrer Sphaira?",
|
||||||
|
"Press OK to restart Sphaira": "Appuyez sur OK pour redémarrer Sphaira",
|
||||||
|
"Text scroll speed": "Vitesse de défilement du texte",
|
||||||
|
"Slow": "Lent",
|
||||||
|
"Normal": "Normal",
|
||||||
|
"Fast": "Rapide",
|
||||||
|
"Set right-side menu": "Configurer le menu de droite",
|
||||||
|
"Install options": "Options d'installation",
|
||||||
|
"Install Options": "Options d'Installation",
|
||||||
|
"Enable sysmmc": "Activer sur la sysmmc",
|
||||||
|
"Enable emummc": "Activer sur l'emummc",
|
||||||
|
"Show install warning": "Afficher l'avertissement d'installation",
|
||||||
|
"Install location": "Emplacement d'installation",
|
||||||
|
"System memory": "Mémoire système",
|
||||||
|
"microSD card": "Carte microSD",
|
||||||
|
"Boost CPU clock": "Augmenter la vitesse de l'horloge CPU",
|
||||||
|
"Allow downgrade": "Autoriser le downgrade",
|
||||||
|
"Skip if already installed": "Ignorer si déjà installé",
|
||||||
|
"Ticket only": "Seulement le ticket",
|
||||||
|
"Skip base": "Ignorer base",
|
||||||
|
"Skip patch": "Ignorer mise à jour",
|
||||||
|
"Skip dlc": "Ignorer DLC",
|
||||||
|
"Skip data patch": "Ignorer patch de données",
|
||||||
|
"Skip ticket": "Ignorer ticket",
|
||||||
|
"Skip NCA hash verify": "Ignorer la vérification du hash NCA",
|
||||||
|
"Skip RSA header verify": "Ignorer la vérification de l'entête RSA",
|
||||||
|
"Skip RSA NPDM verify": "Ignorer la vérification RSA NPDM",
|
||||||
|
"Ignore distribution bit": "Ignorer le bit de distribution",
|
||||||
|
"Convert to standard crypto": "Convertir vers la crypto standard",
|
||||||
|
"Lower master key": "Abaisser la master key",
|
||||||
|
"Lower system version": "Abaisser la version du système",
|
||||||
|
|
||||||
|
"Homebrew": "Homebrew",
|
||||||
|
"Apps": "Applications",
|
||||||
|
"Homebrew Options": "Options Homebrew",
|
||||||
|
"Hide Sphaira": "Masquer Sphaira",
|
||||||
|
"Install Forwarder": "Installer le Forwarder",
|
||||||
|
"WARNING: Installing forwarders will lead to a ban!": "ATTENTION: L'installation de forwarders entraînera un ban!",
|
||||||
|
"Installing Forwarder": "Installation Du Forwarder",
|
||||||
|
"Creating Program": "Création de Program",
|
||||||
|
"Creating Control": "Création de Control",
|
||||||
|
"Creating Meta": "Création de Meta",
|
||||||
|
"Writing Nca": "Ecriture NCA",
|
||||||
|
"Updating ncm databse": "Mise à jour de ncm databse",
|
||||||
|
"Pushing application record": "Ajout de l'enregistrement de l'application",
|
||||||
|
"Failed to install forwarder": "Echec de l'installation du forwarder",
|
||||||
|
"Unstarred ": "Retiré des favories ",
|
||||||
|
"Starred ": "Ajouté aux favories ",
|
||||||
|
"Failed to remove old forwarder, please manually remove it!": "Supression de l'ancien forwarder échouée, supprimez-le manuellement!",
|
||||||
|
|
||||||
|
"AppStore": "AppStore",
|
||||||
|
"Appstore": "Magasin d'applications",
|
||||||
|
"Store": "Magasin",
|
||||||
|
"Filter: %s | Sort: %s | Order: %s": "Filtre: %s | Tri: %s | Ordre: %s",
|
||||||
|
"AppStore Options": "Options de l'AppStore",
|
||||||
|
"Info": "Info.",
|
||||||
|
"Changelog": "Journal des modifications",
|
||||||
|
"Details": "Détails",
|
||||||
|
"version: %s": "version: %s",
|
||||||
|
"updated: %s": "Mis à jour: %s",
|
||||||
|
"category: %s": "catégorie: %s",
|
||||||
|
"extracted: %.2f MiB": "Extrait: %.2f MiB",
|
||||||
|
"app_dls: %s": "app_dls: %s",
|
||||||
|
"More by Author": "Plus de cet Auteur",
|
||||||
|
"Leave Feedback": "Laisser un avis",
|
||||||
|
|
||||||
|
"FileBrowser": "Explorateur de Fichiers",
|
||||||
|
"Files": "Fichiers",
|
||||||
|
"%zd files": "%zd fichiers",
|
||||||
|
"%zd dirs": "%zd dossiers",
|
||||||
|
"File Options": "Options de Fichier",
|
||||||
|
"Show Hidden": "Afficher Masqués",
|
||||||
|
"Folders First": "Dossiers en Premier",
|
||||||
|
"Hidden Last": "Masqués en Dernier",
|
||||||
|
"Cut": "Couper",
|
||||||
|
"Copy": "Copier",
|
||||||
|
"Copying ": "Copie en cours ",
|
||||||
|
"Paste": "Coller",
|
||||||
|
"Paste ": "Coller ",
|
||||||
|
" file(s)?": " fichier(s)?",
|
||||||
|
"Pasting ": "Collage en cours ",
|
||||||
|
"Pasting": "Collage en cours",
|
||||||
|
"Rename": "Renommer",
|
||||||
|
"Set New File Name": "Nouveau Nom Du Fichier",
|
||||||
|
"Extract zip": "Extraire le zip",
|
||||||
|
"Extract Options": "Options d'extraction",
|
||||||
|
"Extract here": "Extraire ici",
|
||||||
|
"Extract to root": "Extraire à la racine",
|
||||||
|
"Are you sure you want to extract to root?": "Souhaitez-vous vraiment extraire à la racine?",
|
||||||
|
"Extract to...": "Extraire vers...",
|
||||||
|
"Enter the path to the folder to extract into": "Entrer le chemin du répertoire vers lequel extraire",
|
||||||
|
"Extracting ": "Extraction en cours ",
|
||||||
|
"Extract success!": "Extraction réussie!",
|
||||||
|
"Extract failed!": "Extraction échouée!",
|
||||||
|
"Compress to zip": "Compresser en zip",
|
||||||
|
"Compress Options": "Options de compression",
|
||||||
|
"Compress": "Compresser",
|
||||||
|
"Compress to...": "Compresser vers...",
|
||||||
|
"Compressing ": "Compression en cours ",
|
||||||
|
"Compress success!": "Compression réussie!",
|
||||||
|
"Compress failed!": "Compression échouée!",
|
||||||
|
"Create File": "Créer un Fichier",
|
||||||
|
"Set File Name": "Nommer Le Fichier",
|
||||||
|
"Create Folder": "Créer un Dossier",
|
||||||
|
"Set Folder Name": "Nommer Le Dossier",
|
||||||
|
"Creating ": "Création ",
|
||||||
|
"Upload": "Upload",
|
||||||
|
"Select upload location": "Sélectionner l'emplacement d'upload",
|
||||||
|
"No upload locations set!": "Aucun emplacement d'upload configuré!",
|
||||||
|
"Uploading": "Upload en cours",
|
||||||
|
"Upload successfull!": "Upload réussi!",
|
||||||
|
"Upload failed!": "Upload échoué!",
|
||||||
|
"View as text (unfinished)": "Afficher sous forme de texte (inachevé)",
|
||||||
|
"Ignore read only": "Ignorer lecture seule",
|
||||||
|
"Mount": "Monter",
|
||||||
|
"Sd": "Sd",
|
||||||
|
"Image System memory": "Image de la mémoire System",
|
||||||
|
"Image microSD card": "Image de la Carte microSD",
|
||||||
|
"Empty...": "Vide...",
|
||||||
|
"Open with DayBreak?": "Ouvrir avec DayBreak?",
|
||||||
|
"Launch ": "Lancer ",
|
||||||
|
"Launch option for: ": "Option de lancement pour: ",
|
||||||
|
"Select launcher for: ": "Sélectionner le lanceur pour: ",
|
||||||
|
|
||||||
|
"Sort By": "Tri Par",
|
||||||
|
"Sort Options": "Options de Tri",
|
||||||
|
"Filter": "Filtre",
|
||||||
|
"All": "Tous",
|
||||||
|
"Emulators": "Émulateurs",
|
||||||
|
"Tools": "Outils",
|
||||||
|
"Themes": "Thèmes",
|
||||||
|
"Legacy": "Legacy",
|
||||||
|
"Sort": "Tri",
|
||||||
|
"Size": "Taille",
|
||||||
|
"Size (Star)": "Taille (Favories)",
|
||||||
|
"Alphabetical": "Alphabétique",
|
||||||
|
"Alphabetical (Star)": "Alphabétique (Favories)",
|
||||||
|
"Updated": "Mis à jour",
|
||||||
|
"Updated (Star)": "Mis à jour (Favories)",
|
||||||
|
"Downloads": "Téléchargements",
|
||||||
|
"Likes": "Likes",
|
||||||
|
"ID": "ID",
|
||||||
|
"Order": "Ordre",
|
||||||
|
"Descending": "Décroissant",
|
||||||
|
"Descending (down)": "Décroissant (vers le bas)",
|
||||||
|
"Desc": "Décroissant",
|
||||||
|
"Ascending": "Croissant",
|
||||||
|
"Ascending (Up)": "Croissant (vers le haut)",
|
||||||
|
"Asc": "Croissant",
|
||||||
|
"Layout": "Type d'affichage",
|
||||||
|
"List": "Liste",
|
||||||
|
"Icon": "Icône",
|
||||||
|
"Grid": "Grille",
|
||||||
|
"Search": "Recherche",
|
||||||
|
|
||||||
|
"Options": "Options",
|
||||||
|
"OK": "OK",
|
||||||
|
"Back": "Retour",
|
||||||
|
"Select": "Sélectionner",
|
||||||
|
"Open": "Ouvrir",
|
||||||
|
"Launch": "Exécuter",
|
||||||
|
"Restart": "Redémarrer",
|
||||||
|
"Next": "Suivant",
|
||||||
|
"Prev": "Précédent",
|
||||||
|
"Unstar": "Retirer des favories",
|
||||||
|
"Star": "Ajouter aux favories",
|
||||||
|
"Yes": "Oui",
|
||||||
|
"No": "Non",
|
||||||
|
"On": "On",
|
||||||
|
"Off": "Off",
|
||||||
|
|
||||||
|
"Install": "Installer",
|
||||||
|
"Install Selected files?": "Installer les fichiers sélectionnés?",
|
||||||
|
"Installing ": "Installation en cours ",
|
||||||
|
"Installed ": "Installé ",
|
||||||
|
"Installed!": "Installé!",
|
||||||
|
"Trying to load ": "Tente de charger ",
|
||||||
|
"Checking MD5": "Vérification MD5",
|
||||||
|
|
||||||
|
"Delete": "Supprimer",
|
||||||
|
"Delete Selected files?": "Supprimer les fichiers sélectionnés?",
|
||||||
|
"Are you sure you want to delete ": "Êtes-vous sûr de vouloir supprimer ",
|
||||||
|
"Scanning ": "Scan en cours ",
|
||||||
|
"Deleting ": "Suppression en cours ",
|
||||||
|
"Deleting": "Suppression en cours",
|
||||||
|
"Remove": "Supprimer",
|
||||||
|
"Completely remove ": "Supprimer totalement ",
|
||||||
|
"Removing ": "Suppression en cours ",
|
||||||
|
"Removed ": "Supprimé ",
|
||||||
|
"Uninstalling ": "Désinstallation en cours ",
|
||||||
|
|
||||||
|
"Download": "Télécharger",
|
||||||
|
"Downloading ": "Téléchargement en cours ",
|
||||||
|
"Downloaded ": "Téléchargé",
|
||||||
|
|
||||||
|
"Update": "Mise à jour",
|
||||||
|
"Update avaliable: ": "Mise à jour disponible: ",
|
||||||
|
"Download update: ": "Télécharger la mise à jour: ",
|
||||||
|
"Updated to ": "Mis à jour vers ",
|
||||||
|
"Failed to download update": "Echec du téléchargement de la mise à jour",
|
||||||
|
|
||||||
|
"%zu hours %zu minutes remaining": "%zu heures %zu minutes restantes",
|
||||||
|
"%zu minutes %zu seconds remaining": "%zu minutes %zu secondes restantes",
|
||||||
|
"%zu seconds remaining": "%zu secondes restantes",
|
||||||
|
|
||||||
|
"Loading...": "Chargement...",
|
||||||
|
"Loading": "Chargement en cours",
|
||||||
|
"Empty!": "Vide!",
|
||||||
|
"Not Ready...": "Pas prêt",
|
||||||
|
"Error loading page!": "Erreur du chargement de la page!"
|
||||||
|
}
|
||||||
@@ -1,114 +1,392 @@
|
|||||||
{
|
{
|
||||||
"Launch": "Lancio",
|
"[Applet Mode]": "[Modalità applet]",
|
||||||
"Options": "Opzioni",
|
"No Internet": "Niente Internet",
|
||||||
"Homebrew Options": "Opzioni per l'homebrew",
|
"Switch-Handheld!": "Switch Portatile",
|
||||||
"Sort By": "Ordina per",
|
"Switch-Docked!": "Switch Dock",
|
||||||
"Sort Options": "Opzioni di ordinamento",
|
"Audio disabled due to suspended game": "Audio disabilitato poichè un app è in pausa",
|
||||||
"Updated": "Aggiornato",
|
"Are you sure you wish to cancel?": "Sei sicuro di voler annullare?",
|
||||||
"Size": "Misurare",
|
"An error occurred": "",
|
||||||
"Alphabetical": "Alfabetico",
|
"If this message appears repeatedly, please open an issue.": "Se questo messaggio appare frequentemente, segnala il bug.",
|
||||||
"Decending": "Decrescente",
|
|
||||||
"Ascending": "Ascendente",
|
"Menu Options": "Opzioni menu",
|
||||||
"Sort": "Ordinare",
|
|
||||||
"Order": "Ordine",
|
|
||||||
"Info": "Informazioni",
|
|
||||||
"Delete": "Eliminare",
|
|
||||||
"Hide Sphaira": "Nascondi Sphaira",
|
|
||||||
"Are you sure you want to delete ": "Sei sicuro di voler eliminare? ",
|
|
||||||
"Install Forwarder": "Installa lo spedizioniere",
|
|
||||||
"WARNING: Installing forwarders will lead to a ban!": "ATTENZIONE: l'installazione di forwarder porterà al ban!",
|
|
||||||
"Back": "Indietro",
|
|
||||||
"Install": "Installare",
|
|
||||||
"Fs": "Fs",
|
|
||||||
"App": "App",
|
|
||||||
"Menu": "Menu",
|
"Menu": "Menu",
|
||||||
"Homebrew": "Birra fatta in casa",
|
|
||||||
"FileBrowser": "FileBrowser",
|
|
||||||
"Open": "Aprire",
|
|
||||||
"Theme Options": "Opzioni del tema",
|
|
||||||
"Select Theme": "Seleziona Tema",
|
|
||||||
"Shuffle": "Mescola",
|
|
||||||
"Music": "Musica",
|
|
||||||
"Show Hidden": "Mostra nascosto",
|
|
||||||
"Folders First": "Prima le cartelle",
|
|
||||||
"Hidden Last": "Ultimo nascosto",
|
|
||||||
"Yes": "SÌ",
|
|
||||||
"No": "NO",
|
|
||||||
"Network Options": "Opzioni di rete",
|
|
||||||
"Nxlink": "Nxlink",
|
|
||||||
"Check for update": "Controlla l'aggiornamento",
|
|
||||||
"File Options": "Opzioni file",
|
|
||||||
"Cut": "Taglio",
|
|
||||||
"Copy": "Copia",
|
|
||||||
"Rename": "Rinominare",
|
|
||||||
"Advanced Options": "Crea file",
|
|
||||||
"Create File": "Crea file",
|
|
||||||
"Create Folder": "Crea cartella",
|
|
||||||
"View as text": "Visualizza come testo",
|
|
||||||
"View as text (unfinished)": "Visualizza come testo (non finito)",
|
|
||||||
"Set Archive Bit": "Imposta bit di archivio",
|
|
||||||
"AppStore Options": "Opzioni dell'App Store",
|
|
||||||
"All": "Tutto",
|
|
||||||
"Games": "Giochi",
|
|
||||||
"Emulators": "Emulatori",
|
|
||||||
"Tools": "Utensili",
|
|
||||||
"Advanced": "Avanzato",
|
|
||||||
"Themes": "Temi",
|
|
||||||
"Legacy": "Eredità",
|
|
||||||
"Misc": "Varie",
|
|
||||||
"Downloads": "Download",
|
|
||||||
"Filter": "Filtro",
|
|
||||||
"Search": "Ricerca",
|
|
||||||
"Menu Options": "Opzioni del menu",
|
|
||||||
"Header": "Intestazione",
|
|
||||||
"Theme": "Tema",
|
"Theme": "Tema",
|
||||||
|
"Theme Options": "Opzioni tema",
|
||||||
|
"Select Theme": "Seleziona tema",
|
||||||
|
"Music": "Musica",
|
||||||
|
"12 Hour Time": "",
|
||||||
|
"Download Default Music": "",
|
||||||
|
"Failed to download default_music.bfstm, please try again": "",
|
||||||
|
"Overwrite current default music?": "",
|
||||||
|
|
||||||
"Network": "Rete",
|
"Network": "Rete",
|
||||||
"Logging": "Registrazione",
|
"Network Options": "Opzioni di rete",
|
||||||
"Enabled": "Abilitato",
|
"Ftp": "FTP",
|
||||||
"Disabled": "Disabilitato",
|
"Mtp": "MTP",
|
||||||
"Replace hbmenu on exit": "Sostituisci hbmenu all'uscita",
|
"Nxlink": "Nxlink",
|
||||||
|
"Nxlink Connected": "Nxlink connesso",
|
||||||
|
"Nxlink Upload": "Nxlink upload",
|
||||||
|
"Nxlink Finished": "Nxlink finito",
|
||||||
|
|
||||||
|
"Language": "Lingua",
|
||||||
|
"Auto": "Auto",
|
||||||
|
"English": "English",
|
||||||
|
"Japanese": "日本語",
|
||||||
|
"French": "Français",
|
||||||
|
"German": "Deutsch",
|
||||||
|
"Italian": "Italiano",
|
||||||
|
"Spanish": "Español",
|
||||||
|
"Chinese": "中文",
|
||||||
|
"Korean": "한국어",
|
||||||
|
"Dutch": "Dutch",
|
||||||
|
"Portuguese": "Português",
|
||||||
|
"Russian": "Русский",
|
||||||
|
"Swedish": "Svenska",
|
||||||
|
"Vietnamese": "Vietnamese",
|
||||||
|
"Ukrainian": "Українська",
|
||||||
|
|
||||||
|
"Misc": "Varie",
|
||||||
"Misc Options": "Opzioni varie",
|
"Misc Options": "Opzioni varie",
|
||||||
|
"Games": "Giochi",
|
||||||
|
"Game Options": "",
|
||||||
|
"Hide forwarders": "",
|
||||||
|
"Launch random game": "",
|
||||||
|
"List meta records": "",
|
||||||
|
"Entries": "",
|
||||||
|
"Failed to list application meta entries": "",
|
||||||
|
"No meta entries found...\n": "",
|
||||||
|
"Updating application record list": "",
|
||||||
|
"Dump": "",
|
||||||
|
"Select content to dump": "",
|
||||||
|
"Dump All": "",
|
||||||
|
"Dump Application": "",
|
||||||
|
"Dump Patch": "",
|
||||||
|
"Dump AddOnContent": "",
|
||||||
|
"Dump DataPatch": "",
|
||||||
|
"Select dump location": "",
|
||||||
|
"microSD card (/dumps/NSP/)": "",
|
||||||
|
"USB transfer (Switch 2 Switch)": "",
|
||||||
|
"/dev/null (Speed Test)": "",
|
||||||
|
"Dumping": "",
|
||||||
|
"Dump successfull!": "",
|
||||||
|
"Dump failed!": "",
|
||||||
|
"Success": "",
|
||||||
|
"Delete successfull!": "",
|
||||||
|
"Delete failed!": "",
|
||||||
|
|
||||||
"Themezer": "Themezer",
|
"Themezer": "Themezer",
|
||||||
|
"Themezer Options": "Impostazioni Themezer",
|
||||||
|
"Nsfw": "NSFW",
|
||||||
|
"Page": "Pagina",
|
||||||
|
"Page %zu / %zu": "Pagina %zu / %zu",
|
||||||
|
"Enter Page Number": "Inserisci il numero della pagina",
|
||||||
|
"Bad Page": "Pagina invalida",
|
||||||
|
"Download theme?": "Vuoi scaricare il tema?",
|
||||||
|
|
||||||
|
"GitHub": "GitHub",
|
||||||
|
"Downloading json": "Scaricamento json",
|
||||||
|
"Select asset to download for ": "",
|
||||||
|
|
||||||
|
"FTP Install": "",
|
||||||
|
"FTP Install (EXPERIMENTAL)": "",
|
||||||
|
"Connection Type: WiFi | Strength: ": "",
|
||||||
|
"Connection Type: Ethernet": "",
|
||||||
|
"Connection Type: None": "",
|
||||||
|
"Host:": "",
|
||||||
|
"Port:": "",
|
||||||
|
"Username:": "",
|
||||||
|
"Password:": "",
|
||||||
|
"SSID:": "",
|
||||||
|
"Passphrase:": "",
|
||||||
|
"Failed to install via FTP, press B to exit...": "",
|
||||||
|
"Ftp install success!": "",
|
||||||
|
"Ftp install failed!": "",
|
||||||
|
"USB Install": "",
|
||||||
|
"USB": "",
|
||||||
|
"Connected, waiting for file list...": "",
|
||||||
|
"Connected, starting transfer...": "",
|
||||||
|
"Failed to init usb, press B to exit...": "",
|
||||||
|
"Waiting for connection...": "",
|
||||||
|
"Transferring data...": "",
|
||||||
|
"USB connected, sending file list": "",
|
||||||
|
"Sent file list, waiting for command...": "",
|
||||||
|
"waiting for usb connection...": "",
|
||||||
|
"Disable MTP for usb install": "",
|
||||||
|
"Re-enabled MTP": "",
|
||||||
|
"Installed via usb": "",
|
||||||
|
"Usb install success!": "",
|
||||||
|
"Usb install failed!": "",
|
||||||
|
"Press B to exit...": "",
|
||||||
|
"GameCard Install": "",
|
||||||
|
"GameCard": "",
|
||||||
|
"GC": "",
|
||||||
|
"System memory %.1f GB": "",
|
||||||
|
"microSD card %.1f GB": "",
|
||||||
|
"Nand Install": "",
|
||||||
|
"SD Card Install": "",
|
||||||
|
"Exit": "",
|
||||||
|
"Gc install success!": "",
|
||||||
|
"Gc install failed!": "",
|
||||||
|
|
||||||
|
"IRS (Infrared Joycon Camera)": "",
|
||||||
|
"IRS": "",
|
||||||
"Irs": "Irs",
|
"Irs": "Irs",
|
||||||
"Web": "Rete",
|
"Ambient Noise Level: ": "",
|
||||||
"Download": "Scaricamento",
|
"Controller": "Controller",
|
||||||
"Next Page": "Pagina successiva",
|
|
||||||
"Prev Page": "Pagina precedente",
|
|
||||||
"Pad ": "Pad ",
|
"Pad ": "Pad ",
|
||||||
" (Unconnected)": " (Non connesso)",
|
"HandHeld": "HandHeld",
|
||||||
"HandHeld": "Tenuto in mano",
|
|
||||||
" (Available)": " (Disponibile)",
|
" (Available)": " (Disponibile)",
|
||||||
"0 (Sideways)": "0 (lateralmente)",
|
" (Unsupported)": "",
|
||||||
|
" (Unconnected)": " (Non connesso)",
|
||||||
|
"Rotation": "Rotazione",
|
||||||
|
"0 (Sideways)": "0 (Di lato)",
|
||||||
"90 (Flat)": "90 (Piatto)",
|
"90 (Flat)": "90 (Piatto)",
|
||||||
"180 (-Sideways)": "180 (-lateralmente)",
|
"180 (-Sideways)": "180 (-Di lato)",
|
||||||
"270 (Upside down)": "270 (Capovolto)",
|
"270 (Upside down)": "270 (Capovolto)",
|
||||||
|
"Colour": "Colore",
|
||||||
"Grey": "Grigio",
|
"Grey": "Grigio",
|
||||||
"Ironbow": "Arco di ferro",
|
"Ironbow": "Ironbow",
|
||||||
"Green": "Verde",
|
"Green": "Verde",
|
||||||
"Red": "Rosso",
|
"Red": "Rosso",
|
||||||
"Blue": "Blu",
|
"Blue": "Blu",
|
||||||
|
"Light Target": "Bersaglio leggero",
|
||||||
"All leds": "Tutti i led",
|
"All leds": "Tutti i led",
|
||||||
"Bright group": "Gruppo brillante",
|
"Bright group": "Gruppo brillante",
|
||||||
"Dim group": "Gruppo debole",
|
"Dim group": "Gruppo debole",
|
||||||
"None": "Nessuno",
|
"None": "Nessuno",
|
||||||
"Normal image": "Immagine normale",
|
|
||||||
"Negative image": "Immagine negativa",
|
|
||||||
"320x240": "320x240",
|
|
||||||
"160x120": "160x120",
|
|
||||||
"80x60": "80x60",
|
|
||||||
"40x30": "40x30",
|
|
||||||
"20x15": "20×15",
|
|
||||||
"Controller": "Controllore",
|
|
||||||
"Rotation": "Rotazione",
|
|
||||||
"Colour": "Colore",
|
|
||||||
"Light Target": "Bersaglio leggero",
|
|
||||||
"Gain": "Guadagno",
|
"Gain": "Guadagno",
|
||||||
"Negative Image": "Immagine negativa",
|
"Negative Image": "Immagine negativa",
|
||||||
|
"Normal image": "Immagine normale",
|
||||||
|
"Negative image": "Immagine negativa",
|
||||||
"Format": "Formato",
|
"Format": "Formato",
|
||||||
"Trimming Format": "Formato di ritaglio",
|
"Trimming Format": "Formato di ritaglio",
|
||||||
|
"320x240": "320×240",
|
||||||
|
"160x120": "160×120",
|
||||||
|
"80x60": "80×60",
|
||||||
|
"40x30": "40×30",
|
||||||
|
"20x15": "20×15",
|
||||||
"External Light Filter": "Filtro luce esterno",
|
"External Light Filter": "Filtro luce esterno",
|
||||||
"Load Default": "Carica predefinito",
|
"Load Default": "Carica predefinito",
|
||||||
"No Internet": "Niente Internet",
|
|
||||||
"[Applet Mode]": "[Modalità applet]",
|
"Advanced": "Avanzato",
|
||||||
"Language": "Lingua"
|
"Advanced Options": "Opzioni avanzate",
|
||||||
}
|
"Logging": "Logging",
|
||||||
|
"Replace hbmenu on exit": "Sostituisci hbmenu all'uscita",
|
||||||
|
"Restore hbmenu?": "Vuoi ripristinare hbmenu?",
|
||||||
|
"Restore": "Ripristina",
|
||||||
|
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "Impossibile trovare /switch/hbmenu.nro\nUsa l'Appstore per reinstallare hbmenu",
|
||||||
|
"Failed to restore hbmenu, please re-download hbmenu": "Impossibile ripristinare hbmenu, per favore riscaricalo",
|
||||||
|
"Failed to restore hbmenu, using sphaira instead": "Impossibile ripristinare hbmenu, uso Sphaira invece",
|
||||||
|
"Restored hbmenu, closing sphaira": "hbmenu ripristinato, chiudo Sphaira",
|
||||||
|
"Restored hbmenu": "hbmenu ripristinato",
|
||||||
|
"Restart Sphaira?": "Vuoi riavviare Sphaira?",
|
||||||
|
"Press OK to restart Sphaira": "Premi OK per riavviare Sphaira",
|
||||||
|
"Text scroll speed": "",
|
||||||
|
"Slow": "",
|
||||||
|
"Normal": "",
|
||||||
|
"Fast": "",
|
||||||
|
"Set right-side menu": "",
|
||||||
|
"Install options": "",
|
||||||
|
"Install Options": "",
|
||||||
|
"Enable sysmmc": "",
|
||||||
|
"Enable emummc": "",
|
||||||
|
"Show install warning": "Mostra avvertimento installazione",
|
||||||
|
"Install location": "Installa posizione",
|
||||||
|
"System memory": "Memoria di sistema",
|
||||||
|
"microSD card": "Scheda microSD",
|
||||||
|
"Boost CPU clock": "",
|
||||||
|
"Allow downgrade": "",
|
||||||
|
"Skip if already installed": "",
|
||||||
|
"Ticket only": "",
|
||||||
|
"Skip base": "",
|
||||||
|
"Skip patch": "",
|
||||||
|
"Skip dlc": "",
|
||||||
|
"Skip data patch": "",
|
||||||
|
"Skip ticket": "",
|
||||||
|
"Skip NCA hash verify": "",
|
||||||
|
"Skip RSA header verify": "",
|
||||||
|
"Skip RSA NPDM verify": "",
|
||||||
|
"Ignore distribution bit": "",
|
||||||
|
"Convert to standard crypto": "",
|
||||||
|
"Lower master key": "",
|
||||||
|
"Lower system version": "",
|
||||||
|
|
||||||
|
"Homebrew": "Homebrew",
|
||||||
|
"Apps": "App",
|
||||||
|
"Homebrew Options": "Opzioni Homebrew",
|
||||||
|
"Hide Sphaira": "Nascondi Sphaira",
|
||||||
|
"Install Forwarder": "Installa forwarder",
|
||||||
|
"WARNING: Installing forwarders will lead to a ban!": "ATTENZIONE: l'installazione di forwarder porterà al ban!",
|
||||||
|
"Installing Forwarder": "",
|
||||||
|
"Creating Program": "",
|
||||||
|
"Creating Control": "",
|
||||||
|
"Creating Meta": "",
|
||||||
|
"Writing Nca": "",
|
||||||
|
"Updating ncm databse": "",
|
||||||
|
"Pushing application record": "",
|
||||||
|
"Failed to install forwarder": "",
|
||||||
|
"Unstarred ": "",
|
||||||
|
"Starred ": "",
|
||||||
|
"Failed to remove old forwarder, please manually remove it!": "",
|
||||||
|
|
||||||
|
"AppStore": "",
|
||||||
|
"Appstore": "",
|
||||||
|
"Store": "Store",
|
||||||
|
"Filter: %s | Sort: %s | Order: %s": "Filtro: %s | Riordina: %s | Ordina: %s",
|
||||||
|
"AppStore Options": "Opzioni dell'App Store",
|
||||||
|
"Info": "Informazioni",
|
||||||
|
"Changelog": "Patch notes",
|
||||||
|
"Details": "Dettagli",
|
||||||
|
"version: %s": "version: %s",
|
||||||
|
"updated: %s": "updated: %s",
|
||||||
|
"category: %s": "category: %s",
|
||||||
|
"extracted: %.2f MiB": "extracted: %.2f MiB",
|
||||||
|
"app_dls: %s": "app_dls: %s",
|
||||||
|
"More by Author": "",
|
||||||
|
"Leave Feedback": "",
|
||||||
|
|
||||||
|
"FileBrowser": "FileBrowser",
|
||||||
|
"Files": "File",
|
||||||
|
"%zd files": "%zd files",
|
||||||
|
"%zd dirs": "%zd dirs",
|
||||||
|
"File Options": "Opzioni file",
|
||||||
|
"Show Hidden": "Mostra nascosto",
|
||||||
|
"Folders First": "Prima le cartelle",
|
||||||
|
"Hidden Last": "Ultimo nascosto",
|
||||||
|
"Cut": "Taglia",
|
||||||
|
"Copy": "Copia",
|
||||||
|
"Copying ": "Copio",
|
||||||
|
"Paste": "Incolla",
|
||||||
|
"Paste ": "Incolla ",
|
||||||
|
" file(s)?": "(i)file?",
|
||||||
|
"Pasting ": "Incollo",
|
||||||
|
"Pasting": "Incollo",
|
||||||
|
"Rename": "Rinomina",
|
||||||
|
"Set New File Name": "Imposta nuovo nome",
|
||||||
|
"Extract zip": "",
|
||||||
|
"Extract Options": "",
|
||||||
|
"Extract here": "",
|
||||||
|
"Extract to root": "",
|
||||||
|
"Are you sure you want to extract to root?": "",
|
||||||
|
"Extract to...": "",
|
||||||
|
"Enter the path to the folder to extract into": "",
|
||||||
|
"Extracting ": "",
|
||||||
|
"Extract success!": "",
|
||||||
|
"Extract failed!": "",
|
||||||
|
"Compress to zip": "",
|
||||||
|
"Compress Options": "",
|
||||||
|
"Compress": "",
|
||||||
|
"Compress to...": "",
|
||||||
|
"Compressing ": "",
|
||||||
|
"Compress success!": "",
|
||||||
|
"Compress failed!": "",
|
||||||
|
"Create File": "Crea file",
|
||||||
|
"Set File Name": "Imposta nome",
|
||||||
|
"Create Folder": "Crea cartella",
|
||||||
|
"Set Folder Name": "Imposta nome",
|
||||||
|
"Creating ": "Creazione",
|
||||||
|
"Upload": "",
|
||||||
|
"Select upload location": "",
|
||||||
|
"No upload locations set!": "",
|
||||||
|
"Uploading": "",
|
||||||
|
"Upload successfull!": "",
|
||||||
|
"Upload failed!": "",
|
||||||
|
"View as text (unfinished)": "Visualizza come testo (non finito)",
|
||||||
|
"Ignore read only": "Ignora read only",
|
||||||
|
"Mount": "Monta",
|
||||||
|
"Sd": "SD",
|
||||||
|
"Image System memory": "Immagine memoria di sistema",
|
||||||
|
"Image microSD card": "Immagine scheda microSD",
|
||||||
|
"Empty...": "Vuoto...",
|
||||||
|
"Open with DayBreak?": "Vuoi aprire con Daybreak?",
|
||||||
|
"Launch ": "Lancia",
|
||||||
|
"Launch option for: ": "Lancia opzione per",
|
||||||
|
"Select launcher for: ": "Scegli launcher per",
|
||||||
|
|
||||||
|
"Sort By": "Ordina per",
|
||||||
|
"Sort Options": "Opzioni filtro",
|
||||||
|
"Filter": "Filtro",
|
||||||
|
"All": "Tutto",
|
||||||
|
"Emulators": "Emulatori",
|
||||||
|
"Tools": "Strumenti",
|
||||||
|
"Themes": "Temi",
|
||||||
|
"Legacy": "Legacy",
|
||||||
|
"Sort": "Riordina",
|
||||||
|
"Size": "Dimensione",
|
||||||
|
"Size (Star)": "Dimensione (Preferiti)",
|
||||||
|
"Alphabetical": "Alfabetico",
|
||||||
|
"Alphabetical (Star)": "Alfabetico (Preferiti)",
|
||||||
|
"Updated": "Aggiornato",
|
||||||
|
"Updated (Star)": "",
|
||||||
|
"Downloads": "Download",
|
||||||
|
"Likes": "Mi Piace",
|
||||||
|
"ID": "ID",
|
||||||
|
"Order": "Ordina",
|
||||||
|
"Descending": "Decrescente",
|
||||||
|
"Descending (down)": "Decrescente",
|
||||||
|
"Desc": "Decrescente",
|
||||||
|
"Ascending": "Crescente",
|
||||||
|
"Ascending (Up)": "Crescente",
|
||||||
|
"Asc": "Crescente",
|
||||||
|
"Layout": "",
|
||||||
|
"List": "",
|
||||||
|
"Icon": "",
|
||||||
|
"Grid": "",
|
||||||
|
"Search": "Ricerca",
|
||||||
|
|
||||||
|
"Options": "Opzioni",
|
||||||
|
"OK": "OK",
|
||||||
|
"Back": "Indietro",
|
||||||
|
"Select": "Seleziona",
|
||||||
|
"Open": "Apri",
|
||||||
|
"Launch": "Lancia",
|
||||||
|
"Restart": "Riavvia",
|
||||||
|
"Next": "",
|
||||||
|
"Prev": "",
|
||||||
|
"Unstar": "Rimuovi dai preferiti",
|
||||||
|
"Star": "Aggiungi ai preferiti",
|
||||||
|
"Yes": "Sì",
|
||||||
|
"No": "No",
|
||||||
|
"On": "",
|
||||||
|
"Off": "",
|
||||||
|
|
||||||
|
"Install": "Installa",
|
||||||
|
"Install Selected files?": "",
|
||||||
|
"Installing ": "Installazione",
|
||||||
|
"Installed ": "",
|
||||||
|
"Installed!": "",
|
||||||
|
"Trying to load ": "Cercando di caricare",
|
||||||
|
"Checking MD5": "Controllo MD5",
|
||||||
|
|
||||||
|
"Delete": "Elimina",
|
||||||
|
"Delete Selected files?": "Vuoi rimuovere i file selezionati?",
|
||||||
|
"Are you sure you want to delete ": "Sei sicuro di voler eliminare? ",
|
||||||
|
"Scanning ": "Scan",
|
||||||
|
"Deleting ": "Eliminazione",
|
||||||
|
"Deleting": "Eliminazione",
|
||||||
|
"Remove": "Rimuovi",
|
||||||
|
"Completely remove ": "Elimina definitivamente",
|
||||||
|
"Removing ": "Rimozione",
|
||||||
|
"Removed ": "Rimosso",
|
||||||
|
"Uninstalling ": "Disinstallazione",
|
||||||
|
|
||||||
|
"Download": "Download",
|
||||||
|
"Downloading ": "Scaricando",
|
||||||
|
"Downloaded ": "Scaricato",
|
||||||
|
|
||||||
|
"Update": "Aggiorna",
|
||||||
|
"Update avaliable: ": "Aggiornamento disponibile",
|
||||||
|
"Download update: ": "Scarica aggiornamento",
|
||||||
|
"Updated to ": "Aggiornato a",
|
||||||
|
"Failed to download update": "Download aggiornamento fallito",
|
||||||
|
|
||||||
|
"%zu hours %zu minutes remaining": "",
|
||||||
|
"%zu minutes %zu seconds remaining": "",
|
||||||
|
"%zu seconds remaining": "",
|
||||||
|
|
||||||
|
"Loading...": "Caricamento...",
|
||||||
|
"Loading": "Caricamento",
|
||||||
|
"Empty!": "Vuoto!",
|
||||||
|
"Not Ready...": "Non pronto...",
|
||||||
|
"Error loading page!": "Errore nel caricare la pagina!"
|
||||||
|
}
|
||||||
@@ -1,114 +1,392 @@
|
|||||||
{
|
{
|
||||||
"Launch": "打ち上げ",
|
"[Applet Mode]": "[Appletモード]",
|
||||||
"Options": "オプション",
|
"No Internet": "インターネットなし",
|
||||||
"Homebrew Options": "自作オプション",
|
"Switch-Handheld!": "ハンドヘルド!",
|
||||||
"Sort By": "並べ替え",
|
"Switch-Docked!": "ドック接続!",
|
||||||
"Sort Options": "並べ替えオプション",
|
"Audio disabled due to suspended game": "ゲームが一時停止状態の場合、オーディオは無効になります",
|
||||||
"Updated": "更新されました",
|
"Are you sure you wish to cancel?": "本当に取り消しますか?",
|
||||||
"Size": "サイズ",
|
"An error occurred": "不具合のお知らせ",
|
||||||
"Alphabetical": "アルファベット順",
|
"If this message appears repeatedly, please open an issue.": "このメッセージが繰り返し表示される場合は、問題を開いてください",
|
||||||
"Decending": "降順",
|
|
||||||
"Ascending": "上昇",
|
"Menu Options": "メニュー設定",
|
||||||
"Sort": "選別",
|
|
||||||
"Order": "注文",
|
|
||||||
"Info": "情報",
|
|
||||||
"Delete": "消去",
|
|
||||||
"Hide Sphaira": "ハイド・スファイラ",
|
|
||||||
"Are you sure you want to delete ": "削除してもよろしいですか ",
|
|
||||||
"Install Forwarder": "フォワーダーのインストール",
|
|
||||||
"WARNING: Installing forwarders will lead to a ban!": "警告: フォワーダーをインストールすると禁止されます。",
|
|
||||||
"Back": "戻る",
|
|
||||||
"Install": "インストール",
|
|
||||||
"Fs": "Fs",
|
|
||||||
"App": "アプリ",
|
|
||||||
"Menu": "メニュー",
|
"Menu": "メニュー",
|
||||||
"Homebrew": "自作",
|
|
||||||
"FileBrowser": "ファイルブラウザ",
|
|
||||||
"Open": "開ける",
|
|
||||||
"Theme Options": "テーマのオプション",
|
|
||||||
"Select Theme": "テーマの選択",
|
|
||||||
"Shuffle": "シャッフル",
|
|
||||||
"Music": "音楽",
|
|
||||||
"Show Hidden": "非表示を表示",
|
|
||||||
"Folders First": "フォルダーを最初に",
|
|
||||||
"Hidden Last": "隠された最後",
|
|
||||||
"Yes": "はい",
|
|
||||||
"No": "いいえ",
|
|
||||||
"Network Options": "ネットワークオプション",
|
|
||||||
"Nxlink": "Nxlink",
|
|
||||||
"Check for update": "アップデートを確認する",
|
|
||||||
"File Options": "ファイルオプション",
|
|
||||||
"Cut": "カット",
|
|
||||||
"Copy": "コピー",
|
|
||||||
"Rename": "名前の変更",
|
|
||||||
"Advanced Options": "ファイルの作成",
|
|
||||||
"Create File": "ファイルの作成",
|
|
||||||
"Create Folder": "フォルダーの作成",
|
|
||||||
"View as text": "テキストとして表示",
|
|
||||||
"View as text (unfinished)": "テキストとして表示 (未完成)",
|
|
||||||
"Set Archive Bit": "アーカイブビットの設定",
|
|
||||||
"AppStore Options": "AppStore オプション",
|
|
||||||
"All": "全て",
|
|
||||||
"Games": "ゲーム",
|
|
||||||
"Emulators": "エミュレータ",
|
|
||||||
"Tools": "ツール",
|
|
||||||
"Advanced": "高度な",
|
|
||||||
"Themes": "テーマ",
|
|
||||||
"Legacy": "遺産",
|
|
||||||
"Misc": "その他",
|
|
||||||
"Downloads": "ダウンロード",
|
|
||||||
"Filter": "フィルター",
|
|
||||||
"Search": "検索",
|
|
||||||
"Menu Options": "メニューオプション",
|
|
||||||
"Header": "ヘッダ",
|
|
||||||
"Theme": "テーマ",
|
"Theme": "テーマ",
|
||||||
|
"Theme Options": "テーマ設定",
|
||||||
|
"Select Theme": "テーマを選ぶ",
|
||||||
|
"Music": "BGM",
|
||||||
|
"12 Hour Time": "12時間表示",
|
||||||
|
"Download Default Music": "基本BGMダウンロード",
|
||||||
|
"Failed to download default_music.bfstm, please try again": "基本BGMのダウンロードに失敗しました、もう一度お試しください",
|
||||||
|
"Overwrite current default music?": "BGMを書き換えますか?",
|
||||||
|
|
||||||
"Network": "ネットワーク",
|
"Network": "ネットワーク",
|
||||||
"Logging": "ロギング",
|
"Network Options": "ネットワーク設定",
|
||||||
"Enabled": "有効",
|
"Ftp": "FTP",
|
||||||
"Disabled": "無効",
|
"Mtp": "MTP",
|
||||||
"Replace hbmenu on exit": "終了時に hbmenu を置き換える",
|
"Nxlink": "Nxlink",
|
||||||
"Misc Options": "その他のオプション",
|
"Nxlink Connected": "Nxlink 接続",
|
||||||
"Themezer": "テーマ設定者",
|
"Nxlink Upload": "Nxlink アップロード",
|
||||||
"Irs": "イルス",
|
"Nxlink Finished": "Nxlink 終了",
|
||||||
"Web": "ウェブ",
|
|
||||||
"Download": "ダウンロード",
|
"Language": "言語",
|
||||||
"Next Page": "次のページ",
|
"Auto": "自動",
|
||||||
"Prev Page": "前のページ",
|
"English": "English",
|
||||||
"Pad ": "パッド ",
|
"Japanese": "日本語",
|
||||||
" (Unconnected)": " (未接続)",
|
"French": "Français",
|
||||||
|
"German": "Deutsch",
|
||||||
|
"Italian": "Italiano",
|
||||||
|
"Spanish": "Español",
|
||||||
|
"Chinese": "中文",
|
||||||
|
"Korean": "한국어",
|
||||||
|
"Dutch": "Dutch",
|
||||||
|
"Portuguese": "Português",
|
||||||
|
"Russian": "Русский",
|
||||||
|
"Swedish": "Svenska",
|
||||||
|
"Vietnamese": "Vietnamese",
|
||||||
|
"Ukrainian": "Українська",
|
||||||
|
|
||||||
|
"Misc": "その他",
|
||||||
|
"Misc Options": "その他",
|
||||||
|
"Games": "ゲーム",
|
||||||
|
"Game Options": "ゲーム設定",
|
||||||
|
"Hide forwarders": "Forwarderを隠す",
|
||||||
|
"Launch random game": "ゲームをランダム起動",
|
||||||
|
"List meta records": "メタレコード一覧",
|
||||||
|
"Entries": "エントリ",
|
||||||
|
"Failed to list application meta entries": "ゲームのメタ一覧を表示できませんでした",
|
||||||
|
"No meta entries found...\n": "メタエントリが見つかりませんでした\n",
|
||||||
|
"Updating application record list": "ゲームのレコードを更新しています",
|
||||||
|
"Dump": "吸出し",
|
||||||
|
"Select content to dump": "吸出すコンテンツを選択",
|
||||||
|
"Dump All": "全て",
|
||||||
|
"Dump Application": "ゲームのみ",
|
||||||
|
"Dump Patch": "ゲームパッチのみ",
|
||||||
|
"Dump AddOnContent": "DLCのみ",
|
||||||
|
"Dump DataPatch": "DLCパッチのみ",
|
||||||
|
"Select dump location": "吸出し位置を選択",
|
||||||
|
"microSD card (/dumps/NSP/)": "SDカード (/dumps/NSP/)",
|
||||||
|
"USB transfer (Switch 2 Switch)": "USB転送 (Switch 2 Switch)",
|
||||||
|
"/dev/null (Speed Test)": "/dev/null (Speed Test)",
|
||||||
|
"Dumping": "吸出し中",
|
||||||
|
"Dump successfull!": "吸出し完了!",
|
||||||
|
"Dump failed!": "吸出し失敗!",
|
||||||
|
"Success": "完了",
|
||||||
|
"Delete successfull!": "削除完了!",
|
||||||
|
"Delete failed!": "削除失敗!",
|
||||||
|
|
||||||
|
"Themezer": "Themezer",
|
||||||
|
"Themezer Options": "Themezer設定",
|
||||||
|
"Nsfw": "アダルトテーマ",
|
||||||
|
"Page": "ページ",
|
||||||
|
"Page %zu / %zu": "ページ %zu / %zu",
|
||||||
|
"Enter Page Number": "ページの番号を入力",
|
||||||
|
"Bad Page": "ページが見つかりません",
|
||||||
|
"Download theme?": "テーマをインストールしますか?",
|
||||||
|
|
||||||
|
"GitHub": "GitHub",
|
||||||
|
"Downloading json": "JSONからダウンロード",
|
||||||
|
"Select asset to download for ": "ダウンロードアイテムを選択 ",
|
||||||
|
|
||||||
|
"FTP Install": "FTPでインストール",
|
||||||
|
"FTP Install (EXPERIMENTAL)": "FTPでインストール(実験機能)",
|
||||||
|
"Connection Type: WiFi | Strength: ": "接続: WiFi | 強度: ",
|
||||||
|
"Connection Type: Ethernet": "接続: イーサネット",
|
||||||
|
"Connection Type: None": "接続: なし",
|
||||||
|
"Host:": "ホースと:",
|
||||||
|
"Port:": "Port:",
|
||||||
|
"Username:": "ユーザー名:",
|
||||||
|
"Password:": "暗証番号:",
|
||||||
|
"SSID:": "SSID:",
|
||||||
|
"Passphrase:": "WiFi暗証番号:",
|
||||||
|
"Failed to install via FTP, press B to exit...": "FTP経由でインストールできませんでした、を押して終了します",
|
||||||
|
"Ftp install success!": "FTPインストール完了!",
|
||||||
|
"Ftp install failed!": "FTPインストール失敗!",
|
||||||
|
"USB Install": "USBインストール",
|
||||||
|
"USB": "USBインストール",
|
||||||
|
"Connected, waiting for file list...": "接続されました、ファイル リスト待機中",
|
||||||
|
"Connected, starting transfer...": "接続されました、転送開始",
|
||||||
|
"Failed to init usb, press B to exit...": "USB接続できませんでした、を押して終了します",
|
||||||
|
"Waiting for connection...": "接続待機中",
|
||||||
|
"Transferring data...": "データ転送中",
|
||||||
|
"USB connected, sending file list": "接続されました、ファイルリスト送信中",
|
||||||
|
"Sent file list, waiting for command...": "ファイルリストを送信しました、入力待機中",
|
||||||
|
"waiting for usb connection...": "USB接続待機中",
|
||||||
|
"Disable MTP for usb install": "USBインストールのため、MTPを無効にします",
|
||||||
|
"Re-enabled MTP": "MTPに再接続します",
|
||||||
|
"Installed via usb": "USBインストールに成功しました",
|
||||||
|
"Usb install success!": "USBインストール完了!",
|
||||||
|
"Usb install failed!": "USBインストール失敗!",
|
||||||
|
"Press B to exit...": "を押して終了します",
|
||||||
|
"GameCard Install": "ゲームカードインストール",
|
||||||
|
"GameCard": "ゲームカードインストール",
|
||||||
|
"GC": "ゲームカード",
|
||||||
|
"System memory %.1f GB": "本体保存メモリー %.1f GB",
|
||||||
|
"microSD card %.1f GB": "SDカード %.1f GB",
|
||||||
|
"Nand Install": "本体保存メモリーにインストール",
|
||||||
|
"SD Card Install": "SDカードにインストール",
|
||||||
|
"Exit": "もどる",
|
||||||
|
"Gc install success!": "ゲームカードインストール完了!",
|
||||||
|
"Gc install failed!": "ゲームカードインストール失敗!",
|
||||||
|
|
||||||
|
"IRS (Infrared Joycon Camera)": "Joy-Con IRカメラ",
|
||||||
|
"IRS": "Joy-Con IRカメラ",
|
||||||
|
"Irs": "Joy-Con IRカメラ",
|
||||||
|
"Ambient Noise Level: ": "ノイズレベル: ",
|
||||||
|
"Controller": "コントローラー",
|
||||||
|
"Pad ": "Joy-Con ",
|
||||||
"HandHeld": "ハンドヘルド",
|
"HandHeld": "ハンドヘルド",
|
||||||
" (Available)": " (利用可能)",
|
" (Available)": " (利用可能)",
|
||||||
"0 (Sideways)": "0(横)",
|
" (Unsupported)": " (未対応)",
|
||||||
"90 (Flat)": "90(フラット)",
|
" (Unconnected)": " (未接続)",
|
||||||
|
"Rotation": "回転",
|
||||||
|
"0 (Sideways)": "0 (横)",
|
||||||
|
"90 (Flat)": "90 (フラット)",
|
||||||
"180 (-Sideways)": "180 (-横)",
|
"180 (-Sideways)": "180 (-横)",
|
||||||
"270 (Upside down)": "270(上下逆さま)",
|
"270 (Upside down)": "270 (上下逆さま)",
|
||||||
|
"Colour": "色",
|
||||||
"Grey": "グレー",
|
"Grey": "グレー",
|
||||||
"Ironbow": "アイアンボウ",
|
"Ironbow": "アイアンボウ",
|
||||||
"Green": "緑",
|
"Green": "緑",
|
||||||
"Red": "赤",
|
"Red": "赤",
|
||||||
"Blue": "青",
|
"Blue": "青",
|
||||||
|
"Light Target": "ライトターゲット",
|
||||||
"All leds": "すべてのLED",
|
"All leds": "すべてのLED",
|
||||||
"Bright group": "明るいグループ",
|
"Bright group": "明るいグループ",
|
||||||
"Dim group": "薄暗いグループ",
|
"Dim group": "薄暗いグループ",
|
||||||
"None": "なし",
|
"None": "なし",
|
||||||
|
"Gain": "増幅",
|
||||||
|
"Negative Image": "ネガティブなイメージ",
|
||||||
"Normal image": "通常画像",
|
"Normal image": "通常画像",
|
||||||
"Negative image": "ネガティブなイメージ",
|
"Negative image": "ネガティブなイメージ",
|
||||||
|
"Format": "解像度",
|
||||||
|
"Trimming Format": "トリミングされた解像度",
|
||||||
"320x240": "320×240",
|
"320x240": "320×240",
|
||||||
"160x120": "160×120",
|
"160x120": "160×120",
|
||||||
"80x60": "80×60",
|
"80x60": "80×60",
|
||||||
"40x30": "40×30",
|
"40x30": "40×30",
|
||||||
"20x15": "20x15",
|
"20x15": "20×15",
|
||||||
"Controller": "コントローラ",
|
|
||||||
"Rotation": "回転",
|
|
||||||
"Colour": "色",
|
|
||||||
"Light Target": "ライトターゲット",
|
|
||||||
"Gain": "得",
|
|
||||||
"Negative Image": "ネガティブなイメージ",
|
|
||||||
"Format": "形式",
|
|
||||||
"Trimming Format": "トリミングフォーマット",
|
|
||||||
"External Light Filter": "外光フィルター",
|
"External Light Filter": "外光フィルター",
|
||||||
"Load Default": "デフォルトをロード",
|
"Load Default": "基本設定に戻す",
|
||||||
"No Internet": "インターネットなし",
|
|
||||||
"[Applet Mode]": "[アプレットモード]",
|
"Advanced": "高度な",
|
||||||
"Language": "言語"
|
"Advanced Options": "高度設定",
|
||||||
}
|
"Logging": "ログの取得",
|
||||||
|
"Replace hbmenu on exit": "終了時に hbmenu を置き換える",
|
||||||
|
"Restore hbmenu?": "hbmenuに戻しますか?",
|
||||||
|
"Restore": "復元",
|
||||||
|
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "/switch/hbmemu.nroが見つかりません\nAppstoreから再インストールしてください",
|
||||||
|
"Failed to restore hbmenu, please re-download hbmenu": "hbmenuを復元できませんでした、再インストールしてください",
|
||||||
|
"Failed to restore hbmenu, using sphaira instead": "hbmenuを復元できませんでした、sphairaを引き続き使います",
|
||||||
|
"Restored hbmenu, closing sphaira": "hbmenuに復元されました、sphairaを終了します",
|
||||||
|
"Restored hbmenu": "hbmenuに復元されました",
|
||||||
|
"Restart Sphaira?": "Sphairaを再起動しますか?",
|
||||||
|
"Press OK to restart Sphaira": "確認ボタンを押してSphairaを再起動",
|
||||||
|
"Text scroll speed": "流れる文字の速さ",
|
||||||
|
"Slow": "遅い",
|
||||||
|
"Normal": "普通",
|
||||||
|
"Fast": "速い",
|
||||||
|
"Set right-side menu": "右側メニュー設定",
|
||||||
|
"Install options": "インストール設定",
|
||||||
|
"Install Options": "インストール設定",
|
||||||
|
"Enable sysmmc": "SYSNANDを有効化",
|
||||||
|
"Enable emummc": "EMUNANDを有効化",
|
||||||
|
"Show install warning": "警告文を示す",
|
||||||
|
"Install location": "インストール経路",
|
||||||
|
"System memory": "本体保存メモリー",
|
||||||
|
"microSD card": "SDカード",
|
||||||
|
"Boost CPU clock": "CPUクロックをブースト",
|
||||||
|
"Allow downgrade": "ダウングレード許可",
|
||||||
|
"Skip if already installed": "既にインストールされている場合はスキップします",
|
||||||
|
"Ticket only": "チケットのみ設置",
|
||||||
|
"Skip base": "ゲームをスキップ",
|
||||||
|
"Skip patch": "ゲームパッチをスキップ",
|
||||||
|
"Skip dlc": "DLCをスキップ",
|
||||||
|
"Skip data patch": "DLCパッチをスキップ",
|
||||||
|
"Skip ticket": "チケットをスキップ",
|
||||||
|
"Skip NCA hash verify": "NCAハッシュ検証をスキップ",
|
||||||
|
"Skip RSA header verify": "RSAヘッダー検証をスキップ",
|
||||||
|
"Skip RSA NPDM verify": "RSA NPDM検証をスキップ",
|
||||||
|
"Ignore distribution bit": "分散ビットを無視",
|
||||||
|
"Convert to standard crypto": "標準暗号に変換",
|
||||||
|
"Lower master key": "下位マスターキーを許容",
|
||||||
|
"Lower system version": "下位システムバージョンを許容",
|
||||||
|
|
||||||
|
"Homebrew": "Homebrew",
|
||||||
|
"Apps": "アプリ",
|
||||||
|
"Homebrew Options": "Homebrew設定",
|
||||||
|
"Hide Sphaira": "Sphairaを非表示",
|
||||||
|
"Install Forwarder": "Forwarderのインストール",
|
||||||
|
"WARNING: Installing forwarders will lead to a ban!": "警告: ForwarderをインストールするとBANされます",
|
||||||
|
"Installing Forwarder": "Forwarderのインストール中",
|
||||||
|
"Creating Program": "プログラム作成中",
|
||||||
|
"Creating Control": "コントロール作成中",
|
||||||
|
"Creating Meta": "メター作成中",
|
||||||
|
"Writing Nca": "Nca書き取り中",
|
||||||
|
"Updating ncm databse": "ncmのDBをアップデート中",
|
||||||
|
"Pushing application record": "アプリの記録をプッシュ中",
|
||||||
|
"Failed to install forwarder": "Forwarderのインストール失敗",
|
||||||
|
"Unstarred ": "お気に入り解除: ",
|
||||||
|
"Starred ": "お気に入りに登録: ",
|
||||||
|
"Failed to remove old forwarder, please manually remove it!": "古いForwarderを削除できませんでした、手動で削除してください!",
|
||||||
|
|
||||||
|
"AppStore": "AppStore",
|
||||||
|
"Appstore": "AppStore",
|
||||||
|
"Store": "AppStore",
|
||||||
|
"Filter: %s | Sort: %s | Order: %s": "フィルター: %s | 並べ替え: %s | 順番: %s",
|
||||||
|
"AppStore Options": "AppStoreの設定",
|
||||||
|
"Info": "情報",
|
||||||
|
"Changelog": "リリースノート",
|
||||||
|
"Details": "詳細",
|
||||||
|
"version: %s": "バージョン: %s",
|
||||||
|
"updated: %s": "更新日: %s",
|
||||||
|
"category: %s": "カテゴリー: %s",
|
||||||
|
"extracted: %.2f MiB": "容量: %.2f MiB",
|
||||||
|
"app_dls: %s": "ダウンロード: %s",
|
||||||
|
"More by Author": "ディベロッパーの他のアプリを見る",
|
||||||
|
"Leave Feedback": "意見を残す",
|
||||||
|
|
||||||
|
"FileBrowser": "ファイルブラウザ",
|
||||||
|
"Files": "ファイル",
|
||||||
|
"%zd files": "%zd個のファイル",
|
||||||
|
"%zd dirs": "%zd個のフォルダー",
|
||||||
|
"File Options": "ファイル設定",
|
||||||
|
"Show Hidden": "非表示ファイルを表示",
|
||||||
|
"Folders First": "フォルダーを優先",
|
||||||
|
"Hidden Last": "非表示ファイルを劣後",
|
||||||
|
"Cut": "切り取り",
|
||||||
|
"Copy": "コピー",
|
||||||
|
"Copying ": "コピー中 ",
|
||||||
|
"Paste": "ペースト",
|
||||||
|
"Paste ": " ",
|
||||||
|
" file(s)?": "個のファイルをペーストしますか?",
|
||||||
|
"Pasting ": "ペースト中 ",
|
||||||
|
"Pasting": "ペースト中",
|
||||||
|
"Rename": "名前の変更",
|
||||||
|
"Set New File Name": "新しい名前を入力",
|
||||||
|
"Extract zip": "ZIPファイルを解凍",
|
||||||
|
"Extract Options": "解凍設定",
|
||||||
|
"Extract here": "ここに解凍",
|
||||||
|
"Extract to root": "最上位ルートに解凍",
|
||||||
|
"Are you sure you want to extract to root?": "最上位ルートに解凍してよろしいですか?",
|
||||||
|
"Extract to...": "指定ルート",
|
||||||
|
"Enter the path to the folder to extract into": "解凍したいルートを指定してください",
|
||||||
|
"Extracting ": "解凍します ",
|
||||||
|
"Extract success!": "解凍完了!",
|
||||||
|
"Extract failed!": "解凍失敗!",
|
||||||
|
"Compress to zip": "ZIPファイルに圧縮",
|
||||||
|
"Compress Options": "圧縮設定",
|
||||||
|
"Compress": "ZIPファイルに圧縮",
|
||||||
|
"Compress to...": "指定ルート",
|
||||||
|
"Compressing ": "圧縮します ",
|
||||||
|
"Compress success!": "圧縮完了!",
|
||||||
|
"Compress failed!": "圧縮失敗!",
|
||||||
|
"Create File": "ファイルの作成",
|
||||||
|
"Set File Name": "名前を入力",
|
||||||
|
"Create Folder": "フォルダーの作成",
|
||||||
|
"Set Folder Name": "名前を入力",
|
||||||
|
"Creating ": "作成中 ",
|
||||||
|
"Upload": "アップロード",
|
||||||
|
"Select upload location": "アップロードの位置を設定",
|
||||||
|
"No upload locations set!": "アップロードの位置が設定されていません",
|
||||||
|
"Uploading": "アップロード中",
|
||||||
|
"Upload successfull!": "アップロード完了!",
|
||||||
|
"Upload failed!": "アップロード失敗!",
|
||||||
|
"View as text (unfinished)": "テキストとして表示 (未完成)",
|
||||||
|
"Ignore read only": "読み取り専用を無視する",
|
||||||
|
"Mount": "マウント",
|
||||||
|
"Sd": "SDメモリーカード",
|
||||||
|
"Image System memory": "システムメモリイメージ",
|
||||||
|
"Image microSD card": "SDイメージ",
|
||||||
|
"Empty...": "このフォルダーは空です",
|
||||||
|
"Open with DayBreak?": "DayBreakで開きますか?",
|
||||||
|
"Launch ": "起動しますか",
|
||||||
|
"Launch option for: ": "起動設定: ",
|
||||||
|
"Select launcher for: ": "起動ランチャーを選ぶ: ",
|
||||||
|
|
||||||
|
"Sort By": "並べ替え",
|
||||||
|
"Sort Options": "並べ替え設定",
|
||||||
|
"Filter": "フィルター",
|
||||||
|
"All": "全て",
|
||||||
|
"Emulators": "エミュレータ",
|
||||||
|
"Tools": "ツール",
|
||||||
|
"Themes": "テーマ",
|
||||||
|
"Legacy": "レガシー",
|
||||||
|
"Sort": "並べ替え",
|
||||||
|
"Size": "ファイルサイズ",
|
||||||
|
"Size (Star)": "ファイルサイズ(お気に入り)",
|
||||||
|
"Alphabetical": "アルファベット順",
|
||||||
|
"Alphabetical (Star)": "アルファベット順(お気に入り)",
|
||||||
|
"Updated": "アップデート順",
|
||||||
|
"Updated (Star)": "アップデート順(お気に入り)",
|
||||||
|
"Downloads": "ダウンロード順",
|
||||||
|
"Likes": "いいね順",
|
||||||
|
"ID": "デベロッパー順",
|
||||||
|
"Order": "順番",
|
||||||
|
"Descending": "降順",
|
||||||
|
"Descending (down)": "降順",
|
||||||
|
"Desc": "降順",
|
||||||
|
"Ascending": "上昇",
|
||||||
|
"Ascending (Up)": "上昇",
|
||||||
|
"Asc": "上昇",
|
||||||
|
"Layout": "レイアウト",
|
||||||
|
"List": "リスト",
|
||||||
|
"Icon": "アイコン",
|
||||||
|
"Grid": "グリッド",
|
||||||
|
"Search": "検索",
|
||||||
|
|
||||||
|
"Options": "設定",
|
||||||
|
"OK": "確認",
|
||||||
|
"Back": "戻る",
|
||||||
|
"Select": "選択",
|
||||||
|
"Open": "開く",
|
||||||
|
"Launch": "起動",
|
||||||
|
"Restart": "再起動",
|
||||||
|
"Next": "次へ",
|
||||||
|
"Prev": "前へ",
|
||||||
|
"Unstar": "お気に入り解除",
|
||||||
|
"Star": "お気に入り",
|
||||||
|
"Yes": "はい",
|
||||||
|
"No": "いいえ",
|
||||||
|
"On": "オン",
|
||||||
|
"Off": "オフ",
|
||||||
|
|
||||||
|
"Install": "インストール",
|
||||||
|
"Install Selected files?": "選択したファイルをインストールしますか?",
|
||||||
|
"Installing ": "インストール中 ",
|
||||||
|
"Installed ": "インストールしました ",
|
||||||
|
"Installed!": "インストール完了",
|
||||||
|
"Trying to load ": "サムネイルを取得中 ",
|
||||||
|
"Checking MD5": "MD5を確認中 ",
|
||||||
|
|
||||||
|
"Delete": "削除",
|
||||||
|
"Delete Selected files?": "本当に削除しますか?",
|
||||||
|
"Are you sure you want to delete ": "消去してもよろしいですか ",
|
||||||
|
"Scanning ": "スキャン中 ",
|
||||||
|
"Deleting ": "削除中 ",
|
||||||
|
"Deleting": "削除中",
|
||||||
|
"Remove": "除去",
|
||||||
|
"Completely remove ": "除去しますか ",
|
||||||
|
"Removing ": "除去中 ",
|
||||||
|
"Removed ": "除去完了 ",
|
||||||
|
"Uninstalling ": "アンインストール中 ",
|
||||||
|
|
||||||
|
"Download": "ダウンロード",
|
||||||
|
"Downloading ": "ダウンロード中 ",
|
||||||
|
"Downloaded ": "ダウンロード完了 ",
|
||||||
|
|
||||||
|
"Update": "アップデート",
|
||||||
|
"Update avaliable: ": "アップデート可能: ",
|
||||||
|
"Download update: ": "アップデートをダウンロード: ",
|
||||||
|
"Updated to ": "アップデート: ",
|
||||||
|
"Failed to download update": "アップデートのダウンロード失敗",
|
||||||
|
|
||||||
|
"%zu hours %zu minutes remaining": "残り %zu 時間 %zu 分",
|
||||||
|
"%zu minutes %zu seconds remaining": "残り %zu 分",
|
||||||
|
"%zu seconds remaining": "残り %zu 秒",
|
||||||
|
|
||||||
|
"Loading...": "ロード中",
|
||||||
|
"Loading": "ロード中",
|
||||||
|
"Empty!": "何も見つかりません",
|
||||||
|
"Not Ready...": "準備ができていません",
|
||||||
|
"Error loading page!": "ページのロードエラー"
|
||||||
|
}
|
||||||
@@ -1,114 +1,392 @@
|
|||||||
{
|
{
|
||||||
"Launch": "시작하다",
|
"[Applet Mode]": "[ 애플릿 모드 ]",
|
||||||
"Options": "옵션",
|
"No Internet": "인터넷 연결 없음",
|
||||||
"Homebrew Options": "홈브류 옵션",
|
"Switch-Handheld!": "휴대모드로 전환됨!",
|
||||||
"Sort By": "정렬 기준",
|
"Switch-Docked!": "독 모드로 전환됨!",
|
||||||
"Sort Options": "정렬 옵션",
|
"Audio disabled due to suspended game": "게임 실행 중에는 BGM이 비활성화 됩니다",
|
||||||
"Updated": "업데이트됨",
|
"Are you sure you wish to cancel?": "정말 취소할까요?",
|
||||||
"Size": "크기",
|
"An error occurred": "오류가 발생했습니다!",
|
||||||
"Alphabetical": "알파벳순",
|
"If this message appears repeatedly, please open an issue.": "해당 메시지가 반복해서 나타나는 경우, 이슈를 등록하세요.",
|
||||||
"Decending": "내림차순",
|
|
||||||
"Ascending": "오름차순",
|
"Menu Options": "메뉴",
|
||||||
"Sort": "종류",
|
"Menu": "메뉴",
|
||||||
"Order": "주문하다",
|
"Theme": "테마",
|
||||||
"Info": "정보",
|
"Theme Options": "테마 옵션",
|
||||||
"Delete": "삭제",
|
"Select Theme": "테마 선택",
|
||||||
"Hide Sphaira": "스파이라 숨기기",
|
"Music": "BGM",
|
||||||
"Are you sure you want to delete ": "삭제하시겠습니까? ",
|
"12 Hour Time": "12 시간제",
|
||||||
"Install Forwarder": "포워더 설치",
|
"Download Default Music": "기본 BGM 다운로드",
|
||||||
"WARNING: Installing forwarders will lead to a ban!": "경고: 전달자를 설치하면 금지됩니다!",
|
"Failed to download default_music.bfstm, please try again": "BGM 파일 다운로드에 실패했습니다, 다시 시도하세요",
|
||||||
"Back": "뒤쪽에",
|
"Overwrite current default music?": "BGM 파일을 덮어쓸까요?",
|
||||||
"Install": "설치하다",
|
|
||||||
"Fs": "Fs",
|
"Network": "네트워크",
|
||||||
"App": "앱",
|
"Network Options": "네트워크 옵션",
|
||||||
"Menu": "메뉴",
|
"Ftp": "FTP (무선)",
|
||||||
"Homebrew": "홈브류",
|
"Mtp": "MTP (유선)",
|
||||||
"FileBrowser": "파일브라우저",
|
"Nxlink": "Nxlink",
|
||||||
"Open": "열려 있는",
|
"Nxlink Connected": "Nxlink 연결됨",
|
||||||
"Theme Options": "테마 옵션",
|
"Nxlink Upload": "Nxlink 업로드",
|
||||||
"Select Theme": "테마 선택",
|
"Nxlink Finished": "Nxlink 종료됨",
|
||||||
"Shuffle": "혼합",
|
|
||||||
"Music": "음악",
|
"Language": "언어",
|
||||||
"Show Hidden": "숨겨진 표시",
|
"Auto": "자동",
|
||||||
"Folders First": "폴더 먼저",
|
"English": "English",
|
||||||
"Hidden Last": "숨겨진 마지막",
|
"Japanese": "日本語",
|
||||||
"Yes": "예",
|
"French": "Français",
|
||||||
"No": "아니요",
|
"German": "Deutsch",
|
||||||
"Network Options": "네트워크 옵션",
|
"Italian": "Italiano",
|
||||||
"Nxlink": "Nxlink",
|
"Spanish": "Español",
|
||||||
"Check for update": "업데이트 확인",
|
"Chinese": "中文",
|
||||||
"File Options": "파일 옵션",
|
"Korean": "한국어",
|
||||||
"Cut": "자르다",
|
"Dutch": "Dutch",
|
||||||
"Copy": "복사",
|
"Portuguese": "Português",
|
||||||
"Rename": "이름 바꾸기",
|
"Russian": "Русский",
|
||||||
"Advanced Options": "파일 생성",
|
"Swedish": "Svenska",
|
||||||
"Create File": "파일 생성",
|
"Vietnamese": "Vietnamese",
|
||||||
"Create Folder": "폴더 생성",
|
"Ukrainian": "Українська",
|
||||||
"View as text": "텍스트로 보기",
|
|
||||||
"View as text (unfinished)": "텍스트로 보기(미완성)",
|
"Misc": "기타",
|
||||||
"Set Archive Bit": "보관 비트 설정",
|
"Misc Options": "기타 옵션",
|
||||||
"AppStore Options": "앱스토어 옵션",
|
"Games": "게임",
|
||||||
"All": "모두",
|
"Game Options": "게임 옵션",
|
||||||
"Games": "계략",
|
"Hide forwarders": "바로가기 앱 숨기기",
|
||||||
"Emulators": "에뮬레이터",
|
"Launch random game": "게임 랜덤 실행",
|
||||||
"Tools": "도구",
|
"List meta records": "메타 기록",
|
||||||
"Advanced": "고급의",
|
"Entries": "목록",
|
||||||
"Themes": "테마",
|
"Failed to list application meta entries": "메타 항목 나열에 실패했습니다",
|
||||||
"Legacy": "유산",
|
"No meta entries found...\n": "메타 항목을 찾을 수 없습니다...\n",
|
||||||
"Misc": "기타",
|
"Updating application record list": "앱 기록 업데이트 중",
|
||||||
"Downloads": "다운로드",
|
"Dump": "덤프",
|
||||||
"Filter": "필터",
|
"Select content to dump": "덤프 옵션",
|
||||||
"Search": "찾다",
|
"Dump All": "모든 콘텐츠",
|
||||||
"Menu Options": "메뉴 옵션",
|
"Dump Application": "게임",
|
||||||
"Header": "헤더",
|
"Dump Patch": "게임 패치",
|
||||||
"Theme": "주제",
|
"Dump AddOnContent": "DLC",
|
||||||
"Network": "회로망",
|
"Dump DataPatch": "DLC 패치",
|
||||||
"Logging": "벌채 반출",
|
"Select dump location": "덤프 위치",
|
||||||
"Enabled": "활성화됨",
|
"microSD card (/dumps/NSP/)": "SD 카드 (sdmc:/dumps/NSP/)",
|
||||||
"Disabled": "장애가 있는",
|
"USB transfer (Switch 2 Switch)": "USB 전송 (Switch 2 Switch)",
|
||||||
"Replace hbmenu on exit": "종료 시 hbmenu 교체",
|
"/dev/null (Speed Test)": "/dev/null (Speed Test)",
|
||||||
"Misc Options": "기타 옵션",
|
"Dumping": "덤프 중",
|
||||||
"Themezer": "테마저",
|
"Dump successfull!": "덤프 완료!",
|
||||||
"Irs": "국세청",
|
"Dump failed!": "덤프 실패!",
|
||||||
"Web": "편물",
|
"Success": "완료!",
|
||||||
"Download": "다운로드",
|
"Delete successfull!": "삭제 완료!",
|
||||||
"Next Page": "다음 페이지",
|
"Delete failed!": "삭제 실패!",
|
||||||
"Prev Page": "이전 페이지",
|
|
||||||
"Pad ": "인주 ",
|
"Themezer": "Themezer",
|
||||||
" (Unconnected)": " (연결되지 않음)",
|
"Themezer Options": "Themezer 옵션",
|
||||||
"HandHeld": "휴대용",
|
"Nsfw": "선정성 테마",
|
||||||
" (Available)": " (사용 가능)",
|
"Page": "페이지",
|
||||||
"0 (Sideways)": "0(가로)",
|
"Page %zu / %zu": "페이지 %zu / %zu",
|
||||||
"90 (Flat)": "90(플랫)",
|
"Enter Page Number": "페이지 번호 입력",
|
||||||
"180 (-Sideways)": "180 (-옆으로)",
|
"Bad Page": "잘못된 페이지 입력됨",
|
||||||
"270 (Upside down)": "270 (거꾸로)",
|
"Download theme?": "테마를 다운로드할까요?",
|
||||||
"Grey": "회색",
|
|
||||||
"Ironbow": "아이언보우",
|
"GitHub": "GitHub",
|
||||||
"Green": "녹색",
|
"Downloading json": "JSON에서 다운로드",
|
||||||
"Red": "빨간색",
|
"Select asset to download for ": "다운로드 아이템: ",
|
||||||
"Blue": "파란색",
|
|
||||||
"All leds": "모든 LED",
|
"FTP Install": "FTP 설치",
|
||||||
"Bright group": "밝은 그룹",
|
"FTP Install (EXPERIMENTAL)": "FTP 설치 (실험실 기능)",
|
||||||
"Dim group": "희미한 그룹",
|
"Connection Type: WiFi | Strength: ": "상태: WiFi | 신호 세기: ",
|
||||||
"None": "없음",
|
"Connection Type: Ethernet": "상태: 이더넷",
|
||||||
"Normal image": "일반 이미지",
|
"Connection Type: None": "상태: 연결 없음",
|
||||||
"Negative image": "부정적인 이미지",
|
"Host:": "호스트:",
|
||||||
"320x240": "320x240",
|
"Port:": "포트:",
|
||||||
"160x120": "160x120",
|
"Username:": "사용자명:",
|
||||||
"80x60": "80x60",
|
"Password:": "비밀번호:",
|
||||||
"40x30": "40x30",
|
"SSID:": "SSID:",
|
||||||
"20x15": "20x15",
|
"Passphrase:": "WiFi 암호:",
|
||||||
"Controller": "제어 장치",
|
"Failed to install via FTP, press B to exit...": "FTP 설치 실패함, 종료하려면 버튼을 입력하세요...",
|
||||||
"Rotation": "회전",
|
"Ftp install success!": "FTP 설치 완료!",
|
||||||
"Colour": "색상",
|
"Ftp install failed!": "FTP 설치 실패!",
|
||||||
"Light Target": "라이트 타겟",
|
"USB Install": "USB 설치",
|
||||||
"Gain": "얻다",
|
"USB": "USB 설치",
|
||||||
"Negative Image": "네거티브 이미지",
|
"Connected, waiting for file list...": "연결됨, 파일 목록 대기 중...",
|
||||||
"Format": "체재",
|
"Connected, starting transfer...": "연결됨, 전송 시작 중...",
|
||||||
"Trimming Format": "트리밍 형식",
|
"Failed to init usb, press B to exit...": "USB 연결 실패함, 종료하려면 버튼을 입력하세요...",
|
||||||
"External Light Filter": "외부 조명 필터",
|
"Waiting for connection...": "연결 대기 중...",
|
||||||
"Load Default": "기본값 로드",
|
"Transferring data...": "데이터 전송 중...",
|
||||||
"No Internet": "인터넷 없음",
|
"USB connected, sending file list": "USB 연결됨, 파일 목록 전송 중",
|
||||||
"[Applet Mode]": "[애플릿 모드]",
|
"Sent file list, waiting for command...": "파일 목록 전송됨, 입력 대기 중...",
|
||||||
"Language": "언어"
|
"waiting for usb connection...": "USB 연결 대기 중...",
|
||||||
}
|
"Disable MTP for usb install": "USB 설치를 위해 MTP 비활성화됨",
|
||||||
|
"Re-enabled MTP": "MTP 재활성화됨",
|
||||||
|
"Installed via usb": "USB를 통해 설치됨",
|
||||||
|
"Usb install success!": "USB 설치 완료!",
|
||||||
|
"Usb install failed!": "USB 설치 실패!",
|
||||||
|
"Press B to exit...": " 버튼으로 나가기",
|
||||||
|
"GameCard Install": "카트리지 설치",
|
||||||
|
"GameCard": "카트리지 설치",
|
||||||
|
"GC": "카트리지",
|
||||||
|
"System memory %.1f GB": "본체 저장 메모리 %.1f GB",
|
||||||
|
"microSD card %.1f GB": "SD 카드 %.1f GB",
|
||||||
|
"Nand Install": "본체 저장 메모리에 설치",
|
||||||
|
"SD Card Install": "SD 카드에 설치",
|
||||||
|
"Exit": "나가기",
|
||||||
|
"Gc install success!": "카트리지 설치 완료!",
|
||||||
|
"Gc install failed!": "카트리지 설치 실패!",
|
||||||
|
|
||||||
|
"IRS (Infrared Joycon Camera)": "조이콘 적외선 카메라",
|
||||||
|
"IRS": "조이콘 적외선 카메라",
|
||||||
|
"Irs": "조이콘 적외선 카메라",
|
||||||
|
"Ambient Noise Level: ": "주변 노이즈 레벨: ",
|
||||||
|
"Controller": "컨트롤러",
|
||||||
|
"Pad ": "조이콘 ",
|
||||||
|
"HandHeld": "본체 연결",
|
||||||
|
" (Available)": " (사용 가능)",
|
||||||
|
" (Unsupported)": " (지원 안됨)",
|
||||||
|
" (Unconnected)": " (연결 없음)",
|
||||||
|
"Rotation": "화면 회전",
|
||||||
|
"0 (Sideways)": "반시계방향 90° 회전",
|
||||||
|
"90 (Flat)": "정방향",
|
||||||
|
"180 (-Sideways)": "시계방향 90° 회전",
|
||||||
|
"270 (Upside down)": "상하반전",
|
||||||
|
"Colour": "색상 팔레트",
|
||||||
|
"Grey": "그레이스케일",
|
||||||
|
"Ironbow": "아이언보우",
|
||||||
|
"Green": "그린",
|
||||||
|
"Red": "레드",
|
||||||
|
"Blue": "블루",
|
||||||
|
"Light Target": "반사 표적",
|
||||||
|
"All leds": "모든 LED 켜기",
|
||||||
|
"Bright group": "Bright LED 켜기",
|
||||||
|
"Dim group": "Dim LED 켜기",
|
||||||
|
"None": "LED 끄기",
|
||||||
|
"Gain": "대비",
|
||||||
|
"Negative Image": "화상 이미지",
|
||||||
|
"Normal image": "일반",
|
||||||
|
"Negative image": "반전",
|
||||||
|
"Format": "해상도",
|
||||||
|
"Trimming Format": "트리밍 해상도",
|
||||||
|
"320x240": "320×240",
|
||||||
|
"160x120": "160×120",
|
||||||
|
"80x60": "80×60",
|
||||||
|
"40x30": "40×30",
|
||||||
|
"20x15": "20×15",
|
||||||
|
"External Light Filter": "외부 조명 필터",
|
||||||
|
"Load Default": "기본값으로 설정",
|
||||||
|
|
||||||
|
"Advanced": "고급",
|
||||||
|
"Advanced Options": "고급 옵션",
|
||||||
|
"Logging": "로깅",
|
||||||
|
"Replace hbmenu on exit": "종료 시 hbmenu 교체",
|
||||||
|
"Restore hbmenu?": "hbmenu로 복원할까요?",
|
||||||
|
"Restore": "복원",
|
||||||
|
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "/switch/hbmemu.nro를 찾을 수 없습니다\n앱스토어에서 다시 설치하세요",
|
||||||
|
"Failed to restore hbmenu, please re-download hbmenu": "hbmenu 복원 실패함, hbmenu를 다시 다운로드하세요",
|
||||||
|
"Failed to restore hbmenu, using sphaira instead": "hbmenu 복원 실패함, sphaira를 계속 사용합니다",
|
||||||
|
"Restored hbmenu, closing sphaira": "hbmenu 복원됨, sphaira를 종료합니다",
|
||||||
|
"Restored hbmenu": "hbmenu 복원됨",
|
||||||
|
"Restart Sphaira?": "Sphaira를 재시작할까요?",
|
||||||
|
"Press OK to restart Sphaira": "확인 버튼 입력하여 Sphaira 재시작",
|
||||||
|
"Text scroll speed": "긴 텍스트 표시 속도",
|
||||||
|
"Slow": "천천히",
|
||||||
|
"Normal": "보통",
|
||||||
|
"Fast": "빠르게",
|
||||||
|
"Set right-side menu": "우측 메뉴 설정",
|
||||||
|
"Install options": "설치 옵션",
|
||||||
|
"Install Options": "설치 옵션",
|
||||||
|
"Enable sysmmc": "시스낸드 활성화",
|
||||||
|
"Enable emummc": "에뮤낸드 활성화",
|
||||||
|
"Show install warning": "설치 경고 표시",
|
||||||
|
"Install location": "설치 위치",
|
||||||
|
"System memory": "본체 저장 메모리",
|
||||||
|
"microSD card": "SD 카드",
|
||||||
|
"Boost CPU clock": "CPU 클럭 향상",
|
||||||
|
"Allow downgrade": "다운그레이드 허용",
|
||||||
|
"Skip if already installed": "설치된 항목 건너뛰기",
|
||||||
|
"Ticket only": "티켓만 설치",
|
||||||
|
"Skip base": "게임 건너뛰기",
|
||||||
|
"Skip patch": "게임 패치 건너뛰기",
|
||||||
|
"Skip dlc": "DLC 건너뛰기",
|
||||||
|
"Skip data patch": "DLC 패치 건너뛰기",
|
||||||
|
"Skip ticket": "티켓 건너뛰기",
|
||||||
|
"Skip NCA hash verify": "NCA 해시 확인 건너뛰기",
|
||||||
|
"Skip RSA header verify": "RSA 헤더 확인 건너뛰기",
|
||||||
|
"Skip RSA NPDM verify": "RSA NPDM 확인 건너뛰기",
|
||||||
|
"Ignore distribution bit": "배포 비트 무시",
|
||||||
|
"Convert to standard crypto": "표준 암호화로 변환",
|
||||||
|
"Lower master key": "하위 마스터 키 지원",
|
||||||
|
"Lower system version": "하위 시스템 버전 지원",
|
||||||
|
|
||||||
|
"Homebrew": "홈브류",
|
||||||
|
"Apps": "홈브류",
|
||||||
|
"Homebrew Options": "홈브류 옵션",
|
||||||
|
"Hide Sphaira": "Sphaira 숨기기",
|
||||||
|
"Install Forwarder": "바로가기 설치",
|
||||||
|
"WARNING: Installing forwarders will lead to a ban!": "경고: 시스낸드에 설치 시, 밴 위험이 있습니다!",
|
||||||
|
"Installing Forwarder": "바로가기 설치",
|
||||||
|
"Creating Program": "프로그램 생성",
|
||||||
|
"Creating Control": "컨트롤 생성",
|
||||||
|
"Creating Meta": "메타 생성",
|
||||||
|
"Writing Nca": "Nca 쓰기",
|
||||||
|
"Updating ncm databse": "Ncm 데이터베이스 업데이트",
|
||||||
|
"Pushing application record": "응용 프로그램 기록 푸싱",
|
||||||
|
"Failed to install forwarder": "바로가기 설치 실패함",
|
||||||
|
"Unstarred ": "즐겨찾기 해제: ",
|
||||||
|
"Starred ": "즐겨찾기 등록: ",
|
||||||
|
"Failed to remove old forwarder, please manually remove it!": "바로가기 제거 실패함, 직접 제거해주세요!",
|
||||||
|
|
||||||
|
"AppStore": "앱스토어",
|
||||||
|
"Appstore": "앱스토어",
|
||||||
|
"Store": "앱스토어",
|
||||||
|
"Filter: %s | Sort: %s | Order: %s": "필터: %s | 분류: %s | 정렬: %s",
|
||||||
|
"AppStore Options": "앱스토어 옵션",
|
||||||
|
"Info": "정보",
|
||||||
|
"Changelog": "변경사항",
|
||||||
|
"Details": "상세",
|
||||||
|
"version: %s": "버전: %s",
|
||||||
|
"updated: %s": "업데이트: %s",
|
||||||
|
"category: %s": "카테고리: %s",
|
||||||
|
"extracted: %.2f MiB": "용량: %.2f MiB",
|
||||||
|
"app_dls: %s": "다운로드 횟수: %s",
|
||||||
|
"More by Author": "개발자의 다른 앱 더 보기",
|
||||||
|
"Leave Feedback": "피드백 남기기",
|
||||||
|
|
||||||
|
"FileBrowser": "파일 탐색기",
|
||||||
|
"Files": "파일 탐색기",
|
||||||
|
"%zd files": "%zd 개 파일",
|
||||||
|
"%zd dirs": "%zd 개 폴더",
|
||||||
|
"File Options": "파일 옵션",
|
||||||
|
"Show Hidden": "숨겨진 항목 표시",
|
||||||
|
"Folders First": "폴더 우선 정렬",
|
||||||
|
"Hidden Last": "숨겨진 항목 후순 정렬",
|
||||||
|
"Cut": "잘라내기",
|
||||||
|
"Copy": "복사",
|
||||||
|
"Copying ": "복사 중 ",
|
||||||
|
"Paste": "붙여넣기",
|
||||||
|
"Paste ": " ",
|
||||||
|
" file(s)?": "개 항목을 붙여넣을까요?",
|
||||||
|
"Pasting ": "붙여넣는 중 ",
|
||||||
|
"Pasting": "붙여넣기",
|
||||||
|
"Rename": "이름 바꾸기",
|
||||||
|
"Set New File Name": "새 파일명 입력",
|
||||||
|
"Extract zip": "압축 해제",
|
||||||
|
"Extract Options": "압축 해제 옵션",
|
||||||
|
"Extract here": "여기에 풀기",
|
||||||
|
"Extract to root": "최상위 경로에 풀기",
|
||||||
|
"Are you sure you want to extract to root?": "최상위 경로에 압축 해제할까요?",
|
||||||
|
"Extract to...": "경로 지정",
|
||||||
|
"Enter the path to the folder to extract into": "압축 해제할 경로를 입력하세요",
|
||||||
|
"Extracting ": "압축 해제 중 ",
|
||||||
|
"Extract success!": "압축 해제 완료!",
|
||||||
|
"Extract failed!": "압축 해제 실패!",
|
||||||
|
"Compress to zip": "압축",
|
||||||
|
"Compress Options": "압축 옵션",
|
||||||
|
"Compress": "ZIP 파일로 압축",
|
||||||
|
"Compress to...": "경로 지정",
|
||||||
|
"Compressing ": "압축 중 ",
|
||||||
|
"Compress success!": "압축 완료!",
|
||||||
|
"Compress failed!": "압축 실패!",
|
||||||
|
"Create File": "새 파일",
|
||||||
|
"Set File Name": "파일명 입력",
|
||||||
|
"Create Folder": "새 폴더",
|
||||||
|
"Set Folder Name": "폴더명 입력",
|
||||||
|
"Creating ": "생성 중 ",
|
||||||
|
"Upload": "업로드",
|
||||||
|
"Select upload location": "업로드 위치 선택",
|
||||||
|
"No upload locations set!": "업로드 위치가 설정되지 않았습니다!",
|
||||||
|
"Uploading": "업로드 중 ",
|
||||||
|
"Upload successfull!": "업로드 완료!",
|
||||||
|
"Upload failed!": "업로드 실패!",
|
||||||
|
"View as text (unfinished)": "텍스트로 보기 (미완성)",
|
||||||
|
"Ignore read only": "읽기 전용 설정 무시",
|
||||||
|
"Mount": "마운트",
|
||||||
|
"Sd": "SD 카드",
|
||||||
|
"Image System memory": "시스낸드 앨범",
|
||||||
|
"Image microSD card": "에뮤낸드 앨범",
|
||||||
|
"Empty...": "비어있음...",
|
||||||
|
"Open with DayBreak?": "DayBreak로 열까요?",
|
||||||
|
"Launch ": "실행할까요 ",
|
||||||
|
"Launch option for: ": "실행 옵션: ",
|
||||||
|
"Select launcher for: ": "실행 런처: ",
|
||||||
|
|
||||||
|
"Sort By": "정렬",
|
||||||
|
"Sort Options": "정렬 옵션",
|
||||||
|
"Filter": "필터",
|
||||||
|
"All": "전체",
|
||||||
|
"Emulators": "에뮬레이터",
|
||||||
|
"Tools": "도구",
|
||||||
|
"Themes": "테마",
|
||||||
|
"Legacy": "레거시",
|
||||||
|
"Sort": "분류",
|
||||||
|
"Size": "크기순",
|
||||||
|
"Size (Star)": "크기순 (즐겨찾기)",
|
||||||
|
"Alphabetical": "알파벳순",
|
||||||
|
"Alphabetical (Star)": "알파벳순 (즐겨찾기)",
|
||||||
|
"Updated": "업데이트순",
|
||||||
|
"Updated (Star)": "업데이트순 (즐겨찾기)",
|
||||||
|
"Downloads": "다운로드순",
|
||||||
|
"Likes": "좋아요순",
|
||||||
|
"ID": "ID순",
|
||||||
|
"Order": "정렬",
|
||||||
|
"Descending": "내림차순",
|
||||||
|
"Descending (down)": "내림차순",
|
||||||
|
"Desc": "내림차순",
|
||||||
|
"Ascending": "오름차순",
|
||||||
|
"Ascending (Up)": "오름차순",
|
||||||
|
"Asc": "오름차순",
|
||||||
|
"Layout": "레이아웃",
|
||||||
|
"List": "목록",
|
||||||
|
"Icon": "아이콘",
|
||||||
|
"Grid": "격자",
|
||||||
|
"Search": "검색",
|
||||||
|
|
||||||
|
"Options": "설정",
|
||||||
|
"OK": "확인",
|
||||||
|
"Back": "뒤로",
|
||||||
|
"Select": "선택",
|
||||||
|
"Open": "열기",
|
||||||
|
"Launch": "실행",
|
||||||
|
"Restart": "재시작",
|
||||||
|
"Next": "다음",
|
||||||
|
"Prev": "이전",
|
||||||
|
"Unstar": "즐겨찾기 해제",
|
||||||
|
"Star": "즐겨찾기",
|
||||||
|
"Yes": "예",
|
||||||
|
"No": "아니요",
|
||||||
|
"On": "켬",
|
||||||
|
"Off": "끔",
|
||||||
|
|
||||||
|
"Install": "설치",
|
||||||
|
"Install Selected files?": "선택한 파일을 설치할까요?",
|
||||||
|
"Installing ": "설치 중 ",
|
||||||
|
"Installed ": "설치됨 ",
|
||||||
|
"Installed!": "설치 완료!",
|
||||||
|
"Trying to load ": "정보 취득 중 ",
|
||||||
|
"Checking MD5": "MD5 확인 중",
|
||||||
|
|
||||||
|
"Delete": "삭제",
|
||||||
|
"Delete Selected files?": "선택한 파일을 삭제할까요?",
|
||||||
|
"Are you sure you want to delete ": "정말 삭제할까요 ",
|
||||||
|
"Scanning ": "스캔 중 ",
|
||||||
|
"Deleting ": "삭제 중 ",
|
||||||
|
"Deleting": "삭제 중",
|
||||||
|
"Remove": "제거",
|
||||||
|
"Completely remove ": "정말 삭제할까요 ",
|
||||||
|
"Removing ": "제거 중 ",
|
||||||
|
"Removed ": "제거됨: ",
|
||||||
|
"Uninstalling ": "설치 제거됨: ",
|
||||||
|
|
||||||
|
"Download": "다운로드",
|
||||||
|
"Downloading ": "다운로드 중 ",
|
||||||
|
"Downloaded ": "다운로드 완료: ",
|
||||||
|
|
||||||
|
"Update": "업데이트",
|
||||||
|
"Update avaliable: ": "업데이트 가능: ",
|
||||||
|
"Download update: ": "업데이트 다운로드: ",
|
||||||
|
"Updated to ": "업데이트됨: ",
|
||||||
|
"Failed to download update": "업데이트 다운로드 실패함",
|
||||||
|
|
||||||
|
"%zu hours %zu minutes remaining": "%zu 시간 %zu 분 남음",
|
||||||
|
"%zu minutes %zu seconds remaining": "%zu 분 %zu 초 남음",
|
||||||
|
"%zu seconds remaining": "%zu 초 남음",
|
||||||
|
|
||||||
|
"Loading...": "로딩 중...",
|
||||||
|
"Loading": "로딩 중...",
|
||||||
|
"Empty!": "찾을 수 없습니다!",
|
||||||
|
"Not Ready...": "준비되지 않음...",
|
||||||
|
"Error loading page!": "페이지 로딩 오류!"
|
||||||
|
}
|
||||||
@@ -1,114 +1,392 @@
|
|||||||
{
|
{
|
||||||
"Launch": "Launch",
|
"[Applet Mode]": "[Applet-modus]",
|
||||||
"Options": "Opties",
|
"No Internet": "Geen internet",
|
||||||
"Homebrew Options": "Homebrew-opties",
|
"Switch-Handheld!": "",
|
||||||
"Sort By": "Sorteer op",
|
"Switch-Docked!": "",
|
||||||
"Sort Options": "Sorteeropties",
|
"Audio disabled due to suspended game": "",
|
||||||
"Updated": "Bijgewerkt",
|
"Are you sure you wish to cancel?": "",
|
||||||
"Size": "Maat",
|
"An error occurred": "",
|
||||||
"Alphabetical": "Alfabetisch",
|
"If this message appears repeatedly, please open an issue.": "",
|
||||||
"Decending": "Aflopend",
|
|
||||||
"Ascending": "Oplopend",
|
"Menu Options": "Menu-opties",
|
||||||
"Sort": "Soort",
|
|
||||||
"Order": "Volgorde",
|
|
||||||
"Info": "Info",
|
|
||||||
"Delete": "Verwijderen",
|
|
||||||
"Hide Sphaira": "Verberg Sphaira",
|
|
||||||
"Are you sure you want to delete ": "Weet u zeker dat u wilt verwijderen ",
|
|
||||||
"Install Forwarder": "Forwarder installeren",
|
|
||||||
"WARNING: Installing forwarders will lead to a ban!": "WAARSCHUWING: Het installeren van forwarders leidt tot een ban!",
|
|
||||||
"Back": "Terug",
|
|
||||||
"Install": "Installeren",
|
|
||||||
"Fs": "Fs",
|
|
||||||
"App": "App",
|
|
||||||
"Menu": "Menu",
|
"Menu": "Menu",
|
||||||
"Homebrew": "Zelf brouwen",
|
"Theme": "Thema",
|
||||||
"FileBrowser": "Bestandsbrowser",
|
|
||||||
"Open": "Open",
|
|
||||||
"Theme Options": "Thema Opties",
|
"Theme Options": "Thema Opties",
|
||||||
"Select Theme": "Selecteer Thema",
|
"Select Theme": "Selecteer Thema",
|
||||||
"Shuffle": "Schudden",
|
|
||||||
"Music": "Muziek",
|
"Music": "Muziek",
|
||||||
"Show Hidden": "Toon verborgen",
|
"12 Hour Time": "",
|
||||||
"Folders First": "Mappen eerst",
|
"Download Default Music": "",
|
||||||
"Hidden Last": "Verborgen laatste",
|
"Failed to download default_music.bfstm, please try again": "",
|
||||||
"Yes": "Ja",
|
"Overwrite current default music?": "",
|
||||||
"No": "Nee",
|
|
||||||
"Network Options": "Netwerkopties",
|
|
||||||
"Nxlink": "Nxlink",
|
|
||||||
"Check for update": "Controleer op update",
|
|
||||||
"File Options": "Bestandsopties",
|
|
||||||
"Cut": "Snee",
|
|
||||||
"Copy": "Kopiëren",
|
|
||||||
"Rename": "Hernoemen",
|
|
||||||
"Advanced Options": "Bestand maken",
|
|
||||||
"Create File": "Bestand maken",
|
|
||||||
"Create Folder": "Map maken",
|
|
||||||
"View as text": "Bekijk als tekst",
|
|
||||||
"View as text (unfinished)": "Bekijk als tekst (onvoltooid)",
|
|
||||||
"Set Archive Bit": "Archiefbit instellen",
|
|
||||||
"AppStore Options": "AppStore-opties",
|
|
||||||
"All": "Alle",
|
|
||||||
"Games": "Spellen",
|
|
||||||
"Emulators": "Emulators",
|
|
||||||
"Tools": "Hulpmiddelen",
|
|
||||||
"Advanced": "Geavanceerd",
|
|
||||||
"Themes": "Thema's",
|
|
||||||
"Legacy": "Nalatenschap",
|
|
||||||
"Misc": "Diversen",
|
|
||||||
"Downloads": "Downloads",
|
|
||||||
"Filter": "Filter",
|
|
||||||
"Search": "Zoekopdracht",
|
|
||||||
"Menu Options": "Menu-opties",
|
|
||||||
"Header": "Koptekst",
|
|
||||||
"Theme": "Thema",
|
|
||||||
"Network": "Netwerk",
|
"Network": "Netwerk",
|
||||||
"Logging": "Loggen",
|
"Network Options": "Netwerkopties",
|
||||||
"Enabled": "Ingeschakeld",
|
"Ftp": "FTP",
|
||||||
"Disabled": "Gehandicapt",
|
"Mtp": "MTP",
|
||||||
"Replace hbmenu on exit": "Vervang hbmenu bij afsluiten",
|
"Nxlink": "Nxlink",
|
||||||
|
"Nxlink Connected": "",
|
||||||
|
"Nxlink Upload": "",
|
||||||
|
"Nxlink Finished": "",
|
||||||
|
|
||||||
|
"Language": "Taal",
|
||||||
|
"Auto": "",
|
||||||
|
"English": "English",
|
||||||
|
"Japanese": "日本語",
|
||||||
|
"French": "Français",
|
||||||
|
"German": "Deutsch",
|
||||||
|
"Italian": "Italiano",
|
||||||
|
"Spanish": "Español",
|
||||||
|
"Chinese": "中文",
|
||||||
|
"Korean": "한국어",
|
||||||
|
"Dutch": "Dutch",
|
||||||
|
"Portuguese": "Português",
|
||||||
|
"Russian": "Русский",
|
||||||
|
"Swedish": "Svenska",
|
||||||
|
"Vietnamese": "Vietnamese",
|
||||||
|
"Ukrainian": "Українська",
|
||||||
|
|
||||||
|
"Misc": "Diversen",
|
||||||
"Misc Options": "Diverse opties",
|
"Misc Options": "Diverse opties",
|
||||||
|
"Games": "Spellen",
|
||||||
|
"Game Options": "",
|
||||||
|
"Hide forwarders": "",
|
||||||
|
"Launch random game": "",
|
||||||
|
"List meta records": "",
|
||||||
|
"Entries": "",
|
||||||
|
"Failed to list application meta entries": "",
|
||||||
|
"No meta entries found...\n": "",
|
||||||
|
"Updating application record list": "",
|
||||||
|
"Dump": "",
|
||||||
|
"Select content to dump": "",
|
||||||
|
"Dump All": "",
|
||||||
|
"Dump Application": "",
|
||||||
|
"Dump Patch": "",
|
||||||
|
"Dump AddOnContent": "",
|
||||||
|
"Dump DataPatch": "",
|
||||||
|
"Select dump location": "",
|
||||||
|
"microSD card (/dumps/NSP/)": "",
|
||||||
|
"USB transfer (Switch 2 Switch)": "",
|
||||||
|
"/dev/null (Speed Test)": "",
|
||||||
|
"Dumping": "",
|
||||||
|
"Dump successfull!": "",
|
||||||
|
"Dump failed!": "",
|
||||||
|
"Success": "",
|
||||||
|
"Delete successfull!": "",
|
||||||
|
"Delete failed!": "",
|
||||||
|
|
||||||
"Themezer": "Themamaker",
|
"Themezer": "Themamaker",
|
||||||
|
"Themezer Options": "",
|
||||||
|
"Nsfw": "",
|
||||||
|
"Page": "",
|
||||||
|
"Page %zu / %zu": "Page %zu / %zu",
|
||||||
|
"Enter Page Number": "",
|
||||||
|
"Bad Page": "",
|
||||||
|
"Download theme?": "",
|
||||||
|
|
||||||
|
"GitHub": "",
|
||||||
|
"Downloading json": "",
|
||||||
|
"Select asset to download for ": "",
|
||||||
|
|
||||||
|
"FTP Install": "",
|
||||||
|
"FTP Install (EXPERIMENTAL)": "",
|
||||||
|
"Connection Type: WiFi | Strength: ": "",
|
||||||
|
"Connection Type: Ethernet": "",
|
||||||
|
"Connection Type: None": "",
|
||||||
|
"Host:": "",
|
||||||
|
"Port:": "",
|
||||||
|
"Username:": "",
|
||||||
|
"Password:": "",
|
||||||
|
"SSID:": "",
|
||||||
|
"Passphrase:": "",
|
||||||
|
"Failed to install via FTP, press B to exit...": "",
|
||||||
|
"Ftp install success!": "",
|
||||||
|
"Ftp install failed!": "",
|
||||||
|
"USB Install": "",
|
||||||
|
"USB": "",
|
||||||
|
"Connected, waiting for file list...": "",
|
||||||
|
"Connected, starting transfer...": "",
|
||||||
|
"Failed to init usb, press B to exit...": "",
|
||||||
|
"Waiting for connection...": "",
|
||||||
|
"Transferring data...": "",
|
||||||
|
"USB connected, sending file list": "",
|
||||||
|
"Sent file list, waiting for command...": "",
|
||||||
|
"waiting for usb connection...": "",
|
||||||
|
"Disable MTP for usb install": "",
|
||||||
|
"Re-enabled MTP": "",
|
||||||
|
"Installed via usb": "",
|
||||||
|
"Usb install success!": "",
|
||||||
|
"Usb install failed!": "",
|
||||||
|
"Press B to exit...": "",
|
||||||
|
"GameCard Install": "",
|
||||||
|
"GameCard": "",
|
||||||
|
"GC": "",
|
||||||
|
"System memory %.1f GB": "",
|
||||||
|
"microSD card %.1f GB": "",
|
||||||
|
"Nand Install": "",
|
||||||
|
"SD Card Install": "",
|
||||||
|
"Exit": "",
|
||||||
|
"Gc install success!": "",
|
||||||
|
"Gc install failed!": "",
|
||||||
|
|
||||||
|
"IRS (Infrared Joycon Camera)": "",
|
||||||
|
"IRS": "",
|
||||||
"Irs": "Ir",
|
"Irs": "Ir",
|
||||||
"Web": "Web",
|
"Ambient Noise Level: ": "",
|
||||||
"Download": "Downloaden",
|
"Controller": "Controleur",
|
||||||
"Next Page": "Volgende pagina",
|
|
||||||
"Prev Page": "Vorige pagina",
|
|
||||||
"Pad ": "Pad ",
|
"Pad ": "Pad ",
|
||||||
" (Unconnected)": " (Niet verbonden)",
|
|
||||||
"HandHeld": "Handbediende",
|
"HandHeld": "Handbediende",
|
||||||
" (Available)": " (Beschikbaar)",
|
" (Available)": " (Beschikbaar)",
|
||||||
|
" (Unsupported)": "",
|
||||||
|
" (Unconnected)": " (Niet verbonden)",
|
||||||
|
"Rotation": "Rotatie",
|
||||||
"0 (Sideways)": "0 (zijwaarts)",
|
"0 (Sideways)": "0 (zijwaarts)",
|
||||||
"90 (Flat)": "90 (plat)",
|
"90 (Flat)": "90 (plat)",
|
||||||
"180 (-Sideways)": "180 (-zijwaarts)",
|
"180 (-Sideways)": "180 (-zijwaarts)",
|
||||||
"270 (Upside down)": "270 (ondersteboven)",
|
"270 (Upside down)": "270 (ondersteboven)",
|
||||||
|
"Colour": "Kleur",
|
||||||
"Grey": "Grijs",
|
"Grey": "Grijs",
|
||||||
"Ironbow": "Ijzerboog",
|
"Ironbow": "Ijzerboog",
|
||||||
"Green": "Groente",
|
"Green": "Groente",
|
||||||
"Red": "Rood",
|
"Red": "Rood",
|
||||||
"Blue": "Blauw",
|
"Blue": "Blauw",
|
||||||
|
"Light Target": "Licht doel",
|
||||||
"All leds": "Alle leds",
|
"All leds": "Alle leds",
|
||||||
"Bright group": "Heldere groep",
|
"Bright group": "Heldere groep",
|
||||||
"Dim group": "Dim groep",
|
"Dim group": "Dim groep",
|
||||||
"None": "Geen",
|
"None": "Geen",
|
||||||
"Normal image": "Normaal beeld",
|
|
||||||
"Negative image": "Negatief beeld",
|
|
||||||
"320x240": "320x240",
|
|
||||||
"160x120": "160x120",
|
|
||||||
"80x60": "80x60",
|
|
||||||
"40x30": "40x30",
|
|
||||||
"20x15": "20x15",
|
|
||||||
"Controller": "Controleur",
|
|
||||||
"Rotation": "Rotatie",
|
|
||||||
"Colour": "Kleur",
|
|
||||||
"Light Target": "Licht doel",
|
|
||||||
"Gain": "Verdienen",
|
"Gain": "Verdienen",
|
||||||
"Negative Image": "Negatief beeld",
|
"Negative Image": "Negatief beeld",
|
||||||
|
"Normal image": "Normaal beeld",
|
||||||
|
"Negative image": "Negatief beeld",
|
||||||
"Format": "Formaat",
|
"Format": "Formaat",
|
||||||
"Trimming Format": "Trimformaat",
|
"Trimming Format": "Trimformaat",
|
||||||
|
"320x240": "320×240",
|
||||||
|
"160x120": "160×120",
|
||||||
|
"80x60": "80×60",
|
||||||
|
"40x30": "40×30",
|
||||||
|
"20x15": "20×15",
|
||||||
"External Light Filter": "Extern lichtfilter",
|
"External Light Filter": "Extern lichtfilter",
|
||||||
"Load Default": "Standaard laden",
|
"Load Default": "Standaard laden",
|
||||||
"No Internet": "Geen internet",
|
|
||||||
"[Applet Mode]": "[Applet-modus]",
|
"Advanced": "Geavanceerd",
|
||||||
"Language": "Taal"
|
"Advanced Options": "Bestand maken",
|
||||||
}
|
"Logging": "Loggen",
|
||||||
|
"Replace hbmenu on exit": "Vervang hbmenu bij afsluiten",
|
||||||
|
"Restore hbmenu?": "",
|
||||||
|
"Restore": "",
|
||||||
|
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "",
|
||||||
|
"Failed to restore hbmenu, please re-download hbmenu": "",
|
||||||
|
"Failed to restore hbmenu, using sphaira instead": "",
|
||||||
|
"Restored hbmenu, closing sphaira": "",
|
||||||
|
"Restored hbmenu": "",
|
||||||
|
"Restart Sphaira?": "",
|
||||||
|
"Press OK to restart Sphaira": "",
|
||||||
|
"Text scroll speed": "",
|
||||||
|
"Slow": "",
|
||||||
|
"Normal": "",
|
||||||
|
"Fast": "",
|
||||||
|
"Set right-side menu": "",
|
||||||
|
"Install options": "",
|
||||||
|
"Install Options": "",
|
||||||
|
"Enable sysmmc": "",
|
||||||
|
"Enable emummc": "",
|
||||||
|
"Show install warning": "",
|
||||||
|
"Install location": "",
|
||||||
|
"System memory": "",
|
||||||
|
"microSD card": "",
|
||||||
|
"Boost CPU clock": "",
|
||||||
|
"Allow downgrade": "",
|
||||||
|
"Skip if already installed": "",
|
||||||
|
"Ticket only": "",
|
||||||
|
"Skip base": "",
|
||||||
|
"Skip patch": "",
|
||||||
|
"Skip dlc": "",
|
||||||
|
"Skip data patch": "",
|
||||||
|
"Skip ticket": "",
|
||||||
|
"Skip NCA hash verify": "",
|
||||||
|
"Skip RSA header verify": "",
|
||||||
|
"Skip RSA NPDM verify": "",
|
||||||
|
"Ignore distribution bit": "",
|
||||||
|
"Convert to standard crypto": "",
|
||||||
|
"Lower master key": "",
|
||||||
|
"Lower system version": "",
|
||||||
|
|
||||||
|
"Homebrew": "Zelf brouwen",
|
||||||
|
"Apps": "",
|
||||||
|
"Homebrew Options": "Homebrew-opties",
|
||||||
|
"Hide Sphaira": "Verberg Sphaira",
|
||||||
|
"Install Forwarder": "Forwarder installeren",
|
||||||
|
"WARNING: Installing forwarders will lead to a ban!": "WAARSCHUWING: Het installeren van forwarders leidt tot een ban!",
|
||||||
|
"Installing Forwarder": "",
|
||||||
|
"Creating Program": "",
|
||||||
|
"Creating Control": "",
|
||||||
|
"Creating Meta": "",
|
||||||
|
"Writing Nca": "",
|
||||||
|
"Updating ncm databse": "",
|
||||||
|
"Pushing application record": "",
|
||||||
|
"Failed to install forwarder": "",
|
||||||
|
"Unstarred ": "",
|
||||||
|
"Starred ": "",
|
||||||
|
"Failed to remove old forwarder, please manually remove it!": "",
|
||||||
|
|
||||||
|
"AppStore": "",
|
||||||
|
"Appstore": "",
|
||||||
|
"Store": "",
|
||||||
|
"Filter: %s | Sort: %s | Order: %s": "Filter: %s | Soort: %s | Volgorde: %s",
|
||||||
|
"AppStore Options": "AppStore-opties",
|
||||||
|
"Info": "Info",
|
||||||
|
"Changelog": "",
|
||||||
|
"Details": "",
|
||||||
|
"version: %s": "version: %s",
|
||||||
|
"updated: %s": "updated: %s",
|
||||||
|
"category: %s": "category: %s",
|
||||||
|
"extracted: %.2f MiB": "extracted: %.2f MiB",
|
||||||
|
"app_dls: %s": "app_dls: %s",
|
||||||
|
"More by Author": "",
|
||||||
|
"Leave Feedback": "",
|
||||||
|
|
||||||
|
"FileBrowser": "Bestandsbrowser",
|
||||||
|
"Files": "",
|
||||||
|
"%zd files": "%zd files",
|
||||||
|
"%zd dirs": "%zd dirs",
|
||||||
|
"File Options": "Bestandsopties",
|
||||||
|
"Show Hidden": "Toon verborgen",
|
||||||
|
"Folders First": "Mappen eerst",
|
||||||
|
"Hidden Last": "Verborgen laatste",
|
||||||
|
"Cut": "Snee",
|
||||||
|
"Copy": "Kopiëren",
|
||||||
|
"Copying ": "",
|
||||||
|
"Paste": "",
|
||||||
|
"Paste ": "",
|
||||||
|
" file(s)?": "",
|
||||||
|
"Pasting ": "",
|
||||||
|
"Pasting": "",
|
||||||
|
"Rename": "Hernoemen",
|
||||||
|
"Set New File Name": "",
|
||||||
|
"Extract zip": "",
|
||||||
|
"Extract Options": "",
|
||||||
|
"Extract here": "",
|
||||||
|
"Extract to root": "",
|
||||||
|
"Are you sure you want to extract to root?": "",
|
||||||
|
"Extract to...": "",
|
||||||
|
"Enter the path to the folder to extract into": "",
|
||||||
|
"Extracting ": "",
|
||||||
|
"Extract success!": "",
|
||||||
|
"Extract failed!": "",
|
||||||
|
"Compress to zip": "",
|
||||||
|
"Compress Options": "",
|
||||||
|
"Compress": "",
|
||||||
|
"Compress to...": "",
|
||||||
|
"Compressing ": "",
|
||||||
|
"Compress success!": "",
|
||||||
|
"Compress failed!": "",
|
||||||
|
"Create File": "Bestand maken",
|
||||||
|
"Set File Name": "",
|
||||||
|
"Create Folder": "Map maken",
|
||||||
|
"Set Folder Name": "",
|
||||||
|
"Creating ": "",
|
||||||
|
"Upload": "",
|
||||||
|
"Select upload location": "",
|
||||||
|
"No upload locations set!": "",
|
||||||
|
"Uploading": "",
|
||||||
|
"Upload successfull!": "",
|
||||||
|
"Upload failed!": "",
|
||||||
|
"View as text (unfinished)": "Bekijk als tekst (onvoltooid)",
|
||||||
|
"Ignore read only": "",
|
||||||
|
"Mount": "",
|
||||||
|
"Sd": "",
|
||||||
|
"Image System memory": "",
|
||||||
|
"Image microSD card": "",
|
||||||
|
"Empty...": "",
|
||||||
|
"Open with DayBreak?": "",
|
||||||
|
"Launch ": "",
|
||||||
|
"Launch option for: ": "",
|
||||||
|
"Select launcher for: ": "",
|
||||||
|
|
||||||
|
"Sort By": "Sorteer op",
|
||||||
|
"Sort Options": "Sorteeropties",
|
||||||
|
"Filter": "Filter",
|
||||||
|
"All": "Alle",
|
||||||
|
"Emulators": "Emulators",
|
||||||
|
"Tools": "Hulpmiddelen",
|
||||||
|
"Themes": "Thema's",
|
||||||
|
"Legacy": "Nalatenschap",
|
||||||
|
"Sort": "Soort",
|
||||||
|
"Size": "Maat",
|
||||||
|
"Size (Star)": "",
|
||||||
|
"Alphabetical": "Alfabetisch",
|
||||||
|
"Alphabetical (Star)": "",
|
||||||
|
"Updated": "Bijgewerkt",
|
||||||
|
"Updated (Star)": "",
|
||||||
|
"Downloads": "Downloads",
|
||||||
|
"Likes": "",
|
||||||
|
"ID": "",
|
||||||
|
"Order": "Volgorde",
|
||||||
|
"Descending": "Aflopend",
|
||||||
|
"Descending (down)": "Aflopend",
|
||||||
|
"Desc": "Aflopend",
|
||||||
|
"Ascending": "Oplopend",
|
||||||
|
"Ascending (Up)": "Oplopend",
|
||||||
|
"Asc": "Oplopend",
|
||||||
|
"Layout": "",
|
||||||
|
"List": "",
|
||||||
|
"Icon": "",
|
||||||
|
"Grid": "",
|
||||||
|
"Search": "Zoekopdracht",
|
||||||
|
|
||||||
|
"Options": "Opties",
|
||||||
|
"OK": "",
|
||||||
|
"Back": "Terug",
|
||||||
|
"Select": "",
|
||||||
|
"Open": "Open",
|
||||||
|
"Launch": "Launch",
|
||||||
|
"Restart": "",
|
||||||
|
"Next": "",
|
||||||
|
"Prev": "",
|
||||||
|
"Unstar": "",
|
||||||
|
"Star": "",
|
||||||
|
"Yes": "Ja",
|
||||||
|
"No": "Nee",
|
||||||
|
"On": "",
|
||||||
|
"Off": "",
|
||||||
|
|
||||||
|
"Install": "Installeren",
|
||||||
|
"Install Selected files?": "",
|
||||||
|
"Installing ": "",
|
||||||
|
"Installed ": "",
|
||||||
|
"Installed!": "",
|
||||||
|
"Trying to load ": "",
|
||||||
|
"Checking MD5": "",
|
||||||
|
|
||||||
|
"Delete": "Verwijderen",
|
||||||
|
"Delete Selected files?": "",
|
||||||
|
"Are you sure you want to delete ": "Weet u zeker dat u wilt verwijderen ",
|
||||||
|
"Scanning ": "",
|
||||||
|
"Deleting ": "",
|
||||||
|
"Deleting": "",
|
||||||
|
"Remove": "",
|
||||||
|
"Completely remove ": "",
|
||||||
|
"Removing ": "",
|
||||||
|
"Removed ": "",
|
||||||
|
"Uninstalling ": "",
|
||||||
|
|
||||||
|
"Download": "Downloaden",
|
||||||
|
"Downloading ": "",
|
||||||
|
"Downloaded ": "",
|
||||||
|
|
||||||
|
"Update": "",
|
||||||
|
"Update avaliable: ": "",
|
||||||
|
"Download update: ": "",
|
||||||
|
"Updated to ": "",
|
||||||
|
"Failed to download update": "",
|
||||||
|
|
||||||
|
"%zu hours %zu minutes remaining": "",
|
||||||
|
"%zu minutes %zu seconds remaining": "",
|
||||||
|
"%zu seconds remaining": "",
|
||||||
|
|
||||||
|
"Loading...": "",
|
||||||
|
"Loading": "",
|
||||||
|
"Empty!": "",
|
||||||
|
"Not Ready...": "",
|
||||||
|
"Error loading page!": ""
|
||||||
|
}
|
||||||
@@ -1,114 +1,392 @@
|
|||||||
{
|
{
|
||||||
"Launch": "Lançar",
|
"[Applet Mode]": "[Modo applet]",
|
||||||
"Options": "Opções",
|
"No Internet": "Sem internet",
|
||||||
"Homebrew Options": "Opções de fermentação caseira",
|
"Switch-Handheld!": "Switch-Portátil",
|
||||||
"Sort By": "Ordenar por",
|
"Switch-Docked!": "Switch-Docado",
|
||||||
"Sort Options": "Opções de classificação",
|
"Audio disabled due to suspended game": "Áudio desativado devido ao software suspenso.",
|
||||||
"Updated": "Atualizado",
|
"Are you sure you wish to cancel?": "Você tem certeza que quer cancelar?",
|
||||||
"Size": "Tamanho",
|
"An error occurred": "",
|
||||||
"Alphabetical": "Alfabético",
|
"If this message appears repeatedly, please open an issue.": "Se esta mensagem aparecer repetidamente, abra um issue.",
|
||||||
"Decending": "Decrescente",
|
|
||||||
"Ascending": "Ascendente",
|
"Menu Options": "Opções do menu",
|
||||||
"Sort": "Organizar",
|
|
||||||
"Order": "Ordem",
|
|
||||||
"Info": "Informações",
|
|
||||||
"Delete": "Excluir",
|
|
||||||
"Hide Sphaira": "Esconder Sphaira",
|
|
||||||
"Are you sure you want to delete ": "Tem certeza de que deseja excluir ",
|
|
||||||
"Install Forwarder": "Instalar encaminhador",
|
|
||||||
"WARNING: Installing forwarders will lead to a ban!": "AVISO: A instalação de encaminhadores levará ao banimento!",
|
|
||||||
"Back": "Voltar",
|
|
||||||
"Install": "Instalar",
|
|
||||||
"Fs": "Fs",
|
|
||||||
"App": "Aplicativo",
|
|
||||||
"Menu": "Menu",
|
"Menu": "Menu",
|
||||||
"Homebrew": "Cerveja caseira",
|
|
||||||
"FileBrowser": "Navegador de arquivos",
|
|
||||||
"Open": "Abrir",
|
|
||||||
"Theme Options": "Opções de tema",
|
|
||||||
"Select Theme": "Selecione o tema",
|
|
||||||
"Shuffle": "Embaralhar",
|
|
||||||
"Music": "Música",
|
|
||||||
"Show Hidden": "Mostrar oculto",
|
|
||||||
"Folders First": "Pastas primeiro",
|
|
||||||
"Hidden Last": "Oculto por último",
|
|
||||||
"Yes": "Sim",
|
|
||||||
"No": "Não",
|
|
||||||
"Network Options": "Opções de rede",
|
|
||||||
"Nxlink": "Nxlink",
|
|
||||||
"Check for update": "Verifique se há atualização",
|
|
||||||
"File Options": "Opções de arquivo",
|
|
||||||
"Cut": "Corte",
|
|
||||||
"Copy": "Cópia",
|
|
||||||
"Rename": "Renomear",
|
|
||||||
"Advanced Options": "Criar arquivo",
|
|
||||||
"Create File": "Criar arquivo",
|
|
||||||
"Create Folder": "Criar pasta",
|
|
||||||
"View as text": "Ver como texto",
|
|
||||||
"View as text (unfinished)": "Ver como texto (inacabado)",
|
|
||||||
"Set Archive Bit": "Definir bit de arquivo",
|
|
||||||
"AppStore Options": "Opções da AppStore",
|
|
||||||
"All": "Todos",
|
|
||||||
"Games": "Jogos",
|
|
||||||
"Emulators": "Emuladores",
|
|
||||||
"Tools": "Ferramentas",
|
|
||||||
"Advanced": "Avançado",
|
|
||||||
"Themes": "Temas",
|
|
||||||
"Legacy": "Legado",
|
|
||||||
"Misc": "Diversos",
|
|
||||||
"Downloads": "Transferências",
|
|
||||||
"Filter": "Filtro",
|
|
||||||
"Search": "Procurar",
|
|
||||||
"Menu Options": "Opções de cardápio",
|
|
||||||
"Header": "Cabeçalho",
|
|
||||||
"Theme": "Tema",
|
"Theme": "Tema",
|
||||||
|
"Theme Options": "Opções de tema",
|
||||||
|
"Select Theme": "Tema atual",
|
||||||
|
"Music": "Música",
|
||||||
|
"12 Hour Time": "Relógio de 12 horas",
|
||||||
|
"Download Default Music": "Baixar música padrão",
|
||||||
|
"Failed to download default_music.bfstm, please try again": "",
|
||||||
|
"Overwrite current default music?": "",
|
||||||
|
|
||||||
"Network": "Rede",
|
"Network": "Rede",
|
||||||
"Logging": "Registro",
|
"Network Options": "Opções de rede",
|
||||||
"Enabled": "Habilitado",
|
"Ftp": "Servidor FTP",
|
||||||
"Disabled": "Desabilitado",
|
"Mtp": "Escuta MTP",
|
||||||
"Replace hbmenu on exit": "Substitua hbmenu ao sair",
|
"Nxlink": "Nxlink",
|
||||||
|
"Nxlink Connected": "Nxlink conectado",
|
||||||
|
"Nxlink Upload": "Envio Nxlink",
|
||||||
|
"Nxlink Finished": "Nxlink finalizado",
|
||||||
|
|
||||||
|
"Language": "Idioma",
|
||||||
|
"Auto": "Automático",
|
||||||
|
"English": "English",
|
||||||
|
"Japanese": "日本語",
|
||||||
|
"French": "Français",
|
||||||
|
"German": "Deutsch",
|
||||||
|
"Italian": "Italiano",
|
||||||
|
"Spanish": "Español",
|
||||||
|
"Chinese": "中文",
|
||||||
|
"Korean": "한국어",
|
||||||
|
"Dutch": "Dutch",
|
||||||
|
"Portuguese": "Português",
|
||||||
|
"Russian": "Русский",
|
||||||
|
"Swedish": "Svenska",
|
||||||
|
"Vietnamese": "Vietnamese",
|
||||||
|
"Ukrainian": "Українська",
|
||||||
|
|
||||||
|
"Misc": "Diversos",
|
||||||
"Misc Options": "Opções diversas",
|
"Misc Options": "Opções diversas",
|
||||||
"Themezer": "Temazer",
|
"Games": "Softwares",
|
||||||
"Irs": "Receita Federal",
|
"Game Options": "Opções de software",
|
||||||
"Web": "Rede",
|
"Hide forwarders": "Ocultar atalhos (forwarders)",
|
||||||
"Download": "Download",
|
"Launch random game": "Iniciar um software aleatório",
|
||||||
"Next Page": "Próxima página",
|
"List meta records": "Registro de conteúdos",
|
||||||
"Prev Page": "Página anterior",
|
"Entries": "Entradas",
|
||||||
"Pad ": "Almofada ",
|
"Failed to list application meta entries": "",
|
||||||
" (Unconnected)": " (Desconectado)",
|
"No meta entries found...\n": "",
|
||||||
|
"Updating application record list": "",
|
||||||
|
"Dump": "Exportar",
|
||||||
|
"Select content to dump": "Exportação de conteúdo",
|
||||||
|
"Dump All": "Exportar tudo",
|
||||||
|
"Dump Application": "Exportar software base",
|
||||||
|
"Dump Patch": "Exportar atualização",
|
||||||
|
"Dump AddOnContent": "Exportar DLCs",
|
||||||
|
"Dump DataPatch": "Exportar patch de dados",
|
||||||
|
"Select dump location": "Selecione o local de exportação",
|
||||||
|
"microSD card (/dumps/NSP/)": "Cartão microSD (/dump/NSP/)",
|
||||||
|
"USB transfer (Switch 2 Switch)": "Transferência via USB (Switch 2 Switch)",
|
||||||
|
"/dev/null (Speed Test)": "Teste de velocidade (/dev/null)",
|
||||||
|
"Dumping": "Extraindo...",
|
||||||
|
"Dump successfull!": "Extração foi concluída com sucesso.",
|
||||||
|
"Dump failed!": "Extração falhou.",
|
||||||
|
"Success": "",
|
||||||
|
"Delete successfull!": "Exclusão foi concluída com sucesso.",
|
||||||
|
"Delete failed!": "Exclusão falhou",
|
||||||
|
|
||||||
|
"Themezer": "Themezer",
|
||||||
|
"Themezer Options": "Opções do Themezer",
|
||||||
|
"Nsfw": "Temas 18+ (NSFW)",
|
||||||
|
"Page": "Ir para página",
|
||||||
|
"Page %zu / %zu": "Página %zu / %zu",
|
||||||
|
"Enter Page Number": "Número da página",
|
||||||
|
"Bad Page": "Página inválida",
|
||||||
|
"Download theme?": "Baixar tema?",
|
||||||
|
|
||||||
|
"GitHub": "GitHub",
|
||||||
|
"Downloading json": "Baixando JSON",
|
||||||
|
"Select asset to download for ": "Selecione o recurso para baixar de ",
|
||||||
|
|
||||||
|
"FTP Install": "Instalação via FTP",
|
||||||
|
"FTP Install (EXPERIMENTAL)": "Instalação via FTP (EXPERIMENTAL)",
|
||||||
|
"Connection Type: WiFi | Strength: ": "Conexão por rede Wi-Fi | Intensidade do sinal: ",
|
||||||
|
"Connection Type: Ethernet": "Conexão por cabo (ethernet)",
|
||||||
|
"Connection Type: None": "Sem conexão",
|
||||||
|
"Host:": "Host:",
|
||||||
|
"Port:": "Porta:",
|
||||||
|
"Username:": "Nome de usuário:",
|
||||||
|
"Password:": "Senha:",
|
||||||
|
"SSID:": "SSID:",
|
||||||
|
"Passphrase:": "Senha:",
|
||||||
|
"Failed to install via FTP, press B to exit...": "Falha ao instalar via FTP,\naperte B para sair.",
|
||||||
|
"Ftp install success!": "Instalação via FTP concluída com sucesso.",
|
||||||
|
"Ftp install failed!": "Instalação via FTP falhou.",
|
||||||
|
"USB Install": "Instalação via USB",
|
||||||
|
"USB": "USB",
|
||||||
|
"Connected, waiting for file list...": "",
|
||||||
|
"Connected, starting transfer...": "",
|
||||||
|
"Failed to init usb, press B to exit...": "Falha ao instalar via USB,\naperte B para sair.",
|
||||||
|
"Waiting for connection...": "Aguardando conexão...",
|
||||||
|
"Transferring data...": "Transferindo dados...",
|
||||||
|
"USB connected, sending file list": "",
|
||||||
|
"Sent file list, waiting for command...": "",
|
||||||
|
"waiting for usb connection...": "",
|
||||||
|
"Disable MTP for usb install": "Escuta MTP desabilitada temporáriamente.",
|
||||||
|
"Re-enabled MTP": "Escuta MTP reabilitada.",
|
||||||
|
"Installed via usb": "Instalado via USB",
|
||||||
|
"Usb install success!": "Instalação via USB concluída com sucesso.",
|
||||||
|
"Usb install failed!": "Instalação via USB falhou.",
|
||||||
|
"Press B to exit...": "Aperte B para sair.",
|
||||||
|
"GameCard Install": "Instalação de cartão de jogo",
|
||||||
|
"GameCard": "Cartão de jogo",
|
||||||
|
"GC": "",
|
||||||
|
"System memory %.1f GB": "",
|
||||||
|
"microSD card %.1f GB": "",
|
||||||
|
"Nand Install": "",
|
||||||
|
"SD Card Install": "",
|
||||||
|
"Exit": "",
|
||||||
|
"Gc install success!": "Instalação de cartão de jogo concluída com sucesso.",
|
||||||
|
"Gc install failed!": "Instalação de cartão de jogo falhou.",
|
||||||
|
|
||||||
|
"IRS (Infrared Joycon Camera)": "Câmera de movimento IR",
|
||||||
|
"IRS": "Câmera de movimento IR",
|
||||||
|
"Irs": "Câmera de movimento IR",
|
||||||
|
"Ambient Noise Level: ": "Nível de ruído ambiente: ",
|
||||||
|
"Controller": "Controle",
|
||||||
|
"Pad ": "Pad ",
|
||||||
"HandHeld": "Portátil",
|
"HandHeld": "Portátil",
|
||||||
" (Available)": " (Disponível)",
|
" (Available)": " (disponível)",
|
||||||
|
" (Unsupported)": "(não suportado)",
|
||||||
|
" (Unconnected)": " (desconectado)",
|
||||||
|
"Rotation": "Rotação",
|
||||||
"0 (Sideways)": "0 (lateralmente)",
|
"0 (Sideways)": "0 (lateralmente)",
|
||||||
"90 (Flat)": "90 (plano)",
|
"90 (Flat)": "90 (plano)",
|
||||||
"180 (-Sideways)": "180 (-lateralmente)",
|
"180 (-Sideways)": "180 (-lateralmente)",
|
||||||
"270 (Upside down)": "270 (de cabeça para baixo)",
|
"270 (Upside down)": "270 (de cabeça para baixo)",
|
||||||
|
"Colour": "Cor",
|
||||||
"Grey": "Cinza",
|
"Grey": "Cinza",
|
||||||
"Ironbow": "Arco de Ferro",
|
"Ironbow": "Ferro",
|
||||||
"Green": "Verde",
|
"Green": "Verde",
|
||||||
"Red": "Vermelho",
|
"Red": "Vermelho",
|
||||||
"Blue": "Azul",
|
"Blue": "Azul",
|
||||||
|
"Light Target": "Alvo de luz",
|
||||||
"All leds": "Todos os LEDs",
|
"All leds": "Todos os LEDs",
|
||||||
"Bright group": "Grupo brilhante",
|
"Bright group": "Grupo claro",
|
||||||
"Dim group": "Grupo escuro",
|
"Dim group": "Grupo escuro",
|
||||||
"None": "Nenhum",
|
"None": "Nenhum",
|
||||||
"Normal image": "Imagem normal",
|
|
||||||
"Negative image": "Imagem negativa",
|
|
||||||
"320x240": "320x240",
|
|
||||||
"160x120": "160x120",
|
|
||||||
"80x60": "80x60",
|
|
||||||
"40x30": "40x30",
|
|
||||||
"20x15": "20x15",
|
|
||||||
"Controller": "Controlador",
|
|
||||||
"Rotation": "Rotação",
|
|
||||||
"Colour": "Cor",
|
|
||||||
"Light Target": "Alvo leve",
|
|
||||||
"Gain": "Ganho",
|
"Gain": "Ganho",
|
||||||
"Negative Image": "Imagem negativa",
|
"Negative Image": "Imagem negativa",
|
||||||
"Format": "Formatar",
|
"Normal image": "Imagem normal",
|
||||||
"Trimming Format": "Formato de corte",
|
"Negative image": "Imagem negativa",
|
||||||
"External Light Filter": "Filtro de luz externo",
|
"Format": "Formato",
|
||||||
"Load Default": "Carregar padrão",
|
"Trimming Format": "Formato do recorte",
|
||||||
"No Internet": "Sem Internet",
|
"320x240": "320×240",
|
||||||
"[Applet Mode]": "[Modo miniaplicativo]",
|
"160x120": "160×120",
|
||||||
"Language": "Idioma"
|
"80x60": "80×60",
|
||||||
}
|
"40x30": "40×30",
|
||||||
|
"20x15": "20×15",
|
||||||
|
"External Light Filter": "Filtro de luz externa",
|
||||||
|
"Load Default": "Restaurar padrão",
|
||||||
|
|
||||||
|
"Advanced": "Avançado",
|
||||||
|
"Advanced Options": "Opções avançadas",
|
||||||
|
"Logging": "Registro de depuração",
|
||||||
|
"Replace hbmenu on exit": "Substituir hbmenu ao sair",
|
||||||
|
"Restore hbmenu?": "Restaurar hbmenu?",
|
||||||
|
"Restore": "Restaurar",
|
||||||
|
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "Falha ao buscar /switch/hbmenu.nro\nUse a loja (AppStore) para reinstalar o hbmenu.",
|
||||||
|
"Failed to restore hbmenu, please re-download hbmenu": "Falha ao restaurar o hbmenu, baixe o hbmenu novamente.",
|
||||||
|
"Failed to restore hbmenu, using sphaira instead": "Falha ao restaurar hbmenu, usando sphaira.",
|
||||||
|
"Restored hbmenu, closing sphaira": "hbmenu restaurado, fechando sphaira.",
|
||||||
|
"Restored hbmenu": "hbmenu restaurado.",
|
||||||
|
"Restart Sphaira?": "Reiniciar sphaira?",
|
||||||
|
"Press OK to restart Sphaira": "Selecione OK para reiniciar o sphaira.",
|
||||||
|
"Text scroll speed": "Rolagem do texto",
|
||||||
|
"Slow": "Lenta",
|
||||||
|
"Normal": "Normal",
|
||||||
|
"Fast": "Rápida",
|
||||||
|
"Set right-side menu": "Menu do botão R",
|
||||||
|
"Install options": "Opções de instalação",
|
||||||
|
"Install Options": "Opções de instalação",
|
||||||
|
"Enable sysmmc": "Habilitar sysMMC",
|
||||||
|
"Enable emummc": "Habilitar emuMMC",
|
||||||
|
"Show install warning": "Mostrar aviso de instalação",
|
||||||
|
"Install location": "Local de instalação",
|
||||||
|
"System memory": "Memória do console",
|
||||||
|
"microSD card": "Cartão microSD",
|
||||||
|
"Boost CPU clock": "Aumentar clock da CPU",
|
||||||
|
"Allow downgrade": "Permitir downgrade",
|
||||||
|
"Skip if already installed": "Pular se já instalado",
|
||||||
|
"Ticket only": "Instalar apenas ticket",
|
||||||
|
"Skip base": "Pular software base",
|
||||||
|
"Skip patch": "Pular atualizações",
|
||||||
|
"Skip dlc": "Pular DLCs",
|
||||||
|
"Skip data patch": "Pular patch de dados",
|
||||||
|
"Skip ticket": "Pular ticket",
|
||||||
|
"Skip NCA hash verify": "",
|
||||||
|
"Skip RSA header verify": "Pular checagem de header RSA",
|
||||||
|
"Skip RSA NPDM verify": "Pular checagem de NPDM RSA",
|
||||||
|
"Ignore distribution bit": "Ignorar bit de distribuição",
|
||||||
|
"Convert to standard crypto": "Convertr para crypto padrão",
|
||||||
|
"Lower master key": "Reduzir a master key",
|
||||||
|
"Lower system version": "Reduzir versão do sistema",
|
||||||
|
|
||||||
|
"Homebrew": "Aplicativos",
|
||||||
|
"Apps": "Aplicativos",
|
||||||
|
"Homebrew Options": "Opções de aplicativo",
|
||||||
|
"Hide Sphaira": "Esconder sphaira",
|
||||||
|
"Install Forwarder": "Instalar atalho (forwarder)",
|
||||||
|
"WARNING: Installing forwarders will lead to a ban!": "AVISO: Instalar atalhos pode resultar em um banimento!",
|
||||||
|
"Installing Forwarder": "Instalando forwarder...",
|
||||||
|
"Creating Program": "Criando Program",
|
||||||
|
"Creating Control": "Criando Control",
|
||||||
|
"Creating Meta": "Criando Meta",
|
||||||
|
"Writing Nca": "Escrevendo NCA",
|
||||||
|
"Updating ncm databse": "Atualizando base de dados NCM",
|
||||||
|
"Pushing application record": "Aplicando registro do aplicativo",
|
||||||
|
"Failed to install forwarder": "Falha ao instalar forwarder",
|
||||||
|
"Unstarred ": "Desfavoritado ",
|
||||||
|
"Starred ": "Favoritado ",
|
||||||
|
"Failed to remove old forwarder, please manually remove it!": "",
|
||||||
|
|
||||||
|
"AppStore": "Loja",
|
||||||
|
"Appstore": "Loja",
|
||||||
|
"Store": "Loja",
|
||||||
|
"Filter: %s | Sort: %s | Order: %s": "Filtro: %s | Por: %s | Ordem: %s",
|
||||||
|
"AppStore Options": "Opções da loja",
|
||||||
|
"Info": "Informações",
|
||||||
|
"Changelog": "Alterações",
|
||||||
|
"Details": "Detalhes",
|
||||||
|
"version: %s": "versão: %s",
|
||||||
|
"updated: %s": "atualizado: %s",
|
||||||
|
"category: %s": "categoria: %s",
|
||||||
|
"extracted: %.2f MiB": "tam. extraído: %.2f MiB",
|
||||||
|
"app_dls: %s": "downloads: %s",
|
||||||
|
"More by Author": "Mais deste autor",
|
||||||
|
"Leave Feedback": "Deixar um feedback",
|
||||||
|
|
||||||
|
"FileBrowser": "Arquivos",
|
||||||
|
"Files": "Arquivos",
|
||||||
|
"%zd files": "%zd arquivo(s)",
|
||||||
|
"%zd dirs": "%zd diretório(s)",
|
||||||
|
"File Options": "Opções de arquivo",
|
||||||
|
"Show Hidden": "Mostrar ocultos",
|
||||||
|
"Folders First": "Pastas primeiro",
|
||||||
|
"Hidden Last": "Ocultos por último",
|
||||||
|
"Cut": "Recortar",
|
||||||
|
"Copy": "Copiar",
|
||||||
|
"Copying ": "Copiando ",
|
||||||
|
"Paste": "Colar",
|
||||||
|
"Paste ": "Colar ",
|
||||||
|
" file(s)?": " arquivo(s)?",
|
||||||
|
"Pasting ": "Colando ",
|
||||||
|
"Pasting": "Colando ",
|
||||||
|
"Rename": "Renomear",
|
||||||
|
"Set New File Name": "Defina o nome do novo arquivo",
|
||||||
|
"Extract zip": "",
|
||||||
|
"Extract Options": "",
|
||||||
|
"Extract here": "",
|
||||||
|
"Extract to root": "",
|
||||||
|
"Are you sure you want to extract to root?": "",
|
||||||
|
"Extract to...": "",
|
||||||
|
"Enter the path to the folder to extract into": "",
|
||||||
|
"Extracting ": "",
|
||||||
|
"Extract success!": "",
|
||||||
|
"Extract failed!": "",
|
||||||
|
"Compress to zip": "Comprimir em zip",
|
||||||
|
"Compress Options": "",
|
||||||
|
"Compress": "",
|
||||||
|
"Compress to...": "",
|
||||||
|
"Compressing ": "",
|
||||||
|
"Compress success!": "",
|
||||||
|
"Compress failed!": "",
|
||||||
|
"Create File": "Criar arquivo",
|
||||||
|
"Set File Name": "Defina o nome do arquivo",
|
||||||
|
"Create Folder": "Criar pasta",
|
||||||
|
"Set Folder Name": "Defina o nome da pasta",
|
||||||
|
"Creating ": "Criando ",
|
||||||
|
"Upload": "",
|
||||||
|
"Select upload location": "",
|
||||||
|
"No upload locations set!": "",
|
||||||
|
"Uploading": "",
|
||||||
|
"Upload successfull!": "",
|
||||||
|
"Upload failed!": "",
|
||||||
|
"View as text (unfinished)": "Ver como texto (inacabado)",
|
||||||
|
"Ignore read only": "Ignorar somente leitura",
|
||||||
|
"Mount": "Montar",
|
||||||
|
"Sd": "SD",
|
||||||
|
"Image System memory": "Imagem (memória do console)",
|
||||||
|
"Image microSD card": "Imagem (cartão microSD)",
|
||||||
|
"Empty...": "Vazio",
|
||||||
|
"Open with DayBreak?": "Abrir com DayBreak?",
|
||||||
|
"Launch ": "Iniciar ",
|
||||||
|
"Launch option for: ": "Opções de inicialização para: ",
|
||||||
|
"Select launcher for: ": "Selecionar launcher para: ",
|
||||||
|
|
||||||
|
"Sort By": "Ordernar/Organizar",
|
||||||
|
"Sort Options": "Ordernar/Organizar",
|
||||||
|
"Filter": "Filtro",
|
||||||
|
"All": "Todos",
|
||||||
|
"Emulators": "Emuladores",
|
||||||
|
"Tools": "Ferramentas",
|
||||||
|
"Themes": "Temas",
|
||||||
|
"Legacy": "Legado",
|
||||||
|
"Sort": "Organizar por",
|
||||||
|
"Size": "Tamanho",
|
||||||
|
"Size (Star)": "Tamanho (favoritos)",
|
||||||
|
"Alphabetical": "Ordem alfabética",
|
||||||
|
"Alphabetical (Star)": "Ordem alfabética (favoritos)",
|
||||||
|
"Updated": "Atualizado",
|
||||||
|
"Updated (Star)": "Atualizado (favoritos)",
|
||||||
|
"Downloads": "Nº de downloads",
|
||||||
|
"Likes": "Nº de curtidas",
|
||||||
|
"ID": "ID",
|
||||||
|
"Order": "Ordem",
|
||||||
|
"Descending": "Decrescente",
|
||||||
|
"Descending (down)": "Decrescente (baixo)",
|
||||||
|
"Desc": "Decr.",
|
||||||
|
"Ascending": "Ascendente",
|
||||||
|
"Ascending (Up)": "Ascendente (cima)",
|
||||||
|
"Asc": "Asc.",
|
||||||
|
"Layout": "Exibição",
|
||||||
|
"List": "Lista",
|
||||||
|
"Icon": "Ícones",
|
||||||
|
"Grid": "Grade",
|
||||||
|
"Search": "Buscar",
|
||||||
|
|
||||||
|
"Options": "Opções",
|
||||||
|
"OK": "OK",
|
||||||
|
"Back": "Voltar",
|
||||||
|
"Select": "Selecionar",
|
||||||
|
"Open": "Abrir",
|
||||||
|
"Launch": "Iniciar",
|
||||||
|
"Restart": "Reiniciar",
|
||||||
|
"Next": "Prómixo",
|
||||||
|
"Prev": "Anterior",
|
||||||
|
"Unstar": "Desfavoritar",
|
||||||
|
"Star": "Favoritar",
|
||||||
|
"Yes": "Sim",
|
||||||
|
"No": "Não",
|
||||||
|
"On": "Sim",
|
||||||
|
"Off": "Não",
|
||||||
|
|
||||||
|
"Install": "Instalar",
|
||||||
|
"Install Selected files?": "Instalar os arquivos selecionados?",
|
||||||
|
"Installing ": "Instalando ",
|
||||||
|
"Installed ": "Instalado ",
|
||||||
|
"Installed!": "Instalado!",
|
||||||
|
"Trying to load ": "Tentando carregar ",
|
||||||
|
"Checking MD5": "Checando MD5",
|
||||||
|
|
||||||
|
"Delete": "Excluir",
|
||||||
|
"Delete Selected files?": "Excluir os arquivos selecionados?",
|
||||||
|
"Are you sure you want to delete ": "Você tem certeza que quer excluir ",
|
||||||
|
"Scanning ": "Analisando ",
|
||||||
|
"Deleting ": "Excluindo ",
|
||||||
|
"Deleting": "Excluindo...",
|
||||||
|
"Remove": "Remover",
|
||||||
|
"Completely remove ": "Remover completamente ",
|
||||||
|
"Removing ": "Removendo ",
|
||||||
|
"Removed ": "Removido ",
|
||||||
|
"Uninstalling ": "Desinstalando ",
|
||||||
|
|
||||||
|
"Download": "Baixar",
|
||||||
|
"Downloading ": "Baixando ",
|
||||||
|
"Downloaded ": "Baixado ",
|
||||||
|
|
||||||
|
"Update": "Atualizar",
|
||||||
|
"Update avaliable: ": "Atualização disponível: ",
|
||||||
|
"Download update: ": "Baixar autalização: ",
|
||||||
|
"Updated to ": "Atualizado para ",
|
||||||
|
"Failed to download update": "Falha ao baixar a atualização.",
|
||||||
|
|
||||||
|
"%zu hours %zu minutes remaining": "",
|
||||||
|
"%zu minutes %zu seconds remaining": "",
|
||||||
|
"%zu seconds remaining": "",
|
||||||
|
|
||||||
|
"Loading...": "Carregando...",
|
||||||
|
"Loading": "Carregando",
|
||||||
|
"Empty!": "Vazio",
|
||||||
|
"Not Ready...": "Não está pronto...",
|
||||||
|
"Error loading page!": "Erro ao carregar página."
|
||||||
|
}
|
||||||
@@ -1,114 +1,392 @@
|
|||||||
{
|
{
|
||||||
"Launch": "Запуск",
|
"[Applet Mode]": "[Режим апплета]",
|
||||||
"Options": "Параметры",
|
"No Internet": "Нет Интернета",
|
||||||
"Homebrew Options": "Варианты домашнего пивоварения",
|
"Switch-Handheld!": "",
|
||||||
"Sort By": "Сортировать по",
|
"Switch-Docked!": "",
|
||||||
"Sort Options": "Параметры сортировки",
|
"Audio disabled due to suspended game": "",
|
||||||
"Updated": "Обновлено",
|
"Are you sure you wish to cancel?": "",
|
||||||
"Size": "Размер",
|
"An error occurred": "",
|
||||||
"Alphabetical": "Алфавитный",
|
"If this message appears repeatedly, please open an issue.": "",
|
||||||
"Decending": "по убыванию",
|
|
||||||
"Ascending": "восходящий",
|
"Menu Options": "Параметры меню",
|
||||||
"Sort": "Сортировать",
|
|
||||||
"Order": "Заказ",
|
|
||||||
"Info": "Информация",
|
|
||||||
"Delete": "Удалить",
|
|
||||||
"Hide Sphaira": "Скрыть Сфаиру",
|
|
||||||
"Are you sure you want to delete ": "Вы уверены, что хотите удалить ",
|
|
||||||
"Install Forwarder": "Установить переадресатор",
|
|
||||||
"WARNING: Installing forwarders will lead to a ban!": "ВНИМАНИЕ: Установка форвардеров приведет к бану!",
|
|
||||||
"Back": "Назад",
|
|
||||||
"Install": "Установить",
|
|
||||||
"Fs": "Фс",
|
|
||||||
"App": "Приложение",
|
|
||||||
"Menu": "Меню",
|
"Menu": "Меню",
|
||||||
"Homebrew": "Домашнее пиво",
|
"Theme": "Тема",
|
||||||
"FileBrowser": "ФайлБраузер",
|
|
||||||
"Open": "Открыть",
|
|
||||||
"Theme Options": "Параметры темы",
|
"Theme Options": "Параметры темы",
|
||||||
"Select Theme": "Выберите тему",
|
"Select Theme": "Выберите тему",
|
||||||
"Shuffle": "Перетасовать",
|
|
||||||
"Music": "Музыка",
|
"Music": "Музыка",
|
||||||
"Show Hidden": "Показать скрытое",
|
"12 Hour Time": "",
|
||||||
"Folders First": "Папки в первую очередь",
|
"Download Default Music": "",
|
||||||
"Hidden Last": "Скрытый последний",
|
"Failed to download default_music.bfstm, please try again": "",
|
||||||
"Yes": "Да",
|
"Overwrite current default music?": "",
|
||||||
"No": "Нет",
|
|
||||||
"Network Options": "Параметры сети",
|
|
||||||
"Nxlink": "Нкслинк",
|
|
||||||
"Check for update": "Проверить наличие обновлений",
|
|
||||||
"File Options": "Параметры файла",
|
|
||||||
"Cut": "Резать",
|
|
||||||
"Copy": "Копировать",
|
|
||||||
"Rename": "Переименовать",
|
|
||||||
"Advanced Options": "Создать файл",
|
|
||||||
"Create File": "Создать файл",
|
|
||||||
"Create Folder": "Создать папку",
|
|
||||||
"View as text": "Посмотреть как текст",
|
|
||||||
"View as text (unfinished)": "Посмотреть как текст (незакончено)",
|
|
||||||
"Set Archive Bit": "Установить бит архива",
|
|
||||||
"AppStore Options": "Параметры магазина приложений",
|
|
||||||
"All": "Все",
|
|
||||||
"Games": "Игры",
|
|
||||||
"Emulators": "Эмуляторы",
|
|
||||||
"Tools": "Инструменты",
|
|
||||||
"Advanced": "Передовой",
|
|
||||||
"Themes": "Темы",
|
|
||||||
"Legacy": "Наследие",
|
|
||||||
"Misc": "Разное",
|
|
||||||
"Downloads": "Загрузки",
|
|
||||||
"Filter": "Фильтр",
|
|
||||||
"Search": "Поиск",
|
|
||||||
"Menu Options": "Опции меню",
|
|
||||||
"Header": "Заголовок",
|
|
||||||
"Theme": "Тема",
|
|
||||||
"Network": "Сеть",
|
"Network": "Сеть",
|
||||||
"Logging": "Ведение журнала",
|
"Network Options": "Параметры сети",
|
||||||
"Enabled": "Включено",
|
"Ftp": "FTP",
|
||||||
"Disabled": "Неполноценный",
|
"Mtp": "MTP",
|
||||||
"Replace hbmenu on exit": "Заменить hbmenu при выходе",
|
"Nxlink": "Nxlink",
|
||||||
"Misc Options": "Разные параметры",
|
"Nxlink Connected": "",
|
||||||
"Themezer": "Темезер",
|
"Nxlink Upload": "",
|
||||||
"Irs": "IRS",
|
"Nxlink Finished": "",
|
||||||
"Web": "Интернет",
|
|
||||||
"Download": "Скачать",
|
"Language": "Язык",
|
||||||
"Next Page": "Следующая страница",
|
"Auto": "",
|
||||||
"Prev Page": "Предыдущая страница",
|
"English": "English",
|
||||||
"Pad ": "Подушка ",
|
"Japanese": "日本語",
|
||||||
|
"French": "Français",
|
||||||
|
"German": "Deutsch",
|
||||||
|
"Italian": "Italiano",
|
||||||
|
"Spanish": "Español",
|
||||||
|
"Chinese": "中文",
|
||||||
|
"Korean": "한국어",
|
||||||
|
"Dutch": "Dutch",
|
||||||
|
"Portuguese": "Português",
|
||||||
|
"Russian": "Русский",
|
||||||
|
"Swedish": "Svenska",
|
||||||
|
"Vietnamese": "Vietnamese",
|
||||||
|
"Ukrainian": "Українська",
|
||||||
|
|
||||||
|
"Misc": "Прочее",
|
||||||
|
"Misc Options": "Прочие параметры",
|
||||||
|
"Games": "Игры",
|
||||||
|
"Game Options": "",
|
||||||
|
"Hide forwarders": "",
|
||||||
|
"Launch random game": "",
|
||||||
|
"List meta records": "",
|
||||||
|
"Entries": "",
|
||||||
|
"Failed to list application meta entries": "",
|
||||||
|
"No meta entries found...\n": "",
|
||||||
|
"Updating application record list": "",
|
||||||
|
"Dump": "",
|
||||||
|
"Select content to dump": "",
|
||||||
|
"Dump All": "",
|
||||||
|
"Dump Application": "",
|
||||||
|
"Dump Patch": "",
|
||||||
|
"Dump AddOnContent": "",
|
||||||
|
"Dump DataPatch": "",
|
||||||
|
"Select dump location": "",
|
||||||
|
"microSD card (/dumps/NSP/)": "",
|
||||||
|
"USB transfer (Switch 2 Switch)": "",
|
||||||
|
"/dev/null (Speed Test)": "",
|
||||||
|
"Dumping": "",
|
||||||
|
"Dump successfull!": "",
|
||||||
|
"Dump failed!": "",
|
||||||
|
"Success": "",
|
||||||
|
"Delete successfull!": "",
|
||||||
|
"Delete failed!": "",
|
||||||
|
|
||||||
|
"Themezer": "Themezer",
|
||||||
|
"Themezer Options": "",
|
||||||
|
"Nsfw": "",
|
||||||
|
"Page": "",
|
||||||
|
"Page %zu / %zu": "Page %zu / %zu",
|
||||||
|
"Enter Page Number": "",
|
||||||
|
"Bad Page": "",
|
||||||
|
"Download theme?": "",
|
||||||
|
|
||||||
|
"GitHub": "",
|
||||||
|
"Downloading json": "",
|
||||||
|
"Select asset to download for ": "",
|
||||||
|
|
||||||
|
"FTP Install": "",
|
||||||
|
"FTP Install (EXPERIMENTAL)": "",
|
||||||
|
"Connection Type: WiFi | Strength: ": "",
|
||||||
|
"Connection Type: Ethernet": "",
|
||||||
|
"Connection Type: None": "",
|
||||||
|
"Host:": "",
|
||||||
|
"Port:": "",
|
||||||
|
"Username:": "",
|
||||||
|
"Password:": "",
|
||||||
|
"SSID:": "",
|
||||||
|
"Passphrase:": "",
|
||||||
|
"Failed to install via FTP, press B to exit...": "",
|
||||||
|
"Ftp install success!": "",
|
||||||
|
"Ftp install failed!": "",
|
||||||
|
"USB Install": "",
|
||||||
|
"USB": "",
|
||||||
|
"Connected, waiting for file list...": "",
|
||||||
|
"Connected, starting transfer...": "",
|
||||||
|
"Failed to init usb, press B to exit...": "",
|
||||||
|
"Waiting for connection...": "",
|
||||||
|
"Transferring data...": "",
|
||||||
|
"USB connected, sending file list": "",
|
||||||
|
"Sent file list, waiting for command...": "",
|
||||||
|
"waiting for usb connection...": "",
|
||||||
|
"Disable MTP for usb install": "",
|
||||||
|
"Re-enabled MTP": "",
|
||||||
|
"Installed via usb": "",
|
||||||
|
"Usb install success!": "",
|
||||||
|
"Usb install failed!": "",
|
||||||
|
"Press B to exit...": "",
|
||||||
|
"GameCard Install": "",
|
||||||
|
"GameCard": "",
|
||||||
|
"GC": "",
|
||||||
|
"System memory %.1f GB": "",
|
||||||
|
"microSD card %.1f GB": "",
|
||||||
|
"Nand Install": "",
|
||||||
|
"SD Card Install": "",
|
||||||
|
"Exit": "",
|
||||||
|
"Gc install success!": "",
|
||||||
|
"Gc install failed!": "",
|
||||||
|
|
||||||
|
"IRS (Infrared Joycon Camera)": "",
|
||||||
|
"IRS": "",
|
||||||
|
"Irs": "Irs",
|
||||||
|
"Ambient Noise Level: ": "",
|
||||||
|
"Controller": "Контроллер",
|
||||||
|
"Pad ": "Pad ",
|
||||||
|
"HandHeld": "Портативный",
|
||||||
|
" (Available)": " (Доступно)",
|
||||||
|
" (Unsupported)": "",
|
||||||
" (Unconnected)": " (Не подключено)",
|
" (Unconnected)": " (Не подключено)",
|
||||||
"HandHeld": "Ручной",
|
"Rotation": "Вращение",
|
||||||
" (Available)": " (Доступный)",
|
"0 (Sideways)": "0 (набок)",
|
||||||
"0 (Sideways)": "0 (вбок)",
|
"90 (Flat)": "90 (ровно)",
|
||||||
"90 (Flat)": "90 (квартира)",
|
|
||||||
"180 (-Sideways)": "180 (-вбок)",
|
"180 (-Sideways)": "180 (-вбок)",
|
||||||
"270 (Upside down)": "270 (перевернутый)",
|
"270 (Upside down)": "270 (перевернуто)",
|
||||||
|
"Colour": "Цвет",
|
||||||
"Grey": "Серый",
|
"Grey": "Серый",
|
||||||
"Ironbow": "Железный лук",
|
"Ironbow": "Стальной",
|
||||||
"Green": "Зеленый",
|
"Green": "Зеленый",
|
||||||
"Red": "Красный",
|
"Red": "Красный",
|
||||||
"Blue": "Синий",
|
"Blue": "Синий",
|
||||||
|
"Light Target": "Световая мишень",
|
||||||
"All leds": "Все светодиоды",
|
"All leds": "Все светодиоды",
|
||||||
"Bright group": "Яркая группа",
|
"Bright group": "Яркая группа",
|
||||||
"Dim group": "Тусклая группа",
|
"Dim group": "Тусклая группа",
|
||||||
"None": "Никто",
|
"None": "Никто",
|
||||||
"Normal image": "Обычное изображение",
|
|
||||||
"Negative image": "Негативный имидж",
|
|
||||||
"320x240": "320x240",
|
|
||||||
"160x120": "160x120",
|
|
||||||
"80x60": "80х60",
|
|
||||||
"40x30": "40x30",
|
|
||||||
"20x15": "20x15",
|
|
||||||
"Controller": "Контроллер",
|
|
||||||
"Rotation": "Вращение",
|
|
||||||
"Colour": "Цвет",
|
|
||||||
"Light Target": "Легкая мишень",
|
|
||||||
"Gain": "Прирост",
|
"Gain": "Прирост",
|
||||||
"Negative Image": "Негативное изображение",
|
"Negative Image": "Негативное изображение",
|
||||||
|
"Normal image": "Обычное изображение",
|
||||||
|
"Negative image": "Негативное изображение",
|
||||||
"Format": "Формат",
|
"Format": "Формат",
|
||||||
"Trimming Format": "Формат обрезки",
|
"Trimming Format": "Формат обрезки",
|
||||||
|
"320x240": "320×240",
|
||||||
|
"160x120": "160×120",
|
||||||
|
"80x60": "80×60",
|
||||||
|
"40x30": "40×30",
|
||||||
|
"20x15": "20×15",
|
||||||
"External Light Filter": "Внешний светофильтр",
|
"External Light Filter": "Внешний светофильтр",
|
||||||
"Load Default": "Загрузить по умолчанию",
|
"Load Default": "Загрузить умолчания",
|
||||||
"No Internet": "Нет Интернета",
|
|
||||||
"[Applet Mode]": "[Режим апплета]",
|
"Advanced": "Продвинутые",
|
||||||
"Language": "Язык"
|
"Advanced Options": "Расширенные параметры",
|
||||||
}
|
"Logging": "Журналирование",
|
||||||
|
"Replace hbmenu on exit": "Заменить hbmenu при выходе",
|
||||||
|
"Restore hbmenu?": "",
|
||||||
|
"Restore": "",
|
||||||
|
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "",
|
||||||
|
"Failed to restore hbmenu, please re-download hbmenu": "",
|
||||||
|
"Failed to restore hbmenu, using sphaira instead": "",
|
||||||
|
"Restored hbmenu, closing sphaira": "",
|
||||||
|
"Restored hbmenu": "",
|
||||||
|
"Restart Sphaira?": "",
|
||||||
|
"Press OK to restart Sphaira": "",
|
||||||
|
"Text scroll speed": "",
|
||||||
|
"Slow": "",
|
||||||
|
"Normal": "",
|
||||||
|
"Fast": "",
|
||||||
|
"Set right-side menu": "",
|
||||||
|
"Install options": "",
|
||||||
|
"Install Options": "",
|
||||||
|
"Enable sysmmc": "",
|
||||||
|
"Enable emummc": "",
|
||||||
|
"Show install warning": "",
|
||||||
|
"Install location": "",
|
||||||
|
"System memory": "",
|
||||||
|
"microSD card": "",
|
||||||
|
"Boost CPU clock": "",
|
||||||
|
"Allow downgrade": "",
|
||||||
|
"Skip if already installed": "",
|
||||||
|
"Ticket only": "",
|
||||||
|
"Skip base": "",
|
||||||
|
"Skip patch": "",
|
||||||
|
"Skip dlc": "",
|
||||||
|
"Skip data patch": "",
|
||||||
|
"Skip ticket": "",
|
||||||
|
"Skip NCA hash verify": "",
|
||||||
|
"Skip RSA header verify": "",
|
||||||
|
"Skip RSA NPDM verify": "",
|
||||||
|
"Ignore distribution bit": "",
|
||||||
|
"Convert to standard crypto": "",
|
||||||
|
"Lower master key": "",
|
||||||
|
"Lower system version": "",
|
||||||
|
|
||||||
|
"Homebrew": "Homebrew",
|
||||||
|
"Apps": "",
|
||||||
|
"Homebrew Options": "Параметры Homebrew",
|
||||||
|
"Hide Sphaira": "Скрыть Sphaira",
|
||||||
|
"Install Forwarder": "Установить форвардер",
|
||||||
|
"WARNING: Installing forwarders will lead to a ban!": "ВНИМАНИЕ: Установка форвардеров приведет к бану!",
|
||||||
|
"Installing Forwarder": "Установить форвардер",
|
||||||
|
"Creating Program": "",
|
||||||
|
"Creating Control": "",
|
||||||
|
"Creating Meta": "",
|
||||||
|
"Writing Nca": "",
|
||||||
|
"Updating ncm databse": "",
|
||||||
|
"Pushing application record": "",
|
||||||
|
"Failed to install forwarder": "",
|
||||||
|
"Unstarred ": "",
|
||||||
|
"Starred ": "",
|
||||||
|
"Failed to remove old forwarder, please manually remove it!": "",
|
||||||
|
|
||||||
|
"AppStore": "",
|
||||||
|
"Appstore": "",
|
||||||
|
"Store": "",
|
||||||
|
"Filter: %s | Sort: %s | Order: %s": "Фильтр: %s | Сортировать: %s | Порядок: %s",
|
||||||
|
"AppStore Options": "Параметры магазина приложений",
|
||||||
|
"Info": "Информация",
|
||||||
|
"Changelog": "",
|
||||||
|
"Details": "",
|
||||||
|
"version: %s": "version: %s",
|
||||||
|
"updated: %s": "updated: %s",
|
||||||
|
"category: %s": "category: %s",
|
||||||
|
"extracted: %.2f MiB": "extracted: %.2f MiB",
|
||||||
|
"app_dls: %s": "app_dls: %s",
|
||||||
|
"More by Author": "",
|
||||||
|
"Leave Feedback": "",
|
||||||
|
|
||||||
|
"FileBrowser": "Файловый менеджер",
|
||||||
|
"Files": "",
|
||||||
|
"%zd files": "%zd files",
|
||||||
|
"%zd dirs": "%zd dirs",
|
||||||
|
"File Options": "Параметры файла",
|
||||||
|
"Show Hidden": "Показать скрытые",
|
||||||
|
"Folders First": "Папки в первую очередь",
|
||||||
|
"Hidden Last": "Скрытые в последнюю очередь",
|
||||||
|
"Cut": "Вырезать",
|
||||||
|
"Copy": "Копировать",
|
||||||
|
"Copying ": "",
|
||||||
|
"Paste": "",
|
||||||
|
"Paste ": "",
|
||||||
|
" file(s)?": "",
|
||||||
|
"Pasting ": "",
|
||||||
|
"Pasting": "",
|
||||||
|
"Rename": "Переименовать",
|
||||||
|
"Set New File Name": "",
|
||||||
|
"Extract zip": "",
|
||||||
|
"Extract Options": "",
|
||||||
|
"Extract here": "",
|
||||||
|
"Extract to root": "",
|
||||||
|
"Are you sure you want to extract to root?": "",
|
||||||
|
"Extract to...": "",
|
||||||
|
"Enter the path to the folder to extract into": "",
|
||||||
|
"Extracting ": "",
|
||||||
|
"Extract success!": "",
|
||||||
|
"Extract failed!": "",
|
||||||
|
"Compress to zip": "",
|
||||||
|
"Compress Options": "",
|
||||||
|
"Compress": "",
|
||||||
|
"Compress to...": "",
|
||||||
|
"Compressing ": "",
|
||||||
|
"Compress success!": "",
|
||||||
|
"Compress failed!": "",
|
||||||
|
"Create File": "Создать файл",
|
||||||
|
"Set File Name": "",
|
||||||
|
"Create Folder": "Создать папку",
|
||||||
|
"Set Folder Name": "",
|
||||||
|
"Creating ": "",
|
||||||
|
"Upload": "",
|
||||||
|
"Select upload location": "",
|
||||||
|
"No upload locations set!": "",
|
||||||
|
"Uploading": "",
|
||||||
|
"Upload successfull!": "",
|
||||||
|
"Upload failed!": "",
|
||||||
|
"View as text (unfinished)": "Посмотреть как текст (незакончено)",
|
||||||
|
"Ignore read only": "",
|
||||||
|
"Mount": "",
|
||||||
|
"Sd": "",
|
||||||
|
"Image System memory": "",
|
||||||
|
"Image microSD card": "",
|
||||||
|
"Empty...": "",
|
||||||
|
"Open with DayBreak?": "",
|
||||||
|
"Launch ": "",
|
||||||
|
"Launch option for: ": "",
|
||||||
|
"Select launcher for: ": "",
|
||||||
|
|
||||||
|
"Sort By": "Сортировать по",
|
||||||
|
"Sort Options": "Параметры сортировки",
|
||||||
|
"Filter": "Фильтр",
|
||||||
|
"All": "Все",
|
||||||
|
"Emulators": "Эмуляторы",
|
||||||
|
"Tools": "Инструменты",
|
||||||
|
"Themes": "Темы",
|
||||||
|
"Legacy": "Легаси",
|
||||||
|
"Sort": "Сортировать",
|
||||||
|
"Size": "Размер",
|
||||||
|
"Size (Star)": "",
|
||||||
|
"Alphabetical": "По наименованию",
|
||||||
|
"Alphabetical (Star)": "",
|
||||||
|
"Updated": "Обновлено",
|
||||||
|
"Updated (Star)": "",
|
||||||
|
"Downloads": "Загрузки",
|
||||||
|
"Likes": "",
|
||||||
|
"ID": "",
|
||||||
|
"Order": "Порядок",
|
||||||
|
"Descending": "По убыванию",
|
||||||
|
"Descending (down)": "По убыванию",
|
||||||
|
"Desc": "По убыванию",
|
||||||
|
"Ascending": "По возрастанию",
|
||||||
|
"Ascending (Up)": "По возрастанию",
|
||||||
|
"Asc": "По возрастанию",
|
||||||
|
"Layout": "",
|
||||||
|
"List": "",
|
||||||
|
"Icon": "",
|
||||||
|
"Grid": "",
|
||||||
|
"Search": "Поиск",
|
||||||
|
|
||||||
|
"Options": "Параметры темы",
|
||||||
|
"OK": "",
|
||||||
|
"Back": "Назад",
|
||||||
|
"Select": "",
|
||||||
|
"Open": "Открыть",
|
||||||
|
"Launch": "Запуск",
|
||||||
|
"Restart": "",
|
||||||
|
"Next": "",
|
||||||
|
"Prev": "",
|
||||||
|
"Unstar": "",
|
||||||
|
"Star": "",
|
||||||
|
"Yes": "Да",
|
||||||
|
"No": "Нет",
|
||||||
|
"On": "",
|
||||||
|
"Off": "",
|
||||||
|
|
||||||
|
"Install": "Установить",
|
||||||
|
"Install Selected files?": "",
|
||||||
|
"Installing ": "",
|
||||||
|
"Installed ": "",
|
||||||
|
"Installed!": "",
|
||||||
|
"Trying to load ": "",
|
||||||
|
"Checking MD5": "",
|
||||||
|
|
||||||
|
"Delete": "Удалить",
|
||||||
|
"Delete Selected files?": "",
|
||||||
|
"Are you sure you want to delete ": "Вы уверены, что хотите удалить ",
|
||||||
|
"Scanning ": "",
|
||||||
|
"Deleting ": "",
|
||||||
|
"Deleting": "",
|
||||||
|
"Remove": "",
|
||||||
|
"Completely remove ": "",
|
||||||
|
"Removing ": "",
|
||||||
|
"Removed ": "",
|
||||||
|
"Uninstalling ": "",
|
||||||
|
|
||||||
|
"Download": "Скачать",
|
||||||
|
"Downloading ": "",
|
||||||
|
"Downloaded ": "",
|
||||||
|
|
||||||
|
"Update": "",
|
||||||
|
"Update avaliable: ": "",
|
||||||
|
"Download update: ": "",
|
||||||
|
"Updated to ": "",
|
||||||
|
"Failed to download update": "",
|
||||||
|
|
||||||
|
"%zu hours %zu minutes remaining": "",
|
||||||
|
"%zu minutes %zu seconds remaining": "",
|
||||||
|
"%zu seconds remaining": "",
|
||||||
|
|
||||||
|
"Loading...": "",
|
||||||
|
"Loading": "",
|
||||||
|
"Empty!": "",
|
||||||
|
"Not Ready...": "",
|
||||||
|
"Error loading page!": ""
|
||||||
|
}
|
||||||
392
assets/romfs/i18n/se.json
Normal file
@@ -0,0 +1,392 @@
|
|||||||
|
{
|
||||||
|
"[Applet Mode]": "[Applet-läge]",
|
||||||
|
"No Internet": "Ingen Internetanslutning",
|
||||||
|
"Switch-Handheld!": "Switch Handhållen!",
|
||||||
|
"Switch-Docked!": "Switch Dockad!",
|
||||||
|
"Audio disabled due to suspended game": "Ljud är avstängt på grund av bakgrundsprogram",
|
||||||
|
"Are you sure you wish to cancel?": "Är du säker på att du vill avbryta?",
|
||||||
|
"An error occurred": "",
|
||||||
|
"If this message appears repeatedly, please open an issue.": "Om detta meddelande visas upprepade gånger, vänligen öppna en felanmälan.",
|
||||||
|
|
||||||
|
"Menu Options": "Menyalternativ",
|
||||||
|
"Menu": "Meny",
|
||||||
|
"Theme": "Tema",
|
||||||
|
"Theme Options": "Temaalternativ",
|
||||||
|
"Select Theme": "Välj tema",
|
||||||
|
"Music": "Musik",
|
||||||
|
"12 Hour Time": "",
|
||||||
|
"Download Default Music": "",
|
||||||
|
"Failed to download default_music.bfstm, please try again": "",
|
||||||
|
"Overwrite current default music?": "",
|
||||||
|
|
||||||
|
"Network": "Nätverk",
|
||||||
|
"Network Options": "Nätverksalternativ",
|
||||||
|
"Ftp": "FTP",
|
||||||
|
"Mtp": "MTP",
|
||||||
|
"Nxlink": "Nxlink",
|
||||||
|
"Nxlink Connected": "Nxlink ansluten",
|
||||||
|
"Nxlink Upload": "Nxlink överför",
|
||||||
|
"Nxlink Finished": "Nxlink klar",
|
||||||
|
|
||||||
|
"Language": "Språk",
|
||||||
|
"Auto": "Auto",
|
||||||
|
"English": "Engelska",
|
||||||
|
"Japanese": "Japanska",
|
||||||
|
"French": "Franska",
|
||||||
|
"German": "Tyska",
|
||||||
|
"Italian": "Italienska",
|
||||||
|
"Spanish": "Spanska",
|
||||||
|
"Chinese": "Kinesiska",
|
||||||
|
"Korean": "Koreanska",
|
||||||
|
"Dutch": "Holländska",
|
||||||
|
"Portuguese": "Portugisiska",
|
||||||
|
"Russian": "Ryska",
|
||||||
|
"Swedish": "Svenska",
|
||||||
|
"Vietnamese": "Vietnamese",
|
||||||
|
"Ukrainian": "Українська",
|
||||||
|
|
||||||
|
"Misc": "Övrigt",
|
||||||
|
"Misc Options": "Övriga alternativ",
|
||||||
|
"Games": "Spel",
|
||||||
|
"Game Options": "",
|
||||||
|
"Hide forwarders": "",
|
||||||
|
"Launch random game": "",
|
||||||
|
"List meta records": "",
|
||||||
|
"Entries": "",
|
||||||
|
"Failed to list application meta entries": "",
|
||||||
|
"No meta entries found...\n": "",
|
||||||
|
"Updating application record list": "",
|
||||||
|
"Dump": "",
|
||||||
|
"Select content to dump": "",
|
||||||
|
"Dump All": "",
|
||||||
|
"Dump Application": "",
|
||||||
|
"Dump Patch": "",
|
||||||
|
"Dump AddOnContent": "",
|
||||||
|
"Dump DataPatch": "",
|
||||||
|
"Select dump location": "",
|
||||||
|
"microSD card (/dumps/NSP/)": "",
|
||||||
|
"USB transfer (Switch 2 Switch)": "",
|
||||||
|
"/dev/null (Speed Test)": "",
|
||||||
|
"Dumping": "",
|
||||||
|
"Dump successfull!": "",
|
||||||
|
"Dump failed!": "",
|
||||||
|
"Success": "",
|
||||||
|
"Delete successfull!": "",
|
||||||
|
"Delete failed!": "",
|
||||||
|
|
||||||
|
"Themezer": "Themezer",
|
||||||
|
"Themezer Options": "Themezer-alternativ",
|
||||||
|
"Nsfw": "Nsfw",
|
||||||
|
"Page": "Sida",
|
||||||
|
"Page %zu / %zu": "Sida %zu / %zu",
|
||||||
|
"Enter Page Number": "Ange sidnummer",
|
||||||
|
"Bad Page": "Ogiltig sida",
|
||||||
|
"Download theme?": "Ladda ner tema?",
|
||||||
|
|
||||||
|
"GitHub": "GitHub",
|
||||||
|
"Downloading json": "Laddar ner JSON",
|
||||||
|
"Select asset to download for ": "Välj tillgång att ladda ner för ",
|
||||||
|
|
||||||
|
"FTP Install": "",
|
||||||
|
"FTP Install (EXPERIMENTAL)": "",
|
||||||
|
"Connection Type: WiFi | Strength: ": "",
|
||||||
|
"Connection Type: Ethernet": "",
|
||||||
|
"Connection Type: None": "",
|
||||||
|
"Host:": "",
|
||||||
|
"Port:": "",
|
||||||
|
"Username:": "",
|
||||||
|
"Password:": "",
|
||||||
|
"SSID:": "",
|
||||||
|
"Passphrase:": "",
|
||||||
|
"Failed to install via FTP, press B to exit...": "",
|
||||||
|
"Ftp install success!": "",
|
||||||
|
"Ftp install failed!": "",
|
||||||
|
"USB Install": "",
|
||||||
|
"USB": "",
|
||||||
|
"Connected, waiting for file list...": "",
|
||||||
|
"Connected, starting transfer...": "",
|
||||||
|
"Failed to init usb, press B to exit...": "",
|
||||||
|
"Waiting for connection...": "",
|
||||||
|
"Transferring data...": "",
|
||||||
|
"USB connected, sending file list": "",
|
||||||
|
"Sent file list, waiting for command...": "",
|
||||||
|
"waiting for usb connection...": "",
|
||||||
|
"Disable MTP for usb install": "",
|
||||||
|
"Re-enabled MTP": "",
|
||||||
|
"Installed via usb": "",
|
||||||
|
"Usb install success!": "",
|
||||||
|
"Usb install failed!": "",
|
||||||
|
"Press B to exit...": "",
|
||||||
|
"GameCard Install": "",
|
||||||
|
"GameCard": "",
|
||||||
|
"GC": "",
|
||||||
|
"System memory %.1f GB": "",
|
||||||
|
"microSD card %.1f GB": "",
|
||||||
|
"Nand Install": "",
|
||||||
|
"SD Card Install": "",
|
||||||
|
"Exit": "",
|
||||||
|
"Gc install success!": "",
|
||||||
|
"Gc install failed!": "",
|
||||||
|
|
||||||
|
"IRS (Infrared Joycon Camera)": "",
|
||||||
|
"IRS": "",
|
||||||
|
"Irs": "Irs",
|
||||||
|
"Ambient Noise Level: ": "Omgivningsljudnivå: ",
|
||||||
|
"Controller": "Kontroller",
|
||||||
|
"Pad ": "Handkontroll ",
|
||||||
|
"HandHeld": "Handhållen",
|
||||||
|
" (Available)": " (Tillgänglig)",
|
||||||
|
" (Unsupported)": " (Ej stödd)",
|
||||||
|
" (Unconnected)": " (Ej ansluten)",
|
||||||
|
"Rotation": "Rotation",
|
||||||
|
"0 (Sideways)": "0 (Sidan)",
|
||||||
|
"90 (Flat)": "90 (Platt)",
|
||||||
|
"180 (-Sideways)": "180 (-Sidan)",
|
||||||
|
"270 (Upside down)": "270 (Upp och ner)",
|
||||||
|
"Colour": "Färg",
|
||||||
|
"Grey": "Grå",
|
||||||
|
"Ironbow": "Ironbow",
|
||||||
|
"Green": "Grön",
|
||||||
|
"Red": "Röd",
|
||||||
|
"Blue": "Blå",
|
||||||
|
"Light Target": "Ljusmål",
|
||||||
|
"All leds": "Alla lysdioder",
|
||||||
|
"Bright group": "Ljus grupp",
|
||||||
|
"Dim group": "Dimma grupp",
|
||||||
|
"None": "Ingen",
|
||||||
|
"Gain": "Förstärkning",
|
||||||
|
"Negative Image": "Negativ bild",
|
||||||
|
"Normal image": "Normal bild",
|
||||||
|
"Negative image": "Negativ bild",
|
||||||
|
"Format": "Format",
|
||||||
|
"Trimming Format": "Trimningsformat",
|
||||||
|
"320x240": "320×240",
|
||||||
|
"160x120": "160×120",
|
||||||
|
"80x60": "80×60",
|
||||||
|
"40x30": "40×30",
|
||||||
|
"20x15": "20×15",
|
||||||
|
"External Light Filter": "Externt ljusfilter",
|
||||||
|
"Load Default": "Ladda standard",
|
||||||
|
|
||||||
|
"Advanced": "Avancerat",
|
||||||
|
"Advanced Options": "Avancerade alternativ",
|
||||||
|
"Logging": "Loggning",
|
||||||
|
"Replace hbmenu on exit": "Ersätt hbmenu vid avslut",
|
||||||
|
"Restore hbmenu?": "Återställ hbmenu?",
|
||||||
|
"Restore": "Återställ",
|
||||||
|
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "Kunde inte hitta /switch/hbmenu.nro\nInstallera om hbmenu från Appstore ",
|
||||||
|
"Failed to restore hbmenu, please re-download hbmenu": "Misslyckades med att återställa hbmenu, vänligen ladda ner hbmenu igen.",
|
||||||
|
"Failed to restore hbmenu, using sphaira instead": "Misslyckades med att återställa hbmenu, använder istället sphaira.",
|
||||||
|
"Restored hbmenu, closing sphaira": "Återställde hbmenu, stänger sphaira.",
|
||||||
|
"Restored hbmenu": "Återställde hbmenu.",
|
||||||
|
"Restart Sphaira?": "Starta om Sphaira?",
|
||||||
|
"Press OK to restart Sphaira": "",
|
||||||
|
"Text scroll speed": "",
|
||||||
|
"Slow": "",
|
||||||
|
"Normal": "",
|
||||||
|
"Fast": "",
|
||||||
|
"Set right-side menu": "",
|
||||||
|
"Install options": "",
|
||||||
|
"Install Options": "",
|
||||||
|
"Enable sysmmc": "",
|
||||||
|
"Enable emummc": "",
|
||||||
|
"Show install warning": "Visa installationsvarning",
|
||||||
|
"Install location": "Installationsplats",
|
||||||
|
"System memory": "Systemminne",
|
||||||
|
"microSD card": "microSD-kort",
|
||||||
|
"Boost CPU clock": "",
|
||||||
|
"Allow downgrade": "",
|
||||||
|
"Skip if already installed": "",
|
||||||
|
"Ticket only": "",
|
||||||
|
"Skip base": "",
|
||||||
|
"Skip patch": "",
|
||||||
|
"Skip dlc": "",
|
||||||
|
"Skip data patch": "",
|
||||||
|
"Skip ticket": "",
|
||||||
|
"Skip NCA hash verify": "",
|
||||||
|
"Skip RSA header verify": "",
|
||||||
|
"Skip RSA NPDM verify": "",
|
||||||
|
"Ignore distribution bit": "",
|
||||||
|
"Convert to standard crypto": "",
|
||||||
|
"Lower master key": "",
|
||||||
|
"Lower system version": "",
|
||||||
|
|
||||||
|
"Homebrew": "Homebrew",
|
||||||
|
"Apps": "Appar",
|
||||||
|
"Homebrew Options": "Homebrew-alternativ",
|
||||||
|
"Hide Sphaira": "Dölj Sphaira",
|
||||||
|
"Install Forwarder": "Installera genväg",
|
||||||
|
"WARNING: Installing forwarders will lead to a ban!": "VARNING: Att installera genvägar kan leda till avstängning!",
|
||||||
|
"Installing Forwarder": "Installerar genväg",
|
||||||
|
"Creating Program": "Skapar program",
|
||||||
|
"Creating Control": "Skapar kontroll",
|
||||||
|
"Creating Meta": "Skapar metadata",
|
||||||
|
"Writing Nca": "Skriver Nca",
|
||||||
|
"Updating ncm databse": "Uppdaterar ncm-databas",
|
||||||
|
"Pushing application record": "Skickar programpost",
|
||||||
|
"Failed to install forwarder": "Misslyckades att installera genväg",
|
||||||
|
"Unstarred ": "Avmarkerad ",
|
||||||
|
"Starred ": "Markerad ",
|
||||||
|
"Failed to remove old forwarder, please manually remove it!": "",
|
||||||
|
|
||||||
|
"AppStore": "AppStore",
|
||||||
|
"Appstore": "",
|
||||||
|
"Store": "Butik",
|
||||||
|
"Filter: %s | Sort: %s | Order: %s": "Filter: %s | Sortering: %s | Ordning: %s",
|
||||||
|
"AppStore Options": "AppStore-alternativ",
|
||||||
|
"Info": "Info",
|
||||||
|
"Changelog": "Ändringslogg",
|
||||||
|
"Details": "Detaljer",
|
||||||
|
"version: %s": "version: %s",
|
||||||
|
"updated: %s": "uppdaterad: %s",
|
||||||
|
"category: %s": "kategori: %s",
|
||||||
|
"extracted: %.2f MiB": "extraherad: %.2f MiB",
|
||||||
|
"app_dls: %s": "app_nedladdningar: %s",
|
||||||
|
"More by Author": "Mer av författaren",
|
||||||
|
"Leave Feedback": "Lämna feedback",
|
||||||
|
|
||||||
|
"FileBrowser": "Filbläddrare",
|
||||||
|
"Files": "Filer",
|
||||||
|
"%zd files": "%zd filer",
|
||||||
|
"%zd dirs": "%zd kataloger",
|
||||||
|
"File Options": "Filalternativ",
|
||||||
|
"Show Hidden": "Visa dolda",
|
||||||
|
"Folders First": "Mappar först",
|
||||||
|
"Hidden Last": "Dolda sist",
|
||||||
|
"Cut": "Klipp ut",
|
||||||
|
"Copy": "Kopiera",
|
||||||
|
"Copying ": "Kopierar ",
|
||||||
|
"Paste": "Klistra in",
|
||||||
|
"Paste ": "Klistra in ",
|
||||||
|
" file(s)?": " fil(er)?",
|
||||||
|
"Pasting ": "Klistrar in ",
|
||||||
|
"Pasting": "Klistrar in",
|
||||||
|
"Rename": "Byt namn",
|
||||||
|
"Set New File Name": "Ange nytt filnamn",
|
||||||
|
"Extract zip": "",
|
||||||
|
"Extract Options": "",
|
||||||
|
"Extract here": "",
|
||||||
|
"Extract to root": "",
|
||||||
|
"Are you sure you want to extract to root?": "",
|
||||||
|
"Extract to...": "",
|
||||||
|
"Enter the path to the folder to extract into": "",
|
||||||
|
"Extracting ": "",
|
||||||
|
"Extract success!": "",
|
||||||
|
"Extract failed!": "",
|
||||||
|
"Compress to zip": "",
|
||||||
|
"Compress Options": "",
|
||||||
|
"Compress": "",
|
||||||
|
"Compress to...": "",
|
||||||
|
"Compressing ": "",
|
||||||
|
"Compress success!": "",
|
||||||
|
"Compress failed!": "",
|
||||||
|
"Create File": "Skapa fil",
|
||||||
|
"Set File Name": "Ange filnamn",
|
||||||
|
"Create Folder": "Skapa mapp",
|
||||||
|
"Set Folder Name": "Ange mappnamn",
|
||||||
|
"Creating ": "Skapar ",
|
||||||
|
"Upload": "",
|
||||||
|
"Select upload location": "",
|
||||||
|
"No upload locations set!": "",
|
||||||
|
"Uploading": "",
|
||||||
|
"Upload successfull!": "",
|
||||||
|
"Upload failed!": "",
|
||||||
|
"View as text (unfinished)": "Visa som text (ofärdig)",
|
||||||
|
"Ignore read only": "Ignorera skrivskydd",
|
||||||
|
"Mount": "Montera",
|
||||||
|
"Sd": "Sd",
|
||||||
|
"Image System memory": "Avbild Systemminne",
|
||||||
|
"Image microSD card": "Avbild microSD-kort",
|
||||||
|
"Empty...": "Tom...",
|
||||||
|
"Open with DayBreak?": "Öppna med DayBreak?",
|
||||||
|
"Launch ": "Starta ",
|
||||||
|
"Launch option for: ": "Startalternativ för: ",
|
||||||
|
"Select launcher for: ": "Välj startprogram för: ",
|
||||||
|
|
||||||
|
"Sort By": "Sortera efter",
|
||||||
|
"Sort Options": "Sorteringsalternativ",
|
||||||
|
"Filter": "Filtrera",
|
||||||
|
"All": "Alla",
|
||||||
|
"Emulators": "Emulatorer",
|
||||||
|
"Tools": "Verktyg",
|
||||||
|
"Themes": "Teman",
|
||||||
|
"Legacy": "Legacy",
|
||||||
|
"Sort": "Sortera",
|
||||||
|
"Size": "Storlek",
|
||||||
|
"Size (Star)": "Storlek (Stjärna)",
|
||||||
|
"Alphabetical": "Alfabetisk",
|
||||||
|
"Alphabetical (Star)": "Alfabetisk (Stjärna)",
|
||||||
|
"Updated": "Uppdaterad",
|
||||||
|
"Updated (Star)": "Uppdaterad (Stjärna)",
|
||||||
|
"Downloads": "Nedladdningar",
|
||||||
|
"Likes": "Gillar",
|
||||||
|
"ID": "ID",
|
||||||
|
"Order": "Ordning",
|
||||||
|
"Descending": "Fallande",
|
||||||
|
"Descending (down)": "Fallande (nedåt)",
|
||||||
|
"Desc": "Fall",
|
||||||
|
"Ascending": "Stigande",
|
||||||
|
"Ascending (Up)": "Stigande (uppåt)",
|
||||||
|
"Asc": "Stig",
|
||||||
|
"Layout": "",
|
||||||
|
"List": "",
|
||||||
|
"Icon": "",
|
||||||
|
"Grid": "",
|
||||||
|
"Search": "Sök",
|
||||||
|
|
||||||
|
"Options": "Alternativ",
|
||||||
|
"OK": "OK",
|
||||||
|
"Back": "Tillbaka",
|
||||||
|
"Select": "Välj",
|
||||||
|
"Open": "Öppna",
|
||||||
|
"Launch": "Starta",
|
||||||
|
"Restart": "Starta om",
|
||||||
|
"Next": "",
|
||||||
|
"Prev": "",
|
||||||
|
"Unstar": "Avmarkera stjärna",
|
||||||
|
"Star": "Markera stjärna",
|
||||||
|
"Yes": "Ja",
|
||||||
|
"No": "Nej",
|
||||||
|
"On": "",
|
||||||
|
"Off": "",
|
||||||
|
|
||||||
|
"Install": "Installera",
|
||||||
|
"Install Selected files?": "",
|
||||||
|
"Installing ": "Installerar ",
|
||||||
|
"Installed ": "",
|
||||||
|
"Installed!": "Installerad!",
|
||||||
|
"Trying to load ": "Försöker ladda ",
|
||||||
|
"Checking MD5": "Kontrollerar MD5",
|
||||||
|
|
||||||
|
"Delete": "Radera",
|
||||||
|
"Delete Selected files?": "Radera valda filer?",
|
||||||
|
"Are you sure you want to delete ": "Är du säker på att du vill radera ",
|
||||||
|
"Scanning ": "Skannar ",
|
||||||
|
"Deleting ": "Raderar ",
|
||||||
|
"Deleting": "Raderar",
|
||||||
|
"Remove": "Ta bort",
|
||||||
|
"Completely remove ": "Ta bort helt ",
|
||||||
|
"Removing ": "Tar bort ",
|
||||||
|
"Removed ": "Borttagen ",
|
||||||
|
"Uninstalling ": "Avinstallerar ",
|
||||||
|
|
||||||
|
"Download": "Ladda ner",
|
||||||
|
"Downloading ": "Laddar ner ",
|
||||||
|
"Downloaded ": "Nedladdad ",
|
||||||
|
|
||||||
|
"Update": "Uppdatera",
|
||||||
|
"Update avaliable: ": "Uppdatering tillgänglig: ",
|
||||||
|
"Download update: ": "Ladda ner uppdatering: ",
|
||||||
|
"Updated to ": "Uppdaterad till ",
|
||||||
|
"Failed to download update": "Misslyckades att ladda ner uppdatering",
|
||||||
|
|
||||||
|
"%zu hours %zu minutes remaining": "",
|
||||||
|
"%zu minutes %zu seconds remaining": "",
|
||||||
|
"%zu seconds remaining": "",
|
||||||
|
|
||||||
|
"Loading...": "Laddar...",
|
||||||
|
"Loading": "Laddar",
|
||||||
|
"Empty!": "Tomt!",
|
||||||
|
"Not Ready...": "Inte redo...",
|
||||||
|
"Error loading page!": "Fel vid laddning av sida!"
|
||||||
|
}
|
||||||
392
assets/romfs/i18n/uk.json
Normal file
@@ -0,0 +1,392 @@
|
|||||||
|
{
|
||||||
|
"[Applet Mode]": "[Режим Аплету]",
|
||||||
|
"No Internet": "Без інтернету",
|
||||||
|
"Switch-Handheld!": "Switch - Портатив!",
|
||||||
|
"Switch-Docked!": "Switch - Докований!",
|
||||||
|
"Audio disabled due to suspended game": "Аудіо вимкнено через призупинену програму",
|
||||||
|
"Are you sure you wish to cancel?": "Ви впевнені, що хочете скасувати?",
|
||||||
|
"An error occurred": "",
|
||||||
|
"If this message appears repeatedly, please open an issue.": "Якщо це повідомлення з'являється повторно, будь ласка, повідомте про проблему.",
|
||||||
|
|
||||||
|
"Menu Options": "Опції меню",
|
||||||
|
"Menu": "Меню",
|
||||||
|
"Theme": "Тема",
|
||||||
|
"Theme Options": "Опції теми",
|
||||||
|
"Select Theme": "Вибрати тему",
|
||||||
|
"Music": "Музика",
|
||||||
|
"12 Hour Time": "12-годинний формат часу",
|
||||||
|
"Download Default Music": "Завантажити музику за замовчуванням",
|
||||||
|
"Failed to download default_music.bfstm, please try again": "",
|
||||||
|
"Overwrite current default music?": "",
|
||||||
|
|
||||||
|
"Network": "Мережа",
|
||||||
|
"Network Options": "Опції мережі",
|
||||||
|
"Ftp": "FTP",
|
||||||
|
"Mtp": "MTP",
|
||||||
|
"Nxlink": "Nxlink",
|
||||||
|
"Nxlink Connected": "Nxlink підключено",
|
||||||
|
"Nxlink Upload": "Nxlink | Завантаження",
|
||||||
|
"Nxlink Finished": "Nxlink | Завершено",
|
||||||
|
|
||||||
|
"Language": "Мова",
|
||||||
|
"Auto": "Автоматично",
|
||||||
|
"English": "English",
|
||||||
|
"Japanese": "日本語",
|
||||||
|
"French": "Français",
|
||||||
|
"German": "Deutsch",
|
||||||
|
"Italian": "Italiano",
|
||||||
|
"Spanish": "Español",
|
||||||
|
"Chinese": "中文",
|
||||||
|
"Korean": "한국어",
|
||||||
|
"Dutch": "Nederlands",
|
||||||
|
"Portuguese": "Português",
|
||||||
|
"Russian": "Русский",
|
||||||
|
"Swedish": "Svenska",
|
||||||
|
"Vietnamese": "Tiếng Việt",
|
||||||
|
"Ukrainian": "Українська",
|
||||||
|
|
||||||
|
"Misc": "Різне",
|
||||||
|
"Misc Options": "Опції різного",
|
||||||
|
"Games": "Ігри",
|
||||||
|
"Game Options": "Опції ігор",
|
||||||
|
"Hide forwarders": "Приховати форвардери",
|
||||||
|
"Launch random game": "Запустити випадкову гру",
|
||||||
|
"List meta records": "Список метаданих записів",
|
||||||
|
"Entries": "Записи",
|
||||||
|
"Failed to list application meta entries": "",
|
||||||
|
"No meta entries found...\n": "",
|
||||||
|
"Updating application record list": "",
|
||||||
|
"Dump": "",
|
||||||
|
"Select content to dump": "",
|
||||||
|
"Dump All": "",
|
||||||
|
"Dump Application": "",
|
||||||
|
"Dump Patch": "",
|
||||||
|
"Dump AddOnContent": "",
|
||||||
|
"Dump DataPatch": "",
|
||||||
|
"Select dump location": "",
|
||||||
|
"microSD card (/dumps/NSP/)": "",
|
||||||
|
"USB transfer (Switch 2 Switch)": "",
|
||||||
|
"/dev/null (Speed Test)": "",
|
||||||
|
"Dumping": "",
|
||||||
|
"Dump successfull!": "",
|
||||||
|
"Dump failed!": "",
|
||||||
|
"Success": "",
|
||||||
|
"Delete successfull!": "",
|
||||||
|
"Delete failed!": "",
|
||||||
|
|
||||||
|
"Themezer": "Themezer",
|
||||||
|
"Themezer Options": "Опції Themezer",
|
||||||
|
"Nsfw": "NSFW",
|
||||||
|
"Page": "Сторінка",
|
||||||
|
"Page %zu / %zu": "Сторінка %zu / %zu",
|
||||||
|
"Enter Page Number": "Введіть номер сторінки",
|
||||||
|
"Bad Page": "Неправильна сторінка",
|
||||||
|
"Download theme?": "Завантажити тему?",
|
||||||
|
|
||||||
|
"GitHub": "GitHub",
|
||||||
|
"Downloading json": "Завантаження JSON",
|
||||||
|
"Select asset to download for ": "Виберіть ресурс для завантаження для ",
|
||||||
|
|
||||||
|
"FTP Install": "Встановлення через FTP",
|
||||||
|
"FTP Install (EXPERIMENTAL)": "Встановлення через FTP (ЕКСПЕРИМЕНТАЛЬНО)",
|
||||||
|
"Connection Type: WiFi | Strength: ": "Тип підключення: WiFi | Сила сигналу: ",
|
||||||
|
"Connection Type: Ethernet": "Тип підключення: Ethernet",
|
||||||
|
"Connection Type: None": "Тип підключення: Немає",
|
||||||
|
"Host:": "Хост:",
|
||||||
|
"Port:": "Порт:",
|
||||||
|
"Username:": "Ім'я користувача:",
|
||||||
|
"Password:": "Пароль:",
|
||||||
|
"SSID:": "SSID:",
|
||||||
|
"Passphrase:": "Кодова фраза:",
|
||||||
|
"Failed to install via FTP, press B to exit...": "Не вдалося встановити через FTP, натисніть B для виходу...",
|
||||||
|
"Ftp install success!": "Встановлення через FTP успішно завершено.",
|
||||||
|
"Ftp install failed!": "Встановлення через FTP не вдалося.",
|
||||||
|
"USB Install": "Встановлення через USB",
|
||||||
|
"USB": "USB",
|
||||||
|
"Connected, waiting for file list...": "",
|
||||||
|
"Connected, starting transfer...": "",
|
||||||
|
"Failed to init usb, press B to exit...": "Не вдалося ініціалізувати USB, натисніть B для виходу...",
|
||||||
|
"Waiting for connection...": "Очікування підключення...",
|
||||||
|
"Transferring data...": "Передача даних...",
|
||||||
|
"USB connected, sending file list": "",
|
||||||
|
"Sent file list, waiting for command...": "",
|
||||||
|
"waiting for usb connection...": "",
|
||||||
|
"Disable MTP for usb install": "Вимкнути MTP для встановлення через USB",
|
||||||
|
"Re-enabled MTP": "MTP знову увімкнено",
|
||||||
|
"Installed via usb": "Встановлено через USB",
|
||||||
|
"Usb install success!": "Встановлення через USB успішно завершено.",
|
||||||
|
"Usb install failed!": "Встановлення через USB не вдалося.",
|
||||||
|
"Press B to exit...": "Натисніть B для виходу...",
|
||||||
|
"GameCard Install": "Встановлення з картриджа",
|
||||||
|
"GameCard": "Картридж",
|
||||||
|
"GC": "",
|
||||||
|
"System memory %.1f GB": "",
|
||||||
|
"microSD card %.1f GB": "",
|
||||||
|
"Nand Install": "",
|
||||||
|
"SD Card Install": "",
|
||||||
|
"Exit": "",
|
||||||
|
"Gc install success!": "Встановлення з картриджа успішно завершено.",
|
||||||
|
"Gc install failed!": "Встановлення з картриджа не вдалося.",
|
||||||
|
|
||||||
|
"IRS (Infrared Joycon Camera)": "ІЧ (Інфрачервона камера Joycon)",
|
||||||
|
"IRS": "",
|
||||||
|
"Irs": "ІЧ-сенсор",
|
||||||
|
"Ambient Noise Level: ": "Рівень навколишнього шуму: ",
|
||||||
|
"Controller": "Контролер",
|
||||||
|
"Pad ": "Геймпад ",
|
||||||
|
"HandHeld": "Портативний режим",
|
||||||
|
" (Available)": " (Доступно)",
|
||||||
|
" (Unsupported)": " (Не підтримується)",
|
||||||
|
" (Unconnected)": " (Не підключено)",
|
||||||
|
"Rotation": "Обертання",
|
||||||
|
"0 (Sideways)": "0° (Збоку)",
|
||||||
|
"90 (Flat)": "90° (Плоско)",
|
||||||
|
"180 (-Sideways)": "180° (-Збоку)",
|
||||||
|
"270 (Upside down)": "270° (Догори дном)",
|
||||||
|
"Colour": "Колір",
|
||||||
|
"Grey": "Сірий",
|
||||||
|
"Ironbow": "Ironbow",
|
||||||
|
"Green": "Зелений",
|
||||||
|
"Red": "Червоний",
|
||||||
|
"Blue": "Синій",
|
||||||
|
"Light Target": "Ціль освітлення",
|
||||||
|
"All leds": "Всі світлодіоди",
|
||||||
|
"Bright group": "Яскрава група",
|
||||||
|
"Dim group": "Тьмяна група",
|
||||||
|
"None": "Немає",
|
||||||
|
"Gain": "Підсилення",
|
||||||
|
"Negative Image": "Негативне зображення",
|
||||||
|
"Normal image": "Нормальне зображення",
|
||||||
|
"Negative image": "",
|
||||||
|
"Format": "Формат",
|
||||||
|
"Trimming Format": "Формат обрізки",
|
||||||
|
"320x240": "320×240",
|
||||||
|
"160x120": "160×120",
|
||||||
|
"80x60": "80×60",
|
||||||
|
"40x30": "40×30",
|
||||||
|
"20x15": "20×15",
|
||||||
|
"External Light Filter": "Фільтр зовнішнього освітлення",
|
||||||
|
"Load Default": "Завантажити типові",
|
||||||
|
|
||||||
|
"Advanced": "Додатково",
|
||||||
|
"Advanced Options": "Додаткові опції",
|
||||||
|
"Logging": "Логування",
|
||||||
|
"Replace hbmenu on exit": "Заміна hbmenu при виході",
|
||||||
|
"Restore hbmenu?": "Відновити hbmenu?",
|
||||||
|
"Restore": "Відновити",
|
||||||
|
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "Не вдалося знайти /switch/hbmenu.nro\nВикористовуйте Магазин програм для перевстановлення hbmenu",
|
||||||
|
"Failed to restore hbmenu, please re-download hbmenu": "Не вдалося відновити hbmenu, будь ласка, завантажте hbmenu знову",
|
||||||
|
"Failed to restore hbmenu, using sphaira instead": "Не вдалося відновити hbmenu, замість цього використовується Sphaira",
|
||||||
|
"Restored hbmenu, closing sphaira": "hbmenu відновлено, закриття Sphaira",
|
||||||
|
"Restored hbmenu": "hbmenu відновлено",
|
||||||
|
"Restart Sphaira?": "Перезапустити Sphaira?",
|
||||||
|
"Press OK to restart Sphaira": "Натисніть OK для перезапуску Sphaira",
|
||||||
|
"Text scroll speed": "Швидк. прокрутки",
|
||||||
|
"Slow": "Повільно",
|
||||||
|
"Normal": "Нормально",
|
||||||
|
"Fast": "Швидко",
|
||||||
|
"Set right-side menu": "Праве меню",
|
||||||
|
"Install options": "Опції встановлення",
|
||||||
|
"Install Options": "Опції встановлення",
|
||||||
|
"Enable sysmmc": "",
|
||||||
|
"Enable emummc": "",
|
||||||
|
"Show install warning": "Попередж. при встанов.",
|
||||||
|
"Install location": "Місце встановлення",
|
||||||
|
"System memory": "Пам'ять консолі",
|
||||||
|
"microSD card": "SD-карта",
|
||||||
|
"Boost CPU clock": "Розігнати CPU",
|
||||||
|
"Allow downgrade": "Дозволити відкат",
|
||||||
|
"Skip if already installed": "Пропуск, якщо встановл.",
|
||||||
|
"Ticket only": "Тільки тікет",
|
||||||
|
"Skip base": "Пропустити базу",
|
||||||
|
"Skip patch": "Пропустити патч",
|
||||||
|
"Skip dlc": "Пропустити DLC",
|
||||||
|
"Skip data patch": "Пропустити патч даних",
|
||||||
|
"Skip ticket": "Пропустити тікет",
|
||||||
|
"Skip NCA hash verify": "",
|
||||||
|
"Skip RSA header verify": "Пропуск перевірку заголовка RSA",
|
||||||
|
"Skip RSA NPDM verify": "Пропуск перевірку NPDM RSA",
|
||||||
|
"Ignore distribution bit": "Ігнорувати біт розподілу",
|
||||||
|
"Convert to standard crypto": "Конвертувати у стандартне шифрування",
|
||||||
|
"Lower master key": "Знизити майстер-ключ",
|
||||||
|
"Lower system version": "Знизити версію системи",
|
||||||
|
|
||||||
|
"Homebrew": "Домашні програми",
|
||||||
|
"Apps": "Програми",
|
||||||
|
"Homebrew Options": "Опції домашніх програм",
|
||||||
|
"Hide Sphaira": "Приховати Sphaira",
|
||||||
|
"Install Forwarder": "Встановити форвардер",
|
||||||
|
"WARNING: Installing forwarders will lead to a ban!": "УВАГА: Встановлення форвардерів може призвести до бану!",
|
||||||
|
"Installing Forwarder": "Встановлення форвардера",
|
||||||
|
"Creating Program": "Створення програми",
|
||||||
|
"Creating Control": "Створення контролера",
|
||||||
|
"Creating Meta": "Створення метаданих",
|
||||||
|
"Writing Nca": "Запис NCA",
|
||||||
|
"Updating ncm databse": "Оновлення бази даних NCM",
|
||||||
|
"Pushing application record": "Запис даних програми",
|
||||||
|
"Failed to install forwarder": "Не вдалося встановити форвардер",
|
||||||
|
"Unstarred ": "Знято зірку з ",
|
||||||
|
"Starred ": "Позначено зіркою ",
|
||||||
|
"Failed to remove old forwarder, please manually remove it!": "",
|
||||||
|
|
||||||
|
"AppStore": "Магазин програм",
|
||||||
|
"Appstore": "",
|
||||||
|
"Store": "Магазин",
|
||||||
|
"Filter: %s | Sort: %s | Order: %s": "Фільтр: %s | Сорт.: %s | Порядок: %s",
|
||||||
|
"AppStore Options": "Опції магазину програм",
|
||||||
|
"Info": "Інфо",
|
||||||
|
"Changelog": "Журнал змін",
|
||||||
|
"Details": "Деталі",
|
||||||
|
"version: %s": "версія: %s",
|
||||||
|
"updated: %s": "оновлено: %s",
|
||||||
|
"category: %s": "категорія: %s",
|
||||||
|
"extracted: %.2f MiB": "розмір: %.2f MiB",
|
||||||
|
"app_dls: %s": "завантажень: %s",
|
||||||
|
"More by Author": "Більше від автора",
|
||||||
|
"Leave Feedback": "Залишити відгук",
|
||||||
|
|
||||||
|
"FileBrowser": "Файловий менеджер",
|
||||||
|
"Files": "Файли",
|
||||||
|
"%zd files": "%zd файл(и)",
|
||||||
|
"%zd dirs": "%zd тек(и)",
|
||||||
|
"File Options": "Опції файлів",
|
||||||
|
"Show Hidden": "Показати приховані",
|
||||||
|
"Folders First": "Теки спочатку",
|
||||||
|
"Hidden Last": "Приховані в кінці",
|
||||||
|
"Cut": "Вирізати",
|
||||||
|
"Copy": "Копіювати",
|
||||||
|
"Copying ": "Копіювання ",
|
||||||
|
"Paste": "Вставити",
|
||||||
|
"Paste ": "Вставити: ",
|
||||||
|
" file(s)?": " файл(и)?",
|
||||||
|
"Pasting ": "Вставлення ",
|
||||||
|
"Pasting": "Вставлення",
|
||||||
|
"Rename": "Перейменувати",
|
||||||
|
"Set New File Name": "Введіть нове ім'я файлу",
|
||||||
|
"Extract zip": "",
|
||||||
|
"Extract Options": "",
|
||||||
|
"Extract here": "",
|
||||||
|
"Extract to root": "",
|
||||||
|
"Are you sure you want to extract to root?": "",
|
||||||
|
"Extract to...": "",
|
||||||
|
"Enter the path to the folder to extract into": "",
|
||||||
|
"Extracting ": "",
|
||||||
|
"Extract success!": "",
|
||||||
|
"Extract failed!": "",
|
||||||
|
"Compress to zip": "Стиснути в zip",
|
||||||
|
"Compress Options": "",
|
||||||
|
"Compress": "",
|
||||||
|
"Compress to...": "",
|
||||||
|
"Compressing ": "",
|
||||||
|
"Compress success!": "",
|
||||||
|
"Compress failed!": "",
|
||||||
|
"Create File": "Створити файл",
|
||||||
|
"Set File Name": "Введіть ім'я файлу",
|
||||||
|
"Create Folder": "Створити теку",
|
||||||
|
"Set Folder Name": "Введіть ім'я теки",
|
||||||
|
"Creating ": "Створення ",
|
||||||
|
"Upload": "",
|
||||||
|
"Select upload location": "",
|
||||||
|
"No upload locations set!": "",
|
||||||
|
"Uploading": "",
|
||||||
|
"Upload successfull!": "",
|
||||||
|
"Upload failed!": "",
|
||||||
|
"View as text (unfinished)": "Переглянути як текст (незавершено)",
|
||||||
|
"Ignore read only": "Ігнорувати лише читання",
|
||||||
|
"Mount": "Монтувати",
|
||||||
|
"Sd": "SD-карта",
|
||||||
|
"Image System memory": "Фото | Пам'ять консолі",
|
||||||
|
"Image microSD card": "Фото | SD-карта",
|
||||||
|
"Empty...": "Пусто...",
|
||||||
|
"Open with DayBreak?": "Відкрити за допомогою DayBreak?",
|
||||||
|
"Launch ": "Запустити ",
|
||||||
|
"Launch option for: ": "Опція запуску для: ",
|
||||||
|
"Select launcher for: ": "Виберіть лаунчер для: ",
|
||||||
|
|
||||||
|
"Sort By": "Сортувати за",
|
||||||
|
"Sort Options": "Опції сортування",
|
||||||
|
"Filter": "Фільтр",
|
||||||
|
"All": "Всі",
|
||||||
|
"Emulators": "Емулятори",
|
||||||
|
"Tools": "Інструменти",
|
||||||
|
"Themes": "Теми",
|
||||||
|
"Legacy": "Доступні оновлення",
|
||||||
|
"Sort": "Сортування",
|
||||||
|
"Size": "Розмір",
|
||||||
|
"Size (Star)": "Розмір (Зірка)",
|
||||||
|
"Alphabetical": "За алфавітом",
|
||||||
|
"Alphabetical (Star)": "За алфавітом (Зірка)",
|
||||||
|
"Updated": "Оновлено",
|
||||||
|
"Updated (Star)": "Оновлено (Зірка)",
|
||||||
|
"Downloads": "Завантаження",
|
||||||
|
"Likes": "Вподобання",
|
||||||
|
"ID": "ID",
|
||||||
|
"Order": "Порядок",
|
||||||
|
"Descending": "За спаданням",
|
||||||
|
"Descending (down)": "За спаданням (вниз)",
|
||||||
|
"Desc": "Спад.",
|
||||||
|
"Ascending": "За зростанням",
|
||||||
|
"Ascending (Up)": "За зростанням (вгору)",
|
||||||
|
"Asc": "Зрост.",
|
||||||
|
"Layout": "",
|
||||||
|
"List": "",
|
||||||
|
"Icon": "",
|
||||||
|
"Grid": "",
|
||||||
|
"Search": "Пошук",
|
||||||
|
|
||||||
|
"Options": "Налаштування",
|
||||||
|
"OK": "ОК",
|
||||||
|
"Back": "Назад",
|
||||||
|
"Select": "Вибрати",
|
||||||
|
"Open": "Відкрити",
|
||||||
|
"Launch": "Запустити",
|
||||||
|
"Restart": "Перезапустити",
|
||||||
|
"Next": "Наступний",
|
||||||
|
"Prev": "Попередній",
|
||||||
|
"Unstar": "Прибрати з обраного",
|
||||||
|
"Star": "Позначити зіркою",
|
||||||
|
"Yes": "Так",
|
||||||
|
"No": "Ні",
|
||||||
|
"On": "Увімк.",
|
||||||
|
"Off": "Вимк.",
|
||||||
|
|
||||||
|
"Install": "Встановити",
|
||||||
|
"Install Selected files?": "Встановити вибрані файли?",
|
||||||
|
"Installing ": "Встановлення ",
|
||||||
|
"Installed ": "Встановлено ",
|
||||||
|
"Installed!": "Встановлено!",
|
||||||
|
"Trying to load ": "Спроба завантажити ",
|
||||||
|
"Checking MD5": "Перевірка MD5",
|
||||||
|
|
||||||
|
"Delete": "Видалити",
|
||||||
|
"Delete Selected files?": "Видалити вибрані файли?",
|
||||||
|
"Are you sure you want to delete ": "Ви впевнені, що хочете видалити ",
|
||||||
|
"Scanning ": "Сканування ",
|
||||||
|
"Deleting ": "Видалення ",
|
||||||
|
"Deleting": "Видалення",
|
||||||
|
"Remove": "Видалити",
|
||||||
|
"Completely remove ": "Повністю видалити ",
|
||||||
|
"Removing ": "Видалення ",
|
||||||
|
"Removed ": "Видалено ",
|
||||||
|
"Uninstalling ": "Видалення ",
|
||||||
|
|
||||||
|
"Download": "Завантажити",
|
||||||
|
"Downloading ": "Завантаження ",
|
||||||
|
"Downloaded ": "Завантажено ",
|
||||||
|
|
||||||
|
"Update": "Оновити",
|
||||||
|
"Update avaliable: ": "Доступне оновлення: ",
|
||||||
|
"Download update: ": "Завантажити оновлення: ",
|
||||||
|
"Updated to ": "Оновлено до ",
|
||||||
|
"Failed to download update": "Не вдалося завантажити оновлення",
|
||||||
|
|
||||||
|
"%zu hours %zu minutes remaining": "",
|
||||||
|
"%zu minutes %zu seconds remaining": "",
|
||||||
|
"%zu seconds remaining": "",
|
||||||
|
|
||||||
|
"Loading...": "Завантаження...",
|
||||||
|
"Loading": "Завантаження",
|
||||||
|
"Empty!": "Пусто!",
|
||||||
|
"Not Ready...": "Не готово...",
|
||||||
|
"Error loading page!": "Помилка завантаження сторінки!"
|
||||||
|
}
|
||||||
392
assets/romfs/i18n/vi.json
Normal file
@@ -0,0 +1,392 @@
|
|||||||
|
{
|
||||||
|
"[Applet Mode]": "[Applet Mode]",
|
||||||
|
"No Internet": "Không có Internet",
|
||||||
|
"Switch-Handheld!": "Switch-Handheld!",
|
||||||
|
"Switch-Docked!": "Switch-Docked!",
|
||||||
|
"Audio disabled due to suspended game": "",
|
||||||
|
"Are you sure you wish to cancel?": "Bạn có chắn muốn huỷ không?",
|
||||||
|
"An error occurred": "",
|
||||||
|
"If this message appears repeatedly, please open an issue.": "Nếu thấy tin nhắn này, hãy báo lỗi.",
|
||||||
|
|
||||||
|
"Menu Options": "Menu tuỳ chọn",
|
||||||
|
"Menu": "Menu",
|
||||||
|
"Theme": "Theme",
|
||||||
|
"Theme Options": "Theme tuỳ chọn",
|
||||||
|
"Select Theme": "Chọn Theme",
|
||||||
|
"Music": "Âm nhạc",
|
||||||
|
"12 Hour Time": "",
|
||||||
|
"Download Default Music": "",
|
||||||
|
"Failed to download default_music.bfstm, please try again": "",
|
||||||
|
"Overwrite current default music?": "",
|
||||||
|
|
||||||
|
"Network": "Mạng",
|
||||||
|
"Network Options": "Tuỳ chọn mạng",
|
||||||
|
"Ftp": "FTP",
|
||||||
|
"Mtp": "MTP",
|
||||||
|
"Nxlink": "Nxlink",
|
||||||
|
"Nxlink Connected": "Nxlink Kết Nối",
|
||||||
|
"Nxlink Upload": "Nxlink Đăng Tải",
|
||||||
|
"Nxlink Finished": "Nxlink Hoàn Thành",
|
||||||
|
|
||||||
|
"Language": "Ngôn ngữ",
|
||||||
|
"Auto": "Tự động",
|
||||||
|
"English": "English",
|
||||||
|
"Japanese": "日本語",
|
||||||
|
"French": "Français",
|
||||||
|
"German": "Deutsch",
|
||||||
|
"Italian": "Italiano",
|
||||||
|
"Spanish": "Español",
|
||||||
|
"Chinese": "中文",
|
||||||
|
"Korean": "한국어",
|
||||||
|
"Dutch": "Dutch",
|
||||||
|
"Portuguese": "Português",
|
||||||
|
"Russian": "Русский",
|
||||||
|
"Swedish": "Svenska",
|
||||||
|
"Vietnamese": "Việt Nam",
|
||||||
|
"Ukrainian": "Українська",
|
||||||
|
|
||||||
|
"Misc": "Tiện ích",
|
||||||
|
"Misc Options": "Tiện ích mở rộng",
|
||||||
|
"Games": "Games",
|
||||||
|
"Game Options": "",
|
||||||
|
"Hide forwarders": "",
|
||||||
|
"Launch random game": "",
|
||||||
|
"List meta records": "",
|
||||||
|
"Entries": "",
|
||||||
|
"Failed to list application meta entries": "",
|
||||||
|
"No meta entries found...\n": "",
|
||||||
|
"Updating application record list": "",
|
||||||
|
"Dump": "",
|
||||||
|
"Select content to dump": "",
|
||||||
|
"Dump All": "",
|
||||||
|
"Dump Application": "",
|
||||||
|
"Dump Patch": "",
|
||||||
|
"Dump AddOnContent": "",
|
||||||
|
"Dump DataPatch": "",
|
||||||
|
"Select dump location": "",
|
||||||
|
"microSD card (/dumps/NSP/)": "",
|
||||||
|
"USB transfer (Switch 2 Switch)": "",
|
||||||
|
"/dev/null (Speed Test)": "",
|
||||||
|
"Dumping": "",
|
||||||
|
"Dump successfull!": "",
|
||||||
|
"Dump failed!": "",
|
||||||
|
"Success": "",
|
||||||
|
"Delete successfull!": "",
|
||||||
|
"Delete failed!": "",
|
||||||
|
|
||||||
|
"Themezer": "Themezer",
|
||||||
|
"Themezer Options": "Tuỳ chọn Themezer",
|
||||||
|
"Nsfw": "18+",
|
||||||
|
"Page": "Trang",
|
||||||
|
"Page %zu / %zu": "Trang %zu / %zu",
|
||||||
|
"Enter Page Number": "Nhập số trang",
|
||||||
|
"Bad Page": "Trang không tồn tại",
|
||||||
|
"Download theme?": "Tải theme?",
|
||||||
|
|
||||||
|
"GitHub": "GitHub",
|
||||||
|
"Downloading json": "Đang tải json",
|
||||||
|
"Select asset to download for ": "Chọn nội dung để tải xuống cho ",
|
||||||
|
|
||||||
|
"FTP Install": "",
|
||||||
|
"FTP Install (EXPERIMENTAL)": "",
|
||||||
|
"Connection Type: WiFi | Strength: ": "",
|
||||||
|
"Connection Type: Ethernet": "",
|
||||||
|
"Connection Type: None": "",
|
||||||
|
"Host:": "",
|
||||||
|
"Port:": "",
|
||||||
|
"Username:": "",
|
||||||
|
"Password:": "",
|
||||||
|
"SSID:": "",
|
||||||
|
"Passphrase:": "",
|
||||||
|
"Failed to install via FTP, press B to exit...": "",
|
||||||
|
"Ftp install success!": "",
|
||||||
|
"Ftp install failed!": "",
|
||||||
|
"USB Install": "",
|
||||||
|
"USB": "",
|
||||||
|
"Connected, waiting for file list...": "",
|
||||||
|
"Connected, starting transfer...": "",
|
||||||
|
"Failed to init usb, press B to exit...": "",
|
||||||
|
"Waiting for connection...": "",
|
||||||
|
"Transferring data...": "",
|
||||||
|
"USB connected, sending file list": "",
|
||||||
|
"Sent file list, waiting for command...": "",
|
||||||
|
"waiting for usb connection...": "",
|
||||||
|
"Disable MTP for usb install": "",
|
||||||
|
"Re-enabled MTP": "",
|
||||||
|
"Installed via usb": "",
|
||||||
|
"Usb install success!": "",
|
||||||
|
"Usb install failed!": "",
|
||||||
|
"Press B to exit...": "",
|
||||||
|
"GameCard Install": "",
|
||||||
|
"GameCard": "",
|
||||||
|
"GC": "",
|
||||||
|
"System memory %.1f GB": "",
|
||||||
|
"microSD card %.1f GB": "",
|
||||||
|
"Nand Install": "",
|
||||||
|
"SD Card Install": "",
|
||||||
|
"Exit": "",
|
||||||
|
"Gc install success!": "",
|
||||||
|
"Gc install failed!": "",
|
||||||
|
|
||||||
|
"IRS (Infrared Joycon Camera)": "",
|
||||||
|
"IRS": "",
|
||||||
|
"Irs": "Irs",
|
||||||
|
"Ambient Noise Level: ": "Mức ồn xung quanh: ",
|
||||||
|
"Controller": "Điều khiển",
|
||||||
|
"Pad ": "Pad ",
|
||||||
|
"HandHeld": "Cầm tay",
|
||||||
|
" (Available)": " (Có sẵn)",
|
||||||
|
" (Unsupported)": " (Không hỗ trợ)",
|
||||||
|
" (Unconnected)": " (Không kết nối)",
|
||||||
|
"Rotation": "Xoay",
|
||||||
|
"0 (Sideways)": "0 (Đi ngang)",
|
||||||
|
"90 (Flat)": "90 (Phẳng)",
|
||||||
|
"180 (-Sideways)": "180 (-Đi ngang)",
|
||||||
|
"270 (Upside down)": "270 (Lộn ngược)",
|
||||||
|
"Colour": "Màu sắc",
|
||||||
|
"Grey": "Xám",
|
||||||
|
"Ironbow": "Ironbow",
|
||||||
|
"Green": "Xanh",
|
||||||
|
"Red": "Đỏ",
|
||||||
|
"Blue": "Xanh dương",
|
||||||
|
"Light Target": "Điểm sáng",
|
||||||
|
"All leds": "Tất cả đèn led",
|
||||||
|
"Bright group": "Nhóm sáng",
|
||||||
|
"Dim group": "Nhóm tối",
|
||||||
|
"None": "Không có",
|
||||||
|
"Gain": "Tăng",
|
||||||
|
"Negative Image": "Ảnh âm bản",
|
||||||
|
"Normal image": "Ảnh bình thường",
|
||||||
|
"Negative image": "Ảnh âm bản",
|
||||||
|
"Format": "Định dạng",
|
||||||
|
"Trimming Format": "Định dạng cắt tỉa",
|
||||||
|
"320x240": "320×240",
|
||||||
|
"160x120": "160×120",
|
||||||
|
"80x60": "80×60",
|
||||||
|
"40x30": "40×30",
|
||||||
|
"20x15": "20×15",
|
||||||
|
"External Light Filter": "Bộ lộc ánh sáng bên ngoài",
|
||||||
|
"Load Default": "Tải mặc định",
|
||||||
|
|
||||||
|
"Advanced": "Mở rộng",
|
||||||
|
"Advanced Options": "Tuỳ chọn mở rộng",
|
||||||
|
"Logging": "Logging",
|
||||||
|
"Replace hbmenu on exit": "Thay thế hbmenu khi thoát",
|
||||||
|
"Restore hbmenu?": "Khôi phục hbmenu?",
|
||||||
|
"Restore": "Khôi phục",
|
||||||
|
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "Không tìm thấy /switch/hbmenu.nro\nSử dụng AppStore để cài lại hbmenu",
|
||||||
|
"Failed to restore hbmenu, please re-download hbmenu": "Không thể khôi phục hbmenu, Vui lòng tải lại hbmenu",
|
||||||
|
"Failed to restore hbmenu, using sphaira instead": "Không thể khôi phục hbmenu, thay vào đó sử dụng Sphira",
|
||||||
|
"Restored hbmenu, closing sphaira": "Khôi mục hbmenu thành công, đóng sphaira",
|
||||||
|
"Restored hbmenu": "Đã khôi phục hbmenu",
|
||||||
|
"Restart Sphaira?": "Khởi động lại Sphaira?",
|
||||||
|
"Press OK to restart Sphaira": "",
|
||||||
|
"Text scroll speed": "",
|
||||||
|
"Slow": "",
|
||||||
|
"Normal": "",
|
||||||
|
"Fast": "",
|
||||||
|
"Set right-side menu": "",
|
||||||
|
"Install options": "",
|
||||||
|
"Install Options": "",
|
||||||
|
"Enable sysmmc": "",
|
||||||
|
"Enable emummc": "",
|
||||||
|
"Show install warning": "Hiển thị cảnh báo cài đặt",
|
||||||
|
"Install location": "Vị trí cài đặt",
|
||||||
|
"System memory": "Bộ nhớ máy",
|
||||||
|
"microSD card": "Thẻ nhớ",
|
||||||
|
"Boost CPU clock": "",
|
||||||
|
"Allow downgrade": "",
|
||||||
|
"Skip if already installed": "",
|
||||||
|
"Ticket only": "",
|
||||||
|
"Skip base": "",
|
||||||
|
"Skip patch": "",
|
||||||
|
"Skip dlc": "",
|
||||||
|
"Skip data patch": "",
|
||||||
|
"Skip ticket": "",
|
||||||
|
"Skip NCA hash verify": "",
|
||||||
|
"Skip RSA header verify": "",
|
||||||
|
"Skip RSA NPDM verify": "",
|
||||||
|
"Ignore distribution bit": "",
|
||||||
|
"Convert to standard crypto": "",
|
||||||
|
"Lower master key": "",
|
||||||
|
"Lower system version": "",
|
||||||
|
|
||||||
|
"Homebrew": "Homebrew",
|
||||||
|
"Apps": "Ứng dụng",
|
||||||
|
"Homebrew Options": "Tuỳ chọn Homebrew",
|
||||||
|
"Hide Sphaira": "Ẩn Sphaira",
|
||||||
|
"Install Forwarder": "Cài ra ngoài màn hình",
|
||||||
|
"WARNING: Installing forwarders will lead to a ban!": "CẢNH BÁO: Bạn có chắn muốn cài ra ngoài màn hình!",
|
||||||
|
"Installing Forwarder": "Đang cài đặt ra ngoài màn hình",
|
||||||
|
"Creating Program": "Tạo chương trình",
|
||||||
|
"Creating Control": "Tạo điều khiển",
|
||||||
|
"Creating Meta": "Tạo Meta",
|
||||||
|
"Writing Nca": "Ghi Nca",
|
||||||
|
"Updating ncm databse": "Cập nhật ncm databse",
|
||||||
|
"Pushing application record": "Đẩy ứng dụng",
|
||||||
|
"Failed to install forwarder": "Cài đặt ra ngoài màn hình thất bại",
|
||||||
|
"Unstarred ": "Bỏ yêu thích ",
|
||||||
|
"Starred ": "Đã yêu thích ",
|
||||||
|
"Failed to remove old forwarder, please manually remove it!": "",
|
||||||
|
|
||||||
|
"AppStore": "AppStore",
|
||||||
|
"Appstore": "",
|
||||||
|
"Store": "Cửa hàng",
|
||||||
|
"Filter: %s | Sort: %s | Order: %s": "Lọc: %s | Sắp xếp: %s | Thứ tự: %s",
|
||||||
|
"AppStore Options": "Tuỳ chọn AppStore",
|
||||||
|
"Info": "Thông tin",
|
||||||
|
"Changelog": "Thay đổi",
|
||||||
|
"Details": "Chi tiết",
|
||||||
|
"version: %s": "version: %s",
|
||||||
|
"updated: %s": "updated: %s",
|
||||||
|
"category: %s": "category: %s",
|
||||||
|
"extracted: %.2f MiB": "extracted: %.2f MiB",
|
||||||
|
"app_dls: %s": "app_dls: %s",
|
||||||
|
"More by Author": "Xem thêm tác giả",
|
||||||
|
"Leave Feedback": "Để lại phản hồi",
|
||||||
|
|
||||||
|
"FileBrowser": "Duyệt tập tin",
|
||||||
|
"Files": "Tập tin",
|
||||||
|
"%zd files": "%zd tập tin",
|
||||||
|
"%zd dirs": "%zd thư mục",
|
||||||
|
"File Options": "Tuỳ chọn tập tin",
|
||||||
|
"Show Hidden": "Hiển thị tập tin ẩn",
|
||||||
|
"Folders First": "Thư mục đầu tiên",
|
||||||
|
"Hidden Last": "Ẩn cuối",
|
||||||
|
"Cut": "Cắt",
|
||||||
|
"Copy": "Sao chép",
|
||||||
|
"Copying ": "Đang sao chép ",
|
||||||
|
"Paste": "Dán",
|
||||||
|
"Paste ": "Paste ",
|
||||||
|
" file(s)?": " tập tin(nhiều)?",
|
||||||
|
"Pasting ": "Đang dán ",
|
||||||
|
"Pasting": "Đang dán",
|
||||||
|
"Rename": "Đổi tên",
|
||||||
|
"Set New File Name": "Đặt tên mới cho tập tin",
|
||||||
|
"Extract zip": "",
|
||||||
|
"Extract Options": "",
|
||||||
|
"Extract here": "",
|
||||||
|
"Extract to root": "",
|
||||||
|
"Are you sure you want to extract to root?": "",
|
||||||
|
"Extract to...": "",
|
||||||
|
"Enter the path to the folder to extract into": "",
|
||||||
|
"Extracting ": "",
|
||||||
|
"Extract success!": "",
|
||||||
|
"Extract failed!": "",
|
||||||
|
"Compress to zip": "",
|
||||||
|
"Compress Options": "",
|
||||||
|
"Compress": "",
|
||||||
|
"Compress to...": "",
|
||||||
|
"Compressing ": "",
|
||||||
|
"Compress success!": "",
|
||||||
|
"Compress failed!": "",
|
||||||
|
"Create File": "Tạo tập tin",
|
||||||
|
"Set File Name": "Đặt tên cho tập tin",
|
||||||
|
"Create Folder": "Tạo thư mục",
|
||||||
|
"Set Folder Name": "Đặt tên thư mục",
|
||||||
|
"Creating ": "Đang tạo ",
|
||||||
|
"Upload": "",
|
||||||
|
"Select upload location": "",
|
||||||
|
"No upload locations set!": "",
|
||||||
|
"Uploading": "",
|
||||||
|
"Upload successfull!": "",
|
||||||
|
"Upload failed!": "",
|
||||||
|
"View as text (unfinished)": "Xem dạng văn bản (chưa xong)",
|
||||||
|
"Ignore read only": "Bỏ qua chỉ đọc",
|
||||||
|
"Mount": "Gắn",
|
||||||
|
"Sd": "Sd",
|
||||||
|
"Image System memory": "Bộ nhớ hệ thống hình ảnh",
|
||||||
|
"Image microSD card": "Thẻ nhớ hệ thống hình ảnh",
|
||||||
|
"Empty...": "Rỗng...",
|
||||||
|
"Open with DayBreak?": "Mở với DayBreak?",
|
||||||
|
"Launch ": "Chạy ",
|
||||||
|
"Launch option for: ": "Chạy với tuỳ chọn cho: ",
|
||||||
|
"Select launcher for: ": "Chọn trình chạy cho: ",
|
||||||
|
|
||||||
|
"Sort By": "Sắp xếp bởi",
|
||||||
|
"Sort Options": "Tuỳ chọn sắp xếp",
|
||||||
|
"Filter": "Lọc",
|
||||||
|
"All": "Tất cả",
|
||||||
|
"Emulators": "Emulators",
|
||||||
|
"Tools": "Tools",
|
||||||
|
"Themes": "Themes",
|
||||||
|
"Legacy": "Legacy",
|
||||||
|
"Sort": "Sắp xếp",
|
||||||
|
"Size": "Kích thước",
|
||||||
|
"Size (Star)": "Kích thước (Yêu thích)",
|
||||||
|
"Alphabetical": "A-Z",
|
||||||
|
"Alphabetical (Star)": "A-Z (Yêu thích)",
|
||||||
|
"Updated": "Updated",
|
||||||
|
"Updated (Star)": "Đã cập nhật (Yêu thích)",
|
||||||
|
"Downloads": "Danh sách tải về",
|
||||||
|
"Likes": "Thích",
|
||||||
|
"ID": "ID",
|
||||||
|
"Order": "Thứ tự",
|
||||||
|
"Descending": "Giảm dần",
|
||||||
|
"Descending (down)": "Giảm dần (xuống)",
|
||||||
|
"Desc": "Giảm",
|
||||||
|
"Ascending": "Tăng dần",
|
||||||
|
"Ascending (Up)": "Tăng dần (lên)",
|
||||||
|
"Asc": "Tăng",
|
||||||
|
"Layout": "",
|
||||||
|
"List": "",
|
||||||
|
"Icon": "",
|
||||||
|
"Grid": "",
|
||||||
|
"Search": "Tìm kiếm",
|
||||||
|
|
||||||
|
"Options": "Tuỳ chọn",
|
||||||
|
"OK": "OK",
|
||||||
|
"Back": "Trở về",
|
||||||
|
"Select": "Chọn",
|
||||||
|
"Open": "Mở",
|
||||||
|
"Launch": "Chạy",
|
||||||
|
"Restart": "Khởi động lại",
|
||||||
|
"Next": "",
|
||||||
|
"Prev": "",
|
||||||
|
"Unstar": "Xoá yêu thích",
|
||||||
|
"Star": "Yêu thích",
|
||||||
|
"Yes": "Có",
|
||||||
|
"No": "Không",
|
||||||
|
"On": "",
|
||||||
|
"Off": "",
|
||||||
|
|
||||||
|
"Install": "Cài đặt",
|
||||||
|
"Install Selected files?": "",
|
||||||
|
"Installing ": "Đang cài đặt ",
|
||||||
|
"Installed ": "",
|
||||||
|
"Installed!": "Đã cài xong!",
|
||||||
|
"Trying to load ": "Đang cố gắn mở ",
|
||||||
|
"Checking MD5": "Kiểm tra MD5",
|
||||||
|
|
||||||
|
"Delete": "Xoá",
|
||||||
|
"Delete Selected files?": "Xoá những tập tin được chọn?",
|
||||||
|
"Are you sure you want to delete ": "Bạn có muốn xoá ",
|
||||||
|
"Scanning ": "Đang quét ",
|
||||||
|
"Deleting ": "Đang xoá ",
|
||||||
|
"Deleting": "Đang xoá",
|
||||||
|
"Remove": "Gỡ",
|
||||||
|
"Completely remove ": "Đã gỡ thành công ",
|
||||||
|
"Removing ": "Đang gỡ ",
|
||||||
|
"Removed ": "Đã gỡ ",
|
||||||
|
"Uninstalling ": "Đang gỡ cài đặt ",
|
||||||
|
|
||||||
|
"Download": "Tải về",
|
||||||
|
"Downloading ": "Đang tải xuống ",
|
||||||
|
"Downloaded ": "Đã tải xong ",
|
||||||
|
|
||||||
|
"Update": "Cập nhật",
|
||||||
|
"Update avaliable: ": "Cập nhậc có sẵn: ",
|
||||||
|
"Download update: ": "Tải cập nhật: ",
|
||||||
|
"Updated to ": "Đã cập nhật ",
|
||||||
|
"Failed to download update": "Cập nhật thất bại",
|
||||||
|
|
||||||
|
"%zu hours %zu minutes remaining": "",
|
||||||
|
"%zu minutes %zu seconds remaining": "",
|
||||||
|
"%zu seconds remaining": "",
|
||||||
|
|
||||||
|
"Loading...": "Đang tải...",
|
||||||
|
"Loading": "Đang tải",
|
||||||
|
"Empty!": "Trống!",
|
||||||
|
"Not Ready...": "Chưa sẵn sàng...",
|
||||||
|
"Error loading page!": "Lỗi tải trang!"
|
||||||
|
}
|
||||||
@@ -1,114 +1,392 @@
|
|||||||
{
|
{
|
||||||
"Launch": "发射",
|
"[Applet Mode]": "[小程序模式]",
|
||||||
"Options": "选项",
|
"No Internet": "网络未连接",
|
||||||
"Homebrew Options": "自制选项",
|
"Switch-Handheld!": "切换至掌机模式!",
|
||||||
"Sort By": "排序方式",
|
"Switch-Docked!": "切换至底座模式!",
|
||||||
"Sort Options": "排序选项",
|
"Audio disabled due to suspended game": "由于游戏暂停,音频已禁用",
|
||||||
"Updated": "已更新",
|
"Are you sure you wish to cancel?": "您确定要取消吗?",
|
||||||
"Size": "尺寸",
|
"An error occurred": "",
|
||||||
"Alphabetical": "按字母顺序",
|
"If this message appears repeatedly, please open an issue.": "若此消息反复出现,请提交问题报告。",
|
||||||
"Decending": "降序",
|
|
||||||
"Ascending": "升序",
|
"Menu Options": "菜单选项",
|
||||||
"Sort": "种类",
|
|
||||||
"Order": "命令",
|
|
||||||
"Info": "信息",
|
|
||||||
"Delete": "删除",
|
|
||||||
"Hide Sphaira": "隐藏斯菲拉",
|
|
||||||
"Are you sure you want to delete ": "您确定要删除吗 ",
|
|
||||||
"Install Forwarder": "安装转发器",
|
|
||||||
"WARNING: Installing forwarders will lead to a ban!": "警告:安装转发器将导致禁止!",
|
|
||||||
"Back": "后退",
|
|
||||||
"Install": "安装",
|
|
||||||
"Fs": "FS",
|
|
||||||
"App": "应用程序",
|
|
||||||
"Menu": "菜单",
|
"Menu": "菜单",
|
||||||
"Homebrew": "自制",
|
"Theme": "主题",
|
||||||
"FileBrowser": "文件浏览器",
|
|
||||||
"Open": "打开",
|
|
||||||
"Theme Options": "主题选项",
|
"Theme Options": "主题选项",
|
||||||
"Select Theme": "选择主题",
|
"Select Theme": "选择主题",
|
||||||
"Shuffle": "随机播放",
|
|
||||||
"Music": "音乐",
|
"Music": "音乐",
|
||||||
"Show Hidden": "显示隐藏",
|
"12 Hour Time": "12小时制时间",
|
||||||
"Folders First": "文件夹优先",
|
"Download Default Music": "下载默认音乐",
|
||||||
"Hidden Last": "隐藏最后",
|
"Failed to download default_music.bfstm, please try again": "",
|
||||||
"Yes": "是的",
|
"Overwrite current default music?": "",
|
||||||
"No": "不",
|
|
||||||
|
"Network": "网络",
|
||||||
"Network Options": "网络选项",
|
"Network Options": "网络选项",
|
||||||
"Nxlink": "恩克斯联",
|
"Ftp": "FTP",
|
||||||
"Check for update": "检查更新",
|
"Mtp": "MTP",
|
||||||
"File Options": "文件选项",
|
"Nxlink": "Nxlink插件提交",
|
||||||
"Cut": "切",
|
"Nxlink Connected": "Nxlink 已连接",
|
||||||
"Copy": "复制",
|
"Nxlink Upload": "Nxlink 上传中",
|
||||||
"Rename": "重命名",
|
"Nxlink Finished": "Nxlink 已结束",
|
||||||
"Advanced Options": "创建文件",
|
|
||||||
"Create File": "创建文件",
|
"Language": "语言",
|
||||||
"Create Folder": "创建文件夹",
|
"Auto": "自动",
|
||||||
"View as text": "以文本形式查看",
|
"English": "English",
|
||||||
"View as text (unfinished)": "以文本形式查看(未完成)",
|
"Japanese": "日本語",
|
||||||
"Set Archive Bit": "设置存档位",
|
"French": "Français",
|
||||||
"AppStore Options": "应用商店选项",
|
"German": "Deutsch",
|
||||||
"All": "全部",
|
"Italian": "Italiano",
|
||||||
|
"Spanish": "Español",
|
||||||
|
"Chinese": "中文",
|
||||||
|
"Korean": "한국어",
|
||||||
|
"Dutch": "Dutch",
|
||||||
|
"Portuguese": "Português",
|
||||||
|
"Russian": "Русский",
|
||||||
|
"Swedish": "Svenska",
|
||||||
|
"Vietnamese": "Vietnamese",
|
||||||
|
"Ukrainian": "Українська",
|
||||||
|
|
||||||
|
"Misc": "拓展",
|
||||||
|
"Misc Options": "拓展设置",
|
||||||
"Games": "游戏",
|
"Games": "游戏",
|
||||||
|
"Game Options": "游戏选项",
|
||||||
|
"Hide forwarders": "隐藏前端启动",
|
||||||
|
"Launch random game": "开启随机游戏",
|
||||||
|
"List meta records": "列出元数据记录",
|
||||||
|
"Entries": "条目",
|
||||||
|
"Failed to list application meta entries": "",
|
||||||
|
"No meta entries found...\n": "",
|
||||||
|
"Updating application record list": "",
|
||||||
|
"Dump": "",
|
||||||
|
"Select content to dump": "",
|
||||||
|
"Dump All": "",
|
||||||
|
"Dump Application": "",
|
||||||
|
"Dump Patch": "",
|
||||||
|
"Dump AddOnContent": "",
|
||||||
|
"Dump DataPatch": "",
|
||||||
|
"Select dump location": "",
|
||||||
|
"microSD card (/dumps/NSP/)": "",
|
||||||
|
"USB transfer (Switch 2 Switch)": "",
|
||||||
|
"/dev/null (Speed Test)": "",
|
||||||
|
"Dumping": "",
|
||||||
|
"Dump successfull!": "",
|
||||||
|
"Dump failed!": "",
|
||||||
|
"Success": "",
|
||||||
|
"Delete successfull!": "",
|
||||||
|
"Delete failed!": "",
|
||||||
|
|
||||||
|
"Themezer": "在线主题",
|
||||||
|
"Themezer Options": "在线主题选项",
|
||||||
|
"Nsfw": "公共场合不宜的主题",
|
||||||
|
"Page": "页面",
|
||||||
|
"Page %zu / %zu": "页面 %zu / %zu",
|
||||||
|
"Enter Page Number": "输入跳转的页码",
|
||||||
|
"Bad Page": "错误的页面",
|
||||||
|
"Download theme?": "下载该主题?",
|
||||||
|
|
||||||
|
"GitHub": "GitHub",
|
||||||
|
"Downloading json": "正在下载 json",
|
||||||
|
"Select asset to download for ": "选择要下载的资源用于 ",
|
||||||
|
|
||||||
|
"FTP Install": "通过 FTP 安装",
|
||||||
|
"FTP Install (EXPERIMENTAL)": "通过 FTP 安装(实验性)",
|
||||||
|
"Connection Type: WiFi | Strength: ": "",
|
||||||
|
"Connection Type: Ethernet": "连接类型:以太网",
|
||||||
|
"Connection Type: None": "连接类型:无",
|
||||||
|
"Host:": "主机:",
|
||||||
|
"Port:": "端口:",
|
||||||
|
"Username:": "用户名:",
|
||||||
|
"Password:": "密码:",
|
||||||
|
"SSID:": "网络名称:",
|
||||||
|
"Passphrase:": "密码:",
|
||||||
|
"Failed to install via FTP, press B to exit...": "通过 FTP 安装失败,按 B 键退出...",
|
||||||
|
"Ftp install success!": "通过 FTP 安装成功。",
|
||||||
|
"Ftp install failed!": "通过 FTP 安装失败。",
|
||||||
|
"USB Install": "通过 USB 安装",
|
||||||
|
"USB": "USB",
|
||||||
|
"Connected, waiting for file list...": "",
|
||||||
|
"Connected, starting transfer...": "",
|
||||||
|
"Failed to init usb, press B to exit...": "USB 初始化失败,按 B 键退出...",
|
||||||
|
"Waiting for connection...": "等待连接中...",
|
||||||
|
"Transferring data...": "正在传输数据...",
|
||||||
|
"USB connected, sending file list": "",
|
||||||
|
"Sent file list, waiting for command...": "",
|
||||||
|
"waiting for usb connection...": "",
|
||||||
|
"Disable MTP for usb install": "暂时禁用 USB 安装的 MTP 功能",
|
||||||
|
"Re-enabled MTP": "重新启用 MTP",
|
||||||
|
"Installed via usb": "通过 USB 安装",
|
||||||
|
"Usb install success!": "通过 USB 安装成功。",
|
||||||
|
"Usb install failed!": "通过 USB 安装失败。",
|
||||||
|
"Press B to exit...": "按 B 键退出...",
|
||||||
|
"GameCard Install": "卡带安装",
|
||||||
|
"GameCard": "卡带",
|
||||||
|
"GC": "",
|
||||||
|
"System memory %.1f GB": "",
|
||||||
|
"microSD card %.1f GB": "",
|
||||||
|
"Nand Install": "",
|
||||||
|
"SD Card Install": "",
|
||||||
|
"Exit": "",
|
||||||
|
"Gc install success!": "游戏安装成功。",
|
||||||
|
"Gc install failed!": "游戏安装失败。",
|
||||||
|
|
||||||
|
"IRS (Infrared Joycon Camera)": "",
|
||||||
|
"IRS": "",
|
||||||
|
"Irs": "红外成像",
|
||||||
|
"Ambient Noise Level: ": "环境噪声等级:",
|
||||||
|
"Controller": "控制器",
|
||||||
|
"Pad ": "手柄 ",
|
||||||
|
"HandHeld": "掌机模式",
|
||||||
|
" (Available)": " (可用的)",
|
||||||
|
" (Unsupported)": " (不支持的)",
|
||||||
|
" (Unconnected)": " (未连接)",
|
||||||
|
"Rotation": "旋转",
|
||||||
|
"0 (Sideways)": "0度",
|
||||||
|
"90 (Flat)": "90度",
|
||||||
|
"180 (-Sideways)": "180度",
|
||||||
|
"270 (Upside down)": "270度",
|
||||||
|
"Colour": "颜色",
|
||||||
|
"Grey": "灰色",
|
||||||
|
"Ironbow": "紫黄",
|
||||||
|
"Green": "绿色",
|
||||||
|
"Red": "红色",
|
||||||
|
"Blue": "蓝色",
|
||||||
|
"Light Target": "光源目标",
|
||||||
|
"All leds": "全部",
|
||||||
|
"Bright group": "亮色组",
|
||||||
|
"Dim group": "暗色组",
|
||||||
|
"None": "无",
|
||||||
|
"Gain": "曝光",
|
||||||
|
"Negative Image": "负片图像",
|
||||||
|
"Normal image": "正常图像",
|
||||||
|
"Negative image": "负片图像",
|
||||||
|
"Format": "格式",
|
||||||
|
"Trimming Format": "裁剪格式",
|
||||||
|
"320x240": "320×240",
|
||||||
|
"160x120": "160×120",
|
||||||
|
"80x60": "80×60",
|
||||||
|
"40x30": "40×30",
|
||||||
|
"20x15": "20×15",
|
||||||
|
"External Light Filter": "外部光滤镜",
|
||||||
|
"Load Default": "加载默认值",
|
||||||
|
|
||||||
|
"Advanced": "高级",
|
||||||
|
"Advanced Options": "高级选项",
|
||||||
|
"Logging": "日志",
|
||||||
|
"Replace hbmenu on exit": "退出后用Sphaira替换hbmenu",
|
||||||
|
"Restore hbmenu?": "恢复 hbmenu?",
|
||||||
|
"Restore": "恢复",
|
||||||
|
"Failed to find /switch/hbmenu.nro\nUse the Appstore to re-install hbmenu": "未能找到 /switch/hbmenu.nro\n请使用应用商店重新安装 hbmenu",
|
||||||
|
"Failed to restore hbmenu, please re-download hbmenu": "恢复 hbmenu 失败,请重新下载 hbmenu",
|
||||||
|
"Failed to restore hbmenu, using sphaira instead": "恢复 hbmenu 失败,改用 Sphaira",
|
||||||
|
"Restored hbmenu, closing sphaira": "已恢复 hbmenu,正在关闭 Sphaira",
|
||||||
|
"Restored hbmenu": "已恢复 hbmenu",
|
||||||
|
"Restart Sphaira?": "重启 Sphaira?",
|
||||||
|
"Press OK to restart Sphaira": "按OK键以重启shphaira菜单",
|
||||||
|
"Text scroll speed": "文本滚动速度",
|
||||||
|
"Slow": "慢",
|
||||||
|
"Normal": "正常",
|
||||||
|
"Fast": "快",
|
||||||
|
"Set right-side menu": "",
|
||||||
|
"Install options": "安装选项",
|
||||||
|
"Install Options": "安装选项",
|
||||||
|
"Enable sysmmc": "",
|
||||||
|
"Enable emummc": "",
|
||||||
|
"Show install warning": "显示安装警告",
|
||||||
|
"Install location": "安装位置",
|
||||||
|
"System memory": "主机内存",
|
||||||
|
"microSD card": "SD卡",
|
||||||
|
"Boost CPU clock": "提升 CPU 频率",
|
||||||
|
"Allow downgrade": "允许降级",
|
||||||
|
"Skip if already installed": "若已安装则跳过",
|
||||||
|
"Ticket only": "仅安装票据",
|
||||||
|
"Skip base": "跳过基础部分",
|
||||||
|
"Skip patch": "跳过补丁",
|
||||||
|
"Skip dlc": "跳过 DLC(可下载内容)",
|
||||||
|
"Skip data patch": "跳过数据补丁",
|
||||||
|
"Skip ticket": "跳过票据",
|
||||||
|
"Skip NCA hash verify": "",
|
||||||
|
"Skip RSA header verify": "跳过 RSA 头部验证",
|
||||||
|
"Skip RSA NPDM verify": "跳过 RSA NPDM 验证",
|
||||||
|
"Ignore distribution bit": "忽略分布位",
|
||||||
|
"Convert to standard crypto": "转换为标准加密方式",
|
||||||
|
"Lower master key": "降低主密钥",
|
||||||
|
"Lower system version": "降低系统版本",
|
||||||
|
|
||||||
|
"Homebrew": "应用列表",
|
||||||
|
"Apps": "应用",
|
||||||
|
"Homebrew Options": "应用选项",
|
||||||
|
"Hide Sphaira": "在应用列表中隐藏Sphaira",
|
||||||
|
"Install Forwarder": "安装前端应用",
|
||||||
|
"WARNING: Installing forwarders will lead to a ban!": "警告:安装前端应用可能导致ban机!",
|
||||||
|
"Installing Forwarder": "正在生成前端应用",
|
||||||
|
"Creating Program": "正在创建程序",
|
||||||
|
"Creating Control": "正在创建控制器",
|
||||||
|
"Creating Meta": "正在创建元数据",
|
||||||
|
"Writing Nca": "正在写入Nca",
|
||||||
|
"Updating ncm databse": "正在更新ncm数据库",
|
||||||
|
"Pushing application record": "正在推送应用记录",
|
||||||
|
"Failed to install forwarder": "前端应用安装失败",
|
||||||
|
"Unstarred ": "取消星标 ",
|
||||||
|
"Starred ": "已星标 ",
|
||||||
|
"Failed to remove old forwarder, please manually remove it!": "",
|
||||||
|
|
||||||
|
"AppStore": "应用商店",
|
||||||
|
"Appstore": "",
|
||||||
|
"Store": "商店",
|
||||||
|
"Filter: %s | Sort: %s | Order: %s": "筛选: %s | 排序: %s | 顺序: %s",
|
||||||
|
"AppStore Options": "应用商店选项",
|
||||||
|
"Info": "信息",
|
||||||
|
"Changelog": "更新日志",
|
||||||
|
"Details": "详情",
|
||||||
|
"version: %s": "版本: %s",
|
||||||
|
"updated: %s": "更新时间: %s",
|
||||||
|
"category: %s": "分类: %s",
|
||||||
|
"extracted: %.2f MiB": "应用大小: %.2f MiB",
|
||||||
|
"app_dls: %s": "下载量: %s",
|
||||||
|
"More by Author": "作者更多作品",
|
||||||
|
"Leave Feedback": "留言反馈",
|
||||||
|
|
||||||
|
"FileBrowser": "文件浏览",
|
||||||
|
"Files": "文件",
|
||||||
|
"%zd files": "%zd 个文件",
|
||||||
|
"%zd dirs": "%zd 个文件夹",
|
||||||
|
"File Options": "文件选项",
|
||||||
|
"Show Hidden": "显示隐藏项目",
|
||||||
|
"Folders First": "文件夹靠前",
|
||||||
|
"Hidden Last": "隐藏项目置后",
|
||||||
|
"Cut": "剪切",
|
||||||
|
"Copy": "复制",
|
||||||
|
"Copying ": "正在复制 ",
|
||||||
|
"Paste": "粘贴",
|
||||||
|
"Paste ": "粘贴 ",
|
||||||
|
" file(s)?": "个文件(夹)?",
|
||||||
|
"Pasting ": "正在粘贴 ",
|
||||||
|
"Pasting": "正在粘贴",
|
||||||
|
"Rename": "重命名",
|
||||||
|
"Set New File Name": "输入新命名",
|
||||||
|
"Extract zip": "",
|
||||||
|
"Extract Options": "",
|
||||||
|
"Extract here": "",
|
||||||
|
"Extract to root": "",
|
||||||
|
"Are you sure you want to extract to root?": "",
|
||||||
|
"Extract to...": "",
|
||||||
|
"Enter the path to the folder to extract into": "",
|
||||||
|
"Extracting ": "",
|
||||||
|
"Extract success!": "",
|
||||||
|
"Extract failed!": "",
|
||||||
|
"Compress to zip": "压缩到zip",
|
||||||
|
"Compress Options": "",
|
||||||
|
"Compress": "",
|
||||||
|
"Compress to...": "",
|
||||||
|
"Compressing ": "",
|
||||||
|
"Compress success!": "",
|
||||||
|
"Compress failed!": "",
|
||||||
|
"Create File": "新建文件",
|
||||||
|
"Set File Name": "输入文件名",
|
||||||
|
"Create Folder": "新建文件夹",
|
||||||
|
"Set Folder Name": "输入文件夹名",
|
||||||
|
"Creating ": "正在创建 ",
|
||||||
|
"Upload": "",
|
||||||
|
"Select upload location": "",
|
||||||
|
"No upload locations set!": "",
|
||||||
|
"Uploading": "",
|
||||||
|
"Upload successfull!": "",
|
||||||
|
"Upload failed!": "",
|
||||||
|
"View as text (unfinished)": "以文本形式查看(未完善)",
|
||||||
|
"Ignore read only": "忽略只读",
|
||||||
|
"Mount": "挂载",
|
||||||
|
"Sd": "SD卡",
|
||||||
|
"Image System memory": "主机内存图像",
|
||||||
|
"Image microSD card": "SD卡图像",
|
||||||
|
"Empty...": "空...",
|
||||||
|
"Open with DayBreak?": "使用DayBreak打开?",
|
||||||
|
"Launch ": "启动 ",
|
||||||
|
"Launch option for: ": "启动选项:",
|
||||||
|
"Select launcher for: ": "选择启动器用于:",
|
||||||
|
|
||||||
|
"Sort By": "排序方式",
|
||||||
|
"Sort Options": "排序选项",
|
||||||
|
"Filter": "筛选",
|
||||||
|
"All": "全部",
|
||||||
"Emulators": "模拟器",
|
"Emulators": "模拟器",
|
||||||
"Tools": "工具",
|
"Tools": "工具",
|
||||||
"Advanced": "先进的",
|
|
||||||
"Themes": "主题",
|
"Themes": "主题",
|
||||||
"Legacy": "遗产",
|
"Legacy": "可更新",
|
||||||
"Misc": "杂项",
|
"Sort": "排序",
|
||||||
|
"Size": "按大小",
|
||||||
|
"Size (Star)": "按大小(星标优先)",
|
||||||
|
"Alphabetical": "按字母顺序",
|
||||||
|
"Alphabetical (Star)": "按字母顺序(星标优先)",
|
||||||
|
"Updated": "最近使用",
|
||||||
|
"Updated (Star)": "最近更新(星标优先)",
|
||||||
"Downloads": "下载",
|
"Downloads": "下载",
|
||||||
"Filter": "筛选",
|
"Likes": "点赞量",
|
||||||
|
"ID": "ID",
|
||||||
|
"Order": "顺序",
|
||||||
|
"Descending": "降序",
|
||||||
|
"Descending (down)": "降序",
|
||||||
|
"Desc": "降序",
|
||||||
|
"Ascending": "升序",
|
||||||
|
"Ascending (Up)": "升序",
|
||||||
|
"Asc": "升序",
|
||||||
|
"Layout": "",
|
||||||
|
"List": "",
|
||||||
|
"Icon": "",
|
||||||
|
"Grid": "",
|
||||||
"Search": "搜索",
|
"Search": "搜索",
|
||||||
"Menu Options": "菜单选项",
|
|
||||||
"Header": "标头",
|
"Options": "选项",
|
||||||
"Theme": "主题",
|
"OK": "确定",
|
||||||
"Network": "网络",
|
"Back": "返回",
|
||||||
"Logging": "记录",
|
"Select": "选择",
|
||||||
"Enabled": "启用",
|
"Open": "打开",
|
||||||
"Disabled": "残疾人",
|
"Launch": "启动",
|
||||||
"Replace hbmenu on exit": "退出时替换 hbmenu",
|
"Restart": "重启",
|
||||||
"Misc Options": "其他选项",
|
"Next": "下一项",
|
||||||
"Themezer": "主题器",
|
"Prev": "上一项",
|
||||||
"Irs": "国税局",
|
"Unstar": "取消星标",
|
||||||
"Web": "网络",
|
"Star": "星标",
|
||||||
|
"Yes": "是",
|
||||||
|
"No": "否",
|
||||||
|
"On": "",
|
||||||
|
"Off": "",
|
||||||
|
|
||||||
|
"Install": "安装",
|
||||||
|
"Install Selected files?": "安装所选文件?",
|
||||||
|
"Installing ": "正在安装 ",
|
||||||
|
"Installed ": "",
|
||||||
|
"Installed!": "安装完成!",
|
||||||
|
"Trying to load ": "尝试加载 ",
|
||||||
|
"Checking MD5": "正在校验 MD5",
|
||||||
|
|
||||||
|
"Delete": "删除",
|
||||||
|
"Delete Selected files?": "删除选中的文件?",
|
||||||
|
"Are you sure you want to delete ": "您确定要删除吗 ",
|
||||||
|
"Scanning ": "正在扫描 ",
|
||||||
|
"Deleting ": "正在删除 ",
|
||||||
|
"Deleting": "正在删除",
|
||||||
|
"Remove": "删除",
|
||||||
|
"Completely remove ": "彻底删除 ",
|
||||||
|
"Removing ": "正在移除 ",
|
||||||
|
"Removed ": "已移除 ",
|
||||||
|
"Uninstalling ": "正在卸载 ",
|
||||||
|
|
||||||
"Download": "下载",
|
"Download": "下载",
|
||||||
"Next Page": "下一页",
|
"Downloading ": "正在下载 ",
|
||||||
"Prev Page": "上一页",
|
"Downloaded ": "已下载 ",
|
||||||
"Pad ": "软垫 ",
|
|
||||||
" (Unconnected)": " (未连接)",
|
"Update": "更新",
|
||||||
"HandHeld": "手持式",
|
"Update avaliable: ": "有可用更新!",
|
||||||
" (Available)": " (可用的)",
|
"Download update: ": "下载更新:",
|
||||||
"0 (Sideways)": "0(横向)",
|
"Updated to ": "更新至 ",
|
||||||
"90 (Flat)": "90(平)",
|
"Failed to download update": "更新下载失败",
|
||||||
"180 (-Sideways)": "180(-横向)",
|
|
||||||
"270 (Upside down)": "270(颠倒)",
|
"%zu hours %zu minutes remaining": "",
|
||||||
"Grey": "灰色的",
|
"%zu minutes %zu seconds remaining": "",
|
||||||
"Ironbow": "铁弓",
|
"%zu seconds remaining": "",
|
||||||
"Green": "绿色的",
|
|
||||||
"Red": "红色的",
|
"Loading...": "加载中...",
|
||||||
"Blue": "蓝色的",
|
"Loading": "加载中",
|
||||||
"All leds": "所有 LED",
|
"Empty!": "空空如野!",
|
||||||
"Bright group": "光明集团",
|
"Not Ready...": "尚未准备好...",
|
||||||
"Dim group": "昏暗组",
|
"Error loading page!": "页面加载失败!"
|
||||||
"None": "没有任何",
|
}
|
||||||
"Normal image": "正常图像",
|
|
||||||
"Negative image": "负像",
|
|
||||||
"320x240": "320x240",
|
|
||||||
"160x120": "160x120",
|
|
||||||
"80x60": "80x60",
|
|
||||||
"40x30": "40x30",
|
|
||||||
"20x15": "20x15",
|
|
||||||
"Controller": "控制器",
|
|
||||||
"Rotation": "旋转",
|
|
||||||
"Colour": "颜色",
|
|
||||||
"Light Target": "光目标",
|
|
||||||
"Gain": "获得",
|
|
||||||
"Negative Image": "负面形象",
|
|
||||||
"Format": "格式",
|
|
||||||
"Trimming Format": "修剪格式",
|
|
||||||
"External Light Filter": "外部滤光片",
|
|
||||||
"Load Default": "加载默认值",
|
|
||||||
"No Internet": "没有互联网",
|
|
||||||
"[Applet Mode]": "[小程序模式]",
|
|
||||||
"Language": "语言"
|
|
||||||
}
|
|
||||||
BIN
assets/romfs/theme/icons-sp/icon_SP_audio.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
assets/romfs/theme/icons-sp/icon_SP_file.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
assets/romfs/theme/icons-sp/icon_SP_folder.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
assets/romfs/theme/icons-sp/icon_SP_image.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
assets/romfs/theme/icons-sp/icon_SP_nro.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
assets/romfs/theme/icons-sp/icon_SP_video.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
assets/romfs/theme/icons-sp/icon_SP_zip.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
@@ -1,22 +1,23 @@
|
|||||||
[meta]
|
[meta]
|
||||||
name=Abyss
|
name=Abyss
|
||||||
author=TotalJustice
|
author=TotalJustice
|
||||||
version=1.0.0
|
version=1.1.0
|
||||||
; unused currently
|
inherit=romfs:/themes/base_black_theme.ini
|
||||||
preview=romfs:/theme/preview.jpg
|
|
||||||
|
|
||||||
[theme]
|
[theme]
|
||||||
background=0x0f111aff
|
background = 0x0f111a
|
||||||
grid=0x0f115c30
|
grid = 0x0f115c30
|
||||||
selected=0x0f115cff
|
popup = 0x0f115c
|
||||||
selected_overlay=0x529cffff
|
|
||||||
text=0xffbc41ff
|
|
||||||
text_selected=0x529cffff
|
|
||||||
|
|
||||||
icon_audio=romfs:/theme/icon_audio.png
|
line = 0xffbc41
|
||||||
icon_video=romfs:/theme/icon_video.png
|
line_seperator = 0xffbc41
|
||||||
icon_image=romfs:/theme/icon_image.png
|
|
||||||
icon_file=romfs:/theme/icon_file.png
|
text = 0xffbc41
|
||||||
icon_folder=romfs:/theme/icon_folder.png
|
text_info = 0xd79f36
|
||||||
icon_zip=romfs:/theme/icon_zip.png
|
text_selected = 0x529cff
|
||||||
icon_nro=romfs:/theme/icon_nro.png
|
selected_background = 0x0f115c
|
||||||
|
|
||||||
|
scrollbar = 0x529cff
|
||||||
|
scrollbar_background = ; hide the background
|
||||||
|
|
||||||
|
progressbar = 0x3250f0
|
||||||
|
|||||||
33
assets/romfs/themes/base_black_theme.ini
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
[theme]
|
||||||
|
background = 0x2d2d2d
|
||||||
|
grid = 0x46464630
|
||||||
|
popup = 0x2d2d2d
|
||||||
|
error = 0xfa5a3a
|
||||||
|
|
||||||
|
line = 0xfbfbfb
|
||||||
|
line_separator = 0x707070
|
||||||
|
|
||||||
|
text = 0xfbfbfb
|
||||||
|
text_info = 0xd1d1d1
|
||||||
|
text_selected = 0x00ffc8
|
||||||
|
selected_background = 0x212227
|
||||||
|
|
||||||
|
sidebar = 0x000000dc
|
||||||
|
|
||||||
|
scrollbar = 0x00ffc8
|
||||||
|
scrollbar_background = ; hide the background
|
||||||
|
; scrollbar_background = 0x464646
|
||||||
|
|
||||||
|
progressbar = 0x00ffc8
|
||||||
|
progressbar_background = 0x464646
|
||||||
|
|
||||||
|
highlight_1 = 0x1989c6
|
||||||
|
highlight_2 = 0x89f0f2
|
||||||
|
|
||||||
|
icon_audio = romfs:/theme/icon_audio.png
|
||||||
|
icon_video = romfs:/theme/icon_video.png
|
||||||
|
icon_image = romfs:/theme/icon_image.png
|
||||||
|
icon_file = romfs:/theme/icon_file.png
|
||||||
|
icon_folder = romfs:/theme/icon_folder.png
|
||||||
|
icon_zip = romfs:/theme/icon_zip.png
|
||||||
|
icon_nro = romfs:/theme/icon_nro.png
|
||||||
34
assets/romfs/themes/base_white_theme.ini
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
[theme]
|
||||||
|
background = 0xebebeb
|
||||||
|
grid = 0xf0f0f0
|
||||||
|
popup = 0xebebeb
|
||||||
|
error = 0xfa5a3a
|
||||||
|
|
||||||
|
line = 0x373737
|
||||||
|
line_separator = 0x6d787a
|
||||||
|
|
||||||
|
text = 0x373737
|
||||||
|
text_info = 0x808080
|
||||||
|
text_selected = 0x3250f0
|
||||||
|
selected_background = 0xfdfdfd
|
||||||
|
|
||||||
|
sidebar = 0xe2e2e2f5
|
||||||
|
|
||||||
|
scrollbar = 0xB0B0B0
|
||||||
|
scrollbar_background = ; hide the background
|
||||||
|
; scrollbar_background = 0xababab
|
||||||
|
|
||||||
|
progressbar = 0x3250f0
|
||||||
|
progressbar_background = 0x808080
|
||||||
|
|
||||||
|
highlight_1 = 0x1989c6
|
||||||
|
highlight_2 = 0x89f0f2
|
||||||
|
|
||||||
|
icon_colour = 0x6d787a
|
||||||
|
icon_audio = romfs:/theme/icon_audio.png
|
||||||
|
icon_video = romfs:/theme/icon_video.png
|
||||||
|
icon_image = romfs:/theme/icon_image.png
|
||||||
|
icon_file = romfs:/theme/icon_file.png
|
||||||
|
icon_folder = romfs:/theme/icon_folder.png
|
||||||
|
icon_zip = romfs:/theme/icon_zip.png
|
||||||
|
icon_nro = romfs:/theme/icon_nro.png
|
||||||
@@ -1,23 +1,5 @@
|
|||||||
[meta]
|
[meta]
|
||||||
name=Black
|
name=Black
|
||||||
author=TotalJustice
|
author=TotalJustice
|
||||||
version=1.0.0
|
version=1.1.0
|
||||||
preview=romfs:/theme/preview.jpg
|
inherit=romfs:/themes/base_black_theme.ini
|
||||||
|
|
||||||
[theme]
|
|
||||||
background=0x2d2d2dff
|
|
||||||
cursor=romfs:/theme/cursor.png
|
|
||||||
cursor_drag=romfs:/theme/cursor_drag.png
|
|
||||||
grid=0x46464630
|
|
||||||
selected=0x464646ff
|
|
||||||
selected_overlay=0x00ffc8ff
|
|
||||||
text=0xfbfbfbff
|
|
||||||
text_selected=0x00ffc8ff
|
|
||||||
|
|
||||||
icon_audio=romfs:/theme/icon_audio.png
|
|
||||||
icon_video=romfs:/theme/icon_video.png
|
|
||||||
icon_image=romfs:/theme/icon_image.png
|
|
||||||
icon_file=romfs:/theme/icon_file.png
|
|
||||||
icon_folder=romfs:/theme/icon_folder.png
|
|
||||||
icon_zip=romfs:/theme/icon_zip.png
|
|
||||||
icon_nro=romfs:/theme/icon_nro.png
|
|
||||||
|
|||||||
15
assets/romfs/themes/black_theme_sp_icons.ini
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
[meta]
|
||||||
|
name=Black alt-icons-SP
|
||||||
|
author=spkatsi
|
||||||
|
version=1.0.0
|
||||||
|
inherit=romfs:/themes/base_black_theme.ini
|
||||||
|
|
||||||
|
[theme]
|
||||||
|
icon_audio = romfs:/theme/icons-sp/icon_SP_audio.png
|
||||||
|
icon_video = romfs:/theme/icons-sp/icon_SP_video.png
|
||||||
|
icon_image = romfs:/theme/icons-sp/icon_SP_image.png
|
||||||
|
icon_file = romfs:/theme/icons-sp/icon_SP_file.png
|
||||||
|
icon_folder = romfs:/theme/icons-sp/icon_SP_folder.png
|
||||||
|
icon_zip = romfs:/theme/icons-sp/icon_SP_zip.png
|
||||||
|
icon_nro = romfs:/theme/icons-sp/icon_SP_nro.png
|
||||||
|
|
||||||
13
assets/romfs/themes/oled_black_theme.ini
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[meta]
|
||||||
|
name=OLED Black
|
||||||
|
author=TotalJustice/Sanras
|
||||||
|
version=1.1.0
|
||||||
|
inherit=romfs:/themes/base_black_theme.ini
|
||||||
|
|
||||||
|
[theme]
|
||||||
|
background = 0x000000
|
||||||
|
grid = 0x46464640
|
||||||
|
popup = 0x323232
|
||||||
|
text = 0xfbfbfb
|
||||||
|
text_selected = 0x00ffc8
|
||||||
|
selected_background = 0x323232
|
||||||
@@ -1,23 +1,5 @@
|
|||||||
[meta]
|
[meta]
|
||||||
name="White not finished"
|
name=White
|
||||||
author=TotalJustice
|
author=TotalJustice/Yorunokyujitsu
|
||||||
version=1.0.0
|
version=1.0.0
|
||||||
preview=romfs:/theme/preview.jpg
|
inherit=romfs:/themes/base_white_theme.ini
|
||||||
|
|
||||||
[theme]
|
|
||||||
background=0xEBEBEBff
|
|
||||||
cursor=romfs:/theme/cursor.png
|
|
||||||
cursor_drag=romfs:/theme/cursor_drag.png
|
|
||||||
grid=0x46464630
|
|
||||||
selected=0x464646ff
|
|
||||||
selected_overlay=0x00ffc8ff
|
|
||||||
text=0x2D2D2Dff
|
|
||||||
text_selected=0x3A50F0ff
|
|
||||||
|
|
||||||
icon_audio=romfs:/theme/icon_audio.png
|
|
||||||
icon_video=romfs:/theme/icon_video.png
|
|
||||||
icon_image=romfs:/theme/icon_image.png
|
|
||||||
icon_file=romfs:/theme/icon_file.png
|
|
||||||
icon_folder=romfs:/theme/icon_folder.png
|
|
||||||
icon_zip=romfs:/theme/icon_zip.png
|
|
||||||
icon_nro=romfs:/theme/icon_nro.png
|
|
||||||
|
|||||||
@@ -78,11 +78,13 @@ function(nx_create_npdm target config)
|
|||||||
dkp_set_target_file(${outtarget} "${NX_NPDM_OUTPUT}")
|
dkp_set_target_file(${outtarget} "${NX_NPDM_OUTPUT}")
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/exefs)
|
||||||
|
|
||||||
nx_create_nso(hbl
|
nx_create_nso(hbl
|
||||||
OUTPUT main
|
OUTPUT exefs/main
|
||||||
)
|
)
|
||||||
|
|
||||||
nx_create_npdm(hbl
|
nx_create_npdm(hbl
|
||||||
OUTPUT main.npdm
|
OUTPUT exefs/main.npdm
|
||||||
CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/hbl.json
|
CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/hbl.json
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 3.13)
|
cmake_minimum_required(VERSION 3.13)
|
||||||
|
|
||||||
set(sphaira_VERSION 0.3.0)
|
set(sphaira_VERSION 0.11.1)
|
||||||
|
|
||||||
project(sphaira
|
project(sphaira
|
||||||
VERSION ${sphaira_VERSION}
|
VERSION ${sphaira_VERSION}
|
||||||
@@ -45,51 +45,133 @@ add_executable(sphaira
|
|||||||
source/ui/menus/main_menu.cpp
|
source/ui/menus/main_menu.cpp
|
||||||
source/ui/menus/menu_base.cpp
|
source/ui/menus/menu_base.cpp
|
||||||
source/ui/menus/themezer.cpp
|
source/ui/menus/themezer.cpp
|
||||||
|
source/ui/menus/ghdl.cpp
|
||||||
|
source/ui/menus/usb_menu.cpp
|
||||||
|
source/ui/menus/ftp_menu.cpp
|
||||||
|
source/ui/menus/gc_menu.cpp
|
||||||
|
source/ui/menus/game_menu.cpp
|
||||||
|
source/ui/menus/grid_menu_base.cpp
|
||||||
|
|
||||||
source/ui/error_box.cpp
|
source/ui/error_box.cpp
|
||||||
source/ui/notification.cpp
|
source/ui/notification.cpp
|
||||||
source/ui/nvg_util.cpp
|
source/ui/nvg_util.cpp
|
||||||
source/ui/option_box.cpp
|
source/ui/option_box.cpp
|
||||||
source/ui/option_list.cpp
|
|
||||||
source/ui/popup_list.cpp
|
source/ui/popup_list.cpp
|
||||||
source/ui/progress_box.cpp
|
source/ui/progress_box.cpp
|
||||||
source/ui/scrollable_text.cpp
|
source/ui/scrollable_text.cpp
|
||||||
source/ui/scrollbar.cpp
|
|
||||||
source/ui/sidebar.cpp
|
source/ui/sidebar.cpp
|
||||||
source/ui/widget.cpp
|
source/ui/widget.cpp
|
||||||
|
source/ui/list.cpp
|
||||||
|
source/ui/scrolling_text.cpp
|
||||||
|
|
||||||
source/app.cpp
|
source/app.cpp
|
||||||
source/download.cpp
|
source/download.cpp
|
||||||
|
source/dumper.cpp
|
||||||
source/option.cpp
|
source/option.cpp
|
||||||
source/evman.cpp
|
source/evman.cpp
|
||||||
source/fs.cpp
|
source/fs.cpp
|
||||||
source/image.cpp
|
source/image.cpp
|
||||||
|
source/location.cpp
|
||||||
source/log.cpp
|
source/log.cpp
|
||||||
source/main.cpp
|
source/main.cpp
|
||||||
source/nro.cpp
|
source/nro.cpp
|
||||||
source/nxlink.cpp
|
source/nxlink.cpp
|
||||||
source/owo.cpp
|
source/owo.cpp
|
||||||
source/swkbd.cpp
|
source/swkbd.cpp
|
||||||
source/web.cpp
|
source/hasher.cpp
|
||||||
source/i18n.cpp
|
source/i18n.cpp
|
||||||
|
source/ftpsrv_helper.cpp
|
||||||
|
source/threaded_file_transfer.cpp
|
||||||
|
|
||||||
|
source/usb/base.cpp
|
||||||
|
source/usb/usbds.cpp
|
||||||
|
source/usb/usbhs.cpp
|
||||||
|
source/usb/usb_uploader.cpp
|
||||||
|
|
||||||
|
source/yati/yati.cpp
|
||||||
|
source/yati/container/nsp.cpp
|
||||||
|
source/yati/container/xci.cpp
|
||||||
|
source/yati/source/file.cpp
|
||||||
|
source/yati/source/usb.cpp
|
||||||
|
source/yati/source/stream.cpp
|
||||||
|
source/yati/source/stream_file.cpp
|
||||||
|
|
||||||
|
source/yati/nx/es.cpp
|
||||||
|
source/yati/nx/keys.cpp
|
||||||
|
source/yati/nx/nca.cpp
|
||||||
|
source/yati/nx/ncm.cpp
|
||||||
|
source/yati/nx/ns.cpp
|
||||||
|
source/yati/nx/nxdumptool_rsa.c
|
||||||
)
|
)
|
||||||
|
|
||||||
target_compile_definitions(sphaira PRIVATE
|
target_compile_definitions(sphaira PRIVATE
|
||||||
-DAPP_VERSION="${sphaira_VERSION}"
|
-DAPP_VERSION="${sphaira_VERSION}"
|
||||||
-DAPP_VERSION_HASH="${sphaira_VERSION_HASH}"
|
-DAPP_VERSION_HASH="${sphaira_VERSION_HASH}"
|
||||||
|
-DCURL_NO_OLDIES=1
|
||||||
|
)
|
||||||
|
|
||||||
|
target_compile_options(sphaira PRIVATE
|
||||||
|
-Wall
|
||||||
|
-Wextra
|
||||||
|
|
||||||
|
# unsure if it's a good idea to enable these by default as
|
||||||
|
# it may cause breakage upon compiler updates.
|
||||||
|
# -Werror
|
||||||
|
# -Wfatal-errors
|
||||||
|
|
||||||
|
# disabled as nx uses s64 for size and offset, however stl uses size_t instead, thus
|
||||||
|
# there being a lot of warnings.
|
||||||
|
-Wno-sign-compare
|
||||||
|
# disabled as many overriden methods don't use the params.
|
||||||
|
-Wno-unused-parameter
|
||||||
|
# pedantic warning, missing fields are set to 0.
|
||||||
|
-Wno-missing-field-initializers
|
||||||
|
# disabled as it warns for strcat 2 paths together, but it will never
|
||||||
|
# overflow due to fs enforcing a max path len anyway.
|
||||||
|
-Wno-format-truncation
|
||||||
|
|
||||||
|
# the below are taken from my gba emulator, they've served me well ;)
|
||||||
|
-Wformat-overflow=2
|
||||||
|
-Wundef
|
||||||
|
-Wmissing-include-dirs
|
||||||
|
-fstrict-aliasing
|
||||||
|
-Wstrict-overflow=2
|
||||||
|
-Walloca
|
||||||
|
-Wduplicated-cond
|
||||||
|
-Wwrite-strings
|
||||||
|
-Wdate-time
|
||||||
|
-Wlogical-op
|
||||||
|
-Wpacked
|
||||||
|
-Wcast-qual
|
||||||
|
-Wcast-align
|
||||||
|
-Wimplicit-fallthrough=5
|
||||||
|
-Wsuggest-final-types
|
||||||
|
-Wuninitialized
|
||||||
)
|
)
|
||||||
|
|
||||||
include(FetchContent)
|
include(FetchContent)
|
||||||
set(FETCHCONTENT_QUIET FALSE)
|
set(FETCHCONTENT_QUIET FALSE)
|
||||||
|
|
||||||
|
FetchContent_Declare(ftpsrv
|
||||||
|
GIT_REPOSITORY https://github.com/ITotalJustice/ftpsrv.git
|
||||||
|
# GIT_TAG 1.2.2
|
||||||
|
GIT_TAG f8a30fd
|
||||||
|
SOURCE_SUBDIR NONE
|
||||||
|
)
|
||||||
|
|
||||||
|
FetchContent_Declare(libhaze
|
||||||
|
GIT_REPOSITORY https://github.com/ITotalJustice/libhaze.git
|
||||||
|
GIT_TAG 04f1526
|
||||||
|
)
|
||||||
|
|
||||||
FetchContent_Declare(libpulsar
|
FetchContent_Declare(libpulsar
|
||||||
GIT_REPOSITORY https://github.com/ITotalJustice/switch-libpulsar.git
|
GIT_REPOSITORY https://github.com/ITotalJustice/switch-libpulsar.git
|
||||||
GIT_TAG d729be3
|
GIT_TAG de656e4
|
||||||
)
|
)
|
||||||
|
|
||||||
FetchContent_Declare(nanovg
|
FetchContent_Declare(nanovg
|
||||||
GIT_REPOSITORY https://github.com/ITotalJustice/nanovg-deko3d.git
|
GIT_REPOSITORY https://github.com/ITotalJustice/nanovg-deko3d.git
|
||||||
GIT_TAG 1902b38
|
GIT_TAG 845c9fc
|
||||||
)
|
)
|
||||||
|
|
||||||
FetchContent_Declare(stb
|
FetchContent_Declare(stb
|
||||||
@@ -102,14 +184,37 @@ FetchContent_Declare(yyjson
|
|||||||
GIT_TAG 0.10.0
|
GIT_TAG 0.10.0
|
||||||
)
|
)
|
||||||
|
|
||||||
FetchContent_Declare(minIni-sphaira
|
FetchContent_Declare(minIni
|
||||||
GIT_REPOSITORY https://github.com/ITotalJustice/minIni-nx.git
|
GIT_REPOSITORY https://github.com/ITotalJustice/minIni-nx.git
|
||||||
GIT_TAG 63ec295
|
GIT_TAG 11cac8b
|
||||||
)
|
)
|
||||||
|
|
||||||
set(MININI_LIB_NAME minIni-sphaira)
|
FetchContent_Declare(zstd
|
||||||
|
GIT_REPOSITORY https://github.com/facebook/zstd.git
|
||||||
|
GIT_TAG v1.5.7
|
||||||
|
SOURCE_SUBDIR build/cmake
|
||||||
|
)
|
||||||
|
|
||||||
|
FetchContent_Declare(libusbhsfs
|
||||||
|
GIT_REPOSITORY https://github.com/ITotalJustice/libusbhsfs.git
|
||||||
|
GIT_TAG db2bf2a
|
||||||
|
)
|
||||||
|
|
||||||
|
set(USE_NEW_ZSTD ON)
|
||||||
|
|
||||||
|
set(ZSTD_BUILD_STATIC ON)
|
||||||
|
set(ZSTD_BUILD_SHARED OFF)
|
||||||
|
set(ZSTD_BUILD_COMPRESSION OFF)
|
||||||
|
set(ZSTD_BUILD_DECOMPRESSION ON)
|
||||||
|
set(ZSTD_BUILD_DICTBUILDER OFF)
|
||||||
|
set(ZSTD_LEGACY_SUPPORT OFF)
|
||||||
|
set(ZSTD_MULTITHREAD_SUPPORT OFF)
|
||||||
|
set(ZSTD_BUILD_PROGRAMS OFF)
|
||||||
|
set(ZSTD_BUILD_TESTS OFF)
|
||||||
|
|
||||||
|
set(MININI_LIB_NAME minIni)
|
||||||
set(MININI_USE_STDIO ON)
|
set(MININI_USE_STDIO ON)
|
||||||
set(MININI_USE_NX ON)
|
set(MININI_USE_NX OFF)
|
||||||
set(MININI_USE_FLOAT OFF)
|
set(MININI_USE_FLOAT OFF)
|
||||||
|
|
||||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
||||||
@@ -124,58 +229,72 @@ set(NANOVG_NO_GIF ON)
|
|||||||
set(NANOVG_NO_HDR ON)
|
set(NANOVG_NO_HDR ON)
|
||||||
set(NANOVG_NO_PIC ON)
|
set(NANOVG_NO_PIC ON)
|
||||||
set(NANOVG_NO_PNM ON)
|
set(NANOVG_NO_PNM ON)
|
||||||
set(NANOVG_STBI_STATIC OFF)
|
|
||||||
set(NANOVG_STBTT_STATIC ON)
|
|
||||||
|
|
||||||
set(YYJSON_DISABLE_READER OFF)
|
set(YYJSON_DISABLE_READER OFF)
|
||||||
set(YYJSON_DISABLE_WRITER ON)
|
set(YYJSON_DISABLE_WRITER OFF)
|
||||||
set(YYJSON_DISABLE_UTILS ON)
|
set(YYJSON_DISABLE_UTILS ON)
|
||||||
set(YYJSON_DISABLE_FAST_FP_CONV ON)
|
set(YYJSON_DISABLE_FAST_FP_CONV ON)
|
||||||
set(YYJSON_DISABLE_NON_STANDARD ON)
|
set(YYJSON_DISABLE_NON_STANDARD ON)
|
||||||
set(YYJSON_DISABLE_UTF8_VALIDATION ON)
|
set(YYJSON_DISABLE_UTF8_VALIDATION ON)
|
||||||
set(YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS OFF)
|
set(YYJSON_DISABLE_UNALIGNED_MEMORY_ACCESS OFF)
|
||||||
|
|
||||||
|
# enable this if you want ntfs and ext4 support, at the cost of a huge final binary size.
|
||||||
|
set(USBHSFS_GPL OFF)
|
||||||
|
set(USBHSFS_SXOS_DISABLE ON)
|
||||||
|
|
||||||
FetchContent_MakeAvailable(
|
FetchContent_MakeAvailable(
|
||||||
|
ftpsrv
|
||||||
|
libhaze
|
||||||
libpulsar
|
libpulsar
|
||||||
nanovg
|
nanovg
|
||||||
stb
|
stb
|
||||||
minIni-sphaira
|
minIni
|
||||||
yyjson
|
yyjson
|
||||||
|
zstd
|
||||||
|
libusbhsfs
|
||||||
)
|
)
|
||||||
|
|
||||||
# todo: upstream cmake
|
set(FTPSRV_LIB_BUILD TRUE)
|
||||||
add_library(libpulsar
|
set(FTPSRV_LIB_SOCK_UNISTD TRUE)
|
||||||
${libpulsar_SOURCE_DIR}/src/archive/archive_file.c
|
set(FTPSRV_LIB_VFS_CUSTOM ${ftpsrv_SOURCE_DIR}/src/platform/nx/vfs_nx.h)
|
||||||
${libpulsar_SOURCE_DIR}/src/archive/archive.c
|
set(FTPSRV_LIB_PATH_SIZE 0x301)
|
||||||
${libpulsar_SOURCE_DIR}/src/bfgrp/bfgrp_location.c
|
set(FTPSRV_LIB_SESSIONS 32)
|
||||||
${libpulsar_SOURCE_DIR}/src/bfgrp/bfgrp.c
|
set(FTPSRV_LIB_BUF_SIZE 1024*64)
|
||||||
${libpulsar_SOURCE_DIR}/src/bfsar/bfsar_file.c
|
|
||||||
${libpulsar_SOURCE_DIR}/src/bfsar/bfsar_group.c
|
# workaround until a64 container has latest libnx release.
|
||||||
${libpulsar_SOURCE_DIR}/src/bfsar/bfsar_sound.c
|
if (NOT DEFINED USE_VFS_GC)
|
||||||
${libpulsar_SOURCE_DIR}/src/bfsar/bfsar_string.c
|
set(USE_VFS_GC TRUE)
|
||||||
${libpulsar_SOURCE_DIR}/src/bfsar/bfsar_wave_archive.c
|
endif()
|
||||||
${libpulsar_SOURCE_DIR}/src/bfsar/bfsar.c
|
|
||||||
${libpulsar_SOURCE_DIR}/src/bfstm/bfstm_channel.c
|
set(FTPSRV_LIB_CUSTOM_DEFINES
|
||||||
${libpulsar_SOURCE_DIR}/src/bfstm/bfstm_info.c
|
USE_VFS_SAVE=$<BOOL:TRUE>
|
||||||
${libpulsar_SOURCE_DIR}/src/bfstm/bfstm.c
|
USE_VFS_STORAGE=$<BOOL:TRUE>
|
||||||
${libpulsar_SOURCE_DIR}/src/bfwar/bfwar_file.c
|
USE_VFS_GC=$<BOOL:${USE_VFS_GC}>
|
||||||
${libpulsar_SOURCE_DIR}/src/bfwar/bfwar.c
|
USE_VFS_USBHSFS=$<BOOL:FALSE>
|
||||||
${libpulsar_SOURCE_DIR}/src/bfwav/bfwav_info.c
|
VFS_NX_BUFFER_IO=$<BOOL:TRUE>
|
||||||
${libpulsar_SOURCE_DIR}/src/bfwav/bfwav.c
|
|
||||||
${libpulsar_SOURCE_DIR}/src/bfwsd/bfwsd_sound_data.c
|
|
||||||
${libpulsar_SOURCE_DIR}/src/bfwsd/bfwsd_wave_id.c
|
|
||||||
${libpulsar_SOURCE_DIR}/src/bfwsd/bfwsd.c
|
|
||||||
${libpulsar_SOURCE_DIR}/src/player/player_load_formats.c
|
|
||||||
${libpulsar_SOURCE_DIR}/src/player/player_load_lookup.c
|
|
||||||
${libpulsar_SOURCE_DIR}/src/player/player_load.c
|
|
||||||
${libpulsar_SOURCE_DIR}/src/player/player.c
|
|
||||||
)
|
)
|
||||||
target_include_directories(libpulsar PUBLIC ${libpulsar_SOURCE_DIR}/include)
|
|
||||||
set_target_properties(libpulsar PROPERTIES
|
add_subdirectory(${ftpsrv_SOURCE_DIR} binary_dir)
|
||||||
C_STANDARD 11
|
|
||||||
C_EXTENSIONS ON
|
add_library(ftpsrv_helper
|
||||||
|
${ftpsrv_SOURCE_DIR}/src/platform/nx/vfs_nx.c
|
||||||
|
${ftpsrv_SOURCE_DIR}/src/platform/nx/vfs/vfs_nx_none.c
|
||||||
|
${ftpsrv_SOURCE_DIR}/src/platform/nx/vfs/vfs_nx_root.c
|
||||||
|
${ftpsrv_SOURCE_DIR}/src/platform/nx/vfs/vfs_nx_fs.c
|
||||||
|
${ftpsrv_SOURCE_DIR}/src/platform/nx/vfs/vfs_nx_save.c
|
||||||
|
${ftpsrv_SOURCE_DIR}/src/platform/nx/vfs/vfs_nx_storage.c
|
||||||
|
${ftpsrv_SOURCE_DIR}/src/platform/nx/utils.c
|
||||||
)
|
)
|
||||||
|
|
||||||
|
target_link_libraries(ftpsrv_helper PUBLIC ftpsrv)
|
||||||
|
target_include_directories(ftpsrv_helper PUBLIC ${ftpsrv_SOURCE_DIR}/src/platform)
|
||||||
|
|
||||||
|
if (USE_VFS_GC)
|
||||||
|
target_sources(ftpsrv_helper PRIVATE
|
||||||
|
${ftpsrv_SOURCE_DIR}/src/platform/nx/vfs/vfs_nx_gc.c
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_library(stb INTERFACE)
|
add_library(stb INTERFACE)
|
||||||
target_include_directories(stb INTERFACE ${stb_SOURCE_DIR})
|
target_include_directories(stb INTERFACE ${stb_SOURCE_DIR})
|
||||||
|
|
||||||
@@ -187,19 +306,27 @@ find_package(CURL REQUIRED)
|
|||||||
find_path(mbedtls_inc mbedtls REQUIRED)
|
find_path(mbedtls_inc mbedtls REQUIRED)
|
||||||
find_library(mbedcrypto_lib mbedcrypto REQUIRED)
|
find_library(mbedcrypto_lib mbedcrypto REQUIRED)
|
||||||
|
|
||||||
|
if (NOT USE_NEW_ZSTD)
|
||||||
|
find_path(zstd_inc zstd.h REQUIRED)
|
||||||
|
find_library(zstd_lib zstd REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
set_target_properties(sphaira PROPERTIES
|
set_target_properties(sphaira PROPERTIES
|
||||||
C_STANDARD 11
|
C_STANDARD 23
|
||||||
C_EXTENSIONS ON
|
C_EXTENSIONS ON
|
||||||
CXX_STANDARD 23
|
CXX_STANDARD 26
|
||||||
CXX_EXTENSIONS ON
|
CXX_EXTENSIONS ON
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(sphaira PRIVATE
|
target_link_libraries(sphaira PRIVATE
|
||||||
|
ftpsrv_helper
|
||||||
|
libhaze
|
||||||
libpulsar
|
libpulsar
|
||||||
minIni-sphaira
|
minIni
|
||||||
nanovg
|
nanovg
|
||||||
stb
|
stb
|
||||||
yyjson
|
yyjson
|
||||||
|
libusbhsfs
|
||||||
|
|
||||||
${minizip_lib}
|
${minizip_lib}
|
||||||
ZLIB::ZLIB
|
ZLIB::ZLIB
|
||||||
@@ -207,6 +334,15 @@ target_link_libraries(sphaira PRIVATE
|
|||||||
${mbedcrypto_lib}
|
${mbedcrypto_lib}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (USE_NEW_ZSTD)
|
||||||
|
message(STATUS "USING UPSTREAM ZSTD")
|
||||||
|
target_link_libraries(sphaira PRIVATE libzstd_static)
|
||||||
|
else()
|
||||||
|
message(STATUS "USING LOCAL ZSTD")
|
||||||
|
target_link_libraries(sphaira PRIVATE ${zstd_lib})
|
||||||
|
target_include_directories(sphaira PRIVATE ${zstd_inc})
|
||||||
|
endif()
|
||||||
|
|
||||||
target_include_directories(sphaira PRIVATE
|
target_include_directories(sphaira PRIVATE
|
||||||
include
|
include
|
||||||
${minizip_inc}
|
${minizip_inc}
|
||||||
@@ -219,12 +355,13 @@ file(COPY ${CMAKE_SOURCE_DIR}/assets/romfs DESTINATION ${CMAKE_CURRENT_BINARY_DI
|
|||||||
# create assets target
|
# create assets target
|
||||||
dkp_add_asset_target(sphaira_romfs ${CMAKE_CURRENT_BINARY_DIR}/romfs)
|
dkp_add_asset_target(sphaira_romfs ${CMAKE_CURRENT_BINARY_DIR}/romfs)
|
||||||
|
|
||||||
# add hbl exefs to romfs, used for forwarders
|
# wait until hbl is built first as we need the exefs to embed
|
||||||
dkp_install_assets(sphaira_romfs
|
add_dependencies(sphaira hbl_nso hbl_npdm)
|
||||||
DESTINATION exefs
|
|
||||||
TARGETS
|
# set the embed path for assets and hbl
|
||||||
hbl_nso
|
target_compile_options(sphaira PRIVATE
|
||||||
hbl_npdm
|
--embed-dir=${CMAKE_SOURCE_DIR}/assets/embed
|
||||||
|
--embed-dir=${CMAKE_BINARY_DIR}/hbl
|
||||||
)
|
)
|
||||||
|
|
||||||
# add nanovg shaders to romfs
|
# add nanovg shaders to romfs
|
||||||
@@ -241,7 +378,7 @@ nx_generate_nacp(
|
|||||||
OUTPUT sphaira.nacp
|
OUTPUT sphaira.nacp
|
||||||
NAME ${CMAKE_PROJECT_NAME}
|
NAME ${CMAKE_PROJECT_NAME}
|
||||||
AUTHOR TotalJustice
|
AUTHOR TotalJustice
|
||||||
VERSION ${CMAKE_PROJECT_VERSION}
|
VERSION ${sphaira_VERSION}
|
||||||
)
|
)
|
||||||
|
|
||||||
# create nro
|
# create nro
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include "owo.hpp"
|
#include "owo.hpp"
|
||||||
#include "option.hpp"
|
#include "option.hpp"
|
||||||
#include "fs.hpp"
|
#include "fs.hpp"
|
||||||
|
#include "log.hpp"
|
||||||
|
|
||||||
#include <switch.h>
|
#include <switch.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@@ -25,6 +26,7 @@ enum SoundEffect {
|
|||||||
SoundEffect_Startup,
|
SoundEffect_Startup,
|
||||||
SoundEffect_Install,
|
SoundEffect_Install,
|
||||||
SoundEffect_Error,
|
SoundEffect_Error,
|
||||||
|
SoundEffect_MAX,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class LaunchType {
|
enum class LaunchType {
|
||||||
@@ -33,7 +35,9 @@ enum class LaunchType {
|
|||||||
Forwader_Sphaira,
|
Forwader_Sphaira,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// todo: why is this global???
|
||||||
void DrawElement(float x, float y, float w, float h, ThemeEntryID id);
|
void DrawElement(float x, float y, float w, float h, ThemeEntryID id);
|
||||||
|
void DrawElement(const Vec4&, ThemeEntryID id);
|
||||||
|
|
||||||
class App {
|
class App {
|
||||||
public:
|
public:
|
||||||
@@ -41,77 +45,165 @@ public:
|
|||||||
~App();
|
~App();
|
||||||
void Loop();
|
void Loop();
|
||||||
|
|
||||||
|
static App* GetApp();
|
||||||
|
|
||||||
static void Exit();
|
static void Exit();
|
||||||
|
static void ExitRestart();
|
||||||
static auto GetVg() -> NVGcontext*;
|
static auto GetVg() -> NVGcontext*;
|
||||||
static void Push(std::shared_ptr<ui::Widget>);
|
static void Push(std::shared_ptr<ui::Widget>);
|
||||||
|
// pops all widgets above a menu
|
||||||
|
static void PopToMenu();
|
||||||
|
|
||||||
// this is thread safe (todo: make it thread safe)
|
// this is thread safe
|
||||||
static void Notify(std::string text, ui::NotifEntry::Side side = ui::NotifEntry::Side::RIGHT);
|
static void Notify(std::string text, ui::NotifEntry::Side side = ui::NotifEntry::Side::RIGHT);
|
||||||
static void Notify(ui::NotifEntry entry);
|
static void Notify(ui::NotifEntry entry);
|
||||||
static void NotifyPop(ui::NotifEntry::Side side = ui::NotifEntry::Side::RIGHT);
|
static void NotifyPop(ui::NotifEntry::Side side = ui::NotifEntry::Side::RIGHT);
|
||||||
static void NotifyClear(ui::NotifEntry::Side side = ui::NotifEntry::Side::RIGHT);
|
static void NotifyClear(ui::NotifEntry::Side side = ui::NotifEntry::Side::RIGHT);
|
||||||
|
static void NotifyFlashLed();
|
||||||
|
|
||||||
|
// if R_FAILED(rc), pushes error box. returns rc passed in.
|
||||||
|
static Result PushErrorBox(Result rc, const std::string& message);
|
||||||
|
|
||||||
static auto GetThemeMetaList() -> std::span<ThemeMeta>;
|
static auto GetThemeMetaList() -> std::span<ThemeMeta>;
|
||||||
static void SetTheme(u64 theme_index);
|
static void SetTheme(s64 theme_index);
|
||||||
static auto GetThemeIndex() -> u64;
|
static auto GetThemeIndex() -> s64;
|
||||||
|
|
||||||
|
static auto GetDefaultImage() -> int;
|
||||||
|
static auto GetDefaultImageData() -> std::span<const u8>;
|
||||||
|
|
||||||
// returns argv[0]
|
// returns argv[0]
|
||||||
static auto GetExePath() -> fs::FsPath;
|
static auto GetExePath() -> fs::FsPath;
|
||||||
// returns true if we are hbmenu.
|
// returns true if we are hbmenu.
|
||||||
static auto IsHbmenu() -> bool;
|
static auto IsHbmenu() -> bool;
|
||||||
|
|
||||||
|
static auto GetMtpEnable() -> bool;
|
||||||
|
static auto GetFtpEnable() -> bool;
|
||||||
static auto GetNxlinkEnable() -> bool;
|
static auto GetNxlinkEnable() -> bool;
|
||||||
|
static auto GetHddEnable() -> bool;
|
||||||
|
static auto GetWriteProtect() -> bool;
|
||||||
static auto GetLogEnable() -> bool;
|
static auto GetLogEnable() -> bool;
|
||||||
static auto GetReplaceHbmenuEnable() -> bool;
|
static auto GetReplaceHbmenuEnable() -> bool;
|
||||||
|
static auto GetInstallEnable() -> bool;
|
||||||
|
static auto GetInstallSysmmcEnable() -> bool;
|
||||||
|
static auto GetInstallEmummcEnable() -> bool;
|
||||||
static auto GetInstallSdEnable() -> bool;
|
static auto GetInstallSdEnable() -> bool;
|
||||||
static auto GetThemeShuffleEnable() -> bool;
|
static auto GetInstallPrompt() -> bool;
|
||||||
static auto GetThemeMusicEnable() -> bool;
|
static auto GetThemeMusicEnable() -> bool;
|
||||||
|
static auto Get12HourTimeEnable() -> bool;
|
||||||
static auto GetLanguage() -> long;
|
static auto GetLanguage() -> long;
|
||||||
|
static auto GetTextScrollSpeed() -> long;
|
||||||
|
|
||||||
|
static void SetMtpEnable(bool enable);
|
||||||
|
static void SetFtpEnable(bool enable);
|
||||||
static void SetNxlinkEnable(bool enable);
|
static void SetNxlinkEnable(bool enable);
|
||||||
|
static void SetHddEnable(bool enable);
|
||||||
|
static void SetWriteProtect(bool enable);
|
||||||
static void SetLogEnable(bool enable);
|
static void SetLogEnable(bool enable);
|
||||||
static void SetReplaceHbmenuEnable(bool enable);
|
static void SetReplaceHbmenuEnable(bool enable);
|
||||||
|
static void SetInstallSysmmcEnable(bool enable);
|
||||||
|
static void SetInstallEmummcEnable(bool enable);
|
||||||
static void SetInstallSdEnable(bool enable);
|
static void SetInstallSdEnable(bool enable);
|
||||||
static void SetThemeShuffleEnable(bool enable);
|
static void SetInstallPrompt(bool enable);
|
||||||
static void SetThemeMusicEnable(bool enable);
|
static void SetThemeMusicEnable(bool enable);
|
||||||
|
static void Set12HourTimeEnable(bool enable);
|
||||||
static void SetLanguage(long index);
|
static void SetLanguage(long index);
|
||||||
|
static void SetTextScrollSpeed(long index);
|
||||||
|
|
||||||
static auto Install(OwoConfig& config) -> Result;
|
static auto Install(OwoConfig& config) -> Result;
|
||||||
static auto Install(ui::ProgressBox* pbox, OwoConfig& config) -> Result;
|
static auto Install(ui::ProgressBox* pbox, OwoConfig& config) -> Result;
|
||||||
|
|
||||||
static void PlaySoundEffect(SoundEffect effect);
|
static void PlaySoundEffect(SoundEffect effect);
|
||||||
|
|
||||||
|
static void DisplayThemeOptions(bool left_side = true);
|
||||||
|
// todo:
|
||||||
|
static void DisplayNetworkOptions(bool left_side = true);
|
||||||
|
static void DisplayMiscOptions(bool left_side = true);
|
||||||
|
static void DisplayAdvancedOptions(bool left_side = true);
|
||||||
|
static void DisplayInstallOptions(bool left_side = true);
|
||||||
|
static void DisplayDumpOptions(bool left_side = true);
|
||||||
|
|
||||||
void Draw();
|
void Draw();
|
||||||
void Update();
|
void Update();
|
||||||
void Poll();
|
void Poll();
|
||||||
|
|
||||||
void DrawBackground();
|
|
||||||
void DrawTouch();
|
|
||||||
|
|
||||||
// void DrawElement(float x, float y, float w, float h, ui::ThemeEntryID id);
|
// void DrawElement(float x, float y, float w, float h, ui::ThemeEntryID id);
|
||||||
auto LoadElementImage(std::string_view value) -> ElementEntry;
|
auto LoadElementImage(std::string_view value) -> ElementEntry;
|
||||||
auto LoadElementColour(std::string_view value) -> ElementEntry;
|
auto LoadElementColour(std::string_view value) -> ElementEntry;
|
||||||
auto LoadElement(std::string_view data) -> ElementEntry;
|
auto LoadElement(std::string_view data, ElementType type) -> ElementEntry;
|
||||||
|
|
||||||
void LoadTheme(const fs::FsPath& path);
|
void LoadTheme(const ThemeMeta& meta);
|
||||||
void CloseTheme();
|
void CloseTheme();
|
||||||
void ScanThemes(const std::string& path);
|
void ScanThemes(const std::string& path);
|
||||||
void ScanThemeEntries();
|
void ScanThemeEntries();
|
||||||
|
|
||||||
|
// helper that converts 1.2.3 to a u32 used for comparisons.
|
||||||
|
static auto GetVersionFromString(const char* str) -> u32;
|
||||||
|
static auto IsVersionNewer(const char* current, const char* new_version) -> u32;
|
||||||
|
|
||||||
static auto IsApplication() -> bool {
|
static auto IsApplication() -> bool {
|
||||||
const auto type = appletGetAppletType();
|
const auto type = appletGetAppletType();
|
||||||
return type == AppletType_Application || type == AppletType_SystemApplication;
|
return type == AppletType_Application || type == AppletType_SystemApplication;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static auto IsApplet() -> bool {
|
||||||
|
return !IsApplication();
|
||||||
|
}
|
||||||
|
|
||||||
|
// returns true if launched in applet mode with a title suspended in the background.
|
||||||
|
static auto IsAppletWithSuspendedApp() -> bool {
|
||||||
|
R_UNLESS(IsApplet(), false);
|
||||||
|
R_TRY_RESULT(pmdmntInitialize(), false);
|
||||||
|
ON_SCOPE_EXIT(pmdmntExit());
|
||||||
|
|
||||||
|
u64 pid;
|
||||||
|
return R_SUCCEEDED(pmdmntGetApplicationProcessId(&pid));
|
||||||
|
}
|
||||||
|
|
||||||
|
static auto IsEmunand() -> bool {
|
||||||
|
alignas(0x1000) struct EmummcPaths {
|
||||||
|
char unk[0x80];
|
||||||
|
char nintendo[0x80];
|
||||||
|
} paths{};
|
||||||
|
|
||||||
|
SecmonArgs args{};
|
||||||
|
args.X[0] = 0xF0000404; /* smcAmsGetEmunandConfig */
|
||||||
|
args.X[1] = 0; /* EXO_EMUMMC_MMC_NAND*/
|
||||||
|
args.X[2] = (u64)&paths; /* out path */
|
||||||
|
svcCallSecureMonitor(&args);
|
||||||
|
|
||||||
|
return (paths.unk[0] != '\0') || (paths.nintendo[0] != '\0');
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SetAutoSleepDisabled(bool enable) {
|
||||||
|
static Mutex mutex{};
|
||||||
|
static int ref_count{};
|
||||||
|
|
||||||
|
mutexLock(&mutex);
|
||||||
|
ON_SCOPE_EXIT(mutexUnlock(&mutex));
|
||||||
|
|
||||||
|
if (enable) {
|
||||||
|
appletSetAutoSleepDisabled(true);
|
||||||
|
ref_count++;
|
||||||
|
} else {
|
||||||
|
if (ref_count) {
|
||||||
|
ref_count--;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ref_count) {
|
||||||
|
appletSetAutoSleepDisabled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// private:
|
// private:
|
||||||
static constexpr inline auto CONFIG_PATH = "/config/sphaira/config.ini";
|
static constexpr inline auto CONFIG_PATH = "/config/sphaira/config.ini";
|
||||||
static constexpr inline auto PLAYLOG_PATH = "/config/sphaira/playlog.ini";
|
static constexpr inline auto PLAYLOG_PATH = "/config/sphaira/playlog.ini";
|
||||||
static constexpr inline auto INI_SECTION = "config";
|
static constexpr inline auto INI_SECTION = "config";
|
||||||
|
static constexpr inline auto DEFAULT_THEME_PATH = "romfs:/themes/abyss_theme.ini";
|
||||||
|
|
||||||
fs::FsPath m_app_path;
|
fs::FsPath m_app_path;
|
||||||
u64 m_start_timestamp{};
|
u64 m_start_timestamp{};
|
||||||
u64 m_prev_timestamp{};
|
int m_default_image{};
|
||||||
fs::FsPath m_prev_last_launch{};
|
|
||||||
|
|
||||||
bool m_is_launched_via_sphaira_forwader{};
|
bool m_is_launched_via_sphaira_forwader{};
|
||||||
|
|
||||||
@@ -131,20 +223,59 @@ public:
|
|||||||
|
|
||||||
Theme m_theme{};
|
Theme m_theme{};
|
||||||
fs::FsPath theme_path{};
|
fs::FsPath theme_path{};
|
||||||
std::size_t m_theme_index{};
|
s64 m_theme_index{};
|
||||||
|
|
||||||
bool m_quit{};
|
bool m_quit{};
|
||||||
|
|
||||||
|
// network
|
||||||
option::OptionBool m_nxlink_enabled{INI_SECTION, "nxlink_enabled", true};
|
option::OptionBool m_nxlink_enabled{INI_SECTION, "nxlink_enabled", true};
|
||||||
|
option::OptionBool m_mtp_enabled{INI_SECTION, "mtp_enabled", false};
|
||||||
|
option::OptionBool m_ftp_enabled{INI_SECTION, "ftp_enabled", false};
|
||||||
|
option::OptionBool m_hdd_enabled{INI_SECTION, "hdd_enabled", true};
|
||||||
|
option::OptionBool m_hdd_write_protect{INI_SECTION, "hdd_write_protect", false};
|
||||||
|
|
||||||
option::OptionBool m_log_enabled{INI_SECTION, "log_enabled", false};
|
option::OptionBool m_log_enabled{INI_SECTION, "log_enabled", false};
|
||||||
option::OptionBool m_replace_hbmenu{INI_SECTION, "replace_hbmenu", false};
|
option::OptionBool m_replace_hbmenu{INI_SECTION, "replace_hbmenu", false};
|
||||||
option::OptionBool m_install_sd{INI_SECTION, "install_sd", true};
|
option::OptionString m_theme_path{INI_SECTION, "theme", DEFAULT_THEME_PATH};
|
||||||
option::OptionBool m_theme_shuffle{INI_SECTION, "theme_shuffle", false};
|
|
||||||
option::OptionBool m_theme_music{INI_SECTION, "theme_music", true};
|
option::OptionBool m_theme_music{INI_SECTION, "theme_music", true};
|
||||||
|
option::OptionBool m_12hour_time{INI_SECTION, "12hour_time", false};
|
||||||
option::OptionLong m_language{INI_SECTION, "language", 0}; // auto
|
option::OptionLong m_language{INI_SECTION, "language", 0}; // auto
|
||||||
|
option::OptionString m_left_menu{INI_SECTION, "left_side_menu", "FileBrowser"};
|
||||||
|
option::OptionString m_right_menu{INI_SECTION, "right_side_menu", "Appstore"};
|
||||||
|
option::OptionBool m_progress_boost_mode{INI_SECTION, "progress_boost_mode", true};
|
||||||
|
|
||||||
PLSR_BFSAR m_qlaunch_bfsar{};
|
// install options
|
||||||
PLSR_PlayerSoundId m_sound_ids[24]{};
|
option::OptionBool m_install_sysmmc{INI_SECTION, "install_sysmmc", false};
|
||||||
|
option::OptionBool m_install_emummc{INI_SECTION, "install_emummc", false};
|
||||||
|
option::OptionBool m_install_sd{INI_SECTION, "install_sd", true};
|
||||||
|
option::OptionLong m_install_prompt{INI_SECTION, "install_prompt", true};
|
||||||
|
option::OptionBool m_allow_downgrade{INI_SECTION, "allow_downgrade", false};
|
||||||
|
option::OptionBool m_skip_if_already_installed{INI_SECTION, "skip_if_already_installed", true};
|
||||||
|
option::OptionBool m_ticket_only{INI_SECTION, "ticket_only", false};
|
||||||
|
option::OptionBool m_skip_base{INI_SECTION, "skip_base", false};
|
||||||
|
option::OptionBool m_skip_patch{INI_SECTION, "skip_patch", false};
|
||||||
|
option::OptionBool m_skip_addon{INI_SECTION, "skip_addon", false};
|
||||||
|
option::OptionBool m_skip_data_patch{INI_SECTION, "skip_data_patch", false};
|
||||||
|
option::OptionBool m_skip_ticket{INI_SECTION, "skip_ticket", false};
|
||||||
|
option::OptionBool m_skip_nca_hash_verify{INI_SECTION, "skip_nca_hash_verify", false};
|
||||||
|
option::OptionBool m_skip_rsa_header_fixed_key_verify{INI_SECTION, "skip_rsa_header_fixed_key_verify", false};
|
||||||
|
option::OptionBool m_skip_rsa_npdm_fixed_key_verify{INI_SECTION, "skip_rsa_npdm_fixed_key_verify", false};
|
||||||
|
option::OptionBool m_ignore_distribution_bit{INI_SECTION, "ignore_distribution_bit", false};
|
||||||
|
option::OptionBool m_convert_to_standard_crypto{INI_SECTION, "convert_to_standard_crypto", false};
|
||||||
|
option::OptionBool m_lower_master_key{INI_SECTION, "lower_master_key", false};
|
||||||
|
option::OptionBool m_lower_system_version{INI_SECTION, "lower_system_version", false};
|
||||||
|
|
||||||
|
// dump options
|
||||||
|
option::OptionBool m_dump_app_folder{"dump", "app_folder", true};
|
||||||
|
option::OptionBool m_dump_append_folder_with_xci{"dump", "append_folder_with_xci", true};
|
||||||
|
option::OptionBool m_dump_trim_xci{"dump", "trim_xci", false};
|
||||||
|
option::OptionBool m_dump_label_trim_xci{"dump", "label_trim_xci", false};
|
||||||
|
option::OptionBool m_dump_usb_transfer_stream{"dump", "usb_transfer_stream", true};
|
||||||
|
|
||||||
|
// todo: move this into it's own menu
|
||||||
|
option::OptionLong m_text_scroll_speed{"accessibility", "text_scroll_speed", 1}; // normal
|
||||||
|
|
||||||
|
PLSR_PlayerSoundId m_sound_ids[SoundEffect_MAX]{};
|
||||||
|
|
||||||
private: // from nanovg decko3d example by adubbz
|
private: // from nanovg decko3d example by adubbz
|
||||||
static constexpr unsigned NumFramebuffers = 2;
|
static constexpr unsigned NumFramebuffers = 2;
|
||||||
|
|||||||
@@ -224,18 +224,18 @@ enum SvcError {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum FsError {
|
enum FsError {
|
||||||
FsError_ResultPathNotFound = 0x202,
|
FsError_PathNotFound = 0x202,
|
||||||
FsError_ResultPathAlreadyExists = 0x402,
|
FsError_PathAlreadyExists = 0x402,
|
||||||
FsError_ResultTargetLocked = 0xE02,
|
FsError_TargetLocked = 0xE02,
|
||||||
FsError_UsableSpaceNotEnoughMmcCalibration = 0x4602,
|
FsError_UsableSpaceNotEnoughMmcCalibration = 0x4602,
|
||||||
FsError_UsableSpaceNotEnoughMmcSafe = 0x4802,
|
FsError_UsableSpaceNotEnoughMmcSafe = 0x4802,
|
||||||
FsError_UsableSpaceNotEnoughMmcUser = 0x4A02,
|
FsError_UsableSpaceNotEnoughMmcUser = 0x4A02,
|
||||||
FsError_UsableSpaceNotEnoughMmcSystem = 0x4C02,
|
FsError_UsableSpaceNotEnoughMmcSystem = 0x4C02,
|
||||||
FsError_ResultUsableSpaceNotEnoughSdCard = 0x4E02,
|
FsError_UsableSpaceNotEnoughSdCard = 0x4E02,
|
||||||
FsError_ResultUnsupportedSdkVersion = 0x6402,
|
FsError_UnsupportedSdkVersion = 0x6402,
|
||||||
FsError_ResultMountNameAlreadyExists = 0x7802,
|
FsError_MountNameAlreadyExists = 0x7802,
|
||||||
FsError_ResultPartitionNotFound = 0x7D202,
|
FsError_PartitionNotFound = 0x7D202,
|
||||||
FsError_ResultTargetNotFound = 0x7D402,
|
FsError_TargetNotFound = 0x7D402,
|
||||||
FsError_PortSdCardNoDevice = 0xFA202,
|
FsError_PortSdCardNoDevice = 0xFA202,
|
||||||
FsError_GameCardCardNotInserted = 0x13B002,
|
FsError_GameCardCardNotInserted = 0x13B002,
|
||||||
FsError_GameCardCardNotActivated = 0x13B402,
|
FsError_GameCardCardNotActivated = 0x13B402,
|
||||||
@@ -286,9 +286,9 @@ enum FsError {
|
|||||||
FsError_GameCardFsCheckHandleInGetStatusFailure = 0x171402,
|
FsError_GameCardFsCheckHandleInGetStatusFailure = 0x171402,
|
||||||
FsError_GameCardFsCheckHandleInCreateReadOnlyFailure = 0x172002,
|
FsError_GameCardFsCheckHandleInCreateReadOnlyFailure = 0x172002,
|
||||||
FsError_GameCardFsCheckHandleInCreateSecureReadOnlyFailure = 0x172202,
|
FsError_GameCardFsCheckHandleInCreateSecureReadOnlyFailure = 0x172202,
|
||||||
FsError_ResultNotImplemented = 0x177202,
|
FsError_NotImplemented = 0x177202,
|
||||||
FsError_ResultAlreadyExists = 0x177602,
|
FsError_AlreadyExists = 0x177602,
|
||||||
FsError_ResultOutOfRange = 0x177A02,
|
FsError_OutOfRange = 0x177A02,
|
||||||
FsError_AllocationMemoryFailedInFatFileSystemA = 0x190202,
|
FsError_AllocationMemoryFailedInFatFileSystemA = 0x190202,
|
||||||
FsError_AllocationMemoryFailedInFatFileSystemB = 0x190402,
|
FsError_AllocationMemoryFailedInFatFileSystemB = 0x190402,
|
||||||
FsError_AllocationMemoryFailedInFatFileSystemC = 0x190602,
|
FsError_AllocationMemoryFailedInFatFileSystemC = 0x190602,
|
||||||
@@ -348,18 +348,18 @@ enum FsError {
|
|||||||
FsError_FatFsFormatIllegalSectorsC = 0x280C02,
|
FsError_FatFsFormatIllegalSectorsC = 0x280C02,
|
||||||
FsError_FatFsFormatIllegalSectorsD = 0x280E02,
|
FsError_FatFsFormatIllegalSectorsD = 0x280E02,
|
||||||
FsError_UnexpectedInMountTableA = 0x296A02,
|
FsError_UnexpectedInMountTableA = 0x296A02,
|
||||||
FsError_ResultTooLongPath = 0x2EE602,
|
FsError_TooLongPath = 0x2EE602,
|
||||||
FsError_ResultInvalidCharacter = 0x2EE802,
|
FsError_InvalidCharacter = 0x2EE802,
|
||||||
FsError_ResultInvalidPathFormat = 0x2EEA02,
|
FsError_InvalidPathFormat = 0x2EEA02,
|
||||||
FsError_ResultDirectoryUnobtainable = 0x2EEC02,
|
FsError_DirectoryUnobtainable = 0x2EEC02,
|
||||||
FsError_ResultInvalidOffset = 0x2F5A02,
|
FsError_InvalidOffset = 0x2F5A02,
|
||||||
FsError_ResultInvalidSize = 0x2F5C02,
|
FsError_InvalidSize = 0x2F5C02,
|
||||||
FsError_ResultNullptrArgument = 0x2F5E02,
|
FsError_NullptrArgument = 0x2F5E02,
|
||||||
FsError_ResultInvalidAlignment = 0x2F6002,
|
FsError_InvalidAlignment = 0x2F6002,
|
||||||
FsError_ResultInvalidMountName = 0x2F6202,
|
FsError_InvalidMountName = 0x2F6202,
|
||||||
FsError_ResultExtensionSizeTooLarge = 0x2F6402,
|
FsError_ExtensionSizeTooLarge = 0x2F6402,
|
||||||
FsError_ResultExtensionSizeInvalid = 0x2F6602,
|
FsError_ExtensionSizeInvalid = 0x2F6602,
|
||||||
FsError_ResultFileExtensionWithoutOpenModeAllowAppend = 0x307202,
|
FsError_FileExtensionWithoutOpenModeAllowAppend = 0x307202,
|
||||||
FsError_UnsupportedCommitTarget = 0x313A02,
|
FsError_UnsupportedCommitTarget = 0x313A02,
|
||||||
FsError_UnsupportedSetSizeForNotResizableSubStorage = 0x313C02,
|
FsError_UnsupportedSetSizeForNotResizableSubStorage = 0x313C02,
|
||||||
FsError_UnsupportedSetSizeForResizableSubStorage = 0x313E02,
|
FsError_UnsupportedSetSizeForResizableSubStorage = 0x313E02,
|
||||||
@@ -444,14 +444,14 @@ enum FsError {
|
|||||||
FsError_UnsupportedCommitProvisionallyForDirectorySaveDataFileSystem = 0x31E002,
|
FsError_UnsupportedCommitProvisionallyForDirectorySaveDataFileSystem = 0x31E002,
|
||||||
FsError_UnsupportedWriteForZeroBitmapHashStorageFile = 0x31E202,
|
FsError_UnsupportedWriteForZeroBitmapHashStorageFile = 0x31E202,
|
||||||
FsError_UnsupportedSetSizeForZeroBitmapHashStorageFile = 0x31E402,
|
FsError_UnsupportedSetSizeForZeroBitmapHashStorageFile = 0x31E402,
|
||||||
FsError_ResultNcaExternalKeyUnregisteredDeprecated = 0x326602,
|
FsError_NcaExternalKeyUnregisteredDeprecated = 0x326602,
|
||||||
FsError_ResultFileNotClosed = 0x326E02,
|
FsError_FileNotClosed = 0x326E02,
|
||||||
FsError_ResultDirectoryNotClosed = 0x327002,
|
FsError_DirectoryNotClosed = 0x327002,
|
||||||
FsError_ResultWriteModeFileNotClosed = 0x327202,
|
FsError_WriteModeFileNotClosed = 0x327202,
|
||||||
FsError_ResultAllocatorAlreadyRegistered = 0x327402,
|
FsError_AllocatorAlreadyRegistered = 0x327402,
|
||||||
FsError_ResultDefaultAllocatorAlreadyUsed = 0x327602,
|
FsError_DefaultAllocatorAlreadyUsed = 0x327602,
|
||||||
FsError_ResultAllocatorAlignmentViolation = 0x327A02,
|
FsError_AllocatorAlignmentViolation = 0x327A02,
|
||||||
FsError_ResultUserNotExist = 0x328202,
|
FsError_UserNotExist = 0x328202,
|
||||||
FsError_FileNotFound = 0x339402,
|
FsError_FileNotFound = 0x339402,
|
||||||
FsError_DirectoryNotFound = 0x339602,
|
FsError_DirectoryNotFound = 0x339602,
|
||||||
FsError_MappingTableFull = 0x346402,
|
FsError_MappingTableFull = 0x346402,
|
||||||
|
|||||||
@@ -1,41 +1,357 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "fs.hpp"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <unordered_map>
|
||||||
|
#include <algorithm>
|
||||||
|
#include <stop_token>
|
||||||
#include <switch.h>
|
#include <switch.h>
|
||||||
|
|
||||||
namespace sphaira {
|
namespace sphaira::curl {
|
||||||
|
|
||||||
using DownloadCallback = std::function<void(std::vector<u8>& data, bool success)>;
|
enum {
|
||||||
using ProgressCallback = std::function<bool(u32 dltotal, u32 dlnow, u32 ultotal, u32 ulnow)>;
|
Flag_None = 0,
|
||||||
|
|
||||||
enum class DownloadPriority {
|
// requests to download send etag in the header.
|
||||||
|
// the received etag is then saved on success.
|
||||||
|
// this api is only available on downloading to file.
|
||||||
|
Flag_Cache = 1 << 0,
|
||||||
|
|
||||||
|
// sets CURLOPT_NOBODY.
|
||||||
|
Flag_NoBody = 1 << 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class Priority {
|
||||||
Normal, // gets pushed to the back of the queue
|
Normal, // gets pushed to the back of the queue
|
||||||
High, // gets pushed to the front of the queue
|
High, // gets pushed to the front of the queue
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DownloadEventData {
|
struct Api;
|
||||||
DownloadCallback callback;
|
struct ApiResult;
|
||||||
std::vector<u8> data;
|
|
||||||
bool result;
|
using Path = fs::FsPath;
|
||||||
|
using OnComplete = std::function<void(ApiResult& result)>;
|
||||||
|
using OnProgress = std::function<bool(s64 dltotal, s64 dlnow, s64 ultotal, s64 ulnow)>;
|
||||||
|
using OnUploadCallback = std::function<size_t(void *ptr, size_t size)>;
|
||||||
|
using OnUploadSeek = std::function<bool(s64 offset)>;
|
||||||
|
using StopToken = std::stop_token;
|
||||||
|
|
||||||
|
struct Url {
|
||||||
|
Url() = default;
|
||||||
|
Url(const std::string& str) : m_str{str} {}
|
||||||
|
std::string m_str;
|
||||||
};
|
};
|
||||||
|
|
||||||
auto DownloadInit() -> bool;
|
struct Fields {
|
||||||
void DownloadExit();
|
Fields() = default;
|
||||||
|
Fields(const std::string& str) : m_str{str} {}
|
||||||
|
std::string m_str;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Header {
|
||||||
|
Header() = default;
|
||||||
|
Header(std::initializer_list<std::pair<const std::string, std::string>> p) : m_map{p} {}
|
||||||
|
std::unordered_map<std::string, std::string> m_map;
|
||||||
|
|
||||||
|
auto Find(const std::string& key) const {
|
||||||
|
return std::find_if(m_map.cbegin(), m_map.cend(), [&key](auto& e) {
|
||||||
|
return !strcasecmp(key.c_str(), e.first.c_str());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Flags {
|
||||||
|
Flags() = default;
|
||||||
|
Flags(u32 flags) : m_flags{flags} {}
|
||||||
|
u32 m_flags{Flag_None};
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Port {
|
||||||
|
Port() = default;
|
||||||
|
Port(u16 port) : m_port{port} {}
|
||||||
|
u16 m_port{};
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CustomRequest {
|
||||||
|
CustomRequest() = default;
|
||||||
|
CustomRequest(const std::string& str) : m_str{str} {}
|
||||||
|
std::string m_str;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct UserPass {
|
||||||
|
UserPass() = default;
|
||||||
|
UserPass(const std::string& user) : m_user{user} {}
|
||||||
|
UserPass(const std::string& user, const std::string& pass) : m_user{user}, m_pass{pass} {}
|
||||||
|
std::string m_user;
|
||||||
|
std::string m_pass;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct UploadInfo {
|
||||||
|
UploadInfo() = default;
|
||||||
|
UploadInfo(const std::string& name) : m_name{name} {}
|
||||||
|
UploadInfo(const std::string& name, s64 size, OnUploadCallback cb) : m_name{name}, m_size{size}, m_callback{cb} {}
|
||||||
|
UploadInfo(const std::string& name, const std::vector<u8>& data) : m_name{name}, m_data{data} {}
|
||||||
|
std::string m_name{};
|
||||||
|
std::vector<u8> m_data{};
|
||||||
|
s64 m_size{};
|
||||||
|
OnUploadCallback m_callback{};
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Bearer {
|
||||||
|
Bearer() = default;
|
||||||
|
Bearer(const std::string& str) : m_str{str} {}
|
||||||
|
std::string m_str;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PubKey {
|
||||||
|
PubKey() = default;
|
||||||
|
PubKey(const std::string& str) : m_str{str} {}
|
||||||
|
std::string m_str;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PrivKey {
|
||||||
|
PrivKey() = default;
|
||||||
|
PrivKey(const std::string& str) : m_str{str} {}
|
||||||
|
std::string m_str;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ApiResult {
|
||||||
|
bool success;
|
||||||
|
long code;
|
||||||
|
Header header; // returned headers in request
|
||||||
|
std::vector<u8> data; // empty if downloaded a file
|
||||||
|
fs::FsPath path; // empty if downloaded memory
|
||||||
|
};
|
||||||
|
|
||||||
|
struct DownloadEventData {
|
||||||
|
OnComplete callback;
|
||||||
|
ApiResult result;
|
||||||
|
StopToken stoken;
|
||||||
|
};
|
||||||
|
|
||||||
|
// helper that generates the api using an location.
|
||||||
|
#define CURL_LOCATION_TO_API(loc) \
|
||||||
|
curl::Url{loc.url}, \
|
||||||
|
curl::UserPass{loc.user, loc.pass}, \
|
||||||
|
curl::Bearer{loc.bearer}, \
|
||||||
|
curl::PubKey{loc.pub_key}, \
|
||||||
|
curl::PrivKey{loc.priv_key}, \
|
||||||
|
curl::Port(loc.port)
|
||||||
|
|
||||||
|
auto Init() -> bool;
|
||||||
|
void Exit();
|
||||||
|
|
||||||
// sync functions
|
// sync functions
|
||||||
auto DownloadMemory(const std::string& url, const std::string& post, ProgressCallback pcallback = nullptr) -> std::vector<u8>;
|
auto ToMemory(const Api& e) -> ApiResult;
|
||||||
auto DownloadFile(const std::string& url, const std::string& out, const std::string& post, ProgressCallback pcallback = nullptr) -> bool;
|
auto ToFile(const Api& e) -> ApiResult;
|
||||||
|
auto FromMemory(const Api& e) -> ApiResult;
|
||||||
|
auto FromFile(const Api& e) -> ApiResult;
|
||||||
|
|
||||||
// async functions
|
// async functions
|
||||||
// starts the downloads in a new thread, pushes an event when complete
|
auto ToMemoryAsync(const Api& e) -> bool;
|
||||||
// then, the callback will be called on the main thread.
|
auto ToFileAsync(const Api& e) -> bool;
|
||||||
// auto DownloadMemoryAsync(const std::string& url, DownloadCallback callback, DownloadPriority prio = DownloadPriority::Normal) -> bool;
|
auto FromMemoryAsync(const Api& e) -> bool;
|
||||||
// auto DownloadFileAsync(const std::string& url, const std::string& out, DownloadCallback callback, DownloadPriority prio = DownloadPriority::Normal) -> bool;
|
auto FromFileAsync(const Api& e) -> bool;
|
||||||
|
|
||||||
auto DownloadMemoryAsync(const std::string& url, const std::string& post, DownloadCallback callback, ProgressCallback pcallback = nullptr, DownloadPriority prio = DownloadPriority::Normal) -> bool;
|
// uses curl to convert string to their %XX
|
||||||
auto DownloadFileAsync(const std::string& url, const std::string& out, const std::string& post, DownloadCallback callback, ProgressCallback pcallback = nullptr, DownloadPriority prio = DownloadPriority::Normal) -> bool;
|
auto EscapeString(const std::string& str) -> std::string;
|
||||||
|
|
||||||
void DownloadClearCache(const std::string& url);
|
struct Api {
|
||||||
|
Api() = default;
|
||||||
|
|
||||||
} // namespace sphaira
|
template <typename... Ts>
|
||||||
|
Api(Ts&&... ts) {
|
||||||
|
Api::set_option(std::forward<Ts>(ts)...);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename... Ts>
|
||||||
|
auto To(Ts&&... ts) {
|
||||||
|
if constexpr(std::disjunction_v<std::is_same<Path, Ts>...>) {
|
||||||
|
return ToFile(std::forward<Ts>(ts)...);
|
||||||
|
} else {
|
||||||
|
return ToMemory(std::forward<Ts>(ts)...);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename... Ts>
|
||||||
|
auto From(Ts&&... ts) {
|
||||||
|
if constexpr(std::disjunction_v<std::is_same<Path, Ts>...>) {
|
||||||
|
return FromFile(std::forward<Ts>(ts)...);
|
||||||
|
} else {
|
||||||
|
return FromMemory(std::forward<Ts>(ts)...);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename... Ts>
|
||||||
|
auto ToAsync(Ts&&... ts) {
|
||||||
|
if constexpr(std::disjunction_v<std::is_same<Path, Ts>...>) {
|
||||||
|
return ToFileAsync(std::forward<Ts>(ts)...);
|
||||||
|
} else {
|
||||||
|
return ToMemoryAsync(std::forward<Ts>(ts)...);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename... Ts>
|
||||||
|
auto FromAsync(Ts&&... ts) {
|
||||||
|
if constexpr(std::disjunction_v<std::is_same<Path, Ts>...>) {
|
||||||
|
return FromFileAsync(std::forward<Ts>(ts)...);
|
||||||
|
} else {
|
||||||
|
return FromMemoryAsync(std::forward<Ts>(ts)...);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename... Ts>
|
||||||
|
auto ToMemory(Ts&&... ts) {
|
||||||
|
static_assert(std::disjunction_v<std::is_same<Url, Ts>...>, "Url must be specified");
|
||||||
|
static_assert(!std::disjunction_v<std::is_same<Path, Ts>...>, "Path must not valid for memory");
|
||||||
|
static_assert(!std::disjunction_v<std::is_same<OnComplete, Ts>...>, "OnComplete must not be specified");
|
||||||
|
Api::set_option(std::forward<Ts>(ts)...);
|
||||||
|
return curl::ToMemory(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename... Ts>
|
||||||
|
auto FromMemory(Ts&&... ts) {
|
||||||
|
static_assert(std::disjunction_v<std::is_same<Url, Ts>...>, "Url must be specified");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<UploadInfo, Ts>...>, "UploadInfo must be specified");
|
||||||
|
static_assert(!std::disjunction_v<std::is_same<Path, Ts>...>, "Path must not valid for memory");
|
||||||
|
static_assert(!std::disjunction_v<std::is_same<OnComplete, Ts>...>, "OnComplete must not be specified");
|
||||||
|
Api::set_option(std::forward<Ts>(ts)...);
|
||||||
|
return curl::FromMemory(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename... Ts>
|
||||||
|
auto ToFile(Ts&&... ts) {
|
||||||
|
static_assert(std::disjunction_v<std::is_same<Url, Ts>...>, "Url must be specified");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<Path, Ts>...>, "Path must be specified");
|
||||||
|
static_assert(!std::disjunction_v<std::is_same<OnComplete, Ts>...>, "OnComplete must not be specified");
|
||||||
|
Api::set_option(std::forward<Ts>(ts)...);
|
||||||
|
return curl::ToFile(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename... Ts>
|
||||||
|
auto FromFile(Ts&&... ts) {
|
||||||
|
static_assert(std::disjunction_v<std::is_same<Url, Ts>...>, "Url must be specified");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<Path, Ts>...>, "Path must be specified");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<UploadInfo, Ts>...>, "UploadInfo must be specified");
|
||||||
|
static_assert(!std::disjunction_v<std::is_same<OnComplete, Ts>...>, "OnComplete must not be specified");
|
||||||
|
Api::set_option(std::forward<Ts>(ts)...);
|
||||||
|
return curl::FromFile(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename... Ts>
|
||||||
|
auto ToMemoryAsync(Ts&&... ts) {
|
||||||
|
static_assert(std::disjunction_v<std::is_same<Url, Ts>...>, "Url must be specified");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<OnComplete, Ts>...>, "OnComplete must be specified");
|
||||||
|
static_assert(!std::disjunction_v<std::is_same<Path, Ts>...>, "Path must not valid for memory");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<StopToken, Ts>...>, "StopToken must be specified");
|
||||||
|
Api::set_option(std::forward<Ts>(ts)...);
|
||||||
|
return curl::ToMemoryAsync(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename... Ts>
|
||||||
|
auto FromMemoryAsync(Ts&&... ts) {
|
||||||
|
static_assert(std::disjunction_v<std::is_same<Url, Ts>...>, "Url must be specified");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<UploadInfo, Ts>...>, "UploadInfo must be specified");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<OnComplete, Ts>...>, "OnComplete must be specified");
|
||||||
|
static_assert(!std::disjunction_v<std::is_same<Path, Ts>...>, "Path must not valid for memory");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<StopToken, Ts>...>, "StopToken must be specified");
|
||||||
|
Api::set_option(std::forward<Ts>(ts)...);
|
||||||
|
return curl::FromMemoryAsync(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename... Ts>
|
||||||
|
auto ToFileAsync(Ts&&... ts) {
|
||||||
|
static_assert(std::disjunction_v<std::is_same<Url, Ts>...>, "Url must be specified");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<Path, Ts>...>, "Path must be specified");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<OnComplete, Ts>...>, "OnComplete must be specified");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<StopToken, Ts>...>, "StopToken must be specified");
|
||||||
|
Api::set_option(std::forward<Ts>(ts)...);
|
||||||
|
return curl::ToFileAsync(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename... Ts>
|
||||||
|
auto FromFileAsync(Ts&&... ts) {
|
||||||
|
static_assert(std::disjunction_v<std::is_same<Url, Ts>...>, "Url must be specified");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<Path, Ts>...>, "Path must be specified");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<UploadInfo, Ts>...>, "UploadInfo must be specified");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<OnComplete, Ts>...>, "OnComplete must be specified");
|
||||||
|
static_assert(std::disjunction_v<std::is_same<StopToken, Ts>...>, "StopToken must be specified");
|
||||||
|
Api::set_option(std::forward<Ts>(ts)...);
|
||||||
|
return curl::FromFileAsync(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetUpload(bool enable) { m_is_upload = enable; }
|
||||||
|
|
||||||
|
auto IsUpload() const { return m_is_upload; }
|
||||||
|
auto& GetUrl() const { return m_url.m_str; }
|
||||||
|
auto& GetFields() const { return m_fields.m_str; }
|
||||||
|
auto& GetHeader() const { return m_header; }
|
||||||
|
auto& GetFlags() const { return m_flags.m_flags; }
|
||||||
|
auto& GetPath() const { return m_path; }
|
||||||
|
auto& GetPort() const { return m_port.m_port; }
|
||||||
|
auto& GetCustomRequest() const { return m_custom_request.m_str; }
|
||||||
|
auto& GetUserPass() const { return m_userpass; }
|
||||||
|
auto& GetBearer() const { return m_bearer.m_str; }
|
||||||
|
auto& GetPubKey() const { return m_pub_key.m_str; }
|
||||||
|
auto& GetPrivKey() const { return m_priv_key.m_str; }
|
||||||
|
auto& GetUploadInfo() const { return m_info; }
|
||||||
|
auto& GetOnComplete() const { return m_on_complete; }
|
||||||
|
auto& GetOnProgress() const { return m_on_progress; }
|
||||||
|
auto& GetOnUploadSeek() const { return m_on_upload_seek; }
|
||||||
|
auto& GetPriority() const { return m_prio; }
|
||||||
|
auto& GetToken() const { return m_stoken; }
|
||||||
|
|
||||||
|
void SetOption(Url&& v) { m_url = v; }
|
||||||
|
void SetOption(Fields&& v) { m_fields = v; }
|
||||||
|
void SetOption(Header&& v) { m_header = v; }
|
||||||
|
void SetOption(Flags&& v) { m_flags = v; }
|
||||||
|
void SetOption(Path&& v) { m_path = v; }
|
||||||
|
void SetOption(Port&& v) { m_port = v; }
|
||||||
|
void SetOption(CustomRequest&& v) { m_custom_request = v; }
|
||||||
|
void SetOption(UserPass&& v) { m_userpass = v; }
|
||||||
|
void SetOption(Bearer&& v) { m_bearer = v; }
|
||||||
|
void SetOption(PubKey&& v) { m_pub_key = v; }
|
||||||
|
void SetOption(PrivKey&& v) { m_priv_key = v; }
|
||||||
|
void SetOption(UploadInfo&& v) { m_info = v; }
|
||||||
|
void SetOption(OnComplete&& v) { m_on_complete = v; }
|
||||||
|
void SetOption(OnProgress&& v) { m_on_progress = v; }
|
||||||
|
void SetOption(OnUploadSeek&& v) { m_on_upload_seek = v; }
|
||||||
|
void SetOption(Priority&& v) { m_prio = v; }
|
||||||
|
void SetOption(StopToken&& v) { m_stoken = v; }
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
void set_option(T&& t) {
|
||||||
|
SetOption(std::forward<T>(t));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, typename... Ts>
|
||||||
|
void set_option(T&& t, Ts&&... ts) {
|
||||||
|
set_option(std::forward<T>(t));
|
||||||
|
set_option(std::forward<Ts>(ts)...);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
Url m_url{};
|
||||||
|
Fields m_fields{};
|
||||||
|
Header m_header{};
|
||||||
|
Flags m_flags{};
|
||||||
|
Path m_path{};
|
||||||
|
Port m_port{};
|
||||||
|
CustomRequest m_custom_request{};
|
||||||
|
UserPass m_userpass{};
|
||||||
|
Bearer m_bearer{};
|
||||||
|
PubKey m_pub_key{};
|
||||||
|
PrivKey m_priv_key{};
|
||||||
|
UploadInfo m_info{};
|
||||||
|
OnComplete m_on_complete{};
|
||||||
|
OnProgress m_on_progress{};
|
||||||
|
OnUploadSeek m_on_upload_seek{};
|
||||||
|
Priority m_prio{Priority::High};
|
||||||
|
std::stop_source m_stop_source{};
|
||||||
|
StopToken m_stoken{m_stop_source.get_token()};
|
||||||
|
bool m_is_upload{};
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace sphaira::curl
|
||||||
|
|||||||
46
sphaira/include/dumper.hpp
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "fs.hpp"
|
||||||
|
#include <switch.h>
|
||||||
|
#include <vector>
|
||||||
|
#include <memory>
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
|
namespace sphaira::dump {
|
||||||
|
|
||||||
|
enum DumpLocationType {
|
||||||
|
// dump using native fs.
|
||||||
|
DumpLocationType_SdCard,
|
||||||
|
// dump to usb using tinfoil protocol.
|
||||||
|
DumpLocationType_UsbS2S,
|
||||||
|
// speed test, only reads the data, doesn't write anything.
|
||||||
|
DumpLocationType_DevNull,
|
||||||
|
// dump to stdio, ideal for custom mount points using devoptab, such as hdd.
|
||||||
|
DumpLocationType_Stdio,
|
||||||
|
// dump to custom locations found in locations.ini.
|
||||||
|
DumpLocationType_Network,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum DumpLocationFlag {
|
||||||
|
DumpLocationFlag_SdCard = 1 << DumpLocationType_SdCard,
|
||||||
|
DumpLocationFlag_UsbS2S = 1 << DumpLocationType_UsbS2S,
|
||||||
|
DumpLocationFlag_DevNull = 1 << DumpLocationType_DevNull,
|
||||||
|
DumpLocationFlag_Stdio = 1 << DumpLocationType_Stdio,
|
||||||
|
DumpLocationFlag_Network = 1 << DumpLocationType_Network,
|
||||||
|
DumpLocationFlag_All = DumpLocationFlag_SdCard | DumpLocationFlag_UsbS2S | DumpLocationFlag_DevNull | DumpLocationFlag_Stdio | DumpLocationFlag_Network,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct BaseSource {
|
||||||
|
virtual ~BaseSource() = default;
|
||||||
|
virtual Result Read(const std::string& path, void* buf, s64 off, s64 size, u64* bytes_read) = 0;
|
||||||
|
virtual auto GetName(const std::string& path) const -> std::string = 0;
|
||||||
|
virtual auto GetSize(const std::string& path) const -> s64 = 0;
|
||||||
|
virtual auto GetIcon(const std::string& path) const -> int { return 0; }
|
||||||
|
};
|
||||||
|
|
||||||
|
// called after dump has finished.
|
||||||
|
using OnExit = std::function<void(Result rc)>;
|
||||||
|
|
||||||
|
void Dump(std::shared_ptr<BaseSource> source, const std::vector<fs::FsPath>& paths, OnExit on_exit = [](Result){}, u32 location_flags = DumpLocationFlag_All);
|
||||||
|
|
||||||
|
} // namespace sphaira::dump
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <switch.h>
|
#include <switch.h>
|
||||||
#include <nxlink.h>
|
#include <nxlink.h>
|
||||||
|
#include <haze.h>
|
||||||
#include "download.hpp"
|
#include "download.hpp"
|
||||||
|
|
||||||
namespace sphaira::evman {
|
namespace sphaira::evman {
|
||||||
@@ -23,8 +24,9 @@ struct ExitEventData {
|
|||||||
using EventData = std::variant<
|
using EventData = std::variant<
|
||||||
LaunchNroEventData,
|
LaunchNroEventData,
|
||||||
ExitEventData,
|
ExitEventData,
|
||||||
|
HazeCallbackData,
|
||||||
NxlinkCallbackData,
|
NxlinkCallbackData,
|
||||||
DownloadEventData
|
curl::DownloadEventData
|
||||||
>;
|
>;
|
||||||
|
|
||||||
// returns number of events
|
// returns number of events
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <switch.h>
|
#include <switch.h>
|
||||||
|
#include <dirent.h>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
@@ -169,41 +170,95 @@ static_assert(FsPath::TestFrom(std::string_view{"abc"}));
|
|||||||
static_assert(FsPath::TestFrom(std::string{"abc"}));
|
static_assert(FsPath::TestFrom(std::string{"abc"}));
|
||||||
static_assert(FsPath::TestFrom(FsPath{"abc"}));
|
static_assert(FsPath::TestFrom(FsPath{"abc"}));
|
||||||
|
|
||||||
|
// fwd
|
||||||
|
struct Fs;
|
||||||
|
|
||||||
|
struct File {
|
||||||
|
~File();
|
||||||
|
|
||||||
|
Result Read(s64 off, void* buf, u64 read_size, u32 option, u64* bytes_read);
|
||||||
|
Result Write(s64 off, const void* buf, u64 write_size, u32 option);
|
||||||
|
Result SetSize(s64 sz);
|
||||||
|
Result GetSize(s64* out);
|
||||||
|
void Close();
|
||||||
|
|
||||||
|
fs::Fs* m_fs{};
|
||||||
|
FsFile m_native{};
|
||||||
|
std::FILE* m_stdio{};
|
||||||
|
s64 m_stdio_off{};
|
||||||
|
// sadly, fatfs doesn't support fstat, so we have to manually
|
||||||
|
// stat the file to get it's size.
|
||||||
|
FsPath m_path{};
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Dir {
|
||||||
|
~Dir();
|
||||||
|
|
||||||
|
Result GetEntryCount(s64* out);
|
||||||
|
Result ReadAll(std::vector<FsDirectoryEntry>& buf);
|
||||||
|
void Close();
|
||||||
|
|
||||||
|
fs::Fs* m_fs{};
|
||||||
|
FsDir m_native{};
|
||||||
|
DIR* m_stdio{};
|
||||||
|
u32 m_mode{};
|
||||||
|
};
|
||||||
|
|
||||||
FsPath AppendPath(const fs::FsPath& root_path, const fs::FsPath& file_path);
|
FsPath AppendPath(const fs::FsPath& root_path, const fs::FsPath& file_path);
|
||||||
|
|
||||||
Result CreateFile(FsFileSystem* fs, const FsPath& path, u64 size = 0, u32 option = 0, bool ignore_read_only = false);
|
Result CreateFile(FsFileSystem* fs, const FsPath& path, u64 size = 0, u32 option = 0, bool ignore_read_only = true);
|
||||||
Result CreateDirectory(FsFileSystem* fs, const FsPath& path, bool ignore_read_only = false);
|
Result CreateDirectory(FsFileSystem* fs, const FsPath& path, bool ignore_read_only = true);
|
||||||
Result CreateDirectoryRecursively(FsFileSystem* fs, const FsPath& path, bool ignore_read_only = false);
|
Result CreateDirectoryRecursively(FsFileSystem* fs, const FsPath& path, bool ignore_read_only = true);
|
||||||
Result CreateDirectoryRecursivelyWithPath(FsFileSystem* fs, const FsPath& path, bool ignore_read_only = false);
|
Result CreateDirectoryRecursivelyWithPath(FsFileSystem* fs, const FsPath& path, bool ignore_read_only = true);
|
||||||
Result DeleteFile(FsFileSystem* fs, const FsPath& path, bool ignore_read_only = false);
|
Result DeleteFile(FsFileSystem* fs, const FsPath& path, bool ignore_read_only = true);
|
||||||
Result DeleteDirectory(FsFileSystem* fs, const FsPath& path, bool ignore_read_only = false);
|
Result DeleteDirectory(FsFileSystem* fs, const FsPath& path, bool ignore_read_only = true);
|
||||||
Result DeleteDirectoryRecursively(FsFileSystem* fs, const FsPath& path, bool ignore_read_only = false);
|
Result DeleteDirectoryRecursively(FsFileSystem* fs, const FsPath& path, bool ignore_read_only = true);
|
||||||
Result RenameFile(FsFileSystem* fs, const FsPath& src, const FsPath& dst, bool ignore_read_only = false);
|
Result RenameFile(FsFileSystem* fs, const FsPath& src, const FsPath& dst, bool ignore_read_only = true);
|
||||||
Result RenameDirectory(FsFileSystem* fs, const FsPath& src, const FsPath& dst, bool ignore_read_only = false);
|
Result RenameDirectory(FsFileSystem* fs, const FsPath& src, const FsPath& dst, bool ignore_read_only = true);
|
||||||
Result GetEntryType(FsFileSystem* fs, const FsPath& path, FsDirEntryType* out);
|
Result GetEntryType(FsFileSystem* fs, const FsPath& path, FsDirEntryType* out);
|
||||||
Result GetFileTimeStampRaw(FsFileSystem* fs, const FsPath& path, FsTimeStampRaw *out);
|
Result GetFileTimeStampRaw(FsFileSystem* fs, const FsPath& path, FsTimeStampRaw *out);
|
||||||
|
Result SetTimestamp(FsFileSystem* fs, const FsPath& path, const FsTimeStampRaw* ts);
|
||||||
bool FileExists(FsFileSystem* fs, const FsPath& path);
|
bool FileExists(FsFileSystem* fs, const FsPath& path);
|
||||||
bool DirExists(FsFileSystem* fs, const FsPath& path);
|
bool DirExists(FsFileSystem* fs, const FsPath& path);
|
||||||
Result read_entire_file(FsFileSystem* fs, const FsPath& path, std::vector<u8>& out);
|
Result read_entire_file(FsFileSystem* fs, const FsPath& path, std::vector<u8>& out);
|
||||||
Result write_entire_file(FsFileSystem* fs, const FsPath& path, const std::vector<u8>& in, bool ignore_read_only = false);
|
Result write_entire_file(FsFileSystem* fs, const FsPath& path, const std::vector<u8>& in, bool ignore_read_only = true);
|
||||||
Result copy_entire_file(FsFileSystem* fs, const FsPath& dst, const FsPath& src, bool ignore_read_only = false);
|
Result copy_entire_file(FsFileSystem* fs, const FsPath& dst, const FsPath& src, bool ignore_read_only = true);
|
||||||
|
|
||||||
Result CreateFile(const FsPath& path, u64 size = 0, u32 option = 0, bool ignore_read_only = false);
|
Result CreateFile(const FsPath& path, u64 size = 0, u32 option = 0, bool ignore_read_only = true);
|
||||||
Result CreateDirectory(const FsPath& path, bool ignore_read_only = false);
|
Result CreateDirectory(const FsPath& path, bool ignore_read_only = true);
|
||||||
Result CreateDirectoryRecursively(const FsPath& path, bool ignore_read_only = false);
|
Result CreateDirectoryRecursively(const FsPath& path, bool ignore_read_only = true);
|
||||||
Result CreateDirectoryRecursivelyWithPath(const FsPath& path, bool ignore_read_only = false);
|
Result CreateDirectoryRecursivelyWithPath(const FsPath& path, bool ignore_read_only = true);
|
||||||
Result DeleteFile(const FsPath& path, bool ignore_read_only = false);
|
Result DeleteFile(const FsPath& path, bool ignore_read_only = true);
|
||||||
Result DeleteDirectory(const FsPath& path, bool ignore_read_only = false);
|
Result DeleteDirectory(const FsPath& path, bool ignore_read_only = true);
|
||||||
Result DeleteDirectoryRecursively(const FsPath& path, bool ignore_read_only = false);
|
Result DeleteDirectoryRecursively(const FsPath& path, bool ignore_read_only = true);
|
||||||
Result RenameFile(const FsPath& src, const FsPath& dst, bool ignore_read_only = false);
|
Result RenameFile(const FsPath& src, const FsPath& dst, bool ignore_read_only = true);
|
||||||
Result RenameDirectory(const FsPath& src, const FsPath& dst, bool ignore_read_only = false);
|
Result RenameDirectory(const FsPath& src, const FsPath& dst, bool ignore_read_only = true);
|
||||||
Result GetEntryType(const FsPath& path, FsDirEntryType* out);
|
Result GetEntryType(const FsPath& path, FsDirEntryType* out);
|
||||||
Result GetFileTimeStampRaw(const FsPath& path, FsTimeStampRaw *out);
|
Result GetFileTimeStampRaw(const FsPath& path, FsTimeStampRaw *out);
|
||||||
|
Result SetTimestamp(const FsPath& path, const FsTimeStampRaw* ts);
|
||||||
bool FileExists(const FsPath& path);
|
bool FileExists(const FsPath& path);
|
||||||
bool DirExists(const FsPath& path);
|
bool DirExists(const FsPath& path);
|
||||||
Result read_entire_file(const FsPath& path, std::vector<u8>& out);
|
Result read_entire_file(const FsPath& path, std::vector<u8>& out);
|
||||||
Result write_entire_file(const FsPath& path, const std::vector<u8>& in, bool ignore_read_only = false);
|
Result write_entire_file(const FsPath& path, const std::vector<u8>& in, bool ignore_read_only = true);
|
||||||
Result copy_entire_file(const FsPath& dst, const FsPath& src, bool ignore_read_only = false);
|
Result copy_entire_file(const FsPath& dst, const FsPath& src, bool ignore_read_only = true);
|
||||||
|
|
||||||
|
Result OpenFile(fs::Fs* fs, const fs::FsPath& path, u32 mode, File* f);
|
||||||
|
Result OpenDirectory(fs::Fs* fs, const fs::FsPath& path, u32 mode, Dir* d);
|
||||||
|
|
||||||
|
// opens dir, fetches count for all entries.
|
||||||
|
// NOTE: this function will be slow on non-native fs, due to multiple
|
||||||
|
// readdir() functions being needed!
|
||||||
|
Result DirGetEntryCount(fs::Fs* fs, const fs::FsPath& path, s64* count, u32 mode);
|
||||||
|
// same as the above, but fetches file and folder count in a single pass
|
||||||
|
// this is faster when using native, and *much* faster for stdio.
|
||||||
|
Result DirGetEntryCount(fs::Fs* fs, const fs::FsPath& path, s64* file_count, s64* dir_count, u32 mode = FsDirOpenMode_ReadDirs|FsDirOpenMode_ReadFiles);
|
||||||
|
|
||||||
|
// optimised for stdio calls as stat returns size and timestamp in a single call.
|
||||||
|
// whereas for native, this is 2 function calls.
|
||||||
|
// however if you need both, you will need 2 calls for native anyway,
|
||||||
|
// but can avoid the second (expensive) stat call.
|
||||||
|
Result FileGetSizeAndTimestamp(fs::Fs* fs, const FsPath& path, FsTimeStampRaw* ts, s64* size);
|
||||||
|
Result IsDirEmpty(fs::Fs* m_fs, const fs::FsPath& path, bool* out);
|
||||||
|
|
||||||
struct Fs {
|
struct Fs {
|
||||||
static constexpr inline u32 FsModule = 505;
|
static constexpr inline u32 FsModule = 505;
|
||||||
@@ -222,51 +277,86 @@ struct Fs {
|
|||||||
static constexpr inline Result ResultUnknownStdioError = MAKERESULT(FsModule, 13);
|
static constexpr inline Result ResultUnknownStdioError = MAKERESULT(FsModule, 13);
|
||||||
static constexpr inline Result ResultReadOnly = MAKERESULT(FsModule, 14);
|
static constexpr inline Result ResultReadOnly = MAKERESULT(FsModule, 14);
|
||||||
|
|
||||||
virtual Result CreateFile(const FsPath& path, u64 size = 0, u32 option = 0, bool ignore_read_only = false) = 0;
|
Fs(bool ignore_read_only = true) : m_ignore_read_only{ignore_read_only} {}
|
||||||
virtual Result CreateDirectory(const FsPath& path, bool ignore_read_only = false) = 0;
|
virtual ~Fs() = default;
|
||||||
virtual Result CreateDirectoryRecursively(const FsPath& path, bool ignore_read_only = false) = 0;
|
|
||||||
virtual Result CreateDirectoryRecursivelyWithPath(const FsPath& path, bool ignore_read_only = false) = 0;
|
virtual Result CreateFile(const FsPath& path, u64 size = 0, u32 option = 0) = 0;
|
||||||
virtual Result DeleteFile(const FsPath& path, bool ignore_read_only = false) = 0;
|
virtual Result CreateDirectory(const FsPath& path) = 0;
|
||||||
virtual Result DeleteDirectory(const FsPath& path, bool ignore_read_only = false) = 0;
|
virtual Result CreateDirectoryRecursively(const FsPath& path) = 0;
|
||||||
virtual Result DeleteDirectoryRecursively(const FsPath& path, bool ignore_read_only = false) = 0;
|
virtual Result CreateDirectoryRecursivelyWithPath(const FsPath& path) = 0;
|
||||||
virtual Result RenameFile(const FsPath& src, const FsPath& dst, bool ignore_read_only = false) = 0;
|
virtual Result DeleteFile(const FsPath& path) = 0;
|
||||||
virtual Result RenameDirectory(const FsPath& src, const FsPath& dst, bool ignore_read_only = false) = 0;
|
virtual Result DeleteDirectory(const FsPath& path) = 0;
|
||||||
|
virtual Result DeleteDirectoryRecursively(const FsPath& path) = 0;
|
||||||
|
virtual Result RenameFile(const FsPath& src, const FsPath& dst) = 0;
|
||||||
|
virtual Result RenameDirectory(const FsPath& src, const FsPath& dst) = 0;
|
||||||
virtual Result GetEntryType(const FsPath& path, FsDirEntryType* out) = 0;
|
virtual Result GetEntryType(const FsPath& path, FsDirEntryType* out) = 0;
|
||||||
virtual Result GetFileTimeStampRaw(const FsPath& path, FsTimeStampRaw *out) = 0;
|
virtual Result GetFileTimeStampRaw(const FsPath& path, FsTimeStampRaw *out) = 0;
|
||||||
|
virtual Result SetTimestamp(const FsPath& path, const FsTimeStampRaw* ts) = 0;
|
||||||
virtual bool FileExists(const FsPath& path) = 0;
|
virtual bool FileExists(const FsPath& path) = 0;
|
||||||
virtual bool DirExists(const FsPath& path) = 0;
|
virtual bool DirExists(const FsPath& path) = 0;
|
||||||
|
virtual bool IsNative() const = 0;
|
||||||
|
virtual FsPath Root() const { return "/"; }
|
||||||
virtual Result read_entire_file(const FsPath& path, std::vector<u8>& out) = 0;
|
virtual Result read_entire_file(const FsPath& path, std::vector<u8>& out) = 0;
|
||||||
virtual Result write_entire_file(const FsPath& path, const std::vector<u8>& in, bool ignore_read_only = false) = 0;
|
virtual Result write_entire_file(const FsPath& path, const std::vector<u8>& in) = 0;
|
||||||
virtual Result copy_entire_file(const FsPath& dst, const FsPath& src, bool ignore_read_only = false) = 0;
|
virtual Result copy_entire_file(const FsPath& dst, const FsPath& src) = 0;
|
||||||
|
|
||||||
|
Result OpenFile(const fs::FsPath& path, u32 mode, File* f) {
|
||||||
|
return fs::OpenFile(this, path, mode, f);
|
||||||
|
}
|
||||||
|
Result OpenDirectory(const fs::FsPath& path, u32 mode, Dir* d) {
|
||||||
|
return fs::OpenDirectory(this, path, mode, d);
|
||||||
|
}
|
||||||
|
Result DirGetEntryCount(const fs::FsPath& path, s64* count, u32 mode) {
|
||||||
|
return fs::DirGetEntryCount(this, path, count, mode);
|
||||||
|
}
|
||||||
|
Result DirGetEntryCount(const fs::FsPath& path, s64* file_count, s64* dir_count, u32 mode = FsDirOpenMode_ReadDirs|FsDirOpenMode_ReadFiles) {
|
||||||
|
return fs::DirGetEntryCount(this, path, file_count, dir_count, mode);
|
||||||
|
}
|
||||||
|
Result FileGetSizeAndTimestamp(const FsPath& path, FsTimeStampRaw* ts, s64* size) {
|
||||||
|
return fs::FileGetSizeAndTimestamp(this, path, ts, size);
|
||||||
|
}
|
||||||
|
Result IsDirEmpty(const fs::FsPath& path, bool* out) {
|
||||||
|
return fs::IsDirEmpty(this, path, out);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetIgnoreReadOnly(bool enable) {
|
||||||
|
m_ignore_read_only = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool m_ignore_read_only;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FsStdio : Fs {
|
struct FsStdio : Fs {
|
||||||
Result CreateFile(const FsPath& path, u64 size = 0, u32 option = 0, bool ignore_read_only = false) override {
|
FsStdio(bool ignore_read_only = true, const FsPath& root = "/") : Fs{ignore_read_only}, m_root{root} {}
|
||||||
return fs::CreateFile(path, size, option, ignore_read_only);
|
virtual ~FsStdio() = default;
|
||||||
|
|
||||||
|
Result CreateFile(const FsPath& path, u64 size = 0, u32 option = 0) override {
|
||||||
|
return fs::CreateFile(path, size, option, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result CreateDirectory(const FsPath& path, bool ignore_read_only = false) override {
|
Result CreateDirectory(const FsPath& path) override {
|
||||||
return fs::CreateDirectory(path, ignore_read_only);
|
return fs::CreateDirectory(path, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result CreateDirectoryRecursively(const FsPath& path, bool ignore_read_only = false) override {
|
Result CreateDirectoryRecursively(const FsPath& path) override {
|
||||||
return fs::CreateDirectoryRecursively(path, ignore_read_only);
|
return fs::CreateDirectoryRecursively(path, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result CreateDirectoryRecursivelyWithPath(const FsPath& path, bool ignore_read_only = false) override {
|
Result CreateDirectoryRecursivelyWithPath(const FsPath& path) override {
|
||||||
return fs::CreateDirectoryRecursivelyWithPath(path, ignore_read_only);
|
return fs::CreateDirectoryRecursivelyWithPath(path, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result DeleteFile(const FsPath& path, bool ignore_read_only = false) override {
|
Result DeleteFile(const FsPath& path) override {
|
||||||
return fs::DeleteFile(path, ignore_read_only);
|
return fs::DeleteFile(path, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result DeleteDirectory(const FsPath& path, bool ignore_read_only = false) override {
|
Result DeleteDirectory(const FsPath& path) override {
|
||||||
return fs::DeleteDirectory(path, ignore_read_only);
|
return fs::DeleteDirectory(path, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result DeleteDirectoryRecursively(const FsPath& path, bool ignore_read_only = false) override {
|
Result DeleteDirectoryRecursively(const FsPath& path) override {
|
||||||
return fs::DeleteDirectoryRecursively(path, ignore_read_only);
|
return fs::DeleteDirectoryRecursively(path, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result RenameFile(const FsPath& src, const FsPath& dst, bool ignore_read_only = false) override {
|
Result RenameFile(const FsPath& src, const FsPath& dst) override {
|
||||||
return fs::RenameFile(src, dst, ignore_read_only);
|
return fs::RenameFile(src, dst, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result RenameDirectory(const FsPath& src, const FsPath& dst, bool ignore_read_only = false) override {
|
Result RenameDirectory(const FsPath& src, const FsPath& dst) override {
|
||||||
return fs::RenameDirectory(src, dst, ignore_read_only);
|
return fs::RenameDirectory(src, dst, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result GetEntryType(const FsPath& path, FsDirEntryType* out) override {
|
Result GetEntryType(const FsPath& path, FsDirEntryType* out) override {
|
||||||
return fs::GetEntryType(path, out);
|
return fs::GetEntryType(path, out);
|
||||||
@@ -274,26 +364,37 @@ struct FsStdio : Fs {
|
|||||||
Result GetFileTimeStampRaw(const FsPath& path, FsTimeStampRaw *out) override {
|
Result GetFileTimeStampRaw(const FsPath& path, FsTimeStampRaw *out) override {
|
||||||
return fs::GetFileTimeStampRaw(path, out);
|
return fs::GetFileTimeStampRaw(path, out);
|
||||||
}
|
}
|
||||||
|
Result SetTimestamp(const FsPath& path, const FsTimeStampRaw *ts) override {
|
||||||
|
return fs::SetTimestamp(path, ts);
|
||||||
|
}
|
||||||
bool FileExists(const FsPath& path) override {
|
bool FileExists(const FsPath& path) override {
|
||||||
return fs::FileExists(path);
|
return fs::FileExists(path);
|
||||||
}
|
}
|
||||||
bool DirExists(const FsPath& path) override {
|
bool DirExists(const FsPath& path) override {
|
||||||
return fs::DirExists(path);
|
return fs::DirExists(path);
|
||||||
}
|
}
|
||||||
|
bool IsNative() const override {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
FsPath Root() const override {
|
||||||
|
return m_root;
|
||||||
|
}
|
||||||
Result read_entire_file(const FsPath& path, std::vector<u8>& out) override {
|
Result read_entire_file(const FsPath& path, std::vector<u8>& out) override {
|
||||||
return fs::read_entire_file(path, out);
|
return fs::read_entire_file(path, out);
|
||||||
}
|
}
|
||||||
Result write_entire_file(const FsPath& path, const std::vector<u8>& in, bool ignore_read_only = false) override {
|
Result write_entire_file(const FsPath& path, const std::vector<u8>& in) override {
|
||||||
return fs::write_entire_file(path, in, ignore_read_only);
|
return fs::write_entire_file(path, in, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result copy_entire_file(const FsPath& dst, const FsPath& src, bool ignore_read_only = false) override {
|
Result copy_entire_file(const FsPath& dst, const FsPath& src) override {
|
||||||
return fs::copy_entire_file(dst, src, ignore_read_only);
|
return fs::copy_entire_file(dst, src, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const FsPath m_root;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FsNative : Fs {
|
struct FsNative : Fs {
|
||||||
FsNative() = default;
|
explicit FsNative(bool ignore_read_only = true) : Fs{ignore_read_only} {}
|
||||||
FsNative(FsFileSystem* fs, bool own) : m_fs{*fs}, m_own{own} {}
|
explicit FsNative(FsFileSystem* fs, bool own, bool ignore_read_only = true) : Fs{ignore_read_only}, m_fs{*fs}, m_own{own} {}
|
||||||
|
|
||||||
virtual ~FsNative() {
|
virtual ~FsNative() {
|
||||||
if (m_own) {
|
if (m_own) {
|
||||||
@@ -313,39 +414,35 @@ struct FsNative : Fs {
|
|||||||
return fsFsGetTotalSpace(&m_fs, path, out);
|
return fsFsGetTotalSpace(&m_fs, path, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result OpenFile(const FsPath& path, u32 mode, FsFile *out) {
|
// Result OpenDirectory(const FsPath& path, u32 mode, FsDir *out) {
|
||||||
return fsFsOpenFile(&m_fs, path, mode, out);
|
// return fsFsOpenDirectory(&m_fs, path, mode, out);
|
||||||
}
|
// }
|
||||||
|
|
||||||
Result OpenDirectory(const FsPath& path, u32 mode, FsDir *out) {
|
// void DirClose(FsDir *d) {
|
||||||
return fsFsOpenDirectory(&m_fs, path, mode, out);
|
// fsDirClose(d);
|
||||||
}
|
// }
|
||||||
|
|
||||||
void DirClose(FsDir *d) {
|
// Result DirGetEntryCount(FsDir *d, s64* out) {
|
||||||
fsDirClose(d);
|
// return fsDirGetEntryCount(d, out);
|
||||||
}
|
// }
|
||||||
|
|
||||||
Result DirGetEntryCount(FsDir *d, s64* out) {
|
// Result DirGetEntryCount(const FsPath& path, u32 mode, s64* out) {
|
||||||
return fsDirGetEntryCount(d, out);
|
// FsDir d;
|
||||||
}
|
// R_TRY(OpenDirectory(path, mode, &d));
|
||||||
|
// ON_SCOPE_EXIT(DirClose(&d));
|
||||||
|
// return DirGetEntryCount(&d, out);
|
||||||
|
// }
|
||||||
|
|
||||||
Result DirGetEntryCount(const FsPath& path, u32 mode, s64* out) {
|
// Result DirRead(FsDir *d, s64 *total_entries, size_t max_entries, FsDirectoryEntry *buf) {
|
||||||
FsDir d;
|
// return fsDirRead(d, total_entries, max_entries, buf);
|
||||||
R_TRY(OpenDirectory(path, mode, &d));
|
// }
|
||||||
ON_SCOPE_EXIT(DirClose(&d));
|
|
||||||
return DirGetEntryCount(&d, out);
|
|
||||||
}
|
|
||||||
|
|
||||||
Result DirRead(FsDir *d, s64 *total_entries, size_t max_entries, FsDirectoryEntry *buf) {
|
// Result DirRead(const FsPath& path, u32 mode, s64 *total_entries, size_t max_entries, FsDirectoryEntry *buf) {
|
||||||
return fsDirRead(d, total_entries, max_entries, buf);
|
// FsDir d;
|
||||||
}
|
// R_TRY(OpenDirectory(path, mode, &d));
|
||||||
|
// ON_SCOPE_EXIT(DirClose(&d));
|
||||||
Result DirRead(const FsPath& path, u32 mode, s64 *total_entries, size_t max_entries, FsDirectoryEntry *buf) {
|
// return DirRead(&d, total_entries, max_entries, buf);
|
||||||
FsDir d;
|
// }
|
||||||
R_TRY(OpenDirectory(path, mode, &d));
|
|
||||||
ON_SCOPE_EXIT(DirClose(&d));
|
|
||||||
return DirRead(&d, total_entries, max_entries, buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual bool IsFsActive() {
|
virtual bool IsFsActive() {
|
||||||
return serviceIsActive(&m_fs.s);
|
return serviceIsActive(&m_fs.s);
|
||||||
@@ -355,32 +452,32 @@ struct FsNative : Fs {
|
|||||||
return m_open_result;
|
return m_open_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result CreateFile(const FsPath& path, u64 size = 0, u32 option = 0, bool ignore_read_only = false) override {
|
Result CreateFile(const FsPath& path, u64 size = 0, u32 option = 0) override {
|
||||||
return fs::CreateFile(&m_fs, path, size, option, ignore_read_only);
|
return fs::CreateFile(&m_fs, path, size, option, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result CreateDirectory(const FsPath& path, bool ignore_read_only = false) override {
|
Result CreateDirectory(const FsPath& path) override {
|
||||||
return fs::CreateDirectory(&m_fs, path, ignore_read_only);
|
return fs::CreateDirectory(&m_fs, path, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result CreateDirectoryRecursively(const FsPath& path, bool ignore_read_only = false) override {
|
Result CreateDirectoryRecursively(const FsPath& path) override {
|
||||||
return fs::CreateDirectoryRecursively(&m_fs, path, ignore_read_only);
|
return fs::CreateDirectoryRecursively(&m_fs, path, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result CreateDirectoryRecursivelyWithPath(const FsPath& path, bool ignore_read_only = false) override {
|
Result CreateDirectoryRecursivelyWithPath(const FsPath& path) override {
|
||||||
return fs::CreateDirectoryRecursivelyWithPath(&m_fs, path, ignore_read_only);
|
return fs::CreateDirectoryRecursivelyWithPath(&m_fs, path, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result DeleteFile(const FsPath& path, bool ignore_read_only = false) override {
|
Result DeleteFile(const FsPath& path) override {
|
||||||
return fs::DeleteFile(&m_fs, path, ignore_read_only);
|
return fs::DeleteFile(&m_fs, path, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result DeleteDirectory(const FsPath& path, bool ignore_read_only = false) override {
|
Result DeleteDirectory(const FsPath& path) override {
|
||||||
return fs::DeleteDirectory(&m_fs, path, ignore_read_only);
|
return fs::DeleteDirectory(&m_fs, path, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result DeleteDirectoryRecursively(const FsPath& path, bool ignore_read_only = false) override {
|
Result DeleteDirectoryRecursively(const FsPath& path) override {
|
||||||
return fs::DeleteDirectoryRecursively(&m_fs, path, ignore_read_only);
|
return fs::DeleteDirectoryRecursively(&m_fs, path, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result RenameFile(const FsPath& src, const FsPath& dst, bool ignore_read_only = false) override {
|
Result RenameFile(const FsPath& src, const FsPath& dst) override {
|
||||||
return fs::RenameFile(&m_fs, src, dst, ignore_read_only);
|
return fs::RenameFile(&m_fs, src, dst, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result RenameDirectory(const FsPath& src, const FsPath& dst, bool ignore_read_only = false) override {
|
Result RenameDirectory(const FsPath& src, const FsPath& dst) override {
|
||||||
return fs::RenameDirectory(&m_fs, src, dst, ignore_read_only);
|
return fs::RenameDirectory(&m_fs, src, dst, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result GetEntryType(const FsPath& path, FsDirEntryType* out) override {
|
Result GetEntryType(const FsPath& path, FsDirEntryType* out) override {
|
||||||
return fs::GetEntryType(&m_fs, path, out);
|
return fs::GetEntryType(&m_fs, path, out);
|
||||||
@@ -388,20 +485,26 @@ struct FsNative : Fs {
|
|||||||
Result GetFileTimeStampRaw(const FsPath& path, FsTimeStampRaw *out) override {
|
Result GetFileTimeStampRaw(const FsPath& path, FsTimeStampRaw *out) override {
|
||||||
return fs::GetFileTimeStampRaw(&m_fs, path, out);
|
return fs::GetFileTimeStampRaw(&m_fs, path, out);
|
||||||
}
|
}
|
||||||
|
Result SetTimestamp(const FsPath& path, const FsTimeStampRaw *ts) override {
|
||||||
|
return fs::SetTimestamp(&m_fs, path, ts);
|
||||||
|
}
|
||||||
bool FileExists(const FsPath& path) override {
|
bool FileExists(const FsPath& path) override {
|
||||||
return fs::FileExists(&m_fs, path);
|
return fs::FileExists(&m_fs, path);
|
||||||
}
|
}
|
||||||
bool DirExists(const FsPath& path) override {
|
bool DirExists(const FsPath& path) override {
|
||||||
return fs::DirExists(&m_fs, path);
|
return fs::DirExists(&m_fs, path);
|
||||||
}
|
}
|
||||||
|
bool IsNative() const override {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
Result read_entire_file(const FsPath& path, std::vector<u8>& out) override {
|
Result read_entire_file(const FsPath& path, std::vector<u8>& out) override {
|
||||||
return fs::read_entire_file(&m_fs, path, out);
|
return fs::read_entire_file(&m_fs, path, out);
|
||||||
}
|
}
|
||||||
Result write_entire_file(const FsPath& path, const std::vector<u8>& in, bool ignore_read_only = false) override {
|
Result write_entire_file(const FsPath& path, const std::vector<u8>& in) override {
|
||||||
return fs::write_entire_file(&m_fs, path, in, ignore_read_only);
|
return fs::write_entire_file(&m_fs, path, in, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
Result copy_entire_file(const FsPath& dst, const FsPath& src, bool ignore_read_only = false) override {
|
Result copy_entire_file(const FsPath& dst, const FsPath& src) override {
|
||||||
return fs::copy_entire_file(&m_fs, dst, src, ignore_read_only);
|
return fs::copy_entire_file(&m_fs, dst, src, m_ignore_read_only);
|
||||||
}
|
}
|
||||||
|
|
||||||
FsFileSystem m_fs{};
|
FsFileSystem m_fs{};
|
||||||
@@ -417,43 +520,34 @@ struct FsNativeSd final : FsNative {
|
|||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
struct FsNativeSd final : FsNative {
|
struct FsNativeSd final : FsNative {
|
||||||
FsNativeSd() : FsNative{fsdevGetDeviceFileSystem("sdmc:"), false} {
|
FsNativeSd(bool ignore_read_only = true) : FsNative{fsdevGetDeviceFileSystem("sdmc:"), false, ignore_read_only} {
|
||||||
m_open_result = 0;
|
m_open_result = 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct FsNativeBis final : FsNative {
|
struct FsNativeBis final : FsNative {
|
||||||
FsNativeBis(FsBisPartitionId id, const FsPath& string) {
|
FsNativeBis(FsBisPartitionId id, const FsPath& string, bool ignore_read_only = true) : FsNative{ignore_read_only} {
|
||||||
m_open_result = fsOpenBisFileSystem(&m_fs, id, string);
|
m_open_result = fsOpenBisFileSystem(&m_fs, id, string);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FsNativeImage final : FsNative {
|
struct FsNativeImage final : FsNative {
|
||||||
FsNativeImage(FsImageDirectoryId id) {
|
FsNativeImage(FsImageDirectoryId id, bool ignore_read_only = true) : FsNative{ignore_read_only} {
|
||||||
m_open_result = fsOpenImageDirectoryFileSystem(&m_fs, id);
|
m_open_result = fsOpenImageDirectoryFileSystem(&m_fs, id);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FsNativeContentStorage final : FsNative {
|
struct FsNativeContentStorage final : FsNative {
|
||||||
FsNativeContentStorage(FsContentStorageId id) {
|
FsNativeContentStorage(FsContentStorageId id, bool ignore_read_only = true) : FsNative{ignore_read_only} {
|
||||||
m_open_result = fsOpenContentStorageFileSystem(&m_fs, id);
|
m_open_result = fsOpenContentStorageFileSystem(&m_fs, id);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// auto file_exists(const FsPath& path) -> bool;
|
struct FsNativeGameCard final : FsNative {
|
||||||
// auto create_file(const FsPath& path, u64 size = 0) -> Result;
|
FsNativeGameCard(const FsGameCardHandle* handle, FsGameCardPartition partition, bool ignore_read_only = true) : FsNative{ignore_read_only} {
|
||||||
// auto delete_file(const FsPath& path) -> Result;
|
m_open_result = fsOpenGameCardFileSystem(&m_fs, handle, partition);
|
||||||
// auto create_directory(const FsPath& path) -> Result;
|
}
|
||||||
// auto create_directory_recursively(const FsPath& path) -> Result;
|
};
|
||||||
// auto delete_directory(const FsPath& path) -> Result;
|
|
||||||
// auto delete_directory_recursively(const FsPath& path) -> Result;
|
|
||||||
// auto rename_file(const FsPath& src, const FsPath& dst) -> Result;
|
|
||||||
// auto rename_directory(const FsPath& src, const FsPath& dst) -> Result;
|
|
||||||
|
|
||||||
// auto read_entire_file(const FsPath& path, std::vector<u8>& out) -> Result;
|
|
||||||
// auto write_entire_file(const FsPath& path, const std::vector<u8>& in) -> Result;
|
|
||||||
// // single threaded one shot copy, only use for very small files!
|
|
||||||
// auto copy_entire_file(const FsPath& dst, const FsPath& src) -> Result;
|
|
||||||
|
|
||||||
} // namespace fs
|
} // namespace fs
|
||||||
|
|||||||
22
sphaira/include/ftpsrv_helper.hpp
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
|
namespace sphaira::ftpsrv {
|
||||||
|
|
||||||
|
bool Init();
|
||||||
|
void Exit();
|
||||||
|
|
||||||
|
using OnInstallStart = std::function<bool(void* user, const char* path)>;
|
||||||
|
using OnInstallWrite = std::function<bool(void* user, const void* buf, size_t size)>;
|
||||||
|
using OnInstallClose = std::function<void(void* user)>;
|
||||||
|
|
||||||
|
void InitInstallMode(void* user, OnInstallStart on_start, OnInstallWrite on_write, OnInstallClose on_close);
|
||||||
|
void DisableInstallMode();
|
||||||
|
|
||||||
|
unsigned GetPort();
|
||||||
|
bool IsAnon();
|
||||||
|
const char* GetUser();
|
||||||
|
const char* GetPass();
|
||||||
|
|
||||||
|
} // namespace sphaira::ftpsrv
|
||||||
30
sphaira/include/hasher.hpp
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "fs.hpp"
|
||||||
|
#include "ui/progress_box.hpp"
|
||||||
|
#include <string>
|
||||||
|
#include <memory>
|
||||||
|
#include <switch.h>
|
||||||
|
|
||||||
|
namespace sphaira::hash {
|
||||||
|
|
||||||
|
enum class Type {
|
||||||
|
Crc32,
|
||||||
|
Md5,
|
||||||
|
Sha1,
|
||||||
|
Sha256,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct BaseSource {
|
||||||
|
virtual ~BaseSource() = default;
|
||||||
|
virtual Result Size(s64* out) = 0;
|
||||||
|
virtual Result Read(void* buf, s64 off, s64 size, u64* bytes_read) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
auto GetTypeStr(Type type) -> const char*;
|
||||||
|
|
||||||
|
// returns the hash string.
|
||||||
|
Result Hash(ui::ProgressBox* pbox, Type type, std::shared_ptr<BaseSource> source, std::string& out);
|
||||||
|
Result Hash(ui::ProgressBox* pbox, Type type, fs::Fs* fs, const fs::FsPath& path, std::string& out);
|
||||||
|
|
||||||
|
} // namespace sphaira::hash
|
||||||
@@ -1,16 +1,19 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <string_view>
|
||||||
|
|
||||||
namespace sphaira::i18n {
|
namespace sphaira::i18n {
|
||||||
|
|
||||||
bool init(long index);
|
bool init(long index);
|
||||||
void exit();
|
void exit();
|
||||||
|
|
||||||
|
std::string get(std::string_view str);
|
||||||
|
|
||||||
} // namespace sphaira::i18n
|
} // namespace sphaira::i18n
|
||||||
|
|
||||||
inline namespace literals {
|
inline namespace literals {
|
||||||
|
|
||||||
std::string operator"" _i18n(const char* str, size_t len);
|
std::string operator""_i18n(const char* str, size_t len);
|
||||||
|
|
||||||
} // namespace literals
|
} // namespace literals
|
||||||
|
|||||||
41
sphaira/include/location.hpp
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <switch.h>
|
||||||
|
|
||||||
|
namespace sphaira::location {
|
||||||
|
|
||||||
|
struct Entry {
|
||||||
|
std::string name{};
|
||||||
|
std::string url{};
|
||||||
|
std::string user{};
|
||||||
|
std::string pass{};
|
||||||
|
std::string bearer{};
|
||||||
|
std::string pub_key{};
|
||||||
|
std::string priv_key{};
|
||||||
|
u16 port{};
|
||||||
|
};
|
||||||
|
using Entries = std::vector<Entry>;
|
||||||
|
|
||||||
|
auto Load() -> Entries;
|
||||||
|
void Add(const Entry& e);
|
||||||
|
|
||||||
|
// helper for hdd devices.
|
||||||
|
// this doesn't really belong in this header, however
|
||||||
|
// locations likely will be renamed to something more generic soon.
|
||||||
|
struct StdioEntry {
|
||||||
|
// mount point (ums0:)
|
||||||
|
std::string mount{};
|
||||||
|
// ums0: (USB Flash Disk)
|
||||||
|
std::string name{};
|
||||||
|
// set if read-only.
|
||||||
|
bool write_protect;
|
||||||
|
};
|
||||||
|
|
||||||
|
using StdioEntries = std::vector<StdioEntry>;
|
||||||
|
|
||||||
|
// set write=true to filter out write protected devices.
|
||||||
|
auto GetStdio(bool write) -> StdioEntries;
|
||||||
|
|
||||||
|
} // namespace sphaira::location
|
||||||
@@ -1,21 +1,33 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
#define sphaira_USE_LOG 1
|
#define sphaira_USE_LOG 1
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
#if sphaira_USE_LOG
|
#if sphaira_USE_LOG
|
||||||
auto log_file_init() -> bool;
|
bool log_file_init();
|
||||||
auto log_nxlink_init() -> bool;
|
bool log_nxlink_init();
|
||||||
void log_file_exit();
|
void log_file_exit();
|
||||||
void log_nxlink_exit();
|
void log_nxlink_exit();
|
||||||
void log_write(const char* s, ...) __attribute__ ((format (printf, 1, 2)));
|
void log_write(const char* s, ...) __attribute__ ((format (printf, 1, 2)));
|
||||||
|
void log_write_arg(const char* s, va_list* v);
|
||||||
#else
|
#else
|
||||||
inline auto log_file_init() -> bool {
|
inline bool log_file_init() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
inline auto log_nxlink_init() -> bool {
|
inline bool log_nxlink_init() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#define log_file_exit()
|
#define log_file_exit()
|
||||||
#define log_nxlink_exit()
|
#define log_nxlink_exit()
|
||||||
#define log_write(...)
|
#define log_write(...)
|
||||||
|
#define log_write_arg(...)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -4,37 +4,42 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <span>
|
#include <span>
|
||||||
|
#include <optional>
|
||||||
#include "fs.hpp"
|
#include "fs.hpp"
|
||||||
|
|
||||||
namespace sphaira {
|
namespace sphaira {
|
||||||
|
|
||||||
struct Hbini {
|
struct Hbini {
|
||||||
u64 timestamp{}; // timestamp of last launch
|
u64 timestamp{}; // timestamp of last launch
|
||||||
u32 launch_count{}; //
|
};
|
||||||
|
|
||||||
|
struct MiniNacp {
|
||||||
|
NacpLanguageEntry lang;
|
||||||
|
char display_version[0x10];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct NroEntry {
|
struct NroEntry {
|
||||||
fs::FsPath path;
|
fs::FsPath path{};
|
||||||
s64 size;
|
s64 size{};
|
||||||
NacpStruct nacp;
|
MiniNacp nacp{};
|
||||||
|
|
||||||
std::vector<u8> icon;
|
u64 icon_size{};
|
||||||
u64 icon_size;
|
u64 icon_offset{};
|
||||||
u64 icon_offset;
|
|
||||||
|
|
||||||
FsTimeStampRaw timestamp;
|
FsTimeStampRaw timestamp{};
|
||||||
Hbini hbini;
|
Hbini hbini{};
|
||||||
|
|
||||||
int image; // nvg image
|
int image{}; // nvg image
|
||||||
int x,y,w,h; // image
|
int x,y,w,h{}; // image
|
||||||
bool is_nacp_valid;
|
bool is_nacp_valid{};
|
||||||
|
std::optional<bool> has_star{std::nullopt};
|
||||||
|
|
||||||
auto GetName() const -> const char* {
|
auto GetName() const -> const char* {
|
||||||
return nacp.lang[0].name;
|
return nacp.lang.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto GetAuthor() const -> const char* {
|
auto GetAuthor() const -> const char* {
|
||||||
return nacp.lang[0].author;
|
return nacp.lang.author;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto GetDisplayVersion() const -> const char* {
|
auto GetDisplayVersion() const -> const char* {
|
||||||
@@ -74,4 +79,10 @@ auto nro_add_arg_file(std::string arg) -> std::string;
|
|||||||
// strips sdmc:
|
// strips sdmc:
|
||||||
auto nro_normalise_path(const std::string& p) -> std::string;
|
auto nro_normalise_path(const std::string& p) -> std::string;
|
||||||
|
|
||||||
|
// helpers to find nro entry, will be made methods soon once i convert vector into a struct.
|
||||||
|
auto nro_find(std::span<const NroEntry> array, std::string_view name, std::string_view author, const fs::FsPath& path) -> std::optional<NroEntry>;
|
||||||
|
auto nro_find_name(std::span<const NroEntry> array, std::string_view name) -> std::optional<NroEntry>;
|
||||||
|
auto nro_find_author(std::span<const NroEntry> array, std::string_view author) -> std::optional<NroEntry>;
|
||||||
|
auto nro_find_path(std::span<const NroEntry> array, const fs::FsPath& path) -> std::optional<NroEntry>;
|
||||||
|
|
||||||
} // namespace sphaira
|
} // namespace sphaira
|
||||||
|
|||||||
@@ -14,8 +14,17 @@ struct OptionBase {
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
auto Get() -> T;
|
auto Get() -> T;
|
||||||
|
auto GetOr(const char* name) -> T;
|
||||||
void Set(T value);
|
void Set(T value);
|
||||||
|
|
||||||
|
// returns true if loaded.
|
||||||
|
auto LoadFrom(const char* section, const char* name, const char* value) -> bool;
|
||||||
|
// same as above, but only checks the name.
|
||||||
|
auto LoadFrom(const char* name, const char* value) -> bool;
|
||||||
|
|
||||||
|
private:
|
||||||
|
auto GetInternal(const char* name) -> T;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const std::string m_section;
|
const std::string m_section;
|
||||||
const std::string m_name;
|
const std::string m_name;
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "ui/progress_box.hpp"
|
#include "ui/progress_box.hpp"
|
||||||
// #include <optional>
|
|
||||||
|
|
||||||
namespace sphaira {
|
namespace sphaira {
|
||||||
|
|
||||||
@@ -15,12 +14,9 @@ struct OwoConfig {
|
|||||||
std::string author{};
|
std::string author{};
|
||||||
NacpStruct nacp;
|
NacpStruct nacp;
|
||||||
std::vector<u8> icon;
|
std::vector<u8> icon;
|
||||||
std::vector<u8> main;
|
|
||||||
std::vector<u8> npdm;
|
|
||||||
std::vector<u8> logo;
|
std::vector<u8> logo;
|
||||||
std::vector<u8> gif;
|
std::vector<u8> gif;
|
||||||
|
|
||||||
// std::optional<u64> tid;
|
|
||||||
std::vector<u8> program_nca{};
|
std::vector<u8> program_nca{};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||