mirror of
https://github.com/yuzu-emu/yuzu-android
synced 2025-06-07 21:50:57 -07:00
Compare commits
238 Commits
android-25
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
dc529a89ae | ||
|
1869349dce | ||
|
70711ddb39 | ||
|
adc597a799 | ||
|
276ceb26d0 | ||
|
15e6e48bef | ||
|
2f57c5a0e9 | ||
|
338e088b9d | ||
|
56c9107d08 | ||
|
dc94882c90 | ||
|
30567a5909 | ||
|
f1b1530249 | ||
|
6948ac8c16 | ||
|
b2e129eaa5 | ||
|
1de37306a5 | ||
|
9bc85dda5f | ||
|
c7174d5f61 | ||
|
1bec420695 | ||
|
79edad2533 | ||
|
ce62fa6f7b | ||
|
a0e254e7c4 | ||
|
25c3bbba0e | ||
|
d66ca8b731 | ||
|
fd9ed54f27 | ||
|
f9bfdb1555 | ||
|
15831b19a3 | ||
|
8416d1c028 | ||
|
4d5d37ae61 | ||
|
e62cea20d1 | ||
|
9e27dbb53b | ||
|
dc50b95a47 | ||
|
4050242cf3 | ||
|
fd718f350c | ||
|
0d6fd12231 | ||
|
f297e98a9e | ||
|
637c54e205 | ||
|
f045fa576b | ||
|
692ba0fa7d | ||
|
a93d249ac1 | ||
|
9fccccedee | ||
|
ca7f949ee8 | ||
|
05f94dc5fc | ||
|
dcf7698924 | ||
|
7b68d7d467 | ||
|
4741e50047 | ||
|
7836c0867d | ||
|
d1e0039bc8 | ||
|
7a51eaa727 | ||
|
6c40d75e47 | ||
|
0a0c257206 | ||
|
7019023cbc | ||
|
c48c182fe0 | ||
|
98be02898b | ||
|
e1bdeb2942 | ||
|
015d666a4d | ||
|
624c90a439 | ||
|
0fb26acccc | ||
|
ed315fb8a5 | ||
|
fc6a87bba1 | ||
|
d08f201e0c | ||
|
0369c65870 | ||
|
975d6f1ec4 | ||
|
7c9e2255be | ||
|
9f6818a6e5 | ||
|
f1c16b487a | ||
|
6512f39061 | ||
|
22b91afa69 | ||
|
77107ba124 | ||
|
fa4dec9fe9 | ||
|
215e887be0 | ||
|
0da6704fc2 | ||
|
812754edec | ||
|
964e19ab56 | ||
|
9dc624f5dc | ||
|
dad9ea3e07 | ||
|
2c00599a53 | ||
|
2786d34dd7 | ||
|
864b046500 | ||
|
d12d9dad40 | ||
|
2b3f1d3fc5 | ||
|
984396a21a | ||
|
4f95ee5209 | ||
|
c04567fad4 | ||
|
89c2fd3d28 | ||
|
5ab49c833d | ||
|
0e74204aad | ||
|
a37bd0b9a7 | ||
|
01d89acd13 | ||
|
e85466c1ae | ||
|
352297d361 | ||
|
6c2d6cff19 | ||
|
e540757279 | ||
|
a8bca24292 | ||
|
5f3c03d6a8 | ||
|
6b956a6951 | ||
|
8689370830 | ||
|
8ffa27b311 | ||
|
6334616b44 | ||
|
8bbc209950 | ||
|
9e1a67b950 | ||
|
de5422b1fd | ||
|
45f450fca5 | ||
|
9a3fd76b25 | ||
|
60fc6df407 | ||
|
2e4a6b7f92 | ||
|
5f90bd88da | ||
|
c575a85233 | ||
|
ea4703cb31 | ||
|
0471e54e5a | ||
|
6012c9fe3a | ||
|
f65539504f | ||
|
62083fcafd | ||
|
2e5a9cf119 | ||
|
a45b8bc9bc | ||
|
a05bd3c47e | ||
|
2a2c92f181 | ||
|
f54277364c | ||
|
de2d496e71 | ||
|
7b5bdd076d | ||
|
e0c17a2113 | ||
|
b107435a3f | ||
|
4e1fcd4a63 | ||
|
ea4a96b45e | ||
|
6a90db8c19 | ||
|
0e5972b0b5 | ||
|
5f7608a7c6 | ||
|
668ff0db3a | ||
|
9f159dd62c | ||
|
d1eaeeed8c | ||
|
10e27a2902 | ||
|
f567a41f53 | ||
|
704c62ca01 | ||
|
8d5473e67c | ||
|
3b1b98c645 | ||
|
daf350f5d3 | ||
|
ef50277124 | ||
|
ba70dc4c13 | ||
|
934e420e36 | ||
|
d5e4617ab5 | ||
|
b5a17b501b | ||
|
2b18957365 | ||
|
4c71bf3d90 | ||
|
fdf4a5bc90 | ||
|
b7d9eba72b | ||
|
380475af32 | ||
|
a2a0be4246 | ||
|
c9ef2e26ca | ||
|
aa6532cf34 | ||
|
310c1f50be | ||
|
665fce871f | ||
|
58c7e846cb | ||
|
8b0fb98a11 | ||
|
8615509c40 | ||
|
d0af52f28e | ||
|
f46dc31683 | ||
|
ef89b79d7e | ||
|
3e41f9a673 | ||
|
d45a12826c | ||
|
56810541f0 | ||
|
911ee8fd1f | ||
|
5361027ef0 | ||
|
56721517ea | ||
|
940a71422e | ||
|
da225d4aa1 | ||
|
8d74c107f5 | ||
|
1fc86b1e3a | ||
|
4cdf18095d | ||
|
2d43831d1f | ||
|
2e96921f9c | ||
|
cf0de18982 | ||
|
ae83ee28a3 | ||
|
306ed4984b | ||
|
626f2e65b1 | ||
|
2eded86b4b | ||
|
786fc512e2 | ||
|
c31ac45332 | ||
|
db172ba249 | ||
|
bb59940b03 | ||
|
04887953ff | ||
|
8ea72cc99d | ||
|
44d2e90217 | ||
|
12926eb5db | ||
|
ae114d2fa1 | ||
|
270d07be2f | ||
|
947cdbe4b1 | ||
|
5583957616 | ||
|
6d731e1aa1 | ||
|
839ded7d59 | ||
|
f57281ebc1 | ||
|
0a3bc6c0cf | ||
|
55a7815064 | ||
|
a1c4f53c8c | ||
|
8bbb44a74e | ||
|
bc5ae04ea0 | ||
|
4f387b0b74 | ||
|
bdf8aca750 | ||
|
acfc4d6dfb | ||
|
35a3c7226a | ||
|
d93fdc8a6c | ||
|
5d3c7433b8 | ||
|
0010d42f82 | ||
|
316089c39f | ||
|
5024df1925 | ||
|
e7146309de | ||
|
c327d2a62c | ||
|
cb2e312f13 | ||
|
366bb52ec8 | ||
|
82949085c0 | ||
|
90c43aa2e7 | ||
|
a07f0883b9 | ||
|
812f23d05c | ||
|
dcce9837d2 | ||
|
ee8eccc5fa | ||
|
7b79cddacd | ||
|
4cbafc1ef6 | ||
|
e31c926bf0 | ||
|
59ede32f8e | ||
|
9eba64adce | ||
|
110969e207 | ||
|
50ecad547e | ||
|
e2e0916100 | ||
|
501e3ae05a | ||
|
ac33847b30 | ||
|
18494b0ad6 | ||
|
dc2c302a84 | ||
|
a251f77556 | ||
|
ec02a1cfe5 | ||
|
39b958ab86 | ||
|
9c0724b270 | ||
|
dbcc447f43 | ||
|
2954c01b47 | ||
|
462ea921e3 | ||
|
cb29aa0473 | ||
|
3067bfd126 | ||
|
461eaca7e8 | ||
|
368bf2211f | ||
|
de8a623932 | ||
|
865a0186b6 |
3
.github/workflows/verify.yml
vendored
3
.github/workflows/verify.yml
vendored
@ -81,8 +81,7 @@ jobs:
|
||||
fetch-depth: 0
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
# workaround for https://github.com/actions/setup-python/issues/577
|
||||
brew install autoconf automake boost@1.83 ccache ffmpeg fmt glslang hidapi libtool libusb lz4 ninja nlohmann-json openssl pkg-config qt@5 sdl2 speexdsp zlib zlib zstd || brew link --overwrite python@3.12
|
||||
brew install autoconf automake boost ccache ffmpeg fmt glslang hidapi libtool libusb lz4 ninja nlohmann-json openssl pkg-config qt@5 sdl2 speexdsp zlib zlib zstd
|
||||
- name: Build
|
||||
run: |
|
||||
mkdir build
|
||||
|
15
README.md
15
README.md
@ -1,16 +1,9 @@
|
||||
| Pull Request | Commit | Title | Author | Merged? |
|
||||
|----|----|----|----|----|
|
||||
| [10529](https://github.com/yuzu-emu/yuzu//pull/10529) | [`368bf2211`](https://github.com/yuzu-emu/yuzu//pull/10529/files) | caches: make critical reclamation less eager and possible in more cases | [liamwhite](https://github.com/liamwhite/) | Yes |
|
||||
| [12461](https://github.com/yuzu-emu/yuzu//pull/12461) | [`acc26667b`](https://github.com/yuzu-emu/yuzu//pull/12461/files) | Rework Nvdec and VIC to fix out-of-order videos, and speed up decoding. | [Kelebek1](https://github.com/Kelebek1/) | Yes |
|
||||
| [12749](https://github.com/yuzu-emu/yuzu//pull/12749) | [`aad4b0d6f`](https://github.com/yuzu-emu/yuzu//pull/12749/files) | general: workarounds for SMMU syncing issues | [liamwhite](https://github.com/liamwhite/) | Yes |
|
||||
| [13000](https://github.com/yuzu-emu/yuzu//pull/13000) | [`461eaca7e`](https://github.com/yuzu-emu/yuzu//pull/13000/files) | device_memory_manager: skip unregistered interfaces on invalidate | [liamwhite](https://github.com/liamwhite/) | Yes |
|
||||
| [13006](https://github.com/yuzu-emu/yuzu//pull/13006) | [`3067bfd12`](https://github.com/yuzu-emu/yuzu//pull/13006/files) | buffer_cache: use mapped range with large vertex buffer size | [liamwhite](https://github.com/liamwhite/) | Yes |
|
||||
| [13026](https://github.com/yuzu-emu/yuzu//pull/13026) | [`462ea921e`](https://github.com/yuzu-emu/yuzu//pull/13026/files) | shader_recompiler: fix non-const offset for arrayed image types | [liamwhite](https://github.com/liamwhite/) | Yes |
|
||||
| [13030](https://github.com/yuzu-emu/yuzu//pull/13030) | [`4cbafc1ef`](https://github.com/yuzu-emu/yuzu//pull/13030/files) | service: audio: Rewrite IAudioController to new IPC | [german77](https://github.com/german77/) | Yes |
|
||||
| [13032](https://github.com/yuzu-emu/yuzu//pull/13032) | [`ec02a1cfe`](https://github.com/yuzu-emu/yuzu//pull/13032/files) | service: Implement functions needed by Qlaunch | [german77](https://github.com/german77/) | Yes |
|
||||
| [13034](https://github.com/yuzu-emu/yuzu//pull/13034) | [`50ecad547`](https://github.com/yuzu-emu/yuzu//pull/13034/files) | android: Input mapping | [t895](https://github.com/t895/) | Yes |
|
||||
| [13035](https://github.com/yuzu-emu/yuzu//pull/13035) | [`a07f0883b`](https://github.com/yuzu-emu/yuzu//pull/13035/files) | vi: manage resources independently of nvnflinger and refactor | [liamwhite](https://github.com/liamwhite/) | Yes |
|
||||
| [13048](https://github.com/yuzu-emu/yuzu//pull/13048) | [`72d806db0`](https://github.com/yuzu-emu/yuzu//pull/13048/files) | ns: rewrite for new IPC | [liamwhite](https://github.com/liamwhite/) | Yes |
|
||||
| [12461](https://github.com/yuzu-emu/yuzu//pull/12461) | [`7464cae24`](https://github.com/yuzu-emu/yuzu//pull/12461/files) | Rework Nvdec and VIC to fix out-of-order videos, and speed up decoding. | [Kelebek1](https://github.com/Kelebek1/) | Yes |
|
||||
| [13018](https://github.com/yuzu-emu/yuzu//pull/13018) | [`01cbc638a`](https://github.com/yuzu-emu/yuzu//pull/13018/files) | am: rewrite part 2 | [liamwhite](https://github.com/liamwhite/) | Yes |
|
||||
| [13174](https://github.com/yuzu-emu/yuzu//pull/13174) | [`7d1284826`](https://github.com/yuzu-emu/yuzu//pull/13174/files) | glue/time: Remove global variables | [FearlessTobi](https://github.com/FearlessTobi/) | Yes |
|
||||
| [13177](https://github.com/yuzu-emu/yuzu//pull/13177) | [`f5cc94f05`](https://github.com/yuzu-emu/yuzu//pull/13177/files) | vfs: misc performance improvements | [liamwhite](https://github.com/liamwhite/) | Yes |
|
||||
|
||||
|
||||
End of merge log. You can find the original README.md below the break.
|
||||
|
2110
dist/languages/ar.ts
vendored
2110
dist/languages/ar.ts
vendored
File diff suppressed because it is too large
Load Diff
2100
dist/languages/ca.ts
vendored
2100
dist/languages/ca.ts
vendored
File diff suppressed because it is too large
Load Diff
2260
dist/languages/cs.ts
vendored
2260
dist/languages/cs.ts
vendored
File diff suppressed because it is too large
Load Diff
2182
dist/languages/da.ts
vendored
2182
dist/languages/da.ts
vendored
File diff suppressed because it is too large
Load Diff
1636
dist/languages/de.ts
vendored
1636
dist/languages/de.ts
vendored
File diff suppressed because it is too large
Load Diff
2062
dist/languages/el.ts
vendored
2062
dist/languages/el.ts
vendored
File diff suppressed because it is too large
Load Diff
1722
dist/languages/es.ts
vendored
1722
dist/languages/es.ts
vendored
File diff suppressed because it is too large
Load Diff
1684
dist/languages/fr.ts
vendored
1684
dist/languages/fr.ts
vendored
File diff suppressed because it is too large
Load Diff
1932
dist/languages/hu.ts
vendored
1932
dist/languages/hu.ts
vendored
File diff suppressed because it is too large
Load Diff
2397
dist/languages/id.ts
vendored
2397
dist/languages/id.ts
vendored
File diff suppressed because it is too large
Load Diff
1692
dist/languages/it.ts
vendored
1692
dist/languages/it.ts
vendored
File diff suppressed because it is too large
Load Diff
1950
dist/languages/ja_JP.ts
vendored
1950
dist/languages/ja_JP.ts
vendored
File diff suppressed because it is too large
Load Diff
2054
dist/languages/ko_KR.ts
vendored
2054
dist/languages/ko_KR.ts
vendored
File diff suppressed because it is too large
Load Diff
2054
dist/languages/nb.ts
vendored
2054
dist/languages/nb.ts
vendored
File diff suppressed because it is too large
Load Diff
2054
dist/languages/nl.ts
vendored
2054
dist/languages/nl.ts
vendored
File diff suppressed because it is too large
Load Diff
2054
dist/languages/pl.ts
vendored
2054
dist/languages/pl.ts
vendored
File diff suppressed because it is too large
Load Diff
2046
dist/languages/pt_BR.ts
vendored
2046
dist/languages/pt_BR.ts
vendored
File diff suppressed because it is too large
Load Diff
1680
dist/languages/pt_PT.ts
vendored
1680
dist/languages/pt_PT.ts
vendored
File diff suppressed because it is too large
Load Diff
1677
dist/languages/ru_RU.ts
vendored
1677
dist/languages/ru_RU.ts
vendored
File diff suppressed because it is too large
Load Diff
2230
dist/languages/sv.ts
vendored
2230
dist/languages/sv.ts
vendored
File diff suppressed because it is too large
Load Diff
1976
dist/languages/tr_TR.ts
vendored
1976
dist/languages/tr_TR.ts
vendored
File diff suppressed because it is too large
Load Diff
2054
dist/languages/uk.ts
vendored
2054
dist/languages/uk.ts
vendored
File diff suppressed because it is too large
Load Diff
2054
dist/languages/vi.ts
vendored
2054
dist/languages/vi.ts
vendored
File diff suppressed because it is too large
Load Diff
2054
dist/languages/vi_VN.ts
vendored
2054
dist/languages/vi_VN.ts
vendored
File diff suppressed because it is too large
Load Diff
1719
dist/languages/zh_CN.ts
vendored
1719
dist/languages/zh_CN.ts
vendored
File diff suppressed because it is too large
Load Diff
1682
dist/languages/zh_TW.ts
vendored
1682
dist/languages/zh_TW.ts
vendored
File diff suppressed because it is too large
Load Diff
@ -121,6 +121,7 @@ else()
|
||||
-Wno-attributes
|
||||
-Wno-invalid-offsetof
|
||||
-Wno-unused-parameter
|
||||
-Wno-missing-field-initializers
|
||||
)
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES Clang) # Clang or AppleClang
|
||||
|
@ -3,24 +3,21 @@
|
||||
|
||||
package org.yuzu.yuzu_emu
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.DialogInterface
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.text.Html
|
||||
import android.text.method.LinkMovementMethod
|
||||
import android.view.Surface
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.Keep
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import java.lang.ref.WeakReference
|
||||
import org.yuzu.yuzu_emu.activities.EmulationActivity
|
||||
import org.yuzu.yuzu_emu.fragments.CoreErrorDialogFragment
|
||||
import org.yuzu.yuzu_emu.utils.DocumentsTree
|
||||
import org.yuzu.yuzu_emu.utils.FileUtil
|
||||
import org.yuzu.yuzu_emu.utils.Log
|
||||
import org.yuzu.yuzu_emu.utils.SerializableHelper.serializable
|
||||
import org.yuzu.yuzu_emu.model.InstallResult
|
||||
import org.yuzu.yuzu_emu.model.Patch
|
||||
import org.yuzu.yuzu_emu.model.GameVerificationResult
|
||||
@ -184,46 +181,13 @@ object NativeLibrary {
|
||||
ErrorUnknown
|
||||
}
|
||||
|
||||
private var coreErrorAlertResult = false
|
||||
private val coreErrorAlertLock = Object()
|
||||
|
||||
class CoreErrorDialogFragment : DialogFragment() {
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
val title = requireArguments().serializable<String>("title")
|
||||
val message = requireArguments().serializable<String>("message")
|
||||
|
||||
return MaterialAlertDialogBuilder(requireActivity())
|
||||
.setTitle(title)
|
||||
.setMessage(message)
|
||||
.setPositiveButton(R.string.continue_button, null)
|
||||
.setNegativeButton(R.string.abort_button) { _: DialogInterface?, _: Int ->
|
||||
coreErrorAlertResult = false
|
||||
synchronized(coreErrorAlertLock) { coreErrorAlertLock.notify() }
|
||||
}
|
||||
.create()
|
||||
}
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
coreErrorAlertResult = true
|
||||
synchronized(coreErrorAlertLock) { coreErrorAlertLock.notify() }
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun newInstance(title: String?, message: String?): CoreErrorDialogFragment {
|
||||
val frag = CoreErrorDialogFragment()
|
||||
val args = Bundle()
|
||||
args.putString("title", title)
|
||||
args.putString("message", message)
|
||||
frag.arguments = args
|
||||
return frag
|
||||
}
|
||||
}
|
||||
}
|
||||
var coreErrorAlertResult = false
|
||||
val coreErrorAlertLock = Object()
|
||||
|
||||
private fun onCoreErrorImpl(title: String, message: String) {
|
||||
val emulationActivity = sEmulationActivity.get()
|
||||
if (emulationActivity == null) {
|
||||
error("[NativeLibrary] EmulationActivity not present")
|
||||
Log.error("[NativeLibrary] EmulationActivity not present")
|
||||
return
|
||||
}
|
||||
|
||||
@ -239,7 +203,7 @@ object NativeLibrary {
|
||||
fun onCoreError(error: CoreError?, details: String): Boolean {
|
||||
val emulationActivity = sEmulationActivity.get()
|
||||
if (emulationActivity == null) {
|
||||
error("[NativeLibrary] EmulationActivity not present")
|
||||
Log.error("[NativeLibrary] EmulationActivity not present")
|
||||
return false
|
||||
}
|
||||
|
||||
@ -270,7 +234,7 @@ object NativeLibrary {
|
||||
}
|
||||
|
||||
// Show the AlertDialog on the main thread.
|
||||
emulationActivity.runOnUiThread(Runnable { onCoreErrorImpl(title, message) })
|
||||
emulationActivity.runOnUiThread { onCoreErrorImpl(title, message) }
|
||||
|
||||
// Wait for the lock to notify that it is complete.
|
||||
synchronized(coreErrorAlertLock) { coreErrorAlertLock.wait() }
|
||||
|
@ -80,8 +80,14 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
InputHandler.updateControllerData()
|
||||
val playerOne = NativeConfig.getInputSettings(true)[0]
|
||||
if (!playerOne.hasMapping() && InputHandler.androidControllers.isNotEmpty()) {
|
||||
val players = NativeConfig.getInputSettings(true)
|
||||
var hasConfiguredControllers = false
|
||||
players.forEach {
|
||||
if (it.hasMapping()) {
|
||||
hasConfiguredControllers = true
|
||||
}
|
||||
}
|
||||
if (!hasConfiguredControllers && InputHandler.androidControllers.isNotEmpty()) {
|
||||
var params: ParamPackage? = null
|
||||
for (controller in InputHandler.registeredControllers) {
|
||||
if (controller.get("port", -1) == 0) {
|
||||
|
@ -3,15 +3,15 @@
|
||||
|
||||
package org.yuzu.yuzu_emu.adapters
|
||||
|
||||
import android.text.TextUtils
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.databinding.CardDriverOptionBinding
|
||||
import org.yuzu.yuzu_emu.features.settings.model.StringSetting
|
||||
import org.yuzu.yuzu_emu.model.Driver
|
||||
import org.yuzu.yuzu_emu.model.DriverViewModel
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
|
||||
|
||||
class DriverAdapter(private val driverViewModel: DriverViewModel) :
|
||||
@ -44,25 +44,15 @@ class DriverAdapter(private val driverViewModel: DriverViewModel) :
|
||||
}
|
||||
|
||||
// Delay marquee by 3s
|
||||
title.postDelayed(
|
||||
{
|
||||
title.isSelected = true
|
||||
title.ellipsize = TextUtils.TruncateAt.MARQUEE
|
||||
version.isSelected = true
|
||||
version.ellipsize = TextUtils.TruncateAt.MARQUEE
|
||||
description.isSelected = true
|
||||
description.ellipsize = TextUtils.TruncateAt.MARQUEE
|
||||
},
|
||||
3000
|
||||
)
|
||||
title.marquee()
|
||||
version.marquee()
|
||||
description.marquee()
|
||||
title.text = model.title
|
||||
version.text = model.version
|
||||
description.text = model.description
|
||||
if (model.title != binding.root.context.getString(R.string.system_gpu_driver)) {
|
||||
buttonDelete.visibility = View.VISIBLE
|
||||
} else {
|
||||
buttonDelete.visibility = View.GONE
|
||||
}
|
||||
buttonDelete.setVisible(
|
||||
model.title != binding.root.context.getString(R.string.system_gpu_driver)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,6 @@
|
||||
package org.yuzu.yuzu_emu.adapters
|
||||
|
||||
import android.net.Uri
|
||||
import android.text.TextUtils
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
@ -12,6 +11,7 @@ import org.yuzu.yuzu_emu.databinding.CardFolderBinding
|
||||
import org.yuzu.yuzu_emu.fragments.GameFolderPropertiesDialogFragment
|
||||
import org.yuzu.yuzu_emu.model.GameDir
|
||||
import org.yuzu.yuzu_emu.model.GamesViewModel
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee
|
||||
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
|
||||
|
||||
class FolderAdapter(val activity: FragmentActivity, val gamesViewModel: GamesViewModel) :
|
||||
@ -29,13 +29,7 @@ class FolderAdapter(val activity: FragmentActivity, val gamesViewModel: GamesVie
|
||||
override fun bind(model: GameDir) {
|
||||
binding.apply {
|
||||
path.text = Uri.parse(model.uriString).path
|
||||
path.postDelayed(
|
||||
{
|
||||
path.isSelected = true
|
||||
path.ellipsize = TextUtils.TruncateAt.MARQUEE
|
||||
},
|
||||
3000
|
||||
)
|
||||
path.marquee()
|
||||
|
||||
buttonEdit.setOnClickListener {
|
||||
GameFolderPropertiesDialogFragment.newInstance(model)
|
||||
|
@ -4,7 +4,6 @@
|
||||
package org.yuzu.yuzu_emu.adapters
|
||||
|
||||
import android.net.Uri
|
||||
import android.text.TextUtils
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
@ -27,6 +26,7 @@ import org.yuzu.yuzu_emu.databinding.CardGameBinding
|
||||
import org.yuzu.yuzu_emu.model.Game
|
||||
import org.yuzu.yuzu_emu.model.GamesViewModel
|
||||
import org.yuzu.yuzu_emu.utils.GameIconUtils
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee
|
||||
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
|
||||
|
||||
class GameAdapter(private val activity: AppCompatActivity) :
|
||||
@ -44,14 +44,7 @@ class GameAdapter(private val activity: AppCompatActivity) :
|
||||
|
||||
binding.textGameTitle.text = model.title.replace("[\\t\\n\\r]+".toRegex(), " ")
|
||||
|
||||
binding.textGameTitle.postDelayed(
|
||||
{
|
||||
binding.textGameTitle.ellipsize = TextUtils.TruncateAt.MARQUEE
|
||||
binding.textGameTitle.isSelected = true
|
||||
},
|
||||
3000
|
||||
)
|
||||
|
||||
binding.textGameTitle.marquee()
|
||||
binding.cardGame.setOnClickListener { onClick(model) }
|
||||
binding.cardGame.setOnLongClickListener { onLongClick(model) }
|
||||
}
|
||||
|
@ -3,21 +3,18 @@
|
||||
|
||||
package org.yuzu.yuzu_emu.adapters
|
||||
|
||||
import android.text.TextUtils
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.content.res.ResourcesCompat
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import kotlinx.coroutines.launch
|
||||
import org.yuzu.yuzu_emu.databinding.CardInstallableIconBinding
|
||||
import org.yuzu.yuzu_emu.databinding.CardSimpleOutlinedBinding
|
||||
import org.yuzu.yuzu_emu.model.GameProperty
|
||||
import org.yuzu.yuzu_emu.model.InstallableProperty
|
||||
import org.yuzu.yuzu_emu.model.SubmenuProperty
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
|
||||
|
||||
class GamePropertiesAdapter(
|
||||
@ -76,23 +73,15 @@ class GamePropertiesAdapter(
|
||||
)
|
||||
)
|
||||
|
||||
binding.details.postDelayed({
|
||||
binding.details.isSelected = true
|
||||
binding.details.ellipsize = TextUtils.TruncateAt.MARQUEE
|
||||
}, 3000)
|
||||
|
||||
binding.details.marquee()
|
||||
if (submenuProperty.details != null) {
|
||||
binding.details.visibility = View.VISIBLE
|
||||
binding.details.setVisible(true)
|
||||
binding.details.text = submenuProperty.details.invoke()
|
||||
} else if (submenuProperty.detailsFlow != null) {
|
||||
binding.details.visibility = View.VISIBLE
|
||||
viewLifecycle.lifecycleScope.launch {
|
||||
viewLifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
submenuProperty.detailsFlow.collect { binding.details.text = it }
|
||||
}
|
||||
}
|
||||
binding.details.setVisible(true)
|
||||
submenuProperty.detailsFlow.collect(viewLifecycle) { binding.details.text = it }
|
||||
} else {
|
||||
binding.details.visibility = View.GONE
|
||||
binding.details.setVisible(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -112,14 +101,10 @@ class GamePropertiesAdapter(
|
||||
)
|
||||
)
|
||||
|
||||
if (installableProperty.install != null) {
|
||||
binding.buttonInstall.visibility = View.VISIBLE
|
||||
binding.buttonInstall.setOnClickListener { installableProperty.install.invoke() }
|
||||
}
|
||||
if (installableProperty.export != null) {
|
||||
binding.buttonExport.visibility = View.VISIBLE
|
||||
binding.buttonExport.setOnClickListener { installableProperty.export.invoke() }
|
||||
}
|
||||
binding.buttonInstall.setVisible(installableProperty.install != null)
|
||||
binding.buttonInstall.setOnClickListener { installableProperty.install?.invoke() }
|
||||
binding.buttonExport.setVisible(installableProperty.export != null)
|
||||
binding.buttonExport.setOnClickListener { installableProperty.export?.invoke() }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,22 +3,19 @@
|
||||
|
||||
package org.yuzu.yuzu_emu.adapters
|
||||
|
||||
import android.text.TextUtils
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.res.ResourcesCompat
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import kotlinx.coroutines.launch
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.databinding.CardHomeOptionBinding
|
||||
import org.yuzu.yuzu_emu.fragments.MessageDialogFragment
|
||||
import org.yuzu.yuzu_emu.model.HomeSetting
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
|
||||
|
||||
class HomeSettingAdapter(
|
||||
@ -59,18 +56,8 @@ class HomeSettingAdapter(
|
||||
binding.optionIcon.alpha = 0.5f
|
||||
}
|
||||
|
||||
viewLifecycle.lifecycleScope.launch {
|
||||
viewLifecycle.repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
model.details.collect { updateOptionDetails(it) }
|
||||
}
|
||||
}
|
||||
binding.optionDetail.postDelayed(
|
||||
{
|
||||
binding.optionDetail.ellipsize = TextUtils.TruncateAt.MARQUEE
|
||||
binding.optionDetail.isSelected = true
|
||||
},
|
||||
3000
|
||||
)
|
||||
model.details.collect(viewLifecycle) { updateOptionDetails(it) }
|
||||
binding.optionDetail.marquee()
|
||||
|
||||
binding.root.setOnClickListener { onClick(model) }
|
||||
}
|
||||
@ -90,7 +77,7 @@ class HomeSettingAdapter(
|
||||
private fun updateOptionDetails(detailString: String) {
|
||||
if (detailString.isNotEmpty()) {
|
||||
binding.optionDetail.text = detailString
|
||||
binding.optionDetail.visibility = View.VISIBLE
|
||||
binding.optionDetail.setVisible(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,10 +4,10 @@
|
||||
package org.yuzu.yuzu_emu.adapters
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import org.yuzu.yuzu_emu.databinding.CardInstallableBinding
|
||||
import org.yuzu.yuzu_emu.model.Installable
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
|
||||
|
||||
class InstallableAdapter(installables: List<Installable>) :
|
||||
@ -26,14 +26,10 @@ class InstallableAdapter(installables: List<Installable>) :
|
||||
binding.title.setText(model.titleId)
|
||||
binding.description.setText(model.descriptionId)
|
||||
|
||||
if (model.install != null) {
|
||||
binding.buttonInstall.visibility = View.VISIBLE
|
||||
binding.buttonInstall.setOnClickListener { model.install.invoke() }
|
||||
}
|
||||
if (model.export != null) {
|
||||
binding.buttonExport.visibility = View.VISIBLE
|
||||
binding.buttonExport.setOnClickListener { model.export.invoke() }
|
||||
}
|
||||
binding.buttonInstall.setVisible(model.install != null)
|
||||
binding.buttonInstall.setOnClickListener { model.install?.invoke() }
|
||||
binding.buttonExport.setVisible(model.export != null)
|
||||
binding.buttonExport.setOnClickListener { model.export?.invoke() }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,12 +4,12 @@
|
||||
package org.yuzu.yuzu_emu.adapters
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding
|
||||
import org.yuzu.yuzu_emu.fragments.LicenseBottomSheetDialogFragment
|
||||
import org.yuzu.yuzu_emu.model.License
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
|
||||
|
||||
class LicenseAdapter(private val activity: AppCompatActivity, licenses: List<License>) :
|
||||
@ -25,7 +25,7 @@ class LicenseAdapter(private val activity: AppCompatActivity, licenses: List<Lic
|
||||
binding.apply {
|
||||
textSettingName.text = root.context.getString(model.titleId)
|
||||
textSettingDescription.text = root.context.getString(model.descriptionId)
|
||||
textSettingValue.visibility = View.GONE
|
||||
textSettingValue.setVisible(false)
|
||||
|
||||
root.setOnClickListener { onClick(model) }
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ package org.yuzu.yuzu_emu.adapters
|
||||
|
||||
import android.text.Html
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.content.res.ResourcesCompat
|
||||
@ -17,6 +16,7 @@ import org.yuzu.yuzu_emu.model.SetupCallback
|
||||
import org.yuzu.yuzu_emu.model.SetupPage
|
||||
import org.yuzu.yuzu_emu.model.StepState
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
|
||||
|
||||
class SetupAdapter(val activity: AppCompatActivity, pages: List<SetupPage>) :
|
||||
@ -30,8 +30,8 @@ class SetupAdapter(val activity: AppCompatActivity, pages: List<SetupPage>) :
|
||||
AbstractViewHolder<SetupPage>(binding), SetupCallback {
|
||||
override fun bind(model: SetupPage) {
|
||||
if (model.stepCompleted.invoke() == StepState.COMPLETE) {
|
||||
binding.buttonAction.visibility = View.INVISIBLE
|
||||
binding.textConfirmation.visibility = View.VISIBLE
|
||||
binding.buttonAction.setVisible(visible = false, gone = false)
|
||||
binding.textConfirmation.setVisible(true)
|
||||
}
|
||||
|
||||
binding.icon.setImageDrawable(
|
||||
|
@ -64,17 +64,17 @@ data class PlayerInput(
|
||||
fun hasMapping(): Boolean {
|
||||
var hasMapping = false
|
||||
buttons.forEach {
|
||||
if (it != "[empty]") {
|
||||
if (it != "[empty]" && it.isNotEmpty()) {
|
||||
hasMapping = true
|
||||
}
|
||||
}
|
||||
analogs.forEach {
|
||||
if (it != "[empty]") {
|
||||
if (it != "[empty]" && it.isNotEmpty()) {
|
||||
hasMapping = true
|
||||
}
|
||||
}
|
||||
motions.forEach {
|
||||
if (it != "[empty]") {
|
||||
if (it != "[empty]" && it.isNotEmpty()) {
|
||||
hasMapping = true
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,8 @@ package org.yuzu.yuzu_emu.features.settings.model
|
||||
import org.yuzu.yuzu_emu.utils.NativeConfig
|
||||
|
||||
enum class StringSetting(override val key: String) : AbstractStringSetting {
|
||||
DRIVER_PATH("driver_path");
|
||||
DRIVER_PATH("driver_path"),
|
||||
DEVICE_NAME("device_name");
|
||||
|
||||
override fun getString(needsGlobal: Boolean): String = NativeConfig.getString(key, needsGlobal)
|
||||
|
||||
|
@ -16,6 +16,7 @@ import org.yuzu.yuzu_emu.features.settings.model.ByteSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.IntSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.LongSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.ShortSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.StringSetting
|
||||
import org.yuzu.yuzu_emu.utils.NativeConfig
|
||||
|
||||
/**
|
||||
@ -75,6 +76,9 @@ abstract class SettingsItem(
|
||||
get() = NativeLibrary.isRunning() && !setting.global &&
|
||||
!NativeConfig.isPerGameConfigLoaded()
|
||||
|
||||
val clearable: Boolean
|
||||
get() = !setting.global && NativeConfig.isPerGameConfigLoaded()
|
||||
|
||||
companion object {
|
||||
const val TYPE_HEADER = 0
|
||||
const val TYPE_SWITCH = 1
|
||||
@ -87,6 +91,7 @@ abstract class SettingsItem(
|
||||
const val TYPE_INPUT = 8
|
||||
const val TYPE_INT_SINGLE_CHOICE = 9
|
||||
const val TYPE_INPUT_PROFILE = 10
|
||||
const val TYPE_STRING_INPUT = 11
|
||||
|
||||
const val FASTMEM_COMBINED = "fastmem_combined"
|
||||
|
||||
@ -105,6 +110,7 @@ abstract class SettingsItem(
|
||||
|
||||
// List of all general
|
||||
val settingsItems = HashMap<String, SettingsItem>().apply {
|
||||
put(StringInputSetting(StringSetting.DEVICE_NAME, titleId = R.string.device_name))
|
||||
put(
|
||||
SwitchSetting(
|
||||
BooleanSetting.RENDERER_USE_SPEED_LIMIT,
|
||||
|
@ -0,0 +1,22 @@
|
||||
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
package org.yuzu.yuzu_emu.features.settings.model.view
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import org.yuzu.yuzu_emu.features.settings.model.AbstractStringSetting
|
||||
|
||||
class StringInputSetting(
|
||||
setting: AbstractStringSetting,
|
||||
@StringRes titleId: Int = 0,
|
||||
titleString: String = "",
|
||||
@StringRes descriptionId: Int = 0,
|
||||
descriptionString: String = ""
|
||||
) : SettingsItem(setting, titleId, titleString, descriptionId, descriptionString) {
|
||||
override val type = TYPE_STRING_INPUT
|
||||
|
||||
fun getSelectedValue(needsGlobal: Boolean = false) = setting.getValueAsString(needsGlobal)
|
||||
|
||||
fun setSelectedValue(selection: String) =
|
||||
(setting as AbstractStringSetting).setString(selection)
|
||||
}
|
@ -11,16 +11,13 @@ import android.view.ViewGroup
|
||||
import android.widget.Toast
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import kotlinx.coroutines.launch
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.databinding.DialogInputProfilesBinding
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.InputProfileSetting
|
||||
import org.yuzu.yuzu_emu.fragments.MessageDialogFragment
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
|
||||
class InputProfileDialogFragment : DialogFragment() {
|
||||
private var position = 0
|
||||
@ -110,25 +107,21 @@ class InputProfileDialogFragment : DialogFragment() {
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
settingsViewModel.shouldShowDeleteProfileDialog.collect {
|
||||
if (it.isNotEmpty()) {
|
||||
MessageDialogFragment.newInstance(
|
||||
activity = requireActivity(),
|
||||
titleId = R.string.delete_input_profile,
|
||||
descriptionId = R.string.delete_input_profile_description,
|
||||
positiveAction = {
|
||||
setting.deleteProfile(it)
|
||||
settingsViewModel.setReloadListAndNotifyDataset(true)
|
||||
},
|
||||
negativeAction = {},
|
||||
negativeButtonTitleId = android.R.string.cancel
|
||||
).show(parentFragmentManager, MessageDialogFragment.TAG)
|
||||
settingsViewModel.setShouldShowDeleteProfileDialog("")
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
settingsViewModel.shouldShowDeleteProfileDialog.collect(viewLifecycleOwner) {
|
||||
if (it.isNotEmpty()) {
|
||||
MessageDialogFragment.newInstance(
|
||||
activity = requireActivity(),
|
||||
titleId = R.string.delete_input_profile,
|
||||
descriptionId = R.string.delete_input_profile_description,
|
||||
positiveAction = {
|
||||
setting.deleteProfile(it)
|
||||
settingsViewModel.setReloadListAndNotifyDataset(true)
|
||||
},
|
||||
negativeAction = {},
|
||||
negativeButtonTitleId = android.R.string.cancel
|
||||
).show(parentFragmentManager, MessageDialogFragment.TAG)
|
||||
settingsViewModel.setShouldShowDeleteProfileDialog("")
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -13,14 +13,9 @@ import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.navigation.fragment.NavHostFragment
|
||||
import androidx.navigation.navArgs
|
||||
import com.google.android.material.color.MaterialColors
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
import org.yuzu.yuzu_emu.NativeLibrary
|
||||
import java.io.IOException
|
||||
import org.yuzu.yuzu_emu.R
|
||||
@ -70,39 +65,23 @@ class SettingsActivity : AppCompatActivity() {
|
||||
)
|
||||
}
|
||||
|
||||
lifecycleScope.apply {
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
settingsViewModel.shouldRecreate.collectLatest {
|
||||
if (it) {
|
||||
settingsViewModel.setShouldRecreate(false)
|
||||
recreate()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
settingsViewModel.shouldNavigateBack.collectLatest {
|
||||
if (it) {
|
||||
settingsViewModel.setShouldNavigateBack(false)
|
||||
navigateBack()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
settingsViewModel.shouldShowResetSettingsDialog.collectLatest {
|
||||
if (it) {
|
||||
settingsViewModel.setShouldShowResetSettingsDialog(false)
|
||||
ResetSettingsDialogFragment().show(
|
||||
supportFragmentManager,
|
||||
ResetSettingsDialogFragment.TAG
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
settingsViewModel.shouldRecreate.collect(
|
||||
this,
|
||||
resetState = { settingsViewModel.setShouldRecreate(false) }
|
||||
) { if (it) recreate() }
|
||||
settingsViewModel.shouldNavigateBack.collect(
|
||||
this,
|
||||
resetState = { settingsViewModel.setShouldNavigateBack(false) }
|
||||
) { if (it) navigateBack() }
|
||||
settingsViewModel.shouldShowResetSettingsDialog.collect(
|
||||
this,
|
||||
resetState = { settingsViewModel.setShouldShowResetSettingsDialog(false) }
|
||||
) {
|
||||
if (it) {
|
||||
ResetSettingsDialogFragment().show(
|
||||
supportFragmentManager,
|
||||
ResetSettingsDialogFragment.TAG
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -85,6 +85,10 @@ class SettingsAdapter(
|
||||
InputProfileViewHolder(ListItemSettingBinding.inflate(inflater), this)
|
||||
}
|
||||
|
||||
SettingsItem.TYPE_STRING_INPUT -> {
|
||||
StringInputViewHolder(ListItemSettingBinding.inflate(inflater), this)
|
||||
}
|
||||
|
||||
else -> {
|
||||
HeaderViewHolder(ListItemSettingsHeaderBinding.inflate(inflater), this)
|
||||
}
|
||||
@ -392,6 +396,15 @@ class SettingsAdapter(
|
||||
popup.show()
|
||||
}
|
||||
|
||||
fun onStringInputClick(item: StringInputSetting, position: Int) {
|
||||
SettingsDialogFragment.newInstance(
|
||||
settingsViewModel,
|
||||
item,
|
||||
SettingsItem.TYPE_STRING_INPUT,
|
||||
position
|
||||
).show(fragment.childFragmentManager, SettingsDialogFragment.TAG)
|
||||
}
|
||||
|
||||
fun onLongClick(item: SettingsItem, position: Int): Boolean {
|
||||
SettingsDialogFragment.newInstance(
|
||||
settingsViewModel,
|
||||
|
@ -11,13 +11,10 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.slider.Slider
|
||||
import kotlinx.coroutines.launch
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.databinding.DialogEditTextBinding
|
||||
import org.yuzu.yuzu_emu.databinding.DialogSliderBinding
|
||||
import org.yuzu.yuzu_emu.features.input.NativeInput
|
||||
import org.yuzu.yuzu_emu.features.input.model.AnalogDirection
|
||||
@ -27,8 +24,10 @@ import org.yuzu.yuzu_emu.features.settings.model.view.IntSingleChoiceSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SingleChoiceSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SliderSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.StringInputSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.StringSingleChoiceSetting
|
||||
import org.yuzu.yuzu_emu.utils.ParamPackage
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
|
||||
class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener {
|
||||
private var type = 0
|
||||
@ -40,6 +39,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
|
||||
private val settingsViewModel: SettingsViewModel by activityViewModels()
|
||||
|
||||
private lateinit var sliderBinding: DialogSliderBinding
|
||||
private lateinit var stringInputBinding: DialogEditTextBinding
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
@ -134,6 +134,18 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
|
||||
.create()
|
||||
}
|
||||
|
||||
SettingsItem.TYPE_STRING_INPUT -> {
|
||||
stringInputBinding = DialogEditTextBinding.inflate(layoutInflater)
|
||||
val item = settingsViewModel.clickedItem as StringInputSetting
|
||||
stringInputBinding.editText.setText(item.getSelectedValue())
|
||||
MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(item.title)
|
||||
.setView(stringInputBinding.root)
|
||||
.setPositiveButton(android.R.string.ok, this)
|
||||
.setNegativeButton(android.R.string.cancel, defaultCancelListener)
|
||||
.create()
|
||||
}
|
||||
|
||||
SettingsItem.TYPE_STRING_SINGLE_CHOICE -> {
|
||||
val item = settingsViewModel.clickedItem as StringSingleChoiceSetting
|
||||
MaterialAlertDialogBuilder(requireContext())
|
||||
@ -161,6 +173,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
|
||||
): View? {
|
||||
return when (type) {
|
||||
SettingsItem.TYPE_SLIDER -> sliderBinding.root
|
||||
SettingsItem.TYPE_STRING_INPUT -> stringInputBinding.root
|
||||
else -> super.onCreateView(inflater, container, savedInstanceState)
|
||||
}
|
||||
}
|
||||
@ -169,17 +182,11 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
when (type) {
|
||||
SettingsItem.TYPE_SLIDER -> {
|
||||
viewLifecycleOwner.lifecycleScope.launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
settingsViewModel.sliderTextValue.collect {
|
||||
sliderBinding.textValue.text = it
|
||||
}
|
||||
}
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
settingsViewModel.sliderProgress.collect {
|
||||
sliderBinding.slider.value = it.toFloat()
|
||||
}
|
||||
}
|
||||
settingsViewModel.sliderTextValue.collect(viewLifecycleOwner) {
|
||||
sliderBinding.textValue.text = it
|
||||
}
|
||||
settingsViewModel.sliderProgress.collect(viewLifecycleOwner) {
|
||||
sliderBinding.slider.value = it.toFloat()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -209,6 +216,13 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
|
||||
val sliderSetting = settingsViewModel.clickedItem as SliderSetting
|
||||
sliderSetting.setSelectedValue(settingsViewModel.sliderProgress.value)
|
||||
}
|
||||
|
||||
is StringInputSetting -> {
|
||||
val stringInputSetting = settingsViewModel.clickedItem as StringInputSetting
|
||||
stringInputSetting.setSelectedValue(
|
||||
(stringInputBinding.editText.text ?: "").toString()
|
||||
)
|
||||
}
|
||||
}
|
||||
closeDialog()
|
||||
}
|
||||
|
@ -13,21 +13,17 @@ import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.android.material.transition.MaterialSharedAxis
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.databinding.FragmentSettingsBinding
|
||||
import org.yuzu.yuzu_emu.features.input.NativeInput
|
||||
import org.yuzu.yuzu_emu.features.settings.model.Settings
|
||||
import org.yuzu.yuzu_emu.fragments.MessageDialogFragment
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
|
||||
class SettingsFragment : Fragment() {
|
||||
private lateinit var presenter: SettingsFragmentPresenter
|
||||
@ -63,8 +59,7 @@ class SettingsFragment : Fragment() {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
// This is using the correct scope, lint is just acting up
|
||||
@SuppressLint("UnsafeRepeatOnLifecycleDetector", "NotifyDataSetChanged")
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
settingsAdapter = SettingsAdapter(this, requireContext())
|
||||
@ -100,65 +95,37 @@ class SettingsFragment : Fragment() {
|
||||
settingsViewModel.setShouldNavigateBack(true)
|
||||
}
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.apply {
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
settingsViewModel.shouldReloadSettingsList.collectLatest {
|
||||
if (it) {
|
||||
settingsViewModel.setShouldReloadSettingsList(false)
|
||||
presenter.loadSettingsList()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
settingsViewModel.adapterItemChanged.collect {
|
||||
if (it != -1) {
|
||||
settingsAdapter?.notifyItemChanged(it)
|
||||
settingsViewModel.setAdapterItemChanged(-1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
settingsViewModel.datasetChanged.collect {
|
||||
if (it) {
|
||||
settingsAdapter?.notifyDataSetChanged()
|
||||
settingsViewModel.setDatasetChanged(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
settingsViewModel.reloadListAndNotifyDataset.collectLatest {
|
||||
if (it) {
|
||||
settingsViewModel.setReloadListAndNotifyDataset(false)
|
||||
presenter.loadSettingsList(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
settingsViewModel.shouldShowResetInputDialog.collectLatest {
|
||||
if (it) {
|
||||
MessageDialogFragment.newInstance(
|
||||
activity = requireActivity(),
|
||||
titleId = R.string.reset_mapping,
|
||||
descriptionId = R.string.reset_mapping_description,
|
||||
positiveAction = {
|
||||
NativeInput.resetControllerMappings(getPlayerIndex())
|
||||
settingsViewModel.setReloadListAndNotifyDataset(true)
|
||||
},
|
||||
negativeAction = {}
|
||||
).show(parentFragmentManager, MessageDialogFragment.TAG)
|
||||
settingsViewModel.setShouldShowResetInputDialog(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
settingsViewModel.shouldReloadSettingsList.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { settingsViewModel.setShouldReloadSettingsList(false) }
|
||||
) { if (it) presenter.loadSettingsList() }
|
||||
settingsViewModel.adapterItemChanged.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { settingsViewModel.setAdapterItemChanged(-1) }
|
||||
) { if (it != -1) settingsAdapter?.notifyItemChanged(it) }
|
||||
settingsViewModel.datasetChanged.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { settingsViewModel.setDatasetChanged(false) }
|
||||
) { if (it) settingsAdapter?.notifyDataSetChanged() }
|
||||
settingsViewModel.reloadListAndNotifyDataset.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { settingsViewModel.setReloadListAndNotifyDataset(false) }
|
||||
) { if (it) presenter.loadSettingsList(true) }
|
||||
settingsViewModel.shouldShowResetInputDialog.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { settingsViewModel.setShouldShowResetInputDialog(false) }
|
||||
) {
|
||||
if (it) {
|
||||
MessageDialogFragment.newInstance(
|
||||
activity = requireActivity(),
|
||||
titleId = R.string.reset_mapping,
|
||||
descriptionId = R.string.reset_mapping_description,
|
||||
positiveAction = {
|
||||
NativeInput.resetControllerMappings(getPlayerIndex())
|
||||
settingsViewModel.setReloadListAndNotifyDataset(true)
|
||||
},
|
||||
negativeAction = {}
|
||||
).show(parentFragmentManager, MessageDialogFragment.TAG)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,7 @@ import org.yuzu.yuzu_emu.features.settings.model.LongSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.Settings
|
||||
import org.yuzu.yuzu_emu.features.settings.model.Settings.MenuTag
|
||||
import org.yuzu.yuzu_emu.features.settings.model.ShortSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.StringSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.*
|
||||
import org.yuzu.yuzu_emu.utils.InputHandler
|
||||
import org.yuzu.yuzu_emu.utils.NativeConfig
|
||||
@ -153,6 +154,7 @@ class SettingsFragmentPresenter(
|
||||
|
||||
private fun addSystemSettings(sl: ArrayList<SettingsItem>) {
|
||||
sl.apply {
|
||||
add(StringSetting.DEVICE_NAME.key)
|
||||
add(BooleanSetting.RENDERER_USE_SPEED_LIMIT.key)
|
||||
add(ShortSetting.RENDERER_SPEED_LIMIT.key)
|
||||
add(BooleanSetting.USE_DOCKED_MODE.key)
|
||||
@ -778,7 +780,7 @@ class SettingsFragmentPresenter(
|
||||
playerIndex: Int,
|
||||
paramName: String,
|
||||
stick: NativeAnalog,
|
||||
defaultValue: Int
|
||||
defaultValue: Float
|
||||
): AbstractIntSetting =
|
||||
object : AbstractIntSetting {
|
||||
val params get() = NativeInput.getStickParam(playerIndex, stick)
|
||||
@ -786,7 +788,7 @@ class SettingsFragmentPresenter(
|
||||
override val key = ""
|
||||
|
||||
override fun getInt(needsGlobal: Boolean): Int =
|
||||
(params.get(paramName, 0.15f) * 100).toInt()
|
||||
(params.get(paramName, defaultValue) * 100).toInt()
|
||||
|
||||
override fun setInt(value: Int) {
|
||||
val tempParams = params
|
||||
@ -794,12 +796,12 @@ class SettingsFragmentPresenter(
|
||||
NativeInput.setStickParam(playerIndex, stick, tempParams)
|
||||
}
|
||||
|
||||
override val defaultValue = defaultValue
|
||||
override val defaultValue = (defaultValue * 100).toInt()
|
||||
|
||||
override fun getValueAsString(needsGlobal: Boolean): String =
|
||||
getInt(needsGlobal).toString()
|
||||
|
||||
override fun reset() = setInt(defaultValue)
|
||||
override fun reset() = setInt(this.defaultValue)
|
||||
}
|
||||
|
||||
private fun getExtraStickSettings(
|
||||
@ -809,11 +811,11 @@ class SettingsFragmentPresenter(
|
||||
val stickIsController =
|
||||
NativeInput.isController(NativeInput.getStickParam(playerIndex, nativeAnalog))
|
||||
val modifierRangeSetting =
|
||||
getStickIntSettingFromParam(playerIndex, "modifier_scale", nativeAnalog, 50)
|
||||
getStickIntSettingFromParam(playerIndex, "modifier_scale", nativeAnalog, 0.5f)
|
||||
val stickRangeSetting =
|
||||
getStickIntSettingFromParam(playerIndex, "range", nativeAnalog, 95)
|
||||
getStickIntSettingFromParam(playerIndex, "range", nativeAnalog, 0.95f)
|
||||
val stickDeadzoneSetting =
|
||||
getStickIntSettingFromParam(playerIndex, "deadzone", nativeAnalog, 15)
|
||||
getStickIntSettingFromParam(playerIndex, "deadzone", nativeAnalog, 0.15f)
|
||||
|
||||
val out = mutableListOf<SettingsItem>().apply {
|
||||
if (stickIsController) {
|
||||
|
@ -15,19 +15,17 @@ import androidx.core.view.updatePadding
|
||||
import androidx.core.widget.doOnTextChanged
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.android.material.divider.MaterialDividerItemDecoration
|
||||
import com.google.android.material.transition.MaterialSharedAxis
|
||||
import info.debatty.java.stringsimilarity.Cosine
|
||||
import kotlinx.coroutines.launch
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.databinding.FragmentSettingsSearchBinding
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
|
||||
import org.yuzu.yuzu_emu.utils.NativeConfig
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
|
||||
class SettingsSearchFragment : Fragment() {
|
||||
private var _binding: FragmentSettingsSearchBinding? = null
|
||||
@ -83,14 +81,10 @@ class SettingsSearchFragment : Fragment() {
|
||||
search()
|
||||
binding.settingsList.smoothScrollToPosition(0)
|
||||
}
|
||||
viewLifecycleOwner.lifecycleScope.launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
settingsViewModel.shouldReloadSettingsList.collect {
|
||||
if (it) {
|
||||
settingsViewModel.setShouldReloadSettingsList(false)
|
||||
search()
|
||||
}
|
||||
}
|
||||
settingsViewModel.shouldReloadSettingsList.collect(viewLifecycleOwner) {
|
||||
if (it) {
|
||||
settingsViewModel.setShouldReloadSettingsList(false)
|
||||
search()
|
||||
}
|
||||
}
|
||||
|
||||
@ -106,10 +100,9 @@ class SettingsSearchFragment : Fragment() {
|
||||
|
||||
private fun search() {
|
||||
val searchTerm = binding.searchText.text.toString().lowercase()
|
||||
binding.clearButton.visibility =
|
||||
if (searchTerm.isEmpty()) View.INVISIBLE else View.VISIBLE
|
||||
binding.clearButton.setVisible(visible = searchTerm.isNotEmpty(), gone = false)
|
||||
if (searchTerm.isEmpty()) {
|
||||
binding.noResultsView.visibility = View.VISIBLE
|
||||
binding.noResultsView.setVisible(visible = false, gone = false)
|
||||
settingsAdapter?.submitList(emptyList())
|
||||
return
|
||||
}
|
||||
@ -136,8 +129,7 @@ class SettingsSearchFragment : Fragment() {
|
||||
optionalSetting
|
||||
}
|
||||
settingsAdapter?.submitList(sortedList)
|
||||
binding.noResultsView.visibility =
|
||||
if (sortedList.isEmpty()) View.VISIBLE else View.INVISIBLE
|
||||
binding.noResultsView.setVisible(visible = sortedList.isEmpty(), gone = false)
|
||||
}
|
||||
|
||||
private fun focusSearch() {
|
||||
|
@ -13,7 +13,7 @@ import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.DateTimeSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
|
||||
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
|
||||
import org.yuzu.yuzu_emu.utils.NativeConfig
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
|
||||
class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
|
||||
SettingViewHolder(binding.root, adapter) {
|
||||
@ -22,27 +22,16 @@ class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA
|
||||
override fun bind(item: SettingsItem) {
|
||||
setting = item as DateTimeSetting
|
||||
binding.textSettingName.text = item.title
|
||||
if (setting.description.isNotEmpty()) {
|
||||
binding.textSettingDescription.text = item.description
|
||||
binding.textSettingDescription.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.textSettingDescription.visibility = View.GONE
|
||||
}
|
||||
|
||||
binding.textSettingValue.visibility = View.VISIBLE
|
||||
binding.textSettingDescription.setVisible(item.description.isNotEmpty())
|
||||
binding.textSettingDescription.text = item.description
|
||||
binding.textSettingValue.setVisible(true)
|
||||
val epochTime = setting.getValue()
|
||||
val instant = Instant.ofEpochMilli(epochTime * 1000)
|
||||
val zonedTime = ZonedDateTime.ofInstant(instant, ZoneId.of("UTC"))
|
||||
val dateFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)
|
||||
binding.textSettingValue.text = dateFormatter.format(zonedTime)
|
||||
|
||||
binding.buttonClear.visibility = if (setting.setting.global ||
|
||||
!NativeConfig.isPerGameConfigLoaded()
|
||||
) {
|
||||
View.GONE
|
||||
} else {
|
||||
View.VISIBLE
|
||||
}
|
||||
binding.buttonClear.setVisible(setting.clearable)
|
||||
binding.buttonClear.setOnClickListener {
|
||||
adapter.onClearClick(setting, bindingAdapterPosition)
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import org.yuzu.yuzu_emu.features.settings.model.view.InputProfileSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
|
||||
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
|
||||
class InputProfileViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
|
||||
SettingViewHolder(binding.root, adapter) {
|
||||
@ -20,10 +21,10 @@ class InputProfileViewHolder(val binding: ListItemSettingBinding, adapter: Setti
|
||||
binding.textSettingValue.text =
|
||||
setting.getCurrentProfile().ifEmpty { binding.root.context.getString(R.string.not_set) }
|
||||
|
||||
binding.textSettingDescription.visibility = View.GONE
|
||||
binding.buttonClear.visibility = View.GONE
|
||||
binding.icon.visibility = View.GONE
|
||||
binding.buttonClear.visibility = View.GONE
|
||||
binding.textSettingDescription.setVisible(false)
|
||||
binding.buttonClear.setVisible(false)
|
||||
binding.icon.setVisible(false)
|
||||
binding.buttonClear.setVisible(false)
|
||||
}
|
||||
|
||||
override fun onClick(clicked: View) =
|
||||
|
@ -12,6 +12,7 @@ import org.yuzu.yuzu_emu.features.settings.model.view.InputSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.ModifierInputSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
|
||||
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
|
||||
class InputViewHolder(val binding: ListItemSettingInputBinding, adapter: SettingsAdapter) :
|
||||
SettingViewHolder(binding.root, adapter) {
|
||||
@ -22,38 +23,26 @@ class InputViewHolder(val binding: ListItemSettingInputBinding, adapter: Setting
|
||||
binding.textSettingName.text = setting.title
|
||||
binding.textSettingValue.text = setting.getSelectedValue()
|
||||
|
||||
binding.buttonOptions.visibility = when (item) {
|
||||
when (item) {
|
||||
is AnalogInputSetting -> {
|
||||
val param = NativeInput.getStickParam(item.playerIndex, item.nativeAnalog)
|
||||
if (
|
||||
binding.buttonOptions.setVisible(
|
||||
param.get("engine", "") == "analog_from_button" ||
|
||||
param.has("axis_x") || param.has("axis_y")
|
||||
) {
|
||||
View.VISIBLE
|
||||
} else {
|
||||
View.GONE
|
||||
}
|
||||
param.has("axis_x") || param.has("axis_y")
|
||||
)
|
||||
}
|
||||
|
||||
is ButtonInputSetting -> {
|
||||
val param = NativeInput.getButtonParam(item.playerIndex, item.nativeButton)
|
||||
if (
|
||||
binding.buttonOptions.setVisible(
|
||||
param.has("code") || param.has("button") || param.has("hat") ||
|
||||
param.has("axis")
|
||||
) {
|
||||
View.VISIBLE
|
||||
} else {
|
||||
View.GONE
|
||||
}
|
||||
param.has("axis")
|
||||
)
|
||||
}
|
||||
|
||||
is ModifierInputSetting -> {
|
||||
val params = NativeInput.getStickParam(item.playerIndex, item.nativeAnalog)
|
||||
if (params.has("modifier")) {
|
||||
View.VISIBLE
|
||||
} else {
|
||||
View.GONE
|
||||
}
|
||||
binding.buttonOptions.setVisible(params.has("modifier"))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -9,6 +9,7 @@ import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.RunnableSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
|
||||
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
|
||||
class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
|
||||
SettingViewHolder(binding.root, adapter) {
|
||||
@ -16,8 +17,8 @@ class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA
|
||||
|
||||
override fun bind(item: SettingsItem) {
|
||||
setting = item as RunnableSetting
|
||||
binding.icon.setVisible(setting.iconId != 0)
|
||||
if (setting.iconId != 0) {
|
||||
binding.icon.visibility = View.VISIBLE
|
||||
binding.icon.setImageDrawable(
|
||||
ResourcesCompat.getDrawable(
|
||||
binding.icon.resources,
|
||||
@ -25,19 +26,13 @@ class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA
|
||||
binding.icon.context.theme
|
||||
)
|
||||
)
|
||||
} else {
|
||||
binding.icon.visibility = View.GONE
|
||||
}
|
||||
|
||||
binding.textSettingName.text = setting.title
|
||||
if (setting.description.isNotEmpty()) {
|
||||
binding.textSettingDescription.setText(item.descriptionId)
|
||||
binding.textSettingDescription.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.textSettingDescription.visibility = View.GONE
|
||||
}
|
||||
binding.textSettingValue.visibility = View.GONE
|
||||
binding.buttonClear.visibility = View.GONE
|
||||
binding.textSettingDescription.setVisible(setting.description.isNotEmpty())
|
||||
binding.textSettingDescription.text = item.description
|
||||
binding.textSettingValue.setVisible(false)
|
||||
binding.buttonClear.setVisible(false)
|
||||
|
||||
setStyle(setting.isEditable, binding)
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SingleChoiceSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.StringSingleChoiceSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
|
||||
import org.yuzu.yuzu_emu.utils.NativeConfig
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
|
||||
class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
|
||||
SettingViewHolder(binding.root, adapter) {
|
||||
@ -19,14 +19,10 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti
|
||||
override fun bind(item: SettingsItem) {
|
||||
setting = item
|
||||
binding.textSettingName.text = setting.title
|
||||
if (item.description.isNotEmpty()) {
|
||||
binding.textSettingDescription.text = item.description
|
||||
binding.textSettingDescription.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.textSettingDescription.visibility = View.GONE
|
||||
}
|
||||
binding.textSettingDescription.setVisible(item.description.isNotEmpty())
|
||||
binding.textSettingDescription.text = item.description
|
||||
|
||||
binding.textSettingValue.visibility = View.VISIBLE
|
||||
binding.textSettingValue.setVisible(true)
|
||||
when (item) {
|
||||
is SingleChoiceSetting -> {
|
||||
val resMgr = binding.textSettingValue.context.resources
|
||||
@ -48,16 +44,10 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti
|
||||
}
|
||||
}
|
||||
if (binding.textSettingValue.text.isEmpty()) {
|
||||
binding.textSettingValue.visibility = View.GONE
|
||||
binding.textSettingValue.setVisible(false)
|
||||
}
|
||||
|
||||
binding.buttonClear.visibility = if (setting.setting.global ||
|
||||
!NativeConfig.isPerGameConfigLoaded()
|
||||
) {
|
||||
View.GONE
|
||||
} else {
|
||||
View.VISIBLE
|
||||
}
|
||||
binding.buttonClear.setVisible(setting.clearable)
|
||||
binding.buttonClear.setOnClickListener {
|
||||
adapter.onClearClick(setting, bindingAdapterPosition)
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SliderSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
|
||||
import org.yuzu.yuzu_emu.utils.NativeConfig
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
|
||||
class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
|
||||
SettingViewHolder(binding.root, adapter) {
|
||||
@ -18,26 +18,16 @@ class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAda
|
||||
override fun bind(item: SettingsItem) {
|
||||
setting = item as SliderSetting
|
||||
binding.textSettingName.text = setting.title
|
||||
if (item.description.isNotEmpty()) {
|
||||
binding.textSettingDescription.text = setting.description
|
||||
binding.textSettingDescription.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.textSettingDescription.visibility = View.GONE
|
||||
}
|
||||
binding.textSettingValue.visibility = View.VISIBLE
|
||||
binding.textSettingDescription.setVisible(item.description.isNotEmpty())
|
||||
binding.textSettingDescription.text = setting.description
|
||||
binding.textSettingValue.setVisible(true)
|
||||
binding.textSettingValue.text = String.format(
|
||||
binding.textSettingValue.context.getString(R.string.value_with_units),
|
||||
setting.getSelectedValue(),
|
||||
setting.units
|
||||
)
|
||||
|
||||
binding.buttonClear.visibility = if (setting.setting.global ||
|
||||
!NativeConfig.isPerGameConfigLoaded()
|
||||
) {
|
||||
View.GONE
|
||||
} else {
|
||||
View.VISIBLE
|
||||
}
|
||||
binding.buttonClear.setVisible(setting.clearable)
|
||||
binding.buttonClear.setOnClickListener {
|
||||
adapter.onClearClick(setting, bindingAdapterPosition)
|
||||
}
|
||||
|
@ -0,0 +1,45 @@
|
||||
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
package org.yuzu.yuzu_emu.features.settings.ui.viewholder
|
||||
|
||||
import android.view.View
|
||||
import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.StringInputSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
|
||||
class StringInputViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
|
||||
SettingViewHolder(binding.root, adapter) {
|
||||
private lateinit var setting: StringInputSetting
|
||||
|
||||
override fun bind(item: SettingsItem) {
|
||||
setting = item as StringInputSetting
|
||||
binding.textSettingName.text = setting.title
|
||||
binding.textSettingDescription.setVisible(setting.description.isNotEmpty())
|
||||
binding.textSettingDescription.text = setting.description
|
||||
binding.textSettingValue.setVisible(true)
|
||||
binding.textSettingValue.text = setting.getSelectedValue()
|
||||
|
||||
binding.buttonClear.setVisible(setting.clearable)
|
||||
binding.buttonClear.setOnClickListener {
|
||||
adapter.onClearClick(setting, bindingAdapterPosition)
|
||||
}
|
||||
|
||||
setStyle(setting.isEditable, binding)
|
||||
}
|
||||
|
||||
override fun onClick(clicked: View) {
|
||||
if (setting.isEditable) {
|
||||
adapter.onStringInputClick(setting, bindingAdapterPosition)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLongClick(clicked: View): Boolean {
|
||||
if (setting.isEditable) {
|
||||
return adapter.onLongClick(setting, bindingAdapterPosition)
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
@ -9,6 +9,7 @@ import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SubmenuSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
|
||||
class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
|
||||
SettingViewHolder(binding.root, adapter) {
|
||||
@ -16,8 +17,8 @@ class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAd
|
||||
|
||||
override fun bind(item: SettingsItem) {
|
||||
setting = item as SubmenuSetting
|
||||
binding.icon.setVisible(setting.iconId != 0)
|
||||
if (setting.iconId != 0) {
|
||||
binding.icon.visibility = View.VISIBLE
|
||||
binding.icon.setImageDrawable(
|
||||
ResourcesCompat.getDrawable(
|
||||
binding.icon.resources,
|
||||
@ -25,19 +26,13 @@ class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAd
|
||||
binding.icon.context.theme
|
||||
)
|
||||
)
|
||||
} else {
|
||||
binding.icon.visibility = View.GONE
|
||||
}
|
||||
|
||||
binding.textSettingName.text = setting.title
|
||||
if (setting.description.isNotEmpty()) {
|
||||
binding.textSettingDescription.text = setting.description
|
||||
binding.textSettingDescription.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.textSettingDescription.visibility = View.GONE
|
||||
}
|
||||
binding.textSettingValue.visibility = View.GONE
|
||||
binding.buttonClear.visibility = View.GONE
|
||||
binding.textSettingDescription.setVisible(setting.description.isNotEmpty())
|
||||
binding.textSettingDescription.text = setting.description
|
||||
binding.textSettingValue.setVisible(false)
|
||||
binding.buttonClear.setVisible(false)
|
||||
}
|
||||
|
||||
override fun onClick(clicked: View) {
|
||||
|
@ -9,7 +9,7 @@ import org.yuzu.yuzu_emu.databinding.ListItemSettingSwitchBinding
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.SwitchSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter
|
||||
import org.yuzu.yuzu_emu.utils.NativeConfig
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
|
||||
class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter: SettingsAdapter) :
|
||||
SettingViewHolder(binding.root, adapter) {
|
||||
@ -19,12 +19,8 @@ class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter
|
||||
override fun bind(item: SettingsItem) {
|
||||
setting = item as SwitchSetting
|
||||
binding.textSettingName.text = setting.title
|
||||
if (setting.description.isNotEmpty()) {
|
||||
binding.textSettingDescription.text = setting.description
|
||||
binding.textSettingDescription.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.textSettingDescription.visibility = View.GONE
|
||||
}
|
||||
binding.textSettingDescription.setVisible(setting.description.isNotEmpty())
|
||||
binding.textSettingDescription.text = setting.description
|
||||
|
||||
binding.switchWidget.setOnCheckedChangeListener(null)
|
||||
binding.switchWidget.isChecked = setting.getIsChecked(setting.needsRuntimeGlobal)
|
||||
@ -32,13 +28,7 @@ class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter
|
||||
adapter.onBooleanClick(setting, binding.switchWidget.isChecked, bindingAdapterPosition)
|
||||
}
|
||||
|
||||
binding.buttonClear.visibility = if (setting.setting.global ||
|
||||
!NativeConfig.isPerGameConfigLoaded()
|
||||
) {
|
||||
View.GONE
|
||||
} else {
|
||||
View.VISIBLE
|
||||
}
|
||||
binding.buttonClear.setVisible(setting.clearable)
|
||||
binding.buttonClear.setOnClickListener {
|
||||
adapter.onClearClick(setting, bindingAdapterPosition)
|
||||
}
|
||||
|
@ -3,7 +3,6 @@
|
||||
|
||||
package org.yuzu.yuzu_emu.fragments
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
@ -16,9 +15,6 @@ import androidx.core.view.updatePadding
|
||||
import androidx.documentfile.provider.DocumentFile
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
@ -32,6 +28,7 @@ import org.yuzu.yuzu_emu.model.HomeViewModel
|
||||
import org.yuzu.yuzu_emu.utils.AddonUtil
|
||||
import org.yuzu.yuzu_emu.utils.FileUtil.copyFilesTo
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
import java.io.File
|
||||
|
||||
class AddonsFragment : Fragment() {
|
||||
@ -60,8 +57,6 @@ class AddonsFragment : Fragment() {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
// This is using the correct scope, lint is just acting up
|
||||
@SuppressLint("UnsafeRepeatOnLifecycleDetector")
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
homeViewModel.setNavigationVisibility(visible = false, animated = false)
|
||||
@ -78,57 +73,41 @@ class AddonsFragment : Fragment() {
|
||||
adapter = AddonAdapter(addonViewModel)
|
||||
}
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.apply {
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
addonViewModel.addonList.collect {
|
||||
(binding.listAddons.adapter as AddonAdapter).submitList(it)
|
||||
}
|
||||
}
|
||||
addonViewModel.addonList.collect(viewLifecycleOwner) {
|
||||
(binding.listAddons.adapter as AddonAdapter).submitList(it)
|
||||
}
|
||||
addonViewModel.showModInstallPicker.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { addonViewModel.showModInstallPicker(false) }
|
||||
) { if (it) installAddon.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data) }
|
||||
addonViewModel.showModNoticeDialog.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { addonViewModel.showModNoticeDialog(false) }
|
||||
) {
|
||||
if (it) {
|
||||
MessageDialogFragment.newInstance(
|
||||
requireActivity(),
|
||||
titleId = R.string.addon_notice,
|
||||
descriptionId = R.string.addon_notice_description,
|
||||
dismissible = false,
|
||||
positiveAction = { addonViewModel.showModInstallPicker(true) },
|
||||
negativeAction = {},
|
||||
negativeButtonTitleId = R.string.close
|
||||
).show(parentFragmentManager, MessageDialogFragment.TAG)
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
addonViewModel.showModInstallPicker.collect {
|
||||
if (it) {
|
||||
installAddon.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data)
|
||||
addonViewModel.showModInstallPicker(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
addonViewModel.showModNoticeDialog.collect {
|
||||
if (it) {
|
||||
MessageDialogFragment.newInstance(
|
||||
requireActivity(),
|
||||
titleId = R.string.addon_notice,
|
||||
descriptionId = R.string.addon_notice_description,
|
||||
dismissible = false,
|
||||
positiveAction = { addonViewModel.showModInstallPicker(true) },
|
||||
negativeAction = {},
|
||||
negativeButtonTitleId = R.string.close
|
||||
).show(parentFragmentManager, MessageDialogFragment.TAG)
|
||||
addonViewModel.showModNoticeDialog(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
addonViewModel.addonToDelete.collect {
|
||||
if (it != null) {
|
||||
MessageDialogFragment.newInstance(
|
||||
requireActivity(),
|
||||
titleId = R.string.confirm_uninstall,
|
||||
descriptionId = R.string.confirm_uninstall_description,
|
||||
positiveAction = { addonViewModel.onDeleteAddon(it) },
|
||||
negativeAction = {}
|
||||
).show(parentFragmentManager, MessageDialogFragment.TAG)
|
||||
addonViewModel.setAddonToDelete(null)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
addonViewModel.addonToDelete.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { addonViewModel.setAddonToDelete(null) }
|
||||
) {
|
||||
if (it != null) {
|
||||
MessageDialogFragment.newInstance(
|
||||
requireActivity(),
|
||||
titleId = R.string.confirm_uninstall,
|
||||
descriptionId = R.string.confirm_uninstall_description,
|
||||
positiveAction = { addonViewModel.onDeleteAddon(it) },
|
||||
negativeAction = {}
|
||||
).show(parentFragmentManager, MessageDialogFragment.TAG)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,47 @@
|
||||
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
package org.yuzu.yuzu_emu.fragments
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.DialogInterface
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import org.yuzu.yuzu_emu.NativeLibrary
|
||||
import org.yuzu.yuzu_emu.R
|
||||
|
||||
class CoreErrorDialogFragment : DialogFragment() {
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog =
|
||||
MaterialAlertDialogBuilder(requireActivity())
|
||||
.setTitle(requireArguments().getString(TITLE))
|
||||
.setMessage(requireArguments().getString(MESSAGE))
|
||||
.setPositiveButton(R.string.continue_button, null)
|
||||
.setNegativeButton(R.string.abort_button) { _: DialogInterface?, _: Int ->
|
||||
NativeLibrary.coreErrorAlertResult = false
|
||||
synchronized(NativeLibrary.coreErrorAlertLock) {
|
||||
NativeLibrary.coreErrorAlertLock.notify()
|
||||
}
|
||||
}
|
||||
.create()
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
super.onDismiss(dialog)
|
||||
NativeLibrary.coreErrorAlertResult = true
|
||||
synchronized(NativeLibrary.coreErrorAlertLock) { NativeLibrary.coreErrorAlertLock.notify() }
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TITLE = "Title"
|
||||
const val MESSAGE = "Message"
|
||||
|
||||
fun newInstance(title: String, message: String): CoreErrorDialogFragment {
|
||||
val frag = CoreErrorDialogFragment()
|
||||
val args = Bundle()
|
||||
args.putString(TITLE, title)
|
||||
args.putString(MESSAGE, message)
|
||||
frag.arguments = args
|
||||
return frag
|
||||
}
|
||||
}
|
||||
}
|
@ -3,7 +3,6 @@
|
||||
|
||||
package org.yuzu.yuzu_emu.fragments
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
@ -14,9 +13,6 @@ import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
@ -35,6 +31,7 @@ import org.yuzu.yuzu_emu.utils.FileUtil
|
||||
import org.yuzu.yuzu_emu.utils.GpuDriverHelper
|
||||
import org.yuzu.yuzu_emu.utils.NativeConfig
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
|
||||
@ -63,8 +60,6 @@ class DriverManagerFragment : Fragment() {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
// This is using the correct scope, lint is just acting up
|
||||
@SuppressLint("UnsafeRepeatOnLifecycleDetector")
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
homeViewModel.setNavigationVisibility(visible = false, animated = true)
|
||||
@ -89,15 +84,8 @@ class DriverManagerFragment : Fragment() {
|
||||
}
|
||||
}
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.apply {
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
driverViewModel.showClearButton.collect {
|
||||
binding.toolbarDrivers.menu
|
||||
.findItem(R.id.menu_driver_use_global).isVisible = it
|
||||
}
|
||||
}
|
||||
}
|
||||
driverViewModel.showClearButton.collect(viewLifecycleOwner) {
|
||||
binding.toolbarDrivers.menu.findItem(R.id.menu_driver_use_global).isVisible = it
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10,14 +10,11 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import kotlinx.coroutines.launch
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding
|
||||
import org.yuzu.yuzu_emu.model.DriverViewModel
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
|
||||
class DriversLoadingDialogFragment : DialogFragment() {
|
||||
private val driverViewModel: DriverViewModel by activityViewModels()
|
||||
@ -44,13 +41,7 @@ class DriversLoadingDialogFragment : DialogFragment() {
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
viewLifecycleOwner.lifecycleScope.apply {
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.RESUMED) {
|
||||
driverViewModel.isInteractionAllowed.collect { if (it) dismiss() }
|
||||
}
|
||||
}
|
||||
}
|
||||
driverViewModel.isInteractionAllowed.collect(viewLifecycleOwner) { if (it) dismiss() }
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
@ -32,9 +32,6 @@ import androidx.drawerlayout.widget.DrawerLayout
|
||||
import androidx.drawerlayout.widget.DrawerLayout.DrawerListener
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import androidx.window.layout.FoldingFeature
|
||||
@ -42,9 +39,6 @@ import androidx.window.layout.WindowInfoTracker
|
||||
import androidx.window.layout.WindowLayoutInfo
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.material.slider.Slider
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
import org.yuzu.yuzu_emu.HomeNavigationDirections
|
||||
import org.yuzu.yuzu_emu.NativeLibrary
|
||||
import org.yuzu.yuzu_emu.R
|
||||
@ -63,6 +57,7 @@ import org.yuzu.yuzu_emu.model.EmulationViewModel
|
||||
import org.yuzu.yuzu_emu.overlay.model.OverlayControl
|
||||
import org.yuzu.yuzu_emu.overlay.model.OverlayLayout
|
||||
import org.yuzu.yuzu_emu.utils.*
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
import java.lang.NullPointerException
|
||||
|
||||
class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||
@ -90,14 +85,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||
if (context is EmulationActivity) {
|
||||
emulationActivity = context
|
||||
NativeLibrary.setEmulationActivity(context)
|
||||
|
||||
lifecycleScope.launch(Dispatchers.Main) {
|
||||
lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
WindowInfoTracker.getOrCreate(context)
|
||||
.windowLayoutInfo(context)
|
||||
.collect { updateFoldableLayout(context, it) }
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw IllegalStateException("EmulationFragment must have EmulationActivity parent")
|
||||
}
|
||||
@ -168,8 +155,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
// This is using the correct scope, lint is just acting up
|
||||
@SuppressLint("UnsafeRepeatOnLifecycleDetector")
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
if (requireActivity().isFinishing) {
|
||||
@ -350,129 +335,86 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||
binding.loadingTitle.isSelected = true
|
||||
binding.loadingText.isSelected = true
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.apply {
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
WindowInfoTracker.getOrCreate(requireContext())
|
||||
.windowLayoutInfo(requireActivity())
|
||||
.collect {
|
||||
updateFoldableLayout(requireActivity() as EmulationActivity, it)
|
||||
}
|
||||
}
|
||||
WindowInfoTracker.getOrCreate(requireContext())
|
||||
.windowLayoutInfo(requireActivity()).collect(viewLifecycleOwner) {
|
||||
updateFoldableLayout(requireActivity() as EmulationActivity, it)
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
emulationViewModel.shaderProgress.collectLatest {
|
||||
if (it > 0 && it != emulationViewModel.totalShaders.value) {
|
||||
binding.loadingProgressIndicator.isIndeterminate = false
|
||||
emulationViewModel.shaderProgress.collect(viewLifecycleOwner) {
|
||||
if (it > 0 && it != emulationViewModel.totalShaders.value) {
|
||||
binding.loadingProgressIndicator.isIndeterminate = false
|
||||
|
||||
if (it < binding.loadingProgressIndicator.max) {
|
||||
binding.loadingProgressIndicator.progress = it
|
||||
}
|
||||
}
|
||||
if (it < binding.loadingProgressIndicator.max) {
|
||||
binding.loadingProgressIndicator.progress = it
|
||||
}
|
||||
}
|
||||
|
||||
if (it == emulationViewModel.totalShaders.value) {
|
||||
binding.loadingText.setText(R.string.loading)
|
||||
binding.loadingProgressIndicator.isIndeterminate = true
|
||||
}
|
||||
}
|
||||
}
|
||||
if (it == emulationViewModel.totalShaders.value) {
|
||||
binding.loadingText.setText(R.string.loading)
|
||||
binding.loadingProgressIndicator.isIndeterminate = true
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
emulationViewModel.totalShaders.collectLatest {
|
||||
binding.loadingProgressIndicator.max = it
|
||||
}
|
||||
}
|
||||
}
|
||||
emulationViewModel.totalShaders.collect(viewLifecycleOwner) {
|
||||
binding.loadingProgressIndicator.max = it
|
||||
}
|
||||
emulationViewModel.shaderMessage.collect(viewLifecycleOwner) {
|
||||
if (it.isNotEmpty()) {
|
||||
binding.loadingText.text = it
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
emulationViewModel.shaderMessage.collectLatest {
|
||||
if (it.isNotEmpty()) {
|
||||
binding.loadingText.text = it
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.RESUMED) {
|
||||
driverViewModel.isInteractionAllowed.collect {
|
||||
if (it) {
|
||||
startEmulation()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
emulationViewModel.emulationStarted.collectLatest {
|
||||
if (it) {
|
||||
binding.drawerLayout.setDrawerLockMode(IntSetting.LOCK_DRAWER.getInt())
|
||||
ViewUtils.showView(binding.surfaceInputOverlay)
|
||||
ViewUtils.hideView(binding.loadingIndicator)
|
||||
}
|
||||
|
||||
emulationState.updateSurface()
|
||||
emulationViewModel.emulationStarted.collect(viewLifecycleOwner) {
|
||||
if (it) {
|
||||
binding.drawerLayout.setDrawerLockMode(IntSetting.LOCK_DRAWER.getInt())
|
||||
ViewUtils.showView(binding.surfaceInputOverlay)
|
||||
ViewUtils.hideView(binding.loadingIndicator)
|
||||
|
||||
// Setup overlays
|
||||
updateShowFpsOverlay()
|
||||
updateThermalOverlay()
|
||||
}
|
||||
}
|
||||
}
|
||||
emulationState.updateSurface()
|
||||
|
||||
// Setup overlays
|
||||
updateShowFpsOverlay()
|
||||
updateThermalOverlay()
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
emulationViewModel.isEmulationStopping.collectLatest {
|
||||
if (it) {
|
||||
binding.loadingText.setText(R.string.shutting_down)
|
||||
ViewUtils.showView(binding.loadingIndicator)
|
||||
ViewUtils.hideView(binding.inputContainer)
|
||||
ViewUtils.hideView(binding.showFpsText)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
emulationViewModel.isEmulationStopping.collect(viewLifecycleOwner) {
|
||||
if (it) {
|
||||
binding.loadingText.setText(R.string.shutting_down)
|
||||
ViewUtils.showView(binding.loadingIndicator)
|
||||
ViewUtils.hideView(binding.inputContainer)
|
||||
ViewUtils.hideView(binding.showFpsText)
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
emulationViewModel.drawerOpen.collect {
|
||||
if (it) {
|
||||
binding.drawerLayout.open()
|
||||
binding.inGameMenu.requestFocus()
|
||||
} else {
|
||||
binding.drawerLayout.close()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
emulationViewModel.drawerOpen.collect(viewLifecycleOwner) {
|
||||
if (it) {
|
||||
binding.drawerLayout.open()
|
||||
binding.inGameMenu.requestFocus()
|
||||
} else {
|
||||
binding.drawerLayout.close()
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
emulationViewModel.programChanged.collect {
|
||||
if (it != 0) {
|
||||
emulationViewModel.setEmulationStarted(false)
|
||||
binding.drawerLayout.close()
|
||||
binding.drawerLayout
|
||||
.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
|
||||
ViewUtils.hideView(binding.surfaceInputOverlay)
|
||||
ViewUtils.showView(binding.loadingIndicator)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
emulationViewModel.programChanged.collect(viewLifecycleOwner) {
|
||||
if (it != 0) {
|
||||
emulationViewModel.setEmulationStarted(false)
|
||||
binding.drawerLayout.close()
|
||||
binding.drawerLayout
|
||||
.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
|
||||
ViewUtils.hideView(binding.surfaceInputOverlay)
|
||||
ViewUtils.showView(binding.loadingIndicator)
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
emulationViewModel.emulationStopped.collect {
|
||||
if (it && emulationViewModel.programChanged.value != -1) {
|
||||
if (perfStatsUpdater != null) {
|
||||
perfStatsUpdateHandler.removeCallbacks(perfStatsUpdater!!)
|
||||
}
|
||||
emulationState.changeProgram(emulationViewModel.programChanged.value)
|
||||
emulationViewModel.setProgramChanged(-1)
|
||||
emulationViewModel.setEmulationStopped(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
emulationViewModel.emulationStopped.collect(viewLifecycleOwner) {
|
||||
if (it && emulationViewModel.programChanged.value != -1) {
|
||||
if (perfStatsUpdater != null) {
|
||||
perfStatsUpdateHandler.removeCallbacks(perfStatsUpdater!!)
|
||||
}
|
||||
emulationState.changeProgram(emulationViewModel.programChanged.value)
|
||||
emulationViewModel.setProgramChanged(-1)
|
||||
emulationViewModel.setEmulationStopped(false)
|
||||
}
|
||||
}
|
||||
|
||||
driverViewModel.isInteractionAllowed.collect(viewLifecycleOwner) {
|
||||
if (it) startEmulation()
|
||||
}
|
||||
}
|
||||
|
||||
private fun startEmulation(programIndex: Int = 0) {
|
||||
@ -500,14 +442,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||
binding.drawerLayout.close()
|
||||
}
|
||||
if (showInputOverlay) {
|
||||
binding.surfaceInputOverlay.visibility = View.INVISIBLE
|
||||
binding.surfaceInputOverlay.setVisible(visible = false, gone = false)
|
||||
}
|
||||
} else {
|
||||
if (showInputOverlay && emulationViewModel.emulationStarted.value) {
|
||||
binding.surfaceInputOverlay.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.surfaceInputOverlay.visibility = View.INVISIBLE
|
||||
}
|
||||
binding.surfaceInputOverlay.setVisible(
|
||||
showInputOverlay && emulationViewModel.emulationStarted.value
|
||||
)
|
||||
if (!isInFoldableLayout) {
|
||||
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
|
||||
binding.surfaceInputOverlay.layout = OverlayLayout.Portrait
|
||||
@ -544,7 +484,9 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||
}
|
||||
|
||||
private fun updateShowFpsOverlay() {
|
||||
if (BooleanSetting.SHOW_PERFORMANCE_OVERLAY.getBoolean()) {
|
||||
val showOverlay = BooleanSetting.SHOW_PERFORMANCE_OVERLAY.getBoolean()
|
||||
binding.showFpsText.setVisible(showOverlay)
|
||||
if (showOverlay) {
|
||||
val SYSTEM_FPS = 0
|
||||
val FPS = 1
|
||||
val FRAMETIME = 2
|
||||
@ -564,17 +506,17 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||
}
|
||||
}
|
||||
perfStatsUpdateHandler.post(perfStatsUpdater!!)
|
||||
binding.showFpsText.visibility = View.VISIBLE
|
||||
} else {
|
||||
if (perfStatsUpdater != null) {
|
||||
perfStatsUpdateHandler.removeCallbacks(perfStatsUpdater!!)
|
||||
}
|
||||
binding.showFpsText.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateThermalOverlay() {
|
||||
if (BooleanSetting.SHOW_THERMAL_OVERLAY.getBoolean()) {
|
||||
val showOverlay = BooleanSetting.SHOW_THERMAL_OVERLAY.getBoolean()
|
||||
binding.showThermalsText.setVisible(showOverlay)
|
||||
if (showOverlay) {
|
||||
thermalStatsUpdater = {
|
||||
if (emulationViewModel.emulationStarted.value &&
|
||||
!emulationViewModel.isEmulationStopping.value
|
||||
@ -596,12 +538,10 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||
}
|
||||
}
|
||||
thermalStatsUpdateHandler.post(thermalStatsUpdater!!)
|
||||
binding.showThermalsText.visibility = View.VISIBLE
|
||||
} else {
|
||||
if (thermalStatsUpdater != null) {
|
||||
thermalStatsUpdateHandler.removeCallbacks(thermalStatsUpdater!!)
|
||||
}
|
||||
binding.showThermalsText.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
@ -870,12 +810,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||
}
|
||||
}
|
||||
}
|
||||
binding.doneControlConfig.visibility = View.VISIBLE
|
||||
binding.doneControlConfig.setVisible(true)
|
||||
binding.surfaceInputOverlay.setIsInEditMode(true)
|
||||
}
|
||||
|
||||
private fun stopConfiguringControls() {
|
||||
binding.doneControlConfig.visibility = View.GONE
|
||||
binding.doneControlConfig.setVisible(false)
|
||||
binding.surfaceInputOverlay.setIsInEditMode(false)
|
||||
// Unlock the orientation if it was locked for editing
|
||||
if (IntSetting.RENDERER_SCREEN_LAYOUT.getInt() == EmulationOrientation.Unspecified.int) {
|
||||
|
@ -13,9 +13,6 @@ import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import com.google.android.material.transition.MaterialSharedAxis
|
||||
@ -27,6 +24,7 @@ import org.yuzu.yuzu_emu.model.GamesViewModel
|
||||
import org.yuzu.yuzu_emu.model.HomeViewModel
|
||||
import org.yuzu.yuzu_emu.ui.main.MainActivity
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
|
||||
class GameFoldersFragment : Fragment() {
|
||||
private var _binding: FragmentFoldersBinding? = null
|
||||
@ -70,12 +68,8 @@ class GameFoldersFragment : Fragment() {
|
||||
adapter = FolderAdapter(requireActivity(), gamesViewModel)
|
||||
}
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
gamesViewModel.folders.collect {
|
||||
(binding.listFolders.adapter as FolderAdapter).submitList(it)
|
||||
}
|
||||
}
|
||||
gamesViewModel.folders.collect(viewLifecycleOwner) {
|
||||
(binding.listFolders.adapter as FolderAdapter).submitList(it)
|
||||
}
|
||||
|
||||
val mainActivity = requireActivity() as MainActivity
|
||||
|
@ -27,6 +27,7 @@ import org.yuzu.yuzu_emu.databinding.FragmentGameInfoBinding
|
||||
import org.yuzu.yuzu_emu.model.GameVerificationResult
|
||||
import org.yuzu.yuzu_emu.model.HomeViewModel
|
||||
import org.yuzu.yuzu_emu.utils.GameMetadata
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
|
||||
|
||||
class GameInfoFragment : Fragment() {
|
||||
@ -85,7 +86,7 @@ class GameInfoFragment : Fragment() {
|
||||
copyToClipboard(getString(R.string.developer), args.game.developer)
|
||||
}
|
||||
} else {
|
||||
developer.visibility = View.GONE
|
||||
developer.setVisible(false)
|
||||
}
|
||||
|
||||
version.setHint(R.string.version)
|
||||
|
@ -3,11 +3,9 @@
|
||||
|
||||
package org.yuzu.yuzu_emu.fragments
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.pm.ShortcutInfo
|
||||
import android.content.pm.ShortcutManager
|
||||
import android.os.Bundle
|
||||
import android.text.TextUtils
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
@ -18,9 +16,7 @@ import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
@ -46,7 +42,9 @@ import org.yuzu.yuzu_emu.utils.FileUtil
|
||||
import org.yuzu.yuzu_emu.utils.GameIconUtils
|
||||
import org.yuzu.yuzu_emu.utils.GpuDriverHelper
|
||||
import org.yuzu.yuzu_emu.utils.MemoryUtil
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
import java.io.BufferedOutputStream
|
||||
import java.io.File
|
||||
|
||||
@ -76,8 +74,6 @@ class GamePropertiesFragment : Fragment() {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
// This is using the correct scope, lint is just acting up
|
||||
@SuppressLint("UnsafeRepeatOnLifecycleDetector")
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
homeViewModel.setNavigationVisibility(visible = false, animated = true)
|
||||
@ -107,13 +103,7 @@ class GamePropertiesFragment : Fragment() {
|
||||
|
||||
GameIconUtils.loadGameIcon(args.game, binding.imageGameScreen)
|
||||
binding.title.text = args.game.title
|
||||
binding.title.postDelayed(
|
||||
{
|
||||
binding.title.ellipsize = TextUtils.TruncateAt.MARQUEE
|
||||
binding.title.isSelected = true
|
||||
},
|
||||
3000
|
||||
)
|
||||
binding.title.marquee()
|
||||
|
||||
binding.buttonStart.setOnClickListener {
|
||||
LaunchGameDialogFragment.newInstance(args.game)
|
||||
@ -122,28 +112,14 @@ class GamePropertiesFragment : Fragment() {
|
||||
|
||||
reloadList()
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.apply {
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
homeViewModel.openImportSaves.collect {
|
||||
if (it) {
|
||||
importSaves.launch(arrayOf("application/zip"))
|
||||
homeViewModel.setOpenImportSaves(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
homeViewModel.reloadPropertiesList.collect {
|
||||
if (it) {
|
||||
reloadList()
|
||||
homeViewModel.reloadPropertiesList(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
homeViewModel.openImportSaves.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { homeViewModel.setOpenImportSaves(false) }
|
||||
) { if (it) importSaves.launch(arrayOf("application/zip")) }
|
||||
homeViewModel.reloadPropertiesList.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { homeViewModel.reloadPropertiesList(false) }
|
||||
) { if (it) reloadList() }
|
||||
|
||||
setInsets()
|
||||
}
|
||||
|
@ -14,9 +14,6 @@ import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import com.google.android.material.transition.MaterialSharedAxis
|
||||
@ -35,6 +32,7 @@ import org.yuzu.yuzu_emu.ui.main.MainActivity
|
||||
import org.yuzu.yuzu_emu.utils.DirectoryInitialization
|
||||
import org.yuzu.yuzu_emu.utils.FileUtil
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
import java.io.BufferedOutputStream
|
||||
import java.io.File
|
||||
import java.math.BigInteger
|
||||
@ -75,14 +73,10 @@ class InstallableFragment : Fragment() {
|
||||
binding.root.findNavController().popBackStack()
|
||||
}
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
homeViewModel.openImportSaves.collect {
|
||||
if (it) {
|
||||
importSaves.launch(arrayOf("application/zip"))
|
||||
homeViewModel.setOpenImportSaves(false)
|
||||
}
|
||||
}
|
||||
homeViewModel.openImportSaves.collect(viewLifecycleOwner) {
|
||||
if (it) {
|
||||
importSaves.launch(arrayOf("application/zip"))
|
||||
homeViewModel.setOpenImportSaves(false)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -13,15 +13,13 @@ import androidx.appcompat.app.AlertDialog
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import kotlinx.coroutines.launch
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.databinding.DialogProgressBarBinding
|
||||
import org.yuzu.yuzu_emu.model.TaskViewModel
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
|
||||
class ProgressDialogFragment : DialogFragment() {
|
||||
private val taskViewModel: TaskViewModel by activityViewModels()
|
||||
@ -64,72 +62,50 @@ class ProgressDialogFragment : DialogFragment() {
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
binding.message.isSelected = true
|
||||
viewLifecycleOwner.lifecycleScope.apply {
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
taskViewModel.isComplete.collect {
|
||||
if (it) {
|
||||
dismiss()
|
||||
when (val result = taskViewModel.result.value) {
|
||||
is String -> Toast.makeText(
|
||||
requireContext(),
|
||||
result,
|
||||
Toast.LENGTH_LONG
|
||||
).show()
|
||||
taskViewModel.isComplete.collect(viewLifecycleOwner) {
|
||||
if (it) {
|
||||
dismiss()
|
||||
when (val result = taskViewModel.result.value) {
|
||||
is String -> Toast.makeText(
|
||||
requireContext(),
|
||||
result,
|
||||
Toast.LENGTH_LONG
|
||||
).show()
|
||||
|
||||
is MessageDialogFragment -> result.show(
|
||||
requireActivity().supportFragmentManager,
|
||||
MessageDialogFragment.TAG
|
||||
)
|
||||
is MessageDialogFragment -> result.show(
|
||||
requireActivity().supportFragmentManager,
|
||||
MessageDialogFragment.TAG
|
||||
)
|
||||
|
||||
else -> {
|
||||
// Do nothing
|
||||
}
|
||||
}
|
||||
taskViewModel.clear()
|
||||
}
|
||||
else -> {
|
||||
// Do nothing
|
||||
}
|
||||
}
|
||||
taskViewModel.clear()
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
taskViewModel.cancelled.collect {
|
||||
if (it) {
|
||||
dialog?.setTitle(R.string.cancelling)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
taskViewModel.progress.collect {
|
||||
if (it != 0.0) {
|
||||
binding.progressBar.apply {
|
||||
isIndeterminate = false
|
||||
progress = (
|
||||
(it / taskViewModel.maxProgress.value) *
|
||||
PROGRESS_BAR_RESOLUTION
|
||||
).toInt()
|
||||
min = 0
|
||||
max = PROGRESS_BAR_RESOLUTION
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
taskViewModel.message.collect {
|
||||
if (it.isEmpty()) {
|
||||
binding.message.visibility = View.GONE
|
||||
} else {
|
||||
binding.message.visibility = View.VISIBLE
|
||||
binding.message.text = it
|
||||
}
|
||||
}
|
||||
}
|
||||
taskViewModel.cancelled.collect(viewLifecycleOwner) {
|
||||
if (it) {
|
||||
dialog?.setTitle(R.string.cancelling)
|
||||
}
|
||||
}
|
||||
taskViewModel.progress.collect(viewLifecycleOwner) {
|
||||
if (it != 0.0) {
|
||||
binding.progressBar.apply {
|
||||
isIndeterminate = false
|
||||
progress = (
|
||||
(it / taskViewModel.maxProgress.value) *
|
||||
PROGRESS_BAR_RESOLUTION
|
||||
).toInt()
|
||||
min = 0
|
||||
max = PROGRESS_BAR_RESOLUTION
|
||||
}
|
||||
}
|
||||
}
|
||||
taskViewModel.message.collect(viewLifecycleOwner) {
|
||||
binding.message.setVisible(it.isNotEmpty())
|
||||
binding.message.text = it
|
||||
}
|
||||
}
|
||||
|
||||
// By default, the ProgressDialog will immediately dismiss itself upon a button being pressed.
|
||||
|
@ -3,7 +3,6 @@
|
||||
|
||||
package org.yuzu.yuzu_emu.fragments
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.os.Bundle
|
||||
@ -18,14 +17,9 @@ import androidx.core.view.updatePadding
|
||||
import androidx.core.widget.doOnTextChanged
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.preference.PreferenceManager
|
||||
import info.debatty.java.stringsimilarity.Jaccard
|
||||
import info.debatty.java.stringsimilarity.JaroWinkler
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.Locale
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.YuzuApplication
|
||||
@ -35,6 +29,8 @@ import org.yuzu.yuzu_emu.layout.AutofitGridLayoutManager
|
||||
import org.yuzu.yuzu_emu.model.Game
|
||||
import org.yuzu.yuzu_emu.model.GamesViewModel
|
||||
import org.yuzu.yuzu_emu.model.HomeViewModel
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
|
||||
class SearchFragment : Fragment() {
|
||||
private var _binding: FragmentSearchBinding? = null
|
||||
@ -58,8 +54,6 @@ class SearchFragment : Fragment() {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
// This is using the correct scope, lint is just acting up
|
||||
@SuppressLint("UnsafeRepeatOnLifecycleDetector")
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
homeViewModel.setNavigationVisibility(visible = true, animated = true)
|
||||
@ -81,42 +75,18 @@ class SearchFragment : Fragment() {
|
||||
binding.chipGroup.setOnCheckedStateChangeListener { _, _ -> filterAndSearch() }
|
||||
|
||||
binding.searchText.doOnTextChanged { text: CharSequence?, _: Int, _: Int, _: Int ->
|
||||
if (text.toString().isNotEmpty()) {
|
||||
binding.clearButton.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.clearButton.visibility = View.INVISIBLE
|
||||
}
|
||||
binding.clearButton.setVisible(text.toString().isNotEmpty())
|
||||
filterAndSearch()
|
||||
}
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.apply {
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
gamesViewModel.searchFocused.collect {
|
||||
if (it) {
|
||||
focusSearch()
|
||||
gamesViewModel.setSearchFocused(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
gamesViewModel.games.collectLatest { filterAndSearch() }
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
gamesViewModel.searchedGames.collect {
|
||||
(binding.gridGamesSearch.adapter as GameAdapter).submitList(it)
|
||||
if (it.isEmpty()) {
|
||||
binding.noResultsView.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.noResultsView.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
gamesViewModel.searchFocused.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { gamesViewModel.setSearchFocused(false) }
|
||||
) { if (it) focusSearch() }
|
||||
gamesViewModel.games.collect(viewLifecycleOwner) { filterAndSearch() }
|
||||
gamesViewModel.searchedGames.collect(viewLifecycleOwner) {
|
||||
(binding.gridGamesSearch.adapter as GameAdapter).submitList(it)
|
||||
binding.noResultsView.setVisible(it.isNotEmpty())
|
||||
}
|
||||
|
||||
binding.clearButton.setOnClickListener { binding.searchText.setText("") }
|
||||
|
@ -4,7 +4,6 @@
|
||||
package org.yuzu.yuzu_emu.fragments
|
||||
|
||||
import android.Manifest
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
@ -23,9 +22,6 @@ import androidx.core.view.isVisible
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.preference.PreferenceManager
|
||||
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
|
||||
@ -46,6 +42,8 @@ import org.yuzu.yuzu_emu.ui.main.MainActivity
|
||||
import org.yuzu.yuzu_emu.utils.DirectoryInitialization
|
||||
import org.yuzu.yuzu_emu.utils.NativeConfig
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
|
||||
class SetupFragment : Fragment() {
|
||||
private var _binding: FragmentSetupBinding? = null
|
||||
@ -77,8 +75,6 @@ class SetupFragment : Fragment() {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
// This is using the correct scope, lint is just acting up
|
||||
@SuppressLint("UnsafeRepeatOnLifecycleDetector")
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
mainActivity = requireActivity() as MainActivity
|
||||
|
||||
@ -210,28 +206,14 @@ class SetupFragment : Fragment() {
|
||||
)
|
||||
}
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.apply {
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
homeViewModel.shouldPageForward.collect {
|
||||
if (it) {
|
||||
pageForward()
|
||||
homeViewModel.setShouldPageForward(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
homeViewModel.gamesDirSelected.collect {
|
||||
if (it) {
|
||||
gamesDirCallback.onStepCompleted()
|
||||
homeViewModel.setGamesDirSelected(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
homeViewModel.shouldPageForward.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { homeViewModel.setShouldPageForward(false) }
|
||||
) { if (it) pageForward() }
|
||||
homeViewModel.gamesDirSelected.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { homeViewModel.setGamesDirSelected(false) }
|
||||
) { if (it) gamesDirCallback.onStepCompleted() }
|
||||
|
||||
binding.viewPager2.apply {
|
||||
adapter = SetupAdapter(requireActivity() as AppCompatActivity, pages)
|
||||
@ -292,12 +274,8 @@ class SetupFragment : Fragment() {
|
||||
val backIsVisible = savedInstanceState.getBoolean(KEY_BACK_VISIBILITY)
|
||||
hasBeenWarned = savedInstanceState.getBooleanArray(KEY_HAS_BEEN_WARNED)!!
|
||||
|
||||
if (nextIsVisible) {
|
||||
binding.buttonNext.visibility = View.VISIBLE
|
||||
}
|
||||
if (backIsVisible) {
|
||||
binding.buttonBack.visibility = View.VISIBLE
|
||||
}
|
||||
binding.buttonNext.setVisible(nextIsVisible)
|
||||
binding.buttonBack.setVisible(backIsVisible)
|
||||
} else {
|
||||
hasBeenWarned = BooleanArray(pages.size)
|
||||
}
|
||||
|
@ -28,6 +28,7 @@ import org.yuzu.yuzu_emu.features.input.NativeInput
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.features.input.model.NativeAnalog
|
||||
import org.yuzu.yuzu_emu.features.input.model.NativeButton
|
||||
import org.yuzu.yuzu_emu.features.input.model.NpadStyleIndex
|
||||
import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.IntSetting
|
||||
import org.yuzu.yuzu_emu.overlay.model.OverlayControl
|
||||
@ -99,12 +100,10 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
|
||||
}
|
||||
|
||||
var shouldUpdateView = false
|
||||
val playerIndex =
|
||||
if (NativeInput.isHandheldOnly()) {
|
||||
NativeInput.ConsoleDevice
|
||||
} else {
|
||||
NativeInput.Player1Device
|
||||
}
|
||||
val playerIndex = when (NativeInput.getStyleIndex(0)) {
|
||||
NpadStyleIndex.Handheld -> 8
|
||||
else -> 0
|
||||
}
|
||||
|
||||
for (button in overlayButtons) {
|
||||
if (!button.updateStatus(event)) {
|
||||
@ -664,7 +663,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
|
||||
|
||||
val overlayControlData = NativeConfig.getOverlayControlData()
|
||||
overlayControlData.forEach {
|
||||
it.enabled = OverlayControl.from(it.id)?.defaultVisibility == false
|
||||
it.enabled = OverlayControl.from(it.id)?.defaultVisibility == true
|
||||
}
|
||||
NativeConfig.setOverlayControlData(overlayControlData)
|
||||
|
||||
|
@ -3,7 +3,6 @@
|
||||
|
||||
package org.yuzu.yuzu_emu.ui
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
@ -14,19 +13,16 @@ import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import com.google.android.material.color.MaterialColors
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.adapters.GameAdapter
|
||||
import org.yuzu.yuzu_emu.databinding.FragmentGamesBinding
|
||||
import org.yuzu.yuzu_emu.layout.AutofitGridLayoutManager
|
||||
import org.yuzu.yuzu_emu.model.GamesViewModel
|
||||
import org.yuzu.yuzu_emu.model.HomeViewModel
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
|
||||
class GamesFragment : Fragment() {
|
||||
private var _binding: FragmentGamesBinding? = null
|
||||
@ -44,8 +40,6 @@ class GamesFragment : Fragment() {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
// This is using the correct scope, lint is just acting up
|
||||
@SuppressLint("UnsafeRepeatOnLifecycleDetector")
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
homeViewModel.setNavigationVisibility(visible = true, animated = true)
|
||||
@ -88,49 +82,28 @@ class GamesFragment : Fragment() {
|
||||
}
|
||||
}
|
||||
|
||||
viewLifecycleOwner.lifecycleScope.apply {
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.RESUMED) {
|
||||
gamesViewModel.isReloading.collect {
|
||||
binding.swipeRefresh.isRefreshing = it
|
||||
if (gamesViewModel.games.value.isEmpty() && !it) {
|
||||
binding.noticeText.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.noticeText.visibility = View.INVISIBLE
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.RESUMED) {
|
||||
gamesViewModel.games.collectLatest {
|
||||
(binding.gridGames.adapter as GameAdapter).submitList(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.RESUMED) {
|
||||
gamesViewModel.shouldSwapData.collect {
|
||||
if (it) {
|
||||
(binding.gridGames.adapter as GameAdapter).submitList(
|
||||
gamesViewModel.games.value
|
||||
)
|
||||
gamesViewModel.setShouldSwapData(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.RESUMED) {
|
||||
gamesViewModel.shouldScrollToTop.collect {
|
||||
if (it) {
|
||||
scrollToTop()
|
||||
gamesViewModel.setShouldScrollToTop(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
gamesViewModel.isReloading.collect(viewLifecycleOwner) {
|
||||
binding.swipeRefresh.isRefreshing = it
|
||||
binding.noticeText.setVisible(
|
||||
visible = gamesViewModel.games.value.isEmpty() && !it,
|
||||
gone = false
|
||||
)
|
||||
}
|
||||
gamesViewModel.games.collect(viewLifecycleOwner) {
|
||||
(binding.gridGames.adapter as GameAdapter).submitList(it)
|
||||
}
|
||||
gamesViewModel.shouldSwapData.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { gamesViewModel.setShouldSwapData(false) }
|
||||
) {
|
||||
if (it) {
|
||||
(binding.gridGames.adapter as GameAdapter).submitList(gamesViewModel.games.value)
|
||||
}
|
||||
}
|
||||
gamesViewModel.shouldScrollToTop.collect(
|
||||
viewLifecycleOwner,
|
||||
resetState = { gamesViewModel.setShouldScrollToTop(false) }
|
||||
) { if (it) scrollToTop() }
|
||||
|
||||
setInsets()
|
||||
}
|
||||
|
@ -19,9 +19,6 @@ import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.navigation.NavController
|
||||
import androidx.navigation.fragment.NavHostFragment
|
||||
import androidx.navigation.ui.setupWithNavController
|
||||
@ -30,7 +27,6 @@ import com.google.android.material.color.MaterialColors
|
||||
import com.google.android.material.navigation.NavigationBarView
|
||||
import java.io.File
|
||||
import java.io.FilenameFilter
|
||||
import kotlinx.coroutines.launch
|
||||
import org.yuzu.yuzu_emu.HomeNavigationDirections
|
||||
import org.yuzu.yuzu_emu.NativeLibrary
|
||||
import org.yuzu.yuzu_emu.R
|
||||
@ -47,6 +43,7 @@ import org.yuzu.yuzu_emu.model.InstallResult
|
||||
import org.yuzu.yuzu_emu.model.TaskState
|
||||
import org.yuzu.yuzu_emu.model.TaskViewModel
|
||||
import org.yuzu.yuzu_emu.utils.*
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
import java.io.BufferedInputStream
|
||||
import java.io.BufferedOutputStream
|
||||
import java.util.zip.ZipEntry
|
||||
@ -139,42 +136,23 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||
|
||||
// Prevents navigation from being drawn for a short time on recreation if set to hidden
|
||||
if (!homeViewModel.navigationVisible.value.first) {
|
||||
binding.navigationView.visibility = View.INVISIBLE
|
||||
binding.statusBarShade.visibility = View.INVISIBLE
|
||||
binding.navigationView.setVisible(visible = false, gone = false)
|
||||
binding.statusBarShade.setVisible(visible = false, gone = false)
|
||||
}
|
||||
|
||||
lifecycleScope.apply {
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
homeViewModel.navigationVisible.collect { showNavigation(it.first, it.second) }
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
homeViewModel.statusBarShadeVisible.collect { showStatusBarShade(it) }
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
homeViewModel.contentToInstall.collect {
|
||||
if (it != null) {
|
||||
installContent(it)
|
||||
homeViewModel.setContentToInstall(null)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
launch {
|
||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||
homeViewModel.checkKeys.collect {
|
||||
if (it) {
|
||||
checkKeys()
|
||||
homeViewModel.setCheckKeys(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
homeViewModel.navigationVisible.collect(this) { showNavigation(it.first, it.second) }
|
||||
homeViewModel.statusBarShadeVisible.collect(this) { showStatusBarShade(it) }
|
||||
homeViewModel.contentToInstall.collect(
|
||||
this,
|
||||
resetState = { homeViewModel.setContentToInstall(null) }
|
||||
) {
|
||||
if (it != null) {
|
||||
installContent(it)
|
||||
}
|
||||
}
|
||||
homeViewModel.checkKeys.collect(this, resetState = { homeViewModel.setCheckKeys(false) }) {
|
||||
if (it) checkKeys()
|
||||
}
|
||||
|
||||
setInsets()
|
||||
}
|
||||
@ -214,18 +192,14 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||
|
||||
private fun showNavigation(visible: Boolean, animated: Boolean) {
|
||||
if (!animated) {
|
||||
if (visible) {
|
||||
binding.navigationView.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.navigationView.visibility = View.INVISIBLE
|
||||
}
|
||||
binding.navigationView.setVisible(visible)
|
||||
return
|
||||
}
|
||||
|
||||
val smallLayout = resources.getBoolean(R.bool.small_layout)
|
||||
binding.navigationView.animate().apply {
|
||||
if (visible) {
|
||||
binding.navigationView.visibility = View.VISIBLE
|
||||
binding.navigationView.setVisible(true)
|
||||
duration = 300
|
||||
interpolator = PathInterpolator(0.05f, 0.7f, 0.1f, 1f)
|
||||
|
||||
@ -264,7 +238,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||
}
|
||||
}.withEndAction {
|
||||
if (!visible) {
|
||||
binding.navigationView.visibility = View.INVISIBLE
|
||||
binding.navigationView.setVisible(visible = false, gone = false)
|
||||
}
|
||||
}.start()
|
||||
}
|
||||
@ -272,7 +246,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||
private fun showStatusBarShade(visible: Boolean) {
|
||||
binding.statusBarShade.animate().apply {
|
||||
if (visible) {
|
||||
binding.statusBarShade.visibility = View.VISIBLE
|
||||
binding.statusBarShade.setVisible(true)
|
||||
binding.statusBarShade.translationY = binding.statusBarShade.height.toFloat() * -2
|
||||
duration = 300
|
||||
translationY(0f)
|
||||
@ -284,7 +258,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||
}
|
||||
}.withEndAction {
|
||||
if (!visible) {
|
||||
binding.statusBarShade.visibility = View.INVISIBLE
|
||||
binding.statusBarShade.setVisible(visible = false, gone = false)
|
||||
}
|
||||
}.start()
|
||||
}
|
||||
@ -524,7 +498,8 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||
this@MainActivity,
|
||||
titleId = R.string.content_install_notice,
|
||||
descriptionId = R.string.content_install_notice_description,
|
||||
positiveAction = { homeViewModel.setContentToInstall(documents) }
|
||||
positiveAction = { homeViewModel.setContentToInstall(documents) },
|
||||
negativeAction = {}
|
||||
)
|
||||
}
|
||||
}.show(supportFragmentManager, ProgressDialogFragment.TAG)
|
||||
|
@ -0,0 +1,38 @@
|
||||
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
package org.yuzu.yuzu_emu.utils
|
||||
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
/**
|
||||
* Collects this [Flow] with a given [LifecycleOwner].
|
||||
* @param scope [LifecycleOwner] that this [Flow] will be collected with.
|
||||
* @param repeatState When to repeat collection on this [Flow].
|
||||
* @param resetState Optional lambda to reset state of an underlying [MutableStateFlow] after
|
||||
* [stateCollector] has been run.
|
||||
* @param stateCollector Lambda that receives new state.
|
||||
*/
|
||||
inline fun <reified T> Flow<T>.collect(
|
||||
scope: LifecycleOwner,
|
||||
repeatState: Lifecycle.State = Lifecycle.State.CREATED,
|
||||
crossinline resetState: () -> Unit = {},
|
||||
crossinline stateCollector: (state: T) -> Unit
|
||||
) {
|
||||
scope.apply {
|
||||
lifecycleScope.launch {
|
||||
repeatOnLifecycle(repeatState) {
|
||||
this@collect.collect {
|
||||
stateCollector(it)
|
||||
resetState()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -3,8 +3,10 @@
|
||||
|
||||
package org.yuzu.yuzu_emu.utils
|
||||
|
||||
import android.text.TextUtils
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.TextView
|
||||
|
||||
object ViewUtils {
|
||||
fun showView(view: View, length: Long = 300) {
|
||||
@ -57,4 +59,35 @@ object ViewUtils {
|
||||
}
|
||||
this.layoutParams = layoutParams
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows or hides a view.
|
||||
* @param visible Whether a view will be made View.VISIBLE or View.INVISIBLE/GONE.
|
||||
* @param gone Optional parameter for hiding a view. Uses View.GONE if true and View.INVISIBLE otherwise.
|
||||
*/
|
||||
fun View.setVisible(visible: Boolean, gone: Boolean = true) {
|
||||
visibility = if (visible) {
|
||||
View.VISIBLE
|
||||
} else {
|
||||
if (gone) {
|
||||
View.GONE
|
||||
} else {
|
||||
View.INVISIBLE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts a marquee on some text.
|
||||
* @param delay Optional parameter for changing the start delay. 3 seconds of delay by default.
|
||||
*/
|
||||
fun TextView.marquee(delay: Long = 3000) {
|
||||
ellipsize = null
|
||||
marqueeRepeatLimit = -1
|
||||
isSingleLine = true
|
||||
postDelayed({
|
||||
ellipsize = TextUtils.TruncateAt.MARQUEE
|
||||
isSelected = true
|
||||
}, delay)
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,22 @@ void EmuWindow_Android::OnSurfaceChanged(ANativeWindow* surface) {
|
||||
window_info.render_surface = reinterpret_cast<void*>(surface);
|
||||
}
|
||||
|
||||
void EmuWindow_Android::OnTouchPressed(int id, float x, float y) {
|
||||
const auto [touch_x, touch_y] = MapToTouchScreen(x, y);
|
||||
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchPressed(touch_x,
|
||||
touch_y, id);
|
||||
}
|
||||
|
||||
void EmuWindow_Android::OnTouchMoved(int id, float x, float y) {
|
||||
const auto [touch_x, touch_y] = MapToTouchScreen(x, y);
|
||||
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchMoved(touch_x,
|
||||
touch_y, id);
|
||||
}
|
||||
|
||||
void EmuWindow_Android::OnTouchReleased(int id) {
|
||||
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchReleased(id);
|
||||
}
|
||||
|
||||
void EmuWindow_Android::OnFrameDisplayed() {
|
||||
if (!m_first_frame) {
|
||||
Common::Android::RunJNIOnFiber<void>(
|
||||
|
@ -38,6 +38,10 @@ public:
|
||||
void OnSurfaceChanged(ANativeWindow* surface);
|
||||
void OnFrameDisplayed() override;
|
||||
|
||||
void OnTouchPressed(int id, float x, float y);
|
||||
void OnTouchMoved(int id, float x, float y);
|
||||
void OnTouchReleased(int id);
|
||||
|
||||
std::unique_ptr<Core::Frontend::GraphicsContext> CreateSharedContext() const override {
|
||||
return {std::make_unique<GraphicsContext_Android>(m_driver_library)};
|
||||
}
|
||||
|
@ -292,6 +292,9 @@ void EmulationSession::ShutdownEmulation() {
|
||||
// Unload user input.
|
||||
m_system.HIDCore().UnloadInputDevices();
|
||||
|
||||
// Enable all controllers
|
||||
m_system.HIDCore().SetSupportedStyleTag({Core::HID::NpadStyleSet::All});
|
||||
|
||||
// Shutdown the main emulated process
|
||||
if (m_load_result == Core::SystemResultStatus::Success) {
|
||||
m_system.DetachDebugger();
|
||||
@ -404,7 +407,9 @@ static Core::SystemResultStatus RunEmulation(const std::string& filepath,
|
||||
const size_t program_index,
|
||||
const bool frontend_initiated) {
|
||||
MicroProfileOnThreadCreate("EmuThread");
|
||||
SCOPE_EXIT({ MicroProfileShutdown(); });
|
||||
SCOPE_EXIT {
|
||||
MicroProfileShutdown();
|
||||
};
|
||||
|
||||
LOG_INFO(Frontend, "starting");
|
||||
|
||||
@ -413,7 +418,9 @@ static Core::SystemResultStatus RunEmulation(const std::string& filepath,
|
||||
return Core::SystemResultStatus::ErrorLoader;
|
||||
}
|
||||
|
||||
SCOPE_EXIT({ EmulationSession::GetInstance().ShutdownEmulation(); });
|
||||
SCOPE_EXIT {
|
||||
EmulationSession::GetInstance().ShutdownEmulation();
|
||||
};
|
||||
|
||||
jconst result = EmulationSession::GetInstance().InitializeEmulation(filepath, program_index,
|
||||
frontend_initiated);
|
||||
@ -661,7 +668,7 @@ void Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeEmptyUserDirectory(JNIEnv*
|
||||
ASSERT(user_id);
|
||||
|
||||
const auto user_save_data_path = FileSys::SaveDataFactory::GetFullPath(
|
||||
{}, vfs_nand_dir, FileSys::SaveDataSpaceId::NandUser, FileSys::SaveDataType::SaveData, 1,
|
||||
{}, vfs_nand_dir, FileSys::SaveDataSpaceId::User, FileSys::SaveDataType::Account, 1,
|
||||
user_id->AsU128(), 0);
|
||||
|
||||
const auto full_path = Common::FS::ConcatPathSafe(nand_dir, user_save_data_path);
|
||||
@ -829,8 +836,8 @@ jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getSavePath(JNIEnv* env, jobject j
|
||||
FileSys::OpenMode::Read);
|
||||
|
||||
const auto user_save_data_path = FileSys::SaveDataFactory::GetFullPath(
|
||||
{}, vfsNandDir, FileSys::SaveDataSpaceId::NandUser, FileSys::SaveDataType::SaveData,
|
||||
program_id, user_id->AsU128(), 0);
|
||||
{}, vfsNandDir, FileSys::SaveDataSpaceId::User, FileSys::SaveDataType::Account, program_id,
|
||||
user_id->AsU128(), 0);
|
||||
return Common::Android::ToJString(env, user_save_data_path);
|
||||
}
|
||||
|
||||
|
@ -102,8 +102,50 @@ void ApplyControllerConfig(size_t player_index,
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<s32> GetSupportedStyles(int player_index) {
|
||||
auto& hid_core = EmulationSession::GetInstance().System().HIDCore();
|
||||
const auto npad_style_set = hid_core.GetSupportedStyleTag();
|
||||
std::vector<s32> supported_indexes;
|
||||
if (npad_style_set.fullkey == 1) {
|
||||
supported_indexes.push_back(static_cast<s32>(Core::HID::NpadStyleIndex::Fullkey));
|
||||
}
|
||||
|
||||
if (npad_style_set.joycon_dual == 1) {
|
||||
supported_indexes.push_back(static_cast<s32>(Core::HID::NpadStyleIndex::JoyconDual));
|
||||
}
|
||||
|
||||
if (npad_style_set.joycon_left == 1) {
|
||||
supported_indexes.push_back(static_cast<s32>(Core::HID::NpadStyleIndex::JoyconLeft));
|
||||
}
|
||||
|
||||
if (npad_style_set.joycon_right == 1) {
|
||||
supported_indexes.push_back(static_cast<s32>(Core::HID::NpadStyleIndex::JoyconRight));
|
||||
}
|
||||
|
||||
if (player_index == 0 && npad_style_set.handheld == 1) {
|
||||
supported_indexes.push_back(static_cast<s32>(Core::HID::NpadStyleIndex::Handheld));
|
||||
}
|
||||
|
||||
if (npad_style_set.gamecube == 1) {
|
||||
supported_indexes.push_back(static_cast<s32>(Core::HID::NpadStyleIndex::GameCube));
|
||||
}
|
||||
|
||||
return supported_indexes;
|
||||
}
|
||||
|
||||
void ConnectController(size_t player_index, bool connected) {
|
||||
auto& hid_core = EmulationSession::GetInstance().System().HIDCore();
|
||||
ApplyControllerConfig(player_index, [&](Core::HID::EmulatedController* controller) {
|
||||
auto supported_styles = GetSupportedStyles(player_index);
|
||||
auto controller_style = controller->GetNpadStyleIndex(true);
|
||||
auto style = std::find(supported_styles.begin(), supported_styles.end(),
|
||||
static_cast<int>(controller_style));
|
||||
if (style == supported_styles.end() && !supported_styles.empty()) {
|
||||
controller->SetNpadStyleIndex(
|
||||
static_cast<Core::HID::NpadStyleIndex>(supported_styles[0]));
|
||||
}
|
||||
});
|
||||
|
||||
if (player_index == 0) {
|
||||
auto* handheld = hid_core.GetEmulatedController(Core::HID::NpadIdType::Handheld);
|
||||
auto* player_one = hid_core.GetEmulatedController(Core::HID::NpadIdType::Player1);
|
||||
@ -190,8 +232,7 @@ void Java_org_yuzu_yuzu_1emu_features_input_NativeInput_onTouchPressed(JNIEnv* e
|
||||
jint j_id, jfloat j_x_axis,
|
||||
jfloat j_y_axis) {
|
||||
if (EmulationSession::GetInstance().IsRunning()) {
|
||||
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchPressed(
|
||||
j_id, j_x_axis, j_y_axis);
|
||||
EmulationSession::GetInstance().Window().OnTouchPressed(j_id, j_x_axis, j_y_axis);
|
||||
}
|
||||
}
|
||||
|
||||
@ -199,15 +240,14 @@ void Java_org_yuzu_yuzu_1emu_features_input_NativeInput_onTouchMoved(JNIEnv* env
|
||||
jint j_id, jfloat j_x_axis,
|
||||
jfloat j_y_axis) {
|
||||
if (EmulationSession::GetInstance().IsRunning()) {
|
||||
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchMoved(
|
||||
j_id, j_x_axis, j_y_axis);
|
||||
EmulationSession::GetInstance().Window().OnTouchMoved(j_id, j_x_axis, j_y_axis);
|
||||
}
|
||||
}
|
||||
|
||||
void Java_org_yuzu_yuzu_1emu_features_input_NativeInput_onTouchReleased(JNIEnv* env, jobject j_obj,
|
||||
jint j_id) {
|
||||
if (EmulationSession::GetInstance().IsRunning()) {
|
||||
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchReleased(j_id);
|
||||
EmulationSession::GetInstance().Window().OnTouchReleased(j_id);
|
||||
}
|
||||
}
|
||||
|
||||
@ -524,36 +564,10 @@ jint Java_org_yuzu_yuzu_1emu_features_input_NativeInput_getButtonNameImpl(JNIEnv
|
||||
|
||||
jintArray Java_org_yuzu_yuzu_1emu_features_input_NativeInput_getSupportedStyleTagsImpl(
|
||||
JNIEnv* env, jobject j_obj, jint j_player_index) {
|
||||
auto& hid_core = EmulationSession::GetInstance().System().HIDCore();
|
||||
const auto npad_style_set = hid_core.GetSupportedStyleTag();
|
||||
std::vector<s32> supported_indexes;
|
||||
if (npad_style_set.fullkey == 1) {
|
||||
supported_indexes.push_back(static_cast<u32>(Core::HID::NpadStyleIndex::Fullkey));
|
||||
}
|
||||
|
||||
if (npad_style_set.joycon_dual == 1) {
|
||||
supported_indexes.push_back(static_cast<u32>(Core::HID::NpadStyleIndex::JoyconDual));
|
||||
}
|
||||
|
||||
if (npad_style_set.joycon_left == 1) {
|
||||
supported_indexes.push_back(static_cast<u32>(Core::HID::NpadStyleIndex::JoyconLeft));
|
||||
}
|
||||
|
||||
if (npad_style_set.joycon_right == 1) {
|
||||
supported_indexes.push_back(static_cast<u32>(Core::HID::NpadStyleIndex::JoyconRight));
|
||||
}
|
||||
|
||||
if (j_player_index == 0 && npad_style_set.handheld == 1) {
|
||||
supported_indexes.push_back(static_cast<u32>(Core::HID::NpadStyleIndex::Handheld));
|
||||
}
|
||||
|
||||
if (npad_style_set.gamecube == 1) {
|
||||
supported_indexes.push_back(static_cast<u32>(Core::HID::NpadStyleIndex::GameCube));
|
||||
}
|
||||
|
||||
jintArray j_supported_indexes = env->NewIntArray(supported_indexes.size());
|
||||
env->SetIntArrayRegion(j_supported_indexes, 0, supported_indexes.size(),
|
||||
supported_indexes.data());
|
||||
auto supported_styles = GetSupportedStyles(j_player_index);
|
||||
jintArray j_supported_indexes = env->NewIntArray(supported_styles.size());
|
||||
env->SetIntArrayRegion(j_supported_indexes, 0, supported_styles.size(),
|
||||
supported_styles.data());
|
||||
return j_supported_indexes;
|
||||
}
|
||||
|
||||
|
@ -39,10 +39,7 @@
|
||||
style="@style/TextAppearance.Material3.TitleMedium"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="none"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:requiresFadingEdge="horizontal"
|
||||
android:singleLine="true"
|
||||
android:textAlignment="viewStart"
|
||||
tools:text="@string/select_gpu_driver_default" />
|
||||
|
||||
@ -52,10 +49,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="6dp"
|
||||
android:ellipsize="none"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:requiresFadingEdge="horizontal"
|
||||
android:singleLine="true"
|
||||
android:textAlignment="viewStart"
|
||||
tools:text="@string/install_gpu_driver_description" />
|
||||
|
||||
@ -65,10 +59,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="6dp"
|
||||
android:ellipsize="none"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:requiresFadingEdge="horizontal"
|
||||
android:singleLine="true"
|
||||
android:textAlignment="viewStart"
|
||||
tools:text="@string/install_gpu_driver_description" />
|
||||
|
||||
|
@ -21,10 +21,7 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical|start"
|
||||
android:ellipsize="none"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:requiresFadingEdge="horizontal"
|
||||
android:singleLine="true"
|
||||
android:textAlignment="viewStart"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/button_layout"
|
||||
|
@ -40,10 +40,7 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:ellipsize="none"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:requiresFadingEdge="horizontal"
|
||||
android:singleLine="true"
|
||||
android:textAlignment="center"
|
||||
android:textSize="14sp"
|
||||
app:layout_constraintEnd_toEndOf="@+id/image_game_screen"
|
||||
|
@ -59,9 +59,6 @@
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
android:singleLine="true"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:ellipsize="none"
|
||||
android:requiresFadingEdge="horizontal"
|
||||
android:layout_marginTop="6dp"
|
||||
android:visibility="gone"
|
||||
|
@ -76,10 +76,7 @@
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:ellipsize="none"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:requiresFadingEdge="horizontal"
|
||||
android:singleLine="true"
|
||||
android:textAlignment="center"
|
||||
tools:text="deko_basic" />
|
||||
|
||||
|
@ -95,6 +95,8 @@
|
||||
<string name="install_game_content">دامەزراندنی ناوەڕۆکی یاری</string>
|
||||
<string name="install_game_content_description">دامەزراندنی نوێکاری یارییەکان یان DLC</string>
|
||||
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<!-- About screen strings -->
|
||||
<string name="gaia_is_not_real">گایا ڕاستەقینە نییە</string>
|
||||
<string name="copied_to_clipboard">کۆپی کرا بۆ تەختەی نووسین</string>
|
||||
@ -128,7 +130,6 @@
|
||||
<string name="frame_limit_slider">سنووردارکردنی لەسەدای خێرایی</string>
|
||||
<string name="frame_limit_slider_description">ڕێژەی سەدی دیاری دەکات بۆ سنووردارکردنی خێرایی ئیمولەیشن. 100% خێرایی ئاساییە. بەهایی بەرزتر یان نزمتر دەبێتە هۆی زیاد یان کەمکردنەوەی سنووری خێرایی.</string>
|
||||
<string name="cpu_accuracy">وردی CPU</string>
|
||||
<!-- System settings strings -->
|
||||
<string name="use_docked_mode">دۆخی دۆککراو</string>
|
||||
<string name="use_docked_mode_description">ڕوونی زیاد دەکات، کارایی کەم دەکاتەوە. دۆخی دەستی بەکاردێت کاتێک لەکاردەخرێت، ئەمەش ڕوونی دادەبەزێنێت و کارایی زیاد دەکات.</string>
|
||||
<string name="emulated_region">ناوچەی ئیمولەیشن</string>
|
||||
@ -162,6 +163,46 @@
|
||||
<string name="audio_volume">قەبارەی دەنگی</string>
|
||||
<string name="audio_volume_description">دیاریکردنی قەبارەی دەنگی دەرچووی بیستۆک و بزوێنەری دەنگی دەرەکی.</string>
|
||||
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">B</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">Plus</string>
|
||||
<string name="button_minus">Minus</string>
|
||||
<string name="button_home">ماڵەوە</string>
|
||||
<string name="button_capture">Capture</string>
|
||||
<string name="dpad">D-Pad</string>
|
||||
<string name="up">سەرەوە</string>
|
||||
<string name="down">خوارەوە</string>
|
||||
<string name="left">چەپ</string>
|
||||
<string name="right">ڕاست</string>
|
||||
<string name="left_stick">گێڕی چەپ</string>
|
||||
<string name="right_stick">گێڕی ڕاست</string>
|
||||
<string name="c_stick">گێڕی کامێرا</string>
|
||||
<string name="pressed">فشارخراوەتەسەر</string>
|
||||
<string name="range">مەودا</string>
|
||||
<string name="modifier">دەستکاریکەر</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">نادروست</string>
|
||||
<string name="pro_controller">کۆنتڕۆڵکەری پڕۆ</string>
|
||||
<string name="handheld">دەستی</string>
|
||||
<string name="dual_joycons">دووانە جۆیکۆن</string>
|
||||
<string name="left_joycon">جۆیکۆنی چەپ</string>
|
||||
<string name="right_joycon">جۆیکۆنی ڕاست</string>
|
||||
<string name="gamecube_controller">کۆنتڕۆڵکەری گەیمکیوب</string>
|
||||
<string name="invert_axis">پێچەوانەکردنەوەی تەوەر</string>
|
||||
<string name="invert_button">دوگمەی پێچەوانەکردنەوە</string>
|
||||
<string name="toggle_button">دوگمەی گۆڕین</string>
|
||||
<string name="turbo_button">دوگمەی تۆربۆ</string>
|
||||
<string name="set_threshold">دانانی ئاستەنگ</string>
|
||||
<string name="toggle_axis">گۆڕینی تەوەر</string>
|
||||
<string name="connected">پەیوەستە</string>
|
||||
<string name="vibration">لەرزین</string>
|
||||
<string name="profile">پڕۆفایل</string>
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">بنەڕەت</string>
|
||||
<string name="ini_saved">ڕێکخستنە پاشەکەوتکراوەکان</string>
|
||||
@ -182,6 +223,8 @@
|
||||
<string name="install">دامەزراندن</string>
|
||||
<string name="delete">سڕینەوە</string>
|
||||
<string name="clear">سڕینەوە</string>
|
||||
<string name="save">هەڵگرتن</string>
|
||||
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">هەڵبژاردنی وەگەڕخەری GPU</string>
|
||||
<string name="select_gpu_driver_title">حەز دەکەیت وەگەڕخەری GPU ی ئێستات بگۆڕیت؟</string>
|
||||
@ -228,7 +271,6 @@
|
||||
<string name="emulation_unpause">لادانی وەستاندنی ئیمولەیشن</string>
|
||||
<string name="emulation_input_overlay">هەڵبژاردەکانی داپۆشەر</string>
|
||||
<string name="touchscreen">رووکاری لەمسی</string>
|
||||
|
||||
<string name="load_settings">بارکردنی ڕێکخستنەکان...</string>
|
||||
|
||||
<!-- Software keyboard -->
|
||||
|
@ -84,7 +84,8 @@
|
||||
<string name="manage_save_data">Speicherdaten verwalten</string>
|
||||
<string name="manage_save_data_description">Speicherdaten gefunden. Bitte wähle unten eine Option aus.</string>
|
||||
<string name="import_save_warning">Speicherdaten importieren</string>
|
||||
<string name="import_save_warning_description">Das überschreibt alle existierenden Speicherdaten für dieses Spiel mit der ausgewählten Datei. Wirklich fortfahren?</string>
|
||||
<string name="import_save_warning_description">Das überschreibt alle existierenden Speicherdaten für dieses Spiel mit der ausgewählten Datei.
|
||||
Wirklich fortfahren?</string>
|
||||
<string name="import_export_saves_description">Speicherdaten importieren oder exportieren</string>
|
||||
<string name="save_files_importing">Importiere Speicherdaten...</string>
|
||||
<string name="save_files_exporting">Exportiere Speicherdaten...</string>
|
||||
@ -112,6 +113,8 @@
|
||||
<string name="share_save_file">Speicherdaten teilen</string>
|
||||
<string name="game_folders">Spiele-Ordner</string>
|
||||
<string name="add_game_folder">Spiele-Ordner hinzufügen</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<string name="applets_error_firmware">Firmware nicht installiert</string>
|
||||
<!-- About screen strings -->
|
||||
<string name="gaia_is_not_real">Gaia ist nicht real</string>
|
||||
@ -152,9 +155,9 @@
|
||||
<string name="frame_limit_slider">Geschwindkeitsbegrenzung in Prozent</string>
|
||||
<string name="frame_limit_slider_description">Gibt die prozentuale Geschwindigkeit der Emulation an. 100% sind normal. Werte darüber oder drunter werden die Geschwindigkeit entsprechend verändern.</string>
|
||||
<string name="cpu_accuracy">CPU-Genauigkeit</string>
|
||||
<!-- System settings strings -->
|
||||
<string name="use_docked_mode">Gedockter Modus</string>
|
||||
<string name="use_docked_mode_description">Der Gedockte-Modus erhöht die Auflösung, verringert aber die Leistung. Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die Leistung.</string>
|
||||
<string name="use_docked_mode_description">Der Gedockte-Modus erhöht die Auflösung, verringert aber die Leistung.
|
||||
Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die Leistung.</string>
|
||||
<string name="emulated_region">Emulierte Region</string>
|
||||
<string name="emulated_language">Emulierte Sprache</string>
|
||||
<string name="select_rtc_date">RTC-Datum auswählen</string>
|
||||
@ -180,6 +183,49 @@
|
||||
<string name="audio_volume">Lautstärke</string>
|
||||
<string name="audio_volume_description">Legt die Lautstärke der Audioausgabe fest.</string>
|
||||
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">B</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">Plus</string>
|
||||
<string name="button_minus">Minus</string>
|
||||
<string name="button_home">Home</string>
|
||||
<string name="button_capture">Screenshot</string>
|
||||
<string name="dpad">Steuerkreuz</string>
|
||||
<string name="up">Hoch</string>
|
||||
<string name="down">Runter</string>
|
||||
<string name="left">Links</string>
|
||||
<string name="right">Rechts</string>
|
||||
<string name="left_stick">Linker Stick</string>
|
||||
<string name="right_stick">Rechter Stick</string>
|
||||
<string name="c_stick">C-Stick</string>
|
||||
<string name="pressed">Gedrückt</string>
|
||||
<string name="range">Radius</string>
|
||||
<string name="deadzone">Deadzone</string>
|
||||
<string name="modifier">Modifikator</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">Ungültig</string>
|
||||
<string name="unknown">Unbekannt</string>
|
||||
<string name="pro_controller">Pro-Controller</string>
|
||||
<string name="handheld">Handheld</string>
|
||||
<string name="dual_joycons">Zwei Joycons</string>
|
||||
<string name="left_joycon">Linker Joycon</string>
|
||||
<string name="right_joycon">Rechter Joycon</string>
|
||||
<string name="gamecube_controller">GameCube-Controller</string>
|
||||
<string name="invert_axis">Achsen umkehren</string>
|
||||
<string name="invert_button">Knopf invertieren</string>
|
||||
<string name="toggle_button">Taste umschalten</string>
|
||||
<string name="turbo_button">Turbo Knopf</string>
|
||||
<string name="set_threshold">Schwellwert festlegen</string>
|
||||
<string name="toggle_axis">Achse umschalten</string>
|
||||
<string name="connected">Verbunden</string>
|
||||
<string name="vibration">Vibration</string>
|
||||
<string name="profile">Profil</string>
|
||||
<string name="use_global_input_configuration">Verwende globale Eingabe-Konfiguration</string>
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">Standard</string>
|
||||
<string name="ini_saved">Einstellungen gespeichert</string>
|
||||
@ -210,7 +256,11 @@
|
||||
<string name="export_success">Erfolgreich exportiert</string>
|
||||
<string name="start">Start</string>
|
||||
<string name="clear">Löschen</string>
|
||||
<string name="global">Global</string>
|
||||
<string name="custom">Benutzerdefiniert</string>
|
||||
<string name="use_global_setting">Globale Einstellung nutzen</string>
|
||||
<string name="save">Speichern</string>
|
||||
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">GPU-Treiber auswählen</string>
|
||||
<string name="select_gpu_driver_title">Möchtest du deinen aktuellen GPU-Treiber ersetzen?</string>
|
||||
@ -230,6 +280,7 @@
|
||||
<string name="preferences_graphics_description">Genauigkeitsstufe, Auflösung, Shader-Cache</string>
|
||||
<string name="preferences_audio">Audio</string>
|
||||
<string name="preferences_audio_description">Ausgabe-Engine, Lautstärke</string>
|
||||
<string name="preferences_controls">Steuerung</string>
|
||||
<string name="preferences_theme">Theme und Farbe</string>
|
||||
<string name="preferences_debug">Debug</string>
|
||||
<!-- Game properties -->
|
||||
@ -237,13 +288,14 @@
|
||||
<string name="info_description">Programm-ID, Entwickler, Version</string>
|
||||
<string name="per_game_settings">Spieleinstellungen</string>
|
||||
<string name="per_game_settings_description">Einstellungen für dieses Spiel ändern</string>
|
||||
<string name="launch_options">Starteinstellung</string>
|
||||
<string name="path">Pfad</string>
|
||||
<string name="program_id">Programm-ID</string>
|
||||
<string name="developer">Entwickler</string>
|
||||
<string name="version">Version</string>
|
||||
<string name="copy_details">Details kopieren</string>
|
||||
<string name="add_ons">Add-ons</string>
|
||||
<string name="add_ons_description">Mods, Updates und DLC aktivieren oder deaktivieren</string>
|
||||
<string name="add_ons_description">Mods, Updates und DLCs aktivieren oder deaktivieren</string>
|
||||
<string name="clear_shader_cache">Shader-Cache löschen</string>
|
||||
<string name="clear_shader_cache_description">Löscht alle für dieses Spiel erstellten Shader</string>
|
||||
<string name="cleared_shaders_successfully">Shader erfolgreich gelöscht</string>
|
||||
@ -252,10 +304,19 @@
|
||||
<string name="save_data_description">Importiert oder exportiert Speicherdaten für dieses Spiel</string>
|
||||
<string name="delete_save_data">Speicherdaten löschen</string>
|
||||
<string name="delete_save_data_description">Löscht alle Speicherdaten für dieses Spiel</string>
|
||||
<string name="delete_save_data_warning_description">Das löscht unwiederbringlich alle Speicherdaten für dieses Spiel. Wirklich fortfahren?</string>
|
||||
<string name="delete_save_data_warning_description">Das löscht unwiederbringlich alle Speicherdaten für dieses Spiel.
|
||||
Wirklich fortfahren?</string>
|
||||
<string name="save_data_deleted_successfully">Speicherdaten erfolgreich gelöscht</string>
|
||||
<string name="select_content_type">Inhaltstyp</string>
|
||||
<string name="updates_and_dlc">Spiel-Updates und DLCs</string>
|
||||
<string name="mods_and_cheats">Mods und Cheats</string>
|
||||
<string name="invalid_directory">Ungültiges Verzeichnis</string>
|
||||
<string name="addon_installed_successfully">Add-on erfolgreich installiert</string>
|
||||
<string name="verify_integrity">Integrität prüfen</string>
|
||||
<string name="verifying">Überprüfe...</string>
|
||||
<string name="verify_success">Integritätsüberprüfung erfolgreich!</string>
|
||||
<string name="verify_failure">Integritätsüberprüfung fehlgeschlagen!</string>
|
||||
<string name="verify_no_result">Integritätsüberprüfung konnte nicht durchgeführt werden</string>
|
||||
<!-- ROM loading errors -->
|
||||
<string name="loader_error_encrypted">Das ROM ist verschlüsselt</string>
|
||||
<string name="loader_error_encrypted_keys_description"><![CDATA[Bitte stelle sicher dass die <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> Datei installiert ist, damit Spiele entschlüsselt werden können.]]></string>
|
||||
@ -278,6 +339,8 @@
|
||||
<string name="emulation_unpause">Emulation fortsetzen</string>
|
||||
<string name="emulation_input_overlay">Overlay-Optionen</string>
|
||||
<string name="touchscreen">Touchscreen</string>
|
||||
<string name="lock_drawer">Menü sperren</string>
|
||||
<string name="unlock_drawer">Menü entsperren</string>
|
||||
|
||||
<string name="load_settings">Lade Einstellungen...</string>
|
||||
|
||||
@ -357,7 +420,7 @@
|
||||
<string name="ratio_default">Standard (16:9)</string>
|
||||
<string name="ratio_force_four_three">4:3 erzwingen</string>
|
||||
<string name="ratio_force_twenty_one_nine">21:9 erzwingen</string>
|
||||
<string name="ratio_force_sixteen_ten">Erzwinge 16:10</string>
|
||||
<string name="ratio_force_sixteen_ten">16:10 erzwingen</string>
|
||||
<string name="ratio_stretch">Auf Bildschirmgröße anpsassen</string>
|
||||
|
||||
<!-- CPU Accuracy -->
|
||||
|
@ -137,6 +137,11 @@
|
||||
<item quantity="other">%d archivos de guardado importados con éxito.</item>
|
||||
</plurals>
|
||||
<string name="no_save_data_found">No hay archivos de guardado</string>
|
||||
<string name="verify_installed_content">Verificar contenidos instalados</string>
|
||||
<string name="verify_installed_content_description">Comprueba todo el contenido instalado por si hubiese alguno corrupto</string>
|
||||
<string name="keys_missing">Faltan las claves de encriptación</string>
|
||||
<string name="keys_missing_description">El firmware y los juegos no se pueden desencriptar</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<!-- Applet launcher strings -->
|
||||
<string name="applets">Ejecutador de applet</string>
|
||||
@ -202,7 +207,6 @@
|
||||
<string name="cpu_accuracy">Precisión de CPU</string>
|
||||
<string name="value_with_units">%1$s%2$s</string>
|
||||
|
||||
<!-- System settings strings -->
|
||||
<string name="use_docked_mode">Modo Sobremesa</string>
|
||||
<string name="use_docked_mode_description">Incrementa la resolución al coste de reducir el rendimiento. El Modo Portátil es usado cuando está desactivado, reduciendo la resolución y mejorando así el rendimiento.</string>
|
||||
<string name="emulated_region">Región emulada</string>
|
||||
@ -220,6 +224,8 @@
|
||||
<string name="renderer_screen_layout">Orientación</string>
|
||||
<string name="renderer_aspect_ratio">Relación de aspecto</string>
|
||||
<string name="renderer_scaling_filter">Filtro de adaptación de ventana</string>
|
||||
<string name="fsr_sharpness">Nitidez FSR</string>
|
||||
<string name="fsr_sharpness_description">Ajusta la intensidad del filtro de enfoque al usar el contraste dinámico de FSR.</string>
|
||||
<string name="renderer_anti_aliasing">Método anti-aliasing</string>
|
||||
<string name="renderer_force_max_clock">Forzar velocidad al máximo (solo Adreno)</string>
|
||||
<string name="renderer_force_max_clock_description">Fuerza a la GPU a ejecutarse a la velocidad máxima de reloj posible (se seguirán aplicando restricciones térmicas).</string>
|
||||
@ -247,6 +253,49 @@
|
||||
<string name="audio_volume">Volumen</string>
|
||||
<string name="audio_volume_description">Especifica el volumen de la salida de audio.</string>
|
||||
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">B</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">Más</string>
|
||||
<string name="button_minus">Menos</string>
|
||||
<string name="button_home">Home</string>
|
||||
<string name="button_capture">Captura</string>
|
||||
<string name="dpad">Cruceta</string>
|
||||
<string name="up">Arriba</string>
|
||||
<string name="down">Abajo</string>
|
||||
<string name="left">Izquierda</string>
|
||||
<string name="right">Derecha</string>
|
||||
<string name="left_stick">Palanca izquierda</string>
|
||||
<string name="right_stick">Palanca derecha</string>
|
||||
<string name="c_stick">C-Stick</string>
|
||||
<string name="pressed">Presionado</string>
|
||||
<string name="range">Rango</string>
|
||||
<string name="deadzone">Zona muerta</string>
|
||||
<string name="modifier">Modificador</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">No válido</string>
|
||||
<string name="unknown">Desconocido</string>
|
||||
<string name="pro_controller">Controlador Pro</string>
|
||||
<string name="handheld">Portátil</string>
|
||||
<string name="dual_joycons">Joycons duales</string>
|
||||
<string name="left_joycon">Joycon izquierdo</string>
|
||||
<string name="right_joycon">Joycon derecho</string>
|
||||
<string name="gamecube_controller">Controlador de GameCube</string>
|
||||
<string name="invert_axis">Invertir ejes</string>
|
||||
<string name="invert_button">Invertir botón</string>
|
||||
<string name="toggle_button">Alternar botón</string>
|
||||
<string name="turbo_button">Botón turbo</string>
|
||||
<string name="set_threshold">Configurar umbral</string>
|
||||
<string name="toggle_axis">Alternar ejes</string>
|
||||
<string name="connected">Conectado</string>
|
||||
<string name="vibration">Vibración</string>
|
||||
<string name="profile">Perfil</string>
|
||||
<string name="use_global_input_configuration">Utilizar la configuración global de entrada</string>
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">Predeterminado</string>
|
||||
<string name="ini_saved">Configuración guardada</string>
|
||||
@ -281,6 +330,11 @@
|
||||
<string name="custom">Perzonalizado</string>
|
||||
<string name="notice">Aviso</string>
|
||||
<string name="import_complete">La importación se completó</string>
|
||||
<string name="more_options">Más opciones</string>
|
||||
<string name="use_global_setting">Usar configuración global</string>
|
||||
<string name="operation_completed_successfully">Operación completada con éxito</string>
|
||||
<string name="save">Guardar</string>
|
||||
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">Seleccionar driver GPU</string>
|
||||
<string name="select_gpu_driver_title">¿Quiere reemplazar el driver de GPU actual?</string>
|
||||
@ -301,6 +355,7 @@
|
||||
<string name="preferences_graphics_description">Nivel de precisión, resolución, caché de shaders</string>
|
||||
<string name="preferences_audio">Audio</string>
|
||||
<string name="preferences_audio_description">Motor de salida, volumen</string>
|
||||
<string name="preferences_controls">Controles</string>
|
||||
<string name="preferences_theme">Tema y color</string>
|
||||
<string name="preferences_debug">Depuración</string>
|
||||
<string name="preferences_debug_description">CPU/GPU debug, API gráfica, fastMEM</string>
|
||||
@ -342,6 +397,17 @@
|
||||
<string name="verifying_content">Verificando contenido...</string>
|
||||
<string name="content_install_notice">Aviso importante de contenido</string>
|
||||
<string name="content_install_notice_description">El contenido seleccionado no es de este juego.\n¿Instalar de todas maneras?</string>
|
||||
<string name="confirm_uninstall">Confirmar desinstalación</string>
|
||||
<string name="confirm_uninstall_description">¿De verdad quieres desinstalar este addon?</string>
|
||||
<string name="verify_integrity">Verificar integridad</string>
|
||||
<string name="verifying">Verificando...</string>
|
||||
<string name="verify_success">¡La verificación de integridad ha sido un éxito!</string>
|
||||
<string name="verify_failure">¡Verificación de integridad fallida!</string>
|
||||
<string name="verify_failure_description">Los contenidos del archivo pueden estar corruptos</string>
|
||||
<string name="verify_no_result">No se pudo ejecutar la verificación de integridad</string>
|
||||
<string name="verify_no_result_description">No se ha podido comprobar la validez de los contenidos del archivo</string>
|
||||
<string name="verification_failed_for">La verificación falló en los siguientes archivos:\n%1$s</string>
|
||||
|
||||
<!-- ROM loading errors -->
|
||||
<string name="loader_error_encrypted">Su ROM está encriptada</string>
|
||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga las guías para redumpear<a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartuchos de juegos</a> o <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string>
|
||||
@ -355,6 +421,7 @@
|
||||
<string name="emulation_exit">Salir de la emulación</string>
|
||||
<string name="emulation_done">Hecho</string>
|
||||
<string name="emulation_fps_counter">Contador de FPS</string>
|
||||
<string name="emulation_thermal_indicator">Indicador térmico</string>
|
||||
<string name="emulation_toggle_controls">Alternar controles</string>
|
||||
<string name="emulation_rel_stick_center">Centro relativo del stick</string>
|
||||
<string name="emulation_dpad_slide">Deslizamiento de la cruceta</string>
|
||||
@ -370,6 +437,8 @@
|
||||
<string name="emulation_unpause">Despausar emulación</string>
|
||||
<string name="emulation_input_overlay">Opciones de overlay</string>
|
||||
<string name="touchscreen">Pantalla táctil</string>
|
||||
<string name="lock_drawer">Bloquear menú cajón</string>
|
||||
<string name="unlock_drawer">Desbloquear menú cajón</string>
|
||||
|
||||
<string name="load_settings">Cargando configuración...</string>
|
||||
|
||||
@ -514,6 +583,12 @@
|
||||
<string name="mute">Mutear</string>
|
||||
<string name="unmute">Desmutear</string>
|
||||
|
||||
<!-- Emulation vertical alignment -->
|
||||
<string name="vertical_alignment">Alineación vertical</string>
|
||||
<string name="top">Arriba</string>
|
||||
<string name="center">Centro</string>
|
||||
<string name="bottom">Abajo</string>
|
||||
|
||||
<!-- Licenses screen strings -->
|
||||
<string name="licenses">Licencias</string>
|
||||
<string name="license_fidelityfx_fsr_description">Upscaling de alta calidad de AMD</string>
|
||||
|
595
src/android/app/src/main/res/values-fa/strings.xml
Normal file
595
src/android/app/src/main/res/values-fa/strings.xml
Normal file
@ -0,0 +1,595 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<string name="app_disclaimer">این نرمافزار برای اجرای بازیهای کنسول نینتندو سوییچ است. هیچ بازی یا کلیدی داخل برنامه گنجانده نشده است.<br /><br />قبل از شروع، لطفاً فایل <![CDATA[ prod.keys ]]> خود را در حافظه دستگاه خود پیدا کنید.<br /> <br /><![CDATA[بیشتر بدانید]]></string>
|
||||
<string name="notice_notification_channel_name">اطلاعیهها و خطاها</string>
|
||||
<string name="notice_notification_channel_description">وقتی مشکلی پیش میآید در اعلانها نشان میدهد.</string>
|
||||
<string name="notification_permission_not_granted">مجوز اعلان داده نشده!</string>
|
||||
|
||||
<!-- Setup strings -->
|
||||
<string name="welcome">خوش آمدید!</string>
|
||||
<string name="welcome_description">نحوه راه اندازی <b>yuzu</b> و شبیه سازی را بیاموزید.</string>
|
||||
<string name="get_started">شروع کنید</string>
|
||||
<string name="keys">کلیدها</string>
|
||||
<string name="keys_description">فایل <b>prod.keys</b> خود را با دکمه زیر انتخاب کنید.</string>
|
||||
<string name="select_keys">انتخاب کلیدها</string>
|
||||
<string name="games">بازیها</string>
|
||||
<string name="games_description">پوشه <b>بازیها</b> خود را با دکمه زیر انتخاب کنید.</string>
|
||||
<string name="done">انجام شد</string>
|
||||
<string name="done_description">همه چیز آماده است.\nاز بازیهای خود لذت ببرید!</string>
|
||||
<string name="text_continue">ادامه</string>
|
||||
<string name="next">بعدی</string>
|
||||
<string name="back">قبلی</string>
|
||||
<string name="add_games">افزودن بازیها</string>
|
||||
<string name="add_games_description">پوشه بازیهای خود را انتخاب کنید</string>
|
||||
<string name="step_complete">تکمیل شد!</string>
|
||||
|
||||
<!-- Home strings -->
|
||||
<string name="home_games">بازیها</string>
|
||||
<string name="home_search">جستجو</string>
|
||||
<string name="home_settings">تنظیمات</string>
|
||||
<string name="empty_gamelist">هیچ فایلی پیدا نشد یا هنوز پوشه بازیها انتخاب نشده است.</string>
|
||||
<string name="search_and_filter_games">جستجو و فیلتر کردن بازیها</string>
|
||||
<string name="select_games_folder">پوشه بازیها را انتخاب کنید</string>
|
||||
<string name="manage_game_folders">مدیریت پوشههای بازی</string>
|
||||
<string name="select_games_folder_description">به yuzu اجازه می دهد تا لیست بازیها را پر کند</string>
|
||||
<string name="add_games_warning">از انتخاب پوشه بازی رد میشوید؟</string>
|
||||
<string name="add_games_warning_description">اگر پوشهای انتخاب نشده باشد، بازیها در لیست بازیها نمایش داده نمیشوند.</string>
|
||||
<string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string>
|
||||
<string name="home_search_games">جستجو در بازیها</string>
|
||||
<string name="search_settings">جستجو در تنظیمات</string>
|
||||
<string name="games_dir_selected">پوشه بازیها انتخاب شد</string>
|
||||
<string name="install_prod_keys">نصب prod.keys</string>
|
||||
<string name="install_prod_keys_description">برای رمزگشایی بازیهای فروشگاهی مورد نیاز است</string>
|
||||
<string name="install_prod_keys_warning">افزودن کلیدها را رد میکنید؟</string>
|
||||
<string name="install_prod_keys_warning_description">کلیدهای معتبر برای شبیهسازی بازیهای فروشگاهی مورد نیاز است. اگر ادامه دهید، فقط برنامههای سیستم ریزکامپیوتری کار خواهند کرد.</string>
|
||||
<string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string>
|
||||
<string name="notifications">اعلانها</string>
|
||||
<string name="notifications_description">مجوز اعلان را با دکمه زیر اعطا کنید.</string>
|
||||
<string name="give_permission">اجازه بدهید</string>
|
||||
<string name="notification_warning">دادن مجوز اعلان را رد میکنید؟</string>
|
||||
<string name="notification_warning_description">yuzu نمیتواند شما را از اطلاعات مهم مطلع کند.</string>
|
||||
<string name="permission_denied">دسترسی داده نشد</string>
|
||||
<string name="permission_denied_description">شما بارها این دسترسی را رد کردید و اکنون باید آن را به صورت دستی در تنظیمات سیستم اعطا کنید.</string>
|
||||
<string name="about">درباره</string>
|
||||
<string name="about_description">نسخه ساخت، عوامل و موارد دیگر</string>
|
||||
<string name="warning_help">کمک</string>
|
||||
<string name="warning_skip">رد کردن</string>
|
||||
<string name="warning_cancel">لغو</string>
|
||||
<string name="install_amiibo_keys">کلیدهای Amiibo را نصب کنید</string>
|
||||
<string name="install_amiibo_keys_description">برای استفاده از Amiibo در بازی لازم است</string>
|
||||
<string name="invalid_keys_file">فایل کلیدهای نامعتبر انتخاب شد</string>
|
||||
<string name="install_keys_success">کلیدها با موفقیت نصب شدند</string>
|
||||
<string name="reading_keys_failure">خطا در خواندن کلیدهای رمزگذاری</string>
|
||||
<string name="install_prod_keys_failure_extension_description">بررسی کنید که فایل کلیدهای شما دارای پسوند keys. باشد و دوباره امتحان کنید.</string>
|
||||
<string name="install_amiibo_keys_failure_extension_description">بررسی کنید که فایل کلیدهای شما دارای پسوند bin. باشد و دوباره امتحان کنید.</string>
|
||||
<string name="invalid_keys_error">کلیدهای رمزگذاری نامعتبر</string>
|
||||
<string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
<string name="install_keys_failure_description">فایل انتخابی نادرست یا خراب است. لطفا کلیدهای خود را دوباره استخراج کنید.</string>
|
||||
<string name="gpu_driver_manager">مدیریت درایور پردازنده گرافیکی</string>
|
||||
<string name="install_gpu_driver">نصب درایور پردازنده گرافیکی</string>
|
||||
<string name="install_gpu_driver_description">درایورهای جایگزین را برای عملکرد یا دقت بهتر نصب کنید</string>
|
||||
<string name="advanced_settings">تنظیمات پیشرفته</string>
|
||||
<string name="advanced_settings_game">تنظیمات پیشرفته: %1$s</string>
|
||||
<string name="settings_description">پیکربندی تنظیمات شبیهساز</string>
|
||||
<string name="search_recently_played">آخرین بازی شدهها</string>
|
||||
<string name="search_recently_added">به تازگی اضافه شدهها</string>
|
||||
<string name="search_retail">فروشگاهی</string>
|
||||
<string name="search_homebrew">ریزکامپیوتری</string>
|
||||
<string name="open_user_folder">باز کردن پوشه yuzu</string>
|
||||
<string name="open_user_folder_description">مدیریت فایلهای داخلی yuzu</string>
|
||||
<string name="theme_and_color_description">تغییر ظاهر برنامه</string>
|
||||
<string name="no_file_manager">هیچ برنامه مدیریت فایلی پیدا نشد</string>
|
||||
<string name="notification_no_directory_link">پوشه yuzu باز نشد</string>
|
||||
<string name="notification_no_directory_link_description">لطفاً پوشه کاربری را با استفاده از پنل کناری برنامه مدیریت فایل به صورت دستی پیدا کنید.</string>
|
||||
<string name="manage_save_data">مدیریت ذخیره دادهها</string>
|
||||
<string name="manage_save_data_description">ذخیره داده یافت شد. لطفاً یکی از گزینههای زیر را انتخاب کنید.</string>
|
||||
<string name="import_save_warning">وارد کردن ذخیره دادهها</string>
|
||||
<string name="import_save_warning_description">این کار تمام دادههای ذخیره موجود را با فایل ارائه شده بازنویسی می کند. آیا مطمئن هستید که میخواهید ادامه دهید؟</string>
|
||||
<string name="import_export_saves_description">فایلهای ذخیره داده را وارد یا صادر کنید</string>
|
||||
<string name="save_files_importing">در حال وارد کردن فایلهای ذخیره…</string>
|
||||
<string name="save_files_exporting">در حال صادر کردن فایلهای ذخیره…</string>
|
||||
<string name="save_file_imported_success">با موفقیت وارد شد</string>
|
||||
<string name="save_file_invalid_zip_structure">ساختار پوشه ذخیره نامعتبر است</string>
|
||||
<string name="save_file_invalid_zip_structure_description">اولین نام زیرپوشه باید شناسه عنوان بازی باشد.</string>
|
||||
<string name="import_saves">وارد کردن</string>
|
||||
<string name="export_saves">صادر کردن</string>
|
||||
<string name="install_firmware">نصب ثابتافزار</string>
|
||||
<string name="install_firmware_description">ثابتافزار باید در آرشیو ZIP باشد و برای اجرای برخی بازیها نیاز است</string>
|
||||
<string name="firmware_installing">در حال نصب ثابتافزار</string>
|
||||
<string name="firmware_installed_success">ثابتافزار با موفقیت نصب شد</string>
|
||||
<string name="firmware_installed_failure">نصب ثابتافزار ناموفق بود</string>
|
||||
<string name="firmware_installed_failure_description">مطمئن شوید که فایلهای nca ثابتافزار در ریشه فایل فشرده هستند و دوباره امتحان کنید.</string>
|
||||
<string name="share_log">اشتراک گزارش اشکال زدایی</string>
|
||||
<string name="share_log_description">فایل گزارش yuzu را برای رفع اشکال به اشتراک بگذارید</string>
|
||||
<string name="share_log_missing">هیچ فایل گزارشی یافت نشد</string>
|
||||
<string name="install_game_content">نصب محتوای بازی</string>
|
||||
<string name="install_game_content_description">آپدیت های بازی یا DLC را نصب کنید</string>
|
||||
<string name="installing_game_content">در حال نصب محتوا...</string>
|
||||
<string name="install_game_content_failure">خطا در نصب فایل(ها) در NAND</string>
|
||||
<string name="install_game_content_failure_description">لطفاً مطمئن شوید که محتوا(های) معتبر هستند و فایل prod.keys نصب شده است.</string>
|
||||
<string name="install_game_content_failure_base">نصب فایل اصلی بازیها برای جلوگیری از ناسازگاریهای احتمالی مجاز نیست.</string>
|
||||
<string name="install_game_content_failure_file_extension">فقط محتوای NSP و XCI پشتیبانی می شود. لطفاً مطمئن شوید که محتوا(های) بازی معتبر است.</string>
|
||||
<string name="install_game_content_failed_count">%1$dخطا(های) نصب</string>
|
||||
<string name="install_game_content_success">محتوا(های) بازی با موفقیت نصب شد</string>
|
||||
<string name="install_game_content_success_install">%1$dبا موفقیت نصب شد</string>
|
||||
<string name="install_game_content_success_overwrite">%1$dبا موفقیت بازنویسی شد</string>
|
||||
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
||||
<string name="custom_driver_not_supported">درایورهای سفارشی پشتیبانی نمیشوند</string>
|
||||
<string name="custom_driver_not_supported_description">بارگیری درایور سفارشی در حال حاضر برای این دستگاه پشتیبانی نمیشود.\nاین گزینه را دوباره در آینده بررسی کنید تا ببینید آیا پشتیبانی اضافه شده است یا خیر!</string>
|
||||
<string name="manage_yuzu_data">مدیریت دادههای yuzu</string>
|
||||
<string name="manage_yuzu_data_description">وارد کردن/صادر کردن ثابتافزار، کلیدها، دادههای کاربر، و موارد دیگر!</string>
|
||||
<string name="share_save_file">اشتراک گذاری فایل ذخیره</string>
|
||||
<string name="export_save_failed">ذخیره صادر نشد</string>
|
||||
<string name="game_folders">پوشههای بازی</string>
|
||||
<string name="deep_scan">بررسی عمیق</string>
|
||||
<string name="add_game_folder">افزودن پوشه بازی</string>
|
||||
<string name="folder_already_added">این پوشه قبلاً اضافه شده است!</string>
|
||||
<string name="game_folder_properties">ویژگیهای پوشه بازی</string>
|
||||
<plurals name="saves_import_failed">
|
||||
<item quantity="one">وارد کردن ذخیره %d ناموفق بود</item>
|
||||
<item quantity="other">وارد کردن ذخیرههای %d ناموفق بود</item>
|
||||
</plurals>
|
||||
<plurals name="saves_import_success">
|
||||
<item quantity="one">ذخیره %d با موفقیت وارد گردید</item>
|
||||
<item quantity="other">ذخیرههای %d با موفقیت وارد گردید</item>
|
||||
</plurals>
|
||||
<string name="no_save_data_found">هیچ داده ذخیرهای یافت نشد</string>
|
||||
<string name="verify_installed_content">بررسی محتوای نصب شده</string>
|
||||
<string name="verify_installed_content_description">تمام محتوای نصب شده را از نظر خرابی بررسی میکند</string>
|
||||
<string name="keys_missing">کلیدهای رمزگذاری وجود ندارند</string>
|
||||
<string name="keys_missing_description">ثابتافزار و بازیهای فروشگاهی قابل رمزگشایی نیستند</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<!-- Applet launcher strings -->
|
||||
<string name="applets">اجراکننده برنامک</string>
|
||||
<string name="applets_description">برنامکهای سیستم را با استفاده از ثابتافزار نصب شده راه اندازی کنید</string>
|
||||
<string name="applets_error_firmware">ثابتافزار نصب نیست</string>
|
||||
<string name="applets_error_applet">برنامک در دسترس نیست</string>
|
||||
<string name="applets_error_description"><![CDATA[لطفاً مطمئن شوید که فایل <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> و <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-system-firmware\">ثابتافزار</a> شما نصب شده است و دوباره امتحان کنید.]]></string>
|
||||
<string name="album_applet">آلبوم</string>
|
||||
<string name="album_applet_description">تصاویر ذخیره شده در پوشه اسکرین شاتهای کاربر را با نمایشگر عکس سیستم مشاهده کنید</string>
|
||||
<string name="mii_edit_applet">ویرایش Mii</string>
|
||||
<string name="mii_edit_applet_description">نمایش و ویرایش Miis با استفاده از ویرایشگر سیستم</string>
|
||||
<string name="cabinet_applet">قفسه</string>
|
||||
<string name="cabinet_applet_description">دادههای ذخیره شده در amiibo را ویرایش و حذف کنید</string>
|
||||
<string name="cabinet_launcher">اجرا کننده قفسه</string>
|
||||
<string name="cabinet_nickname_and_owner">تنظیمات نام مستعار و مالک</string>
|
||||
<string name="cabinet_game_data_eraser">حذف کننده داده بازی</string>
|
||||
<string name="cabinet_restorer">بازگرداننده</string>
|
||||
<string name="cabinet_formatter">فرم دهنده</string>
|
||||
|
||||
<!-- About screen strings -->
|
||||
<string name="gaia_is_not_real">Gaia isn\'t real</string>
|
||||
<string name="copied_to_clipboard">در کلیپبورد کپی شد</string>
|
||||
<string name="about_app_description">یک شبیهساز سوئیچ منبع باز</string>
|
||||
<string name="contributors">مشارکت کنندگان</string>
|
||||
<string name="contributors_description">Made with \u2764 from the yuzu team</string>
|
||||
<string name="contributors_link">https://github.com/yuzu-emu/yuzu/graphs/contributors</string>
|
||||
<string name="licenses_description">پروژههایی که yuzu را برای اندروید ممکن میسازند</string>
|
||||
<string name="build">ساخت</string>
|
||||
<string name="user_data">داده کاربر</string>
|
||||
<string name="user_data_description">همه دادههای برنامه را وارد/صادر کنید.\n\nهنگام وارد کردن دادههای کاربر، همه دادههای کاربر موجود حذف خواهند شد!</string>
|
||||
<string name="exporting_user_data">در حال صادر کردن دادههای کاربر...</string>
|
||||
<string name="importing_user_data">در حال وارد کردن دادههای کاربر...</string>
|
||||
<string name="import_user_data">وارد کردن داده کاربر</string>
|
||||
<string name="invalid_yuzu_backup">پشتیبان نامعتبر yuzu</string>
|
||||
<string name="user_data_export_success">دادههای کاربر با موفقیت صادر شد</string>
|
||||
<string name="user_data_import_success">دادههای کاربر با موفقیت وارد شد</string>
|
||||
<string name="user_data_export_cancelled">صدور لغو شد</string>
|
||||
<string name="user_data_import_failed_description">مطمئن شوید که پوشههای داده کاربر در ریشه پوشه zip و حاوی یک فایل پیکربندی در config/config.ini هستند سپس دوباره امتحان کنید.</string>
|
||||
<string name="support_link">https://discord.gg/u77vRWY</string>
|
||||
<string name="website_link">https://yuzu-emu.org/</string>
|
||||
<string name="github_link">https://github.com/yuzu-emu</string>
|
||||
|
||||
<!-- Early access upgrade strings -->
|
||||
<string name="early_access">دسترسی زودهنگام</string>
|
||||
<string name="get_early_access">دسترسی زودهنگام را دریافت کنید</string>
|
||||
<string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string>
|
||||
<string name="get_early_access_description">ویژگیهای پیشرفته، دسترسی زودهنگام به بروزرسانیها و موارد دیگر</string>
|
||||
<string name="early_access_benefits">مزایای دسترسی زودهنگام</string>
|
||||
<string name="cutting_edge_features">ویژگیهای پیشرفته</string>
|
||||
<string name="early_access_updates">دسترسی زودهنگام به بروزرسانیها</string>
|
||||
<string name="no_manual_installation">بدون نصب دستی</string>
|
||||
<string name="prioritized_support">پشتیبانی اولویت بندی شده</string>
|
||||
<string name="helping_game_preservation">کمک به حفظ بازی</string>
|
||||
<string name="our_eternal_gratitude">سپاس ابدی ما</string>
|
||||
<string name="are_you_interested">مشتاق هستید؟</string>
|
||||
|
||||
<!-- General settings strings -->
|
||||
<string name="frame_limit_enable">محدودیت سرعت</string>
|
||||
<string name="frame_limit_enable_description">سرعت شبیهسازی را به درصد مشخصی از سرعت عادی محدود میکند.</string>
|
||||
<string name="frame_limit_slider">درصد محدودیت سرعت</string>
|
||||
<string name="frame_limit_slider_description">درصدی را برای محدود کردن سرعت شبیهسازی مشخص میکند. 100% سرعت عادی است. مقادیر بیشتر یا کمتر باعث افزایش یا کاهش سرعت میشود.</string>
|
||||
<string name="cpu_backend">پشتگاه پردازنده</string>
|
||||
<string name="cpu_accuracy">دقت پردازنده</string>
|
||||
<string name="value_with_units">%1$s%2$s</string>
|
||||
|
||||
<!-- System settings strings -->
|
||||
<string name="device_name">نام دستگاه</string>
|
||||
<string name="use_docked_mode">حالت متصل</string>
|
||||
<string name="use_docked_mode_description">وضوح را افزایش میدهد، عملکرد را کاهش میدهد. حالت دستی زمانی استفاده میشود که این گزینه غیرفعال است، و باعث کاهش وضوح و افزایش عملکرد میشود.</string>
|
||||
<string name="emulated_region">منطقه شبیهسازی</string>
|
||||
<string name="emulated_language">زبان شبیهسازی</string>
|
||||
<string name="select_rtc_date">انتخاب تاریخ</string>
|
||||
<string name="select_rtc_time">انتخاب زمان</string>
|
||||
<string name="use_custom_rtc">زمان سفارشی</string>
|
||||
<string name="use_custom_rtc_description">به شما امکان میدهد یک ساعت سفارشی جدا از زمان فعلی سیستم خود تنظیم کنید.</string>
|
||||
<string name="set_custom_rtc">تنظیم زمان سفارشی</string>
|
||||
|
||||
<!-- Graphics settings strings -->
|
||||
<string name="renderer_accuracy">سطح دقت</string>
|
||||
<string name="renderer_resolution">وضوح تصویر (دستی/متصل)</string>
|
||||
<string name="renderer_vsync">حالت VSync</string>
|
||||
<string name="renderer_screen_layout">جهتگیری صفحه</string>
|
||||
<string name="renderer_aspect_ratio">نسبت ابعاد</string>
|
||||
<string name="renderer_scaling_filter">فیلتر تطبیق پنجره</string>
|
||||
<string name="fsr_sharpness">وضوح FSR</string>
|
||||
<string name="fsr_sharpness_description">تعیین میکند که هنگام استفاده از کنتراست پویا FSR، تصویر چقدر واضح به نظر میرسد</string>
|
||||
<string name="renderer_anti_aliasing">حالت ضدپلگی</string>
|
||||
<string name="renderer_force_max_clock">اجبار به حداکثر فرکانس (فقط برای Adreno)</string>
|
||||
<string name="renderer_force_max_clock_description">پردازنده گرافیکی را مجبور میکند تا با بیشترین فرکانس کار کند (محدودیتهای حرارتی همچنان اعمال خواهند شد).</string>
|
||||
<string name="renderer_asynchronous_shaders">استفاده از سایهزنهای ناهمزمان</string>
|
||||
<string name="renderer_asynchronous_shaders_description">سایهزنها را به صورت ناهمزمان کامپایل می کند، لکنت را کاهش میدهد اما ممکن است اشکالاتی ایجاد کند.</string>
|
||||
<string name="renderer_reactive_flushing">استفاده از فلاش کردن واکنشی</string>
|
||||
<string name="renderer_reactive_flushing_description">دقت تفسیر تصاویر را در برخی از بازیها به قیمت عملکرد بهبود میبخشد.</string>
|
||||
<string name="use_disk_shader_cache">ذخیره سایهزنیها در حافظه</string>
|
||||
<string name="use_disk_shader_cache_description">لکنت را با ذخیره و بارگذاری سایهزنهای تولید شده کاهش میدهد.</string>
|
||||
<string name="anisotropic_filtering">فیلتر ناهمسانگرد</string>
|
||||
<string name="anisotropic_filtering_description">کیفیت بافتها را هنگام مشاهده در زوایای اریب بهبود میبخشد</string>
|
||||
|
||||
<!-- Debug settings strings -->
|
||||
<string name="cpu">پردازنده</string>
|
||||
<string name="cpu_debug_mode">اشکالزدایی پردازنده</string>
|
||||
<string name="cpu_debug_mode_description">پردازنده را در حالت اشکالزدایی کندتر قرار میدهد.</string>
|
||||
<string name="gpu">پردازنده گرافیکی</string>
|
||||
<string name="renderer_api">رابط برنامهنویسی</string>
|
||||
<string name="renderer_debug">اشکالزدایی پردازنده گرافیکی</string>
|
||||
<string name="renderer_debug_description">رابط گرافیکی را روی حالت اشکالزدایی کندتر تنظیم میکند.</string>
|
||||
<string name="fastmem">دسترسی سریع حافظه</string>
|
||||
|
||||
<!-- Audio settings strings -->
|
||||
<string name="audio_output_engine">موتور خروجی</string>
|
||||
<string name="audio_volume">میزان</string>
|
||||
<string name="audio_volume_description">میزان صدای خروجی را مشخص میکند.</string>
|
||||
|
||||
<!-- Input strings -->
|
||||
<string name="buttons">دکمهها</string>
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">بایت</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">به علاوه</string>
|
||||
<string name="button_minus">منها</string>
|
||||
<string name="button_home">خانه</string>
|
||||
<string name="button_capture">ضبط</string>
|
||||
<string name="start_pause">شروع/مکث</string>
|
||||
<string name="dpad">دکمههای جهتی</string>
|
||||
<string name="up">بالا</string>
|
||||
<string name="down">پایین</string>
|
||||
<string name="left">چپ</string>
|
||||
<string name="right">راست</string>
|
||||
<string name="left_stick">استیک چپ</string>
|
||||
<string name="right_stick">استیک راست</string>
|
||||
<string name="pressed">فشار داده شده</string>
|
||||
<string name="range">محدوده</string>
|
||||
<string name="deadzone">ناحیه خطا</string>
|
||||
<string name="triggers">ماشهها</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">نامعتبر</string>
|
||||
<string name="not_set">تنظیم نشده</string>
|
||||
<string name="unknown">نامعلوم</string>
|
||||
<string name="unused">استفاده نشده</string>
|
||||
<string name="input_prompt">یک ورودی را حرکت یا فشار دهید</string>
|
||||
<string name="unsupported_input">نوع ورودی پشتیبانی نمیشود</string>
|
||||
<string name="input_mapping_filter">فیلتر نگاشت ورودی</string>
|
||||
<string name="input_mapping_filter_description">دستگاهی را برای فیلتر کردن ورودیهای نقشه برداری انتخاب کنید</string>
|
||||
<string name="auto_map">نقشه برداری خودکار یک کنترلر</string>
|
||||
<string name="auto_map_description">دستگاهی را برای انجام نقشه برداری خودکار انتخاب کنید</string>
|
||||
<string name="attempted_auto_map">نقشه خودکار با %1$s</string>
|
||||
<string name="controller_type">نوع کنترلر</string>
|
||||
<string name="pro_controller">کنترلر حرفهای</string>
|
||||
<string name="handheld">حالت دستی</string>
|
||||
<string name="dual_joycons">جفت Joycon</string>
|
||||
<string name="left_joycon">Joycon چپ</string>
|
||||
<string name="right_joycon">Joycon راست</string>
|
||||
<string name="gamecube_controller">کنترلر GameCube</string>
|
||||
<string name="invert_axis">محور معکوس</string>
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">پیشفرض</string>
|
||||
<string name="ini_saved">تنظیمات ذخیره شده</string>
|
||||
<string name="gameid_saved">تنظیمات ذخیره شده برای %1$s</string>
|
||||
<string name="error_saving">خطا برای ذخیره ini.%1$s : %2$s</string>
|
||||
<string name="unimplemented_menu">منوی ساخته نشده</string>
|
||||
<string name="loading">بارگذاری...</string>
|
||||
<string name="shutting_down">خاموش شدن…</string>
|
||||
<string name="reset_setting_confirmation">آیا میخواهید این تنظیم را به مقدار پیشفرض خود بازنشانی کنید؟</string>
|
||||
<string name="reset_to_default">بازنشانی به پیشفرض</string>
|
||||
<string name="reset_to_default_description">بازنشانی کل تنظیمات پیشرفته</string>
|
||||
<string name="reset_all_settings">کل تنظیمات بازنشانی شود؟</string>
|
||||
<string name="reset_all_settings_description">تمام تنظیمات پیشرفته به پیکربندی پیشفرض خود بازنشانی خواهند شد. این قابل بازگشت نیست.</string>
|
||||
<string name="settings_reset">بازنشانی تنظیمات</string>
|
||||
<string name="close">بستن</string>
|
||||
<string name="learn_more">بیشتر بدانید</string>
|
||||
<string name="auto">خودکار</string>
|
||||
<string name="submit">ارسال</string>
|
||||
<string name="string_null">خالی</string>
|
||||
<string name="string_import">وارد کردن</string>
|
||||
<string name="export">صادر کردن</string>
|
||||
<string name="export_failed">صادر کردن ناموفق بود</string>
|
||||
<string name="import_failed">وارد کردن ناموفق بود</string>
|
||||
<string name="cancelling">در حال لغو</string>
|
||||
<string name="install">نصب</string>
|
||||
<string name="delete">حذف</string>
|
||||
<string name="edit">ویرایش</string>
|
||||
<string name="export_success">با موفقیت صادر شد</string>
|
||||
<string name="start">شروع</string>
|
||||
<string name="clear">پاکسازی</string>
|
||||
<string name="global">سراسری</string>
|
||||
<string name="custom">سفارشی</string>
|
||||
<string name="notice">اطلاع</string>
|
||||
<string name="import_complete">وارد کردن تکمیل شد</string>
|
||||
<string name="more_options">گزینههای بیشتر</string>
|
||||
<string name="use_global_setting">استفاده از تنظیمات سراسری</string>
|
||||
<string name="operation_completed_successfully">عملیات با موفقیت به پایان رسید</string>
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">انتخاب درایور پردازنده گرافیکی</string>
|
||||
<string name="select_gpu_driver_title">آیا می خواهید درایور فعلی پردازنده گرافیکی خود را جایگزین کنید؟</string>
|
||||
<string name="select_gpu_driver_install">نصب</string>
|
||||
<string name="select_gpu_driver_default">پیشفرض</string>
|
||||
<string name="select_gpu_driver_use_default">استفاده از درایور پیشفرض پردازنده گرافیکی</string>
|
||||
<string name="select_gpu_driver_error">درایور نامعتبر انتخاب شده است</string>
|
||||
<string name="driver_already_installed">درایور قبلاً نصب شده است</string>
|
||||
<string name="system_gpu_driver">درایور سیستم پردازنده گرافیکی</string>
|
||||
<string name="installing_driver">در حال نصب درایور...</string>
|
||||
|
||||
<!-- Preferences Screen -->
|
||||
<string name="preferences_settings">تنظیمات</string>
|
||||
<string name="preferences_general">عمومی</string>
|
||||
<string name="preferences_system">سیستم</string>
|
||||
<string name="preferences_system_description">حالت متصل شده، منطقه، زبان</string>
|
||||
<string name="preferences_graphics">گرافیک</string>
|
||||
<string name="preferences_graphics_description">سطح دقت، وضوح، حافظه پنهان سایهزن</string>
|
||||
<string name="preferences_audio">صدا</string>
|
||||
<string name="preferences_audio_description">موتور خروجی، میزان</string>
|
||||
<string name="preferences_theme">رنگ و تم</string>
|
||||
<string name="preferences_debug">اشکالزدایی</string>
|
||||
<string name="preferences_debug_description">اشکالزدایی پردازنده/گرافیک، API گرافیک، fastmem</string>
|
||||
|
||||
<!-- Game properties -->
|
||||
<string name="info">اطلاعات</string>
|
||||
<string name="info_description">شناسه برنامه، توسعه دهنده، نسخه</string>
|
||||
<string name="per_game_settings">تنظیمات مختص هر بازی</string>
|
||||
<string name="per_game_settings_description">ویرایش تنظیمات مختص این بازی</string>
|
||||
<string name="launch_options">تنظیمات اجرا</string>
|
||||
<string name="path">مسیر</string>
|
||||
<string name="program_id">شناسه برنامه</string>
|
||||
<string name="developer">توسعه دهنده</string>
|
||||
<string name="version">نسخه</string>
|
||||
<string name="copy_details">کپی جزئیات</string>
|
||||
<string name="add_ons">افزونهها</string>
|
||||
<string name="add_ons_description">تغییر مودها، آپدیتها و DLC</string>
|
||||
<string name="clear_shader_cache">پاکسازی حافظه پنهان سایهزنها</string>
|
||||
<string name="clear_shader_cache_description">تمام سایهزنهای ساخته شده در حین اجرای این بازی را حذف میکند</string>
|
||||
<string name="clear_shader_cache_warning_description">هنگام بازسازی حافظه پنهان سایهزنی، لکنت بیشتری را تجربه خواهید کرد</string>
|
||||
<string name="cleared_shaders_successfully">سایهزنها با موفقیت پاک شدند</string>
|
||||
<string name="addons_game">افزونه: %1$s</string>
|
||||
<string name="save_data">دادههای ذخیره</string>
|
||||
<string name="save_data_description">مدیریت دادههای ذخیره مخصوص این بازی</string>
|
||||
<string name="delete_save_data">حذف دادههای ذخیره</string>
|
||||
<string name="delete_save_data_description">تمام دادههای ذخیره شده مخصوص این بازی را حذف میکند</string>
|
||||
<string name="delete_save_data_warning_description">تمام دادههای ذخیره این بازی را به طور غیرقابل برگشت حذف می کند. آیا مطمئن هستید که میخواهید ادامه دهید؟</string>
|
||||
<string name="save_data_deleted_successfully">ذخیره دادهها با موفقیت حذف شد</string>
|
||||
<string name="select_content_type">نوع محتوا</string>
|
||||
<string name="updates_and_dlc">آپدیتها و DLC</string>
|
||||
<string name="mods_and_cheats">مودها و چیتها</string>
|
||||
<string name="addon_notice">اطلاعیه مهم افزونه</string>
|
||||
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
|
||||
<string name="addon_notice_description">برای نصب مودها و چیت ها، باید پوشه ای را انتخاب کنید که حاوی مسیر cheats/ یا romfs/ یا exefs/ باشد. ما نمیتوانیم تأیید کنیم که اینها با بازی شما سازگار هستند، بنابراین مراقب باشید!</string>
|
||||
<string name="invalid_directory">مسیر نامعتبر</string>
|
||||
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
|
||||
<string name="invalid_directory_description">لطفاً مطمئن شوید که مسیر انتخابی شما حاوی یک پوشه cheats/ یا romfs/ یا exefs/ میباشد و دوباره امتحان کنید.</string>
|
||||
<string name="addon_installed_successfully">افزونه با موفقیت نصب شد</string>
|
||||
<string name="verifying_content">در حال تأیید محتوا…</string>
|
||||
<string name="content_install_notice">اطلاعیه نصب محتوا</string>
|
||||
<string name="content_install_notice_description">محتوایی که انتخاب کردید با این بازی مطابقت ندارد.\nبه هر حال نصب شود؟</string>
|
||||
<string name="confirm_uninstall">حذف را تایید کنید</string>
|
||||
<string name="confirm_uninstall_description">آیا مطمئن هستید که میخواهید این افزونه را حذف کنید؟</string>
|
||||
<string name="verify_integrity">راستیآزمایی یکپارچگی</string>
|
||||
<string name="verifying">در حال بررسی...</string>
|
||||
<string name="verify_success">راستیآزمایی یکپارچگی با موفقیت انجام شد!</string>
|
||||
<string name="verify_failure">راستیآزمایی یکپارچگی ناموفق بود!</string>
|
||||
<string name="verify_failure_description">محتویات فایل ممکن است خراب باشد</string>
|
||||
<string name="verify_no_result">راستیآزمایی یکپارچگی انجام نشد</string>
|
||||
<string name="verify_no_result_description"> اعتبار محتوای فایل بررسی نشد</string>
|
||||
<string name="verification_failed_for">بررسی برای فایلهای زیر انجام نشد:\n%1$s</string>
|
||||
|
||||
<!-- ROM loading errors -->
|
||||
<string name="loader_error_encrypted">رام شما رمزگذاری شده است</string>
|
||||
<string name="loader_error_encrypted_roms_description"><![CDATA[لطفاً راهنماها را دنبال کنید تا <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">کارتیجهای بازی</a> یا <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">عناوین نصب شده</a> خود را استخراج کنید.]]></string>
|
||||
<string name="loader_error_encrypted_keys_description"><![CDATA[لطفاً مطمئن شوید که فایل prod.keys شما نصب شده است تا بازیها رمزگشایی شوند.]]></string>
|
||||
<string name="loader_error_video_core">در راهاندازی اولیه هسته ویدیو خطایی رخ داد</string>
|
||||
<string name="loader_error_video_core_description">این مورد معمولاً توسط یک درایور گرافیکی ناسازگار ایجاد میشود. نصب درایور گرافیکی سفارشی ممکن است این مشکل را حل کند.</string>
|
||||
<string name="loader_error_invalid_format">رام بارگذاری نشد</string>
|
||||
<string name="loader_error_file_not_found">فایل رام وجود ندارد</string>
|
||||
|
||||
<!-- Emulation Menu -->
|
||||
<string name="emulation_exit">خروج از شبیهسازی</string>
|
||||
<string name="emulation_done">انجام شد</string>
|
||||
<string name="emulation_fps_counter">شمارشگر فریم</string>
|
||||
<string name="emulation_thermal_indicator">نشانگر حرارتی</string>
|
||||
<string name="emulation_toggle_controls">تغییر کنترلها</string>
|
||||
<string name="emulation_rel_stick_center">مرکز نسبی استیک</string>
|
||||
<string name="emulation_dpad_slide">لغزش دکمههای جهتی</string>
|
||||
<string name="emulation_haptics">لرزش لمسی</string>
|
||||
<string name="emulation_show_overlay">نشان دادن نمایش روی صفحه</string>
|
||||
<string name="emulation_toggle_all">تغییر همه</string>
|
||||
<string name="emulation_control_adjust">تنظیم نمایش روی صفحه</string>
|
||||
<string name="emulation_control_scale">مقیاس</string>
|
||||
<string name="emulation_control_opacity">شفافیت</string>
|
||||
<string name="emulation_touch_overlay_reset">بازنشانی نمایش روی صفحه</string>
|
||||
<string name="emulation_touch_overlay_edit">ویرایش دکمههای روی صفحه</string>
|
||||
<string name="emulation_pause">مکث شبیهسازی</string>
|
||||
<string name="emulation_unpause">ادامه شبیهسازی</string>
|
||||
<string name="emulation_input_overlay">گزینههای نمایش روی صفحه</string>
|
||||
<string name="touchscreen">صفحه لمسی</string>
|
||||
<string name="lock_drawer">قفلکردن منوی کشویی</string>
|
||||
<string name="unlock_drawer">بازکردن قفل منو کشویی</string>
|
||||
|
||||
<string name="load_settings">بارگذاری تنظیمات...</string>
|
||||
|
||||
<!-- Software keyboard -->
|
||||
<string name="software_keyboard">صفحهکلید نرمافزار</string>
|
||||
|
||||
<!-- Errors and warnings -->
|
||||
<string name="abort_button">لغو</string>
|
||||
<string name="continue_button">ادامه</string>
|
||||
<string name="system_archive_not_found">آرشیو سیستم پیدا نشد</string>
|
||||
<string name="system_archive_not_found_message">%s یافت نشد. لطفاً بایگانیهای سیستم خود را استخراج کنید.\nادامه شبیهسازی ممکن است منجر به خرابی و اشکالات شود.</string>
|
||||
<string name="system_archive_general">آرشیو سیستم</string>
|
||||
<string name="save_load_error">خطای ذخیره/بارگذاری</string>
|
||||
<string name="fatal_error">خطای مهلک</string>
|
||||
<string name="fatal_error_message">یک خطای مهلک رخ داد. برای جزئیات، گزارش را بررسی کنید.\nادامه شبیهسازی ممکن است منجر به خرابی و اشکالات شود.</string>
|
||||
<string name="performance_warning">خاموش کردن این تنظیم عملکرد شبیهسازی را به میزان قابل توجهی کاهش میدهد! برای بهترین تجربه، توصیه میشود این تنظیم را فعال بگذارید.</string>
|
||||
<string name="device_memory_inadequate">رم دستگاه: %1$s \nتوصیه شده: %2$s</string>
|
||||
<string name="memory_formatted">%1$s%2$s</string>
|
||||
<string name="no_game_present">هیچ بازی قابل اجرایی وجود ندارد!</string>
|
||||
|
||||
<!-- Region Names -->
|
||||
<string name="region_japan">ژاپن</string>
|
||||
<string name="region_usa">ایالات متحده آمریکا</string>
|
||||
<string name="region_europe">اروپا</string>
|
||||
<string name="region_australia">استرالیا</string>
|
||||
<string name="region_china">چین</string>
|
||||
<string name="region_korea">کره</string>
|
||||
<string name="region_taiwan">تایوان</string>
|
||||
|
||||
<!-- Memory Sizes -->
|
||||
<string name="memory_byte">بایت</string>
|
||||
<string name="memory_byte_shorthand">بایت</string>
|
||||
<string name="memory_kilobyte">کیلوبایت</string>
|
||||
<string name="memory_megabyte">مگابایت</string>
|
||||
<string name="memory_gigabyte">گیگابایت</string>
|
||||
<string name="memory_terabyte">ترابایت</string>
|
||||
<string name="memory_petabyte">پتابایت</string>
|
||||
<string name="memory_exabyte">اگزابایت</string>
|
||||
|
||||
<!-- Renderer APIs -->
|
||||
<string name="renderer_vulkan">Vulkan</string>
|
||||
<string name="renderer_none">هیچ</string>
|
||||
|
||||
<!-- Renderer Accuracy -->
|
||||
<string name="renderer_accuracy_normal">معمولی</string>
|
||||
<string name="renderer_accuracy_high">زیاد</string>
|
||||
<string name="renderer_accuracy_extreme">افراطی (کند)</string>
|
||||
|
||||
<!-- Resolutions -->
|
||||
<string name="resolution_half">0.5X (360p/540p)</string>
|
||||
<string name="resolution_three_quarter">0.75X (540p/810p)</string>
|
||||
<string name="resolution_one">1X (720p/1080p)</string>
|
||||
<string name="resolution_two">2X (1440p/2160p) (کند)</string>
|
||||
<string name="resolution_three">3X (2160p/3240p) (کند)</string>
|
||||
<string name="resolution_four">4X (2880p/4320p) (کند)</string>
|
||||
|
||||
<!-- Renderer VSync -->
|
||||
<string name="renderer_vsync_immediate">فوری (خاموش)</string>
|
||||
<string name="renderer_vsync_mailbox">Mailbox</string>
|
||||
<string name="renderer_vsync_fifo">FIFO (روشن)</string>
|
||||
<string name="renderer_vsync_fifo_relaxed">FIFO آرام</string>
|
||||
|
||||
<!-- Scaling Filters -->
|
||||
<string name="scaling_filter_nearest_neighbor">Nearest Neighbor</string>
|
||||
<string name="scaling_filter_bilinear">Bilinear</string>
|
||||
<string name="scaling_filter_bicubic">Bicubic</string>
|
||||
<string name="scaling_filter_gaussian">Gaussian</string>
|
||||
<string name="scaling_filter_scale_force">ScaleForce</string>
|
||||
<string name="scaling_filter_fsr">AMD FidelityFX™ Super Resolution</string>
|
||||
|
||||
<!-- Anti-Aliasing -->
|
||||
<string name="anti_aliasing_none">هیچ</string>
|
||||
<string name="anti_aliasing_fxaa">FXAA</string>
|
||||
<string name="anti_aliasing_smaa">SMAA</string>
|
||||
|
||||
<!-- Screen Layouts -->
|
||||
<string name="screen_layout_auto">خودکار</string>
|
||||
<string name="screen_layout_sensor_landscape">افقی با سنسور</string>
|
||||
<string name="screen_layout_landscape">افقی</string>
|
||||
<string name="screen_layout_reverse_landscape">افقی معکوس</string>
|
||||
<string name="screen_layout_sensor_portrait">عمودی با سنسور</string>
|
||||
<string name="screen_layout_portrait">عمودی</string>
|
||||
<string name="screen_layout_reverse_portrait">عمودی معکوس</string>
|
||||
|
||||
<!-- Aspect Ratios -->
|
||||
<string name="ratio_default">پیشفرض (16:9)</string>
|
||||
<string name="ratio_force_four_three">اجبار به 4:3</string>
|
||||
<string name="ratio_force_twenty_one_nine">اجبار به 21:9</string>
|
||||
<string name="ratio_force_sixteen_ten">اجبار به 16:10</string>
|
||||
<string name="ratio_stretch">کشش تا پر کردن پنجره</string>
|
||||
|
||||
<!-- CPU Backend -->
|
||||
<string name="cpu_backend_dynarmic">دینارمیک (کند)</string>
|
||||
<string name="cpu_backend_nce">اجرای کد اصلی (NCE)</string>
|
||||
|
||||
<!-- CPU Accuracy -->
|
||||
<string name="cpu_accuracy_accurate">دقیق</string>
|
||||
<string name="cpu_accuracy_unsafe">ناامن</string>
|
||||
<string name="cpu_accuracy_paranoid">بدگمان (کند)</string>
|
||||
|
||||
<!-- Gamepad Buttons -->
|
||||
<string name="gamepad_d_pad">کلیدهای جهتی</string>
|
||||
<string name="gamepad_left_stick">استیک چپ</string>
|
||||
<string name="gamepad_right_stick">استیک راست</string>
|
||||
<string name="gamepad_home">خانه</string>
|
||||
<string name="gamepad_screenshot">نماگرفت</string>
|
||||
|
||||
<!-- Disk shader cache -->
|
||||
<string name="preparing_shaders">در حال آمادهسازی سایهزنها</string>
|
||||
<string name="building_shaders">در حال ساخت سایهزنها</string>
|
||||
|
||||
<!-- Theme options -->
|
||||
<string name="change_app_theme">تغییر تم برنامه</string>
|
||||
<string name="theme_default">پیشفرض</string>
|
||||
<string name="theme_material_you">Material You</string>
|
||||
|
||||
<!-- Theme Modes -->
|
||||
<string name="change_theme_mode">تغییر حالت تم</string>
|
||||
<string name="theme_mode_follow_system">پیروی از سیستم</string>
|
||||
<string name="theme_mode_light">روشن</string>
|
||||
<string name="theme_mode_dark">تاریک</string>
|
||||
|
||||
<!-- Audio output engines -->
|
||||
<string name="oboe">oboe</string>
|
||||
<string name="cubeb">cubeb</string>
|
||||
|
||||
<!-- Anisotropic filtering options -->
|
||||
<string name="multiplier_two">2x</string>
|
||||
<string name="multiplier_four">4x</string>
|
||||
<string name="multiplier_eight">8x</string>
|
||||
<string name="multiplier_sixteen">16x</string>
|
||||
|
||||
<!-- Black backgrounds theme -->
|
||||
<string name="use_black_backgrounds">پسزمینه مشکی</string>
|
||||
<string name="use_black_backgrounds_description">هنگام استفاده از تم تاریک، پسزمینه مشکی را اعمال میکند.</string>
|
||||
|
||||
<!-- Picture-In-Picture -->
|
||||
<string name="picture_in_picture">تصویر در تصویر</string>
|
||||
<string name="picture_in_picture_description">وقتی در پسزمینه قرار میگیرد، پنجره کوچک میشود</string>
|
||||
<string name="pause">مکث</string>
|
||||
<string name="play">شروع</string>
|
||||
<string name="mute">بیصدا</string>
|
||||
<string name="unmute">باصدا</string>
|
||||
|
||||
<!-- Emulation vertical alignment -->
|
||||
<string name="vertical_alignment">چیدمان عمودی</string>
|
||||
<string name="top">بالا</string>
|
||||
<string name="center">وسط</string>
|
||||
<string name="bottom">پایین</string>
|
||||
|
||||
<!-- Licenses screen strings -->
|
||||
<string name="licenses">مجوزها</string>
|
||||
<string name="license_fidelityfx_fsr_description">High-quality upscaling from AMD</string>
|
||||
</resources>
|
@ -137,6 +137,11 @@
|
||||
<item quantity="other">%d sauvegardes importées avec succès</item>
|
||||
</plurals>
|
||||
<string name="no_save_data_found">Aucune donnée de sauvegarde trouvée</string>
|
||||
<string name="verify_installed_content">Vérifier les contenus installés</string>
|
||||
<string name="verify_installed_content_description">Vérifie l\'intégrité des contenus installés</string>
|
||||
<string name="keys_missing">Les clés de chiffrement sont manquantes.</string>
|
||||
<string name="keys_missing_description">Le firmware et les jeux commerciaux ne peuvent pas être déchiffrés</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<!-- Applet launcher strings -->
|
||||
<string name="applets">Lanceur d\'applets</string>
|
||||
@ -203,6 +208,7 @@
|
||||
<string name="value_with_units">%1$s%2$s</string>
|
||||
|
||||
<!-- System settings strings -->
|
||||
<string name="device_name">Nom de l\'appareil</string>
|
||||
<string name="use_docked_mode">Mode TV</string>
|
||||
<string name="use_docked_mode_description">Augmenter la résolution, ce qui diminue les performances. Le mode portable est utilisé lorsque la fonction est désactivée, ce qui réduit la résolution et améliore les performances.</string>
|
||||
<string name="emulated_region">Région émulée</string>
|
||||
@ -220,6 +226,8 @@
|
||||
<string name="renderer_screen_layout">Orientation</string>
|
||||
<string name="renderer_aspect_ratio">Format</string>
|
||||
<string name="renderer_scaling_filter">Filtre de fenêtre adaptatif</string>
|
||||
<string name="fsr_sharpness">Netteté FSR</string>
|
||||
<string name="fsr_sharpness_description">Détermine à quel point l\'image sera affinée lors de l\'utilisation du contraste dynamique FSR.</string>
|
||||
<string name="renderer_anti_aliasing">Méthode d\'anticrénelage</string>
|
||||
<string name="renderer_force_max_clock">Forcer les fréquences maximales (Adreno uniquement)</string>
|
||||
<string name="renderer_force_max_clock_description">Forcer le GPU à fonctionner à ses fréquences maximales possibles (les contraintes thermiques seront toujours appliquées).</string>
|
||||
@ -247,6 +255,92 @@
|
||||
<string name="audio_volume">Volume</string>
|
||||
<string name="audio_volume_description">Spécifier le volume de la sortie audio.</string>
|
||||
|
||||
<!-- Input strings -->
|
||||
<string name="buttons">Boutons</string>
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">B</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">Plus</string>
|
||||
<string name="button_minus">Moins</string>
|
||||
<string name="button_home">Home</string>
|
||||
<string name="button_capture">Capture</string>
|
||||
<string name="start_pause">Start/Pause</string>
|
||||
<string name="dpad">Pavé directionnel</string>
|
||||
<string name="up">Haut</string>
|
||||
<string name="down">Bas</string>
|
||||
<string name="left">Gauche</string>
|
||||
<string name="right">Droite</string>
|
||||
<string name="left_stick">Stick gauche</string>
|
||||
<string name="control_stick">Stick de contrôle </string>
|
||||
<string name="right_stick">Stick droit</string>
|
||||
<string name="c_stick">C-Stick</string>
|
||||
<string name="pressed">Appuyé</string>
|
||||
<string name="range">Portée</string>
|
||||
<string name="deadzone">Zone morte</string>
|
||||
<string name="modifier">Modificateur</string>
|
||||
<string name="modifier_range">Modifier la plage</string>
|
||||
<string name="triggers">Gachettes</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_sl_left">SL gauche</string>
|
||||
<string name="button_sr_left">SR gauche</string>
|
||||
<string name="button_sl_right">SL droit</string>
|
||||
<string name="button_sr_right">SR droit</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">Invalide</string>
|
||||
<string name="not_set">Non défini</string>
|
||||
<string name="unknown">Inconnu</string>
|
||||
<string name="qualified_hat">%1$s%2$s%3$sChapeau %4$s</string>
|
||||
<string name="qualified_button_stick_axis">%1$s%2$s%3$sAxe %4$s</string>
|
||||
<string name="qualified_button">%1$s%2$s%3$sBouton %4$s</string>
|
||||
<string name="qualified_axis">Axe %1$s%2$s</string>
|
||||
<string name="unused">Inutilisé</string>
|
||||
<string name="input_prompt">Déplacez ou appuyez sur une entrée</string>
|
||||
<string name="unsupported_input">Type d\'entrée non pris en charge</string>
|
||||
<string name="input_mapping_filter">Filtre de mappage d\'entrée</string>
|
||||
<string name="input_mapping_filter_description">Sélectionnez un appareil pour filtrer les entrées de mappage</string>
|
||||
<string name="auto_map">Mapper automatiquement une manette</string>
|
||||
<string name="auto_map_description">Sélectionnez un périphérique pour tenter le mappage automatique</string>
|
||||
<string name="attempted_auto_map">Tentative de mappage automatique avec %1$s</string>
|
||||
<string name="controller_type">Type de manette</string>
|
||||
<string name="pro_controller">Manette Switch Pro</string>
|
||||
<string name="handheld">Mode Portable</string>
|
||||
<string name="dual_joycons">Deux Joycons</string>
|
||||
<string name="left_joycon">Joycon gauche</string>
|
||||
<string name="right_joycon">Joycon droit</string>
|
||||
<string name="gamecube_controller">Manette GameCube</string>
|
||||
<string name="invert_axis">Inverser l\'axe</string>
|
||||
<string name="invert_button">Inverser les boutons</string>
|
||||
<string name="toggle_button">Bouton d\'activation</string>
|
||||
<string name="turbo_button">Bouton Turbo</string>
|
||||
<string name="set_threshold">Définir le seuil</string>
|
||||
<string name="toggle_axis">Basculer les axes</string>
|
||||
<string name="connected">Connecté</string>
|
||||
<string name="use_system_vibrator">Utiliser le vibreur du système</string>
|
||||
<string name="input_overlay">Superposition d\'entrée</string>
|
||||
<string name="vibration">Vibration</string>
|
||||
<string name="vibration_strength">Intensité de la vibration</string>
|
||||
<string name="profile">Profil</string>
|
||||
<string name="create_new_profile">Créer un nouveau profil</string>
|
||||
<string name="enter_profile_name">Entrez le nom du profil</string>
|
||||
<string name="profile_name_already_exists">Le nom du profil existe déjà</string>
|
||||
<string name="invalid_profile_name">Nom de profil invalide</string>
|
||||
<string name="use_global_input_configuration">Utiliser la configuration d\'entrée globale</string>
|
||||
<string name="player_num_profile">Profil du joueur %d</string>
|
||||
<string name="delete_input_profile">Supprimer le profil d\'entrée</string>
|
||||
<string name="delete_input_profile_description">Êtes-vous sûr de vouloir supprimer ce profil ? Cette action est irréversible.</string>
|
||||
<string name="stick_map_description">Déplacez un stick vers la gauche puis vers le haut ou appuyez sur un bouton.</string>
|
||||
<string name="button_map_description">Appuyez sur un bouton ou une gachette/stick</string>
|
||||
<string name="map_dpad_direction">Mapper avec la croix directionnelle %1$s</string>
|
||||
<string name="map_control">Mapper avec le %1$s</string>
|
||||
<string name="failed_to_load_profile">Échec du chargement du profil</string>
|
||||
<string name="failed_to_save_profile">Échec de l\'enregistrement du profil</string>
|
||||
<string name="reset_mapping">Réinitialiser les mappages</string>
|
||||
<string name="reset_mapping_description">Êtes-vous sûr de vouloir réinitialiser tous les mappages de cette manette aux paramètres par défaut ? Cette action ne peut pas être annulée.</string>
|
||||
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">Par défaut</string>
|
||||
<string name="ini_saved">Paramètres enregistrés</string>
|
||||
@ -281,6 +375,14 @@
|
||||
<string name="custom">Personnalisé</string>
|
||||
<string name="notice">Avis</string>
|
||||
<string name="import_complete">Importation terminée</string>
|
||||
<string name="more_options">Plus d\'options</string>
|
||||
<string name="use_global_setting">Utilisez les paramètres globaux</string>
|
||||
<string name="operation_completed_successfully">L\'opération s\'est déroulée avec succès</string>
|
||||
<string name="retry">Réessayer</string>
|
||||
<string name="confirm">Confirmer</string>
|
||||
<string name="load">Charger</string>
|
||||
<string name="save">Enregistrer</string>
|
||||
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">Sélectionner le pilote du GPU</string>
|
||||
<string name="select_gpu_driver_title">Souhaitez vous remplacer votre pilote actuel ?</string>
|
||||
@ -301,6 +403,9 @@
|
||||
<string name="preferences_graphics_description">Niveau de précision, résolution, cache de shaders</string>
|
||||
<string name="preferences_audio">Audio</string>
|
||||
<string name="preferences_audio_description">Moteur de sortie, volume</string>
|
||||
<string name="preferences_controls">Contrôles</string>
|
||||
<string name="preferences_controls_description">Mapper l\'entrée du contrôleur</string>
|
||||
<string name="preferences_player">Joueur %d</string>
|
||||
<string name="preferences_theme">Thème et couleur</string>
|
||||
<string name="preferences_debug">Débogage</string>
|
||||
<string name="preferences_debug_description">Débogage CPU/GPU, API graphique, fastmem</string>
|
||||
@ -342,6 +447,17 @@
|
||||
<string name="verifying_content">Vérification du contenu...</string>
|
||||
<string name="content_install_notice">Avis d\'installation du contenu</string>
|
||||
<string name="content_install_notice_description">Le contenu que vous avez sélectionné ne correspond pas à ce jeu.\nInstaller quand même ?</string>
|
||||
<string name="confirm_uninstall">Confirmer la désinstallation</string>
|
||||
<string name="confirm_uninstall_description">Êtes-vous sûr de vouloir désinstaller cette extension ?</string>
|
||||
<string name="verify_integrity">Vérifier l\'intégrité</string>
|
||||
<string name="verifying">Vérification...</string>
|
||||
<string name="verify_success">La vérification de l\'intégrité a réussi !</string>
|
||||
<string name="verify_failure">La vérification de l\'intégrité a échoué !</string>
|
||||
<string name="verify_failure_description">Le contenu d\'un fichier peut être corrompu</string>
|
||||
<string name="verify_no_result">La vérification de l\'intégrité n\'a pas pu être effectuée</string>
|
||||
<string name="verify_no_result_description">La validité du contenu du fichier n\'a pas été vérifiée</string>
|
||||
<string name="verification_failed_for">La vérification a échoué pour les fichiers suivants :\n%1$s</string>
|
||||
|
||||
<!-- ROM loading errors -->
|
||||
<string name="loader_error_encrypted">Votre ROM est cryptée</string>
|
||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Veuillez suivre les guides pour refaire un dump de vos <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartouches de jeu</a> ou de vos <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">titres installés</a>.]]></string>
|
||||
@ -355,6 +471,7 @@
|
||||
<string name="emulation_exit">Quitter l\'émulation</string>
|
||||
<string name="emulation_done">Terminé</string>
|
||||
<string name="emulation_fps_counter">Compteur FPS</string>
|
||||
<string name="emulation_thermal_indicator">Indicateur thermique</string>
|
||||
<string name="emulation_toggle_controls">Activer/Désactiver les contrôles</string>
|
||||
<string name="emulation_rel_stick_center">Centre du stick relatif</string>
|
||||
<string name="emulation_dpad_slide">Glissement du D-pad</string>
|
||||
@ -370,6 +487,8 @@
|
||||
<string name="emulation_unpause">Reprendre l\'émulation</string>
|
||||
<string name="emulation_input_overlay">Options de l\'overlay</string>
|
||||
<string name="touchscreen">Écran tactile</string>
|
||||
<string name="lock_drawer">Verrouiller le tiroir</string>
|
||||
<string name="unlock_drawer">Déverrouiller le tiroir</string>
|
||||
|
||||
<string name="load_settings">Chargement des paramètres…</string>
|
||||
|
||||
@ -514,6 +633,12 @@
|
||||
<string name="mute">Couper le son</string>
|
||||
<string name="unmute">Remettre le son</string>
|
||||
|
||||
<!-- Emulation vertical alignment -->
|
||||
<string name="vertical_alignment">Alignement vertical</string>
|
||||
<string name="top">Haut</string>
|
||||
<string name="center">Centre</string>
|
||||
<string name="bottom">Bas</string>
|
||||
|
||||
<!-- Licenses screen strings -->
|
||||
<string name="licenses">Licences</string>
|
||||
<string name="license_fidelityfx_fsr_description">Mise à l\'échelle de haute qualité par AMD.</string>
|
||||
|
@ -84,7 +84,10 @@
|
||||
<string name="notification_no_directory_link_description">בבקשה מקם את תיקיית המשתמש בפנל הצידי של מנהל הקבצים באופן ידני.</string>
|
||||
<string name="manage_save_data">נהל מידע שמור</string>
|
||||
<string name="manage_save_data_description">מידע שמור לא נמצא. בבקשה בחר/י אופציה מלמטה</string>
|
||||
<string name="import_save_warning">ייבוא נתוני שמירה</string>
|
||||
<string name="import_save_warning_description">פעולה זו תמחק את כל הנתונים הקיימים ותחליף אותם בקובץ שסופק.האם אתה בטוח שברצונך להמשיך?</string>
|
||||
<string name="import_export_saves_description">יבא או יצא קבצי שמירה</string>
|
||||
<string name="save_files_importing">מייבא קבצי שמירה...</string>
|
||||
<string name="save_files_exporting">מייצא קבצי שמירה...</string>
|
||||
<string name="save_file_imported_success">יובא בהצלחה</string>
|
||||
<string name="save_file_invalid_zip_structure">מבנה ספריית השמירות לא חוקי</string>
|
||||
@ -123,6 +126,8 @@
|
||||
<string name="add_game_folder">הוסף תיקיית משחקים</string>
|
||||
<string name="folder_already_added">התיקייה הזו נוספה כבר!</string>
|
||||
<string name="game_folder_properties">מאפייני תיקיית משחקים</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<!-- Applet launcher strings -->
|
||||
<string name="applets">משגר Applet</string>
|
||||
<string name="applets_description">מערכת שיגור Applet משתמשת בתוכנה המותקנת</string>
|
||||
@ -187,7 +192,6 @@
|
||||
<string name="cpu_accuracy">דיוק המעבד</string>
|
||||
<string name="value_with_units">%1$s%2$s</string>
|
||||
|
||||
<!-- System settings strings -->
|
||||
<string name="use_docked_mode">מצב עגינה</string>
|
||||
<string name="use_docked_mode_description">מעלה את הרזולוציה, פוגע בביצועים. משתמש במצב נייד כאשר מנוטרל, מפחית את הרזולוציה ומעלה את הביצועים.</string>
|
||||
<string name="emulated_region">אזור אמולציה</string>
|
||||
@ -229,6 +233,33 @@
|
||||
<string name="audio_volume">עוצמת שמע</string>
|
||||
<string name="audio_volume_description">מציין את עוצמת האודיו שיוצא.</string>
|
||||
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">B</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">פלוס</string>
|
||||
<string name="button_minus">מינוס</string>
|
||||
<string name="button_home">בית</string>
|
||||
<string name="up">למעלה</string>
|
||||
<string name="down">למטה</string>
|
||||
<string name="left">שמאל</string>
|
||||
<string name="right">ימין</string>
|
||||
<string name="left_stick">ג׳ויסטיק שמאלי</string>
|
||||
<string name="right_stick">ג׳ויסטיק ימני</string>
|
||||
<string name="pressed">לחוץ</string>
|
||||
<string name="range">טווח</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">לא חוקי</string>
|
||||
<string name="unknown">לא ידוע</string>
|
||||
<string name="handheld">מצב נייד</string>
|
||||
<string name="connected">מחובר</string>
|
||||
<string name="vibration">רטט</string>
|
||||
<string name="profile">פרופיל</string>
|
||||
<string name="use_global_input_configuration">השתמש בהגדרת קלט גלובלי</string>
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">ברירת מחדל</string>
|
||||
<string name="ini_saved">הגדרות שמורות</string>
|
||||
@ -259,6 +290,8 @@
|
||||
<string name="export_success">יוצא בהצלחה</string>
|
||||
<string name="start">התחלה</string>
|
||||
<string name="clear">נקה</string>
|
||||
<string name="save">שמור</string>
|
||||
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">בחר דרייבר למעבד הגרפי</string>
|
||||
<string name="select_gpu_driver_title">אתה מעוניין להחליף את הדרייבר של המעבד הגרפי שלך?</string>
|
||||
@ -289,6 +322,7 @@
|
||||
<string name="developer">מפתח</string>
|
||||
<string name="version">גרסה</string>
|
||||
<string name="add_ons">תוספים</string>
|
||||
<string name="verify_success">אימות התקינות הצליח!</string>
|
||||
<!-- ROM loading errors -->
|
||||
<string name="loader_error_encrypted">המשחק שלך מוצפן</string>
|
||||
<string name="loader_error_encrypted_roms_description"><![CDATA[אנא עקוב אחרי המדריכים כדי לבצע redump של <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">כרטיסי המשחק</a>או <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">הכותרות המותקנות</a> שלך.]]></string>
|
||||
@ -317,7 +351,6 @@
|
||||
<string name="emulation_unpause">המשך אמולציה</string>
|
||||
<string name="emulation_input_overlay">אופציות עבור שכבת-על</string>
|
||||
<string name="touchscreen">מסך מגע</string>
|
||||
|
||||
<string name="load_settings">טוען הגדרות...</string>
|
||||
|
||||
<!-- Software keyboard -->
|
||||
|
@ -11,11 +11,10 @@
|
||||
<string name="welcome_description">Ismerkedj meg a <b>yuzu</b> beállításával és ugorj bele az emulációba.</string>
|
||||
<string name="get_started">Vágjunk bele</string>
|
||||
<string name="keys">Kulcsok</string>
|
||||
<string name="keys_description">Válaszd ki a(z) <b>prod.keys</b> fájlodat az alábbi gombbal.</string>
|
||||
<string name="keys_description">Válaszd ki a <b>prod.keys</b> fájlodat az alábbi gombbal.</string>
|
||||
<string name="select_keys">Kulcsok kiválasztása</string>
|
||||
<string name="games">Játékok</string>
|
||||
<string name="games_description">
|
||||
Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
<string name="games_description">Válaszd ki a <b>Játékok</b> mappát az alábbi gombbal.</string>
|
||||
<string name="done">Kész</string>
|
||||
<string name="done_description">Minden kész.\nJó szórakozást!</string>
|
||||
<string name="text_continue">Folytatás</string>
|
||||
@ -48,10 +47,10 @@ Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
<string name="notifications_description">Értesítési engedélyek megadása az alábbi gombbal.</string>
|
||||
<string name="give_permission">Engedély megadása</string>
|
||||
<string name="notification_warning">Kihagyod az értesítési engedély megadását?</string>
|
||||
<string name="notification_warning_description">yuzu nem fog tudni értesíteni a fontos imformációkról</string>
|
||||
<string name="notification_warning_description">yuzu nem fog tudni értesíteni a fontos információkról</string>
|
||||
<string name="permission_denied">Engedély megtagadva</string>
|
||||
<string name="permission_denied_description">Túl gyakran utasítottad el a hozzáférést, így manuálisan kell jóváhagynod a rendszer beállításokban.</string>
|
||||
<string name="about">A programról</string>
|
||||
<string name="about">Névjegy</string>
|
||||
<string name="about_description">Build verzió, készítők, és még több</string>
|
||||
<string name="warning_help">Segítség</string>
|
||||
<string name="warning_skip">Kihagyás</string>
|
||||
@ -134,6 +133,11 @@ Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
<item quantity="other">%dmentés sikeresen importálva</item>
|
||||
</plurals>
|
||||
<string name="no_save_data_found">Nem található mentett adat</string>
|
||||
<string name="verify_installed_content">Telepített tartalom ellenőrzése</string>
|
||||
<string name="verify_installed_content_description">A telepített tartalom épségét ellenőrzi</string>
|
||||
<string name="keys_missing">Hiányzó titkosítókulcsok</string>
|
||||
<string name="keys_missing_description">A Firmware és a kiskereskedelmi (retail) játékok nem dekódolhatók</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<!-- Applet launcher strings -->
|
||||
<string name="applets">Applet indító</string>
|
||||
@ -191,13 +195,14 @@ Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
<!-- General settings strings -->
|
||||
<string name="frame_limit_enable">Sebességkorlát</string>
|
||||
<string name="frame_limit_enable_description">Korlátozza az emuláció sebességét a normál sebesség adott százalékára.</string>
|
||||
<string name="frame_limit_slider">Sebességkorlát százaléka</string>
|
||||
<string name="frame_limit_slider">Sebesség korlátozása</string>
|
||||
<string name="frame_limit_slider_description">Az emuláció sebességét határozza meg. 100% a normál sebesség. A magasabb értékek növelik, az alacsonyabbak csökkentik a sebességkorlátot.</string>
|
||||
<string name="cpu_backend">CPU backend</string>
|
||||
<string name="cpu_accuracy">CPU pontosság</string>
|
||||
<string name="value_with_units">%1$s%2$s</string>
|
||||
|
||||
<!-- System settings strings -->
|
||||
<string name="device_name">Eszköznév</string>
|
||||
<string name="use_docked_mode">Dokkolt mód</string>
|
||||
<string name="use_docked_mode_description">Növeli a felbontást, de csökkenti a teljesítményt. Kikapcsolás esetén a Kézi mód van használatban, ami kisebb felbontást, de nagyobb teljesítményt eredményez.</string>
|
||||
<string name="emulated_region">Emulált régió</string>
|
||||
@ -215,6 +220,8 @@ Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
<string name="renderer_screen_layout">Orientáció</string>
|
||||
<string name="renderer_aspect_ratio">Képarány</string>
|
||||
<string name="renderer_scaling_filter">Ablakhoz alkalmazkodó szűrő</string>
|
||||
<string name="fsr_sharpness">FSR élesség</string>
|
||||
<string name="fsr_sharpness_description">Meghatározza, milyen éles lesz a kép az FSR dinamikus kontraszt használata közben.</string>
|
||||
<string name="renderer_anti_aliasing">Élsimítási módszer</string>
|
||||
<string name="renderer_force_max_clock">Maximum órajel kényszerítése (csak Adreno)</string>
|
||||
<string name="renderer_force_max_clock_description">Kényszeríti a GPU-t a lehető legnagyobb órajelen működésre (a hőmérséklet korlátozások továbbra is érvényben maradnak).</string>
|
||||
@ -225,6 +232,8 @@ Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
<string name="use_disk_shader_cache">Lemez árnyékoló gyorsítótár</string>
|
||||
<string name="use_disk_shader_cache_description">Csökkenti az akadásokat azáltal, hogy helyileg tárolja és tölti be a generált árnyékolókat.</string>
|
||||
<string name="anisotropic_filtering">Anizotropikus szűrés</string>
|
||||
<string name="anisotropic_filtering_description">Javítja a ferdén megjelenő textúrák minőségét</string>
|
||||
|
||||
<!-- Debug settings strings -->
|
||||
<string name="cpu">CPU</string>
|
||||
<string name="cpu_debug_mode">CPU hibakeresés</string>
|
||||
@ -238,6 +247,89 @@ Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
<string name="audio_volume">Hangerő</string>
|
||||
<string name="audio_volume_description">Hangkimenet hangerejének megadása</string>
|
||||
|
||||
<!-- Input strings -->
|
||||
<string name="buttons">Gombok</string>
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">B</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">Plusz</string>
|
||||
<string name="button_minus">Mínusz</string>
|
||||
<string name="button_home">Home</string>
|
||||
<string name="button_capture">Rögzítés</string>
|
||||
<string name="start_pause">Indítás/Szünet</string>
|
||||
<string name="dpad">D-Pad</string>
|
||||
<string name="up">Fel</string>
|
||||
<string name="down">Le</string>
|
||||
<string name="left">Balra</string>
|
||||
<string name="right">Jobbra</string>
|
||||
<string name="left_stick">Bal kar</string>
|
||||
<string name="right_stick">Jobb kar</string>
|
||||
<string name="pressed">Lenyomva</string>
|
||||
<string name="range">Tartomány</string>
|
||||
<string name="deadzone">Holttér</string>
|
||||
<string name="modifier">Módosító</string>
|
||||
<string name="modifier_range">Módosító tartomány</string>
|
||||
<string name="triggers">Ravaszok</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_sl_left">Bal SL</string>
|
||||
<string name="button_sr_left">Bal SR</string>
|
||||
<string name="button_sl_right">Jobb SL</string>
|
||||
<string name="button_sr_right">Jobb SR</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">Érvénytelen</string>
|
||||
<string name="not_set">Nincs beállítva</string>
|
||||
<string name="unknown">Ismeretlen</string>
|
||||
<string name="qualified_button_stick_axis">%1$s%2$s%3$sTengely %4$s</string>
|
||||
<string name="qualified_button">%1$s%2$s%3$sGomb %4$s</string>
|
||||
<string name="qualified_axis">Tengely %1$s%2$s</string>
|
||||
<string name="unused">Nem használt</string>
|
||||
<string name="input_prompt">Nyomj vagy mozgass meg egy bemeneti eszközt.</string>
|
||||
<string name="unsupported_input">Nem támogatott bemenet típus</string>
|
||||
<string name="input_mapping_filter">Bemeneti hozzárendelési szűrő</string>
|
||||
<string name="input_mapping_filter_description">Válassz egy eszközt a hozzárendelési bemenetek szűréséhez</string>
|
||||
<string name="auto_map">Kontroller auto-hozzárendelés</string>
|
||||
<string name="auto_map_description">Válassz egy eszközt, amihez auto-hozzárendelést szeretnél</string>
|
||||
<string name="attempted_auto_map">Auto-hozzárendelés megkísérelve: %1$s</string>
|
||||
<string name="controller_type">Kontroller típusa</string>
|
||||
<string name="pro_controller">Pro kontroller</string>
|
||||
<string name="handheld">Kézi</string>
|
||||
<string name="dual_joycons">Dual Joycon</string>
|
||||
<string name="left_joycon">Bal Joycon</string>
|
||||
<string name="right_joycon">Jobb Joycon</string>
|
||||
<string name="gamecube_controller">GameCube kontroller</string>
|
||||
<string name="invert_axis">Fordított tengely</string>
|
||||
<string name="invert_button">Fordított gomb</string>
|
||||
<string name="toggle_button">Gomb váltása</string>
|
||||
<string name="turbo_button">Turbó gomb</string>
|
||||
<string name="set_threshold">Küszöbérték beállítása</string>
|
||||
<string name="toggle_axis">Tengely váltása</string>
|
||||
<string name="connected">Csatlakozva</string>
|
||||
<string name="use_system_vibrator">Rendszer rezgés használata</string>
|
||||
<string name="input_overlay">Bemeneti átfedés</string>
|
||||
<string name="vibration">Rezgés</string>
|
||||
<string name="vibration_strength">Rezgés erőssége</string>
|
||||
<string name="profile">Profil</string>
|
||||
<string name="create_new_profile">Új profil létrehozása</string>
|
||||
<string name="enter_profile_name">Add meg a profil nevét</string>
|
||||
<string name="profile_name_already_exists">A profilnév már létezik</string>
|
||||
<string name="invalid_profile_name">Érvénytelen profilnév</string>
|
||||
<string name="use_global_input_configuration">Globális bemenet konfiguráció használata</string>
|
||||
<string name="player_num_profile">Játékos %dprofilja </string>
|
||||
<string name="delete_input_profile">Beviteli profil törlése</string>
|
||||
<string name="delete_input_profile_description">Biztosan törölni szeretnéd ezt a profilt? Nem fogod tudni visszaállítani.</string>
|
||||
<string name="stick_map_description">Mozgasd az egyik kart balra, majd fel, vagy nyomj egy gombot</string>
|
||||
<string name="button_map_description">Nyomj egy gombot vagy mozgasd az egyik ravaszt/kart</string>
|
||||
<string name="map_dpad_direction">Hozzárendelés %1$s D-pad-hez</string>
|
||||
<string name="map_control">Hozzárendelés ehhez: %1$s</string>
|
||||
<string name="failed_to_load_profile">Nem sikerült betölteni a profilt</string>
|
||||
<string name="failed_to_save_profile">Nem sikerült menteni a profilt</string>
|
||||
<string name="reset_mapping">Hozzárendelések visszaállítása</string>
|
||||
<string name="reset_mapping_description">Biztosan alaphelyzetbe szeretnéd állítani az összes hozzárendelést ehhez a vezérlőhöz? Ez nem vonható vissza.</string>
|
||||
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">Alapértelmezett</string>
|
||||
<string name="ini_saved">Beállítások elmentve</string>
|
||||
@ -274,6 +366,11 @@ Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
<string name="import_complete">Importálás befejezve</string>
|
||||
<string name="more_options">További opciók</string>
|
||||
<string name="use_global_setting">Globális beállítás használata</string>
|
||||
<string name="operation_completed_successfully">A művelet sikeresen befejeződött</string>
|
||||
<string name="retry">Újra</string>
|
||||
<string name="confirm">Megerősítés</string>
|
||||
<string name="load">Betöltés</string>
|
||||
<string name="save">Mentés</string>
|
||||
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">Válassz GPU illesztőprogramot</string>
|
||||
@ -295,6 +392,8 @@ Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
<string name="preferences_graphics_description">Pontossági szint, felbontás, árnyékoló gyorsítótár</string>
|
||||
<string name="preferences_audio">Hang</string>
|
||||
<string name="preferences_audio_description">Kimeneti motor, hangerő</string>
|
||||
<string name="preferences_controls">Irányítás</string>
|
||||
<string name="preferences_player">Játékos %d</string>
|
||||
<string name="preferences_theme">Téma és színek</string>
|
||||
<string name="preferences_debug">Hibakeresés</string>
|
||||
<string name="preferences_debug_description">CPU/GPU hibakeresés, grafikus API, fastmem</string>
|
||||
@ -338,6 +437,14 @@ Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
<string name="content_install_notice_description">A kiválasztott tartalom nem ehhez a játékhoz tartozik.\nÍgy is telepíted?</string>
|
||||
<string name="confirm_uninstall">Eltávolítás megerősítése</string>
|
||||
<string name="confirm_uninstall_description">Biztosan törölni szeretnéd ezt a kiegészítőt?</string>
|
||||
<string name="verify_integrity">Integritás ellenőrzése</string>
|
||||
<string name="verifying">Ellenőrzés...</string>
|
||||
<string name="verify_success">Integritás ellenőrzése sikeres!</string>
|
||||
<string name="verify_failure">Az integritás ellenőrzése sikertelen!</string>
|
||||
<string name="verify_failure_description">A fájl tartalma sérült lehet</string>
|
||||
<string name="verify_no_result">Az integritás ellenőrzését nem lehetett elvégezni</string>
|
||||
<string name="verify_no_result_description">A fájltartalom érvényessége nem lett ellenőrizve</string>
|
||||
<string name="verification_failed_for">Az alábbi fájlok ellenőrzése sikertelen volt:\n%1$s</string>
|
||||
|
||||
<!-- ROM loading errors -->
|
||||
<string name="loader_error_encrypted">ROM titkosítva</string>
|
||||
@ -351,11 +458,12 @@ Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
<string name="emulation_exit">Emuláció bezárása</string>
|
||||
<string name="emulation_done">Kész</string>
|
||||
<string name="emulation_fps_counter">FPS számláló</string>
|
||||
<string name="emulation_thermal_indicator">Hőmérséklet jelző</string>
|
||||
<string name="emulation_toggle_controls">Irányítás átkapcsolása</string>
|
||||
<string name="emulation_dpad_slide">D-pad csúsztatása</string>
|
||||
<string name="emulation_haptics">Érintés haptikája</string>
|
||||
<string name="emulation_show_overlay">Átfedés mutatása</string>
|
||||
<string name="emulation_toggle_all">Össze átkapcsolása</string>
|
||||
<string name="emulation_toggle_all">Összes átkapcsolása</string>
|
||||
<string name="emulation_control_adjust">Átfedés testreszabása</string>
|
||||
<string name="emulation_control_scale">Skálázás</string>
|
||||
<string name="emulation_control_opacity">Átlátszóság</string>
|
||||
@ -365,6 +473,8 @@ Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
<string name="emulation_unpause">Emuláció folytatása</string>
|
||||
<string name="emulation_input_overlay">Átfedés beállításai</string>
|
||||
<string name="touchscreen">Érintőképernyő</string>
|
||||
<string name="lock_drawer">Fiók bezárása</string>
|
||||
<string name="unlock_drawer">Fiók kinyitása</string>
|
||||
|
||||
<string name="load_settings">Beállítások betöltése...</string>
|
||||
|
||||
@ -423,9 +533,9 @@ Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
|
||||
<!-- Renderer VSync -->
|
||||
<string name="renderer_vsync_immediate">Azonnali (Ki)</string>
|
||||
<string name="renderer_vsync_mailbox">Postaláda</string>
|
||||
<string name="renderer_vsync_mailbox">Mailbox</string>
|
||||
<string name="renderer_vsync_fifo">FIFO (Be)</string>
|
||||
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxált</string>
|
||||
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string>
|
||||
|
||||
<!-- Scaling Filters -->
|
||||
<string name="scaling_filter_nearest_neighbor">Legközelebbi szomszéd</string>
|
||||
@ -456,6 +566,8 @@ Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
|
||||
<!-- CPU Backend -->
|
||||
<string name="cpu_backend_dynarmic">Dinamikus (lassú)</string>
|
||||
<string name="cpu_backend_nce">Natív kód végrehajtás (Native code execution (NCE))</string>
|
||||
|
||||
<!-- CPU Accuracy -->
|
||||
<string name="cpu_accuracy_accurate">Pontos</string>
|
||||
<string name="cpu_accuracy_unsafe">Nem biztonságos</string>
|
||||
@ -503,6 +615,12 @@ Válaszd ki a(z) <b>Games</b> mappát az alábbi gombbal.</string>
|
||||
<string name="mute">Némítás</string>
|
||||
<string name="unmute">Némítás feloldása</string>
|
||||
|
||||
<!-- Emulation vertical alignment -->
|
||||
<string name="vertical_alignment">Függőleges elrendezés</string>
|
||||
<string name="top">Felül</string>
|
||||
<string name="center">Középen</string>
|
||||
<string name="bottom">Alul</string>
|
||||
|
||||
<!-- Licenses screen strings -->
|
||||
<string name="licenses">Licenszek</string>
|
||||
<string name="license_fidelityfx_fsr_description">Magas minőségű felskálázás az AMD-től</string>
|
||||
|
587
src/android/app/src/main/res/values-id/strings.xml
Normal file
587
src/android/app/src/main/res/values-id/strings.xml
Normal file
@ -0,0 +1,587 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<string name="app_disclaimer">Perangkat lunak ini akan menjalankan game untuk konsol game Nintendo Switch. Tidak ada judul game atau kunci yang disertakan.<br /><br />Sebelum memulai, harap cari file <![CDATA[<b> prod.keys </b>]]> di penyimpanan perangkat anda. <br /><br /><![CDATA[<a href=\"https://yuzu-emu.org/help/quickstart\"> Selengkapnya </a>]]></string>
|
||||
<string name="notice_notification_channel_name">Pemberitahuan dan error</string>
|
||||
<string name="notice_notification_channel_description">Menampilkan pemberitahuan ketika terjadi kesalahan.</string>
|
||||
<string name="notification_permission_not_granted">Izin notifikasi tidak diberikan!</string>
|
||||
|
||||
<!-- Setup strings -->
|
||||
<string name="welcome">Selamat datang!</string>
|
||||
<string name="welcome_description">Pelajari cara menyiapkan <b>yuzu</b> dan masuk ke dalam emulasi.</string>
|
||||
<string name="get_started">Memulai</string>
|
||||
<string name="keys">Kunci</string>
|
||||
<string name="keys_description">Pilih file <b>prod.keys</b> Anda dengan tombol di bawah ini.</string>
|
||||
<string name="select_keys">Pilih Kunci</string>
|
||||
<string name="games">Permainan</string>
|
||||
<string name="games_description">Pilih folder <b>Games</b> Anda dengan tombol di bawah ini.</string>
|
||||
<string name="done">Selesai</string>
|
||||
<string name="done_description">Anda sudah siap.\nNikmati permainan Anda!</string>
|
||||
<string name="text_continue">Lanjut</string>
|
||||
<string name="next">Berikutnya</string>
|
||||
<string name="back">Kembali</string>
|
||||
<string name="add_games">Tambahkan permainan</string>
|
||||
<string name="add_games_description">Pilih folder game anda</string>
|
||||
<string name="step_complete">Selesai!</string>
|
||||
|
||||
<!-- Home strings -->
|
||||
<string name="home_games">Permainan</string>
|
||||
<string name="home_search">Cari</string>
|
||||
<string name="home_settings">Pengaturan</string>
|
||||
<string name="empty_gamelist">Tidak ada file yang ditemukan atau belum ada direktori game yang dipilih.</string>
|
||||
<string name="search_and_filter_games">Cari dan filter game</string>
|
||||
<string name="select_games_folder">Pilih folder permainan</string>
|
||||
<string name="manage_game_folders">Kelola folder game</string>
|
||||
<string name="select_games_folder_description">Izinkan yuzu mengisi daftar game</string>
|
||||
<string name="add_games_warning">Lewati pemilihan folder game?</string>
|
||||
<string name="add_games_warning_description">Game tidak akan muncul di list jika tidak ada folder yang dipilih.</string>
|
||||
<string name="add_games_warning_help">https://yuzu-emu.org/help/quickstart/#dumping-games</string>
|
||||
<string name="home_search_games">Cari permainan</string>
|
||||
<string name="search_settings">Cari pengaturan</string>
|
||||
<string name="games_dir_selected">Direktori game sudah terpilih</string>
|
||||
<string name="install_prod_keys">Install prod.keys</string>
|
||||
<string name="install_prod_keys_description">Diperlukan untuk mendekripsi game retail</string>
|
||||
<string name="install_prod_keys_warning">Lewati penginstalan keys?</string>
|
||||
<string name="install_prod_keys_warning_description">Perlu keys yang valid untuk meng-emulate game retail. Hanya homebrew apps yang akan berfungsi jika kamu melanjutkan.</string>
|
||||
<string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string>
|
||||
<string name="notifications">Notifikasi</string>
|
||||
<string name="notifications_description">Berikan izin notifikasi dengan tombol di bawah ini.</string>
|
||||
<string name="give_permission">Berikan izin</string>
|
||||
<string name="notification_warning">Lewati pemberian izin notifikasi?</string>
|
||||
<string name="notification_warning_description">yuzu tidak akan dapat memberi tahu Anda tentang informasi penting.</string>
|
||||
<string name="permission_denied">Izin ditolak</string>
|
||||
<string name="permission_denied_description">Kamu terlalu sering menolak izin ini dan sekarang anda harus memberikannya secara manual di pengaturan sistem.</string>
|
||||
<string name="about">Tentang</string>
|
||||
<string name="about_description">Versi build, kredit, dan lainnya</string>
|
||||
<string name="warning_help">Bantuan</string>
|
||||
<string name="warning_skip">Lewati</string>
|
||||
<string name="warning_cancel">Batalkan</string>
|
||||
<string name="install_amiibo_keys">Install Amiibo keys</string>
|
||||
<string name="install_amiibo_keys_description">Diperlukan untuk menggunakan Amiibo di dalam game</string>
|
||||
<string name="invalid_keys_file">Keys yang dipilih invalid</string>
|
||||
<string name="install_keys_success">Keys berhasil diinstal</string>
|
||||
<string name="reading_keys_failure">Error saat mengecek enkripsi keys</string>
|
||||
<string name="install_prod_keys_failure_extension_description">Pastikan file keys anda memiliki format .keys dan coba lagi.</string>
|
||||
<string name="install_amiibo_keys_failure_extension_description">Pastikan file keys anda memiliki format .bin dan coba lagi.</string>
|
||||
<string name="invalid_keys_error">Keys enkripsi tidak valid</string>
|
||||
<string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
<string name="install_keys_failure_description">File yang dipilih salah atau rusak. Silakan masukkan kembali kunci Anda.</string>
|
||||
<string name="gpu_driver_manager">Manajer driver GPU</string>
|
||||
<string name="install_gpu_driver">Install driver GPU</string>
|
||||
<string name="install_gpu_driver_description">Instal driver lain untuk kinerja atau akurasi yang berpotensi lebih baik</string>
|
||||
<string name="advanced_settings">Pengaturan lanjutan</string>
|
||||
<string name="advanced_settings_game">Pengaturan lanjutan: %1$s</string>
|
||||
<string name="settings_description">Konfigurasikan pengaturan emulator</string>
|
||||
<string name="search_recently_played">Baru dimainkan</string>
|
||||
<string name="search_recently_added">baru ditambahkan</string>
|
||||
<string name="search_retail">Retail</string>
|
||||
<string name="search_homebrew">Homebrew</string>
|
||||
<string name="open_user_folder">Buka folder yuzu</string>
|
||||
<string name="open_user_folder_description">Kelola file internal yuzu\'s</string>
|
||||
<string name="theme_and_color_description">Ubah tampilan aplikasi</string>
|
||||
<string name="no_file_manager">Tidak menemukan file manager</string>
|
||||
<string name="notification_no_directory_link">Tidak bisa membuka direktori yuzu</string>
|
||||
<string name="notification_no_directory_link_description">Silakan cari folder pengguna dengan panel samping manajer file secara manual.</string>
|
||||
<string name="manage_save_data">Kelola save data</string>
|
||||
<string name="manage_save_data_description">Data simpanan ditemukan. Silakan pilih opsi di bawah.</string>
|
||||
<string name="import_save_warning">Impor data simpanan</string>
|
||||
<string name="import_save_warning_description">Melakukan ini berarti akan menimpa seluruh data simpanan yang sudah ada sebelumnya dengan file simpanan yang Anda berikan. Apakah Anda yakin?</string>
|
||||
<string name="import_export_saves_description">Impor atau Ekspor file simpanan</string>
|
||||
<string name="save_files_importing">Mengimpor file simpanan...</string>
|
||||
<string name="save_files_exporting">Mengekspor file simpanan...</string>
|
||||
<string name="save_file_imported_success">Berhasil mengimpor</string>
|
||||
<string name="save_file_invalid_zip_structure">Struktur direktori simpanan tidak valid.</string>
|
||||
<string name="save_file_invalid_zip_structure_description">Nama subfolder pertama harus merupakan title ID dari game.</string>
|
||||
<string name="import_saves">Impor</string>
|
||||
<string name="export_saves">Ekspor</string>
|
||||
<string name="install_firmware">Install firmware</string>
|
||||
<string name="install_firmware_description">Firmware harus merupakan sebuah file .ZIP dan diperlukan untuk menjalankan beberapa game.</string>
|
||||
<string name="firmware_installing">Menginstall firmware</string>
|
||||
<string name="firmware_installed_success">Firmware terpasang.</string>
|
||||
<string name="firmware_installed_failure">Gagal memasang Firmware.</string>
|
||||
<string name="firmware_installed_failure_description">Pastikan file nca firmware terdapat pada folder utama dari file .zip dan coba lagi.</string>
|
||||
<string name="share_log">Bagikan log debug</string>
|
||||
<string name="share_log_description">Bagikan file log yuzu untuk mendebug isu</string>
|
||||
<string name="share_log_missing">Tidak ada log file yang ditemukan</string>
|
||||
<string name="install_game_content">Instal konten game.</string>
|
||||
<string name="install_game_content_description">Instal pembaruan game atau DLC</string>
|
||||
<string name="installing_game_content">Menginstal konten...</string>
|
||||
<string name="install_game_content_failure">Error menginstal file (- file) pada NAND</string>
|
||||
<string name="install_game_content_failure_description">Tolong pastikan seluruh konten(-konten) valid dan prod.key terinstall</string>
|
||||
<string name="install_game_content_failure_base">Instalasi dari base game tidak diperbolehkan agar terhindar dari konflik yang mungkin terjadi.</string>
|
||||
<string name="install_game_content_failure_file_extension">Hanya konten NSP dan XCi yang didukung. Harap periksa apakah konten (-konten) dari game sudah valid.</string>
|
||||
<string name="install_game_content_failed_count">%1$d instalasi error(-error)</string>
|
||||
<string name="install_game_content_success">Konten(-konten) game sudah berhasil terinstal.</string>
|
||||
<string name="install_game_content_success_install">%1$d telah berhasil terinstal</string>
|
||||
<string name="install_game_content_success_overwrite">%1$d telah berhasil ditimpa.</string>
|
||||
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
||||
<string name="custom_driver_not_supported">Driver kustom tidak didukung</string>
|
||||
<string name="custom_driver_not_supported_description">Driver kustom saat ini tidak dapat digunakan pada perangkat ini. \nCek opsi ini lain waktu untuk mengetahui apakah dapat digunakan!</string>
|
||||
<string name="manage_yuzu_data">Kelola data Yuzu.</string>
|
||||
<string name="manage_yuzu_data_description">Impor/expor firmware, key, data pengguna, dan sebagainya!</string>
|
||||
<string name="share_save_file">Bagikan file simpanan.</string>
|
||||
<string name="export_save_failed">Gagal mengekspor simpanan.</string>
|
||||
<string name="game_folders">Folder Game</string>
|
||||
<string name="deep_scan">Pemindaian mendalam</string>
|
||||
<string name="add_game_folder">Pilih folder game</string>
|
||||
<string name="folder_already_added">Folder ini telah ditambahkan!</string>
|
||||
<string name="game_folder_properties">Properti folder game</string>
|
||||
<plurals name="saves_import_failed">
|
||||
<item quantity="other">Gagal mengimpor %d simpanan.</item>
|
||||
</plurals>
|
||||
<plurals name="saves_import_success">
|
||||
<item quantity="other">Berhasil mengimpor %d simpanan.</item>
|
||||
</plurals>
|
||||
<string name="no_save_data_found">Tidak ada data simpanan yang ditemukan.</string>
|
||||
<string name="verify_installed_content">Verifikasi konten yang terinstal</string>
|
||||
<string name="verify_installed_content_description">Memeriksa semua konten yang terinstal dari kerusakan</string>
|
||||
<string name="keys_missing">Kunci enkripsi hilang</string>
|
||||
<string name="keys_missing_description">Firmware dan game retail tidak dapat didekripsi</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<!-- Applet launcher strings -->
|
||||
<string name="applets">Luncurkan applet</string>
|
||||
<string name="applets_description">Meluncurkan sistem applet menggunakan firmware yang diinstal</string>
|
||||
<string name="applets_error_firmware">Firmware tidak terinstal</string>
|
||||
<string name="applets_error_applet">Applet tidak tersedia</string>
|
||||
<string name="applets_error_description"><![CDATA[Pastikan file prod.keys dan firmware Anda terpasang dan coba lagi.]]></string>
|
||||
<string name="album_applet">Album</string>
|
||||
<string name="album_applet_description">Lihat gambar yang disimpan di folder tangkapan layar pengguna dengan penampil foto sistem.</string>
|
||||
<string name="mii_edit_applet">Ubah Mii</string>
|
||||
<string name="mii_edit_applet_description">Lihat dan ubah Miis dengan mengedit sistem</string>
|
||||
<string name="cabinet_applet">Kabinet</string>
|
||||
<string name="cabinet_applet_description">Ubah dan hapus data yang disimpan pada amiibo</string>
|
||||
<string name="cabinet_launcher">Peluncur kabinet</string>
|
||||
<string name="cabinet_nickname_and_owner">Pengaturan Nama Panggilan dan Pemilik</string>
|
||||
<string name="cabinet_game_data_eraser">Hapus data game</string>
|
||||
<string name="cabinet_restorer">Mengembalikan</string>
|
||||
<string name="cabinet_formatter">Mengatur</string>
|
||||
|
||||
<!-- About screen strings -->
|
||||
<string name="gaia_is_not_real">Gaia tidak nyata</string>
|
||||
<string name="copied_to_clipboard">Salin ke papan klip</string>
|
||||
<string name="about_app_description">Emulator Switch Open-Source</string>
|
||||
<string name="contributors">Kontributor</string>
|
||||
<string name="contributors_description">Dibuat dengan \u2764 dari tim yuzu</string>
|
||||
<string name="contributors_link">https://github.com/yuzu-emu/yuzu/graphs/contributors</string>
|
||||
<string name="licenses_description">Proyek yang memungkinkan yuzu untuk Android</string>
|
||||
<string name="build">Versi</string>
|
||||
<string name="user_data">Data pengguna</string>
|
||||
<string name="user_data_description">Impor/ekspor semua data aplikasi.\n\nKetika mengimpor data pengguna, semua data pengguna yang ada akan dihapus!</string>
|
||||
<string name="exporting_user_data">Mengekspor data pengguna</string>
|
||||
<string name="importing_user_data">Mengimpor data pengguna</string>
|
||||
<string name="import_user_data">Impor data pengguna</string>
|
||||
<string name="invalid_yuzu_backup">cadangan yuzu tidak valid</string>
|
||||
<string name="user_data_export_success">berhasil mengekspor data pengguna</string>
|
||||
<string name="user_data_import_success">Berhasil mengimpor data pengguna</string>
|
||||
<string name="user_data_export_cancelled">Ekspor Dibatalkan</string>
|
||||
<string name="user_data_import_failed_description">Pastikan folder data pengguna berada di akar folder zip dan berisi file konfigurasi di config/config.ini dan coba lagi.</string>
|
||||
<string name="support_link">https://discord.gg/u77vRWY</string>
|
||||
<string name="website_link">https://yuzu-emu.org/</string>
|
||||
<string name="github_link">https://github.com/yuzu-emu</string>
|
||||
|
||||
<!-- Early access upgrade strings -->
|
||||
<string name="early_access">Akses lebih awal</string>
|
||||
<string name="get_early_access">Dapatkan akses lebih awal</string>
|
||||
<string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string>
|
||||
<string name="get_early_access_description">Fitur-fitur yang paling baru, akses lebih awal untuk perbaruan, dan lain-lain.</string>
|
||||
<string name="early_access_benefits">Manfaat Akses Awal</string>
|
||||
<string name="cutting_edge_features">Fitur-fitur yang paling baru</string>
|
||||
<string name="early_access_updates">Akses lebih awal untuk pembaruan</string>
|
||||
<string name="no_manual_installation">Tidak ada instalasi manual</string>
|
||||
<string name="prioritized_support">Dukungan yang diprioritaskan</string>
|
||||
<string name="helping_game_preservation">Membantu pemeliharaan game</string>
|
||||
<string name="our_eternal_gratitude">Ucapan terima kasih kami yang tak terhingga</string>
|
||||
<string name="are_you_interested">Apa kamu tertarik?</string>
|
||||
|
||||
<!-- General settings strings -->
|
||||
<string name="frame_limit_enable">Batas kecepatan</string>
|
||||
<string name="frame_limit_enable_description">Membatasi kecepatan emulasi ke persentase tertentu dari kecepatan normal</string>
|
||||
<string name="frame_limit_slider">Batas persentase kecepatan</string>
|
||||
<string name="frame_limit_slider_description">Menentukan persentase untuk membatasi kecepatan emulasi. 100% adalah kecepatan normal. Nilai yang lebih tinggi atau lebih rendah akan menambah atau mengurangi batas kecepatan</string>
|
||||
<string name="cpu_backend">Backend CPU</string>
|
||||
<string name="cpu_accuracy">Akurasi CPU</string>
|
||||
<string name="value_with_units">%1$s%2$s</string>
|
||||
|
||||
<string name="use_docked_mode">Mode Docked</string>
|
||||
<string name="use_docked_mode_description">Meningkatkan resolusi, menurunkan performa. Mode Handled digunakan saat dinonaktifkan, menurunkan resolusi dan meningkatkan performa</string>
|
||||
<string name="emulated_region">Wilayah yang diemulasikan</string>
|
||||
<string name="emulated_language">Bahasa yang diemulasikan</string>
|
||||
<string name="select_rtc_date">Pilih tanggal RTC</string>
|
||||
<string name="select_rtc_time">Pilih waktu RTC</string>
|
||||
<string name="use_custom_rtc">RTC Kustom</string>
|
||||
<string name="use_custom_rtc_description">Memungkinkan Anda untuk mengatur jam waktu nyata kustom yang terpisah dari waktu sistem saat ini Anda.</string>
|
||||
<string name="set_custom_rtc">Setel RTC Kustom</string>
|
||||
|
||||
<!-- Graphics settings strings -->
|
||||
<string name="renderer_accuracy">Tingkatan Akurasi</string>
|
||||
<string name="renderer_resolution">Resolusi (Handheld/Docked)</string>
|
||||
<string name="renderer_vsync">Mode Sinkronisasi Vertikal</string>
|
||||
<string name="renderer_screen_layout">Orientasi</string>
|
||||
<string name="renderer_aspect_ratio">Rasio Aspek</string>
|
||||
<string name="renderer_scaling_filter">Filter penyesuaian jendela</string>
|
||||
<string name="fsr_sharpness">Ketajaman FSR</string>
|
||||
<string name="fsr_sharpness_description">Menentukan seberapa tajam gambar akan terlihat saat menggunakan kontras dinamis FSR</string>
|
||||
<string name="renderer_anti_aliasing">Metode anti-aliasing</string>
|
||||
<string name="renderer_force_max_clock">Paksa jam maximum (hanya untuk Adreno)</string>
|
||||
<string name="renderer_force_max_clock_description">Memaksa GPU untuk berjalan pada kecepatan maksimum yang mungkin (batasan termal masih akan diterapkan).</string>
|
||||
<string name="renderer_asynchronous_shaders">Gunakan shader asinkron</string>
|
||||
<string name="renderer_asynchronous_shaders_description">Mengompilasi shader secara asinkron mengurangi Tutup Paksa tetapi dapat menimbulkan gangguan.</string>
|
||||
<string name="renderer_reactive_flushing">Gunakan reactive flushing</string>
|
||||
<string name="renderer_reactive_flushing_description">Meningkatkan akurasi rendering dalam beberapa permainan dengan mengorbankan performa.</string>
|
||||
<string name="use_disk_shader_cache">Cache shader disk</string>
|
||||
<string name="use_disk_shader_cache_description">Mengurangi Tutup Paksa dengan menyimpan dan memuat yang dihasilkan secara lokal</string>
|
||||
<string name="anisotropic_filtering">Penyaringan Anisotropik</string>
|
||||
<string name="anisotropic_filtering_description">Meningkatkan kualitas tekstur bila dilihat pada sudut miring</string>
|
||||
|
||||
<!-- Debug settings strings -->
|
||||
<string name="cpu">CPU</string>
|
||||
<string name="cpu_debug_mode">Debugging CPU</string>
|
||||
<string name="cpu_debug_mode_description">Menempatkan CPU dalam mode debugging lambat</string>
|
||||
<string name="gpu">GPU</string>
|
||||
<string name="renderer_api">API</string>
|
||||
<string name="renderer_debug">Debugging Grafis</string>
|
||||
<string name="renderer_debug_description">Menyetel grafis API ke mode lambat</string>
|
||||
<string name="fastmem">Fastmem</string>
|
||||
|
||||
<!-- Audio settings strings -->
|
||||
<string name="audio_output_engine">Output audio</string>
|
||||
<string name="audio_volume">Volume</string>
|
||||
<string name="audio_volume_description">Menentukan volume output audio</string>
|
||||
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">B</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">Tambah</string>
|
||||
<string name="button_minus">Kurang</string>
|
||||
<string name="button_home">Home</string>
|
||||
<string name="button_capture">Tangkapan</string>
|
||||
<string name="dpad">D-Pad</string>
|
||||
<string name="up">Atas</string>
|
||||
<string name="down">Bawah</string>
|
||||
<string name="left">Kiri</string>
|
||||
<string name="right">Kanan</string>
|
||||
<string name="left_stick">Left Stick</string>
|
||||
<string name="right_stick">Right Stick</string>
|
||||
<string name="c_stick">C-Stick</string>
|
||||
<string name="pressed">Ditekan</string>
|
||||
<string name="range">Jangkauan</string>
|
||||
<string name="modifier">Pemodifikasi</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">Tidak valid</string>
|
||||
<string name="pro_controller">Kontroler Pro</string>
|
||||
<string name="handheld">Jinjing</string>
|
||||
<string name="dual_joycons">Joycon Dual</string>
|
||||
<string name="left_joycon">Joycon Kiri</string>
|
||||
<string name="right_joycon">Joycon Kanan</string>
|
||||
<string name="gamecube_controller">Kontroler GameCube</string>
|
||||
<string name="invert_axis">Balikkan poros</string>
|
||||
<string name="invert_button">Balikkan tombol</string>
|
||||
<string name="toggle_button">Atur tombol</string>
|
||||
<string name="turbo_button">Tombol turbo</string>
|
||||
<string name="set_threshold">Atur batasan</string>
|
||||
<string name="connected">Terhubung</string>
|
||||
<string name="vibration">Getaran</string>
|
||||
<string name="profile">Profil</string>
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">Bawaan</string>
|
||||
<string name="ini_saved">Pengaturan yang disimpan</string>
|
||||
<string name="gameid_saved">Pengaturan yang disimpan untuk%1$s</string>
|
||||
<string name="error_saving">Gagal menyimpan%1$s.ini:%2$s</string>
|
||||
<string name="unimplemented_menu">Menu yang belum diimplementasikan</string>
|
||||
<string name="loading">Memuat...</string>
|
||||
<string name="shutting_down">Menutup...</string>
|
||||
<string name="reset_setting_confirmation">Apakah Anda ingin mengatur ulang pengaturan ini kembali ke nilai defaultnya?</string>
|
||||
<string name="reset_to_default">Setel ulang ke bawaan</string>
|
||||
<string name="reset_to_default_description">Mereset semua pengaturan lanjutan</string>
|
||||
<string name="reset_all_settings">Atur ulang semua pengaturan?</string>
|
||||
<string name="reset_all_settings_description">Semua pengaturan lanjutan akan diatur ulang ke konfigurasi default mereka. Ini tidak dapat dibatalkan.</string>
|
||||
<string name="settings_reset">Pengaturan diatur ulang</string>
|
||||
<string name="close">Tutup</string>
|
||||
<string name="learn_more">Pelajari lebih lanjut</string>
|
||||
<string name="auto">Otomatis</string>
|
||||
<string name="submit">Kirimkan</string>
|
||||
<string name="string_null">Null</string>
|
||||
<string name="string_import">Impor</string>
|
||||
<string name="export">Ekspor</string>
|
||||
<string name="export_failed">Ekspor gagal</string>
|
||||
<string name="import_failed">Impor gagal</string>
|
||||
<string name="cancelling">Membatalkan</string>
|
||||
<string name="install">Instal</string>
|
||||
<string name="delete">Hapus</string>
|
||||
<string name="edit">Ubah</string>
|
||||
<string name="export_success">Berhasil diekspor</string>
|
||||
<string name="start">Mulai</string>
|
||||
<string name="clear">Bersihkan</string>
|
||||
<string name="global">Utama</string>
|
||||
<string name="custom">Kustom</string>
|
||||
<string name="notice">Pemberitahuan</string>
|
||||
<string name="import_complete">Impor Selasai</string>
|
||||
<string name="more_options">Opsi Lain</string>
|
||||
<string name="use_global_setting">Gunakan Pengaturan Utama</string>
|
||||
<string name="operation_completed_successfully">Operasi selsesai dengan sukses</string>
|
||||
<string name="save">Simpan</string>
|
||||
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">Pilih driver GPU</string>
|
||||
<string name="select_gpu_driver_title">Apakah Anda ingin mengganti driver GPU saat ini?</string>
|
||||
<string name="select_gpu_driver_install">Instal</string>
|
||||
<string name="select_gpu_driver_default">Bawaan</string>
|
||||
<string name="select_gpu_driver_use_default">Gunakan driver GPU Bawaan</string>
|
||||
<string name="select_gpu_driver_error">Driver yang dipilih tidak valid</string>
|
||||
<string name="driver_already_installed">Driver sudah terpasang</string>
|
||||
<string name="system_gpu_driver">Driver GPU sistem</string>
|
||||
<string name="installing_driver">Memasang driver...</string>
|
||||
|
||||
<!-- Preferences Screen -->
|
||||
<string name="preferences_settings">Pengaturan</string>
|
||||
<string name="preferences_general">Umum</string>
|
||||
<string name="preferences_system">Sistem</string>
|
||||
<string name="preferences_system_description">Mode Docked, wilayah, bahasa</string>
|
||||
<string name="preferences_graphics">Grafis</string>
|
||||
<string name="preferences_graphics_description">Tingkat akurasi, resolusi, cache shader</string>
|
||||
<string name="preferences_audio">Audio</string>
|
||||
<string name="preferences_audio_description">Output audio, volume</string>
|
||||
<string name="preferences_controls">Kendali</string>
|
||||
<string name="preferences_theme">Tema dan warna</string>
|
||||
<string name="preferences_debug">Awakutu</string>
|
||||
<string name="preferences_debug_description">CPU/GPU debugging, graphics API, fastmem</string>
|
||||
|
||||
<!-- Game properties -->
|
||||
<string name="info">Info</string>
|
||||
<string name="info_description">ID program, pengembang, versi</string>
|
||||
<string name="per_game_settings">Pengaturan per game</string>
|
||||
<string name="per_game_settings_description">Mengedit pengaturan khusus untuk game ini</string>
|
||||
<string name="launch_options">Luncurkan konfigurasi</string>
|
||||
<string name="path">Jalur</string>
|
||||
<string name="program_id">Program Id</string>
|
||||
<string name="developer">Pengembang</string>
|
||||
<string name="version">Versi</string>
|
||||
<string name="copy_details">Salin Detail</string>
|
||||
<string name="add_ons">Pengaya</string>
|
||||
<string name="add_ons_description">Ganti mod, pembaruan dan dlc</string>
|
||||
<string name="clear_shader_cache">Menghapus Cache Shader</string>
|
||||
<string name="clear_shader_cache_description">Menghapus semua shader yang dibangun saat bermain game ini</string>
|
||||
<string name="clear_shader_cache_warning_description">Anda akan mengalami lebih banyak stuttering saat shader cache diregenerasi.</string>
|
||||
<string name="cleared_shaders_successfully">Berhasil Membersihkan hader </string>
|
||||
<string name="addons_game">Pengaya Permainan: %1$s</string>
|
||||
<string name="save_data">Simpanan Data</string>
|
||||
<string name="save_data_description">Mengelola data simpanan yang spesifik untuk permainan ini</string>
|
||||
<string name="delete_save_data">Hapus Simpanan Data</string>
|
||||
<string name="delete_save_data_description">Menghapus semua data simpanan yang spesifik untuk permainan ini</string>
|
||||
<string name="delete_save_data_warning_description">Apakah Anda yakin ingin melanjutkan? Ini akan menghapus semua data simpanan permainan ini secara permanen.</string>
|
||||
<string name="save_data_deleted_successfully">Simpanan Data Berhasil Dihapus</string>
|
||||
<string name="select_content_type">Pilih Jenis Konten</string>
|
||||
<string name="updates_and_dlc">Update Dan Dlc</string>
|
||||
<string name="mods_and_cheats">Mod Dan Cheat</string>
|
||||
<string name="addon_notice">Pemberitahuan Pengaya</string>
|
||||
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
|
||||
<string name="addon_notice_description">Untuk memasang mod dan cheat, Anda harus memilih folder yang berisi direktori cheats/, romfs/, atau exefs/. Kami tidak dapat memverifikasi apakah semua ini kompatibel dengan game Anda, jadi berhati-hatilah!</string>
|
||||
<string name="invalid_directory">Direktori Tidak Valid</string>
|
||||
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
|
||||
<string name="invalid_directory_description">Pastikan direktori yang Anda pilih berisi folder cheats/, romfs/, atau exefs/, lalu coba lagi.</string>
|
||||
<string name="addon_installed_successfully">Pengaya Sukses Dipasang</string>
|
||||
<string name="verifying_content">Memverifikasi Konten</string>
|
||||
<string name="content_install_notice">Pemberitahuan Pemasangan</string>
|
||||
<string name="content_install_notice_description">Konten yang Anda pilih tidak cocok dengan game ini. Tetap Install?</string>
|
||||
<string name="confirm_uninstall">Hapus Installasi</string>
|
||||
<string name="confirm_uninstall_description">Apakah Anda yakin ingin menghapus addon ini?</string>
|
||||
<string name="verify_integrity">Integritas</string>
|
||||
<string name="verifying">Memverifikasi</string>
|
||||
<string name="verify_success">Berhasil</string>
|
||||
<string name="verify_failure">Gagal</string>
|
||||
<string name="verify_failure_description">Konten file mungkin rusak</string>
|
||||
<string name="verify_no_result">Tidak Ada Hasil</string>
|
||||
<string name="verify_no_result_description">Isi file tidak diperiksa ke validasinya</string>
|
||||
<string name="verification_failed_for">Verifikasi gagal untuk file-file berikut:\n%1$s</string>
|
||||
|
||||
<!-- ROM loading errors -->
|
||||
<string name="loader_error_encrypted">ROM-mu ter-enkripsi</string>
|
||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Silakan ikuti panduan untuk redump <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">kartu permainan</a> atau <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">judul yang terinstal</a>.]]></string>
|
||||
<string name="loader_error_encrypted_keys_description"><![CDATA[Harap pastikan bahwa Anda <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> diinstal sehingga game dapat didekripsi.]]></string>
|
||||
<string name="loader_error_video_core">Terjadi kesalahan ketika menginisialisasi inti video.</string>
|
||||
<string name="loader_error_video_core_description">Hal ini biasanya disebabkan oleh driver GPU yang tidak kompatibel. Menginstal driver GPU khusus dapat mengatasi masalah ini</string>
|
||||
<string name="loader_error_invalid_format">Tidak Dapat Memuat ROM</string>
|
||||
<string name="loader_error_file_not_found">Berkas Tidak Ditemukan</string>
|
||||
|
||||
<!-- Emulation Menu -->
|
||||
<string name="emulation_exit">Keluar</string>
|
||||
<string name="emulation_done">Selesai</string>
|
||||
<string name="emulation_fps_counter">penghitung Fps </string>
|
||||
<string name="emulation_thermal_indicator">Indikator termal</string>
|
||||
<string name="emulation_toggle_controls">Beralih Kontrol</string>
|
||||
<string name="emulation_rel_stick_center">Pusat stick relatif</string>
|
||||
<string name="emulation_dpad_slide">Geser Dpad</string>
|
||||
<string name="emulation_haptics">Haptik</string>
|
||||
<string name="emulation_show_overlay">Tampilkan Hamparan</string>
|
||||
<string name="emulation_toggle_all">Alihkan Semua</string>
|
||||
<string name="emulation_control_adjust">Menyesuaikan</string>
|
||||
<string name="emulation_control_scale">Skala</string>
|
||||
<string name="emulation_control_opacity">Kegelapan</string>
|
||||
<string name="emulation_touch_overlay_reset">Penyetelan Ulang Hamparan</string>
|
||||
<string name="emulation_touch_overlay_edit">Edit Hamparan</string>
|
||||
<string name="emulation_pause">Jeda</string>
|
||||
<string name="emulation_unpause">Batalkan Jeda</string>
|
||||
<string name="emulation_input_overlay">Hamparan Masukan</string>
|
||||
<string name="touchscreen">Layar Sentuh</string>
|
||||
<string name="lock_drawer">Kunci Laci</string>
|
||||
<string name="unlock_drawer">Buka Kunci Laci</string>
|
||||
|
||||
<string name="load_settings">Pengaturan</string>
|
||||
|
||||
<!-- Software keyboard -->
|
||||
<string name="software_keyboard">Papan Ketik Perangkat Lunak</string>
|
||||
|
||||
<!-- Errors and warnings -->
|
||||
<string name="abort_button">Batalkan</string>
|
||||
<string name="continue_button">Lanjut</string>
|
||||
<string name="system_archive_not_found">Arsip Tidak Ditemukan</string>
|
||||
<string name="system_archive_not_found_message">%s hilang. Harap buang arsip sistem Anda.\nMelanjutkan emulasi dapat menyebabkan kerusakan dan bug.</string>
|
||||
<string name="system_archive_general">Arsip Umum</string>
|
||||
<string name="save_load_error">Kesalahan Memuat</string>
|
||||
<string name="fatal_error">Kesalahan Fatal</string>
|
||||
<string name="fatal_error_message">Kesalahan Fatal Pesan. Periksa log untuk rincian.\nMelanjutkan emulasi dapat menyebabkan crash dan bug.</string>
|
||||
<string name="performance_warning">Matikan pengaturan ini akan signifikan mengurangi kinerja emulasi! Untuk pengalaman terbaik, disarankan agar Anda tetap mengaktifkan pengaturan ini.</string>
|
||||
<string name="device_memory_inadequate">Ram Perangkat: %1$s\nRekomendasikan: %2$s</string>
|
||||
<string name="memory_formatted">%1$s%2$s</string>
|
||||
<string name="no_game_present">Tidak ada permainan yang dapat di-boot!</string>
|
||||
|
||||
<!-- Region Names -->
|
||||
<string name="region_japan">Jepang</string>
|
||||
<string name="region_usa">Amerika Serikat</string>
|
||||
<string name="region_europe">Eropa</string>
|
||||
<string name="region_australia">Australia</string>
|
||||
<string name="region_china">Tiongkok</string>
|
||||
<string name="region_korea">Korea</string>
|
||||
<string name="region_taiwan">Taiwan</string>
|
||||
|
||||
<!-- Memory Sizes -->
|
||||
<string name="memory_byte">Byte</string>
|
||||
<string name="memory_byte_shorthand">B</string>
|
||||
<string name="memory_kilobyte">KB</string>
|
||||
<string name="memory_megabyte">MB</string>
|
||||
<string name="memory_gigabyte">Britania Raya</string>
|
||||
<string name="memory_terabyte">TB</string>
|
||||
<string name="memory_petabyte">PB</string>
|
||||
<string name="memory_exabyte">EB</string>
|
||||
|
||||
<!-- Renderer APIs -->
|
||||
<string name="renderer_vulkan">Vulkan</string>
|
||||
<string name="renderer_none">Tak ada</string>
|
||||
|
||||
<!-- Renderer Accuracy -->
|
||||
<string name="renderer_accuracy_normal">Normal</string>
|
||||
<string name="renderer_accuracy_high">Tinggi</string>
|
||||
<string name="renderer_accuracy_extreme">Ekstrim (Lambat)</string>
|
||||
|
||||
<!-- Resolutions -->
|
||||
<string name="resolution_half">0.5X (360p/540p)</string>
|
||||
<string name="resolution_three_quarter">0.75X (540p/810p)</string>
|
||||
<string name="resolution_one">1X (720p/1080p)</string>
|
||||
<string name="resolution_two">2X (1440p/2160p) (Lambat)</string>
|
||||
<string name="resolution_three">3X (2160p/3240p) (Lambat)</string>
|
||||
<string name="resolution_four">4X (2880p/4320p) (Lambat)</string>
|
||||
|
||||
<!-- Renderer VSync -->
|
||||
<string name="renderer_vsync_immediate">Immediate (OFF)</string>
|
||||
<string name="renderer_vsync_mailbox">Mailbox</string>
|
||||
<string name="renderer_vsync_fifo">FIFO (ON)</string>
|
||||
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string>
|
||||
|
||||
<!-- Scaling Filters -->
|
||||
<string name="scaling_filter_nearest_neighbor">Nearest Neighbor</string>
|
||||
<string name="scaling_filter_bilinear">Biliner</string>
|
||||
<string name="scaling_filter_bicubic">Bikubik</string>
|
||||
<string name="scaling_filter_gaussian">Gaussian</string>
|
||||
<string name="scaling_filter_scale_force">ScaleForce</string>
|
||||
<string name="scaling_filter_fsr">AMD FidelityFX™ Super Resolusi</string>
|
||||
|
||||
<!-- Anti-Aliasing -->
|
||||
<string name="anti_aliasing_none">Tak ada</string>
|
||||
<string name="anti_aliasing_fxaa">FXAA</string>
|
||||
<string name="anti_aliasing_smaa">SMAA</string>
|
||||
|
||||
<!-- Screen Layouts -->
|
||||
<string name="screen_layout_auto">Otomatis</string>
|
||||
<string name="screen_layout_sensor_landscape">Lanskap Sensor</string>
|
||||
<string name="screen_layout_landscape">Lanskap</string>
|
||||
<string name="screen_layout_reverse_landscape">Lanskap Terbalik</string>
|
||||
<string name="screen_layout_sensor_portrait">Potret Sensor</string>
|
||||
<string name="screen_layout_portrait">Potret</string>
|
||||
<string name="screen_layout_reverse_portrait">Potret Terbalik</string>
|
||||
|
||||
<!-- Aspect Ratios -->
|
||||
<string name="ratio_default">Bawaan (16:9)</string>
|
||||
<string name="ratio_force_four_three">Paksa 4:3</string>
|
||||
<string name="ratio_force_twenty_one_nine">Paksa 21:9</string>
|
||||
<string name="ratio_force_sixteen_ten">Paksa 16:10</string>
|
||||
<string name="ratio_stretch">Merentangkan</string>
|
||||
|
||||
<!-- CPU Backend -->
|
||||
<string name="cpu_backend_dynarmic">Dynamic (Lambat)</string>
|
||||
<string name="cpu_backend_nce">Native code execution (NCE)</string>
|
||||
|
||||
<!-- CPU Accuracy -->
|
||||
<string name="cpu_accuracy_accurate">Akurat</string>
|
||||
<string name="cpu_accuracy_unsafe">Berbahaya</string>
|
||||
<string name="cpu_accuracy_paranoid">Paranoid (Slow)</string>
|
||||
|
||||
<!-- Gamepad Buttons -->
|
||||
<string name="gamepad_d_pad">D Pad</string>
|
||||
<string name="gamepad_left_stick">Left Stick</string>
|
||||
<string name="gamepad_right_stick">Right Stick</string>
|
||||
<string name="gamepad_home">Home</string>
|
||||
<string name="gamepad_screenshot">Screenshot</string>
|
||||
|
||||
<!-- Disk shader cache -->
|
||||
<string name="preparing_shaders">menyiapkan shader</string>
|
||||
<string name="building_shaders">membangun shader</string>
|
||||
|
||||
<!-- Theme options -->
|
||||
<string name="change_app_theme">Ubah Tema</string>
|
||||
<string name="theme_default">Bawaan</string>
|
||||
<string name="theme_material_you">Material Anda</string>
|
||||
|
||||
<!-- Theme Modes -->
|
||||
<string name="change_theme_mode">Mengubah Tema</string>
|
||||
<string name="theme_mode_follow_system">Mengikuti Sistem</string>
|
||||
<string name="theme_mode_light">Terang</string>
|
||||
<string name="theme_mode_dark">Gelap</string>
|
||||
|
||||
<!-- Audio output engines -->
|
||||
<string name="oboe">Oboe</string>
|
||||
<string name="cubeb">Cubeb</string>
|
||||
|
||||
<!-- Anisotropic filtering options -->
|
||||
<string name="multiplier_two">2x</string>
|
||||
<string name="multiplier_four">4x</string>
|
||||
<string name="multiplier_eight">8x</string>
|
||||
<string name="multiplier_sixteen">16x</string>
|
||||
|
||||
<!-- Black backgrounds theme -->
|
||||
<string name="use_black_backgrounds">Gunakan Latar Belakang Hitam</string>
|
||||
<string name="use_black_backgrounds_description">Apabila menggunakan tema gelap, terapkan latar belakang hitam</string>
|
||||
|
||||
<!-- Picture-In-Picture -->
|
||||
<string name="picture_in_picture">Gambar dalam gambar</string>
|
||||
<string name="picture_in_picture_description">Meminimalkan jendela apabila ditempatkan di latar belakang</string>
|
||||
<string name="pause">Jeda</string>
|
||||
<string name="play">Bermain</string>
|
||||
<string name="mute">Bisukan</string>
|
||||
<string name="unmute">Membunyikan</string>
|
||||
|
||||
<!-- Emulation vertical alignment -->
|
||||
<string name="vertical_alignment">Penyelarasan vertikal</string>
|
||||
<string name="top">Atas</string>
|
||||
<string name="center">Pusat</string>
|
||||
<string name="bottom">Bawah</string>
|
||||
|
||||
<!-- Licenses screen strings -->
|
||||
<string name="licenses">Lisensi</string>
|
||||
<string name="license_fidelityfx_fsr_description">Peningkatan kualitas tinggi dari AMD</string>
|
||||
</resources>
|
@ -31,6 +31,7 @@
|
||||
<string name="empty_gamelist">Non sono stati trovati file o non è stata ancora selezionata alcuna directory di gioco.</string>
|
||||
<string name="search_and_filter_games">Cerca e filtra i giochi</string>
|
||||
<string name="select_games_folder">Seleziona la cartella dei giochi</string>
|
||||
<string name="manage_game_folders">Gestisci le cartelle dei giochi</string>
|
||||
<string name="select_games_folder_description">Consente a yuzu di popolare l\'elenco dei giochi</string>
|
||||
<string name="add_games_warning">Saltare la selezione della cartella dei giochi?</string>
|
||||
<string name="add_games_warning_description">I giochi non saranno mostrati nella lista dei giochi se una cartella non è selezionata.</string>
|
||||
@ -83,7 +84,11 @@
|
||||
<string name="notification_no_directory_link_description">Per favore individua la cartella dell\'utente manualmente con il pannello laterale del file manager.</string>
|
||||
<string name="manage_save_data">Gestisci i salvataggi</string>
|
||||
<string name="manage_save_data_description">Salvataggio non trovato. Seleziona un\'opzione di seguito.</string>
|
||||
<string name="import_save_warning">Importa dei salvataggi</string>
|
||||
<string name="import_save_warning_description">ATTENZIONE: Tutti i salvataggi già presenti sul dispositivo verranno SOSTITUITI dai nuovi. Sicuro di voler continuare?</string>
|
||||
<string name="import_export_saves_description">Importa o esporta i salvataggi</string>
|
||||
<string name="save_files_importing">Importazione dei salvataggi...</string>
|
||||
<string name="save_files_exporting">Esportazione dei salvataggi..</string>
|
||||
<string name="save_file_imported_success">Importato con successo</string>
|
||||
<string name="save_file_invalid_zip_structure">La struttura della cartella dei salvataggi è invalida</string>
|
||||
<string name="save_file_invalid_zip_structure_description">La prima sotto cartella <b>deve</b> chiamarsi come l\'ID del titolo del gioco.</string>
|
||||
@ -116,6 +121,16 @@
|
||||
<string name="manage_yuzu_data_description">Importa/Esporta il firmware, le keys, i dati utente, e altro!</string>
|
||||
<string name="share_save_file">Condividi i tuoi dati di salvataggio</string>
|
||||
<string name="export_save_failed">Errore durante l\'esportazione del salvataggio</string>
|
||||
<string name="game_folders">Cartelle di gioco</string>
|
||||
<string name="deep_scan">Scansione Sotto-Cartelle</string>
|
||||
<string name="add_game_folder">Aggiungi Cartella di gioco</string>
|
||||
<string name="folder_already_added">Questa cartella è già presente nell\'elenco.</string>
|
||||
<string name="game_folder_properties">Proprietà della cartella di Gioco</string>
|
||||
<string name="no_save_data_found">Nessun salvataggio trovato</string>
|
||||
<string name="verify_installed_content">Verifica i contenuti installati</string>
|
||||
<string name="verify_installed_content_description">Verifica l\'integrità di tutti i contenuti installati.</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<!-- Applet launcher strings -->
|
||||
<string name="applets">Avvia applet</string>
|
||||
<string name="applets_description">Avvia applet di sistema usando il firmware installato</string>
|
||||
@ -176,10 +191,10 @@
|
||||
<string name="frame_limit_enable_description">Limita la velocità dell\'emulazione a una specifica percentuale della velocità normale.</string>
|
||||
<string name="frame_limit_slider">Limite velocità percentuale</string>
|
||||
<string name="frame_limit_slider_description">Specifica la percentuale per limitare la velocità di emulazione. 100% è la velocità normale. Valori maggiori o minori aumenteranno o diminuiranno il limite di velocità</string>
|
||||
<string name="cpu_backend">Backend CPU</string>
|
||||
<string name="cpu_accuracy">Accuratezza della CPU</string>
|
||||
<string name="value_with_units">%1$s%2$s</string>
|
||||
|
||||
<!-- System settings strings -->
|
||||
<string name="use_docked_mode">Modalità Docked</string>
|
||||
<string name="use_docked_mode_description">Aumenta la risoluzione, diminuendo le performance. La modalità portatile è usata quando disabilitato, diminuendo la risoluzione e aumentando le performance.</string>
|
||||
<string name="emulated_region">Regione emulata</string>
|
||||
@ -206,6 +221,9 @@
|
||||
<string name="renderer_reactive_flushing_description">Migliora l\'accuratezza della grafica in alcuni giochi, al costo delle performance.</string>
|
||||
<string name="use_disk_shader_cache">Usa la cache delle shader</string>
|
||||
<string name="use_disk_shader_cache_description">Riduce lo stuttering caricando le shader già compilate all\'avvio.</string>
|
||||
<string name="anisotropic_filtering">Filtro Anisotropico</string>
|
||||
<string name="anisotropic_filtering_description">Migliora la qualità delle texture quando vengono visualizzate ad un angolo obliquo.</string>
|
||||
|
||||
<!-- Debug settings strings -->
|
||||
<string name="cpu">CPU</string>
|
||||
<string name="cpu_debug_mode">Debug della CPU</string>
|
||||
@ -221,6 +239,49 @@
|
||||
<string name="audio_volume">Volume</string>
|
||||
<string name="audio_volume_description">Specifica il volume dell\'audio in uscita.</string>
|
||||
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">B</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">Più</string>
|
||||
<string name="button_minus">Meno</string>
|
||||
<string name="button_home">Home</string>
|
||||
<string name="button_capture">Cattura</string>
|
||||
<string name="dpad">D-Pad</string>
|
||||
<string name="up">Su</string>
|
||||
<string name="down">Giù</string>
|
||||
<string name="left">Sinistra</string>
|
||||
<string name="right">Destra</string>
|
||||
<string name="left_stick">Analogico sinistro</string>
|
||||
<string name="right_stick">Analogico destro</string>
|
||||
<string name="c_stick">Levetta C</string>
|
||||
<string name="pressed">Premuto</string>
|
||||
<string name="range">Raggio</string>
|
||||
<string name="deadzone">Zona morta</string>
|
||||
<string name="modifier">Modificatore</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">Non valido</string>
|
||||
<string name="unknown">Sconosciuto</string>
|
||||
<string name="pro_controller">Pro Controller</string>
|
||||
<string name="handheld">Portatile</string>
|
||||
<string name="dual_joycons">Due Joycon</string>
|
||||
<string name="left_joycon">Joycon sinistro</string>
|
||||
<string name="right_joycon">Joycon destro</string>
|
||||
<string name="gamecube_controller">Controller GameCube</string>
|
||||
<string name="invert_axis">Inverti asse</string>
|
||||
<string name="invert_button">Inverti pulsante</string>
|
||||
<string name="toggle_button">Premi il pulsante</string>
|
||||
<string name="turbo_button">Modalità Turbo</string>
|
||||
<string name="set_threshold">Imposta soglia</string>
|
||||
<string name="toggle_axis">Cancella asse</string>
|
||||
<string name="connected">Connesso</string>
|
||||
<string name="vibration">Vibrazione</string>
|
||||
<string name="profile">Profilo</string>
|
||||
<string name="use_global_input_configuration">Usa la configurazione di input globale</string>
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">Predefinito</string>
|
||||
<string name="ini_saved">Impostazioni salvate</string>
|
||||
@ -231,6 +292,7 @@
|
||||
<string name="shutting_down">Spegnimento...</string>
|
||||
<string name="reset_setting_confirmation">Vuoi ripristinare queste impostazioni al loro valore originale?</string>
|
||||
<string name="reset_to_default">Riportare alle impostazioni originali</string>
|
||||
<string name="reset_to_default_description">Reimposta tutte le impostazione avanzate</string>
|
||||
<string name="reset_all_settings">Resettare tutte le impostazioni?</string>
|
||||
<string name="reset_all_settings_description">Le impostazione avanzate verranno completamente reimpostate. Questa operazione è IRREVERSIBILE.</string>
|
||||
<string name="settings_reset">Reimposta le impostazioni</string>
|
||||
@ -246,9 +308,19 @@
|
||||
<string name="cancelling">Cancellazione</string>
|
||||
<string name="install">Installa</string>
|
||||
<string name="delete">Elimina</string>
|
||||
<string name="edit">Modifica</string>
|
||||
<string name="export_success">Esportazione completata</string>
|
||||
<string name="start">Start</string>
|
||||
<string name="clear">Cancella</string>
|
||||
<string name="global">Globale</string>
|
||||
<string name="custom">Personalizzato</string>
|
||||
<string name="notice">Avviso</string>
|
||||
<string name="import_complete">Importazione completata</string>
|
||||
<string name="more_options">Più opzioni</string>
|
||||
<string name="use_global_setting">Usa l\'impostazione globale</string>
|
||||
<string name="operation_completed_successfully">Operazione completata con successo</string>
|
||||
<string name="save">Salva</string>
|
||||
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">Seleziona il driver della GPU</string>
|
||||
<string name="select_gpu_driver_title">Vuoi sostituire il driver della tua GPU attuale?</string>
|
||||
@ -264,16 +336,32 @@
|
||||
<string name="preferences_settings">Impostazioni</string>
|
||||
<string name="preferences_general">Generali</string>
|
||||
<string name="preferences_system">Sistema</string>
|
||||
<string name="preferences_system_description">Modalità Fissa, Regione, Lingua</string>
|
||||
<string name="preferences_graphics">Grafica</string>
|
||||
<string name="preferences_graphics_description">Livello di Accuratezza, Risoluzione, Shader Cache</string>
|
||||
<string name="preferences_audio">Audio</string>
|
||||
<string name="preferences_audio_description">Motore di Output audio e volume</string>
|
||||
<string name="preferences_controls">Comandi</string>
|
||||
<string name="preferences_theme">Tema e colori</string>
|
||||
<string name="preferences_debug">Debug</string>
|
||||
<string name="preferences_debug_description">Debugging CPU/GPU, API grafiche, fastmem</string>
|
||||
|
||||
<!-- Game properties -->
|
||||
<string name="info">Info</string>
|
||||
<string name="info_description">ID Programma, Sviluppatore, Versione</string>
|
||||
<string name="per_game_settings_description">Modifica le impostazioni solo per questo gioco</string>
|
||||
<string name="launch_options">Avvia configurazione</string>
|
||||
<string name="path">Percorso</string>
|
||||
<string name="program_id">Id Programma</string>
|
||||
<string name="developer">Sviluppatore</string>
|
||||
<string name="version">Versione</string>
|
||||
<string name="add_ons">Add-on</string>
|
||||
<string name="clear_shader_cache">Rimuove la cache delle Shader</string>
|
||||
<string name="clear_shader_cache_description">Cancella tutte le shader compilate su questo gioco fino ad ora</string>
|
||||
<string name="save_data_description">Gestisci i salvataggi di questo gioco</string>
|
||||
<string name="verify_success">Verifica dell\'integrità completata con successo!</string>
|
||||
<string name="verify_failure">Verifica dell\'integrità fallita!</string>
|
||||
<string name="verify_no_result_description">L\'integrità dei contenuti non è stata validata</string>
|
||||
<!-- ROM loading errors -->
|
||||
<string name="loader_error_encrypted">La tua ROM è criptata</string>
|
||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Segui la nostra guida per fare il <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">dump delle tue cartucce di gioco</a>oppure <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">dei titoli già installati</a>.]]></string>
|
||||
@ -302,7 +390,6 @@
|
||||
<string name="emulation_unpause">Riprendi l\'emulazione</string>
|
||||
<string name="emulation_input_overlay">Opzioni overlay</string>
|
||||
<string name="touchscreen">Touchscreen</string>
|
||||
|
||||
<string name="load_settings">Carico le impostazioni...</string>
|
||||
|
||||
<!-- Software keyboard -->
|
||||
@ -316,7 +403,7 @@
|
||||
<string name="system_archive_general">Un archivio di sistema</string>
|
||||
<string name="save_load_error">Errore di salvataggio/caricamento</string>
|
||||
<string name="fatal_error">Errore Fatale</string>
|
||||
<string name="fatal_error_message">Un errore fatale è accaduto. Controlla i log per i dettagli.\nContinuare ad emulare potrebbe portare bug o causare crash.</string>
|
||||
<string name="fatal_error_message">Errore Fatale. Controlla i log per i dettagli.\nContinuare l\'emulazione potrebbe portare a glitch grafici o causare crash.</string>
|
||||
<string name="performance_warning">Disattivare questa impostazione può ridurre significativamente le performance di emulazione! Per una migliore esperienza, è consigliato lasciare questa impostazione attivata.</string>
|
||||
<string name="device_memory_inadequate">RAM Totale:%1$s\nRaccomandati: %2$s</string>
|
||||
<string name="memory_formatted">%1$s%2$s</string>
|
||||
|
@ -83,7 +83,9 @@
|
||||
<string name="notification_no_directory_link_description">ファイルマネージャのサイドパネルでユーザーフォルダを手動で探してください。</string>
|
||||
<string name="manage_save_data">セーブデータ</string>
|
||||
<string name="manage_save_data_description">セーブデータが見つかりました。操作を選択してください。</string>
|
||||
<string name="import_save_warning">セーブデータをインポート</string>
|
||||
<string name="import_export_saves_description">セーブファイルをインポート/エクスポート</string>
|
||||
<string name="save_files_importing">セーブファイルをインポート中...</string>
|
||||
<string name="save_file_imported_success">インポートが完了しました</string>
|
||||
<string name="save_file_invalid_zip_structure">セーブデータのディレクトリ構造が無効</string>
|
||||
<string name="save_file_invalid_zip_structure_description">最初のサブフォルダ名は、ゲームのタイトルIDである必要があります。</string>
|
||||
@ -109,6 +111,8 @@
|
||||
<string name="custom_driver_not_supported">カスタムドライバはサポートされていません</string>
|
||||
<string name="manage_yuzu_data">yuzu データを管理</string>
|
||||
<string name="share_save_file">セーブファイルを共有</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<string name="applets_error_firmware">ファームウェア未インストール</string>
|
||||
<string name="album_applet">アルバム</string>
|
||||
<string name="cabinet_nickname_and_owner">ニックネームと所有者の設定</string>
|
||||
@ -151,8 +155,8 @@
|
||||
<string name="frame_limit_enable_description">エミュレーション速度を指定した割合に制限します。</string>
|
||||
<string name="frame_limit_slider">エミュレーション速度</string>
|
||||
<string name="frame_limit_slider_description">エミュレーション速度を制限するパーセンテージを指定します。100%は通常速度です。値の増減で速度も増減します。</string>
|
||||
<string name="cpu_backend">CPUバックエンド</string>
|
||||
<string name="cpu_accuracy">CPU精度</string>
|
||||
<!-- System settings strings -->
|
||||
<string name="use_docked_mode">TVモード</string>
|
||||
<string name="use_docked_mode_description">高解像度、低パフォーマンス。無効時には携帯モードが使用されます(低解像度、高パフォーマンス)。</string>
|
||||
<string name="emulated_region">地域</string>
|
||||
@ -179,6 +183,9 @@
|
||||
<string name="renderer_reactive_flushing_description">一部のゲームにおいて、パフォーマンスを犠牲にしながらも、レンダリング精度を向上させます。</string>
|
||||
<string name="use_disk_shader_cache">ディスクシェーダーキャッシュ</string>
|
||||
<string name="use_disk_shader_cache_description">生成したシェーダーを端末に保存して読み込み、コマ落ちを軽減します。</string>
|
||||
<string name="anisotropic_filtering">異方性フィルタリング</string>
|
||||
<string name="anisotropic_filtering_description">斜めから見たときのテクスチャーの質感を向上させます</string>
|
||||
|
||||
<!-- Debug settings strings -->
|
||||
<string name="cpu">CPU</string>
|
||||
<string name="cpu_debug_mode">CPUデバッグ</string>
|
||||
@ -193,6 +200,47 @@
|
||||
<string name="audio_volume">音量</string>
|
||||
<string name="audio_volume_description">オーディオ出力の音量を指定します</string>
|
||||
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">B</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">+</string>
|
||||
<string name="button_minus">-</string>
|
||||
<string name="button_home">HOMEボタン</string>
|
||||
<string name="button_capture">キャプチャ</string>
|
||||
<string name="dpad">方向ボタン</string>
|
||||
<string name="up">上</string>
|
||||
<string name="down">下</string>
|
||||
<string name="left">左</string>
|
||||
<string name="right">右</string>
|
||||
<string name="left_stick">Lスティック</string>
|
||||
<string name="right_stick">Rスティック</string>
|
||||
<string name="c_stick">Cスティック</string>
|
||||
<string name="pressed">押下</string>
|
||||
<string name="range">範囲</string>
|
||||
<string name="deadzone">遊び</string>
|
||||
<string name="modifier">変更</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">無効</string>
|
||||
<string name="unknown">不明</string>
|
||||
<string name="pro_controller">Proコントローラー</string>
|
||||
<string name="handheld">携帯コントローラー</string>
|
||||
<string name="dual_joycons">Joy-Con(L/R)</string>
|
||||
<string name="left_joycon">Joy-Con(L)</string>
|
||||
<string name="right_joycon">Joy-Con(R)</string>
|
||||
<string name="gamecube_controller">ゲームキューブコントローラー</string>
|
||||
<string name="invert_axis">軸を反転</string>
|
||||
<string name="invert_button">ボタンを反転</string>
|
||||
<string name="turbo_button">ターボボタン</string>
|
||||
<string name="set_threshold">しきい値を設定</string>
|
||||
<string name="connected">接続の状態</string>
|
||||
<string name="vibration">振動</string>
|
||||
<string name="profile">プロファイル</string>
|
||||
<string name="use_global_input_configuration">グローバル入力設定を使用</string>
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">デフォルト</string>
|
||||
<string name="ini_saved">設定を保存しました</string>
|
||||
@ -220,6 +268,8 @@
|
||||
<string name="start">開始</string>
|
||||
<string name="clear">クリア</string>
|
||||
<string name="custom">カスタム</string>
|
||||
<string name="save">保存</string>
|
||||
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">GPUドライバを選択</string>
|
||||
<string name="select_gpu_driver_title">現在のGPUドライバを置き換えますか?</string>
|
||||
@ -235,6 +285,7 @@
|
||||
<string name="preferences_system">システム</string>
|
||||
<string name="preferences_graphics">グラフィック</string>
|
||||
<string name="preferences_audio">サウンド</string>
|
||||
<string name="preferences_controls">操作</string>
|
||||
<string name="preferences_theme">テーマと色</string>
|
||||
<string name="preferences_debug">デバッグ</string>
|
||||
<!-- Game properties -->
|
||||
@ -243,6 +294,9 @@
|
||||
<string name="developer">開発元</string>
|
||||
<string name="version">バージョン</string>
|
||||
<string name="add_ons">アドオン</string>
|
||||
<string name="invalid_directory">無効なディレクトリ</string>
|
||||
<string name="verify_success">整合性の確認に成功しました!</string>
|
||||
<string name="verify_failure">整合性の確認に失敗しました!</string>
|
||||
<!-- ROM loading errors -->
|
||||
<string name="loader_error_encrypted">ROMが暗号化されています</string>
|
||||
<string name="loader_error_encrypted_keys_description"><![CDATA[ゲームの復号化に必要な <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> ファイルがインストールされていることを確認してください。]]></string>
|
||||
@ -270,7 +324,6 @@
|
||||
<string name="emulation_unpause">再開</string>
|
||||
<string name="emulation_input_overlay">表示オプション</string>
|
||||
<string name="touchscreen">タッチスクリーン</string>
|
||||
|
||||
<string name="load_settings">設定をロード中…</string>
|
||||
|
||||
<!-- Software keyboard -->
|
||||
@ -356,6 +409,10 @@
|
||||
<string name="ratio_force_sixteen_ten">強制 16:10</string>
|
||||
<string name="ratio_stretch">画面に合わせる</string>
|
||||
|
||||
<!-- CPU Backend -->
|
||||
<string name="cpu_backend_dynarmic">Dynarmic (低速)</string>
|
||||
<string name="cpu_backend_nce">ネイティブコード実行 (NCE)</string>
|
||||
|
||||
<!-- CPU Accuracy -->
|
||||
<string name="cpu_accuracy_accurate">正確</string>
|
||||
<string name="cpu_accuracy_unsafe">不安定</string>
|
||||
@ -383,6 +440,8 @@
|
||||
<string name="theme_mode_light">ライト</string>
|
||||
<string name="theme_mode_dark">ダーク</string>
|
||||
|
||||
<!-- Audio output engines -->
|
||||
<string name="oboe">oboe</string>
|
||||
<string name="cubeb">cubeb</string>
|
||||
|
||||
<!-- Anisotropic filtering options -->
|
||||
|
@ -133,6 +133,11 @@
|
||||
<item quantity="other">%d개의 세이브를 가져왔습니다.</item>
|
||||
</plurals>
|
||||
<string name="no_save_data_found">세이브 데이터를 찾을 수 없음</string>
|
||||
<string name="verify_installed_content">설치된 콘텐츠 인증</string>
|
||||
<string name="verify_installed_content_description">전체 설치된 콘텐츠의 손상을 확인합니다.</string>
|
||||
<string name="keys_missing">암호화 키를 찾을 수 없음</string>
|
||||
<string name="keys_missing_description">펌웨어 및 패키지 게임을 해독할 수 없음</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<!-- Applet launcher strings -->
|
||||
<string name="applets">애플릿 런처</string>
|
||||
@ -198,7 +203,6 @@
|
||||
<string name="cpu_accuracy">CPU 정확도</string>
|
||||
<string name="value_with_units">%1$s%2$s</string>
|
||||
|
||||
<!-- System settings strings -->
|
||||
<string name="use_docked_mode">독 모드</string>
|
||||
<string name="use_docked_mode_description">해상도를 높이며 성능이 저하됩니다. 비활성화시 휴대 모드가 사용되며 해상도는 낮아지고 성능은 향상됩니다.</string>
|
||||
<string name="emulated_region">에뮬레이트 지역</string>
|
||||
@ -243,6 +247,48 @@
|
||||
<string name="audio_volume">볼륨</string>
|
||||
<string name="audio_volume_description">오디오 출력의 볼륨을 지정합니다.</string>
|
||||
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">B</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">+</string>
|
||||
<string name="button_minus">-</string>
|
||||
<string name="button_home">홈</string>
|
||||
<string name="button_capture">캡쳐</string>
|
||||
<string name="dpad">십자패드</string>
|
||||
<string name="up">위</string>
|
||||
<string name="down">아래</string>
|
||||
<string name="left">왼쪽</string>
|
||||
<string name="right">오른쪽</string>
|
||||
<string name="left_stick">L 스틱</string>
|
||||
<string name="right_stick">R 스틱</string>
|
||||
<string name="c_stick">C-Stick</string>
|
||||
<string name="pressed">누르기</string>
|
||||
<string name="range">범위</string>
|
||||
<string name="deadzone">데드존</string>
|
||||
<string name="modifier">수정자</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">유효하지않음</string>
|
||||
<string name="pro_controller">프로 컨트롤러</string>
|
||||
<string name="handheld">휴대 모드</string>
|
||||
<string name="dual_joycons">듀얼 조이콘</string>
|
||||
<string name="left_joycon">왼쪽 조이콘</string>
|
||||
<string name="right_joycon">오른쪽 조이콘</string>
|
||||
<string name="gamecube_controller">GameCube 컨트롤러</string>
|
||||
<string name="invert_axis">축 뒤집기</string>
|
||||
<string name="invert_button">버튼 반전</string>
|
||||
<string name="toggle_button">토글 버튼</string>
|
||||
<string name="turbo_button">터보 버튼</string>
|
||||
<string name="set_threshold">임계값 설정</string>
|
||||
<string name="toggle_axis">axis 토글</string>
|
||||
<string name="connected">연결됨</string>
|
||||
<string name="vibration">진동</string>
|
||||
<string name="profile">프로필</string>
|
||||
<string name="use_global_input_configuration">글로벌 입력 구성 사용</string>
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">기본값</string>
|
||||
<string name="ini_saved">설정이 저장되었습니다.</string>
|
||||
@ -272,13 +318,15 @@
|
||||
<string name="edit">편집</string>
|
||||
<string name="export_success">데이터를 내보냈습니다.</string>
|
||||
<string name="start">시작</string>
|
||||
<string name="clear">초기화</string>
|
||||
<string name="clear">비우기</string>
|
||||
<string name="global">글로벌</string>
|
||||
<string name="custom">커스텀</string>
|
||||
<string name="notice">알림</string>
|
||||
<string name="import_complete">가져오기 완료</string>
|
||||
<string name="more_options">추가 옵션</string>
|
||||
<string name="use_global_setting">글로벌 설정 사용</string>
|
||||
<string name="operation_completed_successfully">작업이 완료되었습니다.</string>
|
||||
<string name="save">저장</string>
|
||||
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">GPU 드라이버 선택</string>
|
||||
@ -300,6 +348,7 @@
|
||||
<string name="preferences_graphics_description">정확도 수준, 해상도, 셰이더 캐시</string>
|
||||
<string name="preferences_audio">오디오</string>
|
||||
<string name="preferences_audio_description">출력 엔진, 불륨</string>
|
||||
<string name="preferences_controls">조작</string>
|
||||
<string name="preferences_theme">테마 및 색상</string>
|
||||
<string name="preferences_debug">디버그</string>
|
||||
<string name="preferences_debug_description">CPU/GPU 디버깅, 그래픽 API, Fastmem</string>
|
||||
@ -310,7 +359,7 @@
|
||||
<string name="per_game_settings">게임별 설정</string>
|
||||
<string name="per_game_settings_description">현재 게임에 적용되는 설정을 편집합니다.</string>
|
||||
<string name="launch_options">실행 구성</string>
|
||||
<string name="path">주소</string>
|
||||
<string name="path">경로</string>
|
||||
<string name="program_id">프로그램 ID</string>
|
||||
<string name="developer">개발자</string>
|
||||
<string name="version">버전</string>
|
||||
@ -343,6 +392,14 @@
|
||||
<string name="content_install_notice_description">선택한 콘텐츠가 현재 게임과 일치하지 않습니다.\n무시하고 설치하시겠습니까?</string>
|
||||
<string name="confirm_uninstall">제거 확인</string>
|
||||
<string name="confirm_uninstall_description">이 애드온을 제거하시겠습니까?</string>
|
||||
<string name="verify_integrity">무결성 인증</string>
|
||||
<string name="verifying">인증 중...</string>
|
||||
<string name="verify_success">무결성 인증에 성공했습니다.</string>
|
||||
<string name="verify_failure">무결성 인증에 실패했습니다.</string>
|
||||
<string name="verify_failure_description">파일 콘텐츠가 손상되었을 수 있습니다.</string>
|
||||
<string name="verify_no_result">무결성 인증을 진행할 수 없습니다.</string>
|
||||
<string name="verify_no_result_description">파일 콘텐츠의 유효성 검사가 진행되지 않았습니다.</string>
|
||||
<string name="verification_failed_for">검증 실패 파일 목록:\n%1$s</string>
|
||||
|
||||
<!-- ROM loading errors -->
|
||||
<string name="loader_error_encrypted">롬 파일이 암호화되어있음</string>
|
||||
@ -372,6 +429,8 @@
|
||||
<string name="emulation_unpause">에뮬레이션 일시 중지 해제</string>
|
||||
<string name="emulation_input_overlay">화면 오버레이 설정</string>
|
||||
<string name="touchscreen">터치 스크린</string>
|
||||
<string name="lock_drawer">에뮬레이터 메뉴 잠금</string>
|
||||
<string name="unlock_drawer">에뮬레이터 메뉴 잠금 해제</string>
|
||||
|
||||
<string name="load_settings">설정 불러오는 중...</string>
|
||||
|
||||
@ -406,7 +465,7 @@
|
||||
<string name="memory_byte_shorthand">B</string>
|
||||
<string name="memory_kilobyte">KB</string>
|
||||
<string name="memory_megabyte">MB</string>
|
||||
<string name="memory_gigabyte">영국 하계 표준시(GB)</string>
|
||||
<string name="memory_gigabyte">GB</string>
|
||||
<string name="memory_terabyte">TB</string>
|
||||
<string name="memory_petabyte">PB</string>
|
||||
<string name="memory_exabyte">EB</string>
|
||||
@ -449,12 +508,12 @@
|
||||
|
||||
<!-- Screen Layouts -->
|
||||
<string name="screen_layout_auto">자동</string>
|
||||
<string name="screen_layout_sensor_landscape">가로 고정 (방향 감지)</string>
|
||||
<string name="screen_layout_sensor_landscape">가로 (방향 감지)</string>
|
||||
<string name="screen_layout_landscape">가로</string>
|
||||
<string name="screen_layout_reverse_landscape">가로 고정 (역방향 고정)</string>
|
||||
<string name="screen_layout_sensor_portrait">세로 고정 (방향 감지)</string>
|
||||
<string name="screen_layout_reverse_landscape">가로 (역방향)</string>
|
||||
<string name="screen_layout_sensor_portrait">세로 (방향 감지)</string>
|
||||
<string name="screen_layout_portrait">세로</string>
|
||||
<string name="screen_layout_reverse_portrait">세로 고정 (역방향 고정)</string>
|
||||
<string name="screen_layout_reverse_portrait">세로 (역방향)</string>
|
||||
|
||||
<!-- Aspect Ratios -->
|
||||
<string name="ratio_default">기본 (16:9)</string>
|
||||
|
@ -95,6 +95,8 @@
|
||||
<string name="install_game_content">Installer spillinnhold</string>
|
||||
<string name="install_game_content_description">Installer spilloppdateringer eller DLC</string>
|
||||
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<!-- About screen strings -->
|
||||
<string name="gaia_is_not_real">Gaia er ikke ekte</string>
|
||||
<string name="copied_to_clipboard">Kopiert til utklippstavlen</string>
|
||||
@ -128,7 +130,6 @@
|
||||
<string name="frame_limit_slider">Hastighetsbegrensning i prosent</string>
|
||||
<string name="frame_limit_slider_description">Angir prosentandelen som skal begrense emuleringshastigheten. 100 % er normal hastighet. Høyere eller lavere verdier vil øke eller redusere hastighetsgrensen.</string>
|
||||
<string name="cpu_accuracy">CPU-nøyaktighet</string>
|
||||
<!-- System settings strings -->
|
||||
<string name="use_docked_mode">Dokket modus</string>
|
||||
<string name="use_docked_mode_description">Øker oppløsningen, men reduserer ytelsen. Håndholdt modus brukes når den er deaktivert, noe som reduserer oppløsningen og øker ytelsen.</string>
|
||||
<string name="emulated_region">Emulert region</string>
|
||||
@ -162,6 +163,48 @@
|
||||
<string name="audio_volume">Volum</string>
|
||||
<string name="audio_volume_description">Angir volumet på lydutgangen.</string>
|
||||
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">B</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">Pluss</string>
|
||||
<string name="button_minus">Minus</string>
|
||||
<string name="button_home">Hjem</string>
|
||||
<string name="button_capture">Opptak</string>
|
||||
<string name="dpad">D-Pad</string>
|
||||
<string name="up">Opp</string>
|
||||
<string name="down">Ned</string>
|
||||
<string name="left">Venstre</string>
|
||||
<string name="right">Høyre</string>
|
||||
<string name="left_stick">Venstre spak</string>
|
||||
<string name="right_stick">Høyre spak</string>
|
||||
<string name="c_stick">C-stikke</string>
|
||||
<string name="pressed">Trykket</string>
|
||||
<string name="range">Område</string>
|
||||
<string name="deadzone">Dødsone</string>
|
||||
<string name="modifier">Modifikator</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">Ugyldig</string>
|
||||
<string name="pro_controller">Pro-Kontroller</string>
|
||||
<string name="handheld">Håndholdt</string>
|
||||
<string name="dual_joycons">Doble Joycons</string>
|
||||
<string name="left_joycon">Venstre Joycon</string>
|
||||
<string name="right_joycon">Høyre Joycon</string>
|
||||
<string name="gamecube_controller">GameCube-kontroller</string>
|
||||
<string name="invert_axis">Inverter akse</string>
|
||||
<string name="invert_button">Inverter knapp</string>
|
||||
<string name="toggle_button">Veksle knapp</string>
|
||||
<string name="turbo_button">Turbo-Knapp</string>
|
||||
<string name="set_threshold">Set grense</string>
|
||||
<string name="toggle_axis">veksle akse</string>
|
||||
<string name="connected">Tilkoblet</string>
|
||||
<string name="vibration">Vibrasjon</string>
|
||||
<string name="profile">Profil</string>
|
||||
<string name="use_global_input_configuration">Bruk global inndatakonfigurasjon</string>
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">Standard</string>
|
||||
<string name="ini_saved">Lagrede innstillinger</string>
|
||||
@ -184,6 +227,8 @@
|
||||
<string name="delete">Slett</string>
|
||||
<string name="start">Start</string>
|
||||
<string name="clear">Fjern</string>
|
||||
<string name="save">Lagre</string>
|
||||
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">Velg GPU-driver</string>
|
||||
<string name="select_gpu_driver_title">Ønsker du å bytte ut din nåværende GPU-driver?</string>
|
||||
@ -199,6 +244,7 @@
|
||||
<string name="preferences_system">System</string>
|
||||
<string name="preferences_graphics">Grafikk</string>
|
||||
<string name="preferences_audio">Lyd</string>
|
||||
<string name="preferences_controls">Kontrollere</string>
|
||||
<string name="preferences_theme">Tema og farge</string>
|
||||
<string name="preferences_debug">Feilsøk</string>
|
||||
<!-- Game properties -->
|
||||
@ -207,6 +253,8 @@
|
||||
<string name="developer">Utvikler</string>
|
||||
<string name="version">Versjon</string>
|
||||
<string name="add_ons">Tilleggsprogrammer</string>
|
||||
<string name="verify_success">Integritetsverifisering vellykket!</string>
|
||||
<string name="verify_failure">Integritetsverifisering mislyktes!</string>
|
||||
<!-- ROM loading errors -->
|
||||
<string name="loader_error_encrypted">ROM-en din er kryptert</string>
|
||||
<string name="loader_error_encrypted_keys_description"><![CDATA[Vennligst sørg for at <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> filen er installert slik at spillene kan dekrypteres.]]></string>
|
||||
@ -234,7 +282,6 @@
|
||||
<string name="emulation_unpause">Ta emuleringen ut av pause</string>
|
||||
<string name="emulation_input_overlay">Overlay-alternativer</string>
|
||||
<string name="touchscreen">Touch-skjerm</string>
|
||||
|
||||
<string name="load_settings">Laster inn innstillinger...</string>
|
||||
|
||||
<!-- Software keyboard -->
|
||||
|
@ -95,6 +95,8 @@
|
||||
<string name="install_game_content">Zainstaluj zawartość gry</string>
|
||||
<string name="install_game_content_description">Zainstaluj aktualizację gry lub dodatek DLC</string>
|
||||
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<!-- About screen strings -->
|
||||
<string name="gaia_is_not_real">Gaia isn\'t real</string>
|
||||
<string name="copied_to_clipboard">Skopiowano do schowka</string>
|
||||
@ -128,7 +130,6 @@
|
||||
<string name="frame_limit_slider">Procentowy limit szybkości emulacji</string>
|
||||
<string name="frame_limit_slider_description">Określa limit szybkości emulacji gier. Domyślna wartość 100% oznacza normalną szybkość z jaką działa gra. Wartości niższe lub wyższe zmniejszą lub zwiększą limit szybkości.</string>
|
||||
<string name="cpu_accuracy">Dokładność procesora CPU</string>
|
||||
<!-- System settings strings -->
|
||||
<string name="use_docked_mode">Tryb zadokowany</string>
|
||||
<string name="use_docked_mode_description">Zwiększa rozdzielczość kosztem wydajności. Kiedy wyłączone, używany jest tryb Handheld, który obniża rozdzielczość i dzięki temu zwiększa wydajność.</string>
|
||||
<string name="emulated_region">Region emulacji</string>
|
||||
@ -162,6 +163,48 @@
|
||||
<string name="audio_volume">Głośność</string>
|
||||
<string name="audio_volume_description">Ustala poziom głośności wyjścia dźwięku.</string>
|
||||
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">B</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">Plus</string>
|
||||
<string name="button_minus">Minus</string>
|
||||
<string name="button_home">Home</string>
|
||||
<string name="button_capture">Zrzut ekranu</string>
|
||||
<string name="dpad">D-Pad</string>
|
||||
<string name="up">Góra</string>
|
||||
<string name="down">Dół</string>
|
||||
<string name="left">Lewo</string>
|
||||
<string name="right">Prawo</string>
|
||||
<string name="left_stick">Lewa gałka</string>
|
||||
<string name="right_stick">Prawa gałka</string>
|
||||
<string name="c_stick">C-gałka</string>
|
||||
<string name="pressed">Naciśnięty</string>
|
||||
<string name="range">Zasięg</string>
|
||||
<string name="modifier">Modyfikator</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">Nieprawidłowe</string>
|
||||
<string name="unknown">Nieznany</string>
|
||||
<string name="pro_controller">Pro kontroler</string>
|
||||
<string name="handheld">Przenośnie</string>
|
||||
<string name="dual_joycons">Para Joyconów</string>
|
||||
<string name="left_joycon">Lewy Joycon</string>
|
||||
<string name="right_joycon">Prawy Joycon</string>
|
||||
<string name="gamecube_controller">Kontroler GameCube</string>
|
||||
<string name="invert_axis">Odwróć oś</string>
|
||||
<string name="invert_button">Odwróć przycisk</string>
|
||||
<string name="toggle_button">Przycisk Toggle</string>
|
||||
<string name="turbo_button">Przycisk TURBO</string>
|
||||
<string name="set_threshold">Ustaw próg</string>
|
||||
<string name="toggle_axis">Przełącz oś</string>
|
||||
<string name="connected">Połączono</string>
|
||||
<string name="vibration">Wibracje</string>
|
||||
<string name="profile">Profil</string>
|
||||
<string name="use_global_input_configuration">Użyj globalnej konfiguracji wejściowej</string>
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">Domyślne</string>
|
||||
<string name="ini_saved">Ustawienia zapisane</string>
|
||||
@ -184,6 +227,8 @@
|
||||
<string name="start">Start</string>
|
||||
<string name="clear">Wyczyść</string>
|
||||
<string name="custom">Losowy</string>
|
||||
<string name="save">Zapisz</string>
|
||||
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">Wybierz sterownik GPU </string>
|
||||
<string name="select_gpu_driver_title">Chcesz zastąpić obecny sterownik układu graficznego?</string>
|
||||
@ -199,6 +244,7 @@
|
||||
<string name="preferences_system">System</string>
|
||||
<string name="preferences_graphics">Grafika</string>
|
||||
<string name="preferences_audio">Dźwięk</string>
|
||||
<string name="preferences_controls">Sterowanie</string>
|
||||
<string name="preferences_theme">Motyw i kolor</string>
|
||||
<string name="preferences_debug">Debug</string>
|
||||
<!-- Game properties -->
|
||||
@ -234,7 +280,6 @@
|
||||
<string name="emulation_unpause">Wznów emulację</string>
|
||||
<string name="emulation_input_overlay">Opcje nakładki</string>
|
||||
<string name="touchscreen">Ekran dotykowy</string>
|
||||
|
||||
<string name="load_settings">Wczytuję ustawienia...</string>
|
||||
|
||||
<!-- Software keyboard -->
|
||||
|
@ -22,16 +22,16 @@
|
||||
<string name="back">Voltar</string>
|
||||
<string name="add_games">Adicionar Jogos</string>
|
||||
<string name="add_games_description">Selecione sua pasta de Jogos</string>
|
||||
<string name="step_complete">Completo!</string>
|
||||
<string name="step_complete">Concluído!</string>
|
||||
|
||||
<!-- Home strings -->
|
||||
<string name="home_games">Jogos</string>
|
||||
<string name="home_search">Pesquisar</string>
|
||||
<string name="home_settings">Configurações</string>
|
||||
<string name="empty_gamelist">Não foram encontrados jogos ou a pasta de Jogos ainda não foi definida. </string>
|
||||
<string name="search_and_filter_games">Procura e filtra jogos.</string>
|
||||
<string name="select_games_folder">Seleciona a pasta de jogos.</string>
|
||||
<string name="manage_game_folders">Gerencie as pastas de jogos</string>
|
||||
<string name="search_and_filter_games">Procura e filtra jogos</string>
|
||||
<string name="select_games_folder">Seleciona a pasta de jogos</string>
|
||||
<string name="manage_game_folders">Gerenciar pastas de jogos</string>
|
||||
<string name="select_games_folder_description">Permite que o Yuzu preencha a lista de jogos</string>
|
||||
<string name="add_games_warning">Ignorar a seleção da pasta de jogos?</string>
|
||||
<string name="add_games_warning_description">Os jogos não serão exibidos na lista de jogos se uma pasta não estiver selecionada.</string>
|
||||
@ -40,7 +40,7 @@
|
||||
<string name="search_settings">Procurar nas configurações</string>
|
||||
<string name="games_dir_selected">Pasta de jogos selecionada</string>
|
||||
<string name="install_prod_keys">Instalar prod.keys</string>
|
||||
<string name="install_prod_keys_description">Necessário para desencriptar jogos comerciais</string>
|
||||
<string name="install_prod_keys_description">Necessárias para desencriptar jogos comerciais</string>
|
||||
<string name="install_prod_keys_warning">Ignorar a adição de chaves?</string>
|
||||
<string name="install_prod_keys_warning_description">São necessárias chaves válidas para emular jogos comerciais. Somente aplicativos homebrew funcionarão se você continuar.</string>
|
||||
<string name="install_prod_keys_warning_help">https://yuzu-emu.org/help/quickstart/#guide-introduction</string>
|
||||
@ -48,16 +48,16 @@
|
||||
<string name="notifications_description">Conceda a permissão de notificação com o botão abaixo.</string>
|
||||
<string name="give_permission">Conceder permissão</string>
|
||||
<string name="notification_warning">Ignorar a concessão da permissão de notificação?</string>
|
||||
<string name="notification_warning_description">Yuzu não conseguirá te notificar de informações importantes. </string>
|
||||
<string name="notification_warning_description">O Yuzu não irá te notificar de informações importantes. </string>
|
||||
<string name="permission_denied">Permissão negada</string>
|
||||
<string name="permission_denied_description">Você negou essa permissão muitas vezes e agora precisa concedê-la manualmente nas configurações do sistema.</string>
|
||||
<string name="about">Sobre</string>
|
||||
<string name="about_description">Versão de compilação, créditos e mais</string>
|
||||
<string name="about_description">Versão da compilação, créditos e mais</string>
|
||||
<string name="warning_help">Ajuda</string>
|
||||
<string name="warning_skip">Ignorar</string>
|
||||
<string name="warning_cancel">Cancelar</string>
|
||||
<string name="install_amiibo_keys">Instalar chaves Amiibo</string>
|
||||
<string name="install_amiibo_keys_description">Necessário para usar Amiibos em um jogo</string>
|
||||
<string name="install_amiibo_keys_description">Necessárias para usar Amiibos em um jogo</string>
|
||||
<string name="invalid_keys_file">Arquivo de chaves selecionado inválido</string>
|
||||
<string name="install_keys_success">Chaves instaladas com sucesso</string>
|
||||
<string name="reading_keys_failure">Erro ao ler chaves de encriptação</string>
|
||||
@ -67,8 +67,8 @@
|
||||
<string name="dumping_keys_quickstart_link">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
<string name="install_keys_failure_description">O arquivo selecionado está incorreto ou corrompido. Por favor extraia suas chaves novamente.</string>
|
||||
<string name="gpu_driver_manager">Gerenciador de driver de GPU</string>
|
||||
<string name="install_gpu_driver">Instala driver para GPU</string>
|
||||
<string name="install_gpu_driver_description">Instala drivers alternativos para desempenho ou precisão potencialmente melhores</string>
|
||||
<string name="install_gpu_driver">Instalar driver para GPU</string>
|
||||
<string name="install_gpu_driver_description">Instale drivers alternativos para desempenho ou precisão potencialmente melhores</string>
|
||||
<string name="advanced_settings">Configurações avançadas</string>
|
||||
<string name="advanced_settings_game">Configurações avançadas: %1$s</string>
|
||||
<string name="settings_description">Configure opções do emulador</string>
|
||||
@ -81,17 +81,17 @@
|
||||
<string name="theme_and_color_description">Altere a aparência do aplicativo</string>
|
||||
<string name="no_file_manager">Nenhum gerenciador de arquivos encontrado</string>
|
||||
<string name="notification_no_directory_link">Não foi possível abrir a pasta do Yuzu</string>
|
||||
<string name="notification_no_directory_link_description">Por favor localize a pasta do usuário com o painel lateral do gerenciador de arquivos manualmente.</string>
|
||||
<string name="notification_no_directory_link_description">Por favor localize manualmente a pasta do usuário, com o painel lateral do gerenciador de arquivos.</string>
|
||||
<string name="manage_save_data">Gerenciar os dados salvos dos jogos</string>
|
||||
<string name="manage_save_data_description">Dados salvos encontrados. Por favor selecione uma opção abaixo.</string>
|
||||
<string name="import_save_warning">Importar dados salvos</string>
|
||||
<string name="import_save_warning_description">Isso irá sobrescrever seus dados salvos com o arquivo selecionado. Você tem certeza que quer continuar?</string>
|
||||
<string name="import_save_warning_description">Isso irá substituir seus dados salvos com o arquivo selecionado. Você tem certeza que quer continuar?</string>
|
||||
<string name="import_export_saves_description">Importa ou exporta arquivos de dados salvos</string>
|
||||
<string name="save_files_importing">Importando dados salvos...</string>
|
||||
<string name="save_files_exporting">Exportando arquivos de dados salvos...</string>
|
||||
<string name="save_file_imported_success">Importado com sucesso</string>
|
||||
<string name="save_file_invalid_zip_structure">Estrutura de diretório de dados salvos inválida</string>
|
||||
<string name="save_file_invalid_zip_structure_description">O nome da primeira sub pasta deve ser a ID do jogo.</string>
|
||||
<string name="save_file_invalid_zip_structure_description">O nome da primeira subpasta deve ser a ID do jogo.</string>
|
||||
<string name="import_saves">Importar</string>
|
||||
<string name="export_saves">Exportar</string>
|
||||
<string name="install_firmware">Instalar firmware</string>
|
||||
@ -100,11 +100,11 @@
|
||||
<string name="firmware_installed_success">Firmware instalado com sucesso.</string>
|
||||
<string name="firmware_installed_failure">Falha na instalação do firmware</string>
|
||||
<string name="firmware_installed_failure_description">Verifique se os arquivos nca do firmware estão na raiz do arquivo zip e tente novamente.</string>
|
||||
<string name="share_log">Compartilhar registros de debug</string>
|
||||
<string name="share_log">Compartilhar registros de depuração</string>
|
||||
<string name="share_log_description">Compartilhe o arquivo de registro do yuzu para obter ajuda com problemas</string>
|
||||
<string name="share_log_missing">Arquivo de registro não encontrado</string>
|
||||
<string name="install_game_content">Instalar conteúdo de jogos</string>
|
||||
<string name="install_game_content_description">Instala atualizações de jogos ou DLC</string>
|
||||
<string name="install_game_content_description">Instale atualizações de jogos ou DLC</string>
|
||||
<string name="installing_game_content">Instalando conteúdo...</string>
|
||||
<string name="install_game_content_failure">Erro ao instalar arquivo(s) na NAND</string>
|
||||
<string name="install_game_content_failure_description">Por favor certifique-se de que o(s) conteúdo(s) é (são) válido(s) e que as prod.keys estão instaladas.</string>
|
||||
@ -116,9 +116,9 @@
|
||||
<string name="install_game_content_success_overwrite">%1$d substituído com sucesso</string>
|
||||
<string name="install_game_content_help_link">https://yuzu-emu.org/help/quickstart/#dumping-installed-updates</string>
|
||||
<string name="custom_driver_not_supported">Drivers personalizados não suportados</string>
|
||||
<string name="custom_driver_not_supported_description">Carregamento de drivers personalizados não suportado para este dispositivo no momento.\nVerifique esse opção novamente no futuro para ver se o suporte foi adicionado!</string>
|
||||
<string name="custom_driver_not_supported_description">Carregamento de drivers personalizados não suportado para este dispositivo no momento.\nVerifique essa opção novamente no futuro para ver se o suporte foi adicionado!</string>
|
||||
<string name="manage_yuzu_data">Administrar dados do yuzu</string>
|
||||
<string name="manage_yuzu_data_description">Importa/exporta firmware, chaves, dados do usuário e mais!</string>
|
||||
<string name="manage_yuzu_data_description">Importe/exporte firmware, chaves, dados do usuário e mais!</string>
|
||||
<string name="share_save_file">Compartilhar arquivo de dados salvos</string>
|
||||
<string name="export_save_failed">Erro ao exportar arquivo de dados salvos</string>
|
||||
<string name="game_folders">Pastas de jogos</string>
|
||||
@ -137,20 +137,25 @@
|
||||
<item quantity="other">Dados salvos de %d importados com sucesso</item>
|
||||
</plurals>
|
||||
<string name="no_save_data_found">Dados salvos não encontrados</string>
|
||||
<string name="verify_installed_content">Verificar conteúdo instalado</string>
|
||||
<string name="verify_installed_content_description">Verifica todo o conteúdo instalado em busca de dados corrompidos</string>
|
||||
<string name="keys_missing">Faltando chaves de encriptação</string>
|
||||
<string name="keys_missing_description">O firmware e jogos comerciais não poderão ser decriptados</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<!-- Applet launcher strings -->
|
||||
<string name="applets">Launcher de miniaplicativos</string>
|
||||
<string name="applets_description">Inicia miniaplicativos do sistema usando o firmware instalado</string>
|
||||
<string name="applets_description">Execute miniaplicativos do sistema usando o firmware instalado</string>
|
||||
<string name="applets_error_firmware">Firmware não instalado</string>
|
||||
<string name="applets_error_applet">Miniaplicativo não disponível</string>
|
||||
<string name="applets_error_description"><![CDATA[Por favor verifique se o arquivo 1prod.keys1 e o 2firmware2 estão instalados e tente novamente.]]></string>
|
||||
<string name="applets_error_description"><![CDATA[Por favor verifique se o arquivo <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> e o <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-system-firmware\">firmware</a> estão instalados e tente novamente.]]></string>
|
||||
<string name="album_applet">Álbum</string>
|
||||
<string name="album_applet_description">Visualize imagens armazenadas na pasta de capturas de telas do usuário com o visualizador de imagens do sistema</string>
|
||||
<string name="mii_edit_applet">Editor de Mii</string>
|
||||
<string name="mii_edit_applet_description">Visualize e edite os Miis com o editor do sistema</string>
|
||||
<string name="cabinet_applet">Arquivo</string>
|
||||
<string name="cabinet_applet_description">Edite e delete dados armazenados nos amiibos</string>
|
||||
<string name="cabinet_launcher">Inicializador do Arquivo</string>
|
||||
<string name="cabinet_launcher">Launcher do Arquivo</string>
|
||||
<string name="cabinet_nickname_and_owner">Apelido e configurações do proprietário</string>
|
||||
<string name="cabinet_game_data_eraser">Apagar dados de jogo</string>
|
||||
<string name="cabinet_restorer">Restaurar</string>
|
||||
@ -164,9 +169,9 @@
|
||||
<string name="contributors_description">Feito com \u2764 da equipe do Yuzu</string>
|
||||
<string name="contributors_link">https://github.com/yuzu-emu/yuzu/graphs/contributors</string>
|
||||
<string name="licenses_description">Projetos que tornam o yuzu para Android possível</string>
|
||||
<string name="build">Versão</string>
|
||||
<string name="build">Versão da Compilação</string>
|
||||
<string name="user_data">Dados do usuário</string>
|
||||
<string name="user_data_description">Importar/exportar todos os dados do aplicativo.\n\n Ao importar dados de usuário, todos os dados existentes do usuário serão excluídos!</string>
|
||||
<string name="user_data_description">Importe/exporte todos os dados do aplicativo.\n\nAo importar dados de usuário, todos os dados existentes serão excluídos!</string>
|
||||
<string name="exporting_user_data">Exportando dados do usuário...</string>
|
||||
<string name="importing_user_data">Importando dados do usuário...</string>
|
||||
<string name="import_user_data">Importar dados do usuário</string>
|
||||
@ -174,14 +179,14 @@
|
||||
<string name="user_data_export_success">Dados de usuário exportados com sucesso</string>
|
||||
<string name="user_data_import_success">Dados de usuário importados com sucesso</string>
|
||||
<string name="user_data_export_cancelled">Exportação cancelada</string>
|
||||
<string name="user_data_import_failed_description">Verifiqua se as pastas de dados do usuário estão na raiz da pasta zip e contêm um arquivo de configuração em config/config.ini e tente novamente.</string>
|
||||
<string name="user_data_import_failed_description">Verifique se as pastas de dados do usuário estão na raiz da pasta zip, se possuem um arquivo de configuração em config/config.ini e tente novamente.</string>
|
||||
<string name="support_link">https://discord.gg/u77vRWY</string>
|
||||
<string name="website_link">https://yuzu-emu.org/</string>
|
||||
<string name="github_link">https://github.com/yuzu-emu</string>
|
||||
|
||||
<!-- Early access upgrade strings -->
|
||||
<string name="early_access">Acesso Antecipado</string>
|
||||
<string name="get_early_access">Obtenha o Acesso Antecipado</string>
|
||||
<string name="get_early_access">Obter Acesso Antecipado</string>
|
||||
<string name="play_store_link">https://play.google.com/store/apps/details?id=org.yuzu.yuzu_emu.ea</string>
|
||||
<string name="get_early_access_description">Recursos de ponta, acesso antecipado a atualizações e muito mais</string>
|
||||
<string name="early_access_benefits">Benefícios do Acesso Antecipado</string>
|
||||
@ -203,32 +208,35 @@
|
||||
<string name="value_with_units">%1$s%2$s</string>
|
||||
|
||||
<!-- System settings strings -->
|
||||
<string name="device_name">Nome do Dispositivo</string>
|
||||
<string name="use_docked_mode">Modo TV</string>
|
||||
<string name="use_docked_mode_description">Aumenta a resolução, diminuindo o desempenho. O Modo Portátil é utilizado quando estiver desabilitado, diminuindo a resolução e melhorando o desempenho.</string>
|
||||
<string name="emulated_region">Região da emulação</string>
|
||||
<string name="emulated_language">Idioma da emulação</string>
|
||||
<string name="select_rtc_date">Selecione a data do sistema</string>
|
||||
<string name="select_rtc_time">Selecione a hora do sistema</string>
|
||||
<string name="use_custom_rtc">Data e hora personalizada</string>
|
||||
<string name="use_custom_rtc">Data e hora personalizadas</string>
|
||||
<string name="use_custom_rtc_description">Permite a você configurar um relógio em tempo real separado do relógio do seu dispositivo.</string>
|
||||
<string name="set_custom_rtc">Defina um relógio em tempo real personalizado</string>
|
||||
<string name="set_custom_rtc">Definir um relógio em tempo real personalizado</string>
|
||||
|
||||
<!-- Graphics settings strings -->
|
||||
<string name="renderer_accuracy">Nível de precisão</string>
|
||||
<string name="renderer_resolution">Resolução (Portátil/Modo TV)</string>
|
||||
<string name="renderer_vsync">Modo VSync</string>
|
||||
<string name="renderer_vsync">Modo de VSync</string>
|
||||
<string name="renderer_screen_layout">Oriantação</string>
|
||||
<string name="renderer_aspect_ratio">Proporção da tela</string>
|
||||
<string name="renderer_aspect_ratio">Proporção de tela</string>
|
||||
<string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string>
|
||||
<string name="renderer_anti_aliasing">Método de Anti-Serrilhado</string>
|
||||
<string name="fsr_sharpness">Nitidez do FSR</string>
|
||||
<string name="fsr_sharpness_description">Determina a nitidez da imagem ao utilizar o contraste dinâmico do FSR</string>
|
||||
<string name="renderer_anti_aliasing">Método de Anti-aliasing</string>
|
||||
<string name="renderer_force_max_clock">Forçar velocidade máxima (somente Adreno)</string>
|
||||
<string name="renderer_force_max_clock_description">Força o GPU a rodar na velocidade máxima (restrições térmicas serão aplicadas)</string>
|
||||
<string name="renderer_force_max_clock_description">Força a GPU a rodar na velocidade máxima (restrições térmicas serão aplicadas)</string>
|
||||
<string name="renderer_asynchronous_shaders">Usar shaders assíncronos </string>
|
||||
<string name="renderer_asynchronous_shaders_description">Compila os shaders de forma assíncrona, reduzindo travamentos, mas pode apresentar problemas.</string>
|
||||
<string name="renderer_asynchronous_shaders_description">Compila os shaders de forma assíncrona, reduzindo engasgos, mas pode apresentar problemas.</string>
|
||||
<string name="renderer_reactive_flushing">Usar flushing reativo</string>
|
||||
<string name="renderer_reactive_flushing_description">Melhora a precisão da renderização em alguns jogos ao custo de desempenho.</string>
|
||||
<string name="use_disk_shader_cache">Cache de shaders em disco</string>
|
||||
<string name="use_disk_shader_cache_description">Reduz travamentos ao armazenar e carregar localmente os shaders.</string>
|
||||
<string name="use_disk_shader_cache_description">Reduz engasgos ao armazenar e carregar localmente os shaders.</string>
|
||||
<string name="anisotropic_filtering">Filtragem anisotrópica</string>
|
||||
<string name="anisotropic_filtering_description">Melhora a qualidade das texturas quando visualizadas de ângulos oblíquos</string>
|
||||
|
||||
@ -243,9 +251,96 @@
|
||||
<string name="fastmem">Fastmem</string>
|
||||
|
||||
<!-- Audio settings strings -->
|
||||
<string name="audio_output_engine">Engine de reprodução</string>
|
||||
<string name="audio_output_engine">Mecanismo de saída</string>
|
||||
<string name="audio_volume">Volume</string>
|
||||
<string name="audio_volume_description">Especifica o volume de reprodução.</string>
|
||||
<string name="audio_volume_description">Especifica o volume da reprodução do áudio.</string>
|
||||
|
||||
<!-- Input strings -->
|
||||
<string name="buttons">Botões</string>
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">B</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">Mais</string>
|
||||
<string name="button_minus">Menos</string>
|
||||
<string name="button_home">Botão Home</string>
|
||||
<string name="button_capture">Capturar</string>
|
||||
<string name="start_pause">Start/Pause</string>
|
||||
<string name="dpad">Direcional</string>
|
||||
<string name="up">Cima</string>
|
||||
<string name="down">Baixo</string>
|
||||
<string name="left">Esquerda</string>
|
||||
<string name="right">Direita</string>
|
||||
<string name="left_stick">Analógico esquerdo</string>
|
||||
<string name="control_stick">Alavanca de controle</string>
|
||||
<string name="right_stick">Analógico direito</string>
|
||||
<string name="c_stick">C-Stick</string>
|
||||
<string name="pressed">Pressionado</string>
|
||||
<string name="range">Alcance</string>
|
||||
<string name="deadzone">Zona morta</string>
|
||||
<string name="modifier">Modificador</string>
|
||||
<string name="modifier_range">Alcance do modificador</string>
|
||||
<string name="triggers">Gatilhos</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_sl_left">SL Esquerdo</string>
|
||||
<string name="button_sr_left">SR Esquerdo</string>
|
||||
<string name="button_sl_right">SL Direito</string>
|
||||
<string name="button_sr_right">SR Direito</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">Inválido</string>
|
||||
<string name="not_set">Indefinido</string>
|
||||
<string name="unknown">Desconhecido</string>
|
||||
<string name="qualified_hat">%1$s%2$s%3$sDireção %4$s</string>
|
||||
<string name="qualified_button_stick_axis">%1$s%2$s%3$sEixo %4$s</string>
|
||||
<string name="qualified_button">%1$s%2$s%3$sBotão %4$s</string>
|
||||
<string name="qualified_axis">Eixo %1$s%2$s</string>
|
||||
<string name="unused">Não usado</string>
|
||||
<string name="input_prompt">Mova ou aperte um botão</string>
|
||||
<string name="unsupported_input">Tipo de entrada não suportada</string>
|
||||
<string name="input_mapping_filter">Filtro de mapeamento dos controles</string>
|
||||
<string name="input_mapping_filter_description">Selecione um dispositivo para filtrar o mapeamento dos controles</string>
|
||||
<string name="auto_map">Mapear controle automaticamente</string>
|
||||
<string name="auto_map_description">Selecione um controle para iniciar
|
||||
uma tentativa de mapeamento automático</string>
|
||||
<string name="attempted_auto_map">Tentativa de mapeamento automático de %1$s concluída</string>
|
||||
<string name="controller_type">Tipo de controle</string>
|
||||
<string name="pro_controller">Pro Controller</string>
|
||||
<string name="handheld">Portátil</string>
|
||||
<string name="dual_joycons">Par de Joycons</string>
|
||||
<string name="left_joycon">Joycon Esquerdo</string>
|
||||
<string name="right_joycon">Joycon Direito</string>
|
||||
<string name="gamecube_controller">Controle de GameCube</string>
|
||||
<string name="invert_axis">Inverter eixo</string>
|
||||
<string name="invert_button">Inverter botão</string>
|
||||
<string name="toggle_button">Alternar pressionamento do botão</string>
|
||||
<string name="turbo_button">Botão Turbo</string>
|
||||
<string name="set_threshold">Definir limite</string>
|
||||
<string name="toggle_axis">Alternar eixos</string>
|
||||
<string name="connected">Conectado</string>
|
||||
<string name="use_system_vibrator">Usar vibração deste aparelho</string>
|
||||
<string name="input_overlay">Overlay do controle</string>
|
||||
<string name="vibration">Vibração</string>
|
||||
<string name="vibration_strength">Intensidade da vibração</string>
|
||||
<string name="profile">Perfil</string>
|
||||
<string name="create_new_profile">Criar novo perfil</string>
|
||||
<string name="enter_profile_name">Insira o nome do perfil</string>
|
||||
<string name="profile_name_already_exists">O nome do perfil já existe</string>
|
||||
<string name="invalid_profile_name">Nome de perfil inválido</string>
|
||||
<string name="use_global_input_configuration">Usar configuração global de controles</string>
|
||||
<string name="player_num_profile">Perfil do Jogador %d</string>
|
||||
<string name="delete_input_profile">Deletar perfil de controle</string>
|
||||
<string name="delete_input_profile_description">Tem certeza que quer deletar esse perfil? Ele não poderá ser recuperado.</string>
|
||||
<string name="stick_map_description">Mova uma alavanca pra esquerda e depois pra cima ou aperte um botão</string>
|
||||
<string name="button_map_description">Aperte um botão ou mova um gatilho/alavanca</string>
|
||||
<string name="map_dpad_direction">Mapear Direcional para %1$s</string>
|
||||
<string name="map_control">Mapear botão %1$s</string>
|
||||
<string name="failed_to_load_profile">Falha ao carregar perfil</string>
|
||||
<string name="failed_to_save_profile">Falha ao salvar perfil</string>
|
||||
<string name="reset_mapping">Redefinir mapeamento</string>
|
||||
<string name="reset_mapping_description">Você tem certeza que quer redefinir todos os mapeamentos deste controle para os padrões? Isso não pode ser desfeito.</string>
|
||||
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">Padrão</string>
|
||||
@ -256,10 +351,10 @@
|
||||
<string name="loading">Carregando...</string>
|
||||
<string name="shutting_down">Encerrando...</string>
|
||||
<string name="reset_setting_confirmation">Deseja reverter esta configuração para os valores padrões?</string>
|
||||
<string name="reset_to_default">Reverter para o padrão</string>
|
||||
<string name="reset_to_default">Redefinir para o padrão</string>
|
||||
<string name="reset_to_default_description">Redefine todas as configurações avançadas</string>
|
||||
<string name="reset_all_settings">Redefinir todas as configurações?</string>
|
||||
<string name="reset_all_settings_description">Todas as configurações avançadas retornarão ao padrão. Isto não pode ser desfeito.</string>
|
||||
<string name="reset_all_settings_description">Todas as configurações avançadas serão redefinidas para o padrão. Isto não pode ser desfeito.</string>
|
||||
<string name="settings_reset">Configurações redefinidas</string>
|
||||
<string name="close">Fechar</string>
|
||||
<string name="learn_more">Saiba mais</string>
|
||||
@ -278,9 +373,17 @@
|
||||
<string name="start">Start</string>
|
||||
<string name="clear">Limpar</string>
|
||||
<string name="global">Global</string>
|
||||
<string name="custom">Personalizado</string>
|
||||
<string name="custom">Personalizada</string>
|
||||
<string name="notice">Aviso</string>
|
||||
<string name="import_complete">Importação concluída</string>
|
||||
<string name="more_options">Mais opções</string>
|
||||
<string name="use_global_setting">Usar configuração global</string>
|
||||
<string name="operation_completed_successfully">A operação foi concluída com sucesso</string>
|
||||
<string name="retry">Reiniciar</string>
|
||||
<string name="confirm">Confirmar</string>
|
||||
<string name="load">Carregar</string>
|
||||
<string name="save">Salvar</string>
|
||||
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">Selecione o driver para a GPU</string>
|
||||
<string name="select_gpu_driver_title">Gostaria de substituir o driver atual da GPU? </string>
|
||||
@ -298,9 +401,12 @@
|
||||
<string name="preferences_system">Sistema</string>
|
||||
<string name="preferences_system_description">Modo TV, região, idioma</string>
|
||||
<string name="preferences_graphics">Gráficos</string>
|
||||
<string name="preferences_graphics_description">Nível de precisão, resolução, cache de shader</string>
|
||||
<string name="preferences_graphics_description">Nível de precisão, resolução, cache de shaders</string>
|
||||
<string name="preferences_audio">Áudio</string>
|
||||
<string name="preferences_audio_description">Engine de reprodução, volume</string>
|
||||
<string name="preferences_audio_description">Mecanismo de saída, volume</string>
|
||||
<string name="preferences_controls">Controles</string>
|
||||
<string name="preferences_controls_description">Mapear entradas do controle</string>
|
||||
<string name="preferences_player">Jogador %d</string>
|
||||
<string name="preferences_theme">Tema e cor</string>
|
||||
<string name="preferences_debug">Depuração</string>
|
||||
<string name="preferences_debug_description">Depuração de CPU/GPU, API gráfica, fastmem</string>
|
||||
@ -308,7 +414,7 @@
|
||||
<!-- Game properties -->
|
||||
<string name="info">Informações</string>
|
||||
<string name="info_description">ID do Programa, desenvolvedora, versão</string>
|
||||
<string name="per_game_settings">Configurações por jogo</string>
|
||||
<string name="per_game_settings">Configurações do jogo</string>
|
||||
<string name="per_game_settings_description">Edite configurações específicas para este jogo</string>
|
||||
<string name="launch_options">Configurações de inicialização</string>
|
||||
<string name="path">Caminho</string>
|
||||
@ -316,13 +422,13 @@
|
||||
<string name="developer">Desenvolvedora</string>
|
||||
<string name="version">Versão</string>
|
||||
<string name="copy_details">Copiar detalhes</string>
|
||||
<string name="add_ons">Adicionais</string>
|
||||
<string name="add_ons">Complementos</string>
|
||||
<string name="add_ons_description">Gerencie mods, atualizações e DLC</string>
|
||||
<string name="clear_shader_cache">Excluir cache de shaders</string>
|
||||
<string name="clear_shader_cache_description">Remove todos os shaders compilados durante a execução do jogo</string>
|
||||
<string name="clear_shader_cache_warning_description">Você terá mais travamentos enquanto o cache de shaders for recompilado</string>
|
||||
<string name="clear_shader_cache_warning_description">Você terá mais engasgos enquanto o cache de shaders for recompilado</string>
|
||||
<string name="cleared_shaders_successfully">Shaders excluídos com sucesso</string>
|
||||
<string name="addons_game">Adicionais: %1$s</string>
|
||||
<string name="addons_game">Complementos: %1$s</string>
|
||||
<string name="save_data">Dados salvos</string>
|
||||
<string name="save_data_description">Gerencie dados salvos específicos deste jogo</string>
|
||||
<string name="delete_save_data">Deletar dados salvos</string>
|
||||
@ -332,22 +438,33 @@
|
||||
<string name="select_content_type">Tipo de conteúdo</string>
|
||||
<string name="updates_and_dlc">Atualizações e DLC</string>
|
||||
<string name="mods_and_cheats">Mods e cheats</string>
|
||||
<string name="addon_notice">Aviso importante sobre os adicionais</string>
|
||||
<string name="addon_notice">Aviso importante sobre os complementos</string>
|
||||
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
|
||||
<string name="addon_notice_description">Para instalar mods e cheats, você deve selecionar uma pasta que contenha um diretório cheats/, romfs/ ou exefs. Não podemos verificar se eles são compatíveis com seu jogo, então tenha cuidado!</string>
|
||||
<string name="invalid_directory">Diretório inválido </string>
|
||||
<!-- "cheats/" "romfs/" and "exefs/ should not be translated -->
|
||||
<string name="invalid_directory_description">Por favor verifique se o diretório selecionado contém uma pasta cheats/, romfs/ ou exefs/ e tente novamente.</string>
|
||||
<string name="addon_installed_successfully">Adicional instalado com sucesso</string>
|
||||
<string name="addon_installed_successfully">Complemento instalado com sucesso</string>
|
||||
<string name="verifying_content">Verificando conteúdo...</string>
|
||||
<string name="content_install_notice">Aviso sobre conteúdo adicional</string>
|
||||
<string name="content_install_notice">Aviso sobre a instalação do conteúdo</string>
|
||||
<string name="content_install_notice_description">O conteúdo que você selecionou não corresponde a este jogo.\nInstalar mesmo assim?</string>
|
||||
<string name="confirm_uninstall">Confirmar desinstalação</string>
|
||||
<string name="confirm_uninstall_description">Tem certeza de que quer desinstalar esse complemento?</string>
|
||||
<string name="verify_integrity">Verificar integridade</string>
|
||||
<string name="verifying">Verificando...</string>
|
||||
<string name="verify_success">Verificação de integridade concluída!</string>
|
||||
<string name="verify_failure">Houve uma falha na verificação de integridade!</string>
|
||||
<string name="verify_failure_description">Conteúdos do arquivo podem estar corrompidos</string>
|
||||
<string name="verify_no_result">A verificação de integridade não pôde ser executada</string>
|
||||
<string name="verify_no_result_description">Os conteúdos do arquivo não foram verificados se são válidos</string>
|
||||
<string name="verification_failed_for">A verificação falhou para os seguintes arquivos:\n%1$s</string>
|
||||
|
||||
<!-- ROM loading errors -->
|
||||
<string name="loader_error_encrypted">Sua ROM está encriptada</string>
|
||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga os guias para extrair novamente o seu <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartucho de jogo</a> ou <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string>
|
||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga os guias para extrair novamente os seus <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartuchos de jogos</a> ou <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string>
|
||||
<string name="loader_error_encrypted_keys_description"><![CDATA[Por favor verifique se o seu arquivo <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> está instalado para que os jogos possam ser decriptados.]]></string>
|
||||
<string name="loader_error_video_core">Ocorreu um erro ao iniciar o núcleo de vídeo.</string>
|
||||
<string name="loader_error_video_core_description">Isto é normalmente causado por um driver de GPU incompatível. Instalar um driver de GPU pode resolver este problema.</string>
|
||||
<string name="loader_error_video_core_description">Isto é normalmente causado por um driver de GPU incompatível. Instalar um driver de GPU personalizado pode resolver este problema.</string>
|
||||
<string name="loader_error_invalid_format">Impossível carregar a ROM</string>
|
||||
<string name="loader_error_file_not_found">O arquivo ROM não existe</string>
|
||||
|
||||
@ -355,6 +472,7 @@
|
||||
<string name="emulation_exit">Sair da emulação</string>
|
||||
<string name="emulation_done">Feito</string>
|
||||
<string name="emulation_fps_counter">Contador de FPS</string>
|
||||
<string name="emulation_thermal_indicator">Indicador de temperatura</string>
|
||||
<string name="emulation_toggle_controls">Marcar/Desmarcar botões</string>
|
||||
<string name="emulation_rel_stick_center">Centro Relativo do Analógico</string>
|
||||
<string name="emulation_dpad_slide">Deslizamento dos Botões Direcionais</string>
|
||||
@ -364,12 +482,14 @@
|
||||
<string name="emulation_control_adjust">Ajustar overlay</string>
|
||||
<string name="emulation_control_scale">Escala</string>
|
||||
<string name="emulation_control_opacity">Opacidade</string>
|
||||
<string name="emulation_touch_overlay_reset">Resetar overlay</string>
|
||||
<string name="emulation_touch_overlay_reset">Redefinir overlay</string>
|
||||
<string name="emulation_touch_overlay_edit">Editar overlay</string>
|
||||
<string name="emulation_pause">Pausar emulação</string>
|
||||
<string name="emulation_unpause">Retomar a emulação</string>
|
||||
<string name="emulation_input_overlay">Opções de overlay</string>
|
||||
<string name="touchscreen">Tela de toque</string>
|
||||
<string name="lock_drawer">Bloquear este menu</string>
|
||||
<string name="unlock_drawer">Desbloquear este menu</string>
|
||||
|
||||
<string name="load_settings">Carregando configurações...</string>
|
||||
|
||||
@ -411,12 +531,12 @@
|
||||
|
||||
<!-- Renderer APIs -->
|
||||
<string name="renderer_vulkan">Vulkan</string>
|
||||
<string name="renderer_none">Nenhum</string>
|
||||
<string name="renderer_none">Nenhuma</string>
|
||||
|
||||
<!-- Renderer Accuracy -->
|
||||
<string name="renderer_accuracy_normal">Normal</string>
|
||||
<string name="renderer_accuracy_high">Alto</string>
|
||||
<string name="renderer_accuracy_extreme">Extremo (Lento)</string>
|
||||
<string name="renderer_accuracy_high">Alta</string>
|
||||
<string name="renderer_accuracy_extreme">Extrema (Lenta)</string>
|
||||
|
||||
<!-- Resolutions -->
|
||||
<string name="resolution_half">0.5X (360p/540p)</string>
|
||||
@ -462,13 +582,13 @@
|
||||
<string name="ratio_stretch">Esticar à janela</string>
|
||||
|
||||
<!-- CPU Backend -->
|
||||
<string name="cpu_backend_dynarmic">Dynarmic (Lento)</string>
|
||||
<string name="cpu_backend_dynarmic">Dynarmic (Lenta)</string>
|
||||
<string name="cpu_backend_nce">Execução de código nativo (NCE)</string>
|
||||
|
||||
<!-- CPU Accuracy -->
|
||||
<string name="cpu_accuracy_accurate">Preciso</string>
|
||||
<string name="cpu_accuracy_unsafe">Não seguro</string>
|
||||
<string name="cpu_accuracy_paranoid">Paranóico (Lento)</string>
|
||||
<string name="cpu_accuracy_accurate">Precisa</string>
|
||||
<string name="cpu_accuracy_unsafe">Não segura</string>
|
||||
<string name="cpu_accuracy_paranoid">Paranoica (Lenta)</string>
|
||||
|
||||
<!-- Gamepad Buttons -->
|
||||
<string name="gamepad_d_pad">Botões Direcionais</string>
|
||||
@ -503,7 +623,7 @@
|
||||
<string name="multiplier_sixteen">16x</string>
|
||||
|
||||
<!-- Black backgrounds theme -->
|
||||
<string name="use_black_backgrounds">Plano de fundo preto</string>
|
||||
<string name="use_black_backgrounds">Planos de fundo pretos</string>
|
||||
<string name="use_black_backgrounds_description">Quando usar o tema escuro, aplicar fundos pretos</string>
|
||||
|
||||
<!-- Picture-In-Picture -->
|
||||
@ -514,6 +634,12 @@
|
||||
<string name="mute">Mudo</string>
|
||||
<string name="unmute">Tirar do Mudo</string>
|
||||
|
||||
<!-- Emulation vertical alignment -->
|
||||
<string name="vertical_alignment">Alinhamento vertical</string>
|
||||
<string name="top">Em cima</string>
|
||||
<string name="center">Centralizado</string>
|
||||
<string name="bottom">Embaixo</string>
|
||||
|
||||
<!-- Licenses screen strings -->
|
||||
<string name="licenses">Licenças</string>
|
||||
<string name="license_fidelityfx_fsr_description">Upscaling de alta qualidade da AMD</string>
|
||||
|
@ -137,6 +137,11 @@
|
||||
<item quantity="other">Dados salvos de %d importados com sucesso</item>
|
||||
</plurals>
|
||||
<string name="no_save_data_found">Dados salvos não encontrados</string>
|
||||
<string name="verify_installed_content">Verificar conteúdo instalado</string>
|
||||
<string name="verify_installed_content_description">Verifica todo o conteúdo instalado em busca de dados corrompidos</string>
|
||||
<string name="keys_missing">Faltando chaves de encriptação</string>
|
||||
<string name="keys_missing_description">O firmware e jogos comerciais não poderão ser decriptados</string>
|
||||
<string name="keys_missing_help">https://yuzu-emu.org/help/quickstart/#dumping-decryption-keys</string>
|
||||
|
||||
<!-- Applet launcher strings -->
|
||||
<string name="applets">Launcher de miniaplicativos</string>
|
||||
@ -203,6 +208,7 @@
|
||||
<string name="value_with_units">%1$s%2$s</string>
|
||||
|
||||
<!-- System settings strings -->
|
||||
<string name="device_name">Nome do Dispositivo</string>
|
||||
<string name="use_docked_mode">Modo Ancorado</string>
|
||||
<string name="use_docked_mode_description">Aumenta a resolução, diminuindo o desempenho. O Modo Portátil é utilizado quando estiver desabilitado, diminuindo a resolução e melhorando o desempenho.</string>
|
||||
<string name="emulated_region">Região da emulação</string>
|
||||
@ -220,6 +226,8 @@
|
||||
<string name="renderer_screen_layout">Oriantação</string>
|
||||
<string name="renderer_aspect_ratio">Proporção da tela</string>
|
||||
<string name="renderer_scaling_filter">Filtro de Adaptação da Janela</string>
|
||||
<string name="fsr_sharpness">Nitidez do FSR</string>
|
||||
<string name="fsr_sharpness_description">Determina a nitidez da imagem ao usar contraste dinâmico do FSR</string>
|
||||
<string name="renderer_anti_aliasing">Método de Anti-Serrilhado</string>
|
||||
<string name="renderer_force_max_clock">Força velocidade máxima (Adreno only)</string>
|
||||
<string name="renderer_force_max_clock_description">Força o GPU a correr à velocidade máxima (restrições térmicas serão aplicadas)</string>
|
||||
@ -247,6 +255,93 @@
|
||||
<string name="audio_volume">Volume</string>
|
||||
<string name="audio_volume_description">Especifica o volume de saída.</string>
|
||||
|
||||
<!-- Input strings -->
|
||||
<string name="buttons">Botões</string>
|
||||
<string name="button_a">A</string>
|
||||
<string name="button_b">B</string>
|
||||
<string name="button_x">X</string>
|
||||
<string name="button_y">Y</string>
|
||||
<string name="button_plus">Mais</string>
|
||||
<string name="button_minus">Menos</string>
|
||||
<string name="button_home">Home</string>
|
||||
<string name="button_capture">Capturar</string>
|
||||
<string name="start_pause">Start/Pause</string>
|
||||
<string name="dpad">D-Pad</string>
|
||||
<string name="up">Cima</string>
|
||||
<string name="down">Baixo</string>
|
||||
<string name="left">Esquerda</string>
|
||||
<string name="right">Direita</string>
|
||||
<string name="left_stick">Analógico esquerdo</string>
|
||||
<string name="control_stick">Alavanca de controle</string>
|
||||
<string name="right_stick">Analógico direito</string>
|
||||
<string name="c_stick">C-Stick</string>
|
||||
<string name="pressed">Premido</string>
|
||||
<string name="range">Alcance</string>
|
||||
<string name="deadzone">Zona morta</string>
|
||||
<string name="modifier">Modificador</string>
|
||||
<string name="modifier_range">Alcance do modificador</string>
|
||||
<string name="triggers">Gatilhos</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_sl_left">SL Esquerdo</string>
|
||||
<string name="button_sr_left">SR Esquerdo</string>
|
||||
<string name="button_sl_right">SL Direito</string>
|
||||
<string name="button_sr_right">SR Direito</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">Inválido</string>
|
||||
<string name="not_set">Indefinido</string>
|
||||
<string name="unknown">Desconhecido</string>
|
||||
<string name="qualified_hat">%1$s%2$s%3$sHat %4$s</string>
|
||||
<string name="qualified_button_stick_axis">%1$s%2$s%3$sEixo %4$s</string>
|
||||
<string name="qualified_button">%1$s%2$s%3$sBotão %4$s</string>
|
||||
<string name="qualified_axis">Eixo %1$s%2$s</string>
|
||||
<string name="unused">Não usado</string>
|
||||
<string name="input_prompt">Mova ou aperte um botão</string>
|
||||
<string name="unsupported_input">Tipo de entrada não suportada</string>
|
||||
<string name="input_mapping_filter">Filtro de mapeamento de entrada</string>
|
||||
<string name="input_mapping_filter_description">Selecione um dispositivo para filtrar o mapeamento dos controles</string>
|
||||
<string name="auto_map">Mapear controle automaticamente</string>
|
||||
<string name="auto_map_description">Selecione um controle para iniciar
|
||||
uma tentativa de mapeamento automático</string>
|
||||
<string name="attempted_auto_map">Tentativa de mapeamento automático de %1$s concluída</string>
|
||||
<string name="controller_type">Tipo de controle</string>
|
||||
<string name="pro_controller">Comando Pro</string>
|
||||
<string name="handheld">Portátil</string>
|
||||
<string name="dual_joycons">Par de Joycons</string>
|
||||
<string name="left_joycon">Joycon Esquerdo</string>
|
||||
<string name="right_joycon">Joycon Direito</string>
|
||||
<string name="gamecube_controller">Controlador de depuração</string>
|
||||
<string name="invert_axis">Inverter eixo</string>
|
||||
<string name="invert_button">Inverter botão</string>
|
||||
<string name="toggle_button">Alternar pressionamento do botão</string>
|
||||
<string name="turbo_button">Botão Turbo</string>
|
||||
<string name="set_threshold">Definir limite</string>
|
||||
<string name="toggle_axis">Alternar eixos</string>
|
||||
<string name="connected">Conectado</string>
|
||||
<string name="use_system_vibrator">Usar vibração deste aparelho</string>
|
||||
<string name="input_overlay">Overlay do controle</string>
|
||||
<string name="vibration">Vibração</string>
|
||||
<string name="vibration_strength">Intensidade da vibração</string>
|
||||
<string name="profile">Perfil</string>
|
||||
<string name="create_new_profile">Criar novo perfil</string>
|
||||
<string name="enter_profile_name">Insira o nome do perfil</string>
|
||||
<string name="profile_name_already_exists">O nome do perfil já existe</string>
|
||||
<string name="invalid_profile_name">Nome de perfil inválido</string>
|
||||
<string name="use_global_input_configuration">Usar configuração global de controles</string>
|
||||
<string name="player_num_profile">Perfil do Jogador %d</string>
|
||||
<string name="delete_input_profile">Deletar perfil de controle</string>
|
||||
<string name="delete_input_profile_description">Tem certeza que quer deletar esse perfil? Ele não poderá ser recuperado.</string>
|
||||
<string name="stick_map_description">Mova uma alavanca pra esquerda e depois pra cima ou aperte um botão</string>
|
||||
<string name="button_map_description">Aperte um botão ou mova um gatilho/alavanca</string>
|
||||
<string name="map_dpad_direction">Mapear Direcional para %1$s</string>
|
||||
<string name="map_control">Mapear botão %1$s</string>
|
||||
<string name="failed_to_load_profile">Falha ao carregar perfil</string>
|
||||
<string name="failed_to_save_profile">Falha ao salvar perfil</string>
|
||||
<string name="reset_mapping">Redefinir mapeamento</string>
|
||||
<string name="reset_mapping_description">Você tem certeza que quer redefinir todos os mapeamentos deste controle para os padrões? Iso não pode ser desfeito.</string>
|
||||
|
||||
<!-- Miscellaneous -->
|
||||
<string name="slider_default">Padrão</string>
|
||||
<string name="ini_saved">Configurações guardadas</string>
|
||||
@ -281,6 +376,14 @@
|
||||
<string name="custom">Personalizado</string>
|
||||
<string name="notice">Aviso</string>
|
||||
<string name="import_complete">Importação concluída</string>
|
||||
<string name="more_options">Mais opções</string>
|
||||
<string name="use_global_setting">Usar configuração global</string>
|
||||
<string name="operation_completed_successfully">A operação foi concluída com sucesso</string>
|
||||
<string name="retry">Reiniciar</string>
|
||||
<string name="confirm">Confirmar</string>
|
||||
<string name="load">Carregar</string>
|
||||
<string name="save">Guardar</string>
|
||||
|
||||
<!-- GPU driver installation -->
|
||||
<string name="select_gpu_driver">Seleciona a driver para o GPU</string>
|
||||
<string name="select_gpu_driver_title">Queres substituir o driver do GPU atual? </string>
|
||||
@ -301,6 +404,9 @@
|
||||
<string name="preferences_graphics_description">Nível de precisão, resolução, cache de shader</string>
|
||||
<string name="preferences_audio">Audio</string>
|
||||
<string name="preferences_audio_description">Engine de reprodução, volume</string>
|
||||
<string name="preferences_controls">Controlos</string>
|
||||
<string name="preferences_controls_description">Mapear entradas do controle</string>
|
||||
<string name="preferences_player">Jogador %d</string>
|
||||
<string name="preferences_theme">Cor e tema.</string>
|
||||
<string name="preferences_debug">Depurar</string>
|
||||
<string name="preferences_debug_description">Depuração de CPU/GPU, API gráfica, fastmem</string>
|
||||
@ -342,6 +448,17 @@
|
||||
<string name="verifying_content">Verificando conteúdo</string>
|
||||
<string name="content_install_notice">Aviso sobre conteúdo adicional</string>
|
||||
<string name="content_install_notice_description">O conteúdo que você selecionou não corresponde a este jogo.\nInstalar mesmo assim?</string>
|
||||
<string name="confirm_uninstall">Confirmar desinstalação</string>
|
||||
<string name="confirm_uninstall_description">Tem certeza de que quer desinstalar esse adicional?</string>
|
||||
<string name="verify_integrity">Verificar integridade</string>
|
||||
<string name="verifying">Verificando...</string>
|
||||
<string name="verify_success">Verificação de integridade concluída!</string>
|
||||
<string name="verify_failure">Houve uma falha na verificação de integridade!</string>
|
||||
<string name="verify_failure_description">Conteúdos do arquivo podem estar corrompidos</string>
|
||||
<string name="verify_no_result">A verificação de integridade não pôde ser executada</string>
|
||||
<string name="verify_no_result_description">Os conteúdos do arquivo não foram verificados se são válidos</string>
|
||||
<string name="verification_failed_for">A verificação falhou para os seguintes arquivos:\n%1$s</string>
|
||||
|
||||
<!-- ROM loading errors -->
|
||||
<string name="loader_error_encrypted">A tua ROM está encriptada</string>
|
||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Por favor, siga os guias para despejar novamente o seu <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-physical-titles-game-cards\">cartucho de jogo</a> or <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-digital-titles-eshop\">títulos instalados</a>.]]></string>
|
||||
@ -355,6 +472,7 @@
|
||||
<string name="emulation_exit">Parar emulação</string>
|
||||
<string name="emulation_done">Feito</string>
|
||||
<string name="emulation_fps_counter">Contador de FPS</string>
|
||||
<string name="emulation_thermal_indicator">Indicador de temperatura</string>
|
||||
<string name="emulation_toggle_controls">Alterar controles</string>
|
||||
<string name="emulation_rel_stick_center">Centro Relativo de Analógico</string>
|
||||
<string name="emulation_dpad_slide">Deslizamento dos Botões Direcionais</string>
|
||||
@ -370,6 +488,8 @@
|
||||
<string name="emulation_unpause">Despausar emulação</string>
|
||||
<string name="emulation_input_overlay">Opções de overlay</string>
|
||||
<string name="touchscreen">Ecrã Táctil</string>
|
||||
<string name="lock_drawer">Bloquear submenu</string>
|
||||
<string name="unlock_drawer">Desbloquear submenu</string>
|
||||
|
||||
<string name="load_settings">Carregando configurações...</string>
|
||||
|
||||
@ -514,6 +634,12 @@
|
||||
<string name="mute">Mute</string>
|
||||
<string name="unmute">Unmute</string>
|
||||
|
||||
<!-- Emulation vertical alignment -->
|
||||
<string name="vertical_alignment">Alinhamento vertical</string>
|
||||
<string name="top">Em cima</string>
|
||||
<string name="center">Centralizado</string>
|
||||
<string name="bottom">Embaixo</string>
|
||||
|
||||
<!-- Licenses screen strings -->
|
||||
<string name="licenses">Licenças</string>
|
||||
<string name="license_fidelityfx_fsr_description">Upscaling de alta qualidade da AMD</string>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user