Compare commits

..

316 commits

Author SHA1 Message Date
Jonathan Klee
3fb7e6427f Merge branch '2585-u-change-package-name' into 'main'
Change Ntfy package name

See merge request e/os/ntfy-android!14
2024-10-24 11:26:08 +00:00
Jonathan Klee
afeebcc4d1 Change package name
So that in case the user had ntfy already installed, we don't
override it. Indeed, the Ntfy icon (which is actually a BlissLauncher3 cache)
would appear after the OTA and the user would not be able to remove it
without cleaning BlissLauncher3 cache.
2024-10-24 10:14:11 +02:00
Jonathan Klee
9add68ed1a Change preference wording 2024-10-10 14:42:34 +02:00
Jonathan Klee
18fb197507 Merge branch '0000-u-keep-same-process' into 'main'
Don't execute MainSettingsActivity in a different process

See merge request e/os/ntfy-android!13
2024-09-26 08:55:37 +00:00
Jonathan Klee
7c00376ae1 Don't execute MainSettingsActivity in a different process
so that share preferences work properly
2024-09-26 08:20:17 +02:00
Jonathan Klee
db299383c8 Use fdroid target 2024-09-25 09:04:23 +02:00
Jonathan Klee
e480230f27 Add gitlab yaml 2024-09-25 08:48:44 +02:00
Jonathan Klee
92611d1e81 Merge branch 'simpleran' into 'main'
Integrate ntfy in /e/OS

See merge request e/os/ntfy-android!12
2024-09-20 16:05:59 +00:00
Jonathan Klee
3b1581a2ba Set status bar theme programatically 2024-09-20 14:57:10 +02:00
Jonathan Klee
78bf83acf4 Extract isEnabled key as resource 2024-09-20 13:42:47 +02:00
Jonathan Klee
5684aba36d Implement NavigationBar theme 2024-09-20 13:31:20 +02:00
Jonathan Klee
61dadcba85 Add translations 2024-09-20 13:31:20 +02:00
Jonathan Klee
35711e7c1b Implement collapsing toolbar 2024-09-20 13:31:20 +02:00
Jonathan Klee
4f97fee55c Adjust styles 2024-09-20 13:31:15 +02:00
Jonathan Klee
fe86329af5 Add Preferences to enable Ntfy in the Settings app 2024-09-19 14:25:02 +02:00
Jonathan Klee
160c4cfd88 Don't show app on the launcher 2024-09-04 17:01:20 +02:00
Jonathan Klee
a4eb268aa0 Exclude app from Android recents app view 2024-09-04 17:00:31 +02:00
Jonathan Klee
95ab609d94 Make the app persistent so that it does not get killed 2024-09-04 16:59:53 +02:00
Jonathan Klee
5aceba6474 Start SubscriberService as background service 2024-09-04 16:59:36 +02:00
Philipp Heckel
31eadd9768 Merge branch 'main' of https://hosted.weblate.org/git/ntfy/android 2024-05-13 21:48:02 -04:00
Isaac Alves
4410fc4aec
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (333 of 333 strings)

Co-authored-by: Isaac Alves <lindoisaac879@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pt_BR/
Translation: ntfy/Android app
2024-05-01 15:08:08 +02:00
Yaron Shahrabani
dc8e7c65b2
Translated using Weblate (Hebrew)
Currently translated at 91.8% (306 of 333 strings)

Translated using Weblate (Hebrew)

Currently translated at 90.0% (300 of 333 strings)

Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/he/
Translation: ntfy/Android app
2024-05-01 15:08:07 +02:00
Oritro Ahmed
02a61c6a55
Translated using Weblate (Bengali)
Currently translated at 2.4% (8 of 333 strings)

Added translation using Weblate (Bengali)

Co-authored-by: Oritro Ahmed <oritromax@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/bn/
Translation: ntfy/Android app
2024-05-01 15:08:06 +02:00
Subrata Sarkar
0cdc1af9f3
Translated using Weblate (Hindi)
Currently translated at 25.8% (86 of 333 strings)

Co-authored-by: Subrata Sarkar <subrotosarkar32@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/hi/
Translation: ntfy/Android app
2024-05-01 15:08:04 +02:00
Хусниддин
9a8286d0c8
Translated using Weblate (Uzbek)
Currently translated at 100.0% (3 of 3 strings)

Translated using Weblate (Uzbek)

Currently translated at 100.0% (333 of 333 strings)

Added translation using Weblate (Uzbek)

Co-authored-by: Хусниддин <hoosnick@morphix.uz>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/uz/
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/uz/
Translation: ntfy/Android app
Translation: ntfy/Android app (Fastlane metadata)
2024-05-01 15:08:04 +02:00
ButterflyOfFire
a327619248
Translated using Weblate (Arabic)
Currently translated at 20.1% (67 of 333 strings)

Co-authored-by: ButterflyOfFire <boffire@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ar/
Translation: ntfy/Android app
2024-05-01 15:08:02 +02:00
Vũ Minh Nguyên
ddf4e6c1f6
Translated using Weblate (Vietnamese)
Currently translated at 6.9% (23 of 333 strings)

Translated using Weblate (Vietnamese)

Currently translated at 6.6% (22 of 333 strings)

Co-authored-by: Vũ Minh Nguyên <PiscesKaze@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/vi/
Translation: ntfy/Android app
2024-05-01 15:08:01 +02:00
Christian Meis
089a8e3941
Translated using Weblate (German)
Currently translated at 100.0% (333 of 333 strings)

Co-authored-by: Christian Meis <christian@meis.de>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/de/
Translation: ntfy/Android app
2024-05-01 15:07:59 +02:00
Panda
32eb645edb
Translated using Weblate (Danish)
Currently translated at 4.8% (16 of 333 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (3 of 3 strings)

Added translation using Weblate (Danish)

Co-authored-by: Panda <panda@326486.xyz>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/da/
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/da/
Translation: ntfy/Android app
Translation: ntfy/Android app (Fastlane metadata)
2024-05-01 15:07:58 +02:00
Đức-Trí Bùi
6330dd802a
Translated using Weblate (Vietnamese)
Currently translated at 4.5% (15 of 333 strings)

Translated using Weblate (Vietnamese)

Currently translated at 0.9% (3 of 333 strings)

Co-authored-by: Đức-Trí Bùi <bdtri.cse.hcmut+weblate@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/vi/
Translation: ntfy/Android app
2024-05-01 15:07:56 +02:00
Oleg Sabov
bfdb32926b
Translated using Weblate (Hebrew)
Currently translated at 18.6% (62 of 333 strings)

Co-authored-by: Oleg Sabov <oleg.sabov@riskified.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/he/
Translation: ntfy/Android app
2024-05-01 15:07:54 +02:00
Elias Thalassochoritis
2fe7fce264
Translated using Weblate (Greek)
Currently translated at 23.7% (79 of 333 strings)

Translated using Weblate (Greek)

Currently translated at 18.0% (60 of 333 strings)

Co-authored-by: Elias Thalassochoritis <elias.thal7@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/el/
Translation: ntfy/Android app
2024-05-01 15:07:52 +02:00
Seppo Lehtimäki
2beb3b5158
Translated using Weblate (Finnish)
Currently translated at 100.0% (333 of 333 strings)

Translated using Weblate (Finnish)

Currently translated at 100.0% (3 of 3 strings)

Translated using Weblate (Finnish)

Currently translated at 100.0% (333 of 333 strings)

Added translation using Weblate (Finnish)

Co-authored-by: Seppo Lehtimäki <sepix26@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/fi/
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/fi/
Translation: ntfy/Android app
Translation: ntfy/Android app (Fastlane metadata)
2024-05-01 15:07:50 +02:00
RT Redréovič
42437a3d46
Added translation using Weblate (Esperanto)
Co-authored-by: RT Redréovič <77635620+Red1922@users.noreply.github.com>
2024-05-01 15:07:47 +02:00
Avinash
1e9d0823eb
Translated using Weblate (Hindi)
Currently translated at 23.4% (78 of 333 strings)

Co-authored-by: Avinash <avinashji39@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/hi/
Translation: ntfy/Android app
2024-05-01 15:07:46 +02:00
Carlos M. Silva
902c7c4ac3
Translated using Weblate (Portuguese)
Currently translated at 99.0% (330 of 333 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 94.2% (314 of 333 strings)

Co-authored-by: Carlos M. Silva <carlosmsilva.es@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pt/
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pt_BR/
Translation: ntfy/Android app
2024-05-01 15:07:44 +02:00
Allan Nordhøy
05602a3f10
Translated using Weblate (Norwegian Bokmål)
Currently translated at 99.0% (330 of 333 strings)

Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/nb_NO/
Translation: ntfy/Android app
2024-05-01 15:07:42 +02:00
Eryk Michalak
61075faabc
Translated using Weblate (Polish)
Currently translated at 100.0% (333 of 333 strings)

Co-authored-by: Eryk Michalak <gnu.ewm@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pl/
Translation: ntfy/Android app
2024-05-01 15:07:40 +02:00
Kostas Gotsis
4ba524ca11
Translated using Weblate (Greek)
Currently translated at 17.7% (59 of 333 strings)

Co-authored-by: Kostas Gotsis <kgotsis@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/el/
Translation: ntfy/Android app
2024-05-01 15:07:38 +02:00
Ahmed Amr
876ec2a633
Translated using Weblate (Arabic)
Currently translated at 19.8% (66 of 333 strings)

Co-authored-by: Ahmed Amr <ahmedamro2589@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ar/
Translation: ntfy/Android app
2024-05-01 15:07:36 +02:00
arjan-s
c3bf5ea818
Translated using Weblate (Dutch)
Currently translated at 100.0% (333 of 333 strings)

Co-authored-by: arjan-s <a_gitlab@anymore.nl>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/nl/
Translation: ntfy/Android app
2024-05-01 15:07:35 +02:00
Youssef Eddaif
2fe984dd7e
Translated using Weblate (Arabic)
Currently translated at 14.4% (48 of 333 strings)

Co-authored-by: Youssef Eddaif <unreal.joseph@proton.me>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ar/
Translation: ntfy/Android app
2024-05-01 15:07:33 +02:00
traamcazs
a28a9c221e
Translated using Weblate (Hungarian)
Currently translated at 39.3% (131 of 333 strings)

Co-authored-by: traamcazs <traamcazs@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/hu/
Translation: ntfy/Android app
2024-05-01 15:07:31 +02:00
SCOTT-HAMILTON
853b954543
Translated using Weblate (French)
Currently translated at 100.0% (333 of 333 strings)

Co-authored-by: SCOTT-HAMILTON <sgn.hamilton+github@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/fr/
Translation: ntfy/Android app
2024-05-01 15:07:29 +02:00
Dadik
9fe7c70c32
Translated using Weblate (Polish)
Currently translated at 98.4% (328 of 333 strings)

Co-authored-by: Dadik <dadiku@protonmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pl/
Translation: ntfy/Android app
2024-05-01 15:07:27 +02:00
Mazurky
54d582b1bf
Translated using Weblate (Slovak)
Currently translated at 100.0% (3 of 3 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (333 of 333 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (333 of 333 strings)

Added translation using Weblate (Slovak)

Co-authored-by: Mazurky <matsurikata@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/sk/
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/sk/
Translation: ntfy/Android app
Translation: ntfy/Android app (Fastlane metadata)
2024-05-01 15:07:26 +02:00
Guille
ae786ec546
Translated using Weblate (Catalan)
Currently translated at 100.0% (333 of 333 strings)

Translated using Weblate (Catalan)

Currently translated at 48.0% (160 of 333 strings)

Co-authored-by: Guille <gvicente@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ca/
Translation: ntfy/Android app
2024-05-01 15:07:22 +02:00
nuo18
8d2cb1dd8a
Translated using Weblate (Hindi)
Currently translated at 4.8% (16 of 333 strings)

Co-authored-by: nuo18 <kadamvedang18@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/hi/
Translation: ntfy/Android app
2024-05-01 15:07:20 +02:00
Marcin Czop
21aa74017d
Translated using Weblate (Polish)
Currently translated at 98.1% (327 of 333 strings)

Co-authored-by: Marcin Czop <marcin@czop.ru>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pl/
Translation: ntfy/Android app
2024-05-01 15:07:18 +02:00
怪盗kidou
421e18a065
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (333 of 333 strings)

Co-authored-by: 怪盗kidou <bestkidou@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hans/
Translation: ntfy/Android app
2024-05-01 15:07:16 +02:00
Laur
4dbe94a0a6
Translated using Weblate (Romanian)
Currently translated at 100.0% (333 of 333 strings)

Co-authored-by: Laur <laur.ivan@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ro/
Translation: ntfy/Android app
2024-05-01 15:07:14 +02:00
Enzo Salson
418675bb79
Translated using Weblate (French)
Currently translated at 99.0% (330 of 333 strings)

Co-authored-by: Enzo Salson <drawkend@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/fr/
Translation: ntfy/Android app
2024-05-01 15:07:12 +02:00
yaf35568
7ffde9a9f8
Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (333 of 333 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 80.1% (267 of 333 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (333 of 333 strings)

Co-authored-by: yaf35568 <yaf35568@nezid.com>
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hant/
Translation: ntfy/Android app
2024-05-01 15:07:11 +02:00
Kostas Gotsis
834e5aaec7
Translated using Weblate (Greek)
Currently translated at 17.7% (59 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/el/
2023-09-14 14:50:14 +02:00
Mazurky
2e8eb72eec
Translated using Weblate (Slovak)
Currently translated at 100.0% (3 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/sk/
2023-09-10 18:54:32 +02:00
Mazurky
753e4a2c5d
Translated using Weblate (Slovak)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/sk/
2023-09-10 18:54:31 +02:00
Ahmed Amr
926d5aaade
Translated using Weblate (Arabic)
Currently translated at 19.8% (66 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ar/
2023-09-07 09:51:45 +02:00
arjan-s
0d173e89f5
Translated using Weblate (Dutch)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/nl/
2023-09-07 09:51:45 +02:00
Mazurky
4978c2e1cc
Translated using Weblate (Slovak)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/sk/
2023-09-02 19:50:12 +02:00
Youssef Eddaif
cb9e7fe14e
Translated using Weblate (Arabic)
Currently translated at 14.4% (48 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ar/
2023-09-02 19:50:08 +02:00
traamcazs
bd9a9f6c47
Translated using Weblate (Hungarian)
Currently translated at 39.3% (131 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/hu/
2023-09-02 19:50:08 +02:00
SCOTT-HAMILTON
5fd4008164
Translated using Weblate (French)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/fr/
2023-09-02 19:50:07 +02:00
Dadik
5fb350dc42
Translated using Weblate (Polish)
Currently translated at 98.4% (328 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pl/
2023-09-02 19:50:07 +02:00
Mazurky
bd649c2bc7
Added translation using Weblate (Slovak) 2023-08-31 19:26:48 +02:00
Guille
4950761a29
Translated using Weblate (Catalan)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ca/
2023-08-24 19:54:23 +02:00
Guille
bb13618feb
Translated using Weblate (Catalan)
Currently translated at 48.0% (160 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ca/
2023-08-21 12:51:54 +02:00
nuo18
4b60875f2b
Translated using Weblate (Hindi)
Currently translated at 4.8% (16 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/hi/
2023-08-21 12:51:53 +02:00
Marcin Czop
caf04702d1
Translated using Weblate (Polish)
Currently translated at 98.1% (327 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pl/
2023-06-30 01:53:04 +02:00
怪盗kidou
1b06785c57
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hans/
2023-06-28 16:52:28 +02:00
Laur
edb19fd095
Translated using Weblate (Romanian)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ro/
2023-06-13 11:54:14 +02:00
Enzo Salson
ed2095e1b4
Translated using Weblate (French)
Currently translated at 99.0% (330 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/fr/
2023-05-24 01:52:48 +02:00
yaf35568
6da134e017
Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hant/
2023-05-22 08:53:09 +02:00
yaf35568
855eb56a37
Translated using Weblate (Chinese (Traditional))
Currently translated at 80.1% (267 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hant/
2023-05-21 08:13:20 +02:00
yaf35568
86d82495a1
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hans/
2023-05-21 08:13:19 +02:00
Philipp Heckel
c15efff72c Bump gradle tools 2023-05-19 20:29:16 -04:00
Philipp Heckel
e71117c1cd Upgrade gradle 2023-05-19 20:25:05 -04:00
Philipp Heckel
3f987e162a Bump deps 2023-05-19 20:19:19 -04:00
Jakob Malchow
05dce3769e
Translated using Weblate (Italian)
Currently translated at 95.7% (319 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/it/
2023-05-18 12:53:18 +02:00
arjan-s
36517f2e1b
Translated using Weblate (Dutch)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/nl/
2023-04-27 22:54:44 +02:00
FallMaple
0ccbc96440
Translated using Weblate (Chinese (Traditional))
Currently translated at 79.8% (266 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hant/
2023-04-18 22:28:28 +02:00
Rhodri
05979538c0
Translated using Weblate (Welsh)
Currently translated at 100.0% (3 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/cy/
2023-04-18 22:28:28 +02:00
Shjosan
9f61331de1
Translated using Weblate (Swedish)
Currently translated at 100.0% (3 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/sv/
2023-04-18 22:28:28 +02:00
Shjosan
d2fd6a5877
Translated using Weblate (Swedish)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/sv/
2023-04-18 22:28:28 +02:00
josé m
253da5064a
Translated using Weblate (Galician)
Currently translated at 100.0% (3 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/gl/
2023-04-18 22:28:28 +02:00
josé m
a6839950fe
Translated using Weblate (Galician)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/gl/
2023-04-18 22:28:28 +02:00
josé m
87c77ca449
Translated using Weblate (Galician)
Currently translated at 77.4% (258 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/gl/
2023-04-18 22:28:28 +02:00
Hosted Weblate
a50d8a5709
Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/
2023-04-18 22:28:28 +02:00
András Vöröskői
45360992b4
Translated using Weblate (Hungarian)
Currently translated at 33.0% (110 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/hu/
2023-04-18 22:28:28 +02:00
Philipp C. Heckel
2ae58b987c
Merge pull request #58 from DismissedGuy/pr-move-build-docs
fix(docs): Move building instructions to official docs
2023-04-18 16:28:23 -04:00
Mike A
c91521a480
fix(docs): Move building instructions to official docs 2023-04-18 22:24:12 +02:00
Philipp C. Heckel
57e4c2f9bc
Merge pull request #57 from DismissedGuy/pr-readme-fix
fix(docs): strings.xml -> values.xml in README
2023-04-18 11:04:38 -04:00
Mike A
cb6b160769
fix(docs): strings.xml -> values.xml in README 2023-04-13 20:53:54 +02:00
josé m
c296ef4e7e
Translated using Weblate (Galician)
Currently translated at 60.3% (201 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/gl/
2023-03-29 11:39:44 +02:00
josé m
e1b5ba0cf9
Translated using Weblate (Galician)
Currently translated at 41.1% (137 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/gl/
2023-03-28 11:00:49 +02:00
Nick
eae5fae0ec
Translated using Weblate (Russian)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ru/
2023-03-24 00:45:07 +01:00
Emanuele Cisbani
6b8ff75a77
Translated using Weblate (Italian)
Currently translated at 95.4% (318 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/it/
2023-03-20 10:41:38 +01:00
josé m
ea6af51c02
Translated using Weblate (Galician)
Currently translated at 40.5% (135 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/gl/
2023-03-16 15:37:21 +01:00
josé m
21d8c17cb8
Translated using Weblate (Galician)
Currently translated at 33.9% (113 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/gl/
2023-03-13 14:03:20 +01:00
AlguienSama
a80e49c654
Translated using Weblate (Catalan)
Currently translated at 14.4% (48 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ca/
2023-03-13 14:03:20 +01:00
Nick
85a071ce4d
Translated using Weblate (Russian)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ru/
2023-03-13 14:03:19 +01:00
Philipp Heckel
a6fe986e89 Changelog 2023-03-11 21:28:33 -05:00
Philipp Heckel
9b299dd732 Merge branch 'main' of github.com:binwiederhier/ntfy-android 2023-03-11 21:23:10 -05:00
Philipp C. Heckel
3c86c7a33f
Merge pull request #55 from wunter8/652-rate-topics-header
Add `Rate-Topics` header to WebSocket connection and JSON stream
2023-03-11 21:23:00 -05:00
Rhodri
9c548a21ec
Translated using Weblate (Welsh)
Currently translated at 0.6% (2 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/cy/
2023-03-11 02:42:31 +01:00
waclaw66
1ab7a0e093
Translated using Weblate (Czech)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/cs/
2023-03-08 10:41:37 +01:00
Fredrik
f54beac8af
Translated using Weblate (Swedish)
Currently translated at 93.9% (313 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/sv/
2023-03-07 06:38:03 +01:00
Nick
f55e2f5ea8
Translated using Weblate (Russian)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ru/
2023-03-07 06:38:02 +01:00
Shoshin Akamine
b9502be152
Translated using Weblate (Japanese)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ja/
2023-03-07 06:38:01 +01:00
Andrew
6c656b6087
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/uk/
2023-03-07 06:38:01 +01:00
Linerly
c9ba478b3f
Translated using Weblate (Indonesian)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/id/
2023-03-07 06:38:01 +01:00
Poesty Li
8d6639d0d4
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hans/
2023-03-07 06:38:00 +01:00
Oğuz Ersen
153e7f3357
Translated using Weblate (Turkish)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/tr/
2023-03-07 06:38:00 +01:00
Rogelio Dominguez
ef066d5578
Translated using Weblate (Spanish)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/es/
2023-03-07 06:38:00 +01:00
109247019824
0130355d84
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/bg/
2023-03-07 06:37:59 +01:00
Christian Meis
c06f2d75ee
Translated using Weblate (German)
Currently translated at 100.0% (333 of 333 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/de/
2023-03-07 06:37:59 +01:00
Hunter Kehoe
f70c000b56 fixes binwiederhier/ntfy#652 2023-03-04 23:10:32 -07:00
Philipp C. Heckel
58e522b846
Merge pull request #54 from wunter8/disable-unified-push-toggle
add toggle to disable UnifiedPush
2023-03-03 14:23:20 -05:00
Hunter Kehoe
c6229cb7ca rename UnifiedPush variables 2023-03-03 12:15:38 -07:00
Hunter Kehoe
33d193d5ad add toggle to disable UnifiedPush 2023-03-03 07:57:36 -07:00
Philipp Heckel
249aae77f0 Changelog, bump version 2023-03-02 20:55:49 -05:00
josé m
8300f0e302
Translated using Weblate (Galician)
Currently translated at 24.5% (81 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/gl/
2023-03-03 02:51:51 +01:00
josé m
10d32ae1c2
Translated using Weblate (Galician)
Currently translated at 14.8% (49 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/gl/
2023-03-03 02:51:51 +01:00
Andrew
3d19980c9a
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/uk/
2023-03-03 02:51:51 +01:00
Poesty Li
6dfb6fdc86
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hans/
2023-03-03 02:51:51 +01:00
josé m
551e2036ea
Translated using Weblate (Galician)
Currently translated at 13.3% (44 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/gl/
2023-03-03 02:51:51 +01:00
ButterflyOfFire
479407b9bc
Translated using Weblate (Arabic)
Currently translated at 33.3% (1 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/ar/
2023-03-03 02:51:51 +01:00
Tmpod
393812c955
Translated using Weblate (Portuguese)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pt/
2023-03-03 02:51:50 +01:00
Sirius Chan
0e357fb94b
Translated using Weblate (Chinese (Traditional))
Currently translated at 66.0% (218 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hant/
2023-03-03 02:51:50 +01:00
ButterflyOfFire
f413575042
Translated using Weblate (Arabic)
Currently translated at 12.1% (40 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ar/
2023-03-03 02:51:50 +01:00
josé m
3037328ded
Translated using Weblate (Galician)
Currently translated at 2.4% (8 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/gl/
2023-03-03 02:51:50 +01:00
josé m
7489ca3b71
Added translation using Weblate (Galician) 2023-03-03 02:51:50 +01:00
Mehran
17c953c906
Translated using Weblate (Persian)
Currently translated at 11.8% (39 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/fa/
2023-03-03 02:51:50 +01:00
Rycoh
f96d47607c
Translated using Weblate (Romanian)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ro/
2023-03-03 02:51:50 +01:00
Mehran
a029591dd9
Added translation using Weblate (Persian) 2023-03-03 02:51:50 +01:00
Rycoh
deaf513ffb
Added translation using Weblate (Romanian) 2023-03-03 02:51:50 +01:00
Philipp C. Heckel
c2eb9e9105
Merge pull request #52 from wunter8/634-subscription-icons
634 subscription icons
2023-03-02 20:51:43 -05:00
Hunter Kehoe
a4b74a5c19 fixes binwiederhier/ntfy#634 2023-03-02 14:33:47 -07:00
Tmpod
869eb5b708
Translated using Weblate (Portuguese)
Currently translated at 100.0% (3 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/pt/
2023-02-03 14:38:26 +01:00
Christian Meis
b963185bd1
Translated using Weblate (German)
Currently translated at 100.0% (3 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/de/
2023-02-03 14:38:25 +01:00
Tmpod
dc6dfa9199
Translated using Weblate (Portuguese)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pt/
2023-02-03 14:38:25 +01:00
Zoe
1f3ea52345
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/nb_NO/
2023-01-20 21:15:30 +01:00
Nifou
254a0235cb
Translated using Weblate (French)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/fr/
2023-01-12 17:49:31 +01:00
Nifou
8434317bbe
Translated using Weblate (French)
Currently translated at 98.7% (326 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/fr/
2023-01-11 16:54:36 +01:00
Zoe
6520951e69
Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/nb_NO/
2023-01-11 16:54:36 +01:00
slundi
87ac554c93
Translated using Weblate (French)
Currently translated at 96.3% (318 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/fr/
2023-01-10 10:34:52 +01:00
August
87b11b6ede
Translated using Weblate (Swedish)
Currently translated at 40.0% (132 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/sv/
2022-12-23 21:47:22 +01:00
bjornclauw
fb5a1fb73a
Translated using Weblate (Dutch)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/nl/
2022-12-23 21:47:22 +01:00
Messias Martins
51bdf7c269
Translated using Weblate (Portuguese)
Currently translated at 99.6% (329 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pt/
2022-12-20 15:49:00 +01:00
Shoshin Akamine
36144ed4b8
Translated using Weblate (Japanese)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ja/
2022-12-19 11:47:38 +01:00
Shoshin Akamine
b6a9e6ef9b
Translated using Weblate (Japanese)
Currently translated at 96.0% (317 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ja/
2022-12-18 10:49:36 +01:00
Rogelio Dominguez
2713f52367
Translated using Weblate (Spanish)
Currently translated at 97.5% (322 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/es/
2022-12-17 20:48:02 +01:00
109247019824
bb5778ad27
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/bg/
2022-12-16 08:50:53 +01:00
waclaw66
97beb3d814
Translated using Weblate (Czech)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/cs/
2022-12-13 09:48:15 +01:00
Linerly
53c93622c7
Translated using Weblate (Indonesian)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/id/
2022-12-13 09:48:14 +01:00
Eric
7b1184584c
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hans/
2022-12-13 09:48:14 +01:00
Oğuz Ersen
d6d3691dc4
Translated using Weblate (Turkish)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/tr/
2022-12-13 09:48:14 +01:00
109247019824
21e622f17e
Translated using Weblate (Bulgarian)
Currently translated at 97.5% (322 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/bg/
2022-12-13 09:48:14 +01:00
Vri 🌈
18fd4a6add
Translated using Weblate (German)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/de/
2022-12-13 09:48:13 +01:00
Christian Meis
f1b9bd9d84
Translated using Weblate (German)
Currently translated at 100.0% (330 of 330 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/de/
2022-12-13 09:48:13 +01:00
Philipp Heckel
f9cf968662 Remove version 31 2022-12-11 15:37:54 -05:00
Philipp Heckel
39d4405660 Completely removed REQUEST_INSTALL_PACKAGES permission instead of stripping it out via gradle (32) 2022-12-09 21:26:52 -05:00
Philipp Heckel
e4bc5abc01 Merge branch 'main' of https://hosted.weblate.org/git/ntfy/android 2022-12-09 14:41:54 -05:00
Christian Meis
2c7d417a31
Translated using Weblate (German)
Currently translated at 100.0% (3 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/de/
2022-12-09 06:50:32 +01:00
Linerly
1494bba650
Translated using Weblate (Indonesian)
Currently translated at 100.0% (319 of 319 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/id/
2022-12-09 06:50:31 +01:00
Eric
0aa00717fc
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (319 of 319 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hans/
2022-12-09 06:50:31 +01:00
Christian Meis
130d78bbde
Translated using Weblate (German)
Currently translated at 100.0% (319 of 319 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/de/
2022-12-09 06:50:31 +01:00
Philipp Heckel
64d2d1994d Changelog 2022-12-07 12:01:05 -05:00
Philipp Heckel
803bed5ca0 Wording, backup/restore 2022-12-07 11:49:59 -05:00
Philipp Heckel
3e8ba28e63 Merge branch 'constant-ring' into custom_notification_channels 2022-12-07 10:35:54 -05:00
Philipp Heckel
c36e80c117 Wording, hide for older Android versions 2022-12-07 10:05:33 -05:00
Philipp Heckel
f327c8ffdd Remove "scope"; use "displayName" 2022-12-06 22:06:59 -05:00
Philipp Heckel
e43720036a Minor changes 2022-12-06 21:42:09 -05:00
Philipp Heckel
6f0bf4d112 Merge branch 'main' into custom_notification_channels 2022-12-06 20:45:12 -05:00
Philipp Heckel
1e70ae0d18 Merge branch 'main' of https://hosted.weblate.org/git/ntfy/android 2022-12-06 20:41:22 -05:00
waclaw66
0226feb983
Translated using Weblate (Czech)
Currently translated at 100.0% (319 of 319 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/cs/
2022-12-07 02:37:46 +01:00
Shoshin Akamine
0089e217bd
Translated using Weblate (Japanese)
Currently translated at 100.0% (319 of 319 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ja/
2022-12-07 02:37:46 +01:00
Linerly
c625d69ee3
Translated using Weblate (Indonesian)
Currently translated at 100.0% (319 of 319 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/id/
2022-12-07 02:37:45 +01:00
Eric
9cc021d857
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (319 of 319 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hans/
2022-12-07 02:37:45 +01:00
Oğuz Ersen
1c13ea9a38
Translated using Weblate (Turkish)
Currently translated at 100.0% (319 of 319 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/tr/
2022-12-07 02:37:45 +01:00
Rogelio Dominguez
ef79192a16
Translated using Weblate (Spanish)
Currently translated at 100.0% (319 of 319 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/es/
2022-12-07 02:37:44 +01:00
109247019824
a98200a0fb
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (319 of 319 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/bg/
2022-12-07 02:37:44 +01:00
Christian Meis
f43305646b
Translated using Weblate (German)
Currently translated at 100.0% (319 of 319 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/de/
2022-12-07 02:37:43 +01:00
Philipp Heckel
314bba4113 Some style fixes 2022-12-06 20:37:30 -05:00
Philipp Heckel
e64cd79c28 Fix Android 5 crashes on unsubscribing 2022-12-06 16:17:05 -05:00
Markus Doits
209cf852bb
small code cleanup 2022-12-06 22:09:04 +01:00
Markus Doits
b95af94893
remove unneeded channelId from preference (testing leftover) 2022-12-06 22:08:46 +01:00
Markus Doits
c18662dd1a
use subscription topic short url for notification group name 2022-12-06 22:01:31 +01:00
Markus Doits
b63e5e8bfc
add preference to open notification settings if enabled 2022-12-06 21:55:00 +01:00
Philipp Heckel
b4b3263d2e Use custom sound from channel for insistent sound 2022-12-06 15:48:04 -05:00
Philipp Heckel
5101d1a0b3 Make subscription-specific setting work 2022-12-06 15:29:09 -05:00
Markus Doits
522f05ed60
separate notification group creation and deletion from channel creation and deletion 2022-12-06 19:15:47 +01:00
Markus Doits
a94d750b73
code formatting 2022-12-06 18:46:31 +01:00
Markus Doits
99a939ab12
remove now unused import 2022-12-06 18:45:07 +01:00
Markus Doits
d295f08449
rename "own notification channels" to "dedicated channels" 2022-12-06 18:44:13 +01:00
Markus Doits
accf3ccf38
refactor creation of notification channels for subscriptions 2022-12-06 18:23:18 +01:00
Philipp Heckel
fea0709a55 Merge branch 'main' into constant-ring 2022-12-06 11:39:36 -05:00
Joan Gargallo
6a8d222e12
Translated using Weblate (Catalan)
Currently translated at 13.5% (43 of 318 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ca/
2022-12-06 02:24:33 +01:00
Ivan Ip
2ff7098ec1
Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (3 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/zh_Hant/
2022-12-06 02:24:33 +01:00
Ivan Ip
021bface37
Translated using Weblate (Chinese (Traditional))
Currently translated at 57.8% (184 of 318 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hant/
2022-12-06 02:24:33 +01:00
Philipp Heckel
5409c84c66 Dynamically remove install permission via gradle 2022-12-05 20:24:05 -05:00
Philipp Heckel
b91778ad7d Fix Firebase-only "link expired" issue 2022-12-04 23:22:55 -05:00
Philipp Heckel
96d867c1a6 Comment 2022-12-04 20:28:57 -05:00
Philipp Heckel
be22d5cb07 WIP constant ring 2022-12-04 20:11:46 -05:00
nickexyz
3082319ccc
Translated using Weblate (Swedish)
Currently translated at 38.0% (121 of 318 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/sv/
2022-12-03 10:47:49 +01:00
Rogelio Dominguez
f5992fc0f9
Translated using Weblate (Spanish)
Currently translated at 100.0% (318 of 318 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/es/
2022-12-01 21:48:29 +01:00
popinha13
6f0597f8c7
Translated using Weblate (Portuguese)
Currently translated at 100.0% (318 of 318 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pt/
2022-12-01 15:47:29 +01:00
Markus Doits
00854808ff
shorten priority strings 2022-12-01 11:45:57 +01:00
Markus Doits
9149bc3c8d
add detail setting preference to toggle and send notifications to custom channel 2022-12-01 11:13:20 +01:00
Markus Doits
711f1eaf06
add own notification channel setting to subscriptions 2022-12-01 11:12:37 +01:00
Markus Doits
692c620dae
add a default group for notifications 2022-11-30 21:51:44 +01:00
Markus Doits
d953507d2a
refactor notification service to be able to pass a name 2022-11-30 21:51:27 +01:00
omer s
7a7cf9d511
Translated using Weblate (Hebrew)
Currently translated at 15.0% (48 of 318 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/he/
2022-11-30 08:48:15 +01:00
waclaw66
e5059b0e49
Translated using Weblate (Czech)
Currently translated at 100.0% (318 of 318 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/cs/
2022-11-30 08:48:15 +01:00
Shoshin Akamine
3c3f3b521d
Translated using Weblate (Japanese)
Currently translated at 100.0% (318 of 318 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ja/
2022-11-30 08:48:15 +01:00
Linerly
f5860d057c
Translated using Weblate (Indonesian)
Currently translated at 100.0% (318 of 318 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/id/
2022-11-30 08:48:15 +01:00
Eric
4f0db74455
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (318 of 318 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hans/
2022-11-30 08:48:14 +01:00
Oğuz Ersen
3c0819df58
Translated using Weblate (Turkish)
Currently translated at 100.0% (318 of 318 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/tr/
2022-11-30 08:48:14 +01:00
109247019824
47aa6e834d
Translated using Weblate (Bulgarian)
Currently translated at 100.0% (318 of 318 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/bg/
2022-11-30 08:48:14 +01:00
Christian Meis
754f752d62
Translated using Weblate (German)
Currently translated at 100.0% (318 of 318 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/de/
2022-11-30 08:48:14 +01:00
Philipp Heckel
55ad2e65b5 Works! 2022-11-29 22:46:38 -05:00
Philipp Heckel
e18be4a2a7 Merge branch 'main' into constant-ring 2022-11-29 14:25:46 -05:00
Philipp Heckel
1b587ab82a Set ongoing flag for foreground notification to prevent swiping away on Android 13 2022-11-28 12:39:03 -05:00
Philipp Heckel
3d1d062f4d Fix opening wrong topic on click 2022-11-28 06:42:37 -05:00
Philipp Heckel
b3a0a10b60 Constant ring 2022-11-28 06:00:41 -05:00
Philipp Heckel
fa27fe9036 Avoid stack trace for empty icons 2022-11-27 20:24:10 -05:00
Philipp Heckel
d09fdb2ff2 Fix crashes from large images (#474) 2022-11-27 12:38:07 -05:00
Philipp Heckel
2e7c6409ff Adaptive icons 2022-11-26 22:38:25 -05:00
Philipp Heckel
e5dba81036 Fix topics do not re-subscribe to Firebase after restoring from backup (#511) 2022-11-26 21:05:49 -05:00
Philipp Heckel
d3174ae39b Donate button 2022-11-26 20:57:37 -05:00
Philipp Heckel
b9479e3ecd Changelog 2022-11-26 19:47:28 -05:00
Philipp Heckel
cd2e9b7d6a Dark mode color 2022-11-26 13:52:52 -05:00
Philipp Heckel
005d03a7c2 Fix notificaiton icon color on Android 12/13 2022-11-26 13:37:10 -05:00
Philipp Heckel
4ee2f53bd4 Changelog 2022-11-23 13:11:16 -05:00
Philipp Heckel
681a8c6a3e Merge branch 'main' into bugfix/build-without-google-services 2022-11-23 12:57:56 -05:00
Philipp Heckel
b75fdbaa4b Bump Gradle deps 2022-11-23 12:55:19 -05:00
Micke Nilsson
0b7a239195
Translated using Weblate (Swedish)
Currently translated at 30.5% (97 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/sv/
2022-11-22 08:48:41 +01:00
color400
2410574891
Translated using Weblate (Chinese (Traditional))
Currently translated at 23.6% (75 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hant/
2022-11-22 08:48:40 +01:00
Philipp Heckel
4bfc72c1c9 Make DeleteWorker more resilient 2022-11-19 15:03:37 -05:00
Philipp Heckel
69fdd30a26 Do not prevent running other deletion tasks when icon does not exist 2022-11-19 14:52:29 -05:00
Philipp Heckel
297b319819 Translations 2022-11-18 21:45:31 -05:00
Victor Hugo Torugo
42a94ee556
Translated using Weblate (Portuguese)
Currently translated at 79.4% (252 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pt/
2022-11-19 03:08:34 +01:00
Philipp Heckel
92ec2d753f Ask for permission to post notifications (SDK 33) 2022-11-18 21:08:12 -05:00
Philipp Heckel
abeae71b0c Changelog 2022-11-18 20:08:50 -05:00
Philipp Heckel
f974352c4a Update deps, hurray 2022-11-18 20:08:24 -05:00
Philipp Heckel
73c6047280 More deps updates 2022-11-18 19:54:32 -05:00
Philipp Heckel
51dfd8edba More dep updates 2022-11-18 17:07:15 -05:00
Philipp Heckel
7d05e3ebcb Upgrade dependencies 2022-11-18 17:02:22 -05:00
Philipp Heckel
16545f5cde Release notes, pull translations 2022-11-13 06:30:46 -05:00
Philipp Heckel
b82e313d61 Merge branch 'main' of https://hosted.weblate.org/git/ntfy/android 2022-11-13 06:29:19 -05:00
Philipp Heckel
4ead7e28f6 Merge branch 'main' of github.com:binwiederhier/ntfy-android 2022-11-13 06:27:41 -05:00
Ahmed Haies
770d29a85b
Translated using Weblate (Arabic)
Currently translated at 1.8% (6 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ar/
2022-11-13 12:24:38 +01:00
Gerge
04366f21ed
Translated using Weblate (Hungarian)
Currently translated at 14.8% (47 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/hu/
2022-11-13 12:24:38 +01:00
Ahmed Haies
1b4ae74493
Added translation using Weblate (Arabic) 2022-11-13 12:24:38 +01:00
Gerge
54a034a78a
Added translation using Weblate (Hungarian) 2022-11-13 12:24:37 +01:00
m4el
7a2ce882af
Translated using Weblate (Portuguese)
Currently translated at 18.6% (59 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pt/
2022-11-13 12:24:37 +01:00
m4el
d0f1ce6873
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (317 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pt_BR/
2022-11-13 12:24:37 +01:00
Stefan Bejgu
13fdeabbef
Translated using Weblate (Italian)
Currently translated at 100.0% (3 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/it/
2022-11-13 12:24:37 +01:00
Code Chạy Chạy
62beb7db76
Translated using Weblate (Vietnamese)
Currently translated at 0.3% (1 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/vi/
2022-11-13 12:24:37 +01:00
Stefan Bejgu
4be30f294a
Translated using Weblate (Italian)
Currently translated at 100.0% (317 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/it/
2022-11-13 12:24:37 +01:00
David Sota
ede4869d8f
Added translation using Weblate (Portuguese) 2022-11-13 12:24:37 +01:00
waclaw66
a8c12b2823
Translated using Weblate (Czech)
Currently translated at 100.0% (317 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/cs/
2022-11-13 12:24:37 +01:00
Frano Mišković
d0a8d32e74
Translated using Weblate (Croatian)
Currently translated at 1.5% (5 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/hr/
2022-11-13 12:24:37 +01:00
Frano Mišković
32fb9030df
Translated using Weblate (Croatian)
Currently translated at 0.3% (1 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/hr/
2022-11-13 12:24:37 +01:00
Frano Mišković
7422e0edb3
Added translation using Weblate (Croatian) 2022-11-13 12:24:37 +01:00
interserver support
a9139f0d42
Translated using Weblate (Tamil)
Currently translated at 5.3% (17 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ta/
2022-11-13 12:24:37 +01:00
interserver support
b9ea4db02b
Added translation using Weblate (Tamil) 2022-11-13 12:24:37 +01:00
Rubens
8b64de279a
Translated using Weblate (Catalan)
Currently translated at 1.8% (6 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ca/
2022-11-13 12:24:37 +01:00
YJSoft
8f2f68f0fc
Translated using Weblate (Korean)
Currently translated at 100.0% (3 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/ko/
2022-11-13 12:24:37 +01:00
YJSoft
00e76e65f8
Translated using Weblate (Korean)
Currently translated at 100.0% (317 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ko/
2022-11-13 12:24:37 +01:00
Christian Meis
b993c95cca
Translated using Weblate (German)
Currently translated at 100.0% (317 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/de/
2022-11-13 12:24:37 +01:00
Rubens
69f77e21cf
Added translation using Weblate (Catalan) 2022-11-13 12:24:37 +01:00
Philipp C. Heckel
7fc3cbc52a
Merge pull request #44 from wunter8/471-remove-timestamp-from-message-to-clipboard
fixes binwiederhier/ntfy#471
2022-11-13 06:24:15 -05:00
Hunter Kehoe
1173ac3a5f fixes binwiederhier/ntfy#471 2022-11-12 14:02:25 -07:00
Hunter Kehoe
a462d70a49 Merge remote-tracking branch 'upstream/main' 2022-11-12 13:43:22 -07:00
David Sota
f9b7f28fcd
Added translation using Weblate (Portuguese) 2022-11-09 01:26:36 +01:00
Marko Sopčić
92c74b5b10 Disable tasks for processing google services for variants which do not use them. 2022-11-08 19:14:25 +01:00
waclaw66
7f80b0f403
Translated using Weblate (Czech)
Currently translated at 100.0% (317 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/cs/
2022-11-05 07:08:58 +01:00
Frano Mišković
b834bb4f1c
Translated using Weblate (Croatian)
Currently translated at 1.5% (5 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/hr/
2022-10-30 11:02:30 +01:00
Frano Mišković
8e1c35811f
Translated using Weblate (Croatian)
Currently translated at 0.3% (1 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/hr/
2022-10-29 11:06:12 +02:00
Frano Mišković
ce32364ecd
Added translation using Weblate (Croatian) 2022-10-29 10:59:21 +02:00
interserver support
b0e7cb9a91
Translated using Weblate (Tamil)
Currently translated at 5.3% (17 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ta/
2022-10-10 15:28:20 +02:00
interserver support
7561a5b8ec
Added translation using Weblate (Tamil) 2022-10-10 15:28:20 +02:00
Rubens
6170588c25
Translated using Weblate (Catalan)
Currently translated at 1.8% (6 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ca/
2022-10-10 15:28:20 +02:00
YJSoft
8742186b7c
Translated using Weblate (Korean)
Currently translated at 100.0% (3 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/ko/
2022-10-10 15:28:20 +02:00
YJSoft
cd93794ca7
Translated using Weblate (Korean)
Currently translated at 100.0% (317 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ko/
2022-10-10 15:28:20 +02:00
Christian Meis
f667b8422d
Translated using Weblate (German)
Currently translated at 100.0% (317 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/de/
2022-10-10 15:28:20 +02:00
Rubens
a9f67fdd6e
Added translation using Weblate (Catalan) 2022-10-10 15:28:20 +02:00
Philipp C. Heckel
915ca3d045
Merge pull request #41 from emersion/log-utf8
Avoid printing binary in logs
2022-10-08 07:58:39 -04:00
Simon Ser
890e3b311c Avoid printing binary in logs
The ByteArray may contain arbitrary bytes. Printing it to the logs
results in garbage and terminal emulators will try to interpret
escape codes.
2022-10-08 13:30:19 +02:00
Philipp Heckel
fed1994497 Release log 2022-09-27 11:22:43 -04:00
YJSoft
9028516713
Added translation using Weblate (Korean) 2022-09-27 10:37:24 +02:00
Patryk
420f559146
Translated using Weblate (Polish)
Currently translated at 100.0% (3 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/pl/
2022-09-22 22:23:23 +02:00
Alex Plummer
fedde8803d
Translated using Weblate (Norwegian Bokmål)
Currently translated at 50.1% (159 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/nb_NO/
2022-09-22 22:23:23 +02:00
Patryk
a600e70c36
Translated using Weblate (Polish)
Currently translated at 100.0% (317 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/pl/
2022-09-22 22:23:23 +02:00
Hunter Kehoe
53889ef0f0 resolve differences 2022-09-12 10:07:59 -06:00
Hunter Kehoe
dc2cfe567d Merge remote-tracking branch 'upstream/main' 2022-09-12 10:04:28 -06:00
Philipp Heckel
c5701e5d98 Ukranian translation 2022-09-11 15:33:36 -04:00
Philipp Heckel
9d4f22583b Merge branch 'main' of https://hosted.weblate.org/git/ntfy/android into main 2022-09-11 15:32:11 -04:00
Philipp Heckel
813af97581 Merge branch '126-notification-icons' into main 2022-09-11 15:32:02 -04:00
Vladimir Kopitsa
5aac0e17fe
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (3 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/uk/
2022-09-09 17:24:08 +02:00
Vladimir Kopitsa
65a7131b2b
Translated using Weblate (Ukrainian)
Currently translated at 100.0% (317 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/uk/
2022-09-09 17:24:07 +02:00
Vladimir Kopitsa
132a18e12c
Translated using Weblate (Ukrainian)
Currently translated at 66.6% (2 of 3 strings)

Translation: ntfy/Android app (Fastlane metadata)
Translate-URL: https://hosted.weblate.org/projects/ntfy/android-fastlane/uk/
2022-09-08 16:23:28 +02:00
la-ninpre
f08747cade
Translated using Weblate (Russian)
Currently translated at 90.2% (286 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ru/
2022-09-01 21:18:53 +02:00
Jos Vooges
3b240a3208
Translated using Weblate (Dutch)
Currently translated at 100.0% (317 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/nl/
2022-08-30 23:19:09 +02:00
Hunter Kehoe
e68e6e51fe Merge remote-tracking branch 'upstream/main' 2022-08-27 12:19:27 -06:00
MaggoShton
8197e1a936
Translated using Weblate (Russian)
Currently translated at 89.9% (285 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ru/
2022-08-21 19:19:43 +02:00
Adrian Wahyudi
94fe8766f1
Translated using Weblate (Indonesian)
Currently translated at 100.0% (317 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/id/
2022-08-20 15:16:18 +02:00
Warpy
e19a40c436
Translated using Weblate (French)
Currently translated at 99.6% (316 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/fr/
2022-08-15 00:15:07 +02:00
Shoshin Akamine
bb608625d5
Translated using Weblate (Japanese)
Currently translated at 100.0% (317 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/ja/
2022-08-08 11:21:26 +02:00
Eric
fee727a5e4
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (317 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/zh_Hans/
2022-08-06 02:17:05 +02:00
Hunter Kehoe
e422eae0d1 notification icons 2022-07-16 14:32:09 -06:00
Athanasios Plastiras
ac46e20889
Translated using Weblate (Greek)
Currently translated at 16.7% (53 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/el/
2022-07-15 00:17:45 +02:00
Athanasios Plastiras
b936283f86
Translated using Weblate (Greek)
Currently translated at 15.7% (50 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/el/
2022-07-13 22:17:17 +02:00
Athanasios Plastiras
3034d714c2
Translated using Weblate (Greek)
Currently translated at 14.1% (45 of 317 strings)

Translation: ntfy/Android app
Translate-URL: https://hosted.weblate.org/projects/ntfy/android/el/
2022-07-12 17:21:21 +02:00
Niklas Sjostrom
8cee0713c3
Added translation using Weblate (Swedish) 2022-07-12 12:16:38 +02:00
Athanasios Plastiras
85883121b1
Added translation using Weblate (Greek) 2022-07-11 12:34:08 +02:00
141 changed files with 7234 additions and 645 deletions

21
.gitlab-ci.yml Normal file
View file

@ -0,0 +1,21 @@
image: "registry.gitlab.e.foundation/e/os/docker-android-apps-cicd:latest"
stages:
- build
before_script:
- export GRADLE_USER_HOME=$(pwd)/.gradle
- chmod +x ./gradlew
cache:
key: ${CI_PROJECT_ID}
paths:
- .gradle/
buildRelease:
stage: build
script:
- ./gradlew assembleFdroid
artifacts:
paths:
- app/build/outputs/apk/fdroid/release

View file

@ -2,32 +2,8 @@
This is the Android app for [ntfy](https://github.com/binwiederhier/ntfy) ([ntfy.sh](https://ntfy.sh)). You can find the app in [F-Droid](https://f-droid.org/packages/io.heckel.ntfy/) or the [Play Store](https://play.google.com/store/apps/details?id=io.heckel.ntfy), This is the Android app for [ntfy](https://github.com/binwiederhier/ntfy) ([ntfy.sh](https://ntfy.sh)). You can find the app in [F-Droid](https://f-droid.org/packages/io.heckel.ntfy/) or the [Play Store](https://play.google.com/store/apps/details?id=io.heckel.ntfy),
or as .apk files on the [releases page](https://github.com/binwiederhier/ntfy-android/releases). or as .apk files on the [releases page](https://github.com/binwiederhier/ntfy-android/releases).
# Build ## Build
For up-to-date building instructions, please see the [official docs](https://docs.ntfy.sh/develop/#android-app).
## Building without Firebase (F-Droid flavor)
Without Firebase, you may want to still change the default `app_base_url` in [strings.xml](https://github.com/binwiederhier/ntfy-android/blob/main/app/src/main/res/values/strings.xml)
if you're self-hosting the server. Then run:
```
# To build an unsigned .apk (app/build/outputs/apk/fdroid/*.apk)
./gradlew assembleFdroidRelease
# To build a bundle .aab (app/fdroid/release/*.aab)
./gradlew bundleFdroidRelease
```
## Building with Firebase (FCM, Google Play flavor)
To build your own version with Firebase, you must:
* Create a Firebase/FCM account
* Place your account file at `app/google-services.json`
* And change `app_base_url` in [strings.xml](https://github.com/binwiederhier/ntfy-android/blob/main/app/src/main/res/values/strings.xml)
* Then run:
```
# To build an unsigned .apk (app/build/outputs/apk/play/*.apk)
./gradlew assemblePlayRelease
# To build a bundle .aab (app/play/release/*.aab)
./gradlew bundlePlayRelease
```
## Translations ## Translations
We're using [Weblate](https://hosted.weblate.org/projects/ntfy/) to translate the ntfy Android app. We'd love your participation. We're using [Weblate](https://hosted.weblate.org/projects/ntfy/) to translate the ntfy Android app. We'd love your participation.

View file

@ -1,19 +1,21 @@
repositories {
mavenCentral()
}
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'kotlin-android' apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.gms.google-services'
android { android {
compileSdkVersion 31 compileSdkVersion 33
defaultConfig { defaultConfig {
applicationId "io.heckel.ntfy" applicationId "foundation.e.ntfy"
minSdkVersion 21 minSdkVersion 23
targetSdkVersion 31 targetSdkVersion 33
versionCode 28 versionCode 33
versionName "1.14.0" versionName "1.17.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@ -25,6 +27,10 @@ android {
} }
} }
buildFeatures {
viewBinding = true
}
buildTypes { buildTypes {
release { release {
minifyEnabled true minifyEnabled true
@ -42,10 +48,12 @@ android {
play { play {
buildConfigField 'boolean', 'FIREBASE_AVAILABLE', 'true' buildConfigField 'boolean', 'FIREBASE_AVAILABLE', 'true'
buildConfigField 'boolean', 'RATE_APP_AVAILABLE', 'true' buildConfigField 'boolean', 'RATE_APP_AVAILABLE', 'true'
buildConfigField 'boolean', 'INSTALL_PACKAGES_AVAILABLE', 'false'
} }
fdroid { fdroid {
buildConfigField 'boolean', 'FIREBASE_AVAILABLE', 'false' buildConfigField 'boolean', 'FIREBASE_AVAILABLE', 'false'
buildConfigField 'boolean', 'RATE_APP_AVAILABLE', 'false' buildConfigField 'boolean', 'RATE_APP_AVAILABLE', 'false'
buildConfigField 'boolean', 'INSTALL_PACKAGES_AVAILABLE', 'true'
} }
} }
@ -56,46 +64,75 @@ android {
kotlinOptions { kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString() jvmTarget = JavaVersion.VERSION_1_8.toString()
freeCompilerArgs += [
'-Xjvm-default=all-compatibility' // https://stackoverflow.com/a/71234042/1440785
]
}
namespace "io.heckel.ntfy"
}
// Disables GoogleServices tasks for F-Droid variant
android.applicationVariants.all { variant ->
def shouldProcessGoogleServices = variant.flavorName == "play"
def googleTask = tasks.findByName("process${variant.name.capitalize()}GoogleServices")
googleTask.enabled = shouldProcessGoogleServices
}
// Strips out REQUEST_INSTALL_PACKAGES permission for Google Play variant
android.applicationVariants.all { variant ->
def shouldStripInstallPermission = variant.flavorName == "play"
if (shouldStripInstallPermission) {
variant.outputs.each { output ->
def processManifest = output.getProcessManifestProvider().get()
processManifest.doLast { task ->
def outputDir = task.getMultiApkManifestOutputDirectory().get().asFile
def manifestOutFile = file("$outputDir/AndroidManifest.xml")
def newFileContents = manifestOutFile.collect { s -> s.contains("android.permission.REQUEST_INSTALL_PACKAGES") ? "" : s }.join("\n")
manifestOutFile.write(newFileContents, 'UTF-8')
}
}
} }
} }
dependencies { dependencies {
// AndroidX, The Basics // AndroidX, The Basics
implementation "androidx.appcompat:appcompat:1.4.2" implementation "androidx.appcompat:appcompat:1.6.1"
implementation "androidx.core:core-ktx:1.8.0" implementation "androidx.core:core-ktx:1.10.1"
implementation "androidx.constraintlayout:constraintlayout:2.1.4" implementation "androidx.constraintlayout:constraintlayout:2.1.4"
implementation "androidx.activity:activity-ktx:1.4.0" implementation "androidx.activity:activity-ktx:1.7.1"
implementation "androidx.fragment:fragment-ktx:1.4.1" implementation "androidx.fragment:fragment-ktx:1.5.7"
implementation "androidx.work:work-runtime-ktx:2.7.1" implementation "androidx.work:work-runtime-ktx:2.8.1"
implementation 'androidx.preference:preference-ktx:1.2.0' implementation 'androidx.preference:preference-ktx:1.2.0'
// JSON serialization // JSON serialization
implementation 'com.google.code.gson:gson:2.9.0' implementation 'com.google.code.gson:gson:2.10'
// Room (SQLite) // Room (SQLite)
def room_version = "2.4.2" def room_version = "2.5.1"
implementation "androidx.room:room-ktx:$room_version" implementation "androidx.room:room-ktx:$room_version"
kapt "androidx.room:room-compiler:$room_version" kapt "androidx.room:room-compiler:$room_version"
// OkHttp (HTTP library) // OkHttp (HTTP library)
implementation 'com.squareup.okhttp3:okhttp:4.9.3' implementation 'com.squareup.okhttp3:okhttp:4.10.0'
// Firebase, sigh ... (only Google Play) // Firebase, sigh ... (only Google Play)
playImplementation 'com.google.firebase:firebase-messaging:23.0.5' playImplementation 'com.google.firebase:firebase-messaging:23.1.2'
// RecyclerView // RecyclerView
implementation "androidx.recyclerview:recyclerview:1.3.0-alpha02" implementation "androidx.recyclerview:recyclerview:1.3.0"
// Swipe down to refresh // Swipe down to refresh
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
// Material design // Material design
implementation "com.google.android.material:material:1.6.1" implementation "com.google.android.material:material:1.9.0"
// LiveData // LiveData
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.6.1"
implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0'
// Image viewer // Image viewer
implementation 'com.github.stfalcon-studio:StfalconImageViewer:v1.0.1' implementation 'com.github.stfalcon-studio:StfalconImageViewer:v1.0.1'
implementation 'foundation.e:elib:0.0.1-alpha11'
} }

View file

@ -0,0 +1,356 @@
{
"formatVersion": 1,
"database": {
"version": 13,
"identityHash": "44fc291d937fdf02b9bc2d0abb10d2e0",
"entities": [
{
"tableName": "Subscription",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `baseUrl` TEXT NOT NULL, `topic` TEXT NOT NULL, `instant` INTEGER NOT NULL, `mutedUntil` INTEGER NOT NULL, `minPriority` INTEGER NOT NULL, `autoDelete` INTEGER NOT NULL, `insistent` INTEGER NOT NULL, `lastNotificationId` TEXT, `icon` TEXT, `upAppId` TEXT, `upConnectorToken` TEXT, `displayName` TEXT, `dedicatedChannels` INTEGER NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "baseUrl",
"columnName": "baseUrl",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "topic",
"columnName": "topic",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "instant",
"columnName": "instant",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "mutedUntil",
"columnName": "mutedUntil",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "minPriority",
"columnName": "minPriority",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "autoDelete",
"columnName": "autoDelete",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "insistent",
"columnName": "insistent",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastNotificationId",
"columnName": "lastNotificationId",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "icon",
"columnName": "icon",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "upAppId",
"columnName": "upAppId",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "upConnectorToken",
"columnName": "upConnectorToken",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "displayName",
"columnName": "displayName",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "dedicatedChannels",
"columnName": "dedicatedChannels",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": false
},
"indices": [
{
"name": "index_Subscription_baseUrl_topic",
"unique": true,
"columnNames": [
"baseUrl",
"topic"
],
"orders": [],
"createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_Subscription_baseUrl_topic` ON `${TABLE_NAME}` (`baseUrl`, `topic`)"
},
{
"name": "index_Subscription_upConnectorToken",
"unique": true,
"columnNames": [
"upConnectorToken"
],
"orders": [],
"createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_Subscription_upConnectorToken` ON `${TABLE_NAME}` (`upConnectorToken`)"
}
],
"foreignKeys": []
},
{
"tableName": "Notification",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `subscriptionId` INTEGER NOT NULL, `timestamp` INTEGER NOT NULL, `title` TEXT NOT NULL, `message` TEXT NOT NULL, `encoding` TEXT NOT NULL, `notificationId` INTEGER NOT NULL, `priority` INTEGER NOT NULL DEFAULT 3, `tags` TEXT NOT NULL, `click` TEXT NOT NULL, `actions` TEXT, `deleted` INTEGER NOT NULL, `icon_url` TEXT, `icon_contentUri` TEXT, `attachment_name` TEXT, `attachment_type` TEXT, `attachment_size` INTEGER, `attachment_expires` INTEGER, `attachment_url` TEXT, `attachment_contentUri` TEXT, `attachment_progress` INTEGER, PRIMARY KEY(`id`, `subscriptionId`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "subscriptionId",
"columnName": "subscriptionId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "timestamp",
"columnName": "timestamp",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "title",
"columnName": "title",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "encoding",
"columnName": "encoding",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "notificationId",
"columnName": "notificationId",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "priority",
"columnName": "priority",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "3"
},
{
"fieldPath": "tags",
"columnName": "tags",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "click",
"columnName": "click",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "actions",
"columnName": "actions",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "deleted",
"columnName": "deleted",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "icon.url",
"columnName": "icon_url",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "icon.contentUri",
"columnName": "icon_contentUri",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "attachment.name",
"columnName": "attachment_name",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "attachment.type",
"columnName": "attachment_type",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "attachment.size",
"columnName": "attachment_size",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "attachment.expires",
"columnName": "attachment_expires",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "attachment.url",
"columnName": "attachment_url",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "attachment.contentUri",
"columnName": "attachment_contentUri",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "attachment.progress",
"columnName": "attachment_progress",
"affinity": "INTEGER",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id",
"subscriptionId"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "User",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`baseUrl` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, PRIMARY KEY(`baseUrl`))",
"fields": [
{
"fieldPath": "baseUrl",
"columnName": "baseUrl",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "username",
"columnName": "username",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "password",
"columnName": "password",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"baseUrl"
],
"autoGenerate": false
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "Log",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `timestamp` INTEGER NOT NULL, `tag` TEXT NOT NULL, `level` INTEGER NOT NULL, `message` TEXT NOT NULL, `exception` TEXT)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "timestamp",
"columnName": "timestamp",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "tag",
"columnName": "tag",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "level",
"columnName": "level",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "exception",
"columnName": "exception",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '44fc291d937fdf02b9bc2d0abb10d2e0')"
]
}
}

View file

@ -1,5 +1,6 @@
package io.heckel.ntfy.firebase package io.heckel.ntfy.firebase
@Suppress("UNUSED_PARAMETER")
class FirebaseMessenger { class FirebaseMessenger {
fun subscribe(topic: String) { fun subscribe(topic: String) {
// Dummy to keep F-Droid flavor happy // Dummy to keep F-Droid flavor happy

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.heckel.ntfy"> xmlns:tools="http://schemas.android.com/tools">
<!-- Permissions --> <!-- Permissions -->
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> <!-- For instant delivery foregrounds service --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> <!-- For instant delivery foregrounds service -->
@ -8,14 +9,23 @@
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <!-- To restart service on reboot --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <!-- To restart service on reboot -->
<uses-permission android:name="android.permission.VIBRATE"/> <!-- Incoming notifications should be able to vibrate the phone --> <uses-permission android:name="android.permission.VIBRATE"/> <!-- Incoming notifications should be able to vibrate the phone -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/> <!-- Only required on SDK <= 28 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/> <!-- Only required on SDK <= 28 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> <!-- To install packages downloaded through ntfy; craazyy! -->
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/> <!-- To reschedule the websocket retry --> <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/> <!-- To reschedule the websocket retry -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <!-- As of Android 13, we need to ask for permission to post notifications -->
<!--
Permission REQUEST_INSTALL_PACKAGES (F-Droid only!):
- Permission is used to install .apk files that were received as attachments
- Google rejected the permission for ntfy, so this permission is STRIPPED OUT by the build process
for the Google Play variant of the app.
-->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<application <application
android:name=".app.Application" android:name=".app.Application"
android:allowBackup="true" android:allowBackup="true"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:persistent="true"
android:roundIcon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme" android:theme="@style/AppTheme"
@ -26,10 +36,10 @@
<activity <activity
android:name=".ui.MainActivity" android:name=".ui.MainActivity"
android:label="@string/app_name" android:label="@string/app_name"
android:excludeFromRecents="true"
android:exported="true"> android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter> </intent-filter>
</activity> </activity>
@ -133,6 +143,13 @@
android:exported="false"> android:exported="false">
</receiver> </receiver>
<!-- Broadcast receiver for when the notification is swiped away (currently only to cancel the insistent sound) -->
<receiver
android:name=".msg.NotificationService$DeleteBroadcastReceiver"
android:enabled="true"
android:exported="false">
</receiver>
<!-- Firebase messaging (note that this is empty in the F-Droid flavor) --> <!-- Firebase messaging (note that this is empty in the F-Droid flavor) -->
<service <service
android:name=".firebase.FirebaseService" android:name=".firebase.FirebaseService"
@ -159,5 +176,25 @@
android:name="android.support.FILE_PROVIDER_PATHS" android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/> android:resource="@xml/file_paths"/>
</provider> </provider>
<activity
android:name=".ui.MainSettingsActivity"
android:theme="@style/PreferenceTheme"/>
<activity-alias
android:name=".ui.SettingsActivityLink"
android:exported="true"
android:label="@string/eos_settings_title"
android:targetActivity=".ui.MainSettingsActivity">
<intent-filter>
<action android:name="com.android.settings.action.EXTRA_SETTINGS" />
</intent-filter>
<meta-data
android:name="com.android.settings.category"
android:value="com.android.settings.category.device" />
<meta-data
android:name="com.android.settings.icon"
android:resource="@drawable/ic_notification" />
</activity-alias>
</application> </application>
</manifest> </manifest>

View file

@ -1,16 +1,10 @@
package io.heckel.ntfy.app package io.heckel.ntfy.app
import android.app.Application import android.app.Application
import android.content.Context
import io.heckel.ntfy.db.Database
import io.heckel.ntfy.db.Repository import io.heckel.ntfy.db.Repository
import io.heckel.ntfy.util.Log import io.heckel.ntfy.util.Log
class Application : Application() { class Application : Application() {
private val database by lazy {
Log.init(this) // What a hack, but this is super early and used everywhere
Database.getInstance(this)
}
val repository by lazy { val repository by lazy {
val repository = Repository.getInstance(applicationContext) val repository = Repository.getInstance(applicationContext)
if (repository.getRecordLogs()) { if (repository.getRecordLogs()) {

View file

@ -5,9 +5,11 @@ import android.net.Uri
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.GsonBuilder import com.google.gson.GsonBuilder
import com.google.gson.stream.JsonReader import com.google.gson.stream.JsonReader
import io.heckel.ntfy.R
import io.heckel.ntfy.app.Application import io.heckel.ntfy.app.Application
import io.heckel.ntfy.db.Icon
import io.heckel.ntfy.db.Repository import io.heckel.ntfy.db.Repository
import io.heckel.ntfy.firebase.FirebaseMessenger
import io.heckel.ntfy.msg.NotificationService
import io.heckel.ntfy.util.Log import io.heckel.ntfy.util.Log
import io.heckel.ntfy.util.topicUrl import io.heckel.ntfy.util.topicUrl
import java.io.InputStreamReader import java.io.InputStreamReader
@ -16,6 +18,8 @@ class Backuper(val context: Context) {
private val gson = Gson() private val gson = Gson()
private val resolver = context.applicationContext.contentResolver private val resolver = context.applicationContext.contentResolver
private val repository = (context.applicationContext as Application).repository private val repository = (context.applicationContext as Application).repository
private val messenger = FirebaseMessenger()
private val notifier = NotificationService(context)
suspend fun backup(uri: Uri, withSettings: Boolean = true, withSubscriptions: Boolean = true, withUsers: Boolean = true) { suspend fun backup(uri: Uri, withSettings: Boolean = true, withSubscriptions: Boolean = true, withUsers: Boolean = true) {
Log.d(TAG, "Backing up settings to file $uri") Log.d(TAG, "Backing up settings to file $uri")
@ -86,24 +90,40 @@ class Backuper(val context: Context) {
private suspend fun applySubscriptions(subscriptions: List<Subscription>?) { private suspend fun applySubscriptions(subscriptions: List<Subscription>?) {
if (subscriptions == null) { if (subscriptions == null) {
return; return
} }
val appBaseUrl = context.getString(R.string.app_base_url)
subscriptions.forEach { s -> subscriptions.forEach { s ->
try { try {
repository.addSubscription(io.heckel.ntfy.db.Subscription( // Add to database
val subscription = io.heckel.ntfy.db.Subscription(
id = s.id, id = s.id,
baseUrl = s.baseUrl, baseUrl = s.baseUrl,
topic = s.topic, topic = s.topic,
instant = s.instant, instant = s.instant,
dedicatedChannels = s.dedicatedChannels,
mutedUntil = s.mutedUntil, mutedUntil = s.mutedUntil,
minPriority = s.minPriority ?: Repository.MIN_PRIORITY_USE_GLOBAL, minPriority = s.minPriority ?: Repository.MIN_PRIORITY_USE_GLOBAL,
autoDelete = s.autoDelete ?: Repository.AUTO_DELETE_USE_GLOBAL, autoDelete = s.autoDelete ?: Repository.AUTO_DELETE_USE_GLOBAL,
insistent = s.insistent ?: Repository.INSISTENT_MAX_PRIORITY_USE_GLOBAL,
lastNotificationId = s.lastNotificationId, lastNotificationId = s.lastNotificationId,
icon = s.icon, icon = s.icon,
upAppId = s.upAppId, upAppId = s.upAppId,
upConnectorToken = s.upConnectorToken, upConnectorToken = s.upConnectorToken,
displayName = s.displayName, displayName = s.displayName,
)) )
repository.addSubscription(subscription)
// Subscribe to Firebase topics
if (s.baseUrl == appBaseUrl) {
messenger.subscribe(s.topic)
}
// Create dedicated channels
if (s.dedicatedChannels) {
notifier.createSubscriptionNotificationChannels(subscription)
// TODO Backup/restore individual notification channel settings
}
} catch (e: Exception) { } catch (e: Exception) {
Log.w(TAG, "Unable to restore subscription ${s.id} (${topicUrl(s.baseUrl, s.topic)}): ${e.message}. Ignoring.", e) Log.w(TAG, "Unable to restore subscription ${s.id} (${topicUrl(s.baseUrl, s.topic)}): ${e.message}. Ignoring.", e)
} }
@ -112,7 +132,7 @@ class Backuper(val context: Context) {
private suspend fun applyNotifications(notifications: List<Notification>?) { private suspend fun applyNotifications(notifications: List<Notification>?) {
if (notifications == null) { if (notifications == null) {
return; return
} }
notifications.forEach { n -> notifications.forEach { n ->
try { try {
@ -181,7 +201,7 @@ class Backuper(val context: Context) {
private suspend fun applyUsers(users: List<User>?) { private suspend fun applyUsers(users: List<User>?) {
if (users == null) { if (users == null) {
return; return
} }
users.forEach { u -> users.forEach { u ->
try { try {
@ -229,9 +249,11 @@ class Backuper(val context: Context) {
baseUrl = s.baseUrl, baseUrl = s.baseUrl,
topic = s.topic, topic = s.topic,
instant = s.instant, instant = s.instant,
dedicatedChannels = s.dedicatedChannels,
mutedUntil = s.mutedUntil, mutedUntil = s.mutedUntil,
minPriority = s.minPriority, minPriority = s.minPriority,
autoDelete = s.autoDelete, autoDelete = s.autoDelete,
insistent = s.insistent,
lastNotificationId = s.lastNotificationId, lastNotificationId = s.lastNotificationId,
icon = s.icon, icon = s.icon,
upAppId = s.upAppId, upAppId = s.upAppId,
@ -346,9 +368,11 @@ data class Subscription(
val baseUrl: String, val baseUrl: String,
val topic: String, val topic: String,
val instant: Boolean, val instant: Boolean,
val dedicatedChannels: Boolean,
val mutedUntil: Long, val mutedUntil: Long,
val minPriority: Int?, val minPriority: Int?,
val autoDelete: Long?, val autoDelete: Long?,
val insistent: Int?,
val lastNotificationId: String?, val lastNotificationId: String?,
val icon: String?, val icon: String?,
val upAppId: String?, val upAppId: String?,

View file

@ -18,18 +18,54 @@ data class Subscription(
@ColumnInfo(name = "mutedUntil") val mutedUntil: Long, @ColumnInfo(name = "mutedUntil") val mutedUntil: Long,
@ColumnInfo(name = "minPriority") val minPriority: Int, @ColumnInfo(name = "minPriority") val minPriority: Int,
@ColumnInfo(name = "autoDelete") val autoDelete: Long, // Seconds @ColumnInfo(name = "autoDelete") val autoDelete: Long, // Seconds
@ColumnInfo(name = "insistent") val insistent: Int, // Ring constantly for max priority notifications (-1 = use global, 0 = off, 1 = on)
@ColumnInfo(name = "lastNotificationId") val lastNotificationId: String?, // Used for polling, with since=<id> @ColumnInfo(name = "lastNotificationId") val lastNotificationId: String?, // Used for polling, with since=<id>
@ColumnInfo(name = "icon") val icon: String?, // content://-URI (or later other identifier) @ColumnInfo(name = "icon") val icon: String?, // content://-URI (or later other identifier)
@ColumnInfo(name = "upAppId") val upAppId: String?, // UnifiedPush application package name @ColumnInfo(name = "upAppId") val upAppId: String?, // UnifiedPush application package name
@ColumnInfo(name = "upConnectorToken") val upConnectorToken: String?, // UnifiedPush connector token @ColumnInfo(name = "upConnectorToken") val upConnectorToken: String?, // UnifiedPush connector token
@ColumnInfo(name = "displayName") val displayName: String?, @ColumnInfo(name = "displayName") val displayName: String?,
@ColumnInfo(name = "dedicatedChannels") val dedicatedChannels: Boolean,
@Ignore val totalCount: Int = 0, // Total notifications @Ignore val totalCount: Int = 0, // Total notifications
@Ignore val newCount: Int = 0, // New notifications @Ignore val newCount: Int = 0, // New notifications
@Ignore val lastActive: Long = 0, // Unix timestamp @Ignore val lastActive: Long = 0, // Unix timestamp
@Ignore val state: ConnectionState = ConnectionState.NOT_APPLICABLE @Ignore val state: ConnectionState = ConnectionState.NOT_APPLICABLE
) { ) {
constructor(id: Long, baseUrl: String, topic: String, instant: Boolean, mutedUntil: Long, minPriority: Int, autoDelete: Long, lastNotificationId: String, icon: String, upAppId: String, upConnectorToken: String, displayName: String?) : constructor(
this(id, baseUrl, topic, instant, mutedUntil, minPriority, autoDelete, lastNotificationId, icon, upAppId, upConnectorToken, displayName, 0, 0, 0, ConnectionState.NOT_APPLICABLE) id: Long,
baseUrl: String,
topic: String,
instant: Boolean,
mutedUntil: Long,
minPriority: Int,
autoDelete: Long,
insistent: Int,
lastNotificationId: String,
icon: String,
upAppId: String,
upConnectorToken: String,
displayName: String?,
dedicatedChannels: Boolean
) :
this(
id,
baseUrl,
topic,
instant,
mutedUntil,
minPriority,
autoDelete,
insistent,
lastNotificationId,
icon,
upAppId,
upConnectorToken,
displayName,
dedicatedChannels,
totalCount = 0,
newCount = 0,
lastActive = 0,
state = ConnectionState.NOT_APPLICABLE
)
} }
enum class ConnectionState { enum class ConnectionState {
@ -44,11 +80,13 @@ data class SubscriptionWithMetadata(
val mutedUntil: Long, val mutedUntil: Long,
val autoDelete: Long, val autoDelete: Long,
val minPriority: Int, val minPriority: Int,
val insistent: Int,
val lastNotificationId: String?, val lastNotificationId: String?,
val icon: String?, val icon: String?,
val upAppId: String?, val upAppId: String?,
val upConnectorToken: String?, val upConnectorToken: String?,
val displayName: String?, val displayName: String?,
val dedicatedChannels: Boolean,
val totalCount: Int, val totalCount: Int,
val newCount: Int, val newCount: Int,
val lastActive: Long val lastActive: Long
@ -158,7 +196,7 @@ data class LogEntry(
this(0, timestamp, tag, level, message, exception) this(0, timestamp, tag, level, message, exception)
} }
@androidx.room.Database(entities = [Subscription::class, Notification::class, User::class, LogEntry::class], version = 12) @androidx.room.Database(entities = [Subscription::class, Notification::class, User::class, LogEntry::class], version = 13)
@TypeConverters(Converters::class) @TypeConverters(Converters::class)
abstract class Database : RoomDatabase() { abstract class Database : RoomDatabase() {
abstract fun subscriptionDao(): SubscriptionDao abstract fun subscriptionDao(): SubscriptionDao
@ -185,6 +223,7 @@ abstract class Database : RoomDatabase() {
.addMigrations(MIGRATION_9_10) .addMigrations(MIGRATION_9_10)
.addMigrations(MIGRATION_10_11) .addMigrations(MIGRATION_10_11)
.addMigrations(MIGRATION_11_12) .addMigrations(MIGRATION_11_12)
.addMigrations(MIGRATION_12_13)
.fallbackToDestructiveMigration() .fallbackToDestructiveMigration()
.build() .build()
this.instance = instance this.instance = instance
@ -283,6 +322,13 @@ abstract class Database : RoomDatabase() {
db.execSQL("ALTER TABLE Notification ADD COLUMN icon_contentUri TEXT") db.execSQL("ALTER TABLE Notification ADD COLUMN icon_contentUri TEXT")
} }
} }
private val MIGRATION_12_13 = object : Migration(12, 13) {
override fun migrate(db: SupportSQLiteDatabase) {
db.execSQL("ALTER TABLE Subscription ADD COLUMN insistent INTEGER NOT NULL DEFAULT (-1)") // = Repository.INSISTENT_MAX_PRIORITY_USE_GLOBAL
db.execSQL("ALTER TABLE Subscription ADD COLUMN dedicatedChannels INTEGER NOT NULL DEFAULT (0)")
}
}
} }
} }
@ -290,7 +336,7 @@ abstract class Database : RoomDatabase() {
interface SubscriptionDao { interface SubscriptionDao {
@Query(""" @Query("""
SELECT SELECT
s.id, s.baseUrl, s.topic, s.instant, s.mutedUntil, s.minPriority, s.autoDelete, s.lastNotificationId, s.icon, s.upAppId, s.upConnectorToken, s.displayName, s.id, s.baseUrl, s.topic, s.instant, s.mutedUntil, s.minPriority, s.autoDelete, s.insistent, s.lastNotificationId, s.icon, s.upAppId, s.upConnectorToken, s.displayName, s.dedicatedChannels,
COUNT(n.id) totalCount, COUNT(n.id) totalCount,
COUNT(CASE n.notificationId WHEN 0 THEN NULL ELSE n.id END) newCount, COUNT(CASE n.notificationId WHEN 0 THEN NULL ELSE n.id END) newCount,
IFNULL(MAX(n.timestamp),0) AS lastActive IFNULL(MAX(n.timestamp),0) AS lastActive
@ -303,7 +349,7 @@ interface SubscriptionDao {
@Query(""" @Query("""
SELECT SELECT
s.id, s.baseUrl, s.topic, s.instant, s.mutedUntil, s.minPriority, s.autoDelete, s.lastNotificationId, s.icon, s.upAppId, s.upConnectorToken, s.displayName, s.id, s.baseUrl, s.topic, s.instant, s.mutedUntil, s.minPriority, s.autoDelete, s.insistent, s.lastNotificationId, s.icon, s.upAppId, s.upConnectorToken, s.displayName, s.dedicatedChannels,
COUNT(n.id) totalCount, COUNT(n.id) totalCount,
COUNT(CASE n.notificationId WHEN 0 THEN NULL ELSE n.id END) newCount, COUNT(CASE n.notificationId WHEN 0 THEN NULL ELSE n.id END) newCount,
IFNULL(MAX(n.timestamp),0) AS lastActive IFNULL(MAX(n.timestamp),0) AS lastActive
@ -316,7 +362,7 @@ interface SubscriptionDao {
@Query(""" @Query("""
SELECT SELECT
s.id, s.baseUrl, s.topic, s.instant, s.mutedUntil, s.minPriority, s.autoDelete, s.lastNotificationId, s.icon, s.upAppId, s.upConnectorToken, s.displayName, s.id, s.baseUrl, s.topic, s.instant, s.mutedUntil, s.minPriority, s.autoDelete, s.insistent, s.lastNotificationId, s.icon, s.upAppId, s.upConnectorToken, s.displayName, s.dedicatedChannels,
COUNT(n.id) totalCount, COUNT(n.id) totalCount,
COUNT(CASE n.notificationId WHEN 0 THEN NULL ELSE n.id END) newCount, COUNT(CASE n.notificationId WHEN 0 THEN NULL ELSE n.id END) newCount,
IFNULL(MAX(n.timestamp),0) AS lastActive IFNULL(MAX(n.timestamp),0) AS lastActive
@ -329,7 +375,7 @@ interface SubscriptionDao {
@Query(""" @Query("""
SELECT SELECT
s.id, s.baseUrl, s.topic, s.instant, s.mutedUntil, s.minPriority, s.autoDelete, s.lastNotificationId, s.icon, s.upAppId, s.upConnectorToken, s.displayName, s.id, s.baseUrl, s.topic, s.instant, s.mutedUntil, s.minPriority, s.autoDelete, s.insistent, s.lastNotificationId, s.icon, s.upAppId, s.upConnectorToken, s.displayName, s.dedicatedChannels,
COUNT(n.id) totalCount, COUNT(n.id) totalCount,
COUNT(CASE n.notificationId WHEN 0 THEN NULL ELSE n.id END) newCount, COUNT(CASE n.notificationId WHEN 0 THEN NULL ELSE n.id END) newCount,
IFNULL(MAX(n.timestamp),0) AS lastActive IFNULL(MAX(n.timestamp),0) AS lastActive
@ -342,7 +388,7 @@ interface SubscriptionDao {
@Query(""" @Query("""
SELECT SELECT
s.id, s.baseUrl, s.topic, s.instant, s.mutedUntil, s.minPriority, s.autoDelete, s.lastNotificationId, s.icon, s.upAppId, s.upConnectorToken, s.displayName, s.id, s.baseUrl, s.topic, s.instant, s.mutedUntil, s.minPriority, s.autoDelete, s.insistent, s.lastNotificationId, s.icon, s.upAppId, s.upConnectorToken, s.displayName, s.dedicatedChannels,
COUNT(n.id) totalCount, COUNT(n.id) totalCount,
COUNT(CASE n.notificationId WHEN 0 THEN NULL ELSE n.id END) newCount, COUNT(CASE n.notificationId WHEN 0 THEN NULL ELSE n.id END) newCount,
IFNULL(MAX(n.timestamp),0) AS lastActive IFNULL(MAX(n.timestamp),0) AS lastActive

View file

@ -2,6 +2,7 @@ package io.heckel.ntfy.db
import android.content.Context import android.content.Context
import android.content.SharedPreferences import android.content.SharedPreferences
import android.media.MediaPlayer
import android.os.Build import android.os.Build
import androidx.annotation.WorkerThread import androidx.annotation.WorkerThread
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
@ -18,7 +19,10 @@ class Repository(private val sharedPrefs: SharedPreferences, private val databas
private val connectionStates = ConcurrentHashMap<Long, ConnectionState>() private val connectionStates = ConcurrentHashMap<Long, ConnectionState>()
private val connectionStatesLiveData = MutableLiveData(connectionStates) private val connectionStatesLiveData = MutableLiveData(connectionStates)
// TODO Move these into an ApplicationState singleton
val detailViewSubscriptionId = AtomicLong(0L) // Omg, what a hack ... val detailViewSubscriptionId = AtomicLong(0L) // Omg, what a hack ...
val mediaPlayer = MediaPlayer()
init { init {
Log.d(TAG, "Created $this") Log.d(TAG, "Created $this")
@ -288,6 +292,26 @@ class Repository(private val sharedPrefs: SharedPreferences, private val databas
.apply() .apply()
} }
fun getUnifiedPushEnabled(): Boolean {
return sharedPrefs.getBoolean(SHARED_PREFS_UNIFIEDPUSH_ENABLED, true) // Enabled by default
}
fun setUnifiedPushEnabled(enabled: Boolean) {
sharedPrefs.edit()
.putBoolean(SHARED_PREFS_UNIFIEDPUSH_ENABLED, enabled)
.apply()
}
fun getInsistentMaxPriorityEnabled(): Boolean {
return sharedPrefs.getBoolean(SHARED_PREFS_INSISTENT_MAX_PRIORITY_ENABLED, false) // Disabled by default
}
fun setInsistentMaxPriorityEnabled(enabled: Boolean) {
sharedPrefs.edit()
.putBoolean(SHARED_PREFS_INSISTENT_MAX_PRIORITY_ENABLED, enabled)
.apply()
}
fun getRecordLogs(): Boolean { fun getRecordLogs(): Boolean {
return sharedPrefs.getBoolean(SHARED_PREFS_RECORD_LOGS_ENABLED, false) // Disabled by default return sharedPrefs.getBoolean(SHARED_PREFS_RECORD_LOGS_ENABLED, false) // Disabled by default
} }
@ -385,9 +409,11 @@ class Repository(private val sharedPrefs: SharedPreferences, private val databas
baseUrl = s.baseUrl, baseUrl = s.baseUrl,
topic = s.topic, topic = s.topic,
instant = s.instant, instant = s.instant,
dedicatedChannels = s.dedicatedChannels,
mutedUntil = s.mutedUntil, mutedUntil = s.mutedUntil,
minPriority = s.minPriority, minPriority = s.minPriority,
autoDelete = s.autoDelete, autoDelete = s.autoDelete,
insistent = s.insistent,
lastNotificationId = s.lastNotificationId, lastNotificationId = s.lastNotificationId,
icon = s.icon, icon = s.icon,
upAppId = s.upAppId, upAppId = s.upAppId,
@ -410,9 +436,11 @@ class Repository(private val sharedPrefs: SharedPreferences, private val databas
baseUrl = s.baseUrl, baseUrl = s.baseUrl,
topic = s.topic, topic = s.topic,
instant = s.instant, instant = s.instant,
dedicatedChannels = s.dedicatedChannels,
mutedUntil = s.mutedUntil, mutedUntil = s.mutedUntil,
minPriority = s.minPriority, minPriority = s.minPriority,
autoDelete = s.autoDelete, autoDelete = s.autoDelete,
insistent = s.insistent,
lastNotificationId = s.lastNotificationId, lastNotificationId = s.lastNotificationId,
icon = s.icon, icon = s.icon,
upAppId = s.upAppId, upAppId = s.upAppId,
@ -459,6 +487,8 @@ class Repository(private val sharedPrefs: SharedPreferences, private val databas
const val SHARED_PREFS_CONNECTION_PROTOCOL = "ConnectionProtocol" const val SHARED_PREFS_CONNECTION_PROTOCOL = "ConnectionProtocol"
const val SHARED_PREFS_DARK_MODE = "DarkMode" const val SHARED_PREFS_DARK_MODE = "DarkMode"
const val SHARED_PREFS_BROADCAST_ENABLED = "BroadcastEnabled" const val SHARED_PREFS_BROADCAST_ENABLED = "BroadcastEnabled"
const val SHARED_PREFS_UNIFIEDPUSH_ENABLED = "UnifiedPushEnabled"
const val SHARED_PREFS_INSISTENT_MAX_PRIORITY_ENABLED = "InsistentMaxPriority"
const val SHARED_PREFS_RECORD_LOGS_ENABLED = "RecordLogs" const val SHARED_PREFS_RECORD_LOGS_ENABLED = "RecordLogs"
const val SHARED_PREFS_BATTERY_OPTIMIZATIONS_REMIND_TIME = "BatteryOptimizationsRemindTime" const val SHARED_PREFS_BATTERY_OPTIMIZATIONS_REMIND_TIME = "BatteryOptimizationsRemindTime"
const val SHARED_PREFS_WEBSOCKET_REMIND_TIME = "JsonStreamRemindTime" // "Use WebSocket" banner (used to be JSON stream deprecation banner) const val SHARED_PREFS_WEBSOCKET_REMIND_TIME = "JsonStreamRemindTime" // "Use WebSocket" banner (used to be JSON stream deprecation banner)
@ -490,6 +520,9 @@ class Repository(private val sharedPrefs: SharedPreferences, private val databas
const val AUTO_DELETE_THREE_MONTHS_SECONDS = 90 * ONE_DAY_SECONDS const val AUTO_DELETE_THREE_MONTHS_SECONDS = 90 * ONE_DAY_SECONDS
const val AUTO_DELETE_DEFAULT_SECONDS = AUTO_DELETE_ONE_MONTH_SECONDS const val AUTO_DELETE_DEFAULT_SECONDS = AUTO_DELETE_ONE_MONTH_SECONDS
const val INSISTENT_MAX_PRIORITY_USE_GLOBAL = -1 // Values must match values.xml
const val INSISTENT_MAX_PRIORITY_ENABLED = 1 // 0 = Disabled (but not needed in code)
const val CONNECTION_PROTOCOL_JSONHTTP = "jsonhttp" const val CONNECTION_PROTOCOL_JSONHTTP = "jsonhttp"
const val CONNECTION_PROTOCOL_WS = "ws" const val CONNECTION_PROTOCOL_WS = "ws"

View file

@ -37,7 +37,7 @@ class ApiService {
user: User? = null, user: User? = null,
message: String, message: String,
title: String = "", title: String = "",
priority: Int = 3, priority: Int = PRIORITY_DEFAULT,
tags: List<String> = emptyList(), tags: List<String> = emptyList(),
delay: String = "", delay: String = "",
body: RequestBody? = null, body: RequestBody? = null,
@ -45,7 +45,7 @@ class ApiService {
) { ) {
val url = topicUrl(baseUrl, topic) val url = topicUrl(baseUrl, topic)
val query = mutableListOf<String>() val query = mutableListOf<String>()
if (priority in 1..5) { if (priority in ALL_PRIORITIES) {
query.add("priority=$priority") query.add("priority=$priority")
} }
if (tags.isNotEmpty()) { if (tags.isNotEmpty()) {
@ -95,7 +95,7 @@ class ApiService {
throw Exception("Unexpected response ${response.code} when polling topic $url") throw Exception("Unexpected response ${response.code} when polling topic $url")
} }
val body = response.body?.string()?.trim() val body = response.body?.string()?.trim()
if (body == null || body.isEmpty()) return emptyList() if (body.isNullOrEmpty()) return emptyList()
val notifications = body.lines().mapNotNull { line -> val notifications = body.lines().mapNotNull { line ->
parser.parse(line, subscriptionId = subscriptionId, notificationId = 0) // No notification when we poll parser.parse(line, subscriptionId = subscriptionId, notificationId = 0) // No notification when we poll
} }
@ -108,6 +108,7 @@ class ApiService {
fun subscribe( fun subscribe(
baseUrl: String, baseUrl: String,
topics: String, topics: String,
unifiedPushTopics: String,
since: String?, since: String?,
user: User?, user: User?,
notify: (topic: String, Notification) -> Unit, notify: (topic: String, Notification) -> Unit,
@ -116,7 +117,7 @@ class ApiService {
val sinceVal = since ?: "all" val sinceVal = since ?: "all"
val url = topicUrlJson(baseUrl, topics, sinceVal) val url = topicUrlJson(baseUrl, topics, sinceVal)
Log.d(TAG, "Opening subscription connection to $url") Log.d(TAG, "Opening subscription connection to $url")
val request = requestBuilder(url, user).build() val request = requestBuilder(url, user, unifiedPushTopics).build()
val call = subscriberClient.newCall(request) val call = subscriberClient.newCall(request)
call.enqueue(object : Callback { call.enqueue(object : Callback {
override fun onResponse(call: Call, response: Response) { override fun onResponse(call: Call, response: Response) {
@ -166,7 +167,7 @@ class ApiService {
} }
class UnauthorizedException(val user: User?) : Exception() class UnauthorizedException(val user: User?) : Exception()
class EntityTooLargeException() : Exception() class EntityTooLargeException : Exception()
companion object { companion object {
val USER_AGENT = "ntfy/${BuildConfig.VERSION_NAME} (${BuildConfig.FLAVOR}; Android ${Build.VERSION.RELEASE}; SDK ${Build.VERSION.SDK_INT})" val USER_AGENT = "ntfy/${BuildConfig.VERSION_NAME} (${BuildConfig.FLAVOR}; Android ${Build.VERSION.RELEASE}; SDK ${Build.VERSION.SDK_INT})"
@ -178,13 +179,16 @@ class ApiService {
const val EVENT_KEEPALIVE = "keepalive" const val EVENT_KEEPALIVE = "keepalive"
const val EVENT_POLL_REQUEST = "poll_request" const val EVENT_POLL_REQUEST = "poll_request"
fun requestBuilder(url: String, user: User?): Request.Builder { fun requestBuilder(url: String, user: User?, unifiedPushTopics: String? = null): Request.Builder {
val builder = Request.Builder() val builder = Request.Builder()
.url(url) .url(url)
.addHeader("User-Agent", USER_AGENT) .addHeader("User-Agent", USER_AGENT)
if (user != null) { if (user != null) {
builder.addHeader("Authorization", Credentials.basic(user.username, user.password, UTF_8)) builder.addHeader("Authorization", Credentials.basic(user.username, user.password, UTF_8))
} }
if (unifiedPushTopics != null) {
builder.addHeader("Rate-Topics", unifiedPushTopics)
}
return builder return builder
} }
} }

View file

@ -11,7 +11,7 @@ import io.heckel.ntfy.util.Log
* Download attachment in the background via WorkManager * Download attachment in the background via WorkManager
* *
* The indirection via WorkManager is required since this code may be executed * The indirection via WorkManager is required since this code may be executed
* in a doze state and Internet may not be available. It's also best practice apparently. * in a doze state and Internet may not be available. It's also best practice, apparently.
*/ */
object DownloadManager { object DownloadManager {
private const val TAG = "NtfyDownloadManager" private const val TAG = "NtfyDownloadManager"
@ -24,7 +24,6 @@ object DownloadManager {
DownloadType.ATTACHMENT -> enqueueAttachment(context, notificationId, userAction) DownloadType.ATTACHMENT -> enqueueAttachment(context, notificationId, userAction)
DownloadType.ICON -> enqueueIcon(context, notificationId) DownloadType.ICON -> enqueueIcon(context, notificationId)
DownloadType.BOTH -> enqueueAttachmentAndIcon(context, notificationId, userAction) DownloadType.BOTH -> enqueueAttachmentAndIcon(context, notificationId, userAction)
else -> Log.w(DownloadManager.TAG, "This should never happen. No download type given")
} }
} }

View file

@ -19,7 +19,7 @@ class NotificationDispatcher(val context: Context, val repository: Repository) {
private val distributor = Distributor(context) private val distributor = Distributor(context)
fun init() { fun init() {
notifier.createNotificationChannels() notifier.createDefaultNotificationChannels()
} }
fun dispatch(subscription: Subscription, notification: Notification) { fun dispatch(subscription: Subscription, notification: Notification) {

View file

@ -50,7 +50,7 @@ class NotificationParser {
) )
} }
} else null } else null
val icon: Icon? = if (message.icon != null) Icon(url = message.icon) else null val icon: Icon? = if (message.icon != null && message.icon != "") Icon(url = message.icon) else null
val notification = Notification( val notification = Notification(
id = message.id, id = message.id,
subscriptionId = subscriptionId, subscriptionId = subscriptionId,

View file

@ -5,6 +5,8 @@ import android.content.ActivityNotFoundException
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.media.AudioAttributes
import android.media.AudioManager
import android.media.RingtoneManager import android.media.RingtoneManager
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
@ -21,9 +23,9 @@ import io.heckel.ntfy.ui.MainActivity
import io.heckel.ntfy.util.* import io.heckel.ntfy.util.*
import java.util.* import java.util.*
class NotificationService(val context: Context) { class NotificationService(val context: Context) {
private val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager private val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
private val repository = Repository.getInstance(context)
fun display(subscription: Subscription, notification: Notification) { fun display(subscription: Subscription, notification: Notification) {
Log.d(TAG, "Displaying notification $notification") Log.d(TAG, "Displaying notification $notification")
@ -51,27 +53,56 @@ class NotificationService(val context: Context) {
fun cancel(notificationId: Int) { fun cancel(notificationId: Int) {
if (notificationId != 0) { if (notificationId != 0) {
Log.d(TAG, "Cancelling notification ${notificationId}") Log.d(TAG, "Cancelling notification $notificationId")
notificationManager.cancel(notificationId) notificationManager.cancel(notificationId)
} }
} }
fun createNotificationChannels() { fun createDefaultNotificationChannels() {
(1..5).forEach { priority -> maybeCreateNotificationChannel(priority) } maybeCreateNotificationGroup(DEFAULT_GROUP, context.getString(R.string.channel_notifications_group_default_name))
ALL_PRIORITIES.forEach { priority -> maybeCreateNotificationChannel(DEFAULT_GROUP, priority) }
}
fun createSubscriptionNotificationChannels(subscription: Subscription) {
val groupId = subscriptionGroupId(subscription)
maybeCreateNotificationGroup(groupId, subscriptionGroupName(subscription))
ALL_PRIORITIES.forEach { priority -> maybeCreateNotificationChannel(groupId, priority) }
}
fun deleteSubscriptionNotificationChannels(subscription: Subscription) {
val groupId = subscriptionGroupId(subscription)
ALL_PRIORITIES.forEach { priority -> maybeDeleteNotificationChannel(groupId, priority) }
maybeDeleteNotificationGroup(groupId)
}
fun channelsSupported(): Boolean {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
}
private fun subscriptionGroupId(subscription: Subscription): String {
return SUBSCRIPTION_GROUP_PREFIX + subscription.id.toString()
}
private fun subscriptionGroupName(subscription: Subscription): String {
return subscription.displayName ?: subscriptionTopicShortUrl(subscription)
} }
private fun displayInternal(subscription: Subscription, notification: Notification, update: Boolean = false) { private fun displayInternal(subscription: Subscription, notification: Notification, update: Boolean = false) {
val title = formatTitle(subscription, notification) val title = formatTitle(subscription, notification)
val channelId = toChannelId(notification.priority) val groupId = if (subscription.dedicatedChannels) subscriptionGroupId(subscription) else DEFAULT_GROUP
val channelId = toChannelId(groupId, notification.priority)
val insistent = notification.priority == PRIORITY_MAX &&
(repository.getInsistentMaxPriorityEnabled() || subscription.insistent == Repository.INSISTENT_MAX_PRIORITY_ENABLED)
val builder = NotificationCompat.Builder(context, channelId) val builder = NotificationCompat.Builder(context, channelId)
.setSmallIcon(R.drawable.ic_notification) .setSmallIcon(R.drawable.ic_notification)
.setColor(ContextCompat.getColor(context, Colors.notificationIcon)) .setColor(ContextCompat.getColor(context, Colors.notificationIcon(context)))
.setContentTitle(title) .setContentTitle(title)
.setOnlyAlertOnce(true) // Do not vibrate or play sound if already showing (updates!) .setOnlyAlertOnce(true) // Do not vibrate or play sound if already showing (updates!)
.setAutoCancel(true) // Cancel when notification is clicked .setAutoCancel(true) // Cancel when notification is clicked
setStyleAndText(builder, subscription, notification) // Preview picture or big text style setStyleAndText(builder, subscription, notification) // Preview picture or big text style
setClickAction(builder, subscription, notification) setClickAction(builder, subscription, notification)
maybeSetSound(builder, update) maybeSetDeleteIntent(builder, insistent)
maybeSetSound(builder, insistent, update)
maybeSetProgress(builder, notification) maybeSetProgress(builder, notification)
maybeAddOpenAction(builder, notification) maybeAddOpenAction(builder, notification)
maybeAddBrowseAction(builder, notification) maybeAddBrowseAction(builder, notification)
@ -79,12 +110,26 @@ class NotificationService(val context: Context) {
maybeAddCancelAction(builder, notification) maybeAddCancelAction(builder, notification)
maybeAddUserActions(builder, notification) maybeAddUserActions(builder, notification)
maybeCreateNotificationChannel(notification.priority) maybeCreateNotificationGroup(groupId, subscriptionGroupName(subscription))
maybeCreateNotificationChannel(groupId, notification.priority)
maybePlayInsistentSound(groupId, insistent)
notificationManager.notify(notification.notificationId, builder.build()) notificationManager.notify(notification.notificationId, builder.build())
} }
private fun maybeSetSound(builder: NotificationCompat.Builder, update: Boolean) { private fun maybeSetDeleteIntent(builder: NotificationCompat.Builder, insistent: Boolean) {
if (!update) { if (!insistent) {
return
}
val intent = Intent(context, DeleteBroadcastReceiver::class.java)
val pendingIntent = PendingIntent.getBroadcast(context, Random().nextInt(), intent, PendingIntent.FLAG_IMMUTABLE)
builder.setDeleteIntent(pendingIntent)
}
private fun maybeSetSound(builder: NotificationCompat.Builder, insistent: Boolean, update: Boolean) {
// Note that the sound setting is ignored in Android => O (26) in favor of notification channels
val hasSound = !update && !insistent
if (hasSound) {
val defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION) val defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
builder.setSound(defaultSoundUri) builder.setSound(defaultSoundUri)
} else { } else {
@ -166,6 +211,9 @@ class NotificationService(val context: Context) {
} }
private fun maybeAddOpenAction(builder: NotificationCompat.Builder, notification: Notification) { private fun maybeAddOpenAction(builder: NotificationCompat.Builder, notification: Notification) {
if (!canOpenAttachment(notification.attachment)) {
return
}
if (notification.attachment?.contentUri != null) { if (notification.attachment?.contentUri != null) {
val contentUri = Uri.parse(notification.attachment.contentUri) val contentUri = Uri.parse(notification.attachment.contentUri)
val intent = Intent(Intent.ACTION_VIEW, contentUri).apply { val intent = Intent(Intent.ACTION_VIEW, contentUri).apply {
@ -297,6 +345,18 @@ class NotificationService(val context: Context) {
} }
} }
/**
* Receives a broadcast when a notification is swiped away. This is currently
* only called for notifications with an insistent sound.
*/
class DeleteBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
Log.d(TAG, "Media player: Stopping insistent ring")
val mediaPlayer = Repository.getInstance(context).mediaPlayer
mediaPlayer.stop()
}
}
private fun detailActivityIntent(subscription: Subscription): PendingIntent? { private fun detailActivityIntent(subscription: Subscription): PendingIntent? {
val intent = Intent(context, DetailActivity::class.java).apply { val intent = Intent(context, DetailActivity::class.java).apply {
putExtra(MainActivity.EXTRA_SUBSCRIPTION_ID, subscription.id) putExtra(MainActivity.EXTRA_SUBSCRIPTION_ID, subscription.id)
@ -308,20 +368,21 @@ class NotificationService(val context: Context) {
} }
return TaskStackBuilder.create(context).run { return TaskStackBuilder.create(context).run {
addNextIntentWithParentStack(intent) // Add the intent, which inflates the back stack addNextIntentWithParentStack(intent) // Add the intent, which inflates the back stack
getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE) // Get the PendingIntent containing the entire back stack getPendingIntent(Random().nextInt(), PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE) // Get the PendingIntent containing the entire back stack
} }
} }
private fun maybeCreateNotificationChannel(priority: Int) { private fun maybeCreateNotificationChannel(group: String, priority: Int) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (channelsSupported()) {
// Note: To change a notification channel, you must delete the old one and create a new one! // Note: To change a notification channel, you must delete the old one and create a new one!
val channelId = toChannelId(group, priority)
val pause = 300L val pause = 300L
val channel = when (priority) { val channel = when (priority) {
1 -> NotificationChannel(CHANNEL_ID_MIN, context.getString(R.string.channel_notifications_min_name), NotificationManager.IMPORTANCE_MIN) PRIORITY_MIN -> NotificationChannel(channelId, context.getString(R.string.channel_notifications_min_name), NotificationManager.IMPORTANCE_MIN)
2 -> NotificationChannel(CHANNEL_ID_LOW, context.getString(R.string.channel_notifications_low_name), NotificationManager.IMPORTANCE_LOW) PRIORITY_LOW -> NotificationChannel(channelId, context.getString(R.string.channel_notifications_low_name), NotificationManager.IMPORTANCE_LOW)
4 -> { PRIORITY_HIGH -> {
val channel = NotificationChannel(CHANNEL_ID_HIGH, context.getString(R.string.channel_notifications_high_name), NotificationManager.IMPORTANCE_HIGH) val channel = NotificationChannel(channelId, context.getString(R.string.channel_notifications_high_name), NotificationManager.IMPORTANCE_HIGH)
channel.enableVibration(true) channel.enableVibration(true)
channel.vibrationPattern = longArrayOf( channel.vibrationPattern = longArrayOf(
pause, 100, pause, 100, pause, 100, pause, 100, pause, 100, pause, 100,
@ -329,10 +390,11 @@ class NotificationService(val context: Context) {
) )
channel channel
} }
5 -> { PRIORITY_MAX -> {
val channel = NotificationChannel(CHANNEL_ID_MAX, context.getString(R.string.channel_notifications_max_name), NotificationManager.IMPORTANCE_HIGH) // IMPORTANCE_MAX does not exist val channel = NotificationChannel(channelId, context.getString(R.string.channel_notifications_max_name), NotificationManager.IMPORTANCE_HIGH) // IMPORTANCE_MAX does not exist
channel.enableLights(true) channel.enableLights(true)
channel.enableVibration(true) channel.enableVibration(true)
channel.setBypassDnd(true)
channel.vibrationPattern = longArrayOf( channel.vibrationPattern = longArrayOf(
pause, 100, pause, 100, pause, 100, pause, 100, pause, 100, pause, 100,
pause, 2000, pause, 2000,
@ -343,19 +405,71 @@ class NotificationService(val context: Context) {
) )
channel channel
} }
else -> NotificationChannel(CHANNEL_ID_DEFAULT, context.getString(R.string.channel_notifications_default_name), NotificationManager.IMPORTANCE_DEFAULT) else -> NotificationChannel(channelId, context.getString(R.string.channel_notifications_default_name), NotificationManager.IMPORTANCE_DEFAULT)
} }
channel.group = group
notificationManager.createNotificationChannel(channel) notificationManager.createNotificationChannel(channel)
} }
} }
private fun toChannelId(priority: Int): String { private fun maybeDeleteNotificationChannel(group: String, priority: Int) {
if (channelsSupported()) {
notificationManager.deleteNotificationChannel(toChannelId(group, priority))
}
}
private fun maybeCreateNotificationGroup(id: String, name: String) {
if (channelsSupported()) {
notificationManager.createNotificationChannelGroup(NotificationChannelGroup(id, name))
}
}
private fun maybeDeleteNotificationGroup(id: String) {
if (channelsSupported()) {
notificationManager.deleteNotificationChannelGroup(id)
}
}
private fun toChannelId(groupId: String, priority: Int): String {
return when (priority) { return when (priority) {
1 -> CHANNEL_ID_MIN PRIORITY_MIN -> groupId + GROUP_SUFFIX_PRIORITY_MIN
2 -> CHANNEL_ID_LOW PRIORITY_LOW -> groupId + GROUP_SUFFIX_PRIORITY_LOW
4 -> CHANNEL_ID_HIGH PRIORITY_HIGH -> groupId + GROUP_SUFFIX_PRIORITY_HIGH
5 -> CHANNEL_ID_MAX PRIORITY_MAX -> groupId + GROUP_SUFFIX_PRIORITY_MAX
else -> CHANNEL_ID_DEFAULT else -> groupId + GROUP_SUFFIX_PRIORITY_DEFAULT
}
}
private fun maybePlayInsistentSound(groupId: String, insistent: Boolean) {
if (!insistent) {
return
}
try {
val mediaPlayer = repository.mediaPlayer
val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
Log.d(TAG, "Media player: Playing insistent alarm on alarm channel")
mediaPlayer.reset()
mediaPlayer.setDataSource(context, getInsistentSound(groupId))
mediaPlayer.setAudioAttributes(AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM).build())
mediaPlayer.isLooping = true
mediaPlayer.prepare()
mediaPlayer.start()
} else {
Log.d(TAG, "Media player: Alarm volume is 0; not playing insistent alarm")
}
} catch (e: Exception) {
Log.w(TAG, "Media player: Failed to play insistent alarm", e)
}
}
private fun getInsistentSound(groupId: String): Uri {
return if (channelsSupported()) {
val channelId = toChannelId(groupId, PRIORITY_MAX)
val channel = notificationManager.getNotificationChannel(channelId)
channel.sound
} else {
RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
} }
} }
@ -415,11 +529,13 @@ class NotificationService(val context: Context) {
private const val TAG = "NtfyNotifService" private const val TAG = "NtfyNotifService"
private const val CHANNEL_ID_MIN = "ntfy-min" private const val DEFAULT_GROUP = "ntfy"
private const val CHANNEL_ID_LOW = "ntfy-low" private const val SUBSCRIPTION_GROUP_PREFIX = "ntfy-subscription-"
private const val CHANNEL_ID_DEFAULT = "ntfy" private const val GROUP_SUFFIX_PRIORITY_MIN = "-min"
private const val CHANNEL_ID_HIGH = "ntfy-high" private const val GROUP_SUFFIX_PRIORITY_LOW = "-low"
private const val CHANNEL_ID_MAX = "ntfy-max" private const val GROUP_SUFFIX_PRIORITY_DEFAULT = ""
private const val GROUP_SUFFIX_PRIORITY_HIGH = "-high"
private const val GROUP_SUFFIX_PRIORITY_MAX = "-max"
private const val VIEW_ACTION_EXTRA_URL = "url" private const val VIEW_ACTION_EXTRA_URL = "url"
private const val VIEW_ACTION_EXTRA_NOTIFICATION_ID = "notificationId" private const val VIEW_ACTION_EXTRA_NOTIFICATION_ID = "notificationId"

View file

@ -8,5 +8,6 @@ interface Connection {
data class ConnectionId( data class ConnectionId(
val baseUrl: String, val baseUrl: String,
val topicsToSubscriptionIds: Map<String, Long> val topicsToSubscriptionIds: Map<String, Long>,
val topicIsUnifiedPush: Map<String, Boolean>
) )

View file

@ -21,8 +21,10 @@ class JsonConnection(
) : Connection { ) : Connection {
private val baseUrl = connectionId.baseUrl private val baseUrl = connectionId.baseUrl
private val topicsToSubscriptionIds = connectionId.topicsToSubscriptionIds private val topicsToSubscriptionIds = connectionId.topicsToSubscriptionIds
private val topicIsUnifiedPush = connectionId.topicIsUnifiedPush
private val subscriptionIds = topicsToSubscriptionIds.values private val subscriptionIds = topicsToSubscriptionIds.values
private val topicsStr = topicsToSubscriptionIds.keys.joinToString(separator = ",") private val topicsStr = topicsToSubscriptionIds.keys.joinToString(separator = ",")
private val unifiedPushTopicsStr = topicIsUnifiedPush.filter { entry -> entry.value }.keys.joinToString(separator = ",")
private val url = topicUrl(baseUrl, topicsStr) private val url = topicUrl(baseUrl, topicsStr)
private var since: String? = sinceId private var since: String? = sinceId
@ -56,7 +58,7 @@ class JsonConnection(
// Call /json subscribe endpoint and loop until the call fails, is canceled, // Call /json subscribe endpoint and loop until the call fails, is canceled,
// or the job or service are cancelled/stopped // or the job or service are cancelled/stopped
try { try {
call = api.subscribe(baseUrl, topicsStr, since, user, notify, fail) call = api.subscribe(baseUrl, topicsStr, unifiedPushTopicsStr, since, user, notify, fail)
while (!failed.get() && !call.isCanceled() && isActive && serviceActive()) { while (!failed.get() && !call.isCanceled() && isActive && serviceActive()) {
stateChangeListener(subscriptionIds, ConnectionState.CONNECTED) stateChangeListener(subscriptionIds, ConnectionState.CONNECTED)
Log.d(TAG,"[$url] Connection is active (failed=$failed, callCanceled=${call.isCanceled()}, jobActive=$isActive, serviceStarted=${serviceActive()}") Log.d(TAG,"[$url] Connection is active (failed=$failed, callCanceled=${call.isCanceled()}, jobActive=$isActive, serviceStarted=${serviceActive()}")

View file

@ -10,17 +10,18 @@ import android.os.PowerManager
import android.os.SystemClock import android.os.SystemClock
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.preference.PreferenceManager
import io.heckel.ntfy.BuildConfig import io.heckel.ntfy.BuildConfig
import io.heckel.ntfy.R import io.heckel.ntfy.R
import io.heckel.ntfy.app.Application import io.heckel.ntfy.app.Application
import io.heckel.ntfy.db.ConnectionState import io.heckel.ntfy.db.ConnectionState
import io.heckel.ntfy.db.Repository import io.heckel.ntfy.db.Repository
import io.heckel.ntfy.db.Subscription import io.heckel.ntfy.db.Subscription
import io.heckel.ntfy.util.Log
import io.heckel.ntfy.msg.ApiService import io.heckel.ntfy.msg.ApiService
import io.heckel.ntfy.msg.NotificationDispatcher import io.heckel.ntfy.msg.NotificationDispatcher
import io.heckel.ntfy.ui.Colors import io.heckel.ntfy.ui.Colors
import io.heckel.ntfy.ui.MainActivity import io.heckel.ntfy.ui.MainActivity
import io.heckel.ntfy.util.Log
import io.heckel.ntfy.util.topicUrl import io.heckel.ntfy.util.topicUrl
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@ -88,23 +89,16 @@ class SubscriberService : Service() {
Log.init(this) // Init logs in all entry points Log.init(this) // Init logs in all entry points
Log.d(TAG, "Subscriber service has been created") Log.d(TAG, "Subscriber service has been created")
val title = getString(R.string.channel_subscriber_notification_title)
val text = if (BuildConfig.FIREBASE_AVAILABLE) {
getString(R.string.channel_subscriber_notification_instant_text)
} else {
getString(R.string.channel_subscriber_notification_noinstant_text)
}
notificationManager = createNotificationChannel()
serviceNotification = createNotification(title, text)
startForeground(NOTIFICATION_SERVICE_ID, serviceNotification)
} }
override fun onDestroy() { override fun onDestroy() {
Log.d(TAG, "Subscriber service has been destroyed") Log.d(TAG, "Subscriber service has been destroyed")
stopService() stopService()
sendBroadcast(Intent(this, AutoRestartReceiver::class.java)) // Restart it if necessary! val preferenceKey = getString(R.string.eos_preference_key_is_enabled)
if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean(preferenceKey, false)) {
sendBroadcast(Intent(this, AutoRestartReceiver::class.java))
}
super.onDestroy() super.onDestroy()
} }
@ -138,7 +132,6 @@ class SubscriberService : Service() {
} }
} }
wakeLock = null wakeLock = null
stopForeground(true)
stopSelf() stopSelf()
} catch (e: Exception) { } catch (e: Exception) {
Log.d(TAG, "Service stopped without being started: ${e.message}") Log.d(TAG, "Service stopped without being started: ${e.message}")
@ -172,8 +165,8 @@ class SubscriberService : Service() {
.filter { s -> s.instant } .filter { s -> s.instant }
val activeConnectionIds = connections.keys().toList().toSet() val activeConnectionIds = connections.keys().toList().toSet()
val desiredConnectionIds = instantSubscriptions // Set<ConnectionId> val desiredConnectionIds = instantSubscriptions // Set<ConnectionId>
.groupBy { s -> ConnectionId(s.baseUrl, emptyMap()) } .groupBy { s -> ConnectionId(s.baseUrl, emptyMap(), emptyMap()) }
.map { entry -> entry.key.copy(topicsToSubscriptionIds = entry.value.associate { s -> s.topic to s.id }) } .map { entry -> entry.key.copy(topicsToSubscriptionIds = entry.value.associate { s -> s.topic to s.id }, topicIsUnifiedPush = entry.value.associate { s -> s.topic to (s.upConnectorToken != null) }) }
.toSet() .toSet()
val newConnectionIds = desiredConnectionIds.subtract(activeConnectionIds) val newConnectionIds = desiredConnectionIds.subtract(activeConnectionIds)
val obsoleteConnectionIds = activeConnectionIds.subtract(desiredConnectionIds) val obsoleteConnectionIds = activeConnectionIds.subtract(desiredConnectionIds)
@ -200,7 +193,7 @@ class SubscriberService : Service() {
// retrieve old messages. This is important, so we don't download attachments from old messages. // retrieve old messages. This is important, so we don't download attachments from old messages.
val since = sinceByBaseUrl[connectionId.baseUrl] ?: "none" val since = sinceByBaseUrl[connectionId.baseUrl] ?: "none"
val serviceActive = { -> isServiceStarted } val serviceActive = { isServiceStarted }
val user = repository.getUser(connectionId.baseUrl) val user = repository.getUser(connectionId.baseUrl)
val connection = if (repository.getConnectionProtocol() == Repository.CONNECTION_PROTOCOL_WS) { val connection = if (repository.getConnectionProtocol() == Repository.CONNECTION_PROTOCOL_WS) {
val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager
@ -291,12 +284,13 @@ class SubscriberService : Service() {
} }
return NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID) return NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification_instant) .setSmallIcon(R.drawable.ic_notification_instant)
.setColor(ContextCompat.getColor(this, Colors.notificationIcon)) .setColor(ContextCompat.getColor(this, Colors.notificationIcon(this)))
.setContentTitle(title) .setContentTitle(title)
.setContentText(text) .setContentText(text)
.setContentIntent(pendingIntent) .setContentIntent(pendingIntent)
.setSound(null) .setSound(null)
.setShowWhen(false) // Don't show date/time .setShowWhen(false) // Don't show date/time
.setOngoing(true) // Starting SDK 33 / Android 13, foreground notifications can be swiped away
.setGroup(NOTIFICATION_GROUP_ID) // Do not group with other notifications .setGroup(NOTIFICATION_GROUP_ID) // Do not group with other notifications
.build() .build()
} }
@ -309,11 +303,11 @@ class SubscriberService : Service() {
override fun onTaskRemoved(rootIntent: Intent) { override fun onTaskRemoved(rootIntent: Intent) {
val restartServiceIntent = Intent(applicationContext, SubscriberService::class.java).also { val restartServiceIntent = Intent(applicationContext, SubscriberService::class.java).also {
it.setPackage(packageName) it.setPackage(packageName)
}; }
val restartServicePendingIntent: PendingIntent = PendingIntent.getService(this, 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE); val restartServicePendingIntent: PendingIntent = PendingIntent.getService(this, 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE)
applicationContext.getSystemService(Context.ALARM_SERVICE); applicationContext.getSystemService(Context.ALARM_SERVICE)
val alarmService: AlarmManager = applicationContext.getSystemService(Context.ALARM_SERVICE) as AlarmManager; val alarmService: AlarmManager = applicationContext.getSystemService(Context.ALARM_SERVICE) as AlarmManager
alarmService.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 1000, restartServicePendingIntent); alarmService.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 1000, restartServicePendingIntent)
} }
/* This re-starts the service on reboot; see manifest */ /* This re-starts the service on reboot; see manifest */

View file

@ -2,10 +2,11 @@ package io.heckel.ntfy.service
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import androidx.core.content.ContextCompat import androidx.preference.PreferenceManager
import androidx.work.* import androidx.work.*
import io.heckel.ntfy.app.Application import io.heckel.ntfy.app.Application
import io.heckel.ntfy.util.Log import io.heckel.ntfy.util.Log
import io.heckel.ntfy.R
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@ -43,11 +44,17 @@ class SubscriberServiceManager(private val context: Context) {
Log.d(TAG, "ServiceStartWorker: Failed, no application found (work ID: ${id})") Log.d(TAG, "ServiceStartWorker: Failed, no application found (work ID: ${id})")
return Result.failure() return Result.failure()
} }
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
val app = context.applicationContext as Application val app = context.applicationContext as Application
val subscriptionIdsWithInstantStatus = app.repository.getSubscriptionIdsWithInstantStatus() val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(app)
val instantSubscriptions = subscriptionIdsWithInstantStatus.toList().filter { (_, instant) -> instant }.size val preferenceKey = context.getString(R.string.eos_preference_key_is_enabled)
val action = if (instantSubscriptions > 0) SubscriberService.Action.START else SubscriberService.Action.STOP val action = if (sharedPreferences.getBoolean(preferenceKey, false)) {
SubscriberService.Action.START
} else {
SubscriberService.Action.STOP
}
val serviceState = SubscriberService.readServiceState(context) val serviceState = SubscriberService.readServiceState(context)
if (serviceState == SubscriberService.ServiceState.STOPPED && action == SubscriberService.Action.STOP) { if (serviceState == SubscriberService.ServiceState.STOPPED && action == SubscriberService.Action.STOP) {
return@withContext Result.success() return@withContext Result.success()
@ -55,7 +62,7 @@ class SubscriberServiceManager(private val context: Context) {
Log.d(TAG, "ServiceStartWorker: Starting foreground service with action $action (work ID: ${id})") Log.d(TAG, "ServiceStartWorker: Starting foreground service with action $action (work ID: ${id})")
Intent(context, SubscriberService::class.java).also { Intent(context, SubscriberService::class.java).also {
it.action = action.name it.action = action.name
ContextCompat.startForegroundService(context, it) context.startService(it)
} }
} }
return Result.success() return Result.success()

View file

@ -56,8 +56,10 @@ class WsConnection(
private val since = AtomicReference<String?>(sinceId) private val since = AtomicReference<String?>(sinceId)
private val baseUrl = connectionId.baseUrl private val baseUrl = connectionId.baseUrl
private val topicsToSubscriptionIds = connectionId.topicsToSubscriptionIds private val topicsToSubscriptionIds = connectionId.topicsToSubscriptionIds
private val topicIsUnifiedPush = connectionId.topicIsUnifiedPush
private val subscriptionIds = topicsToSubscriptionIds.values private val subscriptionIds = topicsToSubscriptionIds.values
private val topicsStr = topicsToSubscriptionIds.keys.joinToString(separator = ",") private val topicsStr = topicsToSubscriptionIds.keys.joinToString(separator = ",")
private val unifiedPushTopicsStr = topicIsUnifiedPush.filter { entry -> entry.value }.keys.joinToString(separator = ",")
private val shortUrl = topicShortUrl(baseUrl, topicsStr) private val shortUrl = topicShortUrl(baseUrl, topicsStr)
init { init {
@ -78,7 +80,7 @@ class WsConnection(
val sinceId = since.get() val sinceId = since.get()
val sinceVal = sinceId ?: "all" val sinceVal = sinceId ?: "all"
val urlWithSince = topicUrlWs(baseUrl, topicsStr, sinceVal) val urlWithSince = topicUrlWs(baseUrl, topicsStr, sinceVal)
val request = requestBuilder(urlWithSince, user).build() val request = requestBuilder(urlWithSince, user, unifiedPushTopicsStr).build()
Log.d(TAG, "$shortUrl (gid=$globalId): Opening $urlWithSince with listener ID $nextListenerId ...") Log.d(TAG, "$shortUrl (gid=$globalId): Opening $urlWithSince with listener ID $nextListenerId ...")
webSocket = client.newWebSocket(request, Listener(nextListenerId)) webSocket = client.newWebSocket(request, Listener(nextListenerId))
} }

View file

@ -5,8 +5,6 @@ import android.app.AlertDialog
import android.app.Dialog import android.app.Dialog
import android.content.Context import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager

View file

@ -8,7 +8,10 @@ import io.heckel.ntfy.util.isDarkThemeOn
class Colors { class Colors {
companion object { companion object {
const val refreshProgressIndicator = R.color.teal const val refreshProgressIndicator = R.color.teal
const val notificationIcon = R.color.teal
fun notificationIcon(context: Context): Int {
return if (isDarkThemeOn(context)) R.color.teal_light else R.color.teal
}
fun itemSelectedBackground(context: Context): Int { fun itemSelectedBackground(context: Context): Int {
return if (isDarkThemeOn(context)) R.color.black_800b else R.color.gray_400 return if (isDarkThemeOn(context)) R.color.black_800b else R.color.gray_400

View file

@ -7,6 +7,7 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.Intent.ACTION_VIEW import android.content.Intent.ACTION_VIEW
import android.net.Uri import android.net.Uri
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.text.Html import android.text.Html
import android.view.ActionMode import android.view.ActionMode
@ -110,9 +111,11 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra
baseUrl = baseUrl, baseUrl = baseUrl,
topic = topic, topic = topic,
instant = instant, instant = instant,
dedicatedChannels = false,
mutedUntil = 0, mutedUntil = 0,
minPriority = Repository.MIN_PRIORITY_USE_GLOBAL, minPriority = Repository.MIN_PRIORITY_USE_GLOBAL,
autoDelete = Repository.AUTO_DELETE_USE_GLOBAL, autoDelete = Repository.AUTO_DELETE_USE_GLOBAL,
insistent = Repository.INSISTENT_MAX_PRIORITY_USE_GLOBAL,
lastNotificationId = null, lastNotificationId = null,
icon = null, icon = null,
upAppId = null, upAppId = null,
@ -178,7 +181,7 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra
howToExample.linksClickable = true howToExample.linksClickable = true
val howToText = getString(R.string.detail_how_to_example, topicUrl) val howToText = getString(R.string.detail_how_to_example, topicUrl)
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
howToExample.text = Html.fromHtml(howToText, Html.FROM_HTML_MODE_LEGACY) howToExample.text = Html.fromHtml(howToText, Html.FROM_HTML_MODE_LEGACY)
} else { } else {
howToExample.text = Html.fromHtml(howToText) howToExample.text = Html.fromHtml(howToText)
@ -241,7 +244,7 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra
adapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() { adapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) { override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
if (positionStart == 0) { if (positionStart == 0) {
Log.d(TAG, "$itemCount item(s) inserted at $positionStart, scrolling to the top") Log.d(TAG, "$itemCount item(s) inserted at 0, scrolling to the top")
mainList.scrollToPosition(positionStart) mainList.scrollToPosition(positionStart)
} }
} }
@ -254,6 +257,13 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra
// Mark this subscription as "open" so we don't receive notifications for it // Mark this subscription as "open" so we don't receive notifications for it
repository.detailViewSubscriptionId.set(subscriptionId) repository.detailViewSubscriptionId.set(subscriptionId)
// Stop insistent playback (if running, otherwise it'll throw)
try {
repository.mediaPlayer.stop()
} catch (_: Exception) {
// Ignore errors
}
} }
override fun onResume() { override fun onResume() {
@ -571,7 +581,7 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra
dialog.setOnShowListener { dialog.setOnShowListener {
dialog dialog
.getButton(AlertDialog.BUTTON_POSITIVE) .getButton(AlertDialog.BUTTON_POSITIVE)
.setTextAppearance(R.style.DangerText) .dangerButton(this)
} }
dialog.show() dialog.show()
} }
@ -609,7 +619,7 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra
dialog.setOnShowListener { dialog.setOnShowListener {
dialog dialog
.getButton(AlertDialog.BUTTON_POSITIVE) .getButton(AlertDialog.BUTTON_POSITIVE)
.setTextAppearance(R.style.DangerText) .dangerButton(this)
} }
dialog.show() dialog.show()
} }
@ -619,7 +629,7 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra
handleActionModeClick(notification) handleActionModeClick(notification)
} else if (notification.click != "") { } else if (notification.click != "") {
try { try {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(notification.click))) startActivity(Intent(ACTION_VIEW, Uri.parse(notification.click)))
} catch (e: Exception) { } catch (e: Exception) {
Log.w(TAG, "Cannot open click URL", e) Log.w(TAG, "Cannot open click URL", e)
runOnUiThread { runOnUiThread {
@ -720,7 +730,7 @@ class DetailActivity : AppCompatActivity(), ActionMode.Callback, NotificationFra
dialog.setOnShowListener { dialog.setOnShowListener {
dialog dialog
.getButton(AlertDialog.BUTTON_POSITIVE) .getButton(AlertDialog.BUTTON_POSITIVE)
.setTextAppearance(R.style.DangerText) .dangerButton(this)
} }
dialog.show() dialog.show()
} }

View file

@ -27,14 +27,16 @@ import com.google.android.material.button.MaterialButton
import com.stfalcon.imageviewer.StfalconImageViewer import com.stfalcon.imageviewer.StfalconImageViewer
import io.heckel.ntfy.R import io.heckel.ntfy.R
import io.heckel.ntfy.db.* import io.heckel.ntfy.db.*
import io.heckel.ntfy.msg.DownloadManager
import io.heckel.ntfy.msg.DownloadAttachmentWorker import io.heckel.ntfy.msg.DownloadAttachmentWorker
import io.heckel.ntfy.msg.DownloadManager
import io.heckel.ntfy.msg.DownloadType import io.heckel.ntfy.msg.DownloadType
import io.heckel.ntfy.msg.NotificationService import io.heckel.ntfy.msg.NotificationService
import io.heckel.ntfy.msg.NotificationService.Companion.ACTION_VIEW import io.heckel.ntfy.msg.NotificationService.Companion.ACTION_VIEW
import io.heckel.ntfy.util.* import io.heckel.ntfy.util.*
import kotlinx.coroutines.* import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
class DetailAdapter(private val activity: Activity, private val lifecycleScope: CoroutineScope, private val repository: Repository, private val onClick: (Notification) -> Unit, private val onLongClick: (Notification) -> Unit) : class DetailAdapter(private val activity: Activity, private val lifecycleScope: CoroutineScope, private val repository: Repository, private val onClick: (Notification) -> Unit, private val onLongClick: (Notification) -> Unit) :
ListAdapter<Notification, DetailAdapter.DetailViewHolder>(TopicDiffCallback) { ListAdapter<Notification, DetailAdapter.DetailViewHolder>(TopicDiffCallback) {
@ -143,22 +145,22 @@ class DetailAdapter(private val activity: Activity, private val lifecycleScope:
private fun renderPriority(context: Context, notification: Notification) { private fun renderPriority(context: Context, notification: Notification) {
when (notification.priority) { when (notification.priority) {
1 -> { PRIORITY_MIN -> {
priorityImageView.visibility = View.VISIBLE priorityImageView.visibility = View.VISIBLE
priorityImageView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_priority_1_24dp)) priorityImageView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_priority_1_24dp))
} }
2 -> { PRIORITY_LOW -> {
priorityImageView.visibility = View.VISIBLE priorityImageView.visibility = View.VISIBLE
priorityImageView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_priority_2_24dp)) priorityImageView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_priority_2_24dp))
} }
3 -> { PRIORITY_DEFAULT -> {
priorityImageView.visibility = View.GONE priorityImageView.visibility = View.GONE
} }
4 -> { PRIORITY_HIGH -> {
priorityImageView.visibility = View.VISIBLE priorityImageView.visibility = View.VISIBLE
priorityImageView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_priority_4_24dp)) priorityImageView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_priority_4_24dp))
} }
5 -> { PRIORITY_MAX -> {
priorityImageView.visibility = View.VISIBLE priorityImageView.visibility = View.VISIBLE
priorityImageView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_priority_5_24dp)) priorityImageView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_priority_5_24dp))
} }
@ -173,8 +175,9 @@ class DetailAdapter(private val activity: Activity, private val lifecycleScope:
} }
val attachment = notification.attachment val attachment = notification.attachment
val image = attachment.contentUri != null && supportedImage(attachment.type) && previewableImage(attachmentFileStat) val image = attachment.contentUri != null && supportedImage(attachment.type) && previewableImage(attachmentFileStat)
maybeRenderAttachmentImage(context, attachment, image) val bitmap = if (image) attachment.contentUri?.readBitmapFromUriOrNull(context) else null
maybeRenderAttachmentBox(context, notification, attachment, attachmentFileStat, image) maybeRenderAttachmentImage(context, bitmap)
maybeRenderAttachmentBox(context, notification, attachment, attachmentFileStat, bitmap)
} }
private fun maybeRenderIcon(context: Context, notification: Notification, iconStat: FileInfo?) { private fun maybeRenderIcon(context: Context, notification: Notification, iconStat: FileInfo?) {
@ -203,7 +206,7 @@ class DetailAdapter(private val activity: Activity, private val lifecycleScope:
} }
private fun maybeRenderActions(context: Context, notification: Notification) { private fun maybeRenderActions(context: Context, notification: Notification) {
if (notification.actions != null && notification.actions.isNotEmpty()) { if (!notification.actions.isNullOrEmpty()) {
actionsWrapperView.visibility = View.VISIBLE actionsWrapperView.visibility = View.VISIBLE
val actionsCount = Math.min(notification.actions.size, 3) // per documentation, only 3 actions are available val actionsCount = Math.min(notification.actions.size, 3) // per documentation, only 3 actions are available
for (i in 0 until actionsCount) { for (i in 0 until actionsCount) {
@ -219,7 +222,7 @@ class DetailAdapter(private val activity: Activity, private val lifecycleScope:
private fun resetCardButtons() { private fun resetCardButtons() {
// clear any previously created dynamic buttons // clear any previously created dynamic buttons
actionsFlow.allViews.forEach { it -> actionsFlow.removeView(it) } actionsFlow.allViews.forEach { actionsFlow.removeView(it) }
actionsWrapperView.removeAllViews() actionsWrapperView.removeAllViews()
actionsWrapperView.addView(actionsFlow) actionsWrapperView.addView(actionsFlow)
} }
@ -238,8 +241,8 @@ class DetailAdapter(private val activity: Activity, private val lifecycleScope:
return button return button
} }
private fun maybeRenderAttachmentBox(context: Context, notification: Notification, attachment: Attachment, attachmentFileStat: FileInfo?, image: Boolean) { private fun maybeRenderAttachmentBox(context: Context, notification: Notification, attachment: Attachment, attachmentFileStat: FileInfo?, bitmap: Bitmap?) {
if (image) { if (bitmap != null) {
attachmentBoxView.visibility = View.GONE attachmentBoxView.visibility = View.GONE
return return
} }
@ -348,13 +351,12 @@ class DetailAdapter(private val activity: Activity, private val lifecycleScope:
} }
} }
private fun maybeRenderAttachmentImage(context: Context, attachment: Attachment, image: Boolean) { private fun maybeRenderAttachmentImage(context: Context, bitmap: Bitmap?) {
if (!image) { if (bitmap == null) {
attachmentImageView.visibility = View.GONE attachmentImageView.visibility = View.GONE
return return
} }
try { try {
val bitmap = attachment.contentUri?.readBitmapFromUri(context) ?: throw Exception("uri empty")
attachmentImageView.setImageBitmap(bitmap) attachmentImageView.setImageBitmap(bitmap)
attachmentImageView.setOnClickListener { attachmentImageView.setOnClickListener {
val loadImage = { view: ImageView, image: Bitmap -> view.setImageBitmap(image) } val loadImage = { view: ImageView, image: Bitmap -> view.setImageBitmap(image) }
@ -371,6 +373,12 @@ class DetailAdapter(private val activity: Activity, private val lifecycleScope:
} }
private fun openFile(context: Context, attachment: Attachment): Boolean { private fun openFile(context: Context, attachment: Attachment): Boolean {
if (!canOpenAttachment(attachment)) {
Toast
.makeText(context, context.getString(R.string.detail_item_cannot_open_apk), Toast.LENGTH_LONG)
.show()
return true
}
Log.d(TAG, "Opening file ${attachment.contentUri}") Log.d(TAG, "Opening file ${attachment.contentUri}")
try { try {
val contentUri = Uri.parse(attachment.contentUri) val contentUri = Uri.parse(attachment.contentUri)

View file

@ -4,8 +4,10 @@ import android.content.ContentResolver
import android.content.ClipData import android.content.ClipData
import android.content.ClipboardManager import android.content.ClipboardManager
import android.content.Context import android.content.Context
import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.provider.Settings
import android.text.TextUtils import android.text.TextUtils
import android.widget.Toast import android.widget.Toast
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
@ -21,6 +23,7 @@ import io.heckel.ntfy.R
import io.heckel.ntfy.db.Repository import io.heckel.ntfy.db.Repository
import io.heckel.ntfy.db.Subscription import io.heckel.ntfy.db.Subscription
import io.heckel.ntfy.msg.DownloadAttachmentWorker import io.heckel.ntfy.msg.DownloadAttachmentWorker
import io.heckel.ntfy.msg.NotificationService
import io.heckel.ntfy.service.SubscriberServiceManager import io.heckel.ntfy.service.SubscriberServiceManager
import io.heckel.ntfy.util.* import io.heckel.ntfy.util.*
import kotlinx.coroutines.* import kotlinx.coroutines.*
@ -35,6 +38,7 @@ class DetailSettingsActivity : AppCompatActivity() {
private lateinit var repository: Repository private lateinit var repository: Repository
private lateinit var serviceManager: SubscriberServiceManager private lateinit var serviceManager: SubscriberServiceManager
private lateinit var settingsFragment: SettingsFragment private lateinit var settingsFragment: SettingsFragment
private lateinit var notificationService: NotificationService
private var subscriptionId: Long = 0 private var subscriptionId: Long = 0
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -45,6 +49,7 @@ class DetailSettingsActivity : AppCompatActivity() {
repository = Repository.getInstance(this) repository = Repository.getInstance(this)
serviceManager = SubscriberServiceManager(this) serviceManager = SubscriberServiceManager(this)
notificationService = NotificationService(this)
subscriptionId = intent.getLongExtra(DetailActivity.EXTRA_SUBSCRIPTION_ID, 0) subscriptionId = intent.getLongExtra(DetailActivity.EXTRA_SUBSCRIPTION_ID, 0)
if (savedInstanceState == null) { if (savedInstanceState == null) {
@ -75,9 +80,11 @@ class DetailSettingsActivity : AppCompatActivity() {
private lateinit var resolver: ContentResolver private lateinit var resolver: ContentResolver
private lateinit var repository: Repository private lateinit var repository: Repository
private lateinit var serviceManager: SubscriberServiceManager private lateinit var serviceManager: SubscriberServiceManager
private lateinit var notificationService: NotificationService
private lateinit var subscription: Subscription private lateinit var subscription: Subscription
private lateinit var iconSetPref: Preference private lateinit var iconSetPref: Preference
private lateinit var openChannelsPref: Preference
private lateinit var iconSetLauncher: ActivityResultLauncher<String> private lateinit var iconSetLauncher: ActivityResultLauncher<String>
private lateinit var iconRemovePref: Preference private lateinit var iconRemovePref: Preference
@ -87,6 +94,7 @@ class DetailSettingsActivity : AppCompatActivity() {
// Dependencies (Fragments need a default constructor) // Dependencies (Fragments need a default constructor)
repository = Repository.getInstance(requireActivity()) repository = Repository.getInstance(requireActivity())
serviceManager = SubscriberServiceManager(requireActivity()) serviceManager = SubscriberServiceManager(requireActivity())
notificationService = NotificationService(requireActivity())
resolver = requireContext().applicationContext.contentResolver resolver = requireContext().applicationContext.contentResolver
// Create result launcher for custom icon (must be created in onCreatePreferences() directly) // Create result launcher for custom icon (must be created in onCreatePreferences() directly)
@ -110,14 +118,18 @@ class DetailSettingsActivity : AppCompatActivity() {
loadMutedUntilPref() loadMutedUntilPref()
loadMinPriorityPref() loadMinPriorityPref()
loadAutoDeletePref() loadAutoDeletePref()
loadInsistentMaxPriorityPref()
loadIconSetPref() loadIconSetPref()
loadIconRemovePref() loadIconRemovePref()
if (notificationService.channelsSupported()) {
loadDedicatedChannelsPrefs()
loadOpenChannelsPrefs()
}
} else { } else {
val notificationsHeaderId = context?.getString(R.string.detail_settings_notifications_header_key) ?: return val notificationsHeaderId = context?.getString(R.string.detail_settings_notifications_header_key) ?: return
val notificationsHeader: PreferenceCategory? = findPreference(notificationsHeaderId) val notificationsHeader: PreferenceCategory? = findPreference(notificationsHeaderId)
notificationsHeader?.isVisible = false notificationsHeader?.isVisible = false
} }
loadDisplayNamePref() loadDisplayNamePref()
loadTopicUrlPref() loadTopicUrlPref()
} }
@ -145,6 +157,48 @@ class DetailSettingsActivity : AppCompatActivity() {
} }
} }
private fun loadDedicatedChannelsPrefs() {
val prefId = context?.getString(R.string.detail_settings_notifications_dedicated_channels_key) ?: return
val pref: SwitchPreference? = findPreference(prefId)
pref?.isVisible = true
pref?.isChecked = subscription.dedicatedChannels
pref?.preferenceDataStore = object : PreferenceDataStore() {
override fun putBoolean(key: String?, value: Boolean) {
save(subscription.copy(dedicatedChannels = value))
if (value) {
notificationService.createSubscriptionNotificationChannels(subscription)
} else {
notificationService.deleteSubscriptionNotificationChannels(subscription)
}
openChannelsPref.isVisible = value
}
override fun getBoolean(key: String?, defValue: Boolean): Boolean {
return subscription.dedicatedChannels
}
}
pref?.summaryProvider = Preference.SummaryProvider<SwitchPreference> { preference ->
if (preference.isChecked) {
getString(R.string.detail_settings_notifications_dedicated_channels_summary_on)
} else {
getString(R.string.detail_settings_notifications_dedicated_channels_summary_off)
}
}
}
private fun loadOpenChannelsPrefs() {
val prefId = context?.getString(R.string.detail_settings_notifications_open_channels_key) ?: return
openChannelsPref = findPreference(prefId) ?: return
openChannelsPref.isVisible = subscription.dedicatedChannels
openChannelsPref.preferenceDataStore = object : PreferenceDataStore() { } // Dummy store to protect from accidentally overwriting
openChannelsPref.onPreferenceClickListener = Preference.OnPreferenceClickListener { _ ->
val settingsIntent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().applicationContext.packageName)
startActivity(settingsIntent);
true
}
}
private fun loadMutedUntilPref() { private fun loadMutedUntilPref() {
val prefId = context?.getString(R.string.detail_settings_notifications_muted_until_key) ?: return val prefId = context?.getString(R.string.detail_settings_notifications_muted_until_key) ?: return
val pref: ListPreference? = findPreference(prefId) val pref: ListPreference? = findPreference(prefId)
@ -175,9 +229,8 @@ class DetailSettingsActivity : AppCompatActivity() {
return subscription.mutedUntil.toString() return subscription.mutedUntil.toString()
} }
} }
pref?.summaryProvider = Preference.SummaryProvider<ListPreference> { _ -> pref?.summaryProvider = Preference.SummaryProvider<ListPreference> {
val mutedUntilValue = subscription.mutedUntil when (val mutedUntilValue = subscription.mutedUntil) {
when (mutedUntilValue) {
Repository.MUTED_UNTIL_SHOW_ALL -> getString(R.string.settings_notifications_muted_until_show_all) Repository.MUTED_UNTIL_SHOW_ALL -> getString(R.string.settings_notifications_muted_until_show_all)
Repository.MUTED_UNTIL_FOREVER -> getString(R.string.settings_notifications_muted_until_forever) Repository.MUTED_UNTIL_FOREVER -> getString(R.string.settings_notifications_muted_until_forever)
else -> { else -> {
@ -209,8 +262,8 @@ class DetailSettingsActivity : AppCompatActivity() {
value = repository.getMinPriority() value = repository.getMinPriority()
} }
val summary = when (value) { val summary = when (value) {
1 -> getString(R.string.settings_notifications_min_priority_summary_any) PRIORITY_MIN -> getString(R.string.settings_notifications_min_priority_summary_any)
5 -> getString(R.string.settings_notifications_min_priority_summary_max) PRIORITY_MAX -> getString(R.string.settings_notifications_min_priority_summary_max)
else -> { else -> {
val minPriorityString = toPriorityString(requireContext(), value) val minPriorityString = toPriorityString(requireContext(), value)
getString(R.string.settings_notifications_min_priority_summary_x_or_higher, value, minPriorityString) getString(R.string.settings_notifications_min_priority_summary_x_or_higher, value, minPriorityString)
@ -237,7 +290,7 @@ class DetailSettingsActivity : AppCompatActivity() {
pref?.summaryProvider = Preference.SummaryProvider<ListPreference> { preference -> pref?.summaryProvider = Preference.SummaryProvider<ListPreference> { preference ->
var seconds = preference.value.toLongOrNull() ?: Repository.AUTO_DELETE_USE_GLOBAL var seconds = preference.value.toLongOrNull() ?: Repository.AUTO_DELETE_USE_GLOBAL
val global = seconds == Repository.AUTO_DELETE_USE_GLOBAL val global = seconds == Repository.AUTO_DELETE_USE_GLOBAL
if (seconds == Repository.AUTO_DELETE_USE_GLOBAL) { if (global) {
seconds = repository.getAutoDeleteSeconds() seconds = repository.getAutoDeleteSeconds()
} }
val summary = when (seconds) { val summary = when (seconds) {
@ -253,12 +306,39 @@ class DetailSettingsActivity : AppCompatActivity() {
} }
} }
private fun loadInsistentMaxPriorityPref() {
val prefId = context?.getString(R.string.detail_settings_notifications_insistent_max_priority_key) ?: return
val pref: ListPreference? = findPreference(prefId)
pref?.isVisible = true
pref?.value = subscription.insistent.toString()
pref?.preferenceDataStore = object : PreferenceDataStore() {
override fun putString(key: String?, value: String?) {
val intValue = value?.toIntOrNull() ?:return
save(subscription.copy(insistent = intValue))
}
override fun getString(key: String?, defValue: String?): String {
return subscription.insistent.toString()
}
}
pref?.summaryProvider = Preference.SummaryProvider<ListPreference> { preference ->
val value = preference.value.toIntOrNull() ?: Repository.INSISTENT_MAX_PRIORITY_USE_GLOBAL
val global = value == Repository.INSISTENT_MAX_PRIORITY_USE_GLOBAL
val enabled = if (global) repository.getInsistentMaxPriorityEnabled() else value == Repository.INSISTENT_MAX_PRIORITY_ENABLED
val summary = if (enabled) {
getString(R.string.settings_notifications_insistent_max_priority_summary_enabled)
} else {
getString(R.string.settings_notifications_insistent_max_priority_summary_disabled)
}
maybeAppendGlobal(summary, global)
}
}
private fun loadIconSetPref() { private fun loadIconSetPref() {
val prefId = context?.getString(R.string.detail_settings_appearance_icon_set_key) ?: return val prefId = context?.getString(R.string.detail_settings_appearance_icon_set_key) ?: return
iconSetPref = findPreference(prefId) ?: return iconSetPref = findPreference(prefId) ?: return
iconSetPref.isVisible = subscription.icon == null iconSetPref.isVisible = subscription.icon == null
iconSetPref.preferenceDataStore = object : PreferenceDataStore() { } // Dummy store to protect from accidentally overwriting iconSetPref.preferenceDataStore = object : PreferenceDataStore() { } // Dummy store to protect from accidentally overwriting
iconSetPref.onPreferenceClickListener = Preference.OnPreferenceClickListener { _ -> iconSetPref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
iconSetLauncher.launch("image/*") iconSetLauncher.launch("image/*")
true true
} }
@ -269,7 +349,7 @@ class DetailSettingsActivity : AppCompatActivity() {
iconRemovePref = findPreference(prefId) ?: return iconRemovePref = findPreference(prefId) ?: return
iconRemovePref.isVisible = subscription.icon != null iconRemovePref.isVisible = subscription.icon != null
iconRemovePref.preferenceDataStore = object : PreferenceDataStore() { } // Dummy store to protect from accidentally overwriting iconRemovePref.preferenceDataStore = object : PreferenceDataStore() { } // Dummy store to protect from accidentally overwriting
iconRemovePref.onPreferenceClickListener = Preference.OnPreferenceClickListener { _ -> iconRemovePref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
iconRemovePref.isVisible = false iconRemovePref.isVisible = false
iconSetPref.isVisible = true iconSetPref.isVisible = true
deleteIcon(subscription.icon) deleteIcon(subscription.icon)
@ -296,16 +376,17 @@ class DetailSettingsActivity : AppCompatActivity() {
pref?.dialogMessage = getString(R.string.detail_settings_appearance_display_name_message, topicShortUrl(subscription.baseUrl, subscription.topic)) pref?.dialogMessage = getString(R.string.detail_settings_appearance_display_name_message, topicShortUrl(subscription.baseUrl, subscription.topic))
pref?.preferenceDataStore = object : PreferenceDataStore() { pref?.preferenceDataStore = object : PreferenceDataStore() {
override fun putString(key: String?, value: String?) { override fun putString(key: String?, value: String?) {
val displayName: String? = if (value == "") { val displayName = if (value != "") value else null
null
} else {
value
}
val newSubscription = subscription.copy(displayName = displayName) val newSubscription = subscription.copy(displayName = displayName)
save(newSubscription) save(newSubscription)
// Update activity title
activity?.runOnUiThread { activity?.runOnUiThread {
activity?.title = displayName(newSubscription) activity?.title = displayName(newSubscription)
} }
// Update dedicated notification channel
if (newSubscription.dedicatedChannels) {
notificationService.createSubscriptionNotificationChannels(newSubscription)
}
} }
override fun getString(key: String?, defValue: String?): String { override fun getString(key: String?, defValue: String?): String {
return subscription.displayName ?: "" return subscription.displayName ?: ""

View file

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

View file

@ -1,10 +1,12 @@
package io.heckel.ntfy.ui package io.heckel.ntfy.ui
import android.Manifest
import android.animation.Animator import android.animation.Animator
import android.animation.AnimatorListenerAdapter import android.animation.AnimatorListenerAdapter
import android.app.AlertDialog import android.app.AlertDialog
import android.content.ActivityNotFoundException import android.content.ActivityNotFoundException
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
@ -20,6 +22,7 @@ import android.widget.Toast
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@ -32,7 +35,6 @@ import io.heckel.ntfy.app.Application
import io.heckel.ntfy.db.Repository import io.heckel.ntfy.db.Repository
import io.heckel.ntfy.db.Subscription import io.heckel.ntfy.db.Subscription
import io.heckel.ntfy.firebase.FirebaseMessenger import io.heckel.ntfy.firebase.FirebaseMessenger
import io.heckel.ntfy.util.Log
import io.heckel.ntfy.msg.ApiService import io.heckel.ntfy.msg.ApiService
import io.heckel.ntfy.msg.DownloadManager import io.heckel.ntfy.msg.DownloadManager
import io.heckel.ntfy.msg.DownloadType import io.heckel.ntfy.msg.DownloadType
@ -45,7 +47,6 @@ import io.heckel.ntfy.work.PollWorker
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.security.SecureRandom
import java.util.* import java.util.*
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import kotlin.random.Random import kotlin.random.Random
@ -208,6 +209,18 @@ class MainActivity : AppCompatActivity(), ActionMode.Callback, AddFragment.Subsc
schedulePeriodicPollWorker() schedulePeriodicPollWorker()
schedulePeriodicServiceRestartWorker() schedulePeriodicServiceRestartWorker()
schedulePeriodicDeleteWorker() schedulePeriodicDeleteWorker()
// Permissions
maybeRequestNotificationPermission()
}
private fun maybeRequestNotificationPermission() {
// Android 13 (SDK 33) requires that we ask for permission to post notifications
// https://developer.android.com/develop/ui/views/notifications/notification-permission
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.POST_NOTIFICATIONS), 0)
}
} }
override fun onResume() { override fun onResume() {
@ -384,6 +397,10 @@ class MainActivity : AppCompatActivity(), ActionMode.Callback, AddFragment.Subsc
} }
true true
} }
R.id.main_menu_donate -> {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.main_menu_donate_url))))
true
}
R.id.main_menu_docs -> { R.id.main_menu_docs -> {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.main_menu_docs_url)))) startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.main_menu_docs_url))))
true true
@ -433,9 +450,11 @@ class MainActivity : AppCompatActivity(), ActionMode.Callback, AddFragment.Subsc
baseUrl = baseUrl, baseUrl = baseUrl,
topic = topic, topic = topic,
instant = instant, instant = instant,
dedicatedChannels = false,
mutedUntil = 0, mutedUntil = 0,
minPriority = Repository.MIN_PRIORITY_USE_GLOBAL, minPriority = Repository.MIN_PRIORITY_USE_GLOBAL,
autoDelete = Repository.AUTO_DELETE_USE_GLOBAL, autoDelete = Repository.AUTO_DELETE_USE_GLOBAL,
insistent = Repository.INSISTENT_MAX_PRIORITY_USE_GLOBAL,
lastNotificationId = null, lastNotificationId = null,
icon = null, icon = null,
upAppId = null, upAppId = null,
@ -603,7 +622,7 @@ class MainActivity : AppCompatActivity(), ActionMode.Callback, AddFragment.Subsc
dialog.setOnShowListener { dialog.setOnShowListener {
dialog dialog
.getButton(AlertDialog.BUTTON_POSITIVE) .getButton(AlertDialog.BUTTON_POSITIVE)
.setTextAppearance(R.style.DangerText) .dangerButton(this)
} }
dialog.show() dialog.show()
} }

View file

@ -1,9 +1,7 @@
package io.heckel.ntfy.ui package io.heckel.ntfy.ui
import android.content.Context import android.content.Context
import android.graphics.BitmapFactory
import android.graphics.Color import android.graphics.Color
import android.net.Uri
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
@ -17,10 +15,8 @@ import io.heckel.ntfy.R
import io.heckel.ntfy.db.ConnectionState import io.heckel.ntfy.db.ConnectionState
import io.heckel.ntfy.db.Repository import io.heckel.ntfy.db.Repository
import io.heckel.ntfy.db.Subscription import io.heckel.ntfy.db.Subscription
import io.heckel.ntfy.msg.NotificationService
import io.heckel.ntfy.util.Log
import io.heckel.ntfy.util.readBitmapFromUriOrNull
import io.heckel.ntfy.util.displayName import io.heckel.ntfy.util.displayName
import io.heckel.ntfy.util.readBitmapFromUriOrNull
import java.text.DateFormat import java.text.DateFormat
import java.util.* import java.util.*
@ -100,6 +96,8 @@ class MainAdapter(private val repository: Repository, private val onClick: (Subs
val showMutedUntilIcon = !showMutedForeverIcon && (subscription.mutedUntil > 1L || globalMutedUntil > 1L) && !isUnifiedPush val showMutedUntilIcon = !showMutedForeverIcon && (subscription.mutedUntil > 1L || globalMutedUntil > 1L) && !isUnifiedPush
if (subscription.icon != null) { if (subscription.icon != null) {
imageView.setImageBitmap(subscription.icon.readBitmapFromUriOrNull(context)) imageView.setImageBitmap(subscription.icon.readBitmapFromUriOrNull(context))
} else {
imageView.setImageResource(R.drawable.ic_sms_gray_24dp)
} }
nameView.text = displayName(subscription) nameView.text = displayName(subscription)
statusView.text = statusMessage statusView.text = statusMessage
@ -119,7 +117,7 @@ class MainAdapter(private val repository: Repository, private val onClick: (Subs
if (selected.contains(subscription.id)) { if (selected.contains(subscription.id)) {
itemView.setBackgroundResource(Colors.itemSelectedBackground(context)) itemView.setBackgroundResource(Colors.itemSelectedBackground(context))
} else { } else {
itemView.setBackgroundColor(Color.TRANSPARENT); itemView.setBackgroundColor(Color.TRANSPARENT)
} }
} }
} }

View file

@ -0,0 +1,71 @@
package io.heckel.ntfy.ui
import android.content.res.Configuration
import android.os.Build
import android.os.Bundle
import android.view.WindowInsetsController
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import io.heckel.ntfy.R
import io.heckel.ntfy.databinding.MainSettingsActivityBinding
class MainSettingsActivity : AppCompatActivity() {
private lateinit var mBinding: MainSettingsActivityBinding
@RequiresApi(Build.VERSION_CODES.R)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBinding = MainSettingsActivityBinding.inflate(layoutInflater)
setContentView(mBinding.root)
setupToolbar()
setSystemBarsAppearance()
showPreferencesFragment()
}
private fun setupToolbar() {
mBinding.toolbar.setNavigationOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
}
@RequiresApi(Build.VERSION_CODES.R)
private fun setSystemBarsAppearance() {
val insetsController = window.insetsController ?: return
val isLightMode = isSystemInLightMode()
if (isLightMode) {
insetsController.setSystemBarsAppearance(
WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS,
WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
)
insetsController.setSystemBarsAppearance(
WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS,
WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS
)
} else {
insetsController.setSystemBarsAppearance(
0,
WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
)
insetsController.setSystemBarsAppearance(
0,
WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS
)
}
}
private fun isSystemInLightMode(): Boolean {
val nightModeFlags = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
return nightModeFlags != Configuration.UI_MODE_NIGHT_YES
}
private fun showPreferencesFragment() {
supportFragmentManager
.beginTransaction()
.replace(R.id.fragment_container, PreferencesFragment())
.commit()
}
}

View file

@ -8,10 +8,8 @@ import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import io.heckel.ntfy.db.* import io.heckel.ntfy.db.*
import io.heckel.ntfy.up.Distributor import io.heckel.ntfy.up.Distributor
import io.heckel.ntfy.util.Log
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlin.collections.List
class SubscriptionsViewModel(private val repository: Repository) : ViewModel() { class SubscriptionsViewModel(private val repository: Repository) : ViewModel() {
fun list(): LiveData<List<Subscription>> { fun list(): LiveData<List<Subscription>> {
@ -51,7 +49,7 @@ class SubscriptionsViewModel(private val repository: Repository) : ViewModel() {
class SubscriptionsViewModelFactory(private val repository: Repository) : ViewModelProvider.Factory { class SubscriptionsViewModelFactory(private val repository: Repository) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
override fun <T : ViewModel?> create(modelClass: Class<T>) = override fun <T : ViewModel> create(modelClass: Class<T>): T =
with(modelClass){ with(modelClass){
when { when {
isAssignableFrom(SubscriptionsViewModel::class.java) -> SubscriptionsViewModel(repository) as T isAssignableFrom(SubscriptionsViewModel::class.java) -> SubscriptionsViewModel(repository) as T

View file

@ -8,7 +8,6 @@ import android.widget.RadioButton
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import io.heckel.ntfy.R import io.heckel.ntfy.R
import io.heckel.ntfy.db.Database
import io.heckel.ntfy.db.Repository import io.heckel.ntfy.db.Repository
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay

View file

@ -0,0 +1,37 @@
package io.heckel.ntfy.ui
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.widget.Toolbar
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreferenceCompat
import io.heckel.ntfy.R
import io.heckel.ntfy.service.SubscriberService
import io.heckel.ntfy.util.Log
class PreferencesFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.settings_preferences, rootKey)
val preference: SwitchPreferenceCompat? =
findPreference(getString(R.string.eos_preference_key_is_enabled))
preference?.setOnPreferenceChangeListener { _, newValue ->
val isChecked = newValue as Boolean
val intent = Intent(context, SubscriberService::class.java)
intent.action = if (isChecked) {
SubscriberService.Action.START.name
} else {
SubscriberService.Action.STOP.name
}
requireContext().startService(intent)
true
}
}
}

View file

@ -85,7 +85,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
override fun onSaveInstanceState(outState: Bundle) { override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState) super.onSaveInstanceState(outState)
// Save current activity title so we can set it again after a configuration change // Save current activity title, so we can set it again after a configuration change
outState.putCharSequence(TITLE_TAG, title) outState.putCharSequence(TITLE_TAG, title)
} }
@ -165,9 +165,8 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
return repository.getGlobalMutedUntil().toString() return repository.getGlobalMutedUntil().toString()
} }
} }
mutedUntil?.summaryProvider = Preference.SummaryProvider<ListPreference> { _ -> mutedUntil?.summaryProvider = Preference.SummaryProvider<ListPreference> {
val mutedUntilValue = repository.getGlobalMutedUntil() when (val mutedUntilValue = repository.getGlobalMutedUntil()) {
when (mutedUntilValue) {
Repository.MUTED_UNTIL_SHOW_ALL -> getString(R.string.settings_notifications_muted_until_show_all) Repository.MUTED_UNTIL_SHOW_ALL -> getString(R.string.settings_notifications_muted_until_show_all)
Repository.MUTED_UNTIL_FOREVER -> getString(R.string.settings_notifications_muted_until_forever) Repository.MUTED_UNTIL_FOREVER -> getString(R.string.settings_notifications_muted_until_forever)
else -> { else -> {
@ -191,10 +190,9 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
} }
} }
minPriority?.summaryProvider = Preference.SummaryProvider<ListPreference> { pref -> minPriority?.summaryProvider = Preference.SummaryProvider<ListPreference> { pref ->
val minPriorityValue = pref.value.toIntOrNull() ?: 1 // 1/low means all priorities when (val minPriorityValue = pref.value.toIntOrNull() ?: 1) { // 1/low means all priorities
when (minPriorityValue) { PRIORITY_MIN -> getString(R.string.settings_notifications_min_priority_summary_any)
1 -> getString(R.string.settings_notifications_min_priority_summary_any) PRIORITY_MAX -> getString(R.string.settings_notifications_min_priority_summary_max)
5 -> getString(R.string.settings_notifications_min_priority_summary_max)
else -> { else -> {
val minPriorityString = toPriorityString(requireContext(), minPriorityValue) val minPriorityString = toPriorityString(requireContext(), minPriorityValue)
getString(R.string.settings_notifications_min_priority_summary_x_or_higher, minPriorityValue, minPriorityString) getString(R.string.settings_notifications_min_priority_summary_x_or_higher, minPriorityValue, minPriorityString)
@ -202,6 +200,26 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
} }
} }
// Keep alerting for max priority
val insistentMaxPriorityPrefId = context?.getString(R.string.settings_notifications_insistent_max_priority_key) ?: return
val insistentMaxPriority: SwitchPreference? = findPreference(insistentMaxPriorityPrefId)
insistentMaxPriority?.isChecked = repository.getInsistentMaxPriorityEnabled()
insistentMaxPriority?.preferenceDataStore = object : PreferenceDataStore() {
override fun putBoolean(key: String?, value: Boolean) {
repository.setInsistentMaxPriorityEnabled(value)
}
override fun getBoolean(key: String?, defValue: Boolean): Boolean {
return repository.getInsistentMaxPriorityEnabled()
}
}
insistentMaxPriority?.summaryProvider = Preference.SummaryProvider<SwitchPreference> { pref ->
if (pref.isChecked) {
getString(R.string.settings_notifications_insistent_max_priority_summary_enabled)
} else {
getString(R.string.settings_notifications_insistent_max_priority_summary_disabled)
}
}
// Channel settings // Channel settings
val channelPrefsPrefId = context?.getString(R.string.settings_notifications_channel_prefs_key) ?: return val channelPrefsPrefId = context?.getString(R.string.settings_notifications_channel_prefs_key) ?: return
val channelPrefs: Preference? = findPreference(channelPrefsPrefId) val channelPrefs: Preference? = findPreference(channelPrefsPrefId)
@ -230,8 +248,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
} }
} }
autoDownload?.summaryProvider = Preference.SummaryProvider<ListPreference> { pref -> autoDownload?.summaryProvider = Preference.SummaryProvider<ListPreference> { pref ->
val maxSize = pref.value.toLongOrNull() ?: repository.getAutoDownloadMaxSize() when (val maxSize = pref.value.toLongOrNull() ?: repository.getAutoDownloadMaxSize()) {
when (maxSize) {
Repository.AUTO_DOWNLOAD_NEVER -> getString(R.string.settings_notifications_auto_download_summary_never) Repository.AUTO_DOWNLOAD_NEVER -> getString(R.string.settings_notifications_auto_download_summary_never)
Repository.AUTO_DOWNLOAD_ALWAYS -> getString(R.string.settings_notifications_auto_download_summary_always) Repository.AUTO_DOWNLOAD_ALWAYS -> getString(R.string.settings_notifications_auto_download_summary_always)
else -> getString(R.string.settings_notifications_auto_download_summary_smaller_than_x, formatBytes(maxSize, decimals = 0)) else -> getString(R.string.settings_notifications_auto_download_summary_smaller_than_x, formatBytes(maxSize, decimals = 0))
@ -263,8 +280,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
} }
} }
autoDelete?.summaryProvider = Preference.SummaryProvider<ListPreference> { pref -> autoDelete?.summaryProvider = Preference.SummaryProvider<ListPreference> { pref ->
val seconds = pref.value.toLongOrNull() ?: repository.getAutoDeleteSeconds() when (pref.value.toLongOrNull() ?: repository.getAutoDeleteSeconds()) {
when (seconds) {
Repository.AUTO_DELETE_NEVER -> getString(R.string.settings_notifications_auto_delete_summary_never) Repository.AUTO_DELETE_NEVER -> getString(R.string.settings_notifications_auto_delete_summary_never)
Repository.AUTO_DELETE_ONE_DAY_SECONDS -> getString(R.string.settings_notifications_auto_delete_summary_one_day) Repository.AUTO_DELETE_ONE_DAY_SECONDS -> getString(R.string.settings_notifications_auto_delete_summary_one_day)
Repository.AUTO_DELETE_THREE_DAYS_SECONDS -> getString(R.string.settings_notifications_auto_delete_summary_three_days) Repository.AUTO_DELETE_THREE_DAYS_SECONDS -> getString(R.string.settings_notifications_auto_delete_summary_three_days)
@ -348,6 +364,26 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
} }
} }
// Enable UnifiedPush
val unifiedPushEnabledPrefId = context?.getString(R.string.settings_advanced_unifiedpush_key) ?: return
val unifiedPushEnabled: SwitchPreference? = findPreference(unifiedPushEnabledPrefId)
unifiedPushEnabled?.isChecked = repository.getUnifiedPushEnabled()
unifiedPushEnabled?.preferenceDataStore = object : PreferenceDataStore() {
override fun putBoolean(key: String?, value: Boolean) {
repository.setUnifiedPushEnabled(value)
}
override fun getBoolean(key: String?, defValue: Boolean): Boolean {
return repository.getUnifiedPushEnabled()
}
}
unifiedPushEnabled?.summaryProvider = Preference.SummaryProvider<SwitchPreference> { pref ->
if (pref.isChecked) {
getString(R.string.settings_advanced_unifiedpush_summary_enabled)
} else {
getString(R.string.settings_advanced_unifiedpush_summary_disabled)
}
}
// Export logs // Export logs
val exportLogsPrefId = context?.getString(R.string.settings_advanced_export_logs_key) ?: return val exportLogsPrefId = context?.getString(R.string.settings_advanced_export_logs_key) ?: return
val exportLogs: ListPreference? = findPreference(exportLogsPrefId) val exportLogs: ListPreference? = findPreference(exportLogsPrefId)
@ -395,7 +431,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
getString(R.string.settings_advanced_record_logs_summary_disabled) getString(R.string.settings_advanced_record_logs_summary_disabled)
} }
} }
recordLogsEnabled?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, v -> recordLogsEnabled?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, _ ->
lifecycleScope.launch(Dispatchers.IO) { lifecycleScope.launch(Dispatchers.IO) {
repository.getSubscriptions().forEach { s -> repository.getSubscriptions().forEach { s ->
Log.addScrubTerm(shortUrl(s.baseUrl), Log.TermType.Domain) Log.addScrubTerm(shortUrl(s.baseUrl), Log.TermType.Domain)
@ -440,7 +476,7 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
backup?.preferenceDataStore = object : PreferenceDataStore() { } // Dummy store to protect from accidentally overwriting backup?.preferenceDataStore = object : PreferenceDataStore() { } // Dummy store to protect from accidentally overwriting
backup?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, v -> backup?.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, v ->
backupSelection = v.toString() backupSelection = v.toString()
val timestamp = SimpleDateFormat("yyMMdd-HHmm").format(Date()); val timestamp = SimpleDateFormat("yyMMdd-HHmm").format(Date())
val suggestedFilename = when (backupSelection) { val suggestedFilename = when (backupSelection) {
BACKUP_EVERYTHING_NO_USERS -> "ntfy-backup-no-users-$timestamp.json" BACKUP_EVERYTHING_NO_USERS -> "ntfy-backup-no-users-$timestamp.json"
BACKUP_SETTINGS_ONLY -> "ntfy-settings-$timestamp.json" BACKUP_SETTINGS_ONLY -> "ntfy-settings-$timestamp.json"
@ -587,10 +623,9 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
throw Exception("Unexpected response ${response.code}") throw Exception("Unexpected response ${response.code}")
} }
val body = response.body?.string()?.trim() val body = response.body?.string()?.trim()
if (body == null || body.isEmpty()) throw Exception("Return body is empty") if (body.isNullOrEmpty()) throw Exception("Return body is empty")
Log.d(TAG, "Logs uploaded successfully: $body") Log.d(TAG, "Logs uploaded successfully: $body")
val resp = gson.fromJson(body.toString(), NopasteResponse::class.java) val resp = gson.fromJson(body.toString(), NopasteResponse::class.java)
val context = context ?: return@launch
requireActivity().runOnUiThread { requireActivity().runOnUiThread {
val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("logs URL", resp.url) val clip = ClipData.newPlainText("logs URL", resp.url)
@ -606,7 +641,6 @@ class SettingsActivity : AppCompatActivity(), PreferenceFragmentCompat.OnPrefere
} }
} catch (e: Exception) { } catch (e: Exception) {
Log.w(TAG, "Error uploading logs", e) Log.w(TAG, "Error uploading logs", e)
val context = context ?: return@launch
requireActivity().runOnUiThread { requireActivity().runOnUiThread {
Toast Toast
.makeText(context, getString(R.string.settings_advanced_export_logs_error_uploading, e.message), Toast.LENGTH_LONG) .makeText(context, getString(R.string.settings_advanced_export_logs_error_uploading, e.message), Toast.LENGTH_LONG)

View file

@ -1,7 +1,6 @@
package io.heckel.ntfy.ui package io.heckel.ntfy.ui
import android.content.Intent import android.content.Intent
import android.graphics.BitmapFactory
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.os.Parcelable import android.os.Parcelable
@ -295,7 +294,7 @@ class ShareActivity : AppCompatActivity() {
.show() .show()
} }
} catch (e: Exception) { } catch (e: Exception) {
val message = if (e is ApiService.UnauthorizedException) { val errorMessage = if (e is ApiService.UnauthorizedException) {
if (e.user != null) { if (e.user != null) {
getString(R.string.detail_test_message_error_unauthorized_user, e.user.username) getString(R.string.detail_test_message_error_unauthorized_user, e.user.username)
} else { } else {
@ -308,7 +307,7 @@ class ShareActivity : AppCompatActivity() {
} }
runOnUiThread { runOnUiThread {
progress.visibility = View.GONE progress.visibility = View.GONE
errorText.text = message errorText.text = errorMessage
errorImage.visibility = View.VISIBLE errorImage.visibility = View.VISIBLE
errorText.visibility = View.VISIBLE errorText.visibility = View.VISIBLE
} }
@ -326,7 +325,7 @@ class ShareActivity : AppCompatActivity() {
contentText.text.isNotEmpty() && topicText.text.isNotEmpty() contentText.text.isNotEmpty() && topicText.text.isNotEmpty()
} }
sendItem.isEnabled = enabled sendItem.isEnabled = enabled
sendItem.icon.alpha = if (enabled) 255 else 130 sendItem.icon?.alpha = if (enabled) 255 else 130
} }
private fun getBaseUrl(): String { private fun getBaseUrl(): String {

View file

@ -3,19 +3,17 @@ package io.heckel.ntfy.ui
import android.app.AlertDialog import android.app.AlertDialog
import android.app.Dialog import android.app.Dialog
import android.content.Context import android.content.Context
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import android.widget.Button import android.widget.Button
import android.widget.TextView import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputEditText
import io.heckel.ntfy.R import io.heckel.ntfy.R
import io.heckel.ntfy.db.User import io.heckel.ntfy.db.User
import io.heckel.ntfy.util.AfterChangedTextWatcher
import io.heckel.ntfy.util.dangerButton
import io.heckel.ntfy.util.validUrl import io.heckel.ntfy.util.validUrl
class UserFragment : DialogFragment() { class UserFragment : DialogFragment() {
@ -98,29 +96,15 @@ class UserFragment : DialogFragment() {
// Delete button should be red // Delete button should be red
if (user != null) { if (user != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
dialog dialog
.getButton(AlertDialog.BUTTON_NEUTRAL) .getButton(AlertDialog.BUTTON_NEUTRAL)
.setTextAppearance(R.style.DangerText) .dangerButton(requireContext())
} else {
dialog
.getButton(AlertDialog.BUTTON_NEUTRAL)
.setTextColor(ContextCompat.getColor(requireContext(), Colors.dangerText(requireContext())))
}
} }
// Validate input when typing // Validate input when typing
val textWatcher = object : TextWatcher { val textWatcher = AfterChangedTextWatcher {
override fun afterTextChanged(s: Editable?) {
validateInput() validateInput()
} }
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
// Nothing
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
// Nothing
}
}
baseUrlView.addTextChangedListener(textWatcher) baseUrlView.addTextChangedListener(textWatcher)
usernameView.addTextChangedListener(textWatcher) usernameView.addTextChangedListener(textWatcher)
passwordView.addTextChangedListener(textWatcher) passwordView.addTextChangedListener(textWatcher)
@ -140,7 +124,7 @@ class UserFragment : DialogFragment() {
} }
// Show keyboard when the dialog is shown (see https://stackoverflow.com/a/19573049/1440785) // Show keyboard when the dialog is shown (see https://stackoverflow.com/a/19573049/1440785)
dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); dialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
return dialog return dialog
} }

View file

@ -10,12 +10,10 @@ import io.heckel.ntfy.service.SubscriberServiceManager
import io.heckel.ntfy.util.* import io.heckel.ntfy.util.*
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.sync.withLock
import java.util.* import java.util.*
import kotlin.random.Random
/** /**
* This is the UnifiedPush broadcast receiver to handle the distributor actions REGISTER and UNREGISTER. * This is the UnifiedPush broadcast receiver to handle the distributor actions REGISTER and UNREGISTER.
@ -40,6 +38,11 @@ class BroadcastReceiver : android.content.BroadcastReceiver() {
val repository = app.repository val repository = app.repository
val distributor = Distributor(app) val distributor = Distributor(app)
Log.d(TAG, "REGISTER received for app $appId (connectorToken=$connectorToken)") Log.d(TAG, "REGISTER received for app $appId (connectorToken=$connectorToken)")
if (!repository.getUnifiedPushEnabled()) {
Log.w(TAG, "Refusing registration because 'EnableUP' is disabled")
distributor.sendRegistrationFailed(appId, connectorToken, "UnifiedPush is disabled in ntfy")
return
}
if (appId.isBlank()) { if (appId.isBlank()) {
Log.w(TAG, "Refusing registration: Empty application") Log.w(TAG, "Refusing registration: Empty application")
distributor.sendRegistrationFailed(appId, connectorToken, "Empty application string") distributor.sendRegistrationFailed(appId, connectorToken, "Empty application string")
@ -72,9 +75,11 @@ class BroadcastReceiver : android.content.BroadcastReceiver() {
baseUrl = baseUrl, baseUrl = baseUrl,
topic = topic, topic = topic,
instant = true, // No Firebase, always instant! instant = true, // No Firebase, always instant!
dedicatedChannels = false,
mutedUntil = 0, mutedUntil = 0,
minPriority = Repository.MIN_PRIORITY_USE_GLOBAL, minPriority = Repository.MIN_PRIORITY_USE_GLOBAL,
autoDelete = Repository.AUTO_DELETE_USE_GLOBAL, autoDelete = Repository.AUTO_DELETE_USE_GLOBAL,
insistent = Repository.INSISTENT_MAX_PRIORITY_USE_GLOBAL,
lastNotificationId = null, lastNotificationId = null,
icon = null, icon = null,
upAppId = appId, upAppId = appId,

View file

@ -10,7 +10,7 @@ import io.heckel.ntfy.util.Log
*/ */
class Distributor(val context: Context) { class Distributor(val context: Context) {
fun sendMessage(app: String, connectorToken: String, message: ByteArray) { fun sendMessage(app: String, connectorToken: String, message: ByteArray) {
Log.d(TAG, "Sending MESSAGE to $app (token=$connectorToken): ${String(message)} (${message.size} bytes)}") Log.d(TAG, "Sending MESSAGE to $app (token=$connectorToken): ${message.size} bytes")
val broadcastIntent = Intent() val broadcastIntent = Intent()
broadcastIntent.`package` = app broadcastIntent.`package` = app
broadcastIntent.action = ACTION_MESSAGE broadcastIntent.action = ACTION_MESSAGE

View file

@ -0,0 +1,11 @@
package io.heckel.ntfy.util
const val ANDROID_APP_MIME_TYPE = "application/vnd.android.package-archive"
const val PRIORITY_MIN = 1
const val PRIORITY_LOW = 2
const val PRIORITY_DEFAULT = 3
const val PRIORITY_HIGH = 4
const val PRIORITY_MAX = 5
val ALL_PRIORITIES = listOf(PRIORITY_MIN, PRIORITY_LOW, PRIORITY_DEFAULT, PRIORITY_HIGH, PRIORITY_MAX)

View file

@ -22,12 +22,16 @@ import android.util.Base64
import android.util.TypedValue import android.util.TypedValue
import android.view.View import android.view.View
import android.view.Window import android.view.Window
import android.widget.Button
import android.widget.ImageView import android.widget.ImageView
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.app.AppCompatDelegate
import androidx.core.content.ContextCompat
import io.heckel.ntfy.BuildConfig
import io.heckel.ntfy.R import io.heckel.ntfy.R
import io.heckel.ntfy.db.* import io.heckel.ntfy.db.*
import io.heckel.ntfy.msg.MESSAGE_ENCODING_BASE64 import io.heckel.ntfy.msg.MESSAGE_ENCODING_BASE64
import io.heckel.ntfy.ui.Colors
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
@ -56,8 +60,12 @@ fun topicUrlAuth(baseUrl: String, topic: String) = "${topicUrl(baseUrl, topic)}/
fun topicUrlJsonPoll(baseUrl: String, topic: String, since: String) = "${topicUrl(baseUrl, topic)}/json?poll=1&since=$since" fun topicUrlJsonPoll(baseUrl: String, topic: String, since: String) = "${topicUrl(baseUrl, topic)}/json?poll=1&since=$since"
fun topicShortUrl(baseUrl: String, topic: String) = shortUrl(topicUrl(baseUrl, topic)) fun topicShortUrl(baseUrl: String, topic: String) = shortUrl(topicUrl(baseUrl, topic))
fun subscriptionTopicShortUrl(subscription: Subscription) : String {
return topicShortUrl(subscription.baseUrl, subscription.topic)
}
fun displayName(subscription: Subscription) : String { fun displayName(subscription: Subscription) : String {
return subscription.displayName ?: topicShortUrl(subscription.baseUrl, subscription.topic) return subscription.displayName ?: subscriptionTopicShortUrl(subscription)
} }
fun shortUrl(url: String) = url fun shortUrl(url: String) = url
@ -91,17 +99,16 @@ fun formatDateShort(timestampSecs: Long): String {
} }
fun toPriority(priority: Int?): Int { fun toPriority(priority: Int?): Int {
if (priority != null && (1..5).contains(priority)) return priority return if (priority != null && ALL_PRIORITIES.contains(priority)) priority else PRIORITY_DEFAULT
else return 3
} }
fun toPriorityString(context: Context, priority: Int): String { fun toPriorityString(context: Context, priority: Int): String {
return when (priority) { return when (priority) {
1 -> context.getString(R.string.settings_notifications_priority_min) PRIORITY_MIN -> context.getString(R.string.settings_notifications_priority_min)
2 -> context.getString(R.string.settings_notifications_priority_low) PRIORITY_LOW -> context.getString(R.string.settings_notifications_priority_low)
3 -> context.getString(R.string.settings_notifications_priority_default) PRIORITY_DEFAULT -> context.getString(R.string.settings_notifications_priority_default)
4 -> context.getString(R.string.settings_notifications_priority_high) PRIORITY_HIGH -> context.getString(R.string.settings_notifications_priority_high)
5 -> context.getString(R.string.settings_notifications_priority_max) PRIORITY_MAX -> context.getString(R.string.settings_notifications_priority_max)
else -> context.getString(R.string.settings_notifications_priority_default) else -> context.getString(R.string.settings_notifications_priority_default)
} }
} }
@ -217,16 +224,6 @@ fun maybeAppendActionErrors(message: String, notification: Notification): String
} }
} }
// Checks in the most horrible way if a content URI exists; I couldn't find a better way
fun fileExists(context: Context, contentUri: String?): Boolean {
return try {
fileStat(context, Uri.parse(contentUri)) // Throws if the file does not exist
true
} catch (_: Exception) {
false
}
}
// Queries the filename of a content URI // Queries the filename of a content URI
fun fileName(context: Context, contentUri: String?, fallbackName: String): String { fun fileName(context: Context, contentUri: String?, fallbackName: String): String {
return try { return try {
@ -328,7 +325,7 @@ fun mimeTypeToIconResource(mimeType: String?): Int {
R.drawable.ic_file_video_orange_24dp R.drawable.ic_file_video_orange_24dp
} else if (mimeType?.startsWith("audio/") == true) { } else if (mimeType?.startsWith("audio/") == true) {
R.drawable.ic_file_audio_purple_24dp R.drawable.ic_file_audio_purple_24dp
} else if (mimeType == "application/vnd.android.package-archive") { } else if (mimeType == ANDROID_APP_MIME_TYPE) {
R.drawable.ic_file_app_gray_24dp R.drawable.ic_file_app_gray_24dp
} else { } else {
R.drawable.ic_file_document_blue_24dp R.drawable.ic_file_document_blue_24dp
@ -339,6 +336,15 @@ fun supportedImage(mimeType: String?): Boolean {
return listOf("image/jpeg", "image/png").contains(mimeType) return listOf("image/jpeg", "image/png").contains(mimeType)
} }
// Google Play doesn't allow us to install received .apk files anymore.
// See https://github.com/binwiederhier/ntfy/issues/531
fun canOpenAttachment(attachment: Attachment?): Boolean {
if (attachment?.type == ANDROID_APP_MIME_TYPE && !BuildConfig.INSTALL_PACKAGES_AVAILABLE) {
return false
}
return true
}
// Check if battery optimization is enabled, see https://stackoverflow.com/a/49098293/1440785 // Check if battery optimization is enabled, see https://stackoverflow.com/a/49098293/1440785
fun isIgnoringBatteryOptimizations(context: Context): Boolean { fun isIgnoringBatteryOptimizations(context: Context): Boolean {
val powerManager = context.applicationContext.getSystemService(Context.POWER_SERVICE) as PowerManager val powerManager = context.applicationContext.getSystemService(Context.POWER_SERVICE) as PowerManager
@ -419,11 +425,16 @@ fun View.ripple(scope: CoroutineScope) {
} }
} }
fun Uri.readBitmapFromUri(context: Context): Bitmap { fun Uri.readBitmapFromUri(context: Context): Bitmap {
val resolver = context.applicationContext.contentResolver val resolver = context.applicationContext.contentResolver
val bitmapStream = resolver.openInputStream(this) val bitmapStream = resolver.openInputStream(this)
return BitmapFactory.decodeStream(bitmapStream) val bitmap = BitmapFactory.decodeStream(bitmapStream)
if (bitmap.byteCount > 100 * 1024 * 1024) {
// If the Bitmap is too large to be rendered (100 MB), it will throw a RuntimeException downstream.
// This workaround throws a catchable exception instead. See issue #474. From https://stackoverflow.com/a/53334563/1440785
throw Exception("Bitmap too large to draw on Canvas (${bitmap.byteCount} bytes)")
}
return bitmap
} }
fun String.readBitmapFromUri(context: Context): Bitmap { fun String.readBitmapFromUri(context: Context): Bitmap {
@ -472,9 +483,8 @@ fun ensureSafeNewFile(dir: File, name: String): File {
fun copyToClipboard(context: Context, notification: Notification) { fun copyToClipboard(context: Context, notification: Notification) {
val message = decodeMessage(notification) val message = decodeMessage(notification)
val text = message + "\n\n" + formatDateShort(notification.timestamp)
val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("notification message", text) val clip = ClipData.newPlainText("notification message", message)
clipboard.setPrimaryClip(clip) clipboard.setPrimaryClip(clip)
Toast Toast
.makeText(context, context.getString(R.string.detail_copied_to_clipboard_message), Toast.LENGTH_LONG) .makeText(context, context.getString(R.string.detail_copied_to_clipboard_message), Toast.LENGTH_LONG)
@ -486,3 +496,16 @@ fun String.sha256(): String {
val digest = md.digest(this.toByteArray()) val digest = md.digest(this.toByteArray())
return digest.fold("") { str, it -> str + "%02x".format(it) } return digest.fold("") { str, it -> str + "%02x".format(it) }
} }
fun Button.dangerButton(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
setTextAppearance(R.style.DangerText)
} else {
setTextColor(ContextCompat.getColor(context, Colors.dangerText(context)))
}
}
fun Long.nullIfZero(): Long? {
return if (this == 0L) return null else this
}

View file

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

View file

@ -0,0 +1,31 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="50dp"
android:height="50dp"
android:viewportWidth="50"
android:viewportHeight="50">
<path
android:pathData="m7.8399,6.35c-3.58,0 -6.6469,2.817 -6.6469,6.3983v0.003l0.0351,27.8668 -0.8991,6.6347 12.2261,-3.248L42.9487,44.0049c3.58,0 6.6469,-2.8208 6.6469,-6.4022v-24.8545c0,-3.5803 -3.0652,-6.3967 -6.6438,-6.3983h-0.0031zM7.8399,10.8662h35.1088,0.0031c1.2579,0.0013 2.1277,0.9164 2.1277,1.8821v24.8544c0,0.9666 -0.8714,1.8821 -2.1307,1.8821L11.8924,39.4849l-6.2114,1.8768 0.0633,-0.366 -0.0343,-28.2473c0,-0.9665 0.8706,-1.8821 2.13,-1.8821z"
android:strokeWidth="0.754022"
android:fillColor="#FFFFFFFF"
android:strokeColor="#00000000"/>
<path
android:pathData="m11.5278,32.0849l0,-3.346l7.0363,-3.721q0.3397,-0.1732 0.6551,-0.2596 0.3397,-0.1153 0.6066,-0.1732 0.2912,-0.0288 0.5823,-0.0576l0,-0.2308q-0.2912,-0.0288 -0.5823,-0.1153 -0.2669,-0.0576 -0.6066,-0.1443 -0.3154,-0.1153 -0.6551,-0.2884l-7.0363,-3.721l0,-3.3749l10.8699,5.9132l0,3.6056z"
android:strokeWidth="0.525121"
android:fillColor="#FFFFFFFF"
android:strokeColor="#00000000"/>
<path
android:pathData="m10.9661,15.6112l0,4.8516l7.3742,3.9002c0.0157,0.0077 0.0305,0.0128 0.0461,0.0204 -0.0157,0.0077 -0.0305,0.0128 -0.0461,0.0204l-7.3742,3.9002l0,4.8267l0.7961,-0.4333 11.1995,-6.0969l0,-4.463zM12.0931,17.6933 L21.8346,22.9981l0,2.7446l-9.7414,5.2999l0,-1.8679l6.6912,-3.5416 0.0084,-0.0051c0.1961,-0.0992 0.3826,-0.1724 0.5531,-0.2191l0.0127,0l0.0167,-0.0051c0.2034,-0.0691 0.3777,-0.1209 0.5279,-0.1545l1.0684,-0.1046l0,-1.4644l-0.5154,-0.0497c-0.1632,-0.0153 -0.3288,-0.0505 -0.4944,-0.0997l-0.0167,-0.0051 -0.0167,-0.0051c-0.1632,-0.0352 -0.3552,-0.0811 -0.5656,-0.1344 -0.1802,-0.0668 -0.3706,-0.1479 -0.5698,-0.2492l-0.0084,-0.0051 -6.6912,-3.5416z"
android:strokeWidth="0.525121"
android:fillColor="#FFFFFFFF"
android:strokeColor="#00000000"/>
<path
android:pathData="m26.7503,30.9206l11.6118,0l0,3.1388L26.7503,34.0594Z"
android:strokeWidth="0.525121"
android:fillColor="#FFFFFFFF"
android:strokeColor="#00000000"/>
<path
android:pathData="m26.1875,30.2775l0,0.6427 0,3.7845l12.7371,0l0,-4.4272zM27.3113,31.563l10.4896,0l0,1.8515l-10.4896,0z"
android:strokeWidth="0.525121"
android:fillColor="#FFFFFFFF"
android:strokeColor="#00000000"/>
</vector>

View file

@ -1,31 +1,31 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="50dp" android:width="22dp"
android:height="50dp" android:height="22dp"
android:viewportWidth="50" android:viewportWidth="50"
android:viewportHeight="50"> android:viewportHeight="50">
<path <path
android:pathData="m7.8399,6.35c-3.58,0 -6.6469,2.817 -6.6469,6.3983v0.003l0.0351,27.8668 -0.8991,6.6347 12.2261,-3.248L42.9487,44.0049c3.58,0 6.6469,-2.8208 6.6469,-6.4022v-24.8545c0,-3.5803 -3.0652,-6.3967 -6.6438,-6.3983h-0.0031zM7.8399,10.8662h35.1088,0.0031c1.2579,0.0013 2.1277,0.9164 2.1277,1.8821v24.8544c0,0.9666 -0.8714,1.8821 -2.1307,1.8821L11.8924,39.4849l-6.2114,1.8768 0.0633,-0.366 -0.0343,-28.2473c0,-0.9665 0.8706,-1.8821 2.13,-1.8821z" android:pathData="m7.8399,6.35c-3.58,0 -6.6469,2.817 -6.6469,6.3983v0.003l0.0351,27.8668 -0.8991,6.6347 12.2261,-3.248L42.9487,44.0049c3.58,0 6.6469,-2.8208 6.6469,-6.4022v-24.8545c0,-3.5803 -3.0652,-6.3967 -6.6438,-6.3983h-0.0031zM7.8399,10.8662h35.1088,0.0031c1.2579,0.0013 2.1277,0.9164 2.1277,1.8821v24.8544c0,0.9666 -0.8714,1.8821 -2.1307,1.8821L11.8924,39.4849l-6.2114,1.8768 0.0633,-0.366 -0.0343,-28.2473c0,-0.9665 0.8706,-1.8821 2.13,-1.8821z"
android:strokeWidth="0.754022" android:strokeWidth="0.754022"
android:fillColor="#338574" android:fillColor="?android:attr/colorControlNormal"
android:strokeColor="#00000000"/> android:strokeColor="#00000000"/>
<path <path
android:pathData="m11.5278,32.0849l0,-3.346l7.0363,-3.721q0.3397,-0.1732 0.6551,-0.2596 0.3397,-0.1153 0.6066,-0.1732 0.2912,-0.0288 0.5823,-0.0576l0,-0.2308q-0.2912,-0.0288 -0.5823,-0.1153 -0.2669,-0.0576 -0.6066,-0.1443 -0.3154,-0.1153 -0.6551,-0.2884l-7.0363,-3.721l0,-3.3749l10.8699,5.9132l0,3.6056z" android:pathData="m11.5278,32.0849l0,-3.346l7.0363,-3.721q0.3397,-0.1732 0.6551,-0.2596 0.3397,-0.1153 0.6066,-0.1732 0.2912,-0.0288 0.5823,-0.0576l0,-0.2308q-0.2912,-0.0288 -0.5823,-0.1153 -0.2669,-0.0576 -0.6066,-0.1443 -0.3154,-0.1153 -0.6551,-0.2884l-7.0363,-3.721l0,-3.3749l10.8699,5.9132l0,3.6056z"
android:strokeWidth="0.525121" android:strokeWidth="0.525121"
android:fillColor="#338574" android:fillColor="?android:attr/colorControlNormal"
android:strokeColor="#00000000"/> android:strokeColor="#00000000"/>
<path <path
android:pathData="m10.9661,15.6112l0,4.8516l7.3742,3.9002c0.0157,0.0077 0.0305,0.0128 0.0461,0.0204 -0.0157,0.0077 -0.0305,0.0128 -0.0461,0.0204l-7.3742,3.9002l0,4.8267l0.7961,-0.4333 11.1995,-6.0969l0,-4.463zM12.0931,17.6933 L21.8346,22.9981l0,2.7446l-9.7414,5.2999l0,-1.8679l6.6912,-3.5416 0.0084,-0.0051c0.1961,-0.0992 0.3826,-0.1724 0.5531,-0.2191l0.0127,0l0.0167,-0.0051c0.2034,-0.0691 0.3777,-0.1209 0.5279,-0.1545l1.0684,-0.1046l0,-1.4644l-0.5154,-0.0497c-0.1632,-0.0153 -0.3288,-0.0505 -0.4944,-0.0997l-0.0167,-0.0051 -0.0167,-0.0051c-0.1632,-0.0352 -0.3552,-0.0811 -0.5656,-0.1344 -0.1802,-0.0668 -0.3706,-0.1479 -0.5698,-0.2492l-0.0084,-0.0051 -6.6912,-3.5416z" android:pathData="m10.9661,15.6112l0,4.8516l7.3742,3.9002c0.0157,0.0077 0.0305,0.0128 0.0461,0.0204 -0.0157,0.0077 -0.0305,0.0128 -0.0461,0.0204l-7.3742,3.9002l0,4.8267l0.7961,-0.4333 11.1995,-6.0969l0,-4.463zM12.0931,17.6933 L21.8346,22.9981l0,2.7446l-9.7414,5.2999l0,-1.8679l6.6912,-3.5416 0.0084,-0.0051c0.1961,-0.0992 0.3826,-0.1724 0.5531,-0.2191l0.0127,0l0.0167,-0.0051c0.2034,-0.0691 0.3777,-0.1209 0.5279,-0.1545l1.0684,-0.1046l0,-1.4644l-0.5154,-0.0497c-0.1632,-0.0153 -0.3288,-0.0505 -0.4944,-0.0997l-0.0167,-0.0051 -0.0167,-0.0051c-0.1632,-0.0352 -0.3552,-0.0811 -0.5656,-0.1344 -0.1802,-0.0668 -0.3706,-0.1479 -0.5698,-0.2492l-0.0084,-0.0051 -6.6912,-3.5416z"
android:strokeWidth="0.525121" android:strokeWidth="0.525121"
android:fillColor="#338574" android:fillColor="?android:attr/colorControlNormal"
android:strokeColor="#00000000"/> android:strokeColor="#00000000"/>
<path <path
android:pathData="m26.7503,30.9206l11.6118,0l0,3.1388L26.7503,34.0594Z" android:pathData="m26.7503,30.9206l11.6118,0l0,3.1388L26.7503,34.0594Z"
android:strokeWidth="0.525121" android:strokeWidth="0.525121"
android:fillColor="#338574" android:fillColor="?android:attr/colorControlNormal"
android:strokeColor="#00000000"/> android:strokeColor="#00000000"/>
<path <path
android:pathData="m26.1875,30.2775l0,0.6427 0,3.7845l12.7371,0l0,-4.4272zM27.3113,31.563l10.4896,0l0,1.8515l-10.4896,0z" android:pathData="m26.1875,30.2775l0,0.6427 0,3.7845l12.7371,0l0,-4.4272zM27.3113,31.563l10.4896,0l0,1.8515l-10.4896,0z"
android:strokeWidth="0.525121" android:strokeWidth="0.525121"
android:fillColor="#338574" android:fillColor="?android:attr/colorControlNormal"
android:strokeColor="#00000000"/> android:strokeColor="#00000000"/>
</vector> </vector>

View file

@ -6,21 +6,21 @@
<path <path
android:pathData="M7.8398,6.35C4.2598,6.35 1.1932,9.1672 1.1932,12.7486L1.1932,12.7512L1.2283,40.6182L0.3292,47.2529L12.5553,44.0051L35.9384,44.0051L36.5848,39.4849L11.8923,39.4849L5.6808,41.3618L5.7444,40.9954L5.7097,12.7486C5.7097,11.7821 6.5805,10.866 7.8398,10.866L42.9488,10.866L42.9519,10.866C44.2097,10.8673 45.0794,11.7828 45.0794,12.7486L45.0794,25.7395L49.5954,25.7395L49.5954,12.7481C49.5954,9.1677 46.5305,6.3517 42.9519,6.35L42.9488,6.35L7.8398,6.35zM49.5954,31.4735C45.6685,38.326 43.7215,41.7259 42.4176,44.0051L42.9488,44.0051C46.5288,44.0051 49.5954,41.1842 49.5954,37.6029L49.5954,31.4735z" android:pathData="M7.8398,6.35C4.2598,6.35 1.1932,9.1672 1.1932,12.7486L1.1932,12.7512L1.2283,40.6182L0.3292,47.2529L12.5553,44.0051L35.9384,44.0051L36.5848,39.4849L11.8923,39.4849L5.6808,41.3618L5.7444,40.9954L5.7097,12.7486C5.7097,11.7821 6.5805,10.866 7.8398,10.866L42.9488,10.866L42.9519,10.866C44.2097,10.8673 45.0794,11.7828 45.0794,12.7486L45.0794,25.7395L49.5954,25.7395L49.5954,12.7481C49.5954,9.1677 46.5305,6.3517 42.9519,6.35L42.9488,6.35L7.8398,6.35zM49.5954,31.4735C45.6685,38.326 43.7215,41.7259 42.4176,44.0051L42.9488,44.0051C46.5288,44.0051 49.5954,41.1842 49.5954,37.6029L49.5954,31.4735z"
android:strokeWidth="2.84985" android:strokeWidth="2.84985"
android:fillColor="#338574" android:fillColor="#FFFFFFFF"
android:strokeColor="#00000000"/> android:strokeColor="#00000000"/>
<path <path
android:pathData="m11.5278,32.0849l0,-3.346l7.0363,-3.721q0.3397,-0.1732 0.6551,-0.2596 0.3397,-0.1153 0.6066,-0.1732 0.2912,-0.0288 0.5823,-0.0576l0,-0.2308q-0.2912,-0.0288 -0.5823,-0.1153 -0.2669,-0.0576 -0.6066,-0.1443 -0.3154,-0.1153 -0.6551,-0.2884l-7.0363,-3.721l0,-3.3749l10.8699,5.9132l0,3.6056z" android:pathData="m11.5278,32.0849l0,-3.346l7.0363,-3.721q0.3397,-0.1732 0.6551,-0.2596 0.3397,-0.1153 0.6066,-0.1732 0.2912,-0.0288 0.5823,-0.0576l0,-0.2308q-0.2912,-0.0288 -0.5823,-0.1153 -0.2669,-0.0576 -0.6066,-0.1443 -0.3154,-0.1153 -0.6551,-0.2884l-7.0363,-3.721l0,-3.3749l10.8699,5.9132l0,3.6056z"
android:strokeWidth="0.525121" android:strokeWidth="0.525121"
android:fillColor="#338574" android:fillColor="#FFFFFFFF"
android:strokeColor="#00000000"/> android:strokeColor="#00000000"/>
<path <path
android:pathData="m10.9661,15.6112l0,4.8516l7.3742,3.9002c0.0157,0.0077 0.0305,0.0128 0.0461,0.0204 -0.0157,0.0077 -0.0305,0.0128 -0.0461,0.0204l-7.3742,3.9002l0,4.8267l0.7961,-0.4333 11.1995,-6.0969l0,-4.463zM12.0931,17.6933 L21.8346,22.9981l0,2.7446l-9.7414,5.2999l0,-1.8679l6.6912,-3.5416 0.0084,-0.0051c0.1961,-0.0992 0.3826,-0.1724 0.5531,-0.2191l0.0127,0l0.0167,-0.0051c0.2034,-0.0691 0.3777,-0.1209 0.5279,-0.1545l1.0684,-0.1046l0,-1.4644l-0.5154,-0.0497c-0.1632,-0.0153 -0.3288,-0.0505 -0.4944,-0.0997l-0.0167,-0.0051 -0.0167,-0.0051c-0.1632,-0.0352 -0.3552,-0.0811 -0.5656,-0.1344 -0.1802,-0.0668 -0.3706,-0.1479 -0.5698,-0.2492l-0.0084,-0.0051 -6.6912,-3.5416z" android:pathData="m10.9661,15.6112l0,4.8516l7.3742,3.9002c0.0157,0.0077 0.0305,0.0128 0.0461,0.0204 -0.0157,0.0077 -0.0305,0.0128 -0.0461,0.0204l-7.3742,3.9002l0,4.8267l0.7961,-0.4333 11.1995,-6.0969l0,-4.463zM12.0931,17.6933 L21.8346,22.9981l0,2.7446l-9.7414,5.2999l0,-1.8679l6.6912,-3.5416 0.0084,-0.0051c0.1961,-0.0992 0.3826,-0.1724 0.5531,-0.2191l0.0127,0l0.0167,-0.0051c0.2034,-0.0691 0.3777,-0.1209 0.5279,-0.1545l1.0684,-0.1046l0,-1.4644l-0.5154,-0.0497c-0.1632,-0.0153 -0.3288,-0.0505 -0.4944,-0.0997l-0.0167,-0.0051 -0.0167,-0.0051c-0.1632,-0.0352 -0.3552,-0.0811 -0.5656,-0.1344 -0.1802,-0.0668 -0.3706,-0.1479 -0.5698,-0.2492l-0.0084,-0.0051 -6.6912,-3.5416z"
android:strokeWidth="0.525121" android:strokeWidth="0.525121"
android:fillColor="#338574" android:fillColor="#FFFFFFFF"
android:strokeColor="#00000000"/> android:strokeColor="#00000000"/>
<path <path
android:pathData="m41.6796,15.3498c-4.1394,7.2567 -7.8235,13.7146 -10.2159,17.9374h8.5829l-1.8531,12.962c1.2024,-2.1043 3.8969,-6.8095 10.2878,-17.9601h-8.6543z" android:pathData="m41.6796,15.3498c-4.1394,7.2567 -7.8235,13.7146 -10.2159,17.9374h8.5829l-1.8531,12.962c1.2024,-2.1043 3.8969,-6.8095 10.2878,-17.9601h-8.6543z"
android:strokeWidth="1" android:strokeWidth="1"
android:fillColor="#338574" android:fillColor="#FFFFFFFF"
android:strokeColor="#00000000"/> android:strokeColor="#00000000"/>
</vector> </vector>

View file

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
style="?attr/collapsingToolbarLayoutLargeStyle"
android:background="@color/e_background"
android:layout_width="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
android:layout_height="?attr/collapsingToolbarLayoutLargeSize">
<com.google.android.material.appbar.MaterialToolbar
app:navigationIcon="@drawable/e_ic_back"
app:title="@string/eos_settings_title"
android:id="@+id/toolbar"
android:background="@color/e_background"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin" />
</com.google.android.material.appbar.CollapsingToolbarLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</androidx.core.widget.NestedScrollView>
</LinearLayout>

View file

@ -8,5 +8,6 @@
<item android:id="@+id/main_menu_settings" android:title="@string/main_menu_settings_title"/> <item android:id="@+id/main_menu_settings" android:title="@string/main_menu_settings_title"/>
<item android:id="@+id/main_menu_docs" android:title="@string/main_menu_docs_title"/> <item android:id="@+id/main_menu_docs" android:title="@string/main_menu_docs_title"/>
<item android:id="@+id/main_menu_rate" android:title="@string/main_menu_rate_title"/> <item android:id="@+id/main_menu_rate" android:title="@string/main_menu_rate_title"/>
<item android:id="@+id/main_menu_donate" android:title="@string/main_menu_donate_title"/>
<item android:id="@+id/main_menu_report_bug" android:title="@string/main_menu_report_bug_title"/> <item android:id="@+id/main_menu_report_bug" android:title="@string/main_menu_report_bug_title"/>
</menu> </menu>

View file

@ -2,4 +2,12 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_background"/> <background android:drawable="@mipmap/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/> <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome>
<inset
android:drawable="@drawable/ic_launcher_monochrome"
android:insetLeft="30%"
android:insetTop="30%"
android:insetRight="30%"
android:insetBottom="30%"/>
</monochrome>
</adaptive-icon> </adaptive-icon>

View file

@ -2,4 +2,12 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_background"/> <background android:drawable="@mipmap/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/> <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome>
<inset
android:drawable="@drawable/ic_launcher_monochrome"
android:insetLeft="30%"
android:insetTop="30%"
android:insetRight="30%"
android:insetBottom="30%"/>
</monochrome>
</adaptive-icon> </adaptive-icon>

View file

@ -0,0 +1,71 @@
<?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>
<string name="channel_notifications_group_default_name">افتراضي</string>
<string name="add_dialog_topic_name_hint">اسم الموضوع، على سبيل المثال phil_alerts</string>
<string name="add_dialog_use_another_server">استخدم خادمًا آخر</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="detail_clear_dialog_permanently_delete">الحذف بشكل نهائي</string>
<string name="detail_clear_dialog_cancel">إلغاء</string>
<string name="detail_delete_dialog_cancel">إلغاء</string>
<string name="detail_instant_delivery_disabled">التسليم الفوري مُعطَّل</string>
<string name="detail_item_menu_cancel">إلغاء التنزيل</string>
<string name="detail_item_menu_save_file">حفظ الملف</string>
<string name="detail_item_menu_copy_url">إنسخ الرابط</string>
<string name="detail_item_menu_copy_contents_copied">تم نسخ الإشعار إلى الحافظة</string>
<string name="user_dialog_button_save">حفظ</string>
<string name="add_dialog_base_urls_dropdown_choose">اختر عنوان URL للخدمة</string>
<string name="add_dialog_login_title">تسجيل الدخول مطلوب</string>
<string name="detail_copied_to_clipboard_message">تم نسخه إلى الحافظة</string>
<string name="detail_instant_delivery_enabled">التسليم الفوري مُفعَّل</string>
<string name="channel_subscriber_notification_instant_text">مشترِك في الإستلام الفوري للمواضيع</string>
<string name="add_dialog_login_username_hint">إسم المستخدم</string>
<string name="add_dialog_login_new_user">مستخدم جديد</string>
<string name="add_dialog_login_password_hint">كلمة المرور</string>
<string name="detail_how_to_example">مثال (باستخدام curl): <br/> <tt> $ curl -d \"أهلًا\" %1$s </tt></string>
<string name="detail_item_snack_deleted">تم حذف الإشعار</string>
<string name="detail_item_snack_undo">إلغاء</string>
<string name="detail_item_menu_copy_contents">نسخ الإشعار</string>
<string name="detail_item_tags">الوسوم: %1$s</string>
<string name="detail_test_message_error">لا يمكن إرسال رسالة: %1$s</string>
<string name="detail_no_notifications_text">لم تتلق بعد أية إشعارات حول هذا الموضوع.</string>
<string name="detail_delete_dialog_permanently_delete">الحذف بشكل نهائي</string>
<string name="channel_subscriber_notification_noinstant_text">تم الاشتراك في المواضيع</string>
<string name="channel_subscriber_notification_noinstant_text_two">مشترك في موضوعين</string>
<string name="channel_subscriber_notification_noinstant_text_three">مشترك في ثلاثة مواضيع</string>
<string name="channel_subscriber_notification_noinstant_text_six">مشترك في ستة مواضيع</string>
<string name="channel_subscriber_notification_noinstant_text_four">مشترك في أربعة مواضيع</string>
<string name="channel_subscriber_notification_noinstant_text_five">مشترك في خمسة مواضيع</string>
<string name="main_menu_settings_title">الإعدادات</string>
<string name="channel_subscriber_notification_noinstant_text_one">مشترك في موضوع واحد</string>
<string name="main_menu_rate_title">قيم البرنامج ⭐</string>
<string name="channel_subscriber_notification_instant_text_two">تم الاشتراك في 2 موضوع فوري</string>
<string name="refresh_message_result">تم استلام %1$d اشعار(ات)</string>
<string name="channel_subscriber_notification_noinstant_text_more">مشترك في %1$d موضوع</string>
<string name="main_menu_notifications_enabled">الاشعارات مفعلة</string>
<string name="main_menu_notifications_disabled_forever">الاشعارات مكتومة</string>
<string name="channel_subscriber_notification_instant_text_six">تم الاشتراك في 6 مواضيع فورية</string>
<string name="channel_subscriber_notification_instant_text_three">تم الاشتراك في 3 مواضيع فورية</string>
<string name="channel_subscriber_notification_instant_text_five">تم الاشتراك في 5 مواضيع فورية</string>
<string name="main_menu_notifications_disabled_until">الاشعارات مكتومة حتي %1$s</string>
<string name="channel_subscriber_notification_instant_text_more">تم الاشتراك في %1$d مواضيع فورية</string>
<string name="main_menu_report_bug_title">التبليغ عن خطأ</string>
<string name="main_action_bar_title">المواضيع المسجلة</string>
<string name="main_action_mode_menu_unsubscribe">الغاء الاشتراك</string>
<string name="main_menu_docs_title">اقرا المراجع</string>
<string name="refresh_message_no_results">كل شئ محدث لاخر تحديث</string>
<string name="channel_subscriber_notification_instant_text_one">تم الاشتراك في 1 موضوع فوري</string>
<string name="channel_subscriber_notification_instant_text_four">تم الاشتراك في 4 مواضيع فورية</string>
<string name="main_menu_donate_title">تبرع 💸</string>
<string name="settings_title">اﻹعدادات</string>
</resources>

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="channel_notifications_low_name">Известия (нисък приоритет)</string> <string name="channel_notifications_low_name">Нисък приоритет</string>
<string name="channel_notifications_default_name">Известия (подразбиран приоритет)</string> <string name="channel_notifications_default_name">Подразбиран приоритет</string>
<string name="channel_notifications_high_name">Известия (висок приоритет)</string> <string name="channel_notifications_high_name">Висок приоритет</string>
<string name="channel_notifications_max_name">Известия (максимален приоритет)</string> <string name="channel_notifications_max_name">Най-висок приоритет</string>
<string name="channel_subscriber_service_name">Абонаментна услуга</string> <string name="channel_subscriber_service_name">Абонаментна услуга</string>
<string name="channel_subscriber_notification_instant_text">Има абонамент за теми с незабавно доставяне</string> <string name="channel_subscriber_notification_instant_text">Има абонамент за теми с незабавно доставяне</string>
<string name="channel_subscriber_notification_instant_text_three">Има абонамент за три теми с незабавно доставяне</string> <string name="channel_subscriber_notification_instant_text_three">Има абонамент за три теми с незабавно доставяне</string>
@ -51,7 +51,7 @@
\nПаролите са премахнати, но не са изброени тук.</string> \nПаролите са премахнати, но не са изброени тук.</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">Не са променени никакви теми/имена на хостове. Абонирани ли сте\?</string> <string name="settings_advanced_export_logs_scrub_dialog_empty">Не са променени никакви теми/имена на хостове. Абонирани ли сте\?</string>
<string name="user_dialog_description_add">Тук можете да добавите потребител. Всички теми на сървъра ще използват този потребител.</string> <string name="user_dialog_description_add">Тук можете да добавите потребител. Всички теми на сървъра ще използват този потребител.</string>
<string name="channel_notifications_min_name">Известия (минимален приоритет)</string> <string name="channel_notifications_min_name">Най-нисък приоритет</string>
<string name="channel_subscriber_notification_instant_text_one">Има абонамент за тема с незабавно доставяне</string> <string name="channel_subscriber_notification_instant_text_one">Има абонамент за тема с незабавно доставяне</string>
<string name="notification_dialog_muted_forever_toast_message">Известията са заглушени</string> <string name="notification_dialog_muted_forever_toast_message">Известията са заглушени</string>
<string name="channel_subscriber_notification_title">Очаква входящи известия</string> <string name="channel_subscriber_notification_title">Очаква входящи известия</string>
@ -63,8 +63,8 @@
<string name="main_menu_notifications_disabled_until">Известията са заглушени до %1$s</string> <string name="main_menu_notifications_disabled_until">Известията са заглушени до %1$s</string>
<string name="detail_menu_notifications_disabled_until">Известията са заглушени до %1$s</string> <string name="detail_menu_notifications_disabled_until">Известията са заглушени до %1$s</string>
<string name="main_how_to_intro">Докоснете бутона с +, за да създадете тема или да се абонирате. След това ще получавате известия на устройството си, след като изпратите съобщения чрез метода PUT или POST.</string> <string name="main_how_to_intro">Докоснете бутона с +, за да създадете тема или да се абонирате. След това ще получавате известия на устройството си, след като изпратите съобщения чрез метода PUT или POST.</string>
<string name="detail_how_to_intro">За да изпратите известия в тази тема, просто изпратете PUT или POST към адреса й.</string> <string name="detail_how_to_intro">За да изпратите известия в тази тема направете заявка чрез методите PUT или POST към адреса й.</string>
<string name="detail_no_notifications_text">В момента в темата няма известия</string> <string name="detail_no_notifications_text">Липсват известия в темата</string>
<string name="settings_general_default_base_url_message">За да използвате по подразбиране собствен сървър при абониране за нови теми и/или споделяне на теми, въведете адрес на сървъра.</string> <string name="settings_general_default_base_url_message">За да използвате по подразбиране собствен сървър при абониране за нови теми и/или споделяне на теми, въведете адрес на сървъра.</string>
<string name="notification_dialog_muted_until_toast_message">Известията са заглушени до %1$s</string> <string name="notification_dialog_muted_until_toast_message">Известията са заглушени до %1$s</string>
<string name="settings_advanced_export_logs_summary">Дневниците се копират в междинната памет или се изпращат към nopaste.net (собственост на автора на ntfy). Имената на хостовете и темите могат да бъдат цензурирани, но съдържанието на известията никога.</string> <string name="settings_advanced_export_logs_summary">Дневниците се копират в междинната памет или се изпращат към nopaste.net (собственост на автора на ntfy). Имената на хостовете и темите могат да бъдат цензурирани, но съдържанието на известията никога.</string>
@ -80,7 +80,7 @@
<string name="main_action_mode_delete_dialog_permanently_delete">Премахване</string> <string name="main_action_mode_delete_dialog_permanently_delete">Премахване</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string> <string name="main_item_status_unified_push">%1$s (UnifiedPush)</string>
<string name="main_item_status_reconnecting">свързване…</string> <string name="main_item_status_reconnecting">свързване…</string>
<string name="main_no_subscriptions_text">В момента няма абонаменти</string> <string name="main_no_subscriptions_text">Липсват абонаменти</string>
<string name="main_unified_push_toast">Този абонамент се управлява от %1$s чрез UnifiedPush</string> <string name="main_unified_push_toast">Този абонамент се управлява от %1$s чрез UnifiedPush</string>
<string name="add_dialog_button_cancel">Отказ</string> <string name="add_dialog_button_cancel">Отказ</string>
<string name="add_dialog_button_subscribe">Абониране</string> <string name="add_dialog_button_subscribe">Абониране</string>
@ -142,12 +142,12 @@
\n%3$s</string> \n%3$s</string>
<string name="settings_title">Настройки</string> <string name="settings_title">Настройки</string>
<string name="settings_notifications_header">Известия</string> <string name="settings_notifications_header">Известия</string>
<string name="settings_notifications_min_priority_title">Mинимален приоритет</string> <string name="settings_notifications_min_priority_title">Най-нисък приоритет</string>
<string name="settings_notifications_min_priority_min">Всички</string> <string name="settings_notifications_min_priority_min">Всички</string>
<string name="settings_notifications_min_priority_low">Нисък приоритет и по-висок</string> <string name="settings_notifications_min_priority_low">Нисък приоритет и по-висок</string>
<string name="settings_notifications_min_priority_default">Подразбиран приоритет и по-висок</string> <string name="settings_notifications_min_priority_default">Подразбиран приоритет и по-висок</string>
<string name="settings_notifications_min_priority_high">Висок приоритет и по-висок</string> <string name="settings_notifications_min_priority_high">Висок приоритет и по-висок</string>
<string name="settings_notifications_min_priority_max">Само максимален приоритет</string> <string name="settings_notifications_min_priority_max">Само най-висок приоритет</string>
<string name="settings_notifications_min_priority_summary_max">Показват се известията с приоритет 5 (най-висок)</string> <string name="settings_notifications_min_priority_summary_max">Показват се известията с приоритет 5 (най-висок)</string>
<string name="settings_notifications_min_priority_summary_any">Показват се всички известия</string> <string name="settings_notifications_min_priority_summary_any">Показват се всички известия</string>
<string name="settings_notifications_auto_delete_never">Никога</string> <string name="settings_notifications_auto_delete_never">Никога</string>
@ -237,7 +237,7 @@
<string name="notification_popup_file_download_failed">%1$s <string name="notification_popup_file_download_failed">%1$s
\nФайл: %2$s, неуспешно изтеглен</string> \nФайл: %2$s, неуспешно изтеглен</string>
<string name="settings_notifications_auto_download_title">Изтегляне на прикачени файлове</string> <string name="settings_notifications_auto_download_title">Изтегляне на прикачени файлове</string>
<string name="settings_notifications_auto_delete_title">Премахване на известия</string> <string name="settings_notifications_auto_delete_title">Автоматично премахване</string>
<string name="settings_notifications_auto_download_summary_always">Прикачените файлове се изтеглят автоматично</string> <string name="settings_notifications_auto_download_summary_always">Прикачените файлове се изтеглят автоматично</string>
<string name="settings_notifications_auto_download_summary_never">Прикачените файлове не се изтеглят автоматично</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_summary_smaller_than_x">Прикачените файлове до %1$s се изтеглят автоматично</string>
@ -293,10 +293,10 @@
<string name="detail_item_download_info_download_failed_expires_x">грешка при изтегляне, валидността изтича на %1$s</string> <string name="detail_item_download_info_download_failed_expires_x">грешка при изтегляне, валидността изтича на %1$s</string>
<string name="share_content_image_error">Изображението не може да бъде отворено: %1$s</string> <string name="share_content_image_error">Изображението не може да бъде отворено: %1$s</string>
<string name="share_content_file_error">Информацията за файла не може да бъде прочетена: %1$s</string> <string name="share_content_file_error">Информацията за файла не може да бъде прочетена: %1$s</string>
<string name="settings_notifications_priority_min">минимален</string> <string name="settings_notifications_priority_min">най-нисък</string>
<string name="settings_notifications_priority_low">нисък</string> <string name="settings_notifications_priority_low">нисък</string>
<string name="settings_notifications_priority_default">подразбиран</string> <string name="settings_notifications_priority_default">подразбиран</string>
<string name="settings_notifications_priority_max">максимален</string> <string name="settings_notifications_priority_max">най-висок</string>
<string name="settings_notifications_priority_high">висок</string> <string name="settings_notifications_priority_high">висок</string>
<string name="detail_deep_link_subscribed_toast_message">Абонирани сте за темата %1$s</string> <string name="detail_deep_link_subscribed_toast_message">Абонирани сте за темата %1$s</string>
<string name="settings_notifications_channel_prefs_summary">Отмяна на „Не безпокойте“, звуци и т.н.</string> <string name="settings_notifications_channel_prefs_summary">Отмяна на „Не безпокойте“, звуци и т.н.</string>
@ -327,4 +327,20 @@
<string name="detail_settings_about_header">Относно</string> <string name="detail_settings_about_header">Относно</string>
<string name="detail_settings_about_topic_url_title">Адрес на темата</string> <string name="detail_settings_about_topic_url_title">Адрес на темата</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Копирано в междинната памет</string> <string name="detail_settings_about_topic_url_copied_to_clipboard_message">Копирано в междинната памет</string>
<string name="main_menu_donate_title">Даряване 💸</string>
<string name="detail_item_cannot_open_apk">Ntfy не може да инсталира получени приложения. Вместо това изтеглете чрез браузъра. За подробности вижте дефект №531.</string>
<string name="channel_notifications_group_default_name">Подразбирани</string>
<string name="detail_settings_notifications_dedicated_channels_title">Потребителски настройки за известия</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Използва потребителски настройки за този абонамент</string>
<string name="settings_notifications_insistent_max_priority_title">Продължително сигнализиране за най-високия приоритет</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Известията с най-висок приоритет сигнализират веднъж</string>
<string name="detail_settings_notifications_open_channels_title">Настройки на известията</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Продължително сигнализиране</string>
<string name="detail_settings_notifications_open_channels_summary">Отмяна на „Не безпокойте“, звуци и т.н.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Единично сигнализиране</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Подразбирани настройки (отмяна на „Не безпокойте“, звуци и т.н.)</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Известията с най-висок приоритет сигнализират, докато не бъдат затворени</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy ще работи като дистрибутор на UnifiedPush</string>
<string name="settings_advanced_unifiedpush_title">Включване на UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy няма да работи като дистрибутор на UnifiedPush</string>
</resources> </resources>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="channel_notifications_low_name">কম গুরুত্ব</string>
<string name="channel_notifications_min_name">সর্বনিম্ন গুরুত্ব</string>
<string name="channel_notifications_default_name">স্বাভাবিক গুরুত্ব</string>
<string name="channel_notifications_max_name">সর্বোচ্চ্য গুরুত্ব</string>
<string name="channel_notifications_group_default_name">স্বাভাবিক</string>
<string name="channel_notifications_high_name">বেশি গুরুত্ব</string>
<string name="channel_subscriber_notification_title">আগত নোটিফিকেশন এর জন্য অপেক্ষা করা হচ্ছে</string>
<string name="channel_subscriber_notification_instant_text">তাত্ক্ষণিক পাওয়া বিষয়গুলোতে যোগ দেওয়া হয়েছে</string>
</resources>

View file

@ -0,0 +1,346 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="channel_notifications_min_name">Prioritat mínima</string>
<string name="channel_notifications_low_name">Prioritat baixa</string>
<string name="channel_notifications_default_name">Prioritat per defecte</string>
<string name="channel_notifications_high_name">Prioritat alta</string>
<string name="channel_notifications_max_name">Prioritat màxima</string>
<string name="channel_subscriber_service_name">Servei Subscripció</string>
<string name="main_menu_donate_title">Donar 💸</string>
<string name="main_item_status_reconnecting">reconnectant…</string>
<string name="channel_subscriber_notification_title">Escoltant notificacions entrants</string>
<string name="channel_subscriber_notification_instant_text">Subscrit per entrega instantània de temes</string>
<string name="channel_subscriber_notification_instant_text_one">Subscrit per entrega instantània d\'un tema</string>
<string name="channel_subscriber_notification_instant_text_two">Subscrit per dues entregues instantànies de temes</string>
<string name="channel_subscriber_notification_instant_text_three">Subscrit per tres entregues instantànies de temes</string>
<string name="channel_subscriber_notification_instant_text_four">Subscrit per quatre entregues instantànies de temes</string>
<string name="channel_subscriber_notification_instant_text_five">Subscrit per cinc entregues instantànies de temes</string>
<string name="channel_subscriber_notification_instant_text_six">Subscrit per sis entregues instantànies de temes</string>
<string name="channel_subscriber_notification_instant_text_more">Subscrit per %1$d entregues instantànies de temes</string>
<string name="channel_subscriber_notification_noinstant_text">Subscrit als temes</string>
<string name="channel_subscriber_notification_noinstant_text_one">Subscrit a un tema</string>
<string name="channel_subscriber_notification_noinstant_text_two">Subscrit a dos temes</string>
<string name="channel_subscriber_notification_noinstant_text_three">Subscrit a tres temes</string>
<string name="channel_subscriber_notification_noinstant_text_six">Subscrit a sis temes</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Eliminat permanentment</string>
<string name="main_action_mode_delete_dialog_cancel">Cancel·lar</string>
<string name="main_item_status_text_one">%1$d notificació</string>
<string name="channel_subscriber_notification_noinstant_text_more">Subscrit a %1$d temes</string>
<string name="channel_subscriber_notification_noinstant_text_four">Subscrit a quatre temes</string>
<string name="channel_subscriber_notification_noinstant_text_five">Subscrit a cinc temes</string>
<string name="refresh_message_result">%1$d notificacions rebudes</string>
<string name="refresh_message_no_results">Tot està actualitzat</string>
<string name="refresh_message_error">No es poden actualitzar %1$d subscripciones
\n
\n%2$s</string>
<string name="refresh_message_error_one">No s\'ha pogut actualitzar la subscripció: %1$s</string>
<string name="main_action_bar_title">Temes subscrits</string>
<string name="main_menu_notifications_enabled">Notificacions activades</string>
<string name="main_menu_notifications_disabled_forever">Notificacions silenciades</string>
<string name="main_menu_notifications_disabled_until">Notificacions silenciades fins: %1$s</string>
<string name="main_menu_settings_title">Ajustos</string>
<string name="main_menu_report_bug_title">Reportar un problema</string>
<string name="main_menu_docs_title">Llegir la documentació</string>
<string name="main_menu_rate_title">Valora la aplicació ⭐</string>
<string name="main_action_mode_menu_unsubscribe">Donar-se de baixa</string>
<string name="main_action_mode_delete_dialog_message">Donar-se de baixa del tema(es) seleccionat(s) permanentment i eliminar totes les notificacions\?</string>
<string name="main_item_status_text_not_one">%1$d notificacions</string>
<string name="channel_notifications_group_default_name">Per defecte</string>
<string name="main_item_date_yesterday">ahir</string>
<string name="main_add_button_description">Afegir subscripció</string>
<string name="main_how_to_intro">Prem + per crear o subscriure\'t a un tema. Després rebràs notificacions al teu dispositiu quan enviïs missatges mitjançant PUT o POST.</string>
<string name="main_no_subscriptions_text">Sembla que encara no tens cap subscripció.</string>
<string name="main_banner_battery_text">L\'optimització de la bateria hauria de ser desactivada per tal d\'evitar problemes amb l\'entrega de notificacions.</string>
<string name="main_banner_websocket_button_dismiss">Descartar</string>
<string name="detail_test_message_error_unauthorized_anon">No es pot enviar el missatge: No es permeten publicacions anònimes.</string>
<string name="detail_instant_delivery_disabled">Entrega instantània desactivada</string>
<string name="detail_item_menu_copy_contents">Copiar la notificació</string>
<string name="detail_item_menu_copy_contents_copied">Notificació copiada al porta-retalls</string>
<string name="detail_menu_test">Enviar notificació de prova</string>
<string name="notification_dialog_save">Guardar</string>
<string name="main_banner_battery_button_remind_later">Preguntar més endavant</string>
<string name="main_banner_battery_button_dismiss">Descartar</string>
<string name="main_banner_battery_button_fix_now">Arreglar ara</string>
<string name="main_banner_websocket_button_remind_later">Preguntar més endavant</string>
<string name="add_dialog_button_back">Enrere</string>
<string name="add_dialog_title">Subscriure\'s a un tema</string>
<string name="detail_deep_link_subscribed_toast_message">Subscrit al tema %1$s</string>
<string name="detail_item_tags">Etiquetes: %1$s</string>
<string name="detail_test_message_error_too_large">No es pot enviar el missatge: L\'adjunt és massa gran.</string>
<string name="detail_item_snack_undo">Desfer</string>
<string name="detail_item_menu_delete">Elimina arxiu</string>
<string name="detail_item_menu_download">Descarrega l\'arxiu</string>
<string name="detail_item_menu_cancel">Cancel·la la descàrrega</string>
<string name="detail_item_menu_copy_url">Copiar la URL</string>
<string name="detail_item_menu_copy_url_copied">URL copiada al porta-retalls</string>
<string name="detail_item_cannot_open_url">No es pot obrir la URL: %1$s</string>
<string name="detail_item_cannot_save">No es pot guardar l\'adjunt: %1$s</string>
<string name="detail_item_cannot_delete">No es pot eliminar l\'adjunt: %1$s</string>
<string name="detail_action_mode_menu_delete">Eliminar</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">Eliminar definitivament</string>
<string name="detail_action_mode_delete_dialog_cancel">Cancel·lar</string>
<string name="detail_settings_title">Configuració de la subscripció</string>
<string name="share_title">Compartir</string>
<string name="share_menu_send">Compartir</string>
<string name="share_content_image_error">No es pot llegir la imatge: %1$s</string>
<string name="share_content_image_text">S\'ha compartit una imatge amb tu</string>
<string name="share_content_file_text">S\'ha compartit un arxiu amb tu</string>
<string name="share_content_file_error">No es pot llegir la informació de l\'arxiu: %1$s</string>
<string name="share_topic_title">Compartir amb</string>
<string name="share_successful">Missatge publicat</string>
<string name="detail_test_title">Test: Pots definir un títol.</string>
<string name="detail_test_message">Això es una notificació de prova de l\'aplicació per Android de ntfy. Té un nivell de prioritat %1$d. Si n\'envies una altra, pot ser diferent.</string>
<string name="detail_test_message_error">No es pot enviar el missatge: %1$s</string>
<string name="detail_test_message_error_unauthorized_user">No es pot enviar el missatge: L\'usuari \"%1$s\" no està autoritzat.</string>
<string name="detail_copied_to_clipboard_message">Copiat al porta-retalls</string>
<string name="detail_item_snack_deleted">Notificació eliminada</string>
<string name="detail_item_menu_open">Obre arxiu</string>
<string name="detail_item_menu_save_file">Guardar l\'arxiu</string>
<string name="detail_item_cannot_download">No es pot obrir o descarregar l\'adjunt. L\'enllaç ha caducat i no es pot trobar un arxiu local.</string>
<string name="detail_item_download_failed">No s\'ha pogut descarregar l\'adjunt: %1$s</string>
<string name="detail_item_download_info_not_downloaded">no descarregat</string>
<string name="detail_item_download_info_not_downloaded_expired">no descarregat, enllaç caducat</string>
<string name="detail_item_download_info_downloading_x_percent">%1$d%% descarregat</string>
<string name="detail_item_download_info_deleted">eliminat</string>
<string name="detail_item_download_info_deleted_expired">eliminat, enllaç caducat</string>
<string name="add_dialog_topic_name_hint">Nom del tema, p. ex. alertes_josep</string>
<string name="add_dialog_base_urls_dropdown_clear">Esborra URL de servei</string>
<string name="detail_no_notifications_text">Encara no has rebut cap notificació en aquest tema.</string>
<string name="detail_how_to_intro">Per enviar notificacions en aquest tema, fes PUT o POST a la URL del tema.</string>
<string name="detail_how_to_example">Exemple (usant curl):<br/><tt>$ curl -d \"Hola\" %1$s</tt></string>
<string name="main_unified_push_toast">Aquesta subscripció és gestionada per %1$s via UnifiedPush</string>
<string name="main_how_to_link">Instruccions detallades disponibles a ntfy.sh i a la documentació.</string>
<string name="main_banner_websocket_text">WebSockets és el mètode recomanat per connectar-te al teu servidor. Pot millorar el rendiment de la bateria, però pot requerir <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">configuració addicional al teu proxy</a>. Aquesta opció pot ser habil·litada a Configuració.</string>
<string name="main_banner_websocket_button_enable_now">Activar ara</string>
<string name="add_dialog_description_below">Els temes poden no estar protegits per contrasenya, tria un nom difícil d\'endevinar. Un cop subscrit podràs publicar notificacions PUT/POST.</string>
<string name="add_dialog_use_another_server">Usar un altre servidor</string>
<string name="add_dialog_use_another_server_description">Introdueix URLs a sota per subscriure\'t a temes d\'altres servidors.</string>
<string name="add_dialog_instant_delivery_description">Assegura que els missatges s\'entreguin immediatament, fins i tot amb el dispositiu inactiu.</string>
<string name="add_dialog_button_cancel">Cancel·lar</string>
<string name="add_dialog_instant_delivery">Entrega instantània en mode Descans</string>
<string name="add_dialog_foreground_description">L\'entrega instantània sempre està activada per a amfitrions diferents de %1$s.</string>
<string name="add_dialog_button_subscribe">Subscriure</string>
<string name="add_dialog_button_login">Entrar</string>
<string name="add_dialog_error_connection_failed">Connexió fallida: %1$s</string>
<string name="add_dialog_login_title">Inici de sessió necessari</string>
<string name="add_dialog_login_description">Aquest tema necessita que iniciïs sessió. Introdueix nom d\'usuari i contrasenya.</string>
<string name="add_dialog_login_username_hint">Nom d\'usuari</string>
<string name="add_dialog_login_password_hint">Contrasenya</string>
<string name="add_dialog_login_error_not_authorized">Inici de sessió fallit. L\'usuari %1$s no està autoritzat.</string>
<string name="add_dialog_login_new_user">Nou usuari</string>
<string name="add_dialog_base_urls_dropdown_choose">Tria URL de servei</string>
<string name="detail_how_to_link">Instruccions detallades disponibles a ntfy.sh i a la documentació.</string>
<string name="detail_clear_dialog_message">Vols esborrar totes les notificacions d\'aquest tema\?</string>
<string name="detail_clear_dialog_permanently_delete">Eliminar definitivament</string>
<string name="detail_clear_dialog_cancel">Cancel·lar</string>
<string name="detail_delete_dialog_message">Vols eliminar la subscripció a aquest tema i totes les notificacions\?</string>
<string name="detail_delete_dialog_permanently_delete">Eliminar definitivament</string>
<string name="detail_delete_dialog_cancel">Cancel·lar</string>
<string name="detail_instant_delivery_enabled">Entrega instantània activada</string>
<string name="detail_item_saved_successfully">Guardat amb el nom \"%1$s\" a la carpeta \"Downloads\"</string>
<string name="detail_item_cannot_open">No es pot obrir l\'adjunt: %1$s</string>
<string name="detail_item_cannot_open_not_found">No es pot obrir l\'adjunt: L\'arxiu pot haver estat eliminat, o potser cap aplicació instal·lada el pot obrir.</string>
<string name="detail_item_download_info_not_downloaded_expires_x">no descarregat, caduca al %1$s</string>
<string name="detail_item_download_info_deleted_expires_x">eliminat, l\'enllaç caduca al %1$s</string>
<string name="detail_item_download_info_download_failed_expires_x">descàrrega fallida, l\'enllaç caduca el %1$s</string>
<string name="detail_menu_disable_instant">Desactivar entrega instantània</string>
<string name="detail_menu_copy_url">Copiar adreça del tema</string>
<string name="detail_item_download_info_download_failed">descàrrega fallida</string>
<string name="detail_menu_notifications_enabled">Notificacions activades</string>
<string name="detail_menu_clear">Eliminar totes les notificacions</string>
<string name="detail_menu_settings">Configuració de la subscripció</string>
<string name="detail_item_download_info_download_failed_expired">descàrrega fallida, enllaç caducat</string>
<string name="detail_menu_notifications_disabled_forever">Notificacions silenciades</string>
<string name="share_suggested_topics">Temes suggerits</string>
<string name="notification_dialog_title">Silenciar notificacions</string>
<string name="detail_menu_notifications_disabled_until">Notificacions silenciades fins %1$s</string>
<string name="notification_dialog_cancel">Cancel·lar</string>
<string name="detail_menu_enable_instant">Activar entrega instantània</string>
<string name="detail_item_cannot_open_apk">Les aplicacions ja no poden ser instal·lades. Descarrega-les a través del navegador. Pots trobar més detalls a #531.</string>
<string name="detail_menu_unsubscribe">Eliminar subscripció</string>
<string name="detail_action_mode_menu_copy">Copiar</string>
<string name="detail_action_mode_delete_dialog_message">Eliminar definitivament la notificació\?</string>
<string name="share_content_title">Vista prèvia del missatge</string>
<string name="share_content_text_hint">Afegeix contingut per compartir aquí</string>
<string name="notification_dialog_enabled_toast_message">Notificacions reactivades</string>
<string name="notification_dialog_muted_forever_toast_message">Notificacions silenciades</string>
<string name="notification_dialog_muted_until_toast_message">Notificacions silenciades fins a %1$s</string>
<string name="notification_dialog_show_all">Mostrar totes les notificacions</string>
<string name="notification_dialog_30min">30 minuts</string>
<string name="notification_dialog_1h">1 hora</string>
<string name="notification_dialog_2h">2 hores</string>
<string name="notification_dialog_8h">8 hores</string>
<string name="notification_dialog_tomorrow">Fins demà</string>
<string name="notification_dialog_forever">Fins que es reactivi</string>
<string name="settings_notifications_header">Notificacions</string>
<string name="settings_notifications_min_priority_title">Prioritat mínima</string>
<string name="settings_notifications_min_priority_summary_any">Mostrant totes les notificacions</string>
<string name="settings_notifications_min_priority_summary_x_or_higher">Mostrar notificacions de prioritat %1$d (%2$s) o superior</string>
<string name="settings_notifications_min_priority_summary_max">Mostrar notificacions si la prioritat és 5 (màxima)</string>
<string name="settings_notifications_priority_low">baixa</string>
<string name="settings_notifications_priority_default">normal</string>
<string name="settings_notifications_priority_high">alta</string>
<string name="settings_notifications_priority_min">mín</string>
<string name="settings_notifications_priority_max">màx</string>
<string name="settings_notifications_channel_prefs_title">Configuració de canal</string>
<string name="settings_notifications_channel_prefs_summary">Sobreescriure No Molestar, sons, etc.</string>
<string name="settings_notifications_auto_download_title">Descarregar adjunts</string>
<string name="settings_notifications_auto_download_summary_always">Descarregar automàticament tots els adjunts</string>
<string name="settings_notifications_auto_download_summary_smaller_than_x">Descarregar automàticament adjunts fins a %1$s</string>
<string name="settings_notifications_auto_download_never">No descarregar mai res automàticament</string>
<string name="settings_notifications_auto_download_always">Descarregar automàticament tot</string>
<string name="settings_notifications_auto_delete_summary_one_week">Eliminar automàticament les notificacions al cap d\'una setmana</string>
<string name="settings_notifications_auto_delete_one_day">Al cap d\'un dia</string>
<string name="settings_notifications_auto_delete_never">Mai</string>
<string name="settings_notifications_auto_delete_three_days">Al cap de 3 dies</string>
<string name="settings_notifications_auto_delete_one_week">Al cap d\'una setmana</string>
<string name="settings_notifications_insistent_max_priority_title">Mantenir alertes per prioritat màxima</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Alertar contínuament de les notificacions de prioritat màxima fins que es descartin</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Alertar un sol cop per notificacions de prioritat màxima</string>
<string name="settings_general_default_base_url_title">Servidor predeterminat</string>
<string name="settings_general_default_base_url_message">Introdueix la URL base del teu servidor per usar-lo com a predeterminat a l\'hora de subscriure\'t a nous temes o compartir a temes.</string>
<string name="settings_general_default_base_url_default_summary">%1$s (predeterminat)</string>
<string name="settings_general_users_title">Gestionar usuaris</string>
<string name="settings_general_users_prefs_user_add">Afegir usuaris</string>
<string name="settings_general_users_prefs_user_add_title">Afegir nou usuari</string>
<string name="settings_general_users_prefs_user_add_summary">Crear nou usuari per a un nou servidor</string>
<string name="settings_general_dark_mode_summary_system">Usant el predeterminat del sistema</string>
<string name="settings_general_dark_mode_summary_light">Mode clar activat</string>
<string name="settings_general_dark_mode_summary_dark">Mode fosc activat. Que ets un vampir\?</string>
<string name="settings_general_dark_mode_entry_system">Usar predeterminat del sistema</string>
<string name="settings_backup_restore_backup_summary">Exportar configuració, notificacions i usuaris</string>
<string name="settings_backup_restore_restore_title">Recuperar des d\'arxiu</string>
<string name="settings_backup_restore_restore_summary">Importar configuració, notificacions i usuaris</string>
<string name="settings_general_dark_mode_entry_light">Mode clar</string>
<string name="settings_backup_restore_restore_failed">Recuperació fallida: %1$s</string>
<string name="settings_advanced_header">Avançat</string>
<string name="settings_advanced_broadcast_title">Publicar missatges</string>
<string name="settings_advanced_broadcast_summary_enabled">Les aplicacions poden rebre notificacions d\'entrada com a missatges</string>
<string name="settings_advanced_record_logs_summary_enabled">Gravant (fins a 1000 entrades) al dispositiu…</string>
<string name="settings_advanced_export_logs_title">Copiar/carregar registres</string>
<string name="settings_advanced_export_logs_summary">Copiar registres al porta-retalls, o carregar-los a nopaste.net (propietat de l\'autor de ntfy). Els noms de host i els temes poden ser censurats, les notificacions mai.</string>
<string name="settings_advanced_export_logs_entry_copy_original">Copiar al porta-retalls</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">Copiar al porta-retalls (censurat)</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Usant configuració predeterminada (sons, sobreescriure No Molestar, etc.)</string>
<string name="detail_settings_notifications_open_channels_title">Configuració de notificacions</string>
<string name="detail_settings_notifications_open_channels_summary">Sobreescriure No Molestar, sons, etc.</string>
<string name="detail_settings_appearance_icon_error_saving">No s\'ha pogut guardar la icona: %1$s</string>
<string name="detail_settings_appearance_display_name_title">Nom</string>
<string name="detail_settings_appearance_display_name_message">Tria un nom personalitzat per a aquesta subscripció. Deixa en blanc per usar el predeterminat (%1$s).</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (predeterminat)</string>
<string name="detail_settings_global_setting_title">Usar configuració global</string>
<string name="detail_settings_global_setting_suffix">usant configuració global</string>
<string name="detail_settings_about_topic_url_title">URL del tema</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Copiat al porta-retalls</string>
<string name="user_dialog_title_add">Afegir usuari</string>
<string name="user_dialog_description_edit">Pots editar el nom d\'usuari o la contrasenya de l\'usuari seleccionat, o eliminar-lo.</string>
<string name="user_dialog_base_url_hint">URL de servei</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string>
<string name="settings_notifications_auto_delete_one_month">Al cap d\'un mes</string>
<string name="settings_general_users_prefs_title">Usuaris</string>
<string name="settings_general_users_prefs_user_not_used">No usat per cap tema</string>
<string name="settings_general_dark_mode_title">Mode fosc</string>
<string name="settings_advanced_connection_protocol_title">Protocol de connexió</string>
<string name="notification_popup_file_downloading">Descarregant %1$s, %2$d%%
\n%3$s</string>
<string name="settings_title">Configuració</string>
<string name="settings_notifications_muted_until_show_all">Mostrant totes les notificacions</string>
<string name="settings_notifications_muted_until_forever">Notificacions silenciades fins que es reactivin</string>
<string name="settings_notifications_muted_until_x">Notificacions silenciades fins %1$s</string>
<string name="settings_notifications_min_priority_min">Qualsevol prioritat</string>
<string name="settings_notifications_min_priority_low">Prioritat baixa i superiors</string>
<string name="settings_notifications_min_priority_max">Només prioritat màxima</string>
<string name="settings_advanced_unifiedpush_title">Activar UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy actuarà com a distribuidor de UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy no actuarà com a distribuidor de UnifiedPush</string>
<string name="settings_advanced_record_logs_summary_disabled">Activar registre per poder compartir-lo més endavant per resoldre problemes.</string>
<string name="settings_advanced_clear_logs_title">Eliminar registres</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">Carregar i copiar enllaç (censurat)</string>
<string name="settings_advanced_clear_logs_summary">Eliminar registres i tornar a començar</string>
<string name="settings_advanced_clear_logs_deleted_toast">Registres eliminats</string>
<string name="settings_advanced_export_logs_copied_logs">Registres copiats al porta-retalls</string>
<string name="settings_advanced_export_logs_uploading">Carregant registre…</string>
<string name="settings_advanced_export_logs_copied_url">Registres carregats i URL copiada</string>
<string name="settings_advanced_export_logs_error_uploading">Ha fallat la càrrega de registres: %1$s</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Usa un flux JSON a través d\'HTTP per tal de connectar-te al servidor. Aquest mètode és robust, però pot consumir molta bateria.</string>
<string name="settings_about_version_title">Versió</string>
<string name="settings_advanced_connection_protocol_summary_ws">Usa WebSockets per connectar al servidor. Aquest és el mètode recomanat, però pot necessitar configuració addicional al teu proxy.</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
<string name="detail_settings_notifications_instant_title">Entrega instantània</string>
<string name="detail_settings_notifications_instant_summary_on">Les notificacions s\'entreguen instantàniament. Requereix d\'un servei en primer pla i consumeix molta bateria.</string>
<string name="detail_settings_notifications_instant_summary_off">Les notificacions s\'entreguen usant FireBase. L\'entrega es pot retardar, però consumeix menys bateria.</string>
<string name="detail_settings_notifications_dedicated_channels_title">Configuració personalitzada de notificacions</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Usant configuració personalitzada en aquesta subscripció</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Mantenir alertes</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Alertar un sol cop</string>
<string name="detail_settings_appearance_icon_set_title">Icona de subscripció</string>
<string name="detail_settings_about_header">Quant a</string>
<string name="detail_settings_appearance_icon_remove_title">Icona de subscripció (prem per eliminar)</string>
<string name="user_dialog_title_edit">Editar usuari</string>
<string name="user_dialog_description_add">Pots afegir un usuari aquí. Tots els temes del servidor usaran aquest usuari.</string>
<string name="user_dialog_username_hint">Nom d\'usuari</string>
<string name="user_dialog_button_cancel">Cancel·lar</string>
<string name="notification_popup_action_open">Obrir</string>
<string name="notification_popup_action_browse">Explorar</string>
<string name="notification_popup_action_download">Descarregar</string>
<string name="notification_popup_action_cancel">Cancel·lar</string>
<string name="notification_popup_file">%1$s
\nArxiu: %2$s</string>
<string name="notification_popup_file_download_successful">%1$s
\nArxiu: %2$s, descarregat</string>
<string name="notification_popup_file_download_failed">%1$s
\nArxiu: %2$s, descàrrega fallida</string>
<string name="notification_popup_user_action_failed">%1$s fallida: %2$s</string>
<string name="settings_notifications_muted_until_title">Silenciar notificacions</string>
<string name="settings_notifications_min_priority_default">Prioritat normal i superiors</string>
<string name="settings_notifications_min_priority_high">Prioritat alta i superiors</string>
<string name="settings_notifications_auto_download_100k">Si inferior a 100 kB</string>
<string name="settings_notifications_auto_download_500k">Si inferior a 500 kB</string>
<string name="settings_notifications_auto_download_1m">Si inferior a 1 MB</string>
<string name="settings_notifications_auto_download_5m">Si inferior a 5 MB</string>
<string name="settings_notifications_auto_download_10m">Si inferior a 10 MB</string>
<string name="settings_notifications_auto_download_50m">Si inferior a 50 MB</string>
<string name="settings_notifications_auto_delete_title">Eliminar notificacions</string>
<string name="settings_notifications_auto_delete_summary_never">No eliminar mai les notificacions automàticament</string>
<string name="settings_notifications_auto_delete_summary_one_day">Eliminar les notificacions automàticament al cap d\'un dia</string>
<string name="settings_notifications_auto_delete_summary_three_days">Eliminar automàticament les notificacions al cap de tres dies</string>
<string name="settings_notifications_auto_delete_summary_one_month">Eliminar automàticament les notificacions al cap d\'un mes</string>
<string name="settings_notifications_auto_delete_summary_three_months">Eliminar automàticament les notificacions al cap de 3 mesos</string>
<string name="settings_notifications_auto_delete_three_months">Al cap de 3 mesos</string>
<string name="settings_general_header">General</string>
<string name="settings_general_users_summary">Afegir/eliminar usuaris a temes protegits</string>
<string name="settings_general_users_prefs_user_used_by_one">Usat pel tema %1$s</string>
<string name="settings_general_users_prefs_user_used_by_many">Usat pels temes %1$s</string>
<string name="settings_general_dark_mode_entry_dark">Mode fosc</string>
<string name="settings_backup_restore_header">Còpia de seguretat &amp; Restauració</string>
<string name="settings_backup_restore_backup_title">Fer còpia de seguretat en arxiu</string>
<string name="settings_backup_restore_backup_entry_everything">Tot</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">Tot, excepte usuaris</string>
<string name="settings_backup_restore_backup_entry_settings_only">Només configuració</string>
<string name="settings_backup_restore_backup_successful">Còpia de seguretat creada</string>
<string name="settings_backup_restore_backup_failed">Còpia de seguretat fallida: %1$s</string>
<string name="settings_backup_restore_restore_successful">Recuperació exitosa</string>
<string name="settings_advanced_broadcast_summary_disabled">Les aplicacions no poden rebre notificacions com a missatges</string>
<string name="settings_advanced_record_logs_title">Gravar registres</string>
<string name="settings_advanced_export_logs_scrub_dialog_text">Aquest temes/noms de host han estat reemplaçats per noms de fruites, per tal que els puguis compartir tranquil·lament:
\n
\n%1$s
\n
\nLes contrasenyes s\'han descartat, però no es mostren.</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">Cap tema/nom de host ha estat censurat. Potser no tens cap subscripció\?</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">D\'acord</string>
<string name="settings_about_version_copied_to_clipboard_message">Copiat al porta-retalls</string>
<string name="detail_settings_appearance_header">Apariència</string>
<string name="detail_settings_appearance_icon_set_summary">Triar una icona per mostrar a les notificacions</string>
<string name="detail_settings_appearance_icon_remove_summary">Icona mostrada a notificacions d\'aquest tema</string>
<string name="user_dialog_password_hint_add">Contrasenya</string>
<string name="user_dialog_password_hint_edit">Contrasenya (no canvia si es deixa en blanc)</string>
<string name="user_dialog_button_add">Afegir usuari</string>
<string name="settings_notifications_auto_download_summary_never">Mai descarregar automàticament els adjunts</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">Flux JSON a través d\'HTTP</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string>
<string name="settings_about_header">Quant a</string>
<string name="settings_advanced_export_logs_entry_upload_original">Carregar i copiar enllaç</string>
<string name="user_dialog_button_delete">Eliminar usuari</string>
<string name="user_dialog_button_save">Guardar</string>
</resources>

View file

@ -22,8 +22,8 @@
\n%2$s</string> \n%2$s</string>
<string name="main_action_bar_title">Odebíraná témata</string> <string name="main_action_bar_title">Odebíraná témata</string>
<string name="main_menu_notifications_enabled">Oznámení zapnuta</string> <string name="main_menu_notifications_enabled">Oznámení zapnuta</string>
<string name="channel_notifications_default_name">Oznámení (výchozí priorita)</string> <string name="channel_notifications_default_name">Výchozí priorita</string>
<string name="channel_notifications_high_name">Oznámení (vysoká priorita)</string> <string name="channel_notifications_high_name">Vysoká priorita</string>
<string name="main_menu_notifications_disabled_until">Oznámení ztlumena do %1$s</string> <string name="main_menu_notifications_disabled_until">Oznámení ztlumena do %1$s</string>
<string name="main_menu_settings_title">Nastavení</string> <string name="main_menu_settings_title">Nastavení</string>
<string name="main_menu_docs_title">Přečíst dokumentaci</string> <string name="main_menu_docs_title">Přečíst dokumentaci</string>
@ -213,7 +213,7 @@
<string name="settings_advanced_clear_logs_summary">Odstranit dříve zaznamenané protokoly a začít znovu</string> <string name="settings_advanced_clear_logs_summary">Odstranit dříve zaznamenané protokoly a začít znovu</string>
<string name="settings_advanced_clear_logs_deleted_toast">Protokoly odstraněny</string> <string name="settings_advanced_clear_logs_deleted_toast">Protokoly odstraněny</string>
<string name="settings_advanced_connection_protocol_title">Protokol připojení</string> <string name="settings_advanced_connection_protocol_title">Protokol připojení</string>
<string name="settings_advanced_connection_protocol_summary_ws">Pro připojení k serveru použít WebSockets. Toto nastavení se stane výchozím v červnu 2022.</string> <string name="settings_advanced_connection_protocol_summary_ws">Pro připojení k serveru použít WebSockets. Jedná se o doporučenou metodu, která však může vyžadovat další konfiguraci v proxy serveru.</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string> <string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string>
<string name="settings_about_header">O programu</string> <string name="settings_about_header">O programu</string>
<string name="settings_about_version_title">Verze</string> <string name="settings_about_version_title">Verze</string>
@ -255,9 +255,9 @@
<string name="detail_menu_test">Odeslat testovací oznámení</string> <string name="detail_menu_test">Odeslat testovací oznámení</string>
<string name="detail_menu_clear">Vymazat všechna oznámení</string> <string name="detail_menu_clear">Vymazat všechna oznámení</string>
<string name="settings_notifications_muted_until_forever">Oznámení ztlumena až do obnovení</string> <string name="settings_notifications_muted_until_forever">Oznámení ztlumena až do obnovení</string>
<string name="channel_notifications_low_name">Oznámení (malá priorita)</string> <string name="channel_notifications_low_name">Malá priorita</string>
<string name="channel_notifications_min_name">Oznámení (nejnižší priorita)</string> <string name="channel_notifications_min_name">Nejnižší priorita</string>
<string name="channel_notifications_max_name">Oznámení (nejvyšší priorita)</string> <string name="channel_notifications_max_name">Nejvyšší priorita</string>
<string name="detail_menu_copy_url">Kopírovat adresu tématu</string> <string name="detail_menu_copy_url">Kopírovat adresu tématu</string>
<string name="detail_settings_title">Nastavení odběru</string> <string name="detail_settings_title">Nastavení odběru</string>
<string name="detail_action_mode_delete_dialog_cancel">Zrušit</string> <string name="detail_action_mode_delete_dialog_cancel">Zrušit</string>
@ -299,7 +299,7 @@
<string name="settings_advanced_export_logs_entry_copy_original">Kopírovat do schránky</string> <string name="settings_advanced_export_logs_entry_copy_original">Kopírovat do schránky</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">Kopírovat do schránky (cenzurované)</string> <string name="settings_advanced_export_logs_entry_copy_scrubbed">Kopírovat do schránky (cenzurované)</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">OK</string> <string name="settings_advanced_export_logs_scrub_dialog_button_ok">OK</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Pro připojení k serveru použít JSON přes protokol HTTP. Tato metoda je zastaralá a bude odstraněna v červnu 2022.</string> <string name="settings_advanced_connection_protocol_summary_jsonhttp">Pro připojení k serveru použít JSON přes protokol HTTP. Tato metoda je ověřená v praxi, ale může spotřebovávat více baterie.</string>
<string name="user_dialog_description_add">Zde můžete přidat uživatele. Tento uživatel bude používán ve všech tématech pro daný server.</string> <string name="user_dialog_description_add">Zde můžete přidat uživatele. Tento uživatel bude používán ve všech tématech pro daný server.</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">JSON přes HTTP</string> <string name="settings_advanced_connection_protocol_entry_jsonhttp">JSON přes HTTP</string>
<string name="channel_subscriber_notification_instant_text_five">Přihlášeno k odběru pěti témat okamžitého doručení</string> <string name="channel_subscriber_notification_instant_text_five">Přihlášeno k odběru pěti témat okamžitého doručení</string>
@ -317,4 +317,30 @@
<string name="channel_subscriber_notification_instant_text_six">Přihlášeno k odběru šesti témat okamžitého doručení</string> <string name="channel_subscriber_notification_instant_text_six">Přihlášeno k odběru šesti témat okamžitého doručení</string>
<string name="detail_settings_notifications_instant_summary_off">Oznámení jsou doručena pomocí služby Firebase. Doručování může být zpožděné, ale spotřebovává méně baterie.</string> <string name="detail_settings_notifications_instant_summary_off">Oznámení jsou doručena pomocí služby Firebase. Doručování může být zpožděné, ale spotřebovává méně baterie.</string>
<string name="detail_settings_notifications_instant_title">Okamžité doručení</string> <string name="detail_settings_notifications_instant_title">Okamžité doručení</string>
<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>
<string name="main_menu_donate_title">Přispět 💸</string>
<string name="detail_item_cannot_open_apk">Aplikace již nelze nainstalovat. Místo toho stahujte přes prohlížeč. Podrobnosti naleznete v issue #531.</string>
<string name="channel_notifications_group_default_name">Výchozí</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Upozornění s nejvyšší prioritou pouze jednou</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Používání vlastních nastavení pro tento odběr</string>
<string name="detail_settings_notifications_open_channels_title">Konfigurace nastavení oznámení</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Stále upozorňovat</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Upozornit pouze jednou</string>
<string name="detail_settings_notifications_dedicated_channels_title">Vlastní nastavení oznámení</string>
<string name="settings_notifications_insistent_max_priority_title">Zachovat upozornění na nejvyšší prioritu</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Oznámení s maximální prioritou nepřetržitě upozorňují až do odvolání</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Použití výchozího nastavení (zvuky, vlastní nastavení funkce Nerušit, atd.)</string>
<string name="detail_settings_notifications_open_channels_summary">Vlastní nastavení funkce Nerušit (DND), zvuky, atd.</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy bude fungovat jako distributor UnifiedPush</string>
<string name="settings_advanced_unifiedpush_title">Povolit UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy nebude fungovat jako distributor UnifiedPush</string>
</resources> </resources>

View file

@ -1,2 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources></resources> <resources>
<string name="channel_notifications_high_name">Blaenoriaeth uchel</string>
<string name="channel_notifications_min_name">Blaenoriaeth lleiaf</string>
<string name="channel_notifications_low_name">Blaenoriaeth isel</string>
</resources>

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="channel_subscriber_notification_instant_text">Abonnerer på emner med øjeblikkelig levering</string>
<string name="channel_notifications_max_name">Maks. prioritet</string>
<string name="channel_subscriber_notification_instant_text_two">Abonnerer på to emner om øjeblikkelig levering</string>
<string name="channel_notifications_group_default_name">standard</string>
<string name="channel_subscriber_notification_instant_text_six">Abonnerer på seks emner med øjeblikkelig levering</string>
<string name="channel_subscriber_notification_instant_text_three">Abonnerer på tre emner med øjeblikkelig levering</string>
<string name="channel_subscriber_service_name">Abonnementsservice</string>
<string name="channel_subscriber_notification_instant_text_five">Abonnerer på fem emner med øjeblikkelig levering</string>
<string name="channel_notifications_default_name">Standardprioritet</string>
<string name="channel_notifications_min_name">Minimum prioritet</string>
<string name="channel_subscriber_notification_instant_text_more">Abonnerer på %1$d emner med øjeblikkelig levering</string>
<string name="channel_notifications_low_name">Lav prioritet</string>
<string name="channel_subscriber_notification_noinstant_text">Abonnerer på emner</string>
<string name="channel_subscriber_notification_title">Lytter efter indgående notifikationer</string>
<string name="channel_subscriber_notification_instant_text_one">Abonnerer på et emne med øjeblikkelig levering</string>
<string name="channel_subscriber_notification_instant_text_four">Abonnerer på fire emner med øjeblikkelig levering</string>
<string name="channel_notifications_high_name">Høj prioritet</string>
</resources>

View file

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="channel_notifications_low_name">Benachrichtigungen (niedrige Priorität)</string> <string name="channel_notifications_low_name">Niedrige Priorität</string>
<string name="channel_notifications_default_name">Benachrichtigungen (normale Priorität)</string> <string name="channel_notifications_default_name">Normale Priorität</string>
<string name="channel_notifications_high_name">Benachrichtigungen (hohe Priorität)</string> <string name="channel_notifications_high_name">Hohe Priorität</string>
<string name="channel_notifications_max_name">Benachrichtigungen (max. Priorität)</string> <string name="channel_notifications_max_name">Höchste Priorität</string>
<string name="channel_subscriber_service_name">Abo Service</string> <string name="channel_subscriber_service_name">Abo Service</string>
<string name="channel_notifications_min_name">Benachrichtigungen (min. Priorität)</string> <string name="channel_notifications_min_name">Min. Priorität</string>
<string name="channel_subscriber_notification_title">Warte auf Benachrichtigungen</string> <string name="channel_subscriber_notification_title">Warte auf Benachrichtigungen</string>
<string name="channel_subscriber_notification_instant_text_one">Ein Sofortnachrichten-Thema abonniert</string> <string name="channel_subscriber_notification_instant_text_one">Ein Sofortnachrichten-Thema abonniert</string>
<string name="channel_subscriber_notification_instant_text_two">Zwei Sofortnachrichten-Themen abonniert</string> <string name="channel_subscriber_notification_instant_text_two">Zwei Sofortnachrichten-Themen abonniert</string>
@ -69,7 +69,7 @@
<string name="detail_delete_dialog_permanently_delete">Endgültig löschen</string> <string name="detail_delete_dialog_permanently_delete">Endgültig löschen</string>
<string name="detail_delete_dialog_cancel">Abbrechen</string> <string name="detail_delete_dialog_cancel">Abbrechen</string>
<string name="detail_test_title">Test: Du kannst einen Titel festlegen.</string> <string name="detail_test_title">Test: Du kannst einen Titel festlegen.</string>
<string name="detail_test_message">Dies ist eine Test-Benachrichtigung aus der ntfy Android-App. Sie hat die Priorität %1$d. Wenn Du eine neue Test-Benachrichtigung sendest, siehst diese vielleicht anders aus.</string> <string name="detail_test_message">Dies ist eine Test-Benachrichtigung aus der ntfy Android-App. Sie hat die Priorität %1$d. Wenn Du eine neue Test-Benachrichtigung sendest, sieht diese vielleicht anders aus.</string>
<string name="detail_test_message_error">Nachricht kann nicht gesendet werden: %1$s</string> <string name="detail_test_message_error">Nachricht kann nicht gesendet werden: %1$s</string>
<string name="detail_test_message_error_unauthorized_user">Nachricht kann nicht gesendet werden: Benutzer \"%1$s\" hat keine Berechtigung.</string> <string name="detail_test_message_error_unauthorized_user">Nachricht kann nicht gesendet werden: Benutzer \"%1$s\" hat keine Berechtigung.</string>
<string name="detail_test_message_error_too_large">Nachricht kann nicht gesendet werden: Anhang zu groß.</string> <string name="detail_test_message_error_too_large">Nachricht kann nicht gesendet werden: Anhang zu groß.</string>
@ -309,7 +309,7 @@
<string name="detail_settings_appearance_header">Darstellung</string> <string name="detail_settings_appearance_header">Darstellung</string>
<string name="detail_settings_appearance_icon_set_title">Abo-Icon</string> <string name="detail_settings_appearance_icon_set_title">Abo-Icon</string>
<string name="detail_settings_appearance_icon_set_summary">Ein Icon zur Darstellung in Benachrichtigungen auswählen</string> <string name="detail_settings_appearance_icon_set_summary">Ein Icon zur Darstellung in Benachrichtigungen auswählen</string>
<string name="detail_settings_appearance_icon_remove_title">Abo-Icon (entfernen durch antippen)</string> <string name="detail_settings_appearance_icon_remove_title">Abo-Icon (entfernen durch Antippen)</string>
<string name="detail_settings_appearance_icon_error_saving">Kann Icon nicht speichern: %1$s</string> <string name="detail_settings_appearance_icon_error_saving">Kann Icon nicht speichern: %1$s</string>
<string name="detail_settings_global_setting_title">Globale Einstellung verwenden</string> <string name="detail_settings_global_setting_title">Globale Einstellung verwenden</string>
<string name="detail_settings_global_setting_suffix">globale Einstellung</string> <string name="detail_settings_global_setting_suffix">globale Einstellung</string>
@ -323,8 +323,26 @@
<string name="add_dialog_base_urls_dropdown_clear">Service-URL löschen</string> <string name="add_dialog_base_urls_dropdown_clear">Service-URL löschen</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (Standard)</string> <string name="detail_settings_appearance_display_name_default_summary">%1$s (Standard)</string>
<string name="detail_settings_appearance_display_name_title">Anzeigename</string> <string name="detail_settings_appearance_display_name_title">Anzeigename</string>
<string name="detail_settings_appearance_display_name_message">Gib einen eigenen Anzeigenamen für diese Abo an. Leer lassen für den Standardwert (%1$s).</string> <string name="detail_settings_appearance_display_name_message">Gib einen eigenen Anzeigenamen für dieses Abo an. Leer lassen für den Standardwert (%1$s).</string>
<string name="detail_settings_about_topic_url_title">Themen-URL</string> <string name="detail_settings_about_topic_url_title">Themen-URL</string>
<string name="detail_settings_about_header">Über</string> <string name="detail_settings_about_header">Über</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">In Zwischenablage kopiert</string> <string name="detail_settings_about_topic_url_copied_to_clipboard_message">In Zwischenablage kopiert</string>
<string name="main_menu_donate_title">Spenden 💸</string>
<string name="detail_item_cannot_open_apk">Apps können nicht mehr installiert werden. Bitte stattdessen über einen Browser herunterladen. Details siehe Issue #531.</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Verwende eigene Einstellungen für dieses Thema</string>
<string name="detail_settings_notifications_open_channels_title">Beanchrichtigungseinstellungen konfigurieren</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Durchgehend alarmieren</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Nur einmal alarmieren</string>
<string name="settings_notifications_insistent_max_priority_title">Bei höchster Priorität dauerhaft alarmieren</string>
<string name="channel_notifications_group_default_name">Standard</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Benachrichtigungen mit höchster Priorität alarmieren nur einmal</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Benachrichtigungen mit höchster Priorität alarmieren dauerhaft bis sie bestätigt werden</string>
<string name="detail_settings_notifications_dedicated_channels_title">Eigene Benachrichtigungseinstellungen</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Verwende Standardeinstellungen (Töne, Übergehen von \"Nicht Stören\" etc.)</string>
<string name="detail_settings_notifications_open_channels_summary">„Bitte nicht stören“ unterbrechen, Töne, etc.</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy arbeitet nicht als UnifiedPush-Distributor</string>
<string name="settings_advanced_unifiedpush_title">UnifiedPush aktivieren</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy arbeitet als UnifiedPush-Distributor</string>
<string name="eos_settings_enable_title">Den Verteiler aktivieren</string>
<string name="eos_settings_enable_description">Es ermöglicht Drittanbieteranwendungen, UnifiedPush-Benachrichtigungen zu empfangen</string>
</resources> </resources>

View file

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="main_menu_settings_title">Ρυθμίσεις</string>
<string name="channel_notifications_max_name">Μέγιστη προτεραιότητα</string>
<string name="channel_subscriber_notification_title">Ακρόαση για εισερχόμενες ειδοποιήσεις</string>
<string name="main_menu_report_bug_title">Αναφέρετε ένα σφάλμα</string>
<string name="main_menu_rate_title">Βαθμολογήστε την εφαρμογή ⭐</string>
<string name="main_action_mode_delete_dialog_message">Κατάργηση συνδρομής στο επιλεγμένο θέμα και μόνιμη διαγραφή όλων των ειδοποιήσεων;</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Μόνιμη διαγραφή</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_item_status_unified_push">%1$s (UnifiedPush)</string>
<string name="main_item_date_yesterday">εχθές</string>
<string name="main_add_button_description">Προσθήκη συνδρομής</string>
<string name="channel_notifications_min_name">Ελάχιστη προτεραιότητα</string>
<string name="channel_notifications_low_name">Χαμηλή προτεραιότητα</string>
<string name="channel_subscriber_notification_instant_text">Έχει γίνει εγγραφή σε θέματα άμεσης παράδοσης</string>
<string name="channel_subscriber_notification_instant_text_two">Έχει γίνει εγγραφή σε δύο θέματα άμεσης παράδοσης</string>
<string name="channel_subscriber_notification_instant_text_more">Έχει γίνει εγγραφή σε %1$d θέματα άμεσης παράδοσης</string>
<string name="channel_subscriber_notification_noinstant_text_two">Έχει γίνει εγγραφή σε δύο θέματα</string>
<string name="channel_notifications_high_name">Υψηλή προτεραιότητα</string>
<string name="channel_subscriber_notification_instant_text_four">Έχει γίνει εγγραφή σε τέσσερα θέματα άμεσης παράδοσης</string>
<string name="channel_notifications_default_name">Προκαθορισμένη προτεραιότητα</string>
<string name="channel_subscriber_notification_instant_text_five">Έχει γίνει εγγραφή σε πέντε θέματα άμεσης παράδοσης</string>
<string name="channel_subscriber_service_name">Συνδρομητική υπηρεσία</string>
<string name="channel_subscriber_notification_noinstant_text_three">Έχει γίνει εγγραφή σε τρία θέματα</string>
<string name="channel_subscriber_notification_instant_text_one">Έχει γίνει εγγραφή σε ένα θέμα άμεσης παράδοσης</string>
<string name="channel_subscriber_notification_instant_text_three">Έχει γίνει εγγραφή σε τρία θέματα άμεσης παράδοσης</string>
<string name="channel_subscriber_notification_noinstant_text">Έχει γίνει εγγραφεί σε θέματα</string>
<string name="channel_subscriber_notification_instant_text_six">Έχει γίνει εγγραφή σε έξι θέματα άμεσης παράδοσης</string>
<string name="channel_subscriber_notification_noinstant_text_one">Έχει γίνει εγγραφή σε ένα θέμα</string>
<string name="channel_subscriber_notification_noinstant_text_four">Έχει γίνει εγγραφή σε τέσσερα θέματα</string>
<string name="channel_subscriber_notification_noinstant_text_five">Έχει γίνει εγγραφή σε πέντε θέματα</string>
<string name="channel_subscriber_notification_noinstant_text_six">Έχει γίνει εγγραφή σε έξι θέματα</string>
<string name="channel_subscriber_notification_noinstant_text_more">Έχει γίνει εγγραφή σε %1$d θέματα</string>
<string name="refresh_message_no_results">Όλα είναι ενημερωμένα</string>
<string name="refresh_message_result">Λήφθηκαν %1$d ειδοποίηση/ειδοποιήσεις</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_menu_notifications_enabled">Ειδοποιήσεις ενεργοποιημένες</string>
<string name="main_menu_notifications_disabled_forever">Ειδοποιήσεις σιωπήθηκαν</string>
<string name="main_menu_notifications_disabled_until">Ειδοποιήσεις σε σιωπή μέχρι %1$s</string>
<string name="main_menu_docs_title">Διαβάστε τα έγγραφα</string>
<string name="main_action_mode_menu_unsubscribe">Κατάργηση συνδρομής</string>
<string name="main_action_mode_delete_dialog_cancel">Ακύρωση</string>
<string name="main_no_subscriptions_text">Φαίνεται ότι δεν έχετε ακόμη συνδρομές.</string>
<string name="main_unified_push_toast">Αυτή η συνδρομή διαχειρίζεται από %1$s μέσω του UnifiedPush</string>
<string name="main_how_to_intro">Κάντε κλικ στο + για να δημιουργήσετε ή να εγγραφείτε σε ένα θέμα. Στη συνέχεια, λαμβάνετε ειδοποιήσεις στη συσκευή σας κατά την αποστολή μηνυμάτων μέσω PUT ή POST.</string>
<string name="main_banner_battery_text">Η βελτιστοποίηση μπαταρίας θα πρέπει να είναι απενεργοποιημένη για την εφαρμογή ώστε αποφευχθούν προβλήματα κατά την παράδοσης ειδοποιήσεων.</string>
<string name="main_how_to_link">Λεπτομερείς οδηγίες που διατίθενται στο ntfy.sh, και στα έγγραφα.</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="channel_notifications_group_default_name">Προκαθορισμένο</string>
<string name="add_dialog_description_below">Τα θέματα μπορεί να μην προστατεύονται από κωδικό, οπότε επιλέξτε ένα όνομα που να είναι δύσκολο να μαντευτεί. Όταν εγγραφείτε, θα μπορείτε να κάνετε PUT/POST ειδοποιήσεις.</string>
<string name="add_dialog_topic_name_hint">Όνομα θέματος</string>
<string name="add_dialog_use_another_server">Χρήση άλλου server/εξυπηρετητή</string>
<string name="add_dialog_title">Εγγραφή σε ειδοποίηση</string>
<string name="main_menu_donate_title">Κάντε δωρεά</string>
<string name="main_banner_websocket_text">Η μετάβαση σε WebSockets είναι ο συνιστώμενος τρόπος σύνδεσης με τον διακομιστή σας και μπορεί να βελτιώσει τη διάρκεια ζωής της μπαταρίας, αλλά μπορεί να απαιτεί <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">πρόσθετες ρυθμίσεις στο διακομιστή μεσολάβησης</a>. Αυτό μπορεί να ενεργοποιηθεί στις Ρυθμίσεις.</string>
<string name="add_dialog_login_password_hint">Κωδικός πρόσβασης</string>
<string name="add_dialog_login_error_not_authorized">Η σύνδεση απέτυχε. Ο χρήστης %1$s δεν είναι εξουσιοδοτημένος.</string>
<string name="add_dialog_foreground_description">Η άμεση παράδοση είναι πάντα ενεργή για χρήστες εκτός από τον/την %1$s.</string>
<string name="add_dialog_login_new_user">Νέος χρήστης</string>
<string name="add_dialog_login_title">Απαιτείται σύνδεση</string>
<string name="main_banner_websocket_button_remind_later">Ρωτήστε αργότερα</string>
<string name="add_dialog_instant_delivery_description">Εξασφαλίζει την άμεση παράδοση των μηνυμάτων, ακόμη και αν η συσκευή είναι ανενεργή.</string>
<string name="main_banner_websocket_button_enable_now">Ενεργοποίηση τώρα</string>
<string name="add_dialog_use_another_server_description">Εισάγετε τις παρακάτω διευθύνσεις URL υπηρεσιών για να εγγραφείτε σε θέματα από άλλους διακομιστές.</string>
<string name="add_dialog_button_cancel">Ακύρωση</string>
<string name="add_dialog_error_connection_failed">Η σύνδεση απέτυχε: %1$s</string>
<string name="add_dialog_button_subscribe">Εγγραφή</string>
<string name="add_dialog_button_login">Σύνδεση</string>
<string name="add_dialog_login_username_hint">Όνομα χρήστη</string>
<string name="add_dialog_base_urls_dropdown_choose">Επιλέξτε URL υπηρεσίας</string>
<string name="add_dialog_instant_delivery">Άμεση παράδοση σε κατάσταση doze</string>
<string name="add_dialog_login_description">Αυτό το θέμα απαιτεί να συνδεθείτε. Παρακαλώ πληκτρολογήστε ένα όνομα χρήστη και έναν κωδικό πρόσβασης.</string>
<string name="main_banner_websocket_button_dismiss">Απορρίψτε το</string>
<string name="add_dialog_button_back">Πίσω</string>
</resources>

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>

View file

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="channel_notifications_min_name">Notificaciones (prioridad mínima)</string> <string name="channel_notifications_min_name">Prioridad mínima</string>
<string name="detail_item_menu_copy_url">Copiar URL</string> <string name="detail_item_menu_copy_url">Copiar URL</string>
<string name="notification_popup_action_open">Abrir</string> <string name="notification_popup_action_open">Abrir</string>
<string name="channel_notifications_low_name">Notificaciones (prioridad baja)</string> <string name="channel_notifications_low_name">Prioridad baja</string>
<string name="channel_notifications_default_name">Notificaciones (prioridad por defecto)</string> <string name="channel_notifications_default_name">Prioridad predeterminada</string>
<string name="channel_notifications_max_name">Notificaciones (prioridad máxima)</string> <string name="channel_notifications_max_name">Prioridad máxima</string>
<string name="channel_subscriber_service_name">Servicio de Suscripciones</string> <string name="channel_subscriber_service_name">Servicio de Suscripciones</string>
<string name="channel_subscriber_notification_title">Escuchando por notificaciones entrantes</string> <string name="channel_subscriber_notification_title">Escuchando por notificaciones entrantes</string>
<string name="channel_subscriber_notification_instant_text_one">Suscrito a un tópico de entrega instantánea</string> <string name="channel_subscriber_notification_instant_text_one">Suscrito a un tópico de entrega instantánea</string>
@ -221,7 +221,7 @@
<string name="user_dialog_button_add">Añadir usuario</string> <string name="user_dialog_button_add">Añadir usuario</string>
<string name="user_dialog_button_cancel">Cancelar</string> <string name="user_dialog_button_cancel">Cancelar</string>
<string name="user_dialog_button_save">Guardar</string> <string name="user_dialog_button_save">Guardar</string>
<string name="channel_notifications_high_name">Notificaciones (prioridad alta)</string> <string name="channel_notifications_high_name">Prioridad alta</string>
<string name="channel_subscriber_notification_instant_text">Suscrito a tópicos de entrega instantánea</string> <string name="channel_subscriber_notification_instant_text">Suscrito a tópicos de entrega instantánea</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string> <string name="main_item_status_unified_push">%1$s (UnifiedPush)</string>
<string name="add_dialog_use_another_server_description">Introduzca las URL de servicio para suscribirse a los tópicos de otros servidores.</string> <string name="add_dialog_use_another_server_description">Introduzca las URL de servicio para suscribirse a los tópicos de otros servidores.</string>
@ -327,4 +327,22 @@
<string name="add_dialog_base_urls_dropdown_clear">Borrar la URL del servicio</string> <string name="add_dialog_base_urls_dropdown_clear">Borrar la URL del servicio</string>
<string name="main_banner_websocket_text">Cambiar a WebSockets es la forma recomendada para conectarse a su servidor, y podría mejorar la vida de la batería, pero puede requerir <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">configuración adicional en su proxy</a>. Esto se puede cambiar en la Configuración.</string> <string name="main_banner_websocket_text">Cambiar a WebSockets es la forma recomendada para conectarse a su servidor, y podría mejorar la vida de la batería, pero puede requerir <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">configuración adicional en su proxy</a>. Esto se puede cambiar en la Configuración.</string>
<string name="main_banner_websocket_button_enable_now">Habilitar ahora</string> <string name="main_banner_websocket_button_enable_now">Habilitar ahora</string>
<string name="main_menu_donate_title">Donar 💸</string>
<string name="detail_item_cannot_open_apk">Las aplicaciones ya no se pueden instalar desde ntfy. Descárguelas a través del navegador. Consulte el issue #531 para obtener más información.</string>
<string name="channel_notifications_group_default_name">Predeterminado</string>
<string name="settings_notifications_insistent_max_priority_title">Mantener alertas para la máxima prioridad</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Las notificaciones de prioridad máxima alertan continuamente hasta que se descartan</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Las notificaciones de prioridad máxima solo alertan una vez</string>
<string name="detail_settings_notifications_open_channels_summary">Ignorar No Molestar (DND), sonidos, etc.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Seguir alertando</string>
<string name="detail_settings_notifications_dedicated_channels_title">Configuración de notificaciones personalizadas</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Alertar solo una vez</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Utilizando configuración personalizada para esta suscripción</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Utilizando configuración predeterminada (sonidos, no molestar, etc.)</string>
<string name="detail_settings_notifications_open_channels_title">Configuración de la notificación</string>
<string name="settings_advanced_unifiedpush_title">Activar UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy actuará como distribuidor UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy no actuará como distribuidor UnifiedPush</string>
<string name="eos_settings_enable_title">Habilitar el distribuidor</string>
<string name="eos_settings_enable_description">Permite a las aplicaciones de terceros recibir notificaciones de UnifiedPush</string>
</resources> </resources>

View file

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="channel_notifications_min_name">اولویت اصلی</string>
<string name="channel_notifications_default_name">اولویت پیش تعریف</string>
<string name="channel_notifications_low_name">اولویت پایین</string>
<string name="channel_notifications_group_default_name">پیش تعریف</string>
<string name="channel_subscriber_notification_instant_text">عضویت یافته در تحویل فوری اطلاعیه ها</string>
<string name="channel_subscriber_notification_instant_text_one">عضویت یافته در تحویل یک موضوع</string>
<string name="channel_subscriber_notification_instant_text_three">عضویت یافته در دریافت سه موضوع</string>
<string name="channel_subscriber_notification_instant_text_five">عضویت یافته در دریافت پنج موضوع</string>
<string name="channel_subscriber_notification_instant_text_more">عضویت یافته در دریافت %1$d موضوع</string>
<string name="channel_subscriber_notification_noinstant_text">عضویت یافته در موضوعات</string>
<string name="main_menu_settings_title">تنظیمات</string>
<string name="main_menu_report_bug_title">گزارش یک نقص فنی</string>
<string name="main_menu_docs_title">مطالعه مستندات</string>
<string name="main_menu_rate_title">رتبه دهی به اپ ⭐</string>
<string name="main_menu_donate_title">حمایت مالی 💸</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_item_date_yesterday">دیروز</string>
<string name="main_no_subscriptions_text">به نظر می رسد شما هنوز هیچ عضویتی ندارید.</string>
<string name="channel_notifications_high_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_two">عضویت یافته در دریافت دو موضوع</string>
<string name="channel_subscriber_notification_instant_text_four">عضویت یافته در دریافت چهار موضوع</string>
<string name="channel_subscriber_notification_instant_text_six">عضویت یافته در دریافت شش موضوع</string>
<string name="channel_subscriber_notification_noinstant_text_one">عضویت یافته در یک موضوع</string>
<string name="refresh_message_result">%1$d اطلاعیه دریافت شد</string>
<string name="refresh_message_no_results">همه چیز بروزآوری شده است</string>
<string name="refresh_message_error_one">بروزآوری آبونمان %1$s ناموفق بود</string>
<string name="main_menu_notifications_enabled">ارسال اطلاعیه در</string>
<string name="main_menu_notifications_disabled_forever">اطلاعیه ها بی صدا شده اند</string>
<string name="main_menu_notifications_disabled_until">اطلاعیه ها تا %1$s بی صدا شده اند</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_add_button_description">افزون اشتراک</string>
</resources>

View file

@ -0,0 +1,346 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="user_dialog_button_add">Lisää käyttäjä</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">Kaikki, paitsi käyttäjät</string>
<string name="add_dialog_login_password_hint">Salasana</string>
<string name="add_dialog_login_error_not_authorized">Kirjautuminen epäonnistui %1$s ei oikeuksia.</string>
<string name="settings_general_header">Pääkäyttäjä</string>
<string name="add_dialog_foreground_description">Välitön toimitus on aina päällä muille palvelimille kuin %1$s.</string>
<string name="detail_clear_dialog_message">Poistetaanko kaikki tämän topikin ilmoitukset \?</string>
<string name="channel_subscriber_notification_instant_text">Tilattu välittömään topikkiin</string>
<string name="detail_settings_appearance_display_name_title">Näytön nimi</string>
<string name="detail_item_menu_copy_url_copied">URL kopioitu leikkelepöydälle</string>
<string name="detail_item_snack_deleted">Ilmoitus poistettu</string>
<string name="settings_advanced_export_logs_entry_copy_original">Kopioi leikkelepöydälle</string>
<string name="settings_advanced_broadcast_summary_disabled">Sovellukset eivät voi vastaanottaa ilmoituksia ja lähetyksiä</string>
<string name="detail_menu_clear">Poista kaikki ilmoitukset</string>
<string name="channel_notifications_max_name">Maksimi tärkeys</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">Aiheita/isäntänimiä ei ole muokattu. Ehkä sinulla ei ole topikkeja\?</string>
<string name="add_dialog_login_new_user">Uusi käyttäjä</string>
<string name="user_dialog_description_add">Kaikki tietyn palvelimen topikit käyttävät tätä käyttäjää.</string>
<string name="share_content_text_hint">Lisää jaettavaksi täällä</string>
<string name="settings_backup_restore_backup_title">Varmuuskopioi tiedostoon</string>
<string name="share_successful">Viesti julkaistu</string>
<string name="settings_advanced_clear_logs_title">Tyhjennä logit</string>
<string name="settings_general_users_title">Hallitse käyttäjiä</string>
<string name="add_dialog_login_title">Kirjautuminen tarvitaan</string>
<string name="settings_notifications_priority_min">min</string>
<string name="settings_notifications_auto_delete_summary_never">Älä koskaan poista automaattisesti ilmoituksia</string>
<string name="notification_popup_file_download_successful">%1$s
\nTiedosto: %2$s, ladattu</string>
<string name="notification_popup_action_browse">Julkaise</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Jatka hälyttämistä</string>
<string name="settings_advanced_broadcast_title">Lähetä viestejä</string>
<string name="main_menu_rate_title">Äänestä aplikaatiota</string>
<string name="detail_item_cannot_delete">Ei voida poistaa liitettä %1$s</string>
<string name="settings_backup_restore_backup_summary">Vie asetukset, ilmoitukset ja käyttäjät</string>
<string name="notification_popup_file_downloading">Lataa %1$s, %2$d%%
\n%3$s</string>
<string name="main_item_status_text_not_one">%1$d Huomautusta</string>
<string name="user_dialog_description_edit">Voit muokata valitun käyttäjän käyttäjätunnusta/salasanaa tai poistaa sen.</string>
<string name="notification_dialog_show_all">Näytä kaikki ilmoitukset</string>
<string name="settings_notifications_min_priority_min">Kaikki tärkeydet</string>
<string name="notification_dialog_30min">30 minuuttia</string>
<string name="detail_item_menu_delete">Poista tiedosto</string>
<string name="channel_subscriber_notification_instant_text_two">Tilattu kahteen välittömään topikkiin</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Tee hälytys vain kerran</string>
<string name="settings_notifications_auto_download_never">Älä koskaan lataa automaattisesti mitään</string>
<string name="notification_popup_user_action_failed">%1$s epäonnistunut: %2$s</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">Tallenna ja kopioi linkki (sensuroitu)</string>
<string name="refresh_message_result">%1$d ilmoitusta vastaanotettu</string>
<string name="notification_dialog_1h">1 tunti</string>
<string name="detail_settings_notifications_instant_title">Välitön lähetys</string>
<string name="notification_dialog_forever">Jatkamiseen asti</string>
<string name="settings_notifications_auto_delete_summary_one_week">Poista ilmoitukset viikon jälkeen</string>
<string name="settings_advanced_export_logs_error_uploading">Ei voida tallentaa logia: %1$s</string>
<string name="detail_item_download_info_not_downloaded_expires_x">Ei ladattu, vanhentunut %1$s</string>
<string name="detail_no_notifications_text">Et ole vielä saanut yhtään ilmoitusta tästä topikista.</string>
<string name="detail_item_cannot_open_url">Ei voida avata URL: %1$s</string>
<string name="settings_notifications_min_priority_title">Pienin prioriteetti</string>
<string name="share_menu_send">Jaa</string>
<string name="channel_subscriber_notification_noinstant_text_two">Tilattu kahteen topikkiin</string>
<string name="detail_settings_title">Tilausasetukset</string>
<string name="detail_item_saved_successfully">Tallennettu nimellä %1$s lataukset kansioon</string>
<string name="settings_notifications_auto_delete_one_month">jälkeen kolmenkymmenen päivän</string>
<string name="channel_notifications_group_default_name">Oletus</string>
<string name="detail_menu_test">Lähetä testi ilmoitus</string>
<string name="settings_notifications_priority_high">korkea</string>
<string name="main_no_subscriptions_text">Näyttää siltä, että sinulla ei ole vielä tilauksia.</string>
<string name="settings_general_users_prefs_user_add_title">Lisää uusi käyttäjä</string>
<string name="detail_menu_disable_instant">Poista välittömät ilmoitukset käytöstä</string>
<string name="detail_action_mode_delete_dialog_cancel">Peruuta</string>
<string name="channel_subscriber_notification_noinstant_text_more">Tilattu %1$d topikkiin</string>
<string name="settings_advanced_export_logs_entry_upload_original">Tallenna ja kopioi linkki</string>
<string name="main_banner_battery_button_fix_now">Korjaa nyt</string>
<string name="detail_item_download_info_not_downloaded">Ei ladattu</string>
<string name="user_dialog_button_save">Tallenna</string>
<string name="detail_delete_dialog_cancel">Peruuta</string>
<string name="settings_about_version_copied_to_clipboard_message">Kopioitu leikkelepöydälle</string>
<string name="notification_popup_action_download">Lataa</string>
<string name="detail_item_cannot_download">Liitettä ei voi avata tai ladata. Linkki vanhentui, eikä paikallista tiedostoa löytynyt.</string>
<string name="main_menu_notifications_enabled">Huomautukset päällä</string>
<string name="settings_general_dark_mode_summary_system">Käytä järjestelmän oletusta</string>
<string name="main_menu_notifications_disabled_forever">Hiljennetyt huomautukset</string>
<string name="detail_item_menu_download">Lataa tiedosto</string>
<string name="channel_subscriber_notification_instant_text_six">Tilattu kuuteen välittömään topikkiin</string>
<string name="main_banner_websocket_button_remind_later">Kysy myöhemmin</string>
<string name="detail_item_menu_copy_contents_copied">Ilmoitus kopioitu leikkelepöydälle</string>
<string name="settings_general_users_prefs_user_used_by_one">Käytetty topikissa %1$s</string>
<string name="detail_settings_appearance_header">Ulkoasu</string>
<string name="settings_notifications_auto_delete_summary_one_month">Poista ilmoitukset kuukauden jälkeen</string>
<string name="channel_subscriber_notification_instant_text_three">Tilattu kolmeen välittömään topikkiin</string>
<string name="channel_subscriber_service_name">Tilaus palvelu</string>
<string name="channel_subscriber_notification_instant_text_five">Tilattu viiteen välittömään topikkiin</string>
<string name="settings_general_users_prefs_user_add">Lisää käyttäjiä</string>
<string name="settings_notifications_auto_delete_three_months">jälkeen kolmen kuukauden</string>
<string name="main_add_button_description">Lisää tilaus</string>
<string name="notification_dialog_muted_forever_toast_message">Ilmoitukset hiljennetty</string>
<string name="settings_notifications_muted_until_show_all">Näytä kaikki ilmoitukset</string>
<string name="notification_popup_file_download_failed">%1$s
\ntiedosto: %2$s, lataus virhe</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Poista pysyvästi</string>
<string name="settings_notifications_auto_delete_three_days">Jälkeen kolmen päivän</string>
<string name="settings_general_dark_mode_summary_light">Vaalea tila päälle</string>
<string name="detail_item_cannot_open">Ei voida avata liitettä %1$s</string>
<string name="settings_notifications_auto_download_5m">Jos tiedoston koko on alle 5 MB</string>
<string name="settings_general_dark_mode_entry_light">Vaalea tila</string>
<string name="detail_item_cannot_open_not_found">Liitettä ei voi avata: Tiedosto on ehkä poistettu tai mikään asennettu sovellus ei voi avata tiedostoa.</string>
<string name="settings_general_dark_mode_title">Tumma tila</string>
<string name="detail_item_download_failed">Ei voida ladata tiedostoa: %1$s</string>
<string name="settings_about_version_title">Versio</string>
<string name="channel_notifications_default_name">Oletus tärkeys</string>
<string name="detail_item_download_info_download_failed">Lataus epäonnistunut</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Kopoitu leikkelepöydälle</string>
<string name="settings_notifications_min_priority_high">Korkea prioriteetti ja sen ylittävät</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Tärkeimmät ilmoitukset hälyttävät vain kerran</string>
<string name="add_dialog_description_below">Topikit eivät ole salasanasuojattuja, joten valitse nimi, jota on vaikea arvata. Kun olet tilannut, voit käyttää PUT/POST ilmoituksia.</string>
<string name="settings_backup_restore_header">Varmuuskopioi &amp; palauta</string>
<string name="main_item_status_reconnecting">Uudelleen yhdistää …</string>
<string name="detail_delete_dialog_message">Lopetetaanko tämän aiheen tilaus ja poistetaanko kaikki saamasi ilmoitukset\?</string>
<string name="settings_title">Asetukset</string>
<string name="settings_general_dark_mode_entry_dark">Tumma tila</string>
<string name="share_content_file_error">Tiedostoa ei voi lukea info: %1$s</string>
<string name="add_dialog_instant_delivery_description">Varmistaa, että viestit toimitetaan välittömästi, vaikka laite olisi passiivinen.</string>
<string name="detail_action_mode_menu_delete">Poista</string>
<string name="main_menu_notifications_disabled_until">Huomautukset hiljennetty %1$s saakka</string>
<string name="detail_item_download_info_deleted_expires_x">Poistettu, linkki vanhentuu %1$s</string>
<string name="main_banner_websocket_button_enable_now">Ota käyttöön</string>
<string name="main_item_date_yesterday">Eilen</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Mukautettujen asetusten käyttäminen tälle tilaukselle</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy ei toimi UnifiedPush-jakelijana</string>
<string name="detail_settings_global_setting_suffix">Käytetään globaalia asetusta</string>
<string name="detail_clear_dialog_permanently_delete">Poista pysyvästi</string>
<string name="main_banner_battery_button_remind_later">Kysy myöhemmin</string>
<string name="channel_notifications_min_name">Pieni tärkeys</string>
<string name="notification_popup_action_open">Auki</string>
<string name="detail_item_menu_open">Avaa tiedosto</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Tärkeimmät ilmoitukset hälyttävät jatkuvasti, kunnes ne hylätään</string>
<string name="main_how_to_link">Yksityiskohtaiset ohjeet löytyvät osoitteesta ntfy.sh .</string>
<string name="settings_notifications_channel_prefs_summary">Älä häiritse tila (DND) äänet, jne.</string>
<string name="settings_general_users_prefs_user_not_used">Ei käytetty missään topikissa</string>
<string name="detail_how_to_link">Yksityiskohtaiset ohjeet ovat saatavilla osoitteessa ntfy.sh ja dokumenteissa.</string>
<string name="settings_notifications_muted_until_title">Hiljennetyt ilmoitukset</string>
<string name="detail_test_message_error">Ei voida lähettää: %1$s</string>
<string name="channel_subscriber_notification_noinstant_text_four">Tilattu neljään topikkiin</string>
<string name="settings_general_default_base_url_default_summary">%1$s (oletus)</string>
<string name="detail_instant_delivery_enabled">Välitön lähetys päällä</string>
<string name="notification_dialog_2h">2 tuntia</string>
<string name="settings_backup_restore_backup_entry_everything">Kaikki</string>
<string name="settings_general_users_summary">Lisää/poista käyttäjiä suojatuille topikeille</string>
<string name="add_dialog_use_another_server_description">Syötä palvelun URL-osoitte alle tilataksesi topikkeja muilta palvelimilta.</string>
<string name="settings_notifications_auto_delete_one_day">Jälkeen yhden päivän</string>
<string name="settings_general_dark_mode_summary_dark">Tumma tila päällä. Oletko vampyyri \?</string>
<string name="settings_general_users_prefs_user_add_summary">Lisää uusi käyttäjä uudelle palvelimelle</string>
<string name="settings_general_dark_mode_entry_system">Käytä oletusasetusta</string>
<string name="notification_dialog_save">Tallenna</string>
<string name="user_dialog_base_url_hint">Palvelun URL</string>
<string name="detail_item_download_info_download_failed_expires_x">Lataus epäonnistunut, linkki vanhentunut %1$s</string>
<string name="settings_notifications_priority_max">max</string>
<string name="user_dialog_password_hint_add">Salasana</string>
<string name="settings_notifications_min_priority_summary_any">Näytä kaikki ilmoitukset</string>
<string name="main_unified_push_toast">%1$s hallinnoi tätä tilausta UnifiedPushin kautta</string>
<string name="detail_item_menu_copy_contents">Kopioi ilmoitus</string>
<string name="channel_subscriber_notification_instant_text_more">Tilattu %1$d välittömään topikkiin</string>
<string name="detail_menu_enable_instant">Ota välittömät ilmoitukset käyttöön</string>
<string name="settings_advanced_export_logs_summary">Kopioi lokit leikepöydälle tai lataa osoitteeseen nopaste.net (omistaja ntfy). Isäntänimet ja aiheet voidaan sensuroida, ilmoituksia ei koskaan tehdä.</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">Poista pysyvästi</string>
<string name="notification_dialog_enabled_toast_message">Jatka ilmoituksia</string>
<string name="main_menu_report_bug_title">Raportoi bugista</string>
<string name="add_dialog_button_cancel">Peruuta</string>
<string name="settings_notifications_min_priority_summary_max">Näytä ilmoitukset jos tärkeys on 5 (max)</string>
<string name="settings_advanced_broadcast_summary_enabled">Sovellukset voivat vastaanottaa saapuvia ilmoituksia ja lähetyksiä</string>
<string name="notification_dialog_tomorrow">Huomiseen saakka</string>
<string name="detail_settings_notifications_open_channels_title">Määritä ilmoitusasetukset</string>
<string name="add_dialog_topic_name_hint">Topikin nimi, esimerkiksi pentin_hälytykset</string>
<string name="channel_notifications_low_name">Matala tärkeys</string>
<string name="settings_notifications_auto_download_title">Lataa liitteet</string>
<string name="user_dialog_button_delete">Poista käyttäjä</string>
<string name="add_dialog_error_connection_failed">Yhteys epäonnistui: %1$s</string>
<string name="detail_menu_notifications_disabled_forever">Ilmoitukset hiljennetty</string>
<string name="share_content_image_text">Kanssasi jaettiin kuva</string>
<string name="main_banner_websocket_text">WebSocketsiin vaihtaminen on suositeltu tapa muodostaa yhteys palvelimeesi, ja se voi parantaa akun käyttöikää, mutta saattaa edellyttää <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">additional config in your proxy</a>. Tämän voi vaihtaa asetuksista.</string>
<string name="settings_notifications_channel_prefs_title">Kanavan asetukset</string>
<string name="settings_notifications_auto_download_50m">Jos tiedoston koko on alle 50 MB</string>
<string name="detail_clear_dialog_cancel">Peruuta</string>
<string name="main_action_mode_delete_dialog_cancel">Peruuta</string>
<string name="settings_notifications_min_priority_default">Oletus prioriteetin ja sen ylittävät</string>
<string name="detail_test_message_error_unauthorized_anon">Viestiä ei voi lähettää: Nimetöntä lähetystä ei sallita.</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSocketit</string>
<string name="detail_copied_to_clipboard_message">Kopioitu leikepöydälle</string>
<string name="channel_subscriber_notification_noinstant_text">Tilattu topikkiin</string>
<string name="detail_action_mode_menu_copy">Kopioi</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">JSON stream yli HTTP</string>
<string name="user_dialog_title_add">Lisää käyttäjä</string>
<string name="detail_item_download_info_deleted">Poistettu</string>
<string name="add_dialog_button_subscribe">Tilaa</string>
<string name="settings_advanced_clear_logs_deleted_toast">Logit poistettu</string>
<string name="detail_item_download_info_downloading_x_percent">%1$d%% ladattu</string>
<string name="user_dialog_button_cancel">Peruuta</string>
<string name="add_dialog_button_login">Kirjaudu</string>
<string name="settings_backup_restore_restore_summary">Tuo asetukset, ilmoitukset ja käyttäjät</string>
<string name="channel_subscriber_notification_title">Kuuntelee sisääntulevia viestejä</string>
<string name="detail_how_to_intro">Jos haluat lähettää ilmoituksia tähän topikkiin, lähetä PUT tai POST topikin URL-osoitteeseen.</string>
<string name="settings_general_users_prefs_title">Käyttäjät</string>
<string name="detail_item_cannot_open_apk">Sovelluksia ei voi enää asentaa. Lataa sen sijaan selaimen kautta. Katso numero #531 saadaksesi lisätietoja.</string>
<string name="settings_advanced_clear_logs_summary">Poista aiemmin tallennetut lokit ja aloita alusta</string>
<string name="refresh_message_error_one">Ei voitu päivittää: %1$s</string>
<string name="add_dialog_login_username_hint">Käyttäjänimi</string>
<string name="detail_settings_about_header">-</string>
<string name="settings_advanced_export_logs_uploading">Tallenna logi …</string>
<string name="detail_item_menu_copy_url">Kopioi URL</string>
<string name="detail_menu_notifications_disabled_until">Ilmoitukset hiljennetty %1$s asti</string>
<string name="settings_advanced_export_logs_scrub_dialog_text">Nämä aiheet/isäntänimet korvattiin hedelmien nimillä, joten voit jakaa lokin huoletta:
\n
\n%1$s
\n
\nSalasanat on poistettu, ja niitä ei ole listattu tässä.</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy toimii UnifiedPush-jakelijana</string>
<string name="add_dialog_use_another_server">Käytä eri palvelinta</string>
<string name="settings_notifications_priority_default">oletus</string>
<string name="settings_notifications_auto_download_100k">Jos tiedoston koko on alle 100 kB</string>
<string name="add_dialog_base_urls_dropdown_choose">Valitse palvelimen URL</string>
<string name="add_dialog_instant_delivery">Välitön toimitus torkkutilassa</string>
<string name="settings_notifications_auto_delete_title">Poista ilmoitukset</string>
<string name="detail_delete_dialog_permanently_delete">Poista pysyvästi</string>
<string name="share_content_title">Viestin esikatselu</string>
<string name="settings_notifications_auto_download_500k">Jos tiedoston koko on alle 500 kB</string>
<string name="settings_general_default_base_url_title">Oletuspalvelin</string>
<string name="settings_notifications_muted_until_x">Ilmoitukset mykistetty, %1$s saakka</string>
<string name="main_banner_battery_text">Akun optimoinnin tulee olla pois päältä ilmoitusten toimitusongelmien välttämiseksi.</string>
<string name="settings_advanced_unifiedpush_title">Ota käyttöön UnifiedPush</string>
<string name="settings_general_default_base_url_message">Anna palvelimesi juurikansio URL, jotta voit käyttää omaa palvelintasi oletuksena uusien topikkien tilaamisessa ja/tai aiheiden jakamisessa.</string>
<string name="user_dialog_password_hint_edit">Salasana (ei voi muuttaa, jos jätetään tyhjäksi)</string>
<string name="settings_advanced_record_logs_summary_disabled">Ota logaus käyttöön, jotta voit jakaa lokit myöhemmin diagnosoidaksesi ongelmia.</string>
<string name="main_action_mode_delete_dialog_message">Lopetetaanko valittujen aiheiden tilaus ja poistetaanko kaikki ilmoitukset pysyvästi \?</string>
<string name="notification_dialog_muted_until_toast_message">Ilmoituset hiljennetty %1$s asti</string>
<string name="share_title">Jaa</string>
<string name="refresh_message_error">Ei voitu päivittää %1$d tilausta
\n
\n%2$s</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Käytä JSON HTTP:n kautta muodostaaksesi yhteyden palvelimeen. Tämä menetelmä on testattu, mutta se voi kuluttaa enemmän akkua.</string>
<string name="settings_advanced_export_logs_copied_logs">Logit kopioitu leikkelepöydälle</string>
<string name="channel_subscriber_notification_noinstant_text_six">Tilattu kuuteen topikkiin</string>
<string name="detail_settings_notifications_instant_summary_on">Ilmoitukset toimitetaan välittömästi. kuluttaa enemmän akkua.</string>
<string name="detail_test_title">Testi: Voit asettaa otsikon, jos haluat.</string>
<string name="settings_advanced_connection_protocol_summary_ws">Käytä WebSocketsia yhteyden muodostamiseen palvelimeen. Tämä on suositeltu tapa, mutta se voi vaatia lisämäärityksiä välityspalvelimessasi.</string>
<string name="settings_notifications_auto_download_summary_smaller_than_x">Lataa automaattisesti liitteet %1$s saakka</string>
<string name="settings_notifications_auto_download_10m">Jos tiedoston koko on alle 10 MB</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">OK</string>
<string name="settings_advanced_connection_protocol_title">Yhteys protokolla</string>
<string name="notification_popup_action_cancel">Peruuta</string>
<string name="settings_backup_restore_restore_title">Palauta tiedostosta</string>
<string name="share_content_image_error">Kuvaa ei voi lukea %1$s</string>
<string name="notification_dialog_cancel">Peruuta</string>
<string name="main_banner_battery_button_dismiss">Hylkää</string>
<string name="detail_menu_copy_url">Kopioi topikin osoite</string>
<string name="settings_notifications_min_priority_low">Matalan prioriteetin ylittävät</string>
<string name="detail_settings_notifications_dedicated_channels_title">Mukautetut ilmoitusasetukset</string>
<string name="main_menu_settings_title">Asetukset</string>
<string name="share_topic_title">Jaettu</string>
<string name="detail_settings_appearance_icon_set_summary">Aseta kuvake, joka näytetään ilmoituksissa</string>
<string name="main_how_to_intro">Napsauta + luodaksesi topikin tai tilataksesi sen. Tämän jälkeen saat ilmoituksia laitteellesi, kun lähetät viestejä PUT- tai POST-yhteydellä.</string>
<string name="main_action_bar_title">Tilatut topikit</string>
<string name="detail_menu_notifications_enabled">Ilmoitukset päälle</string>
<string name="settings_backup_restore_backup_entry_settings_only">Vain asetukset</string>
<string name="detail_item_cannot_save">Ei voida tallentaa liitettä: %1$s</string>
<string name="detail_item_snack_undo">Kumoa</string>
<string name="settings_backup_restore_backup_successful">Varmuuskopio luotu</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (oletus)</string>
<string name="channel_subscriber_notification_noinstant_text_three">Tilattu kolmeen topikkiin</string>
<string name="channel_subscriber_notification_noinstant_text_five">Tilattu viiteen topikkiin</string>
<string name="main_action_mode_menu_unsubscribe">Lopeta tilaus</string>
<string name="add_dialog_login_description">Tämä topikki vaatii kirjautumisen. Kirjoita käyttäjätunnus ja salasana.</string>
<string name="settings_general_users_prefs_user_used_by_many">Käytetty topikeissa %1$s</string>
<string name="detail_settings_global_setting_title">Käytä globaalia asetusta</string>
<string name="settings_notifications_auto_download_summary_never">Älä koskaan lataa automaattisesti liitteitä</string>
<string name="detail_item_download_info_deleted_expired">Poistettu, linkki vanhentunut</string>
<string name="detail_item_menu_save_file">Tallenna tiedosto</string>
<string name="main_menu_docs_title">Lue dokumentaatiota</string>
<string name="settings_notifications_auto_delete_summary_one_day">Poista ilmoitukset yhden päivän jälkeen</string>
<string name="refresh_message_no_results">Kaikki päivitetty</string>
<string name="detail_item_download_info_not_downloaded_expired">Ei ladattu, linkki vanhentunut</string>
<string name="settings_advanced_record_logs_summary_enabled">Logaus (jopa 1 000 merkintää) laitteeseen…</string>
<string name="settings_notifications_auto_delete_summary_three_days">Poista ilmoitukset 3 päivän jälkeen</string>
<string name="channel_subscriber_notification_instant_text_one">Tilattu yhteen välittömään topikkiin</string>
<string name="share_content_file_text">Tedoston on jaettu sinulle</string>
<string name="main_banner_websocket_button_dismiss">Hylkää</string>
<string name="add_dialog_base_urls_dropdown_clear">Poista palvelimen URL</string>
<string name="detail_action_mode_delete_dialog_message">Poista valitut tilaukset välittömästi \?</string>
<string name="detail_settings_about_topic_url_title">Topikin URL</string>
<string name="add_dialog_title">Liity topikkin</string>
<string name="add_dialog_button_back">Takaisin</string>
<string name="settings_advanced_header">Kehittyneet</string>
<string name="settings_notifications_auto_delete_summary_three_months">Poista ilmoitukset kolmen kuukauden jälkeen</string>
<string name="notification_popup_file">%1$s
\nTiedosto: %2$s</string>
<string name="settings_notifications_muted_until_forever">Ilmoitukset mykistetty, kunnes niitä jatketaan</string>
<string name="detail_how_to_example">Esimerkki (käytä curl):<br/><tt>$ curl -d \"Hei\" %1$s</tt></string>
<string name="detail_settings_appearance_icon_set_title">Kuvake</string>
<string name="detail_instant_delivery_disabled">Välitön lähetys pois</string>
<string name="channel_subscriber_notification_instant_text_four">Tilattu neljään välittömään topikkiin</string>
<string name="settings_notifications_auto_download_1m">Jos tiedoston koko on alle 1 MB</string>
<string name="detail_item_download_info_download_failed_expired">Lataus epäonnistunut, linkki vanhentunut</string>
<string name="detail_settings_notifications_instant_summary_off">Ilmoitukset toimitetaan Firebasella. Toimitus saattaa viivästyä, mutta kuluttaa vähemmän akkua.</string>
<string name="detail_settings_notifications_open_channels_summary">Älä häiritse (DND) ohitus, äänet jne.</string>
<string name="detail_test_message_error_unauthorized_user">Viestiä ei voi lähettää: Käyttäjällä \"%1$s\" ei ole oikeuksia.</string>
<string name="notification_dialog_title">Hiljennetyt ilmoitukset</string>
<string name="settings_notifications_min_priority_summary_x_or_higher">Näytä ilmoitukset jos täkeys on %1$d (%2$s) tai enemmän</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">Kopioi leikkelepöydälle (sensuroitu)</string>
<string name="settings_advanced_export_logs_copied_url">Logit tallennettu ja URL kopioitu</string>
<string name="settings_advanced_export_logs_title">Kopioi/tallenna logit</string>
<string name="detail_settings_appearance_icon_remove_summary">Tämän topikin ilmoituksissa näkyvä kuvake</string>
<string name="settings_backup_restore_backup_failed">Varmuuskopio epäonnistunut: %1$s</string>
<string name="detail_test_message_error_too_large">Viestiä ei voi lähettää: Liite on liian suuri.</string>
<string name="settings_notifications_priority_low">matala</string>
<string name="channel_subscriber_notification_noinstant_text_one">Tilattu yhteen topikkiin</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
<string name="settings_notifications_auto_download_summary_always">Lataa automaattisesti liitteet</string>
<string name="user_dialog_title_edit">Muokkaa käyttäjää</string>
<string name="settings_backup_restore_restore_successful">Palautus onnistui</string>
<string name="settings_notifications_auto_delete_one_week">jälkeen seitsemän päivän</string>
<string name="settings_backup_restore_restore_failed">Palautus epäonnistui: %1$s</string>
<string name="settings_notifications_header">Ilmoitukset</string>
<string name="detail_test_message">Tämä on testi-ilmoitus ntfy Android -sovelluksesta. Sillä on prioriteettitaso %1$d. Jos lähetät toisen, se voi näyttää erilaiselta.</string>
<string name="detail_settings_appearance_icon_remove_title">Kuvake (napauta poistaaksesi)</string>
<string name="share_suggested_topics">Ehdotetut topikit</string>
<string name="detail_settings_appearance_display_name_message">Aseta tälle topikille mukautettu näyttönimi. Jätä tyhjäksi oletuksena (%1$s).</string>
<string name="detail_settings_appearance_icon_error_saving">Ei voida tallentaa kuvaketta %1$s</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Oletusasetusten käyttäminen (äänet, Älä häiritse -tilan ohitus jne.)</string>
<string name="detail_item_menu_cancel">Peruuta lataus</string>
<string name="channel_notifications_high_name">Korkea tärkeys</string>
<string name="settings_advanced_record_logs_title">Nauhoitetut logit</string>
<string name="settings_notifications_insistent_max_priority_title">Pidä hälytykset korkeimmalla tasolla</string>
<string name="settings_notifications_min_priority_max">Vain maksimi ja ylittävät</string>
<string name="settings_about_header">About</string>
<string name="main_menu_donate_title">Lahjoita 💸</string>
<string name="notification_dialog_8h">8 tuntia</string>
<string name="detail_deep_link_subscribed_toast_message">Topikki %1$s tilattu</string>
<string name="user_dialog_username_hint">Käyttäjätunnus</string>
<string name="detail_menu_unsubscribe">Lopeta tilaus</string>
<string name="settings_notifications_auto_download_always">Lataa automaattisesti kaikki</string>
<string name="detail_menu_settings">Tilauksien asetukset</string>
<string name="settings_notifications_auto_delete_never">Ei koskaan</string>
<string name="main_item_status_unified_push">%1$s (Yleis Push)</string>
<string name="detail_item_tags">Tagit %1$s</string>
<string name="main_item_status_text_one">%1$d Huomautus</string>
</resources>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="channel_notifications_low_name">Notifications (priorité basse)</string> <string name="channel_notifications_low_name">Priorité basse</string>
<string name="channel_notifications_default_name">Notifications (priorité normale)</string> <string name="channel_notifications_default_name">Priorité par défaut</string>
<string name="channel_subscriber_service_name">Abonnement</string> <string name="channel_subscriber_service_name">Abonnement</string>
<string name="channel_subscriber_notification_instant_text_two">Abonné à deux sujets à réception instantanée</string> <string name="channel_subscriber_notification_instant_text_two">Abonné à deux sujets à réception instantanée</string>
<string name="channel_subscriber_notification_instant_text_four">Abonné à quatre sujets à réception instantanée</string> <string name="channel_subscriber_notification_instant_text_four">Abonné à quatre sujets à réception instantanée</string>
@ -19,11 +19,11 @@
<string name="main_item_date_yesterday">hier</string> <string name="main_item_date_yesterday">hier</string>
<string name="main_add_button_description">Ajout d\'abonnement</string> <string name="main_add_button_description">Ajout d\'abonnement</string>
<string name="main_how_to_link">Des instructions détaillées sont disponible sur ntfy.sh et dans la documentation.</string> <string name="main_how_to_link">Des instructions détaillées sont disponible sur ntfy.sh et dans la documentation.</string>
<string name="main_banner_battery_text">L\'optimisation de la pile devrait être désactivée pour l\'application afin d\'éviter des problèmes de réception de notifications.</string> <string name="main_banner_battery_text">L\'optimisation de la batterie devrait être désactivée pour l\'application afin d\'éviter des problèmes de réception de notifications.</string>
<string name="main_banner_websocket_button_remind_later">Demander plus tard</string> <string name="main_banner_websocket_button_remind_later">Demander plus tard</string>
<string name="main_banner_websocket_button_dismiss">Ignorer</string> <string name="main_banner_websocket_button_dismiss">Ignorer</string>
<string name="add_dialog_topic_name_hint">Nom de sujet, ex. : phils_alerts</string> <string name="add_dialog_topic_name_hint">Nom de sujet, ex. : phils_alerts</string>
<string name="add_dialog_instant_delivery">Livraison instantanée en mode somnolence</string> <string name="add_dialog_instant_delivery">Réception instantanée en mode économie d\'énergie</string>
<string name="add_dialog_button_cancel">Annuler</string> <string name="add_dialog_button_cancel">Annuler</string>
<string name="add_dialog_button_subscribe">Abonner</string> <string name="add_dialog_button_subscribe">Abonner</string>
<string name="add_dialog_button_back">Retour</string> <string name="add_dialog_button_back">Retour</string>
@ -53,9 +53,9 @@
<string name="detail_action_mode_delete_dialog_permanently_delete">Supprimer définitivement</string> <string name="detail_action_mode_delete_dialog_permanently_delete">Supprimer définitivement</string>
<string name="detail_action_mode_delete_dialog_message">Supprimer définitivement la ou les notification(s) sélectionnée(s) \?</string> <string name="detail_action_mode_delete_dialog_message">Supprimer définitivement la ou les notification(s) sélectionnée(s) \?</string>
<string name="channel_subscriber_notification_instant_text_one">Abonné à un sujet à réception instantanée</string> <string name="channel_subscriber_notification_instant_text_one">Abonné à un sujet à réception instantanée</string>
<string name="channel_notifications_max_name">Notifications (priorité maximale)</string> <string name="channel_notifications_max_name">Priorité maximale</string>
<string name="channel_notifications_min_name">Notifications (priorité minimale)</string> <string name="channel_notifications_min_name">Priorité minimale</string>
<string name="channel_notifications_high_name">Notifications (priorité élevée)</string> <string name="channel_notifications_high_name">Priorité élevée</string>
<string name="channel_subscriber_notification_title">Écoute les notifications entrantes</string> <string name="channel_subscriber_notification_title">Écoute les notifications entrantes</string>
<string name="channel_subscriber_notification_instant_text">Abonné aux sujets à réception instantanée</string> <string name="channel_subscriber_notification_instant_text">Abonné aux sujets à réception instantanée</string>
<string name="channel_subscriber_notification_instant_text_three">Abonné à trois sujets à réception instantanée</string> <string name="channel_subscriber_notification_instant_text_three">Abonné à trois sujets à réception instantanée</string>
@ -105,7 +105,7 @@
<string name="detail_test_message">Ceci est une notification de test depuis l\'application Android ntfy. Elle a une priorité de niveau %1$d. Si vous en envoyez une autre, elle pourrait avoir un apparence différente.</string> <string name="detail_test_message">Ceci est une notification de test depuis l\'application Android ntfy. Elle a une priorité de niveau %1$d. Si vous en envoyez une autre, elle pourrait avoir un apparence différente.</string>
<string name="detail_test_message_error_unauthorized_anon">Incapable d\'envoyer le message : La publication anonyme est interdite.</string> <string name="detail_test_message_error_unauthorized_anon">Incapable d\'envoyer le message : La publication anonyme est interdite.</string>
<string name="detail_test_message_error_unauthorized_user">Incapable d\'envoyer le message : L\'utilisateur \"%1$s\" n\'est pas autorisé.</string> <string name="detail_test_message_error_unauthorized_user">Incapable d\'envoyer le message : L\'utilisateur \"%1$s\" n\'est pas autorisé.</string>
<string name="detail_test_message_error_too_large">Incapable d\'envoyer le message : La pièce jointe est trop large.</string> <string name="detail_test_message_error_too_large">Impossible d\'envoyer le message : La pièce jointe est trop lourde.</string>
<string name="detail_instant_delivery_enabled">Livraison instantanée active</string> <string name="detail_instant_delivery_enabled">Livraison instantanée active</string>
<string name="detail_item_snack_deleted">Notification supprimée</string> <string name="detail_item_snack_deleted">Notification supprimée</string>
<string name="detail_item_menu_copy_url_copied">L\'URL a été copiée dans le presse-papier</string> <string name="detail_item_menu_copy_url_copied">L\'URL a été copiée dans le presse-papier</string>
@ -269,7 +269,7 @@
<string name="settings_notifications_priority_min">min</string> <string name="settings_notifications_priority_min">min</string>
<string name="settings_general_users_prefs_title">Utilisateurs</string> <string name="settings_general_users_prefs_title">Utilisateurs</string>
<string name="settings_general_dark_mode_summary_system">Utilisé le thème système</string> <string name="settings_general_dark_mode_summary_system">Utilisé le thème système</string>
<string name="settings_notifications_min_priority_summary_any">Toutes les notifications</string> <string name="settings_notifications_min_priority_summary_any">Affichage de toutes les notifications</string>
<string name="settings_notifications_priority_default">défaut</string> <string name="settings_notifications_priority_default">défaut</string>
<string name="settings_notifications_auto_delete_summary_three_days">Supprimer automatiquement les notifications après 3 jours</string> <string name="settings_notifications_auto_delete_summary_three_days">Supprimer automatiquement les notifications après 3 jours</string>
<string name="settings_notifications_auto_delete_one_day">Après un jour</string> <string name="settings_notifications_auto_delete_one_day">Après un jour</string>
@ -299,7 +299,7 @@
\n \n
\nLes mots de passe sont nettoyés, mais ne sont pas listés ici.</string> \nLes mots de passe sont nettoyés, mais ne sont pas listés ici.</string>
<string name="detail_deep_link_subscribed_toast_message">Abonné au sujet %1$s</string> <string name="detail_deep_link_subscribed_toast_message">Abonné au sujet %1$s</string>
<string name="settings_notifications_channel_prefs_summary">Ignorer Ne pas déranger (DND), sons, etc.</string> <string name="settings_notifications_channel_prefs_summary">Ignorer « ne pas déranger », sons, etc.</string>
<string name="notification_popup_user_action_failed">%1$s a échoué : %2$s</string> <string name="notification_popup_user_action_failed">%1$s a échoué : %2$s</string>
<string name="settings_notifications_channel_prefs_title">Paramètres du canal</string> <string name="settings_notifications_channel_prefs_title">Paramètres du canal</string>
<string name="channel_subscriber_notification_noinstant_text_six">Abonné à six sujets</string> <string name="channel_subscriber_notification_noinstant_text_six">Abonné à six sujets</string>
@ -321,4 +321,28 @@
<string name="add_dialog_base_urls_dropdown_choose">Choisir l\'URL du service</string> <string name="add_dialog_base_urls_dropdown_choose">Choisir l\'URL du service</string>
<string name="add_dialog_base_urls_dropdown_clear">Supprimer l\'URL du service</string> <string name="add_dialog_base_urls_dropdown_clear">Supprimer l\'URL du service</string>
<string name="main_banner_websocket_button_enable_now">Activer maintenant</string> <string name="main_banner_websocket_button_enable_now">Activer maintenant</string>
<string name="detail_settings_appearance_display_name_title">Nom d\'affichage</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s</string>
<string name="detail_settings_appearance_display_name_message">Mettre un nom d\'affichage personnalisé pour cette souscription. Laisse ce champ vide pour mettre la valeur par défaut (%1$s).</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Copié au Presse-papier</string>
<string name="detail_settings_about_header">À propos</string>
<string name="detail_settings_about_topic_url_title">URL du sujet</string>
<string name="channel_notifications_group_default_name">Défaut</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Conserver les notifications</string>
<string name="main_menu_donate_title">Faire un don 💸</string>
<string name="detail_item_cannot_open_apk">Les applications ne peuvent plus être installées. Veuillez les télécharger via un navigateur. Voir le ticket #531 pour plus de détails.</string>
<string name="settings_notifications_insistent_max_priority_title">Conserver les notifications avec une priorité maximale</string>
<string name="detail_settings_notifications_dedicated_channels_title">Paramètres personnalisés de la notification</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Affiche les notifications une fois seulement</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Utilisation de paramètres personnalisés pour cet abonnement</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Utilisation des paramètres par défaut (sons, ignorer « ne pas déranger », etc.)</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Les notifications avec une priorité maximale ne sont affichées qu\'une seule fois</string>
<string name="detail_settings_notifications_open_channels_title">Configurer les paramètres de la notification</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Les notifications avec une priorité maximale sont affichées jusqu\'à ce qu\'elles soient rejetées</string>
<string name="detail_settings_notifications_open_channels_summary">Ignorer « ne pas déranger », sons, etc.</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy agira comme un distributeur UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy n\'agira pas comme un distributeur UnifiedPush</string>
<string name="settings_advanced_unifiedpush_title">Activer le \"UnifiedPush\"</string>
<string name="eos_settings_enable_title">Activer le distributeur</string>
<string name="eos_settings_enable_description">Cela permet aux applications tierces de recevoir des notifications UnifiedPush</string>
</resources> </resources>

View file

@ -0,0 +1,346 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="channel_notifications_min_name">Prioridade Min</string>
<string name="channel_notifications_low_name">Prioridade baixa</string>
<string name="channel_notifications_default_name">Prioridade por defecto</string>
<string name="channel_notifications_high_name">Prioridade alta</string>
<string name="channel_notifications_max_name">Prioridade Máx</string>
<string name="channel_subscriber_service_name">Servizo de subscrición</string>
<string name="channel_notifications_group_default_name">Por defecto</string>
<string name="channel_subscriber_notification_title">Agardando por notificacións entrantes</string>
<string name="channel_subscriber_notification_instant_text">Subscrita ao envío instantáneo de asuntos</string>
<string name="channel_subscriber_notification_instant_text_one">Subscrita ao envío instantáneo dun asunto</string>
<string name="channel_subscriber_notification_instant_text_two">Subscrita ao envío instantáneo de dous asuntos</string>
<string name="channel_subscriber_notification_instant_text_three">Subscrita ao envío instantáneo de tres asuntos</string>
<string name="channel_subscriber_notification_instant_text_four">Subscrita ao envío instantáneo de catro asuntos</string>
<string name="channel_subscriber_notification_instant_text_five">Subscrita ao envío instantáneo de cinco asuntos</string>
<string name="channel_subscriber_notification_instant_text_six">Subscrita ao envío instantáneo de seis asuntos</string>
<string name="channel_subscriber_notification_instant_text_more">Subscrita ao envío instantáneo de %1$d asuntos</string>
<string name="channel_subscriber_notification_noinstant_text">Subscrita a asuntos</string>
<string name="channel_subscriber_notification_noinstant_text_six">Subscrita a seis asuntos</string>
<string name="channel_subscriber_notification_noinstant_text_more">Subscrita a %1$d asuntos</string>
<string name="refresh_message_error">Non se actualizaron %1$d subscricións
\n
\n%2$s</string>
<string name="refresh_message_error_one">Non se actualizou a subscrición: %1$s</string>
<string name="main_action_bar_title">Asuntos subscritos</string>
<string name="main_menu_notifications_enabled">Notificacións activadas</string>
<string name="main_menu_notifications_disabled_forever">Notificacións acaladas</string>
<string name="main_menu_notifications_disabled_until">Notificacións acaladas ata %1$s</string>
<string name="main_menu_settings_title">Axustes</string>
<string name="main_menu_report_bug_title">Informar dun fallo</string>
<string name="main_menu_docs_title">Ler documentación</string>
<string name="main_menu_rate_title">Valorar a app ⭐</string>
<string name="main_menu_donate_title">Doar 💸</string>
<string name="main_action_mode_menu_unsubscribe">Retirar subscrición</string>
<string name="main_action_mode_delete_dialog_message">Retirar a subscrición ao(s) asunto(s) seleccionado(s) e eliminar definitivamente tódalas notificacións\?</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Eliminar definitivamente</string>
<string name="main_action_mode_delete_dialog_cancel">Cancelar</string>
<string name="main_item_status_text_one">%1$d notificación</string>
<string name="main_item_status_text_not_one">%1$d notificacións</string>
<string name="main_item_status_reconnecting">reconectando…</string>
<string name="channel_subscriber_notification_noinstant_text_one">Subscrita a un asunto</string>
<string name="channel_subscriber_notification_noinstant_text_two">Subscrita a dous asuntos</string>
<string name="channel_subscriber_notification_noinstant_text_three">Subscrita a tres asuntos</string>
<string name="channel_subscriber_notification_noinstant_text_four">Subscrita a catro asuntos</string>
<string name="refresh_message_result">%1$d notificación(s) recibida(s)</string>
<string name="channel_subscriber_notification_noinstant_text_five">Subscrita a cinco asuntos</string>
<string name="refresh_message_no_results">Todo ao día</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string>
<string name="main_item_date_yesterday">onte</string>
<string name="main_how_to_intro">Preme no + para crear ou subscribirte a un tema. Posteriormente recibirás notificacións no teu dispositivo cando se envían mensaxes a través de PUT ou POST.</string>
<string name="main_unified_push_toast">Esta subscrición está xestionada por %1$s a través de UnifiedPush</string>
<string name="main_how_to_link">Instruccións detalladas dispoñibles en ntfy.sh, e na documentación.</string>
<string name="main_add_button_description">Engadir subscrición</string>
<string name="main_no_subscriptions_text">Semella que aínda non tes ningunha subscrición.</string>
<string name="main_banner_battery_text">A optimización da batería debe estar desactivada para a app para evitar problemas coas notificacións.</string>
<string name="main_banner_battery_button_remind_later">Preguntar máis tarde</string>
<string name="main_banner_battery_button_dismiss">Desbotar</string>
<string name="main_banner_battery_button_fix_now">Arranxar agora</string>
<string name="main_banner_websocket_text">O cambio a WebSockets é o xeito recomendado para conectar co servidor, pode mellorar a vida da batería, pero pode requerir <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">configuración adicional no teu proxy</a>. Pódese cambiar nos Axustes.</string>
<string name="main_banner_websocket_button_remind_later">Preguntar máis tarde</string>
<string name="main_banner_websocket_button_dismiss">Desbotar</string>
<string name="main_banner_websocket_button_enable_now">Activar agora</string>
<string name="add_dialog_title">Subscribir ao tema</string>
<string name="add_dialog_description_below">Os temas poden non estar protexidos con contrasinal, escolle un nome dificil de adiviñar. Unha vez subscrito, podes PUT/POST notificacións.</string>
<string name="add_dialog_topic_name_hint">Nome do tema, ex. alertas_xoan</string>
<string name="add_dialog_use_another_server">Usar outro servidor</string>
<string name="add_dialog_use_another_server_description">Escribe o URL do servizo para subscribirte a temas doutros servidores.</string>
<string name="add_dialog_instant_delivery">Entrega inmediata en modo silencioso</string>
<string name="add_dialog_instant_delivery_description">Asegura que as mensaxes se entregan de xeito inmediato, incluso se o dispositivo non está activo.</string>
<string name="add_dialog_foreground_description">A entrega inmediata sempre está activa para hóspedes diferentes a %1$s.</string>
<string name="add_dialog_button_cancel">Cancelar</string>
<string name="add_dialog_button_subscribe">Subscribir</string>
<string name="add_dialog_button_back">Atrás</string>
<string name="add_dialog_button_login">Acceder</string>
<string name="add_dialog_error_connection_failed">Fallou a conexión: %1$s</string>
<string name="add_dialog_login_title">Require iniciar sesión</string>
<string name="add_dialog_login_description">Este tema require que inicies sesión. Escribe as túas credenciais.</string>
<string name="add_dialog_login_username_hint">Identificador</string>
<string name="add_dialog_login_password_hint">Contrasinal</string>
<string name="add_dialog_login_error_not_authorized">Fallou o acceso. A usuaria %1$s non está autorizada.</string>
<string name="add_dialog_login_new_user">Nova usuaria</string>
<string name="add_dialog_base_urls_dropdown_choose">Escribe URL do servizo</string>
<string name="add_dialog_base_urls_dropdown_clear">Limpar URL do servizo</string>
<string name="detail_no_notifications_text">Aínda non recibiches notificacións deste tema.</string>
<string name="detail_how_to_example">Exemplo (usando curl): <br/><tt>$ curl -d \"Ola\" %1$s</tt></string>
<string name="detail_how_to_link">Tes instruccións polo miúdo en ntfy.sh, e na documentación.</string>
<string name="detail_clear_dialog_message">Eliminar todas as notificacións neste tema\?</string>
<string name="detail_clear_dialog_permanently_delete">Eliminar permanentemente</string>
<string name="detail_clear_dialog_cancel">Cancelar</string>
<string name="detail_delete_dialog_message">Retirar subscrición ao tema e eliminar todas as notificacións recibidas\?</string>
<string name="detail_delete_dialog_permanently_delete">Eliminar permanentemente</string>
<string name="detail_delete_dialog_cancel">Cancelar</string>
<string name="detail_test_title">Proba: podes poñerlle un título se queres.</string>
<string name="detail_test_message">Esta é unha notificación de proba desde a app ntfy Android. Ten nivel %1$d de prioridade. Se envías outra, podería ser diferente.</string>
<string name="detail_test_message_error">Non se enviou a mensaxe: %1$s</string>
<string name="detail_test_message_error_unauthorized_anon">Non se enviou a mensaxe: Non está permitida a publicación anónima.</string>
<string name="detail_test_message_error_unauthorized_user">Non se enviou a mensaxe: A usuaria \"%1$s\" non ten autorización.</string>
<string name="detail_test_message_error_too_large">Non se enviou a mensaxe: O adxunto é demasiado grande.</string>
<string name="detail_copied_to_clipboard_message">Copiado ao portapapeis</string>
<string name="detail_instant_delivery_enabled">Entrega inmediata activada</string>
<string name="detail_instant_delivery_disabled">Entrega inmediata desactivada</string>
<string name="detail_deep_link_subscribed_toast_message">Subscrita ao tema %1$s</string>
<string name="detail_item_tags">Etiquetas: %1$s</string>
<string name="detail_item_snack_deleted">Notificación eliminada</string>
<string name="detail_item_snack_undo">Desfacer</string>
<string name="detail_item_menu_open">Abrir ficheiro</string>
<string name="detail_item_menu_delete">Eliminar ficheiro</string>
<string name="detail_item_menu_download">Descargar ficheiro</string>
<string name="detail_item_menu_cancel">Cancelar descarga</string>
<string name="detail_item_menu_save_file">Gardar ficheiro</string>
<string name="detail_item_menu_copy_url">Copiar URL</string>
<string name="detail_item_menu_copy_url_copied">URL copiado ao portapapeis</string>
<string name="detail_item_menu_copy_contents">Copiar notificación</string>
<string name="detail_item_menu_copy_contents_copied">Notificación copiada ao portapapeis</string>
<string name="detail_item_saved_successfully">Gardado como \"%1$s\" no cartafol \"Descargas\"</string>
<string name="detail_how_to_intro">Enviar notificacións a este tema, simplemente envía con PUT ou POST ao URL do tema.</string>
<string name="detail_item_cannot_download">Non se pode abrir ou descargar o adxunto. A ligazón caducou e non se atopa un ficheiro local.</string>
<string name="detail_item_cannot_open">Non se pode abrir: %1$s</string>
<string name="detail_item_cannot_open_not_found">Non se pode abrir o adxunto: pode que fose eliminado, ou ningunha app instalada pode abrir o ficheiro.</string>
<string name="detail_item_cannot_open_url">Non se pode abrir URL: %1$s</string>
<string name="detail_item_cannot_open_apk">Xa non poden instalarse as apps. Descarga desde un navegador. Ver detalles no issue #531.</string>
<string name="detail_item_cannot_save">Non se pode gardar o adxunto: %1$s</string>
<string name="detail_item_cannot_delete">Non se pode borrar o adxunto: %1$s</string>
<string name="detail_item_download_failed">Non se puido descargar o adxunto: %1$s</string>
<string name="detail_item_download_info_not_downloaded">non descargado</string>
<string name="detail_item_download_info_downloading_x_percent">%1$d%% descargado</string>
<string name="detail_item_download_info_deleted_expires_x">eliminado, a ligazón caduca o %1$s</string>
<string name="detail_item_download_info_download_failed">fallou a descarga</string>
<string name="detail_item_download_info_download_failed_expired">fallou a descarga, caducou a ligazón</string>
<string name="detail_item_download_info_download_failed_expires_x">fallou a descarga, a ligazón caduca %1$s</string>
<string name="detail_menu_notifications_enabled">Notificación activas</string>
<string name="detail_menu_notifications_disabled_forever">Notificacións acaladas</string>
<string name="detail_menu_enable_instant">Activar entrega inmediata</string>
<string name="detail_item_download_info_not_downloaded_expires_x">non descargado, caduca %1$s</string>
<string name="detail_item_download_info_not_downloaded_expired">non descargado, caducou a ligazón</string>
<string name="detail_item_download_info_deleted">eliminado</string>
<string name="detail_item_download_info_deleted_expired">eliminado, caducou a ligazón</string>
<string name="detail_menu_notifications_disabled_until">Notificacións acaladas ate %1$s</string>
<string name="detail_menu_disable_instant">Desactivar o envío instantáneo</string>
<string name="detail_menu_test">Enviar notificación de proba</string>
<string name="detail_action_mode_delete_dialog_message">Eliminar a notificación(s) permanentemente\?</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">Eliminar permanentemente</string>
<string name="detail_action_mode_delete_dialog_cancel">Cancelar</string>
<string name="detail_settings_title">Axustes da subscrición</string>
<string name="share_title">Compartir</string>
<string name="share_content_title">Vista previa da mensaxe</string>
<string name="share_content_image_error">Non se pode ler a imaxe: %1$s</string>
<string name="share_content_file_text">Compartiron un ficheiro contigo</string>
<string name="share_content_text_hint">Engadir aquí o contido para compartir</string>
<string name="share_content_image_text">Compartiron unha imaxe contigo</string>
<string name="share_content_file_error">Non se pode ler a info do ficheiro: %1$s</string>
<string name="share_topic_title">Compartir con</string>
<string name="share_suggested_topics">Temas suxeridos</string>
<string name="share_successful">Mensaxe publicada</string>
<string name="notification_dialog_cancel">Cancelar</string>
<string name="notification_dialog_save">Gardar</string>
<string name="notification_dialog_enabled_toast_message">Reactivadas as notificacións</string>
<string name="notification_popup_file_download_successful">%1$s
\nFicheiro: %2$s, descargado</string>
<string name="notification_popup_file_download_failed">%1$s
\nFicheiro: %2$s, fallou a descarga</string>
<string name="notification_popup_user_action_failed">Fallo en %1$s: %2$s</string>
<string name="settings_title">Axutes</string>
<string name="settings_notifications_header">Notificacións</string>
<string name="notification_dialog_title">Acalar notificacións</string>
<string name="settings_notifications_muted_until_title">Acalar notificacións</string>
<string name="settings_notifications_muted_until_show_all">Mostrando todas as notificacións</string>
<string name="settings_notifications_min_priority_min">Calquera prioridade</string>
<string name="settings_notifications_min_priority_low">Prioridade baixa ou superior</string>
<string name="settings_notifications_min_priority_default">Prioridade por defecto e superior</string>
<string name="detail_menu_copy_url">Copiar enderezo do tema</string>
<string name="detail_menu_clear">Limpar todas as notificacións</string>
<string name="detail_menu_settings">Axustes da subscrición</string>
<string name="detail_menu_unsubscribe">Retirar subscrición</string>
<string name="detail_action_mode_menu_copy">Copiar</string>
<string name="detail_action_mode_menu_delete">Eliminar</string>
<string name="share_menu_send">Compartir</string>
<string name="notification_dialog_muted_forever_toast_message">Notificacións acaladas</string>
<string name="notification_dialog_muted_until_toast_message">Acalar notificacións %1$s</string>
<string name="notification_dialog_show_all">Mostrar todas as notificacións</string>
<string name="notification_dialog_30min">30 minutos</string>
<string name="notification_dialog_1h">1 hora</string>
<string name="notification_dialog_2h">2 horas</string>
<string name="notification_dialog_forever">Ata reactivalas</string>
<string name="notification_dialog_8h">8 horas</string>
<string name="notification_dialog_tomorrow">Ata mañán</string>
<string name="notification_popup_action_open">Abrir</string>
<string name="notification_popup_action_browse">Buscar</string>
<string name="notification_popup_action_download">Descargar</string>
<string name="notification_popup_action_cancel">Cancelar</string>
<string name="notification_popup_file">%1$s
\nFicheiro: %2$s</string>
<string name="notification_popup_file_downloading">Descargando %1$s, %2$d%%
\n%3$s</string>
<string name="settings_notifications_muted_until_forever">Notificacións acaladas ata retomalas</string>
<string name="settings_notifications_muted_until_x">Notificacións acaladas ate %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 notificacións</string>
<string name="settings_notifications_min_priority_summary_x_or_higher">Mostrar notificacións se a prioridade é %1$d (%2$s) ou superior</string>
<string name="settings_notifications_min_priority_summary_max">Mostrar notificacións se a prioridade é 5 (máx.)</string>
<string name="settings_notifications_min_priority_high">Alta prioridade ou superior</string>
<string name="settings_notifications_min_priority_max">Só máxima prioridade</string>
<string name="settings_notifications_priority_min">mínima</string>
<string name="settings_notifications_priority_low">baixa</string>
<string name="settings_notifications_channel_prefs_title">Axustes da canle</string>
<string name="settings_notifications_priority_default">por defecto</string>
<string name="settings_notifications_priority_high">alta</string>
<string name="settings_notifications_priority_max">máxima</string>
<string name="settings_notifications_channel_prefs_summary">Obviar Non Molestar (DND), sons, etc.</string>
<string name="settings_notifications_auto_download_title">Descargar adxuntos</string>
<string name="settings_notifications_auto_download_summary_always">Descarga automática dos adxuntos</string>
<string name="settings_notifications_auto_download_summary_never">Non descargar automaticamente os adxuntos</string>
<string name="settings_notifications_auto_download_summary_smaller_than_x">Descarga automática dos adxuntos ata %1$s</string>
<string name="settings_notifications_auto_download_never">Non descargar nunca automaticamente</string>
<string name="settings_notifications_auto_delete_summary_one_week">Eliminar automaticamene as notificacións após unha semana</string>
<string name="settings_notifications_auto_delete_summary_one_month">Eliminar automaticamente as notificacións após un mes</string>
<string name="settings_notifications_auto_delete_summary_three_months">Eliminar automaticamente as notificacións após 3 meses</string>
<string name="settings_notifications_auto_delete_never">Nunca</string>
<string name="settings_notifications_auto_delete_one_day">Após un día</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Manter as alertas da prioridade máis alta ata que se desboten</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Notificar as alertas da máxima prioridade só unha vez</string>
<string name="settings_general_header">Xeral</string>
<string name="settings_general_default_base_url_title">Servidor por defecto</string>
<string name="settings_general_default_base_url_default_summary">%1$s (por defecto)</string>
<string name="settings_general_users_title">Xestionar usuarias</string>
<string name="settings_general_users_summary">Engade/elimina usuarias dos temas protexidos</string>
<string name="settings_general_users_prefs_title">Usuarias</string>
<string name="settings_general_users_prefs_user_not_used">Non utilizado por ningún tema</string>
<string name="settings_general_users_prefs_user_used_by_one">Usado polo tema %1$s</string>
<string name="settings_general_users_prefs_user_add">Engadir usuarias</string>
<string name="settings_general_users_prefs_user_add_title">Engadir nova usuaria</string>
<string name="settings_general_users_prefs_user_add_summary">Crear unha nova usuaria para un novo servidor</string>
<string name="settings_general_dark_mode_title">Modo escuro</string>
<string name="settings_general_dark_mode_summary_system">Seguir o establecido no sistema</string>
<string name="settings_general_dark_mode_summary_light">Modo claro activado</string>
<string name="settings_general_dark_mode_summary_dark">Modo escuro activado. Es un morcego\?</string>
<string name="settings_general_dark_mode_entry_system">Seguir ao 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">Copia e Restablecemento</string>
<string name="settings_backup_restore_backup_title">Copia de apoio nun ficheiro</string>
<string name="settings_backup_restore_backup_summary">Exportar configuración, notificacións e usuarias</string>
<string name="settings_backup_restore_backup_entry_everything">Todo</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">Todo, menos as usuarias</string>
<string name="settings_backup_restore_backup_entry_settings_only">Só os axustes</string>
<string name="settings_backup_restore_backup_successful">Copia creada</string>
<string name="settings_backup_restore_backup_failed">Fallou a copia: %1$s</string>
<string name="settings_notifications_auto_download_always">Descargar todo automaticamente</string>
<string name="settings_notifications_auto_download_100k">Se inferior a 100 kB</string>
<string name="settings_notifications_auto_download_500k">Se inferior a 500 kB</string>
<string name="settings_notifications_auto_download_1m">Se inferior a 1 MB</string>
<string name="settings_notifications_auto_download_5m">Se inferior a 5 MB</string>
<string name="settings_notifications_auto_download_10m">Se inferior a 10 MB</string>
<string name="settings_notifications_auto_download_50m">Se inferior a 50 MB</string>
<string name="settings_notifications_auto_delete_title">Eliminar notificacións</string>
<string name="settings_notifications_auto_delete_summary_never">Non eliminar nunca automaticamente as notificacións</string>
<string name="settings_notifications_auto_delete_summary_one_day">Eliminar automaticamente as notificacións após un día</string>
<string name="settings_notifications_auto_delete_summary_three_days">Eliminar automaticamente as notificacións após 3 días</string>
<string name="settings_notifications_auto_delete_three_days">Após 3 días</string>
<string name="settings_notifications_auto_delete_one_week">Após unha semana</string>
<string name="settings_notifications_auto_delete_one_month">Após un mes</string>
<string name="settings_notifications_auto_delete_three_months">Após 3 meses</string>
<string name="settings_notifications_insistent_max_priority_title">Manter as alertas da prioridade máis alta</string>
<string name="settings_general_default_base_url_message">Escribe o enderezo URL raíz do teu servidor para usar o servidor propio por defecto cando te subscribas a novos temas e/ou compartas os temas.</string>
<string name="settings_general_users_prefs_user_used_by_many">Usado polos temas %1$s</string>
<string name="settings_advanced_broadcast_summary_enabled">As app poden recibir notificacións entrantes como difusións</string>
<string name="settings_advanced_broadcast_summary_disabled">As app non poden recibir notificacións entrantes como difusións</string>
<string name="settings_backup_restore_restore_failed">Fallou o restablecemento: %1$s</string>
<string name="settings_advanced_header">Avanzado</string>
<string name="settings_advanced_broadcast_title">Mensaxes de difusión</string>
<string name="settings_advanced_export_logs_scrub_dialog_text">Estes temas e nomes de servidor serán substituídos por nomes de froita, así podes compartilos sen problema:
\n
\n%1$s
\n
\nOs contrasinais son anulados, pero non aparecen aquí.</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">OK</string>
<string name="settings_advanced_connection_protocol_summary_ws">Usar WebSockets para conectar co servidor. Este é o método recomendado, pero podería precisar configuración adicional no teu proxy.</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">Fluxo JSON sobre HTTP</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Usar un fluxo JSON sobre HTTP para conectar co servidor. Este método é robusto, pero podería consumir máis batería.</string>
<string name="settings_about_version_copied_to_clipboard_message">Copiado ao portapapeis</string>
<string name="detail_settings_notifications_instant_title">Entrega inmediata</string>
<string name="settings_about_header">Acerca de</string>
<string name="settings_about_version_title">Versión</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
<string name="detail_settings_notifications_instant_summary_off">Notificacións entregadas usando Firebase. A entrega podería sufrir demora, pero consume menos batería.</string>
<string name="detail_settings_notifications_dedicated_channels_title">Axustes personais de notificación</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Usar axustes personais para esta subscrición</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Usar axustes por defecto (sons, obviar Non Molestar, etc.)</string>
<string name="detail_settings_notifications_open_channels_summary">Obviar Non Molestar (DND), sons, etc.</string>
<string name="detail_settings_notifications_open_channels_title">Configurar axustes da notificación</string>
<string name="detail_settings_appearance_icon_error_saving">Non se gardou a icona: %1$s</string>
<string name="detail_settings_appearance_display_name_title">Nome mostrado</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Copiado ao portapapeis</string>
<string name="settings_backup_restore_restore_title">Restablecer desde ficheiro</string>
<string name="settings_backup_restore_restore_summary">Importar configuración, notificacións e usuarias</string>
<string name="settings_backup_restore_restore_successful">Restablecemento correcto</string>
<string name="settings_advanced_unifiedpush_summary_enabled">nfty actuará como distribuidora UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_disabled">nfty non actuará como distribuidora UnifiedPush</string>
<string name="settings_advanced_record_logs_title">Gravar rexistros</string>
<string name="settings_advanced_record_logs_summary_enabled">Gravando (ata 1000 entradas) no dispositivo…</string>
<string name="settings_advanced_record_logs_summary_disabled">Activar rexistro, así poderás compartir os rexistros para diagnosticar problemas.</string>
<string name="settings_advanced_clear_logs_title">Limpar rexistros</string>
<string name="settings_advanced_export_logs_title">Copiar/subir rexistros</string>
<string name="settings_advanced_export_logs_summary">Copia os rexistros ao portapapeis, ou súbeos a nopaste.net (propiedade de ntfy). Os nomes de servidor e temas poden agocharse, as notificacións non.</string>
<string name="settings_advanced_export_logs_entry_copy_original">Copiar ao portapapeis</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">Copiar ao portapapeis (censurado)</string>
<string name="settings_advanced_export_logs_entry_upload_original">Subir e copiar ligazón</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">Subir e copiar ligazón (censurado)</string>
<string name="settings_advanced_export_logs_copied_logs">Rexistros copiados ao portapapeis</string>
<string name="settings_advanced_export_logs_uploading">Subindo o rexistro …</string>
<string name="settings_advanced_export_logs_copied_url">Rexistros subidos e URL copiado</string>
<string name="settings_advanced_export_logs_error_uploading">Non se puido subir o rexistro: %1$s</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">Non se editaron temas/servidores. Non tes ningunha subscrición\?</string>
<string name="settings_advanced_clear_logs_summary">Eliminar os rexistros anteriores e volver a comezar</string>
<string name="settings_advanced_clear_logs_deleted_toast">Rexistros eliminados</string>
<string name="settings_advanced_connection_protocol_title">Protocolo de conexión</string>
<string name="detail_settings_notifications_instant_summary_on">As notificacións entregaranse inmediatamente. Require un servizo en segundo plano e consume máis batería.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Seguir avisando</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Avisar só unha vez</string>
<string name="detail_settings_appearance_header">Aspecto</string>
<string name="detail_settings_appearance_icon_set_title">Icona da subscrición</string>
<string name="detail_settings_appearance_icon_set_summary">Establecer a icona a mostrar na notificación</string>
<string name="detail_settings_appearance_icon_remove_title">Icona da subscrición (toca para eliminar)</string>
<string name="detail_settings_appearance_icon_remove_summary">Icona mostrada na notificación deste tema</string>
<string name="user_dialog_button_add">Engadir usuaria</string>
<string name="detail_settings_appearance_display_name_message">Establece o nome para mostrar para esta subscrición. Deixa en branco para valor por defecto (%1$s).</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (por defecto)</string>
<string name="detail_settings_global_setting_title">Usar axuste global</string>
<string name="detail_settings_global_setting_suffix">usando o axuste global</string>
<string name="detail_settings_about_header">Acerca de</string>
<string name="detail_settings_about_topic_url_title">URL do tema</string>
<string name="user_dialog_title_add">Engadir usuaria</string>
<string name="user_dialog_button_cancel">Cancelar</string>
<string name="user_dialog_button_delete">Eliminar usuaria</string>
<string name="user_dialog_button_save">Gardar</string>
<string name="settings_advanced_unifiedpush_title">Activar UnifiedPush</string>
<string name="user_dialog_title_edit">Editar usuaria</string>
<string name="user_dialog_description_add">Podes engadir aquí unha usuaria. Todos os temas do servidor indicado usarán esta usuaria.</string>
<string name="user_dialog_description_edit">Podes editar as credenciais da usuaria seleccionada, ou eliminala.</string>
<string name="user_dialog_base_url_hint">URL do servizo</string>
<string name="user_dialog_username_hint">Identificador</string>
<string name="user_dialog_password_hint_add">Contrasinal</string>
<string name="user_dialog_password_hint_edit">Contrasinal (baleiro para non cambiar)</string>
</resources>

View file

@ -1,2 +1,92 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources></resources> <resources>
<string name="channel_notifications_default_name">महत्वपूर्ण</string>
<string name="channel_notifications_high_name">ज्यादा महत्वपूर्ण</string>
<string name="channel_notifications_max_name">बहुत ज्यादा महत्वपूर्ण</string>
<string name="channel_notifications_group_default_name">साधारण</string>
<string name="channel_notifications_min_name">बहुत कम महत्त्व</string>
<string name="channel_notifications_low_name">कम महत्व</string>
<string name="channel_subscriber_service_name">सदस्यता सेवा</string>
<string name="channel_subscriber_notification_title">आने वाली सूचनाओं को सुनना</string>
<string name="channel_subscriber_notification_instant_text_two">दो त्वरित वितरण विषय का जानना</string>
<string name="channel_subscriber_notification_instant_text_three">तीन त्वरित वितरण विषय का जानना</string>
<string name="channel_subscriber_notification_instant_text_four">चार त्वरित वितरण विषय का जानना</string>
<string name="channel_subscriber_notification_instant_text">त्वरित वितरण विषय का जानना</string>
<string name="channel_subscriber_notification_instant_text_one">एक त्वरित वितरण विषय का जानना</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_instant_text_six">छह त्वरित वितरण विषयों का जानना</string>
<string name="channel_subscriber_notification_instant_text_five">पाँच त्वरित वितरण विषयों का जानना</string>
<string name="add_dialog_login_password_hint">पासवर्ड</string>
<string name="add_dialog_login_error_not_authorized">लॉगिन विफल। उपयोगकर्ता %1$s अधिकृत नहीं है।</string>
<string name="add_dialog_foreground_description">%1$s के अलावा अन्य मेज़बानों के लिए तत्काल डिलीवरी हमेशा चालू रहती है।</string>
<string name="add_dialog_login_new_user">नया उपयोगकर्ता</string>
<string name="add_dialog_login_title">लॉगिन आवश्यक</string>
<string name="main_menu_rate_title">एप को रेट करें</string>
<string name="main_item_status_text_not_one">%1$d सूचनाएं</string>
<string name="refresh_message_result">%1$d सूचना(एं ) प्राप्त</string>
<string name="detail_no_notifications_text">इस विषय पर आपको अभी तक कोई सूचना नहीं मिली है।</string>
<string name="channel_subscriber_notification_noinstant_text_two">दो विषयों की सदस्यता</string>
<string name="main_no_subscriptions_text">ऐसा लगता है कि आपके पास अभी तक कोई सदस्यता नहीं है।</string>
<string name="channel_subscriber_notification_noinstant_text_more">%1$d विषयों की सदस्यता</string>
<string name="main_banner_battery_button_fix_now">अब ठीक करें</string>
<string name="main_menu_notifications_enabled">सूचनाएं चालू</string>
<string name="main_menu_notifications_disabled_forever">सूचनाएं मौन</string>
<string name="main_banner_websocket_button_remind_later">बाद में पूछें</string>
<string name="main_add_button_description">सदस्यता जोड़ें</string>
<string name="main_action_mode_delete_dialog_permanently_delete">स्थायी रूप से मिटाएं</string>
<string name="add_dialog_description_below">सम्भवतः विषय पासवर्ड से सुरक्षित नहीं हो सकते हैं, इसलिए ऐसा नाम चुनें जिसका अनुमान लगाना कठिन हो। एक बार सदस्यता लेने के बाद, आप सूचनाएं PUT/POST कर सकते हैं।</string>
<string name="main_item_status_reconnecting">फिर से जुड़ रहा है…</string>
<string name="add_dialog_instant_delivery_description">यह सुनिश्चित करता है कि डिवाइस निष्क्रिय होने पर भी संदेश तुरंत वितरित हो।</string>
<string name="main_menu_notifications_disabled_until">सूचनाएं मौन जब तक %1$s</string>
<string name="main_banner_websocket_button_enable_now">अब चालू करें</string>
<string name="main_item_date_yesterday">बीता हुआ कल</string>
<string name="main_banner_battery_button_remind_later">बाद में पूछें</string>
<string name="main_how_to_link">विस्तृत निर्देश ntfy.sh और दस्तावेज़ों में उपलब्ध हैं।</string>
<string name="channel_subscriber_notification_noinstant_text_four">चार विषयों की सदस्यता</string>
<string name="add_dialog_use_another_server_description">दूसरे सर्वर्स के विषयों की सदस्यता लेने के लिए सर्विस URLs दर्ज करें।</string>
<string name="main_unified_push_toast">यह सदस्यता UnifiedPush के माध्यम से %1$s द्वारा प्रबंधित की जाती है</string>
<string name="main_menu_report_bug_title">खराबी रिपोर्ट करें</string>
<string name="add_dialog_button_cancel">रद्द</string>
<string name="add_dialog_topic_name_hint">विषय का नाम, उदा. phils_alerts</string>
<string name="add_dialog_error_connection_failed">कनेक्शन विफल हुआ: %1$s</string>
<string name="main_action_mode_delete_dialog_cancel">रद्द करना</string>
<string name="add_dialog_button_subscribe">सदस्यता लें</string>
<string name="add_dialog_button_login">लॉग इन करें</string>
<string name="refresh_message_error_one">सदस्यताएं रिफ्रेश नहीं हो सकी: %1$s</string>
<string name="add_dialog_login_username_hint">यूजरनेम</string>
<string name="add_dialog_use_another_server">दूसरे सर्वर का प्रयोग करें</string>
<string name="add_dialog_base_urls_dropdown_choose">सर्विस URL का चयन करें</string>
<string name="add_dialog_instant_delivery">Doze मोड में तुरंत डिलीवरी</string>
<string name="main_banner_battery_text">अधिसूचना वितरण समस्याओं से बचने के लिए ऐप के लिए बैटरी ऑप्टिमाइजेशन बंद होना चाहिए।</string>
<string name="main_action_mode_delete_dialog_message">चयनित विषय(विषयों) से सदस्यता समाप्त करें और सभी सूचनाएं स्थायी रूप से हटा दें\?</string>
<string name="refresh_message_error">%1$d सदस्यताएं रिफ्रेश नहीं हो सकी
\n
\n%2$s</string>
<string name="channel_subscriber_notification_noinstant_text_six">छह विषयों की सदस्यता</string>
<string name="main_banner_battery_button_dismiss">रद्द करें</string>
<string name="main_menu_settings_title">सेटिंग्स</string>
<string name="main_how_to_intro">किसी विषय को बनाने या उसकी सदस्यता लेने के लिए + पर क्लिक करें। बाद में PUT या POST के माध्यम से संदेश भेजते समय आपको अपने डिवाइस पर सूचनाएं प्राप्त होती हैं।</string>
<string name="main_action_bar_title">सदस्यता लिए गए विषय</string>
<string name="channel_subscriber_notification_noinstant_text_three">तीन विषयों की सदस्यता</string>
<string name="channel_subscriber_notification_noinstant_text_five">पांच विषयों की सदस्यता</string>
<string name="main_action_mode_menu_unsubscribe">सदस्यता रद्द</string>
<string name="add_dialog_login_description">इस विषय के लिए आपको लॉगिन करना होगा। कृपया यूजरनेम और पासवर्ड टाइप करें।</string>
<string name="main_menu_docs_title">दस्तावेज़ पढ़ें</string>
<string name="refresh_message_no_results">सब कुछ नवीनतम जानकारी से युक्त</string>
<string name="main_banner_websocket_button_dismiss">रद्द करें</string>
<string name="add_dialog_base_urls_dropdown_clear">सर्विस URL हटाएं</string>
<string name="add_dialog_title">विषय की सदस्यता लें</string>
<string name="add_dialog_button_back">पीछे जाएं</string>
<string name="channel_subscriber_notification_noinstant_text_one">एक विषय की सदस्यता</string>
<string name="main_menu_donate_title">दान करें</string>
<string name="main_item_status_text_one">%1$d सूचना</string>
<string name="detail_clear_dialog_cancel">रद्द करें</string>
<string name="detail_delete_dialog_cancel">रद्द करें</string>
<string name="detail_how_to_link">विस्तृत निर्देश ntfy.sh पर और डॉक्स में उपलब्ध हैं।</string>
<string name="detail_clear_dialog_permanently_delete">स्थायी रूप से हटाएं</string>
<string name="detail_how_to_intro">इस विषय पर सूचनाएं भेजने के लिए, बस विषय URL पर PUT या POST करें।</string>
<string name="detail_how_to_example">उदाहरण (curl का उपयोग करके):<br/><tt>$curl -d \"नमस्कार\"%1$s</tt></string>
<string name="detail_clear_dialog_message">इस विषय की सभी सूचनाएँ हटाएँ?</string>
<string name="main_banner_websocket_text">WebSockets पर स्विच करना आपके सर्वर से कनेक्ट करने का अनुशंसित तरीका है, और बैटरी जीवन में सुधार कर सकता है, लेकिन आपके <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">proxy में अतिरिक्त कॉन्फ़िगरेशन</a> की आवश्यकता हो सकती है। इसे सेटिंग्स में टॉगल किया जा सकता है।</string>
</resources>

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,136 @@
<?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">Minimum prioritás</string>
<string name="channel_notifications_low_name">Alacsony prioritás</string>
<string name="channel_notifications_default_name">Alapértelmezett prioritás</string>
<string name="channel_notifications_max_name">Maximum prioritás</string>
<string name="channel_notifications_high_name">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>
<string name="channel_notifications_group_default_name">Alapértelmezett</string>
<string name="main_menu_donate_title">Adomány 💸</string>
<string name="main_banner_websocket_button_dismiss">Bezár</string>
<string name="add_dialog_instant_delivery_description">Garantálja az azonnali üzenetküldést, akkor is, ha az eszköz inaktív.</string>
<string name="add_dialog_foreground_description">Az azonnali üzenetküldés mindig bekapcsolva a %1$s címen kívül.</string>
<string name="add_dialog_button_login">Bejelentkezés</string>
<string name="add_dialog_error_connection_failed">Kapcsolódási hiba: %1$s</string>
<string name="add_dialog_login_title">Bejelentkezés szükséges</string>
<string name="add_dialog_login_description">Ehhez a témához be kell jelentkezni. Kérem add meg a felhasználó nevedet és jelszavadat!</string>
<string name="add_dialog_login_username_hint">Felhasználó</string>
<string name="add_dialog_login_new_user">Új felhasználó</string>
<string name="detail_how_to_link">Részletes leírás elérhető a ntfy.sh oldalon és a dokumentációban.</string>
<string name="detail_clear_dialog_permanently_delete">Végleges törlés</string>
<string name="detail_clear_dialog_cancel">Mégse</string>
<string name="detail_delete_dialog_message">Leiratkozás a témáról és az összes értesítés törlése\?</string>
<string name="detail_delete_dialog_cancel">Mégse</string>
<string name="detail_test_title">Teszt: Beállíthatsz témát, ha szeretnél.</string>
<string name="detail_item_snack_deleted">Értesítés törölve</string>
<string name="detail_item_menu_download">Fájl letöltése</string>
<string name="detail_test_message_error_unauthorized_user">Nem sikerült az üzenetet elküldeni: A \"%1$s\" felhasználó jogosultságai nem megfelelőek.</string>
<string name="detail_item_menu_copy_url_copied">URL a vágólapra másolva</string>
<string name="detail_item_menu_copy_contents">Értesítés másolása</string>
<string name="add_dialog_title">Feliratokozás a témára</string>
<string name="main_banner_websocket_button_enable_now">Engedélyezés most</string>
<string name="add_dialog_instant_delivery">Azonnali küldés dózis módban</string>
<string name="add_dialog_login_password_hint">Jelszó</string>
<string name="add_dialog_login_error_not_authorized">Bejelentkezési hiba. A %1$s felhasználó nem azonosítható.</string>
<string name="detail_clear_dialog_message">Töröljük az összes értesítést ebben a témában\?</string>
<string name="detail_test_message_error_too_large">Nem sikerült az üzenetet elküldeni: A csatolmány túl nagy.</string>
<string name="detail_deep_link_subscribed_toast_message">Feliratkozva a %1$s témára</string>
<string name="detail_item_menu_copy_contents_copied">Értesítés a vágólapra másolva</string>
<string name="main_banner_battery_button_remind_later">Később</string>
<string name="main_how_to_link">Részletes leírás elérhető a ntfy.sh oldalon és a dokumentációban.</string>
<string name="main_banner_battery_text">Az akkumulátor optimalizáció kikapcsolása javasolt az értesítési problémák elkerülésére.</string>
<string name="main_banner_websocket_button_remind_later">Később</string>
<string name="main_banner_battery_button_dismiss">Bezár</string>
<string name="main_banner_battery_button_fix_now">Javítás most</string>
<string name="add_dialog_description_below">A témák nem feltétlenül jelszóval védettek, ezért válassz olyan nevet, amelyet nehéz kitalálni! Ha feliratkoztál, akkor küldhetsz PUT/POST értesítéseket.</string>
<string name="add_dialog_topic_name_hint">Téma neve, pl. tibi_jelzesei</string>
<string name="add_dialog_use_another_server">Használj másik szervert</string>
<string name="add_dialog_use_another_server_description">Add meg a szolgáltatók címét alább, hogy más szerveren futó témákra is feliratkozhass.</string>
<string name="add_dialog_button_subscribe">Feliratkozás</string>
<string name="add_dialog_button_back">Vissza</string>
<string name="detail_no_notifications_text">Még nem érkezett értesítés ebben a témában.</string>
<string name="detail_delete_dialog_permanently_delete">Végleges törlés</string>
<string name="detail_test_message_error_unauthorized_anon">Nem sikerült az üzenetet elküldni: A névtelen publikálás nem engedélyezett.</string>
<string name="detail_copied_to_clipboard_message">Vágólapra másolva</string>
<string name="detail_instant_delivery_enabled">Azonnali küldés bekapcsolva</string>
<string name="detail_instant_delivery_disabled">Azonnali küldés kikapcsolva</string>
<string name="detail_item_menu_open">Fájl megnyitása</string>
<string name="detail_item_menu_delete">Fájl törlése</string>
<string name="detail_item_menu_copy_url">URL másolása</string>
<string name="detail_item_menu_cancel">Letöltés leállítása</string>
<string name="detail_item_menu_save_file">Fájl mentése</string>
<string name="detail_item_cannot_download">Nem sikerült a melléklet megnyitása vagy letöltése. A link lejárt és a helyi fájl nem található.</string>
<string name="detail_item_cannot_open">A melléklet nem nyitható meg: %1$s</string>
<string name="detail_item_cannot_open_not_found">A melléklet nem nyitható meg: A fájl törölve lett, vagy nincs megfelelő alkalmazás telepítve a megnyitáshoz.</string>
<string name="detail_item_saved_successfully">Mentve \"%1$s\" néven a \"Downloads\" mappába</string>
<string name="detail_item_cannot_open_url">Az URL nem nyitható meg: %1$s</string>
<string name="add_dialog_button_cancel">Mégse</string>
<string name="detail_test_message">Ez egy teszt értesítés az Android ntfy alkalmazásból. A beállított prioritás %1$d. Ha küldesz egy újat nem feltétlenül így fog kinézni.</string>
<string name="detail_test_message_error">Nem sikerült az üzenetet elküldeni: %1$s</string>
<string name="detail_item_snack_undo">Visszavon</string>
<string name="detail_item_download_info_deleted">törölve</string>
<string name="detail_menu_unsubscribe">Leiratkozás</string>
<string name="detail_action_mode_menu_copy">Másolás</string>
<string name="detail_action_mode_menu_delete">Törlés</string>
<string name="share_menu_send">Megosztás</string>
<string name="notification_dialog_30min">30 perc</string>
<string name="notification_dialog_1h">1 óra</string>
<string name="notification_popup_action_cancel">Mégse</string>
<string name="detail_action_mode_delete_dialog_cancel">Mégse</string>
<string name="notification_dialog_save">Mentés</string>
<string name="notification_dialog_show_all">Összes értesítés mutatása</string>
<string name="notification_dialog_muted_forever_toast_message">Értesítések lenémítva</string>
<string name="notification_dialog_2h">2 óra</string>
<string name="notification_dialog_8h">8 óra</string>
<string name="settings_title">Beállítások</string>
<string name="detail_item_download_info_downloading_x_percent">%1$d%% letöltve</string>
<string name="share_title">Megosztás</string>
<string name="notification_dialog_title">Értesítések némítása</string>
<string name="notification_dialog_cancel">Mégse</string>
<string name="settings_notifications_header">Értesítések</string>
<string name="settings_notifications_muted_until_title">Értesítések némítása</string>
</resources>

View file

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="channel_subscriber_notification_noinstant_text">Berlangganan ke topik</string> <string name="channel_subscriber_notification_noinstant_text">Berlangganan ke topik</string>
<string name="channel_notifications_default_name">Notifikasi (prioritas default)</string> <string name="channel_notifications_default_name">Prioritas bawaan</string>
<string name="channel_notifications_max_name">Notifikasi (prioritas maks)</string> <string name="channel_notifications_max_name">Prioritas maks</string>
<string name="channel_notifications_min_name">Notifikasi (prioritas min)</string> <string name="channel_notifications_min_name">Prioritas min</string>
<string name="channel_notifications_low_name">Notifikasi (prioritas rendah)</string> <string name="channel_notifications_low_name">Prioritas rendah</string>
<string name="channel_subscriber_service_name">Layanan Langganan</string> <string name="channel_subscriber_service_name">Layanan Langganan</string>
<string name="channel_subscriber_notification_title">Mendengarkan untuk notifikasi masuk</string> <string name="channel_subscriber_notification_title">Mendengarkan notifikasi masuk</string>
<string name="channel_subscriber_notification_instant_text">Berlangganan ke topik pengiriman instan</string> <string name="channel_subscriber_notification_instant_text">Berlangganan ke topik pengiriman instan</string>
<string name="channel_subscriber_notification_instant_text_one">Berlangganan ke satu topik pengiriman instan</string> <string name="channel_subscriber_notification_instant_text_one">Berlangganan ke satu topik pengiriman instan</string>
<string name="channel_subscriber_notification_instant_text_two">Berlangganan ke dua topik pengiriman instan</string> <string name="channel_subscriber_notification_instant_text_two">Berlangganan ke dua topik pengiriman instan</string>
@ -19,11 +19,11 @@
\n%2$s</string> \n%2$s</string>
<string name="refresh_message_error_one">Tidak dapat memuat ulang langganan: %1$s</string> <string name="refresh_message_error_one">Tidak dapat memuat ulang langganan: %1$s</string>
<string name="main_action_bar_title">Topik berlangganan</string> <string name="main_action_bar_title">Topik berlangganan</string>
<string name="main_menu_notifications_enabled">Notifikasi nyala</string> <string name="main_menu_notifications_enabled">Notifikasi menyala</string>
<string name="main_menu_notifications_disabled_forever">Notifikasi dibisukan</string> <string name="main_menu_notifications_disabled_forever">Notifikasi dibisukan</string>
<string name="main_menu_notifications_disabled_until">Notifikasi dibisukan sampai %1$s</string> <string name="main_menu_notifications_disabled_until">Notifikasi dibisukan sampai %1$s</string>
<string name="main_menu_settings_title">Pengaturan</string> <string name="main_menu_settings_title">Pengaturan</string>
<string name="main_menu_report_bug_title">Laporkan sebuah kutu</string> <string name="main_menu_report_bug_title">Laporkan kutu</string>
<string name="main_menu_docs_title">Baca dokumentasi</string> <string name="main_menu_docs_title">Baca dokumentasi</string>
<string name="main_menu_rate_title">Beri nilai aplikasi ⭐</string> <string name="main_menu_rate_title">Beri nilai aplikasi ⭐</string>
<string name="main_action_mode_menu_unsubscribe">Batalkan langganan</string> <string name="main_action_mode_menu_unsubscribe">Batalkan langganan</string>
@ -35,7 +35,7 @@
<string name="main_how_to_intro">Tekan + untuk membuat atau berlangganan ke sebuah topik. Setelah itu Anda menerima notifikasi pada perangkat Anda saat mengirim pesan via PUT atau POST.</string> <string name="main_how_to_intro">Tekan + untuk membuat atau berlangganan ke sebuah topik. Setelah itu Anda menerima notifikasi pada perangkat Anda saat mengirim pesan via PUT atau POST.</string>
<string name="main_how_to_link">Instruksi rinci tersedia di ntfy.sh, dan dalam dokumentasi.</string> <string name="main_how_to_link">Instruksi rinci tersedia di ntfy.sh, dan dalam dokumentasi.</string>
<string name="main_unified_push_toast">Langganan ini dikelola oleh %1$s melalui UnifiedPush</string> <string name="main_unified_push_toast">Langganan ini dikelola oleh %1$s melalui UnifiedPush</string>
<string name="main_banner_battery_text">Pengoptimalan baterai untuk aplikasi seharusnya mati supaya masalah pengiriman notifikasi dapat dihindari.</string> <string name="main_banner_battery_text">Pengoptimalan baterai untuk aplikasi sebaiknya dimatikan supaya masalah pengiriman notifikasi dapat dihindari.</string>
<string name="main_banner_battery_button_remind_later">Tanya nanti</string> <string name="main_banner_battery_button_remind_later">Tanya nanti</string>
<string name="main_banner_battery_button_dismiss">Abaikan</string> <string name="main_banner_battery_button_dismiss">Abaikan</string>
<string name="main_banner_battery_button_fix_now">Perbaiki sekarang</string> <string name="main_banner_battery_button_fix_now">Perbaiki sekarang</string>
@ -54,7 +54,7 @@
<string name="add_dialog_login_error_not_authorized">Login gagal. Pengguna %1$s tidak diizinkan.</string> <string name="add_dialog_login_error_not_authorized">Login gagal. Pengguna %1$s tidak diizinkan.</string>
<string name="add_dialog_login_new_user">Pengguna baru</string> <string name="add_dialog_login_new_user">Pengguna baru</string>
<string name="detail_no_notifications_text">Anda belum menerima notifikasi apa pun.</string> <string name="detail_no_notifications_text">Anda belum menerima notifikasi apa pun.</string>
<string name="detail_how_to_intro">Untuk mengirimkan notifikasi ke topik ini, tinggal PUT atau POST ke URL topik.</string> <string name="detail_how_to_intro">Untuk mengirimkan notifikasi ke topik ini, lakukan PUT atau POST ke URL topik.</string>
<string name="detail_how_to_example">Contoh (menggunakan curl):<br/><tt>$ curl -d \"Hai\" %1$s</tt></string> <string name="detail_how_to_example">Contoh (menggunakan curl):<br/><tt>$ curl -d \"Hai\" %1$s</tt></string>
<string name="detail_how_to_link">Instruksi rinci tersedia di ntfy.sh, dan dalam dokumentasi.</string> <string name="detail_how_to_link">Instruksi rinci tersedia di ntfy.sh, dan dalam dokumentasi.</string>
<string name="detail_clear_dialog_message">Hapus semua notifikasi di topik ini\?</string> <string name="detail_clear_dialog_message">Hapus semua notifikasi di topik ini\?</string>
@ -68,7 +68,7 @@
<string name="detail_test_message_error_unauthorized_anon">Tidak dapat mengirimkan pesan: Penerbitan anonim tidak diizinkan.</string> <string name="detail_test_message_error_unauthorized_anon">Tidak dapat mengirimkan pesan: Penerbitan anonim tidak diizinkan.</string>
<string name="detail_test_message_error_too_large">Tidak dapat mengirimkan pesan: Lampiran terlalu besar.</string> <string name="detail_test_message_error_too_large">Tidak dapat mengirimkan pesan: Lampiran terlalu besar.</string>
<string name="detail_copied_to_clipboard_message">Disalin ke papan klip</string> <string name="detail_copied_to_clipboard_message">Disalin ke papan klip</string>
<string name="detail_instant_delivery_enabled">Pengiriman instan nyala</string> <string name="detail_instant_delivery_enabled">Pengiriman instan menyala</string>
<string name="detail_instant_delivery_disabled">Pengiriman instan mati</string> <string name="detail_instant_delivery_disabled">Pengiriman instan mati</string>
<string name="detail_item_tags">Tanda: %1$s</string> <string name="detail_item_tags">Tanda: %1$s</string>
<string name="detail_item_snack_deleted">Notifikasi dihapus</string> <string name="detail_item_snack_deleted">Notifikasi dihapus</string>
@ -165,8 +165,8 @@
<string name="settings_general_users_prefs_user_used_by_many">Digunakan oleh topik %1$s</string> <string name="settings_general_users_prefs_user_used_by_many">Digunakan oleh topik %1$s</string>
<string name="settings_general_users_prefs_user_add_title">Tambahkan pengguna baru</string> <string name="settings_general_users_prefs_user_add_title">Tambahkan pengguna baru</string>
<string name="settings_general_dark_mode_title">Mode gelap</string> <string name="settings_general_dark_mode_title">Mode gelap</string>
<string name="settings_general_dark_mode_summary_light">Mode terang nyala</string> <string name="settings_general_dark_mode_summary_light">Mode terang menyala</string>
<string name="settings_general_dark_mode_summary_dark">Mode gelap nyala. Apakah Anda seorang vampir\?</string> <string name="settings_general_dark_mode_summary_dark">Mode gelap menyala. Apakah Anda seorang vampir\?</string>
<string name="settings_general_dark_mode_entry_system">Gunakan bawaan sistem</string> <string name="settings_general_dark_mode_entry_system">Gunakan bawaan sistem</string>
<string name="settings_general_dark_mode_entry_light">Mode terang</string> <string name="settings_general_dark_mode_entry_light">Mode terang</string>
<string name="settings_general_dark_mode_entry_dark">Mode gelap</string> <string name="settings_general_dark_mode_entry_dark">Mode gelap</string>
@ -216,7 +216,7 @@
<string name="settings_notifications_auto_download_summary_always">Unduh semua lampiran secara otomatis</string> <string name="settings_notifications_auto_download_summary_always">Unduh semua lampiran secara otomatis</string>
<string name="settings_notifications_auto_download_500k">Jika di bawah 500 kB</string> <string name="settings_notifications_auto_download_500k">Jika di bawah 500 kB</string>
<string name="user_dialog_button_save">Simpan</string> <string name="user_dialog_button_save">Simpan</string>
<string name="channel_notifications_high_name">Notifikasi (prioritas tinggi)</string> <string name="channel_notifications_high_name">Prioritas tinggi</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Hapus secara permanen</string> <string name="main_action_mode_delete_dialog_permanently_delete">Hapus secara permanen</string>
<string name="add_dialog_button_subscribe">Berlangganan</string> <string name="add_dialog_button_subscribe">Berlangganan</string>
<string name="channel_subscriber_notification_instant_text_more">Berlangganan ke %1$d topik pengiriman instan</string> <string name="channel_subscriber_notification_instant_text_more">Berlangganan ke %1$d topik pengiriman instan</string>
@ -236,7 +236,7 @@
<string name="main_item_status_text_not_one">%1$d notifikasi</string> <string name="main_item_status_text_not_one">%1$d notifikasi</string>
<string name="detail_test_message">Ini adalah notifikasi uji coba dari aplikasi Android ntfy. Ini memiliki tingkat prioritas %1$d. Jika Anda kirim yang lain, itu mungkin kelihatan berbeda.</string> <string name="detail_test_message">Ini adalah notifikasi uji coba dari aplikasi Android ntfy. Ini memiliki tingkat prioritas %1$d. Jika Anda kirim yang lain, itu mungkin kelihatan berbeda.</string>
<string name="detail_test_message_error_unauthorized_user">Tidak dapat mengirimkan pesan: Pengguna \"%1$s\" tidak diizinkan.</string> <string name="detail_test_message_error_unauthorized_user">Tidak dapat mengirimkan pesan: Pengguna \"%1$s\" tidak diizinkan.</string>
<string name="detail_menu_notifications_enabled">Notifikasi nyala</string> <string name="detail_menu_notifications_enabled">Notifikasi menyala</string>
<string name="notification_popup_file_download_successful">%1$s <string name="notification_popup_file_download_successful">%1$s
\nFile: %2$s, terunduh</string> \nFile: %2$s, terunduh</string>
<string name="detail_item_saved_successfully">Disimpan sebagai \"%1$s\" dalam folder \"Downloads\"</string> <string name="detail_item_saved_successfully">Disimpan sebagai \"%1$s\" dalam folder \"Downloads\"</string>
@ -255,7 +255,7 @@
<string name="settings_notifications_min_priority_default">Prioritas default dan di atas</string> <string name="settings_notifications_min_priority_default">Prioritas default dan di atas</string>
<string name="settings_notifications_priority_high">tinggi</string> <string name="settings_notifications_priority_high">tinggi</string>
<string name="settings_notifications_auto_download_1m">Jika di bawah 1 MB</string> <string name="settings_notifications_auto_download_1m">Jika di bawah 1 MB</string>
<string name="settings_advanced_record_logs_summary_disabled">Nyalakan pencatatan supaya Anda dapat membagikan catatan nanti untuk mendiagnosa masalah.</string> <string name="settings_advanced_record_logs_summary_disabled">Nyalakan pencatatan, supaya Anda dapat membagikan catatan nanti untuk mendiagnosa masalah.</string>
<string name="settings_advanced_export_logs_error_uploading">Tidak dapat mengunggah catatan: %1$s</string> <string name="settings_advanced_export_logs_error_uploading">Tidak dapat mengunggah catatan: %1$s</string>
<string name="settings_advanced_export_logs_scrub_dialog_text">Topik/nama host diganti dengan nama-nama buah, jadi Anda dapat membagikan catatan tanpa khawatir: <string name="settings_advanced_export_logs_scrub_dialog_text">Topik/nama host diganti dengan nama-nama buah, jadi Anda dapat membagikan catatan tanpa khawatir:
\n \n
@ -289,7 +289,7 @@
<string name="settings_backup_restore_restore_failed">Pemulihan gagal: %1$s</string> <string name="settings_backup_restore_restore_failed">Pemulihan gagal: %1$s</string>
<string name="settings_advanced_header">Tingkat lanjut</string> <string name="settings_advanced_header">Tingkat lanjut</string>
<string name="settings_advanced_broadcast_summary_enabled">Aplikasi dapat menerima notifikasi yang datang sebagai siaran</string> <string name="settings_advanced_broadcast_summary_enabled">Aplikasi dapat menerima notifikasi yang datang sebagai siaran</string>
<string name="settings_advanced_export_logs_summary">Salin catatan ke papn klip, atau unggah ke nopaste.net (dimiliki oleh penulis ntfy). Nama host dan topik dapat disensor, notifikasi tidak akan disensor.</string> <string name="settings_advanced_export_logs_summary">Salin catatan ke papan klip, atau unggah ke nopaste.net (dimiliki oleh penulis ntfy). Nama host dan topik dapat disensor, notifikasi tidak akan disensor.</string>
<string name="settings_about_version_copied_to_clipboard_message">Disalin ke papan klip</string> <string name="settings_about_version_copied_to_clipboard_message">Disalin ke papan klip</string>
<string name="user_dialog_password_hint_add">Kata Sandi</string> <string name="user_dialog_password_hint_add">Kata Sandi</string>
<string name="user_dialog_button_delete">Hapus pengguna</string> <string name="user_dialog_button_delete">Hapus pengguna</string>
@ -327,4 +327,20 @@
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Disalin ke papan klip</string> <string name="detail_settings_about_topic_url_copied_to_clipboard_message">Disalin ke papan klip</string>
<string name="detail_settings_about_header">Tentang</string> <string name="detail_settings_about_header">Tentang</string>
<string name="detail_settings_about_topic_url_title">URL Topik</string> <string name="detail_settings_about_topic_url_title">URL Topik</string>
<string name="main_menu_donate_title">Donasi 💸</string>
<string name="detail_item_cannot_open_apk">Aplikasi tidak dapat dipasang lagi. Unduh melalui peramban. Lihat masalah #531 untuk detail lebih lanjut.</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Notifikasi prioritas maks hanya memperingati sekali</string>
<string name="detail_settings_notifications_open_channels_title">Atur pengaturan notifikasi</string>
<string name="detail_settings_notifications_open_channels_summary">Sampingan Jangan Ganggu, suara, dll.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Peringati hanya sekali</string>
<string name="channel_notifications_group_default_name">Bawaan</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Tetap memperingati</string>
<string name="settings_notifications_insistent_max_priority_title">Tetap memperingati untuk prioritas tertinggi</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Notifikasi prioritas maks memperingatkan secara berkelanjutan sampai diabaikan</string>
<string name="detail_settings_notifications_dedicated_channels_title">Pengaturan notifikasi kustom</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Menggunakan pengaturan kustom untuk langganan ini</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Menggunakan pengaturan bawaan (suara, sampingan Jangan Ganggu, dll.)</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy akan menjadi sebagai distributor UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy tidak akan menjadi sebagai distributor UnifiedPush</string>
<string name="settings_advanced_unifiedpush_title">Aktifkan UnifiedPush</string>
</resources> </resources>

View file

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="channel_notifications_low_name">Notifiche (priorità bassa)</string> <string name="channel_notifications_low_name">Priorità bassa</string>
<string name="channel_subscriber_notification_noinstant_text_three">Iscritto a tre topic</string> <string name="channel_subscriber_notification_noinstant_text_three">Iscritto a tre topic</string>
<string name="channel_notifications_high_name">Notifiche (priorità alta)</string> <string name="channel_notifications_high_name">Priorità alta</string>
<string name="channel_notifications_max_name">Notifiche (priorità massima)</string> <string name="channel_notifications_max_name">Priorità massima</string>
<string name="channel_subscriber_service_name">Servizio di iscrizione</string> <string name="channel_subscriber_service_name">Servizio di iscrizione</string>
<string name="channel_subscriber_notification_instant_text">Iscritto ai topic a consegna istantanea</string> <string name="channel_subscriber_notification_instant_text">Iscritto ai topic a consegna istantanea</string>
<string name="channel_subscriber_notification_instant_text_two">Iscritto a due topic a consegna istantanea</string> <string name="channel_subscriber_notification_instant_text_two">Iscritto a due topic a consegna istantanea</string>
@ -166,7 +166,7 @@
\nLe password sono state ripulite, ma non sono elencate qui.</string> \nLe password sono state ripulite, ma non sono elencate qui.</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">Ok</string> <string name="settings_advanced_export_logs_scrub_dialog_button_ok">Ok</string>
<string name="settings_advanced_clear_logs_title">Cancella i log</string> <string name="settings_advanced_clear_logs_title">Cancella i log</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Usa stream JSON over HTTP per collegarti al server. Questo metodo è deprecato e sarà rimosso a giugno 2022.</string> <string name="settings_advanced_connection_protocol_summary_jsonhttp">Usa stream JSON over HTTP per collegarti al server. Questo metodo è collaudato, ma può consumare più batteria.</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">Stream JSON over HTTP</string> <string name="settings_advanced_connection_protocol_entry_jsonhttp">Stream JSON over HTTP</string>
<string name="user_dialog_description_add">Puoi aggiungere un utente qui. Tutti i topic per il dato server utilizzeranno questo utente.</string> <string name="user_dialog_description_add">Puoi aggiungere un utente qui. Tutti i topic per il dato server utilizzeranno questo utente.</string>
<string name="user_dialog_description_edit">Puoi modificare username/password per l\'utente selezionato, oppure eliminarlo.</string> <string name="user_dialog_description_edit">Puoi modificare username/password per l\'utente selezionato, oppure eliminarlo.</string>
@ -179,8 +179,8 @@
<string name="user_dialog_button_delete">Elimina utente</string> <string name="user_dialog_button_delete">Elimina utente</string>
<string name="user_dialog_button_save">Salva</string> <string name="user_dialog_button_save">Salva</string>
<string name="channel_subscriber_notification_noinstant_text_more">Iscritto a %1$d topic</string> <string name="channel_subscriber_notification_noinstant_text_more">Iscritto a %1$d topic</string>
<string name="channel_notifications_default_name">Notifiche (priorità di default)</string> <string name="channel_notifications_default_name">Priorità di default</string>
<string name="channel_notifications_min_name">Notifiche (priorità minima)</string> <string name="channel_notifications_min_name">Priorità minima</string>
<string name="channel_subscriber_notification_instant_text_one">Iscritto a un topic a consegna istantanea</string> <string name="channel_subscriber_notification_instant_text_one">Iscritto a un topic a consegna istantanea</string>
<string name="channel_subscriber_notification_noinstant_text_four">Iscritto a quattro topic</string> <string name="channel_subscriber_notification_noinstant_text_four">Iscritto a quattro topic</string>
<string name="main_menu_docs_title">Leggi la documentazione</string> <string name="main_menu_docs_title">Leggi la documentazione</string>
@ -285,7 +285,7 @@
<string name="settings_advanced_export_logs_uploading">Log in upload …</string> <string name="settings_advanced_export_logs_uploading">Log in upload …</string>
<string name="settings_advanced_clear_logs_summary">Elimina i log precedentemente salvati, e ricomincia</string> <string name="settings_advanced_clear_logs_summary">Elimina i log precedentemente salvati, e ricomincia</string>
<string name="settings_advanced_connection_protocol_title">Protocollo di connessione</string> <string name="settings_advanced_connection_protocol_title">Protocollo di connessione</string>
<string name="settings_advanced_connection_protocol_summary_ws">Usa WebSockets per collegarti al server. Questo metodo diventerà il default a giugno 2022.</string> <string name="settings_advanced_connection_protocol_summary_ws">Usa WebSockets per collegarti al server. Questo è il metodo consigliato, ma potrebbe richiedere una configurazione aggiuntiva del proxy.</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string> <string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string>
<string name="user_dialog_title_add">Aggiungi utente</string> <string name="user_dialog_title_add">Aggiungi utente</string>
<string name="settings_about_version_copied_to_clipboard_message">Copiato negli appunti</string> <string name="settings_about_version_copied_to_clipboard_message">Copiato negli appunti</string>
@ -317,4 +317,19 @@
<string name="detail_settings_appearance_icon_remove_summary">Icona visualizzata nelle notifiche di questo topic</string> <string name="detail_settings_appearance_icon_remove_summary">Icona visualizzata nelle notifiche di questo topic</string>
<string name="detail_settings_appearance_icon_error_saving">Impossibile salvare l\'icona: %1$s</string> <string name="detail_settings_appearance_icon_error_saving">Impossibile salvare l\'icona: %1$s</string>
<string name="detail_settings_global_setting_suffix">utilizzando l\'impostazione globale</string> <string name="detail_settings_global_setting_suffix">utilizzando l\'impostazione globale</string>
<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>
<string name="channel_notifications_group_default_name">Default</string>
<string name="main_menu_donate_title">Dona 💸</string>
<string name="detail_item_cannot_open_apk">Le app non possono più essere installate: devono essere scaricate via browser. Vedi l\'issue #531 per dettagli.</string>
<string name="eos_settings_enable_title">Abilitare il distributore</string>
<string name="eos_settings_enable_description">Consente alle applicazioni di terze parti di ricevere notifiche UnifiedPush</string>
</resources> </resources>

View file

@ -1,42 +1,315 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="channel_subscriber_notification_noinstant_text_more">רשום ל-%1$d נושאים</string> <string name="channel_subscriber_notification_noinstant_text_more">מנוי ל־%1$d נושאים</string>
<string name="refresh_message_result">%1$d התראות התקבלו</string> <string name="refresh_message_result">%1$d התראות התקבלו</string>
<string name="refresh_message_no_results">הכל מעודכן</string> <string name="refresh_message_no_results">הכול עדכני</string>
<string name="refresh_message_error_one">הרענון של הרישום הבא נכשל: %1$s</string> <string name="refresh_message_error_one">הרענון של המינוי הבא נכשל: %1$s</string>
<string name="main_action_bar_title">רישומים לנושאים</string> <string name="main_action_bar_title">מינוי לנושאים</string>
<string name="main_menu_notifications_enabled">התראות פועלות</string> <string name="main_menu_notifications_enabled">התראות פעילות</string>
<string name="main_menu_notifications_disabled_until">ההתראות מושתקות עד %1$s</string> <string name="main_menu_notifications_disabled_until">ההתראות מושתקות עד %1$s</string>
<string name="main_menu_settings_title">הגדרות</string> <string name="main_menu_settings_title">הגדרות</string>
<string name="main_menu_report_bug_title">דווח/י על באג</string> <string name="main_menu_report_bug_title">דיווח על תקלה</string>
<string name="main_menu_docs_title">קרא/י את הדוקומנטציה</string> <string name="main_menu_docs_title">הצגת התיעוד</string>
<string name="main_menu_rate_title">דרג/י את האפליקציה</string> <string name="main_menu_rate_title">דירוג היישומון</string>
<string name="main_action_mode_menu_unsubscribe">הסר/י רישום</string> <string name="main_action_mode_menu_unsubscribe">ביטול מינוי</string>
<string name="main_action_mode_delete_dialog_permanently_delete">מחק/י לצמיתות</string> <string name="main_action_mode_delete_dialog_permanently_delete">מחיקה לצמיתות</string>
<string name="main_action_mode_delete_dialog_cancel">ביטול</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_one">התראה %1$d</string>
<string name="main_item_status_text_not_one">התראות %1$d</string> <string name="main_item_status_text_not_one">%1$d התראות</string>
<string name="main_item_date_yesterday">אתמול</string> <string name="main_item_date_yesterday">אתמול</string>
<string name="main_add_button_description">הוספת רישום</string> <string name="main_add_button_description">הוספת מינוי</string>
<string name="main_no_subscriptions_text">נראה שלא נרשמת לאף נושא עדיין.</string> <string name="main_no_subscriptions_text">נראה שאין לך מינויים עדיין.</string>
<string name="main_banner_battery_text">מיטוב סוללה צריך להיות כבוי עבור האפליקציה כדי להימנע מבעיות בשליחת וקבלת התראות.</string> <string name="main_banner_battery_text">צריך לכבות מיטוב סוללה כדי שהיישומון יוכל להימנע מבעיות משלוח וקבלת התראות.</string>
<string name="main_banner_battery_button_remind_later">שאל אחר כך</string> <string name="main_banner_battery_button_remind_later">לשאול אחר כך</string>
<string name="main_banner_battery_button_dismiss">הסר</string> <string name="main_banner_battery_button_dismiss">התעלמות</string>
<string name="main_banner_battery_button_fix_now">תקן עכשיו</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_remind_later">לשאול אחר כך</string>
<string name="channel_notifications_min_name">התראות (עדיפות מינימאלית)</string> <string name="channel_notifications_min_name">עדיפות מזערית</string>
<string name="channel_subscriber_service_name">שירות רישום</string> <string name="channel_subscriber_service_name">שירות מנויים</string>
<string name="channel_subscriber_notification_title">מאזין להתראות נכנסות</string> <string name="channel_subscriber_notification_title">בהאזנה להתראות נכנסות</string>
<string name="channel_notifications_low_name">התראות (עדיפות נמוכה)</string> <string name="channel_notifications_low_name">עדיפות נמוכה</string>
<string name="channel_notifications_default_name">התראות (עדיפות ברירת מחדל)</string> <string name="channel_notifications_default_name">עדיפות ברירת מחדל</string>
<string name="channel_notifications_high_name">התראות (עדיפות גבוהה)</string> <string name="channel_notifications_high_name">עדיפות גבוהה</string>
<string name="channel_notifications_max_name">התראות (עדיפות מקסימאלית)</string> <string name="channel_notifications_max_name">עדיפות מרבית</string>
<string name="refresh_message_error">הרענון של %1$d רישומים נכשל <string name="refresh_message_error">הרענון של %1$d מהרישומים נכשל
\n \n
\n%2$s</string> \n%2$s</string>
<string name="main_menu_notifications_disabled_forever">התראות מושתקות</string> <string name="main_menu_notifications_disabled_forever">התראות מושתקות</string>
<string name="main_action_mode_delete_dialog_message">להסיר את הרישום מהנושא(ים) הנבחר(ים) ולמחוק את כל ההתראות לצמיתות\?</string> <string name="main_action_mode_delete_dialog_message">לבטל מינוי מהנושאים שנבחרו ולמחוק את כל ההתראות לצמיתות?</string>
<string name="main_item_status_reconnecting">מתחבר מחדש…</string> <string name="main_item_status_reconnecting">התחברות מחדש…</string>
<string name="main_how_to_intro">לחצ\\י על + על מנת ליצור או להירשם אל מול נושא מסוים. לאחר מכן תקבל\\י התראות במכשירך כשתשלח\\י התראות דרך PUT או POST.</string> <string name="main_how_to_intro">לחיצה על + תאפשר ליצור או להירשם לנושא. לאחר מכן התראות תגענה למכשיר שלך בעת שליחת הודעות עם PUT או POST.</string>
<string name="main_how_to_link">הוראות מפורטות זמינות ב-ntfy.sh, ובדוקומנטציה.</string> <string name="main_how_to_link">הוראות מפורטות זמינות ב־ntfy.sh, ובתיעוד.</string>
<string name="main_menu_donate_title">תרומה 💸</string>
<string name="channel_subscriber_notification_instant_text_two">מנוי לשני נושאים במשלוח מהיר</string>
<string name="channel_subscriber_notification_instant_text_three">מנוי לשלושה נושאים במשלוח מהיר</string>
<string name="channel_subscriber_notification_instant_text">מנוי לנושאים במשלוח מהיר</string>
<string name="channel_subscriber_notification_instant_text_one">מנוי לנושא אחד במשלוח מהיר</string>
<string name="channel_subscriber_notification_instant_text_four">מנוי לארבעה נושאים במשלוח מהיר</string>
<string name="channel_subscriber_notification_instant_text_five">מנוי לחמישה נושאים במשלוח מהיר</string>
<string name="channel_subscriber_notification_instant_text_six">מנוי לשישה נושאים במשלוח מהיר</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">מנוי לנושא אחד</string>
<string name="channel_subscriber_notification_noinstant_text_two">מנוי לשני נושאים</string>
<string name="channel_subscriber_notification_noinstant_text_three">מנוי לשלושה נושאים</string>
<string name="channel_subscriber_notification_noinstant_text_four">מנוי לארבעה נושאים</string>
<string name="channel_subscriber_notification_noinstant_text_five">מנוי לחמישה נושאים</string>
<string name="channel_subscriber_notification_noinstant_text_six">מנוי לשישה נושאים</string>
<string name="channel_notifications_group_default_name">ברירת מחדל</string>
<string name="add_dialog_description_below">כנראה שהנושאים אינם מוגנים בסיסמה, אז כדאי לבחור שם שקשה לנחש. לאחר הרשמה, אפשר לשלוח התראות עם PUT/POST.</string>
<string name="main_banner_websocket_button_enable_now">להפעיל כעת</string>
<string name="add_dialog_topic_name_hint">שם הנושא, למשל: shimons_alerts</string>
<string name="add_dialog_use_another_server">להשתמש בשרת אחר</string>
<string name="add_dialog_instant_delivery">משלוח מיידי במצב תנומה</string>
<string name="main_banner_websocket_button_dismiss">התעלמות</string>
<string name="add_dialog_title">הרשמה לנושא</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string>
<string name="detail_how_to_intro">כדי לשלוח התראות לנושא הזה צריך פשוט לשלוח בקשות PUT או POST לכתובת הנושא.</string>
<string name="detail_test_message_error_unauthorized_user">אי אפשר לשלוח הודעה: למשתמש „%1$s” אין הרשאה.</string>
<string name="detail_deep_link_subscribed_toast_message">נרשמת לנושא %1$s</string>
<string name="detail_item_tags">תגיות: %1$s</string>
<string name="detail_item_snack_undo">הסגה</string>
<string name="detail_item_menu_delete">מחיקת קובץ</string>
<string name="detail_menu_settings">הגדרות המינוי</string>
<string name="detail_action_mode_menu_delete">מחיקה</string>
<string name="notification_dialog_cancel">ביטול</string>
<string name="notification_dialog_muted_until_toast_message">ההתראות מושתקות עד %1$s</string>
<string name="notification_dialog_show_all">הצגת כל ההתראות</string>
<string name="notification_popup_user_action_failed">%1$s נכשל: %2$s</string>
<string name="settings_notifications_min_priority_summary_any">כל ההתראות מוצגות</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_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_auto_download_100k">אם מתחת ל־100 ק״ב</string>
<string name="settings_notifications_auto_download_500k">אם מתחת ל־500 ק״ב</string>
<string name="settings_notifications_auto_download_1m">אם מתחת ל־1 מ״ב</string>
<string name="settings_notifications_auto_download_5m">אם מתחת ל־5 מ״ב</string>
<string name="settings_notifications_auto_download_10m">אם מתחת ל־10 מ״ב</string>
<string name="settings_notifications_auto_download_50m">אם מתחת ל־50 מ״ב</string>
<string name="detail_item_download_info_downloading_x_percent">%1$d%% ירדו</string>
<string name="detail_menu_clear">פינוי כל ההתראות</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="settings_notifications_auto_delete_summary_never">לעולם לא למחוק התראות אוטומטית</string>
<string name="settings_general_users_title">ניהול משתמשים</string>
<string name="settings_general_users_summary">הוספת/הסרת משתמשים מ/על נושאים מוגנים</string>
<string name="settings_backup_restore_header">גיבוי ושחזור</string>
<string name="settings_backup_restore_backup_title">גיבוי לקובץ</string>
<string name="settings_backup_restore_backup_successful">נוצר גיבוי</string>
<string name="settings_advanced_broadcast_title">הודעות שידור</string>
<string name="settings_advanced_broadcast_summary_enabled">יישומונים יכולים לקבל התראות נכנסות בתור שידורים</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">להמשיך להודיע</string>
<string name="add_dialog_login_password_hint">סיסמה</string>
<string name="add_dialog_login_description">הנושא הזה דורש כניסה למערכת. נא למלא שם משתמש וסיסמה.</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_no_notifications_text">עדיין לא קיבלת התראות לנושא הזה.</string>
<string name="detail_how_to_example">דוגמה (עם curl):<br/><tt>$ curl -d \"Shalom\" %1$s</tt></string>
<string name="detail_how_to_link">יש הנחיות מפורטות ב־ntfy.sh ובתיעוד.</string>
<string name="detail_clear_dialog_message">למחוק את כל ההתראות בנושא הזה?</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_too_large">אי אפשר לשלוח הודעה: הצרופה גדולה מדי.</string>
<string name="detail_item_menu_cancel">ביטול הורדה</string>
<string name="detail_item_menu_save_file">שמירת קובץ</string>
<string name="detail_item_menu_copy_contents_copied">ההתראה הועתקה ללוח הגזירים</string>
<string name="detail_item_cannot_download">אי אפשר לפתוח או להוריד את הצרופה. תוקף הקישור פג ואין קובץ מקומי.</string>
<string name="detail_item_cannot_save">לא ניתן לשמור צרופה: %1$s</string>
<string name="detail_item_download_info_not_downloaded">לא ירדה</string>
<string name="detail_item_download_info_deleted">נמחקה</string>
<string name="detail_item_download_info_deleted_expired">נמחקה, תוקף הקישור פג</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_test">שליחת התראת בדיקה</string>
<string name="detail_menu_copy_url">העתקת כתובת הנושא</string>
<string name="detail_action_mode_menu_copy">העתקה</string>
<string name="share_title">שיתוף</string>
<string name="share_menu_send">שיתוף</string>
<string name="share_content_text_hint">הוספת הקשר לשיתוף כאן</string>
<string name="share_topic_title">שיתוף אל</string>
<string name="share_suggested_topics">נושאים מוצעים</string>
<string name="notification_dialog_title">השתקת התראות</string>
<string name="notification_dialog_save">שמירה</string>
<string name="notification_dialog_enabled_toast_message">ההתראות נמשכות</string>
<string name="notification_dialog_muted_forever_toast_message">ההתראות מושתקות</string>
<string name="notification_dialog_30min">חצי שעה</string>
<string name="notification_dialog_1h">שעה</string>
<string name="notification_dialog_2h">שעתיים</string>
<string name="notification_dialog_8h">8 שעות</string>
<string name="notification_dialog_tomorrow">עד מחר</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="settings_title">הגדרות</string>
<string name="settings_notifications_header">התראות</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_auto_delete_one_month">לאחר חודש</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_users_prefs_title">משתמשים</string>
<string name="settings_general_users_prefs_user_used_by_many">בשימוש הנושאים %1$s</string>
<string name="settings_general_users_prefs_user_add">הוספת משתמשים</string>
<string name="settings_general_users_prefs_user_add_title">הוספת משתמש חדש</string>
<string name="settings_general_users_prefs_user_add_summary">יצירת משתמש חדש לשרת חדש</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_backup_restore_backup_summary">ייצוא הגדרות, התראות ומשתמשים</string>
<string name="settings_backup_restore_backup_entry_everything">הכול</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">הכול חוץ מהמשתמשים</string>
<string name="settings_backup_restore_backup_failed">הגיבוי נכשל: %1$s</string>
<string name="settings_backup_restore_restore_title">שחזור מקובץ</string>
<string name="settings_backup_restore_restore_failed">השחזור נכשל: %1$s</string>
<string name="settings_advanced_header">מתקדם</string>
<string name="settings_advanced_export_logs_copied_url">היומנים הועלו והכתובת הועתקה</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">אישור</string>
<string name="settings_advanced_export_logs_error_uploading">לא ניתן להעלות יומנים: %1$s</string>
<string name="settings_advanced_clear_logs_title">פינוי יומנים</string>
<string name="detail_settings_appearance_header">מראה</string>
<string name="detail_settings_appearance_icon_set_title">סמל מינוי</string>
<string name="main_unified_push_toast">המינוי הזה מנוהל על ידי %1$s דרך UnifiedPush</string>
<string name="add_dialog_use_another_server_description">נא למלא את כתובת השירותים להלן כדי להירשם לנושאים משרתים אחרים.</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_username_hint">שם משתמש</string>
<string name="detail_delete_dialog_cancel">ביטול</string>
<string name="detail_test_title">בדיקה: אפשר להגדיר כותרת אם מתחשק לך.</string>
<string name="detail_test_message">זאת התראת בדיקה מהיישומון של ntfy ל־Android. רמת העדיפות שלו היא %1$d. אם תישלח התראה נוספת היא עשויה להיראות אחרת.</string>
<string name="detail_test_message_error">לא ניתן לשלוח הודעה: %1$s</string>
<string name="detail_test_message_error_unauthorized_anon">לא ניתן לשלוח הודעה: אסור לפרסם באופן אלמוני.</string>
<string name="share_successful">ההודעה פורסמה</string>
<string name="settings_notifications_channel_prefs_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_delete_summary_one_month">למחוק התראות אוטומטית לאחר חודש</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">לאחר יום</string>
<string name="settings_general_users_prefs_user_not_used">לא בשימוש של אף נושא</string>
<string name="settings_general_users_prefs_user_used_by_one">בשימוש הנושא %1$s</string>
<string name="settings_advanced_export_logs_copied_logs">היומן הועתק ללוח הגזירים</string>
<string name="settings_advanced_export_logs_entry_copy_original">העתקה ללוח הגזירים</string>
<string name="user_dialog_title_add">הוספת משתמש</string>
<string name="user_dialog_password_hint_add">סיסמה</string>
<string name="user_dialog_password_hint_edit">סיסמה (לא תשתנה אם יישאר ריק)</string>
<string name="user_dialog_button_add">הוספת משתמש</string>
<string name="detail_item_download_info_not_downloaded_expires_x">לא ירדה, התוקף יפוג ב־%1$s</string>
<string name="settings_notifications_auto_delete_title">מחיקת התראות</string>
<string name="settings_notifications_auto_delete_one_week">לאחר שבוע</string>
<string name="settings_advanced_connection_protocol_title">פרוטוקול חיבור</string>
<string name="settings_about_version_copied_to_clipboard_message">הועתק ללוח הגזירים</string>
<string name="settings_advanced_export_logs_title">העתקת/העלאת יומנים</string>
<string name="settings_advanced_export_logs_entry_upload_original">להעלות ולהעתיק קישור</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">להעלות ולהעתיק קישור (מצונזר)</string>
<string name="detail_settings_appearance_icon_set_summary">נא להגדיר סמל שיוצג בהתראות</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">הועתק ללוח הגזירים</string>
<string name="detail_settings_appearance_icon_remove_summary">סמל שמוצג בהתראות לנושא הזה</string>
<string name="add_dialog_instant_delivery_description">מוודא שהודעות נמסרות מיידית, אפילו אם המכשיר לא פעיל.</string>
<string name="add_dialog_button_subscribe">הרשמה</string>
<string name="add_dialog_button_back">חזרה</string>
<string name="add_dialog_button_cancel">ביטול</string>
<string name="detail_delete_dialog_permanently_delete">למחוק לצמיתות</string>
<string name="detail_copied_to_clipboard_message">הועתק ללוח הגזירים</string>
<string name="detail_item_snack_deleted">ההתראה נמחקה</string>
<string name="detail_item_menu_download">הורדת קובץ</string>
<string name="detail_item_menu_copy_url">העתקת כתובת</string>
<string name="detail_item_menu_copy_url_copied">הכתובת הועתקה ללוח הגזירים</string>
<string name="detail_item_menu_copy_contents">העתקת התראה</string>
<string name="detail_item_saved_successfully">נשמרה בשם „%1$s” בתיקיית ה„הורדות/Download”</string>
<string name="detail_item_menu_open">פתיחת קובץ</string>
<string name="share_content_file_text">שותף איתך קובץ</string>
<string name="settings_backup_restore_backup_entry_settings_only">הגדרות בלבד</string>
<string name="detail_item_cannot_open">אי אפשר לפתוח צרופה: %1$s</string>
<string name="detail_menu_unsubscribe">ביטול מינוי</string>
<string name="detail_action_mode_delete_dialog_message">למחוק את ההתראות הנבחרות לצמיתות?</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">למחוק לצמיתות</string>
<string name="detail_action_mode_delete_dialog_cancel">ביטול</string>
<string name="detail_settings_title">הגדרות מינוי</string>
<string name="share_content_title">תצוגת הודעה מקדימה</string>
<string name="share_content_image_text">שותפה איתך תמונה</string>
<string name="share_content_image_error">לא ניתן לקרוא תמונה: %1$s</string>
<string name="share_content_file_error">לא ניתן לקרוא פרטי קובץ: %1$s</string>
<string name="settings_notifications_min_priority_summary_x_or_higher">להציג התראות אם העדיפות היא %1$d (%2$s) ומעלה</string>
<string name="notification_dialog_forever">עד לביטול ההשתקה</string>
<string name="settings_notifications_muted_until_title">השתקת התראות</string>
<string name="settings_notifications_auto_download_title">הורדות צרופות</string>
<string name="settings_notifications_channel_prefs_summary">מעקף „לא להפריע” (DND) צלילים וכו׳.</string>
<string name="settings_notifications_min_priority_low">עדיפות נמוכה ומעלה</string>
<string name="settings_notifications_priority_low">נמוכה</string>
<string name="settings_notifications_priority_max">מרבית</string>
<string name="settings_general_dark_mode_entry_light">מצב בהיר</string>
<string name="settings_notifications_priority_default">ברירת מחדל</string>
<string name="settings_notifications_priority_high">גבוהה</string>
<string name="settings_notifications_auto_download_always">להוריד הכול אוטומטית</string>
<string name="settings_notifications_auto_download_summary_always">להוריד את כל הצרופות אוטומטית</string>
<string name="settings_notifications_auto_download_never">לעולם לא להוריד כלום</string>
<string name="settings_notifications_auto_delete_summary_one_day">למחוק התראות אוטומטית לאחר יום</string>
<string name="settings_notifications_auto_delete_summary_three_days">למחוק התראות אוטומטית לאחר 3 ימים</string>
<string name="settings_notifications_auto_delete_summary_one_week">למחוק התראות אוטומטית לאחר שבוע</string>
<string name="settings_notifications_auto_delete_three_days">לאחר 3 ימים</string>
<string name="settings_general_dark_mode_entry_system">כמו המערכת</string>
<string name="settings_general_dark_mode_entry_dark">מצב כהה</string>
<string name="settings_backup_restore_restore_summary">ייבוא הגדרות, התראות ומשתמשים</string>
<string name="settings_backup_restore_restore_successful">השחזור הצליח</string>
<string name="detail_item_download_info_download_failed">ההורדה נכשלה</string>
<string name="settings_advanced_broadcast_summary_disabled">יישומונים לא יכולים לקבל התראות כשידורים</string>
<string name="settings_advanced_unifiedpush_title">הפעלת UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy ישמש כמפיץ UnifiedPush</string>
<string name="settings_about_version_title">גרסה</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">תזרים JSON על גבי HTTP</string>
<string name="settings_about_header">על אודות</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
<string name="detail_settings_appearance_icon_remove_title">סמל מינוי (נגיעה להסרה)</string>
<string name="detail_settings_appearance_icon_error_saving">לא ניתן לשמור סמל: %1$s</string>
<string name="detail_settings_appearance_display_name_title">שם תצוגה</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (ברירת מחדל)</string>
<string name="detail_settings_about_header">על אודות</string>
<string name="detail_settings_about_topic_url_title">כתובת נושא</string>
<string name="user_dialog_title_edit">עריכת משתמש</string>
<string name="user_dialog_description_add">כאן אפשר להוסיף משתמש. כל הנושאים לשרת שצוין ישתמשו במשתמש הזה.</string>
<string name="user_dialog_description_edit">אפשר לערוך שם משתמש/סיסמה למשתמש הנבחר או למחוק אותו.</string>
<string name="user_dialog_base_url_hint">כתובת שירות</string>
<string name="user_dialog_username_hint">שם משתמש</string>
<string name="user_dialog_button_cancel">ביטול</string>
<string name="user_dialog_button_delete">מחיקת משתמש</string>
<string name="user_dialog_button_save">שמירה</string>
<string name="detail_item_cannot_delete">לא ניתן למחוק צרופה: %1$s</string>
<string name="detail_item_download_failed">לא ניתן להוריד צרופה: %1$s</string>
<string name="detail_item_download_info_not_downloaded_expired">לא ירדה, תוקף הקישור פג</string>
<string name="detail_item_download_info_deleted_expires_x">נמחקה, הקישור יפוג ב־%1$s</string>
<string name="detail_item_download_info_download_failed_expired">ההורדה נכשלה, תוקף הקישור פג</string>
<string name="detail_menu_notifications_enabled">התראות פעילות</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">העתקה ללוח הגזירים (מצונזר)</string>
<string name="settings_advanced_export_logs_uploading">היומן נשלח…</string>
<string name="settings_advanced_clear_logs_deleted_toast">יומנים נמחקו</string>
<string name="detail_settings_notifications_open_channels_title">הגדרות תצורת התראות</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">להודיע רק פעם אחת</string>
<string name="main_banner_websocket_text">החלפה ל־WebSockets היא הדרך המומלצת להתחבר לשרת שלך ויכולה לשפר את חייה הסוללה אך היא עשויה לדרוש <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">שינויים נוספים במתווך שלך</a>. אפשר להפעיל או לכבות את זה בהגדרות.</string>
<string name="settings_notifications_insistent_max_priority_title">להמשיך להודיע לעדיפות הגבוהה ביותר</string>
<string name="detail_item_cannot_open_not_found">לא ניתן לפתוח את הצרופה: יכול להיות שהקובץ נמחק או שאין יישומון מותקן שיכול לפתוח את הקובץ.</string>
<string name="detail_item_cannot_open_url">לא ניתן לפתוח כתובת: %1$s</string>
<string name="notification_popup_file_downloading">בהורדה%1$s, %2$d%%
\n%3$s</string>
<string name="detail_item_cannot_open_apk">אי אפשר להתקין עוד יישומונים. יש להוריד דרך הדפדפן במקום. בתקלה #531 מופיעים פרטים נוספים.</string>
<string name="detail_settings_global_setting_suffix">נעשה שימוש בהגדרות גלובליות</string>
</resources> </resources>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="channel_notifications_min_name">通知 (優先度最低)</string> <string name="channel_notifications_min_name">優先度 最低</string>
<string name="detail_delete_dialog_cancel">キャンセル</string> <string name="detail_delete_dialog_cancel">キャンセル</string>
<string name="detail_menu_notifications_enabled">通知オン</string> <string name="detail_menu_notifications_enabled">通知オン</string>
<string name="settings_notifications_auto_download_summary_never">添付ファイルは自動的にダウンロードしない</string> <string name="settings_notifications_auto_download_summary_never">添付ファイルは自動的にダウンロードしない</string>
@ -12,13 +12,13 @@
<string name="settings_notifications_auto_delete_one_week">1週間後</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_one_month">1か月後</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string> <string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string>
<string name="channel_notifications_high_name">通知 (優先度高)</string> <string name="channel_notifications_high_name">優先度 </string>
<string name="channel_notifications_default_name">通知 (優先度通常)</string> <string name="channel_notifications_default_name">優先度 通常</string>
<string name="channel_subscriber_notification_noinstant_text_two">トピックを2件購読しています</string> <string name="channel_subscriber_notification_noinstant_text_two">トピックを2件購読しています</string>
<string name="add_dialog_login_new_user">新規ユーザー</string> <string name="add_dialog_login_new_user">新規ユーザー</string>
<string name="channel_notifications_max_name">通知 (優先度最高)</string> <string name="channel_notifications_max_name">優先度 最高</string>
<string name="channel_subscriber_notification_instant_text_two">即時配信トピックを2件購読しています</string> <string name="channel_subscriber_notification_instant_text_two">即時配信トピックを2件購読しています</string>
<string name="channel_notifications_low_name">通知 (優先度低)</string> <string name="channel_notifications_low_name">優先度 </string>
<string name="channel_subscriber_notification_title">通知の受信を待機しています</string> <string name="channel_subscriber_notification_title">通知の受信を待機しています</string>
<string name="channel_subscriber_notification_instant_text">即時配信トピックを購読しています</string> <string name="channel_subscriber_notification_instant_text">即時配信トピックを購読しています</string>
<string name="channel_subscriber_service_name">購読サービス</string> <string name="channel_subscriber_service_name">購読サービス</string>
@ -324,4 +324,23 @@
<string name="add_dialog_base_urls_dropdown_clear">サービスURLをクリア</string> <string name="add_dialog_base_urls_dropdown_clear">サービスURLをクリア</string>
<string name="main_banner_websocket_text">WebSocketへの切り替えはサーバーへの接続方法として推奨され、バッテリー寿命を改善できる可能性がありますが、<a href="https://ntfy.sh/docs/config/#nginxapache2caddy">プロクシへの追加設定</a>が必要となります。設定から切り替えることができます。</string> <string name="main_banner_websocket_text">WebSocketへの切り替えはサーバーへの接続方法として推奨され、バッテリー寿命を改善できる可能性がありますが、<a href="https://ntfy.sh/docs/config/#nginxapache2caddy">プロクシへの追加設定</a>が必要となります。設定から切り替えることができます。</string>
<string name="main_banner_websocket_button_enable_now">今すぐ有効化</string> <string name="main_banner_websocket_button_enable_now">今すぐ有効化</string>
<string name="detail_settings_about_header">About</string>
<string name="detail_settings_about_topic_url_title">トピックのURL</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">クリップボードにコピーしました</string>
<string name="main_menu_donate_title">寄付する💸</string>
<string name="detail_item_cannot_open_apk">アプリはインストールできなくなりました。代替手段としてブラウザからダウンロードしてください。詳細は issue #531 をご参照ください。</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">優先度最高は非表示になるまで通知継続</string>
<string name="channel_notifications_group_default_name">デフォルト</string>
<string name="settings_notifications_insistent_max_priority_title">優先度最高は通知継続</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">優先度最高は一回のみ通知</string>
<string name="detail_settings_notifications_dedicated_channels_title">カスタム通知設定</string>
<string name="detail_settings_notifications_open_channels_title">通知設定を編集</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">デフォルト設定を使用(サウンドやおやすみモード時の動作等)</string>
<string name="detail_settings_notifications_open_channels_summary">おやすみモード時の動作やサウンド等</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">この購読にカスタム設定を利用</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">通知を継続</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">一回のみ通知</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfyがUnifiedPushディストリビュータとして振る舞うようになります</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfyはUnifiedPushディストリビュータとして振る舞いません</string>
<string name="settings_advanced_unifiedpush_title">UnifiedPushを有効化する</string>
</resources> </resources>

View file

@ -0,0 +1,330 @@
<?xml version="1.0" encoding="utf-8"?>
<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

@ -1,32 +1,32 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="add_dialog_login_new_user">Ny bruker</string> <string name="add_dialog_login_new_user">Ny bruker</string>
<string name="channel_notifications_low_name">Merknader (lav prioritet)</string> <string name="channel_notifications_low_name">Lav prioritet</string>
<string name="channel_notifications_default_name">Merknader (forvalgt prioritet)</string> <string name="channel_notifications_default_name">Standard prioritet</string>
<string name="channel_subscriber_service_name">Abonnementstjeneste</string> <string name="channel_subscriber_service_name">Abonnementstjeneste</string>
<string name="channel_subscriber_notification_title">Lytter etter innkommende merknader</string> <string name="channel_subscriber_notification_title">Lytter etter innkommende varsler</string>
<string name="channel_subscriber_notification_instant_text">Du abonnerer på emner med umiddelbar levering</string> <string name="channel_subscriber_notification_instant_text">Abonnert på emner med umiddelbar levering</string>
<string name="channel_subscriber_notification_instant_text_one">Du abonnerer på ett emne med umiddelbar levering</string> <string name="channel_subscriber_notification_instant_text_one">Abonnert på ett emne med umiddelbar levering</string>
<string name="channel_subscriber_notification_instant_text_four">Du abonnerer på fire emner med umiddelbar levering</string> <string name="channel_subscriber_notification_instant_text_four">Abonnert på fire emner med umiddelbar levering</string>
<string name="channel_subscriber_notification_instant_text_more">Du abonnerer på %1$d emner med umiddelbar levering</string> <string name="channel_subscriber_notification_instant_text_more">Abonnert på %1$d emner med umiddelbar levering</string>
<string name="channel_subscriber_notification_noinstant_text_one">Du abonnerer på ett emne</string> <string name="channel_subscriber_notification_noinstant_text_one">Abonnert på ett emne</string>
<string name="channel_subscriber_notification_noinstant_text_two">Du abonnerer på to emner</string> <string name="channel_subscriber_notification_noinstant_text_two">Abonnert på to emner</string>
<string name="channel_subscriber_notification_noinstant_text">Du abonnerer på emner</string> <string name="channel_subscriber_notification_noinstant_text">Abonnert på emner</string>
<string name="channel_subscriber_notification_noinstant_text_three">Du abonnerer på tre emner</string> <string name="channel_subscriber_notification_noinstant_text_three">Abonnert på tre emner</string>
<string name="channel_subscriber_notification_noinstant_text_four">Du abonnerer på fire emner</string> <string name="channel_subscriber_notification_noinstant_text_four">Abonnert på fire emner</string>
<string name="refresh_message_result">%1$d merknad(er) mottatt</string> <string name="refresh_message_result">%1$d varsling(er) mottatt</string>
<string name="channel_notifications_max_name">Merknader (maks.-prioritet)</string> <string name="channel_notifications_max_name">Maks prioritet</string>
<string name="refresh_message_error_one">Kunne ikke gjenoppfriske abonnementet: %1$s</string> <string name="refresh_message_error_one">Kunne ikke oppdatere abonnement: %1$s</string>
<string name="main_menu_notifications_enabled">Merknader påslått</string> <string name="main_menu_notifications_enabled">Varsler påslått</string>
<string name="main_menu_notifications_disabled_forever">Merknader avslått</string> <string name="main_menu_notifications_disabled_forever">Varsler dempet</string>
<string name="main_menu_docs_title">Les dokumentasjonen</string> <string name="main_menu_docs_title">Les dokumentasjonen</string>
<string name="main_menu_rate_title">Vurder programmet</string> <string name="main_menu_rate_title">Vurder appen</string>
<string name="main_action_mode_menu_unsubscribe">Opphev abonnement</string> <string name="main_action_mode_menu_unsubscribe">Avslutt abonnement</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Slett for godt</string> <string name="main_action_mode_delete_dialog_permanently_delete">Slett for godt</string>
<string name="main_action_mode_delete_dialog_cancel">Avbryt</string> <string name="main_action_mode_delete_dialog_cancel">Avbryt</string>
<string name="main_item_status_text_one">%1$d merknad</string> <string name="main_item_status_text_one">%1$d varsling</string>
<string name="main_item_status_text_not_one">%1$d merknader</string> <string name="main_item_status_text_not_one">%1$d varsler</string>
<string name="main_item_status_reconnecting">kobler til igjen</string> <string name="main_item_status_reconnecting">kobler til på nytt</string>
<string name="main_item_date_yesterday">i går</string> <string name="main_item_date_yesterday">i går</string>
<string name="main_add_button_description">Legg til abonnement</string> <string name="main_add_button_description">Legg til abonnement</string>
<string name="main_banner_websocket_button_remind_later">Spør senere</string> <string name="main_banner_websocket_button_remind_later">Spør senere</string>
@ -36,41 +36,41 @@
<string name="add_dialog_instant_delivery">Umiddelbar varsling i slumremodus</string> <string name="add_dialog_instant_delivery">Umiddelbar varsling i slumremodus</string>
<string name="main_banner_battery_button_remind_later">Spør senere</string> <string name="main_banner_battery_button_remind_later">Spør senere</string>
<string name="main_banner_battery_button_fix_now">Fiks nå</string> <string name="main_banner_battery_button_fix_now">Fiks nå</string>
<string name="main_action_mode_delete_dialog_message">Opphev abonnement på valgte emne(r) og slett alle merknader du har mottatt for godt\?</string> <string name="main_action_mode_delete_dialog_message">Avslutt abonnementet på de valgte emnene og slett alle varsler permanent\?</string>
<string name="main_no_subscriptions_text">Abonner på noe først</string> <string name="main_no_subscriptions_text">Det ser ut til at du ikke har noen abonnementer ennå.</string>
<string name="main_banner_battery_text">Batterioptimalisering bør skrus av for å unngå problemer med merknadsleveringen.</string> <string name="main_banner_battery_text">Batterioptimalisering bør være av for å unngå problemer med varsellevering.</string>
<string name="main_banner_battery_button_dismiss">Avfei</string> <string name="main_banner_battery_button_dismiss">Avfei</string>
<string name="main_banner_websocket_button_dismiss">Avfei</string> <string name="main_banner_websocket_button_dismiss">Avfei</string>
<string name="add_dialog_description_below">Det kan hende emner ikke er passordsbeskyttet, så velg et navn som ikke er enkelt å gjette. Når du har abonnert kan du utføre PUT/POST av merknader.</string> <string name="add_dialog_description_below">Emner er kanskje ikke passordbeskyttet, så velg et navn som er vanskelig å gjette. Når du har abonnert, kan du sende PUT/POST-varsler.</string>
<string name="add_dialog_use_another_server_description">Du kan abonnere på emner fra en annen tjener. Skriv inn tjener-nettadressen nedenfor.</string> <string name="add_dialog_use_another_server_description">Skriv inn tjeneste-URLer nedenfor for å abonnere på emner fra andre servere.</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string> <string name="main_item_status_unified_push">%1$s (UnifiedPush)</string>
<string name="add_dialog_button_login">Logg inn</string> <string name="add_dialog_button_login">Logg inn</string>
<string name="add_dialog_error_connection_failed">Tilkobling mislyktes: %1$s</string> <string name="add_dialog_error_connection_failed">Tilkobling mislyktes: %1$s</string>
<string name="add_dialog_login_username_hint">Brukernavn</string> <string name="add_dialog_login_username_hint">Brukernavn</string>
<string name="add_dialog_login_password_hint">Passord</string> <string name="add_dialog_login_password_hint">Passord</string>
<string name="add_dialog_login_error_not_authorized">Innlogging mislyktes. Brukeren %1$s er ikke identitetsbekreftet.</string> <string name="add_dialog_login_error_not_authorized">Innlogging mislyktes. Bruker %1$s har ikke tilgang.</string>
<string name="detail_no_notifications_text">Du har ikke mottatt noen merknader om dette emnet enda.</string> <string name="detail_no_notifications_text">Du har ikke mottatt noen merknader om dette emnet enda.</string>
<string name="detail_clear_dialog_message">Slett alle andre merknader i emnet\?</string> <string name="detail_clear_dialog_message">Slett alle varsler i dette emnet\?</string>
<string name="detail_delete_dialog_permanently_delete">Slett for godt</string> <string name="detail_delete_dialog_permanently_delete">Slett for godt</string>
<string name="detail_delete_dialog_cancel">Avbryt</string> <string name="detail_delete_dialog_cancel">Avbryt</string>
<string name="detail_test_title">Test: Du kan sette en tittel hvis du vil</string> <string name="detail_test_title">Test: Du kan sette en tittel hvis du vil.</string>
<string name="detail_test_message_error">Kan ikke sende melding: %1$s</string> <string name="detail_test_message_error">Kan ikke sende melding: %1$s</string>
<string name="detail_how_to_link">Mer detaljert instruks er å finne på ntfy.sh-nettsiden og i dokumentasjonen.</string> <string name="detail_how_to_link">Detaljerte instruksjoner er tilgjengelig på ntfy.sh, og i dokumentasjonen.</string>
<string name="detail_delete_dialog_message">Opphev abonnement på dette emnet og slett alle merknader du har mottatt\?</string> <string name="detail_delete_dialog_message">Opphev abonnement på dette emnet og slett alle merknader du har mottatt\?</string>
<string name="detail_test_message_error_unauthorized_anon">Kan ikke sende melding: Anonym publisering tillates ikke</string> <string name="detail_test_message_error_unauthorized_anon">Kan ikke sende melding: Anonym publisering er ikke tillatt.</string>
<string name="add_dialog_instant_delivery_description">Forsikrer at meldinger blir levert umiddelbart, selv når enheten er inaktiv.</string> <string name="add_dialog_instant_delivery_description">Forsikrer at meldinger blir levert umiddelbart, selv når enheten er inaktiv.</string>
<string name="add_dialog_login_description">Dette emnet krever at du logger inn. Skriv inn et brukernavn og passord.</string> <string name="add_dialog_login_description">Dette emnet krever at du logger inn. Skriv inn et brukernavn og passord.</string>
<string name="detail_how_to_intro">For å sende merknader til dette emnet kan du utføre PUT eller POST til emne-nettadressen.</string> <string name="detail_how_to_intro">For å sende merknader til dette emnet kan du utføre PUT eller POST til emne-nettadressen.</string>
<string name="detail_how_to_example">Eksempel (ved bruk av Curl):<br/><tt>$ curl -d «Hei» %1$s</tt></string> <string name="detail_how_to_example">Eksempel (ved bruk av curl):<br/><tt>$ curl -d \"Hei\" %1$s</tt></string>
<string name="detail_item_snack_deleted">Merknad slettet</string> <string name="detail_item_snack_deleted">Merknad slettet</string>
<string name="detail_item_menu_cancel">Avbryt nedlasting</string> <string name="detail_item_menu_cancel">Avbryt nedlasting</string>
<string name="detail_item_menu_save_file">Lagre fil</string> <string name="detail_item_menu_save_file">Lagre fil</string>
<string name="detail_item_menu_copy_url">Kopier nettadresse</string> <string name="detail_item_menu_copy_url">Kopier nettadresse</string>
<string name="detail_item_menu_copy_url_copied">Nettadresse kopiert til utklippstavlen</string> <string name="detail_item_menu_copy_url_copied">URL kopiert til utklippstavlen</string>
<string name="detail_item_menu_copy_contents">Kopier merknad</string> <string name="detail_item_menu_copy_contents">Kopier merknad</string>
<string name="detail_item_cannot_download">Kan ikke åpne eller laste ned vedlegg. Lenken utløp og ingen lokal fil ble funnet.</string> <string name="detail_item_cannot_download">Kan ikke åpne eller laste ned vedlegg. Lenken utløp og ingen lokal fil ble funnet.</string>
<string name="detail_item_cannot_open">Kan ikke åpne vedlegg: %1$s</string> <string name="detail_item_cannot_open">Kan ikke åpne vedlegg: %1$s</string>
<string name="detail_item_cannot_open_not_found">Kan ikke åpne vedlegg: Filen kan ha blitt slettet, eller så mangler det et program til å åpne filen.</string> <string name="detail_item_cannot_open_not_found">Kan ikke åpne vedlegg: Filen kan ha blitt slettet, eller ingen installerte apper kan åpne filen.</string>
<string name="detail_item_cannot_open_url">Kan ikke åpne klikkbar nettadresse: %1$s</string> <string name="detail_item_cannot_open_url">Kan ikke åpne klikkbar nettadresse: %1$s</string>
<string name="detail_item_cannot_delete">Kan ikke slette vedlegg: %1$s</string> <string name="detail_item_cannot_delete">Kan ikke slette vedlegg: %1$s</string>
<string name="detail_item_download_info_not_downloaded">ikke nedlastet</string> <string name="detail_item_download_info_not_downloaded">ikke nedlastet</string>
@ -81,8 +81,8 @@
<string name="detail_item_download_info_download_failed">nedlasting mislyktes</string> <string name="detail_item_download_info_download_failed">nedlasting mislyktes</string>
<string name="detail_item_download_info_download_failed_expired">nedlasting mislyktes, utløpt lenke</string> <string name="detail_item_download_info_download_failed_expired">nedlasting mislyktes, utløpt lenke</string>
<string name="detail_item_download_info_download_failed_expires_x">nedlasting mislyktes, lenke utløper %1$s</string> <string name="detail_item_download_info_download_failed_expires_x">nedlasting mislyktes, lenke utløper %1$s</string>
<string name="detail_menu_notifications_enabled">Merknader påslått</string> <string name="detail_menu_notifications_enabled">Varsler på</string>
<string name="detail_menu_notifications_disabled_forever">Merknader avslått</string> <string name="detail_menu_notifications_disabled_forever">Varsler dempet</string>
<string name="detail_menu_enable_instant">Skru på umiddelbar levering</string> <string name="detail_menu_enable_instant">Skru på umiddelbar levering</string>
<string name="detail_menu_disable_instant">Skru av umiddelbar levering</string> <string name="detail_menu_disable_instant">Skru av umiddelbar levering</string>
<string name="detail_menu_test">Send testmerknad</string> <string name="detail_menu_test">Send testmerknad</string>
@ -91,17 +91,17 @@
<string name="detail_menu_settings">Abonnementsinnstillinger</string> <string name="detail_menu_settings">Abonnementsinnstillinger</string>
<string name="detail_menu_unsubscribe">Opphev abonnement</string> <string name="detail_menu_unsubscribe">Opphev abonnement</string>
<string name="detail_instant_delivery_disabled">Umiddelbar levering avskrudd</string> <string name="detail_instant_delivery_disabled">Umiddelbar levering avskrudd</string>
<string name="detail_item_menu_copy_contents_copied">Merknad kopiert til utklippstavlen</string> <string name="detail_item_menu_copy_contents_copied">Varsel kopiert til utklippstavlen</string>
<string name="detail_test_message_error_unauthorized_user">Kan ikke sende melding: Brukeren «%1$s» er ikke identitetsbekreftet</string> <string name="detail_test_message_error_unauthorized_user">Kan ikke sende melding: Brukeren \"%1$s\" er ikke autorisert.</string>
<string name="detail_test_message_error_too_large">Kan ikke sende melding: Vedlegget er for stort</string> <string name="detail_test_message_error_too_large">Kan ikke sende melding: Vedlegget er for stort.</string>
<string name="detail_copied_to_clipboard_message">Kopiert til utklippstavlen</string> <string name="detail_copied_to_clipboard_message">Kopiert til utklippstavlen</string>
<string name="detail_instant_delivery_enabled">Umiddelbar levering påskrudd</string> <string name="detail_instant_delivery_enabled">Umiddelbar levering påskrudd</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">Slett for godt</string> <string name="detail_action_mode_delete_dialog_permanently_delete">Slett permanent</string>
<string name="detail_action_mode_delete_dialog_cancel">Avbryt</string> <string name="detail_action_mode_delete_dialog_cancel">Avbryt</string>
<string name="share_title">Del</string> <string name="share_title">Del</string>
<string name="share_menu_send">Del</string> <string name="share_menu_send">Del</string>
<string name="share_content_title">Meldingsforhåndsvisning</string> <string name="share_content_title">Meldingsforhåndsvisning</string>
<string name="share_content_text_hint">Legg innhold du ønsker å dele her</string> <string name="share_content_text_hint">Legg til innhold for å dele her</string>
<string name="share_content_image_text">Et bilde ble delt med deg</string> <string name="share_content_image_text">Et bilde ble delt med deg</string>
<string name="share_content_file_text">En fil ble delt med deg</string> <string name="share_content_file_text">En fil ble delt med deg</string>
<string name="share_topic_title">Del til</string> <string name="share_topic_title">Del til</string>
@ -112,33 +112,33 @@
<string name="notification_dialog_2h">2 timer</string> <string name="notification_dialog_2h">2 timer</string>
<string name="notification_dialog_8h">8 timer</string> <string name="notification_dialog_8h">8 timer</string>
<string name="notification_dialog_tomorrow">Til i morgen</string> <string name="notification_dialog_tomorrow">Til i morgen</string>
<string name="notification_dialog_forever">Til de blir slått på igjen</string> <string name="notification_dialog_forever">Inntil gjenopptatt</string>
<string name="notification_popup_action_open">Åpne</string> <string name="notification_popup_action_open">Åpne</string>
<string name="settings_title">Innstillinger</string> <string name="settings_title">Innstillinger</string>
<string name="settings_notifications_header">Merknader</string> <string name="settings_notifications_header">Merknader</string>
<string name="settings_notifications_muted_until_title">Sett merknader på pause</string> <string name="settings_notifications_muted_until_title">Skru av varsler</string>
<string name="settings_notifications_muted_until_show_all">Alle merknader vil bli vist</string> <string name="settings_notifications_muted_until_show_all">Viser alle varsler</string>
<string name="settings_notifications_muted_until_forever">Merknader forstummet til de blir skrudd på igjen</string> <string name="settings_notifications_muted_until_forever">Varsler er dempet til de gjenopptas</string>
<string name="settings_notifications_muted_until_x">Merknader forstummet til %1$s</string> <string name="settings_notifications_muted_until_x">Varsler avslått til %1$s</string>
<string name="settings_notifications_min_priority_min">Alle prioriteter</string> <string name="settings_notifications_min_priority_min">Alle prioriteter</string>
<string name="settings_notifications_min_priority_summary_max">Vis merknader hvis prioritet er 5 (maks.)</string> <string name="settings_notifications_min_priority_summary_max">Vis varsler hvis prioritet er 5 (maks.)</string>
<string name="settings_notifications_min_priority_default">Forvalgt prioritet</string> <string name="settings_notifications_min_priority_default">Standardprioritet og over</string>
<string name="settings_notifications_min_priority_low">Lav prioritet og høyere</string> <string name="settings_notifications_min_priority_low">Lav prioritet og høyere</string>
<string name="settings_notifications_min_priority_high">Høy prioritet og høyere</string> <string name="settings_notifications_min_priority_high">Høy prioritet og over</string>
<string name="settings_notifications_min_priority_max">Kun maks.-prioritet</string> <string name="settings_notifications_min_priority_max">Kun maks.-prioritet</string>
<string name="settings_notifications_auto_download_title">Last ned vedlegg</string> <string name="settings_notifications_auto_download_title">Last ned vedlegg</string>
<string name="settings_notifications_auto_download_summary_always">Last ned alle vedlegg automatisk</string> <string name="settings_notifications_auto_download_summary_always">Last ned alle vedlegg automatisk</string>
<string name="settings_notifications_auto_download_summary_never">Aldri last ned vedlegg automatisk</string> <string name="settings_notifications_auto_download_summary_never">Last aldri ned vedlegg automatisk</string>
<string name="settings_notifications_auto_download_summary_smaller_than_x">Last ned vedlegg opptil %1$s automatisk</string> <string name="settings_notifications_auto_download_summary_smaller_than_x">Last ned vedlegg opptil %1$s automatisk</string>
<string name="settings_notifications_auto_download_never">Aldri last ned automatisk</string> <string name="settings_notifications_auto_download_never">Aldri last ned noe automatisk</string>
<string name="settings_notifications_auto_download_always">Alltid last ned automatisk</string> <string name="settings_notifications_auto_download_always">Alltid last ned automatisk</string>
<string name="settings_notifications_auto_download_100k">Hvis mindre enn 100 KB</string> <string name="settings_notifications_auto_download_100k">Hvis under 100 kB</string>
<string name="settings_notifications_auto_download_1m">Hvis mindre enn 1 MB</string> <string name="settings_notifications_auto_download_1m">Hvis under 1 MB</string>
<string name="settings_notifications_auto_download_5m">Hvis mindre enn 5 MB</string> <string name="settings_notifications_auto_download_5m">Hvis under 5 MB</string>
<string name="settings_notifications_auto_download_10m">Hvis mindre enn 10 MB</string> <string name="settings_notifications_auto_download_10m">Hvis under 10 MB</string>
<string name="settings_notifications_min_priority_summary_any">Merknader av alle prioriteter vises</string> <string name="settings_notifications_min_priority_summary_any">Viser alle varsler</string>
<string name="settings_notifications_min_priority_summary_x_or_higher">Vis merknader hvis prioritet er %1$d (%2$s) eller høyere</string> <string name="settings_notifications_min_priority_summary_x_or_higher">Vis varsler hvis prioritet er %1$d (%2$s) eller høyere</string>
<string name="settings_notifications_auto_delete_summary_never">Aldri slett merknader automatisk</string> <string name="settings_notifications_auto_delete_summary_never">Slett aldri varsler automatisk</string>
<string name="settings_notifications_auto_delete_one_week">Etter én uke</string> <string name="settings_notifications_auto_delete_one_week">Etter én uke</string>
<string name="settings_notifications_auto_delete_summary_one_month">Slett merknader automatisk etter én måned</string> <string name="settings_notifications_auto_delete_summary_one_month">Slett merknader automatisk etter én måned</string>
<string name="settings_notifications_auto_delete_one_month">Etter én måned</string> <string name="settings_notifications_auto_delete_one_month">Etter én måned</string>
@ -149,37 +149,37 @@
<string name="settings_general_users_summary">Legg til/fjern brukere for beskyttede emner</string> <string name="settings_general_users_summary">Legg til/fjern brukere for beskyttede emner</string>
<string name="settings_general_users_prefs_title">Brukere</string> <string name="settings_general_users_prefs_title">Brukere</string>
<string name="settings_general_users_prefs_user_not_used">Ikke brukt av noen emner</string> <string name="settings_general_users_prefs_user_not_used">Ikke brukt av noen emner</string>
<string name="settings_general_users_prefs_user_used_by_one">Brukt av emnet «%1$s»</string> <string name="settings_general_users_prefs_user_used_by_one">Brukt av emnet \"%1$s\"</string>
<string name="settings_general_users_prefs_user_used_by_many">Brukt av emnene «%1$s»</string> <string name="settings_general_users_prefs_user_used_by_many">Brukt av emnene %1$s</string>
<string name="settings_general_users_prefs_user_add">Legg til brukere</string> <string name="settings_general_users_prefs_user_add">Legg til brukere</string>
<string name="settings_general_users_prefs_user_add_title">Legg til ny bruker</string> <string name="settings_general_users_prefs_user_add_title">Legg til ny bruker</string>
<string name="settings_general_users_prefs_user_add_summary">Opprett en ny bruker for en ny tjener</string> <string name="settings_general_users_prefs_user_add_summary">Opprett en ny bruker for en ny tjener</string>
<string name="settings_general_dark_mode_title">Mørk drakt</string> <string name="settings_general_dark_mode_title">Mørk drakt</string>
<string name="settings_general_dark_mode_summary_system">Ikled systemets drakt</string> <string name="settings_general_dark_mode_summary_system">Bruker systemets standard</string>
<string name="settings_general_dark_mode_summary_light">Lys drakt iført</string> <string name="settings_general_dark_mode_summary_light">Lys modus på</string>
<string name="settings_general_dark_mode_summary_dark">Mørk dra iført. Er du en mørkets fyrste\?</string> <string name="settings_general_dark_mode_summary_dark">Mørk modus på. Er du en vampyr\?</string>
<string name="settings_general_dark_mode_entry_system">Bruk systemets forvalg</string> <string name="settings_general_dark_mode_entry_system">Bruk systemets forvalg</string>
<string name="settings_general_dark_mode_entry_light">Lys drakt</string> <string name="settings_general_dark_mode_entry_light">Lys drakt</string>
<string name="settings_general_dark_mode_entry_dark">Mørk drakt</string> <string name="settings_general_dark_mode_entry_dark">Mørk drakt</string>
<string name="settings_backup_restore_header">Sikkerhetskopiering og gjenoppretting</string> <string name="settings_backup_restore_header">Sikkerhetskopiering og gjenoppretting</string>
<string name="settings_notifications_auto_delete_summary_one_day">Slett merknader automatisk etter én dag</string> <string name="settings_notifications_auto_delete_summary_one_day">Slett merknader automatisk etter én dag</string>
<string name="settings_general_default_base_url_message">For å bruke din egen tjener som forvalg når du abonnerer på nye emner og/eller deler til emner, kan du skrive inn tjenerens grunn-nettadresse.</string> <string name="settings_general_default_base_url_message">Skriv inn serverens rot-URL for å bruke din egen server som standard når du abonnerer på nye emner og/eller deler til emner.</string>
<string name="settings_backup_restore_restore_title">Gjenopprett fra fil</string> <string name="settings_backup_restore_restore_title">Gjenopprett fra fil</string>
<string name="settings_advanced_header">Avansert</string> <string name="settings_advanced_header">Avansert</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">Kopier til utklippstavlen (sensurert)</string> <string name="settings_advanced_export_logs_entry_copy_scrubbed">Kopier til utklippstavlen (sensurert)</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">Last opp og kopier lenke (sensurert)</string> <string name="settings_advanced_export_logs_entry_upload_scrubbed">Last opp og kopier lenke (sensurert)</string>
<string name="settings_advanced_export_logs_copied_logs">Loggføring kopiert til utklippstavlen</string> <string name="settings_advanced_export_logs_copied_logs">Loggføring kopiert til utklippstavlen</string>
<string name="settings_advanced_export_logs_uploading">Laster opp logg …</string> <string name="settings_advanced_export_logs_uploading">Laster opp logg …</string>
<string name="settings_advanced_export_logs_copied_url">Loggføring opplastet og nettadresse kopiert</string> <string name="settings_advanced_export_logs_copied_url">Logger lastet opp og URL kopiert</string>
<string name="settings_backup_restore_backup_title">Sikkerhetskopiering til fil</string> <string name="settings_backup_restore_backup_title">Sikkerhetskopier til fil</string>
<string name="settings_backup_restore_backup_summary">Eksporter oppsett, merknader og brukere</string> <string name="settings_backup_restore_backup_summary">Eksporter konfigurasjon, varsler og brukere</string>
<string name="settings_backup_restore_backup_entry_everything">Alt</string> <string name="settings_backup_restore_backup_entry_everything">Alt</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">Alt, unntatt brukere</string> <string name="settings_backup_restore_backup_entry_everything_no_users">Alt, unntatt brukere</string>
<string name="settings_advanced_broadcast_summary_enabled">Programmer kan motta innkommende merknader som kringkastinger</string> <string name="settings_advanced_broadcast_summary_enabled">Programmer kan motta innkommende merknader som kringkastinger</string>
<string name="settings_advanced_broadcast_summary_disabled">Programmer kan motta merknader som kringkastinger</string> <string name="settings_advanced_broadcast_summary_disabled">Programmer kan motta merknader som kringkastinger</string>
<string name="settings_advanced_record_logs_title">Loggføring</string> <string name="settings_advanced_record_logs_title">Registrer logger</string>
<string name="settings_advanced_record_logs_summary_enabled">Logger blir registrert på enheten din. Opptil 1000 oppføringer lagres.</string> <string name="settings_advanced_record_logs_summary_enabled">Logger (opptil 1000 oppføringer) til enheten …</string>
<string name="settings_advanced_record_logs_summary_disabled">Skru på registrering av logger, slik at du kan dele dem senere. Dette er nyttig i avlusingsøyemed.</string> <string name="settings_advanced_record_logs_summary_disabled">Slå på logging, slik at du kan dele logger senere for å diagnostisere problemer.</string>
<string name="settings_advanced_export_logs_title">Kopier/last opp logger</string> <string name="settings_advanced_export_logs_title">Kopier/last opp logger</string>
<string name="settings_advanced_export_logs_entry_copy_original">Kopier til utklippstavlen</string> <string name="settings_advanced_export_logs_entry_copy_original">Kopier til utklippstavlen</string>
<string name="settings_advanced_export_logs_error_uploading">Kunne ikke laste opp logger: %1$s</string> <string name="settings_advanced_export_logs_error_uploading">Kunne ikke laste opp logger: %1$s</string>
@ -188,43 +188,43 @@
\n \n
\n%1$s \n%1$s
\n \n
\nPassord vil alltid fjernes, men er ikke opplistet her.</string> \nPassord er fjernet, men er ikke opplistet her.</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">Ingen emner/vertsnavn ble fjernet. Kanskje du ikke har noen abonnementer\?</string> <string name="settings_advanced_export_logs_scrub_dialog_empty">Ingen emner/vertsnavn ble fjernet. Kanskje du ikke har noen abonnementer\?</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">Skjønner</string> <string name="settings_advanced_export_logs_scrub_dialog_button_ok">OK</string>
<string name="settings_advanced_clear_logs_title">Tøm loggføring</string> <string name="settings_advanced_clear_logs_title">Tøm loggføring</string>
<string name="settings_advanced_clear_logs_summary">Slett tidligere registrert loggføring, og start på ny</string> <string name="settings_advanced_clear_logs_summary">Slett tidligere registrert loggføring, og start på ny</string>
<string name="settings_advanced_clear_logs_deleted_toast">Loggføring slettet</string> <string name="settings_advanced_clear_logs_deleted_toast">Logger slettet</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Bruk en JSON-strøm over HTTP for å koble til tjeneren. Dette er en godt utprøvd metode, selv om den kan bruke mer batteri.</string> <string name="settings_advanced_connection_protocol_summary_jsonhttp">Bruk en JSON-strøm over HTTP for å koble til tjeneren. Dette er en godt utprøvd metode, men kan bruke mer batteri.</string>
<string name="settings_about_header">Om</string> <string name="settings_about_header">Om</string>
<string name="settings_about_version_copied_to_clipboard_message">Kopiert til utklippstavlen</string> <string name="settings_about_version_copied_to_clipboard_message">Kopiert til utklippstavlen</string>
<string name="user_dialog_title_add">Legg til bruker</string> <string name="user_dialog_title_add">Legg til bruker</string>
<string name="user_dialog_title_edit">Rediger bruker</string> <string name="user_dialog_title_edit">Rediger bruker</string>
<string name="user_dialog_base_url_hint">Tjener-nettadresse</string> <string name="user_dialog_base_url_hint">Tjeneste-URL</string>
<string name="user_dialog_description_edit">Du kan redigere brukernavn/passord for valgt bruker, eller slette den helt.</string> <string name="user_dialog_description_edit">Du kan redigere brukernavn/passord for valgt bruker, eller slette den helt.</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">JSON-strøm over HTTP</string> <string name="settings_advanced_connection_protocol_entry_jsonhttp">JSON-strøm over HTTP</string>
<string name="settings_advanced_connection_protocol_entry_ws">Vev-sockets</string> <string name="settings_advanced_connection_protocol_entry_ws">Vev-sockets</string>
<string name="user_dialog_description_add">Du kan legge til en bruker her som du kan tilknytte et gitt emne senere.</string> <string name="user_dialog_description_add">Du kan legge til en bruker her. Alle emner for den gitte serveren vil bruke denne brukeren.</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string> <string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
<string name="user_dialog_password_hint_edit">Passord (uendret hvis tomt)</string> <string name="user_dialog_password_hint_edit">Passord (uendret hvis tomt)</string>
<string name="user_dialog_button_add">Legg til bruker</string> <string name="user_dialog_button_add">Legg til bruker</string>
<string name="user_dialog_button_cancel">Avbryt</string> <string name="user_dialog_button_cancel">Avbryt</string>
<string name="user_dialog_button_delete">Slett bruker</string> <string name="user_dialog_button_delete">Slett bruker</string>
<string name="user_dialog_button_save">Lagre</string> <string name="user_dialog_button_save">Lagre</string>
<string name="channel_subscriber_notification_instant_text_three">Du abonnerer på tre emner med umiddelbar levering</string> <string name="channel_subscriber_notification_instant_text_three">Abonnert på tre emner med umiddelbar levering</string>
<string name="channel_subscriber_notification_noinstant_text_more">Du abonnerer på %1$d emner</string> <string name="channel_subscriber_notification_noinstant_text_more">Abonnert på %1$d emner</string>
<string name="main_menu_settings_title">Innstillinger</string> <string name="main_menu_settings_title">Innstillinger</string>
<string name="channel_notifications_min_name">Merknader (min.-prioritet)</string> <string name="channel_notifications_min_name">Minste prioritet</string>
<string name="channel_notifications_high_name">Merknader (høy prioritet)</string> <string name="channel_notifications_high_name">Høy prioritet</string>
<string name="channel_subscriber_notification_instant_text_two">Du abonnerer på to emner med umiddelbar levering</string> <string name="channel_subscriber_notification_instant_text_two">Abonnert på to emner med umiddelbar levering</string>
<string name="refresh_message_error">Kunne ikke gjenoppfriske %1$d abonnement(er) <string name="refresh_message_error">Kunne ikke oppdatere %1$d abonnement(er)
\n \n
\n%2$s</string> \n%2$s</string>
<string name="add_dialog_button_back">Tilbake</string> <string name="add_dialog_button_back">Tilbake</string>
<string name="refresh_message_no_results">Alt er av nyeste dato</string> <string name="refresh_message_no_results">Alt er oppdatert</string>
<string name="main_action_bar_title">Abonnerte emner</string> <string name="main_action_bar_title">Abonnerte emner</string>
<string name="main_menu_notifications_disabled_until">Merknader avslått til %1$s</string> <string name="main_menu_notifications_disabled_until">Varsler dempet til %1$s</string>
<string name="add_dialog_login_title">Innlogging kreves</string> <string name="add_dialog_login_title">Innlogging nødvendig</string>
<string name="main_menu_report_bug_title">Innrapporter en feil</string> <string name="main_menu_report_bug_title">Rapporter en feil</string>
<string name="add_dialog_button_subscribe">Abonner</string> <string name="add_dialog_button_subscribe">Abonner</string>
<string name="detail_clear_dialog_permanently_delete">Slett for godt</string> <string name="detail_clear_dialog_permanently_delete">Slett for godt</string>
<string name="detail_item_tags">Etiketter: %1$s</string> <string name="detail_item_tags">Etiketter: %1$s</string>
@ -234,10 +234,10 @@
<string name="detail_item_menu_delete">Slett fil</string> <string name="detail_item_menu_delete">Slett fil</string>
<string name="detail_item_menu_download">Last ned fil</string> <string name="detail_item_menu_download">Last ned fil</string>
<string name="detail_item_menu_open">Åpne fil</string> <string name="detail_item_menu_open">Åpne fil</string>
<string name="detail_item_saved_successfully">Lagret som «%1$s» i nedlastingsmappen</string> <string name="detail_item_saved_successfully">Lagret som \"%1$s\" i nedlastingsmappen</string>
<string name="detail_item_download_info_not_downloaded_expired">ikke nedlastet, utløpt lenke</string> <string name="detail_item_download_info_not_downloaded_expired">ikke nedlastet, utløpt lenke</string>
<string name="detail_item_download_info_not_downloaded_expires_x">ikke nedlastet, utløper %1$s</string> <string name="detail_item_download_info_not_downloaded_expires_x">ikke nedlastet, utløper %1$s</string>
<string name="detail_menu_notifications_disabled_until">Merknader avslått til %1$s</string> <string name="detail_menu_notifications_disabled_until">Varsler avslått til %1$s</string>
<string name="detail_item_cannot_save">Kan ikke lagre vedlegg: %1$s</string> <string name="detail_item_cannot_save">Kan ikke lagre vedlegg: %1$s</string>
<string name="detail_action_mode_menu_copy">Kopier</string> <string name="detail_action_mode_menu_copy">Kopier</string>
<string name="notification_popup_action_cancel">Avbryt</string> <string name="notification_popup_action_cancel">Avbryt</string>
@ -245,9 +245,9 @@
\nFil: %2$s</string> \nFil: %2$s</string>
<string name="notification_popup_file_downloading">Laster ned %1$s, %2$d%% <string name="notification_popup_file_downloading">Laster ned %1$s, %2$d%%
\n%3$s</string> \n%3$s</string>
<string name="detail_item_download_failed">Nedlasting av vedlegg mislyktes: %1$s</string> <string name="detail_item_download_failed">Kunne ikke laste ned vedlegg: %1$s</string>
<string name="detail_action_mode_menu_delete">Slett</string> <string name="detail_action_mode_menu_delete">Slett</string>
<string name="detail_action_mode_delete_dialog_message">Slett valgt(e) merknad(er)\?</string> <string name="detail_action_mode_delete_dialog_message">Vil du slette valgt(e) varsling(er) permanent\?</string>
<string name="detail_settings_title">Abonnementsinnstillinger</string> <string name="detail_settings_title">Abonnementsinnstillinger</string>
<string name="share_suggested_topics">Foreslåtte emner</string> <string name="share_suggested_topics">Foreslåtte emner</string>
<string name="share_successful">Melding publisert</string> <string name="share_successful">Melding publisert</string>
@ -256,27 +256,27 @@
<string name="notification_popup_file_download_successful">%1$s <string name="notification_popup_file_download_successful">%1$s
\nFil: %2$s, nedlastet</string> \nFil: %2$s, nedlastet</string>
<string name="share_content_image_error">Kan ikke lese bilde: %1$s</string> <string name="share_content_image_error">Kan ikke lese bilde: %1$s</string>
<string name="notification_dialog_enabled_toast_message">Merknader skrudd på igjen</string> <string name="notification_dialog_enabled_toast_message">Varsler gjenopptatt</string>
<string name="notification_dialog_muted_until_toast_message">Merknader satt på pause til %1$s</string> <string name="notification_dialog_muted_until_toast_message">Varsler avslått til %1$s</string>
<string name="settings_notifications_min_priority_title">Min.-prioritet</string> <string name="settings_notifications_min_priority_title">Minste prioritet</string>
<string name="share_content_file_error">Kan ikke lese filinfo: %1$s</string> <string name="share_content_file_error">Kan ikke lese filinformasjon: %1$s</string>
<string name="notification_dialog_title">Sett merknader på pause</string> <string name="notification_dialog_title">Skru av varsler</string>
<string name="notification_dialog_muted_forever_toast_message">Merknader satt på pause</string> <string name="notification_dialog_muted_forever_toast_message">Varsler dempet</string>
<string name="notification_dialog_1h">1 time</string> <string name="notification_dialog_1h">1 time</string>
<string name="notification_popup_file_download_failed">%1$s <string name="notification_popup_file_download_failed">%1$s
\nFil: %2$s, nedlasting mislyktes</string> \nFil: %2$s, nedlasting mislyktes</string>
<string name="user_dialog_username_hint">Brukernavn</string> <string name="user_dialog_username_hint">Brukernavn</string>
<string name="settings_notifications_auto_download_50m">Hvis mindre enn 50 MB</string> <string name="settings_notifications_auto_download_50m">Hvis under 50 MB</string>
<string name="settings_notifications_auto_delete_title">Slett merknader</string> <string name="settings_notifications_auto_delete_title">Slett merknader</string>
<string name="settings_notifications_auto_download_500k">Hvis mindre enn 500 KB</string> <string name="settings_notifications_auto_download_500k">Hvis under 500 kB</string>
<string name="settings_backup_restore_backup_failed">Sikkerhetskopiering mislyktes: %1$s</string> <string name="settings_backup_restore_backup_failed">Sikkerhetskopiering mislyktes: %1$s</string>
<string name="settings_backup_restore_restore_successful">Gjenopprettet</string> <string name="settings_backup_restore_restore_successful">Gjenoppretting vellykket</string>
<string name="user_dialog_password_hint_add">Passord</string> <string name="user_dialog_password_hint_add">Passord</string>
<string name="settings_backup_restore_restore_failed">Gjenoppretting mislyktes: %1$s</string> <string name="settings_backup_restore_restore_failed">Gjenoppretting mislyktes: %1$s</string>
<string name="settings_advanced_export_logs_entry_upload_original">Last opp og kopier lenke</string> <string name="settings_advanced_export_logs_entry_upload_original">Last opp og kopier lenke</string>
<string name="settings_about_version_title">Versjon</string> <string name="settings_about_version_title">Versjon</string>
<string name="settings_advanced_broadcast_title">Kringkast meldinger</string> <string name="settings_advanced_broadcast_title">Kringkast meldinger</string>
<string name="settings_notifications_auto_delete_summary_three_days">Slett merknader automatisk etter tre dager</string> <string name="settings_notifications_auto_delete_summary_three_days">Slett varsler automatisk etter tre dager</string>
<string name="settings_notifications_auto_delete_summary_three_months">Slett merknader automatisk etter tre måneder</string> <string name="settings_notifications_auto_delete_summary_three_months">Slett merknader automatisk etter tre måneder</string>
<string name="settings_notifications_auto_delete_one_day">Etter én dag</string> <string name="settings_notifications_auto_delete_one_day">Etter én dag</string>
<string name="settings_notifications_auto_delete_summary_one_week">Slett merknader automatisk etter én uke</string> <string name="settings_notifications_auto_delete_summary_one_week">Slett merknader automatisk etter én uke</string>
@ -285,12 +285,12 @@
<string name="settings_general_default_base_url_default_summary">%1$s (forvalg)</string> <string name="settings_general_default_base_url_default_summary">%1$s (forvalg)</string>
<string name="settings_backup_restore_backup_entry_settings_only">Kun innstillinger</string> <string name="settings_backup_restore_backup_entry_settings_only">Kun innstillinger</string>
<string name="settings_backup_restore_restore_summary">Importer oppsett, merknader og brukere</string> <string name="settings_backup_restore_restore_summary">Importer oppsett, merknader og brukere</string>
<string name="detail_test_message">Dette er en testmerknad fra ntfy-Androidprogrammet. Det har %1$d-prioritet. vis du sender en ny kan det hende den ser annerledes ut.</string> <string name="detail_test_message">Dette er et testvarsel fra ntfy Android-appen. Den har en nivå %1$d prioritet. Hvis du sender en annen, kan den se annerledes ut.</string>
<string name="settings_backup_restore_backup_successful">Sikkerhetskopi utført</string> <string name="settings_backup_restore_backup_successful">Sikkerhetskopiering opprettet</string>
<string name="settings_advanced_export_logs_summary">Kopier logger til utklippstavlen, eller last opp til nopaste.net (eid av ntfy-utvikleren). Vertsnavn og emner kan sensureres, men merknader vil aldri bli det.</string> <string name="settings_advanced_export_logs_summary">Kopier logger til utklippstavlen, eller last opp til nopaste.net (eid av ntfy-utvikleren). Vertsnavn og emner kan sensureres, men varsler vil aldri bli det.</string>
<string name="settings_advanced_connection_protocol_summary_ws">Bruk Vev-socket-er for å koble til tjeneren. Dette er eksperimentelt. Si ifra hvis det bruker mindre batteri eller er ustabilt.</string> <string name="settings_advanced_connection_protocol_summary_ws">Bruk WebSockets for å koble til serveren. Dette er den anbefalte metoden, men kan kreve ytterligere konfigurasjon i proxyen din.</string>
<string name="main_how_to_intro">Abonner på et emne ved å klikke på knappen nedenfor. Etter dette kan du sende meldinger via PUT eller POST, og du kan motta merknader på enheten din.</string> <string name="main_how_to_intro">Klikk på + for å opprette eller abonnere på et emne. Etterpå mottar du varsler på enheten din når du sender meldinger via PUT eller POST.</string>
<string name="main_how_to_link">Mer detaljert instruks er å finne på ntfy.sh-nettsiden og i dokumentasjonen.</string> <string name="main_how_to_link">Detaljerte instruksjoner er tilgjengelig på ntfy.sh, og i dokumentasjonen.</string>
<string name="main_unified_push_toast">Dette abonnementet håndteres av %1$s via UnifiedPush</string> <string name="main_unified_push_toast">Dette abonnementet håndteres av %1$s via UnifiedPush</string>
<string name="add_dialog_foreground_description">Umiddelbar levering er alltid påskrudd for andre verter enn %1$s.</string> <string name="add_dialog_foreground_description">Umiddelbar levering er alltid påskrudd for andre verter enn %1$s.</string>
<string name="settings_notifications_priority_min">min</string> <string name="settings_notifications_priority_min">min</string>
@ -298,4 +298,49 @@
<string name="settings_notifications_priority_default">forvalg</string> <string name="settings_notifications_priority_default">forvalg</string>
<string name="settings_notifications_priority_high">høy</string> <string name="settings_notifications_priority_high">høy</string>
<string name="settings_notifications_priority_max">maks.</string> <string name="settings_notifications_priority_max">maks.</string>
<string name="channel_subscriber_notification_instant_text_six">Abonnert på seks emner med umiddelbar levering</string>
<string name="channel_subscriber_notification_instant_text_five">Abonnert på fem emner med umiddelbar levering</string>
<string name="channel_subscriber_notification_noinstant_text_five">Abonnert på fem emner</string>
<string name="channel_subscriber_notification_noinstant_text_six">Abonnert på seks emner</string>
<string name="channel_notifications_group_default_name">Standard</string>
<string name="add_dialog_base_urls_dropdown_choose">Velg tjenestens URL</string>
<string name="add_dialog_base_urls_dropdown_clear">Fjern tjeneste-URL</string>
<string name="settings_notifications_insistent_max_priority_title">Fortsett å varsle for høyeste prioritet</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Varslinger med maksimal prioritet varsler kontinuerlig til de blir avvist</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Maks prioriterte varsler varsles bare én gang</string>
<string name="detail_settings_notifications_instant_title">Umiddelbar levering</string>
<string name="detail_settings_notifications_instant_summary_on">Varsler leveres umiddelbart. Krever en forgrunnsservice og bruker mer batteri.</string>
<string name="detail_settings_notifications_instant_summary_off">Varsler leveres med Firebase. Leveringen kan bli forsinket, men bruker mindre batteri.</string>
<string name="detail_settings_notifications_dedicated_channels_title">Egendefinerte varslingsinnstillinger</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Bruker egendefinerte innstillinger for dette abonnementet</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Bruker standardinnstillinger (lyder, Ikke forstyrr-overstyring osv.)</string>
<string name="detail_settings_notifications_open_channels_title">Konfigurer varslingsinnstillinger</string>
<string name="detail_settings_notifications_open_channels_summary">Ikke forstyrr (DND) overstyring, lyder osv.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Fortsett å varsle</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Varsle bare én gang</string>
<string name="detail_settings_appearance_icon_remove_summary">Ikon som vises i varsler for dette emnet</string>
<string name="detail_settings_appearance_icon_error_saving">Kan ikke lagre ikon: %1$s</string>
<string name="detail_settings_appearance_display_name_title">Visningsnavn</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (standard)</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Kopier til utklippstavlen</string>
<string name="detail_settings_appearance_display_name_message">Angi et tilpasset visningsnavn for dette abonnementet. La stå tomt for standard (%1$s).</string>
<string name="main_menu_donate_title">Doner 💸</string>
<string name="main_banner_websocket_text">Å bytte til WebSockets er den anbefalte måten å koble til serveren på, og kan forbedre batterilevetiden, men kan kreve <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">ytterligere konfigurasjon i proxy-serveren</a>. Dette kan endres i innstillingene.</string>
<string name="main_banner_websocket_button_enable_now">Aktiver nå</string>
<string name="detail_deep_link_subscribed_toast_message">Abonnerte på emnet %1$s</string>
<string name="detail_settings_appearance_header">Utseende</string>
<string name="detail_settings_appearance_icon_set_summary">Angi et ikon som skal vises i varsler</string>
<string name="detail_settings_appearance_icon_set_title">Abonnement-ikon</string>
<string name="detail_settings_global_setting_title">Bruk globale innstillinger</string>
<string name="detail_settings_about_header">Om</string>
<string name="detail_settings_about_topic_url_title">Emne-URL</string>
<string name="notification_popup_user_action_failed">%1$s mislyktes: %2$s</string>
<string name="detail_item_cannot_open_apk">Apper kan ikke installeres lenger. Last ned via nettleseren i stedet. Se feilrapport #531 for detaljer.</string>
<string name="detail_settings_appearance_icon_remove_title">Abonnement-ikon (trykk for å fjerne)</string>
<string name="settings_notifications_channel_prefs_summary">Ikke forstyrr (DND) overstyring, lyder osv.</string>
<string name="settings_notifications_channel_prefs_title">Kanalinnstillinger</string>
<string name="detail_settings_global_setting_suffix">ved hjelp av globale innstillinger</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy vil ikke opptre som UnifiedPush-distributør</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy vil opptre som UnifiedPush-distributør</string>
<string name="settings_advanced_unifiedpush_title">Skru på UnifiedPush</string>
</resources> </resources>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="channel_notifications_low_name">Meldingen (lage prioriteit)</string> <string name="channel_notifications_low_name">Lage prioriteit</string>
<string name="channel_notifications_max_name">Meldingen (max. prioriteit)</string> <string name="channel_notifications_max_name">Maximum prioriteit</string>
<string name="channel_subscriber_notification_instant_text">Geabonneerd op onderwerpen voor directe levering</string> <string name="channel_subscriber_notification_instant_text">Geabonneerd op onderwerpen voor directe levering</string>
<string name="channel_subscriber_notification_instant_text_one">Geabonneerd op één onderwerp voor directe levering</string> <string name="channel_subscriber_notification_instant_text_one">Geabonneerd op één onderwerp voor directe levering</string>
<string name="channel_subscriber_notification_instant_text_four">Geabonneerd op vier onderwerpen voor directe levering</string> <string name="channel_subscriber_notification_instant_text_four">Geabonneerd op vier onderwerpen voor directe levering</string>
@ -37,8 +37,8 @@
<string name="add_dialog_button_login">Inloggen</string> <string name="add_dialog_button_login">Inloggen</string>
<string name="add_dialog_use_another_server">Gebruik een andere server</string> <string name="add_dialog_use_another_server">Gebruik een andere server</string>
<string name="channel_notifications_min_name">Meldingen (min. prioriteit)</string> <string name="channel_notifications_min_name">Meldingen (min. prioriteit)</string>
<string name="channel_notifications_default_name">Meldingen (standaard prioriteit)</string> <string name="channel_notifications_default_name">Standaard prioriteit</string>
<string name="channel_notifications_high_name">Meldingen (hoge prioriteit)</string> <string name="channel_notifications_high_name">Hoge prioriteit</string>
<string name="channel_subscriber_service_name">Abonnementenservice</string> <string name="channel_subscriber_service_name">Abonnementenservice</string>
<string name="main_how_to_intro">Klik op de + om een onderwerp aan te maken of erop te abonneren. Nadien ontvang je meldingen op je toestel bij het verzenden van berichten via PUT or POST.</string> <string name="main_how_to_intro">Klik op de + om een onderwerp aan te maken of erop te abonneren. Nadien ontvang je meldingen op je toestel bij het verzenden van berichten via PUT or POST.</string>
<string name="channel_subscriber_notification_instant_text_two">Geabonneerd op twee onderwerpen voor directe levering</string> <string name="channel_subscriber_notification_instant_text_two">Geabonneerd op twee onderwerpen voor directe levering</string>
@ -65,7 +65,7 @@
<string name="main_menu_rate_title">Beoordeel de app ⭐</string> <string name="main_menu_rate_title">Beoordeel de app ⭐</string>
<string name="main_item_status_text_one">%1$d melding</string> <string name="main_item_status_text_one">%1$d melding</string>
<string name="main_action_mode_delete_dialog_message">Afmelden van de geselecteerde onderwerp(en) en alle meldingen definitief verwijderen\?</string> <string name="main_action_mode_delete_dialog_message">Afmelden van de geselecteerde onderwerp(en) en alle meldingen definitief verwijderen\?</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string> <string name="main_item_status_unified_push">%1$s (Unified Push)</string>
<string name="main_no_subscriptions_text">Het lijkt erop dat u nog geen abonnementen heeft.</string> <string name="main_no_subscriptions_text">Het lijkt erop dat u nog geen abonnementen heeft.</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Permanent verwijderen</string> <string name="main_action_mode_delete_dialog_permanently_delete">Permanent verwijderen</string>
<string name="main_unified_push_toast">Dit abonnement wordt beheerd door %1$s via UnifiedPush</string> <string name="main_unified_push_toast">Dit abonnement wordt beheerd door %1$s via UnifiedPush</string>
@ -73,7 +73,7 @@
<string name="main_banner_websocket_button_dismiss">Afwijzen</string> <string name="main_banner_websocket_button_dismiss">Afwijzen</string>
<string name="user_dialog_button_delete">Gebruiker verwijderen</string> <string name="user_dialog_button_delete">Gebruiker verwijderen</string>
<string name="user_dialog_button_cancel">Annuleren</string> <string name="user_dialog_button_cancel">Annuleren</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string> <string name="settings_advanced_connection_protocol_entry_ws">WebSocket</string>
<string name="settings_about_version_title">Versie</string> <string name="settings_about_version_title">Versie</string>
<string name="settings_about_header">Over</string> <string name="settings_about_header">Over</string>
<string name="settings_advanced_connection_protocol_title">Verbindingsprotocol</string> <string name="settings_advanced_connection_protocol_title">Verbindingsprotocol</string>
@ -164,8 +164,8 @@
<string name="settings_advanced_clear_logs_title">Logs verwijderen</string> <string name="settings_advanced_clear_logs_title">Logs verwijderen</string>
<string name="settings_advanced_clear_logs_deleted_toast">Logs verwijderd</string> <string name="settings_advanced_clear_logs_deleted_toast">Logs verwijderd</string>
<string name="user_dialog_description_add">Je kunt hier een gebruiker toevoegen. Alle onderwerpen voor de opgegeven server zullen deze gebruiker gebruiken.</string> <string name="user_dialog_description_add">Je kunt hier een gebruiker toevoegen. Alle onderwerpen voor de opgegeven server zullen deze gebruiker gebruiken.</string>
<string name="settings_advanced_connection_protocol_summary_ws">Gebruik WebSockets om verbinding te maken met de server. Dit wordt de standaard in juni 2022.</string> <string name="settings_advanced_connection_protocol_summary_ws">Gebruik WebSockets om verbinding te maken met de server. Dit is de aangeraden methode, maar deze kan extra configuratie in uw proxy vereisen.</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Gebruik een JSON stream via HTTP om verbinding te maken met de server. Deze methode is verouderd en wordt in juni 2022 verwijderd.</string> <string name="settings_advanced_connection_protocol_summary_jsonhttp">Gebruik een JSON stream via HTTP om verbinding te maken met de server. Deze methode is getest maar kan meer batterij verbruiken.</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">Upload en kopieer link (gecensureerd)</string> <string name="settings_advanced_export_logs_entry_upload_scrubbed">Upload en kopieer link (gecensureerd)</string>
<string name="settings_advanced_export_logs_scrub_dialog_text">Deze onderwerpen/hostnamen zijn vervangen met fruitnamen zodat je het log kunt delen zonder zorgen: <string name="settings_advanced_export_logs_scrub_dialog_text">Deze onderwerpen/hostnamen zijn vervangen met fruitnamen zodat je het log kunt delen zonder zorgen:
\n \n
@ -226,7 +226,7 @@
<string name="settings_advanced_header">Geavanceerd</string> <string name="settings_advanced_header">Geavanceerd</string>
<string name="settings_advanced_record_logs_title">Logs opnemen</string> <string name="settings_advanced_record_logs_title">Logs opnemen</string>
<string name="settings_advanced_record_logs_summary_enabled">Loggen (tot 1,000 vermeldingen) naar apparaat …</string> <string name="settings_advanced_record_logs_summary_enabled">Loggen (tot 1,000 vermeldingen) naar apparaat …</string>
<string name="settings_advanced_record_logs_summary_disabled">Schakel loggen in zodat je logs later kunt delen om problemen te diagnosticeren.</string> <string name="settings_advanced_record_logs_summary_disabled">Loggen inschakelen, deze kan later gedeeld worden om problemen te analyseren.</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">Er zijn geen onderwerpen/hostnamen gecensureerd. Misschien heb je geen abonnementen\?</string> <string name="settings_advanced_export_logs_scrub_dialog_empty">Er zijn geen onderwerpen/hostnamen gecensureerd. Misschien heb je geen abonnementen\?</string>
<string name="detail_item_download_info_deleted">verwijderd</string> <string name="detail_item_download_info_deleted">verwijderd</string>
<string name="settings_notifications_auto_download_always">Alles automatisch downloaden</string> <string name="settings_notifications_auto_download_always">Alles automatisch downloaden</string>
@ -317,4 +317,30 @@
<string name="detail_settings_appearance_icon_set_summary">Stel een icoon in wat zal worden weergegeven in notificaties</string> <string name="detail_settings_appearance_icon_set_summary">Stel een icoon in wat zal worden weergegeven in notificaties</string>
<string name="detail_settings_appearance_icon_remove_title">Abonnementen icoon (tap om te verwijderen)</string> <string name="detail_settings_appearance_icon_remove_title">Abonnementen icoon (tap om te verwijderen)</string>
<string name="detail_settings_global_setting_suffix">Gebruikt globale instelling</string> <string name="detail_settings_global_setting_suffix">Gebruikt globale instelling</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (standaard)</string>
<string name="detail_settings_appearance_display_name_title">Schermnaam</string>
<string name="detail_settings_appearance_display_name_message">Zet een schermnaam voor dit abonnement. Laat het veld leeg om de standaard naam te kiezen (%1$s).</string>
<string name="detail_settings_about_header">Over</string>
<string name="detail_settings_about_topic_url_title">Onderwerp URL</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Gekopieerd naar klembord</string>
<string name="add_dialog_base_urls_dropdown_choose">Kies service URL</string>
<string name="add_dialog_base_urls_dropdown_clear">Service URL verwijderen</string>
<string name="main_banner_websocket_button_enable_now">Nu inschakelen</string>
<string name="main_banner_websocket_text">WebSockets is de aangeraden manier om te verbinden met uw server en kan batterij verbruik verminderen. Het kan <a href="https://ntfy.sh/docs/config/#nginxapache2caddy"> extra configuratie in uw proxy</a> vereisen. Dit kan omgeschakeld worden in de instellingen.</string>
<string name="channel_notifications_group_default_name">Standaard</string>
<string name="main_menu_donate_title">Doneer 💸</string>
<string name="detail_item_cannot_open_apk">Apps kunnen niet meer worden geïnstalleerd. Download deze via de browser. Raadpleeg issue #531 voor meer details.</string>
<string name="settings_notifications_insistent_max_priority_title">Behoud meldingen voor hoogste prioriteit</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Max prioriteit berichten geven continue een melding totdat deze worden gesloten</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Max prioriteit berichten geven eenmalig een melding</string>
<string name="detail_settings_notifications_dedicated_channels_title">Instellingen voor aangepaste melding</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Aangepaste instellingen in gebruik voor dit abonnement</string>
<string name="detail_settings_notifications_open_channels_title">Aanpassen instellingen voor meldingen</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Blijven melden</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Eenmalig melden</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Standaard instellingen in gebruik (geluiden, Niet storen, etc.)</string>
<string name="detail_settings_notifications_open_channels_summary">Niet storen (DND) negeren, geluiden, etc.</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy zal optreden als UnifiedPush-distributeur</string>
<string name="settings_advanced_unifiedpush_title">UnifiedPush inschakelen</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy treedt niet op als UnifiedPush-distributeur</string>
</resources> </resources>

View file

@ -1,11 +1,346 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="channel_notifications_min_name">Powiadomienia (minimalny priorytet)</string> <string name="channel_notifications_min_name">Minimalny priorytet</string>
<string name="channel_notifications_low_name">Powiadomienia (niski priorytet)</string> <string name="channel_notifications_low_name">Niski priorytet</string>
<string name="channel_notifications_default_name">Powiadomienia (domyślny priorytet)</string> <string name="channel_notifications_default_name">Domyślny priorytet</string>
<string name="channel_notifications_max_name">Powiadomienia (maksymalny priorytet)</string> <string name="channel_notifications_max_name">Maksymalny priorytet</string>
<string name="channel_subscriber_notification_title">Oczekiwanie na przychodzące powiadomienia</string> <string name="channel_subscriber_notification_title">Oczekiwanie na przychodzące powiadomienia</string>
<string name="channel_subscriber_notification_instant_text">Subskrybujesz tematy z natychmiastową dostawą</string> <string name="channel_subscriber_notification_instant_text">Subskrybujesz tematy z natychmiastowym dostarczaniem</string>
<string name="channel_notifications_high_name">Powiadomienia (wysoki priorytet)</string> <string name="channel_notifications_high_name">Wysoki priorytet</string>
<string name="channel_subscriber_service_name">Usługa subskrypcji</string> <string name="channel_subscriber_service_name">Usługa subskrypcji</string>
<string name="add_dialog_login_username_hint">Nazwa użytkownika</string>
<string name="detail_action_mode_delete_dialog_message">Usunąć wybrane powiadomienie(a) trwale\?</string>
<string name="detail_action_mode_delete_dialog_cancel">Anuluj</string>
<string name="notification_dialog_save">Zapisz</string>
<string name="settings_title">Ustawienia</string>
<string name="settings_notifications_muted_until_title">Wycisz powiadomienia</string>
<string name="settings_notifications_muted_until_forever">Powiadomienia wyciszone do wznowienia</string>
<string name="settings_notifications_min_priority_default">Podstawowy priorytet i wyższy</string>
<string name="settings_notifications_auto_delete_title">Usuń powiadomienia</string>
<string name="settings_general_dark_mode_title">Tryb ciemny</string>
<string name="settings_backup_restore_restore_failed">Przywracanie nie powiodło się: %1$s</string>
<string name="settings_advanced_clear_logs_deleted_toast">Logi usunięte</string>
<string name="user_dialog_base_url_hint">Adres URL usługi</string>
<string name="detail_settings_appearance_display_name_title">Nazwa wyświetlana</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (domyślny)</string>
<string name="user_dialog_title_edit">Edytuj użytkownika</string>
<string name="user_dialog_description_add">Tutaj możesz dodać użytkownika. Wszystkie tematy na podanym serwerze będą wtedy korzystać z tego użytkownika.</string>
<string name="user_dialog_description_edit">Możesz zmienić lub usunąć nazwę użytkownika/hasło dla wybranego użytkownika.</string>
<string name="user_dialog_username_hint">Nazwa użytkownika</string>
<string name="notification_dialog_muted_until_toast_message">Powiadomienia wyciszone przez %1$s</string>
<string name="detail_item_menu_download">Pobierz plik</string>
<string name="detail_action_mode_menu_copy">Kopiuj</string>
<string name="detail_menu_clear">Wyczyść powiadomienia</string>
<string name="detail_item_menu_delete">Usuń plik</string>
<string name="detail_item_menu_cancel">Anuluj pobieranie</string>
<string name="detail_item_cannot_open_url">Nie można otworzyć adresu URL: %1$s</string>
<string name="detail_item_download_info_download_failed_expires_x">pobieranie nie powiodło się, link wygasa %1$s</string>
<string name="share_content_text_hint">Dodaj treść do udostępnienia</string>
<string name="share_content_image_error">Nie można odczytać obrazu: %1$s</string>
<string name="notification_dialog_show_all">Pokaż wszystkie powiadomienia</string>
<string name="notification_dialog_30min">30 minut</string>
<string name="notification_dialog_1h">1 godzina</string>
<string name="notification_dialog_8h">8 godzin</string>
<string name="notification_dialog_forever">Do wznowienia</string>
<string name="settings_notifications_auto_download_500k">Jeśli poniżej 500 kB</string>
<string name="settings_notifications_channel_prefs_title">Ustawienia kanału</string>
<string name="settings_notifications_auto_delete_summary_three_months">Automatycznie usuń powiadomienia po 3 miesiącach</string>
<string name="settings_notifications_auto_download_5m">Jeśli poniżej 5 MB</string>
<string name="settings_notifications_auto_delete_summary_never">Nigdy nie usuwaj powiadomień automatycznie</string>
<string name="settings_general_users_prefs_title">Użytkownicy</string>
<string name="settings_general_dark_mode_summary_light">Tryb jasny włączony</string>
<string name="settings_general_dark_mode_entry_system">Użyj domyślnych ustawień systemu</string>
<string name="settings_general_dark_mode_entry_light">Tryb jasny</string>
<string name="settings_general_dark_mode_entry_dark">Tryb ciemny</string>
<string name="settings_advanced_broadcast_summary_disabled">Aplikacje nie mogą odbierać powiadomień jako transmisje</string>
<string name="settings_advanced_export_logs_entry_copy_original">Kopiuj do schowka</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">Kopiuj do schowka (ocenzurowane)</string>
<string name="settings_advanced_export_logs_scrub_dialog_text">Te tematy / nazwy hostów zostały zastąpione nazwami owoców, więc możesz udostępnić dziennik bez obaw:
\n
\n%1$s
\n
\nHasła zostały usunięte, ale nie są tutaj wymienione.</string>
<string name="settings_advanced_record_logs_summary_disabled">Włącz rejestrowanie, aby móc później udostępnić logi w celu zdiagnozowania problemów.</string>
<string name="channel_subscriber_notification_instant_text_two">Zasubskrybowano do dwóch tematów z natychmiastową dostawą</string>
<string name="settings_advanced_export_logs_summary">Kopiuj logi do schowka, lub prześlij na nopaste.net (własność autora ntfy). Nazwy hostów i tematy mogą być cenzurowane, powiadomienia nigdy nie będą.</string>
<string name="channel_subscriber_notification_noinstant_text_six">Zasubskrybowano sześć tematów</string>
<string name="channel_subscriber_notification_instant_text_more">Zasubskrybowano do %1$d tematów z natychmiastową dostawą</string>
<string name="detail_settings_notifications_instant_summary_off">Powiadomienia są dostarczane za pomocą Firebase. Dostarczanie może być opóźnione, ale zużywa mniej baterii.</string>
<string name="channel_subscriber_notification_noinstant_text_five">Zasubskrybowano pięć tematów</string>
<string name="add_dialog_use_another_server_description">Wpisz poniżej adresy URL serwisów, aby subskrybować tematy z innych serwerów.</string>
<string name="detail_clear_dialog_permanently_delete">Usuń trwale</string>
<string name="main_how_to_intro">Kliknij +, aby utworzyć lub zasubskrybować temat. Następnie otrzymasz powiadomienia na swoim urządzeniu, gdy wiadomości zostaną opublikowane za pośrednictwem PUT lub POST.</string>
<string name="main_item_status_text_not_one">%1$d powiadomienia</string>
<string name="main_add_button_description">Dodaj subskrypcję</string>
<string name="main_item_status_reconnecting">ponowne połączenie …</string>
<string name="main_no_subscriptions_text">Wygląda na to, że nie masz jeszcze żadnych subskrypcji.</string>
<string name="detail_no_notifications_text">Nie otrzymałeś jeszcze żadnych powiadomień dla tego tematu.</string>
<string name="detail_test_message">To jest testowe powiadomienie z aplikacji ntfy na Androida. Ma ono priorytet na poziomie %1$d. Jeśli wyślesz kolejne, może ono wyglądać inaczej.</string>
<string name="detail_item_download_info_deleted_expired">usunięto, łącze wygasło</string>
<string name="settings_advanced_connection_protocol_summary_ws">Użyj WebSockets, aby połączyć się z serwerem. Jest to zalecana metoda, ale może wymagać dodatkowej konfiguracji w twoim proxy.</string>
<string name="detail_settings_appearance_display_name_message">Ustaw niestandardową nazwę wyświetlaną dla tej subskrypcji. Pozostaw puste dla domyślnej (%1$s).</string>
<string name="detail_settings_global_setting_title">Użyj ustawienia globalnego</string>
<string name="share_menu_send">Udostępnij</string>
<string name="notification_dialog_2h">2 godziny</string>
<string name="notification_dialog_tomorrow">Do jutra</string>
<string name="notification_popup_action_cancel">Anuluj</string>
<string name="settings_notifications_auto_delete_summary_one_day">Automatycznie usuń powiadomienia po jednym dniu</string>
<string name="settings_notifications_auto_delete_summary_three_days">Automatycznie usuń powiadomienia po 3 dniach</string>
<string name="settings_notifications_auto_delete_one_month">Po miesiącu</string>
<string name="settings_notifications_min_priority_high">Wysoki priorytet i wyższy</string>
<string name="notification_popup_user_action_failed">%1$s nie powiodło się: %2$s</string>
<string name="settings_backup_restore_header">Kopia zapasowa &amp; Przywracanie</string>
<string name="settings_backup_restore_backup_summary">Eksportuj konfigurację, powiadomienia i użytkowników</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">Prześlij i kopiuj łącze (ocenzurowane)</string>
<string name="channel_subscriber_notification_noinstant_text">Zasubskrybowane tematy</string>
<string name="main_how_to_link">Szczegółowe instrukcje są dostępne w ntfy.sh, oraz w dokumentacji.</string>
<string name="main_banner_battery_text">Optymalizacja baterii powinna być wyłączona dla aplikacji, aby uniknąć problemów z dostarczaniem powiadomień.</string>
<string name="main_menu_rate_title">Oceń aplikację ⭐</string>
<string name="main_action_mode_delete_dialog_message">Zrezygnować z wybranego tematu/ów i trwale usunąć wszystkie powiadomienia\?</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Usuń trwale</string>
<string name="add_dialog_foreground_description">Natychmiastowe dostarczanie jest zawsze włączone dla hostów innych niż %1$s.</string>
<string name="add_dialog_button_back">Powrót</string>
<string name="add_dialog_error_connection_failed">Połączenie nieudane: %1$s</string>
<string name="add_dialog_button_login">Zaloguj się</string>
<string name="add_dialog_button_subscribe">Subskrybuj</string>
<string name="add_dialog_login_password_hint">Hasło</string>
<string name="add_dialog_instant_delivery_description">Zapewnia natychmiastowe dostarczanie wiadomości, nawet jeśli urządzenie jest nieaktywne.</string>
<string name="add_dialog_login_title">Wymagane jest zalogowanie się</string>
<string name="add_dialog_instant_delivery">Natychmiastowe dostarczanie w trybie drzemki</string>
<string name="detail_delete_dialog_permanently_delete">Usuń trwale</string>
<string name="detail_delete_dialog_cancel">Anuluj</string>
<string name="detail_test_title">Test: Jeśli chcesz, możesz ustawić tytuł.</string>
<string name="detail_instant_delivery_disabled">Natychmiastowe dostarczanie wyłączone</string>
<string name="detail_test_message_error">Nie można wysłać wiadomości: %1$s</string>
<string name="detail_instant_delivery_enabled">Natychmiastowe dostarczanie włączone</string>
<string name="detail_test_message_error_unauthorized_anon">Nie można wysłać wiadomości: Anonimowa publikacja nie jest dozwolona.</string>
<string name="detail_test_message_error_unauthorized_user">Nie można wysłać wiadomości: Użytkownik \"%1$s\" nie ma uprawnień.</string>
<string name="detail_test_message_error_too_large">Nie można wysłać wiadomości: Załącznik jest zbyt duży.</string>
<string name="detail_copied_to_clipboard_message">Skopiowano do schowka</string>
<string name="detail_item_cannot_delete">Nie można usunąć załącznika: %1$s</string>
<string name="detail_item_download_failed">Nie można pobrać załącznika: %1$s</string>
<string name="detail_item_download_info_not_downloaded">nie pobrany</string>
<string name="detail_item_download_info_not_downloaded_expired">nie pobrany, link wygasł</string>
<string name="detail_item_download_info_not_downloaded_expires_x">nie pobrany, wygasa %1$s</string>
<string name="detail_menu_notifications_enabled">Powiadomienia włączone</string>
<string name="detail_menu_test">Wyślij powiadomienie testowe</string>
<string name="detail_menu_copy_url">Kopiuj adres tematu</string>
<string name="detail_menu_unsubscribe">Zrezygnuj z subskrypcji</string>
<string name="detail_action_mode_menu_delete">Usuń</string>
<string name="detail_menu_disable_instant">Wyłącz natychmiastowe dostarczanie</string>
<string name="detail_item_download_info_download_failed_expired">pobieranie nie powiodło się, łącze wygasło</string>
<string name="share_content_file_text">Podzielono się z Tobą plikiem</string>
<string name="share_content_file_error">Nie można odczytać informacji o pliku: %1$s</string>
<string name="share_topic_title">Udostępnij do</string>
<string name="notification_dialog_cancel">Anuluj</string>
<string name="notification_popup_action_open">Otwórz</string>
<string name="notification_popup_action_browse">Przeglądaj</string>
<string name="notification_popup_action_download">Pobierz</string>
<string name="settings_notifications_auto_delete_summary_one_week">Automatycznie usuń powiadomienia po tygodniu</string>
<string name="settings_general_default_base_url_title">Serwer domyślny</string>
<string name="settings_advanced_broadcast_summary_enabled">Aplikacje mogą odbierać przychodzące powiadomienia jako transmisje</string>
<string name="settings_about_header">Informacje o</string>
<string name="user_dialog_button_add">Dodaj użytkownika</string>
<string name="main_menu_notifications_disabled_forever">Powiadomienia wyciszone</string>
<string name="main_menu_notifications_enabled">Powiadomienia włączone</string>
<string name="add_dialog_login_new_user">Nowy użytkownik</string>
<string name="add_dialog_description_below">Tematy mogą nie być chronione hasłem, więc wybierz nazwę, która jest trudna do odgadnięcia. Po subskrypcji możesz wysyłać powiadomienia PUT/POST.</string>
<string name="add_dialog_title">Zasubskrybuj temat</string>
<string name="add_dialog_topic_name_hint">Nazwa tematu, np. moje_powiadomienia</string>
<string name="add_dialog_use_another_server">Użyj innego serwera</string>
<string name="add_dialog_login_description">Ten temat wymaga zalogowania. Proszę podaj nazwę użytkownika i hasło.</string>
<string name="add_dialog_login_error_not_authorized">Logowanie nie powiodło się. Użytkownik %1$s nie jest upoważniony.</string>
<string name="channel_subscriber_notification_instant_text_five">Zasubskrybowano do pięciu tematów z natychmiastowym dostarczaniem</string>
<string name="channel_subscriber_notification_instant_text_six">Zasubskrybowano do sześciu tematów z natychmiastowym dostarczaniem</string>
<string name="channel_subscriber_notification_noinstant_text_two">Zasubskrybowano dwa tematy</string>
<string name="channel_subscriber_notification_noinstant_text_one">Zasubskrybowano jeden temat</string>
<string name="channel_subscriber_notification_noinstant_text_more">Zasubskrybowano %1$d tematów</string>
<string name="refresh_message_no_results">Wszystko jest aktualne</string>
<string name="refresh_message_error">Nie można odświeżyć %1$d subskrypcji
\n
\n%2$s</string>
<string name="refresh_message_error_one">Nie można odświeżyć subskrypcji: %1$s</string>
<string name="channel_subscriber_notification_noinstant_text_three">Zasubskrybowano trzy tematy</string>
<string name="channel_subscriber_notification_noinstant_text_four">Zasubskrybowano cztery tematy</string>
<string name="detail_clear_dialog_cancel">Anuluj</string>
<string name="detail_deep_link_subscribed_toast_message">Temat %1$s zasubskrybowany</string>
<string name="detail_item_snack_deleted">Powiadomienie usunięte</string>
<string name="detail_item_snack_undo">Cofnij</string>
<string name="settings_general_users_prefs_user_used_by_one">Używane przez temat %1$s</string>
<string name="settings_general_users_prefs_user_not_used">Nieużywane przez żadne tematy</string>
<string name="settings_advanced_clear_logs_title">Wyczyść logi</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockety</string>
<string name="detail_settings_global_setting_suffix">przy użyciu ustawienia globalnego</string>
<string name="detail_settings_about_header">Informacje o</string>
<string name="detail_settings_about_topic_url_title">Adres URL tematu</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Skopiowano do schowka</string>
<string name="user_dialog_password_hint_add">Hasło</string>
<string name="user_dialog_password_hint_edit">Hasło (niezmienione, jeśli pozostawiono puste)</string>
<string name="user_dialog_button_delete">Usuń użytkownika</string>
<string name="user_dialog_button_save">Zapisz</string>
<string name="main_menu_notifications_disabled_until">Powiadomienia wyciszone przez %1$s</string>
<string name="main_action_mode_delete_dialog_cancel">Anuluj</string>
<string name="main_menu_docs_title">Przeczytaj dokumentację</string>
<string name="main_action_bar_title">Subskrybowane tematy</string>
<string name="main_menu_settings_title">Ustawienia</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string>
<string name="main_menu_report_bug_title">Zgłoś błąd</string>
<string name="main_action_mode_menu_unsubscribe">Zrezygnuj z subskrypcji</string>
<string name="channel_subscriber_notification_instant_text_one">Zasubskrybowano jeden temat z natychmiastową dostawą</string>
<string name="channel_subscriber_notification_instant_text_three">Zasubskrybowano do trzech tematów z natychmiastową dostawą</string>
<string name="channel_subscriber_notification_instant_text_four">Zasubskrybowano do czterech tematów z natychmiastową dostawą</string>
<string name="refresh_message_result">Otrzymano %1$d powiadomień</string>
<string name="main_item_status_text_one">%1$d powiadomienie</string>
<string name="main_unified_push_toast">Ta subskrypcja jest zarządzana przez %1$s poprzez UnifiedPush</string>
<string name="main_banner_battery_button_remind_later">Zapytaj później</string>
<string name="main_banner_battery_button_dismiss">Odrzuć</string>
<string name="main_banner_battery_button_fix_now">Napraw teraz</string>
<string name="add_dialog_button_cancel">Anuluj</string>
<string name="main_item_date_yesterday">wczoraj</string>
<string name="detail_delete_dialog_message">Zrezygnować z subskrypcji tego tematu i usunąć wszystkie otrzymane powiadomienia\?</string>
<string name="detail_menu_enable_instant">Włącz natychmiastowe dostarczanie</string>
<string name="detail_menu_notifications_disabled_forever">Powiadomienia wyciszone</string>
<string name="detail_menu_notifications_disabled_until">Powiadomienia wyciszone przez %1$s</string>
<string name="user_dialog_button_cancel">Anuluj</string>
<string name="add_dialog_base_urls_dropdown_clear">Wyczyść adres URL usługi</string>
<string name="detail_item_menu_save_file">Zapisz plik</string>
<string name="detail_item_cannot_save">Nie można zapisać załącznika: %1$s</string>
<string name="detail_item_menu_open">Otwórz plik</string>
<string name="detail_item_menu_copy_url">Kopiuj Adres URL</string>
<string name="detail_item_menu_copy_url_copied">Adres URL skopiowany do schowka</string>
<string name="detail_item_menu_copy_contents">Kopiuj powiadomienie</string>
<string name="detail_item_menu_copy_contents_copied">Powiadomienie skopiowane do schowka</string>
<string name="detail_item_saved_successfully">Zapisane jako \"%1$s\" w folderze \"Downloads\"</string>
<string name="detail_item_cannot_download">Nie można otworzyć lub pobrać załącznika. Link wygasł i nie można było znaleźć lokalnego pliku.</string>
<string name="detail_item_cannot_open">Nie można otworzyć załącznika: %1$s</string>
<string name="detail_item_cannot_open_not_found">Nie można otworzyć załącznika: Plik mógł zostać usunięty lub żadna zainstalowana aplikacja nie może go otworzyć.</string>
<string name="detail_item_download_info_downloading_x_percent">%1$d%% pobrano</string>
<string name="detail_menu_settings">Ustawienia subskrypcji</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">Usuń trwale</string>
<string name="detail_settings_title">Ustawienia subskrypcji</string>
<string name="share_title">Udostępnij</string>
<string name="share_content_title">Podgląd wiadomości</string>
<string name="add_dialog_base_urls_dropdown_choose">Wybierz adres URL usługi</string>
<string name="detail_how_to_intro">Aby wysłać powiadomienia do tego tematu, wyślij PUT lub POST-Request na adres URL tematu.</string>
<string name="detail_how_to_example">Przykład (za pomocą curl):<br/><tt>$ curl -d \"Cześć\" %1$s</tt></string>
<string name="detail_how_to_link">Szczegółowe instrukcje są dostępne w ntfy.sh, oraz w dokumentacji.</string>
<string name="detail_clear_dialog_message">Usunąć wszystkie powiadomienia z tego tematu\?</string>
<string name="detail_item_tags">Tagi: %1$s</string>
<string name="detail_item_download_info_deleted">usunięto</string>
<string name="detail_item_download_info_deleted_expires_x">usunięto, łącze wygasa %1$s</string>
<string name="detail_item_download_info_download_failed">pobieranie nie powiodło się</string>
<string name="share_content_image_text">Podzielono się z Tobą obrazem</string>
<string name="share_suggested_topics">Sugerowane tematy</string>
<string name="share_successful">Wiadomość opublikowana</string>
<string name="notification_dialog_title">Wycisz powiadomienia</string>
<string name="notification_dialog_enabled_toast_message">Powiadomienia wznowione</string>
<string name="notification_dialog_muted_forever_toast_message">Powiadomienia wyciszone</string>
<string name="notification_popup_file">%1$s
\nPlik: %2$s</string>
<string name="notification_popup_file_downloading">Pobieranie %1$s, %2$d%%
\n%3$s</string>
<string name="notification_popup_file_download_successful">%1$s
\nPlik: %2$s, pobrany</string>
<string name="notification_popup_file_download_failed">%1$s
\nPlik: %2$s, pobieranie nie powiodło się</string>
<string name="settings_notifications_header">Powiadomienia</string>
<string name="settings_notifications_muted_until_show_all">Wszystkie powiadomienia</string>
<string name="settings_notifications_muted_until_x">Powiadomienia wyciszone przez %1$s</string>
<string name="settings_notifications_min_priority_title">Minimalny priorytet</string>
<string name="settings_notifications_min_priority_summary_any">Wszystkie powiadomienia</string>
<string name="settings_notifications_min_priority_summary_x_or_higher">Pokaż powiadomienia, jeśli priorytet jest %1$d (%2$s) lub wyższy</string>
<string name="settings_notifications_min_priority_summary_max">Pokaż powiadomienia, jeśli priorytet wynosi 5 (max)</string>
<string name="settings_notifications_min_priority_min">Dowolny priorytet</string>
<string name="settings_notifications_min_priority_low">Niski priorytet i wyższy</string>
<string name="settings_notifications_min_priority_max">Tylko maksymalny priorytet</string>
<string name="settings_notifications_priority_min">minimum</string>
<string name="settings_notifications_priority_low">niski</string>
<string name="settings_notifications_priority_default">podstawowy</string>
<string name="settings_notifications_priority_high">wysoki</string>
<string name="settings_notifications_priority_max">maksymalny</string>
<string name="settings_notifications_auto_download_title">Pobierz załączniki</string>
<string name="settings_notifications_auto_download_summary_always">Automatycznie pobierz wszystkie załączniki</string>
<string name="settings_notifications_auto_download_summary_never">Nigdy automatycznie nie pobieraj wszystkich załączników</string>
<string name="settings_notifications_auto_download_summary_smaller_than_x">Automatycznie pobierz załączniki do %1$s</string>
<string name="settings_notifications_auto_download_never">Nigdy nie pobieraj niczego automatycznie</string>
<string name="settings_notifications_auto_download_always">Automatycznie pobieraj wszystko</string>
<string name="settings_notifications_auto_download_100k">Jeśli poniżej 100 kB</string>
<string name="settings_notifications_auto_download_1m">Jeśli poniżej 1 MB</string>
<string name="settings_notifications_auto_download_10m">Jeśli poniżej 10 MB</string>
<string name="settings_notifications_auto_download_50m">Jeśli poniżej 50 MB</string>
<string name="settings_notifications_channel_prefs_summary">Zastąpić DND (nie przeszkadzać), dźwięki itp.</string>
<string name="settings_notifications_auto_delete_summary_one_month">Automatycznie usuń powiadomienia po miesiącu</string>
<string name="settings_notifications_auto_delete_never">Nigdy</string>
<string name="settings_notifications_auto_delete_one_day">Po jednym dniu</string>
<string name="settings_notifications_auto_delete_three_days">Po 3 dniach</string>
<string name="settings_notifications_auto_delete_one_week">Po tygodniu</string>
<string name="settings_notifications_auto_delete_three_months">Po 3 miesiącach</string>
<string name="settings_general_header">Ogólne</string>
<string name="settings_general_default_base_url_default_summary">%1$s (domyślny)</string>
<string name="settings_general_users_title">Zarządzaj użytkownikami</string>
<string name="settings_general_users_summary">Dodaj/usuń użytkowników dla tematów chronionych</string>
<string name="settings_general_users_prefs_user_used_by_many">Używane przez tematy %1$s</string>
<string name="settings_general_users_prefs_user_add">Dodaj użytkowników</string>
<string name="settings_general_users_prefs_user_add_title">Dodaj nowego użytkownika</string>
<string name="settings_general_users_prefs_user_add_summary">Stwórz nowego użytkownika dla nowego serwera</string>
<string name="settings_general_dark_mode_summary_system">Używanie domyślnych ustawień systemu</string>
<string name="settings_general_dark_mode_summary_dark">Tryb ciemny włączony. Jesteś wampirem\?</string>
<string name="settings_backup_restore_backup_title">Kopia zapasowa do pliku</string>
<string name="settings_backup_restore_backup_entry_everything">Wszystko</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">Wszystko, z wyjątkiem użytkowników</string>
<string name="settings_backup_restore_backup_entry_settings_only">Tylko ustawienia</string>
<string name="settings_backup_restore_backup_successful">Kopia zapasowa utworzona</string>
<string name="settings_backup_restore_backup_failed">Kopia zapasowa nie powiodła się: %1$s</string>
<string name="settings_backup_restore_restore_title">Przywróc z pliku</string>
<string name="settings_backup_restore_restore_summary">Importuj konfigurację, powiadomienia i użytkowników</string>
<string name="settings_backup_restore_restore_successful">Przywrócono pomyślnie</string>
<string name="settings_advanced_header">Zaawansowane</string>
<string name="settings_advanced_broadcast_title">Roześlij wiadomości</string>
<string name="settings_advanced_record_logs_summary_enabled">Rejestrowanie (do 1000 wpisów) do urządzenia …</string>
<string name="settings_advanced_export_logs_entry_upload_original">Prześlij i kopiuj łącze</string>
<string name="settings_advanced_record_logs_title">Zapisz logi</string>
<string name="settings_advanced_export_logs_title">Kopiuj/wyślij logi</string>
<string name="settings_advanced_export_logs_copied_logs">Logi skopiowane do schowka</string>
<string name="settings_advanced_export_logs_uploading">Przesyłanie logów …</string>
<string name="settings_advanced_export_logs_copied_url">Logi przesłane i URL skopiowane</string>
<string name="settings_general_default_base_url_message">Wpisz tutaj główny adres URL swojego serwera, aby używać go jako domyślnego podczas subskrybowania nowych tematów i/lub udostępniania.</string>
<string name="user_dialog_title_add">Dodaj użytkownika</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">Żadne tematy/nazwy hostów nie zostały zredagowane. Może nie masz żadnych subskrypcji\?</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">OK</string>
<string name="settings_advanced_clear_logs_summary">Usuń poprzednio zarejestrowane logi i zacznij od nowa</string>
<string name="settings_advanced_export_logs_error_uploading">Przesyłanie logów nie powiodło się: %1$s</string>
<string name="detail_settings_notifications_instant_title">Natychmiastowe dostarczanie</string>
<string name="settings_advanced_connection_protocol_title">Protokół połączenia</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">Strumień JSON przez HTTP</string>
<string name="settings_about_version_title">Wersja</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
<string name="settings_about_version_copied_to_clipboard_message">Skopiowano do schowka</string>
<string name="detail_settings_notifications_instant_summary_on">Powiadomienia są dostarczane natychmiastowo. Wymaga usługi pierwszego planu i zużywa więcej baterii.</string>
<string name="detail_settings_appearance_header">Wygląd</string>
<string name="detail_settings_appearance_icon_set_title">Ikona subskrypcji</string>
<string name="detail_settings_appearance_icon_set_summary">Wybierz ikonę, która ma być wyświetlana w powiadomieniach</string>
<string name="detail_settings_appearance_icon_remove_title">Ikona subskrypcji (dotknij, aby usunąć)</string>
<string name="detail_settings_appearance_icon_remove_summary">Ikona wyświetlana w powiadomieniach dla tego tematu</string>
<string name="detail_settings_appearance_icon_error_saving">Nie można zapisać ikony: %1$s</string>
<string name="main_banner_websocket_text">Przełączanie do WebSockets jest zalecanym sposobem łączenia się z Twoim serwerem, i może poprawić żywotność baterii, ale może wymagać <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">dodatkowej konfiguracji w proxy</a>. To może być przełączane w ustawieniach.</string>
<string name="main_banner_websocket_button_remind_later">Zapytaj później</string>
<string name="main_banner_websocket_button_dismiss">Odrzuć</string>
<string name="main_banner_websocket_button_enable_now">Aktywuj teraz</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Użyj strumienia JSON przez HTTP, aby połączyć się z serwerem. Ta metoda jest sprawdzona, ale może zużywać więcej baterii.</string>
<string name="main_menu_donate_title">Wspomóż💸</string>
<string name="detail_item_cannot_open_apk">Aplikacja nie może zostać zainstalowana. Pobierz ją poprzez przeglądarkę. Sprawdź problem #531 po więcej informacji.</string>
<string name="settings_notifications_insistent_max_priority_title">Nadal wysyłaj powiadomienia dla najwyższych priorytetów</string>
<string name="detail_settings_notifications_dedicated_channels_title">Własne ustawienia powiadomień</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Używa własnych ustawień dla tej subskrypcji</string>
<string name="detail_settings_notifications_open_channels_title">Skonfiguruj ustawienia powiadomień</string>
<string name="detail_settings_notifications_open_channels_summary">Nadpisanie trybu nie przeszkadzać, dźwięki, itp.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Cały czas alarmuj</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Wyślij alarm tylko raz</string>
<string name="channel_notifications_group_default_name">Domyślne</string>
<string name="settings_advanced_unifiedpush_title">Załącz</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Powiadomienia o najwyższym priorytecie wysyłają alarm do czasu ich potwierdzenia</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Powiadomienia o najwyższym priorytecie wysyłają powiadomienie tylko raz</string>
<string name="settings_advanced_unifiedpush_summary_enabled">Ntfy będzie działać jako dystrybutor UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_disabled">Ntfy nie będzie dystrybutorem UnifiedPush</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Używa domyślnych ustawień (dźwięki, nadpisanie trybu nie przeszkadzać, itp.)</string>
</resources> </resources>

View file

@ -4,14 +4,14 @@
<string name="detail_menu_test">Enviar notificação de teste</string> <string name="detail_menu_test">Enviar notificação de teste</string>
<string name="detail_menu_copy_url">Copiar endereço do tema</string> <string name="detail_menu_copy_url">Copiar endereço do tema</string>
<string name="notification_dialog_show_all">Mostrar todas notificações</string> <string name="notification_dialog_show_all">Mostrar todas notificações</string>
<string name="channel_subscriber_notification_instant_text_three">Inscrito em três temas de entrega instantânea</string> <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 temas 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_notifications_default_name">Notificações (prioridade padrão)</string> <string name="channel_notifications_default_name">Notificações (prioridade padrão)</string>
<string name="channel_notifications_min_name">Notificações (prioridade mínima)</string> <string name="channel_notifications_min_name">Notificações (prioridade mínima)</string>
<string name="main_menu_notifications_enabled">Notificações ativadas</string> <string name="main_menu_notifications_enabled">Notificações ativadas</string>
<string name="main_menu_settings_title">Configurações</string> <string name="main_menu_settings_title">Configurações</string>
<string name="channel_subscriber_notification_noinstant_text">Inscrito em temas</string> <string name="channel_subscriber_notification_noinstant_text">Inscrito em tópicos</string>
<string name="channel_subscriber_notification_noinstant_text_three">Inscrito em três temas</string> <string name="channel_subscriber_notification_noinstant_text_three">Inscrito em três tópicos</string>
<string name="main_menu_report_bug_title">Relatar um problema</string> <string name="main_menu_report_bug_title">Relatar um problema</string>
<string name="main_item_status_reconnecting">Reconectando …</string> <string name="main_item_status_reconnecting">Reconectando …</string>
<string name="channel_notifications_high_name">Notificações (prioridade alta)</string> <string name="channel_notifications_high_name">Notificações (prioridade alta)</string>
@ -19,35 +19,35 @@
<string name="channel_subscriber_service_name">Serviço de Assinatura</string> <string name="channel_subscriber_service_name">Serviço de Assinatura</string>
<string name="channel_subscriber_notification_title">Aguardando notificações</string> <string name="channel_subscriber_notification_title">Aguardando notificações</string>
<string name="channel_subscriber_notification_instant_text">Inscrito em temas de entrega instantânea</string> <string name="channel_subscriber_notification_instant_text">Inscrito em temas de entrega instantânea</string>
<string name="channel_subscriber_notification_instant_text_one">Inscrito em um tema de entrega instantânea</string> <string name="channel_subscriber_notification_instant_text_one">Inscrito em um tópico de entrega instantânea</string>
<string name="channel_subscriber_notification_instant_text_more">Inscrito em %1$d temas de entrega instantânea</string> <string name="channel_subscriber_notification_instant_text_more">Inscrito em %1$d tópicos de entrega instantânea</string>
<string name="channel_subscriber_notification_noinstant_text_two">Inscrito em dois temas</string> <string name="channel_subscriber_notification_noinstant_text_two">Inscrito em dois tópicos</string>
<string name="channel_subscriber_notification_noinstant_text_four">Inscrito em quatro temas</string> <string name="channel_subscriber_notification_noinstant_text_four">Inscrito em quatro tópicos</string>
<string name="channel_subscriber_notification_noinstant_text_more">Inscrito em %1$d temas</string> <string name="channel_subscriber_notification_noinstant_text_more">Inscrito em %1$d tópicos</string>
<string name="refresh_message_result">%1$d notificações recebidas</string> <string name="refresh_message_result">%1$d notificação(ões) recebida(s)</string>
<string name="refresh_message_no_results">Tudo está atualizado</string> <string name="refresh_message_no_results">Tudo está atualizado</string>
<string name="refresh_message_error">Não foi possível atualizar %1$d inscrições <string name="refresh_message_error">Não foi possível atualizar %1$d subscrições
\n \n
\n%2$s</string> \n%2$s</string>
<string name="main_action_bar_title">Temas inscritos</string> <string name="main_action_bar_title">Temas inscritos</string>
<string name="main_menu_notifications_disabled_until">Notificações silenciadas até %1$s</string> <string name="main_menu_notifications_disabled_until">Notificações silenciadas até %1$s</string>
<string name="main_menu_rate_title">Avalie o aplicativo ⭐</string> <string name="main_menu_rate_title">Avalie o aplicativo ⭐</string>
<string name="main_action_mode_delete_dialog_message">Cancelar inscrição dos temas selecionados e remover permanentemente todas notificações\?</string> <string name="main_action_mode_delete_dialog_message">Cancelar inscrição dos tópicos selecionados e remover permanentemente todas notificações\?</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Remover permanentemente</string> <string name="main_action_mode_delete_dialog_permanently_delete">Remover permanentemente</string>
<string name="main_action_mode_delete_dialog_cancel">Cancelar</string> <string name="main_action_mode_delete_dialog_cancel">Cancelar</string>
<string name="main_item_date_yesterday">ontem</string> <string name="main_item_date_yesterday">ontem</string>
<string name="main_add_button_description">Inscrever-se</string> <string name="main_add_button_description">Adicionar Subscrição</string>
<string name="main_no_subscriptions_text">Parece que você não tem nenhuma inscrição ainda.</string> <string name="main_no_subscriptions_text">Parece que você não tem nenhuma inscrição ainda.</string>
<string name="main_how_to_link">Instruções detalhadas disponíveis em ntfy.sh, e na documentação.</string> <string name="main_how_to_link">Instruções detalhadas disponíveis em ntfy.sh, e na documentação.</string>
<string name="main_banner_battery_text">Otimização de bateria deve estar desligada para evitar problemas de entrega de notificação no aplicativo.</string> <string name="main_banner_battery_text">O modo Economia de Energia deve estar desligado para evitar problemas de entrega de notificação no aplicativo.</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string> <string name="main_item_status_unified_push">%1$s(UnifiedPush)</string>
<string name="main_banner_websocket_button_remind_later">Perguntar depois</string> <string name="main_banner_websocket_button_remind_later">Perguntar depois</string>
<string name="main_banner_websocket_button_dismiss">Dispensar</string> <string name="main_banner_websocket_button_dismiss">Dispensar</string>
<string name="add_dialog_title">Inscrever-se no tema</string> <string name="add_dialog_title">Inscrever-se no tópico</string>
<string name="add_dialog_description_below">Temas podem não ser protegidos por senha, escolha um nome difícil de adivinhar. Uma vez inscrito, você pode usar as notificações PUT/POST.</string> <string name="add_dialog_description_below">Os tópicos podem não ser protegidos por senha, escolha um nome difícil de adivinhar. Uma vez inscrito, você pode usar as notificações PUT/POST.</string>
<string name="add_dialog_topic_name_hint">Nome do tema, ex: alertas_jose</string> <string name="add_dialog_topic_name_hint">Nome do tópico, ex: alertas_jose</string>
<string name="add_dialog_use_another_server">Usar outro servidor</string> <string name="add_dialog_use_another_server">Usar outro servidor</string>
<string name="add_dialog_use_another_server_description">Insira as URLs do servidor abaixo para inscrever-se nos temas de outros servidores.</string> <string name="add_dialog_use_another_server_description">Insira as URLs do servidor abaixo para inscrever-se nos tópicos de outros servidores.</string>
<string name="add_dialog_foreground_description">Entrega instantânea está sempre ligada para hosts, exceto %1$s.</string> <string name="add_dialog_foreground_description">Entrega instantânea está sempre ligada para hosts, exceto %1$s.</string>
<string name="add_dialog_button_back">Voltar</string> <string name="add_dialog_button_back">Voltar</string>
<string name="add_dialog_error_connection_failed">Conexão falhou: %1$s</string> <string name="add_dialog_error_connection_failed">Conexão falhou: %1$s</string>
@ -55,9 +55,9 @@
<string name="add_dialog_login_username_hint">Nome de usuário</string> <string name="add_dialog_login_username_hint">Nome de usuário</string>
<string name="add_dialog_login_error_not_authorized">Login falhou. Usuário %1$s não autorizado.</string> <string name="add_dialog_login_error_not_authorized">Login falhou. Usuário %1$s não autorizado.</string>
<string name="add_dialog_login_new_user">Novo usuário</string> <string name="add_dialog_login_new_user">Novo usuário</string>
<string name="detail_no_notifications_text">Você não recebeu nenhuma notificação desse tema ainda.</string> <string name="detail_no_notifications_text">Você não recebeu nenhuma notificação desse tópico ainda.</string>
<string name="detail_how_to_example">Exemplo (usando curl): <br/><tt>$ curl -d \"Oi\" %1$s</tt></string> <string name="detail_how_to_example">Exemplo (usando curl): <br/><tt>$ curl -d \"Oi\" %1$s</tt></string>
<string name="detail_clear_dialog_message">Apagar todas as notificações desse tema\?</string> <string name="detail_clear_dialog_message">Apagar todas as notificações desse tópico\?</string>
<string name="detail_clear_dialog_permanently_delete">Apagar permanentemente</string> <string name="detail_clear_dialog_permanently_delete">Apagar permanentemente</string>
<string name="detail_delete_dialog_message">Cancelar inscrição desse tema e apagar todas as notificações recebidas\?</string> <string name="detail_delete_dialog_message">Cancelar inscrição desse tema e apagar todas as notificações recebidas\?</string>
<string name="detail_delete_dialog_cancel">Cancelar</string> <string name="detail_delete_dialog_cancel">Cancelar</string>
@ -184,9 +184,9 @@
<string name="settings_advanced_clear_logs_title">Limpar logs</string> <string name="settings_advanced_clear_logs_title">Limpar logs</string>
<string name="settings_advanced_clear_logs_summary">Apagar logs registrados anteriormente e recomeçar</string> <string name="settings_advanced_clear_logs_summary">Apagar logs registrados anteriormente e recomeçar</string>
<string name="settings_advanced_connection_protocol_title">Protocolo de conexão</string> <string name="settings_advanced_connection_protocol_title">Protocolo de conexão</string>
<string name="settings_advanced_connection_protocol_summary_ws">Usar WebSockets para conectar ao servidor. Isso irá se tornar o padrão em Junho de 2022.</string> <string name="settings_advanced_connection_protocol_summary_ws">Usar WebSockets para se conectar ao servidor. Este é o método recomendado, mas pode exigir configurações adicionais no seu proxy.</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">Stream JSON sobre HTTP</string> <string name="settings_advanced_connection_protocol_entry_jsonhttp">Stream JSON sobre HTTP</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string> <string name="settings_advanced_connection_protocol_entry_ws">Web Sockets</string>
<string name="settings_about_header">Sobre</string> <string name="settings_about_header">Sobre</string>
<string name="settings_about_version_title">Versão</string> <string name="settings_about_version_title">Versão</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string> <string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
@ -199,29 +199,29 @@
<string name="user_dialog_button_cancel">Cancelar</string> <string name="user_dialog_button_cancel">Cancelar</string>
<string name="user_dialog_button_delete">Apagar usuário</string> <string name="user_dialog_button_delete">Apagar usuário</string>
<string name="channel_notifications_low_name">Notificações (prioridade baixa)</string> <string name="channel_notifications_low_name">Notificações (prioridade baixa)</string>
<string name="channel_subscriber_notification_instant_text_two">Inscrito em dois temas de entrega instantânea</string> <string name="channel_subscriber_notification_instant_text_two">Inscrito em dois tópicos de entrega instantânea</string>
<string name="user_dialog_button_save">Salvar</string> <string name="user_dialog_button_save">Salvar</string>
<string name="main_item_status_text_one">%1$d notificação</string> <string name="main_item_status_text_one">%1$d notificação</string>
<string name="channel_subscriber_notification_noinstant_text_one">Inscrito em um tema</string> <string name="channel_subscriber_notification_noinstant_text_one">Inscrito em um tópico</string>
<string name="main_menu_notifications_disabled_forever">Notificações silenciadas</string> <string name="main_menu_notifications_disabled_forever">Notificações silenciadas</string>
<string name="refresh_message_error_one">Não foi possível atualizar a inscrição: %1$s</string> <string name="refresh_message_error_one">Não foi possível atualizar a inscrição: %1$s</string>
<string name="main_menu_docs_title">Leia a documentação</string> <string name="main_menu_docs_title">Leia a documentação</string>
<string name="main_action_mode_menu_unsubscribe">Cancelar inscrição</string> <string name="main_action_mode_menu_unsubscribe">Cancelar inscrição</string>
<string name="main_unified_push_toast">Essa inscrição é gerenciada por %1$s via UnifiedPush</string> <string name="main_unified_push_toast">Essa inscrição é gerenciada por %1$s via UnifiedPush</string>
<string name="main_item_status_text_not_one">%1$d notificações</string> <string name="main_item_status_text_not_one">%1$d notificações</string>
<string name="main_how_to_intro">Clique no + para criar ou inscrever-se em um tema. Você receberá notificações no seu dispositivo ao enviar mensagens via PUT ou POST.</string> <string name="main_how_to_intro">Clique no + para criar ou inscrever-se em um tópico. Em seguida você receberá notificações no seu dispositivo ao enviar mensagens via PUT ou POST.</string>
<string name="main_banner_battery_button_remind_later">Perguntar depois</string> <string name="main_banner_battery_button_remind_later">Perguntar depois</string>
<string name="main_banner_battery_button_dismiss">Dispensar</string> <string name="main_banner_battery_button_dismiss">Dispensar</string>
<string name="add_dialog_button_subscribe">Inscrever-se</string> <string name="add_dialog_button_subscribe">Inscrever-se</string>
<string name="main_banner_battery_button_fix_now">Consertar agora</string> <string name="main_banner_battery_button_fix_now">Consertar agora</string>
<string name="add_dialog_instant_delivery">Entrega instantânea em modo soneca</string> <string name="add_dialog_instant_delivery">Entrega instantânea em modo descanso</string>
<string name="add_dialog_button_cancel">Cancelar</string> <string name="add_dialog_button_cancel">Cancelar</string>
<string name="add_dialog_instant_delivery_description">Garante que as mensagens são entregues imediatamente, mesmo se o dispositivo estiver inativo.</string> <string name="add_dialog_instant_delivery_description">Garante que as mensagens são entregues imediatamente, mesmo se o dispositivo estiver inativo.</string>
<string name="add_dialog_button_login">Entrar</string> <string name="add_dialog_button_login">Entrar</string>
<string name="add_dialog_login_password_hint">Senha</string> <string name="add_dialog_login_password_hint">Senha</string>
<string name="add_dialog_login_description">Esse tema requer login. Insira um nome de usuário e senha.</string> <string name="add_dialog_login_description">Este tópico requer login. Insira um nome de usuário e senha.</string>
<string name="detail_item_snack_deleted">Notificação removida</string> <string name="detail_item_snack_deleted">Notificação removida</string>
<string name="detail_how_to_intro">Para enviar notificações para esse tema, basta usar os métodos PUT ou POST na URL do tema.</string> <string name="detail_how_to_intro">Para enviar notificações para esse tópico, basta usar os métodos PUT ou POST na URL do tema.</string>
<string name="detail_how_to_link">Instruções detalhadas disponíveis em ntfy.sh e na documentação.</string> <string name="detail_how_to_link">Instruções detalhadas disponíveis em ntfy.sh e na documentação.</string>
<string name="detail_clear_dialog_cancel">Cancelar</string> <string name="detail_clear_dialog_cancel">Cancelar</string>
<string name="detail_delete_dialog_permanently_delete">Apagar permanentemente</string> <string name="detail_delete_dialog_permanently_delete">Apagar permanentemente</string>
@ -246,7 +246,7 @@
<string name="settings_advanced_export_logs_scrub_dialog_empty">Nenhum tema/hostname foram censurados. Talvez você não tenha inscrições\?</string> <string name="settings_advanced_export_logs_scrub_dialog_empty">Nenhum tema/hostname foram censurados. Talvez você não tenha inscrições\?</string>
<string name="settings_advanced_clear_logs_deleted_toast">Logs apagados</string> <string name="settings_advanced_clear_logs_deleted_toast">Logs apagados</string>
<string name="settings_advanced_export_logs_entry_copy_original">Copiar para área de transferência</string> <string name="settings_advanced_export_logs_entry_copy_original">Copiar para área de transferência</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Usar uma stream JSON sobre HTTP para conectar ao servidor. Esse método foi descontinuado e será removido em Junho de 2022.</string> <string name="settings_advanced_connection_protocol_summary_jsonhttp">Usar um stream JSON via HTTP para conectar ao servidor. Esse método já funciona bem mas pode consumir mais bateria.</string>
<string name="user_dialog_description_add">Você pode adicionar um usuário aqui. Todos os temas para esse servidor usarão esse usuário.</string> <string name="user_dialog_description_add">Você pode adicionar um usuário aqui. Todos os temas para esse servidor usarão esse usuário.</string>
<string name="user_dialog_username_hint">Nome de usuário</string> <string name="user_dialog_username_hint">Nome de usuário</string>
<string name="user_dialog_password_hint_edit">Senha (não será modificado se deixado em branco)</string> <string name="user_dialog_password_hint_edit">Senha (não será modificado se deixado em branco)</string>
@ -317,4 +317,30 @@
<string name="channel_subscriber_notification_instant_text_six">Inscrito em seis tópicos de entrega instantânea</string> <string name="channel_subscriber_notification_instant_text_six">Inscrito em seis tópicos de entrega instantânea</string>
<string name="channel_subscriber_notification_noinstant_text_five">Inscrito em cinco tópicos</string> <string name="channel_subscriber_notification_noinstant_text_five">Inscrito em cinco tópicos</string>
<string name="detail_settings_global_setting_suffix">usando configurações globais</string> <string name="detail_settings_global_setting_suffix">usando configurações globais</string>
<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>
<string name="channel_notifications_group_default_name">Padrão</string>
<string name="main_menu_donate_title">Doar 💸</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Notificações de prioridade máxima alertam apenas uma vez</string>
<string name="detail_settings_notifications_open_channels_title">Definir configurações de notificação</string>
<string name="detail_settings_notifications_open_channels_summary">Sobrepor Não Perturbe (DND), sons, etc.</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy não atuará como distribuidor UnifiedPush</string>
<string name="detail_settings_notifications_dedicated_channels_title">Configurações de notificação personalizadas</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Alertar apenas uma vez</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Usando configurações personalizadas para esta assinatura</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Usando configurações padrão (sons, substituição de Não perturbe, etc.)</string>
<string name="detail_item_cannot_open_apk">Apps não podem mais ser instalados, baixe pelo navegador. Veja a issue #531 para detalhes.</string>
<string name="settings_notifications_insistent_max_priority_title">Continue alertando para a prioridade mais alta</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Notificações de prioridade máxima alertam continuamente até serem dispensadas</string>
<string name="settings_advanced_unifiedpush_title">Habilitar UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy vai agir como um distribuidor UnifiedPush</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Continuar alertando</string>
</resources> </resources>

View file

@ -0,0 +1,343 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="channel_subscriber_notification_instant_text_three">Três tópicos de entrega instantânea subscritos</string>
<string name="channel_subscriber_notification_instant_text_four">Quatro tópicos de entrega instantânea subscritos</string>
<string name="channel_subscriber_notification_instant_text_five">Cinco tópicos de entrega instantânea subscritos</string>
<string name="channel_subscriber_notification_instant_text_six">Seis tópicos de entrega instantânea subscritos</string>
<string name="channel_subscriber_notification_instant_text_more">%1$d tópico(s) de entrega instantânea subscrito(s)</string>
<string name="channel_subscriber_notification_noinstant_text">Tópicos subscritos</string>
<string name="channel_subscriber_notification_noinstant_text_one">Um tópico subscrito</string>
<string name="channel_subscriber_notification_noinstant_text_two">Dois tópicos subscritos</string>
<string name="channel_subscriber_notification_noinstant_text_three">Três tópicos subscritos</string>
<string name="channel_subscriber_notification_noinstant_text_six">Seis tópicos subscritos</string>
<string name="channel_subscriber_notification_noinstant_text_more">%1$d tópico(s) subscrito(s)</string>
<string name="refresh_message_result">%1$d notificação(ões) recebida(s)</string>
<string name="refresh_message_no_results">Está tudo atualizado</string>
<string name="refresh_message_error">Não foi possível atualizar %1$d subscrição(ões)
\n
\n%2$s</string>
<string name="refresh_message_error_one">Não foi possível atualizar a subscrição: %1$s</string>
<string name="main_action_bar_title">Tópicos subscritos</string>
<string name="main_menu_notifications_enabled">Notificações ativadas</string>
<string name="main_menu_notifications_disabled_forever">Notificações silenciadas</string>
<string name="channel_notifications_min_name">Prioridade mínima</string>
<string name="channel_notifications_low_name">Prioridade baixa</string>
<string name="channel_subscriber_service_name">Serviço de subscrição</string>
<string name="channel_subscriber_notification_title">À escuta de novas notificações</string>
<string name="channel_subscriber_notification_instant_text">Tópicos de entrega instantânea subscritos</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">Ler a documentação</string>
<string name="main_menu_rate_title">Avaliar a aplicação ⭐</string>
<string name="main_action_mode_menu_unsubscribe">Cancelar subscrição</string>
<string name="main_action_mode_delete_dialog_message">Cancelar a subscrição do(s) tópico(s) selecionado(s) e eliminar permanentemente todas as notificações\?</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Eliminar 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">A restabelecer ligação …</string>
<string name="main_item_date_yesterday">ontem</string>
<string name="main_add_button_description">Adicionar subscrição</string>
<string name="main_no_subscriptions_text">Parece que ainda não tem subscrições.</string>
<string name="main_how_to_link">Instruções detalhadas disponíveis em ntfy.sh, e na documentação.</string>
<string name="main_unified_push_toast">Esta subscrição é controlada por %1$s via UnifiedPush</string>
<string name="main_banner_battery_text">A otimização de bateria deve estar desativada para a aplicação, de modo a evitar problemas na receção 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">Subscrever tópico</string>
<string name="add_dialog_topic_name_hint">Nome do tópico, por exemplo: \"alertas_do_filipe\"</string>
<string name="channel_subscriber_notification_noinstant_text_four">Quatro tópicos subscritos</string>
<string name="channel_subscriber_notification_noinstant_text_five">Cinco tópicos subscritos</string>
<string name="main_how_to_intro">Clique no + para subscrever um tópico. Depois, receberá notificações no seu dispositivo quando enviar mensagens via PUT ou POST.</string>
<string name="channel_notifications_max_name">Prioridade máxima</string>
<string name="main_banner_websocket_text">Trocar para WebSockets é a forma recomendada de se ligar ao seu servidor, podendo melhorar a duração da bateria, mas pode necessitar <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">Prioridade padrão</string>
<string name="channel_notifications_high_name">Prioridade alta</string>
<string name="channel_subscriber_notification_instant_text_one">Um tópico de entrega instantânea subscrito</string>
<string name="main_banner_websocket_button_enable_now">Ativar agora</string>
<string name="channel_subscriber_notification_instant_text_two">Dois tópicos de entrega instantânea subscritos</string>
<string name="add_dialog_description_below">Tópicos podem não ser protegidos por palavra-passe, portanto escolha um nome que seja difícil de adivinhar. Uma vez inscrito, poderá enviar notificações PUT/POST.</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string>
<string name="add_dialog_use_another_server">Utilizar outro servidor</string>
<string name="add_dialog_button_login">Entrar</string>
<string name="add_dialog_login_title">Autenticação necessária</string>
<string name="detail_clear_dialog_message">Deseja eliminar todas as notificações nesse tópico\?</string>
<string name="detail_clear_dialog_permanently_delete">Eliminar permanentemente</string>
<string name="detail_delete_dialog_permanently_delete">Eliminar permanentemente</string>
<string name="detail_delete_dialog_cancel">Cancelar</string>
<string name="detail_test_title">Teste: 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">Tópico \"%1$s\" subscrito</string>
<string name="detail_item_tags">Etiquetas: %1$s</string>
<string name="detail_item_snack_deleted">Notificação eliminada</string>
<string name="detail_item_snack_undo">Desfazer</string>
<string name="detail_item_menu_download">Descarregar ficheiro</string>
<string name="detail_item_menu_cancel">Cancelar a descarga</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 ficheiro pode ter sido eliminado, ou não existe nenhuma aplicação instalada que o consiga abrir.</string>
<string name="detail_item_cannot_open_url">Não foi possível abrir o URL: %1$s</string>
<string name="detail_item_cannot_save">Não foi possível guardar o anexo: %1$s</string>
<string name="detail_item_cannot_delete">Não foi possível eliminar o anexo: %1$s</string>
<string name="detail_item_download_failed">Não foi possível descarregar o anexo: %1$s</string>
<string name="detail_item_download_info_not_downloaded_expires_x">não foi decarregado, expira em %1$s</string>
<string name="detail_item_download_info_downloading_x_percent">%1$d%% decarregado</string>
<string name="detail_item_download_info_deleted">eliminado</string>
<string name="detail_item_download_info_deleted_expired">eliminado, a ligação expirou</string>
<string name="detail_item_download_info_deleted_expires_x">eliminado, a ligação expira em %1$s</string>
<string name="detail_item_download_info_download_failed">falha ao descarregar</string>
<string name="detail_item_download_info_download_failed_expired">falha ao descarregar, a ligação expirou</string>
<string name="detail_item_download_info_download_failed_expires_x">falha ao descarregar, a ligação expira em %1$s</string>
<string name="detail_menu_notifications_enabled">Notificações atvadas</string>
<string name="detail_menu_notifications_disabled_forever">Notificações silenciadas</string>
<string name="detail_menu_enable_instant">Ativar a entrega instantânea</string>
<string name="detail_menu_disable_instant">Desativar 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 subscrições</string>
<string name="detail_menu_unsubscribe">Anular subscrição</string>
<string name="detail_action_mode_menu_delete">Eliminar</string>
<string name="detail_action_mode_delete_dialog_message">Deseja eliminar permanentemente a(s) notificação(ões) selecionada(s)\?</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">Eliminar permanentemente</string>
<string name="detail_action_mode_delete_dialog_cancel">Cancelar</string>
<string name="detail_settings_title">Configurações das subscrições</string>
<string name="share_title">Partilhar</string>
<string name="share_menu_send">Partilhar</string>
<string name="share_content_title">Pré-visualização da mensagem</string>
<string name="share_content_image_text">Uma imagem foi partilhada consigo</string>
<string name="share_topic_title">Partilhar 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">Guardar</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">Descarregar</string>
<string name="notification_popup_action_cancel">Cancelar</string>
<string name="notification_popup_file">%1$s
\nFicheiro: %2$s</string>
<string name="notification_popup_file_downloading">A descarregar %1$s, %2$d%%
\n%3$s</string>
<string name="notification_popup_file_download_successful">%1$s
\nFicheiro: %2$s, descarregado</string>
<string name="notification_popup_file_download_failed">%1$s
\nFicheiro: %2$s, falha ao descarregar</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">A mostrar 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">A mostrar todas as notificações</string>
<string name="settings_notifications_min_priority_summary_x_or_higher">Mostrar notificações se a prioridade for %1$d (%2$s) ou superior</string>
<string name="settings_notifications_min_priority_summary_max">Mostrar notificações se a prioridade for 5 (máxima)</string>
<string name="settings_notifications_min_priority_min">Qualquer prioridade</string>
<string name="settings_notifications_min_priority_low">Prioridade baixa ou superior</string>
<string name="settings_notifications_min_priority_default">Prioridade padrão ou superior</string>
<string name="settings_notifications_min_priority_high">Prioridade alta ou superior</string>
<string name="settings_notifications_min_priority_max">Apenas 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ções de canal</string>
<string name="settings_notifications_channel_prefs_summary">Sobrescrever modo \"Não incomodar\" (NI), sons, etc.</string>
<string name="settings_notifications_auto_download_title">Descarregar os anexos</string>
<string name="settings_notifications_auto_download_summary_always">Descarregar todos os anexos automaticamente</string>
<string name="settings_notifications_auto_download_summary_never">Nunca descarregar todos os anexos automaticamente</string>
<string name="settings_notifications_auto_download_summary_smaller_than_x">Descarregar os anexos automaticamente até %1$s</string>
<string name="settings_notifications_auto_download_never">Nunca descarregar nada automaticamente</string>
<string name="settings_notifications_auto_download_always">Descarregar 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">Elminar as notificações</string>
<string name="settings_notifications_auto_delete_summary_never">Nunca eliminar as notificações automaticamente</string>
<string name="settings_notifications_auto_delete_summary_one_day">Elminar as notificações automaticamente após um dia</string>
<string name="settings_notifications_auto_delete_summary_three_days">Eliminar as notificações automaticamente após 3 dias</string>
<string name="settings_notifications_auto_delete_summary_one_week">Eliminar as notificações automaticamente após uma semana</string>
<string name="settings_notifications_auto_delete_summary_one_month">Eliminar as notificações automaticamente após um mês</string>
<string name="settings_notifications_auto_delete_summary_three_months">Eliminar as notificações automaticamente após 3 meses</string>
<string name="settings_notifications_auto_delete_never">Nunca</string>
<string name="settings_notifications_auto_delete_one_day">Após um dia</string>
<string name="settings_notifications_auto_delete_three_days">Após 3 dias</string>
<string name="settings_notifications_auto_delete_one_week">Após uma semana</string>
<string name="settings_notifications_auto_delete_one_month">Após um mês</string>
<string name="settings_notifications_auto_delete_three_months">Após 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 o URL raíz do servidor para utilizar seu próprio como padrão ao subscrever novos tópicos e/ou partilhar em tópicos.</string>
<string name="settings_general_default_base_url_default_summary">%1$s (padrão)</string>
<string name="settings_general_users_title">Gerir utilizadores</string>
<string name="settings_general_users_summary">Adicionar/remover utilizadores em tópicos protegidos</string>
<string name="settings_general_users_prefs_title">Utilizadores</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 utilizadores</string>
<string name="settings_general_users_prefs_user_add_title">Adicionar novo utilizador</string>
<string name="settings_general_users_prefs_user_add_summary">Crie um novo utilizador para um novo servidor</string>
<string name="settings_general_dark_mode_summary_dark">Modo escuro ligado. Por acaso é um vampiro\?</string>
<string name="settings_general_dark_mode_entry_system">Usar a predefiniçã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">Cópias de segurança e restauro</string>
<string name="settings_backup_restore_backup_title">Fazer cópia de segurança para um ficheiro</string>
<string name="settings_backup_restore_backup_summary">Exportar as configurações, notificações e utilizadores</string>
<string name="settings_backup_restore_backup_entry_everything">Tudo</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">Tudo, exceto os utilizadores</string>
<string name="settings_backup_restore_backup_entry_settings_only">Apenas as configurações</string>
<string name="settings_backup_restore_backup_successful">Cópia criada</string>
<string name="settings_backup_restore_backup_failed">Falha ao criar cópia: %1$s</string>
<string name="detail_item_saved_successfully">Guardado como \"%1$s\" na pasta \"Downloads\" (\"Transferências\")</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 descarregar o anexo. A ligação expirou e nenhum ficheiro local foi encontrado.</string>
<string name="detail_item_download_info_not_downloaded_expired">não foi descarregado, a ligação 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 \"hosts\" que não sejam %1$s.</string>
<string name="add_dialog_use_another_server_description">Insira os URLs de serviço abaixo para subscrever tópicos de outros servidores.</string>
<string name="add_dialog_button_cancel">Cancelar</string>
<string name="add_dialog_button_subscribe">Subscrever</string>
<string name="add_dialog_error_connection_failed">A ligação falhou: %1$s</string>
<string name="add_dialog_login_description">Esse tópico necessita autenticação. Por favor, insira um nome de utilizador e palavra-passe.</string>
<string name="add_dialog_login_new_user">Novo utilizador</string>
<string name="add_dialog_base_urls_dropdown_choose">Escolha URL de 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 anular a subscrição deste tópico e eliminar todas as notificações recebidas\?</string>
<string name="detail_test_message">Esta é uma notificação de teste da aplicação Android do ntfy. Tem uma prioridade de nível %1$d. Se enviar outra notificação, poderá 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 ficheiro</string>
<string name="detail_item_menu_save_file">Guardar o ficheiro</string>
<string name="detail_item_menu_copy_url">Copiar URL</string>
<string name="detail_item_download_info_not_downloaded">não foi descarregado</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 são 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 utilizador</string>
<string name="add_dialog_login_password_hint">Palavra-passe</string>
<string name="add_dialog_login_error_not_authorized">A autenticação falhou. O utilizador \"%1$s\" não foi autorizado.</string>
<string name="add_dialog_base_urls_dropdown_clear">Limpar URL de serviço</string>
<string name="detail_no_notifications_text">Ainda não recebeu nenhuma notificação neste tópico.</string>
<string name="detail_how_to_intro">Para enviar notificações deste tópico, simplesmente faça um pedido PUT ou POST para o URL do tópico.</string>
<string name="detail_how_to_link">Instruções detalhadas disponíveis em ntfy.sh, e na documentação.</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 utilizador \"%1$s\" não está autorizado.</string>
<string name="detail_instant_delivery_disabled">Entrega instantânea desativada</string>
<string name="detail_item_menu_delete">Eliminar ficheiro</string>
<string name="detail_item_menu_copy_url_copied">URL copiado 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">Adicione conteúdo a partilhar aqui</string>
<string name="share_content_file_error">Não foi possível ler as informações do ficheiro: %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 ficheiro foi partilhado consigo</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 a predefinição do sistema</string>
<string name="main_menu_donate_title">Doar 💸</string>
<string name="settings_backup_restore_restore_failed">Falha ao restaurar %1$s</string>
<string name="settings_advanced_header">Avançado</string>
<string name="settings_advanced_broadcast_title">Messagens de transmissão</string>
<string name="settings_advanced_broadcast_summary_disabled">As aplicações não podem receber notificações como transmissões</string>
<string name="settings_advanced_broadcast_summary_enabled">As aplicações podem receber notificações como transmissões</string>
<string name="settings_advanced_export_logs_entry_copy_original">Copiar para área de transferência</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">Copiar para área de transferência (censurado)</string>
<string name="settings_advanced_export_logs_entry_upload_original">Enviar e copiar ligação</string>
<string name="settings_advanced_export_logs_uploading">A enviar registos …</string>
<string name="settings_advanced_export_logs_copied_url">Registos enviados e URL copiado</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Utilizar uma \"stream\" de JSON através de HTTP para se ligar ao servidor. Este método foi bem testado na pratica, mas pode consumir mais bateria.</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
<string name="detail_settings_notifications_instant_summary_off">As notificações são entregues utilizando o Firebase. A entrega pode atrasar, mas consome menos bateria.</string>
<string name="detail_settings_appearance_header">Aparência</string>
<string name="detail_settings_appearance_icon_set_title">Ícone de subscrição</string>
<string name="detail_settings_appearance_icon_set_summary">Defina um ícone para ser exibido nas notificações</string>
<string name="detail_settings_appearance_icon_remove_title">Ícone de subscrição (toque para remover)</string>
<string name="detail_settings_appearance_display_name_message">Defina um nome de exibição personalizado para esta subscrição. Deixe em branco para o padrão (%1$s).</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (padrão)</string>
<string name="detail_settings_global_setting_title">Usar configuração global</string>
<string name="detail_settings_global_setting_suffix">usar configuração global</string>
<string name="detail_settings_about_header">Sobre a aplicação</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 a área de transferência</string>
<string name="user_dialog_title_add">Adicionar utilizador</string>
<string name="settings_backup_restore_restore_title">Restaurar de um ficheiro</string>
<string name="settings_backup_restore_restore_summary">Importar configurações, notificações e usuários</string>
<string name="settings_backup_restore_restore_successful">Restauração concluída</string>
<string name="settings_advanced_record_logs_summary_enabled">A registar (até 1000 entradas) no dispositivo …</string>
<string name="settings_advanced_record_logs_summary_disabled">Ative os registos para os poder partilhar mais tarde e diagnosticar problemas.</string>
<string name="settings_advanced_record_logs_title">Registos</string>
<string name="settings_advanced_export_logs_title">Copiar/enviar registos</string>
<string name="settings_advanced_export_logs_summary">Copie os registos para a área de transferência ou faça envie para nopaste.net (propriedade do autor do ntfy). \"Hostnames\" e tópicos podem ser censurados, as notificações não.</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">Enviar e copiar ligação (censurado)</string>
<string name="settings_advanced_export_logs_copied_logs">Registos copiados para área de transferência</string>
<string name="settings_advanced_export_logs_scrub_dialog_text">Esses tópicos/\"hostnames\" foram substituídos por nomes de frutas, portanto pode partilhar os registos sem se preocupar:
\n
\n%1$s
\n
\nAs palavras-passe são retiradas e não são listadas aqui.</string>
<string name="settings_advanced_export_logs_error_uploading">Não foi possível enviar os registos: %1$s</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">OK</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">Nenhum tópico/\"hostname\" foi editado. Talvez não tenha nenhuma subscrição\?</string>
<string name="settings_advanced_clear_logs_title">Limpar registos</string>
<string name="settings_advanced_clear_logs_deleted_toast">Registos excluídos</string>
<string name="settings_advanced_connection_protocol_title">Protocolo de ligação</string>
<string name="settings_advanced_clear_logs_summary">Eliminar registos gravados anteriormente e começar de novo</string>
<string name="settings_advanced_connection_protocol_summary_ws">Utilizar WebSockets para se ligar ao servidor. Este é o método recomendado, mas pode exigir configuração adicional no seu proxy.</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">\"Stream\" JSON através de HTTP</string>
<string name="settings_about_header">Sobre a aplicação</string>
<string name="settings_about_version_title">Versão</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string>
<string name="detail_settings_notifications_instant_title">Entrega instantânea</string>
<string name="detail_settings_notifications_instant_summary_on">As notificações são entregues instantaneamente. Requer um serviço que corre em primeiro plano e consome mais bateria.</string>
<string name="settings_about_version_copied_to_clipboard_message">Copiado para área de transferência</string>
<string name="detail_settings_appearance_icon_error_saving">Não foi possível guardar o ícone: %1$s</string>
<string name="detail_settings_appearance_icon_remove_summary">Ícone exibido nas notificações deste tópico</string>
<string name="detail_settings_appearance_display_name_title">Nome de exibição</string>
<string name="user_dialog_description_edit">Pode editar o nome/palavra-passe do utilizador selecionado ou eliminá-lo.</string>
<string name="user_dialog_base_url_hint">URL do serviço</string>
<string name="user_dialog_title_edit">Editar utilizador</string>
<string name="user_dialog_description_add">Pode adicionar um utilizador aqui. Todos os tópicos para o servidor fornecido usarão esse utilizador.</string>
<string name="user_dialog_username_hint">Nome de utilizador</string>
<string name="user_dialog_password_hint_add">Palavra-passe</string>
<string name="user_dialog_password_hint_edit">Palavra-passe (se deixada em branco não será alterada)</string>
<string name="user_dialog_button_cancel">Cancelar</string>
<string name="user_dialog_button_add">Adicionar utilizador</string>
<string name="user_dialog_button_delete">Eliminar utilizador</string>
<string name="user_dialog_button_save">Guardar</string>
<string name="settings_notifications_insistent_max_priority_title">Continuar a alertar para a prioridade máxima</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Continuar a alertar</string>
<string name="channel_notifications_group_default_name">Padrão</string>
<string name="detail_item_cannot_open_apk">As aplicações já não podem ser instaladas. Em vez disso, descarregue pelo navegador. Consulte a questão #531 no GitHub para mais detalhes.</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">As notificações de prioridade máxima alertam continuamente até serem descartadas</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">As notificações de prioridade máxima alertam apenas uma vez</string>
<string name="detail_settings_notifications_dedicated_channels_title">Configurações de notificação personalizadas</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">A usar configurações personalizadas para esta subscrição</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">A usar as configurações padrão (sons, substituição de \"Não incomodar\", etc.)</string>
<string name="detail_settings_notifications_open_channels_title">Definir configurações de notificação</string>
<string name="detail_settings_notifications_open_channels_summary">Sobreposição de \"Não incomodar\" (NI), sons, etc.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Alertar apenas uma vez</string>
</resources>

View file

@ -0,0 +1,346 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="settings_backup_restore_restore_successful">Restaurat cu succes</string>
<string name="settings_advanced_record_logs_title">Înregistrează jurnale</string>
<string name="settings_advanced_export_logs_summary">Copiază jurnal în clipboard, sau uploadează pe nopaste.net (deținut de autorul ntfy). Numele gazdelor sau topicele pot fi cenzurate, notificările nu vor fi niciodată.</string>
<string name="settings_advanced_export_logs_error_uploading">Nu s-au putut încărca jurnalele: %1$s</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string>
<string name="settings_about_version_copied_to_clipboard_message">Copiat în clipboard</string>
<string name="detail_settings_notifications_instant_summary_on">Notificările sunt primite instantaneu. Necesită un serviciu în prim plan și consumă mai multă baterie.</string>
<string name="detail_settings_notifications_dedicated_channels_title">Setări personalizate pentru notificări</string>
<string name="detail_settings_appearance_icon_set_summary">Setează o pictogramă care să fie afișată în notificări</string>
<string name="channel_subscriber_notification_instant_text_three">Abonat la trei topice cu livrare instantanee</string>
<string name="detail_settings_about_topic_url_title">URL-ul topicului</string>
<string name="channel_subscriber_service_name">Serviciul abonărilor</string>
<string name="user_dialog_password_hint_edit">Parolă (neschimbată dacă este lăsată necompletată)</string>
<string name="channel_subscriber_notification_instant_text_two">Abonat la două topice cu livrare instantanee</string>
<string name="channel_subscriber_notification_instant_text">Abonat pentru primirea topicelor cu livrare instantanee</string>
<string name="channel_subscriber_notification_instant_text_five">Abonat la cinci topice cu livrare instantanee</string>
<string name="channel_subscriber_notification_instant_text_more">Abonat la %1$d topice cu livrare instantanee</string>
<string name="channel_subscriber_notification_noinstant_text_three">Abonat la trei topice</string>
<string name="channel_subscriber_notification_noinstant_text_two">Abonat la două topice</string>
<string name="channel_subscriber_notification_noinstant_text_four">Abonat la patru topice</string>
<string name="main_banner_websocket_text">Trecerea la WebSockets este modalitatea recomandată de a vă conecta la serverul dumneavostră, și poate îmbunătăți durata de viață a bateriei, dar poate necesita <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">configurare suplimentară în proxy-ul dumneavostră</a>. Acest lucru poate fi comutat în setări.</string>
<string name="detail_item_cannot_download">Nu se poate deschide sau descărca atașamentul. Link-ul a expirat și nu s-a găsit niciun fișier local.</string>
<string name="notification_dialog_muted_until_toast_message">Notificări oprite până la %1$s</string>
<string name="notification_popup_file">%1$s
\nFișier: %2$s</string>
<string name="notification_popup_file_download_successful">%1$s
\nFișier: %2$s, descărcat</string>
<string name="notification_popup_file_download_failed">%1$s
\nFile: %2$s, descărcare eșuată</string>
<string name="settings_notifications_muted_until_show_all">Se afișează toate notificările</string>
<string name="settings_notifications_min_priority_summary_any">Se afișează toate notificările</string>
<string name="settings_notifications_priority_low">mică</string>
<string name="settings_notifications_priority_high">mare</string>
<string name="settings_notifications_priority_max">maximă</string>
<string name="settings_notifications_channel_prefs_summary">Suprascriere nu deranjați (DND), sunete, etc.</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Notificările cu prioritate maximă se alertă continuu până la respingere</string>
<string name="settings_advanced_broadcast_summary_enabled">Aplicațiile pot primi notificări primite ca difuzări</string>
<string name="settings_advanced_broadcast_summary_disabled">Aplicațiile nu pot primi notificări ca difuzări</string>
<string name="settings_advanced_export_logs_scrub_dialog_text">Aceste topice/nume de gazde au fost înlocuite cu nume de fructe, ca să puteți distribui jurnalul fără griji:
\n
\n%1$s
\n
\nParolele sunt criptate, dar nu sunt listate aici.</string>
<string name="settings_advanced_connection_protocol_summary_ws">Folosește WebSockets pentru conectarea la server. Asta este metoda recomandată, dar ar putea necesita setări adiționale în proxy-ul dumneavoastră</string>
<string name="detail_settings_appearance_icon_remove_title">Pictogramă abonament (apăsați pentru a elimina)</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">Flux JSON prin HTTP</string>
<string name="settings_notifications_auto_delete_title">Șterge notificări</string>
<string name="settings_notifications_auto_download_always">Descarcă totul automat</string>
<string name="settings_notifications_auto_download_100k">Dacă e mai mic de 100 kB</string>
<string name="settings_notifications_auto_download_500k">Dacă e mai mic de 500 kB</string>
<string name="settings_notifications_auto_download_1m">Dacă e mai mic de 1 MB</string>
<string name="settings_notifications_auto_download_5m">Dacă e mai mic de 5 MB</string>
<string name="settings_notifications_auto_download_10m">Dacă e mai mic de 10 MB</string>
<string name="settings_notifications_auto_download_50m">Dacă e mai mic de 50 MB</string>
<string name="settings_notifications_auto_delete_never">Niciodată</string>
<string name="settings_notifications_auto_delete_three_days">Peste 3 zile</string>
<string name="settings_notifications_insistent_max_priority_title">Păstrează alertele pentru prioritatea maximă</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Notificările cu prioritate maximă se alertă o singură dată</string>
<string name="settings_general_header">General</string>
<string name="settings_general_default_base_url_title">Server implicit</string>
<string name="settings_general_default_base_url_message">Introduceți URL-ul rădăcinii a serverului dvs. pentru utilizarea implicită atunci când vă abonați la topice noi și/sau când partajați în topice.</string>
<string name="settings_general_default_base_url_default_summary">%1$s (implicit)</string>
<string name="settings_general_users_prefs_user_add">Adaugă utilizatori</string>
<string name="settings_general_users_prefs_user_add_summary">Crează un utilizator nou pentru un server nou</string>
<string name="settings_general_users_title">Gestionați utilizatorii</string>
<string name="settings_general_users_summary">Adaugă/șterge utilizatori pentru subiecte protejate</string>
<string name="settings_general_users_prefs_user_not_used">Nu este folosit de niciun topic</string>
<string name="settings_general_users_prefs_user_used_by_one">Folosit de topicul %1$s</string>
<string name="settings_general_users_prefs_user_used_by_many">Folosit de topicele %1$s</string>
<string name="settings_general_dark_mode_summary_system">Folosește implicitul sistemului</string>
<string name="settings_general_dark_mode_summary_light">Modul luminos pornit</string>
<string name="settings_general_dark_mode_summary_dark">Mod întunecat pornit. Ești un vampir\?</string>
<string name="settings_general_dark_mode_entry_system">Folosește implicitul sistemului</string>
<string name="settings_general_dark_mode_entry_light">Mod luminos</string>
<string name="settings_general_dark_mode_entry_dark">Mod întunecat</string>
<string name="settings_backup_restore_backup_entry_everything">Totul</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">Totul, înafară de utilizatori</string>
<string name="settings_backup_restore_header">Backup și restaurare</string>
<string name="settings_backup_restore_backup_title">Back up în fișier</string>
<string name="settings_backup_restore_backup_summary">Exportați configurația, notificările și utilizatorii</string>
<string name="settings_backup_restore_backup_entry_settings_only">Doar setări</string>
<string name="settings_backup_restore_backup_successful">Backup creat</string>
<string name="settings_backup_restore_backup_failed">Backup eșuat: %1$s</string>
<string name="settings_backup_restore_restore_title">Restaurează din fișier</string>
<string name="settings_backup_restore_restore_failed">Restaurare eșuată: %1$s</string>
<string name="settings_advanced_header">Avansat</string>
<string name="settings_advanced_broadcast_title">Difuzați mesaje</string>
<string name="settings_advanced_record_logs_summary_enabled">Se salvează (până la 1,000 de intrări) pe dispozitiv…</string>
<string name="settings_advanced_export_logs_title">Copiază/uploadează jurnale</string>
<string name="settings_advanced_export_logs_entry_copy_original">Copiază în clipboard</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">Copiază în clipboard (cenzurat)</string>
<string name="settings_advanced_export_logs_entry_upload_original">Uploadează și copiază linkul</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">Uploadează și copiază linkul (cenzurat)</string>
<string name="settings_advanced_export_logs_copied_logs">Jurnale copiate în clipboard</string>
<string name="settings_advanced_export_logs_uploading">Încărcare jurnal …</string>
<string name="settings_advanced_export_logs_copied_url">Jurnal încărcat și URL copiat</string>
<string name="settings_advanced_record_logs_summary_disabled">Activați înregistrarea în jurnal, astfel încât să puteți partaja jurnalele mai târziu pentru a diagnostica probleme.</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">OK</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">Niciun topic sau nume de gazde au fost redactate. Poate nu ai niciun abonament\?</string>
<string name="settings_advanced_clear_logs_summary">Șterge jurnalele înregistrate anterior, și începe de la capăt</string>
<string name="settings_advanced_clear_logs_deleted_toast">Jurnale șterse</string>
<string name="settings_advanced_connection_protocol_title">Protocolul conexiunii</string>
<string name="settings_advanced_clear_logs_title">Șterge jurnale</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Utilizați un flux JSON prin HTTP pentru conectarea la server. Această metodă este efectivă, dar poate folosi mai multă baterie.</string>
<string name="settings_about_header">Despre</string>
<string name="settings_about_version_title">Versiune</string>
<string name="detail_settings_notifications_instant_title">Primire instantanee</string>
<string name="detail_settings_notifications_instant_summary_off">Notificările sunt primite cu Firebase. Primirea poate fi întârziată, dar folosește mai puțină baterie.</string>
<string name="detail_settings_notifications_open_channels_title">Configurează setările pentru notificări</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Se folosesc setări personalizate pentru acest abonament</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Folosește setările implicite (sunete, trece peste Nu deranjați, etc.)</string>
<string name="detail_settings_appearance_header">Aparență</string>
<string name="detail_settings_notifications_open_channels_summary">Suprascrierea \"nu deranjați\" (DND), sunete, etc.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Alertează în continuare</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Alertează doar o dată</string>
<string name="detail_settings_appearance_icon_remove_summary">Pictograma afișată în notificări pentru acest topic</string>
<string name="detail_settings_appearance_display_name_title">Nume de afișare</string>
<string name="detail_settings_appearance_icon_set_title">Pictogramă abonament</string>
<string name="detail_settings_appearance_icon_error_saving">Nu s-a putut salva pictograma: %1$s</string>
<string name="detail_settings_appearance_display_name_message">Setează un nume de afișare personalizat pentru acest abonament. Lăsați necompletat pentru numele implicit (%1$s).</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (implicit)</string>
<string name="detail_settings_global_setting_title">Folosește setarea globală</string>
<string name="detail_settings_about_header">Despre</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Copiat în clipboard</string>
<string name="detail_settings_global_setting_suffix">folosind setarea globală</string>
<string name="user_dialog_title_add">Adaugă utilizator</string>
<string name="user_dialog_title_edit">Modifică utilizator</string>
<string name="user_dialog_description_add">Poți adaugă un utilizator aici. Toate topicele pentru serverul specificat vor folosi acest utilizator.</string>
<string name="user_dialog_description_edit">Puteți edita numele de utilizator/parola pentru utilizatorul selectat, sau îl puteți șterge.</string>
<string name="user_dialog_base_url_hint">URL-ul serviciului</string>
<string name="user_dialog_username_hint">Nume de utilizator</string>
<string name="user_dialog_password_hint_add">Parolă</string>
<string name="user_dialog_button_add">Adaugă utilizator</string>
<string name="user_dialog_button_cancel">Anulează</string>
<string name="user_dialog_button_delete">Șterge utilizator</string>
<string name="user_dialog_button_save">Salvează</string>
<string name="channel_notifications_default_name">Prioritate normală</string>
<string name="channel_subscriber_notification_title">Ascultând pentru notificări primite</string>
<string name="channel_notifications_max_name">Prioritate maximă</string>
<string name="channel_notifications_group_default_name">Implicit</string>
<string name="channel_subscriber_notification_instant_text_one">Abonat la un subiect cu livrare instantanee</string>
<string name="channel_subscriber_notification_instant_text_four">Abonat la patru topice cu livrare instantanee</string>
<string name="channel_subscriber_notification_instant_text_six">Abonat la șase topice cu livrare instantanee</string>
<string name="channel_subscriber_notification_noinstant_text">Abonat la topice</string>
<string name="channel_subscriber_notification_noinstant_text_one">Abonat la un topic</string>
<string name="channel_subscriber_notification_noinstant_text_five">Abonat la cinci topice</string>
<string name="channel_subscriber_notification_noinstant_text_six">Abonat la șase topice</string>
<string name="channel_subscriber_notification_noinstant_text_more">Abonat la %1$d topice</string>
<string name="refresh_message_result">%1$d notificări primite</string>
<string name="refresh_message_no_results">Totul este la zi</string>
<string name="refresh_message_error">Nu s-au putut actualiza %1$d abonări
\n
\n%2$s</string>
<string name="refresh_message_error_one">Nu s-a putut actualiza abonarea: %1$s</string>
<string name="main_action_bar_title">Topice abonate</string>
<string name="main_menu_rate_title">Evaluează aplicația</string>
<string name="main_menu_notifications_disabled_forever">Notificări dezactivate</string>
<string name="main_menu_notifications_disabled_until">Notificări dezactivate până la %1$s</string>
<string name="main_menu_report_bug_title">Raportează o problemă</string>
<string name="main_menu_docs_title">Citește documentația</string>
<string name="main_action_mode_delete_dialog_message">Dezabonează-te de la topicele selectate și șterge notificările permanent\?</string>
<string name="main_menu_donate_title">Donează 💸</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string>
<string name="main_add_button_description">Adaugă abonament</string>
<string name="main_item_status_text_not_one">%1$d notificări</string>
<string name="main_item_status_reconnecting">reconectare …</string>
<string name="main_item_date_yesterday">ieri</string>
<string name="main_no_subscriptions_text">Se pare că nu încă ești abonat la nimic.</string>
<string name="main_banner_battery_text">Optimizarea bateriei ar trebui să fie oprită pentru a preveni probleme de livrare a notificărilor.</string>
<string name="main_banner_battery_button_remind_later">Întreabă mai târziu</string>
<string name="main_how_to_intro">Apasă pe + pentru a crea sau pentru a te abona la un topic. Apoi primiți notificări pe dispozitivul dvs. atunci când trimiteți mesaje prin intermediul PUT sau POST.</string>
<string name="main_how_to_link">Instrucțiuni detaliate disponibile pe ntfy.sh, și pe documentație.</string>
<string name="main_unified_push_toast">Această abonare este gestionat de %1$s prin UnifiedPush</string>
<string name="main_banner_battery_button_dismiss">Ignoră</string>
<string name="detail_deep_link_subscribed_toast_message">Abonat la topicul %1$s</string>
<string name="detail_item_snack_deleted">Notificare ștearsă</string>
<string name="detail_item_tags">Etichete: %1$s</string>
<string name="detail_item_snack_undo">Anulează</string>
<string name="detail_item_menu_delete">Șterge fișierul</string>
<string name="detail_item_menu_cancel">Oprește descărcarea</string>
<string name="detail_item_menu_save_file">Salvează fișierul</string>
<string name="detail_item_saved_successfully">Salvat ca \"%1$s\" în directorul \"Downloads\"</string>
<string name="detail_item_menu_copy_contents">Copiază notificarea</string>
<string name="detail_item_menu_copy_contents_copied">Notificare copiată în clipboard</string>
<string name="detail_item_cannot_open">Nu se poate deschide atașametul: %1$s</string>
<string name="detail_item_cannot_open_url">Nu se poate deschide URL-ul: %1$s</string>
<string name="detail_item_cannot_open_apk">Aplicațiile nu mai pot fi instalate. Descarcă prin intermediul browser-ului. Consultați problema #531 pentru detalii.</string>
<string name="detail_item_download_info_deleted_expired">șters, link expirat</string>
<string name="detail_item_download_info_deleted_expires_x">șters, link expiră la %1$s</string>
<string name="detail_item_download_info_download_failed_expires_x">descărcare eșuată, linkul expiră la %1$s</string>
<string name="detail_menu_notifications_enabled">Notificări pornite</string>
<string name="detail_menu_enable_instant">Pornire primire instantanee</string>
<string name="detail_menu_notifications_disabled_forever">Notificări oprite</string>
<string name="detail_menu_notifications_disabled_until">Notificări oprite până la %1$s</string>
<string name="detail_menu_copy_url">Copiază adresa topicului</string>
<string name="detail_menu_clear">Șterge toate notificările</string>
<string name="detail_menu_unsubscribe">Dezabonează-te</string>
<string name="detail_action_mode_menu_copy">Copiază</string>
<string name="detail_menu_settings">Setări abonament</string>
<string name="detail_action_mode_menu_delete">Șterge</string>
<string name="detail_action_mode_delete_dialog_message">Șterge notificarea/notificările selectate permanent\?</string>
<string name="detail_settings_title">Setări abonament</string>
<string name="share_menu_send">Distribuie</string>
<string name="share_content_text_hint">Adaugă conținut pentru a distribui aici</string>
<string name="share_content_image_text">O imagine a fost distribuită cu tine</string>
<string name="share_content_file_error">Nu se poate citi informația fișierului: %1$s</string>
<string name="share_topic_title">Distribuie la</string>
<string name="notification_dialog_title">Oprește notificările</string>
<string name="share_successful">Mesaj publicat</string>
<string name="notification_dialog_save">Salvează</string>
<string name="notification_dialog_enabled_toast_message">Notificări reactivate</string>
<string name="notification_dialog_show_all">Arată toate notificările</string>
<string name="notification_dialog_muted_forever_toast_message">Notificări oprite</string>
<string name="notification_dialog_1h">O oră</string>
<string name="notification_dialog_forever">Până la reluare</string>
<string name="notification_dialog_2h">2 ore</string>
<string name="notification_dialog_8h">8 ore</string>
<string name="notification_dialog_tomorrow">Până mâine</string>
<string name="notification_popup_action_open">Deschide</string>
<string name="notification_popup_action_browse">Răsfoiește</string>
<string name="notification_popup_action_download">Descarcă</string>
<string name="notification_popup_file_downloading">Se descarcă %1$s, %2$d%%
\n%3$s</string>
<string name="notification_popup_action_cancel">Anulează</string>
<string name="notification_popup_user_action_failed">%1$s eșuat: %2$s</string>
<string name="settings_notifications_muted_until_title">Oprire notificări</string>
<string name="settings_notifications_muted_until_forever">Notificări oprite până la reluare</string>
<string name="settings_notifications_muted_until_x">Notificări oprite până la %1$s</string>
<string name="settings_notifications_header">Notificări</string>
<string name="settings_notifications_min_priority_summary_x_or_higher">Arată notificările dacă prioritatea este %1$d (%2$s) sau mai înaltă</string>
<string name="settings_notifications_min_priority_summary_max">Arată notificările dacă prioritatea este 5 (maximă)</string>
<string name="settings_notifications_min_priority_min">Orice prioritate</string>
<string name="settings_notifications_min_priority_default">Prioritate implicită sau mai înaltă</string>
<string name="settings_notifications_min_priority_low">Prioritate mică sau mai mare</string>
<string name="settings_notifications_priority_min">minim</string>
<string name="settings_notifications_auto_download_title">Descarcă atașamentele</string>
<string name="settings_notifications_priority_default">implicită</string>
<string name="settings_notifications_auto_download_summary_smaller_than_x">Descărcare automată a atașamentelor până la %1$s</string>
<string name="settings_notifications_auto_download_never">Niciodată să nu se descarce automat ceva</string>
<string name="channel_notifications_min_name">Prioritate minimă</string>
<string name="channel_notifications_low_name">Prioritate mică</string>
<string name="channel_notifications_high_name">Prioritate mare</string>
<string name="main_menu_notifications_enabled">Notificări pornite</string>
<string name="main_menu_settings_title">Setări</string>
<string name="main_action_mode_menu_unsubscribe">Dezabonează-te</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Șterge permanent</string>
<string name="main_item_status_text_one">%1$d notificare</string>
<string name="main_action_mode_delete_dialog_cancel">Anulare</string>
<string name="main_banner_battery_button_fix_now">Rezolvă acum</string>
<string name="main_banner_websocket_button_remind_later">Întreabă mai târziu</string>
<string name="main_banner_websocket_button_enable_now">Activează acum</string>
<string name="add_dialog_title">Abonează-te la topic</string>
<string name="detail_how_to_link">Instrucțiuni detaliate disponibile pe ntfy.sh, și în documentație.</string>
<string name="detail_clear_dialog_message">Șterge toate notificările în acest topic\?</string>
<string name="detail_delete_dialog_message">Dezabonează-te de la acest topic și șterge toate notificările primite\?</string>
<string name="detail_clear_dialog_permanently_delete">Șterge permanent</string>
<string name="detail_clear_dialog_cancel">Anulează</string>
<string name="detail_item_menu_open">Deschide fișier</string>
<string name="detail_item_menu_copy_url_copied">URL copiat în clipboard</string>
<string name="detail_item_download_info_deleted">șters</string>
<string name="detail_item_download_info_download_failed">descărcare eșuată</string>
<string name="detail_item_download_info_download_failed_expired">descărcare eșuată, linkul a expirat</string>
<string name="detail_item_menu_download">Descarcă fișierul</string>
<string name="detail_item_menu_copy_url">Copiază URL</string>
<string name="detail_item_cannot_open_not_found">Nu se poate deschide atașamentul: Fișierul s-ar putea să fi fost șters, sau nu există o aplicație instalată pentru a îl deschide.</string>
<string name="detail_item_download_info_not_downloaded">nu s-a descărcat</string>
<string name="detail_item_download_info_not_downloaded_expires_x">nu s-a descărcat, expiră la %1$s</string>
<string name="detail_item_cannot_delete">Nu se poate șterge atașamentul: %1$s</string>
<string name="detail_item_download_info_not_downloaded_expired">nu s-a descărcat, link expirat</string>
<string name="detail_item_download_failed">Nu se poate descărca atașamentul: %1$s</string>
<string name="detail_menu_disable_instant">Oprește primirea instantanee</string>
<string name="share_content_image_error">Nu se poate citi imaginea: %1$s</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">Ștergere permanentă</string>
<string name="share_title">Distribuie</string>
<string name="detail_action_mode_delete_dialog_cancel">Anulează</string>
<string name="share_content_title">Previzualizare mesaj</string>
<string name="share_content_file_text">Un fișier a fost distribuit cu tine</string>
<string name="share_suggested_topics">Topice sugerate</string>
<string name="settings_notifications_auto_download_summary_never">Niciodată nu descarcă atașamente automat</string>
<string name="notification_dialog_cancel">Anulează</string>
<string name="notification_dialog_30min">30 de minute</string>
<string name="settings_title">Setări</string>
<string name="settings_notifications_min_priority_title">Prioritate minimă</string>
<string name="settings_notifications_min_priority_high">Prioritate mare sau mai înaltă</string>
<string name="settings_notifications_min_priority_max">Doar prioritate maximă</string>
<string name="settings_notifications_auto_delete_one_week">Peste o saptămână</string>
<string name="settings_notifications_auto_delete_summary_three_days">Șterge notificările automat în 3 zile</string>
<string name="settings_notifications_channel_prefs_title">Setări canal</string>
<string name="settings_notifications_auto_download_summary_always">Descarcă toate atașamentele automat</string>
<string name="settings_notifications_auto_delete_summary_never">Nu șterge niciodată notificarile automat</string>
<string name="settings_notifications_auto_delete_summary_one_month">Șterge notificările automat în o lună</string>
<string name="settings_notifications_auto_delete_summary_three_months">Șterge notificările automat în 3 luni</string>
<string name="settings_general_dark_mode_title">Mod întunecat</string>
<string name="settings_notifications_auto_delete_summary_one_day">Șterge notificările automat în o zi</string>
<string name="settings_general_users_prefs_title">Utilizatori</string>
<string name="settings_general_users_prefs_user_add_title">Adaugă un utilizator nou</string>
<string name="settings_notifications_auto_delete_summary_one_week">Șterge notificările automat în o săptămână</string>
<string name="settings_notifications_auto_delete_one_day">Peste o zi</string>
<string name="settings_notifications_auto_delete_one_month">Peste o lună</string>
<string name="settings_notifications_auto_delete_three_months">Peste 3 luni</string>
<string name="add_dialog_use_another_server">Folosește alt server</string>
<string name="add_dialog_button_cancel">Anulează</string>
<string name="add_dialog_button_back">Înapoi</string>
<string name="add_dialog_button_login">Loghează-te</string>
<string name="add_dialog_error_connection_failed">Conexiunea a eșuat: %1$s</string>
<string name="add_dialog_login_title">Logare necesară</string>
<string name="add_dialog_login_description">Acest topic necesită să te loghezi. Vă rugăm să introduceți un nume de utilizator și o parola.</string>
<string name="add_dialog_login_username_hint">Nume de utilizator</string>
<string name="add_dialog_login_password_hint">Parolă</string>
<string name="add_dialog_login_error_not_authorized">Logare eșuată. Utilizatorul %1$s nu este autorizat.</string>
<string name="add_dialog_login_new_user">Utilizator nou</string>
<string name="detail_no_notifications_text">Nu ai primit încă notificări pentru acest topic.</string>
<string name="detail_how_to_example">Exemplu (folosing curl):<br/><tt>$ curl -d \"Salut\" %1$s</tt></string>
<string name="detail_delete_dialog_cancel">Anulează</string>
<string name="detail_test_title">Test: Poți specifica un titlu dacă dorești.</string>
<string name="detail_test_message">Această este o notificare de test de la aplicația ntfy pentru Android. Are nivelul priorității %1$d. Dacă trimiți altă notificare, s-ar putea să arate altfel.</string>
<string name="detail_test_message_error">Nu se poate trimite mesajul: %1$s</string>
<string name="detail_test_message_error_unauthorized_anon">Nu se poate trimite mesajul: Publicarea anonimă nu este permisă.</string>
<string name="detail_test_message_error_unauthorized_user">Nu se poate trimite mesajul: Utilizatorul \"%1$s\" nu este autorizat.</string>
<string name="detail_test_message_error_too_large">Nu se poate trimite mesajul: Atașamentul este prea mare.</string>
<string name="detail_copied_to_clipboard_message">Copiat în clipboard</string>
<string name="detail_instant_delivery_enabled">Primire instantanee pornită</string>
<string name="detail_instant_delivery_disabled">Primire instantanee oprită</string>
<string name="main_banner_websocket_button_dismiss">Ignoră</string>
<string name="add_dialog_description_below">Topicele nu pot fi protejate cu parolă, așadar alegeți un nume greu de ghicit. Odată abonat, puteți PUT/POST notificări</string>
<string name="add_dialog_topic_name_hint">Numele topicului, exemplu: alertele_lui_phil</string>
<string name="add_dialog_use_another_server_description">Introduceți URL-urile serviciilor mai jos pentru a vă abona la topice de la alte servere.</string>
<string name="add_dialog_instant_delivery">Primire instantanee în modul doze</string>
<string name="add_dialog_foreground_description">Primirea instantanee este întotdeauna pornită pentru gazdele înafară de %1$s.</string>
<string name="add_dialog_button_subscribe">Abonare</string>
<string name="add_dialog_base_urls_dropdown_choose">Alege URL-ul serviciului</string>
<string name="add_dialog_base_urls_dropdown_clear">Șterge URL-ul serviciului</string>
<string name="detail_how_to_intro">Pentru a trimite notificări pentru acest topic, pur și simplu trimiteți o cerere PUT sau POST la URL-ul topicului.</string>
<string name="detail_delete_dialog_permanently_delete">Ștergere permanentă</string>
<string name="add_dialog_instant_delivery_description">Asigură ca mesajele să fie primite imediat, chiar dacă dispozitivul este inactiv.</string>
<string name="detail_item_cannot_save">Nu se poate salva atașamentul: %1$s</string>
<string name="detail_item_download_info_downloading_x_percent">%1$d%% descărcat</string>
<string name="detail_menu_test">Trimite notificare de probă</string>
<string name="settings_backup_restore_restore_summary">Importă setări, notificări și utilizatori</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy va avea rol de distribuitor UnifiedPush</string>
<string name="settings_advanced_unifiedpush_title">Activează UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy nu va avea rol de distribuitor UnifiedPush</string>
</resources>

View file

@ -1,20 +1,20 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="main_action_mode_delete_dialog_cancel">Отмена</string> <string name="main_action_mode_delete_dialog_cancel">Отмена</string>
<string name="channel_notifications_default_name">Уведомления (приоритет по умолчанию)</string> <string name="channel_notifications_default_name">Стандартный приоритет</string>
<string name="channel_notifications_high_name">Уведомления (высокий приоритет)</string> <string name="channel_notifications_high_name">Высокий приоритет</string>
<string name="channel_notifications_max_name">Уведомления (макс. приоритет)</string> <string name="channel_notifications_max_name">Максимальный приоритет</string>
<string name="channel_subscriber_service_name">Сервис подписки</string> <string name="channel_subscriber_service_name">Сервис подписки</string>
<string name="channel_notifications_min_name">Уведомления (мин. приоритет)</string> <string name="channel_notifications_min_name">Минимальный приоритет</string>
<string name="channel_notifications_low_name">Уведомления (низкий приоритет)</string> <string name="channel_notifications_low_name">Низкий приоритет</string>
<string name="main_menu_notifications_disabled_forever">Уведомления приостановлены</string> <string name="main_menu_notifications_disabled_forever">Уведомления заглушены</string>
<string name="main_menu_notifications_enabled">Уведомления включены</string> <string name="main_menu_notifications_enabled">Уведомления включены</string>
<string name="main_menu_report_bug_title">Сообщить об ошибке</string> <string name="main_menu_report_bug_title">Сообщить об ошибке</string>
<string name="main_menu_settings_title">Настройки</string> <string name="main_menu_settings_title">Настройки</string>
<string name="main_menu_docs_title">Документация</string> <string name="main_menu_docs_title">Документация</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Удалить навсегда</string> <string name="main_action_mode_delete_dialog_permanently_delete">Удалить навсегда</string>
<string name="detail_clear_dialog_cancel">Отмена</string> <string name="detail_clear_dialog_cancel">Отмена</string>
<string name="detail_delete_dialog_message">Отписаться от этой темы, и удалить все полученые уведомления\?</string> <string name="detail_delete_dialog_message">Отписаться от этой темы и удалить все полученные уведомления\?</string>
<string name="detail_delete_dialog_permanently_delete">Удалить навсегда</string> <string name="detail_delete_dialog_permanently_delete">Удалить навсегда</string>
<string name="detail_delete_dialog_cancel">Отмена</string> <string name="detail_delete_dialog_cancel">Отмена</string>
<string name="detail_test_title">Тест: Вы можете установить заголовок, если хотите.</string> <string name="detail_test_title">Тест: Вы можете установить заголовок, если хотите.</string>
@ -28,7 +28,7 @@
<string name="detail_item_menu_copy_contents">Скопировать уведомление</string> <string name="detail_item_menu_copy_contents">Скопировать уведомление</string>
<string name="detail_item_menu_copy_contents_copied">Уведомление скопировано</string> <string name="detail_item_menu_copy_contents_copied">Уведомление скопировано</string>
<string name="detail_item_saved_successfully">Сохранён как \"%1$s\" в папке \"Downloads\"</string> <string name="detail_item_saved_successfully">Сохранён как \"%1$s\" в папке \"Downloads\"</string>
<string name="detail_menu_notifications_disabled_until">Уведомления приостановлены до %1$s</string> <string name="detail_menu_notifications_disabled_until">Уведомления заглушены до %1$s</string>
<string name="detail_menu_enable_instant">Включить моментальную доставку</string> <string name="detail_menu_enable_instant">Включить моментальную доставку</string>
<string name="detail_menu_disable_instant">Выключить моментальную доставку</string> <string name="detail_menu_disable_instant">Выключить моментальную доставку</string>
<string name="detail_menu_test">Отправить тестовое уведомление</string> <string name="detail_menu_test">Отправить тестовое уведомление</string>
@ -44,14 +44,14 @@
<string name="detail_settings_title">Настройки подписок</string> <string name="detail_settings_title">Настройки подписок</string>
<string name="share_title">Поделиться</string> <string name="share_title">Поделиться</string>
<string name="share_menu_send">Поделиться</string> <string name="share_menu_send">Поделиться</string>
<string name="notification_dialog_title">Приостановить уведомления</string> <string name="notification_dialog_title">Заглушить уведомления</string>
<string name="settings_notifications_auto_download_100k">Если меньше 100 кб</string> <string name="settings_notifications_auto_download_100k">Если меньше 100 кб</string>
<string name="settings_notifications_auto_delete_never">Никогда</string> <string name="settings_notifications_auto_delete_never">Никогда</string>
<string name="settings_notifications_auto_delete_three_days">Черед три дня</string> <string name="settings_notifications_auto_delete_three_days">Черед три дня</string>
<string name="settings_notifications_auto_delete_one_day">Через один день</string> <string name="settings_notifications_auto_delete_one_day">Через один день</string>
<string name="settings_notifications_auto_delete_one_week">Через неделю</string> <string name="settings_notifications_auto_delete_one_week">Через неделю</string>
<string name="settings_notifications_auto_delete_one_month">Через месяц</string> <string name="settings_notifications_auto_delete_one_month">Через месяц</string>
<string name="settings_notifications_auto_delete_three_months">Чкрез три месяца</string> <string name="settings_notifications_auto_delete_three_months">Через три месяца</string>
<string name="settings_general_header">Общие</string> <string name="settings_general_header">Общие</string>
<string name="settings_general_default_base_url_title">Сервер по умолчанию</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_default_base_url_default_summary">%1$s (по умолчанию)</string>
@ -110,36 +110,36 @@
<string name="detail_item_cannot_open">Вложение не открывается: %1$s</string> <string name="detail_item_cannot_open">Вложение не открывается: %1$s</string>
<string name="detail_item_cannot_open_not_found">Вложение не открывается: Возможно файл был удалёл, либо нет установленного приложения, способного открыть файл.</string> <string name="detail_item_cannot_open_not_found">Вложение не открывается: Возможно файл был удалёл, либо нет установленного приложения, способного открыть файл.</string>
<string name="detail_menu_notifications_enabled">Уведомления включены</string> <string name="detail_menu_notifications_enabled">Уведомления включены</string>
<string name="detail_menu_notifications_disabled_forever">Уведомления приостановлены</string> <string name="detail_menu_notifications_disabled_forever">Уведомления заглушены</string>
<string name="notification_dialog_save">Сохранить</string> <string name="notification_dialog_save">Сохранить</string>
<string name="notification_dialog_muted_until_toast_message">Уведомления приостановлены до %1$s</string> <string name="notification_dialog_muted_until_toast_message">Уведомления заглушены до %1$s</string>
<string name="notification_popup_action_open">Открыть</string> <string name="notification_popup_action_open">Открыть</string>
<string name="notification_popup_action_download">Скачать</string> <string name="notification_popup_action_download">Скачать</string>
<string name="notification_popup_file">%1$s <string name="notification_popup_file">%1$s
\nФайл: %2$s</string> \nФайл: %2$s</string>
<string name="notification_dialog_cancel">Отмена</string> <string name="notification_dialog_cancel">Отмена</string>
<string name="notification_dialog_enabled_toast_message">Уведомления возобновлены</string> <string name="notification_dialog_enabled_toast_message">Уведомления разрешены</string>
<string name="notification_dialog_muted_forever_toast_message">Уведомления приостановлены</string> <string name="notification_dialog_muted_forever_toast_message">Уведомления заглушены</string>
<string name="notification_dialog_show_all">Показать все уведомления</string> <string name="notification_dialog_show_all">Показать все уведомления</string>
<string name="notification_dialog_30min">30 минут</string> <string name="notification_dialog_30min">30 минут</string>
<string name="notification_dialog_8h">8 часов</string> <string name="notification_dialog_8h">8 часов</string>
<string name="notification_dialog_tomorrow">До завтра</string> <string name="notification_dialog_tomorrow">До завтра</string>
<string name="notification_dialog_1h">1 час</string> <string name="notification_dialog_1h">1 час</string>
<string name="notification_dialog_2h">2 часа</string> <string name="notification_dialog_2h">2 часа</string>
<string name="notification_dialog_forever">До возобновления</string> <string name="notification_dialog_forever">До разрешения</string>
<string name="settings_title">Настройки</string> <string name="settings_title">Настройки</string>
<string name="settings_notifications_min_priority_min">Любой приоритет</string> <string name="settings_notifications_min_priority_min">Любой приоритет</string>
<string name="settings_general_users_prefs_user_add">Добавить пользователей</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_user_add_summary">Создать нового пользователя для нового сервера</string>
<string name="settings_backup_restore_restore_title">Восстановить из файла</string> <string name="settings_backup_restore_restore_title">Восстановить из файла</string>
<string name="settings_general_users_prefs_user_add_title">Добавить нового пользователя</string> <string name="settings_general_users_prefs_user_add_title">Добавить нового пользователя</string>
<string name="main_menu_notifications_disabled_until">Уведомления приостановлены до %1$s</string> <string name="main_menu_notifications_disabled_until">Уведомления заглушены до %1$s</string>
<string name="refresh_message_error">Не получилось обновить %1$d подписок <string name="refresh_message_error">Не получилось обновить %1$d подписок
\n \n
\n%2$s</string> \n%2$s</string>
<string name="refresh_message_error_one">Не получилось обновить подписки: %1$s</string> <string name="refresh_message_error_one">Не получилось обновить подписку: %1$s</string>
<string name="main_action_bar_title">Темы подписок</string> <string name="main_action_bar_title">Темы подписок</string>
<string name="main_how_to_intro">Нажмите + чтобы создать или подписаться на тему. Вы получите уведомления на вашем устройстве при отправлении сообщений через PUT или POST.</string> <string name="main_how_to_intro">Нажмите + чтобы создать или подписаться на тему. Вы будете получать уведомления на вашем устройстве при отправке сообщений через PUT или POST-запросы.</string>
<string name="channel_subscriber_notification_instant_text">Подписан на темы с мгновенной доставкой</string> <string name="channel_subscriber_notification_instant_text">Подписан на темы с мгновенной доставкой</string>
<string name="channel_subscriber_notification_instant_text_two">Подписан на две темы с мгновенной доставкой</string> <string name="channel_subscriber_notification_instant_text_two">Подписан на две темы с мгновенной доставкой</string>
<string name="channel_subscriber_notification_instant_text_one">Подписан на одну тему с мгновенной доставкой</string> <string name="channel_subscriber_notification_instant_text_one">Подписан на одну тему с мгновенной доставкой</string>
@ -156,7 +156,7 @@
<string name="add_dialog_login_title">Требуется вход в аккаунт</string> <string name="add_dialog_login_title">Требуется вход в аккаунт</string>
<string name="add_dialog_login_description">Эта тема требует авторизации. Пожалуйста, введите имя пользователя и пароль.</string> <string name="add_dialog_login_description">Эта тема требует авторизации. Пожалуйста, введите имя пользователя и пароль.</string>
<string name="add_dialog_description_below">Темы не могут быть защищены паролем. Используйте название которое сложно угадать. После подписки вы сможете отправлять уведомления через PUT/POST.</string> <string name="add_dialog_description_below">Темы не могут быть защищены паролем. Используйте название которое сложно угадать. После подписки вы сможете отправлять уведомления через PUT/POST.</string>
<string name="detail_test_message">Это тестовое уведомление от Android-приложения ntfy. Уровень приоритета уведомления: %1$d. Если вы отправите ещё одно, оно может выглядеть по-другому.</string> <string name="detail_test_message">Это тестовое уведомление от Android-приложения ntfy. Оно имеет уровень приоритета %1$d. Если вы отправите ещё одно, оно может выглядеть по-другому.</string>
<string name="add_dialog_login_error_not_authorized">Вход не удался. Пользователь %1$s не авторизован.</string> <string name="add_dialog_login_error_not_authorized">Вход не удался. Пользователь %1$s не авторизован.</string>
<string name="detail_how_to_intro">Чтобы отправить уведомления на данную тему, просто отправьте PUT or POST на URL-адрес темы.</string> <string name="detail_how_to_intro">Чтобы отправить уведомления на данную тему, просто отправьте PUT or POST на URL-адрес темы.</string>
<string name="detail_how_to_link">Подробные инструкции на сайте ntfy.sh и в документации.</string> <string name="detail_how_to_link">Подробные инструкции на сайте ntfy.sh и в документации.</string>
@ -165,10 +165,10 @@
<string name="add_dialog_use_another_server_description">Введите URL-адрес сервиса чтобы подписаться на темы с других серверов.</string> <string name="add_dialog_use_another_server_description">Введите URL-адрес сервиса чтобы подписаться на темы с других серверов.</string>
<string name="detail_item_download_info_not_downloaded_expires_x">не скачано, истекает срок действия %1$s</string> <string name="detail_item_download_info_not_downloaded_expires_x">не скачано, истекает срок действия %1$s</string>
<string name="detail_item_download_info_download_failed_expired">не удалось скачать, срок действия ссылки истёк</string> <string name="detail_item_download_info_download_failed_expired">не удалось скачать, срок действия ссылки истёк</string>
<string name="settings_notifications_min_priority_max">Только наивысший приоритет</string> <string name="settings_notifications_min_priority_max">Только максимальный приоритет</string>
<string name="settings_notifications_priority_low">низкий</string> <string name="settings_notifications_priority_low">низкий</string>
<string name="settings_notifications_channel_prefs_title">Настройки канала</string> <string name="settings_notifications_channel_prefs_title">Настройки канала</string>
<string name="settings_notifications_channel_prefs_summary">Управление режимом Не беспокоить (DND), настройками звуков, и т.д.</string> <string name="settings_notifications_channel_prefs_summary">Управление режимом \"не беспокоить\", звуками и прочим.</string>
<string name="settings_notifications_auto_delete_summary_three_days">Автоматически удалять уведомления через 3 дня</string> <string name="settings_notifications_auto_delete_summary_three_days">Автоматически удалять уведомления через 3 дня</string>
<string name="settings_notifications_auto_delete_summary_one_month">Автоматически удалять уведомления через месяц</string> <string name="settings_notifications_auto_delete_summary_one_month">Автоматически удалять уведомления через месяц</string>
<string name="detail_item_cannot_save">Невозможно сохранить вложение: %1$s</string> <string name="detail_item_cannot_save">Невозможно сохранить вложение: %1$s</string>
@ -194,17 +194,17 @@
<string name="notification_popup_file_downloading">Скачивается %1$s, %2$d%% <string name="notification_popup_file_downloading">Скачивается %1$s, %2$d%%
\n%3$s</string> \n%3$s</string>
<string name="notification_popup_file_download_successful">%1$s <string name="notification_popup_file_download_successful">%1$s
\nФайл: %2$s, скачен</string> \nФайл: %2$s, скачан</string>
<string name="notification_popup_file_download_failed">%1$s <string name="notification_popup_file_download_failed">%1$s
\nФайл: %2$s, не удалось скачать</string> \nФайл: %2$s, не удалось скачать</string>
<string name="settings_notifications_muted_until_title">Приостановить уведомления</string> <string name="settings_notifications_muted_until_title">Заглушить уведомления</string>
<string name="settings_notifications_muted_until_show_all">Показываются все уведомления</string> <string name="settings_notifications_muted_until_show_all">Показываются все уведомления</string>
<string name="settings_notifications_muted_until_forever">Уведомления приостановлены до того, как будут возобновлены</string> <string name="settings_notifications_muted_until_forever">Уведомления заглушены пока не будут разрешены</string>
<string name="settings_notifications_muted_until_x">Уведомления приостановлены до %1$s</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_title">Самый низкий приоритет</string>
<string name="settings_notifications_min_priority_summary_any">Отображаются все уведомления</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_x_or_higher">Показывать уведомления если приоритет %1$d(%2$s) или выше</string>
<string name="settings_notifications_min_priority_summary_max">Показывать уведомления если приоритет 5 (наивысший)</string> <string name="settings_notifications_min_priority_summary_max">Показывать уведомления если приоритет равен 5 (максимальный)</string>
<string name="settings_notifications_min_priority_low">Низкий приоритет или выше</string> <string name="settings_notifications_min_priority_low">Низкий приоритет или выше</string>
<string name="settings_notifications_min_priority_default">Приоритет по умолчанию и выше</string> <string name="settings_notifications_min_priority_default">Приоритет по умолчанию и выше</string>
<string name="settings_notifications_min_priority_high">Высокий приоритет и выше</string> <string name="settings_notifications_min_priority_high">Высокий приоритет и выше</string>
@ -255,8 +255,8 @@
<string name="settings_advanced_clear_logs_summary">Удалить ранее записанные журналы, и начать сначала</string> <string name="settings_advanced_clear_logs_summary">Удалить ранее записанные журналы, и начать сначала</string>
<string name="settings_advanced_clear_logs_deleted_toast">Журналы удалены</string> <string name="settings_advanced_clear_logs_deleted_toast">Журналы удалены</string>
<string name="settings_advanced_connection_protocol_title">Протокол соединения</string> <string name="settings_advanced_connection_protocol_title">Протокол соединения</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Использовать JSON поток через HTTP, чтобы подключиться к серверу. Этот метод устарел и будет удален в июле 2022-го года.</string> <string name="settings_advanced_connection_protocol_summary_jsonhttp">Использовать JSON-поток через HTTP чтобы подключаться к серверу. Это надежный метод, но он может потреблять больше энергии.</string>
<string name="settings_advanced_connection_protocol_summary_ws">Использовать WebSockets для подключения к серверу. Этот метод будет методом по умолчанию начиная с июля 2022-го.</string> <string name="settings_advanced_connection_protocol_summary_ws">Использовать WebSockets для подключения к серверу. Это рекомендуемый метод, но может потребовать доплонительной настройки прокси-сервера.</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">JSON поток поверх HTTP</string> <string name="settings_advanced_connection_protocol_entry_jsonhttp">JSON поток поверх HTTP</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string> <string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string>
<string name="settings_about_header">О программе</string> <string name="settings_about_header">О программе</string>
@ -306,4 +306,41 @@
<string name="channel_subscriber_notification_instant_text_six">Подписан на шесть тем с мгновенной доставкой</string> <string name="channel_subscriber_notification_instant_text_six">Подписан на шесть тем с мгновенной доставкой</string>
<string name="channel_subscriber_notification_noinstant_text_five">Подписан на пять тем</string> <string name="channel_subscriber_notification_noinstant_text_five">Подписан на пять тем</string>
<string name="channel_subscriber_notification_noinstant_text_six">Подписан на шесть тем</string> <string name="channel_subscriber_notification_noinstant_text_six">Подписан на шесть тем</string>
<string name="main_banner_websocket_button_enable_now">Включить сейчас</string>
<string name="detail_settings_notifications_instant_summary_on">Уведомления доставляются сразу. Требует forground сервис и потребляет больше энергии.</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Уведомления с наивысшим приоритетом будут требовать внимания пока не будут прочтены</string>
<string name="channel_notifications_group_default_name">По умолчанию</string>
<string name="detail_item_cannot_open_apk">Установка приложений через уведомления больше не поддерживается. Скачайте приложение через браузер. Подробности смотрите в отчете ntfy #531.</string>
<string name="detail_settings_appearance_icon_set_title">Иконка подписки</string>
<string name="detail_settings_appearance_icon_set_summary">Использовать иконку для отображения в уведомлениях</string>
<string name="main_menu_donate_title">Пожертвовать 💸</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Уведомления с наивысшим приориетом будут давать о себе знать только один раз</string>
<string name="detail_settings_notifications_instant_summary_off">Уведомления будут доставляться с помощью Firebase. Могут быть задержки с доставкой, но потребляет меньше энергии.</string>
<string name="add_dialog_base_urls_dropdown_clear">Очистить URL-адрес сервера</string>
<string name="detail_settings_appearance_header">Внешний вид</string>
<string name="detail_settings_appearance_icon_error_saving">Невозможно сохранить иконку: %1$s</string>
<string name="detail_settings_appearance_display_name_title">Псевдоним</string>
<string name="detail_settings_global_setting_suffix">испольует глобальное значение</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_topic_url_copied_to_clipboard_message">Скопирован в буфер обмена</string>
<string name="detail_settings_notifications_instant_title">Мгновенная доставка</string>
<string name="detail_settings_notifications_dedicated_channels_title">Пользовательские настройки уведомлений</string>
<string name="detail_settings_notifications_open_channels_title">Настройки уведомлений</string>
<string name="settings_advanced_unifiedpush_title">Включить UnifiedPush</string>
<string name="detail_settings_about_header">Настройки темы</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Используются настройки по умолчанию (звуки, игнорирование режима \"не беспокоить\", и прочее)</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy будет действовать как сервис доставки UnifiedPush</string>
<string name="detail_settings_about_topic_url_title">URL-адрес темы</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy не будет действовать как сервис доставки UnifiedPush</string>
<string name="detail_settings_appearance_icon_remove_summary">Иконка используемая в уведомлениях от этой темы</string>
<string name="detail_settings_global_setting_title">Использовать глобальное значение</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Продолжать уведомлять</string>
<string name="main_banner_websocket_text">Мы рекомендуем использовать WebSockets для подключения к Вашему серверу; это может продлить время работы от батареи, но может потребовать <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">дополнительной настройки прокси-сервера</a>. Эта опция может быть включена или выключена в Настройках.</string>
<string name="detail_settings_appearance_icon_remove_title">Иконка подписки (коснитесь, чтобы удалить)</string>
<string name="add_dialog_base_urls_dropdown_choose">Выберите URL-адрес сервера</string>
<string name="detail_settings_notifications_open_channels_summary">Игнорирование режима \"не беспокоить\", звуки и прочее.</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Используются пользовательские настройки для этой подписки</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Уведомлять только один раз</string>
<string name="settings_notifications_insistent_max_priority_title">Продолжать уведомлять при наивысшем приоритете</string>
</resources> </resources>

View file

@ -0,0 +1,346 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="channel_notifications_low_name">Nízka priorita</string>
<string name="channel_notifications_default_name">Predvolená priorita</string>
<string name="channel_notifications_high_name">Vysoká priorita</string>
<string name="channel_notifications_max_name">Maximálna priorita</string>
<string name="channel_subscriber_service_name">Služba odberu</string>
<string name="channel_subscriber_notification_title">Počúvanie prichádzajúcich oznámení</string>
<string name="channel_subscriber_notification_instant_text">Prihlásený na okamžité doručovanie tém</string>
<string name="channel_notifications_group_default_name">Predvolená</string>
<string name="refresh_message_error">Nepodarilo sa obnoviť %1$d prihlásení
\n
\n%2$s</string>
<string name="refresh_message_error_one">Nepodarilo sa obnoviť prihlásenie na odber: %1$s</string>
<string name="main_action_bar_title">Odoberané témy</string>
<string name="main_menu_notifications_enabled">Oznámenia zapnuté</string>
<string name="main_menu_notifications_disabled_forever">Oznámenia stlmené</string>
<string name="main_how_to_intro">Kliknutím na tlačidlo + vytvoríte tému alebo sa na ňu prihlásite. Následne budete dostávať upozornenia na svoje zariadenie pri odosielaní správ prostredníctvom PUT alebo POST.</string>
<string name="main_how_to_link">Podrobné pokyny sú k dispozícii na stránke ntfy.sh a v dokumentácií.</string>
<string name="main_unified_push_toast">Toto predplatné spravuje %1$s prostredníctvom služby UnifiedPush</string>
<string name="main_banner_battery_text">Optimalizácia batérie by mala byť pre aplikáciu vypnutá, aby sa predišlo problémom s doručovaním oznámení.</string>
<string name="main_banner_battery_button_remind_later">Opýtať sa neskôr</string>
<string name="main_banner_battery_button_dismiss">Odmietnuť</string>
<string name="main_banner_battery_button_fix_now">Opraviť teraz</string>
<string name="main_banner_websocket_text">Prechod na WebSockets je odporúčaný spôsob pripojenia k serveru, ktorý by mohol zlepšiť výdrž batérie, ale môže vyžadovať <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">ďalšiu konfiguráciu v proxy serveri</a>. Túto možnosť môžete prepnúť v Nastaveniach.</string>
<string name="main_banner_websocket_button_remind_later">Opýtať sa neskôr</string>
<string name="main_banner_websocket_button_dismiss">Odmietnuť</string>
<string name="main_banner_websocket_button_enable_now">Povoliť teraz</string>
<string name="add_dialog_description_below">Témy nemusia byť chránené heslom, preto zvoľte názov, ktorý je ťažké uhádnuť. Po prihlásení sa na odber môžete PUT/POST oznámenia.</string>
<string name="add_dialog_topic_name_hint">Názov témy, napr. phils_alerts</string>
<string name="add_dialog_use_another_server">Použiť iný server</string>
<string name="add_dialog_use_another_server_description">Zadajte adresu URL služby a prihláste sa na odber tém z iných serverov.</string>
<string name="add_dialog_instant_delivery">Okamžité doručenie v režime spánku</string>
<string name="add_dialog_instant_delivery_description">Zabezpečuje okamžité doručenie správ, aj keď je zariadenie neaktívne.</string>
<string name="add_dialog_foreground_description">Okamžité doručenie je vždy zapnuté pre hostiteľov iných ako %1$s.</string>
<string name="add_dialog_button_cancel">Zrušiť</string>
<string name="add_dialog_button_subscribe">Prihlásiť sa na odber</string>
<string name="add_dialog_button_back">Späť</string>
<string name="add_dialog_button_login">Prihlásiť sa</string>
<string name="add_dialog_error_connection_failed">Pripojenie zlyhalo: %1$s</string>
<string name="add_dialog_login_description">Táto téma si vyžaduje prihlásenie. Zadajte prosím používateľské meno a heslo.</string>
<string name="add_dialog_title">Odoberať tému</string>
<string name="add_dialog_login_username_hint">Používateľské meno</string>
<string name="add_dialog_login_password_hint">Heslo</string>
<string name="add_dialog_login_error_not_authorized">Prihlásenie zlyhalo. Používateľ %1$s nie je autorizovaný.</string>
<string name="add_dialog_login_new_user">Nový používateľ</string>
<string name="add_dialog_base_urls_dropdown_choose">Výber URL adresy služby</string>
<string name="add_dialog_base_urls_dropdown_clear">Vymazanie URL adresy služby</string>
<string name="detail_no_notifications_text">K tejto téme ste zatiaľ nedostali žiadne upozornenia.</string>
<string name="detail_how_to_intro">Ak chcete posielať oznámenia do tejto témy, jednoducho zadajte adresu PUT alebo POST na URL adresu témy.</string>
<string name="detail_how_to_example">Príklad (pomocou curl):<br/><tt>$ curl -d \"Ahoj\" %1$s</tt></string>
<string name="detail_clear_dialog_cancel">Zrušiť</string>
<string name="detail_delete_dialog_message">Odhlásiť sa z tejto témy a vymazať všetky prijaté oznámenia\?</string>
<string name="detail_delete_dialog_permanently_delete">Vymazať natrvalo</string>
<string name="detail_delete_dialog_cancel">Zrušiť</string>
<string name="detail_clear_dialog_permanently_delete">Vymazať natrvalo</string>
<string name="detail_test_title">Test: Ak chcete, môžete nastaviť názov.</string>
<string name="detail_test_message">Toto je testovacie oznámenie z Android aplikácie ntfy. Má úroveň priority %1$d. Ak pošlete ďalšie, môže vyzerať inak.</string>
<string name="detail_test_message_error">Nemožno odoslať správu: %1$s</string>
<string name="detail_test_message_error_unauthorized_user">Nemožno odoslať správu: Používateľ \"%1$s\" nie je autorizovaný.</string>
<string name="detail_test_message_error_too_large">Nemožno odoslať správu: Príloha je príliš veľká.</string>
<string name="detail_copied_to_clipboard_message">Skopírované do schránky</string>
<string name="detail_instant_delivery_enabled">Okamžité doručovanie zapnuté</string>
<string name="detail_instant_delivery_disabled">Okamžité doručovanie vypnuté</string>
<string name="detail_deep_link_subscribed_toast_message">Prihlásený na odber témy %1$s</string>
<string name="detail_item_tags">Značky: %1$s</string>
<string name="detail_item_snack_deleted">Oznámenie odstránené</string>
<string name="detail_item_snack_undo">Odvolať</string>
<string name="detail_item_menu_open">Otvoriť súbor</string>
<string name="detail_item_menu_delete">Odstrániť súbor</string>
<string name="detail_item_menu_download">Stiahnuť súbor</string>
<string name="detail_item_menu_cancel">Zrušiť sťahovanie</string>
<string name="detail_item_menu_copy_url">Kopírovať adresu URL</string>
<string name="detail_item_menu_copy_url_copied">URL adresa skopírovaná do schránky</string>
<string name="detail_item_menu_copy_contents">Kopírovať oznámenie</string>
<string name="detail_item_saved_successfully">Uložené ako \"%1$s\" v priečinku \"Stiahnuté\"</string>
<string name="detail_item_cannot_open">Nie je možné otvoriť prílohu: %1$s</string>
<string name="detail_item_cannot_open_not_found">Nie je možné otvoriť prílohu: Súbor mohol byť vymazaný alebo ho nedokáže otvoriť žiadna nainštalovaná aplikácia.</string>
<string name="detail_item_cannot_open_url">Nie je možné otvoriť adresu URL: %1$s</string>
<string name="detail_item_cannot_delete">Nemožno odstrániť prílohu: %1$s</string>
<string name="detail_item_download_failed">Nepodarilo sa stiahnuť prílohu: %1$s</string>
<string name="detail_item_download_info_not_downloaded">nestiahnuté</string>
<string name="detail_item_download_info_not_downloaded_expired">nestiahnuté, odkaz vypršal</string>
<string name="detail_item_download_info_downloading_x_percent">%1$d%% stiahnuté</string>
<string name="detail_item_download_info_deleted">zmazané</string>
<string name="detail_item_download_info_deleted_expired">zmazané, odkaz vypršal</string>
<string name="detail_item_download_info_deleted_expires_x">zmazané, platnosť odkazu končí %1$s</string>
<string name="detail_item_download_info_download_failed">stiahnutie zlyhalo</string>
<string name="detail_item_download_info_download_failed_expired">stiahnutie zlyhalo, odkaz vypršal</string>
<string name="detail_item_download_info_download_failed_expires_x">stiahnutie zlyhalo, platnosť odkazu končí %1$s</string>
<string name="detail_action_mode_menu_delete">Zmazať</string>
<string name="detail_action_mode_delete_dialog_message">Odstrániť vybrané oznámenie (oznámenia) natrvalo\?</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">Vymazať natrvalo</string>
<string name="detail_menu_settings">Nastavenia predplatného</string>
<string name="detail_menu_notifications_disabled_forever">Oznámenia stlmené</string>
<string name="detail_menu_notifications_disabled_until">Oznámenia stlmené do %1$s</string>
<string name="detail_menu_unsubscribe">Odhlásiť odber</string>
<string name="detail_menu_enable_instant">Povoliť okamžité doručenie</string>
<string name="detail_menu_disable_instant">Vypnúť okamžité doručenie</string>
<string name="detail_menu_test">Odoslať testovacie oznámenie</string>
<string name="detail_menu_clear">Vymazať všetky oznámenia</string>
<string name="share_menu_send">Zdielať</string>
<string name="share_content_title">Náhľad správy</string>
<string name="share_content_text_hint">Pridajte obsah na zdieľanie sem</string>
<string name="share_content_file_text">Bol s vami zdieľaný súbor</string>
<string name="share_content_file_error">Nie je možné prečítať informácie o súbore: %1$s</string>
<string name="share_topic_title">Zdieľať s</string>
<string name="share_suggested_topics">Navrhované témy</string>
<string name="share_successful">Správa zverejnená</string>
<string name="notification_dialog_title">Stlmiť oznámenia</string>
<string name="notification_dialog_cancel">Zrušiť</string>
<string name="notification_dialog_muted_forever_toast_message">Oznámenia stlmené</string>
<string name="notification_dialog_muted_until_toast_message">Oznámenia stlmené do %1$s</string>
<string name="notification_dialog_save">Uložiť</string>
<string name="notification_dialog_enabled_toast_message">Oznámenia boli obnovené</string>
<string name="notification_dialog_1h">1 hodina</string>
<string name="notification_dialog_2h">2 hodiny</string>
<string name="notification_dialog_8h">8 hodín</string>
<string name="notification_popup_action_cancel">Zrušiť</string>
<string name="settings_title">Nastavenia</string>
<string name="notification_dialog_tomorrow">Do zajtra</string>
<string name="notification_dialog_forever">Do obnovenia</string>
<string name="notification_popup_action_open">Otvoriť</string>
<string name="notification_popup_action_browse">Prehľadávať</string>
<string name="notification_popup_action_download">Stiahnuť</string>
<string name="notification_popup_file">%1$s
\nSúbor: %2$s</string>
<string name="notification_popup_file_downloading">Sťahovanie %1$s, %2$d%%
\n%3$s</string>
<string name="notification_popup_file_download_failed">%1$s
\nSúbor: %2$s, sťahovanie sa nepodarilo</string>
<string name="notification_popup_user_action_failed">%1$s sa nepodarilo: %2$s</string>
<string name="settings_notifications_muted_until_x">Oznámenia stlmené do %1$s</string>
<string name="settings_notifications_muted_until_title">Stlmiť oznámenia</string>
<string name="settings_notifications_header">Oznámenia</string>
<string name="settings_notifications_muted_until_show_all">Zobrazenie všetkých oznámení</string>
<string name="settings_notifications_min_priority_summary_any">Zobrazenie všetkých oznámení</string>
<string name="settings_notifications_muted_until_forever">Oznámenia stlmené až do obnovenia</string>
<string name="settings_notifications_min_priority_title">Najnižšia priorita</string>
<string name="settings_notifications_min_priority_summary_x_or_higher">Zobraziť oznámenia, ak je priorita %1$d (%2$s) alebo vyššia</string>
<string name="settings_notifications_min_priority_low">Nízka priorita a väčšia</string>
<string name="settings_notifications_min_priority_default">Predvolená priorita a väčšia</string>
<string name="settings_notifications_min_priority_high">Vysoká priorita a väčšia</string>
<string name="settings_notifications_min_priority_max">Iba maximálna priorita</string>
<string name="settings_notifications_priority_min">najnižšia</string>
<string name="settings_notifications_priority_low">nízka</string>
<string name="settings_notifications_channel_prefs_summary">Vypnutie funkcie Nerušiť (DND), zvuky atď.</string>
<string name="settings_notifications_auto_download_title">Stiahnuť prílohy</string>
<string name="settings_notifications_auto_download_summary_never">Automaticky nesťahovať prílohy</string>
<string name="settings_notifications_auto_download_summary_always">Automaticky sťahovať prílohy</string>
<string name="settings_notifications_auto_download_summary_smaller_than_x">Automaticky sťahovať prílohy do %1$s</string>
<string name="settings_notifications_auto_download_never">Automaticky nesťahovať všetko</string>
<string name="settings_notifications_auto_download_always">Automaticky sťahovať všetko</string>
<string name="settings_notifications_auto_download_100k">Ak je menší ako 100 kB</string>
<string name="settings_notifications_auto_download_5m">Ak je menší ako 5 MB</string>
<string name="settings_notifications_auto_download_50m">Ak je menší ako 50 MB</string>
<string name="settings_notifications_auto_delete_title">Odstrániť oznámenia</string>
<string name="settings_notifications_auto_delete_summary_never">Nikdy automaticky neodstraňovať oznámenia</string>
<string name="settings_notifications_auto_delete_summary_one_day">Automaticky odstrániť oznámenia po jednom dni</string>
<string name="settings_notifications_auto_delete_summary_three_days">Automaticky odstrániť oznámenia po 3 dňoch</string>
<string name="settings_notifications_auto_delete_summary_one_week">Automaticky odstrániť oznámenia po jednom týždni</string>
<string name="settings_notifications_auto_delete_summary_three_months">Automaticky odstrániť oznámenia po 3 mesiacoch</string>
<string name="settings_notifications_auto_delete_never">Nikdy</string>
<string name="settings_notifications_auto_delete_one_day">Po jednom dni</string>
<string name="settings_notifications_auto_delete_three_days">Po 3 dňoch</string>
<string name="settings_notifications_auto_delete_one_week">Po jednom týždni</string>
<string name="settings_notifications_auto_delete_three_months">Po 3 mesiacoch</string>
<string name="settings_notifications_insistent_max_priority_title">Upozorňovať pre najvyššiu prioritu</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Upozornenia s maximálnou prioritou nepretržite upozorňujú, kým nie sú zrušené</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Oznámenia s maximálnou prioritou upozornia len raz</string>
<string name="settings_general_header">Všeobecné</string>
<string name="settings_general_default_base_url_message">Zadajte koreňovú URL adresu vášho servera, aby ste použili svoj vlastný server ako predvolený pri prihlásení na odber nových tém alebo zdieľaní tém.</string>
<string name="settings_general_default_base_url_default_summary">%1$s (predvolené)</string>
<string name="settings_general_users_title">Správa používateľov</string>
<string name="settings_general_users_summary">Pridávanie/odstraňovanie používateľov pre chránené témy</string>
<string name="settings_general_users_prefs_user_not_used">Nepoužíva sa v žiadnych témach</string>
<string name="settings_general_users_prefs_user_used_by_many">Používa sa v témach %1$s</string>
<string name="settings_general_users_prefs_user_add">Pridať používateľov</string>
<string name="settings_general_users_prefs_user_add_title">Pridať nového používateľa</string>
<string name="settings_general_users_prefs_user_add_summary">Vytvoriť nového používateľa pre nový server</string>
<string name="settings_general_dark_mode_title">Tmavý režim</string>
<string name="settings_general_dark_mode_entry_dark">Tmavý režim</string>
<string name="settings_general_dark_mode_summary_system">Použiť predvolené nastavenia systému</string>
<string name="settings_general_dark_mode_summary_light">Svetlý režim zapnutý</string>
<string name="settings_general_dark_mode_summary_dark">Tmavý režim zapnutý. Ste upír\?</string>
<string name="settings_general_dark_mode_entry_system">Použiť predvolené nastavenie systému</string>
<string name="settings_general_dark_mode_entry_light">Svetlý režim</string>
<string name="settings_backup_restore_backup_entry_everything">Všetko</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">Všetko okrem používateľov</string>
<string name="settings_backup_restore_backup_entry_settings_only">Iba nastavenia</string>
<string name="settings_backup_restore_backup_successful">Záloha vytvorená</string>
<string name="settings_backup_restore_backup_failed">Zálohovanie zlyhalo: %1$s</string>
<string name="settings_backup_restore_restore_summary">Importovať konfiguráciu, oznámenia a používateľov</string>
<string name="settings_backup_restore_restore_successful">Obnovenie úspešné</string>
<string name="settings_backup_restore_restore_failed">Obnovenie zlyhalo: %1$s</string>
<string name="settings_advanced_broadcast_title">Vysielanie správ</string>
<string name="settings_advanced_record_logs_title">Denníky záznamov</string>
<string name="settings_advanced_record_logs_summary_enabled">Zaznamenávanie (až 1 000 záznamov) do zariadenia …</string>
<string name="settings_advanced_export_logs_title">Kopírovanie/odosielanie protokolov</string>
<string name="settings_advanced_export_logs_summary">Kopírovať protokoly do schránky alebo nahrať na nopaste.net (vlastní autor ntfy). Názvy hostiteľov a témy môžu byť cenzurované, oznámenia nikdy nebudú.</string>
<string name="settings_advanced_export_logs_entry_copy_original">Kopírovať do schránky</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">Kopírovať do schránky (cenzurované)</string>
<string name="settings_advanced_export_logs_entry_upload_original">Nahrať a skopírovať odkaz</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">Nahrať a skopírovať odkaz (cenzurované)</string>
<string name="settings_advanced_export_logs_uploading">Nahrávanie záznamu…</string>
<string name="settings_advanced_export_logs_copied_logs">Záznamy skopírované do schránky</string>
<string name="settings_advanced_record_logs_summary_disabled">Zapnite zaznamenávanie, aby ste mohli neskôr zdieľať záznamy a diagnostikovať problémy.</string>
<string name="settings_advanced_export_logs_copied_url">Záznamy nahrané a URL adresa skopírovaná</string>
<string name="settings_advanced_export_logs_error_uploading">Nepodarilo sa nahrať záznamy: %1$s</string>
<string name="settings_advanced_export_logs_scrub_dialog_text">Tieto témy/názvy hostiteľov boli nahradené názvami ovocia, takže môžete bez obáv zdieľať záznamy:
\n
\n%1$s
\n
\nHeslá sú vymazané, ale nie sú tu uvedené.</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">Žiadne témy/názvy hostiteľov neboli redigované. Možno nemáte žiadne odbery\?</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">OK</string>
<string name="settings_advanced_clear_logs_title">Vymazať záznamy</string>
<string name="settings_advanced_clear_logs_deleted_toast">Záznamy zmazané</string>
<string name="settings_advanced_connection_protocol_title">Protokol pripojenia</string>
<string name="settings_advanced_connection_protocol_summary_ws">Použiť WebSockets na pripojenie k serveru. Je to odporúčaná metóda, ale môže vyžadovať dodatočnú konfiguráciu v proxy serveri.</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">Tok JSON cez HTTP</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Použiť tok JSON cez HTTP na pripojenie k serveru. Táto metóda je overená, avšak môže spotrebovať viac batérie.</string>
<string name="settings_about_header">O programe</string>
<string name="settings_advanced_connection_protocol_entry_ws">Protokol WebSockets</string>
<string name="settings_about_version_copied_to_clipboard_message">Skopírované do schránky</string>
<string name="detail_settings_notifications_open_channels_summary">Vypnutie funkcie Nerušiť (DND), zvuky atď.</string>
<string name="settings_about_version_title">Verzia</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
<string name="detail_settings_notifications_instant_title">Okamžité doručenie</string>
<string name="detail_settings_notifications_instant_summary_on">Oznámenia sa doručujú okamžite. Vyžaduje službu na popredí a spotrebúva viac batérie.</string>
<string name="detail_settings_notifications_instant_summary_off">Upozornenia sa doručujú pomocou služby Firebase. Doručenie sa môže oneskoriť, ale spotrebuje menej batérie.</string>
<string name="detail_settings_notifications_dedicated_channels_title">Vlastné nastavenia oznámení</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Používanie vlastných nastavení pre toto predplatné</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Používanie predvolených nastavení (zvuky, zrušenie funkcie Nerušiť atď.)</string>
<string name="detail_settings_notifications_open_channels_title">Konfigurácia nastavení oznámení</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Stále upozorňovať</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Upozorniť len raz</string>
<string name="detail_settings_appearance_header">Vzhlad</string>
<string name="detail_settings_appearance_icon_set_title">Ikona odberu</string>
<string name="detail_settings_appearance_icon_set_summary">Nastavenie ikony, ktorá sa má zobrazovať v oznámeniach</string>
<string name="detail_settings_appearance_icon_remove_title">Ikona odberu (ťuknutím na ňu ho odstránite)</string>
<string name="detail_settings_appearance_icon_remove_summary">Ikona zobrazená v oznámeniach pre túto tému</string>
<string name="detail_settings_appearance_icon_error_saving">Ikonu sa nepodarilo uložiť: %1$s</string>
<string name="user_dialog_button_cancel">Zrušiť</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Skopírované do schránky</string>
<string name="user_dialog_button_save">Uložiť</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (predvolené)</string>
<string name="detail_settings_about_header">O programe</string>
<string name="detail_settings_global_setting_title">Použiť globálne nastavenie</string>
<string name="detail_settings_global_setting_suffix">používajú sa globálne nastavenia</string>
<string name="detail_settings_about_topic_url_title">URL Adresa témy</string>
<string name="user_dialog_title_add">Pridať používateľa</string>
<string name="user_dialog_button_add">Pridať používateľa</string>
<string name="user_dialog_description_edit">Môžete upraviť používateľské meno/heslo vybraného používateľa alebo ho vymazať.</string>
<string name="user_dialog_base_url_hint">URL Adresa služby</string>
<string name="user_dialog_username_hint">Používateľské meno</string>
<string name="user_dialog_password_hint_add">Heslo</string>
<string name="user_dialog_password_hint_edit">Heslo (nezmenené, ak zostane prázdne)</string>
<string name="user_dialog_button_delete">Odstrániť používateľa</string>
<string name="detail_settings_appearance_display_name_title">Zobrazený názov</string>
<string name="channel_notifications_min_name">Minimálna priorita</string>
<string name="channel_subscriber_notification_instant_text_four">Prihlásený na odber štyroch tém pre okamžité doručovanie</string>
<string name="channel_subscriber_notification_noinstant_text">Prihlásený na odber tém</string>
<string name="channel_subscriber_notification_instant_text_five">Prihlásený na odber piatich tém pre okamžité doručovanie</string>
<string name="channel_subscriber_notification_instant_text_two">Prihlásený na odber dvoch tém pre okamžité doručovanie</string>
<string name="channel_subscriber_notification_instant_text_six">Prihlásený na odber šiestich tém pre okamžité doručovanie</string>
<string name="refresh_message_result">Prijatých %1$d oznámení</string>
<string name="channel_subscriber_notification_instant_text_one">Prihlásený na odber jednej témy pre okamžité doručovanie</string>
<string name="channel_subscriber_notification_instant_text_three">Prihlásený na odber troch tém pre okamžité doručovanie</string>
<string name="channel_subscriber_notification_instant_text_more">Prihlásený na odber %1$d tém pre okamžité doručovanie</string>
<string name="channel_subscriber_notification_noinstant_text_one">Prihlásený na odber jednej témy</string>
<string name="channel_subscriber_notification_noinstant_text_two">Prihlásený na odber dvoch tém</string>
<string name="channel_subscriber_notification_noinstant_text_three">Prihlásený na odber troch tém</string>
<string name="channel_subscriber_notification_noinstant_text_four">Prihlásený na odber štyroch tém</string>
<string name="channel_subscriber_notification_noinstant_text_five">Prihlásený na odber piatich tém</string>
<string name="channel_subscriber_notification_noinstant_text_six">Prihlásený na odber šiestich tém</string>
<string name="channel_subscriber_notification_noinstant_text_more">Prihlásený na odber %1$d tém</string>
<string name="main_item_status_text_one">%1$d oznámenie</string>
<string name="refresh_message_no_results">Všetko je aktualizované</string>
<string name="main_menu_settings_title">Nastavenia</string>
<string name="main_menu_report_bug_title">Nahlás chybu</string>
<string name="main_menu_rate_title">Ohodnotiť aplikáciu ⭐</string>
<string name="main_menu_docs_title">Prečítať dokumentáciu</string>
<string name="main_menu_notifications_disabled_until">Oznámenia stlmené do %1$s</string>
<string name="main_menu_donate_title">Prispieť 💸</string>
<string name="main_action_mode_delete_dialog_message">Odhlásiť odber z vybraných tém a natrvalo vymazať všetky oznámenia\?</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Vymazať natrvalo</string>
<string name="main_action_mode_menu_unsubscribe">Odhlásiť odber</string>
<string name="main_action_mode_delete_dialog_cancel">Zrušiť</string>
<string name="main_item_status_text_not_one">%1$d oznámení</string>
<string name="main_item_status_reconnecting">obnovenie spojenia…</string>
<string name="main_add_button_description">Pridať odber</string>
<string name="main_item_date_yesterday">včera</string>
<string name="main_no_subscriptions_text">Zdá sa, že zatiaľ nemáte žiadne prihlásenia na odber.</string>
<string name="add_dialog_login_title">Vyžaduje sa prihlásenie</string>
<string name="detail_settings_title">Nastavenia predplatného</string>
<string name="share_title">Zdielať</string>
<string name="detail_action_mode_delete_dialog_cancel">Zrušiť</string>
<string name="share_content_image_text">Bol s vami zdieľaný obrázok</string>
<string name="share_content_image_error">Nemožno načítať obrázok: %1$s</string>
<string name="detail_menu_notifications_enabled">Oznámenia zapnuté</string>
<string name="detail_item_menu_save_file">Uložiť súbor</string>
<string name="detail_item_menu_copy_contents_copied">Oznámenie skopírované do schránky</string>
<string name="detail_test_message_error_unauthorized_anon">Nemožno odoslať správu: Anonymné publikovanie nie je povolené.</string>
<string name="detail_item_cannot_download">Nie je možné otvoriť alebo stiahnuť prílohu. Platnosť odkazu vypršala a nepodarilo sa nájsť žiadny miestny súbor.</string>
<string name="detail_item_cannot_open_apk">Aplikácie už nie je možné nainštalovať. Namiesto toho si ich stiahnite cez prehliadač. Podrobnosti nájdete v issue #531.</string>
<string name="detail_item_cannot_save">Nie je možné uložiť prílohu: %1$s</string>
<string name="detail_item_download_info_not_downloaded_expires_x">nestiahnuté, vyprší %1$s</string>
<string name="detail_menu_copy_url">Kopírovať adresu témy</string>
<string name="detail_action_mode_menu_copy">Kopírovať</string>
<string name="settings_notifications_priority_default">predvolená</string>
<string name="notification_dialog_show_all">Zobraziť všetky oznámenia</string>
<string name="notification_popup_file_download_successful">%1$s
\nSúbor: %2$s, stiahnutý</string>
<string name="settings_notifications_min_priority_summary_max">Zobraziť oznámenia, ak je priorita 5 (max.)</string>
<string name="settings_notifications_priority_high">vysoká</string>
<string name="notification_dialog_30min">30 minút</string>
<string name="settings_notifications_min_priority_min">Akákoľvek priorita</string>
<string name="settings_notifications_channel_prefs_title">Nastavenia kanálu</string>
<string name="settings_notifications_priority_max">najvyššia</string>
<string name="settings_notifications_auto_download_500k">Ak je menší ako 500 kB</string>
<string name="settings_notifications_auto_download_1m">Ak je menší ako 1 MB</string>
<string name="settings_notifications_auto_download_10m">Ak je menší ako 10 MB</string>
<string name="settings_notifications_auto_delete_summary_one_month">Automaticky odstrániť oznámenia po jednom mesiaci</string>
<string name="settings_notifications_auto_delete_one_month">Po jednom mesiaci</string>
<string name="settings_general_default_base_url_title">Predvolený server</string>
<string name="settings_general_users_prefs_title">Používatelia</string>
<string name="settings_general_users_prefs_user_used_by_one">Používa sa v téme %1$s</string>
<string name="settings_backup_restore_header">Zálohovanie a obnovenie</string>
<string name="settings_backup_restore_backup_title">Zálohovanie do súboru</string>
<string name="settings_backup_restore_backup_summary">Export konfigurácie, oznámení a používateľov</string>
<string name="settings_backup_restore_restore_title">Obnovenie zo súboru</string>
<string name="settings_advanced_header">Pokročilé</string>
<string name="settings_advanced_broadcast_summary_enabled">Aplikácie môžu prijímať prichádzajúce oznámenia ako vysielanie</string>
<string name="settings_advanced_broadcast_summary_disabled">Aplikácie nemôžu prijímať oznámenia ako vysielanie</string>
<string name="settings_advanced_unifiedpush_title">Povolenie služby UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy nebude fungovať ako distribútor UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy bude fungovať ako distribútor UnifiedPush</string>
<string name="detail_how_to_link">Podrobné pokyny sú k dispozícii na stránke ntfy.sh a v dokumentácií.</string>
<string name="detail_clear_dialog_message">Vymazať všetky oznámenia v tejto téme\?</string>
<string name="settings_advanced_clear_logs_summary">Vymazať predtým zaznamenané záznamy a začať odznova</string>
<string name="detail_settings_appearance_display_name_message">Nastavenie vlastného zobrazovacieho názvu pre tento odber. Pre predvolené nastavenie (%1$s) nechajte prázdne.</string>
<string name="user_dialog_title_edit">Upraviť používateľa</string>
<string name="user_dialog_description_add">Používateľa môžete pridať tu. Tento používateľ bude použitý vo všetkých témach pre daný server.</string>
<string name="main_item_status_unified_push">%1$s (Služba UnifiedPush)</string>
</resources>

View file

@ -0,0 +1,346 @@
<?xml version="1.0" encoding="utf-8"?>
<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">Lägsta prioritet</string>
<string name="channel_notifications_low_name">Låg prioritet</string>
<string name="channel_notifications_high_name">Hög prioritet</string>
<string name="channel_notifications_default_name">Standard prioritet</string>
<string name="channel_notifications_max_name">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>
<string name="detail_item_snack_deleted">Notifikation borttagen</string>
<string name="detail_item_menu_copy_url_copied">URL kopierad till urklipp</string>
<string name="detail_item_menu_copy_contents">Kopiera notifikation</string>
<string name="detail_item_menu_copy_contents_copied">Notifikation kopierad till urklipp</string>
<string name="detail_item_cannot_open_url">Kan inte öppna URL: %1$s</string>
<string name="detail_menu_clear">Rensa alla notifikationer</string>
<string name="detail_menu_test">Skicka testnotifikation</string>
<string name="detail_action_mode_menu_copy">Kopiera</string>
<string name="detail_action_mode_menu_delete">Ta bort</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">Ta bort permanent</string>
<string name="detail_action_mode_delete_dialog_cancel">Avbryt</string>
<string name="detail_settings_title">Prenumerationsinställningar</string>
<string name="share_title">Dela</string>
<string name="share_menu_send">Dela</string>
<string name="main_menu_donate_title">Donera 💸</string>
<string name="detail_item_snack_undo">Ångra</string>
<string name="detail_item_menu_open">Öppna fil</string>
<string name="detail_item_menu_delete">Ta bort fil</string>
<string name="detail_item_menu_download">Ladda ner fil</string>
<string name="detail_item_menu_cancel">Avbryt nedladdning</string>
<string name="detail_item_menu_save_file">Spara fil</string>
<string name="detail_item_menu_copy_url">Kopiera URL</string>
<string name="detail_item_download_info_download_failed">nedladdning misslyckad</string>
<string name="detail_menu_settings">Prenumerationsinställningar</string>
<string name="channel_notifications_group_default_name">Förval</string>
<string name="detail_item_cannot_open_not_found">Kan inte öppna bifogat dokument: Filen kan ha raderats eller så kan inget installerat program öppna filen.</string>
<string name="detail_item_cannot_open_apk">Appar kan inte installeras längre. Ladda ned dem via webbläsaren istället. See Problem #531 för detaljer.</string>
<string name="add_dialog_topic_name_hint">Ämnesnamn, t. ex. phils_alerts</string>
<string name="detail_item_cannot_open">Kan inte öppna bifogat dokument: %1$s</string>
<string name="user_dialog_button_save">Spara</string>
<string name="detail_item_tags">Taggar: %1$s</string>
<string name="detail_item_saved_successfully">Sparad som \"%1$s\" inuti \"Downloads\" mappen</string>
<string name="detail_item_cannot_download">Kan inte öppna eller ladda ned bifogat dokument. Länken har uphört och ingen lokal fil hittades.</string>
<string name="detail_item_cannot_save">Kan inte spara bifogat dokument: %1$s</string>
<string name="detail_item_cannot_delete">Kan inte radera bifogat dokument: %1$s</string>
<string name="detail_item_download_info_not_downloaded_expires_x">nedladdning misslyckad, utgått %1$s</string>
<string name="detail_item_download_info_downloading_x_percent">%1$d%% nedladdad</string>
<string name="detail_item_download_info_deleted_expires_x">bortagen, länk ogiltig %1$s</string>
<string name="detail_menu_notifications_enabled">Notifieringar på</string>
<string name="detail_menu_notifications_disabled_until">Notifieringar av till %1$s</string>
<string name="detail_menu_enable_instant">Aktivera direktmeddelande</string>
<string name="share_content_file_text">En fil var delad med dig</string>
<string name="notification_dialog_2h">2 timmar</string>
<string name="notification_popup_action_cancel">Avbryt</string>
<string name="notification_popup_file">%1$s
\nFil:%2$s</string>
<string name="notification_popup_file_downloading">Laddar ner %1$s,%2$d%%
\n%3$s</string>
<string name="notification_popup_file_download_successful">%1$s
\nFil:%2$s, nedladdad</string>
<string name="notification_popup_file_download_failed">%1$s
\nFil:%2$s, nedladdning misslyckad</string>
<string name="notification_popup_user_action_failed">%1$s misslyckad: %2$s</string>
<string name="settings_notifications_min_priority_summary_x_or_higher">Visa notifieringar om prioritet är %1$d (%2$s) eller högre</string>
<string name="settings_notifications_channel_prefs_title">Kanalinställningar</string>
<string name="settings_notifications_auto_download_summary_smaller_than_x">Ladda automatiskt ner bifogade filer upp till %1$s</string>
<string name="settings_notifications_auto_delete_summary_one_month">Radera notifieringarna efter en månad</string>
<string name="settings_notifications_auto_delete_summary_three_months">Radera notifieringarna efter 3 månader</string>
<string name="settings_notifications_insistent_max_priority_title">Fortsätt visa meddelande med högsta prioritet</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Notifieringar med max prioritet visas tills avvisats</string>
<string name="settings_advanced_clear_logs_title">Rensa loggar</string>
<string name="settings_backup_restore_backup_failed">Säkerhetskopiering%1$ misslyckad: %1$s</string>
<string name="settings_advanced_export_logs_copied_url">Loggfiler uppladdat och URL kopierad</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Använder anpassade inställningar för den här prenumerationen</string>
<string name="detail_settings_notifications_dedicated_channels_title">Egna notfieringsinställningar</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Använder standardinställningar (ljud, Stör ej åsidosättning, etc.)</string>
<string name="detail_settings_appearance_icon_error_saving">Kan ej att spara ikon:%1$s</string>
<string name="user_dialog_password_hint_add">Lösenord</string>
<string name="user_dialog_password_hint_edit">Lösenord (oförändrat om blankt)</string>
<string name="user_dialog_button_add">Lägg till användare</string>
<string name="user_dialog_button_cancel">Avbryt</string>
<string name="user_dialog_button_delete">Radera användare</string>
<string name="detail_item_download_failed">Kunde inte ladda ner bifogad fil: %1$s</string>
<string name="detail_item_download_info_not_downloaded">Nedladdning misslyckad</string>
<string name="detail_item_download_info_not_downloaded_expired">nedladdning misslyckad, länk ej giltig</string>
<string name="detail_item_download_info_deleted">borttagen</string>
<string name="detail_item_download_info_deleted_expired">borttagen, länk ogiltig</string>
<string name="detail_menu_notifications_disabled_forever">Notifieringar av</string>
<string name="detail_item_download_info_download_failed_expired">nedladdning misslyckad, länk ogiltig</string>
<string name="detail_menu_copy_url">Kopiera ämnesraden</string>
<string name="detail_menu_unsubscribe">avslutad prenumeration</string>
<string name="detail_menu_disable_instant">Inaktivera direktmeddelande</string>
<string name="detail_action_mode_delete_dialog_message">Ta bort markerat meddelande(n) permanent\?</string>
<string name="share_content_text_hint">Lägg till innehåll att dela här</string>
<string name="share_content_image_text">En bild har blivit delad med dig</string>
<string name="share_content_title">Förhandsgranska meddelande</string>
<string name="share_content_image_error">Kan inte läsa bild:%1$s</string>
<string name="share_suggested_topics">Ämnesförslag</string>
<string name="notification_dialog_title">Inaktivera notifikationer</string>
<string name="share_topic_title">Dela med</string>
<string name="notification_dialog_enabled_toast_message">Notifikationer aktiverat</string>
<string name="notification_dialog_muted_forever_toast_message">Notifikationer inaktiverat</string>
<string name="notification_dialog_muted_until_toast_message">Notifikationer inaktiverat till %1$s</string>
<string name="notification_dialog_save">Spara</string>
<string name="notification_popup_action_browse">Bläddra</string>
<string name="notification_dialog_forever">Tills återaktiverad</string>
<string name="notification_popup_action_open">Öppna</string>
<string name="notification_popup_action_download">Ladda ner</string>
<string name="settings_notifications_muted_until_title">Inaktivera notifieringar</string>
<string name="settings_notifications_muted_until_show_all">Visa alla notifieringar</string>
<string name="settings_notifications_muted_until_forever">Notifieringar inaktiverade tillsvidare</string>
<string name="settings_title">Inställningar</string>
<string name="settings_notifications_header">Notifieringar</string>
<string name="settings_notifications_min_priority_high">Hög prioritet eller högre</string>
<string name="settings_notifications_min_priority_max">Bara högsta prioritet</string>
<string name="settings_notifications_priority_min">min</string>
<string name="settings_notifications_priority_low">låg</string>
<string name="settings_notifications_priority_default">standard</string>
<string name="settings_notifications_priority_high">hög</string>
<string name="settings_notifications_min_priority_summary_max">Visa notifieringar om prioritet är 5 (max)</string>
<string name="settings_notifications_min_priority_min">Alla prioriteringar</string>
<string name="settings_notifications_min_priority_low">Låg prioritet eller högre</string>
<string name="settings_notifications_min_priority_default">Normal prioritet eller högre</string>
<string name="settings_notifications_priority_max">max</string>
<string name="settings_notifications_channel_prefs_summary">Stör ej (DND) åsidosätt ljud, etc.</string>
<string name="settings_notifications_auto_download_title">Ladda ner filer</string>
<string name="settings_notifications_auto_download_summary_never">Ladda inte automatiskt ner alla filer</string>
<string name="settings_notifications_auto_download_summary_always">Automatiskt ladda ner alla filer</string>
<string name="settings_notifications_auto_download_100k">Om mindre än 100 KB</string>
<string name="settings_notifications_auto_download_500k">Om mindre än 500 KB</string>
<string name="settings_notifications_auto_download_50m">Om mindre än 50 MB</string>
<string name="settings_notifications_auto_delete_title">Radera notifieringarna</string>
<string name="settings_notifications_auto_download_never">Ladda aldrig ner något automatiskt</string>
<string name="settings_notifications_auto_download_1m">Om mindre än 1 MB</string>
<string name="settings_notifications_auto_download_5m">Om mindre än 5 MB</string>
<string name="settings_notifications_auto_delete_summary_one_day">Radera notifieringarna efter 1 dag</string>
<string name="settings_notifications_auto_delete_summary_three_days">Radera notifieringarna efter 3 dagar</string>
<string name="settings_notifications_auto_delete_never">Aldrig</string>
<string name="settings_notifications_auto_delete_one_day">Efter en dag</string>
<string name="settings_notifications_auto_delete_three_days">Efter 3 dagar</string>
<string name="settings_general_users_summary">Lägg till/ta bort användare för privata ämnen</string>
<string name="settings_general_users_prefs_title">Användare</string>
<string name="settings_general_default_base_url_message">Ange din servers rot-URL för att använda din egen server som standard när du prenumererar på nya ämnen och/eller delar ämnen.</string>
<string name="settings_general_default_base_url_default_summary">%1$s (standard)</string>
<string name="settings_general_users_title">Hantera användare</string>
<string name="settings_general_users_prefs_user_used_by_one">Används i ämne %1$s</string>
<string name="settings_general_users_prefs_user_used_by_many">Används i ämnen %1$s</string>
<string name="settings_general_users_prefs_user_add">Lägg till användare</string>
<string name="settings_general_users_prefs_user_add_title">Lägg till ny användare</string>
<string name="settings_general_users_prefs_user_add_summary">Lägg till en ny användare för ny server</string>
<string name="settings_general_dark_mode_entry_light">Ljust tema</string>
<string name="settings_general_dark_mode_entry_dark">Mörkt tema</string>
<string name="settings_backup_restore_header">Säkerhetskopia &amp; återställning</string>
<string name="settings_backup_restore_backup_summary">Exportera inställningar, notifieringar och användare</string>
<string name="settings_general_dark_mode_summary_dark">Mörkt läge aktivt. Är du en vampyr\?</string>
<string name="settings_general_dark_mode_entry_system">Används systemstandard</string>
<string name="settings_backup_restore_backup_title">Säkerhetskopiera till fil</string>
<string name="settings_advanced_broadcast_title">Sända meddelanden</string>
<string name="settings_advanced_broadcast_summary_disabled">Appar kan inte ta emot meddelanden som sändningar</string>
<string name="settings_advanced_broadcast_summary_enabled">Appar kan ta emot inkommande meddelanden som sändningar</string>
<string name="settings_advanced_export_logs_summary">Kopiera loggtext till urklipp, eller ladda upp till nopaste.net (ägs av skaparen av ntfy). Datornamn och ämnen kan censureras, meddelandetext censureras aldrig.</string>
<string name="settings_advanced_export_logs_entry_copy_original">Kopiera till urklipp</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">Kopiera till urklipp (censurerat)</string>
<string name="settings_advanced_export_logs_error_uploading">Kunde inte ladda upp loggar:%1$s</string>
<string name="settings_advanced_export_logs_scrub_dialog_text">Dessa ämnen/hostnamn ersattes med fruktnamn, så att du kan dela loggen utan att vara orolig:
\n
\n%1$s
\n
\nLösenord har rensats, men de finns inte med här.</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">Inga ämnen eller värdnamn har redigerats. Du kanske inte har några prenumerationer\?</string>
<string name="settings_advanced_clear_logs_deleted_toast">Loggar raderade</string>
<string name="settings_advanced_connection_protocol_title">Anslutningsprotokoll</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Använd en JSON-ström över HTTP för att ansluta till servern. Den här metoden är beprövad, men kan förbruka mer batteri.</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">JSON stream över HTTP</string>
<string name="detail_settings_notifications_instant_summary_on">Notifieringarna levereras direkt. Kräver att appen aktivt körs vilket kräver mer batteri.</string>
<string name="settings_about_version_title">Version</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
<string name="settings_about_version_copied_to_clipboard_message">Kopierad till urklipp</string>
<string name="detail_settings_appearance_header">Utseende</string>
<string name="detail_settings_notifications_instant_title">Omedelbar leverans</string>
<string name="detail_settings_appearance_icon_set_title">Prenumerationsikon</string>
<string name="detail_settings_appearance_icon_set_summary">Välj en ikon att visa i notifieringarna</string>
<string name="detail_settings_appearance_icon_remove_title">Prenumerationsikon (tryck för att radera)</string>
<string name="detail_settings_global_setting_suffix">Använder de globala inställningarna</string>
<string name="detail_settings_about_header">Om</string>
<string name="detail_item_download_info_download_failed_expires_x">nedladdning misslyckad, länk ogiltig %1$s</string>
<string name="notification_dialog_show_all">Visa alla notifikationer</string>
<string name="share_content_file_error">Kan inte läsa filinformation:%1$s</string>
<string name="notification_dialog_30min">30 minuter</string>
<string name="notification_dialog_8h">8 timmar</string>
<string name="notification_dialog_tomorrow">Tills imorgon</string>
<string name="settings_notifications_min_priority_title">Låg prioritet</string>
<string name="settings_notifications_muted_until_x">Notifieringar inaktiverad till %1$s</string>
<string name="settings_notifications_min_priority_summary_any">Visa alla notifieringar</string>
<string name="settings_notifications_auto_delete_summary_never">Radera aldrig notifieringarna</string>
<string name="settings_notifications_auto_delete_one_week">Efter en vecka</string>
<string name="settings_notifications_auto_delete_one_month">Efter en månad</string>
<string name="settings_notifications_auto_delete_three_months">Efter 3 månader</string>
<string name="settings_general_header">Allmänt</string>
<string name="settings_general_default_base_url_title">Standardserver</string>
<string name="settings_general_users_prefs_user_not_used">Används inte av något ämne</string>
<string name="settings_general_dark_mode_title">Mörkt tema</string>
<string name="settings_general_dark_mode_summary_system">Använd enhetens standardinställning</string>
<string name="settings_general_dark_mode_summary_light">Ljust tema aktivt</string>
<string name="settings_backup_restore_backup_entry_everything">Allt</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">Allt, förutom användare</string>
<string name="settings_backup_restore_backup_successful">Säkerhetskopia skapad</string>
<string name="settings_backup_restore_backup_entry_settings_only">Endast inställningar</string>
<string name="settings_backup_restore_restore_summary">Importera inställningar, notifieringar och användare</string>
<string name="settings_backup_restore_restore_successful">Återställning slutförd</string>
<string name="settings_advanced_export_logs_title">Kopiera/ladda upp loggar</string>
<string name="settings_backup_restore_restore_failed">Återställning misslyckades: %1$s</string>
<string name="settings_advanced_header">Avancerat</string>
<string name="settings_advanced_record_logs_title">Spara loggar</string>
<string name="settings_advanced_clear_logs_summary">Rensa alla gamla loggar, börja på nytt</string>
<string name="user_dialog_title_edit">Editera användare</string>
<string name="user_dialog_description_edit">Du kan redigera användarnamn/lösenord för den valda användaren eller ta bort den.</string>
<string name="settings_advanced_record_logs_summary_enabled">Loggar (upp till 1 000 poster) till enhet …</string>
<string name="settings_advanced_record_logs_summary_disabled">Aktivera loggning, så du kan dela loggar för felsökning.</string>
<string name="settings_advanced_export_logs_entry_upload_original">Ladda upp och kopiera länk</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">Ladda upp och kopiera länk (censurerat)</string>
<string name="settings_advanced_export_logs_copied_logs">Loggar kopierat till urklipp</string>
<string name="settings_advanced_export_logs_uploading">Laddar upp loggfil…</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">OK</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string>
<string name="settings_about_header">Om</string>
<string name="detail_settings_notifications_instant_summary_off">Notifieringar levereras genom Firebase. Viss fördröjning kan förekomma, men kräver mindre batteri.</string>
<string name="detail_settings_notifications_open_channels_title">Anpassa notifieringsinställningarna</string>
<string name="detail_settings_notifications_open_channels_summary">Stör ej (DND) åsidosätts, ljud, etc.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Fortsätt meddela</string>
<string name="detail_settings_appearance_display_name_title">Visningsnamn</string>
<string name="detail_settings_appearance_display_name_message">Sätt ett eget visningsnamn för denna prenumeration. Lämna blank för standard (%1$s).</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (standard)</string>
<string name="detail_settings_about_topic_url_title">Ämnes-URL</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Kopierad till urklipp</string>
<string name="user_dialog_title_add">Lägg till användare</string>
<string name="user_dialog_description_add">Du kan lägga till en användare här. Alla ämnen för den givna servern kommer att använda den här användaren.</string>
<string name="user_dialog_base_url_hint">Service-URL</string>
<string name="user_dialog_username_hint">Användarnamn</string>
<string name="share_successful">Meddelande publicerat</string>
<string name="notification_dialog_cancel">Avbryt</string>
<string name="notification_dialog_1h">1 timme</string>
<string name="settings_notifications_auto_delete_summary_one_week">Radera notifieringarna efter en vecka</string>
<string name="settings_notifications_auto_download_always">Ladda automatiskt ner allt</string>
<string name="settings_notifications_auto_download_10m">Om mindre än 10 MB</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Notifieringar med max prioritet visas endast en gång</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy kommer att fungera som distributör av notifieringar</string>
<string name="settings_backup_restore_restore_title">Återställ från fil</string>
<string name="settings_advanced_unifiedpush_title">Aktivera pushnotiser</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy kommer inte att fungera som distributör av notifieringar</string>
<string name="settings_advanced_connection_protocol_summary_ws">Använd WebSockets för att ansluta till servern. Detta är den rekommenderade metoden, men kan kräva ytterligare konfiguration i din proxy.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Meddela endast en gång</string>
<string name="detail_settings_global_setting_title">Använd de globala inställningarna</string>
<string name="detail_settings_appearance_icon_remove_summary">Ikon som visas i meddelanden för detta ämne</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

@ -2,8 +2,8 @@
<resources> <resources>
<string name="main_item_status_text_one">%1$d bildirim</string> <string name="main_item_status_text_one">%1$d bildirim</string>
<string name="detail_how_to_intro">Bu konuya bildirim göndermek için konu URL\'sine PUT veya POST göndermeniz yeterlidir.</string> <string name="detail_how_to_intro">Bu konuya bildirim göndermek için konu URL\'sine PUT veya POST göndermeniz yeterlidir.</string>
<string name="channel_notifications_low_name">Bildirimler (düşük öncelik)</string> <string name="channel_notifications_low_name">Düşük öncelik</string>
<string name="channel_notifications_default_name">Bildirimler (öntanımlı öncelik)</string> <string name="channel_notifications_default_name">Öntanımlı öncelik</string>
<string name="channel_subscriber_service_name">Abonelik Hizmeti</string> <string name="channel_subscriber_service_name">Abonelik Hizmeti</string>
<string name="channel_subscriber_notification_title">Gelen bildirimler için dinleniyor</string> <string name="channel_subscriber_notification_title">Gelen bildirimler için dinleniyor</string>
<string name="channel_subscriber_notification_instant_text">Anında teslimat konularına abone olundu</string> <string name="channel_subscriber_notification_instant_text">Anında teslimat konularına abone olundu</string>
@ -13,7 +13,7 @@
<string name="channel_subscriber_notification_instant_text_more">%1$d anında teslimat konusuna abone olundu</string> <string name="channel_subscriber_notification_instant_text_more">%1$d anında teslimat konusuna abone olundu</string>
<string name="channel_subscriber_notification_noinstant_text">Konulara abone olundu</string> <string name="channel_subscriber_notification_noinstant_text">Konulara abone olundu</string>
<string name="channel_subscriber_notification_noinstant_text_one">Bir konuya abone olundu</string> <string name="channel_subscriber_notification_noinstant_text_one">Bir konuya abone olundu</string>
<string name="channel_notifications_min_name">Bildirimler (en düşük öncelik)</string> <string name="channel_notifications_min_name">En düşük öncelik</string>
<string name="channel_subscriber_notification_instant_text_four">Dört anında teslimat konusuna abone olundu</string> <string name="channel_subscriber_notification_instant_text_four">Dört anında teslimat konusuna abone olundu</string>
<string name="channel_subscriber_notification_noinstant_text_four">Dört konuya abone olundu</string> <string name="channel_subscriber_notification_noinstant_text_four">Dört konuya abone olundu</string>
<string name="refresh_message_no_results">Her şey güncel</string> <string name="refresh_message_no_results">Her şey güncel</string>
@ -174,7 +174,7 @@
<string name="settings_advanced_connection_protocol_title">Bağlantı protokolü</string> <string name="settings_advanced_connection_protocol_title">Bağlantı protokolü</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Sunucuya bağlanmak için HTTP üzerinden bir JSON akışı kullanın. Bu yöntem iyi test edilmiştir, ancak daha fazla pil tüketebilir.</string> <string name="settings_advanced_connection_protocol_summary_jsonhttp">Sunucuya bağlanmak için HTTP üzerinden bir JSON akışı kullanın. Bu yöntem iyi test edilmiştir, ancak daha fazla pil tüketebilir.</string>
<string name="settings_advanced_connection_protocol_summary_ws">Sunucuya bağlanmak için WebSockets kullanın. Bu tavsiye edilen yöntemdir, ancak vekilinizde ek yapılandırma gerektirebilir.</string> <string name="settings_advanced_connection_protocol_summary_ws">Sunucuya bağlanmak için WebSockets kullanın. Bu tavsiye edilen yöntemdir, ancak vekilinizde ek yapılandırma gerektirebilir.</string>
<string name="channel_notifications_max_name">Bildirimler (en yüksek öncelik)</string> <string name="channel_notifications_max_name">En yüksek öncelik</string>
<string name="channel_subscriber_notification_noinstant_text_two">İki konuya abone olundu</string> <string name="channel_subscriber_notification_noinstant_text_two">İki konuya abone olundu</string>
<string name="main_add_button_description">Abonelik ekle</string> <string name="main_add_button_description">Abonelik ekle</string>
<string name="detail_clear_dialog_message">Bu konudaki tüm bildirimler silinsin mi\?</string> <string name="detail_clear_dialog_message">Bu konudaki tüm bildirimler silinsin mi\?</string>
@ -195,7 +195,7 @@
<string name="user_dialog_button_cancel">İptal</string> <string name="user_dialog_button_cancel">İptal</string>
<string name="user_dialog_button_delete">Kullanıcı sil</string> <string name="user_dialog_button_delete">Kullanıcı sil</string>
<string name="user_dialog_button_save">Kaydet</string> <string name="user_dialog_button_save">Kaydet</string>
<string name="channel_notifications_high_name">Bildirimler (yüksek öncelik)</string> <string name="channel_notifications_high_name">Yüksek öncelik</string>
<string name="channel_subscriber_notification_noinstant_text_three">Üç konuya abone olundu</string> <string name="channel_subscriber_notification_noinstant_text_three">Üç konuya abone olundu</string>
<string name="refresh_message_result">%1$d bildirim alındı</string> <string name="refresh_message_result">%1$d bildirim alındı</string>
<string name="main_action_mode_delete_dialog_cancel">İptal</string> <string name="main_action_mode_delete_dialog_cancel">İptal</string>
@ -327,4 +327,20 @@
<string name="detail_settings_about_header">Hakkında</string> <string name="detail_settings_about_header">Hakkında</string>
<string name="detail_settings_about_topic_url_title">Konu URL\'si</string> <string name="detail_settings_about_topic_url_title">Konu URL\'si</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Panoya kopyalandı</string> <string name="detail_settings_about_topic_url_copied_to_clipboard_message">Panoya kopyalandı</string>
<string name="main_menu_donate_title">Bağış yap 💸</string>
<string name="detail_item_cannot_open_apk">Uygulamalar artık kurulamıyor. Bunun yerine tarayıcı üzerinden indirin. Ayrıntılar için sorun #531\'e bakın.</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">En yüksek öncelikli bildirimler yalnızca bir kez uyarı verir</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Bu abonelik için özel ayarları kullan</string>
<string name="detail_settings_notifications_open_channels_title">Bildirim ayarlarını yapılandır</string>
<string name="detail_settings_notifications_open_channels_summary">Rahatsız Etmeyin (DND) özelliğini geçersiz kıl, sesler vb.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Uyarmaya devam et</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Yalnızca bir kez uyar</string>
<string name="settings_notifications_insistent_max_priority_title">En yüksek öncelik için uyarmaya et</string>
<string name="detail_settings_notifications_dedicated_channels_title">Özel bildirim ayarları</string>
<string name="channel_notifications_group_default_name">Öntanımlı</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">En yüksek öncelikli bildirimler kapatılana kadar sürekli uyarı verir</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Öntanımlı ayarları kullan (sesler, Rahatsız Etmeyin özelliğini geçersiz kıl, vb.)</string>
<string name="settings_advanced_unifiedpush_title">UnifiedPush\'u etkinleştir</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy bir UnifiedPush dağıtıcısı olarak davranmayacaktır</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy bir UnifiedPush dağıtıcısı olarak davranacaktır</string>
</resources> </resources>

View file

@ -1,11 +1,346 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="channel_notifications_min_name">Сповіщення (мінімальний пріоритет)</string> <string name="channel_notifications_min_name">Мінімальний пріоритет</string>
<string name="channel_notifications_default_name">Сповіщення (звичайний пріоритет)</string> <string name="channel_notifications_default_name">Звичайний пріоритет</string>
<string name="channel_notifications_low_name">Сповіщення (низький пріоритет)</string> <string name="channel_notifications_low_name">Низький пріоритет</string>
<string name="channel_notifications_high_name">Сповіщення (високий пріоритет)</string> <string name="channel_notifications_high_name">Високий пріоритет</string>
<string name="channel_notifications_max_name">Сповіщення (максимальний пріоритет)</string> <string name="channel_notifications_max_name">Максимальний пріоритет</string>
<string name="channel_subscriber_service_name">Абонементна Послуга</string> <string name="channel_subscriber_service_name">Абонементна Послуга</string>
<string name="channel_subscriber_notification_title">Очікую вхідні сповіщення</string> <string name="channel_subscriber_notification_title">Очікую вхідні сповіщення</string>
<string name="channel_subscriber_notification_instant_text">Підписався на теми миттєвої доставки</string> <string name="channel_subscriber_notification_instant_text">Підписався на теми миттєвої доставки</string>
<string name="detail_settings_appearance_display_name_title">Відображуване ім\'я</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (за умовчанням)</string>
<string name="detail_settings_appearance_display_name_message">Встановіть спеціальну відображувану назву для цієї підписки. Залиште поле порожнім для умовчання (%1$s).</string>
<string name="user_dialog_base_url_hint">URL служби</string>
<string name="add_dialog_use_another_server_description">Введіть URL-адресу сервісу нижче, щоб підписатися на теми з інших серверів.</string>
<string name="detail_item_cannot_open_url">Неможливо відкрити URL: %1$s</string>
<string name="detail_item_menu_cancel">Скасувати завантаження</string>
<string name="share_topic_title">Поділитися з</string>
<string name="settings_notifications_auto_delete_summary_one_month">Автоматичне видалення сповіщень через місяць</string>
<string name="settings_general_default_base_url_title">Сервер за замовчуванням</string>
<string name="notification_popup_user_action_failed">%1$s не вдалося: %2$s</string>
<string name="settings_notifications_header">Сповіщення</string>
<string name="settings_notifications_muted_until_forever">Сповіщення вимкнено до відновлення</string>
<string name="settings_notifications_muted_until_x">Сповіщення вимкнено до %1$s</string>
<string name="settings_general_dark_mode_title">Темний режим</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_backup_restore_backup_failed">Помилка резервного копіювання: %1$s</string>
<string name="settings_backup_restore_restore_title">Відновити з файлу</string>
<string name="settings_advanced_header">Просунутий</string>
<string name="settings_advanced_export_logs_title">Копіювати/завантажувати журнали</string>
<string name="settings_notifications_channel_prefs_title">Налаштування каналу</string>
<string name="settings_notifications_channel_prefs_summary">Перевизначення режиму \"Не турбувати\" (DND), звуки тощо.</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_100k">Якщо менше 100 кБ</string>
<string name="settings_backup_restore_backup_summary">Експортуйте конфігурацію, сповіщення та користувачів</string>
<string name="settings_backup_restore_header">Резервне копіювання та відновлення</string>
<string name="settings_backup_restore_backup_title">Резервне копіювання в файл</string>
<string name="settings_backup_restore_backup_entry_everything">Все</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">Все, крім користувачів</string>
<string name="settings_backup_restore_backup_entry_settings_only">Лише налаштування</string>
<string name="channel_subscriber_notification_instant_text_five">Підписався на п\'ять тем миттєвої доставки</string>
<string name="channel_subscriber_notification_instant_text_six">Підписався на шість тем миттєвої доставки</string>
<string name="channel_subscriber_notification_noinstant_text_five">Підписався на п\'ять тем</string>
<string name="channel_subscriber_notification_noinstant_text_six">Підписався на шість тем</string>
<string name="refresh_message_error">Не вдалося оновити %1$d підписок
\n
\n%2$s</string>
<string name="main_menu_settings_title">Налаштування</string>
<string name="main_menu_report_bug_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_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_no_subscriptions_text">Схоже, у вас ще немає жодної підписки.</string>
<string name="main_how_to_link">Детальні інструкції доступні на ntfy.sh і в документах.</string>
<string name="main_unified_push_toast">Цією підпискою керує %1$s через UnifiedPush</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="add_dialog_title">Підписатися на тему</string>
<string name="add_dialog_description_below">Теми можуть не бути захищені паролем, тому виберіть назву, яку важко вгадати. Після підписки ви можете PUT/POST сповіщення.</string>
<string name="add_dialog_topic_name_hint">Назва теми, наприклад phils_alerts</string>
<string name="add_dialog_use_another_server">Використовувати інший сервер</string>
<string name="add_dialog_instant_delivery">Миттєва доставка в режимі дрімання</string>
<string name="add_dialog_instant_delivery_description">Забезпечує миттєву доставку повідомлень, навіть якщо пристрій неактивний.</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="detail_clear_dialog_cancel">Скасувати</string>
<string name="detail_delete_dialog_message">Скасувати підписку на цю тему та видалити всі отримані сповіщення\?</string>
<string name="detail_delete_dialog_cancel">Скасувати</string>
<string name="detail_item_menu_save_file">Зберегти файл</string>
<string name="detail_item_menu_copy_url">Копіювати URL</string>
<string name="detail_item_download_info_deleted">видалено</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="share_menu_send">Поділіться</string>
<string name="notification_popup_file_download_failed">%1$s
\nФайл: %2$s, не вдалося завантажити</string>
<string name="settings_general_users_prefs_user_used_by_one">Використовується темою %1$s</string>
<string name="detail_settings_global_setting_suffix">за допомогою глобальних налаштувань</string>
<string name="channel_subscriber_notification_noinstant_text">Підписався на теми</string>
<string name="channel_subscriber_notification_instant_text_one">Підписався на одну тему миттєвої доставки</string>
<string name="channel_subscriber_notification_instant_text_two">Підписався на дві теми миттєвої доставки</string>
<string name="channel_subscriber_notification_noinstant_text_one">Підписався на одну тему</string>
<string name="channel_subscriber_notification_noinstant_text_more">Підписано на %1$d тем</string>
<string name="channel_subscriber_notification_instant_text_three">Підписався на три теми миттєвої доставки</string>
<string name="channel_subscriber_notification_instant_text_four">Підписався на чотири теми миттєвої доставки</string>
<string name="channel_subscriber_notification_instant_text_more">Підписано на %1$d тем миттєвої доставки</string>
<string name="channel_subscriber_notification_noinstant_text_two">Підписався на дві теми</string>
<string name="refresh_message_no_results">Все в актуальному стані</string>
<string name="refresh_message_result">Отримано %1$d сповіщень</string>
<string name="add_dialog_login_password_hint">Пароль</string>
<string name="settings_notifications_auto_delete_never">Ніколи</string>
<string name="settings_advanced_broadcast_summary_disabled">Програми не можуть отримувати сповіщення як трансляції</string>
<string name="settings_advanced_record_logs_title">Журнали запису</string>
<string name="user_dialog_password_hint_add">Пароль</string>
<string name="user_dialog_password_hint_edit">Пароль (незмінний, якщо залишити порожнім)</string>
<string name="user_dialog_button_cancel">Скасувати</string>
<string name="main_menu_notifications_disabled_forever">Сповіщення вимкнено</string>
<string name="detail_menu_notifications_disabled_until">Сповіщення вимкнено до %1$s</string>
<string name="main_menu_notifications_disabled_until">Сповіщення вимкнено до %1$s</string>
<string name="channel_subscriber_notification_noinstant_text_three">Підписався на три теми</string>
<string name="channel_subscriber_notification_noinstant_text_four">Підписався на чотири теми</string>
<string name="main_action_bar_title">Підписані теми</string>
<string name="main_menu_docs_title">Читайте докуменацію</string>
<string name="notification_dialog_show_all">Показати всі сповіщення</string>
<string name="main_menu_notifications_enabled">Сповіщення ввімкнено</string>
<string name="settings_notifications_priority_default">за замовчуванням</string>
<string name="refresh_message_error_one">Не вдалося оновити підписку: %1$s</string>
<string name="main_menu_rate_title">Оцініть програму ⭐</string>
<string name="detail_test_message">Це тестове сповіщення від програми ntfy для Android. Він має рівень пріоритету %1$d. Якщо ви надішлете інший, він може виглядати інакше.</string>
<string name="main_how_to_intro">Натисніть +, щоб створити тему або підписатися на неї. Після цього ви отримуєте сповіщення на свій пристрій, коли надсилаєте повідомлення через PUT або POST.</string>
<string name="add_dialog_login_username_hint">Ім\'я користувача</string>
<string name="detail_copied_to_clipboard_message">Скопійовано в буфер обміну</string>
<string name="main_banner_websocket_text">Перехід на WebSockets є рекомендованим способом підключення до вашого сервера, який може подовжити час автономної роботи, але може вимагати <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">додаткової конфігурації вашого проксі</a>. Це можна вимкнути в налаштуваннях.</string>
<string name="add_dialog_login_title">Необхідно ввійти</string>
<string name="add_dialog_login_new_user">Новий користувач</string>
<string name="detail_action_mode_menu_copy">Копія</string>
<string name="add_dialog_button_login">Авторизуватися</string>
<string name="add_dialog_error_connection_failed">Помилка підключення: %1$s</string>
<string name="add_dialog_login_description">Ця тема потребує авторизації. Будь ласка, введіть ім\'я користувача та пароль.</string>
<string name="add_dialog_login_error_not_authorized">Помилка логіну. Користувач %1$s не авторизований.</string>
<string name="detail_how_to_link">Детальні інструкції доступні на ntfy.sh і в документах.</string>
<string name="detail_clear_dialog_message">Видалити всі сповіщення в цій темі\?</string>
<string name="detail_item_cannot_save">Неможливо зберегти вкладення: %1$s</string>
<string name="detail_item_download_failed">Не вдалося завантажити вкладений файл: %1$s</string>
<string name="detail_how_to_example">Приклад (з використанням curl):<br/><tt>$ curl -d \"Hi\" %1$s</tt></string>
<string name="detail_item_download_info_not_downloaded_expires_x">не завантажено, закінчується %1$s</string>
<string name="detail_test_message_error_too_large">Не вдається надіслати повідомлення: вкладення завелике.</string>
<string name="detail_instant_delivery_enabled">Миттєва доставка включена</string>
<string name="detail_item_tags">Теги: %1$s</string>
<string name="detail_item_download_info_not_downloaded_expired">не завантажено, термін дії посилання закінчився</string>
<string name="detail_no_notifications_text">Ви ще не отримали сповіщень щодо цієї теми.</string>
<string name="detail_how_to_intro">Щоб надіслати сповіщення до цієї теми, просто PUT або POST за URL-адресою теми.</string>
<string name="detail_deep_link_subscribed_toast_message">Підписався на тему %1$s</string>
<string name="detail_item_cannot_open">Неможливо відкрити вкладення: %1$s</string>
<string name="detail_item_download_info_deleted_expires_x">видалено, посилання діє %1$s</string>
<string name="notification_dialog_tomorrow">До завтра</string>
<string name="detail_item_download_info_downloading_x_percent">%1$d%% завантажено</string>
<string name="detail_item_download_info_deleted_expired">видалено, термін дії посилання закінчився</string>
<string name="detail_action_mode_menu_delete">Видалити</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">Видалити остаточно</string>
<string name="share_content_file_text">Вам надали доступ до файлу</string>
<string name="notification_dialog_30min">30 хвилин</string>
<string name="notification_popup_action_browse">Переглядати</string>
<string name="notification_popup_file">%1$s
\nФайл: %2$s</string>
<string name="share_content_file_error">Неможливо прочитати інформацію про файл: %1$s</string>
<string name="notification_dialog_8h">8 годин</string>
<string name="notification_dialog_forever">До відновлення</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="notification_popup_file_downloading">Завантаження %1$s, %2$d%%
\n%3$s</string>
<string name="settings_advanced_broadcast_summary_enabled">Програми можуть отримувати вхідні сповіщення як трансляції</string>
<string name="settings_notifications_muted_until_title">Вимкнути сповіщення</string>
<string name="settings_general_users_prefs_user_used_by_many">Використовується темами %1$s</string>
<string name="settings_notifications_auto_delete_summary_one_week">Автоматичне видалення сповіщень через тиждень</string>
<string name="settings_notifications_priority_low">низький</string>
<string name="settings_notifications_auto_download_10m">Якщо менше 10 Мб</string>
<string name="settings_notifications_auto_delete_one_day">Через один день</string>
<string name="settings_notifications_auto_download_50m">Якщо менше 50 Мб</string>
<string name="settings_notifications_auto_delete_title">Видалити сповіщення</string>
<string name="settings_notifications_auto_delete_summary_three_days">Автоматичне видалення сповіщень через 3 дні</string>
<string name="settings_general_users_title">Керувати користувачами</string>
<string name="settings_general_dark_mode_summary_system">Використання системи за замовчуванням</string>
<string name="settings_general_dark_mode_summary_light">Світловий режим включений</string>
<string name="settings_advanced_broadcast_title">Трансляція повідомлень</string>
<string name="settings_general_users_summary">Додавання/видалення користувачів для захищених тем</string>
<string name="settings_general_users_prefs_user_add_title">Додати нового користувача</string>
<string name="settings_general_users_prefs_user_add_summary">Створіть нового користувача для нового сервера</string>
<string name="settings_general_dark_mode_entry_dark">Темний режим</string>
<string name="settings_backup_restore_restore_failed">Не вдалося відновити: %1$s</string>
<string name="settings_backup_restore_backup_successful">Резервну копію створено</string>
<string name="settings_backup_restore_restore_summary">Імпортуйте конфігурацію, сповіщення та користувачів</string>
<string name="settings_backup_restore_restore_successful">Відновлено успішно</string>
<string name="settings_advanced_export_logs_summary">Скопіюйте журнали в буфер обміну або завантажте на nopaste.net (належить автору ntfy). Імена хостів і теми можуть бути піддані цензурі, сповіщення ніколи.</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">Копіювати в буфер обміну (цензуровано)</string>
<string name="settings_advanced_export_logs_entry_copy_original">Копіювати в буфер обміну</string>
<string name="settings_advanced_export_logs_uploading">Завантаження журналу…</string>
<string name="settings_advanced_export_logs_scrub_dialog_text">Ці теми/імена хостів було замінено назвами фруктів, тож ви можете ділитися журналом без хвилювань:
\n
\n%1$s
\n
\nПаролі очищаються, але не відображаються тут.</string>
<string name="settings_advanced_export_logs_entry_upload_original">Завантажте та скопіюйте посилання</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">Завантажити та скопіювати посилання (цензуровано)</string>
<string name="settings_advanced_export_logs_copied_logs">Журнали скопійовано в буфер обміну</string>
<string name="settings_advanced_clear_logs_summary">Видаліть раніше записані журнали та почніть спочатку</string>
<string name="settings_advanced_connection_protocol_summary_ws">Використовуйте WebSockets для підключення до сервера. Це рекомендований метод, але може знадобитися додаткова конфігурація вашого проксі.</string>
<string name="user_dialog_button_save">Зберегти</string>
<string name="detail_settings_appearance_icon_set_title">Значок підписки</string>
<string name="detail_settings_notifications_instant_summary_on">Сповіщення надходять миттєво. Потрібна служба переднього плану та споживає більше акумулятора.</string>
<string name="detail_settings_notifications_instant_summary_off">Сповіщення доставляються за допомогою Firebase. Доставка може бути відкладена, але споживає менше акумулятора.</string>
<string name="detail_settings_about_topic_url_title">URL теми</string>
<string name="user_dialog_username_hint">Ім\'я користувача</string>
<string name="detail_settings_about_header">Про</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Скопійовано в буфер обміну</string>
<string name="user_dialog_description_edit">Ви можете змінити ім\'я користувача/пароль для вибраного користувача або видалити його.</string>
<string name="user_dialog_button_add">Додати користувача</string>
<string name="user_dialog_description_add">Ви можете додати користувача тут. Усі теми для даного сервера використовуватимуть цього користувача.</string>
<string name="user_dialog_button_delete">Видалити користувача</string>
<string name="add_dialog_base_urls_dropdown_choose">Виберіть URL-адресу служби</string>
<string name="add_dialog_base_urls_dropdown_clear">Очистити URL-адресу служби</string>
<string name="detail_clear_dialog_permanently_delete">Видалити остаточно</string>
<string name="detail_delete_dialog_permanently_delete">Видалити остаточно</string>
<string name="detail_test_title">Тест: Ви можете встановити назву, якщо хочете.</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_instant_delivery_disabled">Миттєва доставка вимкнена</string>
<string name="detail_item_snack_deleted">Сповіщення видалено</string>
<string name="detail_item_snack_undo">Скасувати</string>
<string name="detail_item_menu_open">Відкрити файл</string>
<string name="detail_item_menu_delete">Видалити файл</string>
<string name="detail_item_menu_download">Завантажити файл</string>
<string name="detail_item_menu_copy_url_copied">URL-адресу скопійовано в буфер обміну</string>
<string name="detail_item_menu_copy_contents">Копіювати сповіщення</string>
<string name="detail_item_menu_copy_contents_copied">Сповіщення скопійовано в буфер обміну</string>
<string name="detail_item_saved_successfully">Збережено як \"%1$s\" у папці \"Завантаження\"</string>
<string name="detail_item_cannot_download">Не вдається відкрити або завантажити вкладений файл. Термін дії посилання закінчився, і локальний файл не знайдено.</string>
<string name="detail_item_cannot_open_not_found">Неможливо відкрити вкладення: файл, можливо, видалено, або жодна встановлена програма не може відкрити файл.</string>
<string name="detail_item_cannot_delete">Неможливо видалити вкладення: %1$s</string>
<string name="detail_item_download_info_not_downloaded">не завантажено</string>
<string name="detail_item_download_info_download_failed">не вдалося завантажити</string>
<string name="detail_item_download_info_download_failed_expired">не вдалося завантажити, термін дії посилання закінчився</string>
<string name="detail_item_download_info_download_failed_expires_x">не вдалося завантажити, термін дії посилання закінчився %1$s</string>
<string name="detail_menu_notifications_enabled">Сповіщення ввімкнено</string>
<string name="detail_menu_notifications_disabled_forever">Сповіщення вимкнено</string>
<string name="detail_menu_enable_instant">Увімкнути миттєву доставку</string>
<string name="detail_menu_disable_instant">Вимкніть миттєву доставку</string>
<string name="detail_menu_test">Надіслати тестове сповіщення</string>
<string name="detail_menu_copy_url">Копіювати адресу теми</string>
<string name="detail_menu_clear">Очистити всі сповіщення</string>
<string name="detail_menu_settings">Налаштування підписки</string>
<string name="detail_settings_title">Налаштування підписки</string>
<string name="share_title">Поділіться</string>
<string name="share_content_title">Попередній перегляд повідомлення</string>
<string name="share_content_text_hint">Додайте вміст, щоб поділитися тут</string>
<string name="share_content_image_text">З вами поділилися зображенням</string>
<string name="share_content_image_error">Не вдається прочитати зображення: %1$s</string>
<string name="share_suggested_topics">Пропоновані теми</string>
<string name="share_successful">Повідомлення опубліковано</string>
<string name="notification_dialog_title">Вимкнути сповіщення</string>
<string name="notification_dialog_cancel">Скасувати</string>
<string name="notification_dialog_save">Зберегти</string>
<string name="notification_dialog_enabled_toast_message">Сповіщення відновлено</string>
<string name="notification_dialog_muted_forever_toast_message">Сповіщення вимкнено</string>
<string name="notification_dialog_muted_until_toast_message">Сповіщення вимкнено до %1$s</string>
<string name="notification_dialog_1h">1 година</string>
<string name="notification_dialog_2h">2 години</string>
<string name="notification_popup_action_open">Відчинено</string>
<string name="notification_popup_action_download">Завантажити</string>
<string name="notification_popup_action_cancel">Скасувати</string>
<string name="notification_popup_file_download_successful">%1$s
\nФайл: %2$s, завантажено</string>
<string name="settings_title">Налаштування</string>
<string name="settings_notifications_muted_until_show_all">Показано всі сповіщення</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_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_high">високій</string>
<string name="settings_notifications_priority_max">макс</string>
<string name="settings_notifications_auto_download_title">Завантажити вкладення</string>
<string name="settings_notifications_auto_download_summary_always">Автоматичне завантаження всіх вкладень</string>
<string name="settings_notifications_auto_download_summary_never">Ніколи не завантажуйте вкладені файли автоматично</string>
<string name="settings_notifications_auto_download_always">Автоматичне завантаження всього</string>
<string name="settings_notifications_auto_download_500k">Якщо менше 500 кБ</string>
<string name="settings_notifications_auto_download_1m">Якщо менше 1 Мб</string>
<string name="settings_notifications_auto_download_5m">Якщо менше 5 Мб</string>
<string name="settings_notifications_auto_delete_summary_never">Ніколи автоматично не видаляйте сповіщення</string>
<string name="settings_notifications_auto_delete_summary_one_day">Автоматичне видалення сповіщень через один день</string>
<string name="settings_notifications_auto_delete_summary_three_months">Автоматичне видалення сповіщень через 3 місяці</string>
<string name="settings_notifications_auto_delete_three_days">Через 3 дні</string>
<string name="settings_notifications_auto_delete_one_week">Через тиждень</string>
<string name="settings_notifications_auto_delete_one_month">Через місяць</string>
<string name="settings_notifications_auto_delete_three_months">Через 3 міс</string>
<string name="user_dialog_title_add">Додати користувача</string>
<string name="settings_general_header">Загальний</string>
<string name="settings_general_default_base_url_message">Введіть кореневу URL-адресу свого сервера, щоб використовувати свій власний сервер як стандартний під час підписки на нові теми та/або спільного доступу до тем.</string>
<string name="settings_general_default_base_url_default_summary">%1$s (за умовчанням)</string>
<string name="settings_general_users_prefs_title">Користувачі</string>
<string name="settings_general_users_prefs_user_not_used">Не використовується жодною темою</string>
<string name="settings_general_users_prefs_user_add">Додайте користувачів</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_copied_url">Журнали завантажено та URL-адресу скопійовано</string>
<string name="settings_advanced_export_logs_error_uploading">Не вдалося завантажити журнали: %1$s</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">Не було відредаговано жодної теми/імена хостів. Може у вас немає підписки\?</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">ОК</string>
<string name="settings_advanced_clear_logs_title">Очистити журнали</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 через HTTP</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSockets</string>
<string name="settings_about_header">Про</string>
<string name="settings_about_version_title">Версія</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
<string name="settings_about_version_copied_to_clipboard_message">Скопійовано в буфер обміну</string>
<string name="detail_settings_notifications_instant_title">Миттєва доставка</string>
<string name="detail_settings_appearance_header">Зовнішній вигляд</string>
<string name="detail_settings_appearance_icon_set_summary">Установіть піктограму, яка відображатиметься в сповіщеннях</string>
<string name="detail_settings_appearance_icon_remove_title">Значок підписки (натисніть, щоб видалити)</string>
<string name="detail_settings_appearance_icon_remove_summary">Значок, який відображається в сповіщеннях для цієї теми</string>
<string name="detail_settings_appearance_icon_error_saving">Не вдалося зберегти значок: %1$s</string>
<string name="detail_settings_global_setting_title">Використовуйте глобальні налаштування</string>
<string name="user_dialog_title_edit">Редагувати користувача</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="settings_advanced_connection_protocol_summary_jsonhttp">Використовуйте потік JSON через HTTP для підключення до сервера. Цей метод перевірено в боях, але може споживати більше заряду батареї.</string>
<string name="channel_notifications_group_default_name">За замовчуванням</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Використання налаштувань за замовчуванням (звуки, \"Не турбувати\" тощо)</string>
<string name="detail_settings_notifications_open_channels_summary">Перевизначення режиму \"Не турбувати\" (DND), звуки тощо.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Продовжувати сповіщати</string>
<string name="main_menu_donate_title">Пожертвувати 💸</string>
<string name="settings_notifications_insistent_max_priority_title">Безперервне сповіщення для найвищого пріоритету</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Сповіщення з максимальним пріоритетом безперервно сповіщають, доки не будуть закриті</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Сповіщення з максимальним пріоритетом сповіщають лише один раз</string>
<string name="detail_settings_notifications_dedicated_channels_title">Користувацькі налаштування сповіщень</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Використання користувацьких налаштувань для цієї підписки</string>
<string name="detail_settings_notifications_open_channels_title">Налаштування параметрів сповіщень</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Сповіщати лише один раз</string>
<string name="detail_item_cannot_open_apk">Додаток більше не можна встановити. Натомість завантажуйте через браузер. Подробиці читайте у проблемі #531.</string>
<string name="settings_advanced_unifiedpush_title">Увімкнути UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy буде виступати в якості дистриб\'ютора UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy не буде виступати в ролі дистриб\'ютора UnifiedPush</string>
</resources> </resources>

View file

@ -0,0 +1,346 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="channel_notifications_min_name">Minimal ustuvorlik</string>
<string name="channel_notifications_low_name">Kam ustuvorlik</string>
<string name="channel_notifications_default_name">Standart ustuvorlik</string>
<string name="channel_notifications_high_name">Yuqori ustuvorlik</string>
<string name="channel_notifications_max_name">Maksimal ustuvorlik</string>
<string name="channel_notifications_group_default_name">Standart</string>
<string name="channel_subscriber_service_name">Obuna xizmati</string>
<string name="channel_subscriber_notification_title">Kiruvchi bildirishnomalar tinglanmoqda</string>
<string name="channel_subscriber_notification_instant_text">Darhol yuborish mavzulariga obuna boldik</string>
<string name="channel_subscriber_notification_instant_text_one">Darhol yuborish mavzusiga obuna boldik</string>
<string name="channel_subscriber_notification_instant_text_four">To\'rtta darhol yuborish mavzulariga obuna boldik</string>
<string name="channel_subscriber_notification_instant_text_five">Beshta darhol yuborish mavzulariga obuna boldik</string>
<string name="channel_subscriber_notification_instant_text_six">Oltita darhol yuborish mavzulariga obuna boldik</string>
<string name="channel_subscriber_notification_instant_text_more">%1$d ta darhol yuborish mavzulariga obuna boldik</string>
<string name="channel_subscriber_notification_noinstant_text">Mavzularga obuna boldik</string>
<string name="channel_subscriber_notification_noinstant_text_one">Bitta mavzuga obuna boldik</string>
<string name="channel_subscriber_notification_noinstant_text_two">Ikkita mavzuga obuna boldik</string>
<string name="channel_subscriber_notification_noinstant_text_three">Uchta mavzuga obuna boldik</string>
<string name="refresh_message_no_results">Hammasi yangilangan</string>
<string name="refresh_message_error">%1$d ta obunani yangilab bolmadi
\n
\n%2$s</string>
<string name="channel_subscriber_notification_noinstant_text_more">%1$d ta mavzuga obuna boldik</string>
<string name="refresh_message_error_one">Obunani yangilab bolmadi: %1$s</string>
<string name="main_action_bar_title">Obuna bolgan mavzular</string>
<string name="main_menu_notifications_enabled">Bildirishnomalar yoqilgan</string>
<string name="main_menu_notifications_disabled_forever">Bildirishnomalar ovozi ochirilgan</string>
<string name="main_menu_settings_title">Sozlamalar</string>
<string name="main_menu_report_bug_title">Xatolik haqida xabar berish</string>
<string name="main_menu_docs_title">Hujjatlarni oqish</string>
<string name="main_menu_rate_title">Ilovani baholang ⭐</string>
<string name="main_action_mode_menu_unsubscribe">Obunani bekor qilish</string>
<string name="main_action_mode_delete_dialog_message">Tanlangan mavzu(lar)ga obunani bekor qilib barcha bildirishnomalarni butunlay ochirib tashlaysizmi?</string>
<string name="main_action_mode_delete_dialog_permanently_delete">Butunlay ochirish</string>
<string name="main_item_status_text_one">%1$d ta bildirishnoma</string>
<string name="main_item_status_text_not_one">%1$d ta bildirishnomalar</string>
<string name="main_item_status_reconnecting">qayta ulanmoqda…</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string>
<string name="main_item_date_yesterday">kecha</string>
<string name="main_add_button_description">Obuna qoshish</string>
<string name="main_no_subscriptions_text">Sizda hali obuna yoqga oxshaydi.</string>
<string name="main_how_to_intro">Mavzu yaratish yoki unga obuna bolish uchun + belgisini bosing. Shundan song siz PUT yoki POST orqali xabarlarni yuborishda qurilmangizga bildirishnomalarni olasiz.</string>
<string name="main_how_to_link">Batafsil korsatmalar ntfy.sh saytida va hujjatlarda mavjud.</string>
<string name="main_unified_push_toast">Bu obuna %1$s tomonidan UnifiedPush orqali boshqariladi</string>
<string name="main_banner_battery_text">Bildirishnomalarni yetkazib berish bilan bogliq muammolarni oldini olish uchun ilovada batareya quvvatini optimallashtirish ochirilgan bolishi kerak.</string>
<string name="main_banner_battery_button_remind_later">Keyinroq sorang</string>
<string name="main_banner_battery_button_dismiss">Rad etish</string>
<string name="main_banner_battery_button_fix_now">Hozir tuzatish</string>
<string name="main_banner_websocket_text">WebSocketlarga otish serveringizga ulanishning tavsiya etilgan usuli bolib, batareya quvvatini oshirishi mumkin, lekin bu <a href="https://ntfy.sh/docs/config/#nginxapache2caddy">proksi-serveringizda qoshimcha sozlash</a>larni talab qiladi. Sozlamalarda ozgartirish mumkin.</string>
<string name="main_banner_websocket_button_remind_later">Keyinroq so\'rang</string>
<string name="main_banner_websocket_button_dismiss">Rad etish</string>
<string name="main_banner_websocket_button_enable_now">Hozir yoqish</string>
<string name="add_dialog_title">Mavzuga obuna bolish</string>
<string name="add_dialog_description_below">Mavzular parol bilan himoyalanmagan bolishi mumkin, shuning uchun taxmin qilish qiyin bolgan nomni tanlang. Obuna bolganingizdan song siz bildirishnomalarni PUT/POST qilishingiz mumkin.</string>
<string name="add_dialog_topic_name_hint">Mavzu nomi, masalan, phils_alerts</string>
<string name="add_dialog_use_another_server">Boshqa serverdan foydalanish</string>
<string name="add_dialog_instant_delivery">Darhol yuborish doze rejimida</string>
<string name="add_dialog_instant_delivery_description">Qurilma nofaol bolsa ham, xabarlar darhol yetkazilishini taminlaydi.</string>
<string name="add_dialog_foreground_description">Darhol yetkazish har doim %1$s dan boshqa hostlar uchun yoqilgan.</string>
<string name="add_dialog_button_cancel">Bekor qilish</string>
<string name="add_dialog_button_subscribe">Obuna bolish</string>
<string name="add_dialog_button_back">Orqaga</string>
<string name="add_dialog_button_login">Tizimga kirish</string>
<string name="add_dialog_error_connection_failed">Ulanish amalga oshmadi: %1$s</string>
<string name="add_dialog_login_title">Tizimga kirish talab qilinadi</string>
<string name="add_dialog_login_username_hint">Foydalanuvchi nomi</string>
<string name="add_dialog_login_password_hint">Parol</string>
<string name="add_dialog_login_new_user">Yangi foydalanuvchi</string>
<string name="add_dialog_base_urls_dropdown_choose">URL manzilini tanlang</string>
<string name="add_dialog_base_urls_dropdown_clear">URL manzilini tozalang</string>
<string name="detail_how_to_intro">Ushbu mavzu boyicha bildirishnomalarni yuborish uchun, mavzu URL manziliga PUT yoki POST sorov yuboring.</string>
<string name="detail_how_to_example">Misol (curl yordamida):<br/><tt>$ curl -d \"Salom\" %1$s</tt></string>
<string name="detail_how_to_link">Batafsil korsatmalar ntfy.sh saytida va hujjatlarda mavjud.</string>
<string name="detail_clear_dialog_message">Ushbu mavzudagi barcha bildirishnomalar ochirilsinmi?</string>
<string name="detail_clear_dialog_permanently_delete">Butunlay ochirish</string>
<string name="detail_delete_dialog_message">Ushbu mavzuga obunani bekor qilib, barcha qabul qilingan bildirishnomalar ochirilsinmi?</string>
<string name="detail_delete_dialog_cancel">Bekor qilish</string>
<string name="detail_test_title">Test: Agar xohlasangiz, sarlavha ornatishingiz mumkin.</string>
<string name="detail_test_message">Bu ntfy Android ilovasining sinov bildirishnomasidir. U %1$d darajadagi ustuvorlikka ega. Agar siz boshqasini yuborsangiz, u boshqacha korinishi mumkin.</string>
<string name="detail_test_message_error_too_large">Xabar yuborib bolmadi: biriktirma juda katta.</string>
<string name="detail_copied_to_clipboard_message">Xotiraga nusxa olindi</string>
<string name="detail_instant_delivery_enabled">Darhol yuborish yoqilgan</string>
<string name="detail_instant_delivery_disabled">Darhol yuborish ochirilgan</string>
<string name="detail_deep_link_subscribed_toast_message">%1$s mavzusiga obuna bolindi</string>
<string name="detail_item_tags">Teglar: %1$s</string>
<string name="detail_item_snack_deleted">Bildirishnoma ochirildi</string>
<string name="detail_item_menu_open">Faylni ochish</string>
<string name="detail_item_menu_delete">Faylni ochirish</string>
<string name="detail_item_menu_download">Faylni yuklab olish</string>
<string name="detail_item_menu_save_file">Faylni saqlash</string>
<string name="detail_item_menu_copy_url">URL manzilini nusxalash</string>
<string name="detail_item_menu_copy_url_copied">URL xotiraga nusxalandi</string>
<string name="detail_item_menu_copy_contents">Bildirishnomani nusxalash</string>
<string name="detail_item_saved_successfully">\"Yuklashlar\" jildida \"%1$s\" nomi bilan saqlandi</string>
<string name="detail_item_cannot_download">Biriktirmani ochib yoki yuklab bolmadi. Havola muddati eskirgan va fayl topilmadi.</string>
<string name="detail_item_cannot_open">Biriktirmani ochib bolmadi: %1$s</string>
<string name="detail_item_cannot_open_not_found">Biriktirmani ochib bolmadi: fayl ochirilgan bolishi mumkin yoki hech bir ornatilgan ilova faylni ocholmaydi.</string>
<string name="detail_item_cannot_open_apk">Ilovalarni boshqa ornatib bolmaydi. Buning orniga brauzer orqali yuklab oling. Tafsilotlar uchun #531 sonli muammoga qarang.</string>
<string name="detail_item_cannot_save">Biriktirma saqlanmadi: %1$s</string>
<string name="detail_item_cannot_delete">Biriktirmani ochirib bolmadi: %1$s</string>
<string name="detail_item_download_info_not_downloaded">yuklab olinmagan</string>
<string name="detail_item_download_info_not_downloaded_expired">yuklab olinmagan, havola eskirgan</string>
<string name="detail_item_download_info_not_downloaded_expires_x">yuklab olinmadi, muddati %1$s da tugaydi</string>
<string name="detail_item_download_info_downloading_x_percent">%1$d%% yuklab olindi</string>
<string name="detail_item_download_info_deleted">ochirildi</string>
<string name="detail_item_download_info_deleted_expired">ochirildi, havola eskirgan</string>
<string name="detail_item_download_info_deleted_expires_x">ochirildi, havola muddati %1$s da tugaydi</string>
<string name="detail_item_download_info_download_failed_expired">yuklash amalga oshmadi, havola eskirgan</string>
<string name="detail_item_download_info_download_failed_expires_x">yuklab olinmadi, havola muddati %1$s da tugaydi</string>
<string name="detail_menu_notifications_disabled_forever">Bildirishnomalar ovozi ochirildi</string>
<string name="detail_menu_notifications_disabled_until">Bildirishnomalar %1$s gacha ochirildi</string>
<string name="detail_menu_enable_instant">Darhol yuborishni yoqish</string>
<string name="detail_menu_disable_instant">Darhol yuborishni ochirish</string>
<string name="detail_menu_test">Sinov bildirishnomasini yuborish</string>
<string name="detail_menu_copy_url">Mavzu manzilini nusxalash</string>
<string name="detail_menu_settings">Obuna sozlamalari</string>
<string name="detail_menu_unsubscribe">Obunani bekor qilish</string>
<string name="detail_action_mode_menu_copy">Nusxalash</string>
<string name="detail_action_mode_menu_delete">Ochirish</string>
<string name="detail_action_mode_delete_dialog_message">Tanlangan bildirishnoma(lar) butunlay ochirilsinmi?</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">Butunlay ochirish</string>
<string name="detail_action_mode_delete_dialog_cancel">Bekor qilish</string>
<string name="detail_settings_title">Obuna sozlamalari</string>
<string name="share_menu_send">Ulashish</string>
<string name="share_content_title">Xabarni oldindan korish</string>
<string name="share_content_text_hint">Ulashish uchun kontent qoshish</string>
<string name="share_content_image_text">Sizga ulashilgan rasm</string>
<string name="share_content_image_error">Rasmni oqib bolmaydi: %1$s</string>
<string name="share_content_file_text">Sizga ulashilgan fayl</string>
<string name="share_content_file_error">Fayl malumotlarini oqib bolmadi: %1$s</string>
<string name="share_suggested_topics">Taklif etilgan mavzular</string>
<string name="notification_dialog_cancel">Bekor qilish</string>
<string name="notification_dialog_save">Saqlash</string>
<string name="notification_dialog_enabled_toast_message">Bildirishnomalar davom ettirildi</string>
<string name="notification_dialog_1h">1 soat</string>
<string name="notification_popup_action_open">Ochish</string>
<string name="notification_popup_action_browse">Korib chiqish</string>
<string name="notification_popup_action_download">Yuklash</string>
<string name="notification_popup_action_cancel">Bekor qilish</string>
<string name="notification_popup_file">%1$s
\nFayl: %2$s</string>
<string name="notification_popup_file_downloading">Yuklab olinmoqda %1$s, %2$d%%
\n%3$s</string>
<string name="notification_popup_user_action_failed">%1$s bajarilmadi: %2$s</string>
<string name="settings_title">Sozlamalar</string>
<string name="settings_notifications_header">Bildirishnomalar</string>
<string name="settings_notifications_muted_until_title">Bildirishnomalarni ochirish</string>
<string name="settings_notifications_muted_until_show_all">Barcha bildirishnomalar korsatilmoqda</string>
<string name="settings_notifications_muted_until_forever">Davom etilgunga qadar bildirishnomalar ochirildi</string>
<string name="settings_notifications_muted_until_x">Bildirishnomalar %1$s gacha ochirildi</string>
<string name="settings_notifications_min_priority_summary_any">Barcha bildirishnomalar korsatilmoqda</string>
<string name="settings_notifications_min_priority_summary_x_or_higher">Agar ustuvorlik %1$d (%2$s) yoki undan yuqori bolsa, bildirishnomalarni korsatish</string>
<string name="settings_notifications_min_priority_min">Har qanday ustuvorlik</string>
<string name="settings_notifications_min_priority_low">Kam ustuvorlik va undan yuqori</string>
<string name="settings_notifications_min_priority_high">Yuqori ustuvorlik va undan yuqori</string>
<string name="settings_notifications_min_priority_max">Faqat maksimal ustuvorlik</string>
<string name="settings_notifications_priority_min">min</string>
<string name="settings_notifications_priority_low">past</string>
<string name="settings_notifications_priority_default">standart</string>
<string name="settings_notifications_priority_high">yuqori</string>
<string name="settings_notifications_priority_max">maks</string>
<string name="settings_notifications_channel_prefs_title">Kanal sozlamalari</string>
<string name="settings_notifications_channel_prefs_summary">Bezovta qilinmasin (DND) rejimi, tovushlar va h.k.</string>
<string name="settings_notifications_auto_download_summary_always">Barcha biriktirmalarni avtomatik yuklab olish</string>
<string name="settings_notifications_auto_download_summary_never">Qoshimchalar hech qachon avtomatik yuklab olinmasin</string>
<string name="settings_notifications_auto_download_summary_smaller_than_x">%1$s gacha bolgan biriktirmalarni avtomatik yuklab olish</string>
<string name="settings_notifications_auto_download_never">Hech qachon biror narsa avtomatik yuklab olinmasin</string>
<string name="settings_notifications_auto_download_always">Hamma narsani avtomatik yuklab olish</string>
<string name="settings_notifications_auto_download_100k">100 kB dan past bolsa</string>
<string name="settings_notifications_auto_download_1m">1 MB dan past bolsa</string>
<string name="settings_notifications_auto_download_5m">5 MB dan past bolsa</string>
<string name="settings_notifications_auto_download_10m">10 MB dan past bolsa</string>
<string name="settings_notifications_auto_download_50m">50 MB dan past bolsa</string>
<string name="settings_notifications_auto_delete_summary_never">Hech qachon bildirishnomalar avtomatik ochirib tashlanmasin</string>
<string name="settings_notifications_auto_delete_summary_one_day">Bir kundan keyin bildirishnomalarni avtomatik ochirish</string>
<string name="settings_notifications_auto_delete_summary_one_month">Bir oydan keyin bildirishnomalarni avtomatik ochirish</string>
<string name="settings_notifications_auto_delete_never">Hech qachon</string>
<string name="settings_notifications_auto_delete_one_day">Bir kundan keyin</string>
<string name="settings_notifications_auto_delete_three_days">3 kundan keyin</string>
<string name="settings_notifications_auto_delete_one_week">Bir haftadan keyin</string>
<string name="settings_notifications_auto_delete_one_month">Bir oydan keyin</string>
<string name="settings_notifications_auto_delete_three_months">3 oydan keyin</string>
<string name="settings_notifications_insistent_max_priority_title">Yuqori ustuvorlik haqida ogohlantirish</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Maksimal ustuvor bildirishnomalar yopilmaguncha doimiy ravishda ogohlantiriladi</string>
<string name="settings_general_header">Umumiy</string>
<string name="settings_general_default_base_url_title">Standart server</string>
<string name="settings_general_default_base_url_message">Yangi mavzularga obuna bolish va/yoki mavzularga ulashishda oz serveringizdan standart foydalanish uchun serveringizning asosiy URL manzilini kiriting.</string>
<string name="settings_general_default_base_url_default_summary">%1$s (standart)</string>
<string name="settings_general_users_title">Foydalanuvchilarni boshqarish</string>
<string name="settings_general_users_summary">Himoyalangan mavzular uchun foydalanuvchilarni qoshish/ochirish</string>
<string name="settings_general_users_prefs_user_not_used">Hech qanday mavzuda foydalanilmaydi</string>
<string name="settings_general_users_prefs_user_used_by_one">%1$s mavzusida foydalanilgan</string>
<string name="settings_general_users_prefs_user_used_by_many">%1$s mavzularida foydalaniladi</string>
<string name="settings_general_users_prefs_user_add">Foydalanuvchilarni qoshish</string>
<string name="settings_general_users_prefs_user_add_title">Yangi foydalanuvchi qoshish</string>
<string name="settings_general_users_prefs_user_add_summary">Yangi server uchun yangi foydalanuvchi yaratish</string>
<string name="settings_general_dark_mode_title">Qorongi rejim</string>
<string name="settings_general_dark_mode_summary_system">Standart tizimdan foydalanish</string>
<string name="settings_general_dark_mode_summary_light">Kunduzgi rejim yoqilgan</string>
<string name="settings_general_dark_mode_entry_light">Kunduzgi rejim</string>
<string name="settings_general_dark_mode_entry_dark">Qorongi rejim</string>
<string name="settings_backup_restore_header">Zaxiralash va Tiklash</string>
<string name="settings_backup_restore_backup_title">Faylga zaxiralash</string>
<string name="settings_backup_restore_backup_summary">Konfiguratsiya, bildirishnomalar va foydalanuvchilarni eksport qilish</string>
<string name="settings_backup_restore_backup_entry_everything">Hamma narsa</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">Foydalanuvchilardan tashqari hamma narsa</string>
<string name="settings_backup_restore_restore_title">Fayldan tiklash</string>
<string name="settings_backup_restore_restore_summary">Konfiguratsiya, bildirishnomalar va foydalanuvchilarni import qilish</string>
<string name="settings_advanced_broadcast_title">Xabarlarni uzatish</string>
<string name="settings_advanced_broadcast_summary_enabled">Ilovalar kiruvchi bildirishnomalarni translyatsiya sifatida qabul qilishi mumkin</string>
<string name="settings_advanced_unifiedpush_title">UnifiedPush-ni yoqing</string>
<string name="settings_advanced_export_logs_summary">Loglarni xotiraga nusxalash yoki nopaste.net saytiga yuklash (ntfy muallifiga tegishli). Xost nomlari va mavzular senzura qilinishi mumkin, bildirishnomalar hech qachon bo\'lmaydi.</string>
<string name="settings_advanced_export_logs_entry_copy_original">Xotiraga nusxalash</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">Xotiraga nusxalash (senzura qilib)</string>
<string name="settings_advanced_export_logs_entry_upload_original">Havolani yuklash va nusxalash</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">Havolani yuklash va nusxalash (senzura qilib)</string>
<string name="settings_advanced_export_logs_copied_logs">Loglar xotiraga nusxalandi</string>
<string name="settings_advanced_export_logs_uploading">Log yuklanmoqda…</string>
<string name="settings_advanced_export_logs_scrub_dialog_button_ok">OK</string>
<string name="settings_advanced_clear_logs_deleted_toast">Loglar ochirildi</string>
<string name="settings_advanced_connection_protocol_title">Ulanish protokoli</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">Serverga ulanish uchun HTTP orqali JSON oqimidan foydalaning. Bu usul jangovar sinovdan otgan, lekin koproq batareyani istemol qilishi mumkin.</string>
<string name="settings_advanced_connection_protocol_summary_ws">Serverga ulanish uchun WebSocketlardan foydalaning. Bu tavsiya etilgan usul, lekin proksi-serveringizda qoshimcha sozlash talab qilinishi mumkin.</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">HTTP orqali JSON oqimi</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSocketlar</string>
<string name="settings_about_header">Haqida</string>
<string name="settings_about_version_title">Talqin</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
<string name="settings_about_version_copied_to_clipboard_message">Nusxalandi</string>
<string name="detail_settings_notifications_instant_title">Darhol yuborish</string>
<string name="detail_settings_notifications_instant_summary_on">Bildirishnomalar darhol yetkaziladi. Oldindan xizmat korsatishni talab qiladi va koproq batareya sarflaydi.</string>
<string name="detail_settings_notifications_instant_summary_off">Bildirishnomalar Firebase yordamida yetkaziladi. Yetkazib berish kechikishi mumkin, lekin batareyani kamroq sarflaydi.</string>
<string name="detail_settings_notifications_dedicated_channels_title">Moslashtirilgan bildirishnoma sozlamalari</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Standart sozlamalardan foydalanish (tovushlar, Bezovta qilinmasin rejimini bekor qilish va h.k.)</string>
<string name="detail_settings_notifications_open_channels_title">Bildirishnoma sozlamalarini sozlash</string>
<string name="detail_settings_notifications_open_channels_summary">Bezovta qilinmasin (DND) rejimi, tovushlar va h.k.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Ogohlantirishni davom etish</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Faqat bir marta ogohlantirish</string>
<string name="detail_settings_appearance_header">Tashqi korinish</string>
<string name="detail_settings_appearance_icon_set_title">Obuna belgisi</string>
<string name="detail_settings_appearance_icon_set_summary">Bildirishnomalarda korsatiladigan belgini ornatish</string>
<string name="channel_subscriber_notification_noinstant_text_four">To\'rtta mavzuga obuna boldik</string>
<string name="channel_subscriber_notification_noinstant_text_six">Oltita mavzuga obuna boldik</string>
<string name="channel_subscriber_notification_instant_text_two">Ikkita darhol yuborish mavzulariga obuna boldik</string>
<string name="refresh_message_result">%1$d ta bildirishnoma qabul qilindi</string>
<string name="channel_subscriber_notification_instant_text_three">Uchta darhol yuborish mavzulariga obuna boldik</string>
<string name="main_menu_notifications_disabled_until">Bildirishnomalar %1$s gacha ochirilgan</string>
<string name="channel_subscriber_notification_noinstant_text_five">Beshta mavzuga obuna boldik</string>
<string name="main_menu_donate_title">Xayriya qiling 💸</string>
<string name="main_action_mode_delete_dialog_cancel">Bekor qilish</string>
<string name="add_dialog_use_another_server_description">Boshqa serverlardan mavzularga obuna bolish uchun quyida URL manzillarini kiriting.</string>
<string name="add_dialog_login_description">Ushbu mavzu tizimga kirishni talab qiladi. Iltimos, foydalanuvchi nomi va parolni kiriting.</string>
<string name="add_dialog_login_error_not_authorized">Tizimga kirishda xatolik yuz berdi. %1$s foydalanuvchiga ruxsat berilmagan.</string>
<string name="detail_no_notifications_text">Siz hali bu mavzu boyicha hech qanday bildirishnoma olmagansiz.</string>
<string name="detail_clear_dialog_cancel">Bekor qilish</string>
<string name="detail_delete_dialog_permanently_delete">Butunlay ochirish</string>
<string name="share_topic_title">Birovga ulashish</string>
<string name="detail_item_snack_undo">Qaytarish</string>
<string name="detail_item_menu_cancel">Yuklashni bekor qilish</string>
<string name="detail_item_menu_copy_contents_copied">Bildirishnoma xotiraga nusxalandi</string>
<string name="detail_item_download_failed">Biriktirma yuklab olinmadi: %1$s</string>
<string name="detail_item_download_info_download_failed">yuklab bolmadi</string>
<string name="detail_menu_clear">Barcha bildirishnomalarni tozalash</string>
<string name="share_title">Ulashish</string>
<string name="detail_test_message_error">Xabar yuborib bolmadi: %1$s</string>
<string name="detail_menu_notifications_enabled">Bildirishnomalar yoqilgan</string>
<string name="detail_test_message_error_unauthorized_anon">Xabar yuborib bolmadi: Anonim nashrga ruxsat berilmaydi.</string>
<string name="detail_test_message_error_unauthorized_user">Xabar yuborib bolmadi: \"%1$s\" foydalanuvchisiga ruxsat berilmagan.</string>
<string name="detail_item_cannot_open_url">URL manzilini ochib bolmadi: %1$s</string>
<string name="share_successful">Xabar yuborildi</string>
<string name="notification_dialog_title">Bildirishnomalar ovozini ochirish</string>
<string name="notification_dialog_muted_forever_toast_message">Bildirishnomalar ovozi ochirildi</string>
<string name="notification_dialog_muted_until_toast_message">Bildirishnomalar %1$s gacha ochirildi</string>
<string name="notification_dialog_show_all">Barcha bildirishnomalarni korsatish</string>
<string name="notification_dialog_30min">30 daqiqa</string>
<string name="notification_dialog_2h">2 soat</string>
<string name="notification_dialog_8h">8 soat</string>
<string name="notification_dialog_forever">Davom etgunga qadar</string>
<string name="notification_dialog_tomorrow">Ertaga qadar</string>
<string name="notification_popup_file_download_successful">%1$s
\nFayl: %2$s, yuklab olindi</string>
<string name="notification_popup_file_download_failed">%1$s
\nFayl: %2$s, yuklab olinmadi</string>
<string name="settings_notifications_min_priority_title">Minimum ustuvorlik</string>
<string name="settings_notifications_min_priority_summary_max">Agar ustuvorlik 5 (maksimal) bolsa, bildirishnomalarni korsatish</string>
<string name="settings_notifications_min_priority_default">Standart ustuvorlik va undan yuqori</string>
<string name="settings_notifications_auto_download_title">Biriktirmalarni yuklash</string>
<string name="settings_notifications_auto_download_500k">500 kB dan past bolsa</string>
<string name="settings_notifications_auto_delete_title">Bildirishnomalarni ochirib tashlash</string>
<string name="settings_backup_restore_backup_entry_settings_only">Faqat sozlamalar</string>
<string name="settings_general_dark_mode_summary_dark">Tungi rejim yoqilgan. Siz vampirmisiz?</string>
<string name="settings_general_dark_mode_entry_system">Tizim standartidan foydalanish</string>
<string name="settings_notifications_auto_delete_summary_three_days">3 kundan keyin bildirishnomalarni avtomatik ochirish</string>
<string name="settings_backup_restore_backup_successful">Zaxira yaratildi</string>
<string name="settings_advanced_broadcast_summary_disabled">Ilovalar bildirishnomalarni translyatsiya sifatida qabul qila olmaydi</string>
<string name="settings_advanced_record_logs_summary_enabled">Qurilmaga qayd qilinmoqda (1000 tagacha yozuvlar)…</string>
<string name="settings_notifications_auto_delete_summary_one_week">Bir haftadan song bildirishnomalarni avtomatik ochirish</string>
<string name="settings_backup_restore_backup_failed">Zaxiralash amalga oshmadi: %1$s</string>
<string name="settings_notifications_auto_delete_summary_three_months">3 oydan keyin bildirishnomalarni avtomatik ochirish</string>
<string name="settings_backup_restore_restore_successful">Qayta tiklash muvaffaqiyatli</string>
<string name="settings_backup_restore_restore_failed">Qayta tiklash amalga oshmadi: %1$s</string>
<string name="settings_advanced_header">Murakkab</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy UnifiedPush distribyutori sifatida ishlaydi</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Maksimal ustuvor bildirishnomalar faqat bir marta ogohlantiriladi</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy UnifiedPush distribyutori sifatida ishlamaydi</string>
<string name="settings_general_users_prefs_title">Foydalanuvchilar</string>
<string name="settings_advanced_record_logs_title">Loglarni yozib olish</string>
<string name="settings_advanced_record_logs_summary_disabled">Muammolarni aniqlash/ulashish uchun loggingni yoqish.</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Ushbu obuna uchun maxsus sozlamalardan foydalanish</string>
<string name="detail_settings_appearance_icon_remove_title">Obuna belgisi (olib tashlash uchun bosing)</string>
<string name="detail_settings_appearance_icon_remove_summary">Ushbu mavzu boyicha bildirishnomalarda korsatilgan belgi</string>
<string name="detail_settings_appearance_icon_error_saving">Belgini saqlab bolmadi: %1$s</string>
<string name="detail_settings_appearance_display_name_message">Ushbu obuna uchun maxsus korsatiladigan nomni ornating. Standart qoldirish uchun bosh qoldiring (%1$s).</string>
<string name="user_dialog_title_edit">Foydalanuvchini tahrirlash</string>
<string name="user_dialog_description_add">Siz bu yerga foydalanuvchi qoshishingiz mumkin. Berilgan server uchun barcha mavzular ushbu foydalanuvchidan foydalanadi.</string>
<string name="settings_advanced_export_logs_title">Loglarni nusxalash/yuklash</string>
<string name="settings_advanced_export_logs_copied_url">Loglar yuklandi va URL manzilidan nusxa olindi</string>
<string name="settings_advanced_export_logs_error_uploading">Loglarni yuklab bolmadi: %1$s</string>
<string name="settings_advanced_clear_logs_title">Loglarni tozalash</string>
<string name="detail_settings_appearance_display_name_title">Korsatiladigan ism</string>
<string name="user_dialog_description_edit">Tanlangan foydalanuvchi uchun foydalanuvchi nomi/parolni tahrirlashingiz yoki uni ochirishingiz mumkin.</string>
<string name="user_dialog_base_url_hint">Xizmat URL manzili</string>
<string name="settings_advanced_export_logs_scrub_dialog_text">Ushbu mavzular/xost nomlari meva nomlari bilan almashtirildi, shuning uchun siz logni tashvishlanmasdan baham korishingiz mumkin:
\n
\n%1$s
\n
\nParollar tozalangan, ammo bu erda korsatilmagan.</string>
<string name="user_dialog_username_hint">Foydalanuvchi nomi</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (standart)</string>
<string name="user_dialog_password_hint_add">Parol</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">Hech qanday mavzu/xost nomlari tahrir qilinmadi. Balki sizda obuna yoqdir?</string>
<string name="detail_settings_about_topic_url_title">Mavzu manzili</string>
<string name="user_dialog_password_hint_edit">Parol (bosh qoldirilgan bo\'lsa, ozgartirilmagan)</string>
<string name="detail_settings_global_setting_title">Global sozlamalardan foydalanish</string>
<string name="user_dialog_button_add">Foydalanuvchi qoshish</string>
<string name="detail_settings_global_setting_suffix">global sozlamalardan foydalanilmoqda</string>
<string name="user_dialog_button_cancel">Bekor qilish</string>
<string name="settings_advanced_clear_logs_summary">Oldin yozilgan loglarni ochirib tashlang va qaytadan boshlang</string>
<string name="detail_settings_about_header">Haqida</string>
<string name="user_dialog_button_delete">Foydalanuvchini ochirish</string>
<string name="user_dialog_title_add">Foydalanuvchi qoshish</string>
<string name="user_dialog_button_save">Saqlash</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">Buferga nusxalandi</string>
</resources>

View file

@ -1,2 +1,26 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources></resources> <resources>
<string name="channel_notifications_low_name">Ưu tiên thấp</string>
<string name="add_dialog_login_password_hint">Mật khẩu</string>
<string name="add_dialog_login_username_hint">Tên tài khoản</string>
<string name="add_dialog_login_description">Chủ đề này cần đăng nhập để truy cập. Vui lòng nhập tên tài khoản và mật khẩu.</string>
<string name="user_dialog_button_add">Thêm người dùng</string>
<string name="add_dialog_login_error_not_authorized">Đăng nhập thất bại. Không xác thực được tài khoản %1$s.</string>
<string name="user_dialog_description_edit">Bạn có thể chỉnh sửa tên tài khoản hoặc mật khẩu của người dùng này, hoặc xóa người dùng này khỏi hệ thống.</string>
<string name="user_dialog_button_save">Lưu</string>
<string name="user_dialog_password_hint_add">Mật khẩu</string>
<string name="add_dialog_topic_name_hint">Tên chủ đề, ví dụ: phils_alerts</string>
<string name="user_dialog_button_delete">Xóa người dùng</string>
<string name="user_dialog_button_cancel">Hủy</string>
<string name="add_dialog_use_another_server">Sử dụng máy chủ khác</string>
<string name="user_dialog_password_hint_edit">Mật khẩu (không đổi nếu để trống)</string>
<string name="add_dialog_title">Theo dõi chủ đề</string>
<string name="user_dialog_username_hint">Tên tài khoản</string>
<string name="channel_notifications_min_name">Ưu tiên thấp nhất</string>
<string name="channel_notifications_max_name">Ưu tiên cao nhất</string>
<string name="channel_notifications_group_default_name">Mặc định</string>
<string name="channel_subscriber_service_name">Dịch vụ thông báo</string>
<string name="channel_notifications_default_name">Mặc định</string>
<string name="channel_notifications_high_name">Ưu tiên cao</string>
<string name="channel_subscriber_notification_title">Chờ thông báo</string>
</resources>

View file

@ -18,7 +18,7 @@
<string name="main_action_mode_delete_dialog_cancel">取消</string> <string name="main_action_mode_delete_dialog_cancel">取消</string>
<string name="main_item_status_reconnecting">正在重新连接……</string> <string name="main_item_status_reconnecting">正在重新连接……</string>
<string name="main_item_date_yesterday">昨天</string> <string name="main_item_date_yesterday">昨天</string>
<string name="main_item_status_unified_push">%1$s一推送)</string> <string name="main_item_status_unified_push">%1$s一推送)</string>
<string name="main_how_to_link">详细的说明请见 ntfy.sh 和帮助文档。</string> <string name="main_how_to_link">详细的说明请见 ntfy.sh 和帮助文档。</string>
<string name="main_unified_push_toast">此通知由 %1$s 通过 UnifiedPush 管理</string> <string name="main_unified_push_toast">此通知由 %1$s 通过 UnifiedPush 管理</string>
<string name="main_banner_battery_text">请关闭对本应用的电量优化以避免通知推送问题。</string> <string name="main_banner_battery_text">请关闭对本应用的电量优化以避免通知推送问题。</string>
@ -69,7 +69,7 @@
<string name="detail_test_message_error">无法发送消息:%1$s</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_anon">无法发送消息:主题禁止匿名发布。</string>
<string name="detail_test_message_error_too_large">无法发送消息:附件体积过大。</string> <string name="detail_test_message_error_too_large">无法发送消息:附件体积过大。</string>
<string name="detail_copied_to_clipboard_message">复制到剪贴板</string> <string name="detail_copied_to_clipboard_message">复制到剪贴板</string>
<string name="detail_instant_delivery_enabled">实时推送已开启</string> <string name="detail_instant_delivery_enabled">实时推送已开启</string>
<string name="detail_instant_delivery_disabled">实时推送已关闭</string> <string name="detail_instant_delivery_disabled">实时推送已关闭</string>
<string name="detail_item_tags">标签:%1$s</string> <string name="detail_item_tags">标签:%1$s</string>
@ -139,11 +139,11 @@
<string name="notification_dialog_title">暂停通知</string> <string name="notification_dialog_title">暂停通知</string>
<string name="notification_dialog_muted_forever_toast_message">通知已暂停</string> <string name="notification_dialog_muted_forever_toast_message">通知已暂停</string>
<string name="notification_popup_action_download">下载</string> <string name="notification_popup_action_download">下载</string>
<string name="channel_notifications_min_name">通知 (最低优先级)</string> <string name="channel_notifications_min_name">最低优先级</string>
<string name="channel_notifications_low_name">通知 (低优先级)</string> <string name="channel_notifications_low_name">低优先级</string>
<string name="channel_notifications_default_name">通知 (默认优先级)</string> <string name="channel_notifications_default_name">默认优先级</string>
<string name="channel_notifications_high_name">通知 (高优先级)</string> <string name="channel_notifications_high_name">高优先级</string>
<string name="channel_notifications_max_name">通知 (最高优先级)</string> <string name="channel_notifications_max_name">最高优先级</string>
<string name="channel_subscriber_service_name">订阅服务</string> <string name="channel_subscriber_service_name">订阅服务</string>
<string name="channel_subscriber_notification_title">正在监听通知</string> <string name="channel_subscriber_notification_title">正在监听通知</string>
<string name="channel_subscriber_notification_noinstant_text">已订阅主题</string> <string name="channel_subscriber_notification_noinstant_text">已订阅主题</string>
@ -219,7 +219,7 @@
<string name="settings_general_users_prefs_user_add_title">添加新用户</string> <string name="settings_general_users_prefs_user_add_title">添加新用户</string>
<string name="settings_general_users_prefs_user_add_summary">为新服务器创建新用户</string> <string name="settings_general_users_prefs_user_add_summary">为新服务器创建新用户</string>
<string name="settings_general_dark_mode_title">暗色模式</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_system">使用系统默认</string>
<string name="settings_general_dark_mode_entry_dark">暗色模式</string> <string name="settings_general_dark_mode_entry_dark">暗色模式</string>
<string name="settings_general_dark_mode_summary_light">亮色模式已启用</string> <string name="settings_general_dark_mode_summary_light">亮色模式已启用</string>
<string name="settings_backup_restore_backup_title">备份到文件</string> <string name="settings_backup_restore_backup_title">备份到文件</string>
@ -258,7 +258,7 @@
<string name="settings_general_dark_mode_entry_light">亮色模式</string> <string name="settings_general_dark_mode_entry_light">亮色模式</string>
<string name="settings_general_users_prefs_user_used_by_one">在主题 %1$s 使用</string> <string name="settings_general_users_prefs_user_used_by_one">在主题 %1$s 使用</string>
<string name="settings_general_dark_mode_summary_dark">暗色模式已启用。您是吸血鬼吗?</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_system">使用系统默认值</string>
<string name="settings_advanced_clear_logs_summary">删除以前的日志并重新来过</string> <string name="settings_advanced_clear_logs_summary">删除以前的日志并重新来过</string>
<string name="user_dialog_title_add">添加用户</string> <string name="user_dialog_title_add">添加用户</string>
<string name="user_dialog_title_edit">编辑用户</string> <string name="user_dialog_title_edit">编辑用户</string>
@ -271,7 +271,7 @@
<string name="settings_advanced_clear_logs_title">清除日志</string> <string name="settings_advanced_clear_logs_title">清除日志</string>
<string name="settings_advanced_clear_logs_deleted_toast">日志已删除</string> <string name="settings_advanced_clear_logs_deleted_toast">日志已删除</string>
<string name="settings_advanced_header">高级</string> <string name="settings_advanced_header">高级</string>
<string name="settings_advanced_record_logs_summary_disabled">记录日志以便调试错误</string> <string name="settings_advanced_record_logs_summary_disabled">记录日志以便稍后分享调试故障</string>
<string name="settings_advanced_export_logs_title">复制 / 上传日志</string> <string name="settings_advanced_export_logs_title">复制 / 上传日志</string>
<string name="settings_advanced_export_logs_scrub_dialog_text">以下主题/域名已被替换为水果名称,您可以放心分享日志: <string name="settings_advanced_export_logs_scrub_dialog_text">以下主题/域名已被替换为水果名称,您可以放心分享日志:
\n \n
@ -324,4 +324,23 @@
<string name="detail_settings_appearance_display_name_default_summary">%1$s (默认)</string> <string name="detail_settings_appearance_display_name_default_summary">%1$s (默认)</string>
<string name="add_dialog_base_urls_dropdown_clear">清除服务 URL</string> <string name="add_dialog_base_urls_dropdown_clear">清除服务 URL</string>
<string name="main_banner_websocket_button_enable_now">马上开启</string> <string name="main_banner_websocket_button_enable_now">马上开启</string>
<string name="detail_settings_about_header">关于</string>
<string name="detail_settings_about_topic_url_title">主题 URL</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">已复制到剪贴板</string>
<string name="main_menu_donate_title">捐赠 💸</string>
<string name="detail_item_cannot_open_apk">无法再安装应用。 请通过浏览器下载。 有关详细信息,请参阅问题 #531。</string>
<string name="channel_notifications_group_default_name">默认</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">持续以最高优先级通知进行提醒,直至取消</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">对这个订阅使用自定义通知</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">使用默认设置(声音、“勿扰模式”绕过等)</string>
<string name="detail_settings_notifications_open_channels_summary">“勿扰模式”绕过、声音等.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">持续提醒</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">只提醒一次</string>
<string name="detail_settings_notifications_dedicated_channels_title">自定义通知设置</string>
<string name="settings_notifications_insistent_max_priority_title">持续以最高优先级提醒</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">最高优先级通知,但只提醒一次</string>
<string name="detail_settings_notifications_open_channels_title">配置通知设置</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy 不再会作为 UnifiedPush 的一个分发器</string>
<string name="settings_advanced_unifiedpush_title">启用 UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy 将作为 UnifiedPush 的一个分发器</string>
</resources> </resources>

View file

@ -1,23 +1,23 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="channel_subscriber_notification_noinstant_text_six">已訂閱6個主題</string> <string name="channel_subscriber_notification_noinstant_text_six">已訂閱 6 個主題</string>
<string name="channel_notifications_default_name">通知(預設優先)</string> <string name="channel_notifications_default_name">預設優先</string>
<string name="main_menu_report_bug_title">回報bug</string> <string name="main_menu_report_bug_title">問題回報</string>
<string name="channel_subscriber_notification_title">監聽傳入通知</string> <string name="channel_subscriber_notification_title">正在接收通知</string>
<string name="channel_subscriber_notification_instant_text">已訂閱即時推送主題</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_one">已訂閱 1 個即時推送主題</string>
<string name="channel_subscriber_notification_instant_text_two">已訂閱2個即時推送主題</string> <string name="channel_subscriber_notification_instant_text_two">已訂閱 2 個即時推送主題</string>
<string name="channel_subscriber_notification_instant_text_four">已訂閱4個即時推送主題</string> <string name="channel_subscriber_notification_instant_text_four">已訂閱 4 個即時推送主題</string>
<string name="channel_subscriber_notification_instant_text_five">已訂閱5個即時推送主題</string> <string name="channel_subscriber_notification_instant_text_five">已訂閱 5 個即時推送主題</string>
<string name="channel_subscriber_notification_instant_text_six">已訂閱6個即時推送主題</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_instant_text_more">已訂閱 %1$d 個即時推送主題</string>
<string name="channel_subscriber_notification_noinstant_text">已訂閱主題</string> <string name="channel_subscriber_notification_noinstant_text">已訂閱主題</string>
<string name="refresh_message_result">收到%1$d個通知</string> <string name="refresh_message_result">收到 %1$d 個通知</string>
<string name="refresh_message_no_results">已同步到最新</string> <string name="refresh_message_no_results">已同步到最新</string>
<string name="refresh_message_error">有%1$d個訂閱無法更新 <string name="refresh_message_error"> %1$d 個訂閱無法更新
\n \n
\n%2$s</string> \n%2$s</string>
<string name="refresh_message_error_one">訂閱無法更新:%1$s</string> <string name="refresh_message_error_one">訂閱無法更新 %1$s</string>
<string name="main_action_bar_title">已訂閱主題</string> <string name="main_action_bar_title">已訂閱主題</string>
<string name="main_menu_notifications_enabled">通知已開啟</string> <string name="main_menu_notifications_enabled">通知已開啟</string>
<string name="main_menu_notifications_disabled_forever">通知已靜音</string> <string name="main_menu_notifications_disabled_forever">通知已靜音</string>
@ -27,16 +27,16 @@
<string name="main_action_mode_delete_dialog_message">取消訂閱已選取的主題且永久刪除所有通知?</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_permanently_delete">永久刪除</string>
<string name="main_action_mode_delete_dialog_cancel">取消</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_one">%1$d 個通知</string>
<string name="main_item_status_text_not_one">%1$d個通知</string> <string name="main_item_status_text_not_one">%1$d 個通知</string>
<string name="main_item_date_yesterday">昨天</string> <string name="main_item_date_yesterday">昨天</string>
<string name="main_add_button_description">新增訂閱</string> <string name="main_add_button_description">新增訂閱</string>
<string name="main_no_subscriptions_text">看來你還沒有訂閱任何主題。</string> <string name="main_no_subscriptions_text">看來你還沒有訂閱任何主題。</string>
<string name="main_how_to_intro">點擊 + 來新增或訂閱一個主題。當透過 PUT 或 POST 來發送訊息你將會接收到通知。</string> <string name="main_how_to_intro">點擊 + 來新增或訂閱一個主題。當透過 PUT 或 POST 來發送訊息你將會接收到通知。</string>
<string name="main_how_to_link">更多資訊請上 ntfy.shdocs會有更多說明。</string> <string name="main_how_to_link">更多資訊請上 ntfy.shdocs會有更多說明。</string>
<string name="main_unified_push_toast">此訂閱已由 %1$s 透過 UnifiedPush 管理</string> <string name="main_unified_push_toast">此訂閱已由 %1$s 透過 UnifiedPush 管理</string>
<string name="main_item_status_unified_push">%1$s (UnifiedPush)</string> <string name="main_item_status_unified_push">%1$s(統一推送)</string>
<string name="main_banner_battery_text">為了避免通知傳送問題,電池最佳化必須關閉</string> <string name="main_banner_battery_text">為了避免通知傳送問題,請務必關閉電池最佳化功能</string>
<string name="main_banner_battery_button_remind_later">稍後詢問我</string> <string name="main_banner_battery_button_remind_later">稍後詢問我</string>
<string name="main_banner_battery_button_dismiss">略過</string> <string name="main_banner_battery_button_dismiss">略過</string>
<string name="main_banner_battery_button_fix_now">立即修正</string> <string name="main_banner_battery_button_fix_now">立即修正</string>
@ -47,21 +47,300 @@
<string name="add_dialog_description_below">因為主題不能受密碼保護,請盡量取一個難以猜測的主題名稱。在訂閱之後你就可以使用 PUT/POST 來發送通知。</string> <string name="add_dialog_description_below">因為主題不能受密碼保護,請盡量取一個難以猜測的主題名稱。在訂閱之後你就可以使用 PUT/POST 來發送通知。</string>
<string name="add_dialog_use_another_server">使用其他伺服器</string> <string name="add_dialog_use_another_server">使用其他伺服器</string>
<string name="add_dialog_use_another_server_description">在下方輸入自訂的網址來訂閱主題。</string> <string name="add_dialog_use_another_server_description">在下方輸入自訂的網址來訂閱主題。</string>
<string name="channel_notifications_min_name">通知(最低優先)</string> <string name="channel_notifications_min_name">最低優先</string>
<string name="channel_notifications_low_name">通知(低優先)</string> <string name="channel_notifications_low_name">較低優先</string>
<string name="channel_notifications_high_name">通知(高優先)</string> <string name="channel_notifications_high_name">較高優先</string>
<string name="channel_notifications_max_name">通知(最高優先)</string> <string name="channel_notifications_max_name">最高優先</string>
<string name="channel_subscriber_service_name">訂閱服務</string> <string name="channel_subscriber_service_name">訂閱服務</string>
<string name="channel_subscriber_notification_instant_text_three">已訂閱3個即時推送主題</string> <string name="channel_subscriber_notification_instant_text_three">已訂閱 3 個即時推送主題</string>
<string name="main_menu_docs_title">閱讀文件</string> <string name="main_menu_docs_title">閱讀技術文件</string>
<string name="main_banner_websocket_text">建議使用 WebSockets 來連線你的伺服器,此動作可以有效增加電池續航,但需要<a href="https://ntfy.sh/docs/config/#nginxapache2caddy">對proxy進行更多設定</a>。這個動作可以在設定中進行。</string> <string name="main_banner_websocket_text">建議使用 WebSocket 來接收通知。這個連接方式能有效改善電池續航,但可能需要<a href="https://ntfy.sh/docs/config/#nginxapache2caddy">在伺服器端進行額外設定</a>。你可以在設定頁面更改不同的連接方式。</string>
<string name="channel_subscriber_notification_noinstant_text_three">已訂閱3個主題</string> <string name="channel_subscriber_notification_noinstant_text_three">已訂閱 3 個主題</string>
<string name="channel_subscriber_notification_noinstant_text_more">已訂閱%1$d個主題</string> <string name="channel_subscriber_notification_noinstant_text_more">已訂閱 %1$d 個主題</string>
<string name="channel_subscriber_notification_noinstant_text_one">已訂閱1個主題</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_two">已訂閱 2 個主題</string>
<string name="channel_subscriber_notification_noinstant_text_four">已訂閱4個主題</string> <string name="channel_subscriber_notification_noinstant_text_four">已訂閱 4 個主題</string>
<string name="channel_subscriber_notification_noinstant_text_five">已訂閱5個主題</string> <string name="channel_subscriber_notification_noinstant_text_five">已訂閱 5 個主題</string>
<string name="main_item_status_reconnecting">重新連線中 …</string> <string name="main_item_status_reconnecting">重新連線中…</string>
<string name="main_menu_notifications_disabled_until">通知靜音到%1$s</string> <string name="main_menu_notifications_disabled_until">通知靜音到 %1$s</string>
<string name="add_dialog_topic_name_hint">主題名稱(例如:phils_alerts)</string> <string name="add_dialog_topic_name_hint">主題名稱 (例如phils_alerts)</string>
<string name="add_dialog_button_cancel">取消</string>
<string name="add_dialog_button_subscribe">訂閱</string>
<string name="add_dialog_button_back">返回</string>
<string name="add_dialog_error_connection_failed">連接失敗: %1$s</string>
<string name="add_dialog_login_title">需要登入</string>
<string name="add_dialog_login_username_hint">使用者名稱</string>
<string name="add_dialog_login_password_hint">密碼</string>
<string name="add_dialog_login_error_not_authorized">登入失敗,使用者 %1$s 並未授權訂閱這個主題。</string>
<string name="add_dialog_login_new_user">建立新使用者</string>
<string name="add_dialog_base_urls_dropdown_choose">選擇 ntfy 服務 URL</string>
<string name="add_dialog_base_urls_dropdown_clear">清除 URL</string>
<string name="detail_copied_to_clipboard_message">已複製到剪貼簿</string>
<string name="add_dialog_button_login">登入</string>
<string name="add_dialog_login_description">這個主題需要登入,請先輸入帳號密碼。</string>
<string name="add_dialog_instant_delivery">在省電模式下依然接收即時通知</string>
<string name="add_dialog_instant_delivery_description">確保通知能在未使用裝置時都能接收。</string>
<string name="detail_clear_dialog_cancel">取消</string>
<string name="detail_delete_dialog_cancel">取消</string>
<string name="detail_action_mode_delete_dialog_cancel">取消</string>
<string name="share_title">分享</string>
<string name="share_topic_title">分享到</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_auto_delete_summary_one_month">自動刪除 1 個月前的通知</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_users_title">管理使用者</string>
<string name="settings_backup_restore_header">備份與還原</string>
<string name="settings_about_version_copied_to_clipboard_message">已複製到剪貼簿</string>
<string name="settings_about_header">關於</string>
<string name="settings_about_version_title">版本號</string>
<string name="settings_about_version_format">ntfy %1$s (%2$s)</string>
<string name="detail_settings_appearance_header">主題</string>
<string name="detail_settings_notifications_instant_title">即時通知</string>
<string name="detail_settings_global_setting_suffix">使用全域設定</string>
<string name="user_dialog_title_add">新增使用者</string>
<string name="main_menu_donate_title">捐獻 💸</string>
<string name="detail_item_snack_undo">復原</string>
<string name="detail_item_download_info_downloading_x_percent">已下載 %1$d%%</string>
<string name="detail_menu_enable_instant">啓用即時通知</string>
<string name="detail_menu_disable_instant">關閉即時通知</string>
<string name="detail_menu_clear">清除所有通知</string>
<string name="detail_action_mode_menu_copy">複製</string>
<string name="detail_action_mode_menu_delete">刪除</string>
<string name="share_menu_send">傳送</string>
<string name="share_content_title">預覽</string>
<string name="notification_dialog_cancel">取消</string>
<string name="notification_dialog_save">儲存</string>
<string name="notification_dialog_30min">30 分鐘</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_tomorrow">直到明天</string>
<string name="notification_dialog_forever">直到我解除為止</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_muted_until_show_all">顯示所有通知</string>
<string name="settings_notifications_priority_min">最小</string>
<string name="settings_notifications_auto_download_title">下載附件</string>
<string name="settings_notifications_auto_download_summary_always">自動下載所有附件</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_500k">小於 500 kB</string>
<string name="settings_notifications_auto_download_100k">小於 100 kB</string>
<string name="settings_notifications_auto_download_1m">小於 1 MB</string>
<string name="settings_notifications_auto_download_5m">小於 5 MB</string>
<string name="settings_notifications_auto_download_50m">小於 50 MB</string>
<string name="settings_notifications_auto_delete_title">自動刪除通知</string>
<string name="settings_notifications_auto_delete_summary_never">永不自動刪除通知</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_general_users_prefs_title">使用者</string>
<string name="settings_general_users_prefs_user_add">新增使用者</string>
<string name="settings_general_users_prefs_user_add_title">建立新使用者</string>
<string name="settings_general_dark_mode_title">黑暗模式</string>
<string name="settings_backup_restore_backup_entry_everything">全部</string>
<string name="settings_backup_restore_backup_entry_settings_only">僅備份設定</string>
<string name="settings_backup_restore_backup_entry_everything_no_users">全部備份 (使用者檔案除外)</string>
<string name="settings_backup_restore_backup_successful">已成功備份</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_export_logs_scrub_dialog_button_ok">確定</string>
<string name="settings_advanced_connection_protocol_title">連接方式</string>
<string name="settings_advanced_connection_protocol_summary_jsonhttp">透過 HTTP 連接伺服器來接收 JSON 串流,但可能會持續消耗較大電量。</string>
<string name="settings_advanced_connection_protocol_summary_ws">(建議) 透過 WebSocket 連接伺服器,但伺服器可能需要額外設定來啓用這種連接方式。</string>
<string name="settings_advanced_connection_protocol_entry_jsonhttp">JSON 串流 (透過 HTTP 連接)</string>
<string name="settings_advanced_connection_protocol_entry_ws">WebSocket</string>
<string name="detail_settings_about_topic_url_title">主題 URL</string>
<string name="detail_settings_about_topic_url_copied_to_clipboard_message">已複製到剪貼簿</string>
<string name="user_dialog_password_hint_add">密碼</string>
<string name="user_dialog_button_save">儲存</string>
<string name="user_dialog_button_add">新增使用者</string>
<string name="user_dialog_button_cancel">取消</string>
<string name="user_dialog_username_hint">使用者名稱</string>
<string name="settings_notifications_header">通知</string>
<string name="detail_menu_test">發送測試訊息</string>
<string name="settings_notifications_muted_until_title">暫停通知</string>
<string name="settings_notifications_auto_download_10m">小於 10 MB</string>
<string name="detail_settings_about_header">關於</string>
<string name="settings_backup_restore_backup_failed">備份失敗: %1$s</string>
<string name="add_dialog_foreground_description">除了 %1$s 以外伺服器有即時傳送。</string>
<string name="detail_item_menu_copy_contents_copied">通知已複製至剪貼簿</string>
<string name="channel_notifications_group_default_name">預設</string>
<string name="detail_how_to_link">可以再說明書 (ntfy.sh) 找到詳細指示。</string>
<string name="detail_clear_dialog_message">確定清除主題內的全部通訊?</string>
<string name="detail_clear_dialog_permanently_delete">永久刪除</string>
<string name="detail_delete_dialog_message">確定取消訂閱這個主題,並刪除所有通訊?</string>
<string name="detail_delete_dialog_permanently_delete">確定永久刪除</string>
<string name="detail_test_title">測試:你可以選一個你喜歡的標題。</string>
<string name="detail_test_message">這是從 ntfy Android 應用程式發送的測試信息,優先是 %1$d。如果你傳送另一個訊息它看起來可能會不一樣。</string>
<string name="detail_test_message_error_unauthorized_anon">不能夠傳送訊息:匿名發布不受批准。</string>
<string name="detail_test_message_error_too_large">不能夠傳送訊息:附件大小超出限制。</string>
<string name="detail_instant_delivery_disabled">關閉即時傳送</string>
<string name="detail_item_snack_deleted">已刪除通知</string>
<string name="detail_item_menu_open">開啟檔案</string>
<string name="detail_item_menu_delete">刪除檔案</string>
<string name="detail_item_menu_cancel">取消下載</string>
<string name="detail_item_menu_save_file">儲存檔案</string>
<string name="detail_item_menu_copy_contents">複製通知</string>
<string name="detail_item_cannot_open_url">無法開啟網址:%1$s</string>
<string name="detail_item_saved_successfully">儲存為 \"Downloads\" 資料中的 \"%1$s\"</string>
<string name="detail_test_message_error_unauthorized_user">不能夠發布信息:用戶 %1$s 不被授權。</string>
<string name="detail_how_to_intro">PUT 或 POST 主題網址以傳送通訊。</string>
<string name="detail_how_to_example">例如(使用 curl): <br/><tt>$ curl -d \"Hi\" %1$s</tt></string>
<string name="detail_test_message_error">不能夠傳送訊息:%1$s</string>
<string name="detail_item_tags">標籤:%1$s</string>
<string name="detail_instant_delivery_enabled">啟動即時傳送</string>
<string name="detail_item_menu_copy_url">複製網址</string>
<string name="detail_item_menu_copy_url_copied">網址已複製至剪貼簿</string>
<string name="detail_item_cannot_open">無法開啟附件:%1$s</string>
<string name="detail_item_cannot_open_not_found">無法開啟附件:檔案可能已被刪除或檔案無法被任何軟件開啟。</string>
<string name="detail_item_cannot_download">無法開啟或下載附件,網址無效而且找不到本地檔案。</string>
<string name="detail_deep_link_subscribed_toast_message">訂閱主題 %1$s</string>
<string name="detail_no_notifications_text">你未有在這個主題收到任何通訊。</string>
<string name="detail_item_menu_download">下載檔案</string>
<string name="detail_settings_title">訂閱設定</string>
<string name="share_content_image_text">一張圖片已與您分享</string>
<string name="share_content_text_hint">在此添加內容以進行分享</string>
<string name="share_suggested_topics">建議的主題</string>
<string name="share_content_file_error">無法圖取檔案資訊:%1$s</string>
<string name="settings_general_default_base_url_message">輸入你的伺服器的 root URL以便在訂閱新主題和/或分享到主題時,默認使用你自己的伺服器。</string>
<string name="detail_item_cannot_save">無法儲存附件:%1$s</string>
<string name="detail_item_download_failed">無法下載附件:%1$s</string>
<string name="detail_item_cannot_open_apk">無法再安裝應用程式。請改為使用瀏覽器下載。詳見問題#531。</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_deleted_expired">已刪除,連結已過期</string>
<string name="detail_menu_notifications_disabled_forever">關閉通知</string>
<string name="detail_action_mode_delete_dialog_message">是否永久刪除所選的通知?</string>
<string name="detail_action_mode_delete_dialog_permanently_delete">永久刪除</string>
<string name="share_content_image_error">無法讀取圖片:%1$s</string>
<string name="share_content_file_text">一個檔案已與您分享</string>
<string name="share_successful">推送訊息</string>
<string name="notification_dialog_title">關閉通知</string>
<string name="notification_dialog_enabled_toast_message">恢復通知</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_max">僅最大優先級</string>
<string name="settings_notifications_insistent_max_priority_title">保持高優先級的警報</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">最高優先級的通知持續警報,直到被關閉</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">最高優先級的通知僅警報一次</string>
<string name="detail_item_cannot_delete">無法刪除附件:%1$s</string>
<string name="detail_item_download_info_deleted">已刪除</string>
<string name="detail_menu_notifications_enabled">開啟通知</string>
<string name="detail_item_download_info_download_failed">下載失敗</string>
<string name="detail_menu_notifications_disabled_until">關閉通知直到 %1$s</string>
<string name="detail_menu_copy_url">複製主題網址</string>
<string name="detail_menu_settings">訂閱設定</string>
<string name="detail_menu_unsubscribe">取消訂閱</string>
<string name="notification_dialog_muted_until_toast_message">關閉通知直到 %1$s</string>
<string name="notification_dialog_show_all">顯示所有通知</string>
<string name="notification_dialog_muted_forever_toast_message">關閉通知</string>
<string name="settings_notifications_muted_until_forever">關閉通知直到恢復</string>
<string name="settings_notifications_min_priority_title">最低優先級</string>
<string name="settings_notifications_min_priority_summary_any">顯示所有通知</string>
<string name="settings_notifications_muted_until_x">關閉通知直到 %1$s</string>
<string name="settings_notifications_min_priority_default">預設優先級和以上</string>
<string name="settings_notifications_min_priority_high">高優先級和以上</string>
<string name="settings_notifications_min_priority_low">低優先級和以上</string>
<string name="settings_notifications_channel_prefs_title">頻道設定</string>
<string name="settings_notifications_channel_prefs_summary">請勿打擾DND覆寫、聲音等。</string>
<string name="settings_notifications_min_priority_summary_x_or_higher">如果優先級為%1$d (%2$s) 或以上,顯示通知</string>
<string name="detail_item_download_info_not_downloaded_expires_x">已刪除,連結將於 %1$s 失效</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_advanced_export_logs_entry_copy_original">複製到剪貼板</string>
<string name="settings_advanced_export_logs_copied_logs">日誌已複製到剪貼板</string>
<string name="detail_settings_appearance_icon_set_summary">設置要在通知中顯示的圖標</string>
<string name="detail_item_download_info_deleted_expires_x">已刪除,鏈接將於 %1$s 失效</string>
<string name="settings_advanced_broadcast_title">廣播消息</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">只提醒一次</string>
<string name="user_dialog_description_add">您可以在此添加用戶。所有該服務器上的主題訂閱都將使用該用戶。</string>
<string name="detail_settings_appearance_display_name_title">顯示名</string>
<string name="detail_item_download_info_download_failed_expired">下載失敗,鏈接已失效</string>
<string name="detail_item_download_info_download_failed_expires_x">下載失敗,鏈接將於 %1$s 失效</string>
<string name="settings_general_users_summary">爲訪問受保護的主題添加或刪除用戶</string>
<string name="settings_general_users_prefs_user_used_by_one">在主題 %1$s 使用</string>
<string name="settings_general_users_prefs_user_used_by_many">在主題 %1$s 使用</string>
<string name="settings_general_users_prefs_user_not_used">未在任何主題使用</string>
<string name="settings_general_dark_mode_summary_system">跟隨系統默認</string>
<string name="settings_general_users_prefs_user_add_summary">爲新服務器創建新用戶</string>
<string name="settings_general_dark_mode_summary_light">亮色模式已啓用</string>
<string name="settings_backup_restore_restore_title">從文件恢復</string>
<string name="settings_backup_restore_restore_summary">導入配置、通知和用戶</string>
<string name="settings_advanced_broadcast_summary_enabled">允許應用以廣播的形式收到通知</string>
<string name="settings_advanced_broadcast_summary_disabled">禁止應用以廣播的形式收到通知</string>
<string name="settings_advanced_record_logs_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_title">複製 / 上傳日誌</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_clear_logs_summary">刪除以前的日誌並重新來過</string>
<string name="settings_advanced_clear_logs_deleted_toast">日誌已刪除</string>
<string name="detail_settings_appearance_display_name_default_summary">%1$s (默認)</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="settings_general_dark_mode_entry_dark">暗色模式</string>
<string name="settings_backup_restore_backup_title">備份到文件</string>
<string name="settings_backup_restore_backup_summary">導出配置、通知和用戶</string>
<string name="settings_advanced_export_logs_entry_upload_scrubbed">上傳並複製鏈接 (屏蔽敏感信息)</string>
<string name="settings_advanced_export_logs_uploading">正在上傳日誌…</string>
<string name="settings_advanced_export_logs_copied_url">日誌已上傳URL 已複製到剪貼板</string>
<string name="settings_advanced_export_logs_scrub_dialog_empty">未找到任何主題/域名。您似乎沒有任何訂閱?</string>
<string name="detail_settings_notifications_instant_summary_on">通知會立即發送。需要前臺服務,並消耗更多電池。</string>
<string name="detail_settings_notifications_instant_summary_off">通知使用 Firebase 發送。投遞可能會延遲,但消耗的電池更少。</string>
<string name="detail_settings_notifications_dedicated_channels_title">自定義通知設置</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">對這個訂閱使用自定義通知</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy 將作爲 UnifiedPush 的一個分發器</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy 不再會作爲 UnifiedPush 的一個分發器</string>
<string name="settings_advanced_export_logs_summary">複製日誌到剪貼板,或上傳到 nopaste.net (由 ntfy 作者所有)。域名和主題可以被屏蔽,但通知本身不會。</string>
<string name="settings_advanced_export_logs_entry_copy_scrubbed">複製到剪貼板 (屏蔽敏感信息)</string>
<string name="settings_advanced_export_logs_entry_upload_original">上傳並複製鏈接</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">使用默認設置(聲音、“勿擾模式”繞過等)</string>
<string name="detail_settings_appearance_display_name_message">爲這個訂閱設置一個自定義的顯示名。若留空將使用默認值(%1$s</string>
<string name="user_dialog_button_delete">刪除用戶</string>
<string name="settings_advanced_unifiedpush_title">啓用 UnifiedPush</string>
<string name="settings_advanced_clear_logs_title">清除日誌</string>
<string name="detail_settings_notifications_open_channels_title">配置通知設置</string>
<string name="detail_settings_notifications_open_channels_summary">“勿擾模式”繞過、聲音等.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">持續提醒</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_icon_error_saving">無法保存圖標:%1$s</string>
<string name="detail_settings_global_setting_title">使用全局設置</string>
<string name="user_dialog_description_edit">您可以編輯該用戶的用戶名和密碼,或刪除該用戶。</string>
</resources> </resources>

View file

@ -2,11 +2,12 @@
tools:ignore="MissingTranslation"> tools:ignore="MissingTranslation">
<!-- Notification channels --> <!-- Notification channels -->
<string name="channel_notifications_min_name">Notifications (min priority)</string> <string name="channel_notifications_min_name">Min priority</string>
<string name="channel_notifications_low_name">Notifications (low priority)</string> <string name="channel_notifications_low_name">Low priority</string>
<string name="channel_notifications_default_name">Notifications (default priority)</string> <string name="channel_notifications_default_name">Default priority</string>
<string name="channel_notifications_high_name">Notifications (high priority)</string> <string name="channel_notifications_high_name">High priority</string>
<string name="channel_notifications_max_name">Notifications (max priority)</string> <string name="channel_notifications_max_name">Max priority</string>
<string name="channel_notifications_group_default_name">Default</string>
<string name="channel_subscriber_service_name">Subscription Service</string> <string name="channel_subscriber_service_name">Subscription Service</string>
<string name="channel_subscriber_notification_title">Listening for incoming notifications</string> <string name="channel_subscriber_notification_title">Listening for incoming notifications</string>
<string name="channel_subscriber_notification_instant_text">Subscribed to instant delivery topics</string> <string name="channel_subscriber_notification_instant_text">Subscribed to instant delivery topics</string>
@ -41,6 +42,7 @@
<string name="main_menu_report_bug_title">Report a bug</string> <string name="main_menu_report_bug_title">Report a bug</string>
<string name="main_menu_docs_title">Read the docs</string> <string name="main_menu_docs_title">Read the docs</string>
<string name="main_menu_rate_title">Rate the app ⭐</string> <string name="main_menu_rate_title">Rate the app ⭐</string>
<string name="main_menu_donate_title">Donate 💸</string>
<!-- Main activity: Action mode --> <!-- Main activity: Action mode -->
<string name="main_action_mode_menu_unsubscribe">Unsubscribe</string> <string name="main_action_mode_menu_unsubscribe">Unsubscribe</string>
@ -152,6 +154,7 @@
<string name="detail_item_cannot_open">Cannot open attachment: %1$s</string> <string name="detail_item_cannot_open">Cannot open attachment: %1$s</string>
<string name="detail_item_cannot_open_not_found">Cannot open attachment: The file may have been deleted, or no installed app can open the file.</string> <string name="detail_item_cannot_open_not_found">Cannot open attachment: The file may have been deleted, or no installed app can open the file.</string>
<string name="detail_item_cannot_open_url">Cannot open URL: %1$s</string> <string name="detail_item_cannot_open_url">Cannot open URL: %1$s</string>
<string name="detail_item_cannot_open_apk">Apps cannot be installed anymore. Download via browser instead. See issue #531 for details.</string>
<string name="detail_item_cannot_save">Cannot save attachment: %1$s</string> <string name="detail_item_cannot_save">Cannot save attachment: %1$s</string>
<string name="detail_item_cannot_delete">Cannot delete attachment: %1$s</string> <string name="detail_item_cannot_delete">Cannot delete attachment: %1$s</string>
<string name="detail_item_download_failed">Could not download attachment: %1$s</string> <string name="detail_item_download_failed">Could not download attachment: %1$s</string>
@ -278,6 +281,9 @@
<string name="settings_notifications_auto_delete_one_week">After one week</string> <string name="settings_notifications_auto_delete_one_week">After one week</string>
<string name="settings_notifications_auto_delete_one_month">After one month</string> <string name="settings_notifications_auto_delete_one_month">After one month</string>
<string name="settings_notifications_auto_delete_three_months">After 3 months</string> <string name="settings_notifications_auto_delete_three_months">After 3 months</string>
<string name="settings_notifications_insistent_max_priority_title">Keep alerting for highest priority</string>
<string name="settings_notifications_insistent_max_priority_summary_enabled">Max priority notifications continuously alert until dismissed</string>
<string name="settings_notifications_insistent_max_priority_summary_disabled">Max priority notifications only alert once</string>
<string name="settings_general_header">General</string> <string name="settings_general_header">General</string>
<string name="settings_general_default_base_url_title">Default server</string> <string name="settings_general_default_base_url_title">Default server</string>
<string name="settings_general_default_base_url_message">Enter your server\'s root URL to use your own server as a default when subscribing to new topics and/or sharing to topics.</string> <string name="settings_general_default_base_url_message">Enter your server\'s root URL to use your own server as a default when subscribing to new topics and/or sharing to topics.</string>
@ -314,9 +320,12 @@
<string name="settings_advanced_broadcast_title">Broadcast messages</string> <string name="settings_advanced_broadcast_title">Broadcast messages</string>
<string name="settings_advanced_broadcast_summary_enabled">Apps can receive incoming notifications as broadcasts</string> <string name="settings_advanced_broadcast_summary_enabled">Apps can receive incoming notifications as broadcasts</string>
<string name="settings_advanced_broadcast_summary_disabled">Apps cannot receive notifications as broadcasts</string> <string name="settings_advanced_broadcast_summary_disabled">Apps cannot receive notifications as broadcasts</string>
<string name="settings_advanced_unifiedpush_title">Enable UnifiedPush</string>
<string name="settings_advanced_unifiedpush_summary_enabled">ntfy will act as a UnifiedPush distributor</string>
<string name="settings_advanced_unifiedpush_summary_disabled">ntfy will not act as a UnifiedPush distributor</string>
<string name="settings_advanced_record_logs_title">Record logs</string> <string name="settings_advanced_record_logs_title">Record logs</string>
<string name="settings_advanced_record_logs_summary_enabled">Logging (up to 1,000 entries) to device …</string> <string name="settings_advanced_record_logs_summary_enabled">Logging (up to 1,000 entries) to device …</string>
<string name="settings_advanced_record_logs_summary_disabled">Turn on logging so you can share logs later to diagnose issues.</string> <string name="settings_advanced_record_logs_summary_disabled">Turn on logging, so you can share logs later to diagnose issues.</string>
<string name="settings_advanced_export_logs_title">Copy/upload logs</string> <string name="settings_advanced_export_logs_title">Copy/upload logs</string>
<string name="settings_advanced_export_logs_summary">Copy logs to the clipboard, or upload to nopaste.net (owned by the ntfy author). Hostnames and topics can be censored, notifications will never be.</string> <string name="settings_advanced_export_logs_summary">Copy logs to the clipboard, or upload to nopaste.net (owned by the ntfy author). Hostnames and topics can be censored, notifications will never be.</string>
<string name="settings_advanced_export_logs_entry_copy_original">Copy to clipboard</string> <string name="settings_advanced_export_logs_entry_copy_original">Copy to clipboard</string>
@ -347,6 +356,13 @@
<string name="detail_settings_notifications_instant_title">Instant delivery</string> <string name="detail_settings_notifications_instant_title">Instant delivery</string>
<string name="detail_settings_notifications_instant_summary_on">Notifications are delivered instantly. Requires a foreground service and consumes more battery.</string> <string name="detail_settings_notifications_instant_summary_on">Notifications are delivered instantly. Requires a foreground service and consumes more battery.</string>
<string name="detail_settings_notifications_instant_summary_off">Notifications are delivered using Firebase. Delivery may be delayed, but consumes less battery.</string> <string name="detail_settings_notifications_instant_summary_off">Notifications are delivered using Firebase. Delivery may be delayed, but consumes less battery.</string>
<string name="detail_settings_notifications_dedicated_channels_title">Custom notification settings</string>
<string name="detail_settings_notifications_dedicated_channels_summary_on">Using custom settings for this subscription</string>
<string name="detail_settings_notifications_dedicated_channels_summary_off">Using default settings (sounds, Do Not Disturb override, etc.)</string>
<string name="detail_settings_notifications_open_channels_title">Configure notification settings</string>
<string name="detail_settings_notifications_open_channels_summary">Do Not Disturb (DND) override, sounds, etc.</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_enabled">Keep alerting</string>
<string name="detail_settings_notifications_insistent_max_priority_list_item_disabled">Alert only once</string>
<string name="detail_settings_appearance_header">Appearance</string> <string name="detail_settings_appearance_header">Appearance</string>
<string name="detail_settings_appearance_icon_set_title">Subscription icon</string> <string name="detail_settings_appearance_icon_set_title">Subscription icon</string>
<string name="detail_settings_appearance_icon_set_summary">Set an icon to be displayed in notifications</string> <string name="detail_settings_appearance_icon_set_summary">Set an icon to be displayed in notifications</string>
@ -375,4 +391,10 @@
<string name="user_dialog_button_cancel">Cancel</string> <string name="user_dialog_button_cancel">Cancel</string>
<string name="user_dialog_button_delete">Delete user</string> <string name="user_dialog_button_delete">Delete user</string>
<string name="user_dialog_button_save">Save</string> <string name="user_dialog_button_save">Save</string>
<!-- /e/OS integration preferences -->
<string name="eos_preference_key_is_enabled" translatable="false">isEnabled</string>
<string name="eos_settings_title" translatable="false">UnifiedPush</string>
<string name="eos_settings_enable_title" translatable="true">Enable the distributor</string>
<string name="eos_settings_enable_description" translatable="true">It allows 3rd party applications to receive UnifiedPush notifications</string>
</resources> </resources>

View file

@ -30,4 +30,26 @@
<item name="cornerFamily">rounded</item> <item name="cornerFamily">rounded</item>
<item name="cornerSize">5dp</item> <item name="cornerSize">5dp</item>
</style> </style>
<style name="PreferenceTheme" parent="PreferenceTheme.Base"/>
<style name="PreferenceTheme.Base" parent="Theme.Material3.DayNight.NoActionBar">
<item name="colorPrimary">@color/e_action_bar</item>
<item name="colorPrimaryDark">@color/e_action_bar</item>
<item name="colorAccent">@color/e_accent</item>
<item name="android:textColorPrimary">@color/e_primary_text_color</item>
<item name="android:textColorSecondary">@color/e_secondary_text_color</item>
<item name="android:textColorPrimaryInverse">@color/e_background</item>
<item name="android:windowBackground">@color/e_background</item>
<item name="colorControlActivated">@color/e_accent</item>
<item name="colorButtonNormal">@color/e_icon_color</item>
<item name="colorControlHighlight">@color/e_icon_color</item>
<item name="homeAsUpIndicator">@drawable/e_ic_back</item>
<item name="android:homeAsUpIndicator">@drawable/e_ic_back</item>
<item name="android:popupBackground">@color/e_floating_background</item>
<item name="android:divider">@color/e_divider_color</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@color/e_background</item>
<item name="switchStyle">@style/ETheme.Switch</item>
</style>
</resources> </resources>

View file

@ -10,6 +10,7 @@
<!-- Main activity --> <!-- Main activity -->
<string name="main_menu_report_bug_url" translatable="false">https://github.com/binwiederhier/ntfy/issues</string> <string name="main_menu_report_bug_url" translatable="false">https://github.com/binwiederhier/ntfy/issues</string>
<string name="main_menu_docs_url" translatable="false">https://ntfy.sh/docs</string> <string name="main_menu_docs_url" translatable="false">https://ntfy.sh/docs</string>
<string name="main_menu_donate_url" translatable="false">https://github.com/sponsors/binwiederhier</string>
<!-- Settings constants --> <!-- Settings constants -->
<string name="settings_notifications_muted_until_key" translatable="false">MutedUntil</string> <string name="settings_notifications_muted_until_key" translatable="false">MutedUntil</string>
@ -17,12 +18,14 @@
<string name="settings_notifications_channel_prefs_key" translatable="false">ChannelPrefs</string> <string name="settings_notifications_channel_prefs_key" translatable="false">ChannelPrefs</string>
<string name="settings_notifications_auto_download_key" translatable="false">AutoDownload</string> <string name="settings_notifications_auto_download_key" translatable="false">AutoDownload</string>
<string name="settings_notifications_auto_delete_key" translatable="false">AutoDelete</string> <string name="settings_notifications_auto_delete_key" translatable="false">AutoDelete</string>
<string name="settings_notifications_insistent_max_priority_key" translatable="false">InsistentMaxPriority</string>
<string name="settings_general_default_base_url_key" translatable="false">DefaultBaseURL</string> <string name="settings_general_default_base_url_key" translatable="false">DefaultBaseURL</string>
<string name="settings_general_users_key" translatable="false">ManageUsers</string> <string name="settings_general_users_key" translatable="false">ManageUsers</string>
<string name="settings_general_dark_mode_key" translatable="false">DarkMode</string> <string name="settings_general_dark_mode_key" translatable="false">DarkMode</string>
<string name="settings_backup_restore_backup_key" translatable="false">Backup</string> <string name="settings_backup_restore_backup_key" translatable="false">Backup</string>
<string name="settings_backup_restore_restore_key" translatable="false">Restore</string> <string name="settings_backup_restore_restore_key" translatable="false">Restore</string>
<string name="settings_advanced_broadcast_key" translatable="false">BroadcastEnabled</string> <string name="settings_advanced_broadcast_key" translatable="false">BroadcastEnabled</string>
<string name="settings_advanced_unifiedpush_key" translatable="false">UnifiedPushEnabled</string>
<string name="settings_advanced_record_logs_key" translatable="false">RecordLogs</string> <string name="settings_advanced_record_logs_key" translatable="false">RecordLogs</string>
<string name="settings_advanced_export_logs_key" translatable="false">ExportLogs</string> <string name="settings_advanced_export_logs_key" translatable="false">ExportLogs</string>
<string name="settings_advanced_clear_logs_key" translatable="false">ClearLogs</string> <string name="settings_advanced_clear_logs_key" translatable="false">ClearLogs</string>
@ -33,8 +36,11 @@
<string name="detail_settings_notifications_header_key" translatable="false">SubscriptionNotifications</string> <string name="detail_settings_notifications_header_key" translatable="false">SubscriptionNotifications</string>
<string name="detail_settings_notifications_instant_key" translatable="false">SubscriptionInstant</string> <string name="detail_settings_notifications_instant_key" translatable="false">SubscriptionInstant</string>
<string name="detail_settings_notifications_muted_until_key" translatable="false">SubscriptionMutedUntil</string> <string name="detail_settings_notifications_muted_until_key" translatable="false">SubscriptionMutedUntil</string>
<string name="detail_settings_notifications_dedicated_channels_key" translatable="false">SubscriptionDedicatedChannels</string>
<string name="detail_settings_notifications_open_channels_key" translatable="false">SubscriptionOpenChannels</string>
<string name="detail_settings_notifications_min_priority_key" translatable="false">SubscriptionMinPriority</string> <string name="detail_settings_notifications_min_priority_key" translatable="false">SubscriptionMinPriority</string>
<string name="detail_settings_notifications_auto_delete_key" translatable="false">SubscriptionAutoDelete</string> <string name="detail_settings_notifications_auto_delete_key" translatable="false">SubscriptionAutoDelete</string>
<string name="detail_settings_notifications_insistent_max_priority_key" translatable="false">SubscriptionInsistentMaxPriority</string>
<string name="detail_settings_appearance_header_key" translatable="false">SubscriptionAppearance</string> <string name="detail_settings_appearance_header_key" translatable="false">SubscriptionAppearance</string>
<string name="detail_settings_appearance_icon_set_key" translatable="false">SubscriptionIconSet</string> <string name="detail_settings_appearance_icon_set_key" translatable="false">SubscriptionIconSet</string>
<string name="detail_settings_appearance_icon_remove_key" translatable="false">SubscriptionIconRemove</string> <string name="detail_settings_appearance_icon_remove_key" translatable="false">SubscriptionIconRemove</string>
@ -145,6 +151,16 @@
<item>2592000</item> <item>2592000</item>
<item>7776000</item> <item>7776000</item>
</string-array> </string-array>
<string-array name="detail_settings_notifications_insistent_max_priority_entries">
<item>@string/detail_settings_global_setting_title</item>
<item>@string/detail_settings_notifications_insistent_max_priority_list_item_enabled</item>
<item>@string/detail_settings_notifications_insistent_max_priority_list_item_disabled</item>
</string-array>
<string-array name="detail_settings_notifications_insistent_max_priority_values">
<item>-1</item> <!-- Same as Repository.INSISTENT_MAX_PRIORITY_USE_GLOBAL -->
<item>1</item>
<item>0</item>
</string-array>
<string-array name="settings_advanced_connection_protocol_entries"> <string-array name="settings_advanced_connection_protocol_entries">
<item>@string/settings_advanced_connection_protocol_entry_jsonhttp</item> <item>@string/settings_advanced_connection_protocol_entry_jsonhttp</item>
<item>@string/settings_advanced_connection_protocol_entry_ws</item> <item>@string/settings_advanced_connection_protocol_entry_ws</item>

View file

@ -28,6 +28,22 @@
app:entryValues="@array/detail_settings_notifications_auto_delete_values" app:entryValues="@array/detail_settings_notifications_auto_delete_values"
app:defaultValue="-1" app:defaultValue="-1"
app:isPreferenceVisible="false"/> <!-- Same as Repository.AUTO_DELETE_USE_GLOBAL --> app:isPreferenceVisible="false"/> <!-- Same as Repository.AUTO_DELETE_USE_GLOBAL -->
<ListPreference
app:key="@string/detail_settings_notifications_insistent_max_priority_key"
app:title="@string/settings_notifications_insistent_max_priority_title"
app:entries="@array/detail_settings_notifications_insistent_max_priority_entries"
app:entryValues="@array/detail_settings_notifications_insistent_max_priority_values"
app:defaultValue="-1"
app:isPreferenceVisible="false"/> <!-- Same as Repository.INSISTENT_MAX_PRIORITY_USE_GLOBAL -->
<SwitchPreference
app:key="@string/detail_settings_notifications_dedicated_channels_key"
app:title="@string/detail_settings_notifications_dedicated_channels_title"
app:isPreferenceVisible="false"/>
<Preference
app:key="@string/detail_settings_notifications_open_channels_key"
app:title="@string/detail_settings_notifications_open_channels_title"
app:summary="@string/detail_settings_notifications_open_channels_summary"
app:isPreferenceVisible="false"/>
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory <PreferenceCategory
app:key="@string/detail_settings_appearance_header_key" app:key="@string/detail_settings_appearance_header_key"

View file

@ -25,6 +25,10 @@
app:entries="@array/settings_notifications_auto_delete_entries" app:entries="@array/settings_notifications_auto_delete_entries"
app:entryValues="@array/settings_notifications_auto_delete_values" app:entryValues="@array/settings_notifications_auto_delete_values"
app:defaultValue="2592000"/> app:defaultValue="2592000"/>
<SwitchPreference
app:key="@string/settings_notifications_insistent_max_priority_key"
app:title="@string/settings_notifications_insistent_max_priority_title"
app:defaultValue="false"/>
<Preference <Preference
app:key="@string/settings_notifications_channel_prefs_key" app:key="@string/settings_notifications_channel_prefs_key"
app:title="@string/settings_notifications_channel_prefs_title" app:title="@string/settings_notifications_channel_prefs_title"
@ -72,6 +76,10 @@
app:key="@string/settings_advanced_broadcast_key" app:key="@string/settings_advanced_broadcast_key"
app:title="@string/settings_advanced_broadcast_title" app:title="@string/settings_advanced_broadcast_title"
app:enabled="true"/> app:enabled="true"/>
<SwitchPreference
app:key="@string/settings_advanced_unifiedpush_key"
app:title="@string/settings_advanced_unifiedpush_title"
app:enabled="true"/>
<SwitchPreference <SwitchPreference
app:key="@string/settings_advanced_record_logs_key" app:key="@string/settings_advanced_record_logs_key"
app:title="@string/settings_advanced_record_logs_title" app:title="@string/settings_advanced_record_logs_title"

View file

@ -0,0 +1,11 @@
<PreferenceScreen
xmlns:app="http://schemas.android.com/apk/res-auto">
<SwitchPreferenceCompat
app:icon="@drawable/ic_notification"
app:key="@string/eos_preference_key_is_enabled"
app:defaultValue="false"
app:title="@string/eos_settings_enable_title"
app:summary="@string/eos_settings_enable_description" />
</PreferenceScreen>

View file

@ -14,6 +14,7 @@ import io.heckel.ntfy.msg.ApiService
import io.heckel.ntfy.msg.NotificationDispatcher import io.heckel.ntfy.msg.NotificationDispatcher
import io.heckel.ntfy.msg.NotificationParser import io.heckel.ntfy.msg.NotificationParser
import io.heckel.ntfy.service.SubscriberService import io.heckel.ntfy.service.SubscriberService
import io.heckel.ntfy.util.nullIfZero
import io.heckel.ntfy.util.toPriority import io.heckel.ntfy.util.toPriority
import io.heckel.ntfy.util.topicShortUrl import io.heckel.ntfy.util.topicShortUrl
import io.heckel.ntfy.work.PollWorker import io.heckel.ntfy.work.PollWorker
@ -94,8 +95,8 @@ class FirebaseService : FirebaseMessagingService() {
val encoding = data["encoding"] val encoding = data["encoding"]
val attachmentName = data["attachment_name"] ?: "attachment.bin" val attachmentName = data["attachment_name"] ?: "attachment.bin"
val attachmentType = data["attachment_type"] val attachmentType = data["attachment_type"]
val attachmentSize = data["attachment_size"]?.toLongOrNull() val attachmentSize = data["attachment_size"]?.toLongOrNull()?.nullIfZero()
val attachmentExpires = data["attachment_expires"]?.toLongOrNull() val attachmentExpires = data["attachment_expires"]?.toLongOrNull()?.nullIfZero()
val attachmentUrl = data["attachment_url"] val attachmentUrl = data["attachment_url"]
val truncated = (data["truncated"] ?: "") == "1" val truncated = (data["truncated"] ?: "") == "1"
if (id == null || topic == null || message == null || timestamp == null) { if (id == null || topic == null || message == null || timestamp == null) {
@ -124,7 +125,7 @@ class FirebaseService : FirebaseMessagingService() {
url = attachmentUrl, url = attachmentUrl,
) )
} else null } else null
val icon: Icon? = iconUrl?.let { Icon(url = it) } val icon: Icon? = if (iconUrl != null && iconUrl != "") Icon(url = iconUrl) else null
val notification = Notification( val notification = Notification(
id = id, id = id,
subscriptionId = subscription.id, subscriptionId = subscription.id,

View file

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

View file

@ -0,0 +1 @@
إرسال إشعارات إلى هاتفك من أي برنامج نصي باستخدام طلبات PUT / POST

View file

@ -0,0 +1,17 @@
Anfonwch cyhoeddiadau i'ch ffôn o unrhyw sgript Bash neu PowerShell, neu o'ch ap eich hun gan ddefnyddio ceisiadau PUT/POST, e.e. trwy curl ar Linux neu Invoke-WebRequest.
Mae ntfy yn gleient Android ar gyfer https://ntfy.sh, gwasanaeth pub-sub, ffynhonnell agor am ddim sy'n seiliedig ar HTTP. Gallwch danysgrifio i bynciau yn yr app hon, ac yna cyhoeddi negeseuon trwy API HTTP syml.
Defnyddiau:
* Hysbyswch eich hun pan fydd proses hir wedi'i chwblhau
* Pingiwch eich ffôn pan fydd copi wrth gefn wedi methu
* Rhybuddion pan fydd rhywun yn mewngofnodi i'ch gweinydd
Enghraifft:
$curl -d "Mae eich copi wrth gefn wedi'i wneud" ntfy.sh/fymhwnc
Dewch o hyd i ragor o enghreifftiau a chyfarwyddiadau defnydd yma:
* Gwefan: https://ntfy.sh
* GitHub (gweinydd): https://github.com/binwiederhier/ntfy
* GitHub (ap Android): https://github.com/binwiederhier/ntfy-android

View file

@ -0,0 +1 @@
Anfonwch cyhoeddiadau i'ch ffôn o unrhyw sgript drwy ceisiadau PUT/POST

View file

@ -0,0 +1 @@
ntfy - PUT/POST i'ch ffôn

View file

@ -0,0 +1,17 @@
Send meddelelser til din telefon fra et hvilket som helst Bash- eller PowerShell-script eller fra din egen app ved hjælp af PUT/POST-anmodninger, f.eks. via curl på Linux eller Invoke-WebRequest.
ntfy er en Android-klient til https://ntfy.sh, en gratis og open source HTTP-baseret pub-sub-tjeneste. Du kan abonnere på emner i denne app og derefter udgive beskeder via en simpel HTTP API.
Anvendelser:
* Giv dig selv besked, når en langvarig proces er færdig
* Ping din telefon, når en sikkerhedskopiering mislykkedes
* Advarsler, når nogen logger ind på din server
Eksempel:
$ curl -d "Din backup er færdig" ntfy.sh/mytopic
Find flere eksempler og brugsvejledning her:
* Hjemmeside: https://ntfy.sh
* GitHub (server): https://github.com/binwiederhier/ntfy
* GitHub (Android app): https://github.com/binwiederhier/ntfy-android

View file

@ -0,0 +1 @@
Send meddelelser til din telefon fra ethvert script med PUT/POST-anmodninger

Some files were not shown because too many files have changed in this diff Show more