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: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 31
compileSdkVersion 33
defaultConfig {
applicationId "io.heckel.ntfy"
minSdkVersion 21
targetSdkVersion 31
targetSdkVersion 33
versionCode 28
versionName "1.14.0"
versionCode 29
versionName "1.15.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@ -56,6 +58,9 @@ android {
kotlinOptions {
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 {
// AndroidX, The Basics
implementation "androidx.appcompat:appcompat:1.4.2"
implementation "androidx.core:core-ktx:1.8.0"
implementation "androidx.appcompat:appcompat:1.5.1"
implementation "androidx.core:core-ktx:1.9.0"
implementation "androidx.constraintlayout:constraintlayout:2.1.4"
implementation "androidx.activity:activity-ktx:1.4.0"
implementation "androidx.fragment:fragment-ktx:1.4.1"
implementation "androidx.activity:activity-ktx:1.6.1"
implementation "androidx.fragment:fragment-ktx:1.5.4"
implementation "androidx.work:work-runtime-ktx:2.7.1"
implementation 'androidx.preference:preference-ktx:1.2.0'
// JSON serialization
implementation 'com.google.code.gson:gson:2.9.0'
implementation 'com.google.code.gson:gson:2.10'
// Room (SQLite)
def room_version = "2.4.2"
def room_version = "2.4.3"
implementation "androidx.room:room-ktx:$room_version"
kapt "androidx.room:room-compiler:$room_version"
// OkHttp (HTTP library)
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
// Firebase, sigh ... (only Google Play)
playImplementation 'com.google.firebase:firebase-messaging:23.0.5'
playImplementation 'com.google.firebase:firebase-messaging:23.1.0'
// RecyclerView
implementation "androidx.recyclerview:recyclerview:1.3.0-alpha02"
implementation "androidx.recyclerview:recyclerview:1.3.0-rc01"
// Swipe down to refresh
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
@ -99,7 +104,7 @@ dependencies {
implementation "com.google.android.material:material:1.6.1"
// 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'
// 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.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.POST_NOTIFICATIONS"/> <!-- As of Android 13, we need to ask for permission to post notifications -->
<application
android:name=".app.Application"

View file

@ -24,7 +24,6 @@ object DownloadManager {
DownloadType.ATTACHMENT -> enqueueAttachment(context, notificationId, userAction)
DownloadType.ICON -> enqueueIcon(context, notificationId)
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 {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel?> create(modelClass: Class<T>) =
override fun <T : ViewModel> create(modelClass: Class<T>): T =
with(modelClass){
when {
isAssignableFrom(DetailViewModel::class.java) -> DetailViewModel(repository) as T

View file

@ -1,10 +1,12 @@
package io.heckel.ntfy.ui
import android.Manifest
import android.animation.Animator
import android.animation.AnimatorListenerAdapter
import android.app.AlertDialog
import android.content.ActivityNotFoundException
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
@ -20,6 +22,7 @@ import android.widget.Toast
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.RecyclerView
@ -208,6 +211,18 @@ class MainActivity : AppCompatActivity(), ActionMode.Callback, AddFragment.Subsc
schedulePeriodicPollWorker()
schedulePeriodicServiceRestartWorker()
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() {

View file

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

View file

@ -85,7 +85,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
override fun onSaveInstanceState(outState: Bundle) {
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)
}
@ -165,9 +165,8 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
return repository.getGlobalMutedUntil().toString()
}
}
mutedUntil?.summaryProvider = Preference.SummaryProvider<ListPreference> { _ ->
val mutedUntilValue = repository.getGlobalMutedUntil()
when (mutedUntilValue) {
mutedUntil?.summaryProvider = Preference.SummaryProvider<ListPreference> {
when (val mutedUntilValue = repository.getGlobalMutedUntil()) {
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)
else -> {
@ -191,8 +190,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
}
}
minPriority?.summaryProvider = Preference.SummaryProvider<ListPreference> { pref ->
val minPriorityValue = pref.value.toIntOrNull() ?: 1 // 1/low means all priorities
when (minPriorityValue) {
when (val minPriorityValue = pref.value.toIntOrNull() ?: 1) { // 1/low means all priorities
1 -> getString(R.string.settings_notifications_min_priority_summary_any)
5 -> getString(R.string.settings_notifications_min_priority_summary_max)
else -> {
@ -230,8 +228,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
}
}
autoDownload?.summaryProvider = Preference.SummaryProvider<ListPreference> { pref ->
val maxSize = pref.value.toLongOrNull() ?: repository.getAutoDownloadMaxSize()
when (maxSize) {
when (val maxSize = pref.value.toLongOrNull() ?: repository.getAutoDownloadMaxSize()) {
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)
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 ->
val seconds = pref.value.toLongOrNull() ?: repository.getAutoDeleteSeconds()
when (seconds) {
when (pref.value.toLongOrNull() ?: repository.getAutoDeleteSeconds()) {
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_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)
}
}
recordLogsEnabled?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, v ->
recordLogsEnabled?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, _ ->
lifecycleScope.launch(Dispatchers.IO) {
repository.getSubscriptions().forEach { s ->
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?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, v ->
backupSelection = v.toString()
val timestamp = SimpleDateFormat("yyMMdd-HHmm").format(Date());
val timestamp = SimpleDateFormat("yyMMdd-HHmm").format(Date())
val suggestedFilename = when (backupSelection) {
BACKUP_EVERYTHING_NO_USERS -> "ntfy-backup-no-users-$timestamp.json"
BACKUP_SETTINGS_ONLY -> "ntfy-settings-$timestamp.json"
@ -587,10 +583,9 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
throw Exception("Unexpected response ${response.code}")
}
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")
val resp = gson.fromJson(body.toString(), NopasteResponse::class.java)
val context = context ?: return@launch
requireActivity().runOnUiThread {
val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("logs URL", resp.url)
@ -606,7 +601,6 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
}
} catch (e: Exception) {
Log.w(TAG, "Error uploading logs", e)
val context = context ?: return@launch
requireActivity().runOnUiThread {
Toast
.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()
}
sendItem.isEnabled = enabled
sendItem.icon.alpha = if (enabled) 255 else 130
sendItem.icon?.alpha = if (enabled) 255 else 130
}
private fun getBaseUrl(): String {

View file

@ -472,9 +472,8 @@ fun ensureSafeNewFile(dir: File, name: String): File {
fun copyToClipboard(context: Context, notification: Notification) {
val message = decodeMessage(notification)
val text = message + "\n\n" + formatDateShort(notification.timestamp)
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)
Toast
.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.Repository
import io.heckel.ntfy.msg.DownloadIconWorker
import io.heckel.ntfy.ui.DetailAdapter
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 kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import java.io.File
import java.util.*
/**
* 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 {
return withContext(Dispatchers.IO) {
deleteExpiredIcons() // Before notifications, so we will also catch manually deleted notifications
deleteExpiredAttachments() // Before notifications, so we will also catch manually deleted notifications
// Run "expired icons" and "expired attachments" before notifications,
// so we will also catch manually deleted notifications
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()
}
}
@ -69,7 +81,9 @@ class DeleteWorker(ctx: Context, params: WorkerParameters) : CoroutineWorker(ctx
Log.d(TAG, "Deleting icons for deleted notifications")
val repository = Repository.getInstance(applicationContext)
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 allIconFilenames = iconDir.listFiles()?.map{ file -> file.name }.orEmpty()
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_deleted_toast">Protokoly odstraněny</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_about_header">O programu</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_scrubbed">Kopírovat do schránky (cenzurované)</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="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>
@ -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="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_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_cancel">Abbrechen</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_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>

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>
<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_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="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>
@ -285,7 +285,7 @@
<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_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="user_dialog_title_add">Aggiungi utente</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_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_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"?>
<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="main_menu_notifications_enabled">Notificações ativadas</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_three">Inscrito em três 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 tópicos</string>
<string name="main_menu_report_bug_title">Relatar um problema</string>
<string name="main_item_status_reconnecting">Reconectando …</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_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_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_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_error">Não foi possível atualizar %1$d inscrições
\n
@ -32,15 +32,15 @@
<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_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_cancel">Cancelar</string>
<string name="main_item_date_yesterday">ontem</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_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_item_status_unified_push">%1$s (UnifiedPush)</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_banner_websocket_button_remind_later">Perguntar depois</string>
<string name="main_banner_websocket_button_dismiss">Dispensar</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_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_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_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_version_title">Versão</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="user_dialog_button_save">Salvar</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="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_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_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_dismiss">Dispensar</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_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_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_username_hint">Nome de usuário</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_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_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"?>
<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"?>
<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_menu_notifications_disabled_until">通知靜音到%1$s</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>

View file

@ -1,13 +1,13 @@
buildscript {
ext.kotlin_version = '1.6.10'
ext.kotlin_version = '1.6.21'
repositories {
google()
jcenter()
mavenCentral()
}
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 '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
// in the individual module build.gradle files
@ -17,7 +17,7 @@ buildscript {
allprojects {
repositories {
google()
jcenter()
mavenCentral()
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
zipStoreBase=GRADLE_USER_HOME
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