Compare commits

..

9 Commits

Author SHA1 Message Date
yuzubot
795ccb48b0 Android 253 2024-02-17 18:15:06 +00:00
yuzubot
91a553fa57 Merge yuzu-emu#13034 2024-02-17 18:15:06 +00:00
yuzubot
22d6bc2691 Merge yuzu-emu#13026 2024-02-17 18:15:06 +00:00
yuzubot
db40d7d5ea Merge yuzu-emu#13017 2024-02-17 18:15:06 +00:00
yuzubot
09ddc6e6f9 Merge yuzu-emu#13006 2024-02-17 18:15:06 +00:00
yuzubot
c54e6020d1 Merge yuzu-emu#13000 2024-02-17 18:15:05 +00:00
yuzubot
921786e037 Merge yuzu-emu#12749 2024-02-17 18:15:05 +00:00
yuzubot
e9f0eb26f3 Merge yuzu-emu#12461 2024-02-17 18:15:05 +00:00
yuzubot
6ff8f1cec4 Merge yuzu-emu#10529 2024-02-17 18:15:05 +00:00
578 changed files with 28139 additions and 47359 deletions

View File

@ -81,7 +81,8 @@ jobs:
fetch-depth: 0
- name: Install dependencies
run: |
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
# 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
- name: Build
run: |
mkdir build

View File

@ -1,9 +1,13 @@
| Pull Request | Commit | Title | Author | Merged? |
|----|----|----|----|----|
| [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 |
| [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 |
| [13017](https://github.com/yuzu-emu/yuzu//pull/13017) | [`af4248256`](https://github.com/yuzu-emu/yuzu//pull/13017/files) | kernel: add and enable system suspend type | [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 |
| [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 |
End of merge log. You can find the original README.md below the break.

1626
dist/languages/ar.ts vendored

File diff suppressed because it is too large Load Diff

1628
dist/languages/ca.ts vendored

File diff suppressed because it is too large Load Diff

1628
dist/languages/cs.ts vendored

File diff suppressed because it is too large Load Diff

1628
dist/languages/da.ts vendored

File diff suppressed because it is too large Load Diff

1636
dist/languages/de.ts vendored

File diff suppressed because it is too large Load Diff

1644
dist/languages/el.ts vendored

File diff suppressed because it is too large Load Diff

1720
dist/languages/es.ts vendored

File diff suppressed because it is too large Load Diff

1684
dist/languages/fr.ts vendored

File diff suppressed because it is too large Load Diff

1770
dist/languages/hu.ts vendored

File diff suppressed because it is too large Load Diff

2105
dist/languages/id.ts vendored

File diff suppressed because it is too large Load Diff

1636
dist/languages/it.ts vendored

File diff suppressed because it is too large Load Diff

1634
dist/languages/ja_JP.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/ko_KR.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/nb.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/nl.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/pl.ts vendored

File diff suppressed because it is too large Load Diff

2026
dist/languages/pt_BR.ts vendored

File diff suppressed because it is too large Load Diff

1680
dist/languages/pt_PT.ts vendored

File diff suppressed because it is too large Load Diff

1675
dist/languages/ru_RU.ts vendored

File diff suppressed because it is too large Load Diff

1628
dist/languages/sv.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/tr_TR.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/uk.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/vi.ts vendored

File diff suppressed because it is too large Load Diff

1630
dist/languages/vi_VN.ts vendored

File diff suppressed because it is too large Load Diff

1717
dist/languages/zh_CN.ts vendored

File diff suppressed because it is too large Load Diff

1682
dist/languages/zh_TW.ts vendored

File diff suppressed because it is too large Load Diff

View File

@ -121,7 +121,6 @@ else()
-Wno-attributes
-Wno-invalid-offsetof
-Wno-unused-parameter
-Wno-missing-field-initializers
)
if (CMAKE_CXX_COMPILER_ID MATCHES Clang) # Clang or AppleClang

View File

@ -3,21 +3,24 @@
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
@ -181,13 +184,46 @@ object NativeLibrary {
ErrorUnknown
}
var coreErrorAlertResult = false
val coreErrorAlertLock = Object()
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
}
}
}
private fun onCoreErrorImpl(title: String, message: String) {
val emulationActivity = sEmulationActivity.get()
if (emulationActivity == null) {
Log.error("[NativeLibrary] EmulationActivity not present")
error("[NativeLibrary] EmulationActivity not present")
return
}
@ -203,7 +239,7 @@ object NativeLibrary {
fun onCoreError(error: CoreError?, details: String): Boolean {
val emulationActivity = sEmulationActivity.get()
if (emulationActivity == null) {
Log.error("[NativeLibrary] EmulationActivity not present")
error("[NativeLibrary] EmulationActivity not present")
return false
}
@ -234,7 +270,7 @@ object NativeLibrary {
}
// Show the AlertDialog on the main thread.
emulationActivity.runOnUiThread { onCoreErrorImpl(title, message) }
emulationActivity.runOnUiThread(Runnable { onCoreErrorImpl(title, message) })
// Wait for the lock to notify that it is complete.
synchronized(coreErrorAlertLock) { coreErrorAlertLock.wait() }

View File

@ -80,14 +80,8 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
super.onCreate(savedInstanceState)
InputHandler.updateControllerData()
val players = NativeConfig.getInputSettings(true)
var hasConfiguredControllers = false
players.forEach {
if (it.hasMapping()) {
hasConfiguredControllers = true
}
}
if (!hasConfiguredControllers && InputHandler.androidControllers.isNotEmpty()) {
val playerOne = NativeConfig.getInputSettings(true)[0]
if (!playerOne.hasMapping() && InputHandler.androidControllers.isNotEmpty()) {
var params: ParamPackage? = null
for (controller in InputHandler.registeredControllers) {
if (controller.get("port", -1) == 0) {

View File

@ -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,15 +44,25 @@ class DriverAdapter(private val driverViewModel: DriverViewModel) :
}
// Delay marquee by 3s
title.marquee()
version.marquee()
description.marquee()
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.text = model.title
version.text = model.version
description.text = model.description
buttonDelete.setVisible(
model.title != binding.root.context.getString(R.string.system_gpu_driver)
)
if (model.title != binding.root.context.getString(R.string.system_gpu_driver)) {
buttonDelete.visibility = View.VISIBLE
} else {
buttonDelete.visibility = View.GONE
}
}
}
}

View File

@ -4,6 +4,7 @@
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
@ -11,7 +12,6 @@ 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,7 +29,13 @@ class FolderAdapter(val activity: FragmentActivity, val gamesViewModel: GamesVie
override fun bind(model: GameDir) {
binding.apply {
path.text = Uri.parse(model.uriString).path
path.marquee()
path.postDelayed(
{
path.isSelected = true
path.ellipsize = TextUtils.TruncateAt.MARQUEE
},
3000
)
buttonEdit.setOnClickListener {
GameFolderPropertiesDialogFragment.newInstance(model)

View File

@ -4,6 +4,7 @@
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
@ -26,7 +27,6 @@ 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,7 +44,14 @@ class GameAdapter(private val activity: AppCompatActivity) :
binding.textGameTitle.text = model.title.replace("[\\t\\n\\r]+".toRegex(), " ")
binding.textGameTitle.marquee()
binding.textGameTitle.postDelayed(
{
binding.textGameTitle.ellipsize = TextUtils.TruncateAt.MARQUEE
binding.textGameTitle.isSelected = true
},
3000
)
binding.cardGame.setOnClickListener { onClick(model) }
binding.cardGame.setOnLongClickListener { onLongClick(model) }
}

View File

@ -3,18 +3,21 @@
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(
@ -73,15 +76,23 @@ class GamePropertiesAdapter(
)
)
binding.details.marquee()
binding.details.postDelayed({
binding.details.isSelected = true
binding.details.ellipsize = TextUtils.TruncateAt.MARQUEE
}, 3000)
if (submenuProperty.details != null) {
binding.details.setVisible(true)
binding.details.visibility = View.VISIBLE
binding.details.text = submenuProperty.details.invoke()
} else if (submenuProperty.detailsFlow != null) {
binding.details.setVisible(true)
submenuProperty.detailsFlow.collect(viewLifecycle) { binding.details.text = it }
binding.details.visibility = View.VISIBLE
viewLifecycle.lifecycleScope.launch {
viewLifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) {
submenuProperty.detailsFlow.collect { binding.details.text = it }
}
}
} else {
binding.details.setVisible(false)
binding.details.visibility = View.GONE
}
}
}
@ -101,10 +112,14 @@ class GamePropertiesAdapter(
)
)
binding.buttonInstall.setVisible(installableProperty.install != null)
binding.buttonInstall.setOnClickListener { installableProperty.install?.invoke() }
binding.buttonExport.setVisible(installableProperty.export != null)
binding.buttonExport.setOnClickListener { installableProperty.export?.invoke() }
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() }
}
}
}

View File

@ -3,19 +3,22 @@
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(
@ -56,8 +59,18 @@ class HomeSettingAdapter(
binding.optionIcon.alpha = 0.5f
}
model.details.collect(viewLifecycle) { updateOptionDetails(it) }
binding.optionDetail.marquee()
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
)
binding.root.setOnClickListener { onClick(model) }
}
@ -77,7 +90,7 @@ class HomeSettingAdapter(
private fun updateOptionDetails(detailString: String) {
if (detailString.isNotEmpty()) {
binding.optionDetail.text = detailString
binding.optionDetail.setVisible(true)
binding.optionDetail.visibility = View.VISIBLE
}
}
}

View File

@ -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,10 +26,14 @@ class InstallableAdapter(installables: List<Installable>) :
binding.title.setText(model.titleId)
binding.description.setText(model.descriptionId)
binding.buttonInstall.setVisible(model.install != null)
binding.buttonInstall.setOnClickListener { model.install?.invoke() }
binding.buttonExport.setVisible(model.export != null)
binding.buttonExport.setOnClickListener { model.export?.invoke() }
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() }
}
}
}
}

View File

@ -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.setVisible(false)
textSettingValue.visibility = View.GONE
root.setOnClickListener { onClick(model) }
}

View File

@ -5,6 +5,7 @@ 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
@ -16,7 +17,6 @@ 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.setVisible(visible = false, gone = false)
binding.textConfirmation.setVisible(true)
binding.buttonAction.visibility = View.INVISIBLE
binding.textConfirmation.visibility = View.VISIBLE
}
binding.icon.setImageDrawable(

View File

@ -64,17 +64,17 @@ data class PlayerInput(
fun hasMapping(): Boolean {
var hasMapping = false
buttons.forEach {
if (it != "[empty]" && it.isNotEmpty()) {
if (it != "[empty]") {
hasMapping = true
}
}
analogs.forEach {
if (it != "[empty]" && it.isNotEmpty()) {
if (it != "[empty]") {
hasMapping = true
}
}
motions.forEach {
if (it != "[empty]" && it.isNotEmpty()) {
if (it != "[empty]") {
hasMapping = true
}
}

View File

@ -6,8 +6,7 @@ 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"),
DEVICE_NAME("device_name");
DRIVER_PATH("driver_path");
override fun getString(needsGlobal: Boolean): String = NativeConfig.getString(key, needsGlobal)

View File

@ -16,7 +16,6 @@ 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
/**
@ -76,9 +75,6 @@ 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
@ -91,7 +87,6 @@ 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"
@ -110,7 +105,6 @@ 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,

View File

@ -1,22 +0,0 @@
// 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)
}

View File

@ -11,13 +11,16 @@ 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
@ -107,7 +110,9 @@ class InputProfileDialogFragment : DialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
settingsViewModel.shouldShowDeleteProfileDialog.collect(viewLifecycleOwner) {
viewLifecycleOwner.lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
settingsViewModel.shouldShowDeleteProfileDialog.collect {
if (it.isNotEmpty()) {
MessageDialogFragment.newInstance(
activity = requireActivity(),
@ -125,6 +130,8 @@ class InputProfileDialogFragment : DialogFragment() {
}
}
}
}
}
companion object {
const val TAG = "InputProfileDialogFragment"

View File

@ -13,9 +13,14 @@ 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
@ -65,25 +70,41 @@ class SettingsActivity : AppCompatActivity() {
)
}
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) }
) {
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
)
}
}
}
}
}
onBackPressedDispatcher.addCallback(
this,

View File

@ -85,10 +85,6 @@ class SettingsAdapter(
InputProfileViewHolder(ListItemSettingBinding.inflate(inflater), this)
}
SettingsItem.TYPE_STRING_INPUT -> {
StringInputViewHolder(ListItemSettingBinding.inflate(inflater), this)
}
else -> {
HeaderViewHolder(ListItemSettingsHeaderBinding.inflate(inflater), this)
}
@ -396,15 +392,6 @@ 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,

View File

@ -11,10 +11,13 @@ 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
@ -24,10 +27,8 @@ 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
@ -39,7 +40,6 @@ 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,18 +134,6 @@ 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())
@ -173,7 +161,6 @@ 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)
}
}
@ -182,15 +169,21 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
super.onViewCreated(view, savedInstanceState)
when (type) {
SettingsItem.TYPE_SLIDER -> {
settingsViewModel.sliderTextValue.collect(viewLifecycleOwner) {
viewLifecycleOwner.lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
settingsViewModel.sliderTextValue.collect {
sliderBinding.textValue.text = it
}
settingsViewModel.sliderProgress.collect(viewLifecycleOwner) {
}
repeatOnLifecycle(Lifecycle.State.CREATED) {
settingsViewModel.sliderProgress.collect {
sliderBinding.slider.value = it.toFloat()
}
}
}
}
}
}
override fun onClick(dialog: DialogInterface, which: Int) {
when (settingsViewModel.clickedItem) {
@ -216,13 +209,6 @@ 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()
}

View File

@ -13,17 +13,21 @@ 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
@ -59,7 +63,8 @@ class SettingsFragment : Fragment() {
return binding.root
}
@SuppressLint("NotifyDataSetChanged")
// This is using the correct scope, lint is just acting up
@SuppressLint("UnsafeRepeatOnLifecycleDetector", "NotifyDataSetChanged")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
settingsAdapter = SettingsAdapter(this, requireContext())
@ -95,26 +100,50 @@ class SettingsFragment : Fragment() {
settingsViewModel.setShouldNavigateBack(true)
}
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) }
) {
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(),
@ -126,6 +155,10 @@ class SettingsFragment : Fragment() {
},
negativeAction = {}
).show(parentFragmentManager, MessageDialogFragment.TAG)
settingsViewModel.setShouldShowResetInputDialog(false)
}
}
}
}
}

View File

@ -23,7 +23,6 @@ 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
@ -154,7 +153,6 @@ 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)
@ -780,7 +778,7 @@ class SettingsFragmentPresenter(
playerIndex: Int,
paramName: String,
stick: NativeAnalog,
defaultValue: Float
defaultValue: Int
): AbstractIntSetting =
object : AbstractIntSetting {
val params get() = NativeInput.getStickParam(playerIndex, stick)
@ -788,7 +786,7 @@ class SettingsFragmentPresenter(
override val key = ""
override fun getInt(needsGlobal: Boolean): Int =
(params.get(paramName, defaultValue) * 100).toInt()
(params.get(paramName, 0.15f) * 100).toInt()
override fun setInt(value: Int) {
val tempParams = params
@ -796,12 +794,12 @@ class SettingsFragmentPresenter(
NativeInput.setStickParam(playerIndex, stick, tempParams)
}
override val defaultValue = (defaultValue * 100).toInt()
override val defaultValue = defaultValue
override fun getValueAsString(needsGlobal: Boolean): String =
getInt(needsGlobal).toString()
override fun reset() = setInt(this.defaultValue)
override fun reset() = setInt(defaultValue)
}
private fun getExtraStickSettings(
@ -811,11 +809,11 @@ class SettingsFragmentPresenter(
val stickIsController =
NativeInput.isController(NativeInput.getStickParam(playerIndex, nativeAnalog))
val modifierRangeSetting =
getStickIntSettingFromParam(playerIndex, "modifier_scale", nativeAnalog, 0.5f)
getStickIntSettingFromParam(playerIndex, "modifier_scale", nativeAnalog, 50)
val stickRangeSetting =
getStickIntSettingFromParam(playerIndex, "range", nativeAnalog, 0.95f)
getStickIntSettingFromParam(playerIndex, "range", nativeAnalog, 95)
val stickDeadzoneSetting =
getStickIntSettingFromParam(playerIndex, "deadzone", nativeAnalog, 0.15f)
getStickIntSettingFromParam(playerIndex, "deadzone", nativeAnalog, 15)
val out = mutableListOf<SettingsItem>().apply {
if (stickIsController) {

View File

@ -15,17 +15,19 @@ 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
@ -81,12 +83,16 @@ class SettingsSearchFragment : Fragment() {
search()
binding.settingsList.smoothScrollToPosition(0)
}
settingsViewModel.shouldReloadSettingsList.collect(viewLifecycleOwner) {
viewLifecycleOwner.lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
settingsViewModel.shouldReloadSettingsList.collect {
if (it) {
settingsViewModel.setShouldReloadSettingsList(false)
search()
}
}
}
}
search()
@ -100,9 +106,10 @@ class SettingsSearchFragment : Fragment() {
private fun search() {
val searchTerm = binding.searchText.text.toString().lowercase()
binding.clearButton.setVisible(visible = searchTerm.isNotEmpty(), gone = false)
binding.clearButton.visibility =
if (searchTerm.isEmpty()) View.INVISIBLE else View.VISIBLE
if (searchTerm.isEmpty()) {
binding.noResultsView.setVisible(visible = false, gone = false)
binding.noResultsView.visibility = View.VISIBLE
settingsAdapter?.submitList(emptyList())
return
}
@ -129,7 +136,8 @@ class SettingsSearchFragment : Fragment() {
optionalSetting
}
settingsAdapter?.submitList(sortedList)
binding.noResultsView.setVisible(visible = sortedList.isEmpty(), gone = false)
binding.noResultsView.visibility =
if (sortedList.isEmpty()) View.VISIBLE else View.INVISIBLE
}
private fun focusSearch() {

View File

@ -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.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.NativeConfig
class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
SettingViewHolder(binding.root, adapter) {
@ -22,16 +22,27 @@ class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA
override fun bind(item: SettingsItem) {
setting = item as DateTimeSetting
binding.textSettingName.text = item.title
binding.textSettingDescription.setVisible(item.description.isNotEmpty())
if (setting.description.isNotEmpty()) {
binding.textSettingDescription.text = item.description
binding.textSettingValue.setVisible(true)
binding.textSettingDescription.visibility = View.VISIBLE
} else {
binding.textSettingDescription.visibility = View.GONE
}
binding.textSettingValue.visibility = View.VISIBLE
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.setVisible(setting.clearable)
binding.buttonClear.visibility = if (setting.setting.global ||
!NativeConfig.isPerGameConfigLoaded()
) {
View.GONE
} else {
View.VISIBLE
}
binding.buttonClear.setOnClickListener {
adapter.onClearClick(setting, bindingAdapterPosition)
}

View File

@ -9,7 +9,6 @@ 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) {
@ -21,10 +20,10 @@ class InputProfileViewHolder(val binding: ListItemSettingBinding, adapter: Setti
binding.textSettingValue.text =
setting.getCurrentProfile().ifEmpty { binding.root.context.getString(R.string.not_set) }
binding.textSettingDescription.setVisible(false)
binding.buttonClear.setVisible(false)
binding.icon.setVisible(false)
binding.buttonClear.setVisible(false)
binding.textSettingDescription.visibility = View.GONE
binding.buttonClear.visibility = View.GONE
binding.icon.visibility = View.GONE
binding.buttonClear.visibility = View.GONE
}
override fun onClick(clicked: View) =

View File

@ -12,7 +12,6 @@ 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) {
@ -23,26 +22,38 @@ class InputViewHolder(val binding: ListItemSettingInputBinding, adapter: Setting
binding.textSettingName.text = setting.title
binding.textSettingValue.text = setting.getSelectedValue()
when (item) {
binding.buttonOptions.visibility = when (item) {
is AnalogInputSetting -> {
val param = NativeInput.getStickParam(item.playerIndex, item.nativeAnalog)
binding.buttonOptions.setVisible(
if (
param.get("engine", "") == "analog_from_button" ||
param.has("axis_x") || param.has("axis_y")
)
) {
View.VISIBLE
} else {
View.GONE
}
}
is ButtonInputSetting -> {
val param = NativeInput.getButtonParam(item.playerIndex, item.nativeButton)
binding.buttonOptions.setVisible(
if (
param.has("code") || param.has("button") || param.has("hat") ||
param.has("axis")
)
) {
View.VISIBLE
} else {
View.GONE
}
}
is ModifierInputSetting -> {
val params = NativeInput.getStickParam(item.playerIndex, item.nativeAnalog)
binding.buttonOptions.setVisible(params.has("modifier"))
if (params.has("modifier")) {
View.VISIBLE
} else {
View.GONE
}
}
}

View File

@ -9,7 +9,6 @@ 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) {
@ -17,8 +16,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,
@ -26,13 +25,19 @@ class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA
binding.icon.context.theme
)
)
} else {
binding.icon.visibility = View.GONE
}
binding.textSettingName.text = setting.title
binding.textSettingDescription.setVisible(setting.description.isNotEmpty())
binding.textSettingDescription.text = item.description
binding.textSettingValue.setVisible(false)
binding.buttonClear.setVisible(false)
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
setStyle(setting.isEditable, binding)
}

View File

@ -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.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.NativeConfig
class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
SettingViewHolder(binding.root, adapter) {
@ -19,10 +19,14 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti
override fun bind(item: SettingsItem) {
setting = item
binding.textSettingName.text = setting.title
binding.textSettingDescription.setVisible(item.description.isNotEmpty())
if (item.description.isNotEmpty()) {
binding.textSettingDescription.text = item.description
binding.textSettingDescription.visibility = View.VISIBLE
} else {
binding.textSettingDescription.visibility = View.GONE
}
binding.textSettingValue.setVisible(true)
binding.textSettingValue.visibility = View.VISIBLE
when (item) {
is SingleChoiceSetting -> {
val resMgr = binding.textSettingValue.context.resources
@ -44,10 +48,16 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti
}
}
if (binding.textSettingValue.text.isEmpty()) {
binding.textSettingValue.setVisible(false)
binding.textSettingValue.visibility = View.GONE
}
binding.buttonClear.setVisible(setting.clearable)
binding.buttonClear.visibility = if (setting.setting.global ||
!NativeConfig.isPerGameConfigLoaded()
) {
View.GONE
} else {
View.VISIBLE
}
binding.buttonClear.setOnClickListener {
adapter.onClearClick(setting, bindingAdapterPosition)
}

View File

@ -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.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.NativeConfig
class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) :
SettingViewHolder(binding.root, adapter) {
@ -18,16 +18,26 @@ class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAda
override fun bind(item: SettingsItem) {
setting = item as SliderSetting
binding.textSettingName.text = setting.title
binding.textSettingDescription.setVisible(item.description.isNotEmpty())
if (item.description.isNotEmpty()) {
binding.textSettingDescription.text = setting.description
binding.textSettingValue.setVisible(true)
binding.textSettingDescription.visibility = View.VISIBLE
} else {
binding.textSettingDescription.visibility = View.GONE
}
binding.textSettingValue.visibility = View.VISIBLE
binding.textSettingValue.text = String.format(
binding.textSettingValue.context.getString(R.string.value_with_units),
setting.getSelectedValue(),
setting.units
)
binding.buttonClear.setVisible(setting.clearable)
binding.buttonClear.visibility = if (setting.setting.global ||
!NativeConfig.isPerGameConfigLoaded()
) {
View.GONE
} else {
View.VISIBLE
}
binding.buttonClear.setOnClickListener {
adapter.onClearClick(setting, bindingAdapterPosition)
}

View File

@ -1,45 +0,0 @@
// 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
}
}

View File

@ -9,7 +9,6 @@ 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) {
@ -17,8 +16,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,
@ -26,13 +25,19 @@ class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAd
binding.icon.context.theme
)
)
} else {
binding.icon.visibility = View.GONE
}
binding.textSettingName.text = setting.title
binding.textSettingDescription.setVisible(setting.description.isNotEmpty())
if (setting.description.isNotEmpty()) {
binding.textSettingDescription.text = setting.description
binding.textSettingValue.setVisible(false)
binding.buttonClear.setVisible(false)
binding.textSettingDescription.visibility = View.VISIBLE
} else {
binding.textSettingDescription.visibility = View.GONE
}
binding.textSettingValue.visibility = View.GONE
binding.buttonClear.visibility = View.GONE
}
override fun onClick(clicked: View) {

View File

@ -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.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.NativeConfig
class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter: SettingsAdapter) :
SettingViewHolder(binding.root, adapter) {
@ -19,8 +19,12 @@ class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter
override fun bind(item: SettingsItem) {
setting = item as SwitchSetting
binding.textSettingName.text = setting.title
binding.textSettingDescription.setVisible(setting.description.isNotEmpty())
if (setting.description.isNotEmpty()) {
binding.textSettingDescription.text = setting.description
binding.textSettingDescription.visibility = View.VISIBLE
} else {
binding.textSettingDescription.visibility = View.GONE
}
binding.switchWidget.setOnCheckedChangeListener(null)
binding.switchWidget.isChecked = setting.getIsChecked(setting.needsRuntimeGlobal)
@ -28,7 +32,13 @@ class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter
adapter.onBooleanClick(setting, binding.switchWidget.isChecked, bindingAdapterPosition)
}
binding.buttonClear.setVisible(setting.clearable)
binding.buttonClear.visibility = if (setting.setting.global ||
!NativeConfig.isPerGameConfigLoaded()
) {
View.GONE
} else {
View.VISIBLE
}
binding.buttonClear.setOnClickListener {
adapter.onClearClick(setting, bindingAdapterPosition)
}

View File

@ -3,6 +3,7 @@
package org.yuzu.yuzu_emu.fragments
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
@ -15,6 +16,9 @@ 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
@ -28,7 +32,6 @@ 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() {
@ -57,6 +60,8 @@ 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)
@ -73,17 +78,27 @@ class AddonsFragment : Fragment() {
adapter = AddonAdapter(addonViewModel)
}
addonViewModel.addonList.collect(viewLifecycleOwner) {
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
addonViewModel.addonList.collect {
(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) }
) {
}
}
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(),
@ -94,12 +109,14 @@ class AddonsFragment : Fragment() {
negativeAction = {},
negativeButtonTitleId = R.string.close
).show(parentFragmentManager, MessageDialogFragment.TAG)
addonViewModel.showModNoticeDialog(false)
}
}
addonViewModel.addonToDelete.collect(
viewLifecycleOwner,
resetState = { addonViewModel.setAddonToDelete(null) }
) {
}
}
launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
addonViewModel.addonToDelete.collect {
if (it != null) {
MessageDialogFragment.newInstance(
requireActivity(),
@ -108,6 +125,10 @@ class AddonsFragment : Fragment() {
positiveAction = { addonViewModel.onDeleteAddon(it) },
negativeAction = {}
).show(parentFragmentManager, MessageDialogFragment.TAG)
addonViewModel.setAddonToDelete(null)
}
}
}
}
}

View File

@ -1,47 +0,0 @@
// 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
}
}
}

View File

@ -3,6 +3,7 @@
package org.yuzu.yuzu_emu.fragments
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@ -13,6 +14,9 @@ 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
@ -31,7 +35,6 @@ 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
@ -60,6 +63,8 @@ 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)
@ -84,8 +89,15 @@ class DriverManagerFragment : Fragment() {
}
}
driverViewModel.showClearButton.collect(viewLifecycleOwner) {
binding.toolbarDrivers.menu.findItem(R.id.menu_driver_use_global).isVisible = it
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.STARTED) {
driverViewModel.showClearButton.collect {
binding.toolbarDrivers.menu
.findItem(R.id.menu_driver_use_global).isVisible = it
}
}
}
}
}

View File

@ -10,11 +10,14 @@ 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()
@ -41,7 +44,13 @@ class DriversLoadingDialogFragment : DialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
driverViewModel.isInteractionAllowed.collect(viewLifecycleOwner) { if (it) dismiss() }
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.RESUMED) {
driverViewModel.isInteractionAllowed.collect { if (it) dismiss() }
}
}
}
}
companion object {

View File

@ -32,6 +32,9 @@ 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
@ -39,6 +42,9 @@ 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
@ -57,7 +63,6 @@ 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 {
@ -85,6 +90,14 @@ 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")
}
@ -155,6 +168,8 @@ 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) {
@ -335,11 +350,19 @@ 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(viewLifecycleOwner) {
.windowLayoutInfo(requireActivity())
.collect {
updateFoldableLayout(requireActivity() as EmulationActivity, it)
}
emulationViewModel.shaderProgress.collect(viewLifecycleOwner) {
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.shaderProgress.collectLatest {
if (it > 0 && it != emulationViewModel.totalShaders.value) {
binding.loadingProgressIndicator.isIndeterminate = false
@ -353,16 +376,36 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
binding.loadingProgressIndicator.isIndeterminate = true
}
}
emulationViewModel.totalShaders.collect(viewLifecycleOwner) {
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.totalShaders.collectLatest {
binding.loadingProgressIndicator.max = it
}
emulationViewModel.shaderMessage.collect(viewLifecycleOwner) {
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.shaderMessage.collectLatest {
if (it.isNotEmpty()) {
binding.loadingText.text = it
}
}
emulationViewModel.emulationStarted.collect(viewLifecycleOwner) {
}
}
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)
@ -375,7 +418,11 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
updateThermalOverlay()
}
}
emulationViewModel.isEmulationStopping.collect(viewLifecycleOwner) {
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.isEmulationStopping.collectLatest {
if (it) {
binding.loadingText.setText(R.string.shutting_down)
ViewUtils.showView(binding.loadingIndicator)
@ -383,7 +430,11 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
ViewUtils.hideView(binding.showFpsText)
}
}
emulationViewModel.drawerOpen.collect(viewLifecycleOwner) {
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.drawerOpen.collect {
if (it) {
binding.drawerLayout.open()
binding.inGameMenu.requestFocus()
@ -391,7 +442,11 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
binding.drawerLayout.close()
}
}
emulationViewModel.programChanged.collect(viewLifecycleOwner) {
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.programChanged.collect {
if (it != 0) {
emulationViewModel.setEmulationStarted(false)
binding.drawerLayout.close()
@ -401,7 +456,11 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
ViewUtils.showView(binding.loadingIndicator)
}
}
emulationViewModel.emulationStopped.collect(viewLifecycleOwner) {
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
emulationViewModel.emulationStopped.collect {
if (it && emulationViewModel.programChanged.value != -1) {
if (perfStatsUpdater != null) {
perfStatsUpdateHandler.removeCallbacks(perfStatsUpdater!!)
@ -411,9 +470,8 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
emulationViewModel.setEmulationStopped(false)
}
}
driverViewModel.isInteractionAllowed.collect(viewLifecycleOwner) {
if (it) startEmulation()
}
}
}
}
@ -442,12 +500,14 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
binding.drawerLayout.close()
}
if (showInputOverlay) {
binding.surfaceInputOverlay.setVisible(visible = false, gone = false)
binding.surfaceInputOverlay.visibility = View.INVISIBLE
}
} else {
binding.surfaceInputOverlay.setVisible(
showInputOverlay && emulationViewModel.emulationStarted.value
)
if (showInputOverlay && emulationViewModel.emulationStarted.value) {
binding.surfaceInputOverlay.visibility = View.VISIBLE
} else {
binding.surfaceInputOverlay.visibility = View.INVISIBLE
}
if (!isInFoldableLayout) {
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
binding.surfaceInputOverlay.layout = OverlayLayout.Portrait
@ -484,9 +544,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
}
private fun updateShowFpsOverlay() {
val showOverlay = BooleanSetting.SHOW_PERFORMANCE_OVERLAY.getBoolean()
binding.showFpsText.setVisible(showOverlay)
if (showOverlay) {
if (BooleanSetting.SHOW_PERFORMANCE_OVERLAY.getBoolean()) {
val SYSTEM_FPS = 0
val FPS = 1
val FRAMETIME = 2
@ -506,17 +564,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() {
val showOverlay = BooleanSetting.SHOW_THERMAL_OVERLAY.getBoolean()
binding.showThermalsText.setVisible(showOverlay)
if (showOverlay) {
if (BooleanSetting.SHOW_THERMAL_OVERLAY.getBoolean()) {
thermalStatsUpdater = {
if (emulationViewModel.emulationStarted.value &&
!emulationViewModel.isEmulationStopping.value
@ -538,10 +596,12 @@ 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
}
}
@ -810,12 +870,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
}
}
}
binding.doneControlConfig.setVisible(true)
binding.doneControlConfig.visibility = View.VISIBLE
binding.surfaceInputOverlay.setIsInEditMode(true)
}
private fun stopConfiguringControls() {
binding.doneControlConfig.setVisible(false)
binding.doneControlConfig.visibility = View.GONE
binding.surfaceInputOverlay.setIsInEditMode(false)
// Unlock the orientation if it was locked for editing
if (IntSetting.RENDERER_SCREEN_LAYOUT.getInt() == EmulationOrientation.Unspecified.int) {

View File

@ -13,6 +13,9 @@ 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
@ -24,7 +27,6 @@ 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
@ -68,9 +70,13 @@ class GameFoldersFragment : Fragment() {
adapter = FolderAdapter(requireActivity(), gamesViewModel)
}
gamesViewModel.folders.collect(viewLifecycleOwner) {
viewLifecycleOwner.lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
gamesViewModel.folders.collect {
(binding.listFolders.adapter as FolderAdapter).submitList(it)
}
}
}
val mainActivity = requireActivity() as MainActivity
binding.buttonAdd.setOnClickListener {

View File

@ -27,7 +27,6 @@ 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() {
@ -86,7 +85,7 @@ class GameInfoFragment : Fragment() {
copyToClipboard(getString(R.string.developer), args.game.developer)
}
} else {
developer.setVisible(false)
developer.visibility = View.GONE
}
version.setHint(R.string.version)

View File

@ -3,9 +3,11 @@
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
@ -16,7 +18,9 @@ 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
@ -42,9 +46,7 @@ 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
@ -74,6 +76,8 @@ 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)
@ -103,7 +107,13 @@ class GamePropertiesFragment : Fragment() {
GameIconUtils.loadGameIcon(args.game, binding.imageGameScreen)
binding.title.text = args.game.title
binding.title.marquee()
binding.title.postDelayed(
{
binding.title.ellipsize = TextUtils.TruncateAt.MARQUEE
binding.title.isSelected = true
},
3000
)
binding.buttonStart.setOnClickListener {
LaunchGameDialogFragment.newInstance(args.game)
@ -112,14 +122,28 @@ class GamePropertiesFragment : Fragment() {
reloadList()
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() }
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)
}
}
}
}
}
setInsets()
}

View File

@ -14,6 +14,9 @@ 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
@ -32,7 +35,6 @@ 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
@ -73,12 +75,16 @@ class InstallableFragment : Fragment() {
binding.root.findNavController().popBackStack()
}
homeViewModel.openImportSaves.collect(viewLifecycleOwner) {
viewLifecycleOwner.lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
homeViewModel.openImportSaves.collect {
if (it) {
importSaves.launch(arrayOf("application/zip"))
homeViewModel.setOpenImportSaves(false)
}
}
}
}
val installables = listOf(
Installable(

View File

@ -13,13 +13,15 @@ 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()
@ -62,7 +64,10 @@ class ProgressDialogFragment : DialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.message.isSelected = true
taskViewModel.isComplete.collect(viewLifecycleOwner) {
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
taskViewModel.isComplete.collect {
if (it) {
dismiss()
when (val result = taskViewModel.result.value) {
@ -84,12 +89,20 @@ class ProgressDialogFragment : DialogFragment() {
taskViewModel.clear()
}
}
taskViewModel.cancelled.collect(viewLifecycleOwner) {
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
taskViewModel.cancelled.collect {
if (it) {
dialog?.setTitle(R.string.cancelling)
}
}
taskViewModel.progress.collect(viewLifecycleOwner) {
}
}
launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
taskViewModel.progress.collect {
if (it != 0.0) {
binding.progressBar.apply {
isIndeterminate = false
@ -102,11 +115,22 @@ class ProgressDialogFragment : DialogFragment() {
}
}
}
taskViewModel.message.collect(viewLifecycleOwner) {
binding.message.setVisible(it.isNotEmpty())
}
}
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
}
}
}
}
}
}
// By default, the ProgressDialog will immediately dismiss itself upon a button being pressed.
// Setting the OnClickListener again after the dialog is shown overrides this behavior.

View File

@ -3,6 +3,7 @@
package org.yuzu.yuzu_emu.fragments
import android.annotation.SuppressLint
import android.content.Context
import android.content.SharedPreferences
import android.os.Bundle
@ -17,9 +18,14 @@ 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
@ -29,8 +35,6 @@ 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
@ -54,6 +58,8 @@ 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)
@ -75,18 +81,42 @@ class SearchFragment : Fragment() {
binding.chipGroup.setOnCheckedStateChangeListener { _, _ -> filterAndSearch() }
binding.searchText.doOnTextChanged { text: CharSequence?, _: Int, _: Int, _: Int ->
binding.clearButton.setVisible(text.toString().isNotEmpty())
if (text.toString().isNotEmpty()) {
binding.clearButton.visibility = View.VISIBLE
} else {
binding.clearButton.visibility = View.INVISIBLE
}
filterAndSearch()
}
gamesViewModel.searchFocused.collect(
viewLifecycleOwner,
resetState = { gamesViewModel.setSearchFocused(false) }
) { if (it) focusSearch() }
gamesViewModel.games.collect(viewLifecycleOwner) { filterAndSearch() }
gamesViewModel.searchedGames.collect(viewLifecycleOwner) {
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)
binding.noResultsView.setVisible(it.isNotEmpty())
if (it.isEmpty()) {
binding.noResultsView.visibility = View.VISIBLE
} else {
binding.noResultsView.visibility = View.GONE
}
}
}
}
}
binding.clearButton.setOnClickListener { binding.searchText.setText("") }

View File

@ -4,6 +4,7 @@
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
@ -22,6 +23,9 @@ 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
@ -42,8 +46,6 @@ 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
@ -75,6 +77,8 @@ 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
@ -206,14 +210,28 @@ class SetupFragment : Fragment() {
)
}
homeViewModel.shouldPageForward.collect(
viewLifecycleOwner,
resetState = { homeViewModel.setShouldPageForward(false) }
) { if (it) pageForward() }
homeViewModel.gamesDirSelected.collect(
viewLifecycleOwner,
resetState = { homeViewModel.setGamesDirSelected(false) }
) { if (it) gamesDirCallback.onStepCompleted() }
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)
}
}
}
}
}
binding.viewPager2.apply {
adapter = SetupAdapter(requireActivity() as AppCompatActivity, pages)
@ -274,8 +292,12 @@ class SetupFragment : Fragment() {
val backIsVisible = savedInstanceState.getBoolean(KEY_BACK_VISIBILITY)
hasBeenWarned = savedInstanceState.getBooleanArray(KEY_HAS_BEEN_WARNED)!!
binding.buttonNext.setVisible(nextIsVisible)
binding.buttonBack.setVisible(backIsVisible)
if (nextIsVisible) {
binding.buttonNext.visibility = View.VISIBLE
}
if (backIsVisible) {
binding.buttonBack.visibility = View.VISIBLE
}
} else {
hasBeenWarned = BooleanArray(pages.size)
}

View File

@ -28,7 +28,6 @@ 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
@ -100,9 +99,11 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
}
var shouldUpdateView = false
val playerIndex = when (NativeInput.getStyleIndex(0)) {
NpadStyleIndex.Handheld -> 8
else -> 0
val playerIndex =
if (NativeInput.isHandheldOnly()) {
NativeInput.ConsoleDevice
} else {
NativeInput.Player1Device
}
for (button in overlayButtons) {
@ -663,7 +664,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) :
val overlayControlData = NativeConfig.getOverlayControlData()
overlayControlData.forEach {
it.enabled = OverlayControl.from(it.id)?.defaultVisibility == true
it.enabled = OverlayControl.from(it.id)?.defaultVisibility == false
}
NativeConfig.setOverlayControlData(overlayControlData)

View File

@ -3,6 +3,7 @@
package org.yuzu.yuzu_emu.ui
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@ -13,16 +14,19 @@ 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
@ -40,6 +44,8 @@ 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)
@ -82,28 +88,49 @@ class GamesFragment : Fragment() {
}
}
gamesViewModel.isReloading.collect(viewLifecycleOwner) {
viewLifecycleOwner.lifecycleScope.apply {
launch {
repeatOnLifecycle(Lifecycle.State.RESUMED) {
gamesViewModel.isReloading.collect {
binding.swipeRefresh.isRefreshing = it
binding.noticeText.setVisible(
visible = gamesViewModel.games.value.isEmpty() && !it,
gone = false
)
if (gamesViewModel.games.value.isEmpty() && !it) {
binding.noticeText.visibility = View.VISIBLE
} else {
binding.noticeText.visibility = View.INVISIBLE
}
gamesViewModel.games.collect(viewLifecycleOwner) {
}
}
}
launch {
repeatOnLifecycle(Lifecycle.State.RESUMED) {
gamesViewModel.games.collectLatest {
(binding.gridGames.adapter as GameAdapter).submitList(it)
}
gamesViewModel.shouldSwapData.collect(
viewLifecycleOwner,
resetState = { gamesViewModel.setShouldSwapData(false) }
) {
}
}
launch {
repeatOnLifecycle(Lifecycle.State.RESUMED) {
gamesViewModel.shouldSwapData.collect {
if (it) {
(binding.gridGames.adapter as GameAdapter).submitList(gamesViewModel.games.value)
(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.shouldScrollToTop.collect(
viewLifecycleOwner,
resetState = { gamesViewModel.setShouldScrollToTop(false) }
) { if (it) scrollToTop() }
setInsets()
}

View File

@ -19,6 +19,9 @@ 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
@ -27,6 +30,7 @@ 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
@ -43,7 +47,6 @@ 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
@ -136,22 +139,41 @@ 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.setVisible(visible = false, gone = false)
binding.statusBarShade.setVisible(visible = false, gone = false)
binding.navigationView.visibility = View.INVISIBLE
binding.statusBarShade.visibility = View.INVISIBLE
}
homeViewModel.navigationVisible.collect(this) { showNavigation(it.first, it.second) }
homeViewModel.statusBarShadeVisible.collect(this) { showStatusBarShade(it) }
homeViewModel.contentToInstall.collect(
this,
resetState = { homeViewModel.setContentToInstall(null) }
) {
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.checkKeys.collect(this, resetState = { homeViewModel.setCheckKeys(false) }) {
if (it) checkKeys()
}
setInsets()
@ -192,14 +214,18 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
private fun showNavigation(visible: Boolean, animated: Boolean) {
if (!animated) {
binding.navigationView.setVisible(visible)
if (visible) {
binding.navigationView.visibility = View.VISIBLE
} else {
binding.navigationView.visibility = View.INVISIBLE
}
return
}
val smallLayout = resources.getBoolean(R.bool.small_layout)
binding.navigationView.animate().apply {
if (visible) {
binding.navigationView.setVisible(true)
binding.navigationView.visibility = View.VISIBLE
duration = 300
interpolator = PathInterpolator(0.05f, 0.7f, 0.1f, 1f)
@ -238,7 +264,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
}
}.withEndAction {
if (!visible) {
binding.navigationView.setVisible(visible = false, gone = false)
binding.navigationView.visibility = View.INVISIBLE
}
}.start()
}
@ -246,7 +272,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
private fun showStatusBarShade(visible: Boolean) {
binding.statusBarShade.animate().apply {
if (visible) {
binding.statusBarShade.setVisible(true)
binding.statusBarShade.visibility = View.VISIBLE
binding.statusBarShade.translationY = binding.statusBarShade.height.toFloat() * -2
duration = 300
translationY(0f)
@ -258,7 +284,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
}
}.withEndAction {
if (!visible) {
binding.statusBarShade.setVisible(visible = false, gone = false)
binding.statusBarShade.visibility = View.INVISIBLE
}
}.start()
}
@ -498,8 +524,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
this@MainActivity,
titleId = R.string.content_install_notice,
descriptionId = R.string.content_install_notice_description,
positiveAction = { homeViewModel.setContentToInstall(documents) },
negativeAction = {}
positiveAction = { homeViewModel.setContentToInstall(documents) }
)
}
}.show(supportFragmentManager, ProgressDialogFragment.TAG)

View File

@ -1,38 +0,0 @@
// 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()
}
}
}
}
}

View File

@ -3,10 +3,8 @@
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) {
@ -59,35 +57,4 @@ 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)
}
}

View File

@ -23,22 +23,6 @@ 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>(

View File

@ -38,10 +38,6 @@ 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)};
}

View File

@ -292,9 +292,6 @@ 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();
@ -407,9 +404,7 @@ 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");
@ -418,9 +413,7 @@ 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);
@ -668,7 +661,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::User, FileSys::SaveDataType::Account, 1,
{}, vfs_nand_dir, FileSys::SaveDataSpaceId::NandUser, FileSys::SaveDataType::SaveData, 1,
user_id->AsU128(), 0);
const auto full_path = Common::FS::ConcatPathSafe(nand_dir, user_save_data_path);
@ -836,8 +829,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::User, FileSys::SaveDataType::Account, program_id,
user_id->AsU128(), 0);
{}, vfsNandDir, FileSys::SaveDataSpaceId::NandUser, FileSys::SaveDataType::SaveData,
program_id, user_id->AsU128(), 0);
return Common::Android::ToJString(env, user_save_data_path);
}

View File

@ -102,50 +102,8 @@ 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);
@ -232,7 +190,8 @@ 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().Window().OnTouchPressed(j_id, j_x_axis, j_y_axis);
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchPressed(
j_id, j_x_axis, j_y_axis);
}
}
@ -240,14 +199,15 @@ 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().Window().OnTouchMoved(j_id, j_x_axis, j_y_axis);
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchMoved(
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().Window().OnTouchReleased(j_id);
EmulationSession::GetInstance().GetInputSubsystem().GetTouchScreen()->TouchReleased(j_id);
}
}
@ -564,10 +524,36 @@ 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 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());
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());
return j_supported_indexes;
}

View File

@ -39,7 +39,10 @@
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" />
@ -49,7 +52,10 @@
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" />
@ -59,7 +65,10 @@
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" />

View File

@ -21,7 +21,10 @@
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"

View File

@ -40,7 +40,10 @@
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"

View File

@ -59,6 +59,9 @@
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"

View File

@ -76,7 +76,10 @@
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" />

View File

@ -95,8 +95,6 @@
<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>
@ -130,6 +128,7 @@
<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>
@ -163,46 +162,6 @@
<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>
@ -223,8 +182,6 @@
<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>
@ -271,6 +228,7 @@
<string name="emulation_unpause">لادانی وەستاندنی ئیمولەیشن</string>
<string name="emulation_input_overlay">هەڵبژاردەکانی داپۆشەر</string>
<string name="touchscreen">رووکاری لەمسی</string>
<string name="load_settings">بارکردنی ڕێکخستنەکان...</string>
<!-- Software keyboard -->

View File

@ -84,8 +84,7 @@
<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>
@ -113,8 +112,6 @@ Wirklich fortfahren?</string>
<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>
@ -155,9 +152,9 @@ Wirklich fortfahren?</string>
<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>
@ -183,49 +180,6 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
<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>
@ -256,11 +210,7 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
<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>
@ -280,7 +230,6 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
<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 -->
@ -288,14 +237,13 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
<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 DLCs aktivieren oder deaktivieren</string>
<string name="add_ons_description">Mods, Updates und DLC 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>
@ -304,19 +252,10 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
<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>
@ -339,8 +278,6 @@ Wirklich fortfahren?</string>
<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>
@ -420,7 +357,7 @@ Wirklich fortfahren?</string>
<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">16:10 erzwingen</string>
<string name="ratio_force_sixteen_ten">Erzwinge 16:10</string>
<string name="ratio_stretch">Auf Bildschirmgröße anpsassen</string>
<!-- CPU Accuracy -->

View File

@ -137,11 +137,6 @@
<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>
@ -207,6 +202,7 @@
<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>
@ -224,8 +220,6 @@
<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>
@ -253,49 +247,6 @@
<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>
@ -330,11 +281,6 @@
<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>
@ -355,7 +301,6 @@
<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>
@ -397,17 +342,6 @@
<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>
@ -421,7 +355,6 @@
<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>
@ -437,8 +370,6 @@
<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>
@ -583,12 +514,6 @@
<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>

View File

@ -1,595 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<string name="app_disclaimer">این نرم‌افزار برای اجرای بازی‌های کنسول نینتندو سوییچ است. هیچ بازی یا کلیدی داخل برنامه گنجانده نشده است.&lt;br /&gt;&lt;br /&gt;قبل از شروع، لطفاً فایل <![CDATA[ prod.keys ]]> خود را در حافظه دستگاه خود پیدا کنید.&lt;br /&gt; &lt;br /&gt;<![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">نحوه راه اندازی &lt;b>yuzu&lt;/b> و شبیه سازی را بیاموزید.</string>
<string name="get_started">شروع کنید</string>
<string name="keys">کلیدها</string>
<string name="keys_description">فایل &lt;b>prod.keys&lt;/b> خود را با دکمه زیر انتخاب کنید.</string>
<string name="select_keys">انتخاب کلیدها</string>
<string name="games">بازی‌ها</string>
<string name="games_description">پوشه &lt;b>بازی‌ها&lt;/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>

View File

@ -137,11 +137,6 @@
<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>
@ -208,7 +203,6 @@
<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>
@ -226,8 +220,6 @@
<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>
@ -255,92 +247,6 @@
<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>
@ -375,14 +281,6 @@
<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>
@ -403,9 +301,6 @@
<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>
@ -447,17 +342,6 @@
<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>
@ -471,7 +355,6 @@
<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>
@ -487,8 +370,6 @@
<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>
@ -633,12 +514,6 @@
<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>

View File

@ -84,10 +84,7 @@
<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>
@ -126,8 +123,6 @@
<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>
@ -192,6 +187,7 @@
<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>
@ -233,33 +229,6 @@
<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>
@ -290,8 +259,6 @@
<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>
@ -322,7 +289,6 @@
<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>
@ -351,6 +317,7 @@
<string name="emulation_unpause">המשך אמולציה</string>
<string name="emulation_input_overlay">אופציות עבור שכבת-על</string>
<string name="touchscreen">מסך מגע</string>
<string name="load_settings">טוען הגדרות...</string>
<!-- Software keyboard -->

View File

@ -11,10 +11,11 @@
<string name="welcome_description">Ismerkedj meg a &lt;b>yuzu&lt;/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 &lt;b>prod.keys&lt;/b> fájlodat az alábbi gombbal.</string>
<string name="keys_description">Válaszd ki a(z) &lt;b>prod.keys&lt;/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 &lt;b>Játékok&lt;/b> mappát az alábbi gombbal.</string>
<string name="games_description">
Válaszd ki a(z) &lt;b>Games&lt;/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>
@ -47,10 +48,10 @@
<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 információkról</string>
<string name="notification_warning_description">yuzu nem fog tudni értesíteni a fontos imformá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">Névjegy</string>
<string name="about">A programról</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>
@ -133,11 +134,6 @@
<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>
@ -195,14 +191,13 @@
<!-- 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ég korlátozása</string>
<string name="frame_limit_slider">Sebességkorlát százaléka</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>
@ -220,8 +215,6 @@
<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>
@ -232,8 +225,6 @@
<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>
@ -247,89 +238,6 @@
<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>
@ -366,11 +274,6 @@
<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>
@ -392,8 +295,6 @@
<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>
@ -437,14 +338,6 @@
<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>
@ -458,12 +351,11 @@
<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">Összes átkapcsolása</string>
<string name="emulation_toggle_all">Össze á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>
@ -473,8 +365,6 @@
<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>
@ -533,9 +423,9 @@
<!-- Renderer VSync -->
<string name="renderer_vsync_immediate">Azonnali (Ki)</string>
<string name="renderer_vsync_mailbox">Mailbox</string>
<string name="renderer_vsync_mailbox">Postaláda</string>
<string name="renderer_vsync_fifo">FIFO (Be)</string>
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string>
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxált</string>
<!-- Scaling Filters -->
<string name="scaling_filter_nearest_neighbor">Legközelebbi szomszéd</string>
@ -566,8 +456,6 @@
<!-- 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>
@ -615,12 +503,6 @@
<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>

View File

@ -1,587 +0,0 @@
<?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.&lt;br /&gt;&lt;br /&gt;Sebelum memulai, harap cari file <![CDATA[<b> prod.keys </b>]]> di penyimpanan perangkat anda. &lt;br /&gt;&lt;br /&gt;<![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 &lt;b>yuzu&lt;/b> dan masuk ke dalam emulasi.</string>
<string name="get_started">Memulai</string>
<string name="keys">Kunci</string>
<string name="keys_description">Pilih file &lt;b>prod.keys&lt;/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 &lt;b>Games&lt;/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>

View File

@ -31,7 +31,6 @@
<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>
@ -84,11 +83,7 @@
<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>
@ -121,16 +116,6 @@
<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>
@ -191,10 +176,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>
@ -221,9 +206,6 @@
<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>
@ -239,49 +221,6 @@
<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>
@ -292,7 +231,6 @@
<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>
@ -308,19 +246,9 @@
<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>
@ -336,32 +264,16 @@
<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>
@ -390,6 +302,7 @@
<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 -->
@ -403,7 +316,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">Errore Fatale. Controlla i log per i dettagli.\nContinuare l\'emulazione potrebbe portare a glitch grafici o causare crash.</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="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>

View File

@ -83,9 +83,7 @@
<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>
@ -111,8 +109,6 @@
<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>
@ -155,8 +151,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>
@ -183,9 +179,6 @@
<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>
@ -200,47 +193,6 @@
<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>
@ -268,8 +220,6 @@
<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>
@ -285,7 +235,6 @@
<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 -->
@ -294,9 +243,6 @@
<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>
@ -324,6 +270,7 @@
<string name="emulation_unpause">再開</string>
<string name="emulation_input_overlay">表示オプション</string>
<string name="touchscreen">タッチスクリーン</string>
<string name="load_settings">設定をロード中…</string>
<!-- Software keyboard -->
@ -409,10 +356,6 @@
<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>
@ -440,8 +383,6 @@
<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 -->

View File

@ -133,11 +133,6 @@
<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>
@ -203,6 +198,7 @@
<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>
@ -247,48 +243,6 @@
<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>
@ -318,15 +272,13 @@
<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>
@ -348,7 +300,6 @@
<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>
@ -359,7 +310,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>
@ -392,14 +343,6 @@
<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>
@ -429,8 +372,6 @@
<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>
@ -465,7 +406,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>
@ -508,12 +449,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>

View File

@ -95,8 +95,6 @@
<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>
@ -130,6 +128,7 @@
<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>
@ -163,48 +162,6 @@
<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>
@ -227,8 +184,6 @@
<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>
@ -244,7 +199,6 @@
<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 -->
@ -253,8 +207,6 @@
<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>
@ -282,6 +234,7 @@
<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 -->

View File

@ -95,8 +95,6 @@
<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>
@ -130,6 +128,7 @@
<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>
@ -163,48 +162,6 @@
<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>
@ -227,8 +184,6 @@
<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>
@ -244,7 +199,6 @@
<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 -->
@ -280,6 +234,7 @@
<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 -->

View File

@ -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">Concluído!</string>
<string name="step_complete">Completo!</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">Gerenciar 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">Gerencie as 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árias para desencriptar jogos comerciais</string>
<string name="install_prod_keys_description">Necessário 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">O Yuzu não irá te notificar de informações importantes. </string>
<string name="notification_warning_description">Yuzu não conseguirá 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 da compilação, créditos e mais</string>
<string name="about_description">Versão de 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árias para usar Amiibos em um jogo</string>
<string name="install_amiibo_keys_description">Necessário 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">Instalar driver para GPU</string>
<string name="install_gpu_driver_description">Instale drivers alternativos para desempenho ou precisão potencialmente melhores</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="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 manualmente a pasta do usuário, com o painel lateral do gerenciador de arquivos.</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="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á substituir seus dados salvos com o arquivo selecionado. Você tem certeza que quer continuar?</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_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 subpasta deve ser a ID do jogo.</string>
<string name="save_file_invalid_zip_structure_description">O nome da primeira sub pasta 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 depuração</string>
<string name="share_log">Compartilhar registros de debug</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">Instale atualizações de jogos ou DLC</string>
<string name="install_game_content_description">Instala 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 essa 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 esse 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">Importe/exporte firmware, chaves, dados do usuário e mais!</string>
<string name="manage_yuzu_data_description">Importa/exporta 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,25 +137,20 @@
<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">Execute miniaplicativos do sistema usando o firmware instalado</string>
<string name="applets_description">Inicia 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 <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="applets_error_description"><![CDATA[Por favor verifique se o arquivo 1prod.keys1 e o 2firmware2 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">Launcher do Arquivo</string>
<string name="cabinet_launcher">Inicializador 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>
@ -169,9 +164,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 da Compilação</string>
<string name="build">Versão</string>
<string name="user_data">Dados do usuário</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="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="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>
@ -179,14 +174,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">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="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="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">Obter Acesso Antecipado</string>
<string name="get_early_access">Obtenha o 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>
@ -208,35 +203,32 @@
<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 personalizadas</string>
<string name="use_custom_rtc">Data e hora personalizada</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">Definir um relógio em tempo real personalizado</string>
<string name="set_custom_rtc">Defina 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 de VSync</string>
<string name="renderer_vsync">Modo VSync</string>
<string name="renderer_screen_layout">Oriantação</string>
<string name="renderer_aspect_ratio">Proporção de tela</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 utilizar o contraste dinâmico do FSR</string>
<string name="renderer_anti_aliasing">Método de Anti-aliasing</string>
<string name="renderer_anti_aliasing">Método de Anti-Serrilhado</string>
<string name="renderer_force_max_clock">Forçar velocidade máxima (somente Adreno)</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_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_asynchronous_shaders">Usar shaders assíncronos </string>
<string name="renderer_asynchronous_shaders_description">Compila os shaders de forma assíncrona, reduzindo engasgos, mas pode apresentar problemas.</string>
<string name="renderer_asynchronous_shaders_description">Compila os shaders de forma assíncrona, reduzindo travamentos, 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 engasgos ao armazenar e carregar localmente os shaders.</string>
<string name="use_disk_shader_cache_description">Reduz travamentos 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>
@ -251,96 +243,9 @@
<string name="fastmem">Fastmem</string>
<!-- Audio settings strings -->
<string name="audio_output_engine">Mecanismo de saída</string>
<string name="audio_output_engine">Engine de reprodução</string>
<string name="audio_volume">Volume</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>
<string name="audio_volume_description">Especifica o volume de reprodução.</string>
<!-- Miscellaneous -->
<string name="slider_default">Padrão</string>
@ -351,10 +256,10 @@ uma tentativa de mapeamento automático</string>
<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">Redefinir para o padrão</string>
<string name="reset_to_default">Reverter 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 serão redefinidas para o padrão. Isto não pode ser desfeito.</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="settings_reset">Configurações redefinidas</string>
<string name="close">Fechar</string>
<string name="learn_more">Saiba mais</string>
@ -373,17 +278,9 @@ uma tentativa de mapeamento automático</string>
<string name="start">Start</string>
<string name="clear">Limpar</string>
<string name="global">Global</string>
<string name="custom">Personalizada</string>
<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">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>
@ -401,12 +298,9 @@ uma tentativa de mapeamento automático</string>
<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 shaders</string>
<string name="preferences_graphics_description">Nível de precisão, resolução, cache de shader</string>
<string name="preferences_audio">Áudio</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_audio_description">Engine de reprodução, volume</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>
@ -414,7 +308,7 @@ uma tentativa de mapeamento automático</string>
<!-- 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 do jogo</string>
<string name="per_game_settings">Configurações por 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>
@ -422,13 +316,13 @@ uma tentativa de mapeamento automático</string>
<string name="developer">Desenvolvedora</string>
<string name="version">Versão</string>
<string name="copy_details">Copiar detalhes</string>
<string name="add_ons">Complementos</string>
<string name="add_ons">Adicionais</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 engasgos enquanto o cache de shaders for recompilado</string>
<string name="clear_shader_cache_warning_description">Você terá mais travamentos enquanto o cache de shaders for recompilado</string>
<string name="cleared_shaders_successfully">Shaders excluídos com sucesso</string>
<string name="addons_game">Complementos: %1$s</string>
<string name="addons_game">Adicionais: %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>
@ -438,33 +332,22 @@ uma tentativa de mapeamento automático</string>
<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 complementos</string>
<string name="addon_notice">Aviso importante sobre os adicionais</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">Complemento instalado com sucesso</string>
<string name="addon_installed_successfully">Adicional instalado com sucesso</string>
<string name="verifying_content">Verificando conteúdo...</string>
<string name="content_install_notice">Aviso sobre a instalação do 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 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 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_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_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 personalizado 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 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>
@ -472,7 +355,6 @@ uma tentativa de mapeamento automático</string>
<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>
@ -482,14 +364,12 @@ uma tentativa de mapeamento automático</string>
<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">Redefinir overlay</string>
<string name="emulation_touch_overlay_reset">Resetar 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>
@ -531,12 +411,12 @@ uma tentativa de mapeamento automático</string>
<!-- Renderer APIs -->
<string name="renderer_vulkan">Vulkan</string>
<string name="renderer_none">Nenhuma</string>
<string name="renderer_none">Nenhum</string>
<!-- Renderer Accuracy -->
<string name="renderer_accuracy_normal">Normal</string>
<string name="renderer_accuracy_high">Alta</string>
<string name="renderer_accuracy_extreme">Extrema (Lenta)</string>
<string name="renderer_accuracy_high">Alto</string>
<string name="renderer_accuracy_extreme">Extremo (Lento)</string>
<!-- Resolutions -->
<string name="resolution_half">0.5X (360p/540p)</string>
@ -582,13 +462,13 @@ uma tentativa de mapeamento automático</string>
<string name="ratio_stretch">Esticar à janela</string>
<!-- CPU Backend -->
<string name="cpu_backend_dynarmic">Dynarmic (Lenta)</string>
<string name="cpu_backend_dynarmic">Dynarmic (Lento)</string>
<string name="cpu_backend_nce">Execução de código nativo (NCE)</string>
<!-- CPU Accuracy -->
<string name="cpu_accuracy_accurate">Precisa</string>
<string name="cpu_accuracy_unsafe">Não segura</string>
<string name="cpu_accuracy_paranoid">Paranoica (Lenta)</string>
<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>
<!-- Gamepad Buttons -->
<string name="gamepad_d_pad">Botões Direcionais</string>
@ -623,7 +503,7 @@ uma tentativa de mapeamento automático</string>
<string name="multiplier_sixteen">16x</string>
<!-- Black backgrounds theme -->
<string name="use_black_backgrounds">Planos de fundo pretos</string>
<string name="use_black_backgrounds">Plano de fundo preto</string>
<string name="use_black_backgrounds_description">Quando usar o tema escuro, aplicar fundos pretos</string>
<!-- Picture-In-Picture -->
@ -634,12 +514,6 @@ uma tentativa de mapeamento automático</string>
<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>

View File

@ -137,11 +137,6 @@
<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>
@ -208,7 +203,6 @@
<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>
@ -226,8 +220,6 @@
<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>
@ -255,93 +247,6 @@
<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>
@ -376,14 +281,6 @@ uma tentativa de mapeamento automático</string>
<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>
@ -404,9 +301,6 @@ uma tentativa de mapeamento automático</string>
<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>
@ -448,17 +342,6 @@ uma tentativa de mapeamento automático</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_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>
@ -472,7 +355,6 @@ uma tentativa de mapeamento automático</string>
<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>
@ -488,8 +370,6 @@ uma tentativa de mapeamento automático</string>
<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>
@ -634,12 +514,6 @@ uma tentativa de mapeamento automático</string>
<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