Compare commits

...

115 Commits

Author SHA1 Message Date
Vitor Pamplona
e05ab104b9 0.76.0 2023-09-08 16:16:53 -04:00
Vitor Pamplona
b4f1c4d13e Migrates to Encrypted Push Notifications 2023-09-08 16:16:26 -04:00
Vitor Pamplona
939eb1bd8d Fixes the lack of permission when using Android's PhotoPicker to upload videos (thumbnail fails to load and videos don't play because the Playback service doesn't have permission to run) 2023-09-08 11:39:14 -04:00
Vitor Pamplona
854469cc7d Merge pull request #582 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2023-09-08 09:21:01 -04:00
Crowdin Bot
338ae41baa New Crowdin translations by GitHub Action 2023-09-08 12:42:58 +00:00
Vitor Pamplona
6cae89d276 Adds indonesian to crowdin 2023-09-08 08:41:07 -04:00
Vitor Pamplona
15c1e25122 Merge branch 'main' of https://github.com/vitorpamplona/amethyst 2023-09-08 08:37:20 -04:00
Vitor Pamplona
c5716416b6 Merge pull request #581 from atrifat/add-indonesian-translation
Add Indonesian Translation
2023-09-08 08:36:56 -04:00
Rif'at Ahdi R
65e4a766ab Add Indonesian Translation 2023-09-08 11:39:27 +08:00
Vitor Pamplona
c2a4c9bbb3 Improvements to the relay settings page. 2023-09-07 19:07:33 -04:00
Vitor Pamplona
b042110154 Merge pull request #579 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2023-09-07 15:39:07 -04:00
Crowdin Bot
da97b5593b New Crowdin translations by GitHub Action 2023-09-07 18:42:45 +00:00
Vitor Pamplona
44b4b0cdb9 Makes sure only valid lnurl withdraws get highlighted. 2023-09-07 14:40:42 -04:00
Vitor Pamplona
190b7fe819 Using the correct observer for picture profile in the Top bar. 2023-09-07 12:53:19 -04:00
Vitor Pamplona
8eb89f0fe9 Adds nostr.wine and noswhere.com as two new NIP-50 relays. 2023-09-07 12:52:44 -04:00
Vitor Pamplona
3085353729 Adds SeenOn relays when successfully broadcasting a note. 2023-09-07 12:52:14 -04:00
Vitor Pamplona
1465ce112c Refines relay icon row compose 2023-09-07 11:11:10 -04:00
Vitor Pamplona
5c797858ba Merge pull request #578 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2023-09-07 10:23:12 -04:00
Crowdin Bot
8c51c4be0c New Crowdin translations by GitHub Action 2023-09-07 13:57:52 +00:00
Vitor Pamplona
4e8ecff67b Fixes the missing channel header in conversations. 2023-09-07 09:55:43 -04:00
Vitor Pamplona
83f8c51aca Merge pull request #577 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2023-09-06 10:14:04 -04:00
Crowdin Bot
e675348461 New Crowdin translations by GitHub Action 2023-09-06 14:04:55 +00:00
Vitor Pamplona
9026f5bf07 Merge pull request #574 from davotoula/main
Updated translations for cs/de
2023-09-06 10:03:30 -04:00
David Kaspar
02f18b5b35 Updated translations for cs/de 2023-09-06 13:35:45 +02:00
Vitor Pamplona
db740f4747 Upgrades the RelayPoolStatus to a Flow 2023-09-05 17:21:36 -04:00
Vitor Pamplona
6a3206b938 Avoids race condition when update EOSEs 2023-09-05 17:20:37 -04:00
Vitor Pamplona
23414b0bc6 Merge pull request #573 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2023-09-05 09:39:11 -04:00
Crowdin Bot
0234cfca30 New Crowdin translations by GitHub Action 2023-09-05 13:03:08 +00:00
Vitor Pamplona
f707714611 Merge pull request #569 from atrifat/add-arm64-armeabi-target
Add arm64-v8a and armeabi-v7a build target
2023-09-05 09:01:46 -04:00
Vitor Pamplona
7b90230c45 Merge pull request #572 from davotoula/main
Updated translations for cs/de
2023-09-05 09:01:05 -04:00
David Kaspar
d3468f3eba Added new translations for cs/de 2023-09-05 12:52:59 +02:00
Rif'at Ahdi R
fc9500b45c Update create-release.yml to suppport arm64-v8a and armeabi-v7a 2023-09-05 10:39:36 +08:00
Rif'at Ahdi R
df0b5fcd19 Add arm64-v8a and armeabi-v7a build target 2023-09-05 10:03:35 +08:00
Vitor Pamplona
40e2dba490 v0.75.14 2023-09-02 13:43:15 -04:00
Vitor Pamplona
d13e8bacec Fixes thread ordering issues with two notes with the same idHex 2023-09-02 12:46:24 -04:00
Vitor Pamplona
d3fa05a4df Remeber should be based on the Note 2023-09-02 12:28:16 -04:00
Vitor Pamplona
734dd2e119 Adds UI Feedback for Custom Zaps 2023-09-02 12:27:24 -04:00
Vitor Pamplona
a9ea9ea2ae Improves error message from LN Invoice servers. 2023-09-02 12:26:36 -04:00
Vitor Pamplona
1b521bc140 Grammar adjustment 2023-09-02 12:25:41 -04:00
Vitor Pamplona
364e3c5f5f 0.75.13 2023-09-01 14:28:40 -04:00
Vitor Pamplona
647cda3f90 Merge branch 'main' of https://github.com/vitorpamplona/amethyst 2023-09-01 14:27:52 -04:00
Vitor Pamplona
bcca4d4bcc Adds idHex to the date sorting in replies and comments to make sure the order is correct when 2 posts are placed within the same second. 2023-09-01 14:25:48 -04:00
Vitor Pamplona
0b038dca17 Merge pull request #565 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2023-09-01 14:10:07 -04:00
Crowdin Bot
ad6f63df56 New Crowdin translations by GitHub Action 2023-09-01 17:53:20 +00:00
Vitor Pamplona
b5b8b62a16 Only trigger notification of events within 5minutes from the current time (avoids annoying notifications when rebroadcasting events) 2023-09-01 13:51:23 -04:00
Vitor Pamplona
8d3066b377 Marks which relays are using compression 2023-09-01 12:36:19 -04:00
Vitor Pamplona
18933b4326 Ignores brb.io if in the relay list. It's crashing the app too much with a weird implementation of the WebSockets protocol 2023-09-01 12:36:03 -04:00
Vitor Pamplona
672841c0ed Doesn't notify if the GiftWrap's inner message came from the user. 2023-09-01 12:35:21 -04:00
Vitor Pamplona
872c7cb257 Fixes testing of thread ordering 2023-09-01 12:34:46 -04:00
Vitor Pamplona
bfae5871c8 v0.75.12 2023-08-31 19:05:12 -04:00
Vitor Pamplona
451c5d1648 Removing LiveData Redirections 2023-08-31 19:04:07 -04:00
Vitor Pamplona
3423626c60 Fixes global feed 2023-08-31 19:02:54 -04:00
Vitor Pamplona
8982f02a4a v0.75.11 2023-08-31 17:13:32 -04:00
Vitor Pamplona
f06b5fdacf New thread ordering scheme:
1. Thread author, ascending order by date.
2. My replies, descending by date.
3. My follow's replies, descending by date.
4. Everybody else, descending by date.
2023-08-31 16:41:02 -04:00
Vitor Pamplona
8ea8cf2985 Marks keep screen on to false when leaving a video player. 2023-08-31 15:23:30 -04:00
Vitor Pamplona
2771d34951 Fixes the report card when the author has been blocked by the logged in user but the list loaded before the block user list. 2023-08-31 14:53:43 -04:00
Vitor Pamplona
669b33a3e1 Reducing the height of the banner in the drawer 2023-08-31 13:43:57 -04:00
Vitor Pamplona
c934a1cdfe Reduce the space between display name and status. 2023-08-31 13:36:46 -04:00
Vitor Pamplona
0ccd41f5e8 Fixes wrong EOSE updates. 2023-08-31 13:21:08 -04:00
Vitor Pamplona
1af3bb7dfc Improve cohesiveness of the pruning system. 2023-08-31 11:48:22 -04:00
Vitor Pamplona
f0fcf1ea8a Fixes the grammar in the nip05 error messages 2023-08-31 09:04:09 -04:00
Vitor Pamplona
5325542c81 update vico 2023-08-30 19:56:37 -04:00
Vitor Pamplona
3d9675841b Merge branch 'main' of https://github.com/vitorpamplona/amethyst 2023-08-30 19:32:31 -04:00
Vitor Pamplona
0d475fba0e Merge pull request #564 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2023-08-30 17:31:45 -04:00
Crowdin Bot
05714de945 New Crowdin translations by GitHub Action 2023-08-30 21:14:24 +00:00
Vitor Pamplona
89c1b53c95 Merge pull request #563 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2023-08-30 17:13:08 -04:00
Vitor Pamplona
1c9041f12b Merge branch 'main' of https://github.com/vitorpamplona/amethyst 2023-08-30 10:12:23 -04:00
Crowdin Bot
d3de5e0a42 New Crowdin translations by GitHub Action 2023-08-30 12:50:26 +00:00
Vitor Pamplona
b1bd21533d Merge pull request #562 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2023-08-30 08:49:11 -04:00
Crowdin Bot
51f997a34a New Crowdin translations by GitHub Action 2023-08-30 12:48:43 +00:00
Vitor Pamplona
d5607faadd Requires 10 sat zaps to trigger notifications 2023-08-30 08:47:25 -04:00
Vitor Pamplona
1a9c3ccb79 Must have a valid ZapRequest to process. 2023-08-30 08:44:14 -04:00
Vitor Pamplona
053de4d06f Removes unnecessary checks since the dual LiveData structure was activated 2023-08-29 17:57:47 -04:00
Vitor Pamplona
4016458540 v0.75.10 2023-08-29 17:40:51 -04:00
Vitor Pamplona
8b98efaad7 Refines zap and report pruning. 2023-08-29 17:24:48 -04:00
Vitor Pamplona
217ed90d9a Fix the deletion of reports from authors 2023-08-29 17:14:25 -04:00
Vitor Pamplona
b82aefbd5d Merge pull request #559 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2023-08-29 16:54:41 -04:00
Crowdin Bot
63b954d38d New Crowdin translations by GitHub Action 2023-08-29 20:54:17 +00:00
Vitor Pamplona
76cdea0087 Fixing xml 2023-08-29 16:53:09 -04:00
Vitor Pamplona
da1a3a8f85 Merge branch 'main' of https://github.com/vitorpamplona/amethyst 2023-08-29 16:51:05 -04:00
Vitor Pamplona
d11e92e166 v0.75.9 2023-08-29 16:46:34 -04:00
Vitor Pamplona
61efd237c2 Fixes: https://github.com/vitorpamplona/amethyst/issues/495 and https://github.com/vitorpamplona/amethyst/issues/398 2023-08-29 16:46:27 -04:00
Vitor Pamplona
6099948605 Migrates from Toast Message to a Dialog when Zap fails in the reaction row. 2023-08-29 16:43:45 -04:00
Vitor Pamplona
45b743e7c8 Merge pull request #557 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2023-08-29 16:42:50 -04:00
Crowdin Bot
108c6cbeb4 New Crowdin translations by GitHub Action 2023-08-28 21:18:41 +00:00
Vitor Pamplona
da02891c6a Correct an xml issue from crowdin 2023-08-28 17:12:48 -04:00
Vitor Pamplona
a03e9ea946 Merge pull request #556 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2023-08-28 16:59:51 -04:00
Crowdin Bot
dd4a6f8da0 New Crowdin translations by GitHub Action 2023-08-28 20:57:58 +00:00
Vitor Pamplona
c01033cbb0 Fixes case 2023-08-28 16:56:52 -04:00
Vitor Pamplona
1fe93395c5 gotta choose one 2023-08-28 16:51:05 -04:00
Vitor Pamplona
cf960fe59d Avoid creating english files when they have not been translated yet. 2023-08-28 16:49:12 -04:00
Vitor Pamplona
2416d41131 removes filter to only run crowdin when strings are updated 2023-08-28 16:41:53 -04:00
Vitor Pamplona
0699095d77 triggers crowdin 2023-08-28 16:32:00 -04:00
Vitor Pamplona
6ed3e84d95 This might work 2023-08-28 16:31:09 -04:00
Vitor Pamplona
6c196cfeb7 triggering crowdin 2023-08-28 16:27:26 -04:00
Vitor Pamplona
987784fb89 Fixing yaml again 2023-08-28 16:26:59 -04:00
Vitor Pamplona
d60ac5d73b updates strings 2023-08-28 16:24:04 -04:00
Vitor Pamplona
c2361c034c corrects yaml 2023-08-28 16:23:51 -04:00
Vitor Pamplona
199514e7f3 trigger crowdin 2023-08-28 16:22:07 -04:00
Vitor Pamplona
a1364d19c2 correctly identifies mapping languages. 2023-08-28 16:21:47 -04:00
Vitor Pamplona
e73428b156 updates to strings.xml 2023-08-28 16:09:28 -04:00
Vitor Pamplona
a684a222cb runs github action on any updates to source or dst translations 2023-08-28 16:08:32 -04:00
Vitor Pamplona
1646cbbd68 mapping language codes to crowdin 2023-08-28 16:07:26 -04:00
Vitor Pamplona
035a48a0cd adds a type android 2023-08-28 15:55:32 -04:00
Vitor Pamplona
71be8ce239 testing update to strings.xml 2023-08-28 15:43:49 -04:00
Vitor Pamplona
1ccf9bf467 only runs with strings change 2023-08-28 15:14:47 -04:00
Vitor Pamplona
42a0cd0b1b adding the configuration file for crowdin 2023-08-28 15:12:39 -04:00
Vitor Pamplona
39547b1d11 Adds Crowin 2023-08-28 14:43:22 -04:00
Vitor Pamplona
c69969947b v0.75.8: Fixes status's cache update crash. 2023-08-27 19:33:08 -04:00
Vitor Pamplona
e1738a25a1 Do a warning log and not an error log for verification fails (it usually happens in stringified JSON inside .content) 2023-08-27 19:17:58 -04:00
Vitor Pamplona
6c54082a12 clears the index cache when changing status fields. 2023-08-27 19:16:58 -04:00
Vitor Pamplona
bc5500731d v0.75.7 2023-08-27 18:12:41 -04:00
Vitor Pamplona
0665c552aa BugFix for a crash when receiving a new notification 2023-08-27 18:11:14 -04:00
Vitor Pamplona
1ab8463578 v0.75.6 2023-08-27 17:13:29 -04:00
Vitor Pamplona
e016e68e42 removing unused sentence. 2023-08-27 17:11:49 -04:00
121 changed files with 5436 additions and 2548 deletions

View File

@@ -112,6 +112,28 @@ jobs:
asset_name: amethyst-googleplay-x86_64-${{ github.ref_name }}.apk
asset_content_type: application/zip
- name: Upload Play APK arm64-v8a Asset
id: upload-release-asset-play-arm64-v8a-apk
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: app/build/outputs/apk/play/release/app-play-arm64-v8a-release-unsigned-signed.apk
asset_name: amethyst-googleplay-arm64-v8a-${{ github.ref_name }}.apk
asset_content_type: application/zip
- name: Upload Play APK armeabi-v7a Asset
id: upload-release-asset-play-armeabi-v7a-apk
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: app/build/outputs/apk/play/release/app-play-armeabi-v7a-release-unsigned-signed.apk
asset_name: amethyst-googleplay-armeabi-v7a-${{ github.ref_name }}.apk
asset_content_type: application/zip
# F-Droid APK
- name: Upload F-Droid APK Universal Asset
id: upload-release-asset-fdroid-universal-apk
@@ -146,6 +168,28 @@ jobs:
asset_name: amethyst-fdroid-x86_64-${{ github.ref_name }}.apk
asset_content_type: application/zip
- name: Upload F-Droid APK arm64-v8a Asset
id: upload-release-asset-fdroid-arm64-v8a-apk
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: app/build/outputs/apk/fdroid/release/app-fdroid-arm64-v8a-release-unsigned-signed.apk
asset_name: amethyst-fdroid-arm64-v8a-${{ github.ref_name }}.apk
asset_content_type: application/zip
- name: Upload F-Droid APK armeabi-v7a Asset
id: upload-release-asset-fdroid-armeabi-v7a-apk
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: app/build/outputs/apk/fdroid/release/app-fdroid-armeabi-v7a-release-unsigned-signed.apk
asset_name: amethyst-fdroid-armeabi-v7a-${{ github.ref_name }}.apk
asset_content_type: application/zip
# Google Play AAB

30
.github/workflows/crowdin.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: Crowdin Action
on:
push:
# paths: ["app/src/main/res/**/strings.xml"] // removes filter to allow downloads at any moment.
branches: [ main ]
jobs:
synchronize-with-crowdin:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: crowdin action
uses: crowdin/github-action@v1
with:
upload_sources: true
upload_translations: true
download_translations: true
localization_branch_name: l10n_crowdin_translations
create_pull_request: true
pull_request_title: 'New Crowdin Translations'
pull_request_body: 'New Crowdin translations by [Crowdin GH Action](https://github.com/crowdin/github-action)'
pull_request_base_branch_name: 'main'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

View File

@@ -13,14 +13,14 @@ android {
applicationId "com.vitorpamplona.amethyst"
minSdk 26
targetSdk 34
versionCode 284
versionName "0.75.5"
versionCode 294
versionName "0.76.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary true
}
resourceConfigurations += ['ar', 'cs', 'de', 'eo', 'es', 'fa', 'fr', 'hu', 'ja', 'night', 'nl', 'pt-rBR', 'ru', 'sv-rSE', 'ta', 'th', 'tr', 'uk', 'zh', 'sh-rHK', 'zh-rTW']
resourceConfigurations += ['ar', 'cs', 'de', 'eo', 'es', 'fa', 'fr', 'hu', 'in', 'ja', 'night', 'nl', 'pt-rBR', 'ru', 'sv-rSE', 'ta', 'th', 'tr', 'uk', 'zh', 'sh-rHK', 'zh-rTW']
}
buildTypes {
@@ -54,7 +54,7 @@ android {
abi {
enable true
reset()
include "x86", "x86_64"
include "x86", "x86_64", "arm64-v8a", "armeabi-v7a"
universalApk true
}
}

View File

@@ -1,8 +1,10 @@
package com.vitorpamplona.amethyst
import com.fasterxml.jackson.module.kotlin.readValue
import com.vitorpamplona.amethyst.model.Account
import com.vitorpamplona.amethyst.model.LocalCache
import com.vitorpamplona.amethyst.ui.dal.ThreadFeedFilter
import com.vitorpamplona.quartz.crypto.KeyPair
import com.vitorpamplona.quartz.encoders.ATag
import com.vitorpamplona.quartz.events.Event
import junit.framework.TestCase
@@ -95,7 +97,7 @@ class ThreadAssemblerTest {
val naddr = ATag(30023, "6e468422dfb74a5738702a8823b9b28168abab8655faacb6853cd0ee15deee93", "1680612926599", null)
val filter = ThreadFeedFilter(naddr.toTag())
val filter = ThreadFeedFilter(Account(KeyPair()), naddr.toTag())
val calculatedFeed = filter.feed()
val expecteedOrder = listOf(
@@ -126,14 +128,14 @@ class ThreadAssemblerTest {
"6a58f8315af5badb1bdaeb5489417b94621a4d8e192ae2fedcca0c5dcf0c9cd4",
"6e9bb03c7c40d67fec0d0bb872548ec207ba0ac4533efa137d7bcaca9fb4b191",
"e2ae784b239cac4bad38136e4bd758b87dd261b659ef460450064bf9073edcb3",
"45d4fc726f2cc5b524be862c14fdadc1a24b25b8c6c011eedf2d2909589263e7",
"7a4a2419824669f07081abe2132f8cc0027efbce066ccdf187c897bb7ffa5dc3",
"674c62f84afdc045bc3623ea132d90afdfe4b64249807f65302231115af5406d",
"d54761f672669ea4f4b7592f3b0a30ee28de340b0a7e46b91af94e66905171c9",
"00813a18ac9084cd0948c27027a980e34039a3011f30279a8b52ad87da5a3031",
"87a5bd25aa084cefb3357fc9c2a5b327254fab35fdd7b2d4bd0acddc63d0abe8",
"512962dbada5fd5015fc727a107d5c3f569662de67eab8e5da5a8065012cf11e",
"ce6e32e3e17b6901d2cc70b60f3743e24f885bb6e9da6d88cff516079eac1883",
"7a4a2419824669f07081abe2132f8cc0027efbce066ccdf187c897bb7ffa5dc3",
"45d4fc726f2cc5b524be862c14fdadc1a24b25b8c6c011eedf2d2909589263e7",
"d4a0b4f08d98d82a04292654ec132723cc2cf3fa24ffb6c0833426cb9372f4d5",
"8cdc4676aca93bbafcfbe6784f9b2df54e8ca20fbe69ba55fda487736bfdb7f6",
"7a18dda355525d468b31bba4fa947cba98cc19048d4a3099d5e9ba045d878c26"

View File

@@ -101,14 +101,16 @@ class Account(
val showSensitiveContent: Boolean?
)
val liveHiddenUsers: LiveData<LiveHiddenUsers> = live.combineWith(getBlockListNote().live().metadata) { localLive, liveMuteListEvent ->
val liveBlockedUsers = (liveMuteListEvent?.note?.event as? PeopleListEvent)?.publicAndPrivateUsers(keyPair.privKey)
LiveHiddenUsers(
hiddenUsers = liveBlockedUsers ?: persistentSetOf(),
spammers = localLive?.account?.transientHiddenUsers ?: persistentSetOf(),
showSensitiveContent = showSensitiveContent
)
}.distinctUntilChanged()
val liveHiddenUsers: LiveData<LiveHiddenUsers> by lazy {
live.combineWith(getBlockListNote().live().metadata) { localLive, liveMuteListEvent ->
val liveBlockedUsers = (liveMuteListEvent?.note?.event as? PeopleListEvent)?.publicAndPrivateUsers(keyPair.privKey)
LiveHiddenUsers(
hiddenUsers = liveBlockedUsers ?: persistentSetOf(),
spammers = localLive?.account?.transientHiddenUsers ?: persistentSetOf(),
showSensitiveContent = showSensitiveContent
)
}.distinctUntilChanged()
}
var userProfileCache: User? = null
@@ -1659,14 +1661,18 @@ class Account(
// Ugly, but forces nostr.band as the only search-supporting relay today.
// TODO: Remove when search becomes more available.
if (usersRelayList.none { it.activeTypes.contains(FeedType.SEARCH) }) {
usersRelayList = usersRelayList + Relay(
Constants.forcedRelayForSearch.url,
Constants.forcedRelayForSearch.read,
Constants.forcedRelayForSearch.write,
Constants.forcedRelayForSearch.feedTypes,
proxy
)
val searchRelays = usersRelayList.filter { it.url.removeSuffix("/") in Constants.forcedRelaysForSearchSet }
val hasSearchRelay = usersRelayList.any { it.activeTypes.contains(FeedType.SEARCH) }
if (!hasSearchRelay && searchRelays.isEmpty()) {
usersRelayList = usersRelayList + Constants.forcedRelayForSearch.map {
Relay(
it.url,
it.read,
it.write,
it.feedTypes,
proxy
)
}
}
return usersRelayList.toTypedArray()
@@ -1684,6 +1690,10 @@ class Account(
.toTypedArray()
}
fun activeWriteRelays(): List<Relay> {
return (activeRelays() ?: convertLocalRelays()).filter { it.write }
}
fun reconnectIfRelaysHaveChanged() {
val newRelaySet = activeRelays() ?: convertLocalRelays()
if (!Client.isSameRelaySetConfig(newRelaySet)) {

View File

@@ -1183,13 +1183,7 @@ object LocalCache {
val childrenToBeRemoved = mutableListOf<Note>()
toBeRemoved.forEach {
notes.remove(it.idHex)
// Doesn't need to clean up the replies and mentions.. Too small to matter.
// Counts the replies
it.replyTo?.forEach { parent ->
parent.removeReply(it)
}
removeFromCache(it)
childrenToBeRemoved.addAll(it.removeAllChildNotes())
}
@@ -1208,12 +1202,7 @@ object LocalCache {
val childrenToBeRemoved = mutableListOf<Note>()
toBeRemoved.forEach {
notes.remove(it.idHex)
// Counts the replies
it.replyTo?.forEach { parent ->
parent.removeReply(it)
}
removeFromCache(it)
childrenToBeRemoved.addAll(it.removeAllChildNotes())
}
@@ -1240,21 +1229,12 @@ object LocalCache {
val childrenToBeRemoved = mutableListOf<Note>()
toBeRemoved.forEach {
notes.remove(it.idHex)
val newerVersion = addressables[(it.event as? AddressableEvent)?.address()?.toTag()]
if (newerVersion != null) {
it.moveAllReferencesTo(newerVersion)
}
it.replyTo?.forEach { masterNote ->
masterNote.removeReply(it)
masterNote.removeBoost(it)
masterNote.removeReaction(it)
masterNote.removeZap(it)
masterNote.clearEOSE() // allows reloading of these events
}
removeFromCache(it)
childrenToBeRemoved.addAll(it.removeAllChildNotes())
}
@@ -1274,6 +1254,7 @@ object LocalCache {
it.value.event is ReactionEvent || it.value.event is LnZapEvent || it.value.event is LnZapRequestEvent ||
it.value.event is ReportEvent || it.value.event is GenericRepostEvent
) &&
it.value.replyTo?.any { it.liveSet?.isInUse() == true } != true &&
it.value.liveSet?.isInUse() != true && // don't delete if observing.
it.value.author?.pubkeyHex !in accounts && // don't delete if it is the logged in account
it.value.event?.isTaggedUsers(accounts) != true // don't delete if it's a notification to the logged in user
@@ -1282,27 +1263,88 @@ object LocalCache {
val childrenToBeRemoved = mutableListOf<Note>()
toBeRemoved.forEach {
notes.remove(it.idHex)
it.replyTo?.forEach { masterNote ->
masterNote.removeReply(it)
masterNote.removeBoost(it)
masterNote.removeReaction(it)
masterNote.removeZap(it)
masterNote.removeReport(it)
masterNote.clearEOSE() // allows reloading of these events
}
removeFromCache(it)
childrenToBeRemoved.addAll(it.removeAllChildNotes())
}
removeChildrenOf(childrenToBeRemoved)
toBeRemoved.forEach {
it.replyTo?.forEach { masterNote ->
masterNote.clearEOSE() // allows reloading of these events
}
}
if (toBeRemoved.size > 1) {
println("PRUNE: ${toBeRemoved.size} thread replies removed.")
}
}
private fun removeFromCache(note: Note) {
note.replyTo?.forEach { masterNote ->
masterNote.removeReply(note)
masterNote.removeBoost(note)
masterNote.removeReaction(note)
masterNote.removeZap(note)
masterNote.removeReport(note)
masterNote.clearEOSE() // allows reloading of these events if needed
}
if (note.event is LnZapEvent) {
(note.event as LnZapEvent).zappedAuthor().mapNotNull {
val author = getUserIfExists(it)
author?.removeZap(note)
author?.clearEOSE()
}
}
if (note.event is LnZapRequestEvent) {
(note.event as LnZapRequestEvent).zappedAuthor().mapNotNull {
val author = getUserIfExists(it)
author?.removeZap(note)
author?.clearEOSE()
}
}
if (note.event is ReportEvent) {
(note.event as ReportEvent).reportedAuthor().mapNotNull {
val author = getUserIfExists(it.key)
author?.removeReport(note)
author?.clearEOSE()
}
}
notes.remove(note.idHex)
}
fun removeAuthorLinkTo(note: Note) {
if (note.event is LnZapEvent) {
(note.event as LnZapEvent).zappedAuthor().mapNotNull {
val author = getUserIfExists(it)
author?.removeZap(note)
author?.clearEOSE()
}
}
if (note.event is LnZapRequestEvent) {
(note.event as LnZapRequestEvent).zappedAuthor().mapNotNull {
val author = getUserIfExists(it)
author?.removeZap(note)
author?.clearEOSE()
}
}
if (note.event is ReportEvent) {
(note.event as ReportEvent).reportedAuthor().mapNotNull {
val author = getUserIfExists(it.key)
author?.removeReport(note)
author?.clearEOSE()
}
}
}
fun removeChildrenOf(nextToBeRemoved: List<Note>) {
nextToBeRemoved.forEach { note ->
removeFromCache(note)
}
}
fun pruneExpiredEvents() {
checkNotInMainThread()
@@ -1313,17 +1355,7 @@ object LocalCache {
val childrenToBeRemoved = mutableListOf<Note>()
toBeRemoved.forEach {
notes.remove(it.idHex)
it.replyTo?.forEach { masterNote ->
masterNote.removeReply(it)
masterNote.removeBoost(it)
masterNote.removeReaction(it)
masterNote.removeZap(it)
masterNote.removeReport(it)
masterNote.clearEOSE() // allows reloading of these events
}
removeFromCache(it)
childrenToBeRemoved.addAll(it.removeAllChildNotes())
}
@@ -1350,17 +1382,7 @@ object LocalCache {
}.flatten()
toBeRemoved.forEach {
// Counts the replies
it.replyTo?.forEach { masterNote ->
masterNote.removeReply(it)
masterNote.removeBoost(it)
masterNote.removeReaction(it)
masterNote.removeZap(it)
masterNote.removeReport(it)
}
notes.remove(it.idHex)
removeFromCache(it)
childrenToBeRemoved.addAll(it.removeAllChildNotes())
}
@@ -1369,21 +1391,6 @@ object LocalCache {
println("PRUNE: ${toBeRemoved.size} messages removed because they were Hidden")
}
fun removeChildrenOf(nextToBeRemoved: List<Note>) {
nextToBeRemoved.forEach { note ->
if (note.event is LnZapEvent) {
(note.event as LnZapEvent).zappedAuthor().mapNotNull { getUserIfExists(it)?.removeZap(note) }
}
if (note.event is LnZapRequestEvent) {
(note.event as LnZapRequestEvent).zappedAuthor().mapNotNull { getUserIfExists(it)?.removeZap(note) }
}
if (note.event is ReportEvent) {
(note.event as ReportEvent).reportedAuthor().mapNotNull { getUserIfExists(it.key)?.removeZap(note) }
}
notes.remove(note.idHex)
}
}
fun pruneContactLists(loggedIn: Set<HexKey>) {
checkNotInMainThread()
@@ -1476,9 +1483,10 @@ object LocalCache {
is LiveActivitiesChatMessageEvent -> consume(event, relay)
is LnZapEvent -> {
event.zapRequest?.let {
// must have a valid request
verifyAndConsume(it, relay)
consume(event)
}
consume(event)
}
is LnZapRequestEvent -> consume(event)
is LnZapPaymentRequestEvent -> consume(event)

View File

@@ -136,26 +136,60 @@ open class Note(val idHex: String) {
.format(DateTimeFormatter.ofPattern("uuuu-MM-dd-HH:mm:ss"))
}
data class LevelSignature(val signature: String, val createdAt: Long?, val author: User?)
/**
* This method caches signatures during each execution to avoid recalculation in longer threads
*/
fun replyLevelSignature(
eventsToConsider: Set<Note>,
cachedSignatures: MutableMap<Note, String>
): String {
eventsToConsider: Set<HexKey>,
cachedSignatures: MutableMap<Note, LevelSignature>,
account: User,
accountFollowingSet: Set<String>,
now: Long
): LevelSignature {
val replyTo = replyTo
if (event is RepostEvent || event is GenericRepostEvent || replyTo == null || replyTo.isEmpty()) {
return "/" + formattedDateTime(createdAt() ?: 0) + ";"
return LevelSignature(
signature = "/" + formattedDateTime(createdAt() ?: 0) + idHex.substring(0, 8) + ";",
createdAt = createdAt(),
author = author
)
}
val mySignature = (
val parent = (
replyTo
.filter { it in eventsToConsider } // This forces the signature to be based on a branch, avoiding two roots
.filter { it.idHex in eventsToConsider } // This forces the signature to be based on a branch, avoiding two roots
.map {
cachedSignatures[it] ?: it.replyLevelSignature(eventsToConsider, cachedSignatures).apply { cachedSignatures.put(it, this) }
cachedSignatures[it] ?: it.replyLevelSignature(
eventsToConsider,
cachedSignatures,
account,
accountFollowingSet,
now
).apply { cachedSignatures.put(it, this) }
}
.maxByOrNull { it.length }?.removeSuffix(";") ?: ""
) + "/" + formattedDateTime(createdAt() ?: 0) + ";"
.maxByOrNull { it.signature.length }
)
val parentSignature = parent?.signature?.removeSuffix(";") ?: ""
val threadOrder = if (parent?.author == author && createdAt() != null) {
// author of the thread first, in **ascending** order
"9" + formattedDateTime((parent?.createdAt ?: 0) + (now - (createdAt() ?: 0))) + idHex.substring(0, 8)
} else if (author?.pubkeyHex == account.pubkeyHex) {
"8" + formattedDateTime(createdAt() ?: 0) + idHex.substring(0, 8) // my replies
} else if (author?.pubkeyHex in accountFollowingSet) {
"7" + formattedDateTime(createdAt() ?: 0) + idHex.substring(0, 8) // my follows replies.
} else {
"0" + formattedDateTime(createdAt() ?: 0) + idHex.substring(0, 8) // everyone else.
}
val mySignature = LevelSignature(
signature = parentSignature + "/" + threadOrder + ";",
createdAt = createdAt(),
author = author
)
cachedSignatures[this] = mySignature
return mySignature
@@ -700,6 +734,12 @@ class NoteLiveSet(u: Note) {
it.note.boosts.toImmutableList()
}.distinctUntilChanged()
val relayInfo = innerRelays.map {
it.note.relays.map {
RelayBriefInfo(it)
}.toImmutableList()
}
fun isInUse(): Boolean {
return metadata.hasObservers() ||
reactions.hasObservers() ||
@@ -737,16 +777,12 @@ class NoteBundledRefresherLiveData(val note: Note) : LiveData<NoteState>(NoteSta
}
fun invalidateData() {
if (!hasObservers()) return
checkNotInMainThread()
bundler.invalidate() {
checkNotInMainThread()
if (hasActiveObservers()) {
postValue(NoteState(note))
}
postValue(NoteState(note))
}
}
@@ -782,3 +818,10 @@ class NoteLoadingLiveData<Y>(val note: Note, initialValue: Y?) : MediatorLiveDat
@Immutable
class NoteState(val note: Note)
@Immutable
data class RelayBriefInfo(
val url: String,
val displayUrl: String = url.trim().removePrefix("wss://").removePrefix("ws://").removeSuffix("/").intern(),
val favIcon: String = "https://$displayUrl/favicon.ico".intern()
)

View File

@@ -14,4 +14,6 @@ data class RelaySetupInfo(
val spamCount: Int = 0,
val feedTypes: Set<FeedType>,
val paidRelay: Boolean = false
)
) {
val briefInfo: RelayBriefInfo = RelayBriefInfo(url)
}

View File

@@ -104,6 +104,10 @@ class User(val pubkeyHex: String) {
liveSet?.innerBookmarks?.invalidateData()
}
fun clearEOSE() {
latestEOSEs = emptyMap()
}
fun updateContactList(event: ContactListEvent) {
if (event.id == latestContactList?.id) return
@@ -465,15 +469,12 @@ class UserBundledRefresherLiveData(val user: User) : LiveData<UserState>(UserSta
}
fun invalidateData() {
if (!hasObservers()) return
checkNotInMainThread()
bundler.invalidate() {
checkNotInMainThread()
if (hasActiveObservers()) {
postValue(UserState(user))
}
postValue(UserState(user))
}
}

View File

@@ -47,13 +47,13 @@ class Nip05Verifier() {
if (it.isSuccessful) {
onSuccess(it.body.string())
} else {
onError("Could not resolve $nip05. Error: ${it.code}. Check if the server up and if the address $nip05 is correct")
onError("Could not resolve $nip05. Error: ${it.code}. Check if the server is up and if the address $nip05 is correct")
}
}
}
override fun onFailure(call: Call, e: java.io.IOException) {
onError("Could not resolve $url. Check if the server up and if the address $nip05 is correct")
onError("Could not resolve $url. Check if the server is up and if the address $nip05 is correct")
e.printStackTrace()
}
})

View File

@@ -0,0 +1,103 @@
package com.vitorpamplona.amethyst.service
import android.util.Log
import android.util.LruCache
import com.vitorpamplona.amethyst.model.RelayInformation
import okhttp3.Call
import okhttp3.Callback
import okhttp3.Request
import okhttp3.Response
import java.io.IOException
object Nip11CachedRetriever {
val relayInformationDocumentCache = LruCache<String, RelayInformation>(100)
val retriever = Nip11Retriever()
suspend fun loadRelayInfo(
dirtyUrl: String,
onInfo: (RelayInformation) -> Unit,
onError: (String, Nip11Retriever.ErrorCode, String?) -> Unit
) {
val url = retriever.cleanUrl(dirtyUrl)
val doc = relayInformationDocumentCache.get(url)
if (doc != null) {
onInfo(doc)
} else {
Nip11Retriever().loadRelayInfo(
url,
dirtyUrl,
onInfo = {
relayInformationDocumentCache.put(url, it)
onInfo(it)
},
onError
)
}
}
}
class Nip11Retriever {
enum class ErrorCode {
FAIL_TO_ASSEMBLE_URL,
FAIL_TO_REACH_SERVER,
FAIL_TO_PARSE_RESULT,
FAIL_WITH_HTTP_STATUS
}
fun cleanUrl(dirtyUrl: String): String {
return if (dirtyUrl.contains("://")) {
dirtyUrl
.replace("wss://", "https://")
.replace("ws://", "http://")
} else {
"https://$dirtyUrl"
}
}
suspend fun loadRelayInfo(
url: String,
dirtyUrl: String,
onInfo: (RelayInformation) -> Unit,
onError: (String, ErrorCode, String?) -> Unit
) {
try {
val request: Request = Request
.Builder()
.header("Accept", "application/nostr+json")
.url(url)
.build()
HttpClient.getHttpClient()
.newCall(request)
.enqueue(
object : Callback {
override fun onResponse(call: Call, response: Response) {
checkNotInMainThread()
response.use {
val body = it.body.string()
try {
if (it.isSuccessful) {
onInfo(RelayInformation.fromJson(body))
} else {
onError(dirtyUrl, ErrorCode.FAIL_WITH_HTTP_STATUS, it.code.toString())
}
} catch (e: Exception) {
Log.e("RelayInfoFail", "Resulting Message from Relay $dirtyUrl in not parseable: $body", e)
onError(dirtyUrl, ErrorCode.FAIL_TO_PARSE_RESULT, e.message)
}
}
}
override fun onFailure(call: Call, e: IOException) {
Log.e("RelayInfoFail", "$dirtyUrl unavailable", e)
onError(dirtyUrl, ErrorCode.FAIL_TO_REACH_SERVER, e.message)
}
}
)
} catch (e: Exception) {
Log.e("RelayInfoFail", "Invalid URL $dirtyUrl", e)
onError(dirtyUrl, ErrorCode.FAIL_TO_ASSEMBLE_URL, e.message)
}
}
}

View File

@@ -14,6 +14,7 @@ import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.cancel
import kotlinx.coroutines.launch
import java.util.UUID
import java.util.concurrent.atomic.AtomicBoolean
import kotlin.Error
abstract class NostrDataSource(val debugName: String) {
@@ -23,6 +24,7 @@ abstract class NostrDataSource(val debugName: String) {
data class Counter(var counter: Int)
private var eventCounter = mapOf<String, Counter>()
var changingFilters = AtomicBoolean()
fun printCounter() {
eventCounter.forEach {
@@ -49,7 +51,7 @@ abstract class NostrDataSource(val debugName: String) {
// Log.e("ERROR", "Relay ${relay.url}: ${error.message}")
}
override fun onRelayStateChange(type: Relay.Type, relay: Relay, channel: String?) {
override fun onRelayStateChange(type: Relay.Type, relay: Relay, subscriptionId: String?) {
// Log.d("RELAY", "Relay ${relay.url} ${when (type) {
// Relay.Type.CONNECT -> "connected."
// Relay.Type.DISCONNECT -> "disconnected."
@@ -57,13 +59,19 @@ abstract class NostrDataSource(val debugName: String) {
// Relay.Type.EOSE -> "sent all events it had stored."
// }}")
if (type == Relay.Type.EOSE && channel != null) {
if (type == Relay.Type.EOSE && subscriptionId != null && subscriptionId in subscriptions.keys) {
// updates a per subscripton since date
subscriptions[channel]?.updateEOSE(TimeUtils.now(), relay.url)
subscriptions[subscriptionId]?.updateEOSE(
TimeUtils.fiveMinutesAgo(), // in case people's clock is slighly off.
relay.url
)
}
}
override fun onSendResponse(eventId: String, success: Boolean, message: String, relay: Relay) {
if (success) {
markAsSeenOnRelay(eventId, relay)
}
}
override fun onAuth(relay: Relay, challenge: String) {
@@ -136,6 +144,8 @@ abstract class NostrDataSource(val debugName: String) {
// saves the current content to only update if it changes
val currentFilters = activeSubscriptions.associate { it.id to it.toJson() }
changingFilters.getAndSet(true)
updateChannelFilters()
// Makes sure to only send an updated filter when it actually changes.
@@ -167,12 +177,18 @@ abstract class NostrDataSource(val debugName: String) {
}
}
}
changingFilters.getAndSet(false)
}
open fun consume(event: Event, relay: Relay) {
LocalCache.verifyAndConsume(event, relay)
}
open fun markAsSeenOnRelay(eventId: String, relay: Relay) {
LocalCache.getNoteIfExists(eventId)?.addRelay(relay)
}
abstract fun updateChannelFilters()
open fun auth(relay: Relay, challenge: String) = Unit
}

View File

@@ -54,8 +54,8 @@ object NostrHomeDataSource : NostrDataSource("HomeFeed") {
}
fun createFollowAccountsFilter(): TypedFilter {
val follows = account.selectedUsersFollowList(account.defaultHomeFollowList) ?: emptySet()
val followSet = follows.plus(account.userProfile().pubkeyHex).toList()
val follows = account.selectedUsersFollowList(account.defaultHomeFollowList)
val followSet = follows?.plus(account.userProfile().pubkeyHex)?.toList()?.ifEmpty { null }
return TypedFilter(
types = setOf(FeedType.FOLLOWS),

View File

@@ -134,6 +134,9 @@ object NostrSingleEventDataSource : NostrDataSource("SingleEventFeed") {
}
val singleEventChannel = requestNewChannel { time, relayUrl ->
// Ignores EOSE if it is in the middle of a filter change.
if (changingFilters.get()) return@requestNewChannel
checkNotInMainThread()
eventsToWatch.forEach {

View File

@@ -57,12 +57,12 @@ class LightningAddressResolver() {
if (it.isSuccessful) {
onSuccess(it.body.string())
} else {
onError("The receiver's lightning service at $url is not available. It was calculated from the lightning address \"${lnaddress}\". Error: ${it.code}. Check if the server up and if the lightning address is correct")
onError("The receiver's lightning service at $url is not available. It was calculated from the lightning address \"${lnaddress}\". Error: ${it.code}. Check if the server is up and if the lightning address is correct")
}
}
} catch (e: Exception) {
e.printStackTrace()
onError("Could not resolve $url. Check if the server up and if the lightning address $lnaddress is correct")
onError("Could not resolve $url. Check if the server is up and if the lightning address $lnaddress is correct")
}
}
@@ -164,9 +164,16 @@ class LightningAddressResolver() {
onProgress(0.7f)
onSuccess(pr)
} else {
onProgress(0.0f)
onError("Incorrect invoice amount (${invoiceAmount.toLong()} sats) from server")
}
} ?: onError("Invoice Not Created (element pr not found in the resulting JSON)")
} ?: lnInvoice?.get("reason")?.asText()?.ifBlank { null }?.let { reason ->
onProgress(0.0f)
onError("Unable to create a lightning invoice before sending the zap. The receiver's lightning wallet sent the following error: $reason")
} ?: run {
onProgress(0.0f)
onError("nable to create a lightning invoice before sending the zap. Element pr not found in the resulting JSON.")
}
},
onError = onError
)

View File

@@ -19,28 +19,46 @@ import com.vitorpamplona.quartz.events.LnZapEvent
import com.vitorpamplona.quartz.events.LnZapRequestEvent
import com.vitorpamplona.quartz.events.PrivateDmEvent
import com.vitorpamplona.quartz.events.SealedGossipEvent
import com.vitorpamplona.quartz.utils.TimeUtils
import kotlinx.collections.immutable.persistentSetOf
import java.math.BigDecimal
class EventNotificationConsumer(private val applicationContext: Context) {
suspend fun consume(event: GiftWrapEvent) {
if (!LocalCache.justVerify(event)) return
if (!notificationManager().areNotificationsEnabled()) return
fun consume(event: Event) {
if (LocalCache.notes[event.id] == null) {
if (LocalCache.justVerify(event)) {
LocalCache.justConsume(event, null)
// PushNotification Wraps don't include a receiver.
// Test with all logged in accounts
LocalPreferences.allSavedAccounts().forEach {
val acc = LocalPreferences.loadFromEncryptedStorage(it.npub)
if (acc != null && acc.keyPair.privKey != null) {
consumeIfMatchesAccount(event, acc)
}
}
}
val manager = notificationManager()
if (manager.areNotificationsEnabled()) {
when (event) {
is PrivateDmEvent -> notify(event)
is LnZapEvent -> notify(event)
is GiftWrapEvent -> unwrapAndNotify(event)
}
private suspend fun consumeIfMatchesAccount(pushWrappedEvent: GiftWrapEvent, account: Account) {
val key = account.keyPair.privKey ?: return
pushWrappedEvent.unwrap(key)?.let { notificationEvent ->
if (!LocalCache.justVerify(notificationEvent)) return // invalid event
if (LocalCache.notes[notificationEvent.id] != null) return // already processed
LocalCache.justConsume(notificationEvent, null)
unwrapAndConsume(notificationEvent, account)?.let { innerEvent ->
if (innerEvent is PrivateDmEvent) {
notify(innerEvent, account)
} else if (innerEvent is LnZapEvent) {
notify(innerEvent, account)
} else if (innerEvent is ChatMessageEvent) {
notify(innerEvent, account)
}
}
}
}
fun unwrapAndConsume(event: Event, account: Account): Event? {
private fun unwrapAndConsume(event: Event, account: Account): Event? {
if (!LocalCache.justVerify(event)) return null
return when (event) {
@@ -65,106 +83,106 @@ class EventNotificationConsumer(private val applicationContext: Context) {
}
}
private fun unwrapAndNotify(giftWrap: GiftWrapEvent) {
val giftWrapNote = LocalCache.notes[giftWrap.id] ?: return
private fun notify(event: ChatMessageEvent, acc: Account) {
if (event.createdAt > TimeUtils.fiveMinutesAgo() && // old event being re-broadcasted
event.pubKey != acc.userProfile().pubkeyHex
) { // from the user
LocalPreferences.allSavedAccounts().forEach {
val acc = LocalPreferences.loadFromEncryptedStorage(it.npub)
val chatNote = LocalCache.notes[event.id] ?: return
val chatRoom = event.chatroomKey(acc.keyPair.pubKey.toHexKey())
if (acc != null && acc.userProfile().pubkeyHex == giftWrap.recipientPubKey()) {
val chatEvent = unwrapAndConsume(giftWrap, account = acc)
val followingKeySet = acc.followingKeySet()
if (chatEvent is ChatMessageEvent && acc.keyPair.privKey != null) {
val chatNote = LocalCache.notes[chatEvent.id] ?: return
val chatRoom = chatEvent.chatroomKey(acc.keyPair.pubKey.toHexKey())
val isKnownRoom = (
acc.userProfile().privateChatrooms[chatRoom]?.senderIntersects(followingKeySet) == true ||
acc.userProfile().hasSentMessagesTo(chatRoom)
) && !acc.isAllHidden(chatRoom.users)
val followingKeySet = acc.followingKeySet()
val isKnownRoom = (
acc.userProfile().privateChatrooms[chatRoom]?.senderIntersects(followingKeySet) == true ||
acc.userProfile().hasSentMessagesTo(chatRoom)
) && !acc.isAllHidden(chatRoom.users)
if (isKnownRoom) {
val content = chatNote.event?.content() ?: ""
val user = chatNote.author?.toBestDisplayName() ?: ""
val userPicture = chatNote.author?.profilePicture()
val noteUri = chatNote.toNEvent()
notificationManager().sendDMNotification(chatEvent.id, content, user, userPicture, noteUri, applicationContext)
}
}
if (isKnownRoom) {
val content = chatNote.event?.content() ?: ""
val user = chatNote.author?.toBestDisplayName() ?: ""
val userPicture = chatNote.author?.profilePicture()
val noteUri = chatNote.toNEvent()
notificationManager().sendDMNotification(
event.id,
content,
user,
userPicture,
noteUri,
applicationContext
)
}
}
}
private fun notify(event: PrivateDmEvent) {
private fun notify(event: PrivateDmEvent, acc: Account) {
val note = LocalCache.notes[event.id] ?: return
LocalPreferences.allSavedAccounts().forEach {
val acc = LocalPreferences.loadFromEncryptedStorage(it.npub)
// old event being re-broadcast
if (event.createdAt < TimeUtils.fiveMinutesAgo()) return
if (acc != null && acc.userProfile().pubkeyHex == event.verifiedRecipientPubKey()) {
val followingKeySet = acc.followingKeySet()
if (acc != null && acc.userProfile().pubkeyHex == event.verifiedRecipientPubKey()) {
val followingKeySet = acc.followingKeySet()
val knownChatrooms = acc.userProfile().privateChatrooms.keys.filter {
(
acc.userProfile().privateChatrooms[it]?.senderIntersects(followingKeySet) == true ||
acc.userProfile().hasSentMessagesTo(it)
) && !acc.isAllHidden(it.users)
}.toSet()
val knownChatrooms = acc.userProfile().privateChatrooms.keys.filter {
(
acc.userProfile().privateChatrooms[it]?.senderIntersects(followingKeySet) == true ||
acc.userProfile().hasSentMessagesTo(it)
) && !acc.isAllHidden(it.users)
}.toSet()
note.author?.let {
if (ChatroomKey(persistentSetOf(it.pubkeyHex)) in knownChatrooms) {
val content = acc.decryptContent(note) ?: ""
val user = note.author?.toBestDisplayName() ?: ""
val userPicture = note.author?.profilePicture()
val noteUri = note.toNEvent()
notificationManager().sendDMNotification(event.id, content, user, userPicture, noteUri, applicationContext)
}
note.author?.let {
if (ChatroomKey(persistentSetOf(it.pubkeyHex)) in knownChatrooms) {
val content = acc.decryptContent(note) ?: ""
val user = note.author?.toBestDisplayName() ?: ""
val userPicture = note.author?.profilePicture()
val noteUri = note.toNEvent()
notificationManager().sendDMNotification(event.id, content, user, userPicture, noteUri, applicationContext)
}
}
}
}
private fun notify(event: LnZapEvent) {
private fun notify(event: LnZapEvent, acc: Account) {
val noteZapEvent = LocalCache.notes[event.id] ?: return
val noteZapRequest = event.zapRequest?.id?.let { LocalCache.checkGetOrCreateNote(it) }
// old event being re-broadcast
if (event.createdAt < TimeUtils.fiveMinutesAgo()) return
val noteZapRequest = event.zapRequest?.id?.let { LocalCache.checkGetOrCreateNote(it) } ?: return
val noteZapped = event.zappedPost().firstOrNull()?.let { LocalCache.checkGetOrCreateNote(it) }
LocalPreferences.allSavedAccounts().forEach {
val acc = LocalPreferences.loadFromEncryptedStorage(it.npub)
if ((event.amount ?: BigDecimal.ZERO) < BigDecimal.TEN) return
if (acc != null && acc.userProfile().pubkeyHex == event.zappedAuthor().firstOrNull()) {
val amount = showAmount(event.amount)
val senderInfo = (noteZapRequest?.event as? LnZapRequestEvent)?.let {
val decryptedContent = acc.decryptZapContentAuthor(noteZapRequest)
if (decryptedContent != null) {
val author = LocalCache.getOrCreateUser(decryptedContent.pubKey)
Pair(author, decryptedContent.content)
} else if (!noteZapRequest.event?.content().isNullOrBlank()) {
Pair(noteZapRequest.author, noteZapRequest.event?.content())
} else {
Pair(noteZapRequest.author, null)
}
if (acc != null && acc.userProfile().pubkeyHex == event.zappedAuthor().firstOrNull()) {
val amount = showAmount(event.amount)
val senderInfo = (noteZapRequest.event as? LnZapRequestEvent)?.let {
val decryptedContent = acc.decryptZapContentAuthor(noteZapRequest)
if (decryptedContent != null) {
val author = LocalCache.getOrCreateUser(decryptedContent.pubKey)
Pair(author, decryptedContent.content)
} else if (!noteZapRequest.event?.content().isNullOrBlank()) {
Pair(noteZapRequest.author, noteZapRequest.event?.content())
} else {
Pair(noteZapRequest.author, null)
}
val zappedContent =
noteZapped?.let { it1 -> acc.decryptContent(it1)?.split("\n")?.get(0) }
val user = senderInfo?.first?.toBestDisplayName() ?: ""
var title = applicationContext.getString(R.string.app_notification_zaps_channel_message, amount)
senderInfo?.second?.ifBlank { null }?.let {
title += " ($it)"
}
var content = applicationContext.getString(R.string.app_notification_zaps_channel_message_from, user)
zappedContent?.let {
content += " " + applicationContext.getString(R.string.app_notification_zaps_channel_message_for, zappedContent)
}
val userPicture = senderInfo?.first?.profilePicture()
val noteUri = "nostr:Notifications"
notificationManager().sendZapNotification(event.id, content, title, userPicture, noteUri, applicationContext)
}
val zappedContent =
noteZapped?.let { it1 -> acc.decryptContent(it1)?.split("\n")?.get(0) }
val user = senderInfo?.first?.toBestDisplayName() ?: ""
var title = applicationContext.getString(R.string.app_notification_zaps_channel_message, amount)
senderInfo?.second?.ifBlank { null }?.let {
title += " ($it)"
}
var content = applicationContext.getString(R.string.app_notification_zaps_channel_message_from, user)
zappedContent?.let {
content += " " + applicationContext.getString(R.string.app_notification_zaps_channel_message_for, zappedContent)
}
val userPicture = senderInfo?.first?.profilePicture()
val noteUri = "nostr:Notifications"
notificationManager().sendZapNotification(event.id, content, title, userPicture, noteUri, applicationContext)
}
}

View File

@@ -16,9 +16,7 @@ object Constants {
}
val defaultRelays = arrayOf(
// Free relays for DMs and Follows
RelaySetupInfo("wss://no.str.cr", read = true, write = true, feedTypes = activeTypes),
RelaySetupInfo("wss://relay.snort.social", read = true, write = true, feedTypes = activeTypes),
// Free relays for only DMs and Follows due to the amount of spam
RelaySetupInfo("wss://relay.damus.io", read = true, write = true, feedTypes = activeTypes),
// Chats
@@ -40,6 +38,7 @@ object Constants {
// NewRelayListViewModel.Relay("wss://brb.io", read = true, write = true, feedTypes = activeTypes),
// Paid relays
RelaySetupInfo("wss://relay.snort.social", read = true, write = false, feedTypes = activeTypesGlobalChats),
RelaySetupInfo("wss://relay.nostr.com.au", read = true, write = false, feedTypes = activeTypesGlobalChats),
RelaySetupInfo("wss://eden.nostr.land", read = true, write = false, feedTypes = activeTypesGlobalChats),
RelaySetupInfo("wss://nostr.milou.lol", read = true, write = false, feedTypes = activeTypesGlobalChats),
@@ -51,8 +50,15 @@ object Constants {
RelaySetupInfo("wss://relay.nostrati.com", read = true, write = false, feedTypes = activeTypesGlobalChats),
// Supporting NIP-50
RelaySetupInfo("wss://relay.nostr.band", read = true, write = false, feedTypes = activeTypesSearch)
RelaySetupInfo("wss://relay.nostr.band", read = true, write = false, feedTypes = activeTypesSearch),
RelaySetupInfo("wss://filter.nostr.wine", read = true, write = false, feedTypes = activeTypesSearch),
RelaySetupInfo("wss://relay.noswhere.com", read = true, write = false, feedTypes = activeTypesSearch)
)
val forcedRelayForSearch = RelaySetupInfo("wss://relay.nostr.band", read = true, write = false, feedTypes = activeTypesSearch)
val forcedRelayForSearch = arrayOf(
RelaySetupInfo("wss://relay.nostr.band", read = true, write = false, feedTypes = activeTypesSearch),
RelaySetupInfo("wss://filter.nostr.wine", read = true, write = false, feedTypes = activeTypesSearch),
RelaySetupInfo("wss://relay.noswhere.com", read = true, write = false, feedTypes = activeTypesSearch)
)
val forcedRelaysForSearchSet = forcedRelayForSearch.map { it.url }
}

View File

@@ -47,6 +47,7 @@ class Relay(
private var listeners = setOf<Listener>()
private var socket: WebSocket? = null
private var isReady: Boolean = false
private var usingCompression: Boolean = false
var eventDownloadCounterInBytes = 0
var eventUploadCounterInBytes = 0
@@ -85,6 +86,9 @@ class Relay(
private var connectingBlock = AtomicBoolean()
fun connectAndRun(onConnected: (Relay) -> Unit) {
// BRB is crashing OkHttp Deflater object :(
if (url.contains("brb.io")) return
// If there is a connection, don't wait.
if (connectingBlock.getAndSet(true)) {
return
@@ -115,7 +119,10 @@ class Relay(
override fun onOpen(webSocket: WebSocket, response: Response) {
checkNotInMainThread()
markConnectionAsReady(response.receivedResponseAtMillis - response.sentRequestAtMillis)
markConnectionAsReady(
pingInMs = response.receivedResponseAtMillis - response.sentRequestAtMillis,
usingCompression = response.headers.get("Sec-WebSocket-Extensions")?.contains("permessage-deflate") ?: false
)
// Log.w("Relay", "Relay OnOpen, Loading All subscriptions $url")
onConnected(this@Relay)
@@ -175,15 +182,17 @@ class Relay(
}
}
fun markConnectionAsReady(pingInMs: Long) {
fun markConnectionAsReady(pingInMs: Long, usingCompression: Boolean) {
this.afterEOSE = false
this.isReady = true
this.pingInMs = pingInMs
this.usingCompression = usingCompression
}
fun markConnectionAsClosed() {
this.socket = null
this.isReady = false
this.usingCompression = false
this.afterEOSE = false
this.closingTimeInSeconds = TimeUtils.now()
}
@@ -239,6 +248,7 @@ class Relay(
socket?.close(1000, "Normal close")
socket = null
isReady = false
usingCompression = false
afterEOSE = false
}

View File

@@ -1,9 +1,13 @@
package com.vitorpamplona.amethyst.service.relays
import androidx.lifecycle.LiveData
import androidx.compose.runtime.Immutable
import com.vitorpamplona.amethyst.service.checkNotInMainThread
import com.vitorpamplona.quartz.events.Event
import com.vitorpamplona.quartz.events.EventInterface
import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.SharedFlow
import kotlinx.coroutines.flow.asSharedFlow
/**
* RelayPool manages the connection to multiple Relays and lets consumers deal with simple events.
@@ -12,6 +16,11 @@ object RelayPool : Relay.Listener {
private var relays = listOf<Relay>()
private var listeners = setOf<Listener>()
// Backing property to avoid flow emissions from other classes
private var _lastStatus = RelayPoolStatus(0, 0)
private val _statusFlow = MutableSharedFlow<RelayPoolStatus>(1, 1, onBufferOverflow = BufferOverflow.DROP_OLDEST)
val statusFlow: SharedFlow<RelayPoolStatus> = _statusFlow.asSharedFlow()
fun availableRelays(): Int {
return relays.size
}
@@ -76,11 +85,13 @@ object RelayPool : Relay.Listener {
fun addRelay(relay: Relay) {
relay.register(this)
relays += relay
updateStatus()
}
fun removeRelay(relay: Relay) {
relay.unregister(this)
relays = relays.minus(relay)
updateStatus()
}
fun register(listener: Listener) {
@@ -109,12 +120,14 @@ object RelayPool : Relay.Listener {
override fun onError(relay: Relay, subscriptionId: String, error: Error) {
listeners.forEach { it.onError(error, subscriptionId, relay) }
refreshObservers()
updateStatus()
}
override fun onRelayStateChange(relay: Relay, type: Relay.Type, channel: String?) {
listeners.forEach { it.onRelayStateChange(type, relay, channel) }
refreshObservers()
if (type != Relay.Type.EOSE) {
updateStatus()
}
}
override fun onSendResponse(relay: Relay, eventId: String, success: Boolean, message: String) {
@@ -125,18 +138,15 @@ object RelayPool : Relay.Listener {
listeners.forEach { it.onAuth(relay, challenge) }
}
// Observers line up here.
val live: RelayPoolLiveData = RelayPoolLiveData(this)
private fun refreshObservers() {
live.refresh()
private fun updateStatus() {
val connected = connectedRelays()
val available = availableRelays()
if (_lastStatus.connected != connected || _lastStatus.available != available) {
_lastStatus = RelayPoolStatus(connected, available)
_statusFlow.tryEmit(_lastStatus)
}
}
}
class RelayPoolLiveData(val relays: RelayPool) : LiveData<RelayPoolState>(RelayPoolState(relays)) {
fun refresh() {
postValue(RelayPoolState(relays))
}
}
class RelayPoolState(val relays: RelayPool)
@Immutable
data class RelayPoolStatus(val connected: Int, val available: Int, val isConnected: Boolean = connected > 0)

View File

@@ -1,5 +1,6 @@
package com.vitorpamplona.amethyst.ui
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.net.ConnectivityManager
@@ -65,7 +66,10 @@ class MainActivity : AppCompatActivity() {
themeViewModel.onChange(LocalPreferences.getTheme())
AmethystTheme(themeViewModel) {
// A surface container using the 'background' color from the theme
Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background
) {
val accountStateViewModel: AccountStateViewModel = viewModel {
AccountStateViewModel(this@MainActivity)
}
@@ -81,7 +85,8 @@ class MainActivity : AppCompatActivity() {
.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.build()
val connectivityManager = getSystemService(ConnectivityManager::class.java) as ConnectivityManager
val connectivityManager =
getSystemService(ConnectivityManager::class.java) as ConnectivityManager
connectivityManager.requestNetwork(networkRequest, networkCallback)
}
@@ -153,7 +158,8 @@ class MainActivity : AppCompatActivity() {
super.onCapabilitiesChanged(network, networkCapabilities)
GlobalScope.launch(Dispatchers.IO) {
val hasMobileData = networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
val hasMobileData =
networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
val hasWifi = networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
Log.d("NETWORKCALLBACK", "onCapabilitiesChanged: hasMobileData $hasMobileData")
Log.d("NETWORKCALLBACK", "onCapabilitiesChanged: hasWifi $hasWifi")
@@ -178,9 +184,15 @@ class MainActivity : AppCompatActivity() {
class GetMediaActivityResultContract : ActivityResultContracts.GetContent() {
@SuppressLint("MissingSuperCall")
override fun createIntent(context: Context, input: String): Intent {
return super.createIntent(context, input).apply {
// Force only images and videos to be selectable
// Force OPEN Document because of the resulting URI must be passed to the
// Playback service and the picker's permissions only allow the activity to read the URI
return Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
// Force only images and videos to be selectable
type = "*/*"
putExtra(Intent.EXTRA_MIME_TYPES, arrayOf("image/*", "video/*"))
}
}

View File

@@ -3,6 +3,7 @@ package com.vitorpamplona.amethyst.ui.actions
import android.graphics.Bitmap
import android.net.Uri
import android.os.Build
import android.util.Log
import android.util.Size
import android.widget.Toast
import androidx.compose.foundation.Image
@@ -79,13 +80,7 @@ fun NewMediaView(uri: Uri, onClose: () -> Unit, postViewModel: NewMediaModel, ac
var showRelaysDialog by remember {
mutableStateOf(false)
}
var relayList = account.activeRelays()?.filter {
it.write
}?.map {
it
} ?: account.convertLocalRelays().filter {
it.write
}
var relayList = account.activeWriteRelays()
Dialog(
onDismissRequest = { onClose() },
@@ -101,7 +96,7 @@ fun NewMediaView(uri: Uri, onClose: () -> Unit, postViewModel: NewMediaModel, ac
) {
if (showRelaysDialog) {
RelaySelectionDialog(
list = relayList,
preSelectedList = relayList,
onClose = {
showRelaysDialog = false
},
@@ -221,7 +216,8 @@ fun ImageVideoPost(postViewModel: NewMediaModel, accountViewModel: AccountViewMo
try {
bitmap = resolver.loadThumbnail(it, Size(1200, 1000), null)
} catch (e: Exception) {
postViewModel.imageUploadingError.emit("Unable to load file")
postViewModel.imageUploadingError.emit("Unable to load thumbnail, but the video can be uploaded")
Log.w("NewPostView", "Couldn't create thumbnail, but the video can be uploaded", e)
}
}
}

View File

@@ -133,13 +133,7 @@ fun NewPostView(
var showRelaysDialog by remember {
mutableStateOf(false)
}
var relayList = account.activeRelays()?.filter {
it.write
}?.map {
it
} ?: account.convertLocalRelays().filter {
it.write
}
var relayList = account.activeWriteRelays()
LaunchedEffect(Unit) {
postViewModel.load(account, baseReplyTo, quote)
@@ -169,7 +163,7 @@ fun NewPostView(
) {
if (showRelaysDialog) {
RelaySelectionDialog(
list = relayList,
preSelectedList = relayList,
onClose = {
showRelaysDialog = false
},
@@ -1376,8 +1370,8 @@ fun ImageVideoDescription(
try {
bitmap = resolver.loadThumbnail(uri, Size(1200, 1000), null)
} catch (e: Exception) {
onError("Unable to load file")
Log.e("NewPostView", "Couldn't create thumbnail for $uri")
onError("Unable to load thumbnail")
Log.w("NewPostView", "Couldn't create thumbnail, but the video can be uploaded", e)
}
}
}

View File

@@ -4,6 +4,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.vitorpamplona.amethyst.model.Account
import com.vitorpamplona.amethyst.model.RelaySetupInfo
import com.vitorpamplona.amethyst.service.Nip11CachedRetriever
import com.vitorpamplona.amethyst.service.relays.Constants
import com.vitorpamplona.amethyst.service.relays.FeedType
import com.vitorpamplona.amethyst.service.relays.RelayPool
@@ -24,6 +25,7 @@ class NewRelayListViewModel : ViewModel() {
fun load(account: Account) {
this.account = account
clear()
loadRelayDocuments()
}
fun create() {
@@ -36,17 +38,34 @@ class NewRelayListViewModel : ViewModel() {
clear()
}
fun loadRelayDocuments() {
viewModelScope.launch(Dispatchers.IO) {
_relays.value.forEach { item ->
Nip11CachedRetriever.loadRelayInfo(
dirtyUrl = item.url,
onInfo = {
togglePaidRelay(item, it.limitation?.payment_required ?: false)
},
onError = { url, errorCode, exceptionMessage ->
}
)
}
}
}
fun clear() {
_relays.update {
var relayFile = account.userProfile().latestContactList?.relays()
// Ugly, but forces nostr.band as the only search-supporting relay today.
// TODO: Remove when search becomes more available.
if (relayFile?.none { it.key == Constants.forcedRelayForSearch.url } == true) {
relayFile = relayFile + Pair(
Constants.forcedRelayForSearch.url,
ContactListEvent.ReadWrite(Constants.forcedRelayForSearch.read, Constants.forcedRelayForSearch.write)
)
if (relayFile?.none { it.key.removeSuffix("/") in Constants.forcedRelaysForSearchSet } == true) {
relayFile = relayFile + Constants.forcedRelayForSearch.map {
Pair(
it.url,
ContactListEvent.ReadWrite(it.read, it.write)
)
}
}
if (relayFile != null) {

View File

@@ -1,8 +1,5 @@
package com.vitorpamplona.amethyst.ui.actions
import android.content.Context
import android.util.Log
import android.widget.Toast
import androidx.compose.animation.Crossfade
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@@ -28,27 +25,24 @@ import androidx.compose.ui.unit.sp
import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.model.RelayBriefInfo
import com.vitorpamplona.amethyst.model.RelayInformation
import com.vitorpamplona.amethyst.service.HttpClient
import com.vitorpamplona.amethyst.service.checkNotInMainThread
import com.vitorpamplona.amethyst.ui.components.ClickableEmail
import com.vitorpamplona.amethyst.ui.components.ClickableUrl
import com.vitorpamplona.amethyst.ui.note.LoadUser
import com.vitorpamplona.amethyst.ui.note.RenderRelayIcon
import com.vitorpamplona.amethyst.ui.note.UserCompose
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.theme.DoubleHorzSpacer
import com.vitorpamplona.amethyst.ui.theme.DoubleVertSpacer
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import okhttp3.Call
import okhttp3.Callback
import okhttp3.Request
import okhttp3.Response
import java.io.IOException
import com.vitorpamplona.amethyst.ui.theme.Size55dp
import com.vitorpamplona.amethyst.ui.theme.StdPadding
@OptIn(ExperimentalLayoutApi::class)
@Composable
fun RelayInformationDialog(
onClose: () -> Unit,
relayBriefInfo: RelayBriefInfo,
relayInfo: RelayInformation,
accountViewModel: AccountViewModel,
nav: (String) -> Unit
@@ -79,18 +73,25 @@ fun RelayInformationDialog(
})
}
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Center
) {
Title(relayInfo.name ?: "")
}
Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Center, modifier = StdPadding.fillMaxWidth()) {
Column() {
RenderRelayIcon(
relayBriefInfo.favIcon,
Size55dp
)
}
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Center
) {
SectionContent(relayInfo.description ?: "")
Spacer(modifier = DoubleHorzSpacer)
Column(horizontalAlignment = Alignment.CenterHorizontally) {
Row() {
Title(relayInfo.name?.trim() ?: "")
}
Row() {
SubtitleContent(relayInfo.description?.trim() ?: "")
}
}
}
Section(stringResource(R.string.owner))
@@ -212,7 +213,7 @@ private fun DisplaySupportedNips(relayInfo: RelayInformation) {
val text = item.toString().padStart(2, '0')
Box(Modifier.padding(10.dp)) {
ClickableUrl(
urlText = "$text",
urlText = text,
url = "https://github.com/nostr-protocol/nips/blob/master/$text.md"
)
}
@@ -222,7 +223,7 @@ private fun DisplaySupportedNips(relayInfo: RelayInformation) {
val text = item.padStart(2, '0')
Box(Modifier.padding(10.dp)) {
ClickableUrl(
urlText = "$text",
urlText = text,
url = "https://github.com/nostr-protocol/nips/blob/master/$text.md"
)
}
@@ -258,13 +259,18 @@ private fun DisplayOwnerInformation(
@Composable
fun Title(text: String) {
Spacer(modifier = DoubleVertSpacer)
Text(
text = text,
fontWeight = FontWeight.Bold,
fontSize = 24.sp
)
Spacer(modifier = DoubleVertSpacer)
}
@Composable
fun SubtitleContent(text: String) {
Text(
text = text
)
}
@Composable
@@ -285,85 +291,3 @@ fun SectionContent(text: String) {
text = text
)
}
fun loadRelayInfo(
dirtyUrl: String,
context: Context,
scope: CoroutineScope,
onInfo: (RelayInformation) -> Unit
) {
try {
val url = if (dirtyUrl.contains("://")) {
dirtyUrl
.replace("wss://", "https://")
.replace("ws://", "http://")
} else {
"https://$dirtyUrl"
}
val request: Request = Request
.Builder()
.header("Accept", "application/nostr+json")
.url(url)
.build()
HttpClient.getHttpClient()
.newCall(request)
.enqueue(
object : Callback {
override fun onResponse(call: Call, response: Response) {
checkNotInMainThread()
response.use {
val body = it.body.string()
try {
if (it.isSuccessful) {
onInfo(RelayInformation.fromJson(body))
} else {
scope.launch {
Toast
.makeText(
context,
context.getString(R.string.an_error_occurred_trying_to_get_relay_information, dirtyUrl),
Toast.LENGTH_SHORT
).show()
}
}
} catch (e: Exception) {
Log.e("RelayInfoFail", "Resulting Message from Relay $dirtyUrl in not parseable: $body", e)
scope.launch {
Toast
.makeText(
context,
context.getString(R.string.an_error_occurred_trying_to_get_relay_information, dirtyUrl),
Toast.LENGTH_SHORT
).show()
}
}
}
}
override fun onFailure(call: Call, e: IOException) {
Log.e("RelayInfoFail", "$dirtyUrl unavailable", e)
scope.launch {
Toast
.makeText(
context,
context.getString(R.string.an_error_occurred_trying_to_get_relay_information, dirtyUrl),
Toast.LENGTH_SHORT
).show()
}
}
}
)
} catch (e: Exception) {
Log.e("RelayInfoFail", "Invalid URL $dirtyUrl", e)
scope.launch {
Toast
.makeText(
context,
context.getString(R.string.an_error_occurred_trying_to_get_relay_information, dirtyUrl),
Toast.LENGTH_SHORT
).show()
}
}
}

View File

@@ -29,19 +29,27 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.model.RelayBriefInfo
import com.vitorpamplona.amethyst.model.RelayInformation
import com.vitorpamplona.amethyst.service.Nip11Retriever
import com.vitorpamplona.amethyst.service.relays.Relay
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import kotlinx.coroutines.launch
data class RelayList(
val relay: Relay,
val relayInfo: RelayBriefInfo,
val isSelected: Boolean
)
data class RelayInfoDialog(
val relayBriefInfo: RelayBriefInfo,
val relayInfo: RelayInformation
)
@Composable
fun RelaySelectionDialog(
list: List<Relay>,
preSelectedList: List<Relay>,
onClose: () -> Unit,
onPost: (list: List<Relay>) -> Unit,
accountViewModel: AccountViewModel,
@@ -49,34 +57,29 @@ fun RelaySelectionDialog(
) {
val scope = rememberCoroutineScope()
val context = LocalContext.current
val relayList = accountViewModel.account.activeRelays()?.filter {
it.write
}?.map {
it
} ?: accountViewModel.account.convertLocalRelays().filter {
it.write
}
var relays by remember {
mutableStateOf(
relayList.map {
accountViewModel.account.activeWriteRelays().map {
RelayList(
it,
list.any { relay -> it.url == relay.url }
relay = it,
relayInfo = RelayBriefInfo(it.url),
isSelected = preSelectedList.any { relay -> it.url == relay.url }
)
}
)
}
var relayInfo: RelayInformation? by remember { mutableStateOf(null) }
var relayInfo: RelayInfoDialog? by remember { mutableStateOf(null) }
if (relayInfo != null) {
relayInfo?.let {
RelayInformationDialog(
onClose = {
relayInfo = null
},
relayInfo = relayInfo!!,
accountViewModel,
nav
relayInfo = it.relayInfo,
relayBriefInfo = it.relayBriefInfo,
accountViewModel = accountViewModel,
nav = nav
)
}
@@ -115,14 +118,14 @@ fun RelaySelectionDialog(
}
)
PostButton(
SaveButton(
onPost = {
val selectedRelays = relays.filter { it.isSelected }
if (selectedRelays.isEmpty()) {
scope.launch {
Toast.makeText(context, context.getString(R.string.select_a_relay_to_continue), Toast.LENGTH_SHORT).show()
}
return@PostButton
return@SaveButton
}
onPost(selectedRelays.map { it.relay })
onClose()
@@ -153,10 +156,7 @@ fun RelaySelectionDialog(
key = { _, item -> item.relay.url }
) { index, item ->
RelaySwitch(
text = item.relay.url
.removePrefix("ws://")
.removePrefix("wss://")
.removeSuffix("/"),
text = item.relayInfo.displayUrl,
checked = item.isSelected,
onClick = {
relays = relays.mapIndexed { j, item ->
@@ -168,9 +168,30 @@ fun RelaySelectionDialog(
}
},
onLongPress = {
loadRelayInfo(item.relay.url, context, scope) {
relayInfo = it
}
accountViewModel.retrieveRelayDocument(
item.relay.url,
onInfo = {
relayInfo = RelayInfoDialog(RelayBriefInfo(item.relay.url), it)
},
onError = { url, errorCode, exceptionMessage ->
val msg = when (errorCode) {
Nip11Retriever.ErrorCode.FAIL_TO_ASSEMBLE_URL -> context.getString(R.string.relay_information_document_error_assemble_url, url, exceptionMessage)
Nip11Retriever.ErrorCode.FAIL_TO_REACH_SERVER -> context.getString(R.string.relay_information_document_error_assemble_url, url, exceptionMessage)
Nip11Retriever.ErrorCode.FAIL_TO_PARSE_RESULT -> context.getString(R.string.relay_information_document_error_assemble_url, url, exceptionMessage)
Nip11Retriever.ErrorCode.FAIL_WITH_HTTP_STATUS -> context.getString(R.string.relay_information_document_error_assemble_url, url, exceptionMessage)
}
scope.launch {
Toast
.makeText(
context,
msg,
Toast.LENGTH_SHORT
)
.show()
}
}
)
}
)
}

View File

@@ -59,38 +59,38 @@ fun buildAnnotatedStringWithUrlHighlighting(text: AnnotatedString, color: Color)
)
)
newWord + restOfWord
} else if (Patterns.WEB_URL.matcher(word).matches()) {
val startIndex = builderBefore.toString().length
val endIndex = startIndex + word.length
val startNew = builderAfter.toString().length
val endNew = startNew + word.length
substitutions.add(
RangesChanges(
TextRange(startIndex, endIndex),
TextRange(startNew, endNew)
)
)
builderBefore.append("$word ")
builderAfter.append("$word ")
word
} else {
builderBefore.append(word + " ")
builderAfter.append(word + " ")
builderBefore.append("$word ")
builderAfter.append("$word ")
word
}
} catch (e: Exception) {
// if it can't parse the key, don't try to change.
builderBefore.append(word + " ")
builderAfter.append(word + " ")
builderBefore.append("$word ")
builderAfter.append("$word ")
word
}
}.joinToString(" ")
}.joinToString("\n")
)
val newText = toAnnotatedString()
newText.split("\\s+".toRegex()).filter { word ->
Patterns.WEB_URL.matcher(word).matches()
}.forEach {
val startIndex = text.indexOf(it)
val endIndex = startIndex + it.length
addStyle(
style = SpanStyle(
color = color,
textDecoration = TextDecoration.None
),
start = startIndex,
end = endIndex
)
}
substitutions.forEach {
addStyle(
style = SpanStyle(

View File

@@ -704,6 +704,7 @@ fun ControlWhenPlayerIsActive(
controller.addListener(listener)
onDispose {
view.keepScreenOn = false
controller.removeListener(listener)
}
}

View File

@@ -1,22 +1,30 @@
package com.vitorpamplona.amethyst.ui.dal
import androidx.compose.runtime.Immutable
import com.vitorpamplona.amethyst.model.Account
import com.vitorpamplona.amethyst.model.KIND3_FOLLOWS
import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.model.ThreadAssembler
import com.vitorpamplona.quartz.utils.TimeUtils
@Immutable
class ThreadFeedFilter(val noteId: String) : FeedFilter<Note>() {
class ThreadFeedFilter(val account: Account, val noteId: String) : FeedFilter<Note>() {
override fun feedKey(): String {
return noteId
}
override fun feed(): List<Note> {
val cachedSignatures: MutableMap<Note, String> = mutableMapOf()
val eventsToWatch = ThreadAssembler().findThreadFor(noteId) ?: emptySet()
val cachedSignatures: MutableMap<Note, Note.LevelSignature> = mutableMapOf()
val followingSet = account.selectedUsersFollowList(KIND3_FOLLOWS) ?: emptySet()
val eventsToWatch = ThreadAssembler().findThreadFor(noteId)
val eventsInHex = eventsToWatch.map { it.idHex }.toSet()
val now = TimeUtils.now()
// Currently orders by date of each event, descending, at each level of the reply stack
val order = compareByDescending<Note> { it.replyLevelSignature(eventsToWatch, cachedSignatures) }
val order = compareByDescending<Note> {
it.replyLevelSignature(eventsInHex, cachedSignatures, account.userProfile(), followingSet, now).signature
}
return eventsToWatch.sortedWith(order)
}

View File

@@ -451,8 +451,6 @@ fun GenericMainTopBar(
nav: (String) -> Unit,
content: @Composable (AccountViewModel) -> Unit
) {
val coroutineScope = rememberCoroutineScope()
Column(modifier = BottomTopHeight) {
MyTopAppBar(
elevation = 0.dp,
@@ -476,6 +474,7 @@ fun GenericMainTopBar(
}
},
navigationIcon = {
val coroutineScope = rememberCoroutineScope()
LoggedInUserPictureDrawer(accountViewModel) {
coroutineScope.launch {
scaffoldState.drawerState.open()
@@ -506,10 +505,9 @@ private fun LoggedInUserPictureDrawer(
accountViewModel: AccountViewModel,
onClick: () -> Unit
) {
val accountUserState by accountViewModel.account.userProfile().live().metadata.observeAsState()
val profilePicture by accountViewModel.account.userProfile().live().profilePictureChanges.observeAsState()
val pubkeyHex = remember { accountUserState?.user?.pubkeyHex ?: "" }
val profilePicture = remember(accountUserState) { accountUserState?.user?.profilePicture() }
val pubkeyHex = remember { accountViewModel.userProfile().pubkeyHex }
IconButton(
onClick = onClick

View File

@@ -40,6 +40,7 @@ import androidx.compose.material.icons.filled.Send
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
@@ -63,7 +64,6 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.lifecycle.map
import androidx.lifecycle.viewmodel.compose.viewModel
import coil.compose.AsyncImage
import com.vitorpamplona.amethyst.BuildConfig
import com.vitorpamplona.amethyst.LocalPreferences
@@ -72,11 +72,12 @@ import com.vitorpamplona.amethyst.ServiceManager
import com.vitorpamplona.amethyst.model.Account
import com.vitorpamplona.amethyst.model.User
import com.vitorpamplona.amethyst.service.HttpClient
import com.vitorpamplona.amethyst.service.relays.RelayPool
import com.vitorpamplona.amethyst.service.relays.RelayPoolStatus
import com.vitorpamplona.amethyst.ui.actions.NewRelayListView
import com.vitorpamplona.amethyst.ui.components.CreateTextWithEmoji
import com.vitorpamplona.amethyst.ui.components.RobohashAsyncImageProxy
import com.vitorpamplona.amethyst.ui.note.LoadStatuses
import com.vitorpamplona.amethyst.ui.screen.RelayPoolViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountBackupDialog
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.ConnectOrbotDialog
@@ -109,7 +110,7 @@ fun DrawerContent(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 25.dp)
.padding(top = 100.dp),
.padding(top = 70.dp),
scaffoldState,
accountViewModel,
nav
@@ -162,7 +163,7 @@ fun ProfileContent(
contentScale = ContentScale.FillWidth,
modifier = Modifier
.fillMaxWidth()
.height(150.dp)
.height(120.dp)
)
} else {
Image(
@@ -171,7 +172,7 @@ fun ProfileContent(
contentScale = ContentScale.FillWidth,
modifier = Modifier
.fillMaxWidth()
.height(150.dp)
.height(120.dp)
)
}
@@ -220,7 +221,6 @@ fun ProfileContent(
maxLines = 1,
overflow = TextOverflow.Ellipsis,
modifier = Modifier
.padding(top = 15.dp)
.clickable(
onClick = {
nav(route)
@@ -455,7 +455,6 @@ fun ListContent(
}
val coroutineScope = rememberCoroutineScope()
val relayViewModel: RelayPoolViewModel = viewModel { RelayPoolViewModel() }
var wantsToEditRelays by remember {
mutableStateOf(false)
}
@@ -491,7 +490,7 @@ fun ListContent(
)
IconRowRelays(
relayViewModel = relayViewModel,
accountViewModel = accountViewModel,
onClick = {
coroutineScope.launch {
scaffoldState.drawerState.close()
@@ -634,27 +633,37 @@ private fun enableTor(
}
@Composable
private fun RelayStatus(
relayViewModel: RelayPoolViewModel
) {
val connectedRelaysText by relayViewModel.connectionStatus.observeAsState("--/--")
val isConnected by relayViewModel.isConnected.observeAsState(false)
private fun RelayStatus(accountViewModel: AccountViewModel) {
val connectedRelaysText by RelayPool.statusFlow.collectAsState(initial = RelayPoolStatus(0, 0))
RenderRelayStatus(connectedRelaysText, isConnected)
RenderRelayStatus(connectedRelaysText)
}
@Composable
private fun RenderRelayStatus(
connectedRelaysText: String,
isConnected: Boolean
relayPool: RelayPoolStatus
) {
val text by remember(relayPool) {
derivedStateOf {
"${relayPool.connected}/${relayPool.available}"
}
}
val placeHolder = MaterialTheme.colors.placeholderText
val color by remember(relayPool) {
derivedStateOf {
if (relayPool.isConnected) {
placeHolder
} else {
Color.Red
}
}
}
Text(
text = connectedRelaysText,
color = if (isConnected) {
MaterialTheme.colors.placeholderText
} else {
Color.Red
},
text = text,
color = color,
style = MaterialTheme.typography.subtitle1
)
}
@@ -710,7 +719,7 @@ fun IconRow(title: String, icon: Int, tint: Color, onClick: () -> Unit, onLongCl
}
@Composable
fun IconRowRelays(relayViewModel: RelayPoolViewModel, onClick: () -> Unit) {
fun IconRowRelays(accountViewModel: AccountViewModel, onClick: () -> Unit) {
Row(
modifier = Modifier
.fillMaxWidth()
@@ -737,7 +746,7 @@ fun IconRowRelays(relayViewModel: RelayPoolViewModel, onClick: () -> Unit) {
Spacer(modifier = Modifier.width(Size16dp))
RelayStatus(relayViewModel = relayViewModel)
RelayStatus(accountViewModel = accountViewModel)
}
}
}

View File

@@ -62,57 +62,63 @@ fun BlankNote(modifier: Modifier = Modifier, showDivider: Boolean = false, idHex
@Composable
fun HiddenNote(
reports: ImmutableSet<Note>,
isHiddenAuthor: Boolean,
accountViewModel: AccountViewModel,
modifier: Modifier = Modifier,
isQuote: Boolean = false,
nav: (String) -> Unit,
onClick: () -> Unit
) {
Column(modifier = modifier) {
Row(modifier = Modifier.padding(horizontal = if (!isQuote) 12.dp else 6.dp)) {
Column(modifier = Modifier.padding(start = if (!isQuote) 10.dp else 5.dp)) {
Row(
modifier = Modifier.padding(
start = 20.dp,
end = 20.dp
),
verticalAlignment = Alignment.CenterVertically
) {
Column(horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.padding(30.dp)) {
Text(
text = stringResource(R.string.post_was_flagged_as_inappropriate_by),
color = Color.Gray
Column(modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally) {
Row(
modifier = Modifier.padding(start = if (!isQuote) 30.dp else 25.dp, end = 20.dp),
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically
) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.padding(30.dp)
) {
Text(
text = stringResource(R.string.post_was_flagged_as_inappropriate_by),
color = Color.Gray
)
FlowRow(modifier = Modifier.padding(top = 10.dp)) {
if (isHiddenAuthor) {
UserPicture(
user = accountViewModel.userProfile(),
size = Size35dp,
nav = nav,
accountViewModel = accountViewModel
)
}
reports.forEach {
NoteAuthorPicture(
baseNote = it,
size = Size35dp,
nav = nav,
accountViewModel = accountViewModel
)
FlowRow(modifier = Modifier.padding(top = 10.dp)) {
reports.forEach {
NoteAuthorPicture(
baseNote = it,
nav = nav,
accountViewModel = accountViewModel,
size = Size35dp
)
}
}
Button(
modifier = Modifier.padding(top = 10.dp),
onClick = onClick,
shape = ButtonBorder,
colors = ButtonDefaults
.buttonColors(
backgroundColor = MaterialTheme.colors.primary
),
contentPadding = PaddingValues(vertical = 6.dp, horizontal = 16.dp)
) {
Text(text = stringResource(R.string.show_anyway), color = Color.White)
}
}
}
Divider(
thickness = 0.25.dp
)
Button(
modifier = Modifier.padding(top = 10.dp),
onClick = onClick,
shape = ButtonBorder,
colors = ButtonDefaults
.buttonColors(
backgroundColor = MaterialTheme.colors.primary
),
contentPadding = PaddingValues(vertical = 6.dp, horizontal = 16.dp)
) {
Text(text = stringResource(R.string.show_anyway), color = Color.White)
}
}
}
Divider(
thickness = 0.25.dp
)
}
}

View File

@@ -76,7 +76,6 @@ import com.vitorpamplona.quartz.events.LiveActivitiesEvent.Companion.STATUS_LIVE
import com.vitorpamplona.quartz.events.LiveActivitiesEvent.Companion.STATUS_PLANNED
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.persistentSetOf
import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@@ -135,13 +134,9 @@ fun CheckHiddenChannelCardCompose(
nav: (String) -> Unit
) {
if (showHidden) {
var state by remember {
val state by remember {
mutableStateOf(
NoteComposeReportState(
isAcceptable = true,
canPreview = true,
relevantReports = persistentSetOf()
)
AccountViewModel.NoteComposeReportState()
)
}
@@ -185,19 +180,14 @@ fun LoadedChannelCardCompose(
) {
var state by remember {
mutableStateOf(
NoteComposeReportState(
isAcceptable = true,
canPreview = true,
relevantReports = persistentSetOf()
)
AccountViewModel.NoteComposeReportState()
)
}
val scope = rememberCoroutineScope()
WatchForReports(note, accountViewModel) { newIsAcceptable, newCanPreview, newRelevantReports ->
if (newIsAcceptable != state.isAcceptable || newCanPreview != state.canPreview) {
val newState = NoteComposeReportState(newIsAcceptable, newCanPreview, newRelevantReports)
WatchForReports(note, accountViewModel) { newState ->
if (state != newState) {
scope.launch(Dispatchers.Main) {
state = newState
}
@@ -219,7 +209,7 @@ fun LoadedChannelCardCompose(
@Composable
fun RenderChannelCardReportState(
state: NoteComposeReportState,
state: AccountViewModel.NoteComposeReportState,
note: Note,
routeForLastRead: String? = null,
modifier: Modifier = Modifier,
@@ -233,6 +223,7 @@ fun RenderChannelCardReportState(
if (showHiddenNote) {
HiddenNote(
state.relevantReports,
state.isHiddenAuthor,
accountViewModel,
modifier,
false,

View File

@@ -69,8 +69,6 @@ import com.vitorpamplona.quartz.events.ChatMessageEvent
import com.vitorpamplona.quartz.events.ImmutableListOfLists
import com.vitorpamplona.quartz.events.PrivateDmEvent
import com.vitorpamplona.quartz.events.toImmutableListOfLists
import kotlinx.collections.immutable.persistentSetOf
import kotlinx.collections.immutable.toImmutableSet
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@@ -152,17 +150,13 @@ fun LoadedChatMessageCompose(
) {
var state by remember {
mutableStateOf(
NoteComposeReportState(
isAcceptable = true,
canPreview = true,
relevantReports = persistentSetOf()
)
AccountViewModel.NoteComposeReportState()
)
}
WatchForReports(baseNote, accountViewModel) { newIsAcceptable, newCanPreview, newRelevantReports ->
if (newIsAcceptable != state.isAcceptable || newCanPreview != state.canPreview) {
state = NoteComposeReportState(newIsAcceptable, newCanPreview, newRelevantReports.toImmutableSet())
WatchForReports(baseNote, accountViewModel) { newState ->
if (state != newState) {
state = newState
}
}
@@ -178,6 +172,7 @@ fun LoadedChatMessageCompose(
if (it) {
HiddenNote(
state.relevantReports,
state.isHiddenAuthor,
accountViewModel,
Modifier,
innerQuote,

View File

@@ -151,7 +151,7 @@ fun RotateStatuses(
accountViewModel: AccountViewModel,
nav: (String) -> Unit
) {
var indexToDisplay by remember {
var indexToDisplay by remember(statuses) {
mutableIntStateOf(0)
}

View File

@@ -38,7 +38,6 @@ import androidx.compose.material.Text
import androidx.compose.material.darkColors
import androidx.compose.material.lightColors
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.Stable
@@ -83,6 +82,7 @@ import com.vitorpamplona.amethyst.model.Channel
import com.vitorpamplona.amethyst.model.ConnectivityType
import com.vitorpamplona.amethyst.model.LocalCache
import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.model.RelayBriefInfo
import com.vitorpamplona.amethyst.model.User
import com.vitorpamplona.amethyst.service.OnlineChecker
import com.vitorpamplona.amethyst.service.ReverseGeoLocationUtil
@@ -196,7 +196,6 @@ import com.vitorpamplona.quartz.events.TextNoteEvent
import com.vitorpamplona.quartz.events.UserMetadata
import com.vitorpamplona.quartz.events.toImmutableListOfLists
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.ImmutableSet
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.persistentSetOf
import kotlinx.collections.immutable.toImmutableList
@@ -277,11 +276,7 @@ fun CheckHiddenNoteCompose(
// Ignores reports as well
val state by remember {
mutableStateOf(
NoteComposeReportState(
isAcceptable = true,
canPreview = true,
relevantReports = persistentSetOf()
)
AccountViewModel.NoteComposeReportState()
)
}
@@ -324,13 +319,6 @@ fun CheckHiddenNoteCompose(
}
}
@Immutable
data class NoteComposeReportState(
val isAcceptable: Boolean,
val canPreview: Boolean,
val relevantReports: ImmutableSet<Note>
)
@Composable
fun LoadedNoteCompose(
note: Note,
@@ -347,19 +335,14 @@ fun LoadedNoteCompose(
) {
var state by remember {
mutableStateOf(
NoteComposeReportState(
isAcceptable = true,
canPreview = true,
relevantReports = persistentSetOf()
)
AccountViewModel.NoteComposeReportState()
)
}
val scope = rememberCoroutineScope()
WatchForReports(note, accountViewModel) { newIsAcceptable, newCanPreview, newRelevantReports ->
if (newIsAcceptable != state.isAcceptable || newCanPreview != state.canPreview) {
val newState = NoteComposeReportState(newIsAcceptable, newCanPreview, newRelevantReports)
WatchForReports(note, accountViewModel) { newState ->
if (state != newState) {
scope.launch(Dispatchers.Main) {
state = newState
}
@@ -386,7 +369,7 @@ fun LoadedNoteCompose(
@Composable
fun RenderReportState(
state: NoteComposeReportState,
state: AccountViewModel.NoteComposeReportState,
note: Note,
routeForLastRead: String? = null,
modifier: Modifier = Modifier,
@@ -405,6 +388,7 @@ fun RenderReportState(
if (showHiddenNote) {
HiddenNote(
state.relevantReports,
state.isHiddenAuthor,
accountViewModel,
modifier,
isBoostedNote,
@@ -436,7 +420,7 @@ fun RenderReportState(
fun WatchForReports(
note: Note,
accountViewModel: AccountViewModel,
onChange: (Boolean, Boolean, ImmutableSet<Note>) -> Unit
onChange: (AccountViewModel.NoteComposeReportState) -> Unit
) {
val userFollowsState by accountViewModel.userFollows.observeAsState()
val noteReportsState by note.live().reports.observeAsState()
@@ -1641,9 +1625,9 @@ fun DisplayRelaySet(
) {
val noteEvent = baseNote.event as? RelaySetEvent ?: return
val relays by remember {
mutableStateOf<ImmutableList<String>>(
noteEvent.relays().toImmutableList()
val relays by remember(baseNote) {
mutableStateOf(
noteEvent.relays().map { RelayBriefInfo(it) }.toImmutableList()
)
}
@@ -1698,7 +1682,7 @@ fun DisplayRelaySet(
toMembersShow.forEach { relay ->
Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = CenterVertically) {
Text(
relay.trim().removePrefix("wss://").removePrefix("ws://").removeSuffix("/"),
text = relay.displayUrl,
fontWeight = FontWeight.Bold,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
@@ -1708,7 +1692,7 @@ fun DisplayRelaySet(
)
Column(modifier = Modifier.padding(start = 10.dp)) {
RelayOptionsAction(relay, accountViewModel, nav)
RelayOptionsAction(relay.url, accountViewModel, nav)
}
}
}
@@ -2414,40 +2398,41 @@ private fun ReplyRow(
}
}
val showChannelInfo by remember(note) {
derivedStateOf {
if (noteEvent is ChannelMessageEvent || noteEvent is LiveActivitiesChatMessageEvent) {
note.channelHex()
} else {
null
}
}
}
showChannelInfo?.let {
ChannelHeader(
channelHex = it,
showVideo = false,
showBottomDiviser = false,
sendToChannel = true,
modifier = MaterialTheme.colors.replyModifier.padding(10.dp),
accountViewModel = accountViewModel,
nav = nav
)
}
if (showReply) {
val replyingDirectlyTo = remember { note.replyTo?.lastOrNull { it.event?.kind() != CommunityDefinitionEvent.kind } }
if (replyingDirectlyTo != null && unPackReply) {
ReplyNoteComposition(replyingDirectlyTo, backgroundColor, accountViewModel, nav)
Spacer(modifier = StdVertSpacer)
} else {
// ReplyInformation(note.replyTo, noteEvent.mentions(), accountViewModel, nav)
}
} else {
val showChannelReply by remember {
derivedStateOf {
(noteEvent is ChannelMessageEvent && (note.replyTo != null || noteEvent.hasAnyTaggedUser())) ||
(noteEvent is LiveActivitiesChatMessageEvent && (note.replyTo != null || noteEvent.hasAnyTaggedUser()))
} else if (showChannelInfo != null) {
val replies = remember { note.replyTo?.toImmutableList() }
val mentions = remember {
(note.event as? BaseTextNoteEvent)?.mentions()?.toImmutableList()
?: persistentListOf()
}
}
if (showChannelReply) {
val channelHex = note.channelHex()
channelHex?.let {
ChannelHeader(
channelHex = channelHex,
showVideo = false,
showBottomDiviser = false,
sendToChannel = true,
modifier = remember { Modifier.padding(vertical = 5.dp) },
accountViewModel = accountViewModel,
nav = nav
)
val replies = remember { note.replyTo?.toImmutableList() }
val mentions = remember { (note.event as? BaseTextNoteEvent)?.mentions()?.toImmutableList() ?: persistentListOf() }
ReplyInformationChannel(replies, mentions, accountViewModel, nav)
}
ReplyInformationChannel(replies, mentions, accountViewModel, nav)
}
}
}
@@ -2680,14 +2665,14 @@ private fun BadgeBox(
accountViewModel: AccountViewModel,
nav: (String) -> Unit
) {
val isRepost by remember {
val isRepost by remember(baseNote) {
derivedStateOf {
baseNote.event is RepostEvent || baseNote.event is GenericRepostEvent
}
}
if (isRepost) {
val baseReply by remember {
val baseReply by remember(baseNote) {
derivedStateOf {
baseNote.replyTo?.lastOrNull()
}

View File

@@ -932,6 +932,12 @@ fun ZapReaction(
},
onMultipleChoices = {
wantsToZap = true
},
onError = {
scope.launch {
zappingProgress = 0f
showErrorMessageDialog = it
}
}
)
},
@@ -983,11 +989,29 @@ fun ZapReaction(
}
if (wantsToChangeZapAmount) {
UpdateZapAmountDialog({ wantsToChangeZapAmount = false }, accountViewModel = accountViewModel)
UpdateZapAmountDialog(
onClose = { wantsToChangeZapAmount = false },
accountViewModel = accountViewModel
)
}
if (wantsToSetCustomZap) {
ZapCustomDialog({ wantsToSetCustomZap = false }, accountViewModel, baseNote)
ZapCustomDialog(
onClose = { wantsToSetCustomZap = false },
onError = {
scope.launch {
zappingProgress = 0f
showErrorMessageDialog = it
}
},
onProgress = {
scope.launch(Dispatchers.Main) {
zappingProgress = it
}
},
accountViewModel = accountViewModel,
baseNote = baseNote
)
}
if (zappingProgress > 0.00001 && zappingProgress < 0.99999) {
@@ -1020,7 +1044,8 @@ private fun zapClick(
scope: CoroutineScope,
context: Context,
onZappingProgress: (Float) -> Unit,
onMultipleChoices: () -> Unit
onMultipleChoices: () -> Unit,
onError: (String) -> Unit
) {
if (accountViewModel.account.zapAmountChoices.isEmpty()) {
scope.launch {
@@ -1049,14 +1074,7 @@ private fun zapClick(
null,
"",
context,
onError = {
scope.launch {
onZappingProgress(0f)
Toast
.makeText(context, it, Toast.LENGTH_SHORT)
.show()
}
},
onError = onError,
onProgress = {
scope.launch(Dispatchers.Main) {
onZappingProgress(it)

View File

@@ -11,17 +11,16 @@ import androidx.compose.material.MaterialTheme
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ExpandMore
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.Stable
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.ui.screen.equalImmutableLists
import com.vitorpamplona.amethyst.model.RelayBriefInfo
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.theme.DoubleVertSpacer
import com.vitorpamplona.amethyst.ui.theme.ShowMoreRelaysButtonBoxModifer
@@ -29,80 +28,40 @@ import com.vitorpamplona.amethyst.ui.theme.ShowMoreRelaysButtonIconButtonModifie
import com.vitorpamplona.amethyst.ui.theme.ShowMoreRelaysButtonIconModifier
import com.vitorpamplona.amethyst.ui.theme.placeholderText
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@Composable
public fun RelayBadges(baseNote: Note, accountViewModel: AccountViewModel, nav: (String) -> Unit) {
var expanded by remember { mutableStateOf(false) }
var showShowMore by remember { mutableStateOf(false) }
var lazyRelayList by remember {
val baseNumber = baseNote.relays.map {
it.removePrefix("wss://").removePrefix("ws://")
}.toImmutableList()
mutableStateOf(baseNumber)
}
var shortRelayList by remember {
mutableStateOf(lazyRelayList.take(3).toImmutableList())
}
val scope = rememberCoroutineScope()
WatchRelayLists(baseNote) { relayList ->
if (!equalImmutableLists(relayList, lazyRelayList)) {
scope.launch(Dispatchers.Main) {
lazyRelayList = relayList
shortRelayList = relayList.take(3).toImmutableList()
}
}
val nextShowMore = relayList.size > 3
if (nextShowMore != showShowMore) {
scope.launch(Dispatchers.Main) {
// only triggers recomposition when actually different
showShowMore = nextShowMore
}
val relayList by baseNote.live().relayInfo.observeAsState(persistentListOf())
val shortRelayList by remember {
derivedStateOf {
relayList.take(3).toImmutableList()
}
}
Spacer(DoubleVertSpacer)
if (expanded) {
VerticalRelayPanelWithFlow(lazyRelayList, accountViewModel, nav)
VerticalRelayPanelWithFlow(relayList, accountViewModel, nav)
} else {
VerticalRelayPanelWithFlow(shortRelayList, accountViewModel, nav)
}
if (showShowMore && !expanded) {
if (relayList.size > 3 && !expanded) {
ShowMoreRelaysButton {
expanded = true
}
}
}
@Composable
private fun WatchRelayLists(baseNote: Note, onListChanges: (ImmutableList<String>) -> Unit) {
val noteRelaysState by baseNote.live().relays.observeAsState()
LaunchedEffect(key1 = noteRelaysState) {
launch(Dispatchers.IO) {
val relayList = noteRelaysState?.note?.relays?.map {
it.removePrefix("wss://").removePrefix("ws://")
} ?: emptyList()
onListChanges(relayList.toImmutableList())
}
}
}
@OptIn(ExperimentalLayoutApi::class)
@Composable
@Stable
private fun VerticalRelayPanelWithFlow(
relays: ImmutableList<String>,
relays: ImmutableList<RelayBriefInfo>,
accountViewModel: AccountViewModel,
nav: (String) -> Unit
) {

View File

@@ -1,5 +1,6 @@
package com.vitorpamplona.amethyst.ui.note
import android.widget.Toast
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
@@ -17,7 +18,6 @@ import androidx.compose.material.icons.filled.ChevronRight
import androidx.compose.material.ripple.rememberRipple
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.mutableStateOf
@@ -29,13 +29,15 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import androidx.lifecycle.map
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.model.RelayBriefInfo
import com.vitorpamplona.amethyst.model.RelayInformation
import com.vitorpamplona.amethyst.service.Nip11Retriever
import com.vitorpamplona.amethyst.ui.actions.RelayInformationDialog
import com.vitorpamplona.amethyst.ui.actions.loadRelayInfo
import com.vitorpamplona.amethyst.ui.components.RobohashFallbackAsyncImage
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.theme.RelayIconFilter
@@ -44,6 +46,8 @@ import com.vitorpamplona.amethyst.ui.theme.Size15Modifier
import com.vitorpamplona.amethyst.ui.theme.Size15dp
import com.vitorpamplona.amethyst.ui.theme.StdStartPadding
import com.vitorpamplona.amethyst.ui.theme.placeholderText
import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.launch
@Composable
public fun RelayBadgesHorizontal(baseNote: Note, accountViewModel: AccountViewModel, nav: (String) -> Unit) {
@@ -59,15 +63,13 @@ public fun RelayBadgesHorizontal(baseNote: Note, accountViewModel: AccountViewMo
@OptIn(ExperimentalLayoutApi::class)
@Composable
fun RenderRelayList(baseNote: Note, expanded: MutableState<Boolean>, accountViewModel: AccountViewModel, nav: (String) -> Unit) {
val noteRelays by baseNote.live().relays.map {
it.note.relays
}.observeAsState(baseNote.relays)
val noteRelays by baseNote.live().relayInfo.observeAsState()
FlowRow(StdStartPadding) {
val relaysToDisplay = remember(noteRelays, expanded.value) {
if (expanded.value) noteRelays else noteRelays.take(3)
if (expanded.value) noteRelays else noteRelays?.take(3)?.toImmutableList()
}
relaysToDisplay.forEach {
relaysToDisplay?.forEach {
RenderRelay(it, accountViewModel, nav)
}
}
@@ -104,14 +106,7 @@ fun ChatRelayExpandButton(onClick: () -> Unit) {
}
@Composable
fun RenderRelay(dirtyUrl: String, accountViewModel: AccountViewModel, nav: (String) -> Unit) {
val iconUrl by remember(dirtyUrl) {
derivedStateOf {
val cleanUrl = dirtyUrl.trim().removePrefix("wss://").removePrefix("ws://").removeSuffix("/")
"https://$cleanUrl/favicon.ico"
}
}
fun RenderRelay(relay: RelayBriefInfo, accountViewModel: AccountViewModel, nav: (String) -> Unit) {
var relayInfo: RelayInformation? by remember { mutableStateOf(null) }
if (relayInfo != null) {
@@ -120,8 +115,9 @@ fun RenderRelay(dirtyUrl: String, accountViewModel: AccountViewModel, nav: (Stri
relayInfo = null
},
relayInfo = relayInfo!!,
accountViewModel,
nav
relayBriefInfo = relay,
accountViewModel = accountViewModel,
nav = nav
)
}
@@ -130,7 +126,7 @@ fun RenderRelay(dirtyUrl: String, accountViewModel: AccountViewModel, nav: (Stri
val interactionSource = remember { MutableInteractionSource() }
val ripple = rememberRipple(bounded = false, radius = Size15dp)
val clickableModifier = remember(dirtyUrl) {
val clickableModifier = remember(relay) {
Modifier
.padding(1.dp)
.size(Size15dp)
@@ -139,9 +135,30 @@ fun RenderRelay(dirtyUrl: String, accountViewModel: AccountViewModel, nav: (Stri
interactionSource = interactionSource,
indication = ripple,
onClick = {
loadRelayInfo(dirtyUrl, context, scope) {
relayInfo = it
}
accountViewModel.retrieveRelayDocument(
relay.url,
onInfo = {
relayInfo = it
},
onError = { url, errorCode, exceptionMessage ->
val msg = when (errorCode) {
Nip11Retriever.ErrorCode.FAIL_TO_ASSEMBLE_URL -> context.getString(R.string.relay_information_document_error_assemble_url, url, exceptionMessage)
Nip11Retriever.ErrorCode.FAIL_TO_REACH_SERVER -> context.getString(R.string.relay_information_document_error_assemble_url, url, exceptionMessage)
Nip11Retriever.ErrorCode.FAIL_TO_PARSE_RESULT -> context.getString(R.string.relay_information_document_error_assemble_url, url, exceptionMessage)
Nip11Retriever.ErrorCode.FAIL_WITH_HTTP_STATUS -> context.getString(R.string.relay_information_document_error_assemble_url, url, exceptionMessage)
}
scope.launch {
Toast
.makeText(
context,
msg,
Toast.LENGTH_SHORT
)
.show()
}
}
)
}
)
}
@@ -149,17 +166,17 @@ fun RenderRelay(dirtyUrl: String, accountViewModel: AccountViewModel, nav: (Stri
Box(
modifier = clickableModifier
) {
RenderRelayIcon(iconUrl)
RenderRelayIcon(relay.favIcon)
}
}
@Composable
private fun RenderRelayIcon(iconUrl: String) {
fun RenderRelayIcon(iconUrl: String, size: Dp = Size13dp) {
val backgroundColor = MaterialTheme.colors.background
val iconModifier = remember {
Modifier
.size(Size13dp)
.size(size)
.clip(shape = CircleShape)
.background(backgroundColor)
}

View File

@@ -197,7 +197,11 @@ class UpdateZapAmountViewModel(val account: Account) : ViewModel() {
@OptIn(ExperimentalLayoutApi::class)
@Composable
fun UpdateZapAmountDialog(onClose: () -> Unit, nip47uri: String? = null, accountViewModel: AccountViewModel) {
fun UpdateZapAmountDialog(
onClose: () -> Unit,
nip47uri: String? = null,
accountViewModel: AccountViewModel
) {
val context = LocalContext.current
val scope = rememberCoroutineScope()

View File

@@ -73,9 +73,7 @@ fun NoteAuthorPicture(
modifier: Modifier = Modifier,
onClick: ((User) -> Unit)? = null
) {
val author by baseNote.live().metadata.map {
it.note.author
}.distinctUntilChanged().observeAsState(baseNote.author)
val author by baseNote.live().authorChanges.observeAsState(baseNote.author)
Crossfade(targetState = author) {
if (it == null) {
@@ -112,23 +110,19 @@ fun UserPicture(
accountViewModel: AccountViewModel,
nav: (String) -> Unit
) {
val route by remember {
val route by remember(user) {
derivedStateOf {
"User/${user.pubkeyHex}"
}
}
val scope = rememberCoroutineScope()
ClickableUserPicture(
baseUser = user,
size = size,
accountViewModel = accountViewModel,
modifier = pictureModifier,
onClick = {
scope.launch {
nav(route)
}
nav(route)
}
)
}
@@ -274,9 +268,7 @@ fun InnerBaseUserPicture(
accountViewModel: AccountViewModel,
modifier: Modifier
) {
val userProfile by baseUser.live().metadata.map {
it.user.profilePicture()
}.distinctUntilChanged().observeAsState(baseUser.profilePicture())
val userProfile by baseUser.live().profilePictureChanges.observeAsState(baseUser.profilePicture())
PictureAndFollowingMark(
userHex = baseUser.pubkeyHex,
@@ -508,9 +500,7 @@ fun NoteDropDownMenu(note: Note, popupExpanded: MutableState<Boolean>, accountVi
fun WatchBookmarksFollowsAndAccount(note: Note, accountViewModel: AccountViewModel, onNew: (DropDownParams) -> Unit) {
val followState by accountViewModel.userProfile().live().follows.observeAsState()
val bookmarkState by accountViewModel.userProfile().live().bookmarks.observeAsState()
val showSensitiveContent by accountViewModel.accountLiveData.map {
it.account.showSensitiveContent
}.distinctUntilChanged().observeAsState(accountViewModel.account.showSensitiveContent)
val showSensitiveContent by accountViewModel.showSensitiveContentChanges.observeAsState(accountViewModel.account.showSensitiveContent)
LaunchedEffect(key1 = followState, key2 = bookmarkState, key3 = showSensitiveContent) {
launch(Dispatchers.IO) {

View File

@@ -1,6 +1,5 @@
package com.vitorpamplona.amethyst.ui.note
import android.widget.Toast
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.*
@@ -31,8 +30,6 @@ import com.vitorpamplona.amethyst.ui.theme.ButtonBorder
import com.vitorpamplona.amethyst.ui.theme.placeholderText
import com.vitorpamplona.quartz.events.LnZapEvent
import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class ZapOptionstViewModel : ViewModel() {
private var account: Account? = null
@@ -61,17 +58,20 @@ class ZapOptionstViewModel : ViewModel() {
}
@Composable
fun ZapCustomDialog(onClose: () -> Unit, accountViewModel: AccountViewModel, baseNote: Note) {
fun ZapCustomDialog(
onClose: () -> Unit,
onError: (text: String) -> Unit,
onProgress: (percent: Float) -> Unit,
accountViewModel: AccountViewModel,
baseNote: Note
) {
val context = LocalContext.current
val scope = rememberCoroutineScope()
val postViewModel: ZapOptionstViewModel = viewModel()
LaunchedEffect(accountViewModel) {
postViewModel.load(accountViewModel.account)
}
var zappingProgress by remember { mutableStateOf(0f) }
val zapTypes = listOf(
Triple(LnZapEvent.ZapType.PUBLIC, stringResource(id = R.string.zap_type_public), stringResource(id = R.string.zap_type_public_explainer)),
Triple(LnZapEvent.ZapType.PRIVATE, stringResource(id = R.string.zap_type_private), stringResource(id = R.string.zap_type_private_explainer)),
@@ -111,17 +111,8 @@ fun ZapCustomDialog(onClose: () -> Unit, accountViewModel: AccountViewModel, bas
null,
postViewModel.customMessage.text,
context,
onError = {
zappingProgress = 0f
scope.launch {
Toast.makeText(context, it, Toast.LENGTH_SHORT).show()
}
},
onProgress = {
scope.launch(Dispatchers.Main) {
zappingProgress = it
}
},
onError = onError,
onProgress = onProgress,
zapType = selectedZapType
)
onClose()

View File

@@ -95,10 +95,10 @@ class NostrDiscoverChatFeedViewModel(val account: Account) : FeedViewModel(Disco
}
}
class NostrThreadFeedViewModel(val noteId: String) : FeedViewModel(ThreadFeedFilter(noteId)) {
class Factory(val noteId: String) : ViewModelProvider.Factory {
class NostrThreadFeedViewModel(account: Account, noteId: String) : FeedViewModel(ThreadFeedFilter(account, noteId)) {
class Factory(val account: Account, val noteId: String) : ViewModelProvider.Factory {
override fun <NostrThreadFeedViewModel : ViewModel> create(modelClass: Class<NostrThreadFeedViewModel>): NostrThreadFeedViewModel {
return NostrThreadFeedViewModel(noteId) as NostrThreadFeedViewModel
return NostrThreadFeedViewModel(account, noteId) as NostrThreadFeedViewModel
}
}
}

View File

@@ -1,20 +0,0 @@
package com.vitorpamplona.amethyst.ui.screen
import androidx.compose.runtime.Stable
import androidx.lifecycle.ViewModel
import androidx.lifecycle.distinctUntilChanged
import androidx.lifecycle.map
import com.vitorpamplona.amethyst.service.relays.RelayPool
@Stable
class RelayPoolViewModel : ViewModel() {
val connectionStatus = RelayPool.live.map {
val connectedRelays = it.relays.connectedRelays()
val availableRelays = it.relays.availableRelays()
"$connectedRelays/$availableRelays"
}.distinctUntilChanged()
val isConnected = RelayPool.live.map {
it.relays.connectedRelays() > 0
}.distinctUntilChanged()
}

View File

@@ -262,6 +262,7 @@ fun NoteMaster(
HiddenNote(
reports,
note.author?.let { account.isHidden(it) } ?: false,
accountViewModel,
Modifier,
false,

View File

@@ -3,6 +3,7 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn
import android.content.Context
import android.content.Intent
import android.net.Uri
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.Stable
import androidx.core.content.ContextCompat
import androidx.lifecycle.LiveData
@@ -18,10 +19,13 @@ import com.vitorpamplona.amethyst.model.AddressableNote
import com.vitorpamplona.amethyst.model.ConnectivityType
import com.vitorpamplona.amethyst.model.LocalCache
import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.model.RelayInformation
import com.vitorpamplona.amethyst.model.UrlCachedPreviewer
import com.vitorpamplona.amethyst.model.User
import com.vitorpamplona.amethyst.model.UserState
import com.vitorpamplona.amethyst.service.Nip05Verifier
import com.vitorpamplona.amethyst.service.Nip11CachedRetriever
import com.vitorpamplona.amethyst.service.Nip11Retriever
import com.vitorpamplona.amethyst.service.OnlineChecker
import com.vitorpamplona.amethyst.service.lnurl.LightningAddressResolver
import com.vitorpamplona.amethyst.ui.components.UrlPreviewState
@@ -56,22 +60,26 @@ class AccountViewModel(val account: Account) : ViewModel() {
val userFollows: LiveData<UserState> = account.userProfile().live().follows.map { it }
val userRelays: LiveData<UserState> = account.userProfile().live().relays.map { it }
val discoveryListLiveData = accountLiveData.map {
val discoveryListLiveData = account.live.map {
it.account.defaultDiscoveryFollowList
}.distinctUntilChanged()
val homeListLiveData = accountLiveData.map {
val homeListLiveData = account.live.map {
it.account.defaultHomeFollowList
}.distinctUntilChanged()
val notificationListLiveData = accountLiveData.map {
val notificationListLiveData = account.live.map {
it.account.defaultNotificationFollowList
}.distinctUntilChanged()
val storiesListLiveData = accountLiveData.map {
val storiesListLiveData = account.live.map {
it.account.defaultStoriesFollowList
}.distinctUntilChanged()
val showSensitiveContentChanges = account.live.map {
it.account.showSensitiveContent
}.distinctUntilChanged()
fun updateAutomaticallyStartPlayback(
automaticallyStartPlayback: ConnectivityType
) {
@@ -410,14 +418,24 @@ class AccountViewModel(val account: Account) : ViewModel() {
return account.defaultZapType
}
fun isNoteAcceptable(note: Note, onReady: (Boolean, Boolean, ImmutableSet<Note>) -> Unit) {
@Immutable
data class NoteComposeReportState(
val isAcceptable: Boolean = true,
val canPreview: Boolean = true,
val isHiddenAuthor: Boolean = false,
val relevantReports: ImmutableSet<Note> = persistentSetOf()
)
fun isNoteAcceptable(note: Note, onReady: (NoteComposeReportState) -> Unit) {
viewModelScope.launch {
val isFromLoggedIn = note.author?.pubkeyHex == userProfile().pubkeyHex
val isFromLoggedInFollow = note.author?.let { userProfile().isFollowingCached(it) } ?: true
if (isFromLoggedIn || isFromLoggedInFollow) {
// No need to process if from trusted people
onReady(true, true, persistentSetOf())
onReady(NoteComposeReportState(true, true, false, persistentSetOf()))
} else if (note.author?.let { account.isHidden(it) } == true) {
onReady(NoteComposeReportState(false, false, true, persistentSetOf()))
} else {
val newCanPreview = !note.hasAnyReports()
@@ -425,11 +443,18 @@ class AccountViewModel(val account: Account) : ViewModel() {
if (newCanPreview && newIsAcceptable) {
// No need to process reports if nothing is wrong
onReady(true, true, persistentSetOf())
onReady(NoteComposeReportState(true, true, false, persistentSetOf()))
} else {
val newRelevantReports = account.getRelevantReports(note)
onReady(newIsAcceptable, newCanPreview, newRelevantReports.toImmutableSet())
onReady(
NoteComposeReportState(
newIsAcceptable,
newCanPreview,
false,
newRelevantReports.toImmutableSet()
)
)
}
}
}
@@ -529,6 +554,16 @@ class AccountViewModel(val account: Account) : ViewModel() {
}
}
fun retrieveRelayDocument(
dirtyUrl: String,
onInfo: (RelayInformation) -> Unit,
onError: (String, Nip11Retriever.ErrorCode, String?) -> Unit
) {
viewModelScope.launch(Dispatchers.IO) {
Nip11CachedRetriever.loadRelayInfo(dirtyUrl, onInfo, onError)
}
}
class Factory(val account: Account) : ViewModelProvider.Factory {
override fun <AccountViewModel : ViewModel> create(modelClass: Class<AccountViewModel>): AccountViewModel {
return AccountViewModel(account) as AccountViewModel

View File

@@ -23,7 +23,7 @@ fun ThreadScreen(noteId: String?, accountViewModel: AccountViewModel, nav: (Stri
val feedViewModel: NostrThreadFeedViewModel = viewModel(
key = noteId + "NostrThreadFeedViewModel",
factory = NostrThreadFeedViewModel.Factory(noteId)
factory = NostrThreadFeedViewModel.Factory(accountViewModel.account, noteId)
)
NostrThreadDataSource.loadThread(noteId)

View File

@@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
@@ -52,7 +53,6 @@ import com.vitorpamplona.amethyst.ui.note.FileStorageHeaderDisplay
import com.vitorpamplona.amethyst.ui.note.HiddenNote
import com.vitorpamplona.amethyst.ui.note.LikeReaction
import com.vitorpamplona.amethyst.ui.note.NoteAuthorPicture
import com.vitorpamplona.amethyst.ui.note.NoteComposeReportState
import com.vitorpamplona.amethyst.ui.note.NoteDropDownMenu
import com.vitorpamplona.amethyst.ui.note.NoteUsernameDisplay
import com.vitorpamplona.amethyst.ui.note.RenderRelay
@@ -76,7 +76,6 @@ import com.vitorpamplona.amethyst.ui.theme.placeholderText
import com.vitorpamplona.quartz.events.FileHeaderEvent
import com.vitorpamplona.quartz.events.FileStorageHeaderEvent
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentSetOf
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@@ -250,19 +249,14 @@ fun LoadedVideoCompose(
) {
var state by remember {
mutableStateOf(
NoteComposeReportState(
isAcceptable = true,
canPreview = true,
relevantReports = persistentSetOf()
)
AccountViewModel.NoteComposeReportState()
)
}
val scope = rememberCoroutineScope()
WatchForReports(note, accountViewModel) { newIsAcceptable, newCanPreview, newRelevantReports ->
if (newIsAcceptable != state.isAcceptable || newCanPreview != state.canPreview) {
val newState = NoteComposeReportState(newIsAcceptable, newCanPreview, newRelevantReports)
WatchForReports(note, accountViewModel) { newState ->
if (state != newState) {
scope.launch(Dispatchers.Main) {
state = newState
}
@@ -281,7 +275,7 @@ fun LoadedVideoCompose(
@Composable
fun RenderReportState(
state: NoteComposeReportState,
state: AccountViewModel.NoteComposeReportState,
note: Note,
accountViewModel: AccountViewModel,
nav: (String) -> Unit
@@ -290,11 +284,12 @@ fun RenderReportState(
Crossfade(targetState = !state.isAcceptable && !showReportedNote) { showHiddenNote ->
if (showHiddenNote) {
Column(remember { Modifier.fillMaxSize(1f) }, verticalArrangement = Arrangement.Center) {
Column(remember { Modifier.fillMaxSize() }, verticalArrangement = Arrangement.Center) {
HiddenNote(
state.relevantReports,
state.isHiddenAuthor,
accountViewModel,
Modifier,
Modifier.fillMaxWidth(),
false,
nav,
onClick = { showReportedNote = true }
@@ -421,14 +416,11 @@ private fun VideoUserOptionAction(
@OptIn(ExperimentalLayoutApi::class)
@Composable
private fun RelayBadges(baseNote: Note, accountViewModel: AccountViewModel, nav: (String) -> Unit) {
val noteRelaysState by baseNote.live().relays.observeAsState()
val noteRelays = remember(noteRelaysState) {
noteRelaysState?.note?.relays ?: emptySet()
}
val noteRelays by baseNote.live().relayInfo.observeAsState()
FlowRow() {
noteRelays.forEach { dirtyUrl ->
RenderRelay(dirtyUrl, accountViewModel, nav)
noteRelays?.forEach { relayInfo ->
RenderRelay(relayInfo, accountViewModel, nav)
}
}
}

View File

@@ -24,3 +24,9 @@ val DarkerGreen = Color.Green.copy(alpha = 0.32f)
val WarningColor = Color(0xFFC62828)
val RelayIconFilter = ColorFilter.colorMatrix(ColorMatrix().apply { setToSaturation(0.5f) })
val LightWarningColor = Color(0xFFffcc00)
val DarkWarningColor = Color(0xFFF8DE22)
val LightAllGoodColor = Color(0xFF339900)
val DarkAllGoodColor = Color(0xFF99cc33)

View File

@@ -286,6 +286,12 @@ val Colors.overPictureBackground: Color
val Colors.bitcoinColor: Color
get() = if (isLight) BitcoinLight else BitcoinDark
val Colors.warningColor: Color
get() = if (isLight) LightWarningColor else DarkWarningColor
val Colors.allGoodColor: Color
get() = if (isLight) LightAllGoodColor else DarkAllGoodColor
val Colors.markdownStyle: RichTextStyle
get() = if (isLight) MarkDownStyleOnLight else MarkDownStyleOnDark

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="point_to_the_qr_code">أشر إلى رمز QR</string>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="point_to_the_qr_code">أشر إلى رمز (QR Code)</string>
<string name="show_qr">أظهر QR</string>
<string name="profile_image">صورة الملف الشخصي</string>
<string name="scan_qr">مسح QR</string>
<string name="scan_qr">مسح رمز ال QR</string>
<string name="show_anyway">عرض على أي حال</string>
<string name="post_was_flagged_as_inappropriate_by">تم وضع علامة على المنشور على أنه غير لائق بواسطة</string>
<string name="post_not_found">المنشور غير موجود</string>
@@ -12,17 +12,19 @@
<string name="could_not_decrypt_the_message">لا يمكن فك تشفير الرسالة</string>
<string name="group_picture">صورة المجموعة</string>
<string name="explicit_content">محتوى فاضح</string>
<string name="spam">رسائل عشوائية</string>
<string name="spam">محتوى عشوائي</string>
<string name="impersonation">التمثيل</string>
<string name="illegal_behavior">تصرف غير قانوني</string>
<string name="unknown">غير معروف</string>
<string name="relay_icon">Relay Icon</string>
<string name="relay_icon">أيقونة الخادم</string>
<string name="unknown_author">كاتب غير معروف</string>
<string name="copy_text">نسخ النص</string>
<string name="copy_user_pubkey">نسخ المفتاح العام</string>
<string name="copy_note_id">نسخ معرف </string>
<string name="broadcast">بث</string>
<string name="block_hide_user">حظر و إخفاء المستخدم</string>
<string name="request_deletion">حذف الطلب</string>
<string name="block_report">حظر / تبليغ</string>
<string name="block_hide_user"><![CDATA[حظر و إخفاء المستخدم]]></string>
<string name="report_spam_scam">الابلاغ عن البريد العشوائي / الاحتيال</string>
<string name="report_impersonation">الإبلاغ عن التمثيل</string>
<string name="report_explicit_content">الإبلاغ عن المحتوى الصريح / الفاضح</string>
@@ -32,19 +34,22 @@
<string name="login_with_a_private_key_to_like_posts">تسجيل الدخول باستخدام مفتاح خاص لإبداء الإعجاب بالمنشورات</string>
<string name="no_zap_amount_setup_long_press_to_change">لا يوجد إعداد لمبلغ Zap. اضغط لفترة طويلة للتغيير</string>
<string name="login_with_a_private_key_to_be_able_to_send_zaps">قم بتسجيل الدخول باستخدام مفتاح خاص لتتمكن من إرسال Zaps</string>
<string name="zaps">Zaps</string>
<string name="login_with_a_private_key_to_be_able_to_follow">قم بتسجيل الدخول باستخدام مفتاح خاص لتتمكن من متابعة المستخدمين</string>
<string name="login_with_a_private_key_to_be_able_to_unfollow">قم بتسجيل الدخول بمفتاحك الخاص للتتمكن من إلغاء متابعة المستخدمين </string>
<string name="view_count">مشاهدة العد</string>
<string name="boost">تعزيز</string>
<string name="boosted">معزز</string>
<string name="quote">إقتباس</string>
<string name="new_amount_in_sats">مبلغ جديد في Sats</string>
<string name="add">إضافة</string>
<string name="replying_to">الرد على</string>
<string name="replying_to">"الرد على"</string>
<string name="and">" و "</string>
<string name="in_channel">"في القناة "</string>
<string name="profile_banner">لافتة الملف الشخصي</string>
<string name="following">المتابعون</string>
<string name="followers">متابِعاً</string>
<string name="payment_successful">تم الدفع بنجاح</string>
<string name="error_parsing_error_message">خطأ أثناء تحليل رسالة الخطأ</string>
<string name="following">"المتابعون"</string>
<string name="followers">"متابِعاً"</string>
<string name="profile">الملف الشخصي</string>
<string name="security_filters">مرشحات الأمان</string>
<string name="log_out">تسجيل الخروج</string>
@@ -54,24 +59,25 @@
<string name="lightning_tips">Lightning تبرع</string>
<string name="note_to_receiver">ملاحظة للمستقبل</string>
<string name="thank_you_so_much">شكرا جزيلا!</string>
<string name="amount_in_sats">المبلغ في Sats</string>
<string name="amount_in_sats">المبلغ ب الSats</string>
<string name="send_sats">إرسال Sats</string>
<string name="error_parsing_preview_for">خطأ في تحليل المعاينة لـ %1$s : %2$s</string>
<string name="preview_card_image_for">معاينة صورة البطاقة لـ %1$s</string>
<string name="error_parsing_preview_for">"خطأ في تحليل المعاينة لـ %1$s : %2$s"</string>
<string name="preview_card_image_for">"معاينة صورة البطاقة لـ %1$s"</string>
<string name="new_channel">قناة جديدة</string>
<string name="channel_name">اسم القناة</string>
<string name="my_awesome_group">مجموعتي الرائعة</string>
<string name="picture_url">رابط الصورة</string>
<string name="description">الوصف</string>
<string name="about_us">معلومات عن القناة..</string>
<string name="about_us">"معلومات عن القناة.."</string>
<string name="what_s_on_your_mind">ما الذي يدور في ذهنك؟</string>
<string name="post">نشر</string>
<string name="save">حفظ</string>
<string name="create">إنشاء</string>
<string name="cancel">إلغاء</string>
<string name="failed_to_upload_the_image">فشل تحميل الصورة</string>
<string name="relay_address">Relay عنوان</string>
<string name="relay_address"> عنوان الخادم (Relay Adress)</string>
<string name="posts">المنشورات</string>
<string name="bytes">Bytes</string>
<string name="errors">الأخطاء</string>
<string name="home_feed">المنشورات الرئيسية</string>
<string name="private_message_feed"> الرسائل الخاصة</string>
@@ -92,7 +98,7 @@
<string name="failed_to_save_the_image">فشل حفظ الصورة</string>
<string name="upload_image">تحميل الصورة</string>
<string name="uploading">جاري التحميل…</string>
<string name="user_does_not_have_a_lightning_address_setup_to_receive_sats">لا يمتلك المستخدم إعداد عنوان lighting لاستقبال sats</string>
<string name="user_does_not_have_a_lightning_address_setup_to_receive_sats">لا يمتلك المستخدم عنوان (Lightning Address) لاستقبال sats</string>
<string name="reply_here">"الرد هنا.. "</string>
<string name="copies_the_note_id_to_the_clipboard_for_sharing">نسخ معرف الملاحظة إلى الحافظة للمشاركة</string>
<string name="copy_channel_id_note_to_the_clipboard">انسخ معرف القناة (ملاحظة) إلى الحافظة</string>
@@ -105,10 +111,10 @@
<string name="conversations">المحادثات</string>
<string name="notes">الملاحظات</string>
<string name="replies">الردود</string>
<string name="follows">المتابَعون</string>
<string name="reports">التقارير</string>
<string name="follows">"المتابَعون"</string>
<string name="reports">"التقارير"</string>
<string name="more_options">المزيد من الخيارات</string>
<string name="relays">Relays</string>
<string name="relays">"Relays"</string>
<string name="website">الموقع</string>
<string name="lightning_address">Lightning عنوان</string>
<string name="copies_the_nsec_id_your_password_to_the_clipboard_for_backup">نسخ معرف Nsec (كلمة المرور الخاصة بك) إلى الحافظة للنسخ الاحتياطي</string>
@@ -121,7 +127,7 @@
<string name="unblock">رفع الحظر</string>
<string name="copy_user_id">نسخ معرف المستخدم</string>
<string name="unblock_user">إلغاء حظر عن مستخدم</string>
<string name="npub_hex_username">npub, hex, username </string>
<string name="npub_hex_username">"npub, hex, username "</string>
<string name="clear">نظف</string>
<string name="app_logo">شعار التطبيق</string>
<string name="nsec_npub_hex_private_key">nsec / npub / hex private key</string>
@@ -135,7 +141,7 @@
<string name="login">تسجيل دخول</string>
<string name="generate_a_new_key">إنشاء مفتاح جديد</string>
<string name="loading_feed">بإنتظار التحديثات</string>
<string name="error_loading_replies">خطأ في تحميل الردود:</string>
<string name="error_loading_replies">"خطأ في تحميل الردود:"</string>
<string name="try_again">المحاولة مرة اخرى</string>
<string name="feed_is_empty">لا توجد ملاحظات.</string>
<string name="refresh">تحديث</string>
@@ -148,7 +154,7 @@
<string name="leave">مغادرة</string>
<string name="unfollow">الغاء المتابعة</string>
<string name="channel_created">تم انشاء القناة</string>
<string name="channel_information_changed_to">تم تغيير معلومات القناة إلى</string>
<string name="channel_information_changed_to">"تم تغيير معلومات القناة إلى"</string>
<string name="public_chat">الدردشة العامة</string>
<string name="posts_received">تم استلام المشاركات</string>
<string name="remove">ازالة</string>
@@ -168,4 +174,190 @@
<string name="report_hateful_speech">أبلغ عن كلام يحض على الكراهية</string>
<string name="report_nudity_porn">الإبلاغ عن عُري / إباحي</string>
<string name="others">آخرون</string>
<string name="mark_all_known_as_read">ضع علامة على جميع الرسائل/الاشعارات المعروفة كمقروء</string>
<string name="mark_all_new_as_read">ضع علامة على جميع الرسائل/الاشعارات الجديدة كمقروء</string>
<string name="mark_all_as_read">ضع علامة على جميع الرسائل/الاشعارات كمقروء</string>
<string name="backup_keys">قم بعمل نسخة احتياطية للمفاتيح</string>
<string name="account_backup_tips_md" tools:ignore="Typos"> ## النصائح الرئيسية للنسخ الاحتياطي والسلامة
\n\n- يتم تأمين حسابك بمفتاح سري. المفتاح السري هو سلسلة عشوائية طويلة تبدأ بـ **nsec1**. أي شخص لديه حق الوصول إلى مفتاحك السري يمكنه نشر المحتوى باستخدام هويتك.
\n\n- لا تقم بوضع مفتاحك السري في أي موقع أو برنامج لا تثق به.
\n- مطوري Amethyst لن يطلبوا منك **أبدا** المفتاح السري الخاص بك.
\n- حافظ على نسخة احتياطية آمنة لمفتاحك السري لاسترداد الحساب. نوصي باستخدام برنامج لادارة كلمات المرور.
</string>
<string name="secret_key_copied_to_clipboard">مفتاحك السري (nsec) قد تم نسخه في الحافظة</string>
<string name="copy_my_secret_key">إنسخ مفتاحي السري</string>
<string name="biometric_authentication_failed">فشلت المصادقة</string>
<string name="biometric_error">خطأ</string>
<string name="badge_created_by">"تم إنشاؤه بواسطة %1$s"</string>
<string name="badge_award_image_for">"صورة شارة مكافئة ل %1$s"</string>
<string name="new_badge_award_notif">لقد حصلت على شارة جائزة جديدة</string>
<string name="copied_note_text_to_clipboard">تم نسخ نص الملاحظة/المنشور إلى الحافظة</string>
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">تم نسخ عنوان @npub المؤلف إلى الحافظة</string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">تم نسخ رمز الملاحظة/المنشور (note ID) إلى الحافظة</string>
<string name="select_text_dialog_top">تحديد نص</string>
<string name="private_conversation_notification">"&lt;استحالة فك تشفير الرسالة الخاصة&gt;
\n\n أنت الآن في محادثة خاصة/مشفرة بين %1$s و %2$s ."</string>
<string name="account_switch_add_account_dialog_title">إضافة حساب جديد</string>
<string name="drawer_accounts">الحسابات</string>
<string name="account_switch_select_account">اختر حساب</string>
<string name="account_switch_add_account_btn">إضافة حساب جديد</string>
<string name="account_switch_active_account">تنشيط الحساب</string>
<string name="account_switch_has_private_key">يحتوي على مفتاح خاص</string>
<string name="account_switch_pubkey_only">قراءة فقط، لا يوجد مفتاح خاص</string>
<string name="back">رجوع</string>
<string name="quick_action_select">اختر</string>
<string name="quick_action_share_browser_link">شارك رابط المتصفح</string>
<string name="quick_action_share">مشاركة</string>
<string name="quick_action_copy_user_id">معرف المؤلف (ID)</string>
<string name="quick_action_copy_note_id">رمز/معرف الملاحظة (Note ID)</string>
<string name="quick_action_copy_text">نسخ النص</string>
<string name="quick_action_delete">حذف</string>
<string name="quick_action_unfollow">الغاء المتابعة</string>
<string name="quick_action_follow">متابعة</string>
<string name="quick_action_request_deletion_alert_title">طلب الحذف</string>
<string name="quick_action_request_deletion_alert_body">سيطلب Amethyst حذف ملاحظتك من الخوادم (relays) الذي أنت متصل به حاليا. لا يوجد ضمان لحذف ملاحظتك بشكل دائم من تلك الخوادم أو من الخوادم الأخرى التي ربما حفظت فيها.</string>
<string name="quick_action_block_dialog_btn">حظر </string>
<string name="quick_action_delete_dialog_btn">حذف</string>
<string name="quick_action_block">حظر</string>
<string name="quick_action_report">التبليغ</string>
<string name="quick_action_delete_button">حذف</string>
<string name="quick_action_dont_show_again_button">لا تظهر مرة أخرى</string>
<string name="report_dialog_illegal">تصرف غير قانوني</string>
<string name="report_dialog_blocking_a_user">حظر المستخدم سوف يخفي محتواه في التطبيق الخاص بك. ملاحظاتك لا تزال قابلة للعرض علناً، بما في ذلك للأشخاص الذين تقوم بحظرهم. يتم إدراج المستخدمين المحظورين على شاشة مرشحات الأمان (Security Filters screen).</string>
<string name="report_dialog_block_hide_user_btn"><![CDATA[حظر و إخفاء المستخدم]]></string>
<string name="report_dialog_reminder_public">ستكون جميع التقارير المنشورة مرئية للجمهور.</string>
<string name="report_dialog_additional_reason_placeholder">اختياريا تستطيع توفير سياق إضافي حول تقريرك…</string>
<string name="report_dialog_additional_reason_label">سياق إضافي</string>
<string name="report_dialog_select_reason_label">السبب</string>
<string name="report_dialog_select_reason_placeholder">حدد سببا</string>
<string name="report_dialog_post_report_btn">تبليغ المنشور (Report)</string>
<string name="report_dialog_title">حظر / تبليغ</string>
<string name="block_only">حظر </string>
<string name="bookmarks">المفضلة</string>
<string name="private_bookmarks">المفضلة الخاصة</string>
<string name="public_bookmarks">المفضلة العامة</string>
<string name="add_to_private_bookmarks">إضافة إلى المفضلات الخاصة</string>
<string name="add_to_public_bookmarks">إضافة إلى المفضلات العامة</string>
<string name="remove_from_private_bookmarks">إزالة من المفضلات الخاصة</string>
<string name="remove_from_public_bookmarks">إزالة من المفضلات العامة</string>
<string name="wallet_connect_service">خدمة Wallet Connect </string>
<string name="wallet_connect_service_relay">خادم Wallet Connect </string>
<string name="wallet_connect_service_secret">كلمة سر خدمة Wallet Connect</string>
<string name="wallet_connect_service_show_secret">إظهار كلمة السر</string>
<string name="wallet_connect_service_secret_placeholder">المفتاح السري بصيغة nsec أو hex</string>
<string name="post_poll">نشر الاستطلاع</string>
<string name="poll_heading_required">الحقول المطلوبة:</string>
<string name="poll_primary_description">وصف الاستطلاع الأساسي…</string>
<string name="poll_option_index">الخيار %s</string>
<string name="poll_option_description">وصف خيار الاستطلاع</string>
<string name="poll_heading_optional">حقل اختياري</string>
<string name="poll_zap_value_min">الحد الأدنى</string>
<string name="poll_zap_value_max">الحد الاقصى</string>
<string name="poll_consensus_threshold_percent">(0100)%</string>
<string name="poll_closing_time">إغلاق بعد</string>
<string name="poll_closing_time_days">أيام</string>
<string name="poll_is_closed">تم إغلاق الاستطلاع لأي تصويت جديد</string>
<string name="one_vote_per_user_on_atomic_votes">يسمح بصوت واحد فقط لكل مستخدم في هذا النوع من الاستطلاع</string>
<string name="looking_for_event">"البحث عن الحدث %1$s"</string>
<string name="custom_zaps_add_a_message">أضف رسالة عامة</string>
<string name="custom_zaps_add_a_message_private">أضف رسالة خاصة</string>
<string name="custom_zaps_add_a_message_nonzap">أضف رسالة مع الفاتورة</string>
<string name="custom_zaps_add_a_message_example">شكرا لك على كل مساهمتك!</string>
<string name="lightning_create_and_add_invoice">إنشاء وإضافة</string>
<string name="poll_author_no_vote">لا يستطيع مؤلف الاستطلاع التصويت في استطلاعه.</string>
<string name="hash_verification_passed">هذا المحتوى هو نفسه منذ النشر</string>
<string name="hash_verification_failed">لقد تغير هذا المحتوى. ربما لم يشاهد مؤلفه التغيير أو يوافق عليه بعد.</string>
<string name="content_description_add_image">أضف صورة</string>
<string name="content_description_add_video">اضف فيديو</string>
<string name="content_description_add_document">أضف مستند</string>
<string name="add_content">أضف إلى الرسالة</string>
<string name="content_description">وصف المحتوى/المحتويات</string>
<string name="content_description_example">A blue boat in a white sandy beach at sunset
(قارب أزرق في شاطئ رملي أبيض عند غروب الشمس)</string>
<string name="zap_type_public">عام</string>
<string name="zap_type_public_explainer">يستطيع الجميع رؤية المعاملة والرسالة</string>
<string name="zap_type_private">خاص</string>
<string name="zap_type_private_explainer">يمكن للمرسل والمستقبل رؤية بعضهما البعض وقراءة الرسالة</string>
<string name="zap_type_anonymous">مجهول الهوية</string>
<string name="zap_type_anonymous_explainer">المستقبل والجمهور لا يعرفان من الذي قام بإرسال الدفع</string>
<string name="file_server">خادم الملفات</string>
<string name="upload_server_imgur">imgur.com - موثوق به</string>
<string name="upload_server_imgur_explainer">يمكن لـ Imgur تعديل الملف</string>
<string name="upload_server_nostrimg">nostrimg.com - (موثوق به)</string>
<string name="upload_server_nostrimg_explainer">يمكن لـ NostrImg تعديل الملف</string>
<string name="upload_server_nostrbuild">nostr.build- (موثوق به)</string>
<string name="upload_server_nostrbuild_explainer">يمكن لـ Nostr.build تعديل الملف</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev - (موثوق به)</string>
<string name="upload_server_nostrfilesdev_explainer">يمكن لـ Nostrfiles.dev تعديل الملف</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - (موثوق به)</string>
<string name="upload_server_nostrcheckme_explainer">يمكن لـ nostrcheck.me تعديل الملف</string>
<string name="upload_server_imgur_nip94_explainer">تحقق مما إذا قام Imgur بتعديل الملف.
NIP جديد: قد لا يراه العملاء الآخرون</string>
<string name="app_notification_zaps_channel_message_from">من طرف %1$s</string>
<string name="app_notification_zaps_channel_message_for">ل %1$s</string>
<string name="reply_notify">تنبيه: </string>
<string name="channel_list_join_conversation">الانضمام إلى المحادثة</string>
<string name="channel_list_user_or_group_id">معرف المستخدم أو المجموعة</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent أو hex</string>
<string name="channel_list_create_channel">إنشاء</string>
<string name="channel_list_join_channel">إنضمام</string>
<string name="today">اليوم</string>
<string name="content_warning">تحذير من المحتوى</string>
<string name="content_warning_hide_all_sensitive_content">إخفاء المحتوى الحساس دائماً</string>
<string name="content_warning_show_all_sensitive_content">إظهار المحتوى الحساس دائماً</string>
<string name="content_warning_see_warnings">إظهار تحذيرات المحتوى دائمًا</string>
<string name="recommended_apps">التطبيقات الموصى بها : </string>
<string name="filter_spam_from_strangers">تصفية الرسائل المزعجة من الغرباء</string>
<string name="warn_when_posts_have_reports_from_your_follows">تنبيه عندما تكون منشورتك قد تم التبليغ عنها </string>
<string name="new_reaction_symbol">رمز رد فعل جديد</string>
<string name="no_reaction_type_setup_long_press_to_change">لم يتم تحديد أي نوع من ردود الفعل. اضغط مطولاً للتغيير</string>
<string name="read_from_relay">القراءة من الخادم (Relay)</string>
<string name="write_to_relay">الكتابة للخادم</string>
<string name="an_error_occurred_trying_to_get_relay_information">حدث خطأ أثناء محاولة الحصول على معلومات الخادم من %1$s</string>
<string name="owner">المالك</string>
<string name="version">الاصدار</string>
<string name="software">البرنامج</string>
<string name="contact">جهة الاتصال</string>
<string name="supports">الNIPs المدعومة</string>
<string name="admission_fees">رسوم القبول</string>
<string name="payments_url">رابط الدفع</string>
<string name="limitations">الحدود</string>
<string name="countries">الدول</string>
<string name="languages">اللغات</string>
<string name="tags">الوسوم</string>
<string name="posting_policy">سياسات النشر</string>
<string name="message_length">طول الرسالة</string>
<string name="subscriptions">الإشتراكات</string>
<string name="filters">الفلاتر</string>
<string name="subscription_id_length">طول معرّف الاشتراك</string>
<string name="minimum_prefix">الحد الأدنى لل prefix </string>
<string name="maximum_event_tags">الحد الأقصى لوسوم الحدث</string>
<string name="content_length">طول المحتوى</string>
<string name="minimum_pow">الحد الأدنى لل PoW</string>
<string name="auth">المصادقة</string>
<string name="payment">الدفع</string>
<string name="cashu">Cashu Token</string>
<string name="geohash_title">عرض الموقع كـ </string>
<string name="new_feature_nip24_might_not_be_available_title">ميزة جديدة</string>
<string name="new_feature_nip24_activate">تفعيل</string>
<string name="messages_create_public_chat">عام</string>
<string name="messages_new_message">خاص</string>
<string name="messages_new_message_to">إلى</string>
<string name="messages_new_message_subject">الموضوع</string>
<string name="messages_new_message_subject_caption">موضوع المحادثة</string>
<string name="messages_new_message_to_caption">"\@User1, @User2, @User3"</string>
<string name="messages_group_descriptor">أعضاء هذه المجموعة</string>
<string name="messages_new_subject_message">التوضيح للأعضاء</string>
<string name="messages_new_subject_message_placeholder">تغيير اسم الأهداف الجديدة.</string>
<string name="language_description">من أجل واجهة التطبيق</string>
<string name="theme_description">مظهر غامق أو فاتح أو اوتوماتيكي</string>
<string name="automatically_load_images_gifs_description">تحميل الصور و الصور المتحركة تلقائياً</string>
<string name="automatically_play_videos_description">تشغيل الفيديوهات و الصور المتحركة تلقائياً</string>
<string name="automatically_show_url_preview_description">إظهار معاينات الروابط</string>
<string name="load_image_description">متى يتم تحميل الصور</string>
<string name="copy_url_to_clipboard">نسخ عنوان الرابط إلى الحافظة</string>
<string name="copy_the_note_id_to_the_clipboard">انسخ معرف النص (ID) إلى الحافظة</string>
<string name="created_at">أنشئ في</string>
<string name="rules">القواعد</string>
<string name="status_update">تحديث الحالة</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -12,7 +12,6 @@
<string name="could_not_decrypt_the_message">Nepodařilo se dešifrovat zprávu</string>
<string name="group_picture">Obrázek skupiny</string>
<string name="explicit_content">Explicitní obsah</string>
<string name="spam">Spam</string>
<string name="impersonation">Zneužívání identity</string>
<string name="illegal_behavior">Nezákonné jednání</string>
<string name="unknown">Neznámý</string>
@@ -38,8 +37,8 @@
<string name="login_with_a_private_key_to_be_able_to_unfollow">Přihlaste se pomocí soukromého klíče, abyste mohli zrušit sledování</string>
<string name="zaps">Zapy</string>
<string name="view_count">Počet zobrazení</string>
<string name="boost">Boost</string>
<string name="boosted">boostováno</string>
<string name="boost">Zvýšení</string>
<string name="boosted">zvýšeno</string>
<string name="quote">Citovat</string>
<string name="new_amount_in_sats">Nová částka v sats</string>
<string name="add">Přidat</string>
@@ -170,9 +169,6 @@
<string name="nip_05">Nostr Adresa</string>
<string name="never">nikdy</string>
<string name="now">nyní</string>
<string name="h">h</string>
<string name="m">m</string>
<string name="d">d</string>
<string name="nudity">Nahota</string>
<string name="profanity_hateful_speech">Neslušnost / Nenávistná řeč</string>
<string name="report_hateful_speech">Nahlásit nenávistnou řeč</string>
@@ -182,8 +178,7 @@
<string name="mark_all_new_as_read">Označit všechny nové jako přečtené</string>
<string name="mark_all_as_read">Označit všechny jako přečtené</string>
<string name="backup_keys">Zálohovat klíče</string>
<string name="account_backup_tips_md" tools:ignore="Typos">
## Tipy na zálohování a bezpečnost účtu
<string name="account_backup_tips_md" tools:ignore="Typos"> ## Tipy na zálohování a bezpečnost účtu
\n\nVáš účet je zabezpečen tajným klíčem. Klíč je dlouhý náhodný řetězec začínající **nsec1**. Každý, kdo má přístup k vašemu tajnému klíči, může publikovat obsah pod vaší identitou.
\n\n- **Nepoužívejte** svůj tajný klíč na webových stránkách nebo v softwaru, kterému nedůvěřujete.
\n- Vývojáři aplikace Amethyst vás **nikdy** nebudou žádat o váš tajný klíč.
@@ -193,8 +188,8 @@
<string name="copy_my_secret_key">Zkopírovat můj tajný klíč</string>
<string name="biometric_authentication_failed">Autentizace se nezdařila</string>
<string name="biometric_error">Chyba</string>
<string name="badge_created_by">Vytvořeno uživatelem %1$s</string>
<string name="badge_award_image_for">Obrázek ocenění od %1$s</string>
<string name="badge_created_by">"Vytvořeno uživatelem %1$s"</string>
<string name="badge_award_image_for">"Obrázek ocenění od %1$s"</string>
<string name="new_badge_award_notif">Obdrželi jste nové ocenění</string>
<string name="award_granted_to">Ocenění uděleno uživateli</string>
<string name="copied_note_text_to_clipboard">Text poznámky zkopírován do schránky</string>
@@ -250,7 +245,6 @@
<string name="add_to_public_bookmarks">Přidat do veřejných záložek</string>
<string name="remove_from_private_bookmarks">Odebrat ze soukromých záložek</string>
<string name="remove_from_public_bookmarks">Odebrat z veřejných záložek</string>
<string name="wallet_connect_service">Služba Wallet Connect</string>
<string name="wallet_connect_service_explainer">Autorizuje Nostr Secret k provedení platby zapsům, aniž byste opustili aplikaci. Uchovávejte tajemství v bezpečí a pokud je to možné, používejte soukromý přepojovač.</string>
<string name="wallet_connect_service_pubkey">Veřejný klíč Wallet Connect</string>
@@ -258,7 +252,6 @@
<string name="wallet_connect_service_secret">Tajemství Wallet Connect</string>
<string name="wallet_connect_service_show_secret">Zobrazit tajný klíč</string>
<string name="wallet_connect_service_secret_placeholder">nsec / hex soukromý klíč</string>
<string name="pledge_amount_in_sats">Částka záruky v sats</string>
<string name="post_poll">Zveřejnit hlasování</string>
<string name="poll_heading_required">Povinná pole:</string>
@@ -270,99 +263,70 @@
<string name="poll_zap_value_min">Minimální zaps</string>
<string name="poll_zap_value_max">Maximální zaps</string>
<string name="poll_consensus_threshold">Konsensus</string>
<string name="poll_consensus_threshold_percent">(0100)%</string>
<string name="poll_closing_time">Uzavřít po</string>
<string name="poll_closing_time_days">dnech</string>
<string name="poll_is_closed">Hlasování je uzavřeno pro nové hlasy</string>
<string name="poll_zap_amount">Částka zapsu</string>
<string name="one_vote_per_user_on_atomic_votes">U tohoto typu hlasování je povolen pouze jeden hlas na uživatele</string>
<string name="looking_for_event">"Hledá se událost %1$s"</string>
<string name="custom_zaps_add_a_message">Přidat veřejnou zprávu</string>
<string name="custom_zaps_add_a_message_private">Přidat soukromou zprávu</string>
<string name="custom_zaps_add_a_message_nonzap">Přidat fakturu</string>
<string name="custom_zaps_add_a_message_example">Děkuji za veškerou práci!</string>
<string name="lightning_create_and_add_invoice">Vytvořit a přidat</string>
<string name="poll_author_no_vote">Autoři hlasování nemohou hlasovat ve vlastních hlasováních.</string>
<string name="hash_verification_passed">Obrázek je stejný jako v původním příspěvku</string>
<string name="hash_verification_failed">Obrázek se změnil. Autor možná změnu nezaznamenal</string>
<string name="content_description_add_image">Přidat obrázek</string>
<string name="content_description_add_video">Přidat video</string>
<string name="content_description_add_document">Přidat dokument</string>
<string name="add_content">Přidat do zprávy</string>
<string name="content_description">Popis obsahu</string>
<string name="content_description_example">Modrá loď na bílé písčité pláži při západu slunce</string>
<string name="zap_type">Typ zapsu</string>
<string name="zap_type_explainer">Typ zapsu pro všechny možnosti</string>
<string name="zap_type_public">Veřejný</string>
<string name="zap_type_public_explainer">Všichni mohou vidět transakci a zprávu</string>
<string name="zap_type_private">Soukromý</string>
<string name="zap_type_private_explainer">Odesílatel a příjemce si mohou navzájem vidět a číst zprávu</string>
<string name="zap_type_anonymous">Anonymní</string>
<string name="zap_type_anonymous_explainer">Příjemce a veřejnost neví, kdo platbu poslal</string>
<string name="zap_type_nonzap">Non-Zap</string>
<string name="zap_type_nonzap">Né Zap</string>
<string name="zap_type_nonzap_explainer">Žádná stopa v Nostr, pouze v Lightning</string>
<string name="file_server">Souborový server</string>
<string name="zap_forward_lnAddress">LnAddress nebo @Uživatel</string>
<string name="upload_server_imgur">imgur.com důvěryhodný</string>
<string name="upload_server_imgur_explainer">Imgur může upravit soubor</string>
<string name="upload_server_nostrimg">nostrimg.com důvěryhodný</string>
<string name="upload_server_nostrimg_explainer">NostrImg může upravit soubor</string>
<string name="upload_server_nostrbuild">nostr.build důvěryhodný</string>
<string name="upload_server_nostrbuild_explainer">Nostr.build může upravit soubor</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev důvěryhodný</string>
<string name="upload_server_nostrfilesdev_explainer">Nostrfiles.dev může upravit soubor</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - důvěryhodný</string>
<string name="upload_server_nostrcheckme_explainer">nostrcheck.me může upravit soubor</string>
<string name="upload_server_imgur_nip94">Ověřitelný Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Ověří, zda Imgur upravil soubor. Nový NIP: jiní klienti ho možná neuvidí</string>
<string name="upload_server_nostrimg_nip94">Ověřitelný NostrImg (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">Ověří, zda NostrImg upravil soubor. Nový NIP: jiní klienti ho možná neuvidí</string>
<string name="upload_server_nostrbuild_nip94">Ověřitelný Nostr.build (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94_explainer">Ověří, zda Nostr.build upravil soubor. Nový NIP: jiní klienti ho možná neuvidí</string>
<string name="upload_server_nostrfilesdev_nip94">Ověřitelný Nostrfiles.dev (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">Ověří, zda Nostrfiles.dev upravil soubor. Nový NIP: jiní klienti ho možná neuvidí</string>
<string name="upload_server_nostrcheckme_nip94">Ověřitelný Nostrcheck.me (NIP-94)</string>
<string name="upload_server_nostrcheckme_nip94_explainer">Ověří, zda Nostrcheck.me upravil soubor. Nový NIP: jiní klienti ho možná neuvidí</string>
<string name="upload_server_relays_nip95">Vaše relé (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">Soubory jsou hostovány vašimi relé. Nový NIP: zkontrolujte, zda je podporují</string>
<string name="connect_via_tor_short">Nastavení Tor/Orbot</string>
<string name="connect_via_tor">Připojit se přes váš Orbot</string>
<string name="do_you_really_want_to_disable_tor_title">Odpojit se od Orbotu/Toru?</string>
<string name="do_you_really_want_to_disable_tor_text">Vaše data budou okamžitě přenesena do běžné sítě</string>
<string name="yes">Ano</string>
<string name="no">Ne</string>
<string name="follow_list_selection">Seznam sledovaných</string>
<string name="follow_list_kind3follows">Všechna sledování</string>
<string name="follow_list_global">Globální</string>
<string name="connect_through_your_orbot_setup_markdown">
## Připojte se přes Tor s Orbotem
<string name="connect_through_your_orbot_setup_markdown"> ## Připojte se přes Tor s Orbotem
\n\n1. Nainstalujte [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android)
\n2. Spusťte Orbot
\n3. V Orbotu zkontrolujte port pro Socks. Výchozí hodnota je 9050
@@ -370,54 +334,41 @@
\n5. Nastavte port Socks v této obrazovce
\n6. Stiskněte tlačítko Aktivovat Tor
</string>
<string name="orbot_socks_port">Orbot Socks Port</string>
<string name="invalid_port_number">Neplatné číslo portu</string>
<string name="use_orbot">Použít Orbot</string>
<string name="disconnect_from_your_orbot_setup">Odpojit Tor/Orbot</string>
<string name="app_notification_dms_channel_name">Soukromé zprávy</string>
<string name="app_notification_dms_channel_description">Upozorní vás, když dorazí soukromá zpráva</string>
<string name="app_notification_zaps_channel_name">Přijaté zapsy</string>
<string name="app_notification_zaps_channel_description">Upozorní vás, když vás někdo zapsne</string>
<string name="app_notification_zaps_channel_message">%1$s sats</string>
<string name="app_notification_zaps_channel_message_from">Od %1$s</string>
<string name="app_notification_zaps_channel_message_for">pro %1$s</string>
<string name="reply_notify">Upozornit: </string>
<string name="channel_list_join_conversation">Připojit se ke konverzaci</string>
<string name="channel_list_user_or_group_id">ID uživatele nebo skupiny</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent nebo hex</string>
<string name="channel_list_create_channel">Vytvořit</string>
<string name="channel_list_join_channel">Připojit se</string>
<string name="today">Dnes</string>
<string name="content_warning">Upozornění na obsah</string>
<string name="content_warning_explanation">Tento příspěvek obsahuje citlivý obsah, který může být pro některé lidi urážlivý nebo rušivý</string>
<string name="content_warning_hide_all_sensitive_content">Vždy skrýt citlivý obsah</string>
<string name="content_warning_show_all_sensitive_content">Vždy zobrazit citlivý obsah</string>
<string name="content_warning_see_warnings">Vždy zobrazovat upozornění na obsah</string>
<string name="recommended_apps">Doporučuje: </string>
<string name="filter_spam_from_strangers">Filtrovat spam od cizinců</string>
<string name="warn_when_posts_have_reports_from_your_follows">Varovat, když příspěvky obsahují hlášení od vašich sledovaných osob</string>
<string name="new_reaction_symbol">Nový symbol reakce</string>
<string name="no_reaction_type_setup_long_press_to_change">Nebyly vybrány žádné typy reakcí. Dlouhým stiskem změňte</string>
<string name="zapraiser">Zapraiser</string>
<string name="zapraiser">Zap-sběr</string>
<string name="zapraiser_explainer">Přidá cílovou částku sats pro tento příspěvek. Podporované klienty ji mohou zobrazovat jako ukazatel postupu k podněcování darování</string>
<string name="zapraiser_target_amount_in_sats">Cílová částka v sats</string>
<string name="sats_to_complete">Zapraiser na %1$s. Do cíle zbývá %2$s sats</string>
<string name="read_from_relay">Číst z Relay</string>
<string name="write_to_relay">Zapisovat do Relay</string>
<string name="an_error_occurred_trying_to_get_relay_information">Při pokusu o získání informací z Relay se vyskytla chyba z %1$s</string>
<string name="owner">Vlastník</string>
<string name="version">Verze</string>
<string name="software">Software</string>
<string name="contact">Kontakt</string>
<string name="supports">Podporované NIPs</string>
<string name="admission_fees">Vstupné</string>
@@ -437,38 +388,29 @@
<string name="minimum_pow">Minimální PoW</string>
<string name="auth">Ověření</string>
<string name="payment">Platba</string>
<string name="cashu">Cashu Token</string>
<string name="cashu_redeem">Vyměnit</string>
<string name="no_lightning_address_set">Není nastavena žádná Lightning adresa</string>
<string name="copied_token_to_clipboard">Token zkopírován do schránky</string>
<string name="live_stream_live_tag">ŽIVĚ</string>
<string name="live_stream_offline_tag">OFFLINE</string>
<string name="live_stream_ended_tag">UKONČENO</string>
<string name="live_stream_planned_tag">PLÁNOVÁNO</string>
<string name="live_stream_is_offline">Živé vysílání je offline</string>
<string name="live_stream_has_ended">Živé vysílání ukončeno</string>
<string name="are_you_sure_you_want_to_log_out">Odhlášení vymaže všechny vaše místní informace. Ujistěte se, že máte zálohované své privátní klíče, abyste se vyhnuli ztrátě účtu. Chcete pokračovat?</string>
<string name="followed_tags">Sledované značky</string>
<string name="relay_setup">Rele</string>
<string name="discover_live">Živě</string>
<string name="discover_community">Komunita</string>
<string name="discover_chat">Chaty</string>
<string name="community_approved_posts">Schválené příspěvky</string>
<string name="groups_no_descriptor">Tato skupina nemá popis ani pravidla. Promluvte si s majitelem, aby je přidal/a.</string>
<string name="community_no_descriptor">Tato komunita nemá popis. Promluvte si s majitelem, aby ho přidal/a.</string>
<string name="add_sensitive_content_label">Citlivý obsah</string>
<string name="add_sensitive_content_description">Před zobrazením tohoto obsahu přidá upozornění na citlivý obsah.</string>
<string name="settings">Nastavení</string>
<string name="connectivity_type_always">Vždy</string>
<string name="connectivity_type_wifi_only">Pouze Wi-Fi</string>
<string name="connectivity_type_never">Nikdy</string>
<string name="system">Systém</string>
<string name="light">Světlý</string>
<string name="dark">Tmavý</string>
@@ -479,47 +421,46 @@
<string name="automatically_play_videos">Automaticky přehrávat videa</string>
<string name="automatically_show_url_preview">Automaticky zobrazit náhled URL</string>
<string name="load_image">Načíst obrázek</string>
<string name="spamming_users">Spamovací uživatelé</string>
<string name="muted_button">Ztlumené. Klikněte pro odztlumení</string>
<string name="mute_button">Zvuk zapnutý. Klikněte pro ztlumení</string>
<string name="search_button">Hledat lokální a vzdálené záznamy</string>
<string name="nip05_verified">Adresa Nostr byla ověřena</string>
<string name="nip05_failed">Ověření adresy Nostr se nezdařilo</string>
<string name="nip05_checking">Kontrola adresy Nostr</string>
<string name="select_deselect_all">Vybrat/Zrušit vše</string>
<string name="default_relays">Výchozí</string>
<string name="select_a_relay_to_continue">Vyberte relé pro pokračování</string>
<string name="zap_forward_title">Přeposílat Zapy na:</string>
<string name="zap_forward_explainer">Podporující klienti budou přeposílat Zapy na níže uvedenou LN adresu nebo uživatelský profil místo vaší</string>
<string name="geohash_title">Zveřejnit polohu jako </string>
<string name="geohash_explainer">Přidá Geohash vaší polohy do příspěvku. Veřejnost bude vědět, že se nacházíte do 5 km od aktuální polohy</string>
<string name="add_sensitive_content_explainer">Přidat varování o citlivém obsahu před zobrazením vašeho obsahu. Toto je ideální pro obsah NSFW (nebezpečné pro práci) nebo obsah, který někteří lidé mohou považovat za urážlivý nebo znepokojující</string>
<string name="new_feature_nip24_might_not_be_available_title">Nová funkce</string>
<string name="new_feature_nip24_might_not_be_available_description">Aktivace tohoto režimu vyžaduje od Amethystu odeslání zprávy NIP-24 (GiftWrapped, Zapečetěné přímé a skupinové zprávy). NIP-24 je nový a většina klientů ho zatím neimplementovala. Ujistěte se, že příjemce používá kompatibilního klienta.</string>
<string name="new_feature_nip24_activate">Aktivovat</string>
<string name="messages_create_public_chat">Veřejné</string>
<string name="messages_new_message">Soukromé</string>
<string name="messages_new_message_to">Pro</string>
<string name="messages_new_message_subject">Předmět</string>
<string name="messages_new_message_subject_caption">Téma konverzace</string>
<string name="messages_new_message_to_caption">"@Uživatel1, @Uživatel2, @Uživatel3"</string>
<string name="messages_new_message_to_caption">"\@Uživatel1, @Uživatel2, @Uživatel3"</string>
<string name="messages_group_descriptor">Členové této skupiny</string>
<string name="messages_new_subject_message">Vysvětlení členům</string>
<string name="messages_new_subject_message_placeholder">Změna názvu pro nové cíle.</string>
<string name="language_description">Pro rozhraní aplikace</string>
<string name="theme_description">Tmavé, světlé nebo systémové téma</string>
<string name="automatically_load_images_gifs_description">Automaticky načítat obrázky a GIFy</string>
<string name="automatically_play_videos_description">Automaticky přehrávat videa a GIFy</string>
<string name="automatically_show_url_preview_description">Zobrazit náhledy URL</string>
<string name="load_image_description">Kdy načíst obrázek</string>
<string name="copy_url_to_clipboard">Kopírovat URL do schránky</string>
<string name="copy_the_note_id_to_the_clipboard">Kopírovat ID poznámky do schránky</string>
<string name="created_at">Vytvořeno</string>
<string name="rules">Pravidla</string>
<string name="status_update">Aktualizovat svůj stav</string>
<string name="lightning_wallets_not_found">Chyba při zpracování chybové zprávy</string>
<string name="poll_zap_value_min_max_explainer">Hlasy jsou váženy podle hodnoty zapu. Můžete nastavit minimální částku, abyste se vyhnuli spammerům, a maximální částku, abyste zabránili velkým zapperům, kteří by mohli ovládnout hlasování. Použijte stejnou částku v obou polích, aby byla hodnota každého hlasu stejná. Nechte prázdné pro přijetí libovolné částky.</string>
<string name="error_dialog_zap_error">Nelze odeslat zap</string>
<string name="error_dialog_talk_to_user">Poslat zprávu uživateli</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -12,7 +12,6 @@
<string name="could_not_decrypt_the_message">Nachricht konnte nicht entschlüsselt werden</string>
<string name="group_picture">Gruppenbild</string>
<string name="explicit_content">Expliziter Inhalt</string>
<string name="spam">Spam</string>
<string name="impersonation">Vortäuschung</string>
<string name="illegal_behavior">Illegales Verhalten</string>
<string name="unknown">Unbekannt</string>
@@ -23,8 +22,8 @@
<string name="copy_note_id">Notiz-ID kopieren</string>
<string name="broadcast">Senden</string>
<string name="request_deletion">Löschung beantragen</string>
<string name="block_hide_user"><![CDATA[Benutzer blockieren und ausblenden]]></string>
<string name="block_report">Blockieren / Melden</string>
<string name="block_hide_user"><![CDATA[Benutzer blockieren und ausblenden]]></string>
<string name="report_spam_scam">Spam / Betrug melden</string>
<string name="report_impersonation">Vortäuschung melden</string>
<string name="report_explicit_content">Expliziten Inhalt melden</string>
@@ -36,9 +35,8 @@
<string name="login_with_a_private_key_to_be_able_to_send_zaps">Melden Sie sich mit einem privaten Schlüssel an, um Zaps senden zu können</string>
<string name="login_with_a_private_key_to_be_able_to_follow">Melden Sie sich mit einem privaten Schlüssel an, um zu folgen</string>
<string name="login_with_a_private_key_to_be_able_to_unfollow">Melden Sie sich mit einem privaten Schlüssel an, um nicht mehr zu folgen</string>
<string name="zaps">Zaps</string>
<string name="view_count">Aufrufe</string>
<string name="boost">Boost</string>
<string name="boost">Verstärken</string>
<string name="boosted">Verstärkt</string>
<string name="quote">Zitat</string>
<string name="new_amount_in_sats">Neuer Betrag in Sats</string>
@@ -78,7 +76,6 @@
<string name="failed_to_upload_the_image">Fehler beim Hochladen des Bildes</string>
<string name="relay_address">Relay-Adresse</string>
<string name="posts">Beiträge</string>
<string name="bytes">Bytes</string>
<string name="errors">Fehler</string>
<string name="home_feed">Startseite</string>
<string name="private_message_feed">Private Nachrichten</string>
@@ -165,7 +162,6 @@ anz der Bedingungen ist erforderlich</string>
<string name="public_chat">Öffentlicher Chat</string>
<string name="posts_received">empfangene Beiträge</string>
<string name="remove">Entfernen</string>
<string name="translations_auto">Auto</string>
<string name="translations_translated_from">übersetzt von</string>
<string name="translations_to">zu</string>
<string name="translations_show_in_lang_first">Zuerst in %1$s anzeigen</string>
@@ -174,9 +170,8 @@ anz der Bedingungen ist erforderlich</string>
<string name="nip_05">Nostr-Adresse</string>
<string name="never">nie</string>
<string name="now">jetzt</string>
<string name="h">h</string>
<string name="m">m</string>
<string name="d">d</string>
<string name="h">s</string>
<string name="d">t</string>
<string name="nudity">Nacktheit</string>
<string name="profanity_hateful_speech">Beleidigungen / Hassrede</string>
<string name="report_hateful_speech">Hassrede melden</string>
@@ -186,19 +181,17 @@ anz der Bedingungen ist erforderlich</string>
<string name="mark_all_new_as_read">Alle als neu markieren</string>
<string name="mark_all_as_read">Alle als gelesen markieren</string>
<string name="backup_keys">Schlüssel sichern</string>
<string name="account_backup_tips_md" tools:ignore="Typos">
## Sicherung und Sicherheitshinweise für Schlüssel
<string name="account_backup_tips_md" tools:ignore="Typos"> ## Sicherung und Sicherheitshinweise für Schlüssel
\n\nIhr Konto ist durch einen geheimen Schlüssel geschützt. Der Schlüssel ist eine lange zufällige Zeichenfolge, die mit **nsec1** beginnt. Jeder, der Zugriff auf Ihren geheimen Schlüssel hat, kann Inhalte unter Verwendung Ihrer Identität veröffentlichen.
\n\n- Geben Sie Ihren geheimen Schlüssel **nicht** auf Websites oder Software ein, denen Sie nicht vertrauen.
\n- Die Entwickler von Amethyst werden Sie **niemals** nach Ihrem geheimen Schlüssel fragen.
\n- Bewahren Sie eine sichere Sicherungskopie Ihres geheimen Schlüssels zur Kontowiederherstellung auf. Wir empfehlen die Verwendung eines Passwort-Managers.
</string>
\n- Bewahren Sie eine sichere Sicherungskopie Ihres geheimen Schlüssels zur Kontowiederherstellung auf. Wir empfehlen die Verwendung eines Passwort-Managers.</string>
<string name="secret_key_copied_to_clipboard">Geheimer Schlüssel (nsec) in die Zwischenablage kopiert</string>
<string name="copy_my_secret_key">Meinen geheimen Schlüssel kopieren</string>
<string name="biometric_authentication_failed">Authentifizierung fehlgeschlagen</string>
<string name="biometric_error">Fehler</string>
<string name="badge_created_by">Erstellt von %1$s</string>
<string name="badge_award_image_for">Auszeichnungsbild für %1$s</string>
<string name="badge_created_by">"Erstellt von %1$s"</string>
<string name="badge_award_image_for">"Auszeichnungsbild für %1$s"</string>
<string name="new_badge_award_notif">Sie haben eine neue Auszeichnung erhalten</string>
<string name="award_granted_to">Auszeichnung verliehen an</string>
<string name="copied_note_text_to_clipboard">Notiztext in die Zwischenablage kopiert</string>
@@ -236,7 +229,7 @@ anz der Bedingungen ist erforderlich</string>
<string name="report_dialog_impersonation">Bösartige Nachahmung</string>
<string name="report_dialog_nudity">Nacktheit oder explizite Inhalte</string>
<string name="report_dialog_illegal">Illegales Verhalten</string>
<string name="report_dialog_blocking_a_user">Durch das Blockieren eines Benutzers werden deren Inhalte in Ihrer App ausgeblendet. Ihre Notizen sind weiterhin öffentlich sichtbar, auch für Personen, die Sie blockiert haben. Blockierte Benutzer werden auf dem Bildschirm "Sicherheitsfilter" aufgelistet.</string>
<string name="report_dialog_blocking_a_user">Durch das Blockieren eines Benutzers werden deren Inhalte in Ihrer App ausgeblendet. Ihre Notizen sind weiterhin öffentlich sichtbar, auch für Personen, die Sie blockiert haben. Blockierte Benutzer werden auf dem Bildschirm \"Sicherheitsfilter\" aufgelistet.</string>
<string name="report_dialog_block_hide_user_btn"><![CDATA[Benutzer
blockieren & ausblenden]]></string>
@@ -249,7 +242,6 @@ anz der Bedingungen ist erforderlich</string>
<string name="report_dialog_post_report_btn">Meldung veröffentlichen</string>
<string name="report_dialog_title">Blockieren und melden</string>
<string name="block_only">Blockieren</string>
<string name="bookmarks">Lesezeichen</string>
<string name="private_bookmarks">Private Lesezeichen</string>
<string name="public_bookmarks">Öffentliche Lesezeichen</string>
@@ -257,176 +249,129 @@ anz der Bedingungen ist erforderlich</string>
<string name="add_to_public_bookmarks">Zu den öffentlichen Lesezeichen hinzufügen</string>
<string name="remove_from_private_bookmarks">Aus den privaten Lesezeichen entfernen</string>
<string name="remove_from_public_bookmarks">Aus den öffentlichen Lesezeichen entfernen</string>
<string name="wallet_connect_service">Wallet Connect Service</string>
<string name="wallet_connect_service">Wallet-Verbindungsdienst</string>
<string name="wallet_connect_service_explainer">Autorisiert einen Nostr Secret, Zaps ohne Verlassen der App zu bezahlen. Bewahren Sie den geheimen Schlüssel sicher auf und verwenden Sie nach Möglichkeit ein privates Relay</string>
<string name="wallet_connect_service_pubkey">Wallet Connect Public Key</string>
<string name="wallet_connect_service_relay">Wallet Connect Relay</string>
<string name="wallet_connect_service_secret">Wallet Connect Secret</string>
<string name="wallet_connect_service_relay">Wallet-Verbindungs-Relay</string>
<string name="wallet_connect_service_secret">Wallet-Verbindungs-Geheimnis</string>
<string name="wallet_connect_service_show_secret">Geheimen Schlüssel anzeigen</string>
<string name="wallet_connect_service_secret_placeholder">nsec / hexadezimaler privater Schlüssel</string>
<string name="pledge_amount_in_sats">Spendenbetrag in Sats</string>
<string name="post_poll">Umfrage veröffentlichen</string>
<string name="poll_heading_required">Erforderliche Felder:</string>
<string name="poll_zap_recipients">Zap-Empfänger</string>
<string name="poll_primary_description">Hauptbeschreibung der Umfrage…</string>
<string name="poll_option_index">Option %s</string>
<string name="poll_option_description">Beschreibung der Umfrageoption</string>
<string name="poll_heading_optional">Optionale Felder:</string>
<string name="poll_zap_value_min">Mindest-Zap-Betrag</string>
<string name="poll_zap_value_max">Maximaler Zap-Betrag</string>
<string name="poll_consensus_threshold">Konsens</string>
<string name="poll_consensus_threshold_percent">(0100)%</string>
<string name="poll_closing_time">Schließen nach</string>
<string name="poll_closing_time_days">Tagen</string>
<string name="poll_is_closed">Umfrage ist für neue Stimmen geschlossen</string>
<string name="poll_zap_amount">Zap-Betrag</string>
<string name="one_vote_per_user_on_atomic_votes">Es ist nur eine Stimme pro Benutzer für diesen Umfragetyp erlaubt</string>
<string name="looking_for_event">Veranstaltung suchen</string>
<string name="looking_for_event">"Veranstaltung suchen"</string>
<string name="custom_zaps_add_a_message">Füge eine öffentliche Nachricht hinzu</string>
<string name="custom_zaps_add_a_message_private">Füge eine private Nachricht hinzu</string>
<string name="custom_zaps_add_a_message_nonzap">Füge eine Rechnungsnachricht hinzu</string>
<string name="custom_zaps_add_a_message_example">Vielen Dank für deine Arbeit!</string>
<string name="lightning_create_and_add_invoice">Erstellen und Hinzufügen</string>
<string name="poll_author_no_vote">Umfragenautoren können nicht in ihren eigenen Umfragen abstimmen.</string>
<string name="hash_verification_passed">Das Bild ist seitdem Beitrag dasselbe</string>
<string name="hash_verification_failed">Das Bild hat sich geändert. Der Autor hat die Änderung möglicherweise nicht bemerkt.</string>
<string name="content_description_add_image">Bild hinzufügen</string>
<string name="content_description_add_video">Video hinzufügen</string>
<string name="content_description_add_document">Dokument hinzufügen</string>
<string name="add_content">Zur Nachricht hinzufügen</string>
<string name="content_description">Beschreibung des Inhalts</string>
<string name="content_description_example">Ein blaues Boot an einem weißen Sandstrand bei Sonnenuntergang</string>
<string name="zap_type">Zap-Typ</string>
<string name="zap_type_explainer">Zap-Typ für alle Optionen</string>
<string name="zap_type_public">Öffentlich</string>
<string name="zap_type_public_explainer">Jeder kann die Transaktion und die Nachricht sehen</string>
<string name="zap_type_private">Privat</string>
<string name="zap_type_private_explainer">Absender und Empfänger können einander sehen und die Nachricht lesen</string>
<string name="zap_type_anonymous">Anonym</string>
<string name="zap_type_anonymous_explainer">Empfänger und die Öffentlichkeit wissen nicht, wer die Zahlung gesendet hat</string>
<string name="zap_type_nonzap">Non-Zap</string>
<string name="zap_type_nonzap">Keine Zap</string>
<string name="zap_type_nonzap_explainer">Keine Spur in Nostr, nur in Lightning</string>
<string name="file_server">Dateiserver</string>
<string name="zap_forward_lnAddress">LnAddress oder @Benutzer</string>
<string name="upload_server_imgur">imgur.com - vertrauenswürdig</string>
<string name="upload_server_imgur_explainer">Imgur kann die Datei ändern</string>
<string name="upload_server_nostrimg">nostrimg.com - vertrauenswürdig</string>
<string name="upload_server_nostrimg_explainer">NostrImg kann die Datei ändern</string>
<string name="upload_server_nostrbuild">nostr.build - vertrauenswürdig</string>
<string name="upload_server_nostrbuild_explainer">Nostr.build kann die Datei ändern</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev - vertrauenswürdig</string>
<string name="upload_server_nostrfilesdev_explainer">Nostrfiles.dev kann die Datei ändern</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - vertrauenswürdig</string>
<string name="upload_server_nostrcheckme_explainer">nostrcheck.me kann die Datei ändern</string>
<string name="upload_server_imgur_nip94">Verifizierbares Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Überprüft, ob Imgur die Datei geändert hat. Neuer NIP: Andere Clients sehen es möglicherweise nicht</string>
<string name="upload_server_nostrimg_nip94">Verifizierbares NostrImg (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">Überprüft, ob NostrImg die Datei geändert hat. Neuer NIP: Andere Clients sehen es möglicherweise nicht</string>
<string name="upload_server_nostrbuild_nip94">Verifizierbares Nostr.build (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94_explainer">Überprüft, ob Nostr.build die Datei geändert hat. Neuer NIP: Andere Clients sehen es möglicherweise nicht</string>
<string name="upload_server_nostrfilesdev_nip94">Verifizierbares Nostrfiles.dev (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">Überprüft, ob Nostrfiles.dev die Datei geändert hat. Neuer NIP: Andere Clients sehen es möglicherweise nicht</string>
<string name="upload_server_nostrcheckme_nip94">Verifizierbares Nostrcheck.me (NIP-94)</string>
<string name="upload_server_nostrcheckme_nip94_explainer">Überprüft, ob Nostrcheck.me die Datei geändert hat. Neuer NIP: Andere Clients sehen es möglicherweise nicht</string>
<string name="upload_server_relays_nip95">Deine Relays (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">Dateien werden von deinen Relays gehostet. Neuer NIP: Überprüfe, ob sie unterstützt werden</string>
<string name="connect_via_tor_short">Tor/Orbot-Einrichtung</string>
<string name="connect_via_tor">Verbindung über deine Orbot-Einrichtung herstellen</string>
<string name="do_you_really_want_to_disable_tor_title">Von deiner Orbot/Tor trennen?</string>
<string name="do_you_really_want_to_disable_tor_text">Deine Daten werden sofort im regulären Netzwerk übertragen</string>
<string name="yes">Ja</string>
<string name="no">Nein</string>
<string name="follow_list_selection">Folgen-Liste</string>
<string name="follow_list_kind3follows">Alle Folgen</string>
<string name="follow_list_global">Global</string>
<string name="connect_through_your_orbot_setup_markdown">
## Über Tor mit Orbot verbinden
<string name="follow_list_global">Weltweit</string>
<string name="connect_through_your_orbot_setup_markdown"> ## Über Tor mit Orbot verbinden
\n\n1. Installiere [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android)
\n2. Starte Orbot
\n3. Überprüfe in Orbot den Socks-Port. Standardmäßig wird der Port 9050 verwendet
\n4. Ändere gegebenenfalls den Port in Orbot
\n5. Konfiguriere den Socks-Port in diesem Bildschirm
\n6. Drücke die Aktivieren-Schaltfläche, um Orbot als Proxy zu verwenden
</string>
\n6. Drücke die Aktivieren-Schaltfläche, um Orbot als Proxy zu verwenden</string>
<string name="orbot_socks_port">Orbot Socks-Port</string>
<string name="invalid_port_number">Ungültige Portnummer</string>
<string name="use_orbot">Orbot verwenden</string>
<string name="disconnect_from_your_orbot_setup">Tor/Orbot trennen</string>
<string name="app_notification_dms_channel_name">Private Nachrichten</string>
<string name="app_notification_dms_channel_description">Benachrichtigt dich, wenn eine private Nachricht eingeht</string>
<string name="app_notification_zaps_channel_name">Erhaltene Zaps</string>
<string name="app_notification_zaps_channel_description">Benachrichtigt dich, wenn dich jemand zappt</string>
<string name="app_notification_zaps_channel_message">%1$s Sats</string>
<string name="app_notification_zaps_channel_message_from">Von %1$s</string>
<string name="app_notification_zaps_channel_message_for">für %1$s</string>
<string name="reply_notify">Benachrichtigen: </string>
<string name="channel_list_join_conversation">Unterhaltung beitreten</string>
<string name="channel_list_user_or_group_id">Benutzer- oder Gruppen-ID</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent oder hex</string>
<string name="channel_list_create_channel">Erstellen</string>
<string name="channel_list_join_channel">Beitreten</string>
<string name="today">Heute</string>
<string name="content_warning">Inhaltswarnung</string>
<string name="content_warning_explanation">Dieser Beitrag enthält sensiblen Inhalt, den einige Personen als beleidigend oder verstörend empfinden könnten</string>
<string name="content_warning_hide_all_sensitive_content">Sensiblen Inhalt immer ausblenden</string>
<string name="content_warning_show_all_sensitive_content">Sensiblen Inhalt immer anzeigen</string>
<string name="content_warning_see_warnings">Immer Inhaltswarnungen anzeigen</string>
<string name="recommended_apps">Empfohlene Apps: </string>
<string name="filter_spam_from_strangers">Spam von Fremden filtern</string>
<string name="warn_when_posts_have_reports_from_your_follows">Warnung bei Meldungen von deinen Abonnements</string>
<string name="new_reaction_symbol">Neues Reaktionssymbol</string>
<string name="no_reaction_type_setup_long_press_to_change">Keine Reaktionstypen ausgewählt. Lange drücken, um zu ändern</string>
<string name="zapraiser">Zapraiser</string>
<string name="zapraiser">Zap-Sammlung</string>
<string name="zapraiser_explainer">Fügt einen Zielbetrag in Sats für diesen Beitrag hinzu. Unterstützende Clients können dies als Fortschrittsbalken anzeigen, um Spenden zu fördern</string>
<string name="zapraiser_target_amount_in_sats">Zielbetrag in Sats</string>
<string name="sats_to_complete">Zapraiser bei %1$s. %2$s Sats bis zum Ziel</string>
<string name="read_from_relay">Von Relay lesen</string>
<string name="write_to_relay">In Relay schreiben</string>
<string name="an_error_occurred_trying_to_get_relay_information">Ein Fehler ist beim Abrufen von Relay-Informationen von %1$s aufgetreten</string>
<string name="owner">Inhaber</string>
<string name="version">Version</string>
<string name="software">Software</string>
<string name="contact">Kontakt</string>
<string name="supports">Unterstützte NIPs</string>
<string name="admission_fees">Eintrittsgebühren</string>
@@ -434,7 +379,6 @@ anz der Bedingungen ist erforderlich</string>
<string name="limitations">Einschränkungen</string>
<string name="countries">Länder</string>
<string name="languages">Sprachen</string>
<string name="tags">Tags</string>
<string name="posting_policy">Veröffentlichungsrichtlinie</string>
<string name="message_length">Nachrichtenlänge</string>
<string name="subscriptions">Abonnements</string>
@@ -450,35 +394,22 @@ anz der Bedingungen ist erforderlich</string>
<string name="cashu_redeem">Einlösen</string>
<string name="no_lightning_address_set">Keine Lightning-Adresse festgelegt</string>
<string name="copied_token_to_clipboard">Token in die Zwischenablage kopiert</string>
<string name="live_stream_live_tag">LIVE</string>
<string name="live_stream_offline_tag">OFFLINE</string>
<string name="live_stream_ended_tag">BEENDET</string>
<string name="live_stream_planned_tag">GEPLANT</string>
<string name="live_stream_is_offline">Livestream ist offline</string>
<string name="live_stream_has_ended">Livestream beendet</string>
<string name="are_you_sure_you_want_to_log_out">Das Abmelden löscht alle Ihre lokalen Informationen. Stellen Sie sicher, dass Sie Ihre privaten Schlüssel gesichert haben, um einen Kontoverlust zu vermeiden. Möchten Sie fortfahren?</string>
<string name="followed_tags">Gefolgte Tags</string>
<string name="relay_setup">Relais</string>
<string name="discover_live">Live</string>
<string name="discover_community">Community</string>
<string name="discover_chat">Chats</string>
<string name="community_approved_posts">Genehmigte Beiträge</string>
<string name="groups_no_descriptor">Diese Gruppe hat keine Beschreibung oder Regeln. Sprechen Sie mit dem Eigentümer, um eine hinzuzufügen.</string>
<string name="community_no_descriptor">Diese Community hat keine Beschreibung. Sprechen Sie mit dem Eigentümer, um eine hinzuzufügen.</string>
<string name="add_sensitive_content_label">Sensibler Inhalt</string>
<string name="add_sensitive_content_description">Fügt eine Warnung für sensiblen Inhalt hinzu, bevor dieser Inhalt angezeigt wird.</string>
<string name="settings">Einstellungen</string>
<string name="connectivity_type_always">Immer</string>
<string name="connectivity_type_wifi_only">Nur WLAN</string>
<string name="connectivity_type_never">Nie</string>
<string name="system">System</string>
<string name="light">Hell</string>
<string name="dark">Dunkel</string>
<string name="application_preferences">Anwendungseinstellungen</string>
@@ -488,47 +419,46 @@ anz der Bedingungen ist erforderlich</string>
<string name="automatically_play_videos">Videos automatisch abspielen</string>
<string name="automatically_show_url_preview">URL-Vorschau automatisch anzeigen</string>
<string name="load_image">Bild laden</string>
<string name="spamming_users">Spammer</string>
<string name="muted_button">Ton aus. Klicken, um Ton einzuschalten</string>
<string name="mute_button">Ton an. Klicken, um Ton auszuschalten</string>
<string name="search_button">Lokale und entfernte Einträge durchsuchen</string>
<string name="nip05_verified">Nostr-Adresse verifiziert</string>
<string name="nip05_failed">Nostr-Adresse konnte nicht verifiziert werden</string>
<string name="nip05_checking">Nostr-Adresse wird überprüft</string>
<string name="select_deselect_all">Alle auswählen/abwählen</string>
<string name="default_relays">Standard</string>
<string name="select_a_relay_to_continue">Wählen Sie ein Relais aus, um fortzufahren</string>
<string name="zap_forward_title">Weiterleiten von Zaps an:</string>
<string name="zap_forward_explainer">Unterstützende Clients leiten Zaps an die LNAddress oder das Benutzerprofil unten weiter, anstatt an Ihre eigene Adresse</string>
<string name="geohash_title">Ort preisgeben als </string>
<string name="geohash_explainer">Fügt dem Beitrag einen Geohash Ihres Standorts hinzu. Die Öffentlichkeit wird wissen, dass Sie sich innerhalb von 5 km (3 mi) vom aktuellen Standort befinden</string>
<string name="add_sensitive_content_explainer">Fügt eine Warnung für sensiblen Inhalt hinzu, bevor Ihr Inhalt angezeigt wird. Dies ist ideal für NSFW-Inhalte (nicht sicher für die Arbeit) oder Inhalte, die manche Menschen als anstößig oder verstörend empfinden könnten</string>
<string name="new_feature_nip24_might_not_be_available_title">Neues Feature</string>
<string name="new_feature_nip24_might_not_be_available_description">Um diesen Modus zu aktivieren, muss Amethyst eine NIP-24-Nachricht senden (GiftWrapped, Versiegelte Direkt- und Gruppennachrichten). NIP-24 ist neu und die meisten Clients haben es noch nicht implementiert. Stellen Sie sicher, dass der Empfänger einen kompatiblen Client verwendet.</string>
<string name="new_feature_nip24_activate">Aktivieren</string>
<string name="messages_create_public_chat">Öffentlich</string>
<string name="messages_new_message">Privat</string>
<string name="messages_new_message_to">An</string>
<string name="messages_new_message_subject">Betreff</string>
<string name="messages_new_message_subject_caption">Gesprächsthema</string>
<string name="messages_new_message_to_caption">"@Benutzer1, @Benutzer2, @Benutzer3"</string>
<string name="messages_new_message_to_caption">"\@Benutzer1, @Benutzer2, @Benutzer3"</string>
<string name="messages_group_descriptor">Mitglieder dieser Gruppe</string>
<string name="messages_new_subject_message">Erklärung an Mitglieder</string>
<string name="messages_new_subject_message_placeholder">Ändern des Namens für die neuen Ziele.</string>
<string name="language_description">Für die App-Benutzeroberfläche</string>
<string name="theme_description">Dunkles, helles oder Systemdesign</string>
<string name="automatically_load_images_gifs_description">Bilder und GIFs automatisch laden</string>
<string name="automatically_play_videos_description">Videos und GIFs automatisch abspielen</string>
<string name="automatically_show_url_preview_description">URL-Vorschauen anzeigen</string>
<string name="load_image_description">Wann Bilder geladen werden sollen</string>
</resources>
<string name="copy_url_to_clipboard">URL in die Zwischenablage kopieren</string>
<string name="copy_the_note_id_to_the_clipboard">Notiz-ID in die Zwischenablage kopieren</string>
<string name="created_at">Erstellt am</string>
<string name="rules">Regeln</string>
<string name="status_update">Status aktualisieren</string>
<string name="lightning_wallets_not_found">Fehler beim Verarbeiten der Fehlermeldung</string>
<string name="poll_zap_value_min_max_explainer">Die Abstimmungen werden nach der Höhe des Zaps gewichtet. Sie können einen Mindestbetrag festlegen, um Spam zu verhindern, und einen Höchstbetrag, um zu verhindern, dass große Zapper die Abstimmung dominieren. Verwenden Sie denselben Betrag in beiden Feldern, um sicherzustellen, dass jeder Stimme der gleiche Wert zukommt. Lassen Sie es leer, um jeden Betrag zu akzeptieren.</string>
<string name="error_dialog_zap_error">Zap konnte nicht gesendet werden</string>
<string name="error_dialog_talk_to_user">Mit dem Benutzer kommunizieren</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="point_to_the_qr_code">Montri al la QR-Kodo</string>
<string name="show_qr">Montri QR</string>
<string name="profile_image">Profila Bildo</string>
<string name="scan_qr">Skani QR</string>
<string name="show_anyway">Montri Ĉiukaze</string>
<string name="post_was_flagged_as_inappropriate_by">La afiŝo estis markita kiel netaŭga per</string>
<string name="post_not_found">Afiŝo netrovita</string>
<string name="point_to_the_qr_code">Celu la QR-Kodon</string>
<string name="show_qr">Montri QR</string>
<string name="profile_image">Profila Bildo</string>
<string name="scan_qr">Skani QR</string>
<string name="show_anyway">Montri Ĉiukaze</string>
<string name="post_was_flagged_as_inappropriate_by">La afiŝo estis denuncita kiel netaŭga de</string>
<string name="post_not_found">Afiŝo ŝarĝanta aŭ netrovita en via listo de plusendiloj</string>
<string name="channel_image">Kanala Bildo</string>
<string name="referenced_event_not_found">Referencita evento netrovita</string>
<string name="could_not_decrypt_the_message">Mesaĝo nemalĉifrebla</string>
@@ -21,6 +22,8 @@
<string name="copy_user_pubkey">Kopii ID de Aŭtoro</string>
<string name="copy_note_id">Kopii ID de Noto</string>
<string name="broadcast">Elsendi</string>
<string name="request_deletion">Peti Forigon</string>
<string name="block_report">Bloki / Denunci</string>
<string name="block_hide_user"><![CDATA[Bloki kaj Kaŝi Uzanton]]></string>
<string name="report_spam_scam">Raporti Spamon / Friponon</string>
<string name="report_impersonation">Raporti Personigon</string>
@@ -31,9 +34,11 @@
<string name="login_with_a_private_key_to_like_posts">Ensaluti per sekreta ŝlosilo por ŝati afiŝojn</string>
<string name="no_zap_amount_setup_long_press_to_change">Neniu kvanto da zapoj agordita. Longe premi por ŝanĝigi</string>
<string name="login_with_a_private_key_to_be_able_to_send_zaps">Ensaluti per sekreta ŝlosilo por sendi zapojn</string>
<string name="login_with_a_private_key_to_be_able_to_follow">Ensalutu per sekreta ŝlosilo por sekvi</string>
<string name="login_with_a_private_key_to_be_able_to_unfollow">Ensalutu per sekreta ŝlosilo por malsekvi</string>
<string name="zaps">Zapoj</string>
<string name="view_count">Nombro da Vidoj</string>
<string name="boost">Boost</string>
<string name="boost">Plifortigi</string>
<string name="boosted">impulsita</string>
<string name="quote">Citi</string>
<string name="new_amount_in_sats">Nova Kvanto da Satoj</string>
@@ -42,6 +47,8 @@
<string name="and">" kaj "</string>
<string name="in_channel">"en kanalo "</string>
<string name="profile_banner">Profila Murpapero</string>
<string name="payment_successful">Sukcesa Pago</string>
<string name="error_parsing_error_message">Eraro analizante de erara mesaĝo</string>
<string name="following">" Sekvanti"</string>
<string name="followers">" Sekvantoj"</string>
<string name="profile">Profilo</string>
@@ -50,17 +57,16 @@
<string name="show_more">Montri Plu</string>
<string name="lightning_invoice">Lightning-Fakturo</string>
<string name="pay">Pagi</string>
<string name="lightning_tips">Lightning-Trinkmono</string>
<string name="lightning_tips">Lightning-Gratifiko</string>
<string name="note_to_receiver">Noto al Ricevanto</string>
<string name="thank_you_so_much">Dankegon!</string>
<string name="amount_in_sats">Kvanto en Satoj</string>
<string name="send_sats">Sendi Satojn</string>
<string name="translations_never_translate_from_lang">"Neniam traduki el "</string>
<string name="error_parsing_preview_for">"Eraro anazilante antaŭrigardon por %1$s : %2$s"</string>
<string name="preview_card_image_for">"Antaŭrigardi Bildon por %1$s"</string>
<string name="error_parsing_preview_for">"Eraro anazilante antaŭrigardon de %1$s : %2$s"</string>
<string name="preview_card_image_for">"Antaŭrigardi Bildon de %1$s"</string>
<string name="new_channel">Nova Kanalo</string>
<string name="channel_name">Kanala Nomo</string>
<string name="my_awesome_group">Mia Mojosega Grupo</string>
<string name="my_awesome_group">Mia Mojosa Grupo</string>
<string name="picture_url">Bilda URL</string>
<string name="description">Priskribo</string>
<string name="about_us">"Pri ni... "</string>
@@ -68,27 +74,28 @@
<string name="post">Afiŝi</string>
<string name="save">Konservi</string>
<string name="create">Krei</string>
<string name="cancel">Malfari</string>
<string name="cancel">Nuligi</string>
<string name="failed_to_upload_the_image">Malsukcesis alŝuti la bildon</string>
<string name="relay_address">Plusendilo Adreso</string>
<string name="posts">Afiŝoj</string>
<string name="bytes">Bajtoj</string>
<string name="errors">Eraroj</string>
<string name="home_feed">Hejma Fluo</string>
<string name="private_message_feed">Privata Mesaĝa Fluo</string>
<string name="public_chat_feed">Publika Babilada Fluo</string>
<string name="private_message_feed">Fluo de Privata Mesaĝoj</string>
<string name="public_chat_feed">Fluo de Publikaj Babiloj</string>
<string name="global_feed">Tutmonda Fluo</string>
<string name="search_feed">Serĉa Fluo</string>
<string name="search_feed">Serĉi Fluon</string>
<string name="add_a_relay">Aldoni Plusendilon</string>
<string name="display_name">Montra Nomo</string>
<string name="my_display_name">Mia montra nomo</string>
<string name="username">Uzantnomo</string>
<string name="my_username">Mia uzantnomo</string>
<string name="about_me">Pri mi</string>
<string name="avatar_url">Avataro URL</string>
<string name="banner_url">Murpapero URL</string>
<string name="website_url">Retejo URL</string>
<string name="avatar_url">URL de Avataro</string>
<string name="banner_url">URL de Murpapero</string>
<string name="website_url">URL de Retejo</string>
<string name="ln_address">LN Adreso</string>
<string name="ln_url_outdated">LN URL (posttempa)</string>
<string name="ln_url_outdated">LN URL (malmoderna)</string>
<string name="image_saved_to_the_gallery">Bildo konservita al la galerio</string>
<string name="failed_to_save_the_image">Malsukcesis konservi la bildon</string>
<string name="upload_image">Alŝuti Bildon</string>
@@ -106,7 +113,7 @@
<string name="conversations">Konversacioj</string>
<string name="notes">Notoj</string>
<string name="replies">Respondoj</string>
<string name="follows">"Sekvoj"</string>
<string name="follows">"Sekvitaj"</string>
<string name="reports">"Raportoj"</string>
<string name="more_options">Pli da Opcioj</string>
<string name="relays">" Plusendiloj"</string>
@@ -119,6 +126,7 @@
<string name="send_a_direct_message">Sendi rektan mesaĝon</string>
<string name="edits_the_user_s_metadata">Redakti metadatumojn de uzanto</string>
<string name="follow">Sekvi</string>
<string name="follow_back">Sekvi reen</string>
<string name="unblock">Malbloki</string>
<string name="copy_user_id">Kopii ID de uzanto</string>
<string name="unblock_user">Malbloki Uzanton</string>
@@ -158,8 +166,8 @@
<string name="translations_to">al</string>
<string name="translations_show_in_lang_first">Montri en %1$s unua</string>
<string name="translations_always_translate_to_lang">Ĉiam traduki al</string>
<string name="nip_05">Nostr Address</string>
<string name="lnurl" translatable="false">LNURL...</string>
<string name="translations_never_translate_from_lang">Neniam traduki el </string>
<string name="nip_05">Adreso de Nostr</string>
<string name="never">neniam</string>
<string name="now">nun</string>
<string name="h">h</string>
@@ -174,8 +182,7 @@
<string name="mark_all_new_as_read">Marki ĉiujn Novajn legitaj</string>
<string name="mark_all_as_read">Marki ĉiujn legitajn</string>
<string name="backup_keys">Sekurkopii Ŝlosilojn</string>
<string name="account_backup_tips_md" tools:ignore="Typos">
## Sekurkopio de Ŝlosiloj kaj Rekomendoj de Sekureco
<string name="account_backup_tips_md" tools:ignore="Typos"> ## Sekurkopio de Ŝlosiloj kaj Rekomendoj de Sekureco
\n\nVia konto estas sekurigita per sekreta ŝlosilo. La ŝlosilo estas longa hazarda literĉeno komencata kun **nsec1**. Ĉiu, kiu havas aliron al via sekreta ŝlosilo, povas publikigi enhavon per via identeco.
\n\n- **Ne** metu vian sekretan ŝlosilon en ajna retejo aŭ programaro, kiun vi ne fidas.
\n- La programistoj de Amethyst **neniam** petos de vi vian sekretan ŝlosilon.
@@ -193,6 +200,15 @@
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">Kopiita @npub de aŭtoro al tondujo</string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">Kopiita ID de noto (@note1) al tondujo</string>
<string name="select_text_dialog_top">Elekti Tekston</string>
<string name="private_conversation_notification">"&lt;Privata mesaĝo nemalĉifrebla.&gt;\n\nVi estis citita en privata konversacio inter %1$s kaj %2$s."</string>
<string name="account_switch_add_account_dialog_title">Aldoni Novan Konton</string>
<string name="drawer_accounts">Kontoj</string>
<string name="account_switch_select_account">Elekti Konton</string>
<string name="account_switch_add_account_btn">Aldoni Novan Konton</string>
<string name="account_switch_active_account">Aktiva konto</string>
<string name="account_switch_has_private_key">Havas sekretan ŝlosilon</string>
<string name="account_switch_pubkey_only">Nur legebla, neniu sekreta ŝlosilo</string>
<string name="back">Malantaŭen</string>
<string name="quick_action_select">Elekti</string>
<string name="quick_action_share_browser_link">Kunhavigi Ligilon</string>
<string name="quick_action_share">Kunhavigi</string>
@@ -204,6 +220,258 @@
<string name="quick_action_follow">Sekvi</string>
<string name="quick_action_request_deletion_alert_title">Peti Forigiton</string>
<string name="quick_action_request_deletion_alert_body">Amethyst petos, ke via noto estu forigita el la plusendiloj al kiuj vi estas aktuale konektita. Ne estas garantio, ke via noto estos porĉiame forigita el tiuj plusendiloj, aŭ el aliaj plusendiloj, kie ĝi povus esti konservita.</string>
<string name="private_conversation_notification">"&lt;Privata mesaĝo nemalĉifrebla.&gt;\n\nVi estis citita en privata konversacio inter %1$s kaj %2$s."</string>
<string name="quick_action_block_dialog_btn">Bloki</string>
<string name="quick_action_delete_dialog_btn">Forigi</string>
<string name="quick_action_block">Bloki</string>
<string name="quick_action_report">Denunci</string>
<string name="quick_action_delete_button">Forigi</string>
<string name="quick_action_dont_show_again_button">Ne montru denove</string>
<string name="report_dialog_spam">Spamo aŭ trompoj</string>
<string name="report_dialog_profanity">Obscena aŭ malŝata konduto</string>
<string name="report_dialog_impersonation">Malica anstataŭo</string>
<string name="report_dialog_nudity">Nudeco aŭ kruda enhavo</string>
<string name="report_dialog_illegal">Kontraŭleĝa Konduto</string>
<string name="report_dialog_blocking_a_user">Bloki uzanton kaŝus sian enhavon en via apo. Viaj notoj ankoraŭ estos publike videbla, inkluzive de la uzantoj vi blokas. Blokitaj uzantoj estas montritaj en la Sekureca Filtrilo ekrano.</string>
<string name="report_dialog_block_hide_user_btn"><![CDATA[Bloki kaj Kaŝi Uzanton]]></string>
<string name="report_dialog_report_btn">Denunci</string>
<string name="report_dialog_reminder_public">Afiŝitaj denuncoj estos publike videbla.</string>
<string name="report_dialog_additional_reason_placeholder">Laŭvole doni ekstran kuntekston pri via denunco…</string>
<string name="report_dialog_additional_reason_label">Ekstra Kunteksto</string>
<string name="report_dialog_select_reason_label">Kialo</string>
<string name="report_dialog_select_reason_placeholder">Ekelti kialon…</string>
<string name="report_dialog_post_report_btn">Afiŝi Denuncon</string>
<string name="report_dialog_title">Bloki kaj Denunci</string>
<string name="block_only">Bloki</string>
<string name="bookmarks">Legosignoj</string>
<string name="private_bookmarks">Privataj Legosignoj</string>
<string name="public_bookmarks">Publikaj Legosignoj</string>
<string name="add_to_private_bookmarks">Aldoni al Privataj Legosignoj</string>
<string name="add_to_public_bookmarks">Aldoni al Publikaj Legosignoj</string>
<string name="remove_from_private_bookmarks">Forigi el Privataj Legosignoj</string>
<string name="remove_from_public_bookmarks">Forigi el Publikaj Legosignoj</string>
<string name="wallet_connect_service">Servico de Monujo-Konektado</string>
<string name="wallet_connect_service_explainer">Permesas Nostr-Sekreton por pagi zapojn sen eliri la apon. Konservi la sekreton sekura kaj uzu privatan plusendilon laŭeble</string>
<string name="wallet_connect_service_pubkey">Pubŝlosilo de Wallet Connect</string>
<string name="wallet_connect_service_relay">Plusendilo de Wallet Connect</string>
<string name="wallet_connect_service_secret">Sekreto de Wallet Connect</string>
<string name="wallet_connect_service_show_secret">Montri sekretan ŝlosilon</string>
<string name="wallet_connect_service_secret_placeholder">nsec / heks privata ŝlosilo</string>
<string name="pledge_amount_in_sats">Promesi Kvanton en Satoj</string>
<string name="post_poll">Afiŝi Enketon</string>
<string name="poll_heading_required">Necesaj kampoj:</string>
<string name="poll_zap_recipients">Zapi ricevantojn</string>
<string name="poll_primary_description">Ĉefa priskribo de enketo…</string>
<string name="poll_option_index">Elekto %s</string>
<string name="poll_option_description">Priskribo de elekto de enketo</string>
<string name="poll_heading_optional">Nedevigaj kampoj:</string>
<string name="poll_zap_value_min">Minimumo de Zapoj</string>
<string name="poll_zap_value_max">Maksimumo de Zapoj</string>
<string name="poll_consensus_threshold">Interkonsento</string>
<string name="poll_consensus_threshold_percent">(0-100)%</string>
<string name="poll_closing_time">Fermi post</string>
<string name="poll_closing_time_days">tagoj</string>
<string name="poll_is_closed">Enketo estas fermita al novaj voĉdonoj</string>
<string name="poll_zap_amount">Kvanto de zapoj</string>
<string name="one_vote_per_user_on_atomic_votes">Nur po unu voĉdono por uzanto estas permesita en ĉi tia enketo</string>
<string name="looking_for_event">"Serĉanta Eventon %1$s"</string>
<string name="custom_zaps_add_a_message">Aldoni publikan mesaĝon</string>
<string name="custom_zaps_add_a_message_private">Aldoni privatan mesaĝon</string>
<string name="custom_zaps_add_a_message_nonzap">Aldoni mesaĝon de fakturo</string>
<string name="custom_zaps_add_a_message_example">Dankon pro via laboro!</string>
<string name="lightning_create_and_add_invoice">Krei kaj Aldoni</string>
<string name="poll_author_no_vote">Aŭtoroj de Enketoj ne povas voĉdoni en siajn proprajn enketojn.</string>
<string name="hash_verification_passed">Ĉi tiu enhavo estas la sama ĝis la afiŝo</string>
<string name="hash_verification_failed">Ĉi tiu enhavo ŝanĝiĝis. La aŭtoro eble ne vidis aŭ jesis la ŝanĝo</string>
<string name="content_description_add_image">Aldoni Bildon</string>
<string name="content_description_add_video">Aldoni Videon</string>
<string name="content_description_add_document">Aldoni Dokumenton</string>
<string name="add_content">Aldoni al Mesaĝo</string>
<string name="content_description">Priskribo de enhavoj</string>
<string name="content_description_example">Blua ŝipo en blanka, sabla plaĝo je la sunsubiro</string>
<string name="zap_type">Tipo de Zapo</string>
<string name="zap_type_explainer">Tipo de Zapo por ĉiuj la elektoj</string>
<string name="zap_type_public">Publika</string>
<string name="zap_type_public_explainer">Ĉiu povas vidi la transakcion kaj mesaĝon</string>
<string name="zap_type_private">Privata</string>
<string name="zap_type_private_explainer">Sendinto kaj Ricevanto povas vidi unu la alian kaj legi la mesaĝon</string>
<string name="zap_type_anonymous">Sennoma</string>
<string name="zap_type_anonymous_explainer">Ricevanto kaj la publiko ne scias kiu sendis la pagon</string>
<string name="zap_type_nonzap">Ne-Zapo</string>
<string name="zap_type_nonzap_explainer">Ne spuro en Nostr, nur en Lightning</string>
<string name="file_server">Dosiera Servilo</string>
<string name="zap_forward_lnAddress">LNAdreson aŭ @Uzanto</string>
<string name="upload_server_imgur">imgur.com - fidinda</string>
<string name="upload_server_imgur_explainer">Imgur povas modifi la dosieron</string>
<string name="upload_server_nostrimg">nostrimg.com - fidinda</string>
<string name="upload_server_nostrimg_explainer">NostrImg povas modifi la dosieron</string>
<string name="upload_server_nostrbuild">nostr.build - fidinda</string>
<string name="upload_server_nostrbuild_explainer">Nostr.build povas modifi la dosieron</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev - fidinda</string>
<string name="upload_server_nostrfilesdev_explainer">Nostrfiles.dev povas modifi la dosieron</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - fidinda</string>
<string name="upload_server_nostrcheckme_explainer">nostrcheck.me povas modifi la dosieron</string>
<string name="upload_server_imgur_nip94">Atestebla Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Kontrolas se Imgur modifis la dosieron. Nova NIP: aliaj klientoj eble ne povas vidi ĝin</string>
<string name="upload_server_nostrimg_nip94">Atestebla NostrImg (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">Kontrolas se NostrImg modifis la dosieron. Nova NIP: aliaj klientoj eble ne povas vidi ĝin</string>
<string name="upload_server_nostrbuild_nip94">Atestebla Nostr.build (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94_explainer">Kontrolas se Nostr.build modifis la dosieron. Nova NIP: aliaj klientoj eble ne povas vidi ĝin</string>
<string name="upload_server_nostrfilesdev_nip94">Atestebla NostrImg (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">Kontrolas se Nostrfiles.dev modifis la dosieron. Nova NIP: aliaj klientoj eble ne povas vidi ĝin</string>
<string name="upload_server_nostrcheckme_nip94">Atestebla Nostrcheck.me (NIP-94)</string>
<string name="upload_server_nostrcheckme_nip94_explainer">Kontrolas se Nostrcheck.me modifis la dosieron. Nova NIP: aliaj klientoj eble ne povas vidi ĝin</string>
<string name="upload_server_relays_nip95">Viaj plusendiloj (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">Dosieroj estas konservita de viaj plusendiloj. Nova NIP: kontrolu se ili subtenas</string>
<string name="connect_via_tor_short">Tor/Orbot aranĝo</string>
<string name="connect_via_tor">Konekti tra via Orbot aranĝo</string>
<string name="do_you_really_want_to_disable_tor_title">Malkonekti el via Orbot/Tor?</string>
<string name="do_you_really_want_to_disable_tor_text">Viaj datumoj estos tuj sendita en la normala reto</string>
<string name="yes">Jes</string>
<string name="no">Ne</string>
<string name="follow_list_selection">Listo de Sekvoj</string>
<string name="follow_list_kind3follows">Ĉiuj Sekvoj</string>
<string name="follow_list_global">Ĝenerala</string>
<string name="connect_through_your_orbot_setup_markdown"> ## Konektu tra Tor per Orbot
\n\n1. Instalu [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android)
\n2. Aktivigu Orbot
\n3. En Orbot, kontrolu la Socks konektejon. Defaulte uzas 9050
\n4. Se necesa, ŝanĝu la konektejon en Orbot
\n5. Agordu la Socks konektejon en ĉi tiu ekrano
\n6. Alkliki la Aktivigi butonon por uzi Orbot kiel prokuro
</string>
<string name="orbot_socks_port">Socks-Konektejo de Orbot</string>
<string name="invalid_port_number">Nevalida nombro de konektejo</string>
<string name="use_orbot">Uzi Orbot</string>
<string name="disconnect_from_your_orbot_setup">Malkonekti Tor/Orbot</string>
<string name="app_notification_dms_channel_name">Privataj Mesaĝoj</string>
<string name="app_notification_dms_channel_description">Sciigas vin kiam privata mesaĝo alvenas</string>
<string name="app_notification_zaps_channel_name">Zapojn Ricevitaj</string>
<string name="app_notification_zaps_channel_description">Sciigas vin kiam iu zapas vin</string>
<string name="app_notification_zaps_channel_message">%1$s satoj</string>
<string name="app_notification_zaps_channel_message_from">El %1$s</string>
<string name="app_notification_zaps_channel_message_for">pro %1$s</string>
<string name="reply_notify">Sciigi: </string>
<string name="channel_list_join_conversation">Aliĝu al la Konversacio</string>
<string name="channel_list_user_or_group_id">ID de Uzanto aŭ Grupo</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent aŭ hex</string>
<string name="channel_list_create_channel">Krei</string>
<string name="channel_list_join_channel">Aliĝi</string>
<string name="today">Hodiaŭ</string>
<string name="content_warning">Enhava averto</string>
<string name="content_warning_explanation">Ĉi tiu afiŝo enhavas delikatan enhavon, kiu povas ofendi aŭ ĝeni iujn</string>
<string name="content_warning_hide_all_sensitive_content">Ĉiam kaŝi delikatajn enhavojn</string>
<string name="content_warning_show_all_sensitive_content">Ĉiam montri delikatajn enhavojn</string>
<string name="content_warning_see_warnings">Ĉiam montri enhavajn avertojn</string>
<string name="recommended_apps">Rekomendas: </string>
<string name="filter_spam_from_strangers">Filtri spamon el fremduloj</string>
<string name="warn_when_posts_have_reports_from_your_follows">Averti kiam afiŝoj havas denuncojn de viaj sekvituloj</string>
<string name="new_reaction_symbol">Nova Reaga Simbolo</string>
<string name="no_reaction_type_setup_long_press_to_change">Neniaj reagoj selektitaj. Premu longe por ŝanĝi</string>
<string name="zapraiser">Zapkolekto</string>
<string name="zapraiser_explainer">Difinas kvanton de zapoj por kolekti por ĉi tiu afiŝo. Subtenantaj klientoj montrus ĉi tion kiel plenumskalo por kuraĝigi donacojn</string>
<string name="zapraiser_target_amount_in_sats">Celita Kvanto da Satoj</string>
<string name="sats_to_complete">Zapkolekto je %1$s. %2$s satoj al celo</string>
<string name="read_from_relay">Legi el plusendilo</string>
<string name="write_to_relay">Skribi al Plusendilo</string>
<string name="an_error_occurred_trying_to_get_relay_information">Eraro okazis akirante de plusendila informacio el %1$s</string>
<string name="owner">Posedanto</string>
<string name="version">Versio</string>
<string name="software">Programaro</string>
<string name="contact">Kontakto</string>
<string name="supports">Subtenitaj NIPoj</string>
<string name="admission_fees">Enirpago</string>
<string name="payments_url">URL de pagoj</string>
<string name="limitations">Limoj</string>
<string name="countries">Landoj</string>
<string name="languages">Lingvoj</string>
<string name="tags">Etikedoj</string>
<string name="posting_policy">Reguloj de Afiŝado</string>
<string name="message_length">Longo de Mesaĝo</string>
<string name="subscriptions">Abonoj</string>
<string name="filters">Filtriloj</string>
<string name="subscription_id_length">Longo de ID de Abono</string>
<string name="minimum_prefix">Minimuma prefikso</string>
<string name="maximum_event_tags">Maksimumaj etikedoj de evento</string>
<string name="content_length">Longo de enhavo</string>
<string name="minimum_pow">Minimuma PoW</string>
<string name="auth">Auth</string>
<string name="payment">Pago</string>
<string name="cashu">Cashu Signo</string>
<string name="cashu_redeem">Elpagi</string>
<string name="no_lightning_address_set">Neniu Lightning-Adreso agordita</string>
<string name="copied_token_to_clipboard">Signo kopita al tondujo</string>
<string name="live_stream_live_tag">VIVE</string>
<string name="live_stream_offline_tag">SENRETA</string>
<string name="live_stream_ended_tag">FINITA</string>
<string name="live_stream_planned_tag">HORPLANITA</string>
<string name="live_stream_is_offline">Vidfluo estas Senreta</string>
<string name="live_stream_has_ended">Vidfluo Finita</string>
<string name="are_you_sure_you_want_to_log_out">Elsaluti forigas ĉiujn viajn lokajn datumojn. Certigi ke vi sekurkopis vian privatan ŝlosilon por eviti perdi vian konton. Ĉu vi volas daŭrigi?</string>
<string name="followed_tags">Sekvitaj Etikedoj</string>
<string name="relay_setup">Plusendiloj</string>
<string name="discover_live">Vive</string>
<string name="discover_community">Komunumo</string>
<string name="discover_chat">Babilejoj</string>
<string name="community_approved_posts">Aprobitaj Afiŝoj</string>
<string name="groups_no_descriptor">Ĉi tiu grupo ne havas priskribon aŭ regulojn. Parolu kun la posedanto por aldoni</string>
<string name="community_no_descriptor">Ĉi tiu komunumo ne havas priskribon. Parolu kun la posedanto por aldoni</string>
<string name="add_sensitive_content_label">Delikata Enhavo</string>
<string name="add_sensitive_content_description">Aldonas averton de delikata enhavo antaŭ montri ĉi tiun enhavon</string>
<string name="settings">Agordoj</string>
<string name="connectivity_type_always">Ĉiam</string>
<string name="connectivity_type_wifi_only">Nur-Wifi</string>
<string name="connectivity_type_never">Neniam</string>
<string name="system">Sistemo</string>
<string name="light">Hela</string>
<string name="dark">Malhela</string>
<string name="application_preferences">Preferoj de Apo</string>
<string name="language">Lingvo</string>
<string name="theme">Etoso</string>
<string name="automatically_load_images_gifs">Antaŭrigardo de Bildo</string>
<string name="automatically_play_videos">Ludado de Video</string>
<string name="automatically_show_url_preview">Antaŭrigardo de URL</string>
<string name="load_image">Montri bildon</string>
<string name="spamming_users">Spamistoj</string>
<string name="muted_button">Silentigita. Alklaki por malsilentigi</string>
<string name="mute_button">Ŝalta sono. Alklaki por silentigi</string>
<string name="search_button">Serĉi lokajn kaj forajn registrojn</string>
<string name="nip05_verified">Nostr-adreso konfirmita</string>
<string name="nip05_failed">Nostr-adreso malsukcesis konfirmon</string>
<string name="nip05_checking">Kontrolanta de Nostr-adreso</string>
<string name="select_deselect_all">Selekti/Malselekti ĉion</string>
<string name="default_relays">Defaŭlta</string>
<string name="select_a_relay_to_continue">Elekti plusendilon por daŭrigi</string>
<string name="zap_forward_title">Plusendi Zapojn al:</string>
<string name="zap_forward_explainer">Subtenantaj klientoj plusendos zapojn al la ĉi-suba LNAdreso aŭ Uzantprofilo anstataŭ al la via</string>
<string name="geohash_title">Montri Loko kiel </string>
<string name="geohash_explainer">Aldonas Geohash de via loko al la afiŝo. La aŭdienco scios kiam vi estas je 5km (3mi) de la nuna loko</string>
<string name="add_sensitive_content_explainer">Aldonas averton de delikata enhavo antaŭ ol montri vian enhavon. Ĉi tiu estas perfekta por NSFW enhavo aŭ enhavo kiun iu povas trovi ofensiva aŭ ĝena</string>
<string name="new_feature_nip24_might_not_be_available_title">Nova Trajto</string>
<string name="new_feature_nip24_might_not_be_available_description">Por aktivigi ĉi tiun reĝimon Amethyst devus sendi NIP-24 mesaĝon (GiftWrapped, Sealed Direct kaj Grupa Mesaĝojn). NIP-24 estas nova kaj la plejparto de klientoj ankoraŭ ne instalis ĝin. Konfirmu ke la ricevanto uzas kongruan klienton.</string>
<string name="new_feature_nip24_activate">Aktivigi</string>
<string name="messages_create_public_chat">Publika</string>
<string name="messages_new_message">Privata</string>
<string name="messages_new_message_to">Al</string>
<string name="messages_new_message_subject">Temo</string>
<string name="messages_new_message_subject_caption">Temo de la konversacio</string>
<string name="messages_new_message_to_caption">"\@Uzanto1, @Uzanto2, @Uzanto3"</string>
<string name="messages_group_descriptor">Anoj de ĉi tiu grupo</string>
<string name="messages_new_subject_message">Klarigo al anoj</string>
<string name="messages_new_subject_message_placeholder">Ŝanĝante la nomon por la novaj celoj.</string>
<string name="language_description">Pro la Interfaco de la Apo</string>
<string name="theme_description">Malhela, Hela aŭ Sistema Temo</string>
<string name="automatically_load_images_gifs_description">Aŭtomate montri imaĝojn kaj GIFojn</string>
<string name="automatically_play_videos_description">Aŭtomate montri videojn kaj GIFojn</string>
<string name="automatically_show_url_preview_description">Montri antaŭrigardoj de URL</string>
<string name="load_image_description">Kiam montri imaĝojn</string>
<string name="copy_url_to_clipboard">Kopii URL al tondujo</string>
<string name="copy_the_note_id_to_the_clipboard">Kopi ID de Noto al tondujo</string>
<string name="created_at">Kreita en</string>
<string name="rules">Reguloj</string>
<string name="status_update">Ĝistadigi vian staton</string>
<string name="lightning_wallets_not_found">Eraro analizante de erara mesaĝo</string>
<string name="poll_zap_value_min_max_explainer">Voĉdonoj pezas laŭ la zap-kvanto. Vi povas difini minimuman kvanton por eviti spamistojn kaj maksimuman kvanton por eviti ke grandaj zapistoj ekregu la enketon. Uzu la saman kvanton en ambaŭ kampoj por certigi ke ĉiuj voĉdonoj pezus same. Malplenigu ĝin por akcepti ajnan kvanton.</string>
<string name="error_dialog_zap_error">Nekapable sendi zapon</string>
<string name="error_dialog_talk_to_user">Mesaĝi la Uzanto</string>
<string name="error_dialog_button_ok">Okej</string>
</resources>

View File

@@ -0,0 +1,189 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="point_to_the_qr_code">Apunta al código QR</string>
<string name="show_qr">Mostrar el QR</string>
<string name="profile_image">Imagen de Perfil</string>
<string name="scan_qr">Escanear el QR</string>
<string name="show_anyway">Mostrar de todos modos</string>
<string name="post_was_flagged_as_inappropriate_by">Post marcado como inapropiado por</string>
<string name="channel_image">Imagen del canal</string>
<string name="referenced_event_not_found">Evento referenciado no encontrado</string>
<string name="group_picture">Imagen de grupo</string>
<string name="explicit_content">Contenido explícito</string>
<string name="impersonation">Suplantación de identidad</string>
<string name="illegal_behavior">Comportamiento ilegal</string>
<string name="unknown">Desconocido</string>
<string name="relay_icon">Icono del transmisor</string>
<string name="unknown_author">Autor desconocido</string>
<string name="copy_text">Copiar texto</string>
<string name="copy_user_pubkey">Copiar PubKey del usuario</string>
<string name="copy_note_id">Copiar ID de la nota</string>
<string name="broadcast">Transmisión</string>
<string name="block_hide_user"><![CDATA[Bloquear y ocultar usuario]]></string>
<string name="report_spam_scam">Reportar Spam / Estafa</string>
<string name="report_impersonation">Reportar suplantación de identidad</string>
<string name="report_explicit_content">Reportar contenido explícito</string>
<string name="report_illegal_behaviour">Reportar comportamiento ilegal</string>
<string name="login_with_a_private_key_to_be_able_to_reply">Inicie sesión con una clave privada para poder responder</string>
<string name="login_with_a_private_key_to_be_able_to_boost_posts">Inicie sesión con una clave privada para poder publicar posts</string>
<string name="login_with_a_private_key_to_like_posts">Inicie sesión con una clave privada para dar me gusta a los posts</string>
<string name="no_zap_amount_setup_long_press_to_change">Falta la configuración de Zaps por defecto. Mantén pulsado unos segundos para cambiarla</string>
<string name="login_with_a_private_key_to_be_able_to_send_zaps">Inicie sesión con una clave privada para poder enviar Zaps</string>
<string name="view_count">Total vistas</string>
<string name="boost">Impulsar</string>
<string name="quote">Cita</string>
<string name="new_amount_in_sats">Nueva cantidad en Sats</string>
<string name="add">Añadir</string>
<string name="replying_to">"respondiendo a "</string>
<string name="and">" y "</string>
<string name="in_channel">"en canal "</string>
<string name="profile_banner">Banner de perfil</string>
<string name="following">" Siguiendo"</string>
<string name="followers">" Seguidores"</string>
<string name="profile">Perfil</string>
<string name="security_filters">Filtros de seguridad</string>
<string name="log_out">Cerrar sesión</string>
<string name="show_more">Mostrar más</string>
<string name="lightning_invoice">Factura Lightning</string>
<string name="pay">Pagar</string>
<string name="lightning_tips">Donación Lightning</string>
<string name="note_to_receiver">Nota al receptor</string>
<string name="thank_you_so_much">¡Muchas gracias!</string>
<string name="amount_in_sats">Cantidad en Sats</string>
<string name="send_sats">Enviar Sats</string>
<string name="error_parsing_preview_for">"Error al analizar la vista previa de %1$s : %2$s"</string>
<string name="preview_card_image_for">"Imagen de vista previa para %1$s"</string>
<string name="new_channel">Nuevo canal</string>
<string name="channel_name">Nombre del canal</string>
<string name="my_awesome_group">Mi grupo genial</string>
<string name="picture_url">URL de imagen</string>
<string name="description">Descripción</string>
<string name="about_us">"Sobre nosotros… "</string>
<string name="what_s_on_your_mind">¿Qué tienes en mente?</string>
<string name="post">Enviar</string>
<string name="save">Guardar</string>
<string name="create">Crear</string>
<string name="cancel">Cancelar</string>
<string name="failed_to_upload_the_image">No se pudo cargar la imagen</string>
<string name="relay_address">Dirección del transmisor</string>
<string name="posts">Publicaciones</string>
<string name="errors">Errores</string>
<string name="home_feed">Tus noticias</string>
<string name="private_message_feed">Fuente de mensajes privados</string>
<string name="public_chat_feed">Fuente de chat público</string>
<string name="global_feed">Fuente global</string>
<string name="search_feed">Fuente de búsqueda</string>
<string name="add_a_relay">Anadir transmisor</string>
<string name="display_name">Nombre para mostrar</string>
<string name="my_display_name">Mi nombre para mostrar</string>
<string name="username">Nombre de usuario</string>
<string name="my_username">Mi nombre de usuario</string>
<string name="about_me">Sobre mí</string>
<string name="avatar_url">URL del avatar</string>
<string name="banner_url">URL del banner</string>
<string name="website_url">Dirección web</string>
<string name="ln_address">Dirección LN</string>
<string name="ln_url_outdated">Dirección LN (antiguo)</string>
<string name="image_saved_to_the_gallery">Imagen guardada en la galería</string>
<string name="failed_to_save_the_image">Error al guardar la imagen</string>
<string name="upload_image">Cargar imagen</string>
<string name="uploading">Cargando…</string>
<string name="user_does_not_have_a_lightning_address_setup_to_receive_sats">El usuario no tiene una configuración de dirección Lightning para recibir sats</string>
<string name="reply_here">"responde aquí… "</string>
<string name="copies_the_note_id_to_the_clipboard_for_sharing">Copia la nota-ID para compartir</string>
<string name="copy_channel_id_note_to_the_clipboard">Copia la nota-ID del canal</string>
<string name="edits_the_channel_metadata">Edita los metadatos del canal</string>
<string name="join">Unirse</string>
<string name="known">Conocidos</string>
<string name="new_requests">Nuevas solicitudes</string>
<string name="blocked_users">Usuarios bloqueados</string>
<string name="new_threads">Temas nuevos</string>
<string name="conversations">Conversaciones</string>
<string name="notes">Notas</string>
<string name="replies">Respuestas</string>
<string name="follows">"Siguiendo"</string>
<string name="reports">"Reportes"</string>
<string name="more_options">Más opciones</string>
<string name="relays">" Retransmisores"</string>
<string name="website">Sitio web</string>
<string name="lightning_address">Dirección Lightning</string>
<string name="copies_the_nsec_id_your_password_to_the_clipboard_for_backup">Copia la ID de Nsec (su contraseña) en el portapapeles para hacer una copia de seguridad</string>
<string name="copy_private_key_to_the_clipboard">Copiar clave privada al portapapeles</string>
<string name="copies_the_public_key_to_the_clipboard_for_sharing">Copia la clave pública al portapapeles para compartir</string>
<string name="copy_public_key_npub_to_the_clipboard">Copie la clave pública (NPub) al portapapeles</string>
<string name="send_a_direct_message">Enviar un mensaje directo</string>
<string name="edits_the_user_s_metadata">Edita los metadatos del usuario</string>
<string name="follow">Seguir</string>
<string name="unblock">Desbloquear</string>
<string name="copy_user_id">Copiar ID de usuario</string>
<string name="unblock_user">Desbloquear usuario</string>
<string name="npub_hex_username">"npub, hex, username "</string>
<string name="clear">Limpiar</string>
<string name="app_logo">Logo de la app</string>
<string name="nsec_npub_hex_private_key">nsec / npub / hex private key</string>
<string name="show_password">Mostrar contraseña</string>
<string name="hide_password">Ocultar contraseña</string>
<string name="invalid_key">Clave invalida</string>
<string name="i_accept_the">"Acepto los "</string>
<string name="terms_of_use">términos de uso</string>
<string name="acceptance_of_terms_is_required">Se requiere la aceptación de los términos</string>
<string name="key_is_required">Se requiere la clave</string>
<string name="login">Acceso</string>
<string name="generate_a_new_key">Generar una nueva clave</string>
<string name="loading_feed">Cargando el tablón…</string>
<string name="error_loading_replies">"Error al cargar las respuestas: "</string>
<string name="try_again">Intentar otra vez</string>
<string name="feed_is_empty">Tablón vacío</string>
<string name="refresh">Actualizar</string>
<string name="created">Creado</string>
<string name="with_description_of">con descripción de</string>
<string name="and_picture">y foto</string>
<string name="changed_chat_name_to">cambió el nombre del chat a</string>
<string name="description_to">descripción a</string>
<string name="and_picture_to">e imagen a</string>
<string name="leave">Dejar</string>
<string name="unfollow">Dejar de seguir</string>
<string name="channel_created">Canal creado</string>
<string name="channel_information_changed_to">"La información del canal cambió a"</string>
<string name="public_chat">Chat público</string>
<string name="posts_received">publicaciones recibidas</string>
<string name="remove">Eliminar</string>
<string name="translations_translated_from">traducido de</string>
<string name="translations_to">a</string>
<string name="translations_show_in_lang_first">Mostrar en %1$s primero</string>
<string name="translations_always_translate_to_lang">Traducir siempre a %1$s</string>
<string name="translations_never_translate_from_lang">Nunca traducir desde %1$s</string>
<string name="never">nunca</string>
<string name="now">ahora</string>
<string name="nudity">Desnudos</string>
<string name="profanity_hateful_speech">Blasfemias / Discurso de odio</string>
<string name="report_hateful_speech">Denuncia discurso de odio</string>
<string name="report_nudity_porn">Reportar desnudos / Porno</string>
<string name="others">otros</string>
<string name="mark_all_known_as_read">Marcar los conocidos como leídos</string>
<string name="mark_all_new_as_read">Marcar los nuevos como leídos</string>
<string name="mark_all_as_read">Marcar todos como leídos</string>
<string name="backup_keys">Claves de respaldo</string>
<string name="secret_key_copied_to_clipboard">Clave secreta (nsec) copiada al portapapeles</string>
<string name="copy_my_secret_key">Copiar mi clave secreta</string>
<string name="biometric_authentication_failed">Autenticación fallida</string>
<string name="badge_created_by">"Credo por %1$s"</string>
<string name="badge_award_image_for">"Imagen del Badge para %1$s"</string>
<string name="new_badge_award_notif">Has recibido un nuevo Badge</string>
<string name="award_granted_to">Badge otorgado a</string>
<string name="copied_note_text_to_clipboard">Texto de nota copiado al portapapeles</string>
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">\@npub del autor copiado al portapapeles</string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">ID de nota copiada (@note1) al portapapeles</string>
<string name="select_text_dialog_top">Seleccionar texto</string>
<string name="quick_action_select">Selecciona</string>
<string name="quick_action_share_browser_link">Compartir enlace del navegador</string>
<string name="quick_action_share">Compartir</string>
<string name="quick_action_copy_user_id">ID del autor</string>
<string name="quick_action_copy_note_id">ID de la nota</string>
<string name="quick_action_copy_text">Copiar texto</string>
<string name="quick_action_delete">Eliminar</string>
<string name="quick_action_unfollow">Dejar de seguir</string>
<string name="quick_action_follow">Seguir</string>
<string name="quick_action_request_deletion_alert_title">Solicitar eliminación</string>
<string name="quick_action_request_deletion_alert_body">Amethyst solicitará que se elimine su nota de los relays a los que está conectado actualmente. No hay garantía de que su nota se elimine permanentemente de esos relays, o de otros relays donde pueda almacenarse.</string>
</resources>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="point_to_the_qr_code">Apunta al código QR</string>
<string name="profile_image">Foto de perfil</string>
<string name="scan_qr">Escanear el código QR</string>
<string name="show_anyway">Mostrar de todos modos</string>
<string name="post_was_flagged_as_inappropriate_by">La publicación fue reportada por</string>
<string name="channel_image">Imagen del canal</string>
<string name="could_not_decrypt_the_message">No se pudo desencriptar el mensaje</string>
<string name="group_picture">Foto de grupo</string>
<string name="explicit_content">Contenido explícito</string>
<string name="spam">Spam</string>
<string name="unknown">Desconocido</string>
<string name="unknown_author">Autor desconocido</string>
<string name="copy_text">Copiar texto</string>
<string name="copy_user_pubkey">Copiar llave pública del usuario</string>
<string name="block_report">Bloquear / reportar</string>
<string name="block_hide_user"><![CDATA[Bloquear y ocultar usuario]]></string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name_release" translatable="false">Amethyst</string>
<string name="app_name_debug" translatable="false">Amethyst Debug</string>
<string name="point_to_the_qr_code"> به QRکد اشاره کنید</string>
<string name="show_qr">QR کد را نشان بده </string>
<string name="profile_image">تصویر نمایه</string>
@@ -23,8 +22,9 @@
<string name="copy_user_pubkey">کپی شناسه نویسنده</string>
<string name="copy_note_id">کپی شناسه یادداشت</string>
<string name="broadcast">انتشار</string>
<string name="request_deletion">درخواست حذف/string></string>
<string name="block_hide_user">بلاک/پنهان کردن کاربر</string>
<string name="request_deletion">درخواست حذف/string&gt;</string>
<string name="block_report">مسدود/گزارش</string>
<string name="block_hide_user"><![CDATA[بلاک/پنهان کردن کاربر]]></string>
<string name="report_spam_scam">گزارش اسپم/کلاهبرداری</string>
<string name="report_impersonation">گزارش جعل هویت</string>
<string name="report_explicit_content">گزارش محتوای نامناسب</string>
@@ -34,6 +34,8 @@
<string name="login_with_a_private_key_to_like_posts">با کلید خصوصی وارد شوید تا بتوانید یادداشت را لایک کنید</string>
<string name="no_zap_amount_setup_long_press_to_change">مقداری برای زپ تعیین نشده. نگه دارید تا تغییر دهید</string>
<string name="login_with_a_private_key_to_be_able_to_send_zaps">با کلید خصوصی وارد شوید تا بتوانید زپ کنید</string>
<string name="login_with_a_private_key_to_be_able_to_follow">با یک کلید خصوصی وارد شوید تا بتوانید دنبال کنید</string>
<string name="login_with_a_private_key_to_be_able_to_unfollow">با یک کلید خصوصی وارد شوید تا بتوانید دنبال کردن را لغو کنید</string>
<string name="zaps">زپ</string>
<string name="view_count">دیدن تعداد</string>
<string name="boost">بازنشر</string>
@@ -45,6 +47,8 @@
<string name="and">" و "</string>
<string name="in_channel">"در کانال "</string>
<string name="profile_banner">بنر پروفایل</string>
<string name="payment_successful">پرداخت موفق</string>
<string name="error_parsing_error_message">خطا در تفسیر پیغام خطا</string>
<string name="following">"دنبال شونده"</string>
<string name="followers">"دنبال کننده"</string>
<string name="profile">پروفایل</string>
@@ -143,7 +147,7 @@
<string name="error_loading_replies">" :خطا در بارگیری پاسخ ها"</string>
<string name="try_again">دوباره تلاش کنید</string>
<string name="feed_is_empty">خبرنامه خالیست</string>
<string name="refresh">تازه سازی</string>
<string name="refresh">تازهسازی</string>
<string name="created">ساخته شد</string>
<string name="with_description_of">با توصیف</string>
<string name="and_picture">و تصویر</string>
@@ -157,20 +161,18 @@
<string name="public_chat">گفتگوی عمومی</string>
<string name="posts_received">یادداشت های دریافت شده</string>
<string name="remove">بیرون کردن</string>
<string name="sats" translatable="false">ساتوشی</string>
<string name="translations_auto">خودکار</string>
<string name="translations_translated_from">ترجمه از</string>
<string name="translations_to">به</string>
<string name="translations_show_in_lang_first">ابتدا به نشان بده %1$s</string>
<string name="translations_always_translate_to_lang">همیشه به ترجمه کن %1$s</string>
<string name="translations_never_translate_from_lang">هرگز به ترجمه نکن %1$s</string>
<string name="nip_05">Nostr Address</string>
<string name="lnurl" translatable="false">LNURL...</string>
<string name="nip_05">آدرس ناستر</string>
<string name="never">هرگز</string>
<string name="now">اکنون</string>
<string name="h">h</string>
<string name="m">m</string>
<string name="d">d</string>
<string name="h">ساعت</string>
<string name="m">دقیقه</string>
<string name="d">روز</string>
<string name="nudity">برهنگی</string>
<string name="profanity_hateful_speech">ناسزا / نفرت پراکنی</string>
<string name="report_hateful_speech">گزارش نفرت پراکنی</string>
@@ -180,8 +182,7 @@
<string name="mark_all_new_as_read">همه جدیدها را خوانده شده کن</string>
<string name="mark_all_as_read">همه را خوانده شده کن</string>
<string name="backup_keys">بازیابی کلیدها</string>
<string name="account_backup_tips_md" tools:ignore="Typos">
## راهنمای ایمنی و بازیابی کلید
<string name="account_backup_tips_md" tools:ignore="Typos"> ## راهنمای ایمنی و بازیابی کلید
\n\n- حساب کاربری شما با یک کلید خصوصی ایمن می شود. این کلید یک رشته تصادفی اعداد و ارقام است که با **nsec1** آغاز می گردد.
\n\n- هر کس به کلید خصوصی شما دست یابد می تواند با هویت شما اقدام به انتشار محتوا نماید. کلید خصوصی خود را در هیچ نرم افزار یا وب سایتی که به آن اعتماد ندارید قرار ندهید.
\n- سازندگان آماتیست **هرگز** از شما کلید خصوصی تان را نمی خواهند.
@@ -196,17 +197,9 @@
<string name="new_badge_award_notif">یک مدال پاداش دریافت کردید</string>
<string name="award_granted_to">مدال پاداش داده شد به</string>
<string name="copied_note_text_to_clipboard">یادداشت در کلیپبورد کپی شد</string>
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">@npubنویسنده در کلیپبورد کپی شد </string>
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">\@npubنویسنده در کلیپبورد کپی شد </string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">(@note1)شناسه یادداشت در کلیپبورد کپی شد</string>
<string name="select_text_dialog_top">انتخاب متن</string>
<string name="github" translatable="false">Github Gist w/ Proof</string>
<string name="telegram" translatable="false">Telegram</string>
<string name="mastodon" translatable="false">Mastodon Post ID w/ Proof</string>
<string name="twitter" translatable="false">Twitter Status w/ Proof</string>
<string name="github_proof_url_template" translatable="false">https://gist.github.com/&lt;user&gt;/&lt;gist&gt;</string>
<string name="telegram_proof_url_template" translatable="false">https://t.me/&lt;proof post&gt;</string>
<string name="mastodon_proof_url_template" translatable="false">https://&lt;server&gt;/&lt;user&gt;/&lt;proof post&gt;</string>
<string name="twitter_proof_url_template" translatable="false">https://twitter.com/&lt;user&gt;/status/&lt;proof post&gt;</string>
<string name="private_conversation_notification">"&lt;نمی توان پیام خصوصی را رمزگشایی کردن&gt;\n\nYou در پیام خصوصی/رمزگذاری شده بین و به شما اشاره شده %1$s %2$s."</string>
<string name="account_switch_add_account_dialog_title">افزودن حساب کاربری جدید</string>
<string name="drawer_accounts">حساب های کاربری</string>
@@ -225,7 +218,7 @@
<string name="quick_action_delete">حذف</string>
<string name="quick_action_unfollow">دنبال نکردن</string>
<string name="quick_action_follow">دنبال کردن</string>
<string name="quick_action_request_deletion_alert_title">Request Deletion</string>
<string name="quick_action_request_deletion_alert_title">درخواست حذف</string>
<string name="quick_action_request_deletion_alert_body">آماتیست درخواست می کند که یادداشت شما از رله هایی که درحال حاضر به آن متصل هستید حذف شود. هیچ تضمینی نیست که یادداشت شما برای همیشه از آن رله ها یا از رله های دیگری که ممکن است در آنها ذخیره شده باشد حذف خواهد شد.. </string>
<string name="quick_action_block_dialog_btn">بلاک</string>
<string name="quick_action_delete_dialog_btn">حذف</string>
@@ -239,7 +232,7 @@
<string name="report_dialog_nudity">محتوای برهنگی یا نمایان</string>
<string name="report_dialog_illegal">رفتار ناهنجار</string>
<string name="report_dialog_blocking_a_user">بلاک کردن کاربر محتوای ایشان را در اپ شما پنهان می کند. یادداشت های شما همچنان بطور عمومی دیده می شوند که شامل کاربران بلاک شده توسط شما نیز هست. کاربران بلاک شده در صفحه فیلترهای ایمنی فهرست می شوند.</string>
<string name="report_dialog_block_hide_user_btn"><![CDATA[Block & Hide User]]></string>
<string name="report_dialog_block_hide_user_btn"><![CDATA[مسدود و پنهان کردن کاربر]]></string>
<string name="report_dialog_report_btn">گزارش سواستفاده</string>
<string name="report_dialog_reminder_public">تمام گزارش ها بطور عمومی دیده می شوند</string>
<string name="report_dialog_additional_reason_placeholder">در صورت تمایل توضیحاتی به گزارش خود بیفزایید...</string>
@@ -249,7 +242,6 @@
<string name="report_dialog_post_report_btn">گزارش یادداشت</string>
<string name="report_dialog_title">بلاک و گزارش</string>
<string name="block_only">بلاک</string>
<string name="bookmarks">علامت گذاشته ها</string>
<string name="private_bookmarks">علامت گاشته های خصوصی</string>
<string name="public_bookmarks">علامت گذاشته های عمومی</string>
@@ -257,7 +249,6 @@
<string name="add_to_public_bookmarks">افزودن به علامت گذاشته های عمومی</string>
<string name="remove_from_private_bookmarks">برداشتن از علامت گذاشته های خصوصی</string>
<string name="remove_from_public_bookmarks">برداشتن از علامت گذاشته های خصوصی</string>
<string name="wallet_connect_service">خدمات اتصال به کیف پول</string>
<string name="wallet_connect_service_explainer">اجازه رمز نوستر برای پرداخت زپ بدون خارج شدن از اپ. رمز را ایمن نگه دارید و در صورت امکان از رله خصوصی استفاده کنید.</string>
<string name="wallet_connect_service_pubkey">کلید عمومی اتصال به کیف پول</string>
@@ -265,7 +256,6 @@
<string name="wallet_connect_service_secret">رمز اتصال به کیف پول</string>
<string name="wallet_connect_service_show_secret">نمایش کلید خصوصی</string>
<string name="wallet_connect_service_secret_placeholder">nsec / hex کلید خصوصی</string>
<string name="pledge_amount_in_sats">مبلغ وثیقه به ساتوشی</string>
<string name="post_poll">ارسال نظرسنجی</string>
<string name="poll_heading_required">قسمت های الزامی:</string>
@@ -283,92 +273,65 @@
<string name="poll_is_closed">نظر سنجی برای رای جدید بسته است</string>
<string name="poll_zap_amount">مبلغ زپ</string>
<string name="one_vote_per_user_on_atomic_votes">فقط یک رای به ازای هر کاربر در این نوع نظرسنجی مجاز است</string>
<string name="looking_for_event">"جستجوی رویداد %1$s"</string>
<string name="custom_zaps_add_a_message">افزودن پیام عمومی</string>
<string name="custom_zaps_add_a_message_private">افزودن پیام خصوصی</string>
<string name="custom_zaps_add_a_message_nonzap">افزودن پیام صورتحساب</string>
<string name="custom_zaps_add_a_message_example">از زحمات شما متشکریم!</string>
<string name="lightning_create_and_add_invoice">ساختن و افزودن</string>
<string name="poll_author_no_vote">سازندگان نظرسنجی نمی توانند در نظر سنجی خود رای دهند.</string>
<string name="poll_hashtag" translatable="false">#زپ_نظرسنجی</string>
<string name="hash_verification_passed">تصویر از زمان ارسال یکسان است</string>
<string name="hash_verification_failed">تصویر تغییر کرده است. ممکن است نویسنده تغییر را ندیده باشد.</string>
<string name="content_description_add_image">افزودن تصویر</string>
<string name="content_description_add_video">افزودن فیلم</string>
<string name="content_description_add_document">افزودن مدارک</string>
<string name="add_content">افزودن به پیام</string>
<string name="content_description">توصیف محتوا</string>
<string name="content_description_example">قایقی آبی در ساحل شنی سفید هنگام غروب</string>
<string name="zap_type">نوع زپ</string>
<string name="zap_type_explainer">نوع زپ برای همه گزینه ها</string>
<string name="zap_type_public">عمومی</string>
<string name="zap_type_public_explainer">همه می توانند تراکنش و پیام را ببینند</string>
<string name="zap_type_private">خصوصی</string>
<string name="zap_type_private_explainer">فرستنده و گیرنده می توانند یکدیگر و پیام را ببینند</string>
<string name="zap_type_anonymous">ناشناس</string>
<string name="zap_type_anonymous_explainer">گیرنده و دیگران نمی دانند چه کسی پرداخت کرده است</string>
<string name="zap_type_nonzap">غیرزپ</string>
<string name="zap_type_nonzap_explainer">هیچ ردی در نوستر نمی ماند، فقط در شبکه لایتنینگ انجام می شود</string>
<string name="file_server">سرور فایل</string>
<string name="zap_forward_lnAddress">آدرس لایتنینگ یا @User</string>
<string name="upload_server_imgur">imgur.com - معتمد</string>
<string name="upload_server_imgur_explainer">Imgur می تواند فایل را بهینه کند</string>
<string name="upload_server_nostrimg">nostrimg.com - معتمد</string>
<string name="upload_server_nostrimg_explainer">NostrImg می تواند فایل را بهینه کند</string>
<string name="upload_server_nostrbuild">nostr.build - معتمد</string>
<string name="upload_server_nostrbuild_explainer">Nostr.build می تواند فایل را بهینه کند</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev - معتمد</string>
<string name="upload_server_nostrfilesdev_explainer">Nostrfiles.dev می تواند فایل را بهینه کند</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - معتمد</string>
<string name="upload_server_nostrcheckme_explainer">nostrcheck.me می تواند فایل را اصلاح کند</string>
<string name="upload_server_imgur_nip94">قابل بررسی Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">بررسی کنید که Imgur فایل را بهینه کرده یا خیر . NIPجدید : سایر کلاینت ها ممکن است آن را نبینند. </string>
<string name="upload_server_nostrimg_nip94">قابل بررسی NostrImg (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">بررسی کنید که NostrImg فایل را بهینه کرده یا خیر . NIPجدید : سایر کلاینت ها ممکن است آن را نبینند.</string>
<string name="upload_server_nostrbuild_nip94">Verifiable Nostr.build (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94">Nostr.build (NIP-94) قابل تایید</string>
<string name="upload_server_nostrbuild_nip94_explainer">بررسی کنید که Nostr.build فایل را بهینه کرده یا خیر . NIPجدید : سایر کلاینت ها ممکن است آن را نبینند.</string>
<string name="upload_server_nostrfilesdev_nip94">قابل بررسی Nostrfiles.dev (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">بررسی کنید که Nostrfiles.dev فایل را بهینه کرده یا خیر . NIPجدید : سایر کلاینت ها ممکن است آن را نبینند.</string>
<string name="upload_server_nostrcheckme_nip94">Nostrcheck.me (NIP-94) قابل تایید</string>
<string name="upload_server_nostrcheckme_nip94_explainer">بررسی می کند آیا Nostrcheck.me فایل را اصلاح کرده است. NIP جدید: سایر کلاینت ها ممکن است این را نبینند</string>
<string name="upload_server_relays_nip95">رله های شما (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">فایل ها در رله های شما میزبانی می شوند. NIPجدید: بررسی کنید آیا پشتیبانی می کنند یا خیر </string>
<string name="connect_via_tor_short">Tor/Orbot تنظیمات</string>
<string name="connect_via_tor"> از طریق تنظیم Orbot متصل شوید</string>
<string name="do_you_really_want_to_disable_tor_title">قطع اتصال از Orbot/Tor?</string>
<string name="do_you_really_want_to_disable_tor_text">داده های شما بلافاصله در شبکه معمولی منتقل می شوند</string>
<string name="yes">بله</string>
<string name="no">خیر</string>
<string name="follow_list_selection">لیست دنبال ها </string>
<string name="follow_list_selection">لیست دنبال ها</string>
<string name="follow_list_kind3follows">همه دنبال ها</string>
<string name="follow_list_global">همگانی</string>
<string name="connect_through_your_orbot_setup_markdown">
## از طریق Tor با Orbot متصل شوید
<string name="connect_through_your_orbot_setup_markdown"> ## از طریق Tor با Orbot متصل شوید
\n\n1. نصب کنید [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android)
\n2. شروع Orbot
\n3. در Orbot, پورت Socksرا علامت بزنید.مقدار پیش فرض 9050 است.
@@ -376,38 +339,139 @@
\n5. پورت Socks را در این صفحه پیکربندی کنید
\n6. دکمه Activate را بفشارید تا از Orbot به عنوان پراکسی استفده نمایید
</string>
<string name="orbot_socks_port">Orbot Socks Port</string>
<string name="orbot_socks_port">درگاه Orbot Socks</string>
<string name="invalid_port_number">شماره پورت نامعتبر</string>
<string name="use_orbot">استفاده از Orbot</string>
<string name="disconnect_from_your_orbot_setup">قطع اتصال Tor/Orbot</string>
<string name="app_notification_channel_id" translatable="false">DefaultChannelID</string>
<string name="app_notification_private_message" translatable="false">اعلان جدید</string>
<string name="app_notification_dms_channel_id" translatable="false">PrivateMessagesID</string>
<string name="app_notification_dms_channel_name">پیام خصوصی</string>
<string name="app_notification_dms_channel_description">وقتی پیام خصوصی دریافت شود اعلان می کند</string>
<string name="app_notification_zaps_channel_id" translatable="false">ZapsID</string>
<string name="app_notification_zaps_channel_name">زپ دریافت شد</string>
<string name="app_notification_zaps_channel_name">زپ دریافت شده</string>
<string name="app_notification_zaps_channel_description">وقتی کسی زپ کند اعلام می کند</string>
<string name="app_notification_zaps_channel_message">%1$s ساتوشی</string>
<string name="app_notification_zaps_channel_message_from">از %1$s</string>
<string name="app_notification_zaps_channel_message_for">برای %1$s</string>
<string name="reply_notify">اعلان: </string>
<string name="channel_list_join_conversation">پیوستن به گفتگو</string>
<string name="channel_list_user_or_group_id">شناسه گروه یا کاربر</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent or hex</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent یا hex</string>
<string name="channel_list_create_channel">ساختن</string>
<string name="channel_list_join_channel">پیوستن</string>
<string name="today">امروز</string>
<string name="content_warning">هشدار محتوا</string>
<string name="content_warning_explanation">این یادداشت حاوی محتوای حساس است که ممکن است از نظر برخی توهین آمیز یا مشوش کننده باشد</string>
<string name="content_warning_hide_all_sensitive_content">همیشه محتوای حساس را پنهان کن</string>
<string name="content_warning_show_all_sensitive_content">همیشه محتوای حساس را نشان بده</string>
<string name="content_warning_see_warnings">همیشه هشدار محتوا را نشان بده</string>
<string name="recommended_apps">توصیه ها: </string>
<string name="filter_spam_from_strangers">اسپم غریبه ها را فیلتر کن</string>
<string name="warn_when_posts_have_reports_from_your_follows">اگر یادداشت توسط افرادی که فالو می کنید گزارش شده هشدار بده</string>
<string name="new_reaction_symbol">نماد جدید واکنش</string>
<string name="no_reaction_type_setup_long_press_to_change">هیچ نوع واکنشی انتخاب نشده. نگه دارید تا تغییر دهید</string>
<string name="zapraiser">زپ گیری</string>
<string name="zapraiser_explainer">یک مبلغ ساتوشی هدف به این یادداشت بیافزایید. کلاینت های سازگار ممکن احتمالا این ویژگی را به شکل نوار پیش رونده نشان می دهند تا مشوق کمک مالی باشد.</string>
<string name="zapraiser_target_amount_in_sats">مبلغ هدف به ساتوشی</string>
<string name="sats_to_complete">زپ گیری تا %1$s. %2$s مانده تا هدف</string>
<string name="read_from_relay">خواندن از رله</string>
<string name="write_to_relay">نوشتن به رله</string>
<string name="an_error_occurred_trying_to_get_relay_information">در تلاش برای گرفتن اطلاعات رله از %1$s خطایی رخ داد</string>
<string name="owner">مالک</string>
<string name="version">نگارش</string>
<string name="software">نرم‌افزار</string>
<string name="contact">مخاطب</string>
<string name="supports">NIP های پشتیبانی شده</string>
<string name="admission_fees">کارمزد تراکنش</string>
<string name="payments_url">Url پرداخت ها</string>
<string name="limitations">محدودیت ها</string>
<string name="countries">کشورها</string>
<string name="languages">زبان‌ها</string>
<string name="tags">برچسب‌ها</string>
<string name="posting_policy">سیاست ارسال محتوا</string>
<string name="message_length">طول پیام</string>
<string name="subscriptions">اشتراک</string>
<string name="filters">فیلترها</string>
<string name="subscription_id_length">طول شناسه اشتراک</string>
<string name="minimum_prefix">حداقل پیشوند</string>
<string name="maximum_event_tags">حداکثر تعداد برچسب رویداد</string>
<string name="content_length">طول محتوا</string>
<string name="minimum_pow">حداقل PoW</string>
<string name="auth">Auth</string>
<string name="payment">پرداخت</string>
<string name="cashu">توکن Cashu</string>
<string name="cashu_redeem">بازپرداخت</string>
<string name="no_lightning_address_set">آدرس لایتنینگ تنظیم نشده است</string>
<string name="copied_token_to_clipboard">توکن به کلیپبورد کپی شد</string>
<string name="live_stream_live_tag">زنده</string>
<string name="live_stream_offline_tag">آفلاین</string>
<string name="live_stream_ended_tag">تمام شد</string>
<string name="live_stream_planned_tag">زمان بندی شده</string>
<string name="live_stream_is_offline">پخش زنده آفلاین است</string>
<string name="live_stream_has_ended">پخش زنده تمام شد</string>
<string name="are_you_sure_you_want_to_log_out">خروج همه اطلاعات محلی شما را پاک می کند. مطمئن شوید که کلید خصوصی خود را بکاپ گرفته و ذخیره کرده اید تا حساب کاربری تان را از دست ندهید. می خواهید ادامه دهید؟</string>
<string name="followed_tags">برچسب های دنبال شده</string>
<string name="relay_setup">رله ها</string>
<string name="discover_live">زنده</string>
<string name="discover_community">انجمن</string>
<string name="discover_chat">گپ</string>
<string name="community_approved_posts">یادداشت های تایید شده</string>
<string name="groups_no_descriptor">این گروه هیچ توصیف و قوانینی ندارد. با مالک گروه برای افزودن آن صحبت کنید.</string>
<string name="community_no_descriptor">این انجمن هیچ توضیح و قوانینی ندارد. با مالک گروه برای افزودن آن صحبت کنید.</string>
<string name="add_sensitive_content_label">محتوای حساس</string>
<string name="add_sensitive_content_description">هشدار محتوای حساس پیش از نمایش محتوا اضافه می کند</string>
<string name="settings">تنظیمات</string>
<string name="connectivity_type_always">همیشه</string>
<string name="connectivity_type_wifi_only">فقط Wifi</string>
<string name="connectivity_type_never">هرگز</string>
<string name="system">سیستم</string>
<string name="light">روشن</string>
<string name="dark">تاریک</string>
<string name="application_preferences">ترجیحات اپلیکیشن</string>
<string name="language">زبان</string>
<string name="theme">پوسته</string>
<string name="automatically_load_images_gifs">پیش نمایش تصویر</string>
<string name="automatically_play_videos">پخش ویدئو</string>
<string name="automatically_show_url_preview">پیش نمایش URL</string>
<string name="load_image">بارگیری تصویر</string>
<string name="spamming_users">اسپمر</string>
<string name="muted_button">بیصدا شده. برای لغو کلیک کنید</string>
<string name="mute_button">باصدا. برای بیصدا کردن کلیک کنید</string>
<string name="search_button">سوابق محلی و دور را بگرد</string>
<string name="nip05_verified">آدرس ناستر تایید شده بود</string>
<string name="nip05_failed">آدرس ناستر تایید نشد</string>
<string name="nip05_checking">بررسی آدرس ناستر</string>
<string name="select_deselect_all">انتخاب یا لغو انتخاب همه</string>
<string name="default_relays">پیش‌فرض</string>
<string name="select_a_relay_to_continue">برای ادامه یک رله انتخاب کنید</string>
<string name="zap_forward_title">باز ارسال زپ ها به:</string>
<string name="zap_forward_explainer">کلاینت هایی که این قابلیت را دارند زپ ها را به جای شما به LNAddress یا نمایه کاربر زیر می فرستند</string>
<string name="geohash_title">افشای مکان به عنوان </string>
<string name="geohash_explainer">یک از مکان شما به این بادداشت می افزاید. دیگران خواهند دانست که شما در فاصله 5 کیلومتری (3 مایلی) این مکان هستید.</string>
<string name="add_sensitive_content_explainer">پیش از نمایش محتوای شما، هشدار محتوای حساس به آن می افزاید. این برای هرگونه محتوای نامناسب برای محیط کار یا هر محتوای دیگری که برخی ممکن است توهین آمیز یا مشوش کننده بدانند خوب است.</string>
<string name="new_feature_nip24_might_not_be_available_title">ویژگی جدید</string>
<string name="new_feature_nip24_might_not_be_available_description">برای فعال سازی این حالت لازم است اماتیست یک پیغام NIP-24 بفرستد (پیغام های GiftWrapped, Sealed Direct and Group). مطمئن شوید که گیرنده از کلاینتی سازگاز استفاده می کند.</string>
<string name="new_feature_nip24_activate">فعال‌سازی</string>
<string name="messages_create_public_chat">عمومی</string>
<string name="messages_new_message">خصوصی</string>
<string name="messages_new_message_to">به</string>
<string name="messages_new_message_subject">موضوع</string>
<string name="messages_new_message_subject_caption">موضوع گفتگو</string>
<string name="messages_new_message_to_caption">"\@کاربر1, @کاربر2, @کاربر3"</string>
<string name="messages_group_descriptor">اعضای گروه</string>
<string name="messages_new_subject_message">توضیحات برای اعضا</string>
<string name="messages_new_subject_message_placeholder">تعویض نام به خاطر اهداف جدید.</string>
<string name="language_description">برای رابط کاربری اپ</string>
<string name="theme_description">پوسته مطابق سیستم، روشن، یا تاریک</string>
<string name="automatically_load_images_gifs_description">بارگیری خودکار تصاویر و جیف ها</string>
<string name="automatically_play_videos_description">پخش خودکار ویدئوها و جیف ها</string>
<string name="automatically_show_url_preview_description">نشان دادن پیش نمایش URL</string>
<string name="load_image_description">هنگام بارگیری تصاویر</string>
<string name="copy_url_to_clipboard">کپی URL به کلیپبورد</string>
<string name="copy_the_note_id_to_the_clipboard">کپی شناسه یادداشت به کلیپبورد</string>
<string name="created_at">ایجاد شده در</string>
<string name="rules">قوانین</string>
<string name="status_update">بارگذاری وضعیت</string>
<string name="lightning_wallets_not_found">خطا در تفسیر پیغام خطا</string>
<string name="poll_zap_value_min_max_explainer">آراء با مبلغ زپ سنجیده می شوند. می توانید برای جلوگیری از اسپم یک مبلغ حداقل تعیین کنید و برای جلوگیری از دستکاری نتیجه با زپ های بزرگ یک مبلغ حداکثر تعیین کنید. برای اینکه همه آراء ارزش یکسان داشته باشند در هر دو قسمت یک مبلغ را بزنید. یا این قسمت را خالی بگذارید تا هر مبلغ زپی را بپذیرد.</string>
<string name="error_dialog_zap_error">زپ فرستاده نمی شود</string>
<string name="error_dialog_talk_to_user">پیام به کاربر</string>
<string name="error_dialog_button_ok">قبول</string>
</resources>

View File

@@ -0,0 +1,477 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="point_to_the_qr_code">Osoita QR-koodiin</string>
<string name="show_qr">Näytä QR</string>
<string name="profile_image">Profiilikuva</string>
<string name="scan_qr">Skannaa QR</string>
<string name="show_anyway">Näytä silti</string>
<string name="post_was_flagged_as_inappropriate_by">Viesti raportoitiin käyttäjän toimesta</string>
<string name="post_not_found">Tapahtumaa ladataan tai sitä ei löydy relelistalta</string>
<string name="channel_image">Kanavan kuva</string>
<string name="referenced_event_not_found">Viitattua tapahtumaa ei löytynyt</string>
<string name="could_not_decrypt_the_message">Viestin purku epäonnistui</string>
<string name="group_picture">Ryhmäkuva</string>
<string name="explicit_content">Julkeaa sisältöä</string>
<string name="spam">Roskaposti</string>
<string name="impersonation">Väärennös</string>
<string name="illegal_behavior">Laiton toiminta</string>
<string name="unknown">Tuntematon</string>
<string name="relay_icon">Relekuvake</string>
<string name="unknown_author">Tuntematon tekijä</string>
<string name="copy_text">Kopioi teksti</string>
<string name="copy_user_pubkey">Kopioi tekijän tunniste</string>
<string name="copy_note_id">Kopioi viestin tunniste</string>
<string name="broadcast">Lähetä</string>
<string name="request_deletion">Pyydä poistoa</string>
<string name="block_report">Estä / Ilmoita</string>
<string name="block_hide_user"><![CDATA[Estä & Piilota käyttäjä]]></string>
<string name="report_spam_scam">Ilmoita roskapostista / huijauksesta</string>
<string name="report_impersonation">Ilmoita väärennöksestä</string>
<string name="report_explicit_content">Ilmoita julkeasta sisällöstä</string>
<string name="report_illegal_behaviour">Ilmoita laittomasta toiminnasta</string>
<string name="login_with_a_private_key_to_be_able_to_reply">Kirjaudu sisään yksityisellä avaimella viestehin vastaamiseksi</string>
<string name="login_with_a_private_key_to_be_able_to_boost_posts">Kirjaudu sisään yksityisellä avaimella tehostaaksesi viestejä</string>
<string name="login_with_a_private_key_to_like_posts">Kirjaudu sisään yksityisellä avaimella tykätäksesi viesteistä</string>
<string name="no_zap_amount_setup_long_press_to_change">Zap-määrää ei ole asetettu. Pidä painiketta pohjassa vaihtaaksesi sitä</string>
<string name="login_with_a_private_key_to_be_able_to_send_zaps">Kirjaudu sisään yksityisellä avaimella Zapien lähettämiseksi</string>
<string name="login_with_a_private_key_to_be_able_to_follow">Kirjaudu sisään yksityisellä avaimella voidaksesi seurata</string>
<string name="login_with_a_private_key_to_be_able_to_unfollow">Kirjaudu sisään yksityisellä avaimella seuraamisen lopettamiseksi</string>
<string name="zaps">Zapit</string>
<string name="view_count">Katselukerrat</string>
<string name="boost">Tehosta</string>
<string name="boosted">tehostettu</string>
<string name="quote">Lainaa</string>
<string name="new_amount_in_sats">Uusi määrä satseissa</string>
<string name="add">Lisää</string>
<string name="replying_to">"vastaus kohteeseen "</string>
<string name="and">" ja "</string>
<string name="in_channel">"kanavassa "</string>
<string name="profile_banner">Profiilin banneri</string>
<string name="payment_successful">Maksu onnistui</string>
<string name="error_parsing_error_message">Virhe virhesanomaa tulkittaessa</string>
<string name="following">" Seuratut"</string>
<string name="followers">" Seuraajat"</string>
<string name="profile">Profiili</string>
<string name="security_filters">Turvallisuussuodattimet</string>
<string name="log_out">Kirjaudu ulos</string>
<string name="show_more">Näytä lisää</string>
<string name="lightning_invoice">Lightning lasku</string>
<string name="pay">Maksa</string>
<string name="lightning_tips">Lightning tipit</string>
<string name="note_to_receiver">Viesti vastaanottajalle</string>
<string name="thank_you_so_much">Kiitos paljon!</string>
<string name="amount_in_sats">Määrä satseissa</string>
<string name="send_sats">Lähetä satseja</string>
<string name="error_parsing_preview_for">"Virhe tulkittaessa esikatselua kohteelle %1$s : %2$s"</string>
<string name="preview_card_image_for">"Esikatsele kortin kuvaa kohteelle %1$s"</string>
<string name="new_channel">Uusi kanava</string>
<string name="channel_name">Kanavan nimi</string>
<string name="my_awesome_group">Oma upea ryhmäni</string>
<string name="picture_url">Kuvan URL</string>
<string name="description">Kuvaus</string>
<string name="about_us">"Tietoa meistä.. "</string>
<string name="what_s_on_your_mind">Mitä mielessä?</string>
<string name="post">Lähetä</string>
<string name="save">Tallenna</string>
<string name="create">Luo</string>
<string name="cancel">Peruuta</string>
<string name="failed_to_upload_the_image">Kuvan lataus epäonnistui</string>
<string name="relay_address">Releosoite</string>
<string name="posts">Viestit</string>
<string name="bytes">Tavua</string>
<string name="errors">Virheet</string>
<string name="home_feed">Kotisyöte</string>
<string name="private_message_feed">Yksityinen viestisyöte</string>
<string name="public_chat_feed">Julkinen chat-syöte</string>
<string name="global_feed">Maailmanlaajuinen syöte</string>
<string name="search_feed">Hae syötettä</string>
<string name="add_a_relay">Lisää rele</string>
<string name="display_name">Näyttönimi</string>
<string name="my_display_name">Oma näyttönimeni</string>
<string name="username">Käyttäjänimi</string>
<string name="my_username">Oma käyttäjänimeni</string>
<string name="about_me">Tietoja minusta</string>
<string name="avatar_url">Avatarin URL</string>
<string name="banner_url">Bannerin URL</string>
<string name="website_url">Verkkosivuston URL</string>
<string name="ln_address">LN-osoite</string>
<string name="ln_url_outdated">LN-URL (vanhentunut)</string>
<string name="image_saved_to_the_gallery">Kuva tallennettu galleriaan</string>
<string name="failed_to_save_the_image">Kuvan tallennus epäonnistui</string>
<string name="upload_image">Lataa kuva</string>
<string name="uploading">Ladataan…</string>
<string name="user_does_not_have_a_lightning_address_setup_to_receive_sats">Käyttäjällä ei ole asetettuna Lightning-osoitetta satsien vastaanottamiseksi</string>
<string name="reply_here">"vastaa tähän.. "</string>
<string name="copies_the_note_id_to_the_clipboard_for_sharing">Kopioi viestin tunniste leikepöydälle Nostressa jakamista varten</string>
<string name="copy_channel_id_note_to_the_clipboard">Kopioi kanavan tunniste (viesti) leikepöydälle</string>
<string name="edits_the_channel_metadata">Muokkaa kanavan metatietoja</string>
<string name="join">Liity</string>
<string name="known">Tunnetut</string>
<string name="new_requests">Uudet pyynnöt</string>
<string name="blocked_users">Estetyt käyttäjät</string>
<string name="new_threads">Uudet keskustelut</string>
<string name="conversations">Keskustelut</string>
<string name="notes">Viestit</string>
<string name="replies">Vastaukset</string>
<string name="follows">"Seuratut"</string>
<string name="reports">"Ilmiannetut"</string>
<string name="more_options">Lisää vaihtoehtoja</string>
<string name="relays">" Releet"</string>
<string name="website">Verkkosivusto</string>
<string name="lightning_address">Lightning-osoite</string>
<string name="copies_the_nsec_id_your_password_to_the_clipboard_for_backup">Kopioi Nsec-tunniste (salasanasi) leikepöydälle varmuuskopiointia varten</string>
<string name="copy_private_key_to_the_clipboard">Kopioi yksityinen avain leikepöydälle</string>
<string name="copies_the_public_key_to_the_clipboard_for_sharing">Kopioi julkinen avain leikepöydälle jakamista varten</string>
<string name="copy_public_key_npub_to_the_clipboard">Kopioi julkinen avain (NPub) leikepöydälle</string>
<string name="send_a_direct_message">Lähetä suora viesti</string>
<string name="edits_the_user_s_metadata">Muokkaa käyttäjän metatietoja</string>
<string name="follow">Seuraa</string>
<string name="follow_back">Seuraa takaisin</string>
<string name="unblock">Poista esto</string>
<string name="copy_user_id">Kopioi käyttäjän tunniste</string>
<string name="unblock_user">Poista käyttäjän esto</string>
<string name="npub_hex_username">"npub, käyttäjänimi, teksti"</string>
<string name="clear">Tyhjennä</string>
<string name="app_logo">Sovelluksen logo</string>
<string name="nsec_npub_hex_private_key">nsec.. tai npub..</string>
<string name="show_password">Näytä salasana</string>
<string name="hide_password">Piilota salasana</string>
<string name="invalid_key">Virheellinen avain</string>
<string name="i_accept_the">"Hyväksyn "</string>
<string name="terms_of_use">käyttöehdot</string>
<string name="acceptance_of_terms_is_required">Käyttöehtojen hyväksyminen on pakollista</string>
<string name="key_is_required">Avain on pakollinen</string>
<string name="login">Kirjaudu sisään</string>
<string name="generate_a_new_key">Luo uusi avain</string>
<string name="loading_feed">Ladataan syöte</string>
<string name="error_loading_replies">"Virhe ladattaessa vastauksia: "</string>
<string name="try_again">Yritä uudelleen</string>
<string name="feed_is_empty">Syöte on tyhjä.</string>
<string name="refresh">Päivitä</string>
<string name="created">luotu</string>
<string name="with_description_of">kuvaus</string>
<string name="and_picture">ja kuva</string>
<string name="changed_chat_name_to">muutti keskustelun nimen kohteeksi</string>
<string name="description_to">kuvaus kohteeksi</string>
<string name="and_picture_to">ja kuva kohteeksi</string>
<string name="leave">Poistu</string>
<string name="unfollow">Lopeta seuraaminen</string>
<string name="channel_created">Kanava luotu</string>
<string name="channel_information_changed_to">"Kanavan tiedot muutettu kohteeksi"</string>
<string name="public_chat">Julkinen keskustelu</string>
<string name="posts_received">vastaanotetut viestit</string>
<string name="remove">Poista</string>
<string name="translations_auto">Automaattinen</string>
<string name="translations_translated_from">käännös kohteesta</string>
<string name="translations_to">kohteeseen</string>
<string name="translations_show_in_lang_first">Näytä ensin kielellä %1$s</string>
<string name="translations_always_translate_to_lang">Aina käännä kielelle %1$s</string>
<string name="translations_never_translate_from_lang">Älä koskaan käännä kielestä %1$s</string>
<string name="nip_05">Nostr-osoite</string>
<string name="never">ei koskaan</string>
<string name="now">nyt</string>
<string name="h">t</string>
<string name="m">m</string>
<string name="d">pv</string>
<string name="nudity">Alastomuus</string>
<string name="profanity_hateful_speech">Loukkaava kielenkäyttö / vihapuhe</string>
<string name="report_hateful_speech">Ilmoita vihapuheesta</string>
<string name="report_nudity_porn">Ilmoita alastomuudesta / pornosta</string>
<string name="others">muut</string>
<string name="mark_all_known_as_read">Merkitse kaikki Tunnetut luetuiksi</string>
<string name="mark_all_new_as_read">Merkitse kaikki Uudet luetuiksi</string>
<string name="mark_all_as_read">Merkitse kaikki luetuiksi</string>
<string name="backup_keys">Varmuuskopioi Avaimet</string>
<string name="account_backup_tips_md" tools:ignore="Typos"> ## Avaimen varmuuskopiointi ja turvallisuusvinkit
\n\nTiliäsi suojaa salainen avain. Avain on pitkä satunnainen merkkijono, joka alkaa **nsec1**. Kaikki, joilla on pääsy salaiseen avaimeesi, voivat julkaista sisältöä käyttäen identiteettiäsi.
\n\n- Älä **koskaan** laita salaista avaintasi mihinkään verkkosivustoon tai ohjelmistoon, johon et luota.
\n- Amethyst-kehittäjät eivät **koskaan** kysy sinulta salaista avaintasi.
\n- **Säilytä** salaisen avaimen varmuuskopio turvallisesti tilin palauttamista varten. Suosittelemme salasanahallintaohjelman käyttämistä.
</string>
<string name="secret_key_copied_to_clipboard">Salainen avain (nsec) kopioitu leikepöydälle</string>
<string name="copy_my_secret_key">Kopioi salainen avain</string>
<string name="biometric_authentication_failed">Tunnistautuminen epäonnistui</string>
<string name="biometric_error">Virhe</string>
<string name="badge_created_by">"Luonut %1$s"</string>
<string name="badge_award_image_for">"Merkki kohteelle %1$s"</string>
<string name="new_badge_award_notif">Olet saanut uuden merkin</string>
<string name="award_granted_to">Merkki myönnetty kohteelle</string>
<string name="copied_note_text_to_clipboard">Viestin teksti kopioitu leikepöydälle</string>
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">Käyttäjän @npub kopioitu leikepöydälle</string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">Viestin tunniste (@note1) kopioitu leikepöydälle</string>
<string name="select_text_dialog_top">Valitse teksti</string>
<string name="private_conversation_notification">"&lt;Ei voitu purkaa yksityisviestiä&gt;\n\nSinut mainittiin yksityisessä/salatussa keskustelussa kohteiden %1$s ja %2$s välillä."</string>
<string name="account_switch_add_account_dialog_title">Lisää uusi tili</string>
<string name="drawer_accounts">Tilit</string>
<string name="account_switch_select_account">Valitse tili</string>
<string name="account_switch_add_account_btn">Lisää uusi tili</string>
<string name="account_switch_active_account">Aktiivinen tili</string>
<string name="account_switch_has_private_key">Sisältää salaisen avaimen</string>
<string name="account_switch_pubkey_only">Vain julkisavain, ei salaista avainta</string>
<string name="back">Takaisin</string>
<string name="quick_action_select">Valitse</string>
<string name="quick_action_share_browser_link">Jaa selaimen linkki</string>
<string name="quick_action_share">Jaa</string>
<string name="quick_action_copy_user_id">Kirjoittajan tunniste</string>
<string name="quick_action_copy_note_id">Viestin tunniste</string>
<string name="quick_action_copy_text">Kopioi teksti</string>
<string name="quick_action_delete">Poista</string>
<string name="quick_action_unfollow">Lopeta seuraaminen</string>
<string name="quick_action_follow">Seuraa</string>
<string name="quick_action_request_deletion_alert_title">Pyydä poistoa</string>
<string name="quick_action_request_deletion_alert_body">Amethyst pyytää, että viestisi poistetaan releistä, joihin olet tällä hetkellä yhteydessä. Emme voi taata, että viestisi poistetaan pysyvästi niistä releistä tai muista releistä, joissa se voi olla tallennettuna.</string>
<string name="quick_action_block_dialog_btn">Estä</string>
<string name="quick_action_delete_dialog_btn">Poista</string>
<string name="quick_action_block">Estä</string>
<string name="quick_action_report">Ilmoita</string>
<string name="quick_action_delete_button">Poista</string>
<string name="quick_action_dont_show_again_button">Älä näytä uudelleen</string>
<string name="report_dialog_spam">Roskaposti tai huijaus</string>
<string name="report_dialog_profanity">Loukkaava kielenkäyttö tai vihamielinen käytös</string>
<string name="report_dialog_impersonation">Haitallinen henkilöllisyyden omiminen</string>
<string name="report_dialog_nudity">Alastomuus tai graafinen sisältö</string>
<string name="report_dialog_illegal">Laiton käytös</string>
<string name="report_dialog_blocking_a_user">Käyttäjän estäminen piilottaa hänen sisältönsä sovelluksessasi. Merkintäsi ovat silti julkisesti nähtävillä, myös niille, jotka estät. Estetyt käyttäjät on lueteltu turvallisuussuodattimien näytössä.</string>
<string name="report_dialog_block_hide_user_btn"><![CDATA[Estä ja piilota käyttäjä]]></string>
<string name="report_dialog_report_btn">Ilmoita väärinkäytöstä</string>
<string name="report_dialog_reminder_public">Kaikki ilmoitukset ovat julkisesti nähtävillä.</string>
<string name="report_dialog_additional_reason_placeholder">Voit antaa lisäkontekstia ilmoituksellesi valinnaisesti...</string>
<string name="report_dialog_additional_reason_label">Lisäkonteksti</string>
<string name="report_dialog_select_reason_label">Syy</string>
<string name="report_dialog_select_reason_placeholder">Valitse syy...</string>
<string name="report_dialog_post_report_btn">Lähetä ilmoitus</string>
<string name="report_dialog_title">Estä ja ilmoita</string>
<string name="block_only">Estä</string>
<string name="bookmarks">Kirjanmerkit</string>
<string name="private_bookmarks">Yksityiset kirjanmerkit</string>
<string name="public_bookmarks">Julkiset kirjanmerkit</string>
<string name="add_to_private_bookmarks">Lisää yksityisiin kirjanmerkkeihin</string>
<string name="add_to_public_bookmarks">Lisää julkisiin kirjanmerkkeihin</string>
<string name="remove_from_private_bookmarks">Poista yksityisistä kirjanmerkeistä</string>
<string name="remove_from_public_bookmarks">Poista julkisista kirjanmerkeistä</string>
<string name="wallet_connect_service">Lompakkoyhteyspalvelu</string>
<string name="wallet_connect_service_explainer">Valtuuttaa Nostr-salaisuuden maksamaan zapeja ilman sovelluksesta poistumista. Pidä salaisuutesi turvassa ja käytä yksityistä relettä, jos mahdollista.</string>
<string name="wallet_connect_service_pubkey">Lompakkoyhteyden julkinen avain</string>
<string name="wallet_connect_service_relay">Lompakkoyhteyden rele</string>
<string name="wallet_connect_service_secret">Lompakkoyhteyden salainen avain</string>
<string name="wallet_connect_service_show_secret">Näytä salainen avain</string>
<string name="wallet_connect_service_secret_placeholder">nsec / heksadesimaalinen salainen avain</string>
<string name="pledge_amount_in_sats">Luvattu määrä satseissa</string>
<string name="post_poll">Luo äänestys</string>
<string name="poll_heading_required">Vaaditut kohdat:</string>
<string name="poll_zap_recipients">Zap-vastaanottajat</string>
<string name="poll_primary_description">Pääasiallinen äänestyksen kuvaus...</string>
<string name="poll_option_index">Vaihtoehto %s</string>
<string name="poll_option_description">Vaihtoehdon kuvaus</string>
<string name="poll_heading_optional">Valinnaiset kohdat:</string>
<string name="poll_zap_value_min">Vähimmäiszap</string>
<string name="poll_zap_value_max">Enimmäiszap</string>
<string name="poll_consensus_threshold">Konsensus</string>
<string name="poll_consensus_threshold_percent">(0100)%</string>
<string name="poll_closing_time">Sulje äänestys</string>
<string name="poll_closing_time_days">päivän kuluttua</string>
<string name="poll_is_closed">Äänestys on suljettu uusilta ääniltä</string>
<string name="poll_zap_amount">Zap-määrä</string>
<string name="one_vote_per_user_on_atomic_votes">Vain yksi ääni käyttäjää kohti tällä äänestystyypillä</string>
<string name="looking_for_event">"Etsitään tapahtumaa %1$s"</string>
<string name="custom_zaps_add_a_message">Lisää julkinen viesti</string>
<string name="custom_zaps_add_a_message_private">Lisää yksityinen viesti</string>
<string name="custom_zaps_add_a_message_nonzap">Lisää laskuviesti</string>
<string name="custom_zaps_add_a_message_example">Kiitos tehdystä työstä!</string>
<string name="lightning_create_and_add_invoice">Luo ja lisää</string>
<string name="poll_author_no_vote">Äänestyksen luojat eivät voi äänestää omissa äänestyksissään.</string>
<string name="hash_verification_passed">Tämä sisältö on sama kuin viestin julkaisuhetkellä</string>
<string name="hash_verification_failed">Tämä sisältö on muuttunut. Kirjoittaja ei ehkä ole nähnyt tai hyväksynyt muutosta</string>
<string name="content_description_add_image">Lisää kuva</string>
<string name="content_description_add_video">Lisää video</string>
<string name="content_description_add_document">Lisää dokumentti</string>
<string name="add_content">Lisää viestiin</string>
<string name="content_description">Sisällön kuvaus</string>
<string name="content_description_example">Sininen vene valkoisella hiekkarannalla auringonlaskussa</string>
<string name="zap_type">Zap-tyyppi</string>
<string name="zap_type_explainer">Zap-tyyppi kaikille vaihtoehdoille</string>
<string name="zap_type_public">Julkinen</string>
<string name="zap_type_public_explainer">Kaikki voivat nähdä tapahtuman ja viestin</string>
<string name="zap_type_private">Yksityinen</string>
<string name="zap_type_private_explainer">Lähettäjä ja vastaanottaja voivat nähdä toisensa ja lukea viestin</string>
<string name="zap_type_anonymous">Anonyymi</string>
<string name="zap_type_anonymous_explainer">Vastaanottaja ja yleisö eivät tiedä, kuka lähetti maksun</string>
<string name="zap_type_nonzap">Ei-Zap</string>
<string name="zap_type_nonzap_explainer">Ei jälkiä Nostrissa, vain Lightningissa</string>
<string name="file_server">Tiedostopalvelin</string>
<string name="zap_forward_lnAddress">LnAddress tai @Käyttäjä</string>
<string name="upload_server_imgur">imgur.com - luotettava</string>
<string name="upload_server_imgur_explainer">Imgur voi muokata tiedostoa</string>
<string name="upload_server_nostrimg">nostrimg.com - luotettava</string>
<string name="upload_server_nostrimg_explainer">NostrImg voi muokata tiedostoa</string>
<string name="upload_server_nostrbuild">nostr.build - luotettava</string>
<string name="upload_server_nostrbuild_explainer">Nostr.build voi muokata tiedostoa</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev - luotettava</string>
<string name="upload_server_nostrfilesdev_explainer">Nostrfiles.dev voi muokata tiedostoa</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - luotettava</string>
<string name="upload_server_nostrcheckme_explainer">Nostrcheck.me voi muokata tiedostoa</string>
<string name="upload_server_imgur_nip94">Todennettava Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Tarkistaa, onko Imgur muokannut tiedostoa. Uusi NIP: muut asiakkaat eivät ehkä näe sitä</string>
<string name="upload_server_nostrimg_nip94">Todennettava NostrImg (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">Tarkistaa, onko NostrImg muokannut tiedostoa. Uusi NIP: muut asiakkaat eivät ehkä näe sitä</string>
<string name="upload_server_nostrbuild_nip94">Todennettava Nostr.build (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94_explainer">Tarkistaa, onko Nostr.build muokannut tiedostoa. Uusi NIP: muut asiakkaat eivät ehkä näe sitä</string>
<string name="upload_server_nostrfilesdev_nip94">Todennettava Nostrfiles.dev (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">Tarkistaa, onko Nostrfiles.dev muokannut tiedostoa. Uusi NIP: muut asiakkaat eivät ehkä näe sitä</string>
<string name="upload_server_nostrcheckme_nip94">Todennettava Nostrcheck.me (NIP-94)</string>
<string name="upload_server_nostrcheckme_nip94_explainer">Tarkistaa, onko Nostrcheck.me muokannut tiedostoa. Uusi NIP: muut asiakkaat eivät ehkä näe sitä</string>
<string name="upload_server_relays_nip95">Omat releet (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">Tiedostot ovat isännöityinä omilla releilläsi. Uusi NIP: tarkista, tukevatko ne sitä</string>
<string name="connect_via_tor_short">Tor/Orbot-asetus</string>
<string name="connect_via_tor">Yhdistä Orbot-asetuksesi kautta</string>
<string name="do_you_really_want_to_disable_tor_title">Haluatko todella katkaista Orbot/Tor-yhteytesi?</string>
<string name="do_you_really_want_to_disable_tor_text">Tietosi siirtyvät välittömästi tavalliseen verkkoon</string>
<string name="yes">Kyllä</string>
<string name="no">Ei</string>
<string name="follow_list_selection">Seuraa-lista</string>
<string name="follow_list_kind3follows">Kaikki seuraajat</string>
<string name="follow_list_global">Maailmanlaajuinen</string>
<string name="connect_through_your_orbot_setup_markdown"> ## Yhdistä Torin kautta Orbotin avulla
\n\n1. Asenna [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android)
\n2. Käynnistä Orbot
\n3. Orbotissa tarkista Socks-portti. Oletusarvo on 9050
\n4. Tarvittaessa vaihda porttia Orbotissa
\n5. Aseta Socks-portti tällä näytöllä
\n6. Paina Aktivoi-painiketta käyttääksesi Orbotia välityspalvelimena
</string>
<string name="orbot_socks_port">Orbot Socks-portti</string>
<string name="invalid_port_number">Virheellinen porttinumero</string>
<string name="use_orbot">Käytä Orbotia</string>
<string name="disconnect_from_your_orbot_setup">Katkaise Tor/Orbot-yhteys</string>
<string name="app_notification_dms_channel_name">Yksityisviestit</string>
<string name="app_notification_dms_channel_description">Ilmoittaa sinulle, kun yksityinen viesti saapuu</string>
<string name="app_notification_zaps_channel_name">Saapuneet Zapit</string>
<string name="app_notification_zaps_channel_description">Ilmoittaa sinulle, kun joku zappaa sinua</string>
<string name="app_notification_zaps_channel_message">%1$s sats</string>
<string name="app_notification_zaps_channel_message_from">Lähettäjä: %1$s</string>
<string name="app_notification_zaps_channel_message_for">saaja: %1$s</string>
<string name="reply_notify">Ilmoitus: </string>
<string name="channel_list_join_conversation">Liity keskusteluun</string>
<string name="channel_list_user_or_group_id">Käyttäjän tai ryhmän tunniste</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent tai heksadesimaali</string>
<string name="channel_list_create_channel">Luo</string>
<string name="channel_list_join_channel">Liity</string>
<string name="today">Tänään</string>
<string name="content_warning">Sisältövaroitus</string>
<string name="content_warning_explanation">Tämä viesti sisältää herkkää sisältöä, joka voi olla loukkaavaa tai häiritsevää joillekin ihmisille</string>
<string name="content_warning_hide_all_sensitive_content">Piilota aina herkkä sisältö</string>
<string name="content_warning_show_all_sensitive_content">Näytä aina herkkä sisältö</string>
<string name="content_warning_see_warnings">Näytä aina sisältövaroitukset</string>
<string name="recommended_apps">Suosittelee: </string>
<string name="filter_spam_from_strangers">Suodata roskapostia tuntemattomilta</string>
<string name="warn_when_posts_have_reports_from_your_follows">Varoita, kun seurattavasi ovat raportoineet viestejä</string>
<string name="new_reaction_symbol">Uusi reaktiosymboli</string>
<string name="no_reaction_type_setup_long_press_to_change">Ei valittu reaktiotyyppejä. Pidä pitkään painettuna vaihtaaksesi.</string>
<string name="zapraiser">Zapkerääjä</string>
<string name="zapraiser_explainer">Lisää tavoitesumma satseina tämän viestin tukemiseksi. Tuettavat asiakkaat voivat näyttää tämän edistymispalkkina tuen kannustamiseksi</string>
<string name="zapraiser_target_amount_in_sats">Tavoitesumma satseina</string>
<string name="sats_to_complete">Zapraiser %1$s. %2$s satsiin tavoitteesta</string>
<string name="read_from_relay">Lue releestä</string>
<string name="write_to_relay">Kirjoita releeseen</string>
<string name="an_error_occurred_trying_to_get_relay_information">Virhe yritettäessä hakea rele-tietoja %1$s:stä</string>
<string name="owner">Omistaja</string>
<string name="version">Versio</string>
<string name="software">Ohjelmisto</string>
<string name="contact">Yhteystiedot</string>
<string name="supports">Tuetut NIPit</string>
<string name="admission_fees">Pääsymaksut</string>
<string name="payments_url">Maksut URL</string>
<string name="limitations">Rajoitukset</string>
<string name="countries">Maat</string>
<string name="languages">Kielet</string>
<string name="tags">Tagit</string>
<string name="posting_policy">Julkaisupolitiikka</string>
<string name="message_length">Viestin pituus</string>
<string name="subscriptions">Tilaukset</string>
<string name="filters">Suodattimet</string>
<string name="subscription_id_length">Tilaustunnuksen pituus</string>
<string name="minimum_prefix">Vähimmäisliite</string>
<string name="maximum_event_tags">Maksimi tapahtumien tagit</string>
<string name="content_length">Sisällön pituus</string>
<string name="minimum_pow">Vähimmäis PoW</string>
<string name="auth">Autentikointi</string>
<string name="payment">Maksu</string>
<string name="cashu">Cashu-tunniste</string>
<string name="cashu_redeem">Lunasta</string>
<string name="no_lightning_address_set">Ei Lightning-osoitetta asetettuna</string>
<string name="copied_token_to_clipboard">Kopioitu tunniste leikepöydälle</string>
<string name="live_stream_live_tag">LIVE</string>
<string name="live_stream_offline_tag">POISSA</string>
<string name="live_stream_ended_tag">PÄÄTTYNYT</string>
<string name="live_stream_planned_tag">AJOITETTU</string>
<string name="live_stream_is_offline">Livestream on offline-tilassa</string>
<string name="live_stream_has_ended">Livestream on päättynyt</string>
<string name="are_you_sure_you_want_to_log_out">Uloskirjautuminen poistaa kaikki paikalliset tiedot. Varmista, että sinulla on varmuuskopio yksityisavaimistasi välttääksesi tilisi menetyksen. Haluatko jatkaa?</string>
<string name="followed_tags">Seuratut tagit</string>
<string name="relay_setup">Releet</string>
<string name="discover_live">Live</string>
<string name="discover_community">Yhteisö</string>
<string name="discover_chat">Keskustelut</string>
<string name="community_approved_posts">Hyväksytyt viestit</string>
<string name="groups_no_descriptor">Tällä ryhmällä ei ole kuvausta tai sääntöjä. Keskustele omistajan kanssa sen lisäämiseksi</string>
<string name="community_no_descriptor">Tällä yhteisöllä ei ole kuvausta. Keskustele omistajan kanssa sen lisäämiseksi</string>
<string name="add_sensitive_content_label">Herkkä sisältö</string>
<string name="add_sensitive_content_description">Lisää herkän sisällön varoitus ennen tämän sisällön näyttämistä</string>
<string name="settings">Asetukset</string>
<string name="connectivity_type_always">Aina</string>
<string name="connectivity_type_wifi_only">Vain WiFi</string>
<string name="connectivity_type_never">Ei koskaan</string>
<string name="system">Järjestelmä</string>
<string name="light">Vaalea</string>
<string name="dark">Tumma</string>
<string name="application_preferences">Sovelluksen asetukset</string>
<string name="language">Kieli</string>
<string name="theme">Teema</string>
<string name="automatically_load_images_gifs">Kuvan esikatselu</string>
<string name="automatically_play_videos">Videon toisto</string>
<string name="automatically_show_url_preview">URL-esikatselu</string>
<string name="load_image">Lataa kuva</string>
<string name="spamming_users">Roskapostittajat</string>
<string name="muted_button">Ääni pois päältä. Napsauta palauttaaksesi äänet</string>
<string name="mute_button">Ääni päällä. Napsauta vaimentaaksesi</string>
<string name="search_button">Hae paikallisia ja etämerkintöjä</string>
<string name="nip05_verified">Nostr-osoite varmennettiin</string>
<string name="nip05_failed">Nostr-osoite ei läpäissyt varmennusta</string>
<string name="nip05_checking">Tarkistetaan Nostr-osoite</string>
<string name="select_deselect_all">Valitse/Poista valinta kaikista</string>
<string name="default_relays">Oletus</string>
<string name="select_a_relay_to_continue">Valitse rele jatkaaksesi</string>
<string name="zap_forward_title">Ohjaa zappit kohteeseen:</string>
<string name="zap_forward_explainer">Sovelluksien tukeminen ohjaa zappit alla olevaan LN-osoitteeseen tai käyttäjäprofiiliin sen sijaan, että ne menisivät sinulle</string>
<string name="geohash_title">Näytä sijaintina </string>
<string name="geohash_explainer">Lisää sijaintisi Geohashinä viestiin. On julkisesti nähtävänä, että olet 5 km (3 mailin) säteellä nykyisestä sijainnista</string>
<string name="add_sensitive_content_explainer">Lisää herkkä sisältö -varoitus ennen sisällön näyttämistä. Tämä on suositeltua kaikelle aikuissisällölle tai sisällölle, jota jotkut saattavat pitää loukkaavana tai häiritsevänä</string>
<string name="new_feature_nip24_might_not_be_available_title">Uusi ominaisuus</string>
<string name="new_feature_nip24_might_not_be_available_description">Tämän tilan aktivoiminen vaatii Amethystin lähettämään NIP-24-viestin (Lahjapakatut, Suljetut suorat ja ryhmäviestit). NIP-24 on uusi, ja useimmat asiakkaat eivät ole vielä toteuttaneet sitä. Varmista, että vastaanottaja käyttää yhteensopivaa asiakasta.</string>
<string name="new_feature_nip24_activate">Aktivoi</string>
<string name="messages_create_public_chat">Julkinen</string>
<string name="messages_new_message">Yksityinen</string>
<string name="messages_new_message_to">Vastaanottaja</string>
<string name="messages_new_message_subject">Aihe</string>
<string name="messages_new_message_subject_caption">Keskustelun aihe</string>
<string name="messages_new_message_to_caption">"\@Käyttäjä1, @Käyttäjä2, @Käyttäjä3"</string>
<string name="messages_group_descriptor">Tämän ryhmän jäsenet</string>
<string name="messages_new_subject_message">Selitys jäsenille</string>
<string name="messages_new_subject_message_placeholder">Muuta nimi uusille tavoitteille.</string>
<string name="language_description">Sovelluksen käyttöliittymälle</string>
<string name="theme_description">Tumma, vaalea tai järjestelmäteema</string>
<string name="automatically_load_images_gifs_description">Lataa kuvat ja GIF-animaatiot automaattisesti</string>
<string name="automatically_play_videos_description">Toista videot ja GIF-animaatiot automaattisesti</string>
<string name="automatically_show_url_preview_description">Näytä URL-esikatselut</string>
<string name="load_image_description">Koska kuvat ladataan</string>
<string name="copy_url_to_clipboard">Kopioi URL leikepöydälle</string>
<string name="copy_the_note_id_to_the_clipboard">Kopioi viestin tunniste leikepöydälle</string>
<string name="created_at">Luotu</string>
<string name="rules">Säännöt</string>
<string name="status_update">Päivitä tilaasi</string>
<string name="lightning_wallets_not_found">Virhe tulkittaessa virhesanomaa</string>
<string name="poll_zap_value_min_max_explainer">Äänet painotetaan zappin määrän perusteella. Voit asettaa minimimäärän roskapostin välttämiseksi ja maksimimäärän suurten zappereiden estämiseksi. Käytä samaa määrää molemmissa kentissä, jotta jokainen ääni arvostetaan samalla määrällä. Jätä se tyhjäksi hyväksyäksesi minkä tahansa määrän.</string>
<string name="error_dialog_zap_error">Zapin lähettäminen ei onnistunut</string>
<string name="error_dialog_talk_to_user">Viesti käyttäjälle</string>
<string name="error_dialog_button_ok">Ok</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -5,11 +5,11 @@
<string name="profile_image">Image de profil</string>
<string name="scan_qr">Scanner le QR code</string>
<string name="show_anyway">Montrer quand même</string>
<string name="post_was_flagged_as_inappropriate_by">Post signalé innaproprié par</string>
<string name="post_was_flagged_as_inappropriate_by">Post signalé inapproprié par</string>
<string name="post_not_found">Post non trouvé</string>
<string name="channel_image">Image du canal</string>
<string name="referenced_event_not_found">référence de l\'évènement non trouvée</string>
<string name="could_not_decrypt_the_message">Impossibe de déchiffrer le message</string>
<string name="could_not_decrypt_the_message">Impossible de déchiffrer le message</string>
<string name="group_picture">Image de groupe</string>
<string name="explicit_content">Contenu choquant</string>
<string name="spam">Spam</string>
@@ -22,8 +22,10 @@
<string name="copy_user_pubkey">Copier la clé publique de l\'utilisateur</string>
<string name="copy_note_id">Copier l\'ID de la note</string>
<string name="broadcast">Diffuser</string>
<string name="block_hide_user">Bloquer et cacher l\'utilisateur</string>
<string name="report_spam_scam">Signaler un Spam / Scam</string>
<string name="request_deletion">Demande de suppression</string>
<string name="block_report">Bloquer / Signaler</string>
<string name="block_hide_user"><![CDATA[Bloquer et cacher l\'utilisateur]]></string>
<string name="report_spam_scam">Signaler Spam / Arnaque</string>
<string name="report_impersonation">Signaler une falsification d\'identité</string>
<string name="report_explicit_content">Signaler un contenu choquant</string>
<string name="report_illegal_behaviour">Signaler un comportement illégal</string>
@@ -32,6 +34,8 @@
<string name="login_with_a_private_key_to_like_posts">Connectez vous avec une clé privée pour pouvoir aimer des posts</string>
<string name="no_zap_amount_setup_long_press_to_change">Aucun montant sélectionné pour le zap. Appui long pour modifier</string>
<string name="login_with_a_private_key_to_be_able_to_send_zaps">Connectez vous avec une clé privée pour pouvoir envoyer des zaps</string>
<string name="login_with_a_private_key_to_be_able_to_follow">Connectez-vous avec une clé privée pour Suivre</string>
<string name="login_with_a_private_key_to_be_able_to_unfollow">Connectez-vous avec une clé privée pour ne plus Suivre</string>
<string name="zaps">Zaps</string>
<string name="view_count">Nombre de vues</string>
<string name="boost">Boost</string>
@@ -43,9 +47,11 @@
<string name="and">" et "</string>
<string name="in_channel">"dans le canal "</string>
<string name="profile_banner">Bannière du profil</string>
<string name="payment_successful">Paiement Réussi</string>
<string name="error_parsing_error_message">Erreur d\'analyse du message d\'erreur</string>
<string name="following">" Abonnements"</string>
<string name="followers">" Abonnés"</string>
<string name="profile">Profile</string>
<string name="profile">Profil</string>
<string name="security_filters">Filtres de sécurité</string>
<string name="log_out">Déconnexion</string>
<string name="show_more">Voir plus</string>
@@ -53,17 +59,17 @@
<string name="pay">Payer</string>
<string name="lightning_tips">Pourboire Lightning</string>
<string name="note_to_receiver">Note au destinataire</string>
<string name="thank_you_so_much">Merci beaucoup!</string>
<string name="thank_you_so_much">Merci beaucoup !</string>
<string name="amount_in_sats">Montant en Sats</string>
<string name="send_sats">Envoyer des Sats</string>
<string name="error_parsing_preview_for">"Erreur d\'analyse de l\'aperçu pour %1$s : %2$s"</string>
<string name="preview_card_image_for">"Aperçu de l\'image pour %1$s"</string>
<string name="error_parsing_preview_for">"Erreur d'analyse de l'aperçu pour %1$s : %2$s"</string>
<string name="preview_card_image_for">"Aperçu de l'image pour %1$s"</string>
<string name="new_channel">Nouveau canal</string>
<string name="channel_name">Nom de canal</string>
<string name="my_awesome_group">Mon groupe spectaculaire</string>
<string name="picture_url">Url de l\'image</string>
<string name="description">Description</string>
<string name="about_us">à propos</string>
<string name="about_us">"à propos"</string>
<string name="what_s_on_your_mind">Quoi de neuf ?</string>
<string name="post">Envoyer</string>
<string name="save">Sauvegarder</string>
@@ -72,6 +78,7 @@
<string name="failed_to_upload_the_image">Échec du téléchargement de l\'image</string>
<string name="relay_address">Adresse du relais</string>
<string name="posts">Publications</string>
<string name="bytes">Octets</string>
<string name="errors">Erreurs</string>
<string name="home_feed">Vos notifications</string>
<string name="private_message_feed">Flux de messages privés</string>
@@ -94,7 +101,7 @@
<string name="upload_image">Charger une image</string>
<string name="uploading">Chargement…</string>
<string name="user_does_not_have_a_lightning_address_setup_to_receive_sats">L\'utilisateur n\'a pas configuré d\'adresse Lightning pour recevoir des sats</string>
<string name="reply_here">"Répondre ici.. "</string>
<string name="reply_here">"répondre ici"</string>
<string name="copies_the_note_id_to_the_clipboard_for_sharing">Copie l\'ID de note dans le presse-papiers pour le partage sur Nostr</string>
<string name="copy_channel_id_note_to_the_clipboard">Copier l\'ID de la chaîne (Note) dans le presse-papiers</string>
<string name="edits_the_channel_metadata">Modifie les métadonnées du canal</string>
@@ -119,17 +126,18 @@
<string name="send_a_direct_message">Envoyer un message direct</string>
<string name="edits_the_user_s_metadata">Modifie les métadonnées de l\'utilisateur</string>
<string name="follow">Suivre</string>
<string name="follow_back">Suivre en retour</string>
<string name="unblock">Débloquer</string>
<string name="copy_user_id">Copier l\'ID utilisateur</string>
<string name="unblock_user">Débloquer l\'utilisateur</string>
<string name="npub_hex_username">"npub, hex, nom d\'utilisateur "</string>
<string name="npub_hex_username">"npub, hex, nom d'utilisateur "</string>
<string name="clear">Nettoyer</string>
<string name="app_logo">Logo de l\'App</string>
<string name="nsec_npub_hex_private_key">nsec / npub / hex private key</string>
<string name="show_password">Révéler le mot de passe</string>
<string name="hide_password">Cacher le mot de passe</string>
<string name="invalid_key">Clé non valide</string>
<string name="i_accept_the">"J\'accepte les "</string>
<string name="i_accept_the">"J'accepte les "</string>
<string name="terms_of_use">conditions d\'utilisation</string>
<string name="acceptance_of_terms_is_required">L\'acceptation des conditions est requise</string>
<string name="key_is_required">La clé est requise</string>
@@ -137,7 +145,7 @@
<string name="generate_a_new_key">Générer une nouvelle clé</string>
<string name="loading_feed">Chargement du flux</string>
<string name="error_loading_replies">"Erreur lors du chargement des réponses : "</string>
<string name="try_again">essayer à nouveau</string>
<string name="try_again">Essayer à nouveau</string>
<string name="feed_is_empty">Le flux est vide.</string>
<string name="refresh">Rafraîchir</string>
<string name="created">créé</string>
@@ -159,6 +167,7 @@
<string name="translations_show_in_lang_first">Montre en %1$s en premier</string>
<string name="translations_always_translate_to_lang">Toujours traduire en %1$s</string>
<string name="translations_never_translate_from_lang">Ne jamais traduire depuis %1$s</string>
<string name="nip_05">Adresse Nostr</string>
<string name="never">jamais</string>
<string name="now">maintenant</string>
<string name="h">h</string>
@@ -173,8 +182,7 @@
<string name="mark_all_new_as_read">Marquer tous les Nouveaux comme lu</string>
<string name="mark_all_as_read">Tout marquer comme lu</string>
<string name="backup_keys">Clés de sauvegarde</string>
<string name="account_backup_tips_md" tools:ignore="Typos">
## Sauvegarde des clés et conseils de sécurité
<string name="account_backup_tips_md" tools:ignore="Typos"> ## Sauvegarde des clés et conseils de sécurité
\n\nVotre compte est sécurisé par une clé secrète. La clé est une longue chaîne aléatoire commençant par **nsec1**. Toute personne ayant accès à votre clé secrète peut publier du contenu en utilisant votre identité.
\n\n- Ne communiquez **jamais** votre clé secrète à un site Web ou un logiciel auquel vous ne faites pas confiance.
\n- Les développeurs d\'Amethyst ne vous demanderont **jamais** votre clé secrète.
@@ -192,7 +200,6 @@
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">Copie du @npub utilisateur dans le presse-papiers</string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">Copie de l\'ID de la note (@note1) dans le presse-papiers</string>
<string name="select_text_dialog_top">Sélectionner le Texte</string>
<string name="private_conversation_notification">"&lt;Impossible de déchiffrer le message privé&gt;\n\nVous avez été cité dans une conversation privée/cryptée entre %1$s et %2$s."</string>
<string name="account_switch_add_account_dialog_title">Ajouter un Nouveau Compte</string>
<string name="drawer_accounts">Comptes</string>
@@ -235,8 +242,6 @@
<string name="report_dialog_post_report_btn">Publier le signalement</string>
<string name="report_dialog_title">Bloquer et Signaler</string>
<string name="block_only">Bloquer</string>
<string name="bookmarks">Favoris</string>
<string name="private_bookmarks">Favoris Privés</string>
<string name="public_bookmarks">Favoris Publics</string>
@@ -244,15 +249,13 @@
<string name="add_to_public_bookmarks">Ajouter aux Favoris Publics</string>
<string name="remove_from_private_bookmarks">Supprimer des Favoris Privés</string>
<string name="remove_from_public_bookmarks">Supprimer des Favoris Publics</string>
<string name="wallet_connect_service">Service Wallet Connect</string>
<string name="wallet_connect_service_explainer">Autorise un Nostr Secret à payer des zaps sans quitter l\'application. Gardez le secret en toute sécurité et utilisez un relais privé si possible</string>
<string name="wallet_connect_service_pubkey">Wallet Connect Pubkey</string>
<string name="wallet_connect_service_relay">Wallet Connect Relay</string>
<string name="wallet_connect_service_secret">Wallet Connect Secret</string>
<string name="wallet_connect_service_pubkey">Clé publique Wallet Connect</string>
<string name="wallet_connect_service_relay">Relais Wallet Connect</string>
<string name="wallet_connect_service_secret">Secret Wallet Connect</string>
<string name="wallet_connect_service_show_secret">Montrer la clé secrète</string>
<string name="wallet_connect_service_secret_placeholder">Clé privée nsec / hex</string>
<string name="pledge_amount_in_sats">Montant engagé en Sats</string>
<string name="post_poll">Message Sondage</string>
<string name="poll_heading_required">Champs requis:</string>
@@ -260,7 +263,7 @@
<string name="poll_primary_description">Description du sondage primaire…</string>
<string name="poll_option_index">Option %s</string>
<string name="poll_option_description">Description de l\'option du Sondage</string>
<string name="poll_heading_optional">Champs optionels:</string>
<string name="poll_heading_optional">Champs optionnels :</string>
<string name="poll_zap_value_min">Zap minimum</string>
<string name="poll_zap_value_max">Zap maximum</string>
<string name="poll_consensus_threshold">Consensus</string>
@@ -270,97 +273,65 @@
<string name="poll_is_closed">Le Sondage est fermé aux nouveaux votes</string>
<string name="poll_zap_amount">Montant des Zap</string>
<string name="one_vote_per_user_on_atomic_votes">Un seul vote par utilisateur est autorisé sur ce type de sondage</string>
<string name="looking_for_event">"Recherche de l'Evénement %1$s"</string>
<string name="looking_for_event">"Recherche de l'Événement %1$s"</string>
<string name="custom_zaps_add_a_message">Ajouter un message public</string>
<string name="custom_zaps_add_a_message_private">Ajouter un message privé</string>
<string name="custom_zaps_add_a_message_nonzap">Ajouter un message facture</string>
<string name="custom_zaps_add_a_message_example">Merci pour tout votre travail !</string>
<string name="lightning_create_and_add_invoice">Créer et Ajouter</string>
<string name="poll_author_no_vote">Les auteurs du sondage ne peuvent pas voter dans leurs propres sondages.</string>
<string name="hash_verification_passed">Ce contenu est le même depuis le message</string>
<string name="hash_verification_failed">Ce contenu a changé. L\'auteur n\'a peut-être pas vu ou approuvé le changement</string>
<string name="content_description_add_image">Ajouter une Image</string>
<string name="content_description_add_video">Ajouter une Vidéo</string>
<string name="content_description_add_document">Ajouter un Document</string>
<string name="add_content">Ajouter au Message</string>
<string name="content_description">Description des contenus</string>
<string name="content_description_example">Un bateau bleu sur une plage de sable blanc au coucher du soleil</string>
<string name="zap_type">Type de Zap</string>
<string name="zap_type_explainer">Zap Type pour toutes les options</string>
<string name="zap_type_public">Public</string>
<string name="zap_type_public_explainer">Tout le monde peut voir la transaction et le message</string>
<string name="zap_type_private">Privé</string>
<string name="zap_type_private_explainer">L\'expéditeur et le receveur peuvent se voir et lire le message</string>
<string name="zap_type_anonymous">Anonyme</string>
<string name="zap_type_anonymous_explainer">Le receveur et le public ne savent pas qui a envoyé le paiement</string>
<string name="zap_type_nonzap">Non-Zap</string>
<string name="zap_type_nonzap_explainer">Aucune trace sur Nostr, seulement sur le Lightning</string>
<string name="file_server">Serveur fichier</string>
<string name="zap_forward_lnAddress">Adresse LN ou @Utilisateur</string>
<string name="upload_server_imgur">imgur.com - de confiance</string>
<string name="upload_server_imgur_explainer">Imgur peut modifier le fichier</string>
<string name="upload_server_nostrimg">nostrimg.com - de confiance</string>
<string name="upload_server_nostrimg_explainer">NostrImg peut modifier le fichier</string>
<string name="upload_server_nostrbuild">nostr.build - de confiance</string>
<string name="upload_server_nostrbuild_explainer">Nostr.build peut modifier le fichier</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev - de confiance</string>
<string name="upload_server_nostrfilesdev_explainer">Nostrfiles.dev peut modifier le fichier</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - de confiance</string>
<string name="upload_server_nostrcheckme_explainer">nostrcheck.me peut modifier le fichier</string>
<string name="upload_server_imgur_nip94">Verifiable Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94">Imgur vérifiable (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Vérifie si Imgur a modifié le fichier. Nouveau NIP: certains clients pourraient ne pas le voir</string>
<string name="upload_server_nostrimg_nip94">Verifiable NostrImg (NIP-94)</string>
<string name="upload_server_nostrimg_nip94">NostrImg vérifiable (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">Vérifie si NostrImg a modifié le fichier. Nouveau NIP: certains clients pourraient ne pas le voir</string>
<string name="upload_server_nostrbuild_nip94">Verifiable Nostr.build (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94">Nostr.build vérifiable (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94_explainer">Vérifie si Nostr.build a modifié le fichier. Nouveau NIP: certains clients pourraient ne pas le voir</string>
<string name="upload_server_nostrfilesdev_nip94">Verifiable Nostrfiles.dev (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94">Nostrfiles.dev vérifiable (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">Vérifie si Nostrfiles.dev a modifié le fichier. Nouveau NIP: certains clients pourraient ne pas le voir</string>
<string name="upload_server_nostrcheckme_nip94">Verifiable Nostrcheck.me (NIP-94)</string>
<string name="upload_server_nostrcheckme_nip94">Nostrcheck.me vérifiable (NIP-94)</string>
<string name="upload_server_nostrcheckme_nip94_explainer">Vérifie si Nostrcheck.me a modifié le fichier. Nouveau NIP: certains clients pourraient ne pas le voir</string>
<string name="upload_server_relays_nip95">Vos relais (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">Les fichiers sont hébergés par vos relais. Nouveau NIP: vérifiez s\'ils sont supportés</string>
<string name="connect_via_tor_short">Configuration Tor/Orbot</string>
<string name="connect_via_tor">Se connecter à travers la configuration Orbot</string>
<string name="do_you_really_want_to_disable_tor_title">Se déconnecter de Orbot/Tor?</string>
<string name="do_you_really_want_to_disable_tor_text">Vos données seront immédiatement transférées sur le réseau classique</string>
<string name="yes">Oui</string>
<string name="no">Non</string>
<string name="follow_list_selection">Liste des Abonnés</string>
<string name="follow_list_kind3follows">Tous les abonnements</string>
<string name="follow_list_global">Global</string>
<string name="connect_through_your_orbot_setup_markdown">
## Se connecter à travers Tor avec Orbot
<string name="follow_list_global">Général</string>
<string name="connect_through_your_orbot_setup_markdown"> ## Se connecter à travers Tor avec Orbot
\n\n1. Installe [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android)
\n2. Démarre Orbot
\n3. Dans Orbot, vérifie le port Socks. Par défaut 9050
@@ -372,44 +343,33 @@
<string name="invalid_port_number">Numéro de port invalide</string>
<string name="use_orbot">Utiliser Orbot</string>
<string name="disconnect_from_your_orbot_setup">Déconnecter Tor/Orbot</string>
<string name="app_notification_dms_channel_name">Messages privés</string>
<string name="app_notification_dms_channel_description">Vous notifie lorsqu\'un message privé est reçu</string>
<string name="app_notification_zaps_channel_name">Zaps reçus</string>
<string name="app_notification_zaps_channel_description">Vous notifie lorsque quelqu\'un vous zap</string>
<string name="app_notification_zaps_channel_message">%1$s sats</string>
<string name="app_notification_zaps_channel_message_from">De %1$s</string>
<string name="app_notification_zaps_channel_message_for">pour %1$s</string>
<string name="reply_notify">Notifier: </string>
<string name="channel_list_join_conversation">Rejoindre Conversation</string>
<string name="channel_list_user_or_group_id">Utilisateur ou Groupe ID</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent ou hex</string>
<string name="channel_list_create_channel">Créer</string>
<string name="channel_list_join_channel">Rejoindre</string>
<string name="today">Aujourd\'hui</string>
<string name="content_warning">Avertissement de contenu</string>
<string name="content_warning_explanation">Ce message contient du contenu sensible que certaines personnes peuvent trouver offensant ou dérangeant</string>
<string name="content_warning_hide_all_sensitive_content">Toujours cacher les contenus sensibles</string>
<string name="content_warning_show_all_sensitive_content">Toujours afficher les contenus sensibles</string>
<string name="content_warning_see_warnings">Toujours afficher les avertissements de contenu</string>
<string name="recommended_apps">Recommendations: </string>
<string name="filter_spam_from_strangers">Filtrer le spam des étrangers</string>
<string name="warn_when_posts_have_reports_from_your_follows">Avertir lorsque les messages ont été rapportés par vos abonnés</string>
<string name="new_reaction_symbol">Nouveau symbole de réaction</string>
<string name="no_reaction_type_setup_long_press_to_change">Aucun type de réaction sélectionné. Appuyer longuement pour changer</string>
<string name="zapraiser">Zapraiser</string>
<string name="zapraiser">Collecte de Zaps</string>
<string name="zapraiser_explainer">Ajoute une quantité cible de sats pour ce message. Les clients compatible peuvent afficher une barre de progrès pour encourager les dons</string>
<string name="zapraiser_target_amount_in_sats">Quantité ciblée en Sats</string>
<string name="sats_to_complete">Zapraiser à %1$s. %2$s sats pour objectif</string>
<string name="read_from_relay">Lire depuis le Relay</string>
<string name="write_to_relay">Écrire sur le Relay</string>
@@ -421,10 +381,10 @@
<string name="supports">NIPs supportés</string>
<string name="admission_fees">Frais d\'admission</string>
<string name="payments_url">URL de payments</string>
<string name="limitations">Limitations</string>
<string name="limitations">Limites</string>
<string name="countries">Pays</string>
<string name="languages">Langages</string>
<string name="tags">Tags</string>
<string name="tags">Étiquettes</string>
<string name="posting_policy">Politique de publication</string>
<string name="message_length">Longueur du message</string>
<string name="subscriptions">Abonnements</string>
@@ -440,34 +400,27 @@
<string name="cashu_redeem">Échanger</string>
<string name="no_lightning_address_set">Adresse Lightning non définie</string>
<string name="copied_token_to_clipboard">Jeton copié dans le presse-papiers</string>
<string name="live_stream_live_tag">EN DIRECT</string>
<string name="live_stream_offline_tag">DÉCONNECTÉ</string>
<string name="live_stream_ended_tag">TERMINÉ</string>
<string name="live_stream_planned_tag">PLANIFIÉ</string>
<string name="live_stream_is_offline">Livestream est déconnecté</string>
<string name="live_stream_has_ended">Livestream terminé</string>
<string name="are_you_sure_you_want_to_log_out">Se déconnecter supprime toutes vos informations locales. Assurez-vous d\'avoir vos clés privées sauvegardées pour éviter de perdre votre compte. Voulez-vous continuer ?</string>
<string name="followed_tags">Tags suivis</string>
<string name="relay_setup">Relays</string>
<string name="relay_setup">Relais</string>
<string name="discover_live">Direct</string>
<string name="discover_community">Communauté</string>
<string name="discover_chat">Chats</string>
<string name="discover_chat">Salons</string>
<string name="community_approved_posts">Messages approuvés</string>
<string name="groups_no_descriptor">Ce groupe n\'a pas de description ou de règles. Parlez au propriétaire pour en ajouter une</string>
<string name="community_no_descriptor">Cette communauté n\'a pas de description. Parlez au propriétaire pour en ajouter une</string>
<string name="add_sensitive_content_label">Contenu sensible</string>
<string name="add_sensitive_content_description">Ajouter un avertissement de contenu sensible avant de montrer ce contenu</string>
<string name="settings">Paramètres</string>
<string name="connectivity_type_always">Toujours</string>
<string name="connectivity_type_wifi_only">Wifi uniquement</string>
<string name="connectivity_type_never">Jamais</string>
<string name="system">Système</string>
<string name="light">Clair</string>
<string name="dark">Sombre</string>
@@ -478,61 +431,46 @@
<string name="automatically_play_videos">Lecture vidéo</string>
<string name="automatically_show_url_preview">Prévisualisation des URLs</string>
<string name="load_image">Charger l\'image</string>
<string name="spamming_users">Spammeurs</string>
<string name="muted_button">Silencieux. Cliquer pour réactiver le son</string>
<string name="mute_button">Son activé. Cliquer pour mettre en silencieux</string>
<string name="search_button">Recherche d\'enregistrements locaux et distants</string>
<string name="nip05_verified">L\'adresse Nostr a été vérfiée</string>
<string name="nip05_failed">La vérification de l\'adresse Nostr a échouée</string>
<string name="nip05_checking">Vérification de l\'adresse Nostr</string>
<string name="select_deselect_all">Tout sélectionner/désélectionner</string>
<string name="default_relays">Défaut</string>
<string name="select_a_relay_to_continue">Sélectionner un relay pour continuer</string>
<string name="zap_forward_title">Transférer les Zaps à:</string>
<string name="zap_forward_explainer">Les clients compatibles transmettront des zaps sur l\'adresse LN ou le profil Utilisateur ci-dessous au lieu du vôtre.</string>
<string name="geohash_title">Révéler la localisation comme </string>
<string name="geohash_explainer">Ajoute un Geohash de votre emplacement au message. Le public saura que vous êtes à moins de 5km de l\'emplacement actuel</string>
<string name="add_sensitive_content_explainer">Ajoute un avertissement de contenu sensible avant de montrer votre contenu. C\'est idéal pour tout contenu NSFW ou contenu que certaines personnes peuvent trouver offensant ou dérangeant</string>
<string name="new_feature_nip24_might_not_be_available_title">Nouvelle Fonctionnalité</string>
<string name="new_feature_nip24_might_not_be_available_description">Pour activer ce mode, Amethyst doit envoyer un message NIP-24 (GiftWrapped, Sealed Direct et Group Messages). Le protocole NIP-24 est nouveau et la plupart des clients ne l\'ont pas encore mis en oeuvre. Assurez-vous que le destinataire utilise un client compatible.</string>
<string name="new_feature_nip24_activate">Activer</string>
<string name="messages_create_public_chat">Public</string>
<string name="messages_new_message">Privé</string>
<string name="messages_new_message_to">À</string>
<string name="messages_new_message_subject">Sujet</string>
<string name="messages_new_message_subject_caption">Sujet de la conversation</string>
<string name="messages_new_message_to_caption">"@Utilisateur1, @Utilisateur2, @Utilisateur3"</string>
<string name="messages_new_message_to_caption">"\@Utilisateur1, @Utilisateur2, @Utilisateur3"</string>
<string name="messages_group_descriptor">Membres de ce groupe</string>
<string name="messages_new_subject_message">Explication aux membres</string>
<string name="messages_new_subject_message_placeholder">Changement de nom pour les nouveaux objectifs.</string>
<string name="language_description">Pour l\'interface de l\'App</string>
<string name="theme_description">Sombre, Clair ou thème Système</string>
<string name="automatically_load_images_gifs_description">Charger automatiquement les images et les GIFs</string>
<string name="automatically_play_videos_description">Lire automatiquement les vidéos et les GIFs</string>
<string name="automatically_show_url_preview_description">Afficher la prévisualisation d\'URL</string>
<string name="load_image_description">Quand charger les images</string>
<string name="copy_url_to_clipboard">Copier l\'URL dans le presse-papiers</string>
<string name="copy_the_note_id_to_the_clipboard">Copier l\'ID de la note dans le presse-papiers</string>
<string name="created_at">Créé le</string>
<string name="rules">Règles</string>
<string name="status_update">Mettez à jour votre statut</string>
<string name="lightning_wallets_not_found">Erreur d\'analyse du message d\'erreur</string>
<string name="poll_zap_value_min_max_explainer">Les votes sont pondérés par le montant du zap. Vous pouvez définir un montant minimum pour éviter les spammeurs et un montant maximum pour éviter qu\'un grand nombre de zappeurs ne prenne le contrôle du sondage. Utilisez le même montant dans les deux champs pour vous assurer que chaque vote a la même valeur. Laissez le champ vide pour accepter n\'importe quel montant.</string>
<string name="error_dialog_zap_error">Impossible d\'envoyer un zap</string>
<string name="error_dialog_talk_to_user">Contacter l\'Utilisateur</string>
<string name="error_dialog_button_ok">Ok</string>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="point_to_the_qr_code">Mutass a QR kódra</string>
<string name="show_qr">QR kód megjelenítése</string>
<string name="profile_image">Profil kép</string>
@@ -23,6 +23,7 @@
<string name="copy_note_id">A bejegyzés azonosítójának másolása</string>
<string name="broadcast">Közvetít</string>
<string name="request_deletion">Törlés Kérése</string>
<string name="block_report">Tiltás és Jelentés</string>
<string name="block_hide_user"><![CDATA[Tiltás és Felhasználó elrejtése]]></string>
<string name="report_spam_scam">Spam / Csalás bejelentés</string>
<string name="report_impersonation">Megszemélyesítés bejelentés</string>
@@ -33,6 +34,8 @@
<string name="login_with_a_private_key_to_like_posts">Jelentkezzen be privát kulccsal a bejegyzések kedveléséhez</string>
<string name="no_zap_amount_setup_long_press_to_change">Nincs Zap összeg beállítva. Nyomja meg hosszan a változtatáshoz</string>
<string name="login_with_a_private_key_to_be_able_to_send_zaps">Jelentkezzen be privát kulccsal, hogy Zaps-t küldhessen</string>
<string name="login_with_a_private_key_to_be_able_to_follow">Jelentkezz be a privát kulccsal, hogy követni tudd</string>
<string name="login_with_a_private_key_to_be_able_to_unfollow">Jelentkezz be a privát kulccsal, hogy őt kikövesd</string>
<string name="zaps">Zap-ek</string>
<string name="view_count">Megtekintések száma</string>
<string name="boost">Megosztás</string>
@@ -44,6 +47,8 @@
<string name="and">" és "</string>
<string name="in_channel">"csatornában "</string>
<string name="profile_banner">Profil Banner</string>
<string name="payment_successful">Sikeres fizetés</string>
<string name="error_parsing_error_message">Hiba a hibaüzenet elemzésekor</string>
<string name="following">" Követek"</string>
<string name="followers">" Követők"</string>
<string name="profile">Profil</string>
@@ -162,6 +167,7 @@
<string name="translations_show_in_lang_first">Először %1$s nyelven</string>
<string name="translations_always_translate_to_lang">Mindig fordítsa le %1$s-ra</string>
<string name="translations_never_translate_from_lang">Soha ne fordíts %1$s-ról</string>
<string name="nip_05">Nostr Cím</string>
<string name="never">soha</string>
<string name="now">most</string>
<string name="h">ó</string>
@@ -176,8 +182,7 @@
<string name="mark_all_new_as_read">Az összes új megjelölése olvasottként</string>
<string name="mark_all_as_read">Összes megjelölése olvasottként</string>
<string name="backup_keys">Biztonsági Kulcsok</string>
<string name="account_backup_tips_md">
## Kulcs- és biztonsági mentési tippek
<string name="account_backup_tips_md" tools:ignore="Typos"> ## Kulcs- és biztonsági mentési tippek
\n\nFiókját titkos kulcs védi. A kulcs egy hosszú véletlenszerű karakterlánc, amely **nsec1**-el kezdődik. Bárki, aki az Ön titkos kulcsához hozzáfér, az Ön személyazonosságának használatával bármilyen tartalmat közzétehet.
\n\n- **Ne** helyezze el titkos kulcsát olyan webhelyen vagy szoftverben, amelyben nem bízik.
\n- Az Amethyst fejlesztők a titkos kulcsodat **soha** nem fogják elkérni.
@@ -192,17 +197,9 @@
<string name="new_badge_award_notif">Új Jelvényt kapott</string>
<string name="award_granted_to">Kitüntetésben részesült</string>
<string name="copied_note_text_to_clipboard">Bejegyzés vágólapra helyezve</string>
<string name="copied_user_id_to_clipboard">A szerző @npub-ja vágólapra helyezve</string>
<string name="copied_note_id_to_clipboard">A bejegyzés azonosítója (@note1) vágólapra helyezve</string>
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">A szerző @npub-ja vágólapra helyezve</string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">A bejegyzés azonosítója (@note1) vágólapra helyezve</string>
<string name="select_text_dialog_top">Szöveg Kijelölése</string>
<string name="github" translatable="false">Github Gist w/ Proof</string>
<string name="telegram" translatable="false">Telegram</string>
<string name="mastodon" translatable="false">Mastodon Post ID w/ Proof</string>
<string name="twitter" translatable="false">Twitter Status w/ Proof</string>
<string name="github_proof_url_template" translatable="false">https://gist.github.com/&lt;user&gt;/&lt;gist&gt;</string>
<string name="telegram_proof_url_template" translatable="false">https://t.me/&lt;proof post&gt;</string>
<string name="mastodon_proof_url_template" translatable="false">https://&lt;server&gt;/&lt;user&gt;/&lt;proof post&gt;</string>
<string name="twitter_proof_url_template" translatable="false">https://twitter.com/&lt;user&gt;/status/&lt;proof post&gt;</string>
<string name="private_conversation_notification">"&lt;Nem sikerült a privát üzenetet visszafejteni&gt;\n\nTéged egy privát/titkosított beszélgetésben %1$s és %2$s idéztek."</string>
<string name="account_switch_add_account_dialog_title">Új Fiók Hozzáadása</string>
<string name="drawer_accounts">Fiókok</string>
@@ -245,7 +242,6 @@
<string name="report_dialog_post_report_btn">Jelentés Elküldése</string>
<string name="report_dialog_title">Tiltás és Jelentés</string>
<string name="block_only">Tiltás</string>
<string name="bookmarks">Könyvjelzők</string>
<string name="private_bookmarks">Privát Könyvjelzők</string>
<string name="public_bookmarks">Publikus Könyvjelzők</string>
@@ -253,7 +249,6 @@
<string name="add_to_public_bookmarks">Hozzáadás a Publikus Könyvjelzőimhez</string>
<string name="remove_from_private_bookmarks">Törlés a Privát Könyvjelzőimből</string>
<string name="remove_from_public_bookmarks">Törlés a Publikus Könyvjelzőimből</string>
<string name="wallet_connect_service">Wallet Connect Szolgáltatás</string>
<string name="wallet_connect_service_explainer">Engedélyezed a Nostr Secret-et, hogy az alkalmazás elhagyása nélkül Zap-ot küldjön. Tartsa a titkot biztonságban, és ha lehetséges, privát csomópontot használjon</string>
<string name="wallet_connect_service_pubkey">Wallet Connect Publikus Kulcs</string>
@@ -261,7 +256,6 @@
<string name="wallet_connect_service_secret">Wallet Connect Titok</string>
<string name="wallet_connect_service_show_secret">Titkos Kulcs Megjelenítése</string>
<string name="wallet_connect_service_secret_placeholder">nsec / hex privát kulcs</string>
<string name="pledge_amount_in_sats">Hozzájárulás összege sats-ban</string>
<string name="post_poll">Szavazás Létrehozása</string>
<string name="poll_heading_required">Szükséges mezők:</string>
@@ -270,8 +264,8 @@
<string name="poll_option_index">Szavazás %s megoszlása</string>
<string name="poll_option_description">Szavazás opcióinak leírása</string>
<string name="poll_heading_optional">Kiegészítő mezők:</string>
<string name="poll_zap_value_min">Zap minimum</string>
<string name="poll_zap_value_max">Zap maximum</string>
<string name="poll_zap_value_min">Minimum Zap</string>
<string name="poll_zap_value_max">Maximum Zap</string>
<string name="poll_consensus_threshold">Konszenzus</string>
<string name="poll_consensus_threshold_percent">(0100)%</string>
<string name="poll_closing_time">Szavazás lezárása</string>
@@ -279,134 +273,107 @@
<string name="poll_is_closed">A szavazásra nem lehet már új szavazatot leadni</string>
<string name="poll_zap_amount">Zap összege</string>
<string name="one_vote_per_user_on_atomic_votes">Az ilyen típusú szavazásokon felhasználónként csak egy szavazat engedélyezett</string>
<string name="looking_for_event">"%1$s esemény keresése"</string>
<string name="custom_zaps_add_a_message">Nyilvános üzenet hozzáadása</string>
<string name="custom_zaps_add_a_message_private">Adj hozzá egy privát üzenetet</string>
<string name="custom_zaps_add_a_message_nonzap">A számlához adj hozzá egy üzenetet</string>
<string name="custom_zaps_add_a_message_example">Köszönöm a kemény munkát!</string>
<string name="lightning_create_and_add_invoice">Létrehoz és Hozzáad</string>
<string name="poll_author_no_vote">A szavazás létrehozója sajátjára nem szavazhat.</string>
<string name="poll_hashtag" translatable="false">#zappoll</string>
<string name="hash_verification_passed">A kép a bejegyzés óta ugyanaz</string>
<string name="hash_verification_failed">A kép megváltozott. Lehet, hogy a szerző nem látta a változást</string>
<string name="content_description_add_image">Kép Hozzáadása</string>
<string name="content_description_add_video">Videó Hozzáadása</string>
<string name="content_description_add_document">Dokumentum Hozzáadása</string>
<string name="add_content">Létrehoz és Hozzáad</string>
<string name="content_description">A tartalom leírása</string>
<string name="content_description_example">Naplementekor egy kék csónak egy fehér homokos tengerparton</string>
<string name="zap_type">Zap Típusa</string>
<string name="zap_type_explainer">Zap típus minden opcióhoz</string>
<string name="zap_type_public">Publikus</string>
<string name="zap_type_public_explainer">Mindenki láthatja a tranzakciót és az üzenetet</string>
<string name="zap_type_private">Privát</string>
<string name="zap_type_private_explainer">A küldő és a fogadó láthatja egymást és az üzenetet is elolvashatja</string>
<string name="zap_type_anonymous">Névtelen</string>
<string name="zap_type_anonymous_explainer">A címzett és a nyilvánosság nem tudja ki küldte a fizetést</string>
<string name="zap_type_nonzap">Nem Zap</string>
<string name="zap_type_nonzap_explainer">Nostr-ban nyoma sincs, csak a Lightning-ben</string>
<string name="file_server">Fájl Szerver</string>
<string name="zap_forward_lnAddress">LnCím vagy @Felhasználó</string>
<string name="upload_server_imgur">imgur.com - kevésbé biztonságos</string>
<string name="upload_server_imgur_explainer">Feltöltés az Imgur-ba. Az Imgur a képet/videót bármikor megváltoztathatja</string>
<string name="upload_server_nostrimg">nostrimg.com - kevésbé biztonságos</string>
<string name="upload_server_nostrimg_explainer">Feltöltés a NostrImg-be. A NostrImg a képet bármikor megváltoztathatja</string>
<string name="upload_server_nostrbuild">nostr.build - megbízható</string>
<string name="upload_server_nostrbuild_explainer">A Nostr.build a fájlt módosíthatja</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev - megbízható</string>
<string name="upload_server_nostrfilesdev_explainer">A Nostrfiles.dev a fájlt módosíthatja</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - megbízható</string>
<string name="upload_server_nostrcheckme_explainer">a Nostrcheck.me a fájlt módosíthatja</string>
<string name="upload_server_imgur_nip94">Ellenőrizhető Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Megvéd attól, hogy az Imgur a képet/videót a közzététel után megváltoztassa</string>
<string name="upload_server_nostrimg_nip94">Ellenőrizhető NostrImg (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">Megvéd attól, hogy az NostrImg a képet a közzététel után megváltoztassa</string>
<string name="upload_server_nostrbuild_nip94">Ellenőrizhető Nostr.build (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94_explainer">Ellenőrzi, hogy a Nostr.build a fájlt módosította-e. Új NIP: előfordulhat, hogy más kliensek nem jelenítik meg</string>
<string name="upload_server_nostrfilesdev_nip94">Ellenőrizhető Nostrfiles.dev (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">Ellenőrzi, hogy a Nostrfiles.dev a fájlt módosította-e. Új NIP: előfordulhat, hogy más kliensek nem jelenítik meg</string>
<string name="upload_server_nostrcheckme_nip94">Ellenőrizhető Nostrcheck.me (NIP-94)</string>
<string name="upload_server_nostrcheckme_nip94_explainer">Ellenőrzi, hogy a Nostrcheck.me a fájlt módosította-e. Új NIP: előfordulhat, hogy más kliensek nem jelenítik meg</string>
<string name="upload_server_relays_nip95">Saját csomópontjaid (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">A fájlokat a csomópontokra töltik fel és ott tárolják. Rögzített URL-től mentesek (harmadik féltől való függőség). Győződj meg róla, hogy legalább egy NIP-95 csomópont a csomópontlistában szerepel</string>
<string name="connect_via_tor_short">Tor/Orbot beállítása</string>
<string name="connect_via_tor">Csatlakozás a saját Orbot beállításod alapján</string>
<string name="do_you_really_want_to_disable_tor_title">Lecsatlakozás a saját Orbot/Tor hálózatról?</string>
<string name="do_you_really_want_to_disable_tor_text">Az adataid azonnal a hagyományos hálózaton lesz továbbítva</string>
<string name="yes">Igen</string>
<string name="no">Nem</string>
<string name="follow_list_selection">Követek Lista</string>
<string name="follow_list_kind3follows">Mindenki akit követek</string>
<string name="follow_list_global">Globális</string>
<string name="connect_through_your_orbot_setup_markdown">
## Kapcsolódj a TOR-on keresztül az Orbot segítségével
<string name="connect_through_your_orbot_setup_markdown"> ## Kapcsolódj a TOR-on keresztül az Orbot segítségével
\n\n1. Telepítsd az [Orbot-ot](https://play.google.com/store/apps/details?id=org.torproject.android)
\n2. Indítsd el az Orbot-ot
\n3. Az Orbot-ban ellenőrizd a Socks portokat. Az alapbeállítás 9050
\n4. Ha szükséges az Orbot-ban változtasd meg a portot
\n5. Ezen a felületen állítsd be a Socks portot
\n6. Kattíts az Aktiválás gombra, hogy az Orbot-ot átjátszóként használd
</string>ít
</string>
<string name="orbot_socks_port">Orbot Socks portja</string>
<string name="invalid_port_number">Érvénytelen Port szám</string>
<string name="use_orbot">Használd az Orbot-ot</string>
<string name="disconnect_from_your_orbot_setup">TOR/Orbot Lekapcsolása</string>
<string name="app_notification_channel_id" translatable="false">DefaultChannelID</string>
<string name="app_notification_private_message" translatable="false">New notification arrived</string>
<string name="app_notification_dms_channel_id" translatable="false">PrivateMessagesID</string>
<string name="app_notification_dms_channel_name">Privát üzenetek</string>
<string name="app_notification_dms_channel_description">Értesítést küld, amikor privát üzeneted érkezik</string>
<string name="app_notification_zaps_channel_id" translatable="false">ZapsID</string>
<string name="app_notification_zaps_channel_name">Zap-et kaptál</string>
<string name="app_notification_zaps_channel_description">Értesítést küld, amikor valaki neked Zap-et küldött</string>
<string name="app_notification_zaps_channel_message">%1$s sats</string>
<string name="app_notification_zaps_channel_message_from">%1$s -tól</string>
<string name="app_notification_zaps_channel_message_for">%1$s -ért</string>
<string name="reply_notify">Értesítés: </string>
<string name="channel_list_join_conversation">Csatlakozz a beszélgetéshez</string>
<string name="channel_list_user_or_group_id">Felhasználó vagy Csoport azonosító</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent vagy hex</string>
<string name="channel_list_create_channel">Létrehoz</string>
<string name="channel_list_join_channel">Csatlakozás</string>
<string name="today">Ma</string>
<string name="content_warning">Tartalomra vonatkozó figyelmeztetés</string>
<string name="content_warning_explanation">Ez a bejegyzés érzékeny tartalmat tartalmaz, amelyet egyesek sértőnek vagy zavarónak találhatnak</string>
<string name="content_warning_hide_all_sensitive_content">Az érzékeny tartalmat mindig rejtse el</string>
<string name="content_warning_show_all_sensitive_content">Az érzékeny tartalmat mindig jelenítse meg</string>
<string name="content_warning_see_warnings">A tartalomra vonatkozó figyelmeztetéseket mindig jelenítse meg</string>
<string name="recommended_apps">Ajánlottak: </string>
<string name="filter_spam_from_strangers">Idegenektől SPAM szűrése</string>
<string name="warn_when_posts_have_reports_from_your_follows">Figyelmeztessen ha a bejegyzések azok által akiket követek jelentve vannak</string>
<string name="new_reaction_symbol">Új reakció szimbólum</string>
<string name="no_reaction_type_setup_long_press_to_change">Nincs reakció típus kiválasztva. Nyomd Hosszan a változtatáshoz</string>
<string name="zapraiser">ZapGyűjtés</string>
<string name="zapraiser_explainer">Add meg a cél sats mennyiséget, amit ezzel a posztal el szeretnél érni. Azok a kliensek amik kompatibilisek, egy folyamatjelző csíkot fognak megjeleníteni, hogy adakozásra ösztönözzenek</string>
<string name="zapraiser_target_amount_in_sats">Cél mennyiség sats-ban</string>
<string name="sats_to_complete">A ZapGyűjtés %1$s-nál. %2$s sats kell a célig</string>
<string name="read_from_relay">Olvassás a csomópontból</string>
<string name="write_to_relay">Írás a csomópontra</string>
<string name="an_error_ocurred_trying_to_get_relay_information">Hiba történt a csomópont információ szerzés közben a %1$s -tól</string>
<string name="an_error_occurred_trying_to_get_relay_information">Hiba történt a közvetítő információinak lekérése közben a %1$s -ról</string>
<string name="owner">Tulajdonos</string>
<string name="version">Verzió</string>
<string name="software">Szoftver</string>
@@ -431,32 +398,29 @@
<string name="payment">Fizetés</string>
<string name="cashu">Cashu Token</string>
<string name="cashu_redeem">Beváltás</string>
<string name="no_lightning_address_set">Nincs Lightning Cím beállítva</string>
<string name="copied_token_to_clipboard">Token a vágólapra másolva</string>
<string name="live_stream_live_tag">ÉLŐ</string>
<string name="live_stream_offline_tag">OFFLINE</string>
<string name="live_stream_offline_tag">NINCS ADÁS</string>
<string name="live_stream_ended_tag">VÉGE</string>
<string name="live_stream_planned_tag">ÜTEMEZETT</string>
<string name="live_stream_is_offline">Az élő közvetítés offline</string>
<string name="live_stream_has_ended">Az élő közvetítésnek vége</string>
<string name="are_you_sure_you_want_to_log_out">A Kijelentkezés minden helyben tárolt információt töröl. Bizonyosodj meg róla, hogy a privát kulcsod le van mentve, ezzel elkerülve a fiókod elvesztését. Folytatni akarod?</string>
<string name="followed_tags">Követettek cimkéi</string>
<string name="relay_setup">Csomópontok</string>
<string name="discover_live">Élő</string>
<string name="discover_community">Közösség</string>
<string name="discover_chat">Társalgók</string>
<string name="community_approved_posts">Elfogadott Bejegyzések</string>
<string name="groups_no_descriptor">Ennek a csoportnak nincsen leírása vagy szabályzata. A módosítás miatt, a tulajdonossal egyeztess.</string>
<string name="community_no_descriptor">Ennek a csoportnak nincsen leírása. A módosítás miatt, a tulajdonossal egyeztess.</string>
<string name="add_sensitive_content_label">Érzékeny tartalom</string>
<string name="add_sensitive_content_description">Megjelenítés előtt egy érzékeny tartalom figyelmeztetés jelenik meg.</string>
<string name="settings">Beállítások</string>
<string name="connectivity_type_always">Mindig</string>
<string name="connectivity_type_wifi_only">Csak WIFI</string>
<string name="connectivity_type_never">Soha</string>
<string name="system">Rendszer</string>
<string name="light">Világos</string>
<string name="dark">Sötét</string>
@@ -467,58 +431,47 @@
<string name="automatically_play_videos">Videók automatikus betöltése</string>
<string name="automatically_show_url_preview">Az URL előnézetének automatikus megjelenítése</string>
<string name="load_image">Kép Betöltése</string>
<string name="spamming_users">Spammerek</string>
<string name="muted_button">Lenémítva. Kattínts a feloldásért</string>
<string name="mute_button">Hang bekapcsolva. Kattints a némításért</string>
<string name="search_button">Helyi és távoli adatok keresése</string>
<string name="nip05_verified">A Nostr cím ellenőrzésre került</string>
<string name="nip05_failed">A Nostr cím ellenőrzése sikeretelen</string>
<string name="nip05_checking">A Nostr cím ellenőrzése</string>
<string name="select_deselect_all">Mind kijelölése/kijelölés visszavonása</string>
<string name="default_relays">Alapértelmezett</string>
<string name="select_a_relay_to_continue">A folytatáshoz válassz egy csomópontot</string>
<string name="zap_forward_title">Zap-ek továbbítása:</string>
<string name="zap_forward_explainer">A funkciót támogató kliensek a Zap-eket az Ön tárcája helyett, az alábbi LN-címre vagy felhasználói profilra továbbítják</string>
<string name="geohash_title">A Hely megjelenítése mint </string>
<string name="geohash_explainer">A bejegyzéshez az Ön tartózkodási helyének Geohash-ét hozzáadja. A közönség tudni fogja, hogy az aktuális helytől 5 km-en (3 mérföldön) belül van</string>
<string name="add_sensitive_content_explainer">A kényes tartalom miatt, azon megjelenítése előtt figyelmeztetést ad. Ez ideális minden Felnőtt tartalomhoz vagy olyan tartalomhoz, amelyet egyesek sértőnek vagy zavarónak találhatnak</string>
<string name="new_feature_nip24_might_not_be_available_title">Új funkció</string>
<string name="new_feature_nip24_might_not_be_available_description">Az Amethystnek ennek a módnak az aktiválásához NIP-24 üzenetet kell küldenie (GiftWrapped, Zárolt direkt és csoportos üzeneteket). A NIP-24 új, és a legtöbb kliens még nem implementálta. Győződj meg arról, hogy a fogadó fél kompatibilis klienst használ.</string>
<string name="new_feature_nip24_activate">Aktiválás</string>
<string name="messages_create_public_chat">Publikus</string>
<string name="messages_new_message">Privát</string>
<string name="messages_new_message_to">Címzett</string>
<string name="messages_new_message_subject">Téma</string>
<string name="messages_new_message_subject_caption">A beszélgetés témája</string>
<string name="messages_new_message_to_caption">"@Felhasználó1, @Felhasználó2, @UFelhasználó3"</string>
<string name="messages_new_message_to_caption">"\@Felhasználó1, @Felhasználó2, @UFelhasználó3"</string>
<string name="messages_group_descriptor">A csoport tagjai</string>
<string name="messages_new_subject_message">Magyarázat a csoport tagjainak</string>
<string name="messages_new_subject_message_placeholder">Az új célok érdekében, a név megváltoztatása.</string>
<string name="language_description">Az applikáció felülete</string>
<string name="theme_description">Sötét, Világos vagy Rendszer által használt téma</string>
<string name="automatically_load_images_gifs_description">Képek és GIF-ek automatikus betöltése</string>
<string name="automatically_play_videos_description">A videók és a GIF-ek automatikus lejátszása</string>
<string name="automatically_show_url_preview_description">URL előnézetek megjelenítése</string>
<string name="load_image_description">Mikor kell a képeket betölteni</string>
<string name="copy_url_to_clipboard">Az URL vágólapra másolása</string>
<string name="copy_the_note_id_to_the_clipboard">A bejegyzésazonosító vágólapra másolása</string>
<string name="created_at">Létrehozva</string>
<string name="rules">Szabályok</string>
<string name="status_update">Állapotod változtatása</string>
<string name="lightning_wallets_not_found">Hiba a hibaüzenet elemzésekor</string>
<string name="poll_zap_value_min_max_explainer">A szavazatokat a Zap-ek összegével súlyozzuk. Beállíthatsz egy minimális összeget, hogy a kéretlen leveleket elkerüld, és egy maximális összeget annak elkerülésére, hogy a szavazás feletti irányítást a nagy Zapperek vegyék át. Mindkét mezőben ugyanazt az összeget használd, hogy minden szavazat azonos értéket kapjon. Bármilyen összeg elfogadásához, hagyjd üresen.</string>
<string name="error_dialog_zap_error">Zap küldése nem sikerült</string>
<string name="error_dialog_talk_to_user">Üzenet a Felhasználónak</string>
<string name="error_dialog_button_ok">Ok</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,530 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="point_to_the_qr_code">Arahkan ke Kode QR</string>
<string name="show_qr">Tampilkan QR</string>
<string name="profile_image">Foto Profil</string>
<string name="scan_qr">Pindai QR</string>
<string name="show_anyway">Tampilkan Saja</string>
<string name="post_was_flagged_as_inappropriate_by">Postingan dilaporkan oleh</string>
<string name="post_not_found">Data sedang dimuat atau tidak dapat ditemukan di daftar relai Anda</string>
<string name="channel_image">Gambar Kanal</string>
<string name="referenced_event_not_found">Data yang direferensikan tidak ditemukan</string>
<string name="could_not_decrypt_the_message">Tidak dapat mendeskripsikan pesan</string>
<string name="group_picture">Gambar Grup</string>
<string name="explicit_content">Konten Eksplisit</string>
<string name="spam">Spam</string>
<string name="impersonation">Peniruan/penipuan</string>
<string name="illegal_behavior">Perilaku Ilegal</string>
<string name="unknown">Tidak dikenal</string>
<string name="relay_icon">Ikon Relai</string>
<string name="unknown_author">Penulis Tidak Dikenal</string>
<string name="copy_text">Salin Teks</string>
<string name="copy_user_pubkey">Salin ID Penulis (Author ID)</string>
<string name="copy_note_id">Salin ID Tulisan (Note ID)</string>
<string name="broadcast">Siarkan</string>
<string name="request_deletion">Minta Penghapusan</string>
<string name="block_report">Blokir / Laporkan</string>
<string name="block_hide_user"><![CDATA[Blokir & Sembunyikan Pengguna]]></string>
<string name="report_spam_scam">Laporkan Spam / Penipuan</string>
<string name="report_impersonation">Laporkan Peniruan</string>
<string name="report_explicit_content">Laporkan Konten Eksplisit</string>
<string name="report_illegal_behaviour">Laporkan Perilaku Ilegal</string>
<string name="login_with_a_private_key_to_be_able_to_reply">Masuk dengan Kunci pribadi (nsec) untuk dapat membalas tulisan</string>
<string name="login_with_a_private_key_to_be_able_to_boost_posts">Masuk dengan Kunci pribadi (nsec) untuk dapat mempromosikan tulisan</string>
<string name="login_with_a_private_key_to_like_posts">Masuk dengan Kunci pribadi (nsec) untuk dapat menyukai tulisan</string>
<string name="no_zap_amount_setup_long_press_to_change">Tidak Ada Pengaturan Jumlah Zap. Tekan dan tahan tombol untuk mengubah</string>
<string name="login_with_a_private_key_to_be_able_to_send_zaps">Masuk dengan Kunci pribadi (nsec) untuk dapat mengirim Zaps</string>
<string name="login_with_a_private_key_to_be_able_to_follow">Masuk dengan Kunci pribadi (nsec) untuk dapat mengikuti</string>
<string name="login_with_a_private_key_to_be_able_to_unfollow">Masuk dengan Kunci pribadi (nsec) untuk berhenti mengikuti</string>
<string name="zaps">Zaps</string>
<string name="view_count">Jumlah pengamat</string>
<string name="boost">Promosi</string>
<string name="boosted">dipromosikan</string>
<string name="quote">Kutipan</string>
<string name="new_amount_in_sats">Jumlah Baru dalam Sats</string>
<string name="add">Tambah</string>
<string name="replying_to">"membalas kepada "</string>
<string name="and">" dan "</string>
<string name="in_channel">dalam kanal</string>
<string name="profile_banner">Spanduk Profil</string>
<string name="payment_successful">Pembayaran Berhasil</string>
<string name="error_parsing_error_message">Gagal menguraikan pesan kesalahan</string>
<string name="following">" Mengikuti"</string>
<string name="followers">" Pengikut"</string>
<string name="profile">Profil</string>
<string name="security_filters">Filter Keamanan</string>
<string name="log_out">Keluar</string>
<string name="show_more">Tampilkan lebih banyak</string>
<string name="lightning_invoice">Faktur Tagihan Lightning</string>
<string name="pay">Bayar</string>
<string name="lightning_tips">Lightning Tip</string>
<string name="note_to_receiver">Catatan ke Penerima</string>
<string name="thank_you_so_much">Terima kasih banyak!</string>
<string name="amount_in_sats">Jumlah dalam Sats</string>
<string name="send_sats">Kirim Sats</string>
<string name="error_parsing_preview_for">Gagal menampilkan pratinjau untuk %1$s : %2$s</string>
<string name="preview_card_image_for">Pratinjau Gambar Kartu untuk %1$s</string>
<string name="new_channel">Kanal Baru</string>
<string name="channel_name">Nama Kanal</string>
<string name="my_awesome_group">Grupku yang Hebat</string>
<string name="picture_url">Alamat Url Gambar</string>
<string name="description">Deskripsi</string>
<string name="about_us">"Tentang kami.. "</string>
<string name="what_s_on_your_mind">Apa yang anda pikirkan?</string>
<string name="post">Kirim</string>
<string name="save">Simpan</string>
<string name="create">Buat</string>
<string name="cancel">Batal</string>
<string name="failed_to_upload_the_image">Gagal mengunggah gambar</string>
<string name="relay_address">Alamat Relai</string>
<string name="posts">Kiriman</string>
<string name="bytes">Bytes</string>
<string name="errors">Errors</string>
<string name="home_feed">Beranda</string>
<string name="private_message_feed">Area Pesan Pribadi</string>
<string name="public_chat_feed">Area Percakapan Publik</string>
<string name="global_feed">Area Global</string>
<string name="search_feed">Area Pencarian</string>
<string name="add_a_relay">Tambah Relai</string>
<string name="display_name">Nama ditampilkan</string>
<string name="my_display_name">Namaku yg ditampilkan</string>
<string name="username">Nama pengguna</string>
<string name="my_username">Nama penggunaku</string>
<string name="about_me">Tentang saya</string>
<string name="avatar_url">URL Avatar</string>
<string name="banner_url">"URL Spanduk/Banner "</string>
<string name="website_url">URL Situs Web</string>
<string name="ln_address">Alamat LN</string>
<string name="ln_url_outdated">LN URL (versi lama)</string>
<string name="image_saved_to_the_gallery">Gambar disimpan ke galeri</string>
<string name="failed_to_save_the_image">Gagal menyimpan gambar</string>
<string name="upload_image">Unggah Gambar</string>
<string name="uploading">Mengunggah…</string>
<string name="user_does_not_have_a_lightning_address_setup_to_receive_sats">Pengguna tidak memiliki alamat lightning (LN) yang diatur untuk menerima sats</string>
<string name="reply_here">"balas di sini.. "</string>
<string name="copies_the_note_id_to_the_clipboard_for_sharing">Menyalin ID Catatan ke papan klip untuk dibagikan di Nostr</string>
<string name="copy_channel_id_note_to_the_clipboard">Salin ID Kanal (Catatan) ke Papan Klip</string>
<string name="edits_the_channel_metadata">Ubah Metadata Kanal</string>
<string name="join">Gabung</string>
<string name="known">Dikenali</string>
<string name="new_requests">Permintaan Baru</string>
<string name="blocked_users">Pengguna diblokir</string>
<string name="new_threads">Utas Baru</string>
<string name="conversations">Percakapan</string>
<string name="notes">Catatan</string>
<string name="replies">Balasan</string>
<string name="follows">Mengikuti</string>
<string name="reports">Laporan</string>
<string name="more_options">Lebih banyak pilihan</string>
<string name="relays">" Relai"</string>
<string name="website">Situs Web</string>
<string name="lightning_address">Alamat Lightning</string>
<string name="copies_the_nsec_id_your_password_to_the_clipboard_for_backup">Salin Nsec ID (kata sandi anda) ke papan klip sebagai cadangan</string>
<string name="copy_private_key_to_the_clipboard">Salin Kunci Privat ke papan klip</string>
<string name="copies_the_public_key_to_the_clipboard_for_sharing">Salin Kunci Publik ke papan klip untuk dibagikan</string>
<string name="copy_public_key_npub_to_the_clipboard">Salin Kunci Publik (NPub) ke papan klip</string>
<string name="send_a_direct_message">Kirim Pesan Langsung</string>
<string name="edits_the_user_s_metadata">Ubah Metadata Pengguna</string>
<string name="follow">Ikuti</string>
<string name="follow_back">Ikuti balik</string>
<string name="unblock">Batalkan blokir</string>
<string name="copy_user_id">Salin ID Pengguna</string>
<string name="unblock_user">Batalkan blokir pengguna</string>
<string name="npub_hex_username">npub, nama pengguna, teks</string>
<string name="clear">Bersihkan</string>
<string name="app_logo">Logo Aplikasi</string>
<string name="nsec_npub_hex_private_key">nsec.. or npub..</string>
<string name="show_password">Tampilkan Kata Sandi</string>
<string name="hide_password">Sembunyikan Kata Sandi</string>
<string name="invalid_key">Kunci tidak sah</string>
<string name="i_accept_the">Saya menerima</string>
<string name="terms_of_use">syarat penggunaan</string>
<string name="acceptance_of_terms_is_required">Penerimaan persyaratan diperlukan</string>
<string name="key_is_required">Kunci diperlukan</string>
<string name="login">Masuk</string>
<string name="generate_a_new_key">Buat kunci baru</string>
<string name="loading_feed">Memuat data umpan</string>
<string name="error_loading_replies">"Gagal memuat balasan: "</string>
<string name="try_again">Coba lagi</string>
<string name="feed_is_empty">Data umpan kosong.</string>
<string name="refresh">Perbarui</string>
<string name="created">dibuat</string>
<string name="with_description_of">"dengan deskripsi "</string>
<string name="and_picture">dan gambar</string>
<string name="changed_chat_name_to">mengubah nama percakapan menjadi</string>
<string name="description_to">deskripsi untuk</string>
<string name="and_picture_to">dan gambar untuk</string>
<string name="leave">Tinggalkan</string>
<string name="unfollow">Berhenti mengikuti</string>
<string name="channel_created">Kanal dibuat</string>
<string name="channel_information_changed_to">Informasi kanal diubah menjadi</string>
<string name="public_chat">Percakapan Publik</string>
<string name="posts_received">kiriman diterima</string>
<string name="remove">Hapus</string>
<string name="translations_auto">Otomatis</string>
<string name="translations_translated_from">diterjemahkan dari</string>
<string name="translations_to">ke</string>
<string name="translations_show_in_lang_first">Tampilkan dalam %1$s (prioritas)</string>
<string name="translations_always_translate_to_lang">Selalu terjemahkan ke %1$s</string>
<string name="translations_never_translate_from_lang">Jangan terjemahkan dari %1$s</string>
<string name="nip_05">Alamat Nostr</string>
<string name="never">tidak pernah</string>
<string name="now">sekarang</string>
<string name="h">jam</string>
<string name="m">menit</string>
<string name="d">hari</string>
<string name="nudity">Ketelanjangan</string>
<string name="profanity_hateful_speech">Ujaran kotor/kebencian</string>
<string name="report_hateful_speech">Laporkan ujaran kebencian</string>
<string name="report_nudity_porn">Laporkan Ketelanjangan / Pornografi</string>
<string name="others">lainnya</string>
<string name="mark_all_known_as_read">Tandai semua yg dikenal telah dibaca</string>
<string name="mark_all_new_as_read">Tandai pesan baru telah dibaca</string>
<string name="mark_all_as_read">Tandai semua telah dibaca</string>
<string name="backup_keys">Cadangkan Kunci</string>
<string name="account_backup_tips_md" tools:ignore="Typos">"\n ## Tip Pencadangan dan Keamanan Utama\n \n\nAkun Anda diamankan dengan kunci rahasia. Kuncinya adalah string acak panjang yang dimulai dengan **nsec1**.. Siapa pun yang memiliki akses ke kunci rahasia Anda dapat mempublikasikan konten menggunakan identitas Anda.\n \n\n- **Jangan** letakkan kunci rahasia Anda di situs web atau perangkat lunak apa pun yang tidak Anda percayai.\n \n- Pengembang Aplikasi Amethyst **tidak akan pernah** meminta kunci rahasia Anda.\n \n- **Pastikan** simpan cadangan aman kunci rahasia Anda untuk pemulihan akun. Kami merekomendasikan menggunakan aplikasi khusus pengelola kata sandi.\n "</string>
<string name="secret_key_copied_to_clipboard">Kunci rahasia (nsec) disalin ke clipboard</string>
<string name="copy_my_secret_key">Salin kunci rahasia saya</string>
<string name="biometric_authentication_failed">Autentikasi gagal</string>
<string name="biometric_error">Kesalahan</string>
<string name="badge_created_by">Dibuat oleh %1$s</string>
<string name="badge_award_image_for">Gambar penghargaan lencana untuk %1$s</string>
<string name="new_badge_award_notif">Anda Menerima Penghargaan Lencana baru</string>
<string name="award_granted_to">Penghargaan lencana diberikan kepada</string>
<string name="copied_note_text_to_clipboard">Teks catatan disalin ke papan klip</string>
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">\@npub Penulis disalin ke papan klip</string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">Note ID (@note1) disalin ke papan klip</string>
<string name="select_text_dialog_top">Pilih Teks</string>
<string name="private_conversation_notification">&lt;Gagal mendeskripsikan pesan pribadi&gt;\n\nAnda dikutip dalam percakapan pribadi/terenkripsi antara %1$s dan %2$s.</string>
<string name="account_switch_add_account_dialog_title">Tambah Akun Baru</string>
<string name="drawer_accounts">Akun</string>
<string name="account_switch_select_account">Pilih Akun</string>
<string name="account_switch_add_account_btn">Tambah Akun Baru</string>
<string name="account_switch_active_account">Akun Aktif</string>
<string name="account_switch_has_private_key">Memiliki kunci pribadi</string>
<string name="account_switch_pubkey_only">Baca saja, tidak ada kunci pribadi</string>
<string name="back">Kembali</string>
<string name="quick_action_select">Pilih</string>
<string name="quick_action_share_browser_link">Bagikan Tauatan ke Peramban</string>
<string name="quick_action_share">Bagikan</string>
<string name="quick_action_copy_user_id">ID Penulis</string>
<string name="quick_action_copy_note_id">ID Catatan</string>
<string name="quick_action_copy_text">Salin Teks</string>
<string name="quick_action_delete">Hapus</string>
<string name="quick_action_unfollow">Berhenti mengikuti</string>
<string name="quick_action_follow">Ikuti</string>
<string name="quick_action_request_deletion_alert_title">Meminta Penghapusan</string>
<string name="quick_action_request_deletion_alert_body">Amethyst akan meminta agar catatan Anda dihapus dari relai yang saat ini Anda sambungkan. Tidak ada jaminan bahwa catatan Anda akan dihapus secara permanen dari relai tersebut, atau dari relai lain tempat catatan itu disimpan.</string>
<string name="quick_action_block_dialog_btn">Blokir</string>
<string name="quick_action_delete_dialog_btn">Hapus</string>
<string name="quick_action_block">Blokir</string>
<string name="quick_action_report">Laporkan</string>
<string name="quick_action_delete_button">Hapus</string>
<string name="quick_action_dont_show_again_button">Jangan tampilkan lagi</string>
<string name="report_dialog_spam">Spam atau penipuan</string>
<string name="report_dialog_profanity">Perilaku tidak senonoh atau penuh kebencian</string>
<string name="report_dialog_impersonation">Peniruan identitas yang berbahaya</string>
<string name="report_dialog_nudity">Konten ketelanjangan atau grafis</string>
<string name="report_dialog_illegal">Perilaku Ilegal</string>
<string name="report_dialog_blocking_a_user">Memblokir pengguna akan menyembunyikan konten mereka di aplikasi Anda. Catatan Anda masih dapat dilihat oleh publik, termasuk oleh orang yang Anda blokir. Pengguna yang diblokir terdaftar di layar Filter Keamanan.</string>
<string name="report_dialog_block_hide_user_btn"><![CDATA[Blokir & Sembuniykan Pengguna]]></string>
<string name="report_dialog_report_btn">Laporkan Penyalahgunaan</string>
<string name="report_dialog_reminder_public">Semua laporan yang diposting akan terlihat oleh publik.</string>
<string name="report_dialog_additional_reason_placeholder">Secara opsional, berikan konteks tambahan tentang laporan Anda…</string>
<string name="report_dialog_additional_reason_label">Konteks Tambahan</string>
<string name="report_dialog_select_reason_label">Alasan</string>
<string name="report_dialog_select_reason_placeholder">Pilih alasan…</string>
<string name="report_dialog_post_report_btn">Kirim Laporan</string>
<string name="report_dialog_title">Blokir dan Laporkan</string>
<string name="block_only">Blokir</string>
<string name="bookmarks">Penanda</string>
<string name="private_bookmarks">Penanda Pribadi</string>
<string name="public_bookmarks">Penanda Publik</string>
<string name="add_to_private_bookmarks">Tambahkan Penanda Pribadi</string>
<string name="add_to_public_bookmarks">Tambahkan Penanda Publik</string>
<string name="remove_from_private_bookmarks">Hapus dari Penanda Pribadi</string>
<string name="remove_from_public_bookmarks">Hapus dari Penanda Publik</string>
<string name="wallet_connect_service">Layanan Wallet Connect</string>
<string name="wallet_connect_service_explainer">Mengijinkan Kunci Rahasia Nostr untuk membayar zaps tanpa meninggalkan aplikasi. Jaga kunci tetap aman dan gunakan relai pribadi jika memungkinkan</string>
<string name="wallet_connect_service_pubkey">Kunci Publik Wallet Connect</string>
<string name="wallet_connect_service_relay">Relai Wallet Connect</string>
<string name="wallet_connect_service_secret">Kunci Rahasia Wallet Connect</string>
<string name="wallet_connect_service_show_secret">Tampilkan kunci rahasia</string>
<string name="wallet_connect_service_secret_placeholder">nsec / hex (kunci pribadi)</string>
<string name="pledge_amount_in_sats">Jumlah Dijanjikan dalam Sats</string>
<string name="post_poll">Kirim Pemungutan Suara</string>
<string name="poll_heading_required">Bidang yang wajib diisi:</string>
<string name="poll_zap_recipients">Penerima Zap</string>
<string name="poll_primary_description">Deskripsi Utama Pemungutan Suara…</string>
<string name="poll_option_index">Pilihan %s</string>
<string name="poll_option_description">Deskripsi pilihan pemungutan suara</string>
<string name="poll_heading_optional">Bidang pilihan (tidak wajib):</string>
<string name="poll_zap_value_min">Zap terendah</string>
<string name="poll_zap_value_max">Zap tertinggi</string>
<string name="poll_consensus_threshold">Konsensus</string>
<string name="poll_consensus_threshold_percent">(0100)%</string>
<string name="poll_closing_time">Berakhir pada</string>
<string name="poll_closing_time_days">hari</string>
<string name="poll_is_closed">Pemungutan suara ditutup untuk voting baru</string>
<string name="poll_zap_amount">Jumlah Zap</string>
<string name="one_vote_per_user_on_atomic_votes">Hanya satu suara per pengguna yang diperbolehkan pada jenis pemungutan suara ini</string>
<string name="looking_for_event">Mencari data event %1$s</string>
<string name="custom_zaps_add_a_message">Tambah pesan publik</string>
<string name="custom_zaps_add_a_message_private">Tambah pesan pribadi</string>
<string name="custom_zaps_add_a_message_nonzap">Tambah pesan faktur tagihan</string>
<string name="custom_zaps_add_a_message_example">Terima kasih atas semua pekerjaan Anda!</string>
<string name="lightning_create_and_add_invoice">Buat dan Tambah</string>
<string name="poll_author_no_vote">Pembuat Pemungutan Suara tidak dapat memberikan suara dalam pemungutan suara sendiri.</string>
<string name="hash_verification_passed">Konten ini sama sejak kiriman tersebut dibuat</string>
<string name="hash_verification_failed">Konten ini telah berubah. Penulis mungkin tidak melihat atau menyetujui perubahan tersebut</string>
<string name="content_description_add_image">Tambah Gambar</string>
<string name="content_description_add_video">Tambah Video</string>
<string name="content_description_add_document">Tambah Dokumen</string>
<string name="add_content">Tambahkan ke Pesan</string>
<string name="content_description">Deskripsi Konten</string>
<string name="content_description_example">Perahu berwarna biru di pantai berpasir putih saat matahari terbenam</string>
<string name="zap_type">Tipe Zap</string>
<string name="zap_type_explainer">Tipe Zap untuk semua pilihan</string>
<string name="zap_type_public">Publik</string>
<string name="zap_type_public_explainer">Semua orang dapat melihat transaksi dan pesannya</string>
<string name="zap_type_private">Pribadi</string>
<string name="zap_type_private_explainer">Pengirim dan Penerima dapat saling melihat dan membaca pesan</string>
<string name="zap_type_anonymous">Anonim</string>
<string name="zap_type_anonymous_explainer">Penerima dan semua orang tidak dapat mengetahui siapa pengirim pembayaran</string>
<string name="zap_type_nonzap">Bukan Zap</string>
<string name="zap_type_nonzap_explainer">Tidak ada jejak di Nostr, hanya di Lightning Network</string>
<string name="file_server">Server Berkas</string>
<string name="zap_forward_lnAddress">Alamat LN atau @Pengguna</string>
<string name="upload_server_imgur">imgur.com - terpercaya</string>
<string name="upload_server_imgur_explainer">Imgur dapat memodifikasi berkas</string>
<string name="upload_server_nostrimg">nostrimg.com - terpercaya</string>
<string name="upload_server_nostrimg_explainer">NostrImg dapat memodifikasi berkas</string>
<string name="upload_server_nostrbuild">nostr.build - terpercaya</string>
<string name="upload_server_nostrbuild_explainer">Nostr.build dapat memodifikasi berkas</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev - terpercaya</string>
<string name="upload_server_nostrfilesdev_explainer">Nostrfiles.dev dapat memodifikasi berkas</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - terpercaya</string>
<string name="upload_server_nostrcheckme_explainer">nostrcheck.me dapat memodifikasi berkas</string>
<string name="upload_server_imgur_nip94">Imgur yg dapat diverifikasi (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Periksa jika Imgur mengubah berkas. NIP baru: aplikasi Nostr lain mungkin belum mendukung</string>
<string name="upload_server_nostrimg_nip94">NostrImg yg dapat diverifikasi (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">Periksa jika NostrImg mengubah berkas. NIP baru: aplikasi Nostr lain mungkin belum mendukung</string>
<string name="upload_server_nostrbuild_nip94">Nostr.build yg dapat diverifikasi (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94_explainer">Periksa jika Nostr.build mengubah berkas. NIP baru: aplikasi Nostr lain mungkin belum mendukung</string>
<string name="upload_server_nostrfilesdev_nip94">Nostrfiles.dev yg dapat diverifikasi (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">Periksa jika Nostrfiles.dev mengubah berkas. NIP baru: aplikasi Nostr lain mungkin belum mendukung</string>
<string name="upload_server_nostrcheckme_nip94">Nostrcheck.me yg dapat diverifikasi (NIP-94)</string>
<string name="upload_server_nostrcheckme_nip94_explainer">Periksa jika Nostrcheck.me mengubah berkas. NIP baru: aplikasi Nostr lain mungkin belum mendukung</string>
<string name="upload_server_relays_nip95">Relai anda (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">Berkas disimpan di relai anda. NIP baru: periksa apakah relai mendukung fitur</string>
<string name="connect_via_tor_short">Pengaturan Tor/Orbot</string>
<string name="connect_via_tor">Hubungkan melalui pengaturan Orbot Anda</string>
<string name="do_you_really_want_to_disable_tor_title">Putuskan sambungan dari Orbot/Tor Anda?</string>
<string name="do_you_really_want_to_disable_tor_text">Data Anda akan segera ditransfer di jaringan reguler (bukan TOR)</string>
<string name="yes">Ya</string>
<string name="no">Tidak</string>
<string name="follow_list_selection">Daftar yang Diikuti</string>
<string name="follow_list_kind3follows">Semua yang diikuti</string>
<string name="follow_list_global">Global</string>
<string name="connect_through_your_orbot_setup_markdown">"\n ## Terhubung melalui Tor menggunakan Orbot\n \n\n1. Pasang [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android)\n \n2. Jalankan Orbot\n \n3. Di dalam Orbot, periksa nomor port Socks. Secara bawaan menggunakan nomor 9050\n \n4. Jika diperlukan, ubah nomor port Orbot\n \n5. Atur nomor port Socks pada layar ini\n \n6. Tekan tombol Aktifkan untuk menggunakan Orbot sebagai proxy\n "</string>
<string name="orbot_socks_port">Port Orbot Socks</string>
<string name="invalid_port_number">Nomor port tidak sah</string>
<string name="use_orbot">Gunakan Orbot</string>
<string name="disconnect_from_your_orbot_setup">Putuskan Tor/Orbot</string>
<string name="app_notification_dms_channel_name">Pesan Pribadi</string>
<string name="app_notification_dms_channel_description">Memberi tahu Anda ketika pesan pribadi tiba</string>
<string name="app_notification_zaps_channel_name">Zaps diterima</string>
<string name="app_notification_zaps_channel_description">Memberi tahu Anda ketika seseorang mengirimkan anda zap</string>
<string name="app_notification_zaps_channel_message">%1$s sats</string>
<string name="app_notification_zaps_channel_message_from">Dari %1$s</string>
<string name="app_notification_zaps_channel_message_for">untuk %1$s</string>
<string name="reply_notify">"Beritahu: "</string>
<string name="channel_list_join_conversation">Gabung Percakapan</string>
<string name="channel_list_user_or_group_id">ID Pengguna atau Grup</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent atau kode heksa</string>
<string name="channel_list_create_channel">Buat</string>
<string name="channel_list_join_channel">Gabung</string>
<string name="today">Hari ini</string>
<string name="content_warning">Peringatan konten</string>
<string name="content_warning_explanation">Postingan ini berisi konten sensitif yang mungkin dianggap menyinggung atau mengganggu oleh sebagian orang</string>
<string name="content_warning_hide_all_sensitive_content">Selalu sembunyikan konten sensitif</string>
<string name="content_warning_show_all_sensitive_content">Selalu tampilkan konten sensitif</string>
<string name="content_warning_see_warnings">Selalu tampilkan peringatan konten</string>
<string name="recommended_apps">"Rekomendasi: "</string>
<string name="filter_spam_from_strangers">Saring spam dari orang asing (tak diikuti)</string>
<string name="warn_when_posts_have_reports_from_your_follows">Peringatkan ketika kiriman memiliki laporan dari pengikut Anda</string>
<string name="new_reaction_symbol">Simbol Reaksi Baru</string>
<string name="no_reaction_type_setup_long_press_to_change">Tidak ada jenis reaksi yang dipilih. Tekan dan tahan untuk mengubah</string>
<string name="zapraiser">Galang Dana Zap</string>
<string name="zapraiser_explainer">Menambahkan jumlah target sats yang ingin dikumpulkan untuk kiriman ini. Klien yang mendukung mungkin menunjukkan hal ini sebagai indikator kemajuan dalam memberi insentif pada donasi</string>
<string name="zapraiser_target_amount_in_sats">Jumlah Target dalam Sats</string>
<string name="sats_to_complete">Galang Dana Zap mencapai %1$s. %2$s sats untuk memenuhi target</string>
<string name="read_from_relay">Baca dari Relai</string>
<string name="write_to_relay">Tulis ke Relai</string>
<string name="an_error_occurred_trying_to_get_relay_information">Terjadi kesalahan saat mencoba mendapatkan informasi relai %1$s</string>
<string name="owner">Pemilik</string>
<string name="version">Versi</string>
<string name="software">Perangkat Lunak</string>
<string name="contact">Kontak</string>
<string name="supports">NIP yg didukung</string>
<string name="admission_fees">Biaya Pendaftaran</string>
<string name="payments_url">Alamat Pembayaran</string>
<string name="limitations">Batasan</string>
<string name="countries">Negara</string>
<string name="languages">Bahasa</string>
<string name="tags">Tags</string>
<string name="posting_policy">Kebijakan kiriman</string>
<string name="message_length">Panjang pesan</string>
<string name="subscriptions">Langganan</string>
<string name="filters">Penyaringan</string>
<string name="subscription_id_length">Panjang ID Subscription</string>
<string name="minimum_prefix">Awalan minimal</string>
<string name="maximum_event_tags">Jumlah Tags maksimum</string>
<string name="content_length">Panjang konten</string>
<string name="minimum_pow">PoW terendah</string>
<string name="auth">Autentikasi</string>
<string name="payment">Pembayaran</string>
<string name="cashu">Token Cashu</string>
<string name="cashu_redeem">Tukarkan</string>
<string name="no_lightning_address_set">Tidak ada alamat Lightning yang diatur</string>
<string name="copied_token_to_clipboard">Token disalin ke papan klip</string>
<string name="live_stream_live_tag">DARING (ON)</string>
<string name="live_stream_offline_tag">LURING (OFF)</string>
<string name="live_stream_ended_tag">BERAKHIR</string>
<string name="live_stream_planned_tag">DIJADWALKAN</string>
<string name="live_stream_is_offline">Siaran langsung sedang luring</string>
<string name="live_stream_has_ended">Siaran langsung berakhir</string>
<string name="are_you_sure_you_want_to_log_out">Keluar akan menghapus semua informasi lokal Anda. Pastikan kunci pribadi Anda dicadangkan untuk menghindari kehilangan akun Anda. Apakah Anda ingin melanjutkan?</string>
<string name="followed_tags">Tags yg diikuti</string>
<string name="relay_setup">Relai</string>
<string name="discover_live">Siaran Langsung</string>
<string name="discover_community">Komunitas</string>
<string name="discover_chat">Percakapan</string>
<string name="community_approved_posts">Kiriman yg disetujui</string>
<string name="groups_no_descriptor">Grup ini tidak memiliki deskripsi atau aturan. Bicaralah dengan pemiliknya untuk menambahkannya</string>
<string name="community_no_descriptor">Komunitas ini tidak memiliki deskripsi. Bicaralah dengan pemiliknya untuk menambahkannya</string>
<string name="add_sensitive_content_label">Konten Sensitif</string>
<string name="add_sensitive_content_description">Menambahkan peringatan konten sensitif sebelum menampilkan konten ini</string>
<string name="settings">Pengaturan</string>
<string name="connectivity_type_always">Selalu</string>
<string name="connectivity_type_wifi_only">Hanya Wifi</string>
<string name="connectivity_type_never">Tidak Pernah</string>
<string name="system">Sistem</string>
<string name="light">Terang</string>
<string name="dark">Gelap</string>
<string name="application_preferences">Pengaturan Aplikasi</string>
<string name="language">Bahasa</string>
<string name="theme">Tema</string>
<string name="automatically_load_images_gifs">Pratinjau Gambar</string>
<string name="automatically_play_videos">Pemutaran Video</string>
<string name="automatically_show_url_preview">Pratinjau URL</string>
<string name="load_image">Muat Gambar</string>
<string name="spamming_users">Pengirim Spam</string>
<string name="muted_button">Diredam. Klik untuk bersuara</string>
<string name="mute_button">Bersuara. Kilik untuk meredam</string>
<string name="search_button">Cari catatan lokal dan jarak jauh</string>
<string name="nip05_verified">Alamat Nostr diverifikasi</string>
<string name="nip05_failed">Alamat Nostr gagal diverifikasi</string>
<string name="nip05_checking">Memeriksa Alamat Nostr</string>
<string name="select_deselect_all">Pilih / Hapus Semua</string>
<string name="default_relays">Bawaan</string>
<string name="select_a_relay_to_continue">Pilih Relai untuk melanjutkan</string>
<string name="zap_forward_title">Teruskan Zaps ke:</string>
<string name="zap_forward_explainer">Klien yg mendukung akan meneruskan zaps ke Alamat LN atau Profil Pengguna di bawah ini, bukan ke alamat LN Anda</string>
<string name="geohash_title">Paparkan Lokasi sebagai</string>
<string name="geohash_explainer">Menambahkan Geohash lokasi Anda ke postingan. Publik akan mengetahui bahwa Anda berada dalam jarak 5 km (3 mil) dari lokasi saat ini</string>
<string name="add_sensitive_content_explainer">Menambahkan peringatan konten sensitif sebelum menampilkan konten Anda. Ini ideal untuk konten NSFW apa pun atau konten yang mungkin dianggap menyinggung atau mengganggu oleh sebagian orang</string>
<string name="new_feature_nip24_might_not_be_available_title">Fitur Baru</string>
<string name="new_feature_nip24_might_not_be_available_description">Mengaktifkan mode ini mengharuskan Amethyst mengirim pesan NIP-24 (GiftWrapped, Sealed Direct, dan Group Messages). NIP-24 masih baru dan sebagian besar klien belum menerapkannya. Pastikan penerima menggunakan klien yang kompatibel.</string>
<string name="new_feature_nip24_activate">Aktifkan</string>
<string name="messages_create_public_chat">Publik</string>
<string name="messages_new_message">Pribadi</string>
<string name="messages_new_message_to">Ke</string>
<string name="messages_new_message_subject">Subjek</string>
<string name="messages_new_message_subject_caption">Topik percakapan</string>
<string name="messages_new_message_to_caption">\@Pengguna1, @Pengguna2, @Pengguna3</string>
<string name="messages_group_descriptor">Anggota grup ini</string>
<string name="messages_new_subject_message">Penjelasan kepada anggota</string>
<string name="messages_new_subject_message_placeholder">Mengubah nama untuk tujuan baru.</string>
<string name="language_description">Untuk Antarmuka Aplikasi</string>
<string name="theme_description">Tema Gelap, Terang, atau Sistem</string>
<string name="automatically_load_images_gifs_description">Memuat gambar dan GIF secara otomatis</string>
<string name="automatically_play_videos_description">Memutar video dan GIF secara otomatis</string>
<string name="automatically_show_url_preview_description">Tampilkan pratinjau URL</string>
<string name="load_image_description">Kapan memuat gambar</string>
<string name="copy_url_to_clipboard">Salin URL ke papan klip</string>
<string name="copy_the_note_id_to_the_clipboard">Salin ID Catatan ke papan klip</string>
<string name="created_at">Dibuat pada</string>
<string name="rules">Aturan</string>
<string name="status_update">Perbaharui statusmu</string>
<string name="lightning_wallets_not_found">Kesalahan menguraikan pesan kesalahan</string>
<string name="poll_zap_value_min_max_explainer">Suara ditimbang berdasarkan jumlah zap. Anda dapat menetapkan jumlah minimum untuk menghindari pembuat spam dan jumlah maksimum untuk menghindari pengirim zap besar mengambil alih pemungutan suara. Gunakan jumlah yang sama di kedua kolom untuk memastikan setiap suara bernilai sama. Biarkan kosong untuk menerima jumlah berapa pun.</string>
<string name="error_dialog_zap_error">Tidak dapat mengirim zap</string>
<string name="error_dialog_talk_to_user">Kirim Pesan ke Pengguna</string>
<string name="error_dialog_button_ok">Ok</string>
</resources>

View File

@@ -0,0 +1,140 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="point_to_the_qr_code">Inquadra il QR Code</string>
<string name="show_qr">Mostra QR</string>
<string name="profile_image">Foto profilo</string>
<string name="scan_qr">Scansiona QR</string>
<string name="show_anyway">Mostra comunque</string>
<string name="post_was_flagged_as_inappropriate_by">Post segnalato da</string>
<string name="post_not_found">L\'evento sta caricando o non può essere trovato nei tuoi relay</string>
<string name="channel_image">Foto del canale</string>
<string name="referenced_event_not_found">L\'evento referenziato non è stato trovato</string>
<string name="could_not_decrypt_the_message">Impossibile decrittare il messaggio</string>
<string name="group_picture">Foto del gruppo</string>
<string name="explicit_content">Contenuto esplicito</string>
<string name="spam">Spam</string>
<string name="impersonation">Impersonazione</string>
<string name="illegal_behavior">Comportamento scorretto</string>
<string name="unknown">Sconosciuto</string>
<string name="relay_icon">Icona del relay</string>
<string name="unknown_author">Autore sconosciuto</string>
<string name="copy_text">Copia testo</string>
<string name="copy_user_pubkey">Copia ID autore</string>
<string name="copy_note_id">Copia ID nota</string>
<string name="broadcast">Trasmissione</string>
<string name="request_deletion">Richiedi cancellazione</string>
<string name="block_report">Blocca / Segnala</string>
<string name="block_hide_user"><![CDATA[Blocca e Nascondi Utente]]></string>
<string name="report_spam_scam">Segnala Spam / Truffa</string>
<string name="report_impersonation">Segnala impersonatore</string>
<string name="report_explicit_content">Segnala contenuto esplicito</string>
<string name="report_illegal_behaviour">Segnala comportamento inapproriato</string>
<string name="login_with_a_private_key_to_be_able_to_reply">Accedi con una Chiave Privata per rispondere</string>
<string name="login_with_a_private_key_to_be_able_to_boost_posts">Accedi con una Chiave Privata per ricondividere i post</string>
<string name="login_with_a_private_key_to_like_posts">Accedi con una Chiave Privata per poter mettere mi piace ai post</string>
<string name="no_zap_amount_setup_long_press_to_change">Nessun importo per gli Zap impostato. Tieni premuto per aggiungerne</string>
<string name="login_with_a_private_key_to_be_able_to_send_zaps">Accedi con una Chiave Privata per poter inviare Zaps</string>
<string name="login_with_a_private_key_to_be_able_to_follow">Accedi con una Chiave Privata per seguire</string>
<string name="login_with_a_private_key_to_be_able_to_unfollow">Accedi con una Chiave Privata per smettere di seguire</string>
<string name="zaps">Zaps</string>
<string name="view_count">Visualizzazioni</string>
<string name="boost">Boost</string>
<string name="boosted">ricondiviso</string>
<string name="quote">Cita</string>
<string name="new_amount_in_sats">Nuovo importo in Sats</string>
<string name="add">Aggiungi</string>
<string name="replying_to">"rispondendo a"</string>
<string name="and">" e "</string>
<string name="in_channel">"nel canale "</string>
<string name="profile_banner">Immagine copertina</string>
<string name="payment_successful">Pagamento effettuato</string>
<string name="error_parsing_error_message">Errore durante l\'interpretazione del messaggio d\'errore</string>
<string name="following">" Seguiti"</string>
<string name="followers">" Seguaci"</string>
<string name="profile">Profilo</string>
<string name="security_filters">Filtri di sicurezza</string>
<string name="log_out">Esci</string>
<string name="show_more">Mostra altro</string>
<string name="lightning_invoice">Fattura Lightning</string>
<string name="pay">Paga</string>
<string name="lightning_tips">Mance Lightning</string>
<string name="note_to_receiver">Nota per il Ricevente</string>
<string name="thank_you_so_much">Grazie mille!</string>
<string name="amount_in_sats">Importo in Sats</string>
<string name="send_sats">Invia Sats</string>
<string name="error_parsing_preview_for">"Errore nella creazione dell'anteprima di %1$s : %2$s"</string>
<string name="preview_card_image_for">"Anteprima immagine per %1$s"</string>
<string name="new_channel">Nuovo canale</string>
<string name="channel_name">Nome canale</string>
<string name="my_awesome_group">Il mio fantastico gruppo</string>
<string name="picture_url">Url foto</string>
<string name="description">Descrizione</string>
<string name="about_us">"Su di noi... "</string>
<string name="what_s_on_your_mind">A cosa stai pensando?</string>
<string name="post">Post</string>
<string name="save">Salva</string>
<string name="create">Crea</string>
<string name="cancel">Cancella</string>
<string name="failed_to_upload_the_image">Impossibile caricare l\'immagine</string>
<string name="relay_address">Indirizzo Relay</string>
<string name="posts">Posts</string>
<string name="bytes">Bytes</string>
<string name="errors">Errori</string>
<string name="home_feed">Home Feed</string>
<string name="private_message_feed">Lista Messaggi Privati</string>
<string name="public_chat_feed">Lista Chat Pubbliche</string>
<string name="global_feed">Feed Globale</string>
<string name="search_feed">Risultati Ricerca</string>
<string name="add_a_relay">Aggiungi un Relay</string>
<string name="display_name">Nome Visualizzato</string>
<string name="my_display_name">Il mio nome visualizzato</string>
<string name="username">Username</string>
<string name="acceptance_of_terms_is_required">L\'accettazione dei termini è obbligatoria</string>
<string name="key_is_required">La chiave è obbligatoria</string>
<string name="login">Accesso</string>
<string name="generate_a_new_key">Genera una nuova chiave</string>
<string name="loading_feed">Caricamento del feed</string>
<string name="error_loading_replies">"Errore durante il caricamento delle risposte: "</string>
<string name="try_again">Prova di nuovo</string>
<string name="feed_is_empty">Il feed è vuoto.</string>
<string name="refresh">Aggiorna</string>
<string name="created">creato</string>
<string name="with_description_of">con la descrizione di</string>
<string name="and_picture">e l\'immagine</string>
<string name="changed_chat_name_to">modificato il nome della chat in</string>
<string name="description_to">descrizione per</string>
<string name="and_picture_to">e immagine per</string>
<string name="leave">Esci</string>
<string name="unfollow">Non seguire più</string>
<string name="channel_created">Canale creato</string>
<string name="channel_information_changed_to">"Informazioni del canale modificate in"</string>
<string name="public_chat">Chat Pubblica</string>
<string name="posts_received">post ricevuti</string>
<string name="remove">Cancella</string>
<string name="translations_auto">Auto</string>
<string name="translations_translated_from">tradotto da</string>
<string name="translations_to">a</string>
<string name="translations_always_translate_to_lang">Traduci sempre in %1$s</string>
<string name="translations_never_translate_from_lang">Non tradurre mai da %1$s</string>
<string name="nip_05">Indirizzo Nostr</string>
<string name="never">mai</string>
<string name="now">adesso</string>
<string name="h">h</string>
<string name="m">m</string>
<string name="d">d</string>
<string name="nudity">Nuditá</string>
<string name="profanity_hateful_speech">Volgaritá / Linguaggio forte</string>
<string name="report_hateful_speech">Segnala linguaggio forte</string>
<string name="report_nudity_porn">Segnala Nuditá / Pornografia</string>
<string name="others">altri</string>
<string name="mark_all_known_as_read">Segna tutti i conosciuti come letti</string>
<string name="mark_all_new_as_read">Segna tutti i nuovi come letti</string>
<string name="mark_all_as_read">Segna tutti come letti</string>
<string name="backup_keys">Esegui backup delle chiavi</string>
<string name="account_backup_tips_md" tools:ignore="Typos"> ## Backup delle Chiavi e Consigli di Sicurezza
\n\nIl tuo account è reso sicuro da una chiave privata. La chiave è una lunga stringa di caratteri casuali che inizia con **nsec1**. Chiunque abbia accesso alla tua chiave privata puó pubblicare contenuti con la tua identitá.
\n\n- Non devi **mai** inserire la tua chiave privata in un sito o software di cui non ti fidi.
\n- Gli sviluppatori di Amethyst non chiederanno **mai** la tua chiave privata.
\n- Mantieni **sempre** al sicuro un backup della tua chiave privata per recuperare l\'account. Ti suggeriamo di usare un password manager.
</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="point_to_the_qr_code">QRコードに向けてください</string>
<string name="show_qr">QRコードを表示</string>
<string name="profile_image">プロフィール画像</string>
<string name="scan_qr">QRコードをスキャン</string>
<string name="show_anyway">それでも表示する</string>
<string name="post_was_flagged_as_inappropriate_by">"このユーザによって投稿が不適切なものとしてマークされています: "</string>
<string name="post_was_flagged_as_inappropriate_by">このユーザによって投稿が不適切なものとしてマークされています: </string>
<string name="post_not_found">投稿が見つかりません</string>
<string name="channel_image">チャンネル画像</string>
<string name="referenced_event_not_found">参照先のイベントが見つかりません</string>
@@ -23,7 +24,7 @@
<string name="broadcast">ブロードキャスト</string>
<string name="request_deletion">削除をリクエスト</string>
<string name="block_report">ブロック / 通報</string>
<string name="block_hide_user">ユーザをブロックして非表示</string>
<string name="block_hide_user"><![CDATA[ユーザをブロックして非表示]]></string>
<string name="report_spam_scam">スパム / 詐欺を通報</string>
<string name="report_impersonation">なりすましを通報</string>
<string name="report_explicit_content">露骨なコンテンツを通報</string>
@@ -44,7 +45,6 @@
<string name="add">追加</string>
<string name="replying_to">"リプライ先: "</string>
<string name="and">" と "</string>
<string name="in_channel">"in channel "</string>
<string name="profile_banner">プロフィールバナー</string>
<string name="following">" フォロー"</string>
<string name="followers">" フォロワー"</string>
@@ -55,12 +55,11 @@
<string name="lightning_invoice">Lightningインボイス</string>
<string name="pay">支払う</string>
<string name="lightning_tips">Lightningチップ</string>
<string name="note_to_receiver">Note to Receiver</string>
<string name="thank_you_so_much">ありがとうございます!</string>
<string name="amount_in_sats">金額 (sats)</string>
<string name="send_sats">satsを送る</string>
<string name="error_parsing_preview_for">%1$sのプレビューのパースに失敗しました: %2$s</string>
<string name="preview_card_image_for">%1$sのプレビューカード画像</string>
<string name="error_parsing_preview_for">"%1$sのプレビューのパースに失敗しました: %2$s"</string>
<string name="preview_card_image_for">"%1$sのプレビューカード画像"</string>
<string name="new_channel">新しいチャンネル</string>
<string name="channel_name">チャンネル名</string>
<string name="my_awesome_group">私の素晴らしいグループ</string>
@@ -110,8 +109,8 @@
<string name="conversations">会話</string>
<string name="notes">投稿</string>
<string name="replies">リプライ</string>
<string name="follows">フォロー</string>
<string name="reports">通報</string>
<string name="follows">"フォロー"</string>
<string name="reports">"通報"</string>
<string name="more_options">詳細なオプション</string>
<string name="relays">" リレー"</string>
<string name="website">ウェブサイト</string>
@@ -127,7 +126,7 @@
<string name="unblock">ブロック解除</string>
<string name="copy_user_id">ユーザIDをコピー</string>
<string name="unblock_user">ユーザのブロックを解除</string>
<string name="npub_hex_username">npub、ユーザ名、テキスト</string>
<string name="npub_hex_username">"npub、ユーザ名、テキスト"</string>
<string name="clear">消去</string>
<string name="app_logo">アプリのロゴ</string>
<string name="nsec_npub_hex_private_key">nsec… または npub…</string>
@@ -154,7 +153,7 @@
<string name="leave">退出</string>
<string name="unfollow">フォロー解除</string>
<string name="channel_created">チャンネルが作成されました</string>
<string name="channel_information_changed_to">チャンネル情報が次のように変更されました:</string>
<string name="channel_information_changed_to">"チャンネル情報が次のように変更されました:"</string>
<string name="public_chat">公開チャット</string>
<string name="posts_received">投稿を受信</string>
<string name="remove">削除</string>
@@ -178,8 +177,7 @@
<string name="mark_all_new_as_read">すべての「新規リクエスト」を既読にする</string>
<string name="mark_all_as_read">すべて既読にする</string>
<string name="backup_keys">鍵をバックアップ</string>
<string name="account_backup_tips_md" tools:ignore="Typos">
## 鍵のバックアップと安全に利用するためのTips
<string name="account_backup_tips_md" tools:ignore="Typos"> ## 鍵のバックアップと安全に利用するためのTips
\n\nあなたのアカウントは秘密鍵によって保護されています。秘密鍵は **nsec1** から始まる長いランダムな文字列です。秘密鍵にアクセスできる人は、あなたのアカウントを使用してコンテンツを公開することができます。
\n\n- 信頼できないウェブサイトやソフトウェアには、秘密鍵を **渡さない** でください。
\n- Amethystの開発者があなたに秘密鍵をお聞きすることは **ありません** 。
@@ -189,8 +187,8 @@
<string name="copy_my_secret_key">秘密鍵をコピー</string>
<string name="biometric_authentication_failed">認証に失敗しました</string>
<string name="biometric_error">エラー</string>
<string name="badge_created_by">%1$s によって作成</string>
<string name="badge_award_image_for">%1$sのバッジ授与画像</string>
<string name="badge_created_by">"%1$s によって作成"</string>
<string name="badge_award_image_for">"%1$sのバッジ授与画像"</string>
<string name="new_badge_award_notif">新しいバッジが授与されました</string>
<string name="award_granted_to">バッジ授与が承認されました:</string>
<string name="copied_note_text_to_clipboard">テキストがクリップボードにコピーされました</string>
@@ -229,7 +227,7 @@
<string name="report_dialog_nudity">ヌードまたは生々しいコンテンツ</string>
<string name="report_dialog_illegal">不法行為</string>
<string name="report_dialog_blocking_a_user">ユーザーをブロックするとアプリ内でそのユーザーのコンテンツが非表示になります。ブロックされたユーザーは、あなたの投稿を今までどおり閲覧可能です。ブロック済みユーザーはセキュリティフィルタ画面に表示されます。</string>
<string name="report_dialog_block_hide_user_btn">ユーザをブロックして非表示</string>
<string name="report_dialog_block_hide_user_btn"><![CDATA[ユーザをブロックして非表示]]></string>
<string name="report_dialog_report_btn">通報</string>
<string name="report_dialog_reminder_public">投稿したすべての通報は誰もが閲覧可能です。</string>
<string name="report_dialog_additional_reason_placeholder">任意でレポートに関する追加情報を提供する</string>
@@ -239,7 +237,6 @@
<string name="report_dialog_post_report_btn">通報を送信</string>
<string name="report_dialog_title">ブロックと通報</string>
<string name="block_only">ブロック</string>
<string name="bookmarks">ブックマーク</string>
<string name="private_bookmarks">非公開ブックマーク</string>
<string name="public_bookmarks">公開ブックマーク</string>
@@ -247,7 +244,6 @@
<string name="add_to_public_bookmarks">公開ブックマークに追加</string>
<string name="remove_from_private_bookmarks">非公開ブックマークから削除</string>
<string name="remove_from_public_bookmarks">公開ブックマークから削除</string>
<string name="wallet_connect_service">Wallet Connectサービス</string>
<string name="wallet_connect_service_explainer">アプリから離脱することなくザップするためにNostrシークレットを設定できます。シークレットは安全に保管し、可能であればプライベートリレーを使用してください</string>
<string name="wallet_connect_service_pubkey">Wallet Connectの公開鍵</string>
@@ -255,7 +251,6 @@
<string name="wallet_connect_service_secret">Wallet Connectの秘密鍵</string>
<string name="wallet_connect_service_show_secret">秘密鍵を表示</string>
<string name="wallet_connect_service_secret_placeholder">nsec または hex 形式の秘密鍵</string>
<string name="pledge_amount_in_sats">誓約額 (sats)</string>
<string name="post_poll">投票を送信</string>
<string name="poll_heading_required">必須のフィールド:</string>
@@ -267,99 +262,70 @@
<string name="poll_zap_value_min">最小ザップ額</string>
<string name="poll_zap_value_max">最大ザップ額</string>
<string name="poll_consensus_threshold">コンセンサス</string>
<string name="poll_consensus_threshold_percent">(0100)%</string>
<string name="poll_closing_time">終了まで</string>
<string name="poll_closing_time_days"></string>
<string name="poll_is_closed">投票は締め切られました</string>
<string name="poll_zap_amount">ザップ額</string>
<string name="one_vote_per_user_on_atomic_votes">このタイプの投票では、1ユーザにつき1回のみ投票可能です</string>
<string name="looking_for_event">イベント %1$s を探しています</string>
<string name="looking_for_event">"イベント %1$s を探しています"</string>
<string name="custom_zaps_add_a_message">公開メッセージを追加</string>
<string name="custom_zaps_add_a_message_private">プライベートメッセージを追加</string>
<string name="custom_zaps_add_a_message_nonzap">インボイスメッセージを追加</string>
<string name="custom_zaps_add_a_message_example">おつかれさまでした!</string>
<string name="lightning_create_and_add_invoice">作成して追加</string>
<string name="poll_author_no_vote">投票の作成者が投票することはできません。</string>
<string name="hash_verification_passed">画像は投稿時と同じです</string>
<string name="hash_verification_failed">画像が変更されています。作者は変更に気づいていないかもしれません</string>
<string name="content_description_add_image">画像を追加</string>
<string name="content_description_add_video">動画を追加</string>
<string name="content_description_add_document">ドキュメントを追加</string>
<string name="add_content">メッセージに追加</string>
<string name="content_description">コンテンツの説明</string>
<string name="content_description_example">夕暮れの白い砂浜に浮かぶ青いボート</string>
<string name="zap_type">ザップの種類</string>
<string name="zap_type_explainer">ザップ種別のオプション</string>
<string name="zap_type_public">公開</string>
<string name="zap_type_public_explainer">誰もが取引とメッセージを閲覧できます</string>
<string name="zap_type_private">プライベート</string>
<string name="zap_type_private_explainer">送金者と受取人だけが互いにメッセージを閲覧できます</string>
<string name="zap_type_anonymous">匿名</string>
<string name="zap_type_anonymous_explainer">受取人を含め、すべての人は送金者を知ることができません</string>
<string name="zap_type_nonzap">非ザップ</string>
<string name="zap_type_nonzap_explainer">Nostrを経由せずにLightning支払いを行います</string>
<string name="file_server">ファイルサーバ</string>
<string name="zap_forward_lnAddress">LNアドレス または @ユーザ名</string>
<string name="upload_server_imgur">imgur.com - 信頼済み</string>
<string name="upload_server_imgur_explainer">Imgurはファイルの変更が可能です</string>
<string name="upload_server_nostrimg">nostrimg.com - 信頼済み</string>
<string name="upload_server_nostrimg_explainer">NostrImgはファイルの変更が可能です</string>
<string name="upload_server_nostrbuild">nostr.build - 信頼済み</string>
<string name="upload_server_nostrbuild_explainer">Nostr.buildはファイルの変更が可能です</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev - 信頼済み</string>
<string name="upload_server_nostrfilesdev_explainer">Nostrfiles.devはファイルの変更が可能です</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - 信頼済み</string>
<string name="upload_server_nostrcheckme_explainer">nostrcheck.meはファイルの変更が可能です</string>
<string name="upload_server_imgur_nip94">検証可能な Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Imgurによるファイルの変更をチェックします。新規NIP: 他のクライアントでは表示できない可能性があります</string>
<string name="upload_server_nostrimg_nip94">検証可能な NostrImg (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">NostrImgによるファイルの変更をチェックします。新規NIP: 他のクライアントでは表示できない可能性があります</string>
<string name="upload_server_nostrbuild_nip94">検証可能な Nostr.build (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94_explainer">Nostr.buildによるファイルの変更をチェックします。新規NIP: 他のクライアントでは表示できない可能性があります</string>
<string name="upload_server_nostrfilesdev_nip94">検証可能な Nostrfiles.dev (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">Nostrfiles.devによるファイルの変更をチェックします。新規NIP: 他のクライアントでは表示できない可能性があります</string>
<string name="upload_server_nostrcheckme_nip94">検証可能な Nostrcheck.me (NIP-94)</string>
<string name="upload_server_nostrcheckme_nip94_explainer">Nostrcheck.meによるファイルの変更をチェックします。新規NIP: 他のクライアントでは表示できない可能性があります</string>
<string name="upload_server_relays_nip95">あなたのリレー (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">ファイルはあなたのリレーによってホストされます。新規NIP: リレーがサポートしているか確認してください</string>
<string name="connect_via_tor_short">Tor/Orbotを設定</string>
<string name="connect_via_tor">Orbotの設定を通して接続</string>
<string name="do_you_really_want_to_disable_tor_title">Orbot/Torから切断しますか</string>
<string name="do_you_really_want_to_disable_tor_text">データはすぐに通常のネットワークで送信されます</string>
<string name="yes">はい</string>
<string name="no">いいえ</string>
<string name="follow_list_selection">フォローリスト</string>
<string name="follow_list_kind3follows">すべてのフォロー</string>
<string name="follow_list_global">グローバル</string>
<string name="connect_through_your_orbot_setup_markdown">
## Orbotを利用してTor経由で接続する
<string name="connect_through_your_orbot_setup_markdown"> ## Orbotを利用してTor経由で接続する
\n\n1. [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android)をインストール
\n2. Orbotを立ち上げる
\n3. OrbotでSocksポート番号を確認する。デフォルトは9050
@@ -371,44 +337,31 @@
<string name="invalid_port_number">無効なポート番号</string>
<string name="use_orbot">Orbotを使用</string>
<string name="disconnect_from_your_orbot_setup">Tor/Orbotを切断</string>
<string name="app_notification_dms_channel_name">プライベートメッセージ</string>
<string name="app_notification_dms_channel_description">プライベートメッセージが届いたら通知する</string>
<string name="app_notification_zaps_channel_name">ザップを受け取りました</string>
<string name="app_notification_zaps_channel_description">誰かがあなたにザップしたら通知する</string>
<string name="app_notification_zaps_channel_message">%1$s sats</string>
<string name="app_notification_zaps_channel_message_from">%1$sから</string>
<string name="app_notification_zaps_channel_message_for">%1$sに</string>
<string name="reply_notify">"通知: "</string>
<string name="reply_notify">通知: </string>
<string name="channel_list_join_conversation">会話に参加</string>
<string name="channel_list_user_or_group_id">ユーザIDまたはグループID</string>
<string name="channel_list_user_or_group_id_demo">npub、nevent または hex</string>
<string name="channel_list_create_channel">作成</string>
<string name="channel_list_join_channel">参加</string>
<string name="today">今日</string>
<string name="content_warning">コンテンツ警告</string>
<string name="content_warning_explanation">この投稿には、一部の人々が不快や不穏に感じる可能性のあるセンシティブな内容が含まれています</string>
<string name="content_warning_hide_all_sensitive_content">センシティブなコンテンツを常に非表示</string>
<string name="content_warning_show_all_sensitive_content">センシティブなコンテンツを常に表示</string>
<string name="content_warning_see_warnings">コンテンツ警告を常に表示</string>
<string name="recommended_apps">"推奨: "</string>
<string name="recommended_apps">推奨: </string>
<string name="filter_spam_from_strangers">見知らぬユーザからのスパムをフィルタリングする</string>
<string name="warn_when_posts_have_reports_from_your_follows">あなたがフォローしている人に通報された投稿を警告する</string>
<string name="new_reaction_symbol">新しいリアクションシンボル</string>
<string name="no_reaction_type_setup_long_press_to_change">リアクションタイプが選択されていません。長押しして変更</string>
<string name="zapraiser">Zapraiser</string>
<string name="zapraiser_explainer">この投稿の目標募金額を追加します。サポートするクライアントは、寄付を促すためにこれをプログレスバーとして表示することができます</string>
<string name="zapraiser_target_amount_in_sats">目標募金額 (sats)</string>
<string name="sats_to_complete">Zapraiser at %1$s. %2$s sats to goal</string>
<string name="read_from_relay">リレーから読み込み</string>
<string name="write_to_relay">リレーに書き込み</string>
<string name="owner">管理者</string>
@@ -435,27 +388,21 @@
<string name="payment">決済</string>
<string name="cashu">Cashuトークン</string>
<string name="cashu_redeem">償還</string>
<string name="live_stream_live_tag">ライブ</string>
<string name="live_stream_offline_tag">オフライン</string>
<string name="live_stream_ended_tag">配信終了</string>
<string name="live_stream_planned_tag">配信予定</string>
<string name="live_stream_is_offline">ライブ配信はオフラインです</string>
<string name="live_stream_has_ended">ライブ配信は終了しました</string>
<string name="are_you_sure_you_want_to_log_out">ログアウトするとローカル情報はすべて削除されます。アカウントを紛失しないよう、秘密鍵のバックアップがあることを確認してください。続行しますか?</string>
<string name="followed_tags">フォロー済みタグ</string>
<string name="relay_setup">リレー</string>
<string name="discover_live">ライブ</string>
<string name="discover_community">コミュニティ</string>
<string name="discover_chat">チャット</string>
<string name="community_approved_posts">承認済みの投稿</string>
<string name="groups_no_descriptor">このグループには説明またはルールがありません。追加するには管理者に相談してください</string>
<string name="community_no_descriptor">このコミュニティには説明がありません。追加するには管理者に相談してください</string>
<string name="add_sensitive_content_label">センシティブなコンテンツ</string>
<string name="add_sensitive_content_description">コンテンツを表示する前に、センシティブなコンテンツであることを示す警告を表示します</string>
<string name="settings">設定</string>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name_release" translatable="false">Amethyst</string>
<string name="app_name_debug" translatable="false">Amethyst debug</string>
<string name="point_to_the_qr_code">Richt camera op de QR-Code</string>
<string name="show_qr">Toon QR</string>
<string name="profile_image">Profielfoto</string>
@@ -41,7 +40,7 @@
<string name="view_count">Aantal keer bekeken</string>
<string name="boost">Boost</string>
<string name="boosted">boosted</string>
<string name="quote">Quote</string>
<string name="quote">Citaat</string>
<string name="new_amount_in_sats">Nieuw bedrag in sats</string>
<string name="add">Toevoegen</string>
<string name="replying_to">"reageert op "</string>
@@ -58,7 +57,7 @@
<string name="show_more">Meer</string>
<string name="lightning_invoice">Lightning invoice</string>
<string name="pay">Betalen</string>
<string name="lightning_tips">Lightning Tips</string>
<string name="lightning_tips">Lighnting tips</string>
<string name="note_to_receiver">Note aan ontvanger</string>
<string name="thank_you_so_much">Hartelijk bedankt!</string>
<string name="amount_in_sats">Bedrag in sats</string>
@@ -80,7 +79,7 @@
<string name="relay_address">Relay adres</string>
<string name="posts">Berichten</string>
<string name="bytes">Bytes</string>
<string name="errors">Errors</string>
<string name="errors">Fouten</string>
<string name="home_feed">Startpagina</string>
<string name="private_message_feed">Privéberichten</string>
<string name="public_chat_feed">Publieke chats</string>
@@ -95,7 +94,7 @@
<string name="avatar_url">Profielfoto URL</string>
<string name="banner_url">Banner URL</string>
<string name="website_url">Website URL</string>
<string name="ln_address">LN Address</string>
<string name="ln_address">LN Adress</string>
<string name="ln_url_outdated">LN URL (verouderd)</string>
<string name="image_saved_to_the_gallery">Afbeelding opgeslagen in galerij</string>
<string name="failed_to_save_the_image">De afbeelding is niet opgeslagen</string>
@@ -119,7 +118,7 @@
<string name="more_options">Meer opties</string>
<string name="relays">"Relays"</string>
<string name="website">Website</string>
<string name="lightning_address">Lightning Address</string>
<string name="lightning_address">Lightning Adress</string>
<string name="copies_the_nsec_id_your_password_to_the_clipboard_for_backup">Kopieert het NSEC ID (uw wachtwoord) naar klembord voor back-up.</string>
<string name="copy_private_key_to_the_clipboard">Privésleutel kopiëren naar het klembord</string>
<string name="copies_the_public_key_to_the_clipboard_for_sharing">Kopieert de publieke sleutel naar klembord om te delen</string>
@@ -162,15 +161,13 @@
<string name="public_chat">Publieke chat</string>
<string name="posts_received">berichten ontvangen</string>
<string name="remove">verwijderen</string>
<string name="sats" translatable="false">sats</string>
<string name="translations_auto">Auto</string>
<string name="translations_auto">Automatisch</string>
<string name="translations_translated_from">vertaald van</string>
<string name="translations_to">naar</string>
<string name="translations_show_in_lang_first">Eerst laten zien in %1$s</string>
<string name="translations_always_translate_to_lang">Altijd vertalen naar %1$s</string>
<string name="translations_never_translate_from_lang">Nooit vertalen vanuit %1$s</string>
<string name="nip_05">Nostr Address</string>
<string name="lnurl" translatable="false">LNURL...</string>
<string name="nip_05">Nostr adres</string>
<string name="never">nooit</string>
<string name="now">nu</string>
<string name="h">h</string>
@@ -185,8 +182,7 @@
<string name="mark_all_new_as_read">Nieuwe markeren als gelezen</string>
<string name="mark_all_as_read">Alles markeren als gelezen</string>
<string name="backup_keys">Back-up sleutels</string>
<string name="account_backup_tips_md" tools:ignore="Typos">
## Sleutel back-up en veiligheidstips
<string name="account_backup_tips_md" tools:ignore="Typos"> ## Sleutel back-up en veiligheidstips
\n\nUw account is beveiligd met een privésleutel. De sleutel is een lange, willekeurige reeks die begint met **nsec1**. Iedereen die toegang heeft tot uw privésleutel kan inhoud publiceren met uw identiteit.
\n\n- Voer uw privésleutel **nooit** in een website of software die u niet vertrouwt.
\n- Amethyst ontwikkelaars zullen u **nooit** om uw privésleutel vragen.
@@ -195,15 +191,24 @@
<string name="secret_key_copied_to_clipboard">Privésleutel (nsec) gekopieerd naar klembord</string>
<string name="copy_my_secret_key">Kopieer mijn privésleutel</string>
<string name="biometric_authentication_failed">Authenticatie mislukt</string>
<string name="biometric_error">Error</string>
<string name="biometric_error">Fout</string>
<string name="badge_created_by">"Gemaakt door %1$s"</string>
<string name="badge_award_image_for">"Badge award afbeelding voor %1$s"</string>
<string name="new_badge_award_notif">Je hebt een nieuwe Badge award ontvangen</string>
<string name="award_granted_to">Badge award gegeven aan</string>
<string name="copied_note_text_to_clipboard">Note tekst gekopieerd naar klembord</string>
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">@npub auteur gekopieerd naar klembord</string>
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">\@npub auteur gekopieerd naar klembord</string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">Note ID (@note1) gekopieerd naar klembord</string>
<string name="select_text_dialog_top">Selecteer tekst</string>
<string name="private_conversation_notification">"&lt;Kan privébericht niet ontsleutelen&gt;\n\nJe werd genoemd in een privégesprek tussen %1$s en %2$s."</string>
<string name="account_switch_add_account_dialog_title">Nieuw account toevoegen</string>
<string name="drawer_accounts">Accounts</string>
<string name="account_switch_select_account">Account selecteren</string>
<string name="account_switch_add_account_btn">Nieuw account toevoegen</string>
<string name="account_switch_active_account">Account activeren</string>
<string name="account_switch_has_private_key">Heeft privésleutel</string>
<string name="account_switch_pubkey_only">Alleen lezen, geen privésleutel</string>
<string name="back">Terug</string>
<string name="quick_action_select">Selecteer</string>
<string name="quick_action_share_browser_link">Deel browserlink</string>
<string name="quick_action_share">Delen</string>
@@ -215,29 +220,12 @@
<string name="quick_action_follow">Volgen</string>
<string name="quick_action_request_deletion_alert_title">Verzoek om te verwijderen</string>
<string name="quick_action_request_deletion_alert_body">Amethyst zal vragen om uw note te verwijderen van de relays waarmee u momenteel verbonden bent. Er is geen garantie dat uw note permanent wordt verwijderd van deze relays, of van andere relays waar het kan worden opgeslagen.</string>
<string name="github" translatable="false">Github Gist w/ Proof</string>
<string name="telegram" translatable="false">Telegram</string>
<string name="mastodon" translatable="false">Mastodon Post ID w/ Proof</string>
<string name="twitter" translatable="false">Twitter Status w/ Proof</string>
<string name="github_proof_url_template" translatable="false">https://gist.github.com/&lt;user&gt;/&lt;gist&gt;</string>
<string name="telegram_proof_url_template" translatable="false">https://t.me/&lt;proof post&gt;</string>
<string name="mastodon_proof_url_template" translatable="false">https://&lt;server&gt;/&lt;user&gt;/&lt;proof post&gt;</string>
<string name="twitter_proof_url_template" translatable="false">https://twitter.com/&lt;user&gt;/status/&lt;proof post&gt;</string>
<string name="private_conversation_notification">"&lt;Kan privébericht niet ontsleutelen&gt;\n\nJe werd genoemd in een privégesprek tussen %1$s en %2$s."</string>
<string name="quick_action_block_dialog_btn">Blokkeren</string>
<string name="quick_action_delete_dialog_btn">Verwijderen</string>
<string name="quick_action_block">Blokkeren</string>
<string name="quick_action_report">Rapporteren</string>
<string name="quick_action_delete_button">Verwijderen</string>
<string name="quick_action_dont_show_again_button">Niet meer laten zien</string>
<string name="account_switch_add_account_dialog_title">Nieuw account toevoegen</string>
<string name="drawer_accounts">Accounts</string>
<string name="account_switch_select_account">Account selecteren</string>
<string name="account_switch_add_account_btn">Nieuw account toevoegen</string>
<string name="account_switch_active_account">Account activeren</string>
<string name="account_switch_has_private_key">Heeft privésleutel</string>
<string name="account_switch_pubkey_only">Alleen lezen, geen privésleutel</string>
<string name="back">Terug</string>
<string name="report_dialog_spam">Spam of oplichting</string>
<string name="report_dialog_profanity">Godslastering of haatdragend gedrag</string>
<string name="report_dialog_impersonation">Kwaadwillige imitatie</string>
@@ -254,15 +242,13 @@
<string name="report_dialog_post_report_btn">Rapporteer</string>
<string name="report_dialog_title">Blokkeer en rapporteer</string>
<string name="block_only">Blokkeren</string>
<string name="bookmarks">Bladwijzers</string>
<string name="private_bookmarks">Privé bladwijzers</string>
<string name="public_bookmarks">PPublieke Bladwijzers</string>
<string name="public_bookmarks">Publieke Bladwijzers</string>
<string name="add_to_private_bookmarks">Toevoegen aan privé bladwijzers</string>
<string name="add_to_public_bookmarks">Toevoegen aan publieke bladwijzers</string>
<string name="remove_from_private_bookmarks">Verwijderen uit privé bladwijzers</string>
<string name="remove_from_public_bookmarks">Verwijderen uit publieke bladwijzers</string>
<string name="wallet_connect_service">Wallet Connect Service</string>
<string name="wallet_connect_service_explainer">Machtigt een Nostr Secret om zaps te betalen zonder de app te verlaten. Houd het geheim veilig en gebruik indien mogelijk een privé relays.</string>
<string name="wallet_connect_service_pubkey">Wallet Connect publieke sleutel</string>
@@ -270,7 +256,6 @@
<string name="wallet_connect_service_secret">Wallet Connect Secret</string>
<string name="wallet_connect_service_show_secret">Toon secret sleutel</string>
<string name="wallet_connect_service_secret_placeholder">nsec / hex privésleutel</string>
<string name="pledge_amount_in_sats">Bedrag in sats</string>
<string name="post_poll">Verzend poll</string>
<string name="poll_heading_required">Verplichte velden:</string>
@@ -282,98 +267,71 @@
<string name="poll_zap_value_min">Zap minimum</string>
<string name="poll_zap_value_max">Zap maximum</string>
<string name="poll_consensus_threshold">Consensus</string>
<string name="poll_consensus_threshold_percent">(0100)%</string>
<string name="poll_consensus_threshold_percent">(0-100)%</string>
<string name="poll_closing_time">Sluit na</string>
<string name="poll_closing_time_days">dagen</string>
<string name="poll_is_closed">Poll is gesloten voor nieuwe stemmen</string>
<string name="poll_zap_amount">Zap bedrag</string>
<string name="one_vote_per_user_on_atomic_votes">Slechts één stem per gebruiker is toegestaan bij dit type peiling.</string>
<string name="looking_for_event">"Zoeken naar event %1$s"</string>
<string name="custom_zaps_add_a_message">Een openbaar bericht toevoegen</string>
<string name="custom_zaps_add_a_message_private">Een privébericht toevoegen</string>
<string name="custom_zaps_add_a_message_nonzap">Een invoice bericht toevoegen</string>
<string name="custom_zaps_add_a_message_example">Bedankt voor al jullie werk!</string>
<string name="lightning_create_and_add_invoice">Maken en toevoegen</string>
<string name="poll_author_no_vote">Poll auteurs kunnen niet stemmen in hun eigen poll.</string>
<string name="poll_hashtag" translatable="false">#zappoll</string>
<string name="hash_verification_passed">De afbeelding is onveranderd sinds de post</string>
<string name="hash_verification_failed">De afbeelding is veranderd. De auteur heeft de wijziging misschien niet gezien</string>
<string name="content_description_add_image">Afbeelding toevoegen</string>
<string name="content_description_add_video">Video toevoegen</string>
<string name="content_description_add_document">Document toevoegen</string>
<string name="add_content">Voeg toe aan bericht</string>
<string name="content_description">Beschrijving van de inhoud</string>
<string name="content_description_example">Een blauwe boot in een wit zandstrand bij zonsondergang</string>
<string name="zap_type">Zap type</string>
<string name="zap_type_explainer">Zap type voor alle opties</string>
<string name="zap_type_public">Publiek</string>
<string name="zap_type_public_explainer">Iedereen kan de transactie en het bericht zien</string>
<string name="zap_type_private">Privé</string>
<string name="zap_type_private_explainer">Verzender en ontvanger kunnen elkaar zien en het bericht lezen</string>
<string name="zap_type_anonymous">Anoniem</string>
<string name="zap_type_anonymous_explainer">Ontvanger en het publiek weten niet wie de betaling verzond</string>
<string name="zap_type_nonzap">Non-Zap</string>
<string name="zap_type_nonzap_explainer">Geen spoor binnen Nostr, alleen in Lightning</string>
<string name="file_server">File server</string>
<string name="zap_forward_lnAddress">LnAddress of @User</string>
<string name="upload_server_imgur">imgur.com - vertrouwd</string>
<string name="upload_server_imgur_explainer">Imgur kan het bestand aanpassen</string>
<string name="upload_server_nostrimg">nostrimg.com - vertrouwd</string>
<string name="upload_server_nostrimg_explainer">NostrImg kan het bestand aanpassen</string>
<string name="upload_server_nostrbuild">nostr.build - vertrouwd</string>
<string name="upload_server_nostrbuild_explainer">Nostr.build kan het bestand aanpassen</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev - vertrouwd</string>
<string name="upload_server_nostrfilesdev_explainer">Nostrfiles.dev kan het bestand aanpassen</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - vertrouwd</string>
<string name="upload_server_nostrcheckme_explainer">nostrcheck.me kan het bestand aanpassen</string>
<string name="upload_server_imgur_nip94">Verifieerbare Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Checkt of Imgur het bestand heeft aangepast. Dit is een nieuwe NIP: andere clients zien het misschien niet.</string>
<string name="upload_server_nostrimg_nip94">Verifieerbare NostrImg (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">Checkt of NostrImg het bestand heeft aangepast. Dit is een nieuwe NIP: andere clients zien het misschien niet.</string>
<string name="upload_server_nostrbuild_nip94">Verifieerbare Nostr.build (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94_explainer">Checkt of Nostr.build het bestand heeft aangepast. Dit is een nieuwe NIP: andere clients zien het misschien niet.</string>
<string name="upload_server_nostrfilesdev_nip94">Verifieerbare Nostrfiles.dev (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">Checkt of Nostrfiles.dev het bestand heeft aangepast. Dit is een nieuwe NIP: andere clients zien het misschien niet.</string>
<string name="upload_server_nostrcheckme_nip94">Verifieerbare nostrcheck.me (NIP-94)</string>
<string name="upload_server_nostrcheckme_nip94_explainer">Checkt of nostrcheck.me het bestand heeft aangepast. Dit is een nieuwe NIP: andere clients zien het misschien niet.</string>
<string name="upload_server_relays_nip95">Uw relays (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">Bestanden worden geüpload naar en gehost door relays. Ze zijn vrij van een vaste url (afhankelijkheid van derden). Zorg ervoor dat u een NIP-95 relay in uw lijst met relays hebt.</string>
<string name="connect_via_tor_short">Orbot/Tor setup</string>
<string name="connect_via_tor">Verbinden via Orbot setup</string>
<string name="do_you_really_want_to_disable_tor_title">Verbinding Orbot/Tor verbreken?</string>
<string name="do_you_really_want_to_disable_tor_text">Je gegevens worden onmiddellijk overgezet via het reguliere netwerk</string>
<string name="yes">Ja</string>
<string name="no">Nee</string>
<string name="follow_list_selection">Volgerslijst</string>
<string name="follow_list_kind3follows">Iedereen</string>
<string name="follow_list_global">Globaal</string>
<string name="connect_through_your_orbot_setup_markdown">
## Verbind via Tor met Orbot
<string name="connect_through_your_orbot_setup_markdown"> ## Verbind via Tor met Orbot
\n\n1. Installeer [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android)
\n2. Start Orbot
\n3. Controleer in Orbot de Socks-poort. Standaard wordt 9050 gebruikt
@@ -385,48 +343,33 @@
<string name="invalid_port_number">Ongeldige poort</string>
<string name="use_orbot">Gebruik Orbot</string>
<string name="disconnect_from_your_orbot_setup">Ontkoppel Orbot/Tor</string>
<string name="app_notification_channel_id" translatable="false">StandaardKanaalID</string>
<string name="app_notification_private_message" translatable="false">Nieuwe notificatie ontvangen</string>
<string name="app_notification_dms_channel_id" translatable="false">PrivéberichtenID</string>
<string name="app_notification_dms_channel_name">Privéberichten</string>
<string name="app_notification_dms_channel_description">Geeft een melding wanneer er een privébericht binnenkomt</string>
<string name="app_notification_zaps_channel_id" translatable="false">ZapsID</string>
<string name="app_notification_zaps_channel_name">Zaps ontvangen</string>
<string name="app_notification_zaps_channel_description">Geeft een melding als iemand je zapt</string>
<string name="app_notification_zaps_channel_message">%1$s sats</string>
<string name="app_notification_zaps_channel_message_from">Van %1$s</string>
<string name="app_notification_zaps_channel_message_for">voor %1$s</string>
<string name="reply_notify">Meld: </string>
<string name="channel_list_join_conversation">Doe mee aan het gesprek</string>
<string name="channel_list_user_or_group_id">Gebruiker of groeps ID</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent of hex</string>
<string name="channel_list_create_channel">Maken</string>
<string name="channel_list_join_channel">Deelnemen</string>
<string name="today">Vandaag</string>
<string name="content_warning">Content waarschuwing</string>
<string name="content_warning_explanation">Dit bericht bevat gevoelige inhoud die sommige mensen beledigend of verontrustend kunnen vinden</string>
<string name="content_warning_hide_all_sensitive_content">Verberg altijd gevoelige inhoud</string>
<string name="content_warning_show_all_sensitive_content">Toon altijd gevoelige inhoud</string>
<string name="content_warning_see_warnings">Toon altijd content waarshuwingen</string>
<string name="recommended_apps">Raadt aan: </string>
<string name="filter_spam_from_strangers">Filter spam van onbekenden</string>
<string name="warn_when_posts_have_reports_from_your_follows">Waarschuw wanneer berichten meldingen hebben van je volgers</string>
<string name="new_reaction_symbol">Nieuwe reactie symbool</string>
<string name="no_reaction_type_setup_long_press_to_change">Geen reactietypes geselecteerd. Lang indrukken om te wijzigen</string>
<string name="zapraiser">Zapraiser</string>
<string name="zapraiser_explainer">Voegt een streefaantal sats toe dat moet worden opgehaald voor deze post. Ondersteunende clients kunnen dit als een voortgangsbalk weergeven om donaties te stimuleren.</string>
<string name="zapraiser_target_amount_in_sats">Streefaantal in sats</string>
<string name="sats_to_complete">Zapraiser op %1$s. %2$s sats tot doel</string>
<string name="read_from_relay">Lees van relay</string>
<string name="write_to_relay">Schrijf naar relay</string>
@@ -447,13 +390,12 @@
<string name="subscriptions">Abonnementen</string>
<string name="filters">Filters</string>
<string name="subscription_id_length">Lengte abonnement-id</string>
<string name="minimum_prefix">Minimum prefix</string>
<string name="maximum_event_tags">Maximum event tags</string>
<string name="minimum_prefix">Minimale voorvoegsel</string>
<string name="maximum_event_tags">Maximale event tags</string>
<string name="content_length">Content lengte</string>
<string name="minimum_pow">Minimum PoW</string>
<string name="auth">Auth</string>
<string name="minimum_pow">Minimale PoW</string>
<string name="auth">Authenticatie</string>
<string name="payment">Betaling</string>
<string name="cashu">Cashu token</string>
<string name="cashu_redeem">Inwisselen</string>
<string name="no_lightning_address_set">Geen Lightning-adres ingesteld</string>
@@ -462,7 +404,6 @@
<string name="live_stream_offline_tag">OFFLINE</string>
<string name="live_stream_ended_tag">GEËINDIGD</string>
<string name="live_stream_planned_tag">INGEPLAND</string>
<string name="live_stream_is_offline">Livestream is offline</string>
<string name="live_stream_has_ended">Livestream is geëindigd</string>
<string name="are_you_sure_you_want_to_log_out">Uitloggen verwijdert al je lokale informatie. Zorg ervoor dat je een back-up hebt van je privésleutels om te voorkomen dat je je account kwijtraakt. Wilt u doorgaan?</string>
@@ -505,5 +446,32 @@
<string name="geohash_title">Locatie weergeven als</string>
<string name="geohash_explainer">Voegt een Geohash van je locatie toe aan het bericht. Het publiek weet dat je binnen 5 km (3mi) van de huidige locatie bent.</string>
<string name="add_sensitive_content_explainer">Voegt een waarschuwing voor gevoelige inhoud toe voordat je inhoud wordt weergegeven. Dit is ideaal voor NSFW-inhoud of inhoud die sommige mensen beledigend of verontrustend vinden.</string>
<string name="new_feature_nip24_might_not_be_available_title">Nieuwe functie</string>
<string name="new_feature_nip24_might_not_be_available_description">Voor het activeren van deze modus is Amethyst nodig om een NIP-24 bericht te versturen. NIP-24 is nieuw en de meeste clients hebben deze nog niet geïmplementeerd. Zorg ervoor dat de ontvanger een compatibele client gebruikt.</string>
<string name="new_feature_nip24_activate">Activeren</string>
<string name="messages_create_public_chat">Publiek</string>
<string name="messages_new_message">Privé</string>
<string name="messages_new_message_to">Aan</string>
<string name="messages_new_message_subject">Onderwerp</string>
<string name="messages_new_message_subject_caption">Onderwerp van conversatie</string>
<string name="messages_new_message_to_caption">"\@User1, @User2, @User3"</string>
<string name="messages_group_descriptor">Leden van deze groep</string>
<string name="messages_new_subject_message">Uitleg aan leden</string>
<string name="messages_new_subject_message_placeholder">De naam veranderen voor de nieuwe doelen.</string>
<string name="language_description">Voor de interface van de app</string>
<string name="theme_description">Donker-, Licht- of Systeemthema</string>
<string name="automatically_load_images_gifs_description">Automatisch afbeeldingen en GIF\'s laden</string>
<string name="automatically_play_videos_description">Video\'s en GIF\'s automatisch afspelen</string>
<string name="automatically_show_url_preview_description">Toon URL-voorbeelden</string>
<string name="load_image_description">Wanneer afbeeldingen te laden</string>
<string name="copy_url_to_clipboard">Kopieer URL naar klembord</string>
<string name="copy_the_note_id_to_the_clipboard">Note naar klembord kopiëren</string>
<string name="created_at">Gemaakt op</string>
<string name="rules">Regels</string>
<string name="status_update">Status bijwerken</string>
<string name="lightning_wallets_not_found">Fout bij het parsen van foutberichten</string>
<string name="poll_zap_value_min_max_explainer">Stemmen worden gewogen door het aantal zap. U kunt een minimumbedrag instellen om spammers te voorkomen en een maximumbedrag om te voorkomen dat een grote zappers de enquête overneemt. Gebruik hetzelfde bedrag in beide velden om ervoor te zorgen dat elke stem hetzelfde wordt gewaardeerd. Laat het leeg om elk bedrag te accepteren.</string>
<string name="error_dialog_zap_error">Kan zap niet verzenden</string>
<string name="error_dialog_talk_to_user">Bericht de gebruiker</string>
<string name="error_dialog_button_ok">Ok</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="point_to_the_qr_code">Aponte para o código QR</string>
<string name="show_qr">Mostrar QR</string>
<string name="profile_image">Imagem de perfil</string>
@@ -12,7 +12,6 @@
<string name="could_not_decrypt_the_message">Não foi possível descriptografar a mensagem</string>
<string name="group_picture">Imagem do grupo</string>
<string name="explicit_content">Conteúdo explícito</string>
<string name="spam">Spam</string>
<string name="impersonation">Representação</string>
<string name="illegal_behavior">Comportamento ilegal</string>
<string name="unknown">Desconhecido</string>
@@ -24,7 +23,7 @@
<string name="broadcast">Transmitir</string>
<string name="request_deletion">Pedir para excluir</string>
<string name="block_report">Bloquear / Denunciar</string>
<string name="block_hide_user">Bloquear e ocultar usuário</string>
<string name="block_hide_user"><![CDATA[Bloquear e ocultar usuário]]></string>
<string name="report_spam_scam">Denunciar spam/fraude</string>
<string name="report_impersonation">Denunciar representação</string>
<string name="report_explicit_content">Denunciar conteúdo explícito</string>
@@ -36,10 +35,8 @@
<string name="login_with_a_private_key_to_be_able_to_send_zaps">Faça login com uma chave privada para poder enviar Zaps</string>
<string name="login_with_a_private_key_to_be_able_to_follow">Faça login com uma chave privada para poder seguir</string>
<string name="login_with_a_private_key_to_be_able_to_unfollow">Faça login com uma chave privada para poder remover seguidores</string>
<string name="zaps">Zaps</string>
<string name="view_count">Contagem de visualizações</string>
<string name="boost">Impulsionar</string>
<string name="boosted">boosted</string>
<string name="quote">Citar</string>
<string name="new_amount_in_sats">Novo Valor em Sats</string>
<string name="add">Adicionar</string>
@@ -60,8 +57,8 @@
<string name="thank_you_so_much">Obrigado!</string>
<string name="amount_in_sats">Quantidade em Sats</string>
<string name="send_sats">Enviar Sats</string>
<string name="error_parsing_preview_for">Erro ao analisar a visualização para %1$s: %2$s</string>
<string name="preview_card_image_for">Visualize a imagem do cartão para %1$s</string>
<string name="error_parsing_preview_for">"Erro ao analisar a visualização para %1$s: %2$s"</string>
<string name="preview_card_image_for">"Visualize a imagem do cartão para %1$s"</string>
<string name="new_channel">Novo Canal</string>
<string name="channel_name">Nome do Canal</string>
<string name="my_awesome_group">Meu grupo</string>
@@ -75,8 +72,6 @@
<string name="cancel">Cancelar</string>
<string name="failed_to_upload_the_image">Falha ao enviar imagem</string>
<string name="relay_address">Endereço do Relay</string>
<string name="posts">Posts</string>
<string name="bytes">Bytes</string>
<string name="errors">Erros</string>
<string name="home_feed">Feed principal</string>
<string name="private_message_feed">Feed de mensagens privadas</string>
@@ -111,10 +106,9 @@
<string name="conversations">Conversas</string>
<string name="notes">Notas</string>
<string name="replies">Respostas</string>
<string name="follows">Seguindo</string>
<string name="reports">Denúncias</string>
<string name="follows">"Seguindo"</string>
<string name="reports">"Denúncias"</string>
<string name="more_options">Mais opções</string>
<string name="relays">" Relays"</string>
<string name="website">Site</string>
<string name="lightning_address">Endereço Lightning</string>
<string name="copies_the_nsec_id_your_password_to_the_clipboard_for_backup">Copiar a chave Nsec (sua senha) para backup</string>
@@ -142,7 +136,7 @@
<string name="login">Entrar</string>
<string name="generate_a_new_key">Gerar uma nova chave</string>
<string name="loading_feed">Carregando feed</string>
<string name="error_loading_replies">Erro ao carregar respostas</string>
<string name="error_loading_replies">"Erro ao carregar respostas"</string>
<string name="try_again">Tente novamente</string>
<string name="feed_is_empty">Feed está vazio</string>
<string name="refresh">Atualizar</string>
@@ -155,21 +149,18 @@
<string name="leave">Sair</string>
<string name="unfollow">Desseguir</string>
<string name="channel_created">Canal criado</string>
<string name="channel_information_changed_to">Informação do canal mudou para</string>
<string name="channel_information_changed_to">"Informação do canal mudou para"</string>
<string name="public_chat">Chat público</string>
<string name="posts_received">postagens recebidas</string>
<string name="remove">Remover</string>
<string name="translations_auto">"Automaticamente "</string>
<string name="translations_translated_from">"traduzido de "</string>
<string name="translations_auto">Automaticamente </string>
<string name="translations_translated_from">traduzido de </string>
<string name="translations_to">para</string>
<string name="translations_show_in_lang_first">Mostrar em %1$s primeiro</string>
<string name="translations_always_translate_to_lang">Sempre traduzir para %1$s</string>
<string name="translations_never_translate_from_lang">Nunca traduzir de %1$s</string>
<string name="never">nunca</string>
<string name="now">agora</string>
<string name="h">h</string>
<string name="m">m</string>
<string name="d">d</string>
<string name="nudity">Nudez</string>
<string name="profanity_hateful_speech">Palavrões / Discurso de ódio</string>
<string name="report_hateful_speech">Denunciar discurso de ódio</string>
@@ -178,9 +169,8 @@
<string name="mark_all_known_as_read">Marcar todos conhecidos como lidos</string>
<string name="mark_all_new_as_read">Marcar todas novas solicitações como lidas</string>
<string name="mark_all_as_read">Marcar todas como lidas</string>
<string name="biometric_error">Erro</string>
<string name="account_backup_tips_md">
## Backup de chaves e dicas de segurança
<string name="backup_keys">Copia de segurança das chaves</string>
<string name="account_backup_tips_md" tools:ignore="Typos"> ## Backup de chaves e dicas de segurança
\n\nSua conta é protegida por uma chave secreta. A chave é uma string aleatória longa começando com **nsec1**. Qualquer pessoa que tenha acesso à sua chave secreta pode publicar conteúdo usando sua identidade.
\n\n- **Não** coloque sua chave secreta em qualquer site ou software em que não confie.
\n- Os desenvolvedores do Amethyst **nunca** pedirão sua chave secreta.
@@ -189,14 +179,16 @@
<string name="secret_key_copied_to_clipboard">Chave secreta (nsec) copiada</string>
<string name="copy_my_secret_key">Copiar minha chave secreta</string>
<string name="biometric_authentication_failed">Autenticação falhou</string>
<string name="badge_created_by">Criado por %1$s</string>
<string name="badge_award_image_for">Imagem da medalha para %1$s</string>
<string name="biometric_error">Erro</string>
<string name="badge_created_by">"Criado por %1$s"</string>
<string name="badge_award_image_for">"Imagem da medalha para %1$s"</string>
<string name="new_badge_award_notif">Você recebeu uma nova medalha</string>
<string name="award_granted_to">Medalha concedida para</string>
<string name="copied_note_text_to_clipboard">Texto copiado</string>
<string name="copied_user_id_to_clipboard">Copiado @npub do autor</string>
<string name="copied_note_id_to_clipboard">Copiado ID da nota (@note1)</string>
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">Copiado @npub do autor</string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">Copiado ID da nota (@note1)</string>
<string name="select_text_dialog_top">Selecionar texto</string>
<string name="private_conversation_notification">"&lt;Não foi possível descriptografar a mensagem privada&gt;\\n\\nVocê foi citado em uma conversa privada/criptografada entre %1$s and %2$s."</string>
<string name="account_switch_add_account_dialog_title">Adicionar Nova Conta</string>
<string name="drawer_accounts">Contas</string>
<string name="account_switch_select_account">Selecionar Conta</string>
@@ -216,8 +208,6 @@
<string name="quick_action_follow">Seguir</string>
<string name="quick_action_request_deletion_alert_title">Pedir para excluir</string>
<string name="quick_action_request_deletion_alert_body">Amethyst solicitará que sua nota seja excluída dos relays aos quais você está conectado no momento. Não há garantia de que sua nota será excluída permanentemente desses relays ou de outros relays onde possa estar armazenada.</string>
<string name="backup_keys">Copia de segurança das chaves</string>
<string name="private_conversation_notification">&lt;Não foi possível descriptografar a mensagem privada&gt;\\n\\nVocê foi citado em uma conversa privada/criptografada entre %1$s and %2$s.</string>
<string name="quick_action_block_dialog_btn">Bloquear</string>
<string name="quick_action_delete_dialog_btn">Excluir</string>
<string name="quick_action_block">Bloquear</string>
@@ -249,9 +239,6 @@
<string name="remove_from_public_bookmarks">Remover dos Itens Salvos Públicos</string>
<string name="wallet_connect_service">Serviço Wallet Connect</string>
<string name="wallet_connect_service_explainer">Use sua chave privada para pagar zaps sem sair do app. Qualquer pessoa com acesso à sua chave privada Nostr poderá gastar o saldo da sua carteira. Guarde apenas os fundos que você pode perder e use um retransmissor privado, se possível. O operador de Relay pode ver seus metadados de pagamentos.</string>
<string name="wallet_connect_service_pubkey">Wallet Connect Pubkey</string>
<string name="wallet_connect_service_relay">Wallet Connect Relay</string>
<string name="wallet_connect_service_secret">Wallet Connect Secret</string>
<string name="wallet_connect_service_show_secret">Mostrar chave secreta</string>
<string name="wallet_connect_service_secret_placeholder">chave privada nsec / hex</string>
<string name="pledge_amount_in_sats">Valor em Sats</string>
@@ -265,13 +252,12 @@
<string name="poll_zap_value_min">Zap mínimo</string>
<string name="poll_zap_value_max">Zap máximo</string>
<string name="poll_consensus_threshold">Consenso</string>
<string name="poll_consensus_threshold_percent">(0100)%</string>
<string name="poll_closing_time">Fechar depois</string>
<string name="poll_closing_time_days">dias</string>
<string name="poll_is_closed">Enquete está fechada para novos votos</string>
<string name="poll_zap_amount">Valor do Zap</string>
<string name="one_vote_per_user_on_atomic_votes">Apenas um voto por usuário é permitido neste tipo de enquete</string>
<string name="looking_for_event">Procurando o evento %1$s</string>
<string name="looking_for_event">"Procurando o evento %1$s"</string>
<string name="custom_zaps_add_a_message">Adicionar uma mensagem pública</string>
<string name="custom_zaps_add_a_message_private">Adicionar uma mensagem privada</string>
<string name="custom_zaps_add_a_message_nonzap">Adicionar uma mensagem</string>
@@ -328,9 +314,7 @@
<string name="no">Não</string>
<string name="follow_list_selection">Lista de seguidores</string>
<string name="follow_list_kind3follows">Seguindo</string>
<string name="follow_list_global">Global</string>
<string name="connect_through_your_orbot_setup_markdown">
## Conecte-se através do Tor com o Orbot
<string name="connect_through_your_orbot_setup_markdown"> ## Conecte-se através do Tor com o Orbot
\n\n1. Instale o [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android)
\n2. Iniciar Orbot
\n3. No Orbot, verifique a porta Socks. O padrão usa 9050
@@ -346,10 +330,9 @@
<string name="app_notification_dms_channel_description">Notifica você quando chega uma mensagem privada</string>
<string name="app_notification_zaps_channel_name">Zaps Recebidos</string>
<string name="app_notification_zaps_channel_description">Notifica quando alguém te manda um zap</string>
<string name="app_notification_zaps_channel_message">%1$s sats</string>
<string name="app_notification_zaps_channel_message_from">De %1$s</string>
<string name="app_notification_zaps_channel_message_for">por %1$s</string>
<string name="reply_notify">"Notificar: "</string>
<string name="reply_notify">Notificar: </string>
<string name="channel_list_join_conversation">Entrar na conversa</string>
<string name="channel_list_user_or_group_id">ID do usuário ou grupo</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent ou hex</string>
@@ -361,7 +344,7 @@
<string name="content_warning_hide_all_sensitive_content">Sempre ocultar conteúdo sensível</string>
<string name="content_warning_show_all_sensitive_content">Sempre mostrar conteúdo sensível</string>
<string name="content_warning_see_warnings">Sempre mostrar avisos de conteúdo</string>
<string name="recommended_apps">"Recomenda: "</string>
<string name="recommended_apps">Recomenda: </string>
<string name="filter_spam_from_strangers">Filtrar spam de estranhos</string>
<string name="warn_when_posts_have_reports_from_your_follows">Avise quando as postagens tiverem denuncias de seus seguidores</string>
<string name="new_reaction_symbol">Novo símbolo de reação</string>
@@ -382,7 +365,6 @@
<string name="limitations">Limitações</string>
<string name="countries">Países</string>
<string name="languages">Línguas</string>
<string name="tags">Tags</string>
<string name="posting_policy">Política de postagem</string>
<string name="message_length">Tamanho da mensagem</string>
<string name="subscriptions">Assinaturas</string>
@@ -404,10 +386,8 @@
<string name="live_stream_has_ended">Transmissão ao vivo encerrada</string>
<string name="are_you_sure_you_want_to_log_out">Sair exclui todas as suas informações locais. Certifique-se de fazer backup de suas chaves privadas para evitar a perda de sua conta. Você quer continuar?</string>
<string name="followed_tags">Tags Seguidas</string>
<string name="relay_setup">Relays</string>
<string name="discover_live">Ao vivo</string>
<string name="discover_community">Comunidade</string>
<string name="discover_chat">Chats</string>
<string name="community_approved_posts">Postagens Aprovadas</string>
<string name="groups_no_descriptor">Este grupo não tem uma descrição ou regras. Fale com o proprietário para adicionar</string>
<string name="community_no_descriptor">Esta comunidade não tem uma descrição. Fale com o proprietário para adicionar</string>
@@ -426,4 +406,5 @@
<string name="automatically_play_videos">Reproduzir vídeos automaticamente</string>
<string name="automatically_show_url_preview">Mostrar automaticamente a visualização da URL</string>
<string name="load_image">Carregar imagem</string>
<string name="new_feature_nip24_might_not_be_available_description">Ativando este modo requer o Amethyst para enviar uma mensagem de NIP-24 (GiftWrapped, Sealed Direct and Group Messages). NIP-24 é novo e a maioria dos clientes ainda não o implementaram. Certifique-se de que o destinatário está usando um cliente compatível.</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="point_to_the_qr_code">Наведите на QR код</string>
<string name="show_qr">Показать QR</string>
@@ -21,7 +22,8 @@
<string name="copy_user_pubkey">Скопировать ключ пользователя</string>
<string name="copy_note_id">Скопировать ID записи</string>
<string name="broadcast">Разослать</string>
<string name="block_hide_user">Заблокировать и скрыть пользователя</string>
<string name="request_deletion">Запросить удаление</string>
<string name="block_hide_user"><![CDATA[Заблокировать и скрыть пользователя]]></string>
<string name="report_spam_scam">Сообщить о спаме / мошенничестве</string>
<string name="report_impersonation">Сообщить о выдаче себя за другое лицо</string>
<string name="report_explicit_content">Сообщить об откровенном содержании</string>
@@ -34,7 +36,6 @@
<string name="zaps">Запы</string>
<string name="view_count">Просмотры</string>
<string name="boost">Продвинуть</string>
<string name="boosted">boosted</string>
<string name="quote">Цитировать</string>
<string name="new_amount_in_sats">Новая сумма в sat</string>
<string name="add">Добавить</string>
@@ -71,11 +72,13 @@
<string name="failed_to_upload_the_image">Не удалось загрузить фото</string>
<string name="relay_address">Адрес релея</string>
<string name="posts">Записи</string>
<string name="bytes">Байт</string>
<string name="errors">Ошибки</string>
<string name="home_feed">Домашняя лента</string>
<string name="private_message_feed">Лента личных сообщений</string>
<string name="public_chat_feed">Лента чатов</string>
<string name="global_feed">Глобальная лента</string>
<string name="search_feed">Поиск</string>
<string name="add_a_relay">Добавить релей</string>
<string name="display_name">Отображаемое имя</string>
<string name="my_display_name">Моё отображаемое имя</string>
@@ -117,6 +120,7 @@
<string name="send_a_direct_message">Отправить сообщение</string>
<string name="edits_the_user_s_metadata">Редактирует метаданные пользователя</string>
<string name="follow">Подписаться</string>
<string name="follow_back">Подписаться в ответ</string>
<string name="unblock">Разблокировать</string>
<string name="copy_user_id">Скопировать ID пользователя</string>
<string name="unblock_user">Разблокировать пользователя</string>
@@ -147,7 +151,7 @@
<string name="leave">Выйти</string>
<string name="unfollow">Отписаться</string>
<string name="channel_created">Канал создан</string>
<string name="channel_information_changed_to">Информация о канале изменена на</string>
<string name="channel_information_changed_to">"Информация о канале изменена на"</string>
<string name="public_chat">Публичный чат</string>
<string name="posts_received">записей получено</string>
<string name="remove">Удалить</string>
@@ -167,13 +171,11 @@
<string name="report_hateful_speech">Сообщить об оскорблениях</string>
<string name="report_nudity_porn">Сообщить о наготе / порно</string>
<string name="others">других</string>
<string name="search_feed">Поиск</string>
<string name="mark_all_known_as_read">Отметить все известные прочитанными</string>
<string name="mark_all_new_as_read">Отметить все новые прочитанными</string>
<string name="mark_all_as_read">Отметить всё прочитанным</string>
<string name="backup_keys">Резервное копирование</string>
<string name="account_backup_tips_md" tools:ignore="Typos">
## Резервное копирование и советы по безопасности
<string name="account_backup_tips_md" tools:ignore="Typos"> ## Резервное копирование и советы по безопасности
\n\nВаш аккаунт защищен приватным ключом. Этот ключ длинная случайная строка с приставкой **nsec1**. Любой, кто владеет вашим приватным ключом, может писать от вашего имени.
\n\n- **Никогда** не вставляйте ваш приватный ключ на сайтах или в приложениях, которым вы не доверяете.
\n- Разработчики Amethyst **никогда** не спросят ваш приватный ключ.
@@ -191,6 +193,15 @@
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">ID (npub) автора скопирован</string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">ID записи (note1) скопирован</string>
<string name="select_text_dialog_top">Выделить текст</string>
<string name="private_conversation_notification">"&lt;Не удалось расшифровать сообщение&gt;\n\nВас упомянули в приватном/зашифрованном чате между %1$s и %2$s."</string>
<string name="account_switch_add_account_dialog_title">Добавить аккаунт</string>
<string name="drawer_accounts">Аккаунты</string>
<string name="account_switch_select_account">Выбор аккаунта</string>
<string name="account_switch_add_account_btn">Добавить аккаунт</string>
<string name="account_switch_active_account">Текущий аккаунт</string>
<string name="account_switch_has_private_key">С приватным ключом</string>
<string name="account_switch_pubkey_only">Только чтение, без приватного ключа</string>
<string name="back">Назад</string>
<string name="quick_action_select">Выделить</string>
<string name="quick_action_share_browser_link">Поделиться ссылкой</string>
<string name="quick_action_share">Поделиться</string>
@@ -202,29 +213,19 @@
<string name="quick_action_follow">@string/follow</string>
<string name="quick_action_request_deletion_alert_title">Запросить удаление</string>
<string name="quick_action_request_deletion_alert_body">Amethyst попросит релеи, к которым вы сейчас подключены, удалить эту запись. Однако нет гарантии, что запись будет навсегда удалена этими релеями, либо другими, уже сохранившими её.</string>
<string name="quick_action_delete_button">Удалить</string>
<string name="quick_action_dont_show_again_button">Больше не показывать</string>
<string name="account_switch_add_account_dialog_title">Добавить аккаунт</string>
<string name="drawer_accounts">Аккаунты</string>
<string name="account_switch_select_account">Выбор аккаунта</string>
<string name="account_switch_add_account_btn">Добавить аккаунт</string>
<string name="account_switch_active_account">Текущий аккаунт</string>
<string name="account_switch_has_private_key">С приватным ключом</string>
<string name="account_switch_pubkey_only">Только чтение, без приватного ключа</string>
<string name="back">Назад</string>
<string name="request_deletion">Запросить удаление</string>
<string name="block_only">Заблокировать</string>
<string name="quick_action_block_dialog_btn">@string/block_only</string>
<string name="quick_action_delete_dialog_btn">Удалить</string>
<string name="quick_action_block">@string/block_only</string>
<string name="quick_action_report">Пожаловаться</string>
<string name="quick_action_delete_button">Удалить</string>
<string name="quick_action_dont_show_again_button">Больше не показывать</string>
<string name="report_dialog_spam">@string/spam</string>
<string name="report_dialog_profanity">@string/profanity_hateful_speech</string>
<string name="report_dialog_impersonation">@string/impersonation</string>
<string name="report_dialog_nudity">@string/nudity</string>
<string name="report_dialog_illegal">@string/illegal_behavior</string>
<string name="report_dialog_blocking_a_user">Заблокировать и скрыть пользователя для вас. Ваши записи останутся видны тем, кого вы заблокировали. Заблокированные пользователи перечислены на экране Фильтры безопасности</string>
<string name="report_dialog_block_hide_user_btn">@string/block_hide_user</string>
<string name="report_dialog_block_hide_user_btn"><![CDATA[@string/block_hide_user]]></string>
<string name="report_dialog_report_btn">Пожаловаться</string>
<string name="report_dialog_reminder_public">Все жалобы будут видны публично</string>
<string name="report_dialog_additional_reason_placeholder">По желанию предоставьте дополнительную информацию</string>
@@ -232,10 +233,8 @@
<string name="report_dialog_select_reason_label">Причина</string>
<string name="report_dialog_select_reason_placeholder">Выберите причину…</string>
<string name="report_dialog_post_report_btn">Отправить жалобу</string>
<string name="private_conversation_notification">"&lt;Не удалось расшифровать сообщение&gt;\n\nВас упомянули в приватном/зашифрованном чате между %1$s и %2$s."</string>
<string name="report_dialog_title">Заблокировать и пожаловаться</string>
<string name="bytes">Байт</string>
<string name="follow_back">Подписаться в ответ</string>
<string name="block_only">Заблокировать</string>
<string name="bookmarks">Закладки</string>
<string name="private_bookmarks">Личные закладки</string>
<string name="public_bookmarks">Публичные закладки</string>
@@ -261,13 +260,12 @@
<string name="poll_zap_value_min">Минимальный зап</string>
<string name="poll_zap_value_max">Максимальный зап</string>
<string name="poll_consensus_threshold">Консенсус</string>
<string name="poll_consensus_threshold_percent">(0100)%</string>
<string name="poll_closing_time">Закрытие после</string>
<string name="poll_closing_time_days">дней</string>
<string name="poll_is_closed">Опрос закрыт</string>
<string name="poll_zap_amount">Сумма запа</string>
<string name="one_vote_per_user_on_atomic_votes">В этом опросе можно голосовать только один раз</string>
<string name="looking_for_event">Поиск события %1$s</string>
<string name="looking_for_event">"Поиск события %1$s"</string>
<string name="custom_zaps_add_a_message">Добавить публичное сообщение</string>
<string name="custom_zaps_add_a_message_private">Добавить личное сообщение</string>
<string name="custom_zaps_add_a_message_nonzap">Добавить примечание к инвойсу</string>
@@ -298,22 +296,22 @@
<string name="upload_server_imgur_explainer">Imgur может изменять файл</string>
<string name="upload_server_nostrimg">nostrimg.com доверенный</string>
<string name="upload_server_nostrimg_explainer">NostrImg может изменять файл</string>
<string name="upload_server_imgur_nip94">Верифицируемый Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Проверка на изменение файла Imgur. Новый NIP: может не работать в других клиентах</string>
<string name="upload_server_nostrimg_nip94">Верифицируемый NostrImg (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">Проверка на изменение файла NostrImg. Новый NIP: может не работать в других клиентах</string>
<string name="upload_server_relays_nip95">Ваши релеи (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">Файл хранится на ваших релеях. Новый NIP: может не работать в других клиентах</string>
<string name="follow_list_kind3follows">Все подписки</string>
<string name="follow_list_global">Глобально</string>
<string name="upload_server_nostrbuild">nostr.build доверенный</string>
<string name="upload_server_nostrbuild_explainer">Nostr.build может изменять файл</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev доверенный</string>
<string name="upload_server_nostrfilesdev_explainer">Nostrfiles.dev может изменять файл</string>
<string name="upload_server_imgur_nip94">Верифицируемый Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Проверка на изменение файла Imgur. Новый NIP: может не работать в других клиентах</string>
<string name="upload_server_nostrimg_nip94">Верифицируемый NostrImg (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">Проверка на изменение файла NostrImg. Новый NIP: может не работать в других клиентах</string>
<string name="upload_server_nostrbuild_nip94">Верифицируемый Nostr.build (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94_explainer">Проверка на изменение файла Nostr.build. Новый NIP: может не работать в других клиентах</string>
<string name="upload_server_nostrfilesdev_nip94">Верифицируемый Nostrfiles.dev (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">Проверка на изменение файла nostrfiles.dev. Новый NIP: может не работать в других клиентах</string>
<string name="upload_server_relays_nip95">Ваши релеи (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">Файл хранится на ваших релеях. Новый NIP: может не работать в других клиентах</string>
<string name="follow_list_kind3follows">Все подписки</string>
<string name="follow_list_global">Глобально</string>
<string name="app_notification_dms_channel_name">Личные сообщения</string>
<string name="app_notification_dms_channel_description">Уведомления о входящих сообщениях</string>
<string name="app_notification_zaps_channel_name">Запы</string>
@@ -321,4 +319,4 @@
<string name="app_notification_zaps_channel_message">%1$s sat</string>
<string name="app_notification_zaps_channel_message_from">От %1$s</string>
<string name="app_notification_zaps_channel_message_for">за %1$s</string>
</resources>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="point_to_the_qr_code">Point to the QR Code</string>
<string name="point_to_the_qr_code">Peka på QR-koden</string>
<string name="show_qr">Visa QR</string>
<string name="profile_image">Profilbild</string>
<string name="scan_qr">Scanna QR</string>
@@ -22,8 +23,8 @@
<string name="copy_note_id">Kopiera anteckningens ID</string>
<string name="broadcast">Sänd ut</string>
<string name="request_deletion">Begär radering</string>
<string name="block_hide_user"><![CDATA[Blockera och göm användare]]></string>
<string name="block_report">Blockera / Rapportera</string>
<string name="block_hide_user"><![CDATA[Blockera och göm användare]]></string>
<string name="report_spam_scam">Rapportera Spam / Scam</string>
<string name="report_impersonation">Rapportera identitetsstöld</string>
<string name="report_explicit_content">Rapportera explicit innehåll</string>
@@ -37,8 +38,8 @@
<string name="login_with_a_private_key_to_be_able_to_unfollow">Logga in med en privat nyckel för att kunna sluta följa</string>
<string name="zaps">Zaps</string>
<string name="view_count">Antal visningar</string>
<string name="boost">Boost</string>
<string name="boosted">boosted</string>
<string name="boost">Boosta</string>
<string name="boosted">boostad</string>
<string name="quote">Citera</string>
<string name="new_amount_in_sats">Nytt belopp i Sats</string>
<string name="add">Lägg till</string>
@@ -78,7 +79,7 @@
<string name="relay_address">Relä Adress</string>
<string name="posts">Inlägg</string>
<string name="bytes">Bytes</string>
<string name="errors">Errors</string>
<string name="errors">Fel</string>
<string name="home_feed">Hem Flöde</string>
<string name="private_message_feed">Privata Meddelande Flöde</string>
<string name="public_chat_feed">Publik Chat Flöde</string>
@@ -160,7 +161,7 @@
<string name="public_chat">Publik Chat</string>
<string name="posts_received">mottagna inlägg</string>
<string name="remove">Ta bort</string>
<string name="translations_auto">Auto</string>
<string name="translations_auto">Automatiskt</string>
<string name="translations_translated_from">översatt från</string>
<string name="translations_to">till</string>
<string name="translations_show_in_lang_first">Visa i %1$s first</string>
@@ -181,8 +182,7 @@
<string name="mark_all_new_as_read">Markera alla nya som lästa</string>
<string name="mark_all_as_read">Markera allt som läst</string>
<string name="backup_keys">Backup-nycklar</string>
<string name="account_backup_tips_md" tools:ignore="Typos">
## Nyckelsäkerhetskopiering och säkerhetstips
<string name="account_backup_tips_md" tools:ignore="Typos"> ## Nyckelsäkerhetskopiering och säkerhetstips
\n\nDitt konto är skyddat av en hemlig nyckel. Nyckeln är en lång slumpmässig sträng som börjar med **nsec1**. Alla som har tillgång till din hemliga nyckel kan publicera innehåll med din identitet.
\n\n- Lägg **inte** in din hemliga nyckel på någon webbplats eller programvara som du inte litar på.
\n- Amethyst-utvecklare kommer **aldrig** att be dig om din hemliga nyckel.
@@ -190,7 +190,7 @@
<string name="secret_key_copied_to_clipboard">Hemlig nyckel (nsec) kopierad till urklipp</string>
<string name="copy_my_secret_key">Kopiera min hemliga nyckel</string>
<string name="biometric_authentication_failed">Autentisering misslyckades</string>
<string name="biometric_error">Error</string>
<string name="biometric_error">Fel</string>
<string name="badge_created_by">"Skapad av %1$s"</string>
<string name="badge_award_image_for">"Tilldelad Badge för %1$s"</string>
<string name="new_badge_award_notif">Du har blivit tilldelad en ny Badge </string>
@@ -207,7 +207,7 @@
<string name="account_switch_active_account">Aktivt konto</string>
<string name="account_switch_has_private_key">Har privat nyckel</string>
<string name="account_switch_pubkey_only">Läs bara, ingen privat nyckel</string>
<string name="back">Back</string>
<string name="back">Tillbaka</string>
<string name="quick_action_select">Välj</string>
<string name="quick_action_share_browser_link">Dela webbläsarlänk</string>
<string name="quick_action_share">Dela</string>
@@ -241,7 +241,6 @@
<string name="report_dialog_post_report_btn">Skicka rapport</string>
<string name="report_dialog_title">Blockera och rapportera</string>
<string name="block_only">Blockera</string>
<string name="bookmarks">Bokmärken</string>
<string name="private_bookmarks">Privata Bokmärken</string>
<string name="public_bookmarks">Publika Bokmärken</string>
@@ -249,7 +248,6 @@
<string name="add_to_public_bookmarks">Lägg till i Publika Bokmärken</string>
<string name="remove_from_private_bookmarks">Ta bort från Privata Bokmärken</string>
<string name="remove_from_public_bookmarks">Ta bort från Publika Bokmärken</string>
<string name="wallet_connect_service">Wallet Connect Tjänst</string>
<string name="wallet_connect_service_explainer">Tillåter en Nostr Secret att betala zaps utan att lämna appen. Håll hemligheten säker och använd ett privat relä om möjligt</string>
<string name="wallet_connect_service_pubkey">Wallet Connect Pubkey</string>
@@ -257,7 +255,6 @@
<string name="wallet_connect_service_secret">Wallet Connect hemlighet</string>
<string name="wallet_connect_service_show_secret">Visa secret key</string>
<string name="wallet_connect_service_secret_placeholder">nsec / hex privat nyckel</string>
<string name="pledge_amount_in_sats">Pantbelopp i Sats</string>
<string name="post_poll">Dela Poll</string>
<string name="poll_heading_required">Obligatoriska fält:</string>
@@ -275,95 +272,65 @@
<string name="poll_is_closed">Omröstningen är stängd för nya röster</string>
<string name="poll_zap_amount">Zap belopp</string>
<string name="one_vote_per_user_on_atomic_votes">Endast en röst per användare tillåts i denna typ av omröstning</string>
<string name="looking_for_event">"Letar efter Event %1$s"</string>
<string name="custom_zaps_add_a_message">Lägg till ett offentligt meddelande</string>
<string name="custom_zaps_add_a_message_private">Lägg till ett privat meddelande</string>
<string name="custom_zaps_add_a_message_nonzap">Lägg till ett fakturameddelande</string>
<string name="custom_zaps_add_a_message_example">Tack för allt ditt arbete!</string>
<string name="lightning_create_and_add_invoice">Skapa och lägg till</string>
<string name="poll_author_no_vote">Omröstningsskapare kan inte rösta i sina egna omröstningar.</string>
<string name="hash_verification_passed">Bilden är densamma sedan inlägget</string>
<string name="hash_verification_failed">Bilden har ändrats. Användaren kanske inte har sett förändringen</string>
<string name="content_description_add_image">Lägg till Bild</string>
<string name="content_description_add_video">Lägg till Video</string>
<string name="content_description_add_document">Lägg till Dokument</string>
<string name="add_content">Lägg till Meddelande</string>
<string name="content_description">Beskrivning av innehållet</string>
<string name="content_description_example">En blå båt på en vit sandstrand vid solnedgången</string>
<string name="zap_type">Zap Typ</string>
<string name="zap_type_explainer">Zap Typ för alla alternativ</string>
<string name="zap_type_public">Publik</string>
<string name="zap_type_public_explainer">Alla kan se transaktionen och meddelandet</string>
<string name="zap_type_private">Privat</string>
<string name="zap_type_private_explainer">Avsändare och mottagare kan se varandra och läsa meddelandet</string>
<string name="zap_type_anonymous">Anonym</string>
<string name="zap_type_anonymous_explainer">Mottagaren och allmänheten vet inte vem som skickade betalningen</string>
<string name="zap_type_nonzap">Ingen Zap</string>
<string name="zap_type_nonzap_explainer">Inga spår i Nostr, bara i Lightning</string>
<string name="file_server">Fil Server</string>
<string name="zap_forward_lnAddress">LnAdress eller @Användare</string>
<string name="upload_server_imgur">imgur.com - betrodd</string>
<string name="upload_server_imgur_explainer">Imgur kan ändra filen</string>
<string name="upload_server_nostrimg">nostrimg.com - betrodd</string>
<string name="upload_server_nostrimg_explainer">NostrImg kan ändra filen</string>
<string name="upload_server_nostrbuild">nostr.build - betrodd</string>
<string name="upload_server_nostrbuild_explainer">Nostr.build kan ändra filen</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev - betrodd</string>
<string name="upload_server_nostrfilesdev_explainer">Nostrfiles.dev kan ändra filen</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - betrodd</string>
<string name="upload_server_nostrcheckme_explainer">nostrcheck.me kan ändra filen</string>
<string name="upload_server_imgur_nip94">Verifierbar Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Kontrollerar om Imgur modifierat filen. Nytt NIP: andra klienter kanske inte ser det</string>
<string name="upload_server_nostrimg_nip94">Verifierbar NostrImg (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">Kontrollerar om NostrImg modifierat filen. Nytt NIP: andra klienter kanske inte ser det</string>
<string name="upload_server_nostrbuild_nip94">Verifierbar Nostr.build (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94_explainer">Kontrollerar om Nostr.build modifierat filen. Nytt NIP: andra klienter kanske inte ser det</string>
<string name="upload_server_nostrfilesdev_nip94">Verifierbar Nostrfiles.dev (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">Kontrollerar om Nostrfiles.dev modifierat filen. Nytt NIP: andra klienter kanske inte ser det</string>
<string name="upload_server_nostrcheckme_nip94">Verifierbar Nostrcheck.me (NIP-94)</string>
<string name="upload_server_nostrcheckme_nip94_explainer">Kontrollerar om Nostrcheck.me modifierat filen. Nytt NIP: andra klienter kanske inte ser det</string>
<string name="upload_server_relays_nip95">Dina Reläer (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">Filer är värd för dina reläer. Nytt NIP: kontrollera om de stöder</string>
<string name="connect_via_tor_short">Tor/Orbot Inställningar</string>
<string name="connect_via_tor">Anslut via dina Orbot-inställiningar</string>
<string name="do_you_really_want_to_disable_tor_title">Koppla från Orbot/Tor?</string>
<string name="do_you_really_want_to_disable_tor_text">Dina data kommer omedelbart att överföras till det vanliga nätverket</string>
<string name="yes">Ja</string>
<string name="no">Nej</string>
<string name="follow_list_selection">Följ lista</string>
<string name="follow_list_kind3follows">Alla följare</string>
<string name="follow_list_global">Global</string>
<string name="connect_through_your_orbot_setup_markdown">
## Anslut genom Tor med Orbot
<string name="connect_through_your_orbot_setup_markdown"> ## Anslut genom Tor med Orbot
\n\n1. Installera [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android)
\n2. Starta Orbot
\n3. Kontrollera Socks-porten i Orbot. Standarden använder 9050
@@ -374,18 +341,14 @@
<string name="invalid_port_number">Ogiltigt portnummer</string>
<string name="use_orbot">Använd Orbot</string>
<string name="disconnect_from_your_orbot_setup">Koppla ifrån Tor/Orbot</string>
<string name="app_notification_dms_channel_name">Privata Meddelade</string>
<string name="app_notification_dms_channel_description">Meddelar dig när ett privat meddelande kommer</string>
<string name="app_notification_zaps_channel_name">Zaps Mottaget</string>
<string name="app_notification_zaps_channel_description">Meddela dig när någon zappar dig</string>
<string name="app_notification_zaps_channel_message">%1$s sats</string>
<string name="app_notification_zaps_channel_message_from">Från %1$s</string>
<string name="app_notification_zaps_channel_message_for">till %1$s</string>
<string name="reply_notify">Meddela: </string>
<string name="channel_list_join_conversation">Gå med i konversation</string>
<string name="channel_list_user_or_group_id">Användare eller grupp ID</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent eller hex</string>
@@ -400,14 +363,11 @@
<string name="recommended_apps">Rekommenderas: </string>
<string name="filter_spam_from_strangers">Filtrera skräppost från främlingar</string>
<string name="warn_when_posts_have_reports_from_your_follows">Varna när inlägg har rapporter från dina följare</string>
<string name="new_reaction_symbol">Ny reaktionssymbol</string>
<string name="no_reaction_type_setup_long_press_to_change">Inga reaktionstyper valda. Håll ned för att ändra</string>
<string name="zapraiser">Zapraiser</string>
<string name="zapraiser">Zap insamling</string>
<string name="zapraiser_explainer">Lägger till en målsumma av sats för detta inlägg. Stödjande klienter kan visa detta som en framstegsindikator för att stimulera donationer</string>
<string name="zapraiser_target_amount_in_sats">Målsumma i sats</string>
<string name="sats_to_complete">Zapraiser på %1$s. %2$s sats kvar till målet</string>
<string name="read_from_relay">Läs från Relay</string>
<string name="write_to_relay">Skriv till Relay</string>
@@ -438,34 +398,27 @@
<string name="cashu_redeem">Inlösen</string>
<string name="no_lightning_address_set">Ingen Lightning-adress angiven</string>
<string name="copied_token_to_clipboard">Kopierade token till urklipp</string>
<string name="live_stream_live_tag">LIVE</string>
<string name="live_stream_offline_tag">OFFLINE</string>
<string name="live_stream_ended_tag">SLUTADE</string>
<string name="live_stream_planned_tag">PLANERAD</string>
<string name="live_stream_is_offline">Direktsändning är offline</string>
<string name="live_stream_has_ended">Direktsändning avslutad</string>
<string name="are_you_sure_you_want_to_log_out">Att logga ut raderar all din lokala information. Se till att ha dina privata nycklar säkerhetskopierade för att undvika att förlora ditt konto. Vill du fortsätta?</string>
<string name="followed_tags">Följda taggar</string>
<string name="relay_setup">Reläer</string>
<string name="discover_live">Live</string>
<string name="discover_community">Gemenskap</string>
<string name="discover_chat">Chattar</string>
<string name="community_approved_posts">Godkända Inlägg</string>
<string name="groups_no_descriptor">Denna grupp har ingen beskrivning eller regler. Prata med ägaren för att lägga till en.</string>
<string name="community_no_descriptor">Denna gemenskap har ingen beskrivning. Prata med ägaren för att lägga till en.</string>
<string name="add_sensitive_content_label">Känsligt innehåll</string>
<string name="add_sensitive_content_description">Lägger till varning för känsligt innehåll innan detta innehåll visas.</string>
<string name="settings">Inställningar</string>
<string name="connectivity_type_always">Alltid</string>
<string name="connectivity_type_wifi_only">Endast Wi-Fi</string>
<string name="connectivity_type_never">Aldrig</string>
<string name="system">System</string>
<string name="light">Ljus</string>
<string name="dark">Mörk</string>
@@ -476,52 +429,47 @@
<string name="automatically_play_videos">Spela automatiskt videor</string>
<string name="automatically_show_url_preview">Visa automatiskt förhandsgranskning av URL</string>
<string name="load_image">Ladda bild</string>
<string name="spamming_users">Spammare</string>
<string name="muted_button">Ljud avstängt. Klicka för att ta bort ljudlöst</string>
<string name="mute_button">Ljud på. Klicka för att stänga av ljudet</string>
<string name="search_button">Sök lokala och externa poster</string>
<string name="nip05_verified">Nostr-adress verifierad</string>
<string name="nip05_failed">Verifikation av Nostr-adress misslyckades</string>
<string name="nip05_checking">Kontrollerar Nostr-adress</string>
<string name="select_deselect_all">Välj/Avmarkera alla</string>
<string name="default_relays">Standard</string>
<string name="select_a_relay_to_continue">Välj ett relä för att fortsätta</string>
<string name="zap_forward_title">Vidarebefordra Zaps till:</string>
<string name="zap_forward_explainer">Stödjande klienter kommer att vidarebefordra Zaps till LNAddress eller användarprofilen nedan istället för din egen</string>
<string name="geohash_title">Exponera plats som </string>
<string name="geohash_explainer">Lägger till en Geohash av din plats i inlägget. Allmänheten kommer att veta att du befinner dig inom 5 km från nuvarande plats</string>
<string name="add_sensitive_content_explainer">Lägger till en varning för känsligt innehåll innan ditt innehåll visas. Detta är idealiskt för NSFW-innehåll (inte säkert för arbete) eller innehåll som vissa personer kan uppleva som stötande eller störande</string>
<string name="new_feature_nip24_might_not_be_available_title">Ny Funktion</string>
<string name="new_feature_nip24_might_not_be_available_description">För att aktivera denna funktion kräver det att Amethyst skickar ett NIP-24 meddelande (GiftWrapped, Förseglade Direkta och Gruppmeddelanden). NIP-24 är nytt och de flesta klienter har ännu inte implementerat det. Se till att mottagaren använder en kompatibel klient.</string>
<string name="new_feature_nip24_activate">Aktivera</string>
<string name="messages_create_public_chat">Publik</string>
<string name="messages_new_message">Privat</string>
<string name="messages_new_message_to">Till</string>
<string name="messages_new_message_subject">Ämne</string>
<string name="messages_new_message_subject_caption">Samtalsämne</string>
<string name="messages_new_message_to_caption">"@Användare1, @Användare2, @Användare3"</string>
<string name="messages_new_message_to_caption">"\@Användare1, @Användare2, @Användare3"</string>
<string name="messages_group_descriptor">Medlemmar i denna grupp</string>
<string name="messages_new_subject_message">Förklaring till medlemmar</string>
<string name="messages_new_subject_message_placeholder">Ändra namnet för de nya målen.</string>
<string name="language_description">För appens gränssnitt</string>
<string name="theme_description">Mörkt, Ljust eller Systemtema</string>
<string name="automatically_load_images_gifs_description">Ladda automatiskt bilder och GIFs</string>
<string name="automatically_play_videos_description">Spela upp videor och GIFs automatiskt</string>
<string name="automatically_show_url_preview_description">Visa förhandsgranskning av URL</string>
<string name="load_image_description">När bilder ska laddas</string>
<string name="copy_url_to_clipboard">Kopiera URL till urklipp</string>
<string name="copy_the_note_id_to_the_clipboard">Kopiera anteckningens ID till urklipp</string>
<string name="created_at">Skapad den</string>
<string name="rules">Regler</string>
<string name="status_update">Uppdatera din status</string>
<string name="lightning_wallets_not_found">Fel vid tolkning av felmeddelande</string>
<string name="poll_zap_value_min_max_explainer">Röster viktas av zap-beloppet. Du kan ställa in en minsta mängd för att undvika spammare och en maximal mängd för att undvika att en stor zapper tar över omröstningen. Använd samma belopp i båda fälten för att se till att varje röst värderas till samma belopp. Lämna tomt för att acceptera valfritt belopp.</string>
<string name="error_dialog_zap_error">Kunde inte skicka zap</string>
<string name="error_dialog_talk_to_user">Meddela användaren</string>
<string name="error_dialog_button_ok">Ok</string>
</resources>

View File

@@ -0,0 +1,476 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="point_to_the_qr_code">Elekeza kwa Msimbo wa QR</string>
<string name="show_qr">Onyesha QR</string>
<string name="profile_image">Picha ya Wasifu</string>
<string name="scan_qr">Changanua QR</string>
<string name="show_anyway">Onyesha Hata hivyo</string>
<string name="post_was_flagged_as_inappropriate_by">Chapisho liliripotiwa na</string>
<string name="post_not_found">Tukio linapakia au halipatikani kwenye orodha yako ya upeanaji</string>
<string name="channel_image">Picha ya Kituo</string>
<string name="referenced_event_not_found">Tukio linalorejelewa halijapatikana</string>
<string name="could_not_decrypt_the_message">Haikuweza kusimbua ujumbe</string>
<string name="group_picture">Picha ya Kikundi</string>
<string name="explicit_content">Maudhui Dhahiri</string>
<string name="spam">Barua taka</string>
<string name="impersonation">Uigaji</string>
<string name="illegal_behavior">Tabia Haramu</string>
<string name="unknown">Haijulikani</string>
<string name="relay_icon">Aikoni ya Relay</string>
<string name="unknown_author">Mwandishi asiyejulikana</string>
<string name="copy_text">Nakili Maandishi</string>
<string name="copy_user_pubkey">Nakili Kitambulisho cha Mwandishi</string>
<string name="copy_note_id">Nakili Kitambulisho cha Dokezo</string>
<string name="broadcast">Tangaza</string>
<string name="request_deletion">Omba Kufutwa</string>
<string name="block_report">Zuia / Ripoti</string>
<string name="block_hide_user"><![CDATA[Zuia na Ufiche Mtumiaji]]></string>
<string name="report_spam_scam">Ripoti Barua Taka / Ulaghai</string>
<string name="report_impersonation">Ripoti Uigaji</string>
<string name="report_explicit_content">Ripoti Maudhui Dhahiri</string>
<string name="report_illegal_behaviour">Ripoti Tabia Haramu</string>
<string name="login_with_a_private_key_to_be_able_to_reply">Ingia kwa kutumia Ufunguo wa Faragha ili uweze kujibu</string>
<string name="login_with_a_private_key_to_be_able_to_boost_posts">Ingia kwa kutumia ufunguo wa Faragha ili uweze kuboresha machapisho</string>
<string name="login_with_a_private_key_to_like_posts">Ingia kwa kutumia ufunguo wa Faragha ili kupenda Machapisho</string>
<string name="no_zap_amount_setup_long_press_to_change">Hakuna Usanidi wa Kiasi cha Zap. Bonyeza kwa Muda mrefu ili kubadilisha</string>
<string name="login_with_a_private_key_to_be_able_to_send_zaps">Ingia kwa kutumia ufunguo wa Faragha ili uweze kutuma Zaps</string>
<string name="login_with_a_private_key_to_be_able_to_follow">Ingia kwa kutumia Ufunguo wa Faragha ili uweze Kufuata</string>
<string name="login_with_a_private_key_to_be_able_to_unfollow">Ingia kwa kutumia Ufunguo wa Faragha ili uweze Kuacha Kufuata</string>
<string name="zaps">Zaps</string>
<string name="view_count">Idadi ya maoni</string>
<string name="boost">Kuongeza</string>
<string name="boosted">imeimarishwa</string>
<string name="quote">Nukuu</string>
<string name="new_amount_in_sats">Kiasi Kipya kwa Sats</string>
<string name="add">Ongeza</string>
<string name="replying_to">"kujibu "</string>
<string name="and">" na "</string>
<string name="in_channel">"katika chaneli "</string>
<string name="profile_banner">Bango la Wasifu</string>
<string name="payment_successful">Malipo Yamefaulu</string>
<string name="error_parsing_error_message">Hitilafu katika kuchanganua ujumbe wa hitilafu</string>
<string name="following">" Kufuatia"</string>
<string name="followers">" Wafuasi"</string>
<string name="profile">Wasifu</string>
<string name="security_filters">Vichujio vya Usalama</string>
<string name="log_out">Ondoka</string>
<string name="show_more">Onyesha Zaidi</string>
<string name="lightning_invoice">Ankara ya umeme</string>
<string name="pay">Lipa</string>
<string name="lightning_tips">Vidokezo vya Umeme</string>
<string name="note_to_receiver">Kumbuka kwa Mpokeaji</string>
<string name="thank_you_so_much">Asante sana!</string>
<string name="amount_in_sats">Kiasi katika Sats</string>
<string name="send_sats">Tuma Sats</string>
<string name="error_parsing_preview_for">"Hitilafu katika kuchanganua onyesho la kukagua %1$s : %2$s"</string>
<string name="preview_card_image_for">"Hakiki Picha ya Kadi ya %1$s"</string>
<string name="new_channel">Kituo Kipya</string>
<string name="channel_name">Kituo Kipya</string>
<string name="my_awesome_group">Kundi Langu la Ajabu</string>
<string name="picture_url">Url ya picha</string>
<string name="description">Maelezo</string>
<string name="about_us">"Kuhusu sisi.. "</string>
<string name="what_s_on_your_mind">Unafikiria nini?</string>
<string name="post">Tuma</string>
<string name="save">Hifadhi</string>
<string name="create">Unda</string>
<string name="cancel">Ghairi</string>
<string name="failed_to_upload_the_image">Kushindwa kupakia picha</string>
<string name="relay_address">Anwani ya Relay</string>
<string name="posts">Machapisho</string>
<string name="bytes">Bayti</string>
<string name="errors">Makosa</string>
<string name="home_feed">Malisho ya Nyumbani</string>
<string name="private_message_feed">Malisho ya Ujumbe Binafsi</string>
<string name="public_chat_feed">Malisho ya Mazungumzo ya Umma</string>
<string name="global_feed">Malisho ya Kimataifa</string>
<string name="search_feed">Malisho ya Utafutaji</string>
<string name="add_a_relay">Ongeza Relay</string>
<string name="display_name">Jina la Kuonyesha</string>
<string name="my_display_name">Jina langu la kuonyesha</string>
<string name="username">Jina la mtumiaji</string>
<string name="my_username">Jina langu la mtumiaji</string>
<string name="about_me">Kuhusu mimi</string>
<string name="avatar_url">URL ya Picha ya Profaili</string>
<string name="banner_url">URL ya Bango</string>
<string name="website_url">URL ya Tovuti</string>
<string name="ln_address">Anwani ya LN</string>
<string name="ln_url_outdated">URL ya LN (imepitwa na wakati)</string>
<string name="image_saved_to_the_gallery">Picha imesave kwenye galeria</string>
<string name="failed_to_save_the_image">Kushindwa kuhifadhi picha</string>
<string name="upload_image">Pakia Picha</string>
<string name="uploading">Inapakia…</string>
<string name="user_does_not_have_a_lightning_address_setup_to_receive_sats">Mtumiaji hana anwani ya umeme iliyoandaliwa kupokea sati</string>
<string name="reply_here">"jibu hapa.. "</string>
<string name="copies_the_note_id_to_the_clipboard_for_sharing">Hunakili Kitambulisho cha Dokezo kwenye ubao wa kunakili ili kushiriki katika Nostr</string>
<string name="copy_channel_id_note_to_the_clipboard">Nakili Kitambulisho cha Kituo (Kumbuka) kwenye Ubao wa kunakili</string>
<string name="edits_the_channel_metadata">Huhariri Metadata ya Kituo</string>
<string name="join">Jiunge</string>
<string name="known">Inajulikana</string>
<string name="new_requests">Maombi Mapya</string>
<string name="blocked_users">Watumiaji Waliozuiwa</string>
<string name="new_threads">Nyuzi Mpya</string>
<string name="conversations">Mazungumzo</string>
<string name="notes">Vidokezo</string>
<string name="replies">Majibu</string>
<string name="follows">"Anafuata"</string>
<string name="reports">"Reports"</string>
<string name="more_options">Chaguo Zaidi</string>
<string name="relays">" Relays"</string>
<string name="website">Tovuti</string>
<string name="lightning_address">Anwani ya Umeme</string>
<string name="copies_the_nsec_id_your_password_to_the_clipboard_for_backup">Hunakili Kitambulisho cha Nsec (nywila yako) kwenye ubao wa kunakili kwa ajili ya nakala rudufu</string>
<string name="copy_private_key_to_the_clipboard">Nakili Ufunguo wa Siri kwenye Ubao wa Kunakili</string>
<string name="copies_the_public_key_to_the_clipboard_for_sharing">Hunakili ufunguo wa umma kwenye ubao wa kunakili kwa ajili ya kushiriki</string>
<string name="copy_public_key_npub_to_the_clipboard">Nakili Ufunguo wa Umma (NPub) kwenye Ubao wa Kunakili</string>
<string name="send_a_direct_message">Tuma Ujumbe wa Moja kwa Moja</string>
<string name="edits_the_user_s_metadata">Huhariri Metadata ya Mtumiaji</string>
<string name="follow">Fuata</string>
<string name="follow_back">Fuata tena</string>
<string name="unblock">Fungua</string>
<string name="copy_user_id">Nakili Kitambulisho cha Mtumiaji</string>
<string name="unblock_user">Fungua Mtumiaji</string>
<string name="npub_hex_username">"npub, jina la mtumiaji, maandishi"</string>
<string name="clear">Ondoa</string>
<string name="app_logo">Nembo ya Programu</string>
<string name="nsec_npub_hex_private_key">nsec.. au npub..</string>
<string name="show_password">Onyesha Nywila</string>
<string name="hide_password">Ficha Nywila</string>
<string name="invalid_key">Ufunguo usiofaa</string>
<string name="i_accept_the">"Nakubali "</string>
<string name="terms_of_use">masharti ya matumizi</string>
<string name="acceptance_of_terms_is_required">Kukubaliana na masharti ni lazima</string>
<string name="key_is_required">Ufunguo unahitajika</string>
<string name="login">Ingia</string>
<string name="generate_a_new_key">Tengeneza Ufunguo Mpya</string>
<string name="loading_feed">Inapakia malisho</string>
<string name="error_loading_replies">"Kosa katika kupakia majibu: "</string>
<string name="try_again">Jaribu tena</string>
<string name="feed_is_empty">Malisho ni tupu.</string>
<string name="refresh">Sasisha</string>
<string name="created">imeundwa</string>
<string name="with_description_of">na maelezo ya</string>
<string name="and_picture">na picha</string>
<string name="changed_chat_name_to">ilisitisha jina la mazungumzo hadi</string>
<string name="description_to">maelezo ya</string>
<string name="and_picture_to">na picha ya</string>
<string name="leave">Ondoka</string>
<string name="unfollow">Acha kufuata</string>
<string name="channel_created">Kituo kimeundwa</string>
<string name="channel_information_changed_to">"Maelezo ya Kituo yamebadilika hadi"</string>
<string name="public_chat">Mazungumzo ya Umma</string>
<string name="posts_received">machapisho yamepokelewa</string>
<string name="remove">Ondoa</string>
<string name="translations_auto">Auto</string>
<string name="translations_translated_from">imetafsiriwa kutoka</string>
<string name="translations_to">kwa</string>
<string name="translations_show_in_lang_first">Onyesha kwa %1$s kwanza</string>
<string name="translations_always_translate_to_lang">Daima itafsiriwe kwa %1$s</string>
<string name="translations_never_translate_from_lang">Kamwe usitafsiri kutoka %1$s</string>
<string name="nip_05">Anwani ya Nostr</string>
<string name="never">kamwe</string>
<string name="now">sasa</string>
<string name="h">h</string>
<string name="m">m</string>
<string name="d">d</string>
<string name="nudity">Uchi</string>
<string name="profanity_hateful_speech">Lugha chafu / Maneno yenye chuki</string>
<string name="report_hateful_speech">Ripoti Lugha yenye chuki</string>
<string name="report_nudity_porn">Ripoti Uchi / Pornografia</string>
<string name="others">wengine</string>
<string name="mark_all_known_as_read">Funga kama Zimejulikana</string>
<string name="mark_all_new_as_read">Funga kama Mpya</string>
<string name="mark_all_as_read">Funga kama Zimejulikana</string>
<string name="backup_keys">Nakili Nakala za Ufunguo</string>
<string name="account_backup_tips_md" tools:ignore="Typos"> ## Ufundi wa Nakala ya Ufunguo na Usalama
\n\nAkaunti yako inalindwa na ufunguo wa siri. Ufunguo ni mfululizo mrefu wa herufi zisizo na mpangilio, ukitangulia na **nsec1**. Mtu yeyote aliye na ufikiaji wa ufunguo wako wa siri anaweza kuchapisha maudhui kwa kutumia kitambulisho chako.
\n\n- **Usiweke** ufunguo wako wa siri kwenye tovuti au programu usio na imani.
\n- Watengenezaji wa Amethyst **hawata** kuuliza ufunguo wako wa siri.
\n- **Tunashauri** kuwa na nakala rudufu salama ya ufunguo wako wa siri kwa ajili ya kupata akaunti. Tunapendekeza kutumia meneja wa nywila.
</string>
<string name="secret_key_copied_to_clipboard">Ufunguo wa siri (nsec) umeinakiliwa kwenye ubao wa kunakili</string>
<string name="copy_my_secret_key">Nakili Ufunguo Wangu wa Siri</string>
<string name="biometric_authentication_failed">Uthibitishaji umeshindwa</string>
<string name="biometric_error">Kosa</string>
<string name="badge_created_by">"Imeundwa na %1$s"</string>
<string name="badge_award_image_for">"Picha ya tuzo ya alama kwa %1$s"</string>
<string name="new_badge_award_notif">Umepokea Tuzo Mpya ya Alama</string>
<string name="award_granted_to">Tuzo ya alama imetolewa kwa</string>
<string name="copied_note_text_to_clipboard">Maudhui ya dokezo yamenakiliwa kwenye ubao wa kunakili</string>
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">Imesakinishwa @npub ya mwandishi kwa ubao wa kunakili</string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">Imesakinishwa ID ya andiko (@note1) kwa ubao wa kunakili</string>
<string name="select_text_dialog_top">Chagua Matini</string>
<string name="private_conversation_notification">"&lt;Haiwezi kuifanyia utawala ujumbe binafsi uliofichwa&gt;\n\nUlinukuliwa katika mazungumzo ya faragha/yaliyofichwa kati ya %1$s na %2$s."</string>
<string name="account_switch_add_account_dialog_title">Ongeza Akaunti Mpya</string>
<string name="drawer_accounts">Akaunti</string>
<string name="account_switch_select_account">Chagua Akaunti</string>
<string name="account_switch_add_account_btn">Ongeza Akaunti Mpya</string>
<string name="account_switch_active_account">Akaunti Iliyo Hai</string>
<string name="account_switch_has_private_key">Ina ufunguo wa faragha</string>
<string name="account_switch_pubkey_only">Soma tu, hakuna ufunguo wa faragha</string>
<string name="back">Rudi</string>
<string name="quick_action_select">Chagua</string>
<string name="quick_action_share_browser_link">Shiriki Kiungo cha Kivinjari</string>
<string name="quick_action_share">Shiriki</string>
<string name="quick_action_copy_user_id">ID ya Mwandishi</string>
<string name="quick_action_copy_note_id">ID ya Andiko</string>
<string name="quick_action_copy_text">Nakili Matini</string>
<string name="quick_action_delete">Futa</string>
<string name="quick_action_unfollow">Acha Kufuata</string>
<string name="quick_action_follow">Fuata</string>
<string name="quick_action_request_deletion_alert_title">Omba Kufutwa</string>
<string name="quick_action_request_deletion_alert_body">Amethyst itaomba kwamba andiko lako lifutwe kutoka kwa relays ambazo umekuwa umeunganishwa. Hakuna dhamana kwamba andiko lako litafutwa kabisa kutoka kwa relays hizo, au kutoka kwa relays nyingine ambapo linaweza kuwa limehifadhiwa.</string>
<string name="quick_action_block_dialog_btn">Zuia</string>
<string name="quick_action_delete_dialog_btn">Futa</string>
<string name="quick_action_block">Zuia</string>
<string name="quick_action_report">Ripoti</string>
<string name="quick_action_delete_button">Futa</string>
<string name="quick_action_dont_show_again_button">Usionyeshe Tena</string>
<string name="report_dialog_spam">Barua Taka au Udanganyifu</string>
<string name="report_dialog_profanity">Lugha chafu au tabia yenye chuki</string>
<string name="report_dialog_impersonation">Uigaaji mbaya</string>
<string name="report_dialog_nudity">Uchi au yaliyomo ya kushangaza</string>
<string name="report_dialog_illegal">Tabia Haramu</string>
<string name="report_dialog_blocking_a_user">Kuzuia mtumiaji kutaficha maudhui yao kwenye programu yako. Andiko zako bado zinaweza kuonekana kwa umma, pamoja na watu wanaokuzuia. Watumiaji waliozuiliwa wameorodheshwa kwenye skrini ya Filta za Usalama.</string>
<string name="report_dialog_block_hide_user_btn"><![CDATA[Zuia na Ficha Mtumiaji]]></string>
<string name="report_dialog_report_btn">Ripoti Matusi</string>
<string name="report_dialog_reminder_public">Ripoti zote zilizopostiwa zitaonekana kwa umma.</string>
<string name="report_dialog_additional_reason_placeholder">Toa muktadha wa ziada ikiwa unataka…</string>
<string name="report_dialog_additional_reason_label">Muktadha wa Ziada</string>
<string name="report_dialog_select_reason_label">Sababu</string>
<string name="report_dialog_select_reason_placeholder">Chagua sababu…</string>
<string name="report_dialog_post_report_btn">Chapisha Ripoti</string>
<string name="report_dialog_title">Zuia na Ripoti</string>
<string name="block_only">Zuia</string>
<string name="bookmarks">Vialamisho</string>
<string name="private_bookmarks">Vialamisho Binafsi</string>
<string name="public_bookmarks">Vialamisho vya Umma</string>
<string name="add_to_private_bookmarks">Ongeza kwenye Vialamisho Binafsi</string>
<string name="add_to_public_bookmarks">Ongeza kwenye Vialamisho vya Umma</string>
<string name="remove_from_private_bookmarks">Ondoa kutoka kwenye Vialamisho Binafsi</string>
<string name="remove_from_public_bookmarks">Ondoa kutoka kwenye Vialamisho vya Umma</string>
<string name="wallet_connect_service">Huduma ya Kuchanganya Pochi</string>
<string name="wallet_connect_service_explainer">Inaidhinisha Nostr Secret kulipa zaps bila kuacha programu. Weka siri salama na tumia relay ya faragha ikiwezekana</string>
<string name="wallet_connect_service_pubkey">Ufunguo wa Umma wa Kuchanganya Pochi</string>
<string name="wallet_connect_service_relay">Kuchanganya Relay</string>
<string name="wallet_connect_service_secret">Siri ya Kuchanganya Pochi</string>
<string name="wallet_connect_service_show_secret">Onyesha ufunguo wa siri</string>
<string name="wallet_connect_service_secret_placeholder">nsec / ufunguo wa siri wa hex</string>
<string name="pledge_amount_in_sats">Kiasi cha Ahadi katika Sats</string>
<string name="post_poll">Chapisha Kura</string>
<string name="poll_heading_required">Sehemu zinazohitajika:</string>
<string name="poll_zap_recipients">Wapokeaji wa Zaps</string>
<string name="poll_primary_description">Maelezo ya msingi ya kura…</string>
<string name="poll_option_index">Chaguo %s</string>
<string name="poll_option_description">Maelezo ya chaguo cha kura</string>
<string name="poll_heading_optional">Sehemu za hiari:</string>
<string name="poll_zap_value_min">Kima cha Chini cha Zaps</string>
<string name="poll_zap_value_max">Kima cha Juu cha Zaps</string>
<string name="poll_consensus_threshold">Uamuzi</string>
<string name="poll_consensus_threshold_percent">(0100)%</string>
<string name="poll_closing_time">Funga baada ya</string>
<string name="poll_closing_time_days">siku</string>
<string name="poll_is_closed">Kura imefungwa kwa kura mpya</string>
<string name="poll_zap_amount">Kiasi cha Zaps</string>
<string name="one_vote_per_user_on_atomic_votes">Kura moja tu kwa mtumiaji inaruhusiwa kwenye aina hii ya kura</string>
<string name="looking_for_event">"Inatafuta Tukio %1$s"</string>
<string name="custom_zaps_add_a_message">Ongeza ujumbe wa umma</string>
<string name="custom_zaps_add_a_message_private">Ongeza ujumbe wa faragha</string>
<string name="custom_zaps_add_a_message_nonzap">Ongeza ujumbe wa ankra</string>
<string name="custom_zaps_add_a_message_example">Asante kwa kazi yako yote!</string>
<string name="lightning_create_and_add_invoice">Tengeneza na Ongeza</string>
<string name="poll_author_no_vote">Waandishi wa kura hawawezi kupiga kura kwenye kura zao wenyewe.</string>
<string name="hash_verification_passed">Yaliyomo haya ni sawa tangu chapisho</string>
<string name="hash_verification_failed">Yaliyomo haya yamebadilika. Mwandishi huenda hakuyapata au kuyaidhinisha mabadiliko</string>
<string name="content_description_add_image">Ongeza Picha</string>
<string name="content_description_add_video">Ongeza Video</string>
<string name="content_description_add_document">Ongeza Hati</string>
<string name="add_content">Ongeza kwenye Ujumbe</string>
<string name="content_description">Maelezo ya yaliyomo</string>
<string name="content_description_example">Boti ya buluu kwenye ufukwe mweupe wa mchanga wakati wa jua</string>
<string name="zap_type">Aina ya Zap</string>
<string name="zap_type_explainer">Aina ya Zap kwa chaguo zote</string>
<string name="zap_type_public">Umma</string>
<string name="zap_type_public_explainer">Kila mtu anaweza kuona shughuli na ujumbe</string>
<string name="zap_type_private">Faragha</string>
<string name="zap_type_private_explainer">Mpokeaji na Mjumbe wanaweza kuona kila mmoja na kusoma ujumbe</string>
<string name="zap_type_anonymous">Bila Kutambuliwa</string>
<string name="zap_type_anonymous_explainer">Mpokeaji na umma hawajui ni nani aliyetuma malipo</string>
<string name="zap_type_nonzap">Bila Zap</string>
<string name="zap_type_nonzap_explainer">Hakuna alama katika Nostr, tu katika Lightning</string>
<string name="file_server">Seva ya Faili</string>
<string name="zap_forward_lnAddress">LnAddress au @Mtumiaji</string>
<string name="upload_server_imgur">imgur.com - inaaminika</string>
<string name="upload_server_imgur_explainer">Imgur inaweza kubadilisha faili</string>
<string name="upload_server_nostrimg">nostrimg.com - inaaminika</string>
<string name="upload_server_nostrimg_explainer">NostrImg inaweza kubadilisha faili</string>
<string name="upload_server_nostrbuild">nostr.build - inaaminika</string>
<string name="upload_server_nostrbuild_explainer">Nostr.build inaweza kubadilisha faili</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev - inaaminika</string>
<string name="upload_server_nostrfilesdev_explainer">Nostrfiles.dev inaweza kubadilisha faili</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - inaaminika</string>
<string name="upload_server_nostrcheckme_explainer">nostrcheck.me inaweza kubadilisha faili</string>
<string name="upload_server_imgur_nip94">Imgur inayoweza kuthibitika (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Inachunguza ikiwa Imgur imebadilisha faili. NIP mpya: wateja wengine huenda wasiione</string>
<string name="upload_server_nostrimg_nip94">NostrImg inayoweza kuthibitika (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">Inachunguza ikiwa NostrImg imebadilisha faili. NIP mpya: wateja wengine huenda wasiione</string>
<string name="upload_server_nostrbuild_nip94">Nostr.build inayoweza kuthibitika (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94_explainer">Inachunguza ikiwa Nostr.build imebadilisha faili. NIP mpya: wateja wengine huenda wasiione</string>
<string name="upload_server_nostrfilesdev_nip94">Nostrfiles.dev inayoweza kuthibitika (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">Inachunguza ikiwa Nostrfiles.dev imebadilisha faili. NIP mpya: wateja wengine huenda wasiione</string>
<string name="upload_server_nostrcheckme_nip94">Nostrcheck.me inayoweza kuthibitika (NIP-94)</string>
<string name="upload_server_nostrcheckme_nip94_explainer">Inachunguza ikiwa Nostrcheck.me imebadilisha faili. NIP mpya: wateja wengine huenda wasiione</string>
<string name="upload_server_relays_nip95">Relays Zako (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">Faili zinahifadhiwa na relays zako. NIP mpya: hakikisha zinazisaidia</string>
<string name="connect_via_tor_short">Usanidi wa Tor/Orbot</string>
<string name="connect_via_tor">Unaweza kuunganisha kupitia usanidi wako wa Orbot</string>
<string name="do_you_really_want_to_disable_tor_title">Kujitenga na Orbot/Tor yako?</string>
<string name="do_you_really_want_to_disable_tor_text">Data yako itahamishwa mara moja kwenye mtandao wa kawaida</string>
<string name="yes">Ndio</string>
<string name="no">Hapana</string>
<string name="follow_list_selection">Orodha ya Kufuatilia</string>
<string name="follow_list_kind3follows">Yafuatayo Yote</string>
<string name="follow_list_global">Kote</string>
<string name="connect_through_your_orbot_setup_markdown">## Kuungana kupitia Tor na Orbot
\n\n1. Sakinisha [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android)
\n2. Anza Orbot
\n3. Katika Orbot, angalia bandari ya Socks. Chaguo-msingi hutumia 9050
\n4. Ikiwa ni lazima, badilisha bandari katika Orbot
\n5. Sanidi bandari ya Socks kwenye skrini hii
\n6. Bonyeza kitufe cha Kuamilisha kutumia Orbot kama mbadala</string>
<string name="orbot_socks_port">Bandari ya Socks ya Orbot</string>
<string name="invalid_port_number">Nambari ya bandari sio sahihi</string>
<string name="use_orbot">Tumia Orbot</string>
<string name="disconnect_from_your_orbot_setup">Jitenge na Tor/Orbot yako</string>
<string name="app_notification_dms_channel_name">Ujumbe Binafsi</string>
<string name="app_notification_dms_channel_description">Inakuarifu wakati ujumbe binafsi unapowasili</string>
<string name="app_notification_zaps_channel_name">Zaps Zilizopokelewa</string>
<string name="app_notification_zaps_channel_description">Inakuarifu wakati mtu anapokuzap</string>
<string name="app_notification_zaps_channel_message">%1$s sats</string>
<string name="app_notification_zaps_channel_message_from">Kutoka kwa %1$s</string>
<string name="app_notification_zaps_channel_message_for">kwa %1$s</string>
<string name="reply_notify">Taarifa: </string>
<string name="channel_list_join_conversation">jiunge kwenye mazungumzo</string>
<string name="channel_list_user_or_group_id">Kitambulisho cha Mtumiaji au Kikundi</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent au hex</string>
<string name="channel_list_create_channel">Unda</string>
<string name="channel_list_join_channel">jiunge</string>
<string name="today">Leo</string>
<string name="content_warning">Onyo la Yaliyomo</string>
<string name="content_warning_explanation">Chapisho hili lina yaliyomo nyeti ambayo baadhi ya watu wanaweza kuona kama ya kuchukiza au kusumbua</string>
<string name="content_warning_hide_all_sensitive_content">Daima ficha yaliyomo nyeti</string>
<string name="content_warning_show_all_sensitive_content">Daima onyesha yaliyomo nyeti</string>
<string name="content_warning_see_warnings">Daima onyesha onyo za yaliyomo</string>
<string name="recommended_apps">Inapendekeza: </string>
<string name="filter_spam_from_strangers">Chuja barua taka kutoka kwa wageni</string>
<string name="warn_when_posts_have_reports_from_your_follows">Onya wakati machapisho yana ripoti kutoka kwa wafuatavyo wako</string>
<string name="new_reaction_symbol">Alama Mpya ya Majibu</string>
<string name="no_reaction_type_setup_long_press_to_change">Hakuna aina za majibu zilizochaguliwa. Bonyeza kwa muda mrefu kubadilisha</string>
<string name="zapraiser">Mzushi wa Zaps</string>
<string name="zapraiser_explainer">Inaongeza kiasi lengwa cha sats kwa chapisho hili. Wateja wanaosaidia wanaweza kuonyesha hii kama bar ya maendeleo ili kuhimiza michango</string>
<string name="zapraiser_target_amount_in_sats">Kiasi Lengo katika Sats</string>
<string name="sats_to_complete">Mzushi wa Zaps kwa %1$s. Sats %2$s hadi kufikia lengo</string>
<string name="read_from_relay">Soma kutoka kwa Relay</string>
<string name="write_to_relay">Andika kwa Relay</string>
<string name="an_error_occurred_trying_to_get_relay_information">Kuna kosa lililotokea jaribu kupata habari za Relay kutoka kwa %1$s</string>
<string name="owner">Mmiliki</string>
<string name="version">Toleo</string>
<string name="software">Programu</string>
<string name="contact">Wasiliana</string>
<string name="supports">NIPs Zinazoungwa mkono</string>
<string name="admission_fees">Ada za Kuingia</string>
<string name="payments_url">URL ya Malipo</string>
<string name="limitations">Vikwazo</string>
<string name="countries">Nchi</string>
<string name="languages">Lugha</string>
<string name="tags">Alama</string>
<string name="posting_policy">Sera ya Kutuma</string>
<string name="message_length">Urefu wa Ujumbe</string>
<string name="subscriptions">Michango</string>
<string name="filters">Vichujio</string>
<string name="subscription_id_length">Urefu wa Kitambulisho cha Michango</string>
<string name="minimum_prefix">Awamu ya Chini</string>
<string name="maximum_event_tags">Vichwa vya Tukio vya Juu</string>
<string name="content_length">Urefu wa Yaliyomo</string>
<string name="minimum_pow">PoW ya Chini</string>
<string name="auth">Uthibitishaji</string>
<string name="payment">Malipo</string>
<string name="cashu">Cashu Token</string>
<string name="cashu_redeem">Kukomboa</string>
<string name="no_lightning_address_set">Hakuna Anwani ya Lightning Imewekwa</string>
<string name="copied_token_to_clipboard">Kitufe kimekopwa kwenye ubao wa kunakili</string>
<string name="live_stream_live_tag">Moja kwa Moja</string>
<string name="live_stream_offline_tag">Nje ya Mtandao</string>
<string name="live_stream_ended_tag">Imemalizika</string>
<string name="live_stream_planned_tag">Imepangwa</string>
<string name="live_stream_is_offline">Moja kwa Moja Imekwama</string>
<string name="live_stream_has_ended">Moja kwa Moja Imekwisha</string>
<string name="are_you_sure_you_want_to_log_out">Kutoka kunaondoa taarifa zako za eneo la kuhifadhia data. Hakikisha una nakala za funguo zako binafsi ili kuepuka kupoteza akaunti yako. Je, unataka kuendelea?</string>
<string name="followed_tags">Mada Zinazofuatwa</string>
<string name="relay_setup">Usanidi wa Relays</string>
<string name="discover_live">Moja kwa Moja</string>
<string name="discover_community">Jumuiya</string>
<string name="discover_chat">Mazungumzo</string>
<string name="community_approved_posts">Machapisho Yaliyoidhinishwa</string>
<string name="groups_no_descriptor">Kikundi hiki hakitumii maelezo au kanuni. Ongea na mmiliki ili aongeze.</string>
<string name="community_no_descriptor">Jumuiya hii haitumii maelezo. Ongea na mmiliki ili aongeze.</string>
<string name="add_sensitive_content_label">Yaliyomo Nyeti</string>
<string name="add_sensitive_content_description">Inaongeza onyo la yaliyomo nyeti kabla ya kuonyesha yaliyomo hii</string>
<string name="settings">Mipangilio</string>
<string name="connectivity_type_always">Daima</string>
<string name="connectivity_type_wifi_only">Wi-Fi tu</string>
<string name="connectivity_type_never">Kamwe</string>
<string name="system">Mfumo</string>
<string name="light">Mwanga</string>
<string name="dark">Giza</string>
<string name="application_preferences">Mapendeleo ya Programu</string>
<string name="language">Lugha</string>
<string name="theme">Mandhari</string>
<string name="automatically_load_images_gifs">Onesha Picha</string>
<string name="automatically_play_videos">Cheza Video</string>
<string name="automatically_show_url_preview">Onesha Hakikisho za URL</string>
<string name="load_image">Soma Picha</string>
<string name="spamming_users">Wahasibu</string>
<string name="muted_button">Walemavu. Bonyeza kuwasha sauti</string>
<string name="mute_button">Sauti imewashwa. Bonyeza kulegeza</string>
<string name="search_button">Tafuta rekodi za eneo la kuhifadhia data na rekodi za mbali</string>
<string name="nip05_verified">Anwani ya Nostr ilithibitishwa</string>
<string name="nip05_failed">Anwani ya Nostr ilishindwa kuthibitishwa</string>
<string name="nip05_checking">Kuthibitisha Anwani ya Nostr</string>
<string name="select_deselect_all">Chagua/Chagua Vingine Vyote</string>
<string name="default_relays">Chaguo-msingi</string>
<string name="select_a_relay_to_continue">Chagua kiotomatiki kuendelea</string>
<string name="zap_forward_title">Tuma Zaps kwa:</string>
<string name="zap_forward_explainer">Wateja wanaosaidia watatuma Zaps kwa LNAddress au Wasifu wa Mtumiaji hapa chini badala ya yako</string>
<string name="geohash_title">Tumia Mahali kama </string>
<string name="geohash_explainer">Inaongeza Geohash ya eneo lako kwenye chapisho. Umma utajua kuwa uko ndani ya kilometa 5 (maili 3) ya eneo la sasa</string>
<string name="add_sensitive_content_explainer">Inaongeza onyo la yaliyomo nyeti kabla ya kuonyesha yaliyomo yako. Hii ni nzuri kwa yaliyomo yoyote ya NSFW au yaliyomo ambayo baadhi ya watu wanaweza kuona kama ya kuchukiza au kusumbua</string>
<string name="new_feature_nip24_might_not_be_available_title">Kipengee Kipya</string>
<string name="new_feature_nip24_might_not_be_available_description">Kuwezesha hali hii kunahitaji Amethyst kutuma ujumbe wa NIP-24 (Ufungaji wa Zawadi, Ujumbe wa Moja kwa Moja Uliosajiliwa, na Ujumbe wa Kikundi). NIP-24 ni mpya na wateja wengi bado hawajaijumuisha. Hakikisha mpokeaji anatumia mteja unaokubaliana.</string>
<string name="new_feature_nip24_activate">Tumia</string>
<string name="messages_create_public_chat">Umma</string>
<string name="messages_new_message">Binafsi</string>
<string name="messages_new_message_to">Kwa</string>
<string name="messages_new_message_subject">Somo</string>
<string name="messages_new_message_subject_caption">Mada ya mazungumzo</string>
<string name="messages_new_message_to_caption">"\@User1, @User2, @User3"</string>
<string name="messages_group_descriptor">Wanachama wa kikundi hiki</string>
<string name="messages_new_subject_message">Maelezo kwa wanachama</string>
<string name="messages_new_subject_message_placeholder">Kubadilisha jina kwa malengo mapya.</string>
<string name="language_description">Kwa Interface ya Programu</string>
<string name="theme_description">Mada ya Giza, Mada ya Mwanga, au Mada ya Mfumo</string>
<string name="automatically_load_images_gifs_description">Lisha picha na GIFs kiotomatiki</string>
<string name="automatically_play_videos_description">Cheza video na GIFs kiotomatiki</string>
<string name="automatically_show_url_preview_description">Onyesha hakikisho za URL kiotomatiki</string>
<string name="load_image_description">Lini kusoma picha</string>
<string name="copy_url_to_clipboard">Nakili URL kwa ubao wa kunakili</string>
<string name="copy_the_note_id_to_the_clipboard">Nakili Kitambulisho cha Andiko kwa ubao wa kunakili</string>
<string name="created_at">Imetengenezwa saa</string>
<string name="rules">Miongozo</string>
<string name="status_update">Sasisha hali yako</string>
<string name="lightning_wallets_not_found">Kosa katika uchambuzi wa ujumbe wa kosa</string>
<string name="poll_zap_value_min_max_explainer">Kura zina uzito kulingana na kiasi cha zap. Unaweza kuweka kiasi cha chini ili kuepuka wahasibu na kiasi cha juu ili kuepuka wahasibu wakubwa kuchukua kura ya maoni. Tumia kiasi sawa katika sehemu zote mbili ili kuhakikisha kila kura inathaminiwa kwa kiasi sawa. Acha tupu ili kukubali kiasi chochote.</string>
<string name="error_dialog_zap_error">Haiwezekani kutuma zap</string>
<string name="error_dialog_talk_to_user">Tuma ujumbe kwa mtumiaji</string>
<string name="error_dialog_button_ok">Sawa</string>
</resources>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"></resources>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="point_to_the_qr_code">QR குறியீட்டைச் சுட்டிக்காட்டவும்</string>
<string name="show_qr">QR ஐக் காட்டவும்</string>
<string name="profile_image">தன்விவரப் படம்</string>
@@ -7,7 +7,6 @@
<string name="show_anyway">பரவாயில்லை, காட்டவும்</string>
<string name="post_was_flagged_as_inappropriate_by">குறிப்பு தகாதது என குறிக்கப்பட்டது. குறித்தவர்</string>
<string name="post_not_found">குறிப்பு கிடைக்கவில்லை</string>
<string name="channel_image">Channel Image</string>
<string name="referenced_event_not_found">குறிப்பிடப்பட்ட நிகழ்வு கிடைக்கவில்லை</string>
<string name="could_not_decrypt_the_message">செய்தியை மறைகுறியாக்க முடியவில்லை</string>
<string name="group_picture">குழுப் படம்</string>
@@ -23,7 +22,7 @@
<string name="copy_note_id">குறிப்பின் IDஐ நகலெடுக்கவும்</string>
<string name="broadcast">ஒளிபரப்பு</string>
<string name="request_deletion">நீக்கக் கோரு</string>
<string name="block_hide_user">பயனரை முடக்கு + மறை</string>
<string name="block_hide_user"><![CDATA[பயனரை முடக்கு + மறை]]></string>
<string name="report_spam_scam">எரிதம் / மோசடி என்று புகாரளிக்கவும்</string>
<string name="report_impersonation">ஆள்மாறாட்டத்தைப் புகாரளிக்கவும்</string>
<string name="report_explicit_content">வெளிப்படையான உள்ளடக்கத்தைப் புகாரளிக்கவும்</string>
@@ -41,7 +40,7 @@
<string name="new_amount_in_sats">புதிய தொகை (ஸாட்களில்)</string>
<string name="add">சேர்</string>
<string name="replying_to">"பதில் பெறுநர் "</string>
<string name="and">மற்றும்</string>
<string name="and">"மற்றும்"</string>
<string name="in_channel">"அலை வரிசையில் "</string>
<string name="profile_banner">தன்விவர பேனர்</string>
<string name="following">" பின்பற்றப்படுவோர்"</string>
@@ -158,15 +157,11 @@
<string name="remove">அகற்று</string>
<string name="translations_auto">தானியங்கி</string>
<string name="translations_translated_from">மூல மொழி:</string>
<string name="translations_to"></string>
<string name="translations_show_in_lang_first">முதலில் %1$s இல் காண்பி</string>
<string name="translations_always_translate_to_lang">எப்போதும் %1$s க்கு மொழிபெயர்க்கவும்</string>
<string name="translations_never_translate_from_lang">%1$s இலிருந்து ஒருபோதும் மொழிபெயர்க்க வேண்டாம்</string>
<string name="never">ஒருபோதும் இல்லை</string>
<string name="now">இப்போது</string>
<string name="h">h</string>
<string name="m">m</string>
<string name="d">d</string>
<string name="nudity">பிறந்தமேனி</string>
<string name="profanity_hateful_speech">அவதூறு / வெறுப்புப் பேச்சு</string>
<string name="report_hateful_speech">வெறுப்புப் பேச்சைப் புகாரளிக்கவும்</string>
@@ -176,8 +171,7 @@
<string name="mark_all_new_as_read">புதியனவற்றைப் படித்ததாகக் குறி</string>
<string name="mark_all_as_read">அனைத்தையும் படித்ததாகக் குறி</string>
<string name="backup_keys">காப்புச் சாவிகள்</string>
<string name="account_backup_tips_md">
## முக்கிய காப்புப்பிரதி மற்றும் பாதுகாப்பு உதவிக்குறிப்புகள்
<string name="account_backup_tips_md" tools:ignore="Typos"> ## முக்கிய காப்புப்பிரதி மற்றும் பாதுகாப்பு உதவிக்குறிப்புகள்
\n\n உங்கள் கணக்கு ஒரு ரகசியசாவியால் பாதுகாக்கப்படுகிறது. சாவி **nsec1** என்று தொடங்கும் நீண்ட சீரற்ற எழுத்து வடிவம். உங்கள் ரகசிய சாவியை அணுகக்கூடிய எவரும் உங்கள் அடையாளத்தைப் பயன்படுத்தி உள்ளடக்கத்தை வெளியிடலாம்.
\n\n- நீங்கள் நம்பாத எந்த வலைத்தளம் அல்லது மென்பொருளிலும் உங்கள் ரகசிய விசையை வைக்க **வேண்டாம்**.
\ n- அமேதிஸ்ட் டெவலப்பர்கள் உங்கள் ரகசியசாவியை உங்களிடம் எப்போதும் கேட்க மாட்டார்கள்.
@@ -192,8 +186,8 @@
<string name="new_badge_award_notif">நீங்கள் ஒரு புதிய பேட்ஜ் விருதைப் பெற்றீர்கள்</string>
<string name="award_granted_to">பேட்ஜ் விருது வழங்கப்பட்டது. பெறுநர்:</string>
<string name="copied_note_text_to_clipboard">குறிப்பு கிளிப்போர்டுக்கு நகலெடுக்கப் பட்டது</string>
<string name="copied_user_id_to_clipboard">கிளிப்போர்டுக்கு எழுத்தாளரின் @npub நகலெடுக்கப் பட்டது</string>
<string name="copied_note_id_to_clipboard">கிளிப்போர்டுக்கு குறிப்பு ஐடி (@note1) நகலெடுக்கப் பட்டது</string>
<string name="copied_user_id_to_clipboard" tools:ignore="Typos">கிளிப்போர்டுக்கு எழுத்தாளரின் @npub நகலெடுக்கப் பட்டது</string>
<string name="copied_note_id_to_clipboard" tools:ignore="Typos">கிளிப்போர்டுக்கு குறிப்பு ஐடி (@note1) நகலெடுக்கப் பட்டது</string>
<string name="select_text_dialog_top">உரையைத் தேர்ந்தெடுக்கவும்</string>
<string name="private_conversation_notification">"தனிப்பட்ட செய்தியை மறைக்குறியாக்க இயலவில்லை \n \n %1$s மற்றும் %2$s க்கு இடையே தனிப்பட்ட/ குறியாக்கப்பட்ட உரையாடலில் நீங்கள் மேற்கோள் காட்டப்பட்டீர்கள்."</string>
<string name="account_switch_add_account_dialog_title">புதிய கணக்கைச் சேர்க்கவும்</string>
@@ -227,7 +221,7 @@
<string name="report_dialog_nudity">பிறந்தமேனி / தகாத உள்ளடக்கம்</string>
<string name="report_dialog_illegal">சட்டப்புறம்பான நடத்தை</string>
<string name="report_dialog_blocking_a_user">ஒரு பயனரைத் தடுப்பது உங்கள் பயன்பாட்டில் அவர்களின் உள்ளடக்கத்தை மறைக்கும். நீங்கள் தடுக்கும் நபர்கள் உட்பட உங்கள் பதிவுகள் இன்னும் வெளிப்படையாகக் காணப்படுகின்றன. தடுக்கப்பட்டப் பயனர்கள், பாதுகாப்பு வடிப்பான்கள் திரையில் பட்டியலிடப்பட்டுள்ளனர்.</string>
<string name="report_dialog_block_hide_user_btn">பயனரைத் தடுத்து மறை</string>
<string name="report_dialog_block_hide_user_btn"><![CDATA[பயனரைத் தடுத்து மறை]]></string>
<string name="report_dialog_report_btn">தகாதது எனக் குறி</string>
<string name="report_dialog_reminder_public">இடுகையிடப்பட்ட அனைத்து அறிக்கைகளும் வெளிப்படையாகத் தெரியும்.</string>
<string name="report_dialog_additional_reason_placeholder">உங்கள் அறிக்கையைப் பற்றிய கூடுதல் சூழலை விருப்பமாக வழங்கவும்…</string>
@@ -252,7 +246,6 @@
<string name="wallet_connect_service_show_secret">மறைமுகச் சாவியைக் காட்டு</string>
<string name="wallet_connect_service_secret_placeholder">nsec / hex தனிப்பட்ட சாவி</string>
<string name="pledge_amount_in_sats">உறுதிமொழி தொகை (ஸாட்களில்)</string>
<string name="post_poll"></string>
<string name="poll_heading_required">தேவையான புலங்கள்:</string>
<string name="poll_zap_recipients">ஜாப் பெறுநர்கள்</string>
<string name="poll_primary_description">முதன்மை வாக்கெடுப்பு விளக்கம்…</string>
@@ -262,7 +255,6 @@
<string name="poll_zap_value_min">குறைந்தளவு ஜாப்</string>
<string name="poll_zap_value_max">அதிகளவு ஜாப்</string>
<string name="poll_consensus_threshold">ஒருமித்த கருத்து</string>
<string name="poll_consensus_threshold_percent">(0100)%</string>
<string name="poll_closing_time">நிறைவுறும் நேரம்</string>
<string name="poll_closing_time_days">நாட்களில்</string>
<string name="poll_is_closed">வாக்கெடுப்பு நிறுத்திவைக்கப்பட்டு உள்ளது</string>
@@ -284,169 +276,126 @@
<string name="content_description">உள்ளடக்க விளக்கம்</string>
<string name="content_description_example">சூரியன் மறையும் வேளையில் வெள்ளை மண் நிறைந்த கடற்கரையில் ஒரு நீலப் படகு</string>
<string name="zap_type">ஜாப் வகை</string>
<string name="zap_type_explainer">அனைத்து வகைமைக்குமான ஜாப்</string>
<string name="zap_type_public">பொது</string>
<string name="zap_type_public_explainer">அனைவரும் ஜாப் பரிவர்த்தனையையும் செய்தியையும் பார்க்கமுடியும்</string>
<string name="zap_type_private">தனிப்பட்ட</string>
<string name="zap_type_private_explainer">பெறுபவரும் அனுப்புபவரும் மட்டும் ஒருவரை ஒருவர் மற்றும் ஜாப் செய்தியை பார்க்கமுடியும்</string>
<string name="zap_type_anonymous">பெயர் ரகசியமாக</string>
<string name="zap_type_anonymous_explainer">பெறுபவருக்கும் மற்றவருக்கும் ஜாப் அனுப்புபவர் யார் என்று தெரியாது</string>
<string name="zap_type_nonzap">அல்லாத-ஜாப்</string>
<string name="zap_type_nonzap_explainer">நாஸ்டரில் எந்த சுவடும் இன்றி, லைட்நிங்கில் மட்டும் உள்ளது</string>
<string name="file_server">கோப்புச் சேவையகம்</string>
<string name="zap_forward_lnAddress">LN முகவரி அல்லது @பயனர</string>
<string name="upload_server_imgur">imgur.com - நம்பகமானது</string>
<string name="upload_server_imgur_explainer">imgur கோப்பை மாற்றமுடியும்</string>
<string name="upload_server_nostrimg">nostrimg.com - நம்பகமானது</string>
<string name="upload_server_nostrimg_explainer">NostrImg கோப்பை மாற்றமுடியும்</string>
<string name="upload_server_nostrbuild">nostr.build - நம்பகமானது</string>
<string name="upload_server_nostrbuild_explainer">nostr.build கோப்பை மாற்றமுடியும்</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev - நம்பகமானது</string>
<string name="upload_server_nostrfilesdev_explainer">nostrfiles.dev கோப்பை மாற்றமுடியும்</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - நம்பகமானது</string>
<string name="upload_server_nostrcheckme_explainer">nostrcheck.me கோப்பை மாற்றமுடியும்</string>
<string name="upload_server_imgur_nip94">சரிபார்க்கக்கூடிய Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Imgur கோப்பை மாற்றியிருக்கிறதா என்று சரிபார்க்கப்படும். புதிய NIP: பிற கிளயண்ட்டுகளில் இதை பார்க்க முடியாமல் இருக்கலாம்.</string>
<string name="upload_server_nostrimg_nip94">சரிபார்க்கக்கூடிய NostrImg (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">NostrImg கோப்பை மாற்றியிருக்கிறதா என்று சரிபார்க்கப்படும். புதிய NIP: பிற கிளயண்ட்டுகளில் இதை பார்க்க முடியாமல் இருக்கலாம்.</string>
<string name="upload_server_nostrbuild_nip94">சரிபார்க்கக்கூடிய Nostr.build (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94_explainer">Nostr.build கோப்பை மாற்றியிருக்கிறதா என்று சரிபார்க்கப்படும். புதிய NIP: பிற கிளயண்ட்டுகளில் இதை பார்க்க முடியாமல் இருக்கலாம்.</string>
<string name="upload_server_nostrfilesdev_nip94">சரிபார்க்கக்கூடிய Nostrfiles.dev (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">Nostrfiles.dev கோப்பை மாற்றியிருக்கிறதா என்று சரிபார்க்கப்படும். புதிய NIP: பிற கிளயண்ட்டுகளில் இதை பார்க்க முடியாமல் இருக்கலாம்.</string>
<string name="upload_server_nostrcheckme_nip94">சரிபார்க்கக்கூடிய Nostrcheck.me (NIP-94)</string>
<string name="upload_server_nostrcheckme_nip94_explainer">Nostrcheck.me கோப்பை மாற்றியிருக்கிறதா என்று சரிபார்க்கப்படும். புதிய NIP: பிற கிளயண்ட்டுகளில் இதை பார்க்க முடியாமல் இருக்கலாம்.</string>
<string name="upload_server_relays_nip95">உங்கள் ரிலே (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">ஃபைல்ஸ் உங்கள் ரிலேக்களில் ஹோஸ்ட் செய்யப்படும். புதிய NIP: ரிலேயில் இச்சேவை உள்ளதா என சரிபார்க்கவும்</string>
<string name="connect_via_tor_short">Tor/Orbot இணைப்பு</string>
<string name="connect_via_tor">Orbot அமைப்பு மூலம் இணைக்கவும்</string>
<string name="do_you_really_want_to_disable_tor_title">Tor/Orbot இணைப்பை துண்டிக்கவா?</string>
<string name="do_you_really_want_to_disable_tor_text">உங்கள் டேட்டா உடனே வழக்கமான நெட்வொர்க்கிற்கு மாற்றப்படும்</string>
<string name="yes">ஆம்</string>
<string name="no">இல்லை</string>
<string name="follow_list_selection">பின்பற்றப்படுவோர் பட்டியல்</string>
<string name="follow_list_kind3follows">எல்லா பின்பற்றப் படுவோர்</string>
<string name="follow_list_global">முழுதளாவிய</string>
<string name="connect_through_your_orbot_setup_markdown">
## Tor மூலம் Orbot உடன் இணைக்க
<string name="zap_type_explainer">அனைத்து வகைமைக்குமான ஜாப்</string>
<string name="zap_type_public">பொது</string>
<string name="zap_type_public_explainer">அனைவரும் ஜாப் பரிவர்த்தனையையும் செய்தியையும் பார்க்கமுடியும்</string>
<string name="zap_type_private">தனிப்பட்ட</string>
<string name="zap_type_private_explainer">பெறுபவரும் அனுப்புபவரும் மட்டும் ஒருவரை ஒருவர் மற்றும் ஜாப் செய்தியை பார்க்கமுடியும்</string>
<string name="zap_type_anonymous">பெயர் ரகசியமாக</string>
<string name="zap_type_anonymous_explainer">பெறுபவருக்கும் மற்றவருக்கும் ஜாப் அனுப்புபவர் யார் என்று தெரியாது</string>
<string name="zap_type_nonzap">அல்லாத-ஜாப்</string>
<string name="zap_type_nonzap_explainer">நாஸ்டரில் எந்த சுவடும் இன்றி, லைட்நிங்கில் மட்டும் உள்ளது</string>
<string name="file_server">கோப்புச் சேவையகம்</string>
<string name="zap_forward_lnAddress">LN முகவரி அல்லது @பயனர்</string>
<string name="upload_server_imgur">imgur.com - நம்பகமானது</string>
<string name="upload_server_imgur_explainer">imgur கோப்பை மாற்றமுடியும்</string>
<string name="upload_server_nostrimg">nostrimg.com - நம்பகமானது</string>
<string name="upload_server_nostrimg_explainer">NostrImg கோப்பை மாற்றமுடியும்</string>
<string name="upload_server_nostrbuild">nostr.build - நம்பகமானது</string>
<string name="upload_server_nostrbuild_explainer">nostr.build கோப்பை மாற்றமுடியும</string>
<string name="upload_server_nostrfilesdev">nostrfiles.dev - நம்பகமானது</string>
<string name="upload_server_nostrfilesdev_explainer">nostrfiles.dev கோப்பை மாற்றமுடியும்</string>
<string name="upload_server_nostrcheckme">nostrcheck.me - நம்பகமானது</string>
<string name="upload_server_nostrcheckme_explainer">nostrcheck.me கோப்பை மாற்றமுடியும்</string>
<string name="upload_server_imgur_nip94">சரிபார்க்கக்கூடிய Imgur (NIP-94)</string>
<string name="upload_server_imgur_nip94_explainer">Imgur கோப்பை மாற்றியிருக்கிறதா என்று சரிபார்க்கப்படும். புதிய NIP: பிற கிளயண்ட்டுகளில் இதை பார்க்க முடியாமல் இருக்கலாம்.</string>
<string name="upload_server_nostrimg_nip94">சரிபார்க்கக்கூடிய NostrImg (NIP-94)</string>
<string name="upload_server_nostrimg_nip94_explainer">NostrImg கோப்பை மாற்றியிருக்கிறதா என்று சரிபார்க்கப்படும். புதிய NIP: பிற கிளயண்ட்டுகளில் இதை பார்க்க முடியாமல் இருக்கலாம்.</string>
<string name="upload_server_nostrbuild_nip94">சரிபார்க்கக்கூடிய Nostr.build (NIP-94)</string>
<string name="upload_server_nostrbuild_nip94_explainer">Nostr.build கோப்பை மாற்றியிருக்கிறதா என்று சரிபார்க்கப்படும். புதிய NIP: பிற கிளயண்ட்டுகளில் இதை பார்க்க முடியாமல் இருக்கலாம்.</string>
<string name="upload_server_nostrfilesdev_nip94">சரிபார்க்கக்கூடிய Nostrfiles.dev (NIP-94)</string>
<string name="upload_server_nostrfilesdev_nip94_explainer">Nostrfiles.dev கோப்பை மாற்றியிருக்கிறதா என்று சரிபார்க்கப்படும். புதிய NIP: பிற கிளயண்ட்டுகளில் இதை பார்க்க முடியாமல் இருக்கலாம்.</string>
<string name="upload_server_nostrcheckme_nip94">சரிபார்க்கக்கூடிய Nostrcheck.me (NIP-94)</string>
<string name="upload_server_nostrcheckme_nip94_explainer">Nostrcheck.me கோப்பை மாற்றியிருக்கிறதா என்று சரிபார்க்கப்படும். புதிய NIP: பிற கிளயண்ட்டுகளில் இதை பார்க்க முடியாமல் இருக்கலாம்.</string>
<string name="upload_server_relays_nip95">உங்கள் ரிலே (NIP-95)</string>
<string name="upload_server_relays_nip95_explainer">ஃபைல்ஸ் உங்கள் ரிலேக்களில் ஹோஸ்ட் செய்யப்படும். புதிய NIP: ரிலேயில் இச்சேவை உள்ளதா என சரிபார்க்கவும்</string>
<string name="connect_via_tor_short">Tor/Orbot இணைப்பு</string>
<string name="connect_via_tor">Orbot அமைப்பு மூலம் இணைக்கவும்</string>
<string name="do_you_really_want_to_disable_tor_title">Tor/Orbot இணைப்பை துண்டிக்கவா?</string>
<string name="do_you_really_want_to_disable_tor_text">உங்கள் டேட்டா உடனே வழக்கமான நெட்வொர்க்கிற்கு மாற்றப்படும்</string>
<string name="yes">ஆம்</string>
<string name="no">இல்லை</string>
<string name="follow_list_selection">பின்பற்றப்படுவோர் பட்டியல்</string>
<string name="follow_list_kind3follows">எல்லா பின்பற்றப் படுவோர்</string>
<string name="follow_list_global">முழுதளாவிய</string>
<string name="connect_through_your_orbot_setup_markdown">## Tor மூலம் Orbot உடன் இணைக்க
\n\n1. [Orbot](https://play.google.com/store/apps/details?id=org.torproject.android) இன்ஸ்டால் செய்க
\n2. Orbot-ஐ தொடங்குங்கள்
\n3. Orbot-இல் Socks போர்ட்டை செக் செய்க. இயல்புநிலையில் அது 9050
\n4. வேண்டுமானால் Orbot-இல் போர்ட்டை மாற்றுங்கள்
\n5. இந்த திரையில் Socks போர்டை கட்டமைக்க
\n6. ஆக்டிவேட் பொத்தானை அழுத்தி Orbot-ஐ proxy-ஆக பயன்படுத்துங்கள்
</string>
<string name="orbot_socks_port">Orbot Socks போர்ட</string>
<string name="invalid_port_number">செல்லாத போர்ட் நம்பர</string>
<string name="use_orbot">Orbot-ஐ பயன்படுத்துங்கள்</string>
<string name="disconnect_from_your_orbot_setup">Orbot இணைப்பது துண்டிக்க</string>
<string name="app_notification_dms_channel_name">தனிப்பட்ட செய்திகள்</string>
<string name="app_notification_dms_channel_description">தனிப்பட்ட செய்தி வருகையில் தெரிவிக்கவும்</string>
<string name="app_notification_zaps_channel_name">ஜாப் பெறப்பட்டது</string>
<string name="app_notification_zaps_channel_description">யாரேனும் உங்களுக்கு ஜாப் அனுப்பும்போது தெரிவிக்கவும்</string>
<string name="app_notification_zaps_channel_message">%1$s ஸாட்ஸ்</string>
<string name="app_notification_zaps_channel_message_from">%1$s -இடமிருந்து</string>
<string name="app_notification_zaps_channel_message_for">%1$s -க்கு</string>
<string name="reply_notify">தெரிவிக்</string>
<string name="channel_list_join_conversation">உரையாடலில் இணைக</string>
<string name="channel_list_user_or_group_id">பயனர் அல்லது குழுவின் ID</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent அல்லது hex</string>
<string name="channel_list_create_channel">உருவாக்கு</string>
<string name="channel_list_join_channel">இணை</string>
<string name="today">இன்று</string>
<string name="content_warning">உள்ளடக்க எச்சரிக்க</string>
<string name="content_warning_explanation">இந்த குறிப்பின் உள்ளடக்கம் சிலருக்கு அவமதிப்பாகவோ அருவெறுப்பாகவோ இருக்கலாம்</string>
<string name="content_warning_hide_all_sensitive_content">எப்போதும் உணர்ச்சிபூர்வமான உள்ளடக்கத்தை மறைக்க</string>
<string name="content_warning_show_all_sensitive_content">எப்போதும் உணர்ச்சிபூர்வமான உள்ளடக்கத்தை காண்பிக்க</string>
<string name="content_warning_see_warnings">எப்போதும் உள்ளடக்க எச்சரிக்கையை காண்பிக்க</string>
<string name="recommended_apps">பரிந்துரைகள்</string>
<string name="filter_spam_from_strangers">தெரியாதவர்களிடமிருந்து ஸ்பேம்-மை வடிகட்டுக</string>
<string name="warn_when_posts_have_reports_from_your_follows">குறிப்புகளில் நீங்கள் பின்பற்றுபவரின் புகார் இருந்தால் எச்சரிக்க</string>
<string name="new_reaction_symbol">திய ரியாக்ஷன் குறி</string>
<string name="no_reaction_type_setup_long_press_to_change">எந்த ரியாக்ஷனும் தேர்ந்தெடுக்கவில்லை. மாற்ற நீண்ட நேரம் அழுத்தவும</string>
<string name="zapraiser">ஜாப்-திரட்டுதல</string>
<string name="zapraiser_explainer">இந்த குறிப்புடன் திரட்டுவதற்கான ஸாட்ஸ் இலக்குத் தொகை சேர்க்கப்படும். இப்பயன்பாட்டுள்ள கிளயண்ட்டுகள் ஜாப்-களை ஊக்குவிக்க ப்ரோக்ரேஸ் பார் மூலம் காண்பிக்கலாம்</string>
<string name="zapraiser_target_amount_in_sats">ஸாட்ஸ் இலக்குத் தொகை</string>
<string name="sats_to_complete">ஜாப்-திரட்டுதல் %1$s. இலக்கை அடைய %2$s</string>
<string name="read_from_relay">படிப்பதற்கான ரிலே</string>
<string name="write_to_relay">போஸ்ட் செய்வதற்கான ரிலே</string>
<string name="owner">உரிமையாளர்</string>
<string name="version">பதிப்பு</string>
<string name="software">மென்பொருள்</string>
<string name="contact">தொடர்புக்கு</string>
<string name="supports">ஆதரிக்கப்படும் NIPகள</string>
<string name="admission_fees">நுழைவுக் கட்டணம்</string>
<string name="payments_url">கட்டண URL</string>
<string name="limitations">வரம்புகள</string>
<string name="countries">நாடுகள்</string>
<string name="languages">மொழிகள்</string>
<string name="tags">சிட்டைகள</string>
<string name="posting_policy">பதிவுக் கொள்க</string>
<string name="message_length">குறிப்பு நீளம்</string>
<string name="subscriptions">சப்ஸ்க்ரிப்ஷன்கள்</string>
<string name="filters">வடிப்பான்கள்</string>
<string name="subscription_id_length">சப்ஸ்க்ரிப்ஷன் ID நீளம்</string>
<string name="minimum_prefix">குறைந்தளவு முன்னீட</string>
<string name="maximum_event_tags">அதிகளவு நிகழ்வு சிட்டைகள்</string>
<string name="content_length">உள்ளடக்க நீளம்</string>
<string name="minimum_pow">குறைந்தளவு PoW</string>
<string name="auth">சான்றளிப்பு</string>
<string name="payment">கட்டணம</string>
<string name="cashu">Cashu வில்லை</string>
<string name="cashu_redeem">மீட்க</string>
<string name="live_stream_live_tag">நேரலை</string>
<string name="live_stream_offline_tag">இணைப்பிலா நிலை</string>
<string name="live_stream_ended_tag">நிறைவுற்றது</string>
<string name="live_stream_planned_tag">வரவிருக்கிறது</string>
<string name="live_stream_is_offline">நேரலை இணைப்பிலாமல் உள்ளது</string>
<string name="live_stream_has_ended">நேரலை நிறைவுற்றது</string>
<string name="are_you_sure_you_want_to_log_out">வெளியேறுவதல் உங்கள் அனைத்து விவரங்களையும் நீக்கிவிடும். வெளியேறும் முன் உங்கள் கணக்கைத் தொலையாமல் இருக்க ரகசியசாவியை பத்திரமாக பிரதி செய்து சேமிக்கப்பட்டுள்ளதா என்று சரிபார்க்கவும். வெளியேற வேண்டுமா?</string>
<string name="followed_tags">பின்பற்றப்படும் சிட்டைகள்</string>
<string name="relay_setup">ரிலேகள்</string>
<string name="discover_live">நேரலை</string>
<string name="discover_community">சமூகம்</string>
<string name="discover_chat">அரட்டை</string>
<string name="community_approved_posts">அங்கீகரிக்கப்பட்ட குறிப்பு</string>
<string name="groups_no_descriptor">இந்த அரட்டைக் குழுவின் விளக்கமும் விதிகளும் இன்னும் சேர்க்கபடவில்லை. உரிமையாளரை அணுகி அவற்றை சேர்க்க கோரவும் </string>
<string name="community_no_descriptor">இந்த சமூகத்தின் விளக்கமும் விதிகளும் இன்னும் சேர்க்கபடவில்லை. உரிமையாளரை அணுகி அவற்றை சேர்க்க கோரவும்</string>
\n6. ஆக்டிவேட் பொத்தானை அழுத்தி Orbot-ஐ proxy-ஆக பயன்படுத்துங்கள் </string>
<string name="orbot_socks_port">Orbot Socks போர்ட்</string>
<string name="invalid_port_number">செல்லாத போர்ட் நம்பர</string>
<string name="use_orbot">Orbot-ஐ பயன்படுத்துங்கள</string>
<string name="disconnect_from_your_orbot_setup">Orbot இணைப்பது துண்டிக்க</string>
<string name="app_notification_dms_channel_name">தனிப்பட்ட செய்திகள்</string>
<string name="app_notification_dms_channel_description">தனிப்பட்ட செய்தி வருகையில் தெரிவிக்கவும்</string>
<string name="app_notification_zaps_channel_name">ஜாப் பெறப்பட்டது</string>
<string name="app_notification_zaps_channel_description">யாரேனும் உங்களுக்கு ஜாப் அனுப்பும்போது தெரிவிக்கவும்</string>
<string name="app_notification_zaps_channel_message">%1$s ஸாட்ஸ்</string>
<string name="app_notification_zaps_channel_message_from">%1$s -இடமிருந்து</string>
<string name="app_notification_zaps_channel_message_for">%1$s -க்கு</string>
<string name="reply_notify">தெரிவிக்க</string>
<string name="channel_list_join_conversation">உரையாடலில் இணைக</string>
<string name="channel_list_user_or_group_id">பயனர் அல்லது குழுவின் ID</string>
<string name="channel_list_user_or_group_id_demo">npub, nevent அல்லது hex</string>
<string name="channel_list_create_channel">உருவாக்கு</string>
<string name="channel_list_join_channel">இணைக</string>
<string name="today">இன்று</string>
<string name="content_warning">உள்ளடக்க எச்சரிக்கை</string>
<string name="content_warning_explanation">இந்த குறிப்பின் உள்ளடக்கம் சிலருக்கு அவமதிப்பாகவோ அருவெறுப்பாகவோ இருக்கலாம்</string>
<string name="content_warning_hide_all_sensitive_content">எப்போதும் உணர்ச்சிபூர்வமான உள்ளடக்கத்தை மறைக்</string>
<string name="content_warning_show_all_sensitive_content">எப்போதும் உணர்ச்சிபூர்வமான உள்ளடக்கத்தை காண்பிக்</string>
<string name="content_warning_see_warnings">எப்போதும் உள்ளடக்க எச்சரிக்கையை காண்பிக்க</string>
<string name="recommended_apps">பரிந்துரைகள்</string>
<string name="filter_spam_from_strangers">தெரியாதவர்களிடமிருந்து ஸ்பேம்-மை வடிகட்டுக</string>
<string name="warn_when_posts_have_reports_from_your_follows">குறிப்புகளில் நீங்கள் பின்பற்றுபவரின் புகார் இருந்தால் எச்சரிக்க</string>
<string name="new_reaction_symbol">புதிய ரியாக்ஷன் குறி</string>
<string name="no_reaction_type_setup_long_press_to_change">எந்த ரியாக்ஷனும் தேர்ந்தெடுக்கவில்லை. மாற்ற நீண்ட நேரம் அழுத்தவும்</string>
<string name="zapraiser">ஜாப்-திரட்டுதல்</string>
<string name="zapraiser_explainer">இந்த குறிப்புடன் திரட்டுவதற்கான ஸாட்ஸ் இலக்குத் தொகை சேர்க்கப்படும். இப்பயன்பாட்டுள்ள கிளயண்ட்டுகள் ஜாப்-களை ஊக்குவிக்க ப்ரோக்ரேஸ் பார் மூலம் காண்பிக்கலாம்</string>
<string name="zapraiser_target_amount_in_sats">ஸாட்ஸ் இலக்குத் தொகை</string>
<string name="sats_to_complete">ஜாப்-திரட்டுதல் %1$s. இலக்கை அடைய %2$s</string>
<string name="read_from_relay">படிப்பதற்கான ரிலே</string>
<string name="write_to_relay">போஸ்ட் செய்வதற்கான ரிலே</string>
<string name="owner">உரிமையாளர்</string>
<string name="version">பதிப்பு</string>
<string name="software">மென்பொருள</string>
<string name="contact">தொடர்புக்கு</string>
<string name="supports">ஆதரிக்கப்படும் NIPகள</string>
<string name="admission_fees">நுழைவுக் கட்டணம்</string>
<string name="payments_url">கட்டண URL</string>
<string name="limitations">வரம்புகள்</string>
<string name="countries">நாடுகள்</string>
<string name="languages">மொழிகள்</string>
<string name="tags">சிட்டைகள்</string>
<string name="posting_policy">பதிவுக் கொள்கை</string>
<string name="message_length">குறிப்பு நீளம்</string>
<string name="subscriptions">சப்ஸ்க்ரிப்ஷன்கள்</string>
<string name="filters">வடிப்பான்கள்</string>
<string name="subscription_id_length">சப்ஸ்க்ரிப்ஷன் ID நீளம</string>
<string name="minimum_prefix">குறைந்தளவு முன்னீடு</string>
<string name="maximum_event_tags">அதிகளவு நிகழ்வு சிட்டைகள்</string>
<string name="content_length">உள்ளடக்க நீளம</string>
<string name="minimum_pow">குறைந்தளவு PoW</string>
<string name="auth">சான்றளிப்பு</string>
<string name="payment">ட்டணம</string>
<string name="cashu">Cashu வில்ல</string>
<string name="cashu_redeem">மீட்க</string>
<string name="live_stream_live_tag">நேரலை</string>
<string name="live_stream_offline_tag">இணைப்பிலா நிலை</string>
<string name="live_stream_ended_tag">நிறைவுற்றது</string>
<string name="live_stream_planned_tag">வரவிருக்கிறத</string>
<string name="live_stream_is_offline">நேரலை இணைப்பிலாமல் உள்ளது</string>
<string name="live_stream_has_ended">நேரலை நிறைவுற்றது</string>
<string name="are_you_sure_you_want_to_log_out">வெளியேறுவதல் உங்கள் அனைத்து விவரங்களையும் நீக்கிவிடும். வெளியேறும் முன் உங்கள் கணக்கைத் தொலையாமல் இருக்க ரகசியசாவியை பத்திரமாக பிரதி செய்து சேமிக்கப்பட்டுள்ளதா என்று சரிபார்க்கவும். வெளியேற வேண்டுமா?</string>
<string name="followed_tags">பின்பற்றப்படும் சிட்டைகள்</string>
<string name="relay_setup">ரிலேகள</string>
<string name="discover_live">நேரலை</string>
<string name="discover_community">சமூகம்</string>
<string name="discover_chat">அரட்டை</string>
<string name="community_approved_posts">அங்கீகரிக்கப்பட்ட குறிப்பு</string>
<string name="groups_no_descriptor">இந்த அரட்டைக் குழுவின் விளக்கமும் விதிகளும் இன்னும் சேர்க்கபடவில்லை. உரிமையாளரை அணுகி அவற்றை சேர்க்க கோரவும் </string>
<string name="community_no_descriptor">இந்த சமூகத்தின் விளக்கமும் விதிகளும் இன்னும் சேர்க்கபடவில்லை. உரிமையாளரை அணுகி அவற்றை சேர்க்க கோரவும்</string>
</resources>

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