diff --git a/data/src/main/java/com/moez/QKSMS/blocking/BlockingManager.kt b/data/src/main/java/com/moez/QKSMS/blocking/BlockingManager.kt index 23d9e758..a9f4114d 100644 --- a/data/src/main/java/com/moez/QKSMS/blocking/BlockingManager.kt +++ b/data/src/main/java/com/moez/QKSMS/blocking/BlockingManager.kt @@ -12,6 +12,7 @@ import javax.inject.Singleton @Singleton class BlockingManager @Inject constructor( private val prefs: Preferences, + private val callBlockerBlockingClient: CallBlockerBlockingClient, private val callControlBlockingClient: CallControlBlockingClient, private val qksmsBlockingClient: QksmsBlockingClient, private val shouldIAnswerBlockingClient: ShouldIAnswerBlockingClient @@ -19,6 +20,7 @@ class BlockingManager @Inject constructor( private val client: BlockingClient get() = when (prefs.blockingManager.get()) { + Preferences.BLOCKING_MANAGER_CB -> callBlockerBlockingClient Preferences.BLOCKING_MANAGER_SIA -> shouldIAnswerBlockingClient Preferences.BLOCKING_MANAGER_CC -> callControlBlockingClient else -> qksmsBlockingClient @@ -28,7 +30,9 @@ class BlockingManager @Inject constructor( override fun getClientCapability(): BlockingClient.Capability = client.getClientCapability() - override fun getAction(address: String): Single = client.getAction(address) + override fun shouldBlock(address: String): Single = client.shouldBlock(address) + + override fun isBlacklisted(address: String): Single = client.isBlacklisted(address) override fun block(addresses: List): Completable = client.block(addresses) diff --git a/data/src/main/java/com/moez/QKSMS/blocking/CallBlockerBlockingClient.kt b/data/src/main/java/com/moez/QKSMS/blocking/CallBlockerBlockingClient.kt new file mode 100644 index 00000000..965658a9 --- /dev/null +++ b/data/src/main/java/com/moez/QKSMS/blocking/CallBlockerBlockingClient.kt @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2020 Moez Bhatti + * + * This file is part of QKSMS. + * + * QKSMS is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * QKSMS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with QKSMS. If not, see . + */ +package com.moez.QKSMS.blocking + +import android.content.Context +import android.content.Intent +import android.database.Cursor +import android.net.Uri +import androidx.core.database.getStringOrNull +import com.moez.QKSMS.common.util.extensions.isInstalled +import com.moez.QKSMS.extensions.map +import io.reactivex.Completable +import io.reactivex.Single +import timber.log.Timber +import java.util.* +import javax.inject.Inject + +class CallBlockerBlockingClient @Inject constructor( + private val context: Context +) : BlockingClient { + + class LookupResult(cursor: Cursor) { + val blockReason: String? = cursor.getStringOrNull(0) + } + + override fun isAvailable(): Boolean = context.isInstalled("com.cuiet.blockCalls") + + override fun getClientCapability() = BlockingClient.Capability.BLOCK_WITH_PERMISSION + + override fun shouldBlock(address: String): Single = lookup(address, "incomingNumber") + + override fun isBlacklisted(address: String): Single = lookup(address, "blacklistLookup") + + private fun lookup(address: String, reason: String): Single = Single.fromCallable { + val uri = Uri.parse("content://com.cuiet.blockCalls.ContProvBlockCalls/lookup/is.blocked.lookup") + return@fromCallable try { + val blockReason = context.contentResolver.query(uri, arrayOf("result"), reason, arrayOf(address), null) + ?.use { cursor -> cursor.map(::LookupResult) } + ?.find { result -> result.blockReason != null } + ?.blockReason + + when (blockReason) { + "true" -> BlockingClient.Action.Block() + else -> BlockingClient.Action.Unblock + } + } catch (e: Exception) { + Timber.w(e) + BlockingClient.Action.DoNothing + } + } + + override fun block(addresses: List): Completable = Completable.fromCallable { + val arrayList = ArrayList() + arrayList.addAll(addresses) + val intent = Intent("com.cuiet.blockCalls.ADD_NUMBERS") + intent.putStringArrayListExtra("addresses", arrayList) + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + context.startActivity(intent) + } + + override fun unblock(addresses: List): Completable = Completable.fromCallable { + val arrayList = ArrayList() + arrayList.addAll(addresses) + val intent = Intent("com.cuiet.blockCalls.REMOVE_NUMBERS") + intent.putStringArrayListExtra("addresses", arrayList) + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + context.startActivity(intent) + } + + override fun openSettings() { + val intent = Intent("com.cuiet.blockCalls.OPEN_SETTINGS") + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + context.startActivity(intent) + } +} diff --git a/data/src/main/java/com/moez/QKSMS/blocking/CallControlBlockingClient.kt b/data/src/main/java/com/moez/QKSMS/blocking/CallControlBlockingClient.kt index ada74816..a22632fe 100644 --- a/data/src/main/java/com/moez/QKSMS/blocking/CallControlBlockingClient.kt +++ b/data/src/main/java/com/moez/QKSMS/blocking/CallControlBlockingClient.kt @@ -26,9 +26,9 @@ import androidx.core.database.getStringOrNull import com.callcontrol.datashare.CallControl import com.moez.QKSMS.common.util.extensions.isInstalled import com.moez.QKSMS.extensions.map -import com.moez.QKSMS.util.tryOrNull import io.reactivex.Completable import io.reactivex.Single +import timber.log.Timber import javax.inject.Inject class CallControlBlockingClient @Inject constructor( @@ -48,17 +48,23 @@ class CallControlBlockingClient @Inject constructor( override fun getClientCapability() = BlockingClient.Capability.BLOCK_WITH_PERMISSION - override fun getAction(address: String): Single = Single.fromCallable { + override fun shouldBlock(address: String): Single = isBlacklisted(address) + + override fun isBlacklisted(address: String): Single = Single.fromCallable { val uri = Uri.withAppendedPath(CallControl.LOOKUP_TEXT_URI, address) - val blockReason = tryOrNull { - context.contentResolver.query(uri, projection, null, null, null) // Query URI + return@fromCallable try { + val blockReason = context.contentResolver.query(uri, projection, null, null, null) // Query URI ?.use { cursor -> cursor.map(::LookupResult) } // Map to Result object ?.find { result -> result.blockReason != null } // Check if any are blocked - }?.blockReason // If none are blocked or we errored at some point, return false + ?.blockReason // If none are blocked or we errored at some point, return false - when (blockReason) { - null -> BlockingClient.Action.Unblock - else -> BlockingClient.Action.Block(blockReason) + when (blockReason) { + null -> BlockingClient.Action.Unblock + else -> BlockingClient.Action.Block(blockReason) + } + } catch (e: Exception) { + Timber.w(e) + BlockingClient.Action.DoNothing } } diff --git a/data/src/main/java/com/moez/QKSMS/blocking/QksmsBlockingClient.kt b/data/src/main/java/com/moez/QKSMS/blocking/QksmsBlockingClient.kt index 33be2b18..6ea3f9b9 100644 --- a/data/src/main/java/com/moez/QKSMS/blocking/QksmsBlockingClient.kt +++ b/data/src/main/java/com/moez/QKSMS/blocking/QksmsBlockingClient.kt @@ -31,7 +31,9 @@ class QksmsBlockingClient @Inject constructor( override fun getClientCapability() = BlockingClient.Capability.BLOCK_WITHOUT_PERMISSION - override fun getAction(address: String): Single = Single.fromCallable { + override fun shouldBlock(address: String): Single = isBlacklisted(address) + + override fun isBlacklisted(address: String): Single = Single.fromCallable { when (blockingRepo.isBlocked(address)) { true -> BlockingClient.Action.Block() false -> BlockingClient.Action.Unblock diff --git a/data/src/main/java/com/moez/QKSMS/blocking/ShouldIAnswerBlockingClient.kt b/data/src/main/java/com/moez/QKSMS/blocking/ShouldIAnswerBlockingClient.kt index bfbc65a0..84c927e5 100644 --- a/data/src/main/java/com/moez/QKSMS/blocking/ShouldIAnswerBlockingClient.kt +++ b/data/src/main/java/com/moez/QKSMS/blocking/ShouldIAnswerBlockingClient.kt @@ -55,7 +55,9 @@ class ShouldIAnswerBlockingClient @Inject constructor( override fun getClientCapability() = BlockingClient.Capability.CANT_BLOCK - override fun getAction(address: String): Single { + override fun shouldBlock(address: String): Single = isBlacklisted(address) + + override fun isBlacklisted(address: String): Single { return Binder(context, address).isBlocked() .map { blocked -> when (blocked) { diff --git a/domain/src/main/java/com/moez/QKSMS/blocking/BlockingClient.kt b/domain/src/main/java/com/moez/QKSMS/blocking/BlockingClient.kt index 97534f8f..6f9a2fe4 100644 --- a/domain/src/main/java/com/moez/QKSMS/blocking/BlockingClient.kt +++ b/domain/src/main/java/com/moez/QKSMS/blocking/BlockingClient.kt @@ -52,7 +52,14 @@ interface BlockingClient { /** * Returns the recommendation action to perform given a message from the [address] */ - fun getAction(address: String): Single + fun shouldBlock(address: String): Single + + /** + * Returns whether or not the [address] is in the blocking manager's blacklist + * In most cases this will return the same result as [shouldBlock], but it's possible for an app's blacklist + * to be temporarily deactivated, in which case the results will differ + */ + fun isBlacklisted(address: String): Single /** * Blocks the numbers or opens the manager diff --git a/domain/src/main/java/com/moez/QKSMS/interactor/ReceiveMms.kt b/domain/src/main/java/com/moez/QKSMS/interactor/ReceiveMms.kt index 0d1ff083..e67c7a79 100644 --- a/domain/src/main/java/com/moez/QKSMS/interactor/ReceiveMms.kt +++ b/domain/src/main/java/com/moez/QKSMS/interactor/ReceiveMms.kt @@ -57,7 +57,7 @@ class ReceiveMms @Inject constructor( // to check if it should be blocked after we've pulled it into realm. If it // turns out that it should be dropped, then delete it // TODO Don't store blocked messages in the first place - val action = blockingClient.getAction(message.address).blockingGet() + val action = blockingClient.shouldBlock(message.address).blockingGet() val shouldDrop = prefs.drop.get() Timber.v("block=$action, drop=$shouldDrop") diff --git a/domain/src/main/java/com/moez/QKSMS/interactor/ReceiveSms.kt b/domain/src/main/java/com/moez/QKSMS/interactor/ReceiveSms.kt index f2b4c6d3..c8fbeddb 100644 --- a/domain/src/main/java/com/moez/QKSMS/interactor/ReceiveSms.kt +++ b/domain/src/main/java/com/moez/QKSMS/interactor/ReceiveSms.kt @@ -49,7 +49,7 @@ class ReceiveSms @Inject constructor( // Don't continue if the sender is blocked val messages = it.messages val address = messages[0].displayOriginatingAddress - val action = blockingClient.getAction(address).blockingGet() + val action = blockingClient.shouldBlock(address).blockingGet() val shouldDrop = prefs.drop.get() Timber.v("block=$action, drop=$shouldDrop") diff --git a/domain/src/main/java/com/moez/QKSMS/util/Preferences.kt b/domain/src/main/java/com/moez/QKSMS/util/Preferences.kt index 919fab27..d7711f3b 100644 --- a/domain/src/main/java/com/moez/QKSMS/util/Preferences.kt +++ b/domain/src/main/java/com/moez/QKSMS/util/Preferences.kt @@ -75,6 +75,7 @@ class Preferences @Inject constructor( const val BLOCKING_MANAGER_QKSMS = 0 const val BLOCKING_MANAGER_CC = 1 const val BLOCKING_MANAGER_SIA = 2 + const val BLOCKING_MANAGER_CB = 3 } // Internal diff --git a/presentation/src/main/java/com/moez/QKSMS/common/Navigator.kt b/presentation/src/main/java/com/moez/QKSMS/common/Navigator.kt index 0a7cba9c..b0659c99 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/Navigator.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/Navigator.kt @@ -191,6 +191,15 @@ class Navigator @Inject constructor( } } + /** + * Launch the Play Store and display the Call Blocker listing + */ + fun installCallBlocker() { + val url = "https://play.google.com/store/apps/details?id=com.cuiet.blockCalls" + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) + startActivityExternal(intent) + } + /** * Launch the Play Store and display the Call Control listing */ diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingDialog.kt b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingDialog.kt index 04d6daa5..ea56b960 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingDialog.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingDialog.kt @@ -77,7 +77,7 @@ class BlockingDialog @Inject constructor( } private fun allBlocked(addresses: List): Boolean = addresses.all { address -> - blockingManager.getAction(address).blockingGet() is BlockingClient.Action.Block + blockingManager.isBlacklisted(address).blockingGet() is BlockingClient.Action.Block } private suspend fun showDialog( @@ -92,8 +92,9 @@ class BlockingDialog @Inject constructor( } val manager = context.getString(when (prefs.blockingManager.get()) { - Preferences.BLOCKING_MANAGER_SIA -> R.string.blocking_manager_sia_title + Preferences.BLOCKING_MANAGER_CB -> R.string.blocking_manager_call_blocker_title Preferences.BLOCKING_MANAGER_CC -> R.string.blocking_manager_call_control_title + Preferences.BLOCKING_MANAGER_SIA -> R.string.blocking_manager_sia_title else -> R.string.blocking_manager_qksms_title }) diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingPresenter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingPresenter.kt index 749ae671..4e37d238 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingPresenter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingPresenter.kt @@ -38,8 +38,9 @@ class BlockingPresenter @Inject constructor( disposables += prefs.blockingManager.asObservable() .map { client -> when (client) { - Preferences.BLOCKING_MANAGER_SIA -> R.string.blocking_manager_sia_title + Preferences.BLOCKING_MANAGER_CB -> R.string.blocking_manager_call_blocker_title Preferences.BLOCKING_MANAGER_CC -> R.string.blocking_manager_call_control_title + Preferences.BLOCKING_MANAGER_SIA -> R.string.blocking_manager_sia_title else -> R.string.blocking_manager_qksms_title } } diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerController.kt b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerController.kt index ed64b1d5..da9783e0 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerController.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerController.kt @@ -2,11 +2,14 @@ package com.moez.QKSMS.feature.blocking.manager import android.app.Activity import android.app.AlertDialog +import android.content.res.ColorStateList import android.view.View -import androidx.core.view.isVisible +import androidx.core.view.isInvisible import com.jakewharton.rxbinding2.view.clicks import com.moez.QKSMS.R import com.moez.QKSMS.common.base.QkController +import com.moez.QKSMS.common.util.Colors +import com.moez.QKSMS.common.util.extensions.resolveThemeColor import com.moez.QKSMS.injection.appComponent import com.moez.QKSMS.util.Preferences import io.reactivex.Observable @@ -14,12 +17,12 @@ import io.reactivex.Single import io.reactivex.subjects.PublishSubject import kotlinx.android.synthetic.main.blocking_manager_controller.* import kotlinx.android.synthetic.main.blocking_manager_list_option.view.* -import kotlinx.android.synthetic.main.radio_preference_view.view.* import javax.inject.Inject class BlockingManagerController : QkController(), BlockingManagerView { + @Inject lateinit var colors: Colors @Inject override lateinit var presenter: BlockingManagerPresenter private val activityResumedSubject: PublishSubject = PublishSubject.create() @@ -35,6 +38,18 @@ class BlockingManagerController : QkController R.drawable.ic_chevron_right_black_24dp + else -> R.drawable.ic_check_white_24dp } override fun activityResumed(): Observable<*> = activityResumedSubject override fun qksmsClicked(): Observable<*> = qksms.clicks() + override fun callBlockerClicked(): Observable<*> = callBlocker.clicks() override fun callControlClicked(): Observable<*> = callControl.clicks() override fun siaClicked(): Observable<*> = shouldIAnswer.clicks() diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerPreferenceView.kt b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerPreferenceView.kt new file mode 100644 index 00000000..8abce241 --- /dev/null +++ b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerPreferenceView.kt @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2020 Moez Bhatti + * + * This file is part of QKSMS. + * + * QKSMS is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * QKSMS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with QKSMS. If not, see . + */ + +package com.moez.QKSMS.feature.blocking.manager + +import android.content.Context +import android.graphics.drawable.Drawable +import android.util.AttributeSet +import android.view.View +import android.widget.ImageView +import android.widget.TextView +import androidx.constraintlayout.widget.ConstraintLayout +import com.moez.QKSMS.R +import com.moez.QKSMS.common.util.extensions.animateLayoutChanges +import com.moez.QKSMS.common.util.extensions.resolveThemeAttribute +import com.moez.QKSMS.common.util.extensions.setVisible +import kotlinx.android.synthetic.main.blocking_manager_preference_view.view.* + +class BlockingManagerPreferenceView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null +) : ConstraintLayout(context, attrs) { + + var icon: Drawable? = null + set(value) { + field = value + + if (isInEditMode) { + findViewById(R.id.iconView).setImageDrawable(value) + } else { + iconView.setImageDrawable(value) + } + } + + var title: String? = null + set(value) { + field = value + + if (isInEditMode) { + findViewById(R.id.titleView).text = value + } else { + titleView.text = value + } + } + + var summary: String? = null + set(value) { + field = value + + if (isInEditMode) { + findViewById(R.id.summaryView).run { + text = value + setVisible(value?.isNotEmpty() == true) + } + } else { + summaryView.text = value + summaryView.setVisible(value?.isNotEmpty() == true) + } + } + + init { + View.inflate(context, R.layout.blocking_manager_preference_view, this) + setBackgroundResource(context.resolveThemeAttribute(R.attr.selectableItemBackground)) + + context.obtainStyledAttributes(attrs, R.styleable.BlockingManagerPreferenceView).run { + icon = getDrawable(R.styleable.BlockingManagerPreferenceView_icon) + title = getString(R.styleable.BlockingManagerPreferenceView_title) + summary = getString(R.styleable.BlockingManagerPreferenceView_summary) + + // If there's a custom view used for the preference's widget, inflate it + getResourceId(R.styleable.BlockingManagerPreferenceView_widget, -1).takeIf { it != -1 }?.let { id -> + View.inflate(context, id, widgetFrame) + } + + recycle() + } + } +} diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerPresenter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerPresenter.kt index 1ef5d91f..71e66aa2 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerPresenter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerPresenter.kt @@ -3,6 +3,7 @@ package com.moez.QKSMS.feature.blocking.manager import android.content.Context import com.moez.QKSMS.R import com.moez.QKSMS.blocking.BlockingClient +import com.moez.QKSMS.blocking.CallBlockerBlockingClient import com.moez.QKSMS.blocking.CallControlBlockingClient import com.moez.QKSMS.blocking.QksmsBlockingClient import com.moez.QKSMS.blocking.ShouldIAnswerBlockingClient @@ -21,6 +22,7 @@ import javax.inject.Inject class BlockingManagerPresenter @Inject constructor( private val analytics: AnalyticsManager, + private val callBlocker: CallBlockerBlockingClient, private val callControl: CallControlBlockingClient, private val context: Context, private val conversationRepo: ConversationRepository, @@ -30,6 +32,7 @@ class BlockingManagerPresenter @Inject constructor( private val shouldIAnswer: ShouldIAnswerBlockingClient ) : QkPresenter(BlockingManagerState( blockingManager = prefs.blockingManager.get(), + callBlockerInstalled = callBlocker.isAvailable(), callControlInstalled = callControl.isAvailable(), siaInstalled = shouldIAnswer.isAvailable() )) { @@ -42,6 +45,12 @@ class BlockingManagerPresenter @Inject constructor( override fun bindIntents(view: BlockingManagerView) { super.bindIntents(view) + view.activityResumed() + .map { callBlocker.isAvailable() } + .distinctUntilChanged() + .autoDisposable(view.scope()) + .subscribe { available -> newState { copy(callBlockerInstalled = available) } } + view.activityResumed() .map { callControl.isAvailable() } .distinctUntilChanged() @@ -64,6 +73,23 @@ class BlockingManagerPresenter @Inject constructor( prefs.blockingManager.set(Preferences.BLOCKING_MANAGER_QKSMS) } + view.callBlockerClicked() + .filter { + val installed = callBlocker.isAvailable() + if (!installed) { + analytics.track("Install Call Blocker") + navigator.installCallBlocker() + } + + val enabled = prefs.blockingManager.get() == Preferences.BLOCKING_MANAGER_CB + installed && !enabled + } + .autoDisposable(view.scope()) + .subscribe { + analytics.setUserProperty("Blocking Manager", "Call Blocker") + prefs.blockingManager.set(Preferences.BLOCKING_MANAGER_CB) + } + view.callControlClicked() .filter { val installed = callControl.isAvailable() @@ -92,7 +118,7 @@ class BlockingManagerPresenter @Inject constructor( .switchMap { numbers -> callControl.block(numbers).andThen(Observable.just(Unit)) } // Hack .autoDisposable(view.scope()) .subscribe { - callControl.getAction("callcontrol").blockingGet() + callControl.shouldBlock("callcontrol").blockingGet() analytics.setUserProperty("Blocking Manager", "Call Control") prefs.blockingManager.set(Preferences.BLOCKING_MANAGER_CC) } @@ -117,6 +143,6 @@ class BlockingManagerPresenter @Inject constructor( private fun getAddressesToBlock(client: BlockingClient) = conversationRepo.getBlockedConversations() .fold(listOf(), { numbers, conversation -> numbers + conversation.recipients.map { it.address } }) - .filter { number -> client.getAction(number).blockingGet() !is BlockingClient.Action.Block } + .filter { number -> client.isBlacklisted(number).blockingGet() !is BlockingClient.Action.Block } } diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerState.kt b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerState.kt index 2663caf0..169add4b 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerState.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerState.kt @@ -2,6 +2,7 @@ package com.moez.QKSMS.feature.blocking.manager data class BlockingManagerState( val blockingManager: Int = 0, + val callBlockerInstalled: Boolean = false, val callControlInstalled: Boolean = false, val siaInstalled: Boolean = false ) diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerView.kt b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerView.kt index 7318e53a..dd871e17 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerView.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/blocking/manager/BlockingManagerView.kt @@ -8,6 +8,7 @@ interface BlockingManagerView : QkViewContract { fun activityResumed(): Observable<*> fun qksmsClicked(): Observable<*> + fun callBlockerClicked(): Observable<*> fun callControlClicked(): Observable<*> fun siaClicked(): Observable<*> diff --git a/presentation/src/main/res/drawable-xxxhdpi/ic_blocking_manager_call_blocker.png b/presentation/src/main/res/drawable-xxxhdpi/ic_blocking_manager_call_blocker.png new file mode 100644 index 00000000..0ebdcfa6 Binary files /dev/null and b/presentation/src/main/res/drawable-xxxhdpi/ic_blocking_manager_call_blocker.png differ diff --git a/presentation/src/main/res/drawable-xxxhdpi/ic_blocking_manager_call_control.png b/presentation/src/main/res/drawable-xxxhdpi/ic_blocking_manager_call_control.png new file mode 100644 index 00000000..e7fef9e2 Binary files /dev/null and b/presentation/src/main/res/drawable-xxxhdpi/ic_blocking_manager_call_control.png differ diff --git a/presentation/src/main/res/drawable-xxxhdpi/ic_blocking_manager_qksms.png b/presentation/src/main/res/drawable-xxxhdpi/ic_blocking_manager_qksms.png new file mode 100644 index 00000000..cb53b2df Binary files /dev/null and b/presentation/src/main/res/drawable-xxxhdpi/ic_blocking_manager_qksms.png differ diff --git a/presentation/src/main/res/drawable-xxxhdpi/ic_blocking_manager_sia.png b/presentation/src/main/res/drawable-xxxhdpi/ic_blocking_manager_sia.png new file mode 100644 index 00000000..e922a956 Binary files /dev/null and b/presentation/src/main/res/drawable-xxxhdpi/ic_blocking_manager_sia.png differ diff --git a/presentation/src/main/res/layout/blocking_manager_controller.xml b/presentation/src/main/res/layout/blocking_manager_controller.xml index 03575c7b..37d90fd1 100644 --- a/presentation/src/main/res/layout/blocking_manager_controller.xml +++ b/presentation/src/main/res/layout/blocking_manager_controller.xml @@ -30,25 +30,38 @@ android:paddingTop="8dp" android:paddingBottom="8dp"> - + app:title="@string/blocking_manager_qksms_title" + app:widget="@layout/blocking_manager_list_option" /> - + + - diff --git a/presentation/src/main/res/layout/blocking_manager_list_option.xml b/presentation/src/main/res/layout/blocking_manager_list_option.xml index 06d4f827..079757a1 100644 --- a/presentation/src/main/res/layout/blocking_manager_list_option.xml +++ b/presentation/src/main/res/layout/blocking_manager_list_option.xml @@ -18,11 +18,11 @@ ~ along with QKSMS. If not, see . --> + tools:src="@drawable/ic_chevron_right_black_24dp" + tools:tint="?android:attr/textColorTertiary" /> diff --git a/presentation/src/main/res/layout/blocking_manager_preference_view.xml b/presentation/src/main/res/layout/blocking_manager_preference_view.xml new file mode 100644 index 00000000..503f5672 --- /dev/null +++ b/presentation/src/main/res/layout/blocking_manager_preference_view.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + diff --git a/presentation/src/main/res/layout/container_activity.xml b/presentation/src/main/res/layout/container_activity.xml index 1f4c959c..10c439ad 100644 --- a/presentation/src/main/res/layout/container_activity.xml +++ b/presentation/src/main/res/layout/container_activity.xml @@ -22,7 +22,7 @@ android:layout_height="match_parent" android:orientation="vertical"> - اضافة الى القائمة التثبيت فوق إلغاء التثبيت - Mark read - Mark unread + مقروء + غير مقروء حظر مزامنة الرسائل… أنت: %s @@ -90,7 +90,7 @@ حذف اختر رقم الهاتف - %s ∙ Default + الوضع الافتراضي فقط واحد دائما %d مختارة @@ -128,7 +128,7 @@ إرفاق جهة اتصال خطأ في قراءة جهة الاتصال - SIM %1$d (%2$s) selected + تحديد الشريحة %s محددة، غيّر شريحة SIM إرسال الرسالة الإرسال جارٍ… @@ -201,7 +201,7 @@ وضع ليلي بسوادٍ حالك وقت البدء وقت الانتهاء - Automatic contact colors + تلوين جهات الاتصال تلقائيا حجم الخط استخدم خط النظام إيموجي تلقائية @@ -230,34 +230,34 @@ لاشيء أرشفة حذف - Block - Call - Mark read - Mark unread + حظر + اتصل + مقروء + غير مقروء تأكيدات الإستلام تأكيد أنه تم إرسال الرسائل بنجاح توقيع - Add a signature to the end of your messages + اضافة توقيع الى نهاية الرسائل نزع حركات التشكيل حذف حركات التشكيل من المحارف في الرسائل النصية الصادرة أرقام الهواتف النقالة فقط عند إنشاء رسالة، أظهر فقط أرقام الهواتف النقالة - Delete old messages automatically - Messages will be deleted after the specified number of days - Number of days - Never - Delete old messages automatically? + مسح الرسائل القدينة تلقائيا + مسح الرسائل القديمة تلقائيا بعد عدة ايام محددة + عدد الايام + لا نهائيا + مسح الرسائل القديمة تلقائيا؟ If you proceed, %1$d messages will be deleted now - After %d days + بعد يوم واحد After 1 day After %d days After %d days After %d days After %d days - Send long messages as MMS + ارسل الرسائل الطويلة كرسائل الوسائط المتعددة If your longer text messages are failing to send, or sending in the wrong order, you can send them as MMS messages instead. Additional charges may apply الضغط التلقائي لمرفقات رسائل الوسائط مزامنة الرسائل @@ -274,6 +274,7 @@ مدير المحظورات QKSMS Built-in blocking functionality in QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Automatically filter your calls and messages in one convenient place! Community IQ™ allows you to prevent unwanted messages from community known spammers الترشيح التلقائي للرسائل من الأرقام غير المرغوبة باستخدام تطبيق \"Should I Answer\" نسخ الارقام المحظورة @@ -320,6 +321,7 @@ افتح + التبرع ل %1$s%2$s شكراً لكم على دعم QKSMS! جميع ميزات QKSMS+ متاحة لك الآن + An error has occurred, please try again QKSMS+ مجاني لمستخدمي متجر ف-درويد! لا تتردد في التبرع إن كنت ترغب دعم تطوير هذا التطبيق. التبرع عن طريق بي بال قريباً @@ -346,7 +348,7 @@ QKSMS قيد التطوير النشط ، مشتراك سيتضمن كل ميزات QKSMS+ المستقبلية! تحميل… عرض المزيد من المحادثات - Mark read + مقروء مكالمة حذف إظهار المزيد @@ -357,12 +359,12 @@ تطبيق لا شيء - Archive - Delete - Block - Call - Mark read - Reply + ارشيف + مسح + منع + اتصال + مقروء + اجابه نعم الاستمرار @@ -405,9 +407,9 @@ دون تأخير - 3 seconds - 5 seconds - 10 seconds + ثلاث ثوان + خمس ثوان + عشر ثوان تلقائي @@ -417,7 +419,7 @@ 600كيلوبايت 1000كيلوبايت 2000كيلوبايت - No compression + بدون ضغط حسنًا diff --git a/presentation/src/main/res/values-bn/strings.xml b/presentation/src/main/res/values-bn/strings.xml index 93a7c286..6ec13816 100644 --- a/presentation/src/main/res/values-bn/strings.xml +++ b/presentation/src/main/res/values-bn/strings.xml @@ -262,6 +262,7 @@ অবরুদ্ধকরণ ব্যবস্থাপক QKSMS QKSMS-এর অন্তর্ভুক্ত অবরোধী সক্ষমতা(blocking) + Block spam messages, numbers & unknown calls with blacklist & Schedule তোমার কল আর বার্তা একটাই সুবিধাজনক জায়গা থেকে ফিল্টার করো বা ছাঁকো! Community IQ™ দিয়ে অবাঞ্ছিত বার্তা আটকানো যায় সমাজে পরিচিত স্প্যামারদের থেকে স্বয়ংক্রিয়ভাবে \"Should I Answer\"(আমার কি উত্তর দেয়া উচিত?) অ্যাপ্লিকেশন ব্যবহার করে অযাচিত নম্বর-এর বার্তাগুলি ফিল্টার করো অবরুদ্ধ নম্বরগুলো অনুলিপি করো @@ -300,6 +301,7 @@ %1$s %2$s দান করুন, + আনলক করুন QKSMS সমর্থনের জন্য আপনাকে ধন্যবাদ! আপনি এখন QKSMS+-এর সব বৈশিষ্ট্যেের সুবিধা পাচ্ছেন + An error has occurred, please try again F-Droid ব্যবহারকারীরা QKSMS+ বিনামূল্যে ব্যবহার করতে পারবেন! যদি আপনি উন্নয়ন সমর্থন করতে মুক্ত মনে অনুদান করুন। পেপাল এর মাধ্যমে দান করুন শীঘ্রই আসছে diff --git a/presentation/src/main/res/values-cs/strings.xml b/presentation/src/main/res/values-cs/strings.xml index 301b4bf5..44b23678 100644 --- a/presentation/src/main/res/values-cs/strings.xml +++ b/presentation/src/main/res/values-cs/strings.xml @@ -268,6 +268,7 @@ Správce blokování QKSMS Vestavěné blokování v QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Automatické filtrování hovorů a zpráv na jednom místě. Community IQ™ poskytuje ochranu před nevyžádanými zprávami od komunitou označených spammerů. Automaticky filtrovat zprávy od nevyžádaných čísel pomocí aplikace „Můžu to zvednout?“ Kopírovat blokovaná čísla @@ -310,6 +311,7 @@ Odemknout + darovat %1$s %2$s Děkujeme za podporu QKSMS! Nyní máte přístup ke všem funkcím QKSMS+ + An error has occurred, please try again QKSMS + je zdarma pro uživatele F-Droid! Pokud byste chtěli podpořit vývoj, neváhejte přispět. Darovat pomocí PayPal Připravujeme diff --git a/presentation/src/main/res/values-da/strings.xml b/presentation/src/main/res/values-da/strings.xml index f7f46857..94272bea 100644 --- a/presentation/src/main/res/values-da/strings.xml +++ b/presentation/src/main/res/values-da/strings.xml @@ -262,6 +262,7 @@ Blokeringshåndtering QKSMS Indbygget blokeringsfunktionalitet i QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Filtrér automatisk dine opkald og beskeder på ét praktisk sted! Community IQ ™ giver dig mulighed for at forhindre uønskede beskeder fra spammere kendt af fællesskabet Filtrér automatisk beskeder fra uopfordrede numre vha. \"Bør jeg besvare\"-app\'en Kopiér blokerede numre @@ -300,6 +301,7 @@ Oplås + donér for %1$s %2$s Tak for din støtte til QKSMS! Du har nu adgang til alle QKSMS+-funktioner + An error has occurred, please try again QKSMS+ er gratis for F-Droid-brugere! Ønsker du at støtte udviklingen, er du velkommen til at donere. Donér via PayPal Kommer snart diff --git a/presentation/src/main/res/values-de/strings.xml b/presentation/src/main/res/values-de/strings.xml index e06f954c..f24e229e 100644 --- a/presentation/src/main/res/values-de/strings.xml +++ b/presentation/src/main/res/values-de/strings.xml @@ -262,6 +262,7 @@ Blockiermanager QKSMS In QKSMS integrierte Blockierfunktion + Spam-Nachrichten und Nummern & unbekannte Anrufe mit Sperrliste & Zeitplan blockieren Filtern Sie automatisch Ihre Anrufe und Nachrichten in einer geeigneten Umgeben! Community IQ™ erlaubt es Ihnen unerwünschte Nachrichten von bekannten Spamnern zu unterbinden Nachrichten von unerwünschten Nummern automatisch mit Hilfe der App \"Should I Answer?\" filtern blockierte Nummer(n) kopieren @@ -300,6 +301,7 @@ Entsperren & Spenden für %1$s %2$s Vielen Dank für die Unterstützung von QKSMS! Du kannst jetzt alle QKSMS+ Funktionen verwenden + Ein Fehler ist aufgetreten, bitte versuchen Sie es erneut QKSMS+ ist für Nutzer von F-Droid kostenfrei! Spende gerne um die Entwicklung zu Unterstützen. Spenden per PayPal Demnächst verfügbar diff --git a/presentation/src/main/res/values-el/strings.xml b/presentation/src/main/res/values-el/strings.xml index a2884a22..71b1bc8c 100644 --- a/presentation/src/main/res/values-el/strings.xml +++ b/presentation/src/main/res/values-el/strings.xml @@ -262,6 +262,7 @@ Διαχειριστής φραγής QKSMS Ενσωματωμένη λειτουργία φραγής του QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Automatically filter your calls and messages in one convenient place! Community IQ™ allows you to prevent unwanted messages from community known spammers Automatically filter messages from unsolicited numbers by using the \"Should I Answer\" app Αντιγραφή αριθμών με φραγή @@ -300,6 +301,7 @@ Unlock + donate for %1$s %2$s Thank you for supporting QKSMS! You now have access to all QKSMS+ features + An error has occurred, please try again QKSMS+ is free for F-Droid users! If you\'d like to support development, a donation would be highly appreciated. Δωρεά μέσω PayPal Έρχεται σύντομα diff --git a/presentation/src/main/res/values-es/strings.xml b/presentation/src/main/res/values-es/strings.xml index 1471c4bf..781d2510 100644 --- a/presentation/src/main/res/values-es/strings.xml +++ b/presentation/src/main/res/values-es/strings.xml @@ -262,6 +262,7 @@ Gestor de bloqueo QKSMS Función de bloqueo integrado en QKSMS + Bloquee mensajes de spam, números y llamadas desconocidas con lista negra y programación ¡Filtrre automáticamente sus llamadas y mensajes en un lugar conveniente! La comunidad IQ™ te permite prevenir mensajes no deseados de spammers conocidos por la comunidad Filtra automáticamente los mensajes de números no solicitados mediante la aplicación \"¿Debo responder?\" Copiar números bloqueados @@ -300,6 +301,7 @@ Desbloquear + donación %1$s %2$s Gracias por apoyar a QKSMS! Ahora tienes acceso a todas las funciones de QKSMS + + An error has occurred, please try again QKSMS+ es gratis para los usuarios de F-Droid! Si desea apoyar el desarrollo, no dude en hacer una donación. Donar con PayPal Próximamente diff --git a/presentation/src/main/res/values-fa/strings.xml b/presentation/src/main/res/values-fa/strings.xml index ab04c012..8cd0b8e7 100644 --- a/presentation/src/main/res/values-fa/strings.xml +++ b/presentation/src/main/res/values-fa/strings.xml @@ -78,7 +78,7 @@ حذف آیا مطمئن هستید که می خواهید این گفتگو را حذف کنید؟ - آیا مطمئن هستید که می خواهید این %d گفتگو را حذف کنید؟ + آیا مطمئن هستید که می خواهید %d گفتگو را حذف کنید؟ کپی متن @@ -181,7 +181,7 @@ یک پیام را برنامه‌ریزی کنید پیام برنامه‌ریزی شده - هم‌اکنون ارسال کن + هم اکنون بفرست کپی متن حذف @@ -235,15 +235,15 @@ حذف کاراکترهای اضافه پیام ارسالی فقط شماره های تلفن وقتی در حال ارسال پیام هستید فقط می توانید شماره تلفن را ببنید - Delete old messages automatically - Messages will be deleted after the specified number of days - Number of days - Never - Delete old messages automatically? - If you proceed, %1$d messages will be deleted now + حذف خودکار پیام های قدیمی + پیام ها پس از تعداد روز تعیین شده حذف می شوند + تعداد روزها + هرگز + پیام های قدیمی به طور خودکار حذف شوند؟ + اگر ادامه دهید، اکنون %1$d پیام حذف خواهد شد - After 1 day - After %d days + بعد از ۱ روز + بعد از %d روز پیام های طولانی را به عنوان MMS ارسال کن اگر پیام های متنی طولانی شما نتوانسته اند ارسال شوند یا به ترتیب اشتباه ارسال شوند ، می توانید به جای آنها پیام های MMS ارسال کنید. هزینه های اضافی ممکن است اعمال شود @@ -262,6 +262,7 @@ مدیریت انسداد QKSMS عملکرد مسدود کننده داخلی در QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule تماس ها و پیام های خود را بطور خودکار فیلتر کنید! IQ Community به شما اجازه می دهد تا از پیام های ناخواسته توسط اسپمرهای شناخته شده در جامعه جلوگیری کنید با استفاده از برنامه «آیا باید جواب بدم»، پیام‌ها را از شماره های ناخواسته به طور خودکار فیلتر کنید کپی شماره های مسدود شده @@ -300,6 +301,7 @@ نسخه پیشرفته و حمایت به‌ازای %1$s %2$s سپاس از شما برای حمایت از QKSMS! حال شما به همه امکانات QKSMS+ دسترسی دارید + An error has occurred, please try again QKSMS+ برای کاربران F-Droid رایگان است! اگر می‌خواهید از توسعه حمایت کنید، از کمک مالی بسیار قدردانی می‌شود. از طریق PayPal کمک مالی کنید به زودی diff --git a/presentation/src/main/res/values-fi/strings.xml b/presentation/src/main/res/values-fi/strings.xml index f26dd108..feb834ae 100644 --- a/presentation/src/main/res/values-fi/strings.xml +++ b/presentation/src/main/res/values-fi/strings.xml @@ -262,6 +262,7 @@ Estojen hallinta QKSMS QKSMS:ään sisäänrakennettu esto-toiminto + Block spam messages, numbers & unknown calls with blacklist & Schedule Suodata puhelusi ja soittosi automaattisesti, yhdessä kätevässä paikassa! Community IQ™ antaa sinun estää haluamattomia viestejä, yhteisölle tutuilta roskapostin lähettäjiltä Suodata haluamattomien numeroin lähettämät viestit automaattisesti, \"Should I Answer\" -sovellusta käyttämällä Kopioi estetyt numerot @@ -300,6 +301,7 @@ Ominaisuuksien avaus + lahjoitus hintaan %1$s %2$s Kiitos, kun tuit QKSMS:ää! Olet nyt oikeutettu käyttämään kaikkia QKSMS+ -ominaisuuksia + An error has occurred, please try again QKSMS+ on ilmainen F-Droidin käyttäjille! Jos haluaisit tukea kehitystyötä tulevaisuudessa, arvostaisimme lahjoitustasi todella paljon. Lahjoita PayPalilla Tulossa pian diff --git a/presentation/src/main/res/values-fr/strings.xml b/presentation/src/main/res/values-fr/strings.xml index 27ae8db7..a6e0db82 100644 --- a/presentation/src/main/res/values-fr/strings.xml +++ b/presentation/src/main/res/values-fr/strings.xml @@ -235,15 +235,15 @@ Supprimer les accents des caractères lors de l\'envoi de messages SMS Numéros de mobile Lorsque vous composez un message, afficher uniquement les numéros de mobile - Delete old messages automatically - Messages will be deleted after the specified number of days - Number of days - Never - Delete old messages automatically? - If you proceed, %1$d messages will be deleted now + Supprimer les anciens messages automatiquement + Les messages seront supprimés après le nombre de jours spécifié + Nombre de jours + Jamais + Supprimer les anciens messages automatiquement ? + Si vous continuez, %1$d messages seront supprimés maintenant - After 1 day - After %d days + Après 1 jour + Après %d jours Envoyer les messages longs en MMS Si vos messages texte plus longs ne parviennent pas à être envoyés, ou s\'ils sont envoyés dans le désordre, vous pouvez les envoyer sous forme de messages MMS à la place. Des frais supplémentaires peuvent s\'appliquer @@ -262,6 +262,7 @@ Gestionnaire de blocage QKSMS Fonction de blocage intégrée dans QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Filtrez automatiquement vos appels et vos messages dans un seul endroit pratique ! La communauté IQ™ vous permet d\'éviter les messages indésirables des spammeurs connus de celle-ci Filtrer automatiquement les messages de numéros non sollicités à l’aide de l’application « Devrais-je répondre » Copier les numéros bloqués @@ -300,6 +301,7 @@ Déverrouiller + faire un don pour %1$s %2$s Merci de soutenir QKSMS ! Vous avez maintenant accès à toutes les fonctionnalités de QKSMS+ + An error has occurred, please try again QKSMS + est gratuit pour les utilisateurs de F-Droid ! Si vous souhaitez soutenir le développement, n’hésitez pas à faire un don. Faire un don avec PayPal Prochainement diff --git a/presentation/src/main/res/values-hi/strings.xml b/presentation/src/main/res/values-hi/strings.xml index 2116b8ec..3ffa4570 100644 --- a/presentation/src/main/res/values-hi/strings.xml +++ b/presentation/src/main/res/values-hi/strings.xml @@ -262,6 +262,7 @@ Blocking Manager QKSMS Built-in blocking functionality in QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Automatically filter your calls and messages in one convenient place! Community IQ™ allows you to prevent unwanted messages from community known spammers Automatically filter messages from unsolicited numbers by using the \"Should I Answer\" app Copy blocked numbers @@ -300,6 +301,7 @@ Unlock + donate for %1$s %2$s Thank you for supporting QKSMS! You now have access to all QKSMS+ features + An error has occurred, please try again QKSMS+ is free for F-Droid users! If you\'d like to support development, a donation would be highly appreciated. Donate via PayPal जल्द आ रहा है diff --git a/presentation/src/main/res/values-hr/strings.xml b/presentation/src/main/res/values-hr/strings.xml index c58b8e68..d0098405 100644 --- a/presentation/src/main/res/values-hr/strings.xml +++ b/presentation/src/main/res/values-hr/strings.xml @@ -265,6 +265,7 @@ Blocking Manager QKSMS Built-in blocking functionality in QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Automatically filter your calls and messages in one convenient place! Community IQ™ allows you to prevent unwanted messages from community known spammers Automatically filter messages from unsolicited numbers by using the \"Should I Answer\" app Copy blocked numbers @@ -305,6 +306,7 @@ Otključajte + za %1$s %2$s Hvala vam za podržavanje QKSMS! Sada imate pristup svim QKSMS+ značajkama + An error has occurred, please try again QKSMS+ is free for F-Droid users! If you\'d like to support development, a donation would be highly appreciated. Donirajte putem PayPala Uskoro dolazi diff --git a/presentation/src/main/res/values-hu/strings.xml b/presentation/src/main/res/values-hu/strings.xml index c5c5bd6d..99c29c24 100644 --- a/presentation/src/main/res/values-hu/strings.xml +++ b/presentation/src/main/res/values-hu/strings.xml @@ -262,6 +262,7 @@ Tiltáskezelő QKSMS A QKSMS beépített tiltási funkciója + Block spam messages, numbers & unknown calls with blacklist & Schedule Egy kényelmesen kezelhető helyen a hívások és üzenetek szűrése! A Community IQ™ megakadályozza a közösség által ismert spammerek üzeneteit Automatikusan szűrheti az üzeneteket a nem kívánt számok alapján a \"Should I Answer\" alkalmazás használatával Tiltott számok másolása @@ -300,6 +301,7 @@ Minden funkció engedélyezése + adomány %1$s %2$s Köszönjük, hogy támogatot a QKSMS-t! MOst hozzáférsz minden QKSMS+ funkcióhoz + An error has occurred, please try again A QKSMS+ minden F-Droid felhasználónak ingyenes. Ha támogatni szeretnéd a fejlesztést az alábbi módon megteheted. Támogatás PayPalon keresztül Hamarosan diff --git a/presentation/src/main/res/values-in/strings.xml b/presentation/src/main/res/values-in/strings.xml index 11a69da8..6bab7845 100644 --- a/presentation/src/main/res/values-in/strings.xml +++ b/presentation/src/main/res/values-in/strings.xml @@ -259,6 +259,7 @@ Pengelola Pemblokiran QKSMS Fitur pemblokiran pesan di dalam QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Otomatis menyaring panggilan dan pesan di dalam satu tempat! Community IQ™ memungkinkan anda memblokir pesan yang tidak diinginkan dari daftar spammer Secara otomatis menyaring pesan dari nomor yang tidak diinginkan menggunakan aplikasi \"Should I Answer\" Salin nomor yang diblokir @@ -295,6 +296,7 @@ Unlock + donate for %1$s %2$s Terima kasih telah mendukung QKSMS! Anda sekarang bisa mengakses semua fitur QKSMS+ + An error has occurred, please try again QKSMS+ selalu gratis untuk pengguna F-Droid! Jika anda ingin mendukung pengembangan, jangan ragu untuk donasi. Donasi via PayPal Segera hadir diff --git a/presentation/src/main/res/values-it/strings.xml b/presentation/src/main/res/values-it/strings.xml index cee6c8e5..14fd3ba3 100644 --- a/presentation/src/main/res/values-it/strings.xml +++ b/presentation/src/main/res/values-it/strings.xml @@ -262,6 +262,7 @@ Gestore blocchi QKSMS Funzionalità di blocco integrata in QKSMS + Blocca i messaggi di spam, i numeri e le chiamate sconosciute con la blacklist e con lo Scheduler Filtra automaticamente le tue chiamate e i tuoi messaggi in un unico comodo posto! Community IQ™ ti consente di prevenire messaggi indesiderati dagli spammer noti alla comunità Filtrare automaticamente i messaggi provenienti da numeri indesiderati utilizzando l\'app \"Dovrei rispondere?\" Copia i numeri bloccati @@ -300,6 +301,7 @@ Sblocca & dona per %1$s %2$s Grazie per il supporto a QKSMS! È ora possibile accedere a tutte le funzioni QKSMS+ + Si è verificato un errore, si prega di riprovare QKSMS+ è gratuito per gli utenti di F-Droid! Se desideri sostenere il progetto, una tua donazione sarebbe molto apprezzata. Fai una donazione tramite PayPal Prossimamente diff --git a/presentation/src/main/res/values-iw/strings.xml b/presentation/src/main/res/values-iw/strings.xml index 9d91c28e..ad00c610 100644 --- a/presentation/src/main/res/values-iw/strings.xml +++ b/presentation/src/main/res/values-iw/strings.xml @@ -19,35 +19,35 @@ --> התכתבות חדשה - כתיבה + כתוב הודעה קיצור הדרך הושבת בארכיון הגדרות התראות - ערכת עיצוב - חיפוש בדואר הנכנס… + ערכת נושא + חיפוש בהודעות נכנסות… נא להקליד שם או מספר - דילוג + דלג המשך - להוסיף מישהו + הוסף איש קשר התקשרות פרטים - שמירה לגלריה + שמור לגלריה שיתוף - פתיחת מגירת ניווט + פתח מגירת ניווט %d נבחרו - פינוי + נקה לארכיון שליפה מהארכיון - מחיקה - הוספה לאנשי קשר - הצמדה למעלה - שחרור הצמדה - סימון כהודעה שנקראה - סימון כהודעה שלא נקראה - חסימה - ההודעות מסונכרנות… - אני: %s + מחק + הוסף לאנשי קשר + הצמד למעלה + בטל הצמדה + סמן כהודעה שנקראה + סמן כהודעה שלא נקראה + חסום + מסנכרן הודעות… + אתה: %s טיוטה תוצאות בהודעות %d הודעות @@ -55,16 +55,16 @@ אין תוצאות ההתכתבויות שהעברת לארכיון תופענה כאן התחלת התכתבות חדשה - להתאהב בהתמסררות - הגדרת QKSMS ליישומון המסרונים כבררת מחדל - החלפה + להתאהב מחדש בכתיבת הודעות + הגדרת QKSMS כיישומון בררת מחדל למסרונים + החלף נדרשת הרשאה ל־QKSMS נדרשות הרשאות כדי לשלוח ולצפות במסרונים ל־QKSMS נדרשות הרשאות כדי לצפות באנשי הקשר שלך - לאפשר + אפשר דואר נכנס בארכיון - בתזמון + מתוזמן חסימה עוד הגדרות @@ -75,20 +75,20 @@ נשמח לקבל ממך דירוג ב־Google Play! כמובן! התעלמות - מחיקה + מחק - למחוק את ההתכתבות הזאת? + אתה בטוח שברצונך למחוק ההתכתבות זאת? למחוק את %d ההתכתבויות האלה? למחוק את %d ההתכתבויות האלה? למחוק את %d ההתכתבויות האלה? - העתקת טקסט - העברה - מחיקה + העתק טקסט + העבר + מחק נא לבחור מספר טלפון - %s ∙ בררת מחדל + %s ∙ ברירת מחדל פעם אחד בלבד תמיד %d נבחרו @@ -101,13 +101,13 @@ הזמן הנבחר חייב להיות בעתיד! עליך לשחרר את QKSMS+‎ כדי להשתמש בהודעות מתוזמנות הוספה להודעות המתוזמנות - כתיבת הודעה… - העתקת טקסט - העברה - מחיקה - הקודמת - הבאה - פינוי + כתוב הודעה… + העתק טקסט + העבר + מחק + הקודם + הבא + נקה פרטי הודעה סוג: %s מאת: %s @@ -115,68 +115,68 @@ נושא: %s עדיפות: %s גודל: %s - שליחה: %s - קבלה: %s - מסירה: %s + נשלח: %s + התקבל: %s + נמסר: %s קוד שגיאה: %d - הוספת קובץ מצורף - צירוף תמונה - צילום תמונה + הוסף קובץ מצורף + צרף תמונה + צלם תמונה תזמון הודעה - צירוף איש קשר + צרף איש קשר שגיאה בקריאת איש קשר נבחר SIM מס׳ %1$d ‏(%2$s) - %s נבחרו, החלפת כרטיס SIM - שליחת הודעה - מתבצעת שליחה… + %s נבחר, החלף כרטיס SIM + שלח הודעה + שולח… %s נמסרה - השליחה נכשלה. נא לגעת כדי לנסות שוב + השליחה נכשלה. הקש כדי לנסות שוב פרטים הכתובת הועתקה כותרת התכתבות התראות - ערכת עיצוב - העברה לארכיון + ערכת נושא + ארכיון הוצאה מארכיון - חסימה - שחרור חסימה - מחיקת התכתבות + חסום + בטל חסימה + מחק התכתבות לא ניתן לטעון מדיה נשמר לגלריה גיבוי ושחזור - ההודעות מגובות - מתבצע שחזור מגיבוי + מגבה הודעות + משחזר מגיבוי גיבוי אחרון - בטעינה… - מעולם לא + טוען… + לעולם לא שחזור - בחירת גיבוי + בחר גיבוי נא לשחרר את QKSMS+‎ כדי להשתמש בגיבוי ובשחזור מתבצע גיבוי… מתבצע שחזור… - שחזור מגיבוי - לשחזר את ההודעות שלך מהגיבוי הזה? - עצירת השחזור + שחזר מגיבוי + אתה בטוח שברצונך לשחזר את ההודעות שלך מגיבוי זה? + עצור שחזור הודעות שכבר שוחזרו יישארו במכשיר שלך גיבויים לא נמצאו גיבויים - הודעה אחת - שתי הודעות + הודעה %d + %d הודעות %d הודעות %d הודעות נכון לעכשיו, קיימת תמיכה בהודעות מסוג SMS בתכונת הגיבוי והשחזור. תמיכה ב־MMS וגיבויים מתוזמנים יגיעו בעתיד הקרוב! - לגבות כעת + גבה כעת הגיבוי מפוענח… %d/%d הודעות - הגיבוי נשמר… - ההודעות מסונכרנות… + שומר גיבוי… + מסנכרן הודעות… הסתיים! גיבוי ושחזור - מתוזמנת - שליחת הודעה אוטומטית, ברגע המדויק שמתאים לך + מתוזמן + שלח הודעה אוטומטית, ברגע המדויק שמתאים לך היי! מתי יום ההולדת שלך שוב? ב־23 בדצמבר מזל טוב! תראה איך החברות בינינו פורחת, זכרתי את יום ההולדת שלך @@ -185,14 +185,14 @@ תזמון הודעה הודעה מתוזמנת - לשלוח כע - העתקת טקסט - מחיקה + שלח כעת + העתק טקסט + מחק מראה כללי תגובה מהירה - ערכת עיצוב + ערכת נושא מצב לילה מצב לילה שחור טהור זמן התחלה @@ -202,7 +202,7 @@ שימוש בגופן המערכת אימוג׳י אוטומטי התראות - יש לגעת כדי להתאים אישית + הקש כדי להתאים אישית פעולות כפתור 1 כפתור 2 @@ -214,22 +214,22 @@ ללא תגובה מהירה חלונית קופצת להודעות חדשות - יש לגעת כדי להתעלם - יש לגעת מחוץ לחלונית הקופצת כדי לסגור אותה + הקש כדי להתעלם + הקש מחוץ לחלונית הקופצת כדי לסגור אותה שליחה בעיכוב - פעולות גרירה - להגדיר פעולות גרירה להתכתבויות - גרירה ימינה - גרירה שמאלה + פעולות ניגוב + הגדר פעולות ניגוב להתכתבויות + ניגוב ימינה + ניגוב שמאלה החלפה ללא לארכיון - מחיקה - חסימה - להתקשר - סימון כהודעה שנקראה - סימון כהודעה שלא נקראה + מחק + חסום + התקשר + סמן כהודעה שנקראה + סמן כהודעה שלא נקראה אישור מסירה אישור שההודעות נשלחו בהצלחה @@ -268,6 +268,7 @@ מנהל חסימות QKSMS תכונת חסימה מובנית בתוך QKSMS + חסימת הודעות ספאם, מספרים ושיחות לא מזוהות עם רשימת חסימה ותזמון לסנן אוטומטית את השיחות וההודעות שלך במקום אחיד ונוח! Community IQ™‎ מאפשר לך להימנע מהודעות בלתי רצויות בזכות דיווחים על מפיצי ספאם מצד הקהילה לסנן אוטומטית הודעות ממספרים בלתי רצויים על ידי שימוש ביישומון „Should I Answer” (שאענה) העתקת מספרים חסומים @@ -310,6 +311,7 @@ שחרור ותרומה תמורת %1$s %2$s תודה לך על תמיכתך ב־QKSMS! כעת יש לך גישה לכל התכונות של QKSMS+‎ + אירעה שגיאה, נא לנסות שוב התכנית QKSMS+‎ מוגשת בחינם למשתמשי F-Droid! אם מעניין אותך לתמוך בפיתוח, אפשר להגיש תרומה. תרומה באמצעות PayPal בקרוב diff --git a/presentation/src/main/res/values-ja/strings.xml b/presentation/src/main/res/values-ja/strings.xml index b277ee04..0bd3df74 100644 --- a/presentation/src/main/res/values-ja/strings.xml +++ b/presentation/src/main/res/values-ja/strings.xml @@ -259,6 +259,7 @@ ブロッキングマネージャー QKSMS QKSMS の内蔵ブロック機能 + ブラックリストとスケジュールにより迷惑メッセージ、番号、不明な通話をブロック 一か所で便利に通話とメッセージを自動的にフィルタリングします! Community IQ™を使用すると、コミュニティで知られているスパマーからの不要なメッセージを防ぐことができます \"Should I Answer\" アプリを使用して、迷惑な番号からのメッセージを自動的にフィルタします ブロックした番号をコピー @@ -295,6 +296,7 @@ %1$s %2$s のロック解除と寄付 QKSMS を支援いただきありがとうございます! QKSMS+ のすべての機能にアクセスできます + エラーが発生しました。もう一度やり直してください QKSMS+ は F-Droid ユーザーは無料です! 開発をサポートしたい場合は、気軽に寄付をしてください。 PayPal で寄付する 近日登場 diff --git a/presentation/src/main/res/values-ko/strings.xml b/presentation/src/main/res/values-ko/strings.xml index 174e6f28..0a70241e 100644 --- a/presentation/src/main/res/values-ko/strings.xml +++ b/presentation/src/main/res/values-ko/strings.xml @@ -233,14 +233,14 @@ SMS를 주고받을 때, 대문자 없애기 전화번호만 보이기 메시지를 쓸 때, 전화번호만 보이게 하기 - Delete old messages automatically - Messages will be deleted after the specified number of days - Number of days - Never - Delete old messages automatically? - If you proceed, %1$d messages will be deleted now + 자동으로 오래된 메시지 제거 + 지정된 일 수 후에 메시지를 삭제합니다 + 일 수 + 사용 안 함 + 자동으로 오래된 메시지를 제거하시겠습니까? + 이대로 진행하면, %1$d 개의 메시지가 지금 삭제됩니다 - After %d days + %d 일 후 장문 메시지를 MMS로 보내기 만약 장문의 메시지가 보내지지 않거나, 잘못된 순서로 보내진다면, MMS 메시지로 보낼 수 있습니다. (MMS로 인한 추가요금이 발생할 수 있습니다) @@ -259,6 +259,7 @@ 차단 메니저 QKSMS 빌트인 차단기능이 있는 기본 필터. + Block spam messages, numbers & unknown calls with blacklist & Schedule 자동으오 전화와 메시지를 한 곳에서 필터링하세요! Community IQ™는 커뮤니티 기반으로 원하지 않는 스팸 메시지를 차단해줍니다. Should I Answer 앱을 이용해 필요없는 번호에서 보낸 메시지를 자동으로 필터링하기 차단된 번호 복사하기 @@ -295,6 +296,7 @@ %1$s %2$s 으로 프리미엄 기능 잠금 해제 및 기부 QKSMS를 지원해 주셔서 감사합니다! 이제 모든 QKSMS+ 기능에 액세스할 수 있습니다 + An error has occurred, please try again QKSMS+는 F-Droid 사용자들에게 무료입니다! 만약 여러분이 개발을 지원하고 싶으시다면, 기부해 주시기 바랍니다. 페이팔을 통해 기부 출시 예정 diff --git a/presentation/src/main/res/values-lt/strings.xml b/presentation/src/main/res/values-lt/strings.xml index f527eecf..f739bb27 100644 --- a/presentation/src/main/res/values-lt/strings.xml +++ b/presentation/src/main/res/values-lt/strings.xml @@ -268,6 +268,7 @@ Blocking Manager QKSMS Built-in blocking functionality in QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Automatically filter your calls and messages in one convenient place! Community IQ™ allows you to prevent unwanted messages from community known spammers Automatiškai filtruoti žinutes nuo nežinomų numerių su „Ar reikia atsakyti“ programėle Copy blocked numbers @@ -310,6 +311,7 @@ Atrakinti + aukoti %1$s %2$s Ačiū už paramą! Dabar jūs turite prieigą prie visoms QKSMS+ funkcijoms + An error has occurred, please try again QKSMS+ yra nemokama F-Droid vartotojams! Taip pat galite paremti programos kūrėją aukodami. Paaukoti per PayPal Jau greitai diff --git a/presentation/src/main/res/values-nb/strings.xml b/presentation/src/main/res/values-nb/strings.xml index 47ecbf76..5725c06e 100644 --- a/presentation/src/main/res/values-nb/strings.xml +++ b/presentation/src/main/res/values-nb/strings.xml @@ -262,6 +262,7 @@ Blokkeringer QKSMS Innebygd blokkeringsfunksjon i QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Filtrer anrop og meldinger automatisk. Fellesskapets intelligens™ hjelper med å forhindre uønskede henvendelser fra plageånder Filtrer meldinger fra ukjente numre automatisk med \"Skal jeg svare\"-appen Kopier blokkerte numre @@ -300,6 +301,7 @@ Aktiver + donér for %1$s %2$s Takk for at du støtter QKSMS! Du har nå tilgang til alle funksjoner i QKSMS+ + An error has occurred, please try again QKSMS+ er gratis for F-Droid-brukere. Om du ønsker å støtte utviklingen, kan du gjerne donere. Donér med PayPal Kommer snart diff --git a/presentation/src/main/res/values-ne/strings.xml b/presentation/src/main/res/values-ne/strings.xml index cf88bc38..98a76c06 100644 --- a/presentation/src/main/res/values-ne/strings.xml +++ b/presentation/src/main/res/values-ne/strings.xml @@ -262,6 +262,7 @@ Blocking Manager QKSMS Built-in blocking functionality in QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Automatically filter your calls and messages in one convenient place! Community IQ™ allows you to prevent unwanted messages from community known spammers Automatically filter messages from unsolicited numbers by using the \"Should I Answer\" app Copy blocked numbers @@ -300,6 +301,7 @@ Unlock + donate for %1$s %2$s Thank you for supporting QKSMS! You now have access to all QKSMS+ features + An error has occurred, please try again QKSMS+ is free for F-Droid users! If you\'d like to support development, a donation would be highly appreciated. Donate via PayPal Coming soon diff --git a/presentation/src/main/res/values-nl/strings.xml b/presentation/src/main/res/values-nl/strings.xml index acaf0a76..e7f3bc75 100644 --- a/presentation/src/main/res/values-nl/strings.xml +++ b/presentation/src/main/res/values-nl/strings.xml @@ -262,6 +262,7 @@ Blokkeermanager QKSMS Ingebouwde blokkeerfunctie in QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Filter je oproepen en berichten automatisch op één handige plaats! Community IQ™ stelt je in staat om ongewenste berichten van de bij community bekende spammers te blokkeren Automatisch filteren van berichten van ongevraagde nummers met behulp van de app \"Should I Answer\" Kopieer geblokkeerde nummers @@ -300,6 +301,7 @@ Ontgrendel en doneer voor %1$s %2$s Bedankt voor het onderhouden van QKSMS! Je hebt nu toegang tot alle QKSMS+ functies + An error has occurred, please try again QKSMS+ is gratis voor F-Droid gebruikers. Als je verdere ontwikkelingen wilt helpen, kun je gerust een donatie overwegen. Doneren via PayPal Binnenkort diff --git a/presentation/src/main/res/values-pl/strings.xml b/presentation/src/main/res/values-pl/strings.xml index bdf2dc19..f8af2c1f 100644 --- a/presentation/src/main/res/values-pl/strings.xml +++ b/presentation/src/main/res/values-pl/strings.xml @@ -51,9 +51,9 @@ Szkic Wyniki w wiadomościach %d wiadomości - Twoje rozmowy będą wyświetlane tutaj + Miejsce dla twoich bieżących rozmów Brak wyników - Twoje zarchiwizowane rozmowy będą wyświetlane tutaj + Miejsce dla twoich zarchiwizowanych rozmów Rozpocznij nową rozmowę Pokochaj SMSowanie na nowo Ustaw QKSMS jako domyślną aplikację do osbługi SMSów i MMSów @@ -218,7 +218,7 @@ Dotknij gdziekolwiek poza okienkiem, aby zamknąć Opóźnione wysyłanie Akcje po przeciągnięciu - Ustaw akcje po przeciągnięciu dla rozmów + Ustaw akcje dla rozmów po przeciągnięciu Przeciągnięcie w prawo Przeciągnięcie w lewo ZMIEŃ @@ -239,17 +239,17 @@ Usuwaj ogonki ze znaków w wiadomościach Tylko numery komórkowe Pokazuj kontakty tylko z numerami komórkowymi - Delete old messages automatically - Messages will be deleted after the specified number of days - Number of days - Never - Delete old messages automatically? - If you proceed, %1$d messages will be deleted now + Automatycznie usuwaj wiadomości + Stare wiadomości będą usuwane po określonej liczbie dni + Liczba dni + Nigdy + Usunąć automatycznie stare wiadomości? + Jeśli przejdziesz dalej, %1$d wiadomość(-ci) zostanie usuniętych - After 1 day - After %d days - After %d days - After %d days + Po 1 dniu + Po %d dniach + Po %d dniach + Po %d dniach Wysyłaj długie wiadomości jako MMS Jeśli dłuższe wiadomości tekstowe nie są wysyłane lub wysyłane są w złej kolejności, możesz wysyłać je jako wiadomości MMS. Mogą zostać naliczone dodatkowe opłaty @@ -268,6 +268,7 @@ Menadżer Blokowania QKSMS Wbudowana funkcja blokowania w QKSMS + Blokuj spam, numery i połączenia od nieznajomych za pomocą czarnej listy i harmonogramu. Automatycznie filtruj twoje rozmowy i wiadomości tekstowe w jednym wygodnym miejscu! Community IQ™ pozwala zapobiegać niechcianym wiadomościom od znanych spamerów Automatycznie filtruj wiadomości od niechcianych numerów za pomocą aplikacji \"Should I Answer?\" Skopiuj zablokowane numery @@ -279,7 +280,7 @@ Numer telefonu Blokuj Zablokowane wiadomości - Tutaj pojawią się twoje zablokowane wiadomości + Miejsce dla twoich zablokowanych wiadomości Blokuj Odblokuj @@ -310,6 +311,7 @@ Odblokuj i wesprzyj (%1$s %2$s) Dziękujemy za wsparcie aplikacji QKSMS! Masz teraz dostęp do wszystkich funkcji QKSMS+ + Wystąpił błąd. Spróbuj ponownie. Aplikacja QKSMS+ jest bezpłatna dla użytkowników F-Droid! Jeśli chcesz wesprzeć jej rozwój, rzuć pieniążka. Wsparcie za pośrednictwem serwisu PayPal Już wkrótce diff --git a/presentation/src/main/res/values-pt-rBR/strings.xml b/presentation/src/main/res/values-pt-rBR/strings.xml index d9e86e70..941eb6a2 100644 --- a/presentation/src/main/res/values-pt-rBR/strings.xml +++ b/presentation/src/main/res/values-pt-rBR/strings.xml @@ -262,6 +262,7 @@ Blocking Manager QKSMS Built-in blocking functionality in QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Automatically filter your calls and messages in one convenient place! Community IQ™ allows you to prevent unwanted messages from community known spammers Automaticamente filtrar mensagens não solicitadas usando o aplicativo \"Should I Answer\" Copy blocked numbers @@ -300,6 +301,7 @@ Desbloqueie e doar por %1$s %2$s Obrigado por apoiar o QKSMS! Agora você tem acesso a todos os recursos do QKSMS+ + An error has occurred, please try again QKSMS+ é gratuito para usuários do F-Droid! Se você gostaria de apoiar o desenvolvimento, sinta-se livre para fazer uma doação. Doar via PayPal Em Breve diff --git a/presentation/src/main/res/values-pt/strings.xml b/presentation/src/main/res/values-pt/strings.xml index 9459bfe1..f4a4270d 100644 --- a/presentation/src/main/res/values-pt/strings.xml +++ b/presentation/src/main/res/values-pt/strings.xml @@ -262,6 +262,7 @@ Gestor de bloqueios QKSMS Funcionalidade de bloqueio, nativa no QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Filtrar automaticamente as chamadas e as mensagens com a aplicação Community IQ™, com a qual pode descartar as mensagens que forem enviadas pelo \'spammers\' reconhecidos na comunidade Filtrar automaticamente as mensagens de números utilizando a aplicação \"Should I Answer\" Copiar números bloqueados @@ -300,6 +301,7 @@ Desbloquear + com uma doação de %1$s %2$s Obrigado por apoiar o QKSMS! Agora, tem acesso a todas as funções do QKSMS+ + Ocorreu um erro. Por favor tente novamente. O QKSMS+ é gratuito para os utilizadores F-Droid! Se quiser ajudar no desenvolvimento, pode efetuar um donativo. Donativos por PayPal Brevemente diff --git a/presentation/src/main/res/values-ro/strings.xml b/presentation/src/main/res/values-ro/strings.xml index 0637d147..e4f3446d 100644 --- a/presentation/src/main/res/values-ro/strings.xml +++ b/presentation/src/main/res/values-ro/strings.xml @@ -265,6 +265,7 @@ Blocking Manager QKSMS Built-in blocking functionality in QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Automatically filter your calls and messages in one convenient place! Community IQ™ allows you to prevent unwanted messages from community known spammers Automatically filter messages from unsolicited numbers by using the \"Should I Answer\" app Copy blocked numbers @@ -305,6 +306,7 @@ Unlock + donate for %1$s %2$s Thank you for supporting QKSMS! You now have access to all QKSMS+ features + An error has occurred, please try again QKSMS+ is free for F-Droid users! If you\'d like to support development, a donation would be highly appreciated. Donate via PayPal Coming soon diff --git a/presentation/src/main/res/values-ru/strings.xml b/presentation/src/main/res/values-ru/strings.xml index 70f8a15f..38ff9e64 100644 --- a/presentation/src/main/res/values-ru/strings.xml +++ b/presentation/src/main/res/values-ru/strings.xml @@ -268,6 +268,7 @@ Управление блокировкой QKSMS Встроенная функция блокировки QKSMS + Чёрный список с возможность работы по расписанию для блокировки сообщений со спамом, звонков с определённых и неизвестных номеров Автоматическая фильтрация звонков и сообщений в одном удобном месте! Community IQ™ позволяет предотвратить получение нежелательных сообщений от известных сообществу спаммеров Автоматически фильтровать сообщения от нежелательных номеров, используя приложение «Should I Answer» Скопировать заблокированные номера @@ -310,6 +311,7 @@ Разблокировать + пожертвовать %1$s %2$s Спасибо за поддержку QKSMS! Теперь у вас есть доступ ко всем функциям QKSMS+ + Произошла ошибка. Попробуйте ещё раз. QKSMS+ является бесплатным для пользователей F-Droid! Если вы хотите поддержать развитие приложения, сделайте пожертвование. Пожертвовать через PayPal Скоро diff --git a/presentation/src/main/res/values-sk/strings.xml b/presentation/src/main/res/values-sk/strings.xml index 955be4fb..1a936dc7 100644 --- a/presentation/src/main/res/values-sk/strings.xml +++ b/presentation/src/main/res/values-sk/strings.xml @@ -268,6 +268,7 @@ Správca blokovaní QKSMS Vstavané blokovanie v QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Automaticky filtrujte svoje hovory a správy na jednom mieste! Community IQ™ vám poskytuje ochranu pred spamom od komunitou označených spammerov. Automaticky filtrovať správy od nevyžiadaných čísiel pomocou aplikácie \"Should I Answer?\" Kopírovať blokované čísla @@ -310,6 +311,7 @@ Odomknúť + darovať za %1$s %2$s Ďakujeme, že ste podporili QKSMS! Odteraz máte prístup ku všetkým QKSMS+ funkciám + An error has occurred, please try again QKSMS+ je zdarma pre používateľov F-Droid! Ak si prajete podporiť vývoj, neváhajte prispieť. Prispieť cez PayPal Už čoskoro diff --git a/presentation/src/main/res/values-sl/strings.xml b/presentation/src/main/res/values-sl/strings.xml index 593a3ac5..feec57f0 100644 --- a/presentation/src/main/res/values-sl/strings.xml +++ b/presentation/src/main/res/values-sl/strings.xml @@ -268,6 +268,7 @@ Upravljalnik Blokiranja QKSMS Vgrajena sposobnost blokiranja v QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Samodejno razvrstite vaše klice in sporočila v eno priročno mesto! Skupnostni IQ™ omogoča, da preprečite prejemanje sporočil pošiljateljev neželenih sporočil, kateri so skupnosti poznani Samodejno razvrstite sporočila neželenih številk tako, da uporabiš \"Should I Answer\" aplikacijo Kopiraj blokirane številke @@ -310,6 +311,7 @@ Odkleni + doniraj za %1$s %2$s Hvala da podpirate QKSMS! Zdaj imate dostop do vseh QKSMS+ funkcij + An error has occurred, please try again QKSMS+ je brezplačen za F-Droid uporabnike! Če želite podpirati razvoj, so donacije zelo dobrodošle. Doniraj preko PayPal Prihaja kmalu diff --git a/presentation/src/main/res/values-sr/strings.xml b/presentation/src/main/res/values-sr/strings.xml index 14a2fc5a..71abcce5 100644 --- a/presentation/src/main/res/values-sr/strings.xml +++ b/presentation/src/main/res/values-sr/strings.xml @@ -18,400 +18,402 @@ ~ along with QKSMS. If not, see . --> - New conversation - Compose - Shortcut disabled - Archived + Нови разговор + Нова порука + Пречица је онемогућена + Архива Подешавања - Notifications - Theme - Search inbox… + Обавештења + Тема + Претражи примљене поруке Састављање - Skip - Continue - Add person + Прескочи + Настави + Додај контакт Позови - Details - Save to gallery - Share - Open navigation drawer - %d selected - Clear - Archive - Unarchive - Delete - Add to contacts - Pin to top - Unpin - Mark read - Mark unread - Block - Syncing messages… - You: %s - Draft - Results in messages - %d messages - Your conversations will appear here - No results - Your archived conversations will appear here - Start new conversation - Love texting again - Make QKSMS your default SMS app - Change - Permission required - QKSMS needs permission to send and view SMS messages - QKSMS needs permission to view your contacts - Allow - Inbox - Archived - Scheduled - Blocking - More - Settings - Help & feedback - Invite friends - Unlock amazing new features, and support development - Enjoying QKSMS? - Share some love and rate us on Google Play! - OKAY! - DISMISS - Delete + Детаљи + Сачувај у галерију + Подели + Отвори панел за навигацију + %d обележено + Обриши + Сачувај + Врати у примљене + Обриши + Додај у контакте + Закачи на врх + Откачи + Означи као прочитано + Означи као непрочитано + Блокирај + Синхронизујем поруке… + Ја: %s + Нацрт + Пронађено у порукама + %d поруке + Овде ће се појавити твоји разговори + Нема резултата + Овде ће се појавити твоји сачувани разговори + Започни нов разговор + Поново заволите СМС. + Постави QKSMS као подразумевану СМС апликацију + Промени + Потребна је дозвола + QKSMS тражи дозволу да шаље и прима СМС поруке + QKSMS тражи приступ твојим контактима + Дозволи + Примљено + Сачувано + Заказане поруке + Блокирање + Још + Подешавања + Помоћ и повратне информације + Позови пријатеље + Откључај нове могућности и подржи развој апликације + Да ли уживаш уз QKSMS? + Покажи мало љубави и оцени нас на Google Play! + ВАЖИ! + ОТКАЖИ + Обриши - Are you sure you would like to delete this conversation? - Are you sure you would like to delete %d conversations? - Are you sure you would like to delete %d conversations? + Да ли стварно желите избришете овај разговор? + Да ли стварно желите избришете ове разговоре? + Да ли стварно желите избришете %d разговоре? - Copy text - Forward - Delete + Копирај текст + Проследи + Обриши - Choose a phone number - %s ∙ Default - Just once - Always - %d selected - %1$d of %2$d results - Send as group message - Recipients and replies will be visible to everyone - This is the start of your conversation. Say something nice! - Contact card - Scheduled for - Selected time must be in the future! - You must unlock QKSMS+ to use scheduled messaging - Added to scheduled messages - Write a message… - Copy text - Forward - Delete - Previous - Next - Clear - Message details - Type: %s - From: %s - To: %s - Subject: %s - Priority: %s - Size: %s - Sent: %s - Received: %s - Delivered: %s - Error code: %d - Add an attachment - Attach a photo - Take a photo - Schedule message - Attach a contact - Error reading contact + Изабери број телефона + %s ∙ Подразумевано + Само једном + Увек + Изабрано: %d + %1$d од %2$d резултата + Пошаљи као групну поруку + Примаоци и одговори ће бити свима видљиви + Овде почиње ваш разговор. Реци нешто лепо за почетак! + Контакт картица + Заказано за + Изабрано време мора бити у будућности! + Да би заказивао поруке мораш откључати QKSMS+ + Додато у заказане поруке + Напиши поруку… + Копирај текст + Проследи + Обриши + Претходно + Следеће + Обриши + Детаљи поруке + Тип: %s + Шаље: %s + Прима: %s + Наслов: %s + Важност: %s + Величина: %s + Послато: %s + Примљено: %s + Испоручено: %s + Кôд грешке: %d + Додај прилог + Приложи фотографију + Сними фотографију + Планирај поруку + Приложи контакт + Грешка при учитавању контакта - SIM %1$d (%2$s) selected - %s selected, change SIM card - Send message - Sending… - Delivered %s - Failed to send. Tap to try again - Details - Address copied - Conversation title - Notifications - Theme - Archive - Unarchive - Block - Unblock - Delete conversation - Couldn\'t load media - Saved to gallery - Backup and restore - Backing up messages - Restoring from backup - Last backup - Loading… - Never - Restore - Select a backup - Please unlock QKSMS+ to use backup and restore - Backup in progress… - Restore in progress… - Restore from backup - Are you sure you would like to restore your messages from this backup? - Stop restore - Messages that have already been restored will remain on your device - Backups - No backups found + Изабрана SIM картица %1$d (%2$s) + Изабрано: %s; промените SIM картицу + Пошаљи поруку + Шаљем… + Испоручено %s + Слање неуспешно. Додирните да покушате поново. + Детаљи + Адреса је копирана + Наслов + Обавештења + Тема + Сачувај + Врати у примљене + Блокирај + Одблокирај + Обриши разговор + Неуспешно учитавање + Сачувано у галерију + Резервнe копијe + Правим копију + Враћање резервне копије + Последња копија + Учитавање… + Никад + Поврати копију + Изабери резервну копију + Молимо откључајте QKSMS+ да бисте користили опцију за прављење резервне копије + Правим резервну копију… + Враћам резервну копију… + Поврати резервну копију + Да ли сте сигурни да желите да вратите своје поруке из резервне копије? + Заустави повраћај + Поруке које су већ повраћене ће остати сачуване на Вашем уређају + Резервне копије + Нема резервних копија - %d message - %d messages - %d messages + %d порука + %d порука + %d порука - Currently, only SMS is supported by Backup and Restore. MMS support and scheduled backups will be coming soon! - Backup now - Parsing backup… - %d/%d messages - Saving backup… - Syncing messages… - Finished! - Backup and restore - Scheduled - Automatically send a message, at the exact moment you\'d like - Hey! When was your birthday again? - It\'s on December 23rd - Happy birthday! Look at what a great friend I am, remembering your birthday + Тренутно су подржане резервне копије само SMS порука. Ускоро очекујте подршку за MMS поруке и заказано прављење резервних копија! + Одмах направите копију + Обрађујем копију… + %d/%d порука + Сачувавам резерну копију… + Синхронизујем поруке… + Завршено! + Резервне копије + Заказано + Аутоматски пошаљи поруку у тачно одређеном тренутку + Хеј! Кад ти оно беше рођендан? + 23. децембра + Срећан рођендан! Видиш како сам добар друг, сетио сам се твог рођедана! - Sending on December 23rd  - Schedule a message - Scheduled message + Шаље се 23. децембра. + Закажи слање + Заказана порука - Send now - Copy text - Delete + Пошаљи одмах + Копирај текст + Обриши - Appearance - General - QK Reply - Theme - Night mode - Pure black night mode - Start time - End time - Automatic contact colors - Font size - Use system font - Automatic emoji - Notifications - Tap to customize - Actions - Button 1 - Button 2 - Button 3 - Notification previews - Wake screen - Vibration - Sound - None - QK Reply - Popup for new messages - Tap to dismiss - Tap outside of the popup to close it - Delayed sending - Swipe actions - Configure swipe actions for conversations - Right swipe - Left swipe - CHANGE + Уреди изглед + Опште + Брзи одговор + Тема + Ноћни мод + Потпуно црни ноћни мод + Време почетка + Време завршетка + Аутоматске боје за контакте + Величина слова + Користи системски фонт + Аутоматски емотикони + Обавештења + Додирни за уређивање + Радње + Опција 1 + Опција 2 + Опција 3 + Преглед обавештења + Укључи екран + Вибрација + Звук + Ниједна + Брзи одговор + Искачући прозор за нове поруке + Додирни да уклониш + Додирни екран изван искачућег прозора да га уклониш + Одложено слање + Радње превлачењем + Подеси радње превлачењем у оквиру разговора + Превлачење удесно + Превлачење улево + ПРОМЕНИ - None - Archive - Delete - Block - Call - Mark read - Mark unread + Ништа + Сачувај + Обриши + Блокирај + Позови + Означи као прочитано + Означи као непрочитано - Delivery confirmations - Confirm that messages were sent successfully - Signature - Add a signature to the end of your messages - Strip accents - Remove accents from characters in outgoing SMS messages - Mobile numbers only - When composing a message, only show mobile numbers - Delete old messages automatically - Messages will be deleted after the specified number of days - Number of days - Never - Delete old messages automatically? - If you proceed, %1$d messages will be deleted now + Потврде о испоруци + Потврди да су поруке успешно послате + Потпис + Додај потпис на крај сваке поруке + Уклони акценте + Уклони акценте са слова у одлазним порукама + Само бројеви из мобилних мрежа + При састављању порука прикажи само бројеве из мобилних мрежа + Аутоматско брисање старих порука + Поруке ће бити обрисане после наведеног броја дана + Број дана + Никада + Аутоматски обрисати старе поруке? + Ако наставите, %1$d порука ће одмах бити обрисано. - After 1 day - After %d days - After %d days + Након 1 дана + Након %d дана + Након %d дана - Send long messages as MMS - If your longer text messages are failing to send, or sending in the wrong order, you can send them as MMS messages instead. Additional charges may apply - Auto-compress MMS attachments - Sync messages - Re-sync your messages with the native Android SMS database - About QKSMS - Version %s - Debug logging enabled - Debug logging disabled - Enter duration (seconds) - Blocking - Drop messages - Drop incoming messages from blocked senders instead of hiding them - Blocked conversations - Blocking Manager + Пошаљи дугачке поруке као MMS + Ако дугачке поруке не могу да се пошаљу или се шаљу погрешним редоследом, можете их послати као MMS, што може имати додатне трошкове. + Аутоматска оптимизација величине MMS прилога. + Синхронизуј поруке + Поново синхронизуј поруке са изворном Андроид SMS базом података. + О апликацији + Верзија %s + Записи за отклањање грешака су омогућени + Записи за отклањање грешака су онемогућени + Унеси трајање (у секундама) + Блокирање + Одбиј поруке + Одбиј поруке које стижу са блокираних бројева уместо да их сакријеш + Блокирани разговори + Апликација за блокирање QKSMS - Built-in blocking functionality in QKSMS - Automatically filter your calls and messages in one convenient place! Community IQ™ allows you to prevent unwanted messages from community known spammers - Automatically filter messages from unsolicited numbers by using the \"Should I Answer\" app - Copy blocked numbers - Continue to %s and copy over your existing blocked numbers - Blocked numbers - Your blocked numbers will appear here - Block a new number - Block texts from - Phone number - Block - Blocked messages - Your blocked messages will appear here - Block - Unblock + Уграђена могућност блокирања у QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule + Аутоматски филтрирај позиве и поруке на једном месту! Community IQ™ ти омогућује да блокираш нежељене поруке од \"спамера\" познатих заједници + Аутоматски фитрирај поруке са непожељних бројева користећи \"Should I Answer\" апликацију + Копирај блокиране бројеве + Отвори %s и пренеси бројеве које си већ блокирао + Блокирани бројеви + Овде ће се појавити бројеви које блокираш + Блокирај нови број + Блокирај поруке са броја + Број телефона + Блокирај + Блокиране поруке + Овде ће се појавити поруке које блокираш + Блокирај + Одблокирај - Continue to %s and block this number - Continue to %s and block these numbers - Continue to %s and block these numbers + Отвори %s и блокирај овај број + Отвори %s и блокирај ове бројеве + Отвори %s и блокирај ове бројеве - Continue to %s and allow this number - Continue to %s and allow these numbers - Continue to %s and allow these numbers + Отвори %s и дозволи овај број + Отвори %s и дозволи ове бројеве + Отвори %s и дозволи ове бројеве - About - Version - Developer - Source code - Changelog - Contact - License - Copyright - Support development, unlock everything - You can save a starving developer for just %s + О апликацији + Верзија + Програмер + Изворни код + Историја измена + Kontakt + Лиценца + Ауторска права + Подржи развој ове апликације и откључај све опције + За само %s можеш спасити програмера од глади - Lifetime upgrade for %1$s %2$s + Трајна надоградња за само %1$s %2$s - Unlock + donate for %1$s %2$s - Thank you for supporting QKSMS! - You now have access to all QKSMS+ features - QKSMS+ is free for F-Droid users! If you\'d like to support development, a donation would be highly appreciated. - Donate via PayPal - Coming soon - Premium themes - Unlock beautiful theme colors not available on the Material Design palette - Custom auto-emoji - Create custom auto-emoji shortcuts - Message backup - Automatically back up your messages. Never again worry about losing your history if you change phones or your phone gets lost - Scheduled messages - Schedule messages to automatically be sent at a specific time and date - Delayed sending - Wait a few seconds before sending your message - Automatic night mode - Enable night mode based on the time of day - Advanced blocking - Block messages that contain keywords or match patterns - Auto-forward - Automatically forward messages from certain senders - Auto-respond - Automatically respond to incoming messages with a preset response - More - QKSMS is under active development, and your purchase will include all future QKSMS+ features! - Loading… - View more conversations - Mark read - Call - Delete - Show more - Show less - Open conversation + Откључавање + добровољни прилог за %1$s %2$s + Хвала што подржавате QKSMS! + Сада имате приступ свим QKSMS+ могућностима + An error has occurred, please try again + QKSMS+ је бесплатан за кориснике F-Droid-а! Ако желиш да подржиш развој апликације, били бисмо ти захвални на добровољном прилогу. + Добровољни прилог путем PayPal-а + Ускоро + Премијум теме + Откључај прелепе боје које нису доступне у Material Design палети + Уређивање аутоматских емотикона + Направите своје аутоматске пречице за емотиконе + Резервне копије порука + Аутоматски сачувајте своје поруке. Више не морате да бринете да ћете изгубити историју разговора у случају да промените или изгубите телефон! + Заказане поруке + Закажите аутоматско слање порука у тачно одређено време + Одложено слање + Сачекајте неколико секунди пре него што пошаљете поруку + Аутоматски ноћни мод + Укључи ноћни мод према тренутном времену + Напредно блокирање + Блокирај поруке које садрже одређене кључне речи или одговарају шаблону + Аутоматски проследи + Аутоматски проследи поруке од одређених пошиљалаца + Аутоматски одговори + Предефинисани аутоматски одговор на долазне поруке + Још + QKSMS се активно развија и једнократним плаћањем добијаш и све будуће QKSMS+ могућности! + Учитавање… + Прикажи више разговора + Означи као прочитано + Позови + Обриши + Прикажи више + Прикажи мање + Прикажи разговор Material HEX - Apply + Примени - None - Archive - Delete - Block - Call - Mark read - Reply + Ниједна + Сачувај + Обриши + Блокирај + Позови + Означи као прочитано + Одговори - Yes - Continue - Cancel - Delete - Save - Stop - More - Set - Undo - Copied - Archived conversation - You must unlock QKSMS+ to use this + Да + Настави + Откажи + Обриши + Сачувај + Заустави + Још + Постави + Опозови + Копирано + Сачувани разговори + Откључај QKSMS+ за приступ овој опцији - New message - %s new messages - %s new messages + Нова порука + %s нове/нових порука + %s нове/нових порука - Message not sent - The message to %s failed to send + Порука није послата + Порука за %s није послата - System - Disabled - Always on - Automatic + Систем + Онемогућено + Увек укључено + Аутоматски - Show name and message - Show name - Hide contents + Прикажи име и поруку + Прикажи име + Сакриј садржај - Small - Normal - Large - Larger + Мала + Средња + Велика + Највећа - No delay - 3 seconds - 5 seconds - 10 seconds + Без одлагања + 3 секунде + 5 секунди + 10 секунди - Automatic - 100KB - 200KB - 300KB - 600KB - 1000KB - 2000KB - No compression + Аутоматско + 100kB + 200kB + 300kB + 600kB + 1000kB + 2000kB + Без оптимизације У реду Сачекај секунд Стижем Хвала - Не звучи лоше + Добро изгледа Шта има? Договорено Не Волим те Извини - Значи, ЛОЛ + LOL Добро онда diff --git a/presentation/src/main/res/values-sv/strings.xml b/presentation/src/main/res/values-sv/strings.xml index 48b4c6fd..7fdcff5f 100644 --- a/presentation/src/main/res/values-sv/strings.xml +++ b/presentation/src/main/res/values-sv/strings.xml @@ -242,7 +242,7 @@ Radera gamla meddelanden automatiskt? Om du fortsätter raderas %1$d meddelanden direkt - After 1 day + Efter 1 dag Efter %d dagar Skicka långa meddelanden som MMS @@ -262,6 +262,7 @@ Blockerings-hanterare QKSMS Inbyggd blockeringsfunktion i QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Filtrera automatiskt dina samtal och meddelanden på ett bekvämt ställe! Med Community IQ™ kan du förhindra oönskade meddelanden från gemenskapens kända spammare Filtrera automatiskt meddelanden från oönskade nummer genom att använda appen \"Borde jag svara\" Kopiera blockerade nummer @@ -300,6 +301,7 @@ Lås upp + donera för %1$s %2$s Tack för att du stöttar QKSMS! Du har nu tillgång till alla funktioner i QKSMS+ + An error has occurred, please try again QKSMS + är gratis för F-Droid användare! Om du vill stödja utvecklingen, Så får du gärna donationera. Donera via PayPal Kommer snart diff --git a/presentation/src/main/res/values-th/strings.xml b/presentation/src/main/res/values-th/strings.xml index 016ea003..0ef07860 100644 --- a/presentation/src/main/res/values-th/strings.xml +++ b/presentation/src/main/res/values-th/strings.xml @@ -259,6 +259,7 @@ Blocking Manager QKSMS Built-in blocking functionality in QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Automatically filter your calls and messages in one convenient place! Community IQ™ allows you to prevent unwanted messages from community known spammers กรองข้อความจากหมายเลขที่ไม่พึงประสงค์ โดยใช้แอพควรตอบกลับหรือไม่ Copy blocked numbers @@ -295,6 +296,7 @@ ปลดล็อค + บริจาค %1$s %2$s ขอบคุณสำหรับการสนับสนุน QKSMS ตอนนี้คุณสามารถเข้าถึงคุณสมบัติทั้งหมดของ QKSMS+ ได้แล้ว + An error has occurred, please try again QKSMS+ เป็นบริการฟรีสำหรับผู้ใช้งาน F-Droid หากคุณต้องการสนับสนุนการพัฒนา สามารถบริจาคได้ บริจาคผ่าน PayPal เร็วๆ นี้ diff --git a/presentation/src/main/res/values-tl/strings.xml b/presentation/src/main/res/values-tl/strings.xml index cb32cf1c..3d9821a6 100644 --- a/presentation/src/main/res/values-tl/strings.xml +++ b/presentation/src/main/res/values-tl/strings.xml @@ -262,6 +262,7 @@ Blocking Manager QKSMS Built-in blocking functionality in QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Automatically filter your calls and messages in one convenient place! Community IQ™ allows you to prevent unwanted messages from community known spammers Automatically filter messages from unsolicited numbers by using the \"Should I Answer\" app Copy blocked numbers @@ -300,6 +301,7 @@ Unlock + donate for %1$s %2$s Thank you for supporting QKSMS! You now have access to all QKSMS+ features + An error has occurred, please try again QKSMS+ is free for F-Droid users! If you\'d like to support development, a donation would be highly appreciated. Donate via PayPal Coming soon diff --git a/presentation/src/main/res/values-tr/strings.xml b/presentation/src/main/res/values-tr/strings.xml index e1a4e017..80309365 100644 --- a/presentation/src/main/res/values-tr/strings.xml +++ b/presentation/src/main/res/values-tr/strings.xml @@ -262,6 +262,7 @@ Engelleme Yöneticisi QKSMS QKSMS\'de yerleşik engelleme işlevi + Block spam messages, numbers & unknown calls with blacklist & Schedule Aramalarınızı ve mesajlarınızı uygun bir yerde otomatik olarak filtreleyin! Topluluk IQ™ bilinen spam istenmeyen mesajları önlemek için izin verir BAĞLAM İSTEĞİ @@ -302,6 +303,7 @@ BAĞLAM İSTEĞİ Kilidi aç ve Satın Al %1$s %2$s QKSMS desteği için teşekkür ederiz!! Şimdi tüm QKSMS+ özellikleri açıldı! + An error has occurred, please try again QKSMS+ F-Droid kullanıcıları için ücretsizdir! Eğer gelişmeyi desteklemek istiyorsanız, bağış yapmakta özgürsünüz. Paypal ile satın al Yakında diff --git a/presentation/src/main/res/values-uk/strings.xml b/presentation/src/main/res/values-uk/strings.xml index 45ed4b6e..9403551a 100644 --- a/presentation/src/main/res/values-uk/strings.xml +++ b/presentation/src/main/res/values-uk/strings.xml @@ -268,6 +268,7 @@ Керування блокуванням QKSMS Вбудована функція блокування QKSMS + Блокуйте спам-повідомлення, невідомі номери та дзвінки за допомогою чорного списку та за розкладом Автоматична фільтрація дзвінків та повідомлень в одному зручному місці! Community IQ™ дозволить запобігти отримуванню небажаних повідомлень від відомих спільноті спамерів Автоматично фільтрувати повідомлення від небажаних номерів, використовуючи додаток «Should I Answer» Скопіювати заблоковані номери @@ -310,6 +311,7 @@ Розблокувати + пожертвувати %1$s %2$s Дякуємо вам за підтримку QKSMS! Тепер у вас є доступ до всіх функцій QKSMS+ + Сталася помилка, спробуйте ще раз QKSMS+ є безкоштовним для користувачів F-Droid! Якщо ви хочете підтримати подальший розвиток програми, зробіть пожертву. Пожертвування через PayPal Незабаром diff --git a/presentation/src/main/res/values-ur/strings.xml b/presentation/src/main/res/values-ur/strings.xml index aa94dc93..15c5a2e7 100644 --- a/presentation/src/main/res/values-ur/strings.xml +++ b/presentation/src/main/res/values-ur/strings.xml @@ -262,6 +262,7 @@ Blocking Manager QKSMS Built-in blocking functionality in QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Automatically filter your calls and messages in one convenient place! Community IQ™ allows you to prevent unwanted messages from community known spammers Automatically filter messages from unsolicited numbers by using the \"Should I Answer\" app Copy blocked numbers @@ -300,6 +301,7 @@ Unlock + donate for %1$s %2$s Thank you for supporting QKSMS! You now have access to all QKSMS+ features + An error has occurred, please try again QKSMS+ is free for F-Droid users! If you\'d like to support development, a donation would be highly appreciated. Donate via PayPal Coming soon diff --git a/presentation/src/main/res/values-vi/strings.xml b/presentation/src/main/res/values-vi/strings.xml index d051c7a8..2c98a28d 100644 --- a/presentation/src/main/res/values-vi/strings.xml +++ b/presentation/src/main/res/values-vi/strings.xml @@ -259,6 +259,7 @@ Quản lý danh sách chặn QKSMS Chức năng chặn tích hợp sẵn trong QKSMS + Block spam messages, numbers & unknown calls with blacklist & Schedule Tự động lọc các cuộc gọi và tin nhắn của bạn ở một nơi thuận tiện! Cộng đồng IQ™ cho phép bạn ngăn chặn các tin nhắn từ những kẻ gửi tin rác được đóng góp bởi cộng đồng Tự động lọc tin nhắn từ số điện thoại không mong muốn bằng cách sử dụng ứng dụng \"Should I Answer\" Sao chép số đã chặn @@ -295,6 +296,7 @@ Mở khoá và tài trợ với %1$s %2$s Cảm ơn bạn đã ủng hộ QKSMS! Bây giờ bạn có thể sử dụng tất cả các chức năng của QKSMS+ + An error has occurred, please try again QKSMS+ miễn phí cho người sử dụng F-Droid! Bạn có thể trả phí nếu muốn hỗ trợ phát triển. Tài trợ bằng PayPal Sắp có diff --git a/presentation/src/main/res/values-zh-rCN/strings.xml b/presentation/src/main/res/values-zh-rCN/strings.xml index 88c705b0..0bf3954f 100644 --- a/presentation/src/main/res/values-zh-rCN/strings.xml +++ b/presentation/src/main/res/values-zh-rCN/strings.xml @@ -259,6 +259,7 @@ 屏蔽管理器 QKSMS QKSMS 中内建的屏蔽功能 + Block spam messages, numbers & unknown calls with blacklist & Schedule 自动在适当的位置过滤您的来电和信息!Community IQ™ 允许您阻止社区中已知的垃圾发件人所发送的垃圾信息 使用 \"Should I Answer\" 应用过滤未知号码的消息 复制屏蔽的号码 @@ -295,6 +296,7 @@ 解锁并捐赠只需 %1$s %2$s 感谢你对 QKSMS 的支持! 现在你可以使用 QKSMS+ 的全部功能! + 发生错误,请重试 QKSMS+ 对 F-Droid 用户免费!如果您想支持开发,可以随意捐款。 使用 PayPal 捐赠 即将推出 diff --git a/presentation/src/main/res/values-zh/strings.xml b/presentation/src/main/res/values-zh/strings.xml index b590bb27..ffcd5c23 100644 --- a/presentation/src/main/res/values-zh/strings.xml +++ b/presentation/src/main/res/values-zh/strings.xml @@ -259,6 +259,7 @@ 封鎖管理器 QKSMS QKSMS內建封鎖功能 + Block spam messages, numbers & unknown calls with blacklist & Schedule 自動過濾來電與簡訊!群眾智慧Community IQ™能讓你遠離不想要的垃圾簡訊 使用\"Should I Answer\"應用過濾未知號碼的消息 複製封鎖號碼 @@ -295,6 +296,7 @@ 解鎖並捐贈只需 %1$s %2$s 感謝您對 QKSMS 的支持! 現在您可以使用 QKSMS+ 的全部功能! + An error has occurred, please try again QKSMS+對F-Droid用戶免費!如果您想支持開發,可以隨意捐款。 使用PayPal捐贈 即將推出 diff --git a/presentation/src/main/res/values/attrs.xml b/presentation/src/main/res/values/attrs.xml index 3d79ccfe..45f5c173 100644 --- a/presentation/src/main/res/values/attrs.xml +++ b/presentation/src/main/res/values/attrs.xml @@ -22,6 +22,7 @@ + @@ -53,7 +54,7 @@ - + @@ -62,4 +63,11 @@ - \ No newline at end of file + + + + + + + + diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index 2c7e1b83..2fe3e330 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -289,6 +289,8 @@ Blocking Manager QKSMS Built-in blocking functionality in QKSMS + Call Blocker - Incoming/Outgoing + Block spam messages, numbers & unknown calls with blacklist & Schedule Call Control Automatically filter your calls and messages in one convenient place! Community IQ™ allows you to prevent unwanted messages from community known spammers Should I Answer?