Merge branch 'main' into bugfix/build-without-google-services

This commit is contained in:
Philipp Heckel 2022-11-23 12:57:56 -05:00
commit 681a8c6a3e
33 changed files with 980 additions and 72 deletions

View file

@ -1,19 +1,21 @@
repositories {
mavenCentral()
}
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'kotlin-android' apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.gms.google-services'
android { android {
compileSdkVersion 31 compileSdkVersion 33
defaultConfig { defaultConfig {
applicationId "io.heckel.ntfy" applicationId "io.heckel.ntfy"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 31 targetSdkVersion 33
versionCode 28 versionCode 29
versionName "1.14.0" versionName "1.15.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@ -56,6 +58,9 @@ android {
kotlinOptions { kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString() jvmTarget = JavaVersion.VERSION_1_8.toString()
freeCompilerArgs += [
'-Xjvm-default=all-compatibility' // https://stackoverflow.com/a/71234042/1440785
]
} }
} }
@ -67,30 +72,30 @@ android.applicationVariants.all { variant ->
dependencies { dependencies {
// AndroidX, The Basics // AndroidX, The Basics
implementation "androidx.appcompat:appcompat:1.4.2" implementation "androidx.appcompat:appcompat:1.5.1"
implementation "androidx.core:core-ktx:1.8.0" implementation "androidx.core:core-ktx:1.9.0"
implementation "androidx.constraintlayout:constraintlayout:2.1.4" implementation "androidx.constraintlayout:constraintlayout:2.1.4"
implementation "androidx.activity:activity-ktx:1.4.0" implementation "androidx.activity:activity-ktx:1.6.1"
implementation "androidx.fragment:fragment-ktx:1.4.1" implementation "androidx.fragment:fragment-ktx:1.5.4"
implementation "androidx.work:work-runtime-ktx:2.7.1" implementation "androidx.work:work-runtime-ktx:2.7.1"
implementation 'androidx.preference:preference-ktx:1.2.0' implementation 'androidx.preference:preference-ktx:1.2.0'
// JSON serialization // JSON serialization
implementation 'com.google.code.gson:gson:2.9.0' implementation 'com.google.code.gson:gson:2.10'
// Room (SQLite) // Room (SQLite)
def room_version = "2.4.2" def room_version = "2.4.3"
implementation "androidx.room:room-ktx:$room_version" implementation "androidx.room:room-ktx:$room_version"
kapt "androidx.room:room-compiler:$room_version" kapt "androidx.room:room-compiler:$room_version"
// OkHttp (HTTP library) // OkHttp (HTTP library)
implementation 'com.squareup.okhttp3:okhttp:4.9.3' implementation 'com.squareup.okhttp3:okhttp:4.10.0'
// Firebase, sigh ... (only Google Play) // Firebase, sigh ... (only Google Play)
playImplementation 'com.google.firebase:firebase-messaging:23.0.5' playImplementation 'com.google.firebase:firebase-messaging:23.1.0'
// RecyclerView // RecyclerView
implementation "androidx.recyclerview:recyclerview:1.3.0-alpha02" implementation "androidx.recyclerview:recyclerview:1.3.0-rc01"
// Swipe down to refresh // Swipe down to refresh
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
@ -99,7 +104,7 @@ dependencies {
implementation "com.google.android.material:material:1.6.1" implementation "com.google.android.material:material:1.6.1"
// LiveData // LiveData
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.5.1"
implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0'
// Image viewer // Image viewer

View file

@ -10,6 +10,7 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/> <!-- Only required on SDK <= 28 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/> <!-- Only required on SDK <= 28 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> <!-- To install packages downloaded through ntfy; craazyy! --> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> <!-- To install packages downloaded through ntfy; craazyy! -->
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/> <!-- To reschedule the websocket retry --> <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/> <!-- To reschedule the websocket retry -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <!-- As of Android 13, we need to ask for permission to post notifications -->
<application <application
android:name=".app.Application" android:name=".app.Application"

View file

@ -24,7 +24,6 @@ object DownloadManager {
DownloadType.ATTACHMENT -> enqueueAttachment(context, notificationId, userAction) DownloadType.ATTACHMENT -> enqueueAttachment(context, notificationId, userAction)
DownloadType.ICON -> enqueueIcon(context, notificationId) DownloadType.ICON -> enqueueIcon(context, notificationId)
DownloadType.BOTH -> enqueueAttachmentAndIcon(context, notificationId, userAction) DownloadType.BOTH -> enqueueAttachmentAndIcon(context, notificationId, userAction)
else -> Log.w(DownloadManager.TAG, "This should never happen. No download type given")
} }
} }

View file

@ -21,7 +21,7 @@ class DetailViewModel(private val repository: Repository) : ViewModel() {
class DetailViewModelFactory(private val repository: Repository) : ViewModelProvider.Factory { class DetailViewModelFactory(private val repository: Repository) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
override fun <T : ViewModel?> create(modelClass: Class<T>) = override fun <T : ViewModel> create(modelClass: Class<T>): T =
with(modelClass){ with(modelClass){
when { when {
isAssignableFrom(DetailViewModel::class.java) -> DetailViewModel(repository) as T isAssignableFrom(DetailViewModel::class.java) -> DetailViewModel(repository) as T

View file

@ -1,10 +1,12 @@
package io.heckel.ntfy.ui package io.heckel.ntfy.ui
import android.Manifest
import android.animation.Animator import android.animation.Animator
import android.animation.AnimatorListenerAdapter import android.animation.AnimatorListenerAdapter
import android.app.AlertDialog import android.app.AlertDialog
import android.content.ActivityNotFoundException import android.content.ActivityNotFoundException
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
@ -20,6 +22,7 @@ import android.widget.Toast
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@ -208,6 +211,18 @@ class MainActivity : AppCompatActivity(), ActionMode.Callback, AddFragment.Subsc
schedulePeriodicPollWorker() schedulePeriodicPollWorker()
schedulePeriodicServiceRestartWorker() schedulePeriodicServiceRestartWorker()
schedulePeriodicDeleteWorker() schedulePeriodicDeleteWorker()
// Permissions
maybeRequestNotificationPermission()
}
private fun maybeRequestNotificationPermission() {
// Android 13 (SDK 33) requires that we ask for permission to post notifications
// https://developer.android.com/develop/ui/views/notifications/notification-permission
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.POST_NOTIFICATIONS), 0)
}
} }
override fun onResume() { override fun onResume() {

View file

@ -51,7 +51,7 @@ class SubscriptionsViewModel(private val repository: Repository) : ViewModel() {
class SubscriptionsViewModelFactory(private val repository: Repository) : ViewModelProvider.Factory { class SubscriptionsViewModelFactory(private val repository: Repository) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
override fun <T : ViewModel?> create(modelClass: Class<T>) = override fun <T : ViewModel> create(modelClass: Class<T>): T =
with(modelClass){ with(modelClass){
when { when {
isAssignableFrom(SubscriptionsViewModel::class.java) -> SubscriptionsViewModel(repository) as T isAssignableFrom(SubscriptionsViewModel::class.java) -> SubscriptionsViewModel(repository) as T

View file

@ -85,7 +85,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
override fun onSaveInstanceState(outState: Bundle) { override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState) super.onSaveInstanceState(outState)
// Save current activity title so we can set it again after a configuration change // Save current activity title, so we can set it again after a configuration change
outState.putCharSequence(TITLE_TAG, title) outState.putCharSequence(TITLE_TAG, title)
} }
@ -165,9 +165,8 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
return repository.getGlobalMutedUntil().toString() return repository.getGlobalMutedUntil().toString()
} }
} }
mutedUntil?.summaryProvider = Preference.SummaryProvider<ListPreference> { _ -> mutedUntil?.summaryProvider = Preference.SummaryProvider<ListPreference> {
val mutedUntilValue = repository.getGlobalMutedUntil() when (val mutedUntilValue = repository.getGlobalMutedUntil()) {
when (mutedUntilValue) {
Repository.MUTED_UNTIL_SHOW_ALL -> getString(R.string.settings_notifications_muted_until_show_all) Repository.MUTED_UNTIL_SHOW_ALL -> getString(R.string.settings_notifications_muted_until_show_all)
Repository.MUTED_UNTIL_FOREVER -> getString(R.string.settings_notifications_muted_until_forever) Repository.MUTED_UNTIL_FOREVER -> getString(R.string.settings_notifications_muted_until_forever)
else -> { else -> {
@ -191,8 +190,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
} }
} }
minPriority?.summaryProvider = Preference.SummaryProvider<ListPreference> { pref -> minPriority?.summaryProvider = Preference.SummaryProvider<ListPreference> { pref ->
val minPriorityValue = pref.value.toIntOrNull() ?: 1 // 1/low means all priorities when (val minPriorityValue = pref.value.toIntOrNull() ?: 1) { // 1/low means all priorities
when (minPriorityValue) {
1 -> getString(R.string.settings_notifications_min_priority_summary_any) 1 -> getString(R.string.settings_notifications_min_priority_summary_any)
5 -> getString(R.string.settings_notifications_min_priority_summary_max) 5 -> getString(R.string.settings_notifications_min_priority_summary_max)
else -> { else -> {
@ -230,8 +228,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
} }
} }
autoDownload?.summaryProvider = Preference.SummaryProvider<ListPreference> { pref -> autoDownload?.summaryProvider = Preference.SummaryProvider<ListPreference> { pref ->
val maxSize = pref.value.toLongOrNull() ?: repository.getAutoDownloadMaxSize() when (val maxSize = pref.value.toLongOrNull() ?: repository.getAutoDownloadMaxSize()) {
when (maxSize) {
Repository.AUTO_DOWNLOAD_NEVER -> getString(R.string.settings_notifications_auto_download_summary_never) Repository.AUTO_DOWNLOAD_NEVER -> getString(R.string.settings_notifications_auto_download_summary_never)
Repository.AUTO_DOWNLOAD_ALWAYS -> getString(R.string.settings_notifications_auto_download_summary_always) Repository.AUTO_DOWNLOAD_ALWAYS -> getString(R.string.settings_notifications_auto_download_summary_always)
else -> getString(R.string.settings_notifications_auto_download_summary_smaller_than_x, formatBytes(maxSize, decimals = 0)) else -> getString(R.string.settings_notifications_auto_download_summary_smaller_than_x, formatBytes(maxSize, decimals = 0))
@ -263,8 +260,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
} }
} }
autoDelete?.summaryProvider = Preference.SummaryProvider<ListPreference> { pref -> autoDelete?.summaryProvider = Preference.SummaryProvider<ListPreference> { pref ->
val seconds = pref.value.toLongOrNull() ?: repository.getAutoDeleteSeconds() when (pref.value.toLongOrNull() ?: repository.getAutoDeleteSeconds()) {
when (seconds) {
Repository.AUTO_DELETE_NEVER -> getString(R.string.settings_notifications_auto_delete_summary_never) Repository.AUTO_DELETE_NEVER -> getString(R.string.settings_notifications_auto_delete_summary_never)
Repository.AUTO_DELETE_ONE_DAY_SECONDS -> getString(R.string.settings_notifications_auto_delete_summary_one_day) Repository.AUTO_DELETE_ONE_DAY_SECONDS -> getString(R.string.settings_notifications_auto_delete_summary_one_day)
Repository.AUTO_DELETE_THREE_DAYS_SECONDS -> getString(R.string.settings_notifications_auto_delete_summary_three_days) Repository.AUTO_DELETE_THREE_DAYS_SECONDS -> getString(R.string.settings_notifications_auto_delete_summary_three_days)
@ -395,7 +391,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
getString(R.string.settings_advanced_record_logs_summary_disabled) getString(R.string.settings_advanced_record_logs_summary_disabled)
} }
} }
recordLogsEnabled?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, v -> recordLogsEnabled?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, _ ->
lifecycleScope.launch(Dispatchers.IO) { lifecycleScope.launch(Dispatchers.IO) {
repository.getSubscriptions().forEach { s -> repository.getSubscriptions().forEach { s ->
Log.addScrubTerm(shortUrl(s.baseUrl), Log.TermType.Domain) Log.addScrubTerm(shortUrl(s.baseUrl), Log.TermType.Domain)
@ -440,7 +436,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
backup?.preferenceDataStore = object : PreferenceDataStore() { } // Dummy store to protect from accidentally overwriting backup?.preferenceDataStore = object : PreferenceDataStore() { } // Dummy store to protect from accidentally overwriting
backup?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, v -> backup?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, v ->
backupSelection = v.toString() backupSelection = v.toString()
val timestamp = SimpleDateFormat("yyMMdd-HHmm").format(Date()); val timestamp = SimpleDateFormat("yyMMdd-HHmm").format(Date())
val suggestedFilename = when (backupSelection) { val suggestedFilename = when (backupSelection) {
BACKUP_EVERYTHING_NO_USERS -> "ntfy-backup-no-users-$timestamp.json" BACKUP_EVERYTHING_NO_USERS -> "ntfy-backup-no-users-$timestamp.json"
BACKUP_SETTINGS_ONLY -> "ntfy-settings-$timestamp.json" BACKUP_SETTINGS_ONLY -> "ntfy-settings-$timestamp.json"
@ -587,10 +583,9 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
throw Exception("Unexpected response ${response.code}") throw Exception("Unexpected response ${response.code}")
} }
val body = response.body?.string()?.trim() val body = response.body?.string()?.trim()
if (body == null || body.isEmpty()) throw Exception("Return body is empty") if (body.isNullOrEmpty()) throw Exception("Return body is empty")
Log.d(TAG, "Logs uploaded successfully: $body") Log.d(TAG, "Logs uploaded successfully: $body")
val resp = gson.fromJson(body.toString(), NopasteResponse::class.java) val resp = gson.fromJson(body.toString(), NopasteResponse::class.java)
val context = context ?: return@launch
requireActivity().runOnUiThread { requireActivity().runOnUiThread {
val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("logs URL", resp.url) val clip = ClipData.newPlainText("logs URL", resp.url)
@ -606,7 +601,6 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
} }
} catch (e: Exception) { } catch (e: Exception) {
Log.w(TAG, "Error uploading logs", e) Log.w(TAG, "Error uploading logs", e)
val context = context ?: return@launch
requireActivity().runOnUiThread { requireActivity().runOnUiThread {
Toast Toast
.makeText(context, getString(R.string.settings_advanced_export_logs_error_uploading, e.message), Toast.LENGTH_LONG) .makeText(context, getString(R.string.settings_advanced_export_logs_error_uploading, e.message), Toast.LENGTH_LONG)

View file

@ -326,7 +326,7 @@ class ShareActivity : AppCompatActivity() {
contentText.text.isNotEmpty() && topicText.text.isNotEmpty() contentText.text.isNotEmpty() && topicText.text.isNotEmpty()
} }
sendItem.isEnabled = enabled sendItem.isEnabled = enabled
sendItem.icon.alpha = if (enabled) 255 else 130 sendItem.icon?.alpha = if (enabled) 255 else 130
} }
private fun getBaseUrl(): String { private fun getBaseUrl(): String {

View file

@ -472,9 +472,8 @@ fun ensureSafeNewFile(dir: File, name: String): File {
fun copyToClipboard(context: Context, notification: Notification) { fun copyToClipboard(context: Context, notification: Notification) {
val message = decodeMessage(notification) val message = decodeMessage(notification)
val text = message + "\n\n" + formatDateShort(notification.timestamp)
val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("notification message", text) val clip = ClipData.newPlainText("notification message", message)
clipboard.setPrimaryClip(clip) clipboard.setPrimaryClip(clip)
Toast Toast
.makeText(context, context.getString(R.string.detail_copied_to_clipboard_message), Toast.LENGTH_LONG) .makeText(context, context.getString(R.string.detail_copied_to_clipboard_message), Toast.LENGTH_LONG)

View file

@ -9,14 +9,12 @@ import io.heckel.ntfy.BuildConfig
import io.heckel.ntfy.db.ATTACHMENT_PROGRESS_DELETED import io.heckel.ntfy.db.ATTACHMENT_PROGRESS_DELETED
import io.heckel.ntfy.db.Repository import io.heckel.ntfy.db.Repository
import io.heckel.ntfy.msg.DownloadIconWorker import io.heckel.ntfy.msg.DownloadIconWorker
import io.heckel.ntfy.ui.DetailAdapter
import io.heckel.ntfy.util.Log import io.heckel.ntfy.util.Log
import io.heckel.ntfy.util.fileStat import io.heckel.ntfy.util.maybeFileStat
import io.heckel.ntfy.util.topicShortUrl import io.heckel.ntfy.util.topicShortUrl
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import java.io.File import java.io.File
import java.util.*
/** /**
* Deletes notifications marked for deletion and attachments for deleted notifications. * Deletes notifications marked for deletion and attachments for deleted notifications.
@ -32,9 +30,23 @@ class DeleteWorker(ctx: Context, params: WorkerParameters) : CoroutineWorker(ctx
override suspend fun doWork(): Result { override suspend fun doWork(): Result {
return withContext(Dispatchers.IO) { return withContext(Dispatchers.IO) {
deleteExpiredIcons() // Before notifications, so we will also catch manually deleted notifications // Run "expired icons" and "expired attachments" before notifications,
deleteExpiredAttachments() // Before notifications, so we will also catch manually deleted notifications // so we will also catch manually deleted notifications
deleteExpiredNotifications() try {
deleteExpiredIcons()
} catch (e: Exception) {
Log.w(TAG, "Failed to delete expired icons", e)
}
try {
deleteExpiredAttachments()
} catch (e: Exception) {
Log.w(TAG, "Failed to delete expired attachments", e)
}
try {
deleteExpiredNotifications()
} catch (e: Exception) {
Log.w(TAG, "Failed to delete expired notifications", e)
}
return@withContext Result.success() return@withContext Result.success()
} }
} }
@ -69,7 +81,9 @@ class DeleteWorker(ctx: Context, params: WorkerParameters) : CoroutineWorker(ctx
Log.d(TAG, "Deleting icons for deleted notifications") Log.d(TAG, "Deleting icons for deleted notifications")
val repository = Repository.getInstance(applicationContext) val repository = Repository.getInstance(applicationContext)
val activeIconUris = repository.getActiveIconUris() val activeIconUris = repository.getActiveIconUris()
val activeIconFilenames = activeIconUris.map{ fileStat(applicationContext, Uri.parse(it)).filename }.toSet() val activeIconFilenames = activeIconUris
.mapNotNull { maybeFileStat(applicationContext, it)?.filename }
.toSet()
val iconDir = File(applicationContext.cacheDir, DownloadIconWorker.ICON_CACHE_DIR) val iconDir = File(applicationContext.cacheDir, DownloadIconWorker.ICON_CACHE_DIR)
val allIconFilenames = iconDir.listFiles()?.map{ file -> file.name }.orEmpty() val allIconFilenames = iconDir.listFiles()?.map{ file -> file.name }.orEmpty()
val filenamesToDelete = allIconFilenames.minus(activeIconFilenames) val filenamesToDelete = allIconFilenames.minus(activeIconFilenames)

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="channel_notifications_low_name">إشعارات (أولوية منخفضة)</string>
<string name="channel_notifications_max_name">إشعارات (أعلى أولوية)</string>
<string name="channel_notifications_min_name">إشعارات (أدني أولوية)</string>
<string name="channel_subscriber_notification_title">الإستماع (إلتقاط) الإشعارات الواردة</string>
<string name="channel_notifications_default_name">إشعارات (أولوية طبيعية)</string>
<string name="channel_subscriber_service_name">خدمة الاشتراك</string>
<string name="channel_notifications_high_name">إشعارات (أولوية عالية)</string>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="channel_notifications_min_name">Notificacions (prioritat min)</string>
<string name="channel_notifications_low_name">Notificacions (prioritat min)</string>
<string name="channel_notifications_default_name">Notificacions (prioritat defecte)</string>
<string name="channel_notifications_high_name">Notificacions (alta prioritat)</string>
<string name="channel_notifications_max_name">Notificacions (prioritat màx)</string>
<string name="channel_subscriber_service_name">Servei Subscripció</string>
</resources>

View file

@ -213,7 +213,7 @@
<string name="settings_advanced_clear_logs_summary">Odstranit dříve zaznamenané protokoly a začít znovu</string> <string name="settings_advanced_clear_logs_summary">Odstranit dříve zaznamenané protokoly a začít znovu</string>
<string name="settings_advanced_clear_logs_deleted_toast">Protokoly odstraněny</string> <string name="settings_advanced_clear_logs_deleted_toast">Protokoly odstraněny</string>
<string name="settings_advanced_connection_protocol_title">Protokol připojení</string> <string name="settings_advanced_connection_protocol_title">Protokol připojení</string>
<string name="settings_advanced_connection_protocol_summary_ws">Pro připojení k serveru použít WebSockets. Toto nastavení se stane výchozím v červnu 2022.</string> <string name="settings_advanced_connection_protocol_summary_ws">Pro připojení k serveru použít WebSockets. Jedná se o doporučenou metodu, která však může vyžadovat další konfiguraci v proxy serveru.</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string> <string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string>
<string name="settings_about_header">O programu</string> <string name="settings_about_header">O programu</string>
<string name="settings_about_version_title">Verze</string> <string name="settings_about_version_title">Verze</string>
@ -299,7 +299,7 @@
<string name="settings_advanced_export_logs_entry_copy_original">Kopírovat do schránky</string> <string name="settings_advanced_export_logs_entry_copy_original">Kopírovat do schránky</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">Kopírovat do schránky (cenzurované)</string> <string name="settings_advanced_export_logs_entry_copy_scrubbed">Kopírovat do schránky (cenzurované)</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">OK</string> <string name="settings_advanced_export_logs_scrub_dialog_button_ok">OK</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Pro připojení k serveru použít JSON přes protokol HTTP. Tato metoda je zastaralá a bude odstraněna v červnu 2022.</string> <string name="settings_advanced_connection_protocol_summary_jsonhttp">Pro připojení k serveru použít JSON přes protokol HTTP. Tato metoda je ověřená v praxi, ale může spotřebovávat více baterie.</string>
<string name="user_dialog_description_add">Zde můžete přidat uživatele. Tento uživatel bude používán ve všech tématech pro daný server.</string> <string name="user_dialog_description_add">Zde můžete přidat uživatele. Tento uživatel bude používán ve všech tématech pro daný server.</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">JSON přes HTTP</string> <string name="settings_advanced_connection_protocol_entry_jsonhttp">JSON přes HTTP</string>
<string name="channel_subscriber_notification_instant_text_five">Přihlášeno k odběru pěti témat okamžitého doručení</string> <string name="channel_subscriber_notification_instant_text_five">Přihlášeno k odběru pěti témat okamžitého doručení</string>
@ -317,4 +317,14 @@
<string name="channel_subscriber_notification_instant_text_six">Přihlášeno k odběru šesti témat okamžitého doručení</string> <string name="channel_subscriber_notification_instant_text_six">Přihlášeno k odběru šesti témat okamžitého doručení</string>
<string name="detail_settings_notifications_instant_summary_off">Oznámení jsou doručena pomocí služby Firebase. Doručování může být zpožděné, ale spotřebovává méně baterie.</string> <string name="detail_settings_notifications_instant_summary_off">Oznámení jsou doručena pomocí služby Firebase. Doručování může být zpožděné, ale spotřebovává méně baterie.</string>
<string name="detail_settings_notifications_instant_title">Okamžité doručení</string> <string name="detail_settings_notifications_instant_title">Okamžité doručení</string>
</resources> <string name="detail_settings_appearance_display_name_title">Zobrazit název</string>
<string name="detail_settings_appearance_display_name_message">Nastavit vlastní zobrazovaný název pro tento odběr. Pro výchozí hodnotu (%1$s) ponechte prázdné.</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (výchozí)</string>
<string name="detail_settings_about_header">O aplikaci</string>
<string name="detail_settings_about_topic_url_title">URL tématu</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Zkopírováno do schránky</string>
<string name="add_dialog_base_urls_dropdown_clear">Vymazat URL služby</string>
<string name="main_banner_websocket_button_enable_now">Povolit nyní</string>
<string name="main_banner_websocket_text">WebSockets jsou doporučenou metodou připojení k vašemu serveru, která může zlepšit zvýšit výdrž baterie, ale může vyžadovat <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">další konfiguraci v proxy serveru</a>. Metodu připojení lze přepnout v Nastavení.</string>
<string name="add_dialog_base_urls_dropdown_choose">Zvolit URL služby</string>
</resources>

View file

@ -69,7 +69,7 @@
<string name="detail_delete_dialog_permanently_delete">Endgültig löschen</string> <string name="detail_delete_dialog_permanently_delete">Endgültig löschen</string>
<string name="detail_delete_dialog_cancel">Abbrechen</string> <string name="detail_delete_dialog_cancel">Abbrechen</string>
<string name="detail_test_title">Test: Du kannst einen Titel festlegen.</string> <string name="detail_test_title">Test: Du kannst einen Titel festlegen.</string>
<string name="detail_test_message">Dies ist eine Test-Benachrichtigung aus der ntfy Android-App. Sie hat die Priorität %1$d. Wenn Du eine neue Test-Benachrichtigung sendest, siehst diese vielleicht anders aus.</string> <string name="detail_test_message">Dies ist eine Test-Benachrichtigung aus der ntfy Android-App. Sie hat die Priorität %1$d. Wenn Du eine neue Test-Benachrichtigung sendest, sieht diese vielleicht anders aus.</string>
<string name="detail_test_message_error">Nachricht kann nicht gesendet werden: %1$s</string> <string name="detail_test_message_error">Nachricht kann nicht gesendet werden: %1$s</string>
<string name="detail_test_message_error_unauthorized_user">Nachricht kann nicht gesendet werden: Benutzer \"%1$s\" hat keine Berechtigung.</string> <string name="detail_test_message_error_unauthorized_user">Nachricht kann nicht gesendet werden: Benutzer \"%1$s\" hat keine Berechtigung.</string>
<string name="detail_test_message_error_too_large">Nachricht kann nicht gesendet werden: Anhang zu groß.</string> <string name="detail_test_message_error_too_large">Nachricht kann nicht gesendet werden: Anhang zu groß.</string>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="channel_notifications_min_name">Obavijesti (minimalni prioritet)</string>
<string name="channel_notifications_low_name">Obavijesti (niski prioritet)</string>
<string name="channel_notifications_default_name">Obavijesti (standardni prioritet)</string>
<string name="channel_notifications_high_name">Obavijesti (visoki prioritet)</string>
<string name="channel_notifications_max_name">Obavijesti (maksimalni prioritet)</string>
</resources>

View file

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="main_action_mode_delete_dialog_permanently_delete">Végleges törlés</string>
<string name="channel_subscriber_notification_instant_text_one">Feliratkozva egy azonnal kézbesített témára</string>
<string name="channel_subscriber_notification_instant_text_five">Feliratkozva öt azonnal kézbesített témára</string>
<string name="channel_subscriber_notification_instant_text_six">Feliratkozva hat azonnal kézbesített témára</string>
<string name="channel_subscriber_notification_instant_text_more">Feliratkozva %1$d azonnal kézbesített témára</string>
<string name="channel_subscriber_notification_noinstant_text">Feliratkozott témák</string>
<string name="channel_subscriber_notification_noinstant_text_one">Feliratkozva egy témára</string>
<string name="main_menu_notifications_disabled_forever">Értesítések némítva</string>
<string name="main_menu_notifications_disabled_until">Értesítések némítva %1$s-ig</string>
<string name="main_menu_settings_title">Beállítások</string>
<string name="main_item_status_text_not_one">%1$d értesítés</string>
<string name="main_item_status_reconnecting">Újra-csatlakozás …</string>
<string name="main_item_status_unified_push">%1$s (ÖsszesítettKüldés)</string>
<string name="main_add_button_description">Feliratkozás hozzáadása</string>
<string name="main_no_subscriptions_text">Úgy néz ki hogy még nincsen egy feliratkozás sem.</string>
<string name="main_how_to_intro">Kattintson a + ra hogy létrehozzon vagy feliratkozzon egy témára. Aztán mikor PUT vagy POST-al küld üzeneteket, értesítéseket kap a készülékén.</string>
<string name="channel_notifications_min_name">Értesítések (minimum prioritás)</string>
<string name="channel_notifications_low_name">Értesítések (alacsony prioritás)</string>
<string name="channel_notifications_default_name">Értesítések (alap prioritás)</string>
<string name="channel_notifications_max_name">Értesítések (maximum prioritás)</string>
<string name="channel_notifications_high_name">Értesítések (magas prioritás)</string>
<string name="channel_subscriber_service_name">Feliratkozó Szolgálat</string>
<string name="channel_subscriber_notification_title">Bejövő üzenetek fogadása</string>
<string name="channel_subscriber_notification_instant_text">Feliratkozva azonnal kézbesített témákra</string>
<string name="channel_subscriber_notification_instant_text_two">Feliratkozva két azonnal kézbesített témára</string>
<string name="channel_subscriber_notification_instant_text_three">Feliratkozva három azonnal kézbesített témára</string>
<string name="channel_subscriber_notification_instant_text_four">Feliratkozva négy azonnal kézbesített témára</string>
<string name="channel_subscriber_notification_noinstant_text_six">Feliratkozva hat témára</string>
<string name="channel_subscriber_notification_noinstant_text_five">Feliratkozva öt témára</string>
<string name="channel_subscriber_notification_noinstant_text_four">Feliratkozva négy témára</string>
<string name="channel_subscriber_notification_noinstant_text_three">Feliratkozva három témára</string>
<string name="channel_subscriber_notification_noinstant_text_more">Feliratkozva %1$d témára</string>
<string name="channel_subscriber_notification_noinstant_text_two">Feliratkozva két témára</string>
<string name="main_menu_docs_title">Dokumentáció olvasása</string>
<string name="main_action_mode_menu_unsubscribe">Leiratkozás</string>
<string name="refresh_message_result">%1$d üzenet érkezett</string>
<string name="refresh_message_no_results">Minden a legfrissebb verzió</string>
<string name="refresh_message_error">Nem lehetett %1$d feliratkozást frissíteni
\n
\n%2$s</string>
<string name="refresh_message_error_one">Feliratkozást frissítése nem lehetséges: %1$s</string>
<string name="main_menu_notifications_enabled">Értesítések bekapcsolva</string>
<string name="main_action_bar_title">Feliratkozott témák</string>
<string name="main_menu_report_bug_title">Hiba jelentése</string>
<string name="main_item_date_yesterday">tegnap</string>
<string name="main_menu_rate_title">Applikáció értékelése ⭐</string>
<string name="main_action_mode_delete_dialog_message">Leiratkozás a kiválasztott témá(k)-ról és végleges törlése minden üzenetnek\?</string>
<string name="main_item_status_text_one">%1$d értesítés</string>
<string name="main_action_mode_delete_dialog_cancel">Mégse</string>
</resources>

View file

@ -166,7 +166,7 @@
\nLe password sono state ripulite, ma non sono elencate qui.</string> \nLe password sono state ripulite, ma non sono elencate qui.</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">Ok</string> <string name="settings_advanced_export_logs_scrub_dialog_button_ok">Ok</string>
<string name="settings_advanced_clear_logs_title">Cancella i log</string> <string name="settings_advanced_clear_logs_title">Cancella i log</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Usa stream JSON over HTTP per collegarti al server. Questo metodo è deprecato e sarà rimosso a giugno 2022.</string> <string name="settings_advanced_connection_protocol_summary_jsonhttp">Usa stream JSON over HTTP per collegarti al server. Questo metodo è collaudato, ma può consumare più batteria.</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">Stream JSON over HTTP</string> <string name="settings_advanced_connection_protocol_entry_jsonhttp">Stream JSON over HTTP</string>
<string name="user_dialog_description_add">Puoi aggiungere un utente qui. Tutti i topic per il dato server utilizzeranno questo utente.</string> <string name="user_dialog_description_add">Puoi aggiungere un utente qui. Tutti i topic per il dato server utilizzeranno questo utente.</string>
<string name="user_dialog_description_edit">Puoi modificare username/password per l\'utente selezionato, oppure eliminarlo.</string> <string name="user_dialog_description_edit">Puoi modificare username/password per l\'utente selezionato, oppure eliminarlo.</string>
@ -285,7 +285,7 @@
<string name="settings_advanced_export_logs_uploading">Log in upload …</string> <string name="settings_advanced_export_logs_uploading">Log in upload …</string>
<string name="settings_advanced_clear_logs_summary">Elimina i log precedentemente salvati, e ricomincia</string> <string name="settings_advanced_clear_logs_summary">Elimina i log precedentemente salvati, e ricomincia</string>
<string name="settings_advanced_connection_protocol_title">Protocollo di connessione</string> <string name="settings_advanced_connection_protocol_title">Protocollo di connessione</string>
<string name="settings_advanced_connection_protocol_summary_ws">Usa WebSockets per collegarti al server. Questo metodo diventerà il default a giugno 2022.</string> <string name="settings_advanced_connection_protocol_summary_ws">Usa WebSockets per collegarti al server. Questo è il metodo consigliato, ma potrebbe richiedere una configurazione aggiuntiva del proxy.</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string> <string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string>
<string name="user_dialog_title_add">Aggiungi utente</string> <string name="user_dialog_title_add">Aggiungi utente</string>
<string name="settings_about_version_copied_to_clipboard_message">Copiato negli appunti</string> <string name="settings_about_version_copied_to_clipboard_message">Copiato negli appunti</string>
@ -317,4 +317,14 @@
<string name="detail_settings_appearance_icon_remove_summary">Icona visualizzata nelle notifiche di questo topic</string> <string name="detail_settings_appearance_icon_remove_summary">Icona visualizzata nelle notifiche di questo topic</string>
<string name="detail_settings_appearance_icon_error_saving">Impossibile salvare l\'icona: %1$s</string> <string name="detail_settings_appearance_icon_error_saving">Impossibile salvare l\'icona: %1$s</string>
<string name="detail_settings_global_setting_suffix">utilizzando l\'impostazione globale</string> <string name="detail_settings_global_setting_suffix">utilizzando l\'impostazione globale</string>
</resources> <string name="detail_settings_appearance_display_name_title">Nome visualizzato</string>
<string name="main_banner_websocket_text">E\' consigliato il passaggio a WebSockets per connettersi al server e potrebbe migliorare la durata della batteria, ma potrebbe richiedere <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">un\'ulteriore configurazione del proxy</a>. Questa opzione può essere selezionata nelle Impostazioni.</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (predefinito)</string>
<string name="detail_settings_appearance_display_name_message">Impostare un nome di visualizzazione personalizzato per questa iscrizione. Lasciare vuoto per il nome predefinito (%1$s).</string>
<string name="detail_settings_about_header">Informazioni</string>
<string name="detail_settings_about_topic_url_title">URL argomento</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Copiato negli appunti</string>
<string name="add_dialog_base_urls_dropdown_choose">Scegli il servizio URL</string>
<string name="add_dialog_base_urls_dropdown_clear">Pulisci il servizio URL</string>
<string name="main_banner_websocket_button_enable_now">Attiva ora</string>
</resources>

View file

@ -1,2 +1,330 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources></resources> <resources>
<string name="detail_how_to_link">자세한 설명은 ntfy.sh와 docs 페이지에서 찾으실 수 있습니다.</string>
<string name="channel_notifications_high_name">알림 (우선순위 높음)</string>
<string name="main_menu_notifications_disabled_forever">알림 음소거됨</string>
<string name="channel_subscriber_notification_instant_text_three">즉시 전달 주제 3개 구독중</string>
<string name="add_dialog_use_another_server">다른 서버 사용</string>
<string name="main_menu_notifications_enabled">알림 켜짐</string>
<string name="channel_notifications_default_name">알림 (우선순위 기본)</string>
<string name="channel_notifications_max_name">알림 (우선순위 최상)</string>
<string name="channel_subscriber_service_name">구독 서비스</string>
<string name="channel_subscriber_notification_title">알림 수신중</string>
<string name="channel_subscriber_notification_instant_text">즉시 전달 주제를 구독함</string>
<string name="channel_subscriber_notification_instant_text_one">즉시 전달 주제 1개 구독중</string>
<string name="channel_subscriber_notification_instant_text_six">즉시 전달 주제 6개 구독중</string>
<string name="channel_subscriber_notification_instant_text_more">즉시 전달 주제 %1$d개 구독중</string>
<string name="channel_subscriber_notification_noinstant_text">주제 구독중</string>
<string name="channel_subscriber_notification_noinstant_text_one">주제 1개 구독 중</string>
<string name="channel_subscriber_notification_noinstant_text_two">주제 2개 구독 중</string>
<string name="channel_subscriber_notification_noinstant_text_three">주제 3개 구독 중</string>
<string name="channel_subscriber_notification_noinstant_text_more">주제 %1$d개 구독 중</string>
<string name="refresh_message_result">알림 %1$d개를 받았습니다</string>
<string name="refresh_message_no_results">모든 알림이 최신입니다</string>
<string name="refresh_message_error">%1$d개의 구독을 새로고침할 수 없었습니다
\n
\n%2$s</string>
<string name="refresh_message_error_one">구독 새로고침 실패: %1$s</string>
<string name="main_action_bar_title">구독한 주제</string>
<string name="main_action_mode_menu_unsubscribe">구독 해제</string>
<string name="main_action_mode_delete_dialog_message">선택한 주제를 구독 해제하고 모든 알림을 영원히 삭제하시겠습니까\?</string>
<string name="main_action_mode_delete_dialog_permanently_delete">영구 삭제</string>
<string name="main_action_mode_delete_dialog_cancel">취소</string>
<string name="main_item_status_text_one">알림 %1$d개</string>
<string name="main_item_status_text_not_one">알림 %1$d개</string>
<string name="main_item_status_reconnecting">재연결중 …</string>
<string name="main_no_subscriptions_text">아직 아무런 구독을 추가하지 않으신 것 같습니다.</string>
<string name="main_how_to_link">자세한 설명은 ntfy.sh와 docs 페이지에서 찾으실 수 있습니다.</string>
<string name="main_unified_push_toast">이 구독은 UnifiedPush를 통해 %1$s에서 관리됩니다</string>
<string name="main_banner_battery_text">알림 문제를 최소화하기 위해서는 앱의 배터리 최적화를 비활성화해야 합니다.</string>
<string name="main_banner_battery_button_remind_later">나중에 물어보기</string>
<string name="main_banner_battery_button_dismiss">무시하기</string>
<string name="main_banner_battery_button_fix_now">지금 수정하기</string>
<string name="main_banner_websocket_button_remind_later">나중에 물어보기</string>
<string name="main_banner_websocket_button_dismiss">무시하기</string>
<string name="main_banner_websocket_button_enable_now">지금 활성화</string>
<string name="add_dialog_title">주제 구독하기</string>
<string name="add_dialog_description_below">주제는 비밀번호로 보호되지 않을 수 있으니 추측하기 어려운 이름을 사용하십시오. 구독한 뒤 PUT/POST 알림을 보낼 수 있습니다.</string>
<string name="add_dialog_foreground_description">%1$s 이외 서버에서는 즉시 알림을 끌 수 없습니다.</string>
<string name="add_dialog_button_cancel">취소</string>
<string name="add_dialog_button_subscribe">구독하기</string>
<string name="add_dialog_button_back">뒤로가기</string>
<string name="add_dialog_button_login">로그인</string>
<string name="add_dialog_error_connection_failed">연결 실패: %1$s</string>
<string name="add_dialog_login_title">로그인 필요함</string>
<string name="add_dialog_login_description">이 주제는 로그인이 필요합니다. 사용자 이름과 비밀번호를 입력해 주세요.</string>
<string name="add_dialog_login_username_hint">사용자 이름</string>
<string name="add_dialog_login_password_hint">비밀번호</string>
<string name="add_dialog_login_error_not_authorized">로그인 실패. 사용자 %1$s은(는) 인증되지 않았습니다.</string>
<string name="add_dialog_login_new_user">사용자 추가</string>
<string name="detail_no_notifications_text">아직 이 주제 관련 알림을 받지 않았습니다.</string>
<string name="detail_clear_dialog_permanently_delete">영구 삭제</string>
<string name="detail_clear_dialog_cancel">취소</string>
<string name="detail_delete_dialog_message">이 주제를 구독 해제하고 모든 알림을 삭제하시겠습니까\?</string>
<string name="detail_test_message_error">메세지를 보낼 수 없습니다: %1$s</string>
<string name="detail_test_message_error_unauthorized_anon">메세지를 보낼 수 없습니다: 익명 발송이 허용되지 않습니다.</string>
<string name="detail_test_message_error_unauthorized_user">메세지를 보낼 수 없습니다: 사용자 \"%1$s\"은(는) 인증되지 않았습니다.</string>
<string name="detail_test_message_error_too_large">메세지를 보낼 수 없습니다: 첨부 파일이 너무 큽니다.</string>
<string name="detail_item_tags">태그: %1$s</string>
<string name="detail_item_snack_deleted">알림 삭제됨</string>
<string name="detail_item_menu_copy_url">URL 복사</string>
<string name="detail_item_cannot_open">첨부 파일을 열 수 없습니다: %1$s</string>
<string name="detail_item_cannot_open_not_found">첨부 파일을 열 수 없습니다: 파일이 삭제되었거나 파일을 열 수 있는 앱이 없습니다.</string>
<string name="detail_menu_enable_instant">즉시 전달 켜기</string>
<string name="detail_menu_disable_instant">즉시 전달 끄기</string>
<string name="detail_menu_clear">모든 알림 초기화</string>
<string name="share_menu_send">공유</string>
<string name="share_content_text_hint">여기에 공유할 내용 추가</string>
<string name="share_content_image_text">이미지가 공유됨</string>
<string name="share_successful">메세지 발송됨</string>
<string name="notification_dialog_title">알림 음소거</string>
<string name="notification_dialog_cancel">취소</string>
<string name="notification_popup_action_open">열기</string>
<string name="notification_popup_action_browse">탐색</string>
<string name="notification_popup_action_download">다운로드</string>
<string name="notification_popup_action_cancel">취소</string>
<string name="notification_popup_file">%1$s
\n파일: %2$s</string>
<string name="notification_popup_file_downloading">%1$s 다운로드중, %2$d%%
\n%3$s</string>
<string name="notification_popup_file_download_successful">%1$s
\n파일: %2$s, 다운로드됨</string>
<string name="notification_popup_file_download_failed">%1$s
\n파일: %2$s, 다운로드 실패</string>
<string name="notification_popup_user_action_failed">%1$s 실패: %2$s</string>
<string name="settings_title">설정</string>
<string name="settings_notifications_header">알림</string>
<string name="settings_notifications_muted_until_title">알림 음소거</string>
<string name="settings_notifications_muted_until_show_all">모든 알림 표시</string>
<string name="settings_notifications_muted_until_forever">해제시까지 알림 음소거</string>
<string name="settings_notifications_muted_until_x">%1$s까지 알림 음소거</string>
<string name="settings_notifications_min_priority_title">최소 우선순위</string>
<string name="settings_notifications_min_priority_summary_any">모든 알림 보기</string>
<string name="settings_notifications_min_priority_summary_x_or_higher">우선순위가 %1$d (%2$s) 보다 높은 알림만 보기</string>
<string name="settings_notifications_min_priority_summary_max">우선순위가 5 (최상) 인 알림만 보기</string>
<string name="settings_notifications_min_priority_min">아무 우선순위</string>
<string name="settings_notifications_min_priority_low">낮음 이상</string>
<string name="settings_notifications_min_priority_default">기본 이상</string>
<string name="settings_notifications_min_priority_high">높음 이상</string>
<string name="settings_notifications_min_priority_max">최상</string>
<string name="settings_notifications_priority_min">최하</string>
<string name="settings_notifications_priority_low">낮음</string>
<string name="settings_notifications_priority_default">기본</string>
<string name="settings_notifications_priority_high">높음</string>
<string name="settings_notifications_priority_max">최상</string>
<string name="settings_notifications_channel_prefs_title">채널 설정</string>
<string name="settings_notifications_channel_prefs_summary">방해 금지 모드 무시하기, 소리, 기타 설정.</string>
<string name="settings_notifications_auto_download_summary_always">모든 첨부 파일을 자동 다운로드</string>
<string name="settings_notifications_auto_download_title">첨부 파일 다운로드</string>
<string name="settings_notifications_auto_download_summary_never">첨부 파일을 자동으로 다운로드하지 않음</string>
<string name="settings_notifications_auto_download_summary_smaller_than_x">첨부 파일 크기가 %1$s보다 작다면 자동 다운로드</string>
<string name="settings_notifications_auto_download_never">어떤 파일도 자동으로 다운로드하지 않음</string>
<string name="settings_notifications_auto_download_always">모든 파일을 자동으로 다운로드</string>
<string name="settings_notifications_auto_download_100k">100kB보다 작다면</string>
<string name="settings_notifications_auto_download_500k">500kB보다 작다면</string>
<string name="settings_notifications_auto_download_1m">1MB보다 작다면</string>
<string name="settings_notifications_auto_download_5m">5MB보다 작다면</string>
<string name="settings_notifications_auto_download_10m">10MB보다 작다면</string>
<string name="settings_notifications_auto_delete_title">알림 삭제</string>
<string name="settings_notifications_auto_delete_summary_one_day">알림을 1일 뒤 자동으로 삭제함</string>
<string name="settings_notifications_auto_delete_summary_three_days">알림을 3일 뒤 자동으로 삭제함</string>
<string name="settings_notifications_auto_delete_summary_one_week">알림을 1주 뒤 자동으로 삭제함</string>
<string name="settings_notifications_auto_delete_summary_three_months">알림을 3달 뒤 자동으로 삭제함</string>
<string name="settings_notifications_auto_delete_never">자동 삭제 안함</string>
<string name="settings_notifications_auto_delete_one_day">1일 뒤</string>
<string name="settings_notifications_auto_delete_three_days">3일 뒤</string>
<string name="settings_notifications_auto_delete_one_week">1주 뒤</string>
<string name="settings_notifications_auto_delete_one_month">1달 뒤</string>
<string name="settings_notifications_auto_delete_three_months">3달 뒤</string>
<string name="settings_general_header">일반</string>
<string name="settings_general_default_base_url_title">기본 서버</string>
<string name="settings_general_default_base_url_default_summary">%1$s (기본)</string>
<string name="settings_general_dark_mode_title">다크 모드</string>
<string name="settings_general_dark_mode_summary_system">시스템 설정 사용중</string>
<string name="settings_general_dark_mode_summary_light">라이트 모드 사용중</string>
<string name="settings_general_dark_mode_summary_dark">다크 모드 사용중. 혹시 뱀파이어신가요\?</string>
<string name="settings_general_dark_mode_entry_system">시스템 설정 사용</string>
<string name="settings_general_dark_mode_entry_light">라이트 모드</string>
<string name="settings_general_dark_mode_entry_dark">다크 모드</string>
<string name="settings_backup_restore_header">백업 및 복원</string>
<string name="settings_backup_restore_backup_title">파일에 백업</string>
<string name="settings_backup_restore_backup_summary">설정, 알림, 사용자 내보내기</string>
<string name="settings_backup_restore_backup_entry_everything">모두</string>
<string name="settings_backup_restore_restore_summary">설정, 알림, 사용자 가져오기</string>
<string name="settings_backup_restore_restore_successful">복원 성공</string>
<string name="settings_backup_restore_restore_failed">복원 실패: %1$s</string>
<string name="settings_advanced_header">고급 설정</string>
<string name="settings_advanced_broadcast_summary_disabled">앱이 들어오는 알림을 브로드캐스트할 수 없습니다</string>
<string name="settings_advanced_record_logs_title">로그 기록</string>
<string name="settings_advanced_export_logs_summary">로그를 클립보드에 복사하거나 nopaste.net(ntfy 소유주가 운영하는)에 업로드합니다. 서버 주소나 주제는 가려지지만 알림은 가려지지 않습니다.</string>
<string name="settings_advanced_export_logs_entry_copy_original">클립보드에 복사</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">클립보드에 복사 (검열본)</string>
<string name="settings_advanced_export_logs_copied_url">로그가 업로드되고 링크를 복사했습니다</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">어떠한 주제/서버 이름도 검열되지 않았습니다. 구독이 없던 것은 아닌가요\?</string>
<string name="settings_advanced_clear_logs_deleted_toast">로그 삭제됨</string>
<string name="settings_advanced_connection_protocol_title">연결 프로토콜</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">JSON stream over HTTP</string>
<string name="detail_settings_appearance_header">표시 설정</string>
<string name="channel_notifications_low_name">알림 (우선순위 낮음)</string>
<string name="user_dialog_button_save">저장</string>
<string name="channel_notifications_min_name">알림 (우선순위 최하)</string>
<string name="channel_subscriber_notification_instant_text_two">즉시 전달 주제 2개 구독중</string>
<string name="channel_subscriber_notification_instant_text_five">즉시 전달 주제 5개 구독중</string>
<string name="channel_subscriber_notification_instant_text_four">즉시 전달 주제 4개 구독중</string>
<string name="channel_subscriber_notification_noinstant_text_four">주제 4개 구독 중</string>
<string name="main_menu_report_bug_title">버그 제보</string>
<string name="add_dialog_topic_name_hint">주제 이름, 예를 들어 phils_alerts</string>
<string name="add_dialog_use_another_server_description">알림을 받을 서버의 주소를 아래에 입력해주세요.</string>
<string name="add_dialog_instant_delivery">대기 상태에서 즉시 알림 받기</string>
<string name="detail_clear_dialog_message">이 주제의 모든 알림을 삭제하시겠습니까\?</string>
<string name="channel_subscriber_notification_noinstant_text_five">주제 5개 구독 중</string>
<string name="channel_subscriber_notification_noinstant_text_six">주제 6개 구독 중</string>
<string name="main_menu_notifications_disabled_until">알림 %1$s까지 음소거됨</string>
<string name="main_menu_settings_title">설정</string>
<string name="main_menu_docs_title">문서 보기</string>
<string name="main_menu_rate_title">앱 평가하기 ⭐</string>
<string name="main_how_to_intro">+ 버튼을 눌러 주제를 구독할 수 있습니다. 이후 장치에서 PUT이나 POST를 통해 보내진 알림을 받을 수 있습니다.</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string>
<string name="main_item_date_yesterday">어제</string>
<string name="main_add_button_description">구독 추가</string>
<string name="main_banner_websocket_text">웹소켓으로 연결하는 방법이 권장하는 방법이며 배터리 수명을 증가시킬수 있지만, 서버에 따라 <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">추가 설정</a>이 필요할 수 있습니다. 이것은 설정에서 변경 가능합니다.</string>
<string name="add_dialog_instant_delivery_description">장치가 활성화되지 않은 상태에서도 알림을 즉시 받을수 있도록 합니다.</string>
<string name="detail_delete_dialog_permanently_delete">영구 삭제</string>
<string name="detail_delete_dialog_cancel">취소</string>
<string name="detail_instant_delivery_enabled">즉시 전달 켜짐</string>
<string name="add_dialog_base_urls_dropdown_clear">서비스 URL 초기화</string>
<string name="detail_how_to_intro">알림을 받으려면 아래 주소로 PUT이나 POST 요청을 보내세요.</string>
<string name="detail_deep_link_subscribed_toast_message">주제 %1$s 를 구독했습니다</string>
<string name="detail_item_menu_cancel">다운로드 취소</string>
<string name="detail_item_menu_copy_contents_copied">알림이 클립보드로 복사됨</string>
<string name="detail_item_cannot_save">첨부 파일을 저장할 수 없습니다: %1$s</string>
<string name="detail_item_cannot_delete">첨부 파일을 삭제할 수 없습니다: %1$s</string>
<string name="share_content_title">메세지 미리보기</string>
<string name="notification_dialog_muted_forever_toast_message">알림 음소거됨</string>
<string name="notification_dialog_show_all">모든 알림 보기</string>
<string name="detail_test_message">이것은 ntfy 안드로이드 앱에서 보낸 시험용 알림입니다. 우선순위는 %1$d입니다. 다시 알림을 보낸다면 다르게 보일 수 있습니다.</string>
<string name="detail_item_snack_undo">실행 취소</string>
<string name="detail_item_menu_delete">파일 삭제</string>
<string name="detail_item_menu_download">파일 다운로드</string>
<string name="detail_item_cannot_download">첨부 파일을 열거나 다운로드할 수 없습니다. 링크가 만료되었으며 로컬 사본을 찾을 수 없습니다.</string>
<string name="settings_general_users_prefs_user_used_by_one">주제 %1$s에서 사용됨</string>
<string name="settings_about_version_copied_to_clipboard_message">클립보드에 복사됨</string>
<string name="detail_settings_global_setting_title">전역 설정 사용하기</string>
<string name="detail_copied_to_clipboard_message">클립보드에 복사됨</string>
<string name="detail_item_menu_open">파일 열기</string>
<string name="detail_item_menu_copy_url_copied">URL이 클립보드에 복사됨</string>
<string name="add_dialog_base_urls_dropdown_choose">서비스 URL 선택</string>
<string name="detail_how_to_example">예제 (curl 사용):<br/><tt>$ curl -d \\\"Hi\\\" %1$s</tt></string>
<string name="share_content_file_error">파일 정보를 읽을 수 없습니다: %1$s</string>
<string name="detail_test_title">테스트: 원한다면 제목을 설정할 수 있습니다.</string>
<string name="detail_instant_delivery_disabled">즉시 전달 꺼짐</string>
<string name="detail_item_menu_save_file">파일 저장</string>
<string name="detail_item_download_failed">첨부 파일을 다운로드할 수 없습니다: %1$s</string>
<string name="detail_item_download_info_not_downloaded">다운로드되지 않음</string>
<string name="detail_item_download_info_not_downloaded_expired">다운로드되지 않음, 링크 만료됨</string>
<string name="detail_item_download_info_not_downloaded_expires_x">다운로드되지 않음, %1$s에 만료됨</string>
<string name="detail_item_download_info_deleted">삭제됨</string>
<string name="detail_item_download_info_download_failed">다운로드 실패</string>
<string name="detail_menu_notifications_enabled">알림 켜짐</string>
<string name="detail_menu_test">시험용 알림 발송</string>
<string name="detail_menu_settings">구독 설정</string>
<string name="detail_item_menu_copy_contents">알림 복사</string>
<string name="detail_item_saved_successfully">\"Downloads\" 폴더에 \"%1$s\"로 저장됨</string>
<string name="detail_item_cannot_open_url">URL을 열 수 없습니다: %1$s</string>
<string name="detail_item_download_info_downloading_x_percent">%1$d%% 다운로드됨</string>
<string name="detail_action_mode_menu_copy">복사</string>
<string name="detail_action_mode_menu_delete">삭제</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">영구 삭제</string>
<string name="share_topic_title">공유하기</string>
<string name="settings_notifications_auto_delete_summary_one_month">알림을 1달 뒤 자동으로 삭제함</string>
<string name="settings_general_users_summary">보호된 주제를 위한 사용자 추가/삭제</string>
<string name="detail_item_download_info_download_failed_expired">다운로드 실패, 링크 만료됨</string>
<string name="detail_item_download_info_deleted_expired">삭제됨, 링크 만료됨</string>
<string name="detail_item_download_info_deleted_expires_x">삭제됨, 링크 %1$s에 만료됨</string>
<string name="detail_item_download_info_download_failed_expires_x">다운로드 실패, 링크 %1$s에 만료됨</string>
<string name="detail_menu_notifications_disabled_forever">알림 음소거됨</string>
<string name="detail_menu_notifications_disabled_until">%1$s까지 알림 음소거됨</string>
<string name="detail_menu_copy_url">주제 주소 복사</string>
<string name="detail_menu_unsubscribe">구독 해제</string>
<string name="detail_action_mode_delete_dialog_message">선택한 알림을 영원히 삭제하시겠습니까\?</string>
<string name="detail_action_mode_delete_dialog_cancel">취소</string>
<string name="detail_settings_title">구독 설정</string>
<string name="share_title">공유</string>
<string name="share_content_image_error">이미지를 읽을 수 없습니다: %1$s</string>
<string name="share_content_file_text">파일이 공유됨</string>
<string name="share_suggested_topics">주제 추천</string>
<string name="notification_dialog_1h">1시간 후</string>
<string name="notification_dialog_2h">2시간 후</string>
<string name="notification_dialog_8h">8시간 후</string>
<string name="notification_dialog_forever">해제시</string>
<string name="notification_dialog_save">저장</string>
<string name="notification_dialog_enabled_toast_message">알림 음소거 해제됨</string>
<string name="notification_dialog_tomorrow">내일</string>
<string name="settings_general_users_prefs_user_used_by_many">주제 %1$s에서 사용됨</string>
<string name="settings_backup_restore_backup_entry_settings_only">설정만</string>
<string name="settings_advanced_broadcast_summary_enabled">앱이 들어오는 알림을 브로드캐스트할 수 있습니다</string>
<string name="settings_advanced_export_logs_title">로그 복사/업로드</string>
<string name="notification_dialog_muted_until_toast_message">알림 %1$s까지 음소거됨</string>
<string name="notification_dialog_30min">30분 후</string>
<string name="settings_notifications_auto_download_50m">50MB보다 작다면</string>
<string name="settings_notifications_auto_delete_summary_never">알림을 자동으로 삭제하지 않음</string>
<string name="settings_general_users_prefs_user_not_used">어떤 주제에서도 사용되지 않음</string>
<string name="settings_general_users_prefs_user_add_title">새 사용자 추가</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">사용자 제외 모두</string>
<string name="settings_general_default_base_url_message">새 주제를 구독하거나 공유할 때 사용할 서버의 루트 URL을 입력하십시오.</string>
<string name="settings_general_users_title">사용자 관리</string>
<string name="settings_general_users_prefs_user_add">사용자 추가</string>
<string name="settings_general_users_prefs_user_add_summary">새 서버를 위한 사용자 추가</string>
<string name="settings_general_users_prefs_title">사용자</string>
<string name="settings_backup_restore_backup_successful">백업 생성됨</string>
<string name="settings_advanced_broadcast_title">메세지 브로드캐스트</string>
<string name="settings_advanced_record_logs_summary_enabled">장치에 로그(최대 1000줄) 기록 …</string>
<string name="settings_advanced_record_logs_summary_disabled">나중에 문제 보고를 위해 로그를 기록합니다.</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">업로드 후 링크 복사 (검열본)</string>
<string name="settings_backup_restore_backup_failed">백업 실패: %1$s</string>
<string name="settings_backup_restore_restore_title">파일에서 복원</string>
<string name="settings_advanced_export_logs_entry_upload_original">업로드 후 링크 복사</string>
<string name="settings_advanced_export_logs_copied_logs">로그가 클립보드에 복사됨</string>
<string name="settings_advanced_export_logs_uploading">로그 업로드중 …</string>
<string name="settings_advanced_export_logs_error_uploading">로그를 업로드할 수 없음: %1$s</string>
<string name="settings_advanced_export_logs_scrub_dialog_text">여기 적힌 주제/서버 이름은 과일 이름으로 변경되었으므로 로그를 안전하게 공유할 수 있습니다:
\n
\n%1$s
\n
\n비밀번호도 가려졌지만 이곳에 표시되지 않았습니다.</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">확인</string>
<string name="settings_advanced_clear_logs_title">로그 초기화</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">JSON stream over HTTP로 연결합니다. 이 방식은 안정적이지만 배터리를 더 많이 사용합니다.</string>
<string name="settings_advanced_connection_protocol_entry_ws">웹소켓</string>
<string name="settings_about_header">정보</string>
<string name="detail_settings_notifications_instant_title">즉시 전달</string>
<string name="settings_advanced_connection_protocol_summary_ws">웹소켓을 사용해 서버에 연결합니다. 권장되는 방식이지만 서버 프록시에 추가 설정이 필요할 수 있습니다.</string>
<string name="settings_advanced_clear_logs_summary">기존 로그를 모두 지우고 새로 시작</string>
<string name="settings_about_version_title">버전</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
<string name="detail_settings_notifications_instant_summary_on">알림이 즉시 전달됩니다. 서비스가 항시 실행되어야 하며 배터리 소모가 많습니다.</string>
<string name="detail_settings_notifications_instant_summary_off">알림이 Firebase를 통해 전달됩니다. 약간의 지연이 발생할 수 있으나 배터리 소모가 적습니다.</string>
<string name="detail_settings_appearance_icon_set_title">구독 아이콘</string>
<string name="detail_settings_appearance_icon_remove_title">구독 아이콘 (터치해서 제거)</string>
<string name="detail_settings_appearance_icon_remove_summary">이 주제의 알림에 표시될 아이콘</string>
<string name="detail_settings_appearance_display_name_message">이 구독을 표시할 이름을 지정합니다. 빈 값을 지정하면 기본 이름(%1$s)이 사용됩니다.</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (기본)</string>
<string name="detail_settings_about_header">정보</string>
<string name="detail_settings_appearance_icon_set_summary">알림에 표시될 아이콘을 지정합니다</string>
<string name="detail_settings_appearance_icon_error_saving">아이콘을 저장할 수 없습니다: %1$s</string>
<string name="detail_settings_global_setting_suffix">전역 설정 사용중</string>
<string name="user_dialog_description_add">여기에서 사용자를 추가할 수 있습니다. 지정한 서버의 모든 주제는 이 로그인 정보를 사용합니다.</string>
<string name="user_dialog_username_hint">사용자 이름</string>
<string name="user_dialog_button_cancel">취소</string>
<string name="detail_settings_appearance_display_name_title">표시 이름</string>
<string name="detail_settings_about_topic_url_title">주제 URL</string>
<string name="user_dialog_title_edit">사용자 편집</string>
<string name="user_dialog_base_url_hint">서비스 URL</string>
<string name="user_dialog_password_hint_edit">비밀번호 (변경시에만 입력)</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">클립보드에 복사됨</string>
<string name="user_dialog_title_add">사용자 추가</string>
<string name="user_dialog_description_edit">선택한 사용자의 아이디나 비밀번호를 변경하거나 삭제할 수 있습니다.</string>
<string name="user_dialog_password_hint_add">비밀번호</string>
<string name="user_dialog_button_add">사용자 추가</string>
<string name="user_dialog_button_delete">사용자 삭제</string>
</resources>

View file

@ -10,8 +10,8 @@
<string name="channel_notifications_min_name">Notificações (prioridade mínima)</string> <string name="channel_notifications_min_name">Notificações (prioridade mínima)</string>
<string name="main_menu_notifications_enabled">Notificações ativadas</string> <string name="main_menu_notifications_enabled">Notificações ativadas</string>
<string name="main_menu_settings_title">Configurações</string> <string name="main_menu_settings_title">Configurações</string>
<string name="channel_subscriber_notification_noinstant_text">Inscrito em temas</string> <string name="channel_subscriber_notification_noinstant_text">Inscrito em tópicos</string>
<string name="channel_subscriber_notification_noinstant_text_three">Inscrito em três temas</string> <string name="channel_subscriber_notification_noinstant_text_three">Inscrito em três tópicos</string>
<string name="main_menu_report_bug_title">Relatar um problema</string> <string name="main_menu_report_bug_title">Relatar um problema</string>
<string name="main_item_status_reconnecting">Reconectando …</string> <string name="main_item_status_reconnecting">Reconectando …</string>
<string name="channel_notifications_high_name">Notificações (prioridade alta)</string> <string name="channel_notifications_high_name">Notificações (prioridade alta)</string>
@ -21,10 +21,10 @@
<string name="channel_subscriber_notification_instant_text">Inscrito em temas de entrega instantânea</string> <string name="channel_subscriber_notification_instant_text">Inscrito em temas de entrega instantânea</string>
<string name="channel_subscriber_notification_instant_text_one">Inscrito em um tema de entrega instantânea</string> <string name="channel_subscriber_notification_instant_text_one">Inscrito em um tema de entrega instantânea</string>
<string name="channel_subscriber_notification_instant_text_more">Inscrito em %1$d temas de entrega instantânea</string> <string name="channel_subscriber_notification_instant_text_more">Inscrito em %1$d temas de entrega instantânea</string>
<string name="channel_subscriber_notification_noinstant_text_two">Inscrito em dois temas</string> <string name="channel_subscriber_notification_noinstant_text_two">Inscrito em dois tópicos</string>
<string name="channel_subscriber_notification_noinstant_text_four">Inscrito em quatro temas</string> <string name="channel_subscriber_notification_noinstant_text_four">Inscrito em quatro temas</string>
<string name="channel_subscriber_notification_noinstant_text_more">Inscrito em %1$d temas</string> <string name="channel_subscriber_notification_noinstant_text_more">Inscrito em %1$d temas</string>
<string name="refresh_message_result">%1$d notificações recebidas</string> <string name="refresh_message_result">%1$d notificação(ões) recebida(s)</string>
<string name="refresh_message_no_results">Tudo está atualizado</string> <string name="refresh_message_no_results">Tudo está atualizado</string>
<string name="refresh_message_error">Não foi possível atualizar %1$d inscrições <string name="refresh_message_error">Não foi possível atualizar %1$d inscrições
\n \n
@ -32,15 +32,15 @@
<string name="main_action_bar_title">Temas inscritos</string> <string name="main_action_bar_title">Temas inscritos</string>
<string name="main_menu_notifications_disabled_until">Notificações silenciadas até %1$s</string> <string name="main_menu_notifications_disabled_until">Notificações silenciadas até %1$s</string>
<string name="main_menu_rate_title">Avalie o aplicativo ⭐</string> <string name="main_menu_rate_title">Avalie o aplicativo ⭐</string>
<string name="main_action_mode_delete_dialog_message">Cancelar inscrição dos temas selecionados e remover permanentemente todas notificações\?</string> <string name="main_action_mode_delete_dialog_message">Cancelar inscrição dos tópicos selecionados e remover permanentemente todas notificações\?</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Remover permanentemente</string> <string name="main_action_mode_delete_dialog_permanently_delete">Remover permanentemente</string>
<string name="main_action_mode_delete_dialog_cancel">Cancelar</string> <string name="main_action_mode_delete_dialog_cancel">Cancelar</string>
<string name="main_item_date_yesterday">ontem</string> <string name="main_item_date_yesterday">ontem</string>
<string name="main_add_button_description">Inscrever-se</string> <string name="main_add_button_description">Inscrever-se</string>
<string name="main_no_subscriptions_text">Parece que você não tem nenhuma inscrição ainda.</string> <string name="main_no_subscriptions_text">Parece que você não tem nenhuma inscrição ainda.</string>
<string name="main_how_to_link">Instruções detalhadas disponíveis em ntfy.sh, e na documentação.</string> <string name="main_how_to_link">Instruções detalhadas disponíveis em ntfy.sh, e na documentação.</string>
<string name="main_banner_battery_text">Otimização de bateria deve estar desligada para evitar problemas de entrega de notificação no aplicativo.</string> <string name="main_banner_battery_text">O modo Economia de Energia deve estar desligado para evitar problemas de entrega de notificação no aplicativo.</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string> <string name="main_item_status_unified_push">%1$s(UnifiedPush)</string>
<string name="main_banner_websocket_button_remind_later">Perguntar depois</string> <string name="main_banner_websocket_button_remind_later">Perguntar depois</string>
<string name="main_banner_websocket_button_dismiss">Dispensar</string> <string name="main_banner_websocket_button_dismiss">Dispensar</string>
<string name="add_dialog_title">Inscrever-se no tema</string> <string name="add_dialog_title">Inscrever-se no tema</string>
@ -184,9 +184,9 @@
<string name="settings_advanced_clear_logs_title">Limpar logs</string> <string name="settings_advanced_clear_logs_title">Limpar logs</string>
<string name="settings_advanced_clear_logs_summary">Apagar logs registrados anteriormente e recomeçar</string> <string name="settings_advanced_clear_logs_summary">Apagar logs registrados anteriormente e recomeçar</string>
<string name="settings_advanced_connection_protocol_title">Protocolo de conexão</string> <string name="settings_advanced_connection_protocol_title">Protocolo de conexão</string>
<string name="settings_advanced_connection_protocol_summary_ws">Usar WebSockets para conectar ao servidor. Isso irá se tornar o padrão em Junho de 2022.</string> <string name="settings_advanced_connection_protocol_summary_ws">Usar WebSockets para se conectar ao servidor. Este é o método recomendado, mas pode exigir configurações adicionais no seu proxy.</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">Stream JSON sobre HTTP</string> <string name="settings_advanced_connection_protocol_entry_jsonhttp">Stream JSON sobre HTTP</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string> <string name="settings_advanced_connection_protocol_entry_ws">Web Sockets</string>
<string name="settings_about_header">Sobre</string> <string name="settings_about_header">Sobre</string>
<string name="settings_about_version_title">Versão</string> <string name="settings_about_version_title">Versão</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string> <string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
@ -202,14 +202,14 @@
<string name="channel_subscriber_notification_instant_text_two">Inscrito em dois temas de entrega instantânea</string> <string name="channel_subscriber_notification_instant_text_two">Inscrito em dois temas de entrega instantânea</string>
<string name="user_dialog_button_save">Salvar</string> <string name="user_dialog_button_save">Salvar</string>
<string name="main_item_status_text_one">%1$d notificação</string> <string name="main_item_status_text_one">%1$d notificação</string>
<string name="channel_subscriber_notification_noinstant_text_one">Inscrito em um tema</string> <string name="channel_subscriber_notification_noinstant_text_one">Inscrito em um tópico</string>
<string name="main_menu_notifications_disabled_forever">Notificações silenciadas</string> <string name="main_menu_notifications_disabled_forever">Notificações silenciadas</string>
<string name="refresh_message_error_one">Não foi possível atualizar a inscrição: %1$s</string> <string name="refresh_message_error_one">Não foi possível atualizar a inscrição: %1$s</string>
<string name="main_menu_docs_title">Leia a documentação</string> <string name="main_menu_docs_title">Leia a documentação</string>
<string name="main_action_mode_menu_unsubscribe">Cancelar inscrição</string> <string name="main_action_mode_menu_unsubscribe">Cancelar inscrição</string>
<string name="main_unified_push_toast">Essa inscrição é gerenciada por %1$s via UnifiedPush</string> <string name="main_unified_push_toast">Essa inscrição é gerenciada por %1$s via UnifiedPush</string>
<string name="main_item_status_text_not_one">%1$d notificações</string> <string name="main_item_status_text_not_one">%1$d notificações</string>
<string name="main_how_to_intro">Clique no + para criar ou inscrever-se em um tema. Você receberá notificações no seu dispositivo ao enviar mensagens via PUT ou POST.</string> <string name="main_how_to_intro">Clique no + para criar ou inscrever-se em um tópico. Em seguida você receberá notificações no seu dispositivo ao enviar mensagens via PUT ou POST.</string>
<string name="main_banner_battery_button_remind_later">Perguntar depois</string> <string name="main_banner_battery_button_remind_later">Perguntar depois</string>
<string name="main_banner_battery_button_dismiss">Dispensar</string> <string name="main_banner_battery_button_dismiss">Dispensar</string>
<string name="add_dialog_button_subscribe">Inscrever-se</string> <string name="add_dialog_button_subscribe">Inscrever-se</string>
@ -246,7 +246,7 @@
<string name="settings_advanced_export_logs_scrub_dialog_empty">Nenhum tema/hostname foram censurados. Talvez você não tenha inscrições\?</string> <string name="settings_advanced_export_logs_scrub_dialog_empty">Nenhum tema/hostname foram censurados. Talvez você não tenha inscrições\?</string>
<string name="settings_advanced_clear_logs_deleted_toast">Logs apagados</string> <string name="settings_advanced_clear_logs_deleted_toast">Logs apagados</string>
<string name="settings_advanced_export_logs_entry_copy_original">Copiar para área de transferência</string> <string name="settings_advanced_export_logs_entry_copy_original">Copiar para área de transferência</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Usar uma stream JSON sobre HTTP para conectar ao servidor. Esse método foi descontinuado e será removido em Junho de 2022.</string> <string name="settings_advanced_connection_protocol_summary_jsonhttp">Usar um stream JSON via HTTP para conectar ao servidor. Esse método já funciona bem mas pode consumir mais bateria.</string>
<string name="user_dialog_description_add">Você pode adicionar um usuário aqui. Todos os temas para esse servidor usarão esse usuário.</string> <string name="user_dialog_description_add">Você pode adicionar um usuário aqui. Todos os temas para esse servidor usarão esse usuário.</string>
<string name="user_dialog_username_hint">Nome de usuário</string> <string name="user_dialog_username_hint">Nome de usuário</string>
<string name="user_dialog_password_hint_edit">Senha (não será modificado se deixado em branco)</string> <string name="user_dialog_password_hint_edit">Senha (não será modificado se deixado em branco)</string>
@ -317,4 +317,14 @@
<string name="channel_subscriber_notification_instant_text_six">Inscrito em seis tópicos de entrega instantânea</string> <string name="channel_subscriber_notification_instant_text_six">Inscrito em seis tópicos de entrega instantânea</string>
<string name="channel_subscriber_notification_noinstant_text_five">Inscrito em cinco tópicos</string> <string name="channel_subscriber_notification_noinstant_text_five">Inscrito em cinco tópicos</string>
<string name="detail_settings_global_setting_suffix">usando configurações globais</string> <string name="detail_settings_global_setting_suffix">usando configurações globais</string>
</resources> <string name="detail_settings_appearance_display_name_title">Nome de exibição</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (padrão)</string>
<string name="detail_settings_appearance_display_name_message">Defina um nome personalizado para esta inscrição. Deixe em branco para padrão (%1$s).</string>
<string name="main_banner_websocket_text">Mudar para WebSockets é o modo recomendado de conectar ao seu servidor, e pode melhorar a vida da bateria, mas pode necessitar de <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">configurações adicionais no seu proxy</a>. Isso pode ser habilitado nas Configurações.</string>
<string name="detail_settings_about_header">Sobre</string>
<string name="detail_settings_about_topic_url_title">URL do tópico</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Copiado para área de transferência</string>
<string name="add_dialog_base_urls_dropdown_choose">Escolha o URL do serviço</string>
<string name="add_dialog_base_urls_dropdown_clear">Limpar o URL do serviço</string>
<string name="main_banner_websocket_button_enable_now">Habilitar agora</string>
</resources>

View file

@ -0,0 +1,261 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="channel_subscriber_notification_instant_text_three">Inscrito em três tópicos de entrega instantânea</string>
<string name="channel_subscriber_notification_instant_text_four">Inscrito em quatro tópicos de entrega instantânea</string>
<string name="channel_subscriber_notification_instant_text_five">Inscrito em cinco tópicos de entrega instantânea</string>
<string name="channel_subscriber_notification_instant_text_six">Inscrito em seis tópicos de entrega instantânea</string>
<string name="channel_subscriber_notification_instant_text_more">Inscrito em %1$d tópico(s) de entrega instantânea</string>
<string name="channel_subscriber_notification_noinstant_text">Inscrito em tópicos</string>
<string name="channel_subscriber_notification_noinstant_text_one">Inscrito em um tópico</string>
<string name="channel_subscriber_notification_noinstant_text_two">Inscrito em dois tópicos</string>
<string name="channel_subscriber_notification_noinstant_text_three">Inscrito em três tópicos</string>
<string name="channel_subscriber_notification_noinstant_text_six">Inscrito em seis tópicos</string>
<string name="channel_subscriber_notification_noinstant_text_more">Inscrito em %1$d tópico(s)</string>
<string name="refresh_message_result">%1$d notificação(ões) recebida(s)</string>
<string name="refresh_message_no_results">Tudo está atualizado</string>
<string name="refresh_message_error">Não foi possível atualizar %1$d inscrição(ões)
\n
\n%2$s</string>
<string name="refresh_message_error_one">Não foi possível atualizar a inscrição: %1$s</string>
<string name="main_action_bar_title">Tópicos inscritos</string>
<string name="main_menu_notifications_enabled">Notificações ligadas</string>
<string name="main_menu_notifications_disabled_forever">Notificações silenciadas</string>
<string name="channel_notifications_min_name">Notificações (prioridade mínima)</string>
<string name="channel_notifications_low_name">Notificações (baixa prioridade)</string>
<string name="channel_subscriber_service_name">Serviço de Assinatura</string>
<string name="channel_subscriber_notification_title">Escutando recebimento de notificações</string>
<string name="channel_subscriber_notification_instant_text">Inscrito em tópicos de entrega instantânea</string>
<string name="main_menu_notifications_disabled_until">Notificações silenciadas até %1$s</string>
<string name="main_menu_settings_title">Configurações</string>
<string name="main_menu_report_bug_title">Reportar um problema</string>
<string name="main_menu_docs_title">Leia os documentos</string>
<string name="main_menu_rate_title">Avalie o aplicativo⭐</string>
<string name="main_action_mode_menu_unsubscribe">Cancelar inscrição</string>
<string name="main_action_mode_delete_dialog_message">Cancelar a inscrição do(s) tópico(s) selecionado(s) e excluir permanentemente todas as notificações\?</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Excluir permanentemente</string>
<string name="main_action_mode_delete_dialog_cancel">Cancelar</string>
<string name="main_item_status_text_one">%1$d notificação</string>
<string name="main_item_status_text_not_one">%1$d notificações</string>
<string name="main_item_status_reconnecting">reconectando…</string>
<string name="main_item_date_yesterday">ontem</string>
<string name="main_add_button_description">Adicionar inscrição</string>
<string name="main_no_subscriptions_text">Parece que você não possui inscrições ainda.</string>
<string name="main_how_to_link">Instruções detalhadas disponíveis em ntfy.sh, e nos documentos.</string>
<string name="main_unified_push_toast">Esta inscrição é controlada por %1$s via UnifiedPush</string>
<string name="main_banner_battery_text">Economia de Energia deve estar desligada para que o aplicativo evite problemas no envio de notificações.</string>
<string name="main_banner_battery_button_remind_later">Perguntar depois</string>
<string name="main_banner_battery_button_dismiss">Dispensar</string>
<string name="main_banner_battery_button_fix_now">Corrigir agora</string>
<string name="main_banner_websocket_button_remind_later">Perguntar depois</string>
<string name="add_dialog_title">Inscrever-se para o tópico</string>
<string name="add_dialog_topic_name_hint">Nome do tópico, ex: alertas_do_jose</string>
<string name="channel_subscriber_notification_noinstant_text_four">Inscrito em quatro tópicos</string>
<string name="channel_subscriber_notification_noinstant_text_five">Inscrito em cinco tópicos</string>
<string name="main_how_to_intro">Clique em + para criar uma inscrição em um tópico. Em seguida você receberá notificações no seu dispositivo quando enviar mensagens via PUT ou POST.</string>
<string name="channel_notifications_max_name">Notificações (prioridade máxima)</string>
<string name="main_banner_websocket_text">Alternar para WebSockets é o jeito recomendado de conectar no seu servidor, podendo melhorar a vida da bateria, mas requer <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">configurações adicionais no seu proxy</a>. Isto pode ser alterado nas Configurações.</string>
<string name="main_banner_websocket_button_dismiss">Dispensar</string>
<string name="channel_notifications_default_name">Notificações (prioridade padrão)</string>
<string name="channel_notifications_high_name">Notificações (alta prioridade)</string>
<string name="channel_subscriber_notification_instant_text_one">Inscrito em um tópico de entrega instantânea</string>
<string name="main_banner_websocket_button_enable_now">Habilitar agora</string>
<string name="channel_subscriber_notification_instant_text_two">Inscrito em dois tópicos de entrega instantânea</string>
<string name="add_dialog_description_below">Tópicos podem não ser protegidos por senha, portanto escolha um nome que seja difícil de adivinhar. Uma vez inscrito, você pode enviar notificações PUT/POST.</string>
<string name="main_item_status_unified_push">%1$s (Push Unificado)</string>
<string name="add_dialog_use_another_server">Utilize outro servidor</string>
<string name="add_dialog_button_login">Log in</string>
<string name="add_dialog_login_title">É necesário fazer login</string>
<string name="detail_clear_dialog_message">Deseja deletar todas as notificações nesse tópico\?</string>
<string name="detail_clear_dialog_permanently_delete">Deletar permanentemente</string>
<string name="detail_delete_dialog_permanently_delete">Deletar permanentemente</string>
<string name="detail_delete_dialog_cancel">Cancelar</string>
<string name="detail_test_title">Teste: Você pode definir um título se quiser.</string>
<string name="detail_test_message_error">Não foi possível enviar a mensagem: %1$s</string>
<string name="detail_test_message_error_unauthorized_anon">Não foi possível enviar a mensagem: Publicações anônimas não são permitidas.</string>
<string name="detail_copied_to_clipboard_message">Copiado para a área de transferência</string>
<string name="detail_deep_link_subscribed_toast_message">Inscrito no tópico %1$s</string>
<string name="detail_item_tags">Tags: %1$s</string>
<string name="detail_item_snack_deleted">Notificação deletada</string>
<string name="detail_item_snack_undo">Desfazer</string>
<string name="detail_item_menu_download">Fazer download do arquivo</string>
<string name="detail_item_menu_cancel">Cancelar o download</string>
<string name="detail_item_cannot_open">Não foi possível abrir o anexo: %1$s</string>
<string name="detail_item_cannot_open_not_found">Não foi possível abrir o anexo: O arquivo pode ter sido deletado, ou não existe app instalado que consiga abrir o arquivo.</string>
<string name="detail_item_cannot_open_url">Não foi possível abrir a URL: %1$s</string>
<string name="detail_item_cannot_save">Não foi possível salvar o anexo: %1$s</string>
<string name="detail_item_cannot_delete">Não foi possível deletar o anexo: %1$s</string>
<string name="detail_item_download_failed">Não foi possível baixar o anexo: %1$s</string>
<string name="detail_item_download_info_not_downloaded_expires_x">não foi baixado, expira em %1$s</string>
<string name="detail_item_download_info_downloading_x_percent">%1$d%% baixado</string>
<string name="detail_item_download_info_deleted">apagado</string>
<string name="detail_item_download_info_deleted_expired">apagado, link expirou</string>
<string name="detail_item_download_info_deleted_expires_x">apagado, link expira em %1$s</string>
<string name="detail_item_download_info_download_failed">download falhou</string>
<string name="detail_item_download_info_download_failed_expired">download falhou, link expirou</string>
<string name="detail_item_download_info_download_failed_expires_x">download falhou, link expira em %1$s</string>
<string name="detail_menu_notifications_enabled">Notificações ligadas</string>
<string name="detail_menu_notifications_disabled_forever">Notificações silenciadas</string>
<string name="detail_menu_enable_instant">Ligar a entrega instantânea</string>
<string name="detail_menu_disable_instant">Desligar a entrega instantânea</string>
<string name="detail_menu_test">Enviar uma notificação de teste</string>
<string name="detail_menu_copy_url">Copiar o endereço do tópico</string>
<string name="detail_menu_clear">Limpar todas as notificações</string>
<string name="detail_menu_settings">Configurações das inscrições</string>
<string name="detail_menu_unsubscribe">Desinscrever</string>
<string name="detail_action_mode_menu_delete">Apagar</string>
<string name="detail_action_mode_delete_dialog_message">Deseja apagar a(s) notificação(ões) selecionada(s) permanentemente\?</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">Apagar permanentemente</string>
<string name="detail_action_mode_delete_dialog_cancel">Cancelar</string>
<string name="detail_settings_title">Configurações das inscrições</string>
<string name="share_title">Compartilhar</string>
<string name="share_menu_send">Compartilhar</string>
<string name="share_content_title">Prévia da mensagem</string>
<string name="share_content_image_text">Uma imagem foi compartilhada com você</string>
<string name="share_topic_title">Compartilhar para</string>
<string name="share_suggested_topics">Tópicos sugeridos</string>
<string name="share_successful">Mensagem publicada</string>
<string name="notification_dialog_cancel">Cancelar</string>
<string name="notification_dialog_save">Salvar</string>
<string name="notification_dialog_enabled_toast_message">Notificações retomadas</string>
<string name="notification_dialog_muted_until_toast_message">Notificações silenciadas até %1$s</string>
<string name="notification_dialog_show_all">Mostrar todas as notificações</string>
<string name="notification_dialog_2h">2 horas</string>
<string name="notification_dialog_8h">8 horas</string>
<string name="notification_dialog_tomorrow">Até amanhã</string>
<string name="notification_dialog_forever">Até serem retomadas</string>
<string name="notification_popup_action_browse">Navegar</string>
<string name="notification_popup_action_download">Baixar</string>
<string name="notification_popup_action_cancel">Cancelar</string>
<string name="notification_popup_file">%1$s
\nArquivo: %2$s</string>
<string name="notification_popup_file_downloading">Baixando %1$s, %2$d%%
\n%3$s</string>
<string name="notification_popup_file_download_successful">%1$s
\nArquivo: %2$s, baixado</string>
<string name="notification_popup_file_download_failed">%1$s
\nArquivo: %2$s, download falhou</string>
<string name="notification_popup_user_action_failed">%1$s falhou: %2$s</string>
<string name="settings_title">Configurações</string>
<string name="settings_notifications_header">Notificações</string>
<string name="settings_notifications_muted_until_title">Silenciar as notificações</string>
<string name="settings_notifications_muted_until_show_all">Mostrando todas as notificações</string>
<string name="settings_notifications_muted_until_forever">Notificações silenciadas até serem retomadas</string>
<string name="settings_notifications_muted_until_x">Notificações silenciadas até %1$s</string>
<string name="settings_notifications_min_priority_title">Prioridade mínima</string>
<string name="settings_notifications_min_priority_summary_any">Mostrando todas as notificações</string>
<string name="settings_notifications_min_priority_summary_x_or_higher">Mostrar as notificações se a prioridade é %1$d (%2$s) ou superior</string>
<string name="settings_notifications_min_priority_summary_max">Mostrar as notificações se a prioridade for 5 (máxima)P</string>
<string name="settings_notifications_min_priority_min">Qualquer prioridade</string>
<string name="settings_notifications_min_priority_low">Prioridade baixa e superior</string>
<string name="settings_notifications_min_priority_default">Prioridade pradão ou superior</string>
<string name="settings_notifications_min_priority_high">Altra prioridade ou superior</string>
<string name="settings_notifications_min_priority_max">Apenas a prioridade máxima</string>
<string name="settings_notifications_priority_min">mínima</string>
<string name="settings_notifications_priority_low">baixa</string>
<string name="settings_notifications_priority_default">padrão</string>
<string name="settings_notifications_priority_high">alta</string>
<string name="settings_notifications_priority_max">máxima</string>
<string name="settings_notifications_channel_prefs_title">Configuraçoes do canal</string>
<string name="settings_notifications_channel_prefs_summary">Sobrescrever modo Não Perturbe (NP), sons, etc.</string>
<string name="settings_notifications_auto_download_title">Baixar os anexos</string>
<string name="settings_notifications_auto_download_summary_always">Baixar todos os anexos automaticamente</string>
<string name="settings_notifications_auto_download_summary_never">Nunca baixar todos os anexos automaticamente</string>
<string name="settings_notifications_auto_download_summary_smaller_than_x">Baixar os anexos automaticamente até %1$s</string>
<string name="settings_notifications_auto_download_never">Nunca baixar nada automaticamente</string>
<string name="settings_notifications_auto_download_always">Baixar tudo automaticamente</string>
<string name="settings_notifications_auto_download_100k">Se abaixo de 100kB</string>
<string name="settings_notifications_auto_download_500k">Se abaixo de 500 kB</string>
<string name="settings_notifications_auto_download_1m">Se abaixo de 1 MB</string>
<string name="settings_notifications_auto_delete_title">Apagar as notificações</string>
<string name="settings_notifications_auto_delete_summary_never">Nunca apagar as notificações automaticamente</string>
<string name="settings_notifications_auto_delete_summary_one_day">Apagar as notificações automaticamente depois de um dia</string>
<string name="settings_notifications_auto_delete_summary_three_days">Apagar as notificações automaticamente depois de 3 dias</string>
<string name="settings_notifications_auto_delete_summary_one_week">Apagar as notificações automaticamente depois de uma semana</string>
<string name="settings_notifications_auto_delete_summary_one_month">Apagar as notificações automaticamente depois de um mês</string>
<string name="settings_notifications_auto_delete_summary_three_months">Apagar as notificações automaticamente depois de 3 meses</string>
<string name="settings_notifications_auto_delete_never">Nunca</string>
<string name="settings_notifications_auto_delete_one_day">Depois de um dia</string>
<string name="settings_notifications_auto_delete_three_days">Depois de 3 dias</string>
<string name="settings_notifications_auto_delete_one_week">Depois de uma semana</string>
<string name="settings_notifications_auto_delete_one_month">Depois de um mês</string>
<string name="settings_notifications_auto_delete_three_months">Depois de 3 meses</string>
<string name="settings_general_header">Geral</string>
<string name="settings_general_default_base_url_title">Servidor padrão</string>
<string name="settings_general_default_base_url_message">Insira a URL raíz do servidor para utilizar seu próprio servidor como padrão ao se inscrever em novos tópicos e/ou compartilhar para tópicos.</string>
<string name="settings_general_default_base_url_default_summary">%1$s (padrão)</string>
<string name="settings_general_users_title">Gerenciar usuários</string>
<string name="settings_general_users_summary">Adicionar/remover usuários em tópicos protegidos</string>
<string name="settings_general_users_prefs_title">Usuários</string>
<string name="settings_general_users_prefs_user_not_used">Não utilizado por nenhum tópico</string>
<string name="settings_general_users_prefs_user_used_by_one">Utilizado pelo tópico %1$s</string>
<string name="settings_general_users_prefs_user_used_by_many">Utilizado pelos tópicos %1$s</string>
<string name="settings_general_users_prefs_user_add">Adicionar usuários</string>
<string name="settings_general_users_prefs_user_add_title">Adicionar novo usuário</string>
<string name="settings_general_users_prefs_user_add_summary">Crie um novo usuário para um novo servidor</string>
<string name="settings_general_dark_mode_summary_dark">Modo escuro ligado. Você por acaso é um vampiro\?</string>
<string name="settings_general_dark_mode_entry_system">Usar o padrão do sistema</string>
<string name="settings_general_dark_mode_entry_light">Modo claro</string>
<string name="settings_general_dark_mode_entry_dark">Modo escuro</string>
<string name="settings_backup_restore_header">Fazer backup e Restaurar</string>
<string name="settings_backup_restore_backup_title">Fazer backup para um arquivo</string>
<string name="settings_backup_restore_backup_summary">Exportar as configurações, notificações e usuários</string>
<string name="settings_backup_restore_backup_entry_everything">Tudo</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">Tudo, exceto os usuários</string>
<string name="settings_backup_restore_backup_entry_settings_only">Apenas as configurações</string>
<string name="settings_backup_restore_backup_successful">Backup criado</string>
<string name="settings_backup_restore_backup_failed">Backup falhou: %1$s</string>
<string name="detail_item_saved_successfully">Salvo como \"%1$s\" na pasta \"Downloads\"</string>
<string name="detail_item_menu_copy_contents_copied">Notificação copiada para a área de transferência</string>
<string name="detail_item_cannot_download">Não foi possível abrir ou baixar o anexo. O link expirou e nenhum arquivo local foi encontrado.</string>
<string name="detail_item_download_info_not_downloaded_expired">não foi baixado, link expirou</string>
<string name="detail_menu_notifications_disabled_until">Notificações silenciadas até %1$s</string>
<string name="share_content_image_error">Não foi possível ler a imagem: %1$s</string>
<string name="settings_notifications_auto_download_10m">Se abaixo de 10 MB</string>
<string name="add_dialog_foreground_description">A entrega instantânea está sempre ligada para os hosts que não sejam %1$s.</string>
<string name="add_dialog_use_another_server_description">Insira as URLs de serviço abaixo para se inscrever em tópicos de outros servidores.</string>
<string name="add_dialog_button_cancel">Cancelar</string>
<string name="add_dialog_button_subscribe">Se inscrever</string>
<string name="add_dialog_error_connection_failed">A conexão falhou: %1$s</string>
<string name="add_dialog_login_description">Esse tópico neccessita que você faça login. Por favor, insira um nome de usuário e senha.</string>
<string name="add_dialog_login_new_user">Novo usuário</string>
<string name="add_dialog_base_urls_dropdown_choose">Escolha a URL do serviço</string>
<string name="detail_how_to_example">Exemplo (utilizando curl): <br/><tt>$ curl -d \"Olá\"%1$s</tt></string>
<string name="detail_delete_dialog_message">Deseja se desinscrever deste tópico e deletar todas as notificações recebidas\?</string>
<string name="detail_test_message">Essa é uma notificação de teste do aplicativo Android do ntfy. Ela tem prioridade nível %1$d. Se você enviar outra notificação, ela pode ser diferente.</string>
<string name="detail_test_message_error_too_large">Não foi possível enviar a mensagem: O anexo é grande demais.</string>
<string name="detail_instant_delivery_enabled">Entrega instantânea ativada</string>
<string name="detail_item_menu_open">Abrir arquivo</string>
<string name="detail_item_menu_save_file">Salvar o arquivo</string>
<string name="detail_item_menu_copy_url">Copiar a URL</string>
<string name="detail_item_download_info_not_downloaded">não foi baixado</string>
<string name="add_dialog_instant_delivery">Entrega instantânea em modo soneca</string>
<string name="add_dialog_instant_delivery_description">Garante que as mensagens sejam entregues imediatamente, mesmo que o dispositivo esteja inativo.</string>
<string name="add_dialog_button_back">Voltar</string>
<string name="add_dialog_login_username_hint">Nome de usuário</string>
<string name="add_dialog_login_password_hint">Senha</string>
<string name="add_dialog_login_error_not_authorized">O login falhou. O usuário %1$s não foi autorizado.</string>
<string name="add_dialog_base_urls_dropdown_clear">Limpar a URL do serviço</string>
<string name="detail_no_notifications_text">Você ainda não recebeu nenhuma notificação neste tópico.</string>
<string name="detail_how_to_intro">Para enviar notificações para esse tópico, simplesmente faça um PUT ou POST para a URL do tópico.</string>
<string name="detail_how_to_link">Instruções detalhadas disponíveis em ntfy.sh, e nas documentações.</string>
<string name="detail_clear_dialog_cancel">Cancelar</string>
<string name="detail_test_message_error_unauthorized_user">Não foi possível enviar a mensagem: O usuário \"%1$s\" não está autorizado.</string>
<string name="detail_instant_delivery_disabled">Entrega instantânea desativada</string>
<string name="detail_item_menu_delete">Deletar arquivo</string>
<string name="detail_item_menu_copy_url_copied">URL copiada para a área de transferência</string>
<string name="detail_item_menu_copy_contents">Copiar notificação</string>
<string name="notification_dialog_30min">30 minutos</string>
<string name="notification_popup_action_open">Abrir</string>
<string name="detail_action_mode_menu_copy">Copiar</string>
<string name="share_content_text_hint">Adicone conteúdo a ser compartilhado aqui</string>
<string name="share_content_file_error">Não foi possível ler as informações do arquivo: %1$s</string>
<string name="notification_dialog_muted_forever_toast_message">Notificações silenciadas</string>
<string name="settings_notifications_auto_download_5m">Se abaixo de 5 MB</string>
<string name="share_content_file_text">Um arquivo foi compartilhado com você</string>
<string name="notification_dialog_1h">1 hora</string>
<string name="settings_notifications_auto_download_50m">Se abaixo de 50 MB</string>
<string name="notification_dialog_title">Silenciar notificações</string>
<string name="settings_general_dark_mode_summary_light">Modo claro</string>
<string name="settings_general_dark_mode_title">Modo escuro</string>
<string name="settings_general_dark_mode_summary_system">Usar o padrão do sistema</string>
</resources>

View file

@ -1,2 +1,102 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources></resources> <resources>
<string name="channel_subscriber_service_name">Prenumerationstjänst</string>
<string name="channel_subscriber_notification_title">Lyssna på inkommande meddelanden</string>
<string name="channel_subscriber_notification_instant_text">Prenumererar på ämnen med omedelbar leverans</string>
<string name="channel_subscriber_notification_instant_text_one">Prenumererar på ett ämne för omedelbar leverans</string>
<string name="channel_subscriber_notification_instant_text_two">Prenumererar på två ämnen med omedelbar leverans</string>
<string name="channel_subscriber_notification_instant_text_three">Prenumererar på tre ämnen med omedelbar leverans</string>
<string name="channel_subscriber_notification_instant_text_four">Prenumererar på fyra ämnen med omedelbar leverans</string>
<string name="channel_subscriber_notification_instant_text_five">Prenumererar på fem ämnen med omedelbar leverans</string>
<string name="channel_subscriber_notification_instant_text_six">Prenumererar på sex ämnen med omedelbar leverans</string>
<string name="channel_subscriber_notification_noinstant_text">Prenumererar på ämnen</string>
<string name="channel_subscriber_notification_noinstant_text_one">Prenumererar på ett ämne</string>
<string name="channel_subscriber_notification_noinstant_text_two">Prenumererad på två ämnen</string>
<string name="channel_subscriber_notification_noinstant_text_three">Prenumererar på tre ämnen</string>
<string name="channel_subscriber_notification_noinstant_text_four">Prenumererar på fyra ämnen</string>
<string name="channel_subscriber_notification_noinstant_text_five">Prenumererar på fem ämnen</string>
<string name="channel_subscriber_notification_noinstant_text_six">Prenumererar på sex ämnen</string>
<string name="channel_subscriber_notification_noinstant_text_more">Prenumererar på %1$d ämnen</string>
<string name="refresh_message_result">%1$d meddelande(n) har tagits emot</string>
<string name="refresh_message_no_results">Allt är uppdaterat</string>
<string name="refresh_message_error">Kunde inte uppdatera %1$d prenumerationer
\n
\n%2$s</string>
<string name="refresh_message_error_one">Kunde inte uppdatera prenumerationen: %1$s</string>
<string name="main_action_bar_title">Prenumererade kategorier</string>
<string name="main_menu_notifications_enabled">Aviseringar på</string>
<string name="main_menu_notifications_disabled_forever">Notiser tystade</string>
<string name="main_menu_notifications_disabled_until">Aviseringar tystade till %1$s</string>
<string name="main_menu_settings_title">Inställningar</string>
<string name="main_menu_docs_title">Läs dokumentationen</string>
<string name="main_menu_rate_title">Betygsätt appen ⭐</string>
<string name="main_action_mode_menu_unsubscribe">Avprenumerera</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Ta bort permanent</string>
<string name="main_action_mode_delete_dialog_cancel">Avbryt</string>
<string name="main_item_status_text_one">%1$d meddelande</string>
<string name="main_item_status_text_not_one">%1$d meddelanden</string>
<string name="main_item_status_reconnecting">återansluter…</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string>
<string name="main_item_date_yesterday">igår</string>
<string name="main_add_button_description">Lägg till prenumeration</string>
<string name="main_no_subscriptions_text">Det verkar som att du inte har några prenumerationer än.</string>
<string name="main_how_to_intro">Klicka på + för att skapa eller prenumerera på ett ämne. Därefter får du meddelanden på din enhet när du skickar meddelanden via PUT eller POST.</string>
<string name="main_how_to_link">Detaljerade instruktioner finns på ntfy.sh och i dokumentationen.</string>
<string name="main_unified_push_toast">Denna prenumeration hanteras av %1$s via UnifiedPush</string>
<string name="main_banner_battery_text">Batterioptimering bör vara avstängd för appen för att undvika problem med leverans av meddelanden.</string>
<string name="main_banner_battery_button_remind_later">Fråga senare</string>
<string name="main_banner_battery_button_dismiss">Avvisa</string>
<string name="main_banner_battery_button_fix_now">Fixa nu</string>
<string name="main_banner_websocket_button_remind_later">Fråga senare</string>
<string name="main_banner_websocket_button_dismiss">Avvisa</string>
<string name="main_banner_websocket_button_enable_now">Aktivera nu</string>
<string name="add_dialog_title">Prenumerera på ämnet</string>
<string name="add_dialog_description_below">Ämnena kanske inte är lösenordsskyddade, så välj ett namn som är svårt att gissa. När du har prenumererat kan du PUT/POST-meddelanden.</string>
<string name="add_dialog_use_another_server">Använd en annan server</string>
<string name="add_dialog_use_another_server_description">Ange tjänstens webbadresser nedan för att prenumerera på ämnen från andra servrar.</string>
<string name="add_dialog_instant_delivery_description">Säkerställer att meddelanden levereras omedelbart, även om enheten är inaktiv.</string>
<string name="add_dialog_foreground_description">Omedelbar leverans är alltid på för andra värdar än %1$s.</string>
<string name="add_dialog_button_cancel">Avbryt</string>
<string name="add_dialog_button_subscribe">Prenumerera</string>
<string name="add_dialog_button_back">Tillbaka</string>
<string name="add_dialog_button_login">Logga in</string>
<string name="add_dialog_error_connection_failed">Anslutningen misslyckades: %1$s</string>
<string name="add_dialog_login_title">Inloggning krävs</string>
<string name="add_dialog_login_description">Du måste logga in för att kunna ta del av det här ämnet. Ange ett användarnamn och lösenord.</string>
<string name="add_dialog_instant_delivery">Omedelbar leverans i dvala</string>
<string name="add_dialog_login_error_not_authorized">Inloggningen misslyckades. Användaren %1$s är inte auktoriserad.</string>
<string name="add_dialog_login_new_user">Ny användare</string>
<string name="add_dialog_base_urls_dropdown_choose">Välj tjänstens URL</string>
<string name="add_dialog_base_urls_dropdown_clear">Rensa tjänstens URL</string>
<string name="detail_no_notifications_text">Du har inte fått några meddelanden för detta ämne ännu.</string>
<string name="detail_how_to_intro">För att skicka meddelanden till det här ämnet, PUT eller POST till ämnesadressen.</string>
<string name="detail_how_to_example">Exempel (med curl):<br/><tt>$ curl -d \"Hej\" %1$s</tt></string>
<string name="detail_how_to_link">Detaljerade instruktioner finns på ntfy.sh och i dokumentationen.</string>
<string name="detail_clear_dialog_message">Ta bort alla meddelanden i det här ämnet\?</string>
<string name="detail_clear_dialog_permanently_delete">Ta bort permanent</string>
<string name="detail_clear_dialog_cancel">Avbryt</string>
<string name="detail_delete_dialog_message">Vill du avsluta prenumerationen på det här ämnet och ta bort alla mottagna aviseringar\?</string>
<string name="detail_delete_dialog_permanently_delete">Ta bort permanent</string>
<string name="detail_delete_dialog_cancel">Avbryt</string>
<string name="detail_test_title">Test: Du kan ange en titel om du vill.</string>
<string name="detail_test_message">Detta är ett testmeddelande från ntfy Android-appen. Den har prioritetsnivån %1$d. Om du skickar en annan kan den se annorlunda ut.</string>
<string name="detail_test_message_error">Kan inte skicka meddelande: %1$s</string>
<string name="detail_test_message_error_unauthorized_user">Kan inte skicka meddelande: Användaren \"%1$s\" är inte auktoriserad.</string>
<string name="detail_test_message_error_too_large">Kan inte skicka meddelande: Bilagan är för stor.</string>
<string name="detail_copied_to_clipboard_message">Kopierat till urklipp</string>
<string name="detail_instant_delivery_enabled">Omedelbar leverans på</string>
<string name="detail_instant_delivery_disabled">Omedelbar leverans av</string>
<string name="detail_deep_link_subscribed_toast_message">Prenumererar på ämne %1$s</string>
<string name="channel_notifications_min_name">Meddelanden (lägsta prioritet)</string>
<string name="channel_notifications_low_name">Meddelanden (låg prioritet)</string>
<string name="channel_notifications_high_name">Meddelanden (hög prioritet)</string>
<string name="channel_notifications_default_name">Meddelanden (standardprioritet)</string>
<string name="channel_notifications_max_name">Meddelanden (högsta prioritet)</string>
<string name="channel_subscriber_notification_instant_text_more">Prenumererar på %1$d ämnen med omedelbar leverans</string>
<string name="main_menu_report_bug_title">Rapportera ett fel</string>
<string name="main_action_mode_delete_dialog_message">Avregistrera mig från de valda ämnena och radera alla meddelanden permanent\?</string>
<string name="main_banner_websocket_text">Att byta till WebSockets är det rekommenderade sättet att ansluta till servern och kan förbättra batteritiden, men kan kräva <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">ytterligare konfigurationer i din proxy</a>. Detta kan ställas in i Inställningarna.</string>
<string name="add_dialog_login_username_hint">Användarnamn</string>
<string name="add_dialog_login_password_hint">Lösenord</string>
<string name="detail_test_message_error_unauthorized_anon">Kan inte skicka meddelande: Anonym publicering är inte tillåten.</string>
</resources>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="channel_notifications_low_name">அறிவிப்புகள் (குறைந்த முன்னுரிமை)</string>
<string name="channel_notifications_high_name">அறிவிப்புகள் (உயர் முன்னுரிமை)</string>
<string name="channel_notifications_max_name">அறிவிப்புகள் (அதிகபட்ச முன்னுரிமை)</string>
<string name="detail_action_mode_menu_delete">நீக்கு</string>
<string name="detail_action_mode_delete_dialog_cancel">ரத்துசெய்</string>
<string name="share_title">பகிர்</string>
<string name="share_menu_send">பகிர்</string>
<string name="detail_item_download_info_deleted">நீக்கப்பட்டது</string>
<string name="channel_subscriber_service_name">சந்தா சேவை</string>
<string name="channel_notifications_min_name">அறிவிப்புகள் (குறைந்தபட்ச முன்னுரிமை)</string>
<string name="detail_action_mode_menu_copy">பிரதி</string>
<string name="channel_notifications_default_name">அறிவிப்புகள் (இயல்புநிலை முன்னுரிமை)</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">நிரந்தரமாக நீக்கு</string>
<string name="notification_dialog_save">சேமிக்க</string>
<string name="notification_dialog_cancel">ரத்து செய்</string>
<string name="detail_clear_dialog_cancel">ரத்து செய்</string>
<string name="detail_item_menu_cancel">பதிவிறக்கத்தை ரத்து செய்</string>
</resources>

View file

@ -1,2 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources></resources> <resources>
<string name="channel_notifications_low_name">Thông báo (ưu tiên thấp)</string>
</resources>

View file

@ -64,4 +64,18 @@
<string name="main_item_status_reconnecting">重新連線中 …</string> <string name="main_item_status_reconnecting">重新連線中 …</string>
<string name="main_menu_notifications_disabled_until">通知靜音到%1$s</string> <string name="main_menu_notifications_disabled_until">通知靜音到%1$s</string>
<string name="add_dialog_topic_name_hint">主題名稱(例如:phils_alerts)</string> <string name="add_dialog_topic_name_hint">主題名稱(例如:phils_alerts)</string>
<string name="add_dialog_button_cancel">取消</string>
<string name="add_dialog_button_subscribe">訂閱</string>
<string name="add_dialog_button_back">退回</string>
<string name="add_dialog_error_connection_failed">連接失敗: %1$s</string>
<string name="add_dialog_login_title">需要登入</string>
<string name="add_dialog_login_username_hint">使用者名字</string>
<string name="add_dialog_login_password_hint">密碼</string>
<string name="add_dialog_login_error_not_authorized">登入失敗. 使用者%1$s 未獲得授權.</string>
<string name="add_dialog_login_new_user">新使用者</string>
<string name="add_dialog_base_urls_dropdown_choose">選擇服務網址</string>
<string name="add_dialog_base_urls_dropdown_clear">清除服務網址</string>
<string name="detail_copied_to_clipboard_message">複製到剪貼簿</string>
<string name="add_dialog_button_login">登入</string>
<string name="add_dialog_login_description">這篇主題要求登入. 請輸入帳號密碼.</string>
</resources> </resources>

View file

@ -1,13 +1,13 @@
buildscript { buildscript {
ext.kotlin_version = '1.6.10' ext.kotlin_version = '1.6.21'
repositories { repositories {
google() google()
jcenter() mavenCentral()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:4.1.3' classpath 'com.android.tools.build:gradle:7.2.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.10' // This is removed in the "fdroid" flavor classpath 'com.google.gms:google-services:4.3.14' // This is removed in the "fdroid" flavor
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files
@ -17,7 +17,7 @@ buildscript {
allprojects { allprojects {
repositories { repositories {
google() google()
jcenter() mavenCentral()
maven { url "https://jitpack.io" } // For StfalconImageViewer maven { url "https://jitpack.io" } // For StfalconImageViewer
} }
} }

View file

@ -0,0 +1,9 @@
Bug fixes + maintenance:
* Upgrade Android dependencies and build toolchain to SDK 33 (no ticket)
* Android 13: Ask for permission to post notifications (#508)
* Remove timestamp when copying message text (#471, thanks to @wunter8)
* Fix auto-delete if some icons do not exist anymore (#506)
Additional translations:
* Korean (thanks to @YJSofta0f97461d82447ac)
* Portuguese (thanks to @victormagalhaess)

View file

@ -0,0 +1,17 @@
Inviate notifiche al vostro telefono da qualsiasi script Bash o PowerShell, o dalla vostra applicazione utilizzando richieste PUT/POST, ad esempio tramite curl su Linux o Invoke-WebRequest.
ntfy è un client Android per https://ntfy.sh, un servizio pub-sub gratuito e open source basato su HTTP. In questa applicazione è possibile sottoscrivere argomenti e pubblicare messaggi tramite una semplice API HTTP.
Utilizzi:
* Notificare quando un processo in corso è terminato.
* Ping al telefono quando un backup è fallito
* Avvisare quando qualcuno accede al server.
Esempio:
$ curl -d "Il tuo backup è terminato" ntfy.sh/mytopic
Trovate altri esempi e istruzioni d'uso qui:
* Sito web: https://ntfy.sh
* GitHub (server): https://github.com/binwiederhier/ntfy
* GitHub (applicazione Android): https://github.com/binwiederhier/ntfy-android

View file

@ -0,0 +1 @@
Inviare notifiche al telefono da qualunqu script usando le richieste PUT/POST

View file

@ -0,0 +1 @@
ntfy -PUT/POST al tuo telefono

View file

@ -0,0 +1,17 @@
핸드폰에 PUT/POST 요청을 보내서 알림을 보내세요. Bash 스크립트나 파워쉘 스크립트(예를 들면 curl이나 Invoke-WebRequest)를 이용하실수 있으며 당신의 앱에서 직접 알림을 보내실수도 있습니다.
ntfy는 https://ntfy.sh의 안드로이드 클라이언트입니다. https://ntfy.sh는 무료이며 오픈 소스인 HTTP 기반 pub-sub 서비스입니다. 이 앱을 통해 주제를 구독하실수 있으며 간단한 HTTP API를 이용해 메세지를 보내실수도 있습니다.
사용 예시:
* 긴 작업이 완료되었을때 알림 보내기
* 백업이 완료되었을때 핸드폰에 알리기
* 누군가 당신의 서버에 침입했을때 경고하기
사용법:
$ curl -d "백업이 완료되었습니다" ntfy.sh/mytopic
더 많은 예제와 사용 방법을 여기에서 확인하세요:
* 웹 사이트: https://ntfy.sh
* Github (서버): https://github.com/binwiederhier/ntfy
* Github (안드로이드 앱): https://github.com/binwiederhier/ntfy-android

View file

@ -0,0 +1 @@
다양한 스크립트를 이용해 핸드폰에 PUT/POST 요청을 보내서 알림을 보내세요

View file

@ -0,0 +1 @@
ntfy - 당신의 핸드폰에 PUT/POST 하세요

View file

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip