mirror of
https://github.com/mihonapp/mihon.git
synced 2024-11-15 15:02:49 +01:00
Merge branch 'master' into sync-part-final
This commit is contained in:
commit
39e3b356bb
2
.github/ISSUE_TEMPLATE.md
vendored
2
.github/ISSUE_TEMPLATE.md
vendored
@ -3,7 +3,7 @@
|
||||
I acknowledge that:
|
||||
|
||||
- I have updated:
|
||||
- To the latest version of the app (stable is v0.15.0)
|
||||
- To the latest version of the app (stable is v0.15.1)
|
||||
- All extensions
|
||||
- I have gone through the FAQ (https://tachiyomi.org/docs/faq/general) and troubleshooting guide (https://tachiyomi.org/docs/guides/troubleshooting/)
|
||||
- If this is an issue with an extension, that I should be opening an issue in https://github.com/tachiyomiorg/tachiyomi-extensions
|
||||
|
4
.github/ISSUE_TEMPLATE/report_issue.yml
vendored
4
.github/ISSUE_TEMPLATE/report_issue.yml
vendored
@ -53,7 +53,7 @@ body:
|
||||
label: Tachiyomi version
|
||||
description: You can find your Tachiyomi version in **More → About**.
|
||||
placeholder: |
|
||||
Example: "0.15.0"
|
||||
Example: "0.15.1"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@ -98,7 +98,7 @@ body:
|
||||
required: true
|
||||
- label: I have gone through the [FAQ](https://tachiyomi.org/docs/faq/general) and [troubleshooting guide](https://tachiyomi.org/docs/guides/troubleshooting/).
|
||||
required: true
|
||||
- label: I have updated the app to version **[0.15.0](https://github.com/tachiyomiorg/tachiyomi/releases/latest)**.
|
||||
- label: I have updated the app to version **[0.15.1](https://github.com/tachiyomiorg/tachiyomi/releases/latest)**.
|
||||
required: true
|
||||
- label: I have updated all installed extensions.
|
||||
required: true
|
||||
|
2
.github/ISSUE_TEMPLATE/request_feature.yml
vendored
2
.github/ISSUE_TEMPLATE/request_feature.yml
vendored
@ -33,7 +33,7 @@ body:
|
||||
required: true
|
||||
- label: If this is an issue with an extension, I should be opening an issue in the [extensions repository](https://github.com/tachiyomiorg/tachiyomi-extensions/issues/new/choose).
|
||||
required: true
|
||||
- label: I have updated the app to version **[0.15.0](https://github.com/tachiyomiorg/tachiyomi/releases/latest)**.
|
||||
- label: I have updated the app to version **[0.15.1](https://github.com/tachiyomiorg/tachiyomi/releases/latest)**.
|
||||
required: true
|
||||
- label: I will fill out all of the requested information in this form.
|
||||
required: true
|
||||
|
@ -22,8 +22,8 @@ android {
|
||||
defaultConfig {
|
||||
applicationId = "eu.kanade.tachiyomi"
|
||||
|
||||
versionCode = 115
|
||||
versionName = "0.15.0"
|
||||
versionCode = 117
|
||||
versionName = "0.15.1"
|
||||
|
||||
buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"")
|
||||
buildConfigField("String", "COMMIT_SHA", "\"${getGitSha()}\"")
|
||||
|
@ -8,7 +8,8 @@
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
|
||||
<!-- Storage -->
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
<uses-permission
|
||||
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
tools:ignore="ScopedStorage" />
|
||||
|
||||
<!-- For background jobs -->
|
||||
@ -21,17 +22,20 @@
|
||||
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION" />
|
||||
<!-- To view extension packages in API 30+ -->
|
||||
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
|
||||
<uses-permission
|
||||
android:name="android.permission.QUERY_ALL_PACKAGES"
|
||||
tools:ignore="QueryAllPackagesPermission" />
|
||||
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<uses-permission android:name="android.permission.READ_APP_SPECIFIC_LOCALES"
|
||||
<uses-permission
|
||||
android:name="android.permission.READ_APP_SPECIFIC_LOCALES"
|
||||
tools:ignore="ProtectedPermissions" />
|
||||
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
|
||||
|
||||
<!-- Remove permission from Firebase dependency -->
|
||||
<uses-permission android:name="com.google.android.gms.permission.AD_ID"
|
||||
<uses-permission
|
||||
android:name="com.google.android.gms.permission.AD_ID"
|
||||
tools:node="remove" />
|
||||
|
||||
<application
|
||||
@ -52,16 +56,30 @@
|
||||
|
||||
<activity
|
||||
android:name=".ui.main.MainActivity"
|
||||
android:exported="true"
|
||||
android:launchMode="singleTop"
|
||||
android:theme="@style/Theme.Tachiyomi.SplashScreen"
|
||||
android:exported="true">
|
||||
android:theme="@style/Theme.Tachiyomi.SplashScreen">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
<!-- Deep link to add repos -->
|
||||
<intent-filter android:label="@string/action_add_repo">
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data android:scheme="tachiyomi" />
|
||||
<data android:host="add-repo" />
|
||||
</intent-filter>
|
||||
|
||||
<!-- Open backup files -->
|
||||
<intent-filter android:label="@string/pref_restore_backup">
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
@ -69,7 +87,6 @@
|
||||
<data android:scheme="content" />
|
||||
<data android:host="*" />
|
||||
<data android:mimeType="*/*" />
|
||||
|
||||
<!--
|
||||
Work around Android's ugly primitive PatternMatcher
|
||||
implementation that can't cope with finding a . early in
|
||||
@ -93,16 +110,16 @@
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:process=":error_handler"
|
||||
android:name=".crash.CrashActivity"
|
||||
android:exported="false" />
|
||||
android:exported="false"
|
||||
android:process=":error_handler" />
|
||||
|
||||
<activity
|
||||
android:name=".ui.deeplink.DeepLinkActivity"
|
||||
android:launchMode="singleTask"
|
||||
android:theme="@android:style/Theme.NoDisplay"
|
||||
android:exported="true"
|
||||
android:label="@string/action_search"
|
||||
android:exported="true">
|
||||
android:launchMode="singleTask"
|
||||
android:theme="@android:style/Theme.NoDisplay">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEARCH" />
|
||||
<action android:name="com.google.android.gms.actions.SEARCH_ACTION" />
|
||||
@ -126,20 +143,21 @@
|
||||
|
||||
<activity
|
||||
android:name=".ui.reader.ReaderActivity"
|
||||
android:launchMode="singleTask"
|
||||
android:exported="false">
|
||||
android:exported="false"
|
||||
android:launchMode="singleTask">
|
||||
<intent-filter>
|
||||
<action android:name="com.samsung.android.support.REMOTE_ACTION" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data android:name="com.samsung.android.support.REMOTE_ACTION"
|
||||
<meta-data
|
||||
android:name="com.samsung.android.support.REMOTE_ACTION"
|
||||
android:resource="@xml/s_pen_actions" />
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".ui.security.UnlockActivity"
|
||||
android:theme="@style/Theme.Tachiyomi"
|
||||
android:exported="false" />
|
||||
android:exported="false"
|
||||
android:theme="@style/Theme.Tachiyomi" />
|
||||
|
||||
<activity
|
||||
android:name=".ui.webview.WebViewActivity"
|
||||
@ -148,25 +166,25 @@
|
||||
|
||||
<activity
|
||||
android:name=".extension.util.ExtensionInstallActivity"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
||||
android:exported="false" />
|
||||
android:exported="false"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
|
||||
|
||||
<activity
|
||||
android:name=".ui.setting.track.TrackLoginActivity"
|
||||
android:label="@string/track_activity_name"
|
||||
android:exported="true">
|
||||
android:exported="true"
|
||||
android:label="@string/track_activity_name">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
|
||||
<data android:scheme="tachiyomi" />
|
||||
|
||||
<data android:host="anilist-auth" />
|
||||
<data android:host="bangumi-auth" />
|
||||
<data android:host="myanimelist-auth" />
|
||||
<data android:host="shikimori-auth" />
|
||||
|
||||
<data android:scheme="tachiyomi"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
@ -220,9 +238,9 @@
|
||||
<provider
|
||||
android:name="rikka.shizuku.ShizukuProvider"
|
||||
android:authorities="${applicationId}.shizuku"
|
||||
android:multiprocess="false"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:multiprocess="false"
|
||||
android:permission="android.permission.INTERACT_ACROSS_USERS_FULL" />
|
||||
|
||||
<meta-data
|
||||
|
@ -21,6 +21,7 @@ import eu.kanade.domain.source.interactor.SetMigrateSorting
|
||||
import eu.kanade.domain.source.interactor.ToggleLanguage
|
||||
import eu.kanade.domain.source.interactor.ToggleSource
|
||||
import eu.kanade.domain.source.interactor.ToggleSourcePin
|
||||
import eu.kanade.domain.source.interactor.TrustExtension
|
||||
import eu.kanade.domain.track.interactor.AddTracks
|
||||
import eu.kanade.domain.track.interactor.RefreshTracks
|
||||
import eu.kanade.domain.track.interactor.SyncChapterProgressWithTrack
|
||||
@ -170,6 +171,7 @@ class DomainModule : InjektModule {
|
||||
addFactory { ToggleLanguage(get()) }
|
||||
addFactory { ToggleSource(get()) }
|
||||
addFactory { ToggleSourcePin(get()) }
|
||||
addFactory { TrustExtension(get()) }
|
||||
|
||||
addFactory { CreateSourceRepo(get()) }
|
||||
addFactory { DeleteSourceRepo(get()) }
|
||||
|
@ -0,0 +1,27 @@
|
||||
package eu.kanade.domain.source.interactor
|
||||
|
||||
import android.content.pm.PackageInfo
|
||||
import androidx.core.content.pm.PackageInfoCompat
|
||||
import eu.kanade.domain.source.service.SourcePreferences
|
||||
import tachiyomi.core.preference.getAndSet
|
||||
|
||||
class TrustExtension(
|
||||
private val preferences: SourcePreferences,
|
||||
) {
|
||||
|
||||
fun isTrusted(pkgInfo: PackageInfo, signatureHash: String): Boolean {
|
||||
val key = "${pkgInfo.packageName}:${PackageInfoCompat.getLongVersionCode(pkgInfo)}:$signatureHash"
|
||||
return key in preferences.trustedExtensions().get()
|
||||
}
|
||||
|
||||
fun trust(pkgName: String, versionCode: Long, signatureHash: String) {
|
||||
preferences.trustedExtensions().getAndSet { exts ->
|
||||
// Remove previously trusted versions
|
||||
val removed = exts.filter { it.startsWith("$pkgName:") }.toMutableSet()
|
||||
|
||||
removed.also {
|
||||
it += "$pkgName:$versionCode:$signatureHash"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -38,11 +38,14 @@ class SourcePreferences(
|
||||
SetMigrateSorting.Direction.ASCENDING,
|
||||
)
|
||||
|
||||
fun hideInLibraryItems() = preferenceStore.getBoolean("browse_hide_in_library_items", false)
|
||||
|
||||
fun extensionRepos() = preferenceStore.getStringSet("extension_repos", emptySet())
|
||||
|
||||
fun extensionUpdatesCount() = preferenceStore.getInt("ext_updates_count", 0)
|
||||
|
||||
fun trustedSignatures() = preferenceStore.getStringSet(Preference.appStateKey("trusted_signatures"), emptySet())
|
||||
|
||||
fun hideInLibraryItems() = preferenceStore.getBoolean("browse_hide_in_library_items", false)
|
||||
fun trustedExtensions() = preferenceStore.getStringSet(
|
||||
Preference.appStateKey("trusted_extensions"),
|
||||
emptySet(),
|
||||
)
|
||||
}
|
||||
|
@ -133,13 +133,13 @@ private fun ExtensionContent(
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
var trustState by remember { mutableStateOf<Extension.Untrusted?>(null) }
|
||||
val installGranted = rememberRequestPackageInstallsPermissionState()
|
||||
val installGranted = rememberRequestPackageInstallsPermissionState(initialValue = true)
|
||||
|
||||
FastScrollLazyColumn(
|
||||
contentPadding = contentPadding + topSmallPaddingValues,
|
||||
) {
|
||||
if (!installGranted && state.installer?.requiresSystemPermission == true) {
|
||||
item {
|
||||
item(key = "extension-permissions-warning") {
|
||||
WarningBanner(
|
||||
textRes = MR.strings.ext_permission_install_apps_warning,
|
||||
modifier = Modifier.clickable {
|
||||
|
@ -16,16 +16,22 @@ import eu.kanade.tachiyomi.util.system.toast
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import tachiyomi.presentation.core.screens.LoadingScreen
|
||||
|
||||
class ExtensionReposScreen : Screen() {
|
||||
class ExtensionReposScreen(
|
||||
private val url: String? = null,
|
||||
) : Screen() {
|
||||
|
||||
@Composable
|
||||
override fun Content() {
|
||||
val context = LocalContext.current
|
||||
val navigator = LocalNavigator.currentOrThrow
|
||||
val screenModel = rememberScreenModel { ExtensionReposScreenModel() }
|
||||
|
||||
val screenModel = rememberScreenModel { ExtensionReposScreenModel() }
|
||||
val state by screenModel.state.collectAsState()
|
||||
|
||||
LaunchedEffect(url) {
|
||||
url?.let { screenModel.createRepo(it) }
|
||||
}
|
||||
|
||||
if (state is RepoScreenState.Loading) {
|
||||
LoadingScreen()
|
||||
return
|
||||
|
@ -14,11 +14,11 @@ import androidx.lifecycle.DefaultLifecycleObserver
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
|
||||
@Composable
|
||||
fun rememberRequestPackageInstallsPermissionState(): Boolean {
|
||||
fun rememberRequestPackageInstallsPermissionState(initialValue: Boolean = false): Boolean {
|
||||
val context = LocalContext.current
|
||||
val lifecycleOwner = LocalLifecycleOwner.current
|
||||
|
||||
var installGranted by remember { mutableStateOf(false) }
|
||||
var installGranted by remember { mutableStateOf(initialValue) }
|
||||
|
||||
DisposableEffect(lifecycleOwner.lifecycle) {
|
||||
val observer = object : DefaultLifecycleObserver {
|
||||
|
@ -374,13 +374,6 @@ object Migrations {
|
||||
uiPreferences.relativeTime().set(false)
|
||||
}
|
||||
}
|
||||
if (oldVersion < 107) {
|
||||
replacePreferences(
|
||||
preferenceStore = preferenceStore,
|
||||
filterPredicate = { it.key.startsWith("pref_mangasync_") || it.key.startsWith("track_token_") },
|
||||
newKey = { Preference.privateKey(it) },
|
||||
)
|
||||
}
|
||||
if (oldVersion < 113) {
|
||||
val prefsToReplace = listOf(
|
||||
"pref_download_only",
|
||||
@ -407,7 +400,19 @@ object Migrations {
|
||||
}
|
||||
if (oldVersion < 114) {
|
||||
sourcePreferences.extensionRepos().getAndSet {
|
||||
it.map { "https://raw.githubusercontent.com/$it/repo" }.toSet()
|
||||
it.map { repo -> "https://raw.githubusercontent.com/$repo/repo" }.toSet()
|
||||
}
|
||||
}
|
||||
if (oldVersion < 116) {
|
||||
replacePreferences(
|
||||
preferenceStore = preferenceStore,
|
||||
filterPredicate = { it.key.startsWith("pref_mangasync_") || it.key.startsWith("track_token_") },
|
||||
newKey = { Preference.privateKey(it) },
|
||||
)
|
||||
}
|
||||
if (oldVersion < 117) {
|
||||
prefs.edit {
|
||||
remove(Preference.appStateKey("trusted_signatures"))
|
||||
}
|
||||
}
|
||||
return true
|
||||
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.extension
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.drawable.Drawable
|
||||
import eu.kanade.domain.source.interactor.TrustExtension
|
||||
import eu.kanade.domain.source.service.SourcePreferences
|
||||
import eu.kanade.tachiyomi.extension.api.ExtensionApi
|
||||
import eu.kanade.tachiyomi.extension.api.ExtensionUpdateNotifier
|
||||
@ -18,7 +19,6 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.emptyFlow
|
||||
import logcat.LogPriority
|
||||
import tachiyomi.core.preference.plusAssign
|
||||
import tachiyomi.core.util.lang.launchNow
|
||||
import tachiyomi.core.util.lang.withUIContext
|
||||
import tachiyomi.core.util.system.logcat
|
||||
@ -34,13 +34,11 @@ import java.util.Locale
|
||||
* To avoid malicious distribution, every extension must be signed and it will only be loaded if its
|
||||
* signature is trusted, otherwise the user will be prompted with a warning to trust it before being
|
||||
* loaded.
|
||||
*
|
||||
* @param context The application context.
|
||||
* @param preferences The application preferences.
|
||||
*/
|
||||
class ExtensionManager(
|
||||
private val context: Context,
|
||||
private val preferences: SourcePreferences = Injekt.get(),
|
||||
private val trustExtension: TrustExtension = Injekt.get(),
|
||||
) {
|
||||
|
||||
var isInitialized = false
|
||||
@ -249,18 +247,19 @@ class ExtensionManager(
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the given signature to the list of trusted signatures. It also loads in background the
|
||||
* extensions that match this signature.
|
||||
* Adds the given extension to the list of trusted extensions. It also loads in background the
|
||||
* now trusted extensions.
|
||||
*
|
||||
* @param signature The signature to whitelist.
|
||||
* @param extension the extension to trust
|
||||
*/
|
||||
fun trustSignature(signature: String) {
|
||||
val untrustedSignatures = _untrustedExtensionsFlow.value.map { it.signatureHash }.toSet()
|
||||
if (signature !in untrustedSignatures) return
|
||||
fun trust(extension: Extension.Untrusted) {
|
||||
val untrustedPkgNames = _untrustedExtensionsFlow.value.map { it.pkgName }.toSet()
|
||||
if (extension.pkgName !in untrustedPkgNames) return
|
||||
|
||||
preferences.trustedSignatures() += signature
|
||||
trustExtension.trust(extension.pkgName, extension.versionCode, extension.signatureHash)
|
||||
|
||||
val nowTrustedExtensions = _untrustedExtensionsFlow.value.filter { it.signatureHash == signature }
|
||||
val nowTrustedExtensions = _untrustedExtensionsFlow.value
|
||||
.filter { it.pkgName == extension.pkgName && it.versionCode == extension.versionCode }
|
||||
_untrustedExtensionsFlow.value -= nowTrustedExtensions
|
||||
|
||||
launchNow {
|
||||
|
@ -7,6 +7,7 @@ import android.content.pm.PackageManager
|
||||
import android.os.Build
|
||||
import androidx.core.content.pm.PackageInfoCompat
|
||||
import dalvik.system.PathClassLoader
|
||||
import eu.kanade.domain.source.interactor.TrustExtension
|
||||
import eu.kanade.domain.source.service.SourcePreferences
|
||||
import eu.kanade.tachiyomi.extension.model.Extension
|
||||
import eu.kanade.tachiyomi.extension.model.LoadResult
|
||||
@ -15,7 +16,6 @@ import eu.kanade.tachiyomi.source.Source
|
||||
import eu.kanade.tachiyomi.source.SourceFactory
|
||||
import eu.kanade.tachiyomi.util.lang.Hash
|
||||
import eu.kanade.tachiyomi.util.storage.copyAndSetReadOnlyTo
|
||||
import eu.kanade.tachiyomi.util.system.isDevFlavor
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.awaitAll
|
||||
import kotlinx.coroutines.runBlocking
|
||||
@ -41,6 +41,7 @@ import java.io.File
|
||||
internal object ExtensionLoader {
|
||||
|
||||
private val preferences: SourcePreferences by injectLazy()
|
||||
private val trustExtension: TrustExtension by injectLazy()
|
||||
private val loadNsfwSource by lazy {
|
||||
preferences.showNsfwSource().get()
|
||||
}
|
||||
@ -49,8 +50,6 @@ internal object ExtensionLoader {
|
||||
private const val METADATA_SOURCE_CLASS = "tachiyomi.extension.class"
|
||||
private const val METADATA_SOURCE_FACTORY = "tachiyomi.extension.factory"
|
||||
private const val METADATA_NSFW = "tachiyomi.extension.nsfw"
|
||||
private const val METADATA_HAS_README = "tachiyomi.extension.hasReadme"
|
||||
private const val METADATA_HAS_CHANGELOG = "tachiyomi.extension.hasChangelog"
|
||||
const val LIB_VERSION_MIN = 1.4
|
||||
const val LIB_VERSION_MAX = 1.5
|
||||
|
||||
@ -119,12 +118,6 @@ internal object ExtensionLoader {
|
||||
* @param context The application context.
|
||||
*/
|
||||
fun loadExtensions(context: Context): List<LoadResult> {
|
||||
// Always make users trust unknown extensions on cold starts in non-dev builds
|
||||
// due to inherent security risks
|
||||
if (!isDevFlavor) {
|
||||
preferences.trustedSignatures().delete()
|
||||
}
|
||||
|
||||
val pkgManager = context.packageManager
|
||||
|
||||
val installedPkgs = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
@ -262,7 +255,7 @@ internal object ExtensionLoader {
|
||||
if (signatures.isNullOrEmpty()) {
|
||||
logcat(LogPriority.WARN) { "Package $pkgName isn't signed" }
|
||||
return LoadResult.Error
|
||||
} else if (!hasTrustedSignature(signatures)) {
|
||||
} else if (!isTrusted(pkgInfo, signatures)) {
|
||||
val extension = Extension.Untrusted(
|
||||
extName,
|
||||
pkgName,
|
||||
@ -281,9 +274,6 @@ internal object ExtensionLoader {
|
||||
return LoadResult.Error
|
||||
}
|
||||
|
||||
val hasReadme = appInfo.metaData.getInt(METADATA_HAS_README, 0) == 1
|
||||
val hasChangelog = appInfo.metaData.getInt(METADATA_HAS_CHANGELOG, 0) == 1
|
||||
|
||||
val classLoader = try {
|
||||
PathClassLoader(appInfo.sourceDir, null, context.classLoader)
|
||||
} catch (e: Exception) {
|
||||
@ -393,13 +383,12 @@ internal object ExtensionLoader {
|
||||
?.toList()
|
||||
}
|
||||
|
||||
private fun hasTrustedSignature(signatures: List<String>): Boolean {
|
||||
private fun isTrusted(pkgInfo: PackageInfo, signatures: List<String>): Boolean {
|
||||
if (officialSignature in signatures) {
|
||||
return true
|
||||
}
|
||||
|
||||
val trustedSignatures = preferences.trustedSignatures().get()
|
||||
return trustedSignatures.any { signatures.contains(it) }
|
||||
return trustExtension.isTrusted(pkgInfo, signatures.last())
|
||||
}
|
||||
|
||||
private fun isOfficiallySigned(signatures: List<String>): Boolean {
|
||||
|
@ -195,8 +195,8 @@ class ExtensionsScreenModel(
|
||||
}
|
||||
}
|
||||
|
||||
fun trustSignature(signatureHash: String) {
|
||||
extensionManager.trustSignature(signatureHash)
|
||||
fun trustExtension(extension: Extension.Untrusted) {
|
||||
extensionManager.trust(extension)
|
||||
}
|
||||
|
||||
@Immutable
|
||||
|
@ -61,7 +61,7 @@ fun extensionsTab(
|
||||
},
|
||||
onInstallExtension = extensionsScreenModel::installExtension,
|
||||
onOpenExtension = { navigator.push(ExtensionDetailsScreen(it.pkgName)) },
|
||||
onTrustExtension = { extensionsScreenModel.trustSignature(it.signatureHash) },
|
||||
onTrustExtension = { extensionsScreenModel.trustExtension(it) },
|
||||
onUninstallExtension = { extensionsScreenModel.uninstallExtension(it) },
|
||||
onUpdateExtension = extensionsScreenModel::updateExtension,
|
||||
onRefresh = extensionsScreenModel::findAvailableExtensions,
|
||||
|
@ -56,6 +56,7 @@ import eu.kanade.presentation.components.AppStateBanners
|
||||
import eu.kanade.presentation.components.DownloadedOnlyBannerBackgroundColor
|
||||
import eu.kanade.presentation.components.IncognitoModeBannerBackgroundColor
|
||||
import eu.kanade.presentation.components.IndexingBannerBackgroundColor
|
||||
import eu.kanade.presentation.more.settings.screen.browse.ExtensionReposScreen
|
||||
import eu.kanade.presentation.more.settings.screen.data.RestoreBackupScreen
|
||||
import eu.kanade.presentation.util.AssistContentScreen
|
||||
import eu.kanade.presentation.util.DefaultNavigatorScreenTransition
|
||||
@ -446,10 +447,18 @@ class MainActivity : BaseActivity() {
|
||||
null
|
||||
}
|
||||
Intent.ACTION_VIEW -> {
|
||||
// Handling opening of backup files
|
||||
if (intent.data.toString().endsWith(".tachibk")) {
|
||||
navigator.popUntilRoot()
|
||||
navigator.push(RestoreBackupScreen(intent.data.toString()))
|
||||
}
|
||||
// Deep link to add extension repo
|
||||
else if (intent.scheme == "tachiyomi" && intent.data?.host == "add-repo") {
|
||||
intent.data?.getQueryParameter("url")?.let { repoUrl ->
|
||||
navigator.popUntilRoot()
|
||||
navigator.push(ExtensionReposScreen(repoUrl))
|
||||
}
|
||||
}
|
||||
null
|
||||
}
|
||||
else -> return false
|
||||
|
@ -9,7 +9,7 @@
|
||||
<string name="label_backup">Copia de seguridad y restauración</string>
|
||||
<string name="action_settings">Ajustes</string>
|
||||
<string name="action_filter">Filtrar</string>
|
||||
<string name="action_filter_unread">Sin leer</string>
|
||||
<string name="action_filter_unread">Con capítulos sin leer</string>
|
||||
<string name="action_filter_empty">Quitar filtro</string>
|
||||
<string name="action_search">Buscar</string>
|
||||
<string name="action_select_all">Seleccionar todo</string>
|
||||
@ -54,7 +54,7 @@
|
||||
<string name="update_48hour">Cada 2 días</string>
|
||||
<string name="pref_library_update_restriction">Restricciones de actualización automática del dispositivo</string>
|
||||
<string name="charging">Mientras se carga la batería</string>
|
||||
<string name="pref_update_only_non_completed">Omitir entradas marcadas como \"Completado\"</string>
|
||||
<string name="pref_update_only_non_completed">Saltarse títulos cuya publicación haya concluido</string>
|
||||
<string name="pref_auto_update_manga_sync">Actualizar progreso al terminar un capítulo</string>
|
||||
<string name="pref_fullscreen">Pantalla completa</string>
|
||||
<string name="pref_page_transitions">Transiciones de página animadas</string>
|
||||
@ -98,8 +98,8 @@
|
||||
<string name="cookies_cleared">Cookies borradas</string>
|
||||
<string name="pref_clear_database">Borrar la base de datos</string>
|
||||
<string name="pref_clear_database_summary">Borrar el historial de los elementos que no estén guardados en tu biblioteca</string>
|
||||
<string name="clear_database_confirmation">¿Está seguro\? Se perderán los capítulos leídos y el progreso de las entradas que no pertenezcan a la biblioteca</string>
|
||||
<string name="clear_database_completed">Entradas eliminadas</string>
|
||||
<string name="clear_database_confirmation">¿Seguro? Perderás los capítulos leídos y el progreso de los títulos que no pertenezcan a la biblioteca</string>
|
||||
<string name="clear_database_completed">Elementos borrados</string>
|
||||
<string name="version">Versión</string>
|
||||
<string name="pref_enable_acra">Enviar informes de fallos</string>
|
||||
<string name="pref_acra_summary">Ayuda a corregir cualquier error. No se enviará ninguna información personal</string>
|
||||
@ -126,7 +126,7 @@
|
||||
<string name="download_unread">Sin leer</string>
|
||||
<string name="confirm_delete_chapters">¿Seguro que quieres eliminar los capítulos seleccionados\?</string>
|
||||
<string name="reading">Leyendo</string>
|
||||
<string name="completed">Completado</string>
|
||||
<string name="completed">Concluido</string>
|
||||
<string name="dropped">Abandonado</string>
|
||||
<string name="on_hold">En espera</string>
|
||||
<string name="plan_to_read">Para leer luego</string>
|
||||
@ -141,7 +141,7 @@
|
||||
<string name="decode_image_error">No se pudo cargar la imagen</string>
|
||||
<string name="download_queue_error">No se pudieron descargar los capítulos. Puedes volver a intentarlo en la sección de descargas</string>
|
||||
<string name="notification_new_chapters">Nuevos capítulos encontrados</string>
|
||||
<string name="notification_first_add_to_library">Primero tienes que añadir el manga a tu biblioteca</string>
|
||||
<string name="notification_first_add_to_library">Primero tienes que añadir el título a tu biblioteca</string>
|
||||
<string name="file_select_cover">Elige una imagen de portada</string>
|
||||
<string name="file_select_backup">Elige una copia de respaldo</string>
|
||||
<string name="update_check_confirm">Descargar</string>
|
||||
@ -158,7 +158,7 @@
|
||||
<string name="download_notifier_unknown_error">No se ha podido descargar el capítulo debido a un error inesperado</string>
|
||||
<string name="download_notifier_text_only_wifi">No estás conectado a ninguna red Wi-Fi</string>
|
||||
<string name="categories">Categorías</string>
|
||||
<string name="manga">Entradas en la biblioteca</string>
|
||||
<string name="manga">Títulos en la biblioteca</string>
|
||||
<string name="track">Seguimiento</string>
|
||||
<string name="history">Historial</string>
|
||||
<string name="action_filter_bookmarked">Favoritos</string>
|
||||
@ -211,7 +211,7 @@
|
||||
<string name="creating_backup">Creando copia de seguridad</string>
|
||||
<string name="no_more_results">No hay más resultados</string>
|
||||
<string name="local_source">Fuente local</string>
|
||||
<string name="delete_downloads_for_manga">¿Eliminar los capítulos descargados\?</string>
|
||||
<string name="delete_downloads_for_manga">¿Quieres borrar los capítulos descargados?</string>
|
||||
<string name="chapter_paused">Pausado</string>
|
||||
<string name="manga_tracking_tab">Seguimiento</string>
|
||||
<string name="error_category_exists">¡Ya existe una categoría con este nombre!</string>
|
||||
@ -240,7 +240,7 @@
|
||||
<string name="ext_downloading">Descargando</string>
|
||||
<string name="ext_installing">Instalando</string>
|
||||
<string name="ext_installed">Instalado</string>
|
||||
<string name="ext_trust">Confiable</string>
|
||||
<string name="ext_trust">Confiar</string>
|
||||
<string name="ext_untrusted">No confiable</string>
|
||||
<string name="ext_uninstall">Desinstalar</string>
|
||||
<string name="untrusted_extension">Extensión no confiable</string>
|
||||
@ -252,11 +252,11 @@
|
||||
<string name="transition_no_previous">No hay ningún capítulo anterior</string>
|
||||
<string name="migrate">Migrar</string>
|
||||
<string name="copy">Copiar</string>
|
||||
<string name="untrusted_extension_message">Esta extensión fue firmada por un autor desconocido y no fue cargada.
|
||||
<string name="untrusted_extension_message">Esta extensión tiene una firma de un autor desconocido y no se ha podido cargar.
|
||||
\n
|
||||
\nLas extensiones maliciosas pueden leer cualquier credencial de inicio de sesión almacenada o ejecutar código arbitrario.
|
||||
\nUna extensión maliciosa puede leer credenciales de inicio guardadas o ejecutar cualquier tipo de código en tu dispositivo.
|
||||
\n
|
||||
\nAl confiar en el certificado de esta extensión, aceptas estos riesgos.</string>
|
||||
\nAl confiar en este certificado aceptas estos riesgos.</string>
|
||||
<string name="double_tap_anim_speed_0">Sin animación</string>
|
||||
<string name="manga_added_library">Añadido a biblioteca</string>
|
||||
<string name="manga_removed_library">Quitado de biblioteca</string>
|
||||
@ -302,9 +302,9 @@
|
||||
<string name="action_sort_latest_chapter">Por capítulo más reciente</string>
|
||||
<string name="action_view_chapters">Ver capítulos</string>
|
||||
<string name="action_cancel_all">Cancelar todo</string>
|
||||
<string name="theme_light">Colores claros</string>
|
||||
<string name="theme_dark">Colores oscuros</string>
|
||||
<string name="theme_system">Colores del sistema</string>
|
||||
<string name="theme_light">Claros</string>
|
||||
<string name="theme_dark">Oscuros</string>
|
||||
<string name="theme_system">Del sistema</string>
|
||||
<string name="pref_manage_notifications">Gestionar notificaciones</string>
|
||||
<string name="pref_category_security">Seguridad y privacidad</string>
|
||||
<string name="lock_with_biometrics">Desbloqueo biométrico</string>
|
||||
@ -376,7 +376,7 @@
|
||||
<string name="label_data">Datos</string>
|
||||
<string name="backup_restore_missing_sources">Fuentes que faltan:</string>
|
||||
<string name="invalid_backup_file_missing_manga">La copia de seguridad no contiene ningun elemento; la biblioteca está vacía.</string>
|
||||
<string name="invalid_backup_file">El archivo de copia de seguridad es inválido:</string>
|
||||
<string name="invalid_backup_file">El archivo de copia de seguridad no parece estar bien:</string>
|
||||
<string name="pref_library_update_refresh_metadata_summary">Comprueba si hay una nueva portada, información y descripción al actualizar la biblioteca</string>
|
||||
<string name="pref_library_update_refresh_metadata">Actualizar automáticamente los metadatos</string>
|
||||
<string name="action_display_comfortable_grid">Cuadrícula amplia</string>
|
||||
@ -405,7 +405,7 @@
|
||||
<string name="download_insufficient_space">No se pudo descargar ningún capítulo, queda muy poco espacio</string>
|
||||
<string name="action_global_search_query">Buscar por «%1$s» en todas las fuentes</string>
|
||||
<string name="pref_category_reading_mode">Modo de lectura</string>
|
||||
<string name="pref_category_theme">Tema de colores</string>
|
||||
<string name="pref_category_theme">Esquema de colores</string>
|
||||
<string name="action_sort_date_added">Por fecha en la biblioteca</string>
|
||||
<string name="no_pinned_sources">Todavía no has anclado ninguna fuente</string>
|
||||
<string name="channel_complete">Terminadas</string>
|
||||
@ -554,22 +554,22 @@
|
||||
<string name="channel_app_updates">Actualizaciones de la aplicación</string>
|
||||
<string name="pref_auto_clear_chapter_cache">Limpiar la caché de capítulos al abrir la aplicación</string>
|
||||
<string name="database_clean">Base de datos limpia</string>
|
||||
<string name="clear_database_source_item_count">%1$d entradas que no pertenecen a la biblioteca en la base de datos</string>
|
||||
<string name="clear_database_source_item_count">%1$d títulos que no pertenecen a la biblioteca en la base de datos</string>
|
||||
<string name="extension_api_error">No se pudo descargar el listado de extensiones</string>
|
||||
<string name="privacy_policy">Política de privacidad</string>
|
||||
<string name="pref_update_only_completely_read">Omitir entradas con capítulos no leídos</string>
|
||||
<string name="pref_update_only_completely_read">Saltarse títulos con capítulos por leer</string>
|
||||
<string name="library_errors_help">Si necesitas ayuda para resolver los errores de actualización de la biblioteca mira en %1$s</string>
|
||||
<string name="save_chapter_as_cbz">Guardar como archivo CBZ</string>
|
||||
<string name="on_hiatus">En pausa</string>
|
||||
<string name="publishing_finished">Serie terminada</string>
|
||||
<string name="publishing_finished">Publicación finalizada</string>
|
||||
<string name="cancelled">Cancelada</string>
|
||||
<string name="action_show_manga">Mostrar el elemento</string>
|
||||
<string name="pref_navigate_pan">Desplazarse por el resto de la página antes de cambiar</string>
|
||||
<string name="action_display_cover_only_grid">Cuadrícula sólo de portadas</string>
|
||||
<string name="pref_landscape_zoom">Acercar la vista en horizontal</string>
|
||||
<string name="pref_update_only_started">Omitir entradas sin lectura iniciada</string>
|
||||
<string name="pref_update_only_started">Saltarse títulos sin empezar</string>
|
||||
<string name="skipped_reason_completed">Omitido, ya que su publicación ha terminado</string>
|
||||
<string name="skipped_reason_not_caught_up">Omitido porque hay capítulos sin leer</string>
|
||||
<string name="skipped_reason_not_caught_up">Omitido porque todavía hay capítulos sin leer</string>
|
||||
<string name="skipped_reason_not_started">Omitido porque no hay capítulos leídos</string>
|
||||
<string name="learn_more">Ver más detalles</string>
|
||||
<string name="notification_update_error">Actualizaciones fallidas: %1$d</string>
|
||||
@ -600,7 +600,7 @@
|
||||
<string name="ext_info_age_rating">Clasificación por edades</string>
|
||||
<string name="reading_list">Leyendo</string>
|
||||
<string name="wish_list">A leer en un futuro</string>
|
||||
<string name="complete_list">Manga terminado</string>
|
||||
<string name="complete_list">Leídos del todo</string>
|
||||
<string name="on_hold_list">En pausa</string>
|
||||
<string name="unfinished_list">Sin terminar</string>
|
||||
<string name="network_not_metered">Solo en conexiones no medidas</string>
|
||||
@ -613,15 +613,15 @@
|
||||
<string name="delete_category">Borrar categoría</string>
|
||||
<string name="delete_category_confirmation">¿Quieres borrar la categoría «%s»\?</string>
|
||||
<string name="internal_error">ErrorInterno: Mira el registro de depuración para más información</string>
|
||||
<string name="pref_user_agent_string">User agent predeterminado</string>
|
||||
<string name="pref_reset_user_agent_string">Restablecer user agent predeterminado</string>
|
||||
<string name="pref_user_agent_string">Identificarse como otro navegador web («user agent»)</string>
|
||||
<string name="pref_reset_user_agent_string">Volver a la identificación de navegador («user agent») original</string>
|
||||
<string name="action_remove_everything">Quitar todo</string>
|
||||
<string name="loader_rar5_error">La app no soporta el formato RARv5</string>
|
||||
<string name="appwidget_updates_description">Aquí aparecerá el contenido más reciente de tu biblioteca</string>
|
||||
<string name="appwidget_unavailable_locked">El widget no está disponible cuando el bloqueo de aplicación está activo</string>
|
||||
<string name="update_already_running">Ya se está actualizando</string>
|
||||
<string name="theme_tidalwave">Marea</string>
|
||||
<string name="error_user_agent_string_blank">El valor del user agent no puede estar en blanco</string>
|
||||
<string name="error_user_agent_string_blank">La cadena con el agente de usuario («user agent») no puede estar vacía</string>
|
||||
<string name="download_ahead_info">Solo funciona si el capítulo actual y el que va después ya están descargados.</string>
|
||||
<string name="download_ahead">Descargar por adelantado</string>
|
||||
<string name="auto_download_while_reading">Descarga los capítulos siguientes mientras lees</string>
|
||||
@ -648,7 +648,7 @@
|
||||
<string name="unknown_title">Título desconocido</string>
|
||||
<string name="invalid_location">Ubicación incorrecta: %s</string>
|
||||
<string name="updates_last_update_info_just_now">Ahora mismo</string>
|
||||
<string name="error_user_agent_string_invalid">Valor de user agent inválido</string>
|
||||
<string name="error_user_agent_string_invalid">La cadena con el agente de usuario («user agent») no parece ser correcta</string>
|
||||
<string name="download_notifier_cache_renewal">Reindexando descargas</string>
|
||||
<string name="action_open_random_manga">Abrir un elemento al azar</string>
|
||||
<string name="information_no_entries_found">Parece que esta categoría está vacía</string>
|
||||
@ -662,7 +662,7 @@
|
||||
<string name="pref_invalidate_download_cache_summary">Forzar a la aplicación a volver a comprobar los capítulos descargados</string>
|
||||
<string name="label_started">Empezados</string>
|
||||
<string name="label_local">En el dispositivo</string>
|
||||
<string name="label_completed_titles">Manga completado</string>
|
||||
<string name="label_completed_titles">Leídos del todo</string>
|
||||
<string name="label_read_duration">Tiempo de lectura</string>
|
||||
<string name="label_read_chapters">Leídos</string>
|
||||
<string name="label_tracker_section">Con seguimiento</string>
|
||||
@ -674,15 +674,15 @@
|
||||
<string name="minute_short">%dm</string>
|
||||
<string name="label_used">En uso</string>
|
||||
<string name="not_applicable">No disponible</string>
|
||||
<string name="label_tracked_titles">Manga en servicios de seguimiento</string>
|
||||
<string name="label_tracked_titles">En servicios de seguimiento</string>
|
||||
<string name="label_downloaded">Descargados</string>
|
||||
<string name="label_stats">Estadísticas</string>
|
||||
<string name="label_overview_section">Resumen</string>
|
||||
<string name="label_titles_section">Manga</string>
|
||||
<string name="label_titles_section">Títulos</string>
|
||||
<string name="seconds_short">%ds</string>
|
||||
<string name="action_not_now">Ahora no</string>
|
||||
<string name="information_no_manga_category">La categoría está vacía</string>
|
||||
<string name="pref_library_update_show_tab_badge">Mostrar el número de capítulos por leer en el icono de actualizaciones</string>
|
||||
<string name="pref_library_update_show_tab_badge">Ver número de capítulos por leer en el icono de actualizaciones</string>
|
||||
<string name="copied_to_clipboard_plain">Se ha copiado al portapapeles</string>
|
||||
<string name="pref_skip_dupe_chapters">Saltarse los capítulos repetidos</string>
|
||||
<string name="enhanced_services_not_installed">Está disponible, pero la fuente todavía no se ha instalado: %s</string>
|
||||
@ -698,7 +698,7 @@
|
||||
<string name="overlay_header">Superposición</string>
|
||||
<string name="pref_page_rotate">Girar las páginas anchas para adaptarlas a la pantalla</string>
|
||||
<string name="pref_page_rotate_invert">Girar las páginas anchas en la dirección opuesta</string>
|
||||
<string name="pref_debug_info">Información sobre la depuración</string>
|
||||
<string name="pref_debug_info">Información de depuración</string>
|
||||
<string name="pref_chapter_swipe">Deslizamiento de dedo en capítulos</string>
|
||||
<string name="pref_chapter_swipe_start">Deslizar a la izquierda</string>
|
||||
<string name="pref_chapter_swipe_end">Deslizar a la derecha</string>
|
||||
@ -706,7 +706,7 @@
|
||||
<string name="pref_library_columns_per_row">%d por fila</string>
|
||||
<string name="action_filter_interval_late">Tras 10 o más días</string>
|
||||
<string name="action_sort_next_updated">Próxima actualización prevista</string>
|
||||
<string name="pref_update_only_in_release_period">Prever la fecha del próximo lanzamiento</string>
|
||||
<string name="pref_update_only_in_release_period">Intentar predecir cuándo sale el siguiente número</string>
|
||||
<string name="intervals_header">Intervalos</string>
|
||||
<string name="action_filter_interval_passed">Ha pasado el período de comprobación</string>
|
||||
<string name="manga_display_interval_title">Estimar cada</string>
|
||||
@ -770,15 +770,15 @@
|
||||
<string name="onboarding_guides_returning_user">¿No es la primera vez que instalas %s?</string>
|
||||
<string name="onboarding_action_skip">Saltar</string>
|
||||
<string name="onboarding_action_next">Siguiente</string>
|
||||
<string name="onboarding_description">Lo primero de todo es poner las cosas a tu gusto. Siempre puedes volver a cambiarlas más tarde en los ajustes.</string>
|
||||
<string name="no_location_set">Todavía no has proporcionado una ubicación de almacenamiento</string>
|
||||
<string name="onboarding_description">Lo primero de todo es dejar las cosas a tu gusto. Siempre puedes volver a cambiarlas más tarde en los ajustes.</string>
|
||||
<string name="no_location_set">Todavía no has proporcionado ninguna carpeta</string>
|
||||
<string name="onboarding_storage_info">Selecciona una carpeta donde %1$s almacenará las descargas de capítulos, copias de seguridad y otras cosas.
|
||||
\n
|
||||
\nTe recomendamos que sea solo para %1$s.
|
||||
\n
|
||||
\nCarpeta seleccionada: %2$s</string>
|
||||
<string name="onboarding_permission_install_apps">Permiso para instalar aplicaciones</string>
|
||||
<string name="onboarding_permission_notifications">Permiso de notificación</string>
|
||||
<string name="onboarding_permission_notifications">Permiso para mostrar notificaciones</string>
|
||||
<string name="onboarding_permission_ignore_battery_opts_description">Previene cortes y retrasos al procesar tareas en segundo plano que tarden un poco; como al buscar y descargar contenido nuevo, así como al restaurar copias de respaldo.</string>
|
||||
<string name="onboarding_permission_ignore_battery_opts">Uso de batería en segundo plano</string>
|
||||
<string name="onboarding_permission_install_apps_description">Para instalar extensiones que te permiten buscar y descargar contenido.</string>
|
||||
@ -787,19 +787,21 @@
|
||||
<string name="available_disk_space_info">Disponible: %1$s / Total: %2$s</string>
|
||||
<string name="ext_permission_install_apps_warning">Toca aquí para conceder los permisos necesarios para instalar extensiones.</string>
|
||||
<string name="private_settings">Incluir datos privados, como las claves de inicio de sesión en plataformas de seguimiento</string>
|
||||
<string name="invalid_backup_file_error">Error completo:</string>
|
||||
<string name="invalid_backup_file_error">Descripción completa del problema:</string>
|
||||
<string name="manga_interval_expected_update">Próxima actualización prevista en torno a %1$s, revisando cada %2$s</string>
|
||||
<string name="repo_extension_message">Esta extensión proviene de un repositorio externo. Toca para ver el repositorio.</string>
|
||||
<string name="repo_extension_message">Esta extensión proviene de un repositorio externo. Toca para verlo.</string>
|
||||
<string name="manga_interval_custom_amount">Frecuencia de actualización personalizada:</string>
|
||||
<string name="error_repo_exists">¡Este repositorio ya existe!</string>
|
||||
<string name="pref_library_update_smart_update">Actualización inteligente</string>
|
||||
<string name="invalid_repo_name">URL de repositorio inválida</string>
|
||||
<string name="action_add_repo_message">Agregar repositorios adicionales a Tachiyomi. La URL debe terminar con \"index.min.json\".</string>
|
||||
<string name="delete_repo_confirmation">¿Deseas eliminar el repositorio \"%s\"?</string>
|
||||
<string name="action_delete_repo">Eliminar repositorio</string>
|
||||
<string name="error_repo_exists">El repositorio ya existe</string>
|
||||
<string name="pref_library_update_smart_update">Actualizaciones inteligentes</string>
|
||||
<string name="invalid_repo_name">La dirección URL del repositorio no parece ser correcta</string>
|
||||
<string name="action_add_repo_message">Añade más repositorios a Tachiyomi; la dirección URL tiene que terminar en «index.min.json».</string>
|
||||
<string name="delete_repo_confirmation">¿Seguro que quieres borrar el repositorio «%s»?</string>
|
||||
<string name="action_delete_repo">Borrar repositorio</string>
|
||||
<string name="manga_interval_header">Próxima actualización</string>
|
||||
<string name="action_add_repo">Agregar repositorio</string>
|
||||
<string name="information_empty_repos">No tienes repositorios agregados.</string>
|
||||
<string name="action_add_repo">Añadir un repositorio</string>
|
||||
<string name="information_empty_repos">Todavía no has añadido ningún repositorio.</string>
|
||||
<string name="label_extension_repos">Repositorios de extensiones</string>
|
||||
<string name="label_add_repo_input">URL del repositorio</string>
|
||||
<string name="label_add_repo_input">Dirección URL del repositorio</string>
|
||||
<string name="onboarding_storage_help_info">¿Acabas de actualizar desde una versión más antigua y no sabes qué hacer? Échale un vistazo a la guía de almacenamiento.</string>
|
||||
<string name="onboarding_storage_help_action">Guía de almacenamiento</string>
|
||||
</resources>
|
@ -180,11 +180,11 @@
|
||||
<string name="pref_fullscreen">Naka-fullscreen</string>
|
||||
<string name="unofficial_extension_message">Wala sa opisyal na listahan ang extension na ito.</string>
|
||||
<string name="obsolete_extension_message">Hindi na available ang extension na ito. Maaaring hindi ito gumana nang maayos at maaaring magdulot ng mga isyu sa app. Inirerekomenda ang pag-uninstall nito.</string>
|
||||
<string name="untrusted_extension_message">Pinirmahan ang extension na ito gamit ang isang kaduda-dudang certificate at hindi muna pinagana.
|
||||
<string name="untrusted_extension_message">Ang extension na ito ay nilagdaan ng sinumang hindi kilalang author at hindi na-load.
|
||||
\n
|
||||
\nMaaaring mabasa ng isang kaduda-dudang extension ang kahit anong nakatagong credentials sa pag-login o di kaya nama\'y magsimula ng delikadong code.
|
||||
\nMaaaring basahin ng mga nakakahamak na extension ang anumang nakatagong kredensyal sa pag-log in o magsagawa ng arbitrary code.
|
||||
\n
|
||||
\nTinatanggap mo ang mga bantang ito sa pagtiwala sa certificate na ito.</string>
|
||||
\nSa pamamagitan ng pagtitiwala sa certificate ng extension na ito, tinatanggap mo ang mga panganib na ito.</string>
|
||||
<string name="untrusted_extension">Di-pinagkakatiwalaang extension</string>
|
||||
<string name="ext_uninstall">I-uninstall</string>
|
||||
<string name="ext_trust">Tiwala</string>
|
||||
@ -203,7 +203,7 @@
|
||||
<string name="default_category">Default na kategorya</string>
|
||||
<string name="pref_library_update_refresh_metadata_summary">Maghanap ng mga bagong cover at detalye kapag nag-a-update ng Aklatan</string>
|
||||
<string name="pref_library_update_refresh_metadata">Awtomatikong i-refresh ang metadata</string>
|
||||
<string name="pref_update_only_non_completed">May \"Kumpleto\" na estado</string>
|
||||
<string name="pref_update_only_non_completed">Laktawan ang mga entry na may katayuang \"Nakumpleto\"</string>
|
||||
<string name="charging">Kapag naka-charge</string>
|
||||
<string name="pref_library_update_restriction">Awtomatikong ina-update ang mga paghihigpit sa device</string>
|
||||
<string name="update_weekly">Linggo-linggo</string>
|
||||
@ -223,8 +223,8 @@
|
||||
<string name="secure_screen">Bantayan ang screen</string>
|
||||
<string name="pref_read_with_tapping_inverted">Baligtarin ang mga tap zone</string>
|
||||
<string name="backup_restore_missing_sources">Nawawalang mga source:</string>
|
||||
<string name="invalid_backup_file_missing_manga">Hindi naglalaman ang backup ng kahit anong mga entry sa Aklatan.</string>
|
||||
<string name="invalid_backup_file">Invalid na backup</string>
|
||||
<string name="invalid_backup_file_missing_manga">Hindi naglalaman ang backup ng kahit anong mga entry sa aklatan.</string>
|
||||
<string name="invalid_backup_file">Imbalidong backup file:</string>
|
||||
<string name="backup_created">Nai-backup na</string>
|
||||
<string name="pref_backup_interval">Awtomatikong dalas ng pag-backup</string>
|
||||
<string name="pref_restore_backup_summ">I-restore ang Aklatan mula sa backup</string>
|
||||
@ -389,7 +389,7 @@
|
||||
<string name="pref_clear_database_summary">Burahin ang nakaraan ng mga entry na hindi naka-save sa aklatan mo</string>
|
||||
<string name="pref_clear_database">Linisin ang database</string>
|
||||
<string name="cache_delete_error">Nagka-error habang nililinis</string>
|
||||
<string name="cache_deleted">Nalinis na ang cache. Binura ang %1$d (na) file</string>
|
||||
<string name="cache_deleted">Na-clear ang cache, na-delete ang %1$d na file</string>
|
||||
<string name="used_cache">Nagamit: %1$s</string>
|
||||
<string name="pref_clear_chapter_cache">Linisin ang cache ng kabanata</string>
|
||||
<string name="label_data">Data</string>
|
||||
@ -457,9 +457,7 @@
|
||||
<string name="action_display_show_number_of_items">Ipakita ang bilang ng mga item</string>
|
||||
<string name="pref_dual_page_invert_summary">Kung sakaling hindi sumasakto sa direksyon ng pagbabasa ang paghahati sa malalapad na pahina</string>
|
||||
<string name="pref_dual_page_invert">Baligtarin ang paghahati sa pahina</string>
|
||||
<string name="backup_restore_content_full">Ire-restore ang mga datos mula sa backup file.
|
||||
\n
|
||||
\nKailangan mong i-install muli ang mga nawawalang extension at mag-login muli sa mga tracker pagkatapos para magamit ang mga ito.</string>
|
||||
<string name="backup_restore_content_full">Kailangan mong i-install muli ang mga nawawalang extension at mag-login muli sa mga tracker pagkatapos para magamit ang mga ito.</string>
|
||||
<string name="pref_dns_over_https">DNS kesa HTTPS (DoH)</string>
|
||||
<string name="pref_download_new_categories_details">Ang mga entry sa mga ibinukod na kategorya ay hindi mada-download kahit na sila ay kasama rin sa mga kategoryang kasama.</string>
|
||||
<string name="pref_category_auto_download">Kusang pag-download</string>
|
||||
@ -491,7 +489,7 @@
|
||||
<string name="restrictions">Restriksyon: %s</string>
|
||||
<string name="error_no_match">Walang nahanap na kapares</string>
|
||||
<string name="date">Petsa</string>
|
||||
<string name="local_invalid_format">Invalid na format ng kabanata</string>
|
||||
<string name="local_invalid_format">Imbalidong format ng kabanata</string>
|
||||
<string name="chapter_not_found">Hindi makita ang kabanata</string>
|
||||
<string name="source_unsupported">Di suportado ang source</string>
|
||||
<string name="unread">Di pa nabasa</string>
|
||||
@ -560,7 +558,7 @@
|
||||
<string name="extension_api_error">Bigong makuha ang listahan ng mga extension</string>
|
||||
<string name="privacy_policy">Patakaran sa Pagkapribado</string>
|
||||
<string name="library_errors_help">Para sa tulong sa pag-aayos ng mga error sa pag-update ng aklatan, tingnan ang %1$s</string>
|
||||
<string name="pref_update_only_completely_read">May di pa nababasang kabanata</string>
|
||||
<string name="pref_update_only_completely_read">Laktawan ang mga entry na hindi pa nababasang kabanata</string>
|
||||
<string name="save_chapter_as_cbz">I-save bilang CBZ archive</string>
|
||||
<string name="publishing_finished">Tapos na\'ng mailathala</string>
|
||||
<string name="on_hiatus">Naka-hiatus</string>
|
||||
@ -568,7 +566,7 @@
|
||||
<string name="action_show_manga">Ipakita ang entry</string>
|
||||
<string name="action_display_cover_only_grid">Pabalat lang</string>
|
||||
<string name="skipped_reason_completed">Nilaktawan dahil kumpleto na ang serye</string>
|
||||
<string name="pref_update_only_started">Hindi pa nasisimulan</string>
|
||||
<string name="pref_update_only_started">Laktawan ang hindi nasimulang mga entry</string>
|
||||
<string name="skipped_reason_not_caught_up">Nilaktawan dahil may di pa nabasang mga kabanata</string>
|
||||
<string name="skipped_reason_not_started">Nilaktawan dahil wala pang nabasang mga kabanata</string>
|
||||
<string name="pref_landscape_zoom">Awtomatikong mag-zoom sa mga malalawak na larawan</string>
|
||||
@ -649,7 +647,7 @@
|
||||
<string name="crash_screen_restart_application">Buksan muli ang app</string>
|
||||
<string name="invalid_location">Invalid na lugar: %s</string>
|
||||
<string name="unknown_title">Di alam na pamagat</string>
|
||||
<string name="error_user_agent_string_invalid">Invalid na string ng user agent</string>
|
||||
<string name="error_user_agent_string_invalid">Di-wastong string ng user agent</string>
|
||||
<string name="updates_last_update_info_just_now">Ngayon lang</string>
|
||||
<string name="download_notifier_cache_renewal">Tinitignan ang mga download</string>
|
||||
<string name="information_no_entries_found">Walang mga entry ang nahanap sa kategoryang ito</string>
|
||||
@ -715,7 +713,7 @@
|
||||
<string name="action_filter_interval_long">Kunin kada buwan (kada ika-28 na araw)</string>
|
||||
<string name="manga_display_interval_title">Tantyahin bawat</string>
|
||||
<string name="manga_display_modified_interval_title">Itakdang i-update bawat</string>
|
||||
<string name="pref_update_only_in_release_period">Sa labas ng inaasahang release period</string>
|
||||
<string name="pref_update_only_in_release_period">Hulaan ang susunod na oras ng release</string>
|
||||
<string name="intervals_header">Mga pagitan</string>
|
||||
<string name="skipped_reason_not_in_release_period">Nilaktawan dahil walang inaasahang release ngayong araw</string>
|
||||
<string name="has_results">May mga resulta</string>
|
||||
@ -746,7 +744,7 @@
|
||||
<string name="file_null_uri_error">Ang file picker ay nabigo na ibalik ang file sa app</string>
|
||||
<string name="label_data_storage">Data at storage</string>
|
||||
<string name="pref_flash_page_summ">Binabawasan ang ghosting sa mga e-ink na display</string>
|
||||
<string name="pref_flash_page">Mag-flash ng puti kada pagbabago ng pahina</string>
|
||||
<string name="pref_flash_page">Mag-flash kada pumalit ng pahina</string>
|
||||
<string name="relative_time_span_never">Hindi kailanman</string>
|
||||
<string name="last_auto_backup_info">Huling awtomatikong na-back up: %s</string>
|
||||
<string name="pref_storage_usage">Paggamit ng storage</string>
|
||||
@ -769,7 +767,7 @@
|
||||
<string name="onboarding_action_finish">Magsimula</string>
|
||||
<string name="onboarding_storage_selection_required">Dapat pumili ng isang folder</string>
|
||||
<string name="onboarding_heading">Maligayang pagdating!</string>
|
||||
<string name="onboarding_guides_returning_user">Gumagamit ba ng %s dati?</string>
|
||||
<string name="onboarding_guides_returning_user">Muling pag-install ng %s?</string>
|
||||
<string name="onboarding_action_skip">Laktawan</string>
|
||||
<string name="onboarding_action_next">Susunod</string>
|
||||
<string name="onboarding_description">Mag-set up muna tayo ng ilang bagay. Maaari mo ring baguhin ang mga ito anumang oras sa mga setting sa ibang pagkakataon.</string>
|
||||
@ -787,8 +785,23 @@
|
||||
<string name="onboarding_permission_notifications_description">Maabisuhan para sa mga update sa aklatan at higit pa.</string>
|
||||
<string name="onboarding_permission_action_grant">Payagan</string>
|
||||
<string name="available_disk_space_info">Na magagamit: %1$s / Kabuuan: %2$s</string>
|
||||
<string name="manga_interval_expected_update">Inaasahan ang susunod na update sa humigit-kumulang %s</string>
|
||||
<string name="manga_interval_expected_update">Inaasahan ang susunod na update sa humigit-kumulang %1$s, na tumitingin sa bawat %2$s</string>
|
||||
<string name="invalid_backup_file_error">Buong error:</string>
|
||||
<string name="ext_permission_install_apps_warning">Kinakailangan ng permiso para mag-install ng mga extension. I-tap upang mapayagan ito.</string>
|
||||
<string name="private_settings">Kasali ang mga sensitibong setting (hal., mga tracker login token)</string>
|
||||
<string name="onboarding_storage_help_info">Nag-a-update mula sa isang mas lumang bersyon at hindi sigurado kung ano ang pipiliin? Sumangguni sa gabay sa storage para sa higit pang impormasyon.</string>
|
||||
<string name="pref_library_update_smart_update">Matalas na pag-update</string>
|
||||
<string name="information_empty_repos">Wala kang na-set na repo.</string>
|
||||
<string name="action_add_repo">Magdagdag ng repo</string>
|
||||
<string name="label_extension_repos">Mga repo ng extension</string>
|
||||
<string name="onboarding_storage_help_action">Gabay sa storage</string>
|
||||
<string name="error_repo_exists">Umiiral na ang repo na ito!</string>
|
||||
<string name="action_delete_repo">Tanggalin ang repo</string>
|
||||
<string name="label_add_repo_input">URL ng repo</string>
|
||||
<string name="action_add_repo_message">Magdagdag ng mga karagdagang repo sa Tachiyomi. Dapat ito ay isang URL na nagtatapos sa \"index.min.json\".</string>
|
||||
<string name="repo_extension_message">Ang extension na ito ay nagmula sa isang external na repo. I-tap para tignan ang repo.</string>
|
||||
<string name="invalid_repo_name">Di-wastong URL ng repo</string>
|
||||
<string name="manga_interval_header">Susunod na update</string>
|
||||
<string name="delete_repo_confirmation">Gusto mo bang tanggalin ang repo na \"%s\"?</string>
|
||||
<string name="manga_interval_custom_amount">Ipasadya ang update frequency:</string>
|
||||
</resources>
|
@ -80,4 +80,9 @@
|
||||
<item quantity="many">%d jours</item>
|
||||
<item quantity="other">%d jours</item>
|
||||
</plurals>
|
||||
<plurals name="num_repos">
|
||||
<item quantity="one">%d dépôt</item>
|
||||
<item quantity="many">%d dépôts</item>
|
||||
<item quantity="other">%d dépôts</item>
|
||||
</plurals>
|
||||
</resources>
|
@ -557,7 +557,7 @@
|
||||
<string name="database_clean">Rien à effacer</string>
|
||||
<string name="extension_api_error">Échec de la récupération de la liste des extensions</string>
|
||||
<string name="privacy_policy">Politique de confidentialité</string>
|
||||
<string name="pref_update_only_completely_read">Avec des chapitres non lus</string>
|
||||
<string name="pref_update_only_completely_read">Avec chapitre(s) non lu(s)</string>
|
||||
<string name="save_chapter_as_cbz">Enregistrer comme archive CBZ</string>
|
||||
<string name="library_errors_help">Pour savoir comment corriger les erreurs de mise à jour de la bibliothèque, voir %1$s</string>
|
||||
<string name="on_hiatus">En pause</string>
|
||||
@ -709,7 +709,7 @@
|
||||
<string name="action_filter_interval_dropped">Abandonné \? En retard de 20+ et 2 mois</string>
|
||||
<string name="action_filter_interval_passed">Période de contrôle réussie</string>
|
||||
<string name="action_sort_next_updated">Prochaine mise à jour prévue</string>
|
||||
<string name="pref_update_only_in_release_period">Période de diffusion prévue</string>
|
||||
<string name="pref_update_only_in_release_period">Prochaine sortie prévue dans :</string>
|
||||
<string name="action_set_interval">Définir l\'intervalle</string>
|
||||
<string name="action_ok">Valider</string>
|
||||
<string name="action_filter_interval_custom">Intervalle de recherche personnalisé</string>
|
||||
@ -758,4 +758,21 @@
|
||||
<string name="ext_permission_install_apps_warning">Des permissions sont nécessaires pour installer des extensions. Appuyer ici pour les accorder.</string>
|
||||
<string name="onboarding_permission_action_grant">Accorder</string>
|
||||
<string name="pref_relative_format">Durées relatives</string>
|
||||
<string name="onboarding_permission_notifications">Permission de notifications</string>
|
||||
<string name="onboarding_permission_ignore_battery_opts">Utilisation de la batterie en arrière-plan</string>
|
||||
<string name="onboarding_permission_install_apps_description">Pour installer des extensions de source.</string>
|
||||
<string name="onboarding_permission_ignore_battery_opts_description">Évite les interruptions des longues mises à jour de bibliothèque, téléchargements de chapitres et restaurations de sauvegardes.</string>
|
||||
<string name="onboarding_permission_install_apps">Permission d\'installer des applications</string>
|
||||
<string name="onboarding_storage_help_info">Mise à jour depuis une ancienne version et pas sûr de quoi choisir ? Consultez le guide de stockage pour plus d\'informations.</string>
|
||||
<string name="onboarding_storage_help_action">Guide de stockage</string>
|
||||
<string name="onboarding_permission_notifications_description">Soyez notifié des mises à jour de la bibliothèque et autre.</string>
|
||||
<string name="pref_library_update_smart_update">Mise à jour intelligente</string>
|
||||
<string name="pref_onboarding_guide">Guide de démarrage</string>
|
||||
<string name="onboarding_description">Commençons par paramétrer certaines choses. Vous pouvez toujours changer ces paramètres plus tard.</string>
|
||||
<string name="onboarding_storage_info">Sélectionnez un dossier où %1$s stockera les chapitres téléchargés, les sauvegardes et plus encore.
|
||||
\n
|
||||
\nUn dossier dédié est recommandé.
|
||||
\n
|
||||
\nDossier sélectionné : %2$s</string>
|
||||
<string name="onboarding_storage_action_select">Sélectionnez un dossier</string>
|
||||
</resources>
|
@ -48,4 +48,7 @@
|
||||
<plurals name="day">
|
||||
<item quantity="other">%d hari</item>
|
||||
</plurals>
|
||||
<plurals name="num_repos">
|
||||
<item quantity="other">%d repo</item>
|
||||
</plurals>
|
||||
</resources>
|
@ -78,7 +78,7 @@
|
||||
<string name="all">Semua</string>
|
||||
<string name="pref_library_update_restriction">Pembatasan pembaruan otomatis</string>
|
||||
<string name="charging">Saat mengisi daya</string>
|
||||
<string name="pref_update_only_non_completed">Dengan status \"Selesai\"</string>
|
||||
<string name="pref_update_only_non_completed">Lewati daftar dengan status \"Selesai\"</string>
|
||||
<string name="pref_auto_update_manga_sync">Perbarui kemajuan setelah membaca</string>
|
||||
<string name="default_category">Kategori bawaan</string>
|
||||
<string name="default_category_summary">Selalu tanya</string>
|
||||
@ -241,11 +241,11 @@
|
||||
<string name="ext_untrusted">Tidak terpercaya</string>
|
||||
<string name="ext_uninstall">Lepas</string>
|
||||
<string name="untrusted_extension">Ekstensi tidak terpercaya</string>
|
||||
<string name="untrusted_extension_message">Ekstensi ini ditandatangani dengan sertifikat tidak tepercaya dan tidak diaktifkan.
|
||||
<string name="untrusted_extension_message">Ekstensi ini ditandatangani oleh author yang tidak dikenal dan tidak dimuat.
|
||||
\n
|
||||
\nEkstensi berbahaya dapat membaca kredensial login apa pun yang disimpan atau mengeksekusi kode arbitrer.
|
||||
\nEkstensi berbahaya dapat membaca semua kredensial login yang disimpan atau menjalankan kode berbahaya.
|
||||
\n
|
||||
\nDengan mempercayai sertifikat ini, Anda menerima risiko ini.</string>
|
||||
\nDengan mempercayai sertifikat ekstensi ini, Anda menerima risiko ini.</string>
|
||||
<string name="pref_double_tap_anim_speed">Kecepatan animasi ketukan dua kali</string>
|
||||
<string name="double_tap_anim_speed_0">Tanpa animasi</string>
|
||||
<string name="double_tap_anim_speed_normal">Normal</string>
|
||||
@ -376,7 +376,7 @@
|
||||
<string name="label_data">Data</string>
|
||||
<string name="backup_restore_missing_sources">Sumber yang hilang:</string>
|
||||
<string name="invalid_backup_file_missing_manga">Cadangan tidak berisi entri perpustakaan apa pun.</string>
|
||||
<string name="invalid_backup_file">Berkas cadangan tidak valid</string>
|
||||
<string name="invalid_backup_file">File cadangan tidak valid:</string>
|
||||
<string name="sort_by_upload_date">Menurut tanggal pengunggahan</string>
|
||||
<string name="action_display_comfortable_grid">Grid nyaman</string>
|
||||
<string name="tabs_header">Tab</string>
|
||||
@ -471,9 +471,7 @@
|
||||
<string name="pref_dns_over_https">DNS melalui HTTPS (DoH)</string>
|
||||
<string name="kindlish_nav">semacam Kindle</string>
|
||||
<string name="pref_category_auto_download">Unduh otomatis</string>
|
||||
<string name="backup_restore_content_full">Data dari berkas cadangan akan dipulihkan.
|
||||
\n
|
||||
\nAnda perlu memasang ekstensi yang hilang dan masuk ke layanan pelacakan setelahnya untuk menggunakannya.</string>
|
||||
<string name="backup_restore_content_full">Anda mungkin perlu memasang ulang ekstensi yang hilang dan log in ke layanan pelacakan setelahnya untuk menggunakannya.</string>
|
||||
<string name="notification_incognito_text">Matikan mode penyamaran</string>
|
||||
<string name="source_unsupported">Sumber tidak didukung</string>
|
||||
<string name="error_no_match">Tidak ditemukan kecocokan</string>
|
||||
@ -558,7 +556,7 @@
|
||||
<string name="database_clean">Tidak ada yang perlu dibersihkan</string>
|
||||
<string name="clear_database_source_item_count">%1$d entri non-perpustakaan dalam database</string>
|
||||
<string name="extension_api_error">Gagal mendapatkan daftar ekstensi</string>
|
||||
<string name="pref_update_only_completely_read">Dengan bab yang belum dibaca</string>
|
||||
<string name="pref_update_only_completely_read">Lewati daftar dengan chapter yang belum dibaca</string>
|
||||
<string name="privacy_policy">Kebijakan privasi</string>
|
||||
<string name="publishing_finished">Penerbitan selesai</string>
|
||||
<string name="cancelled">Dibatalkan</string>
|
||||
@ -567,7 +565,7 @@
|
||||
<string name="save_chapter_as_cbz">Simpan sebagai arsip CBZ</string>
|
||||
<string name="action_show_manga">Lihat entri</string>
|
||||
<string name="action_display_cover_only_grid">Grid sampul saja</string>
|
||||
<string name="pref_update_only_started">Yang belum dibaca</string>
|
||||
<string name="pref_update_only_started">Lewati dafter yang belum mulai dibaca</string>
|
||||
<string name="skipped_reason_completed">Dilewati karena seri telah selesai</string>
|
||||
<string name="skipped_reason_not_caught_up">Dilewati karena ada bab yang belum dibaca</string>
|
||||
<string name="skipped_reason_not_started">Dilewati karena tidak ada bab yang dibaca</string>
|
||||
@ -715,7 +713,7 @@
|
||||
<string name="action_filter_interval_passed">Melewati periode pemeriksaan</string>
|
||||
<string name="action_sort_next_updated">Pembaruan yang diharapkan berikutnya</string>
|
||||
<string name="intervals_header">Interval</string>
|
||||
<string name="pref_update_only_in_release_period">Di luar periode rilis yang diharapkan</string>
|
||||
<string name="pref_update_only_in_release_period">Prediksikan waktu rilis selanjutnya</string>
|
||||
<string name="manga_display_interval_title">Perkirakan setiap</string>
|
||||
<string name="manga_display_modified_interval_title">Atur untuk memperbarui setiap</string>
|
||||
<string name="track_delete_title">Hapus %s pelacakan\?</string>
|
||||
@ -752,7 +750,7 @@
|
||||
<string name="last_auto_backup_info">Terakhir dicadangkan secara otomatis: %s</string>
|
||||
<string name="no_scanlators_found">Tidak ditemukan pemindai</string>
|
||||
<string name="scanlator">Pemindai</string>
|
||||
<string name="pref_flash_page">Berkedip putih pada perubahan halaman</string>
|
||||
<string name="pref_flash_page">Perlihatkan kilatan saat halaman berubah</string>
|
||||
<string name="pref_storage_usage">Penggunaan penyimpanan</string>
|
||||
<string name="action_sort_tracker_score">Skor pelacak</string>
|
||||
<string name="label_data_storage">Data dan penyimpanan</string>
|
||||
@ -771,7 +769,7 @@
|
||||
<string name="onboarding_permission_notifications">Izin notifikasi</string>
|
||||
<string name="onboarding_permission_install_apps">Izin pasang aplikasi</string>
|
||||
<string name="onboarding_heading">Selamat Datang!</string>
|
||||
<string name="onboarding_guides_returning_user">Sudah pernah menggunakan %s sebelumnya?</string>
|
||||
<string name="onboarding_guides_returning_user">Install ulang %s?</string>
|
||||
<string name="onboarding_action_skip">Lewati</string>
|
||||
<string name="onboarding_permission_ignore_battery_opts_description">Hindari gangguan pada pembaruan pustaka, pengunduhan, dan pemulihan cadangan yang berlangsung lama.</string>
|
||||
<string name="onboarding_action_next">Selanjutnya</string>
|
||||
@ -786,4 +784,24 @@
|
||||
\nSebaiknya menggunakan direktori terpisah.
|
||||
\n
|
||||
\nDirektori yang dipilih: %2$s</string>
|
||||
<string name="onboarding_storage_help_action">Panduan penyimpanan</string>
|
||||
<string name="pref_library_update_smart_update">Pembauan pintar</string>
|
||||
<string name="onboarding_storage_help_info">Memperbarui dari versi lama dan tak yakin harus pilih mana? lihat panduan penyimpanan untuk informasi lebih lanjut.</string>
|
||||
<string name="action_add_repo">Tambahkan repo</string>
|
||||
<string name="action_add_repo_message">Tambahkan repo lain ke Tachiyomi. Seharusnya URL yang memiliki akhiran \"index.min.json\".</string>
|
||||
<string name="label_extension_repos">Repositori ekstensi</string>
|
||||
<string name="information_empty_repos">Anda tidak memiliki repositori yang ditetapkan.</string>
|
||||
<string name="invalid_backup_file_error">Keseluruhan eror:</string>
|
||||
<string name="error_repo_exists">Repositori ini sudah ada!</string>
|
||||
<string name="manga_interval_header">Update selanjutnya</string>
|
||||
<string name="label_add_repo_input">URL Repo</string>
|
||||
<string name="invalid_repo_name">URL repo tidak valid</string>
|
||||
<string name="repo_extension_message">Ekstensi ini dari repo eksternal. ketuk untuk lihat repo.</string>
|
||||
<string name="private_settings">Sertakan pengaturan sensitif (contohnya, token login pelacak)</string>
|
||||
<string name="ext_permission_install_apps_warning">Izin diperlukan untuk memasang ekstensi. Klik disini untuk memberi izin.</string>
|
||||
<string name="action_delete_repo">Hapus repo</string>
|
||||
<string name="delete_repo_confirmation">Apa Anda yakin ingin menghapus repo \"%s\"?</string>
|
||||
<string name="manga_interval_expected_update">Update selanjutnya diperkirakan sekitar %1$s, memeriksa setiap sekitar %2$s</string>
|
||||
<string name="available_disk_space_info">Tersedia:%1$s/Total:%2$s</string>
|
||||
<string name="manga_interval_custom_amount">Keseringan pembaruan yang di kostumisasi:</string>
|
||||
</resources>
|
@ -48,4 +48,7 @@
|
||||
<plurals name="day">
|
||||
<item quantity="other">%d일</item>
|
||||
</plurals>
|
||||
<plurals name="num_repos">
|
||||
<item quantity="other">%d 저장소</item>
|
||||
</plurals>
|
||||
</resources>
|
@ -767,7 +767,7 @@
|
||||
<string name="onboarding_action_finish">Kom i gang</string>
|
||||
<string name="onboarding_storage_selection_required">En mappe må velges</string>
|
||||
<string name="onboarding_heading">Velkommen!</string>
|
||||
<string name="onboarding_guides_returning_user">Allerede brukt %s før?</string>
|
||||
<string name="onboarding_guides_returning_user">Reinstallerer du %s?</string>
|
||||
<string name="onboarding_action_skip">Hopp over</string>
|
||||
<string name="onboarding_action_next">Neste</string>
|
||||
<string name="onboarding_description">La oss sette opp noen ting først. Du kan alltid endre disse i innstillingene senere også.</string>
|
||||
|
@ -766,7 +766,7 @@
|
||||
<string name="onboarding_guides_new_user">Novo no %s? Recomendamos dar uma olhada no guia de introdução.</string>
|
||||
<string name="onboarding_action_finish">Começar</string>
|
||||
<string name="onboarding_heading">Bem-vindo(a)!</string>
|
||||
<string name="onboarding_guides_returning_user">Já utilizou o %s antes?</string>
|
||||
<string name="onboarding_guides_returning_user">Reinstalando o %s?</string>
|
||||
<string name="onboarding_action_skip">Pular</string>
|
||||
<string name="onboarding_action_next">Próximo</string>
|
||||
<string name="onboarding_description">Vamos definir algumas coisas primeiro. Você sempre pode fazer alterações nas configurações depois também.</string>
|
||||
@ -793,12 +793,15 @@
|
||||
<string name="invalid_backup_file_error">Erro completo:</string>
|
||||
<string name="error_repo_exists">Este repositório já existe!</string>
|
||||
<string name="pref_library_update_smart_update">Atualização inteligente</string>
|
||||
<string name="invalid_repo_name">Nome de repositório inválido</string>
|
||||
<string name="action_add_repo_message">Adiciona repositórios adicionais ao Tachiyomi. O formato de um repositório é \"usuário/repositório\", onde \"usuário\" é o dono do repositório e \"repositório\" é o nome do repositório.</string>
|
||||
<string name="invalid_repo_name">URL do repositório inválido</string>
|
||||
<string name="action_add_repo_message">Adiciona repositórios adicionais ao Tachiyomi. Deve ser uma URL que termine com \"index.min.json\".</string>
|
||||
<string name="delete_repo_confirmation">Você deseja deletar o repositório \"%s\"?</string>
|
||||
<string name="action_delete_repo">Deletar repositório</string>
|
||||
<string name="manga_interval_header">Próxima atualização</string>
|
||||
<string name="action_add_repo">Adicionar repositório</string>
|
||||
<string name="information_empty_repos">Você não tem repositórios definidos.</string>
|
||||
<string name="label_extension_repos">Repositórios de extensões</string>
|
||||
<string name="label_add_repo_input">URL do repositório</string>
|
||||
<string name="onboarding_storage_help_action">Guia de armazenamento</string>
|
||||
<string name="onboarding_storage_help_info">Atualizando de uma versão anterior e não tem certeza do que selecionar? Consulte o guia de armazenamento para mais informações.</string>
|
||||
</resources>
|
@ -716,4 +716,10 @@
|
||||
<string name="manga_display_modified_interval_title">Definido para atualizar a cada</string>
|
||||
<string name="skipped_reason_not_in_release_period">Pulado, pois nenhum lançamento é esperado para hoje</string>
|
||||
<string name="delete_downloaded">Deletar dowloand</string>
|
||||
<string name="selected">Selecionado</string>
|
||||
<string name="not_selected">Não selecionado</string>
|
||||
<string name="action_menu_overflow_description">Mais opções</string>
|
||||
<string name="action_bar_up_description">Rolar para cima</string>
|
||||
<string name="unlock_app_title">Desbloquear %s</string>
|
||||
<string name="label_data_storage">Dados e armazenamento</string>
|
||||
</resources>
|
@ -767,7 +767,7 @@
|
||||
<string name="onboarding_action_finish">Начать</string>
|
||||
<string name="onboarding_storage_selection_required">Необходимо выбрать папку</string>
|
||||
<string name="onboarding_heading">Добро пожаловать!</string>
|
||||
<string name="onboarding_guides_returning_user">Уже использовали %s раньше?</string>
|
||||
<string name="onboarding_guides_returning_user">Переустанавливаете %s?</string>
|
||||
<string name="onboarding_action_skip">Пропустить</string>
|
||||
<string name="onboarding_action_next">Следующее</string>
|
||||
<string name="onboarding_description">Давайте настроем парочку вещей. Вы всегда можете их поменять позже в настройках.</string>
|
||||
@ -802,4 +802,6 @@
|
||||
<string name="information_empty_repos">У вас нет репозиториев.</string>
|
||||
<string name="label_extension_repos">Репозитории расширений</string>
|
||||
<string name="label_add_repo_input">URL-адрес репозитория</string>
|
||||
<string name="onboarding_storage_help_action">Руководство по хранению</string>
|
||||
<string name="onboarding_storage_help_info">Обновляетесь со старой версии и не знаете, что выбрать? Обратите внимание на руководство по хранению для большей информации.</string>
|
||||
</resources>
|
@ -48,4 +48,7 @@
|
||||
<plurals name="day">
|
||||
<item quantity="other">%d 天</item>
|
||||
</plurals>
|
||||
<plurals name="num_repos">
|
||||
<item quantity="other">%d 仓库</item>
|
||||
</plurals>
|
||||
</resources>
|
@ -83,7 +83,7 @@
|
||||
<string name="all">全部</string>
|
||||
<string name="pref_library_update_restriction">设备自动更新限制</string>
|
||||
<string name="charging">充电时</string>
|
||||
<string name="pref_update_only_non_completed">已完结</string>
|
||||
<string name="pref_update_only_non_completed">跳过状态为“已完结”的作品</string>
|
||||
<string name="pref_auto_update_manga_sync">阅读后更新进度</string>
|
||||
<string name="default_category">默认分类</string>
|
||||
<string name="default_category_summary">始终询问</string>
|
||||
@ -97,11 +97,11 @@
|
||||
<string name="ext_untrusted">不可信</string>
|
||||
<string name="ext_uninstall">卸载</string>
|
||||
<string name="untrusted_extension">不可信的插件</string>
|
||||
<string name="untrusted_extension_message">此插件使用不受信任的证书签名且尚未激活。
|
||||
<string name="untrusted_extension_message">此插件由未知作者签名且尚未加载。
|
||||
\n
|
||||
\n恶意插件可以读取任何存储的登录凭据或执行任意代码。
|
||||
\n
|
||||
\n信任此证书即代表你愿意承担上述风险。</string>
|
||||
\n信任此插件证书即代表你愿意承担上述风险。</string>
|
||||
<string name="pref_fullscreen">全屏</string>
|
||||
<string name="pref_page_transitions">页面过渡动画</string>
|
||||
<string name="pref_double_tap_anim_speed">双击动画速度</string>
|
||||
@ -167,7 +167,7 @@
|
||||
<string name="creating_backup">正在创建备份</string>
|
||||
<string name="pref_clear_chapter_cache">清除章节缓存</string>
|
||||
<string name="used_cache">已使用空间:%1$s</string>
|
||||
<string name="cache_deleted">缓存已清除。%1$d 个文件已被删除</string>
|
||||
<string name="cache_deleted">缓存已清除,%1$d个文件已被删除</string>
|
||||
<string name="cache_delete_error">清除时出现错误</string>
|
||||
<string name="pref_clear_cookies">清除 Cookie</string>
|
||||
<string name="cookies_cleared">Cookie 已清除</string>
|
||||
@ -301,8 +301,8 @@
|
||||
<string name="action_sort_latest_chapter">作品更新时间</string>
|
||||
<string name="action_view_chapters">查看章节</string>
|
||||
<string name="action_cancel_all">全部取消</string>
|
||||
<string name="theme_light">关闭</string>
|
||||
<string name="theme_dark">开启</string>
|
||||
<string name="theme_light">浅色</string>
|
||||
<string name="theme_dark">深色</string>
|
||||
<string name="theme_system">跟随系统</string>
|
||||
<string name="pref_manage_notifications">通知管理</string>
|
||||
<string name="pref_category_security">隐私</string>
|
||||
@ -376,7 +376,7 @@
|
||||
<string name="label_data">数据</string>
|
||||
<string name="backup_restore_missing_sources">缺少图源:</string>
|
||||
<string name="invalid_backup_file_missing_manga">备份不包含任何作品。</string>
|
||||
<string name="invalid_backup_file">无效的备份文件</string>
|
||||
<string name="invalid_backup_file">无效的备份文件:</string>
|
||||
<string name="pref_library_update_refresh_metadata_summary">更新书架时一并检查封面和简介是否有变动</string>
|
||||
<string name="pref_library_update_refresh_metadata">自动刷新元数据</string>
|
||||
<string name="action_migrate">迁移</string>
|
||||
@ -457,9 +457,7 @@
|
||||
<string name="pref_dual_page_split">拆分双页</string>
|
||||
<string name="pref_dual_page_invert">拆分双页时交换顺序</string>
|
||||
<string name="pref_dual_page_invert_summary">拆分双页的顺序与阅读方向不符时可以开启</string>
|
||||
<string name="backup_restore_content_full">即将还原备份文件中的数据。
|
||||
\n
|
||||
\n随后请重新安装所有缺失的插件并重新登录进度记录平台。</string>
|
||||
<string name="backup_restore_content_full">您可能需要安装缺失的插件并登录进度记录平台才能正常使用。</string>
|
||||
<string name="nav_zone_right">右</string>
|
||||
<string name="nav_zone_left">左</string>
|
||||
<string name="nav_zone_next">下一页</string>
|
||||
@ -559,7 +557,7 @@
|
||||
<string name="clear_database_source_item_count">数据库中有 %1$d 部作品未添加到书架</string>
|
||||
<string name="extension_api_error">无法获取插件列表</string>
|
||||
<string name="privacy_policy">隐私声明</string>
|
||||
<string name="pref_update_only_completely_read">有未读章节</string>
|
||||
<string name="pref_update_only_completely_read">跳过有未读章节的作品</string>
|
||||
<string name="library_errors_help">关于书架更新出错的解决方法,请参阅 %1$s</string>
|
||||
<string name="save_chapter_as_cbz">保存为 CBZ 压缩包</string>
|
||||
<string name="publishing_finished">出版完毕</string>
|
||||
@ -569,7 +567,7 @@
|
||||
<string name="action_display_cover_only_grid">封面网格</string>
|
||||
<string name="pref_landscape_zoom">自动放大横向图片</string>
|
||||
<string name="pref_navigate_pan">图片放大时先平移再翻页</string>
|
||||
<string name="pref_update_only_started">尚未开始阅读</string>
|
||||
<string name="pref_update_only_started">跳过还未开始阅读的作品</string>
|
||||
<string name="skipped_reason_completed">已跳过,因为作品已完结</string>
|
||||
<string name="skipped_reason_not_caught_up">已跳过,因为有未读章节</string>
|
||||
<string name="skipped_reason_not_started">已跳过,因为尚未开始阅读</string>
|
||||
@ -579,8 +577,8 @@
|
||||
<string name="action_move_to_top_all_for_series">将作品移到顶部</string>
|
||||
<string name="disabled_nav">关闭</string>
|
||||
<string name="error_saving_picture">保存图片出错</string>
|
||||
<string name="update_check_fdroid_migration_info">新版本可从官方版本中获得。 轻按以了解如何从非官方 F-Droid 版本迁移。</string>
|
||||
<string name="empty_backup_error">没有要备份的库条目</string>
|
||||
<string name="update_check_fdroid_migration_info">官方发布了新版本。 轻按以了解如何从非官方 F-Droid 版本迁移。</string>
|
||||
<string name="empty_backup_error">书架没有可备份的作品</string>
|
||||
<string name="update_check_open">打开 GitHub 页面</string>
|
||||
<string name="webview_data_deleted">已清除 WebView 数据</string>
|
||||
<string name="pref_clear_webview_data">清除 WebView 数据</string>
|
||||
@ -706,7 +704,7 @@
|
||||
<string name="pref_chapter_swipe_start">向左滑动操作</string>
|
||||
<string name="pref_double_tap_zoom">双击放大</string>
|
||||
<string name="pref_library_columns_per_row">每行 %d 个</string>
|
||||
<string name="pref_update_only_in_release_period">未到预计更新时间</string>
|
||||
<string name="pref_update_only_in_release_period">预计下次更新时间</string>
|
||||
<string name="action_ok">确定</string>
|
||||
<string name="track_delete_title">要删除 %s 的记录吗?</string>
|
||||
<string name="track_delete_remote_text">同时删除 %s 上的数据</string>
|
||||
@ -747,7 +745,7 @@
|
||||
<string name="relative_time_span_never">从不</string>
|
||||
<string name="pref_flash_page_summ">减少电子墨水屏上的重影</string>
|
||||
<string name="last_auto_backup_info">上次自动备份:%s</string>
|
||||
<string name="pref_flash_page">切页时闪烁白屏</string>
|
||||
<string name="pref_flash_page">切页时闪烁</string>
|
||||
<string name="label_data_storage">数据与存储</string>
|
||||
<string name="pref_storage_usage">存储占用</string>
|
||||
<string name="action_create">创建</string>
|
||||
@ -766,5 +764,44 @@
|
||||
<string name="onboarding_action_skip">跳过</string>
|
||||
<string name="onboarding_action_next">下一步</string>
|
||||
<string name="action_bar_up_description">向上浏览</string>
|
||||
<string name="onboarding_description">让我们先设置一些东西。你也可以稍后在设置中更改这些。</string>
|
||||
<string name="onboarding_description">让我们先进行一些设置。您也可以稍后在设置中更改这些选项。</string>
|
||||
<string name="onboarding_permission_ignore_battery_opts_description">避免长时间运行的书架更新、下载和备份恢复被中断。</string>
|
||||
<string name="onboarding_permission_action_grant">授权</string>
|
||||
<string name="no_location_set">未设置存储位置</string>
|
||||
<string name="invalid_backup_file_error">完整错误:</string>
|
||||
<string name="onboarding_permission_ignore_battery_opts">后台电池配置</string>
|
||||
<string name="ext_permission_install_apps_warning">需要权限安装插件。点击此处授权。</string>
|
||||
<string name="action_add_repo">添加仓库</string>
|
||||
<string name="private_settings">包含敏感设置(例如进度记录平台的登录令牌)</string>
|
||||
<string name="delete_repo_confirmation">您希望删除仓库\"%s\"吗?</string>
|
||||
<string name="repo_extension_message">此插件来自外部仓库。点击查看该仓库。</string>
|
||||
<string name="error_repo_exists">此仓库已存在!</string>
|
||||
<string name="action_delete_repo">删除仓库</string>
|
||||
<string name="invalid_repo_name">无效的仓库URL</string>
|
||||
<string name="pref_storage_location_info">用于自动备份、章节下载和本地图源。</string>
|
||||
<string name="manga_interval_expected_update">下次更新预计在%1$s天后,每隔%2$s检查一次</string>
|
||||
<string name="manga_interval_custom_amount">自定义更新频率:</string>
|
||||
<string name="onboarding_permission_install_apps">应用安装权限</string>
|
||||
<string name="onboarding_permission_install_apps_description">用以安装图源插件。</string>
|
||||
<string name="onboarding_permission_notifications">通知权限</string>
|
||||
<string name="onboarding_guides_new_user">%s新手?我们建议您查阅入门指南。</string>
|
||||
<string name="onboarding_guides_returning_user">重新安装%s?</string>
|
||||
<string name="pref_library_update_smart_update">智能更新</string>
|
||||
<string name="onboarding_permission_notifications_description">获取书架更新及其他通知。</string>
|
||||
<string name="label_extension_repos">插件仓库</string>
|
||||
<string name="information_empty_repos">您没有设置仓库。</string>
|
||||
<string name="label_add_repo_input">仓库URL</string>
|
||||
<string name="action_add_repo_message">向 Tachiyomi 添加额外仓库。注意是以“index.min.json”结尾的 URL。</string>
|
||||
<string name="manga_interval_header">下次更新</string>
|
||||
<string name="onboarding_storage_help_info">从旧版本升级而来不知如何选择?请参阅存储指南获取更多信息。</string>
|
||||
<string name="onboarding_storage_help_action">存储指南</string>
|
||||
<string name="pref_storage_location">存储位置</string>
|
||||
<string name="onboarding_storage_action_select">选择一个文件夹</string>
|
||||
<string name="onboarding_storage_info">选择文件夹%1$s用以存储下载章节、备份文件及其他。
|
||||
\n
|
||||
\n推荐使用专用文件夹。
|
||||
\n
|
||||
\n已选文件夹:%2$s</string>
|
||||
<string name="onboarding_storage_selection_required">必须选择一个文件夹</string>
|
||||
<string name="available_disk_space_info">可用:%1$s / 全部:%2$s</string>
|
||||
</resources>
|
@ -80,7 +80,7 @@
|
||||
<string name="all">全部</string>
|
||||
<string name="pref_library_update_restriction">自動更新的裝置限制</string>
|
||||
<string name="charging">充電時</string>
|
||||
<string name="pref_update_only_non_completed">連載已完結</string>
|
||||
<string name="pref_update_only_non_completed">略過已完結的作品</string>
|
||||
<string name="default_category">預設類別</string>
|
||||
<string name="default_category_summary">總是詢問</string>
|
||||
<string name="ext_update">更新</string>
|
||||
@ -557,7 +557,7 @@
|
||||
<string name="database_clean">無須清理</string>
|
||||
<string name="extension_api_error">擴充套件清單取得失敗</string>
|
||||
<string name="privacy_policy">隱私權政策</string>
|
||||
<string name="pref_update_only_completely_read">有未讀章節</string>
|
||||
<string name="pref_update_only_completely_read">略過有未讀章節的作品</string>
|
||||
<string name="library_errors_help">如欲瞭解如何修復書櫃更新錯誤,請參閱 %1$s</string>
|
||||
<string name="save_chapter_as_cbz">以 CBZ 封存檔格式儲存</string>
|
||||
<string name="on_hiatus">休刊中</string>
|
||||
@ -567,7 +567,7 @@
|
||||
<string name="pref_landscape_zoom">自動縮放寬頁</string>
|
||||
<string name="pref_navigate_pan">導覽寬頁時先平移後翻頁</string>
|
||||
<string name="action_display_cover_only_grid">純封面格狀</string>
|
||||
<string name="pref_update_only_started">無已讀章節</string>
|
||||
<string name="pref_update_only_started">略過無已讀章節的作品</string>
|
||||
<string name="skipped_reason_completed">由於連載已完結,因此略過</string>
|
||||
<string name="skipped_reason_not_caught_up">由於有未讀章節,因此略過</string>
|
||||
<string name="skipped_reason_not_started">由於無已讀章節,因此略過</string>
|
||||
@ -718,7 +718,7 @@
|
||||
<string name="action_sort_next_updated">下次預期更新</string>
|
||||
<string name="intervals_header">刊期</string>
|
||||
<string name="manga_display_interval_title">預計每個</string>
|
||||
<string name="pref_update_only_in_release_period">未臨出刊日</string>
|
||||
<string name="pref_update_only_in_release_period">預估出刊日</string>
|
||||
<string name="manga_display_modified_interval_title">設定為每個</string>
|
||||
<string name="skipped_reason_not_in_release_period">由於未臨出刊日,因此略過</string>
|
||||
<string name="has_results">有結果</string>
|
||||
@ -767,7 +767,7 @@
|
||||
<string name="onboarding_action_finish">開始使用</string>
|
||||
<string name="onboarding_storage_selection_required">必須選擇一個資料夾</string>
|
||||
<string name="onboarding_heading">歡迎!</string>
|
||||
<string name="onboarding_guides_returning_user">已是 %s 的既有使用者?</string>
|
||||
<string name="onboarding_guides_returning_user">重新安裝 %s?</string>
|
||||
<string name="onboarding_action_skip">略過</string>
|
||||
<string name="onboarding_action_next">下一步</string>
|
||||
<string name="onboarding_description">讓我們先設定一些東西。稍後你隨時可至設定中變更這些選項。</string>
|
||||
@ -787,7 +787,7 @@
|
||||
<string name="available_disk_space_info">可用:%1$s / 總計:%2$s</string>
|
||||
<string name="ext_permission_install_apps_warning">缺少安裝擴充套件所需的權限。輕觸此處以授予。</string>
|
||||
<string name="private_settings">包含敏感設定 (如:歷程平台登入權杖)</string>
|
||||
<string name="manga_interval_expected_update">預計再 %s左右出刊</string>
|
||||
<string name="manga_interval_expected_update">預計 %1$s後出刊,每 %2$s檢查一次</string>
|
||||
<string name="invalid_backup_file_error">完整錯誤訊息:</string>
|
||||
<string name="repo_extension_message">此擴充套件來自外部儲存庫,輕觸以檢視該儲存庫。</string>
|
||||
<string name="manga_interval_custom_amount">自訂更新頻率:</string>
|
||||
@ -801,4 +801,6 @@
|
||||
<string name="action_add_repo">新增儲存庫</string>
|
||||
<string name="information_empty_repos">尚未新增任何儲存庫</string>
|
||||
<string name="label_extension_repos">擴充套件儲存庫</string>
|
||||
<string name="onboarding_storage_help_action">儲存空間指南</string>
|
||||
<string name="onboarding_storage_help_info">從舊版升級而不確定該如何選擇嗎?請參閱儲存空間指南以取得更多資訊。</string>
|
||||
</resources>
|
Loading…
Reference in New Issue
Block a user