Browse Source

more refactoringt

imwald
Silberengel 1 month ago
parent
commit
d0e5d4b9c3
  1. 4
      package.json
  2. 65
      scripts/i18n-audit.ts
  3. 132
      scripts/sync-i18n-locales.ts
  4. 984
      src/i18n/locales/ar.ts
  5. 813
      src/i18n/locales/de.ts
  6. 671
      src/i18n/locales/en.ts
  7. 984
      src/i18n/locales/es.ts
  8. 983
      src/i18n/locales/fa.ts
  9. 984
      src/i18n/locales/fr.ts
  10. 983
      src/i18n/locales/hi.ts
  11. 983
      src/i18n/locales/it.ts
  12. 984
      src/i18n/locales/ja.ts
  13. 986
      src/i18n/locales/ko.ts
  14. 987
      src/i18n/locales/pl.ts
  15. 983
      src/i18n/locales/pt-BR.ts
  16. 988
      src/i18n/locales/pt-PT.ts
  17. 985
      src/i18n/locales/ru.ts
  18. 983
      src/i18n/locales/th.ts
  19. 986
      src/i18n/locales/zh.ts

4
package.json

@ -18,7 +18,9 @@ @@ -18,7 +18,9 @@
"format": "prettier --write .",
"preview": "vite preview",
"test": "vitest",
"test:run": "vitest run"
"test:run": "vitest run",
"i18n:sync": "npx tsx scripts/sync-i18n-locales.ts && prettier --write \"src/i18n/locales/*.ts\"",
"i18n:audit": "npx tsx scripts/i18n-audit.ts"
},
"dependencies": {
"@asciidoctor/core": "^3.0.4",

65
scripts/i18n-audit.ts

@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
/**
* Audit: t('...') keys in src vs en translation.
* Run: npx tsx scripts/i18n-audit.ts
*/
import fs from 'fs'
import path from 'path'
import { fileURLToPath } from 'url'
import en from '../src/i18n/locales/en'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
function walk(dir: string, acc: string[] = []): string[] {
for (const name of fs.readdirSync(dir)) {
const p = path.join(dir, name)
const st = fs.statSync(p)
if (st.isDirectory()) {
if (name === 'node_modules' || name === 'dist') continue
walk(p, acc)
} else if (/\.(tsx|ts)$/.test(name)) acc.push(p)
}
return acc
}
function unquoteSingle(s: string) {
return s.replace(/\\'/g, "'").replace(/\\\\/g, '\\')
}
function unquoteDouble(s: string) {
return s.replace(/\\"/g, '"').replace(/\\\\/g, '\\')
}
function extractTKeys(content: string): Set<string> {
const keys = new Set<string>()
const re1 = /\bt\(\s*'((?:\\.|[^'\\])*)'/g
let m
while ((m = re1.exec(content)) !== null) {
const raw = unquoteSingle(m[1])
if (raw.length > 0 && raw.length < 400) keys.add(raw)
}
const re2 = /\bt\(\s*"((?:\\.|[^"\\])*)"/g
while ((m = re2.exec(content)) !== null) {
const raw = unquoteDouble(m[1])
if (raw.length > 0 && raw.length < 400) keys.add(raw)
}
return keys
}
const root = path.join(__dirname, '..')
const srcDir = path.join(root, 'src')
const files = walk(srcDir)
const used = new Set<string>()
for (const f of files) {
const c = fs.readFileSync(f, 'utf8')
for (const k of extractTKeys(c)) used.add(k)
}
const enKeys = new Set(Object.keys(en.translation))
const missingInEn = [...used].filter((k) => !enKeys.has(k)).sort()
const orphanInEn = [...enKeys].filter((k) => !used.has(k)).sort()
console.log('Used t() keys:', used.size)
console.log('en keys:', enKeys.size)
console.log('Used but missing in en:', missingInEn.length)
if (missingInEn.length) console.log(missingInEn.join('\n'))
console.log('In en but not in t()-scan (may be dynamic / false orphan):', orphanInEn.length)
if (orphanInEn.length) console.log(orphanInEn.slice(0, 100).join('\n'))

132
scripts/sync-i18n-locales.ts

@ -0,0 +1,132 @@ @@ -0,0 +1,132 @@
/**
* Merge t() keys from src into en, then regenerate all locale files with the same key set.
* Missing non-English strings fall back to English.
*
* Run: npx tsx scripts/sync-i18n-locales.ts && npx prettier --write "src/i18n/locales/*.ts"
*/
import fs from 'fs'
import path from 'path'
import { fileURLToPath } from 'url'
import ar from '../src/i18n/locales/ar'
import de from '../src/i18n/locales/de'
import en from '../src/i18n/locales/en'
import es from '../src/i18n/locales/es'
import fa from '../src/i18n/locales/fa'
import fr from '../src/i18n/locales/fr'
import hi from '../src/i18n/locales/hi'
import it from '../src/i18n/locales/it'
import ja from '../src/i18n/locales/ja'
import ko from '../src/i18n/locales/ko'
import pl from '../src/i18n/locales/pl'
import pt_BR from '../src/i18n/locales/pt-BR'
import pt_PT from '../src/i18n/locales/pt-PT'
import ru from '../src/i18n/locales/ru'
import th from '../src/i18n/locales/th'
import zh from '../src/i18n/locales/zh'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const srcDir = path.join(__dirname, '..', 'src')
const localesDir = path.join(__dirname, '..', 'src/i18n/locales')
const PACKAGES: { file: string; translation: Record<string, string>; header?: string }[] = [
{ file: 'ar.ts', translation: ar.translation },
{ file: 'de.ts', translation: de.translation, header: '// NOTE: Untranslated strings fall back to English.\n' },
{ file: 'en.ts', translation: en.translation },
{ file: 'es.ts', translation: es.translation },
{ file: 'fa.ts', translation: fa.translation },
{ file: 'fr.ts', translation: fr.translation },
{ file: 'hi.ts', translation: hi.translation },
{ file: 'it.ts', translation: it.translation },
{ file: 'ja.ts', translation: ja.translation },
{ file: 'ko.ts', translation: ko.translation },
{ file: 'pl.ts', translation: pl.translation },
{ file: 'pt-BR.ts', translation: pt_BR.translation },
{ file: 'pt-PT.ts', translation: pt_PT.translation },
{ file: 'ru.ts', translation: ru.translation },
{ file: 'th.ts', translation: th.translation },
{ file: 'zh.ts', translation: zh.translation }
]
function walk(dir: string, acc: string[] = []): string[] {
for (const name of fs.readdirSync(dir)) {
const p = path.join(dir, name)
const st = fs.statSync(p)
if (st.isDirectory()) {
if (name === 'node_modules' || name === 'dist') continue
walk(p, acc)
} else if (/\.(tsx|ts)$/.test(name)) acc.push(p)
}
return acc
}
function unquoteSingle(s: string) {
return s.replace(/\\'/g, "'").replace(/\\\\/g, '\\')
}
function unquoteDouble(s: string) {
return s.replace(/\\"/g, '"').replace(/\\\\/g, '\\')
}
function extractTKeys(content: string): Set<string> {
const keys = new Set<string>()
const re1 = /\bt\(\s*'((?:\\.|[^'\\])*)'/g
let m
while ((m = re1.exec(content)) !== null) {
const raw = unquoteSingle(m[1])
if (raw.length > 0 && raw.length < 500) keys.add(raw)
}
const re2 = /\bt\(\s*"((?:\\.|[^"\\])*)"/g
while ((m = re2.exec(content)) !== null) {
const raw = unquoteDouble(m[1])
if (raw.length > 0 && raw.length < 500) keys.add(raw)
}
return keys
}
function formatKey(k: string): string {
if (/^[A-Za-z_$][\w$]*$/.test(k)) return k
return JSON.stringify(k)
}
function formatValue(v: string): string {
return JSON.stringify(v)
}
function emitLocaleFile(translation: Record<string, string>, keyOrder: string[], headerComment?: string): string {
const lines: string[] = ['export default {', ' translation: {']
if (headerComment) lines.push(` ${headerComment}`)
for (const k of keyOrder) {
const v = translation[k]
if (v === undefined) continue
lines.push(` ${formatKey(k)}: ${formatValue(v)},`)
}
lines.push(' }', '}', '')
return lines.join('\n')
}
const used = new Set<string>()
for (const f of walk(srcDir)) {
const c = fs.readFileSync(f, 'utf8')
for (const k of extractTKeys(c)) used.add(k)
}
const prevEn = { ...en.translation } as Record<string, string>
const prevKeys = Object.keys(prevEn)
const newOnly = [...used].filter((k) => !(k in prevEn)).sort()
const keyOrder = [...prevKeys, ...newOnly]
const mergedEn: Record<string, string> = {}
for (const k of keyOrder) {
mergedEn[k] = k in prevEn ? prevEn[k] : k
}
for (const pkg of PACKAGES) {
const prev = pkg.translation as Record<string, string>
const out: Record<string, string> = {}
for (const k of keyOrder) {
out[k] = prev[k] !== undefined ? prev[k] : mergedEn[k]
}
const body = emitLocaleFile(out, keyOrder, pkg.header)
fs.writeFileSync(path.join(localesDir, pkg.file), body, 'utf8')
}
console.log('Keys:', keyOrder.length, '| New from scan:', newOnly.length)

984
src/i18n/locales/ar.ts

File diff suppressed because it is too large Load Diff

813
src/i18n/locales/de.ts

@ -1,11 +1,15 @@ @@ -1,11 +1,15 @@
export default {
translation: {
// NOTE: The translations below were generated by ChatGPT and have not yet been verified.
// NOTE: Untranslated strings fall back to English.
'Welcome! 🥳': 'Willkommen! 🥳',
About: 'Über',
'New Note': 'Neue Notiz',
Post: 'Beitrag',
Home: 'Startseite',
Feed: 'Feed',
'Favorites Feed': 'Favoriten-Feed',
'Pinned note': 'Angehefteter Beitrag',
'Relay settings': 'Relay-Einstellungen',
Settings: 'Einstellungen',
'Account menu': 'Kontomenü',
@ -35,7 +39,10 @@ export default { @@ -35,7 +39,10 @@ export default {
'calendar entries': 'Kalender-Einträge',
'Loading calendar events...': 'Kalender-Einträge werden geladen...',
'No calendar events found': 'Keine Kalender-Einträge gefunden',
'Calendar events in the next {{count}} months': 'Kalender-Einträge in den nächsten {{count}} Monaten',
'Calendar events in the next {{count}} months':
'Kalender-Einträge in den nächsten {{count}} Monaten',
'The nostr.band relay appears to be temporarily out of service. Please try again later.':
'The nostr.band relay appears to be temporarily out of service. Please try again later.',
'reply to': 'antworten an',
reply: 'antworten',
Reply: 'Antwort',
@ -66,11 +73,10 @@ export default { @@ -66,11 +73,10 @@ export default {
'Inhalt und Tags bearbeiten und als neues signiertes Event veröffentlichen.',
'Log in to publish': 'Zum Veröffentlichen anmelden',
'Set when you publish': 'wird beim Veröffentlichen gesetzt',
'id and sig are assigned when you publish':
'id und sig werden beim Veröffentlichen gesetzt',
'id and sig are assigned when you publish': 'id und sig werden beim Veröffentlichen gesetzt',
'Published to some relays only': 'Nur an manche Relays veröffentlicht',
'Add field': 'Feld hinzufügen',
'Remove value': 'Wert entfernen',
'View full profile': 'View full profile',
Like: 'Gefällt mir',
'switch to light theme': 'Wechsel zum hellen Design',
'switch to dark theme': 'Wechsel zum dunklen Design',
@ -81,13 +87,74 @@ export default { @@ -81,13 +87,74 @@ export default {
"username's used relays": '{{username}}s verwendete Relays',
"username's muted": '{{username}}s stummgeschaltet',
Login: 'Anmelden',
'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': 'Folgt dir',
'Relay Settings': 'Relay-Einstellungen',
'Relays and Storage Settings': 'Relays and Storage Settings',
'Relay set name': 'Relay-Set Name',
'Add a new relay set': 'Neues Relay-Set hinzufügen',
Add: 'Hinzufügen',
'n relays': '{{n}} Relays',
Rename: 'Umbenennen',
'Copy share link': 'Copy share link',
'Copy address': 'Copy address',
'Copy payto URI': 'Copy payto URI',
'Copied payto address': 'Copied payto address',
'Copied to clipboard': 'Copied to clipboard',
'Copied {{label}} address': 'Copied {{label}} address',
'Lightning payment address – copy to pay via your wallet':
'Lightning payment address – copy to pay via your wallet',
'Payment address – copy to use in your wallet or app':
'Payment address – copy to use in your wallet or app',
'Click to open payment options': 'Click to open payment options',
'Click to copy address': 'Click to copy address',
'Open on website': 'Open on website',
'Raw profile event': 'Raw profile event',
'Full profile event': 'Full profile event',
'Event (JSON)': 'Event (JSON)',
'Save full profile': 'Save full profile',
'Add tag': 'Add tag',
'Remove tag': 'Remove tag',
'Tag name': 'Tag name',
Value: 'Value',
'Add value to tag': 'Add value to tag',
'Remove value': 'Wert entfernen',
'No tags. Click "Add tag" to add one.': 'No tags. Click "Add tag" to add one.',
'Profile updated': 'Profile updated',
'Failed to publish profile': 'Failed to publish profile',
'Invalid profile JSON': 'Invalid profile JSON',
'Refresh cache': 'Refresh cache',
'Force-refresh profile and payment info from relays':
'Force-refresh profile and payment info from relays',
'Profile and payment cache refreshed': 'Profile and payment cache refreshed',
'Failed to refresh cache': 'Failed to refresh cache',
'Raw payment info event': 'Raw payment info event',
'Payment info': 'Payment info',
'Edit payment info': 'Edit payment info',
'Add payment info': 'Add payment info',
'No payment info event yet. Click "Add payment info" to create one.':
'No payment info event yet. Click "Add payment info" to create one.',
'Content (JSON)': 'Content (JSON)',
Tags: 'Tags',
'Tags (JSON array of arrays, e.g. [["payto","lightning","user@domain.com"]])':
'Tags (JSON array of arrays, e.g. [["payto","lightning","user@domain.com"]])',
'Payment info updated': 'Payment info updated',
'Failed to publish payment info': 'Failed to publish payment info',
'Invalid tags JSON': 'Invalid tags JSON',
'Payment methods': 'Payment methods',
'NIP-A3 payto tags: type (e.g. lightning) and authority (e.g. user@domain.com).':
'NIP-A3 payto tags: type (e.g. lightning) and authority (e.g. user@domain.com).',
'Type (e.g. lightning)': 'Type (e.g. lightning)',
'Authority (e.g. user@domain.com)': 'Authority (e.g. user@domain.com)',
'Add payment method': 'Add payment method',
Remove: 'Remove',
'Additional content (JSON)': 'Additional content (JSON)',
'Show full event JSON': 'Show full event JSON',
'Tag list': 'Tag list',
'Profile event tags (e.g. lud16, nip05, website). Saved with kind 0.':
'Profile event tags (e.g. lud16, nip05, website). Saved with kind 0.',
'Tag value': 'Tag value',
'Saving…': 'Speichern…',
'Share with Jumble': 'Mit Jumble teilen',
'Share with Alexandria': 'Mit Alexandria teilen',
'Start video call': 'Videoanruf starten',
@ -96,7 +163,8 @@ export default { @@ -96,7 +163,8 @@ export default {
'Send call invite': 'Anruf-Einladung senden',
'Join the video call': 'Am Videoanruf teilnehmen',
'Schedule video call': 'Videoanruf planen',
"You're invited to a scheduled video call.": 'Du bist zu einem geplanten Videoanruf eingeladen.',
"You're invited to a scheduled video call.":
'Du bist zu einem geplanten Videoanruf eingeladen.',
'Create a calendar event and send an invite. The recipient will see the event with a join link.':
'Kalendertermin erstellen und Einladung senden. Der Empfänger sieht den Termin mit einem Teilnahme-Link.',
'Schedule a video call': 'Videoanruf planen',
@ -147,7 +215,8 @@ export default { @@ -147,7 +215,8 @@ export default {
'Optional notes': 'Optionale Notizen',
'Create a calendar event for a real-life meetup and send kind 24 invites to each invitee.':
'Kalendertermin für ein reales Treffen erstellen und an jede Person eine Kind-24-Einladung senden.',
'Meeting created and {{count}} invite(s) sent': 'Termin erstellt und {{count}} Einladung(en) gesendet',
'Meeting created and {{count}} invite(s) sent':
'Termin erstellt und {{count}} Einladung(en) gesendet',
'Create and send invites': 'Erstellen und Einladungen senden',
Title: 'Titel',
Start: 'Beginn',
@ -212,7 +281,8 @@ export default { @@ -212,7 +281,8 @@ export default {
'Description (optional, for search)': 'Beschreibung (optional, für Suche)',
'e.g. happy birthday, thumbs up': 'z. B. happy birthday, Daumen hoch',
'Uploading...': 'Wird hochgeladen...',
'No GIFs found. Try searching or add your own. GIFs come from Nostr kind 1063 (NIP-94) events on GIF relays.': 'Keine GIFs gefunden. Suche oder füge eigene hinzu. GIFs stammen von Nostr-Kind-1063-Events (NIP-94) auf GIF-Relays.',
'No GIFs found. Try searching or add your own. GIFs come from Nostr kind 1063 (NIP-94) events on GIF relays.':
'Keine GIFs gefunden. Suche oder füge eigene hinzu. GIFs stammen von Nostr-Kind-1063-Events (NIP-94) auf GIF-Relays.',
'{{name}} is not a GIF file': '{{name}} ist keine GIF-Datei',
'R & W': 'R & W',
Read: 'Lesen',
@ -255,6 +325,9 @@ export default { @@ -255,6 +325,9 @@ export default {
Muted: 'Stummgeschaltet',
Unmute: 'Stummschaltung aufheben',
'Unmute user': 'Benutzer-Stummschaltung aufheben',
Block: 'Block',
Unblock: 'Unblock',
blocked: 'blocked',
'Append n relays': 'Füge {{n}} Relays hinzu',
Append: 'Hinzufügen',
'Select relays to append': 'Wähle die hinzuzufügenden Relays',
@ -295,9 +368,9 @@ export default { @@ -295,9 +368,9 @@ export default {
'RTT write': 'RTT write',
'Supported NIPs (from monitor)': 'Unterstützte NIPs (vom Monitor)',
'Last reported by monitor': 'Zuletzt vom Monitor gemeldet',
'Network': 'Netzwerk',
'Type': 'Typ',
'Topics': 'Themen',
Network: 'Netzwerk',
Type: 'Typ',
Topics: 'Themen',
'Open in a': 'Öffnen in {{a}}',
'Cannot handle event of kind k': 'Ereignis des Typs {{k}} kann nicht verarbeitet werden',
'Sorry! The note cannot be found 😔': 'Entschuldigung! Die Notiz wurde nicht gefunden 😔',
@ -329,6 +402,17 @@ export default { @@ -329,6 +402,17 @@ export default {
'Seen on': 'Gesehen auf',
'Temporarily display this reply': 'Antwort vorübergehend anzeigen',
'Note not found': 'Die Notiz wurde nicht gefunden',
'The note was not found on your relays or default relays.':
'The note was not found on your relays or default relays.',
"Try searching author's relays": "Try searching author's relays",
'Searching external relays...': 'Searching external relays...',
"This will connect to the author's relays and relay hints":
"This will connect to the author's relays and relay hints",
'Note could not be found anywhere': 'Note could not be found anywhere',
'Try external relays': 'Try external relays',
'Searching...': 'Searching...',
'Show relays': 'Show relays',
'No external relay hints available': 'No external relay hints available',
'no more replies': 'keine weiteren Antworten',
'Relay sets': 'Relay-Sets',
'Favorite Relays': 'Lieblings-Relays',
@ -368,14 +452,14 @@ export default { @@ -368,14 +452,14 @@ export default {
'Add random relays to every publish': 'Zufällige Relays in der Publish-Liste',
'Add random relays to every publish description':
'Fügt {{n}} zufällige öffentliche Relays aus der NIP-66-Liveliness-Liste hinzu (bevorzugt solche, deren Monitor eine Write-RTT gemeldet hat). Bei AN standardmäßig ausgewählt; bei AUS in der Liste, aber nicht angehakt.',
'relayType_local': 'Lokal',
'relayType_relay_list': 'Relay-Liste',
'relayType_client_default': 'Client-Standard',
'relayType_open_from': 'Aktueller Feed',
'relayType_favorite': 'Favorit',
'relayType_relay_set': 'Relay-Set',
'relayType_contextual': 'Antwort/PN',
'relayType_randomly_selected': 'Zufällig (optional)',
relayType_local: 'Lokal',
relayType_relay_list: 'Relay-Liste',
relayType_client_default: 'Client-Standard',
relayType_open_from: 'Aktueller Feed',
relayType_favorite: 'Favorit',
relayType_relay_set: 'Relay-Set',
relayType_contextual: 'Antwort/PN',
relayType_randomly_selected: 'Zufällig (optional)',
'Session relays': 'Session-Relays',
'Session relays tab description':
'Relay-Logik für diese Session: funktionierende und gestrichene Preset-Relays sowie bewertete Zufallsrelays (bevorzugt schnellere, bewährte Relays beim Hinzufügen von Zufallsrelays).',
@ -459,7 +543,8 @@ export default { @@ -459,7 +543,8 @@ export default {
Unfavorite: 'Nicht mehr favorisieren',
'Recommended relays': 'Empfohlene Relays',
'Show recommended relays panel': 'Empfohlene Relays-Panel anzeigen',
'Display the right-side panel with recommended relays on desktop': 'Das rechte Panel mit empfohlenen Relays auf dem Desktop anzeigen',
'Display the right-side panel with recommended relays on desktop':
'Das rechte Panel mit empfohlenen Relays auf dem Desktop anzeigen',
'Blossom server URLs': 'Blossom-Server-URLs',
'You need to add at least one blossom server in order to upload media files.':
'Du musst mindestens einen Blossom-Server hinzufügen, um Mediendateien hochladen zu können.',
@ -495,6 +580,22 @@ export default { @@ -495,6 +580,22 @@ export default {
'No follows or relays to load yet.': 'Noch keine Follows oder Relays zum Laden.',
'Nothing to load for this feed.': 'Für diesen Feed gibt es nichts zu laden.',
'Republish to ...': 'Erneut veröffentlichen zu ...',
'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)',
'Successfully republish to all available relays':
'Successfully republish to all available relays',
'Failed to republish to all available relays: {{error}}':
'Failed to republish to all available relays: {{error}}',
'Successfully republish to all active relays': 'Successfully republish to all active relays',
'Failed to republish to all active relays: {{error}}':
'Failed to republish to all active relays: {{error}}',
'No active relays in monitoring list': 'No active relays in monitoring list',
'No relay accepted the event': 'No relay accepted the event',
'No relays available': 'No relays available',
'No write relays configured': 'No write relays configured',
'Relay did not accept the event': 'Relay did not accept the event',
'Only {{count}} relay(s) accepted the event; at least 5 required for "all active relays".':
'Only {{count}} relay(s) accepted the event; at least 5 required for "all active relays".',
'Successfully republish to your write relays':
'Erfolgreich erneut zu deinen Schreib-Relays veröffentlicht',
'Failed to republish to your write relays: {{error}}':
@ -539,19 +640,17 @@ export default { @@ -539,19 +640,17 @@ export default {
Posts: 'Beiträge',
'Posts (OPs)': 'Beiträge (OPs)',
'Kind 1 replies': 'Kind-1-Antworten',
'Comments': 'Kommentare',
Comments: 'Kommentare',
'Replies & comments': 'Antworten & Kommentare',
Articles: 'Artikel',
Highlights: 'Highlights',
'A note from': 'A note from',
Polls: 'Umfragen',
'Voice Posts': 'Sprachbeiträge',
'Photo Posts': 'Fotobeiträge',
'Video Posts': 'Videobeiträge',
'Select All': 'Alle auswählen',
'Clear All': 'Alle löschen',
'Add {{count}} Selected': '{{count}} Ausgewählte hinzufügen',
'Adding...': 'Hinzufügen...',
'Added {{count}} relay(s)': '{{count}} Relay(s) hinzugefügt',
'Set as default filter': 'Als Standardfilter festlegen',
Apply: 'Anwenden',
Reset: 'Zurücksetzen',
@ -571,6 +670,13 @@ export default { @@ -571,6 +670,13 @@ export default {
'boosted your note': 'hat Ihre Notiz geboostet',
'zapped your note': 'hat Ihre Notiz gezappt',
'zapped you': 'hat Sie gezappt',
zapped: 'zapped',
'Invalid zap receipt': 'Invalid zap receipt',
'Zapped note': 'Zapped note',
'Zapped profile': 'Zapped profile',
'Zap reply threshold': 'Zap reply threshold',
'Zaps above this amount will appear as replies in threads':
'Zaps above this amount will appear as replies in threads',
'Mark as read': 'Als gelesen markieren',
Report: 'Melden',
'Successfully report': 'Erfolgreich gemeldet',
@ -586,7 +692,6 @@ export default { @@ -586,7 +692,6 @@ export default {
'Zusätzliche Informationen für jede Benachrichtigung anzeigen',
'See more notifications at a glance': 'Mehr Benachrichtigungen auf einen Blick sehen',
Detailed: 'Detailliert',
Compact: 'Kompakt',
'Submit Relay': 'Relay einreichen',
Homepage: 'Homepage',
'Proof of Work (difficulty {{minPow}})': 'Arbeitsnachweis (Schwierigkeit {{minPow}})',
@ -640,7 +745,25 @@ export default { @@ -640,7 +745,25 @@ export default {
'Set up your wallet to send and receive sats!':
'Richte deine Wallet ein, um Sats zu senden und zu empfangen!',
'Set up': 'Einrichten',
'nested events': 'nested events',
'Loading RSS feeds...': 'Loading RSS feeds...',
'No RSS feed items available': 'No RSS feed items available',
'Show or hide the RSS page and sidebar entry': 'Show or hide the RSS page and sidebar entry',
'Refreshing feeds...': 'Refreshing feeds...',
'All feeds': 'All feeds',
'All time': 'All time',
'Last hour': 'Last hour',
'Last day': 'Last day',
'Last week': 'Last week',
'Last month': 'Last month',
'No items match your filters': 'No items match your filters',
'Search...': 'Search...',
'{{count}} feeds': '{{count}} feeds',
'Toggle filters': 'Toggle filters',
'Showing {{filtered}} of {{total}} items': 'Showing {{filtered}} of {{total}} items',
Full: 'Full',
Compact: 'Kompakt',
Expand: 'Expand',
'help.title': 'Hilfe',
'help.tabShortcuts': 'Tastenkürzel',
'help.tabOverview': 'App-Übersicht',
@ -665,31 +788,14 @@ export default { @@ -665,31 +788,14 @@ export default {
'shortcuts.closeOverlays': 'Dialoge, Menüs und Such-Dropdown schließen',
'shortcuts.scrollWhenFocused': 'Den fokussierten scrollbaren Bereich scrollen',
'shortcuts.browserBack': 'Zurück im Browser (Verlauf)',
spellPickerSectionYours: 'Deine Zaubersprüche',
'Failed to remove spell from local storage':
'Zauberspruch konnte lokal nicht entfernt werden',
Spells: 'Zaubersprüche',
Tags: 'Tags',
Close: 'Schließen',
'Back to spell list': 'Zurück zur Zauberspruch-Liste',
'Create a Spell': 'Zauberspruch anlegen',
'No spells yet. Create one with the button above.':
'Noch keine Zaubersprüche. Lege mit dem Button oben einen an.',
'Loading spells from your relays…': 'Zaubersprüche werden von deinen Relays geladen…',
'Could not run this spell. Check that it has a valid REQ/COUNT command, or add write relays in settings.':
'Zauberspruch konnte nicht ausgeführt werden. Prüfe REQ/COUNT oder füge Schreib-Relays (Outbox) in den Einstellungen hinzu.',
'Select a spell…': 'Zauberspruch wählen…',
'Spells from follows': 'Von Leuten, denen du folgst ({{count}})',
'Other spells': 'Weitere Zaubersprüche ({{count}})',
'View definition': 'Definition anzeigen',
'Add to favorites': 'Zu Favoriten hinzufügen',
'Remove from favorites': 'Aus Favoriten entfernen',
'COUNT spells show a number, not a feed.':
'COUNT-Zaubersprüche zeigen eine Zahl, keinen Feed.',
'Log in to run this spell (it uses $me or $contacts).':
'Zum Ausführen anmelden (verwendet $me oder $contacts).',
'Could not run this spell. Check that it has a valid REQ/COUNT command, or add write relays in settings.':
'Zauberspruch konnte nicht ausgeführt werden. Prüfe REQ/COUNT oder füge Schreib-Relays (Outbox) in den Einstellungen hinzu.',
'Select a spell to view its feed.': 'Wähle einen Zauberspruch, um den Feed zu sehen.',
'Add another row': 'Weitere Zeile hinzufügen',
'Remove this row': 'Diese Zeile entfernen',
@ -704,14 +810,6 @@ export default { @@ -704,14 +810,6 @@ export default {
topic: 'Thema',
'Spell form fields': 'Zauberspruch-Formularfelder',
'Counting matching events…': 'Zähle passende Events…',
'COUNT spell result explanation':
'Verschiedene Events, die zum Filter passen (von den Relays des Zaubers und Standard-Schreib-Relays zusammengeführt, Duplikate entfernt). Relays liefern höchstens so viele wie im Limit steht.',
'COUNT spell may be capped by limit':
'Die Zahl kann deinem Limit entsprechen — es könnte noch mehr passende Events geben.',
'Spell count failed. Check relays or try again.':
'Zählung fehlgeschlagen. Relays prüfen oder erneut versuchen.',
'Spell definition': 'Zauberspruch-Definition',
'Spell published': 'Zauberspruch veröffentlicht',
'Edit spell': 'Zauberspruch bearbeiten',
'Clone spell': 'Zauberspruch klonen',
'Spell cloned': 'Zauberspruch geklont',
@ -725,45 +823,16 @@ export default { @@ -725,45 +823,16 @@ export default {
'Mindestens ein Relay ist fehlgeschlagen oder hat einen Fehler gemeldet. Du kannst die Relay-Liste im Zauber anpassen und erneut speichern.',
'COUNT spell total distinct explanation':
'Verschiedene passende Event-IDs über alle erfolgreich antwortenden Relays (Duplikate zwischen Relays entfernt). Jedes Relay liefert höchstens so viele wie im Limit steht.',
'Spells are saved relay filters (NIP-A7). Fill in the filter fields below. Use $me for your pubkey and $contacts for your follow list when executing.':
'Zaubersprüche sind gespeicherte Relay-Filter (NIP-A7). Fülle die Felder unten. $me = dein Pubkey, $contacts = deine Follow-Liste bei der Ausführung.',
Command: 'Befehl',
'REQ returns a feed; COUNT returns a number.':
'REQ: scrollbarer Feed (unten Feed live oder einmaliger Abruf). COUNT: nur eine Zahl, kein Feed.',
Name: 'Name',
'Human-readable spell name': 'Lesbarer Name des Zauberspruchs',
'Description (content)': 'Beschreibung (Inhalt)',
'Plain text description of the query': 'Klartext-Beschreibung der Abfrage',
Kinds: 'Kinds',
'Comma-separated kind numbers (e.g. 1 for notes).':
'Kind-Nummern, durch Komma getrennt (z. B. 1 für Notizen).',
Authors: 'Autoren',
'$me = your pubkey, $contacts = your follow list. Comma-separated.':
'$me = dein Pubkey, $contacts = deine Follow-Liste. Komma-getrennt.',
'Event IDs (ids)': 'Event-IDs (ids)',
'Comma-separated event ids': 'Event-IDs, komma-getrennt',
Limit: 'Limit',
Since: 'Seit',
'Relative: 7d, 24h, 1w, 1mo, 1y. Or Unix timestamp.':
'Relativ: 7d, 24h, 1w, 1mo, 1y. Oder Unix-Zeitstempel.',
Until: 'Bis',
Optional: 'Optional',
'Search (NIP-50)': 'Suche (NIP-50)',
'Full-text search query': 'Volltextsuchanfrage',
'Leave empty to use your write relays.':
'Leer lassen, um deine Schreib-Relays (Outbox) zu verwenden.',
'Topics (t tags for categorization)': 'Themen (t-Tags zur Kategorisierung)',
'Comma-separated topics': 'Themen, komma-getrennt',
Mode: 'Modus',
Feed: 'Feed',
'Favorites Feed': 'Favoriten-Feed',
'Pinned note': 'Angehefteter Beitrag',
Fetch: 'Abrufen',
'Fetch once, then stop.': 'Einmal abrufen, dann stoppen.',
'Live feed; keeps updating.': 'Live-Feed; wird fortgesetzt aktualisiert.',
'Saving…': 'Speichern…',
Clear: 'Leeren',
'COUNT spell result explanation':
'Verschiedene Events, die zum Filter passen (von den Relays des Zaubers und Standard-Schreib-Relays zusammengeführt, Duplikate entfernt). Relays liefern höchstens so viele wie im Limit steht.',
'COUNT spell may be capped by limit':
'Die Zahl kann deinem Limit entsprechen — es könnte noch mehr passende Events geben.',
'Spell count failed. Check relays or try again.':
'Zählung fehlgeschlagen. Relays prüfen oder erneut versuchen.',
'REQ returns a feed; COUNT returns a number.':
'REQ: scrollbarer Feed (unten Feed live oder einmaliger Abruf). COUNT: nur eine Zahl, kein Feed.',
listImportManualLabel: 'Aus Event vorausfüllen',
listImportFromEventHint:
'Unterstützte Tags werden ins Formular übernommen (e, p, t, relay, r, a wo möglich). Nicht leerer Inhalt wird übersprungen; verschlüsselte private Einträge werden nicht gelesen. Es können Hinweise zu nicht abgebildeten Tags erscheinen.',
@ -800,9 +869,569 @@ export default { @@ -800,9 +869,569 @@ export default {
'Tag filter letter': 'Tag-Buchstabe',
'Filter value': 'Wert',
'Add tag filter': 'Tag-Filter hinzufügen',
spellPickerSectionYours: 'Deine Zaubersprüche',
'Failed to remove spell from local storage': 'Zauberspruch konnte lokal nicht entfernt werden',
Spells: 'Zaubersprüche',
'doublePane.secondaryEmpty':
'Öffne eine Notiz, ein Profil oder Einstellungen, um sie hier anzuzeigen.',
'doublePane.secondaryEmptyHint': 'Feed und Hauptseiten bleiben links.'
'doublePane.secondaryEmptyHint': 'Feed und Hauptseiten bleiben links.',
'(empty)': '(empty)',
'12-hour (AM/PM)': '12-hour (AM/PM)',
'24-hour': '24-hour',
'A new version is available': 'A new version is available',
'A short description of the article content': 'A short description of the article content',
AM: 'AM',
'Access via': 'Access via',
'Accessed On': 'Accessed On',
'Accessed on': 'Accessed on',
'Add RSS feed URLs to subscribe to. If no feeds are configured, the default feed will be used.':
'Add RSS feed URLs to subscribe to. If no feeds are configured, the default feed will be used.',
'Add a relay to block': 'Add a relay to block',
'Add at least one invitee': 'Add at least one invitee',
'Add client identifier': 'Add client identifier',
'Add expiration tags by default': 'Add expiration tags by default',
'Add quiet tags by default': 'Add quiet tags by default',
'Add recipients using nostr: mentions (e.g., nostr:npub1...) or the recipient selector above':
'Add recipients using nostr: mentions (e.g., nostr:npub1...) or the recipient selector above',
'Add the source (where this text is from)': 'Add the source (where this text is from)',
'Add to favorites': 'Zu Favoriten hinzufügen',
'Add {{count}} Selected': '{{count}} Ausgewählte hinzufügen',
'Added at': 'Added at',
'Added {{count}} relay(s)': '{{count}} Relay(s) hinzugefügt',
'Adding...': 'Hinzufügen...',
'Adding…': 'Adding…',
'Advanced Options': 'Advanced Options',
'All Topics': 'All Topics',
'All favorite relays': 'All favorite relays',
'All feeds from OPML file are already added': 'All feeds from OPML file are already added',
'All items deleted successfully': 'All items deleted successfully',
'Already blocked': 'Already blocked',
'Already saved': 'Already saved',
'Application Recommendations': 'Application Recommendations',
'Are you sure you want to clear all cached data? This will delete all stored events and settings from your browser.':
'Are you sure you want to clear all cached data? This will delete all stored events and settings from your browser.',
'Are you sure you want to delete all items from this store?':
'Are you sure you want to delete all items from this store?',
'Are you sure you want to unmute this user? This will restore the follow button.':
'Are you sure you want to unmute this user? This will restore the follow button.',
"Are you sure you want to unregister the service worker? This will clear this app's service worker caches and you will need to reload the page.":
"Are you sure you want to unregister the service worker? This will clear this app's service worker caches and you will need to reload the page.",
'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)',
Audio: 'Audio',
Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups',
'Author name (optional)': 'Author name (optional)',
Authors: 'Autoren',
'Block Relay': 'Block Relay',
'Blocked Relays': 'Blocked Relays',
'Blocking...': 'Blocking...',
Blossom: 'Blossom',
Book: 'Book',
'Brief description of the event': 'Brief description of the event',
'Brief summary (optional)': 'Brief summary (optional)',
'Brief summary of the article (optional)': 'Brief summary of the article (optional)',
'Browse Cache': 'Browse Cache',
'C-Tag': 'C-Tag',
'Cache Relays': 'Cache Relays',
'Cache cleared successfully': 'Cache cleared successfully',
'Cache refreshed successfully': 'Cache refreshed successfully',
'Cache relays are used to store and retrieve events locally. These relays are merged with your inbox and outbox relays.':
'Cache relays are used to store and retrieve events locally. These relays are merged with your inbox and outbox relays.',
'Cache relays must be local network URLs only (e.g., ws://localhost:4869 or ws://127.0.0.1:4869)':
'Cache relays must be local network URLs only (e.g., ws://localhost:4869 or ws://127.0.0.1:4869)',
'Cache relays saved': 'Cache relays saved',
Cancelled: 'Cancelled',
Chapter: 'Chapter',
'Chapter Title': 'Chapter Title',
'Chapter title (optional)': 'Chapter title (optional)',
Citation: 'Citation',
'Citation title (optional)': 'Citation title (optional)',
'Clean up duplicate replaceable events? This will keep only the newest version of each event.':
'Clean up duplicate replaceable events? This will keep only the newest version of each event.',
'Cleaned up {{deleted}} duplicate entries, kept {{kept}}':
'Cleaned up {{deleted}} duplicate entries, kept {{kept}}',
'Cleaned up {{deleted}} duplicate entries, kept {{kept}} (total items after cleanup: {{total}})':
'Cleaned up {{deleted}} duplicate entries, kept {{kept}} (total items after cleanup: {{total}})',
'Cleanup Duplicates': 'Cleanup Duplicates',
Clear: 'Leeren',
'Clear Cache': 'Clear Cache',
'Clear Service Worker': 'Clear Service Worker',
'Clear cached data stored in your browser, including IndexedDB events, localStorage settings, and service worker caches.':
'Clear cached data stored in your browser, including IndexedDB events, localStorage settings, and service worker caches.',
'Click update to get the latest features and improvements':
'Click update to get the latest features and improvements',
Close: 'Schließen',
'Comma or space-separated topics (will be added as t-tags)':
'Comma or space-separated topics (will be added as t-tags)',
Command: 'Befehl',
Configure: 'Configure',
'Connect Wallet': 'Connect Wallet',
'Console Logs': 'Console Logs',
'Console logs cleared': 'Console logs cleared',
'Content is required': 'Content is required',
'Content must be 5000 characters or less': 'Content must be 5000 characters or less',
Controversial: 'Controversial',
'Copied!': 'Copied!',
'Copy to clipboard': 'Copy to clipboard',
'Create Article': 'Create Article',
'Create Citation': 'Create Citation',
'Create Highlight': 'Create Highlight',
'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread',
'Create a Spell': 'Zauberspruch anlegen',
'Creating...': 'Creating...',
'D-Tag': 'D-Tag',
'D-Tag is required for articles': 'D-Tag is required for articles',
DOI: 'DOI',
'Date-based (all-day)': 'Date-based (all-day)',
'Default expiration (months)': 'Default expiration (months)',
'Default quiet period (days)': 'Default quiet period (days)',
'Delete All': 'Delete All',
'Delete item': 'Delete item',
'Deleted {{count}} event(s)': 'Deleted {{count}} event(s)',
'Deletion request sent': 'Deletion request sent',
'Description (content)': 'Beschreibung (Inhalt)',
'Digital Object Identifier (optional)': 'Digital Object Identifier (optional)',
'Disable word wrap': 'Disable word wrap',
'Discovered Relays': 'Discovered Relays',
'Discovering relays...': 'Discovering relays...',
Discussion: 'Discussion',
Discussions: 'Discussions',
Downvote: 'Downvote',
'Edited by': 'Edited by',
Editor: 'Editor',
'Editor name (optional)': 'Editor name (optional)',
'Enable word wrap': 'Enable word wrap',
'End date': 'End date',
'End date must be after start date': 'End date must be after start date',
'Enter a Nostr event identifier (nevent, naddr, note, or hex ID) OR a web URL (https://). Not both.':
'Enter a Nostr event identifier (nevent, naddr, note, or hex ID) OR a web URL (https://). Not both.',
'Enter a descriptive title for your thread': 'Enter a descriptive title for your thread',
'Enter the author name': 'Enter the author name',
'Enter the book title': 'Enter the book title',
'Enter the specific text you want to highlight in the main content area above':
'Enter the specific text you want to highlight in the main content area above',
'Event IDs (ids)': 'Event-IDs (ids)',
'Event appears to be invalid or corrupted': 'Event appears to be invalid or corrupted',
'Event has no value data': 'Event has no value data',
'Event is missing required fields: {{fields}}': 'Event is missing required fields: {{fields}}',
'Event type': 'Event type',
'Expiration Tags': 'Expiration Tags',
'Export OPML': 'Export OPML',
'Export as AsciiDoc': 'Export as AsciiDoc',
'Export as Markdown': 'Export as Markdown',
'External Citation': 'External Citation',
'External Citation Settings': 'External Citation Settings',
'Failed to add relay. Please try again.': 'Failed to add relay. Please try again.',
'Failed to add relays': 'Failed to add relays',
'Failed to block relay. Please try again.': 'Failed to block relay. Please try again.',
'Failed to cleanup duplicates': 'Failed to cleanup duplicates',
'Failed to clear cache': 'Failed to clear cache',
'Failed to copy': 'Failed to copy',
'Failed to create relay set. Please try again.':
'Failed to create relay set. Please try again.',
'Failed to create thread': 'Failed to create thread',
'Failed to create thread. Please try a different relay.':
'Failed to create thread. Please try a different relay.',
'Failed to delete all items': 'Failed to delete all items',
'Failed to delete item': 'Failed to delete item',
'Failed to discover relays': 'Failed to discover relays',
'Failed to export OPML file': 'Failed to export OPML file',
'Failed to export article': 'Failed to export article',
'Failed to import OPML file: {{error}}': 'Failed to import OPML file: {{error}}',
'Failed to load RSS feeds': 'Failed to load RSS feeds',
'Failed to load store items': 'Failed to load store items',
'Failed to mute user privately': 'Failed to mute user privately',
'Failed to mute user publicly': 'Failed to mute user publicly',
'Failed to pin note': 'Failed to pin note',
'Failed to publish post': 'Failed to publish post',
'Failed to publish reply': 'Failed to publish reply',
'Failed to publish thread': 'Failed to publish thread',
'Failed to publish to some relays. Please try again or use different relays.':
'Failed to publish to some relays. Please try again or use different relays.',
'Failed to save RSS feeds': 'Failed to save RSS feeds',
'Failed to save cache relays': 'Failed to save cache relays',
'Failed to save relay list': 'Failed to save relay list',
'Failed to unregister service worker: ': 'Failed to unregister service worker: ',
'Failed to unsubscribe from topic': 'Failed to unsubscribe from topic',
Favorite: 'Favorite',
Fetch: 'Abrufen',
'Fetch once, then stop.': 'Einmal abrufen, dann stoppen.',
'Filter by': 'Filter by',
'Flat View': 'Flat View',
'Font size': 'Font size',
'Full Quote/Context': 'Full Quote/Context',
'Full-text search query': 'Volltextsuchanfrage',
Geohash: 'Geohash',
'Geohash (optional)': 'Geohash (optional)',
'Global quiet mode': 'Global quiet mode',
'Group discussions by topic': 'Group discussions by topic',
'Grouped View': 'Grouped View',
Groups: 'Groups',
'Handler {{index}}': 'Handler {{index}}',
'Hardcopy Citation': 'Hardcopy Citation',
'Hardcopy Citation Settings': 'Hardcopy Citation Settings',
Hide: 'Hide',
'Hide interactions on all posts': 'Hide interactions on all posts',
'Hide interactions on posts with quiet tags': 'Hide interactions on posts with quiet tags',
'High PoW': 'High PoW',
'Higher values make your thread harder to mine but more unique.':
'Higher values make your thread harder to mine but more unique.',
Highlight: 'Highlight',
'Highlight Settings': 'Highlight Settings',
'How to Create a Highlight (NIP-84)': 'How to Create a Highlight (NIP-84)',
'Human-readable spell name': 'Lesbarer Name des Zauberspruchs',
'Image URL': 'Image URL',
'Import OPML': 'Import OPML',
'Imported {{count}} feed(s) from OPML file': 'Imported {{count}} feed(s) from OPML file',
'In-Browser Cache': 'In-Browser Cache',
Insert: 'Insert',
'Insert URL into your post and publish to Nostr GIF library (NIP-94).':
'Insert URL into your post and publish to Nostr GIF library (NIP-94).',
'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation',
'Internal Citation Settings': 'Internal Citation Settings',
'Invalid Event': 'Invalid Event',
'Invalid Lightning Address': 'Invalid Lightning Address',
'Invalid Lightning Address. Please enter a valid Lightning Address or LNURL.':
'Invalid Lightning Address. Please enter a valid Lightning Address or LNURL.',
'Invalid URL': 'Invalid URL',
'Invalid content JSON': 'Invalid content JSON',
'Invalid relay URL': 'Invalid relay URL',
'Invalid source. Please enter a note ID, nevent, naddr, hex ID, or URL.':
'Invalid source. Please enter a note ID, nevent, naddr, hex ID, or URL.',
'Item deleted successfully': 'Item deleted successfully',
JSON: 'JSON',
'Join link': 'Join link',
'Journal/Publication name (optional)': 'Journal/Publication name (optional)',
Json: 'JSON',
Kinds: 'Kinds',
'Language Model': 'Language Model',
Large: 'Large',
'Leave empty for HiveTalk, or paste Zoom / Teams / other link':
'Leave empty for HiveTalk, or paste Zoom / Teams / other link',
'Lightning payment failed': 'Lightning payment failed',
Limit: 'Limit',
'Live feed; keeps updating.': 'Live-Feed; wird fortgesetzt aktualisiert.',
'Loading more...': 'Loading more...',
'Loading relays...': 'Loading relays...',
'Location (optional)': 'Location (optional)',
'Log in to run this spell (it uses $me or $contacts).':
'Zum Ausführen anmelden (verwendet $me oder $contacts).',
'Login failed': 'Login failed',
'Login to configure RSS feeds': 'Login to configure RSS feeds',
'Long-form Article': 'Long-form Article',
'Mailbox relays saved': 'Mailbox relays saved',
'Mark as NSFW': 'Mark as NSFW',
'Maximum {{max}} invitees': 'Maximum {{max}} invitees',
'Maximum {{max}} invitees allowed': 'Maximum {{max}} invitees allowed',
Medium: 'Medium',
Mode: 'Modus',
'Most Zapped': 'Most Zapped',
'Move to top': 'Move to top',
'Multiple choice': 'Multiple choice',
'Mute failed': 'Mute failed',
NSFW: 'NSFW',
Name: 'Name',
'Name of the language model used': 'Name of the language model used',
'New External Citation': 'New External Citation',
'New Hardcopy Citation': 'New Hardcopy Citation',
'New Highlight': 'New Highlight',
'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll',
'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article',
'New Wiki Article (Markdown)': 'New Wiki Article (Markdown)',
Newest: 'Newest',
'No JSON available': 'No JSON available',
'No RSS feeds found in OPML file': 'No RSS feeds found in OPML file',
'No cached data found.': 'No cached data found.',
'No console logs captured yet': 'No console logs captured yet',
'No events found': 'No events found',
'No feeds configured. Default feed will be used.':
'No feeds configured. Default feed will be used.',
'No feeds to export': 'No feeds to export',
'No groups available. Join some groups first.': 'No groups available. Join some groups first.',
'No items in this store.': 'No items in this store.',
'No items match your search.': 'No items match your search.',
'No logs match the current filters': 'No logs match the current filters',
'No posts found': 'No posts found',
'No posts match your search': 'No posts match your search',
'No relays available. Please configure relays in settings.':
'No relays available. Please configure relays in settings.',
'No service workers or caches found for this app':
'No service workers or caches found for this app',
'No users found': 'No users found',
'No valid RSS feed URLs found in OPML file': 'No valid RSS feed URLs found in OPML file',
'Note pinned': 'Note pinned',
'Note unpinned': 'Note unpinned',
Oldest: 'Oldest',
'Open Timestamp': 'Open Timestamp',
'Opens in a new tab. Copy a GIF URL there, then paste below. If this picker closed, click “Insert GIF” again to paste.':
'Opens in a new tab. Copy a GIF URL there, then paste below. If this picker closed, click “Insert GIF” again to paste.',
Option: 'Option',
Optional: 'Optional',
'Optional image for the event': 'Optional image for the event',
'Optionally, add the full quote/context to show your highlight within it':
'Optionally, add the full quote/context to show your highlight within it',
PM: 'PM',
'Page Range': 'Page Range',
Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight',
Photo: 'Photo',
'Picture Note': 'Picture Note',
'Pin note': 'Pin note',
'Plain text description of the query': 'Klartext-Beschreibung der Abfrage',
'Please login to view bookmarks': 'Please login to view bookmarks',
'Please select a group': 'Please select a group',
'Please select at least one relay': 'Please select at least one relay',
'Please set a start date': 'Please set a start date',
'Poll with no options': 'Poll with no options',
'Post published to some relays': 'Post published to some relays',
'Posts will automatically include expiration tags':
'Posts will automatically include expiration tags',
'Posts will automatically include quiet tags': 'Posts will automatically include quiet tags',
'Posts will be quiet for this many days': 'Posts will be quiet for this many days',
'Posts will expire after this many months': 'Posts will expire after this many months',
'Processing...': 'Processing...',
'Profile event not available': 'Profile event not available',
'Prompt Citation': 'Prompt Citation',
'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work',
'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By',
'Published In': 'Published In',
'Published On': 'Published On',
'Published in': 'Published in',
'Published on': 'Published on',
'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed',
'RSS Feed Settings': 'RSS Feed Settings',
'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved',
'Rate limited. Please wait before trying again.':
'Rate limited. Please wait before trying again.',
'Reaction published': 'Reaction published',
'Reaction removed': 'Reaction removed',
'Read full article': 'Read full article',
'Reading group entry': 'Reading group entry',
'Readings Options': 'Readings Options',
Recipients: 'Recipients',
'Recipients detected from your message:': 'Recipients detected from your message:',
'Recommended Relays': 'Recommended Relays',
'Recommended applications for handling events of kind {{kind}}':
'Recommended applications for handling events of kind {{kind}}',
'Reference to the cited Nostr event in kind:pubkey:hex format':
'Reference to the cited Nostr event in kind:pubkey:hex format',
'Refresh Cache': 'Refresh Cache',
'Refreshing posts...': 'Refreshing posts...',
'Relative: 7d, 24h, 1w, 1mo, 1y. Or Unix timestamp.':
'Relativ: 7d, 24h, 1w, 1mo, 1y. Oder Unix-Zeitstempel.',
Relay: 'Relay',
'Relay Hint': 'Relay Hint',
'Relay URL (optional)': 'Relay URL (optional)',
'Relay blocked successfully': 'Relay blocked successfully',
'Relay requires authentication for write access. Please try a different relay or contact the relay operator.':
'Relay requires authentication for write access. Please try a different relay or contact the relay operator.',
'Relay set options': 'Relay set options',
'Remove from favorites': 'Aus Favoriten entfernen',
Rendered: 'Rendered',
'Reply published': 'Reply published',
'Reply published to some relays': 'Reply published to some relays',
'Reply to Public Message': 'Reply to Public Message',
'Republish to all active relays': 'Republish to all active relays',
'Republish to all available relays': 'Republish to all available relays',
'Required: start (or start date), invitees. Optional: title, end, location, summary, topics, image.':
'Required: start (or start date), invitees. Optional: title, end, location, summary, topics, image.',
'Required: start time or start date. Optional: title, end, location, summary, topics, image.':
'Required: start time or start date. Optional: title, end, location, summary, topics, image.',
'Required: start time, invitees. Join link defaults to HiveTalk. Optional: title, end, summary, topics, image.':
'Required: start time, invitees. Join link defaults to HiveTalk. Optional: title, end, summary, topics, image.',
'Required: start time. Join link defaults to HiveTalk. Optional: title, end, summary, topics, image.':
'Required: start time. Join link defaults to HiveTalk. Optional: title, end, summary, topics, image.',
'Respect quiet tags': 'Respect quiet tags',
'Search (NIP-50)': 'Suche (NIP-50)',
'Search by name or npub…': 'Search by name or npub…',
'Search calendar, publications, wiki…': 'Search calendar, publications, wiki…',
'Search for user…': 'Search for user…',
'Search items...': 'Search items...',
'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy',
'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...',
'Searching all available relays...': 'Searching all available relays...',
'Searching…': 'Searching…',
'See reference': 'See reference',
'Select Group': 'Select Group',
'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...',
'Select relays': 'Select relays',
'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...',
'Selected text': 'Selected text',
'Send Public Message': 'Send Public Message',
'Send a Lightning payment to this user': 'Send a Lightning payment to this user',
'Service worker caches cleared. Please reload the page.':
'Service worker caches cleared. Please reload the page.',
'Service worker unregistered and caches cleared. Please reload the page.':
'Service worker unregistered and caches cleared. Please reload the page.',
'Service worker unregistered. Please reload the page.':
'Service worker unregistered. Please reload the page.',
'Share your thoughts, ask questions, or start a discussion...':
'Share your thoughts, ask questions, or start a discussion...',
'Short Video Note': 'Short Video Note',
'Show RSS Feed': 'Show RSS Feed',
'Show all discussions in a single list': 'Show all discussions in a single list',
'Show less': 'Show less',
Since: 'Seit',
Small: 'Small',
'Some relays have temporarily disabled writes.':
'Some relays have temporarily disabled writes.',
Source: 'Source',
'Spell definition': 'Zauberspruch-Definition',
'Spell published': 'Zauberspruch veröffentlicht',
'Start date': 'Start date',
'Start typing to see a preview...': 'Start typing to see a preview...',
'Subject (Book Title)': 'Subject (Book Title)',
'Subject (book title) is required for reading groups':
'Subject (book title) is required for reading groups',
'Subject / Topics': 'Subject / Topics',
Subscribe: 'Subscribe',
Subscribed: 'Subscribed',
'Subscribed to topic': 'Subscribed to topic',
'Subscribed to topic (local)': 'Subscribed to topic (local)',
'Subscribing...': 'Subscribing...',
Summary: 'Summary',
'Supported Event Types': 'Supported Event Types',
'Take a note': 'Take a note',
'The full prompt conversation (optional)': 'The full prompt conversation (optional)',
'The main editor above should contain only the text you want to highlight. This field should contain the full quote or paragraph for context.':
'The main editor above should contain only the text you want to highlight. This field should contain the full quote or paragraph for context.',
'These relays were found from your NIP-05 identifier and signer. You can add them to your relay list.':
'These relays were found from your NIP-05 identifier and signer. You can add them to your relay list.',
'This file could be either audio or video. Please select the correct type:':
'This file could be either audio or video. Please select the correct type:',
'This store does not contain replaceable events':
'This store does not contain replaceable events',
'This will add additional tags for author and subject to help organize reading group discussions.':
'This will add additional tags for author and subject to help organize reading group discussions.',
'Thread Content': 'Thread Content',
'Thread Title': 'Thread Title',
'Thread creation timed out. Please try again.': 'Thread creation timed out. Please try again.',
'Thread published': 'Thread published',
'Threads are organized by topics. Choose a topic that best fits your discussion.':
'Threads are organized by topics. Choose a topic that best fits your discussion.',
'Time-based': 'Time-based',
'Title is required': 'Title is required',
'Title must be 100 characters or less': 'Title must be 100 characters or less',
'To translate notes and other content, use your browser’s built-in translation. For example: right-click the page and choose “Translate to…”, or use the translate icon in the address bar.':
'To translate notes and other content, use your browser’s built-in translation. For example: right-click the page and choose “Translate to…”, or use the translate icon in the address bar.',
Top: 'Top',
Topic: 'Topic',
URL: 'URL',
'URL of the article cover image (optional)': 'URL of the article cover image (optional)',
'Unique identifier for this article (required)':
'Unique identifier for this article (required)',
'Unmute failed': 'Unmute failed',
'Unpin note': 'Unpin note',
Unsubscribe: 'Unsubscribe',
'Unsubscribed from topic': 'Unsubscribed from topic',
'Unsubscribing...': 'Unsubscribing...',
Until: 'Bis',
Untitled: 'Untitled',
Update: 'Update',
'Updating...': 'Updating...',
'Upload Audio Comment': 'Upload Audio Comment',
'Upload Audio Message': 'Upload Audio Message',
'Upload Media': 'Upload Media',
Upvote: 'Upvote',
'User unmuted': 'User unmuted',
'Version number (optional)': 'Version number (optional)',
Video: 'Video',
'Video Note': 'Video Note',
'Video file': 'Video file',
'View Console Logs': 'View Console Logs',
'View JSON': 'View JSON',
'View cached items in this store.': 'View cached items in this store.',
'View definition': 'Definition anzeigen',
'View details about cached data in IndexedDB stores. Click on a store to view its items.':
'View details about cached data in IndexedDB stores. Click on a store to view its items.',
'View on Alexandria': 'View on Alexandria',
'View on DecentNewsroom': 'View on DecentNewsroom',
'View on Wikistr': 'View on Wikistr',
'View recent console logs for debugging': 'View recent console logs for debugging',
'Voice Comment': 'Voice Comment',
'Voice Note': 'Voice Note',
'Voice note or audio file': 'Voice note or audio file',
Volume: 'Volume',
'Volume number (optional)': 'Volume number (optional)',
'Vote published': 'Vote published',
'Vote removed': 'Vote removed',
'Website where LLM was accessed (optional)': 'Website where LLM was accessed (optional)',
'Wiki Article (AsciiDoc)': 'Wiki Article (AsciiDoc)',
'Wiki Article (Markdown)': 'Wiki Article (Markdown)',
'You can only delete your own notes': 'You can only delete your own notes',
'You must be logged in to create a thread': 'You must be logged in to create a thread',
'You need to add at least one media server in order to upload media files.':
'You need to add at least one media server in order to upload media files.',
'You need to login first': 'You need to login first',
'Your account is blocked from posting to this relay.':
'Your account is blocked from posting to this relay.',
Zap: 'Zap',
'Zap failed': 'Zap failed',
created_at: 'created_at',
'e tag of kind 1040 event (optional)': 'e tag of kind 1040 event (optional)',
'e.g. meetup, conference': 'e.g. meetup, conference',
'e.g., 123-145 (optional)': 'e.g., 123-145 (optional)',
'e.g., GPT-4, Claude, etc. (required)': 'e.g., GPT-4, Claude, etc. (required)',
'e.g., my-article-title': 'e.g., my-article-title',
entries: 'entries',
'from Bunker': 'from Bunker',
'from Extension': 'from Extension',
'from NIP-05': 'from NIP-05',
general: 'general',
'https://example.com (required)': 'https://example.com (required)',
'https://example.com/image.jpg': 'https://example.com/image.jpg',
id: 'id',
items: 'items',
kind: 'kind',
'kind:pubkey:hex format (required)': 'kind:pubkey:hex format (required)',
'last updated': 'last updated',
matching: 'matching',
naddr: 'naddr',
nevent: 'nevent',
'nevent1..., naddr1..., note1..., hex ID, or https://...':
'nevent1..., naddr1..., note1..., hex ID, or https://...',
'no notes found': 'no notes found',
of: 'of',
'on note': 'on note',
optional: 'optional',
pubkey: 'pubkey',
'sent a public message': 'sent a public message',
'sent you a public message': 'sent you a public message',
'sent you a public message (along with {{count}} others)':
'sent you a public message (along with {{count}} others)',
sig: 'sig',
'started a discussion in {{topic}}': 'started a discussion in {{topic}}',
tags: 'tags',
thread: 'thread',
threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞'
}
}

671
src/i18n/locales/en.ts

@ -38,7 +38,8 @@ export default { @@ -38,7 +38,8 @@ export default {
'Loading calendar events...': 'Loading calendar events...',
'No calendar events found': 'No calendar events found',
'Calendar events in the next {{count}} months': 'Calendar events in the next {{count}} months',
'The nostr.band relay appears to be temporarily out of service. Please try again later.': 'The nostr.band relay appears to be temporarily out of service. Please try again later.',
'The nostr.band relay appears to be temporarily out of service. Please try again later.':
'The nostr.band relay appears to be temporarily out of service. Please try again later.',
'reply to': 'reply to',
reply: 'reply',
Reply: 'Reply',
@ -69,8 +70,7 @@ export default { @@ -69,8 +70,7 @@ export default {
'Edit content and tags, then publish a new signed event.',
'Log in to publish': 'Log in to publish',
'Set when you publish': 'set when you publish',
'id and sig are assigned when you publish':
'id and sig are assigned when you publish',
'id and sig are assigned when you publish': 'id and sig are assigned when you publish',
'Published to some relays only': 'Published to some relays only',
'Add field': 'Add field',
'View full profile': 'View full profile',
@ -99,8 +99,10 @@ export default { @@ -99,8 +99,10 @@ export default {
'Copied payto address': 'Copied payto address',
'Copied to clipboard': 'Copied to clipboard',
'Copied {{label}} address': 'Copied {{label}} address',
'Lightning payment address – copy to pay via your wallet': 'Lightning payment address – copy to pay via your wallet',
'Payment address – copy to use in your wallet or app': 'Payment address – copy to use in your wallet or app',
'Lightning payment address – copy to pay via your wallet':
'Lightning payment address – copy to pay via your wallet',
'Payment address – copy to use in your wallet or app':
'Payment address – copy to use in your wallet or app',
'Click to open payment options': 'Click to open payment options',
'Click to copy address': 'Click to copy address',
'Open on website': 'Open on website',
@ -119,22 +121,26 @@ export default { @@ -119,22 +121,26 @@ export default {
'Failed to publish profile': 'Failed to publish profile',
'Invalid profile JSON': 'Invalid profile JSON',
'Refresh cache': 'Refresh cache',
'Force-refresh profile and payment info from relays': 'Force-refresh profile and payment info from relays',
'Force-refresh profile and payment info from relays':
'Force-refresh profile and payment info from relays',
'Profile and payment cache refreshed': 'Profile and payment cache refreshed',
'Failed to refresh cache': 'Failed to refresh cache',
'Raw payment info event': 'Raw payment info event',
'Payment info': 'Payment info',
'Edit payment info': 'Edit payment info',
'Add payment info': 'Add payment info',
'No payment info event yet. Click "Add payment info" to create one.': 'No payment info event yet. Click "Add payment info" to create one.',
'No payment info event yet. Click "Add payment info" to create one.':
'No payment info event yet. Click "Add payment info" to create one.',
'Content (JSON)': 'Content (JSON)',
Tags: 'Tags',
'Tags (JSON array of arrays, e.g. [["payto","lightning","user@domain.com"]])': 'Tags (JSON array of arrays, e.g. [["payto","lightning","user@domain.com"]])',
'Tags (JSON array of arrays, e.g. [["payto","lightning","user@domain.com"]])':
'Tags (JSON array of arrays, e.g. [["payto","lightning","user@domain.com"]])',
'Payment info updated': 'Payment info updated',
'Failed to publish payment info': 'Failed to publish payment info',
'Invalid tags JSON': 'Invalid tags JSON',
'Payment methods': 'Payment methods',
'NIP-A3 payto tags: type (e.g. lightning) and authority (e.g. user@domain.com).': 'NIP-A3 payto tags: type (e.g. lightning) and authority (e.g. user@domain.com).',
'NIP-A3 payto tags: type (e.g. lightning) and authority (e.g. user@domain.com).':
'NIP-A3 payto tags: type (e.g. lightning) and authority (e.g. user@domain.com).',
'Type (e.g. lightning)': 'Type (e.g. lightning)',
'Authority (e.g. user@domain.com)': 'Authority (e.g. user@domain.com)',
'Add payment method': 'Add payment method',
@ -142,7 +148,8 @@ export default { @@ -142,7 +148,8 @@ export default {
'Additional content (JSON)': 'Additional content (JSON)',
'Show full event JSON': 'Show full event JSON',
'Tag list': 'Tag list',
'Profile event tags (e.g. lud16, nip05, website). Saved with kind 0.': 'Profile event tags (e.g. lud16, nip05, website). Saved with kind 0.',
'Profile event tags (e.g. lud16, nip05, website). Saved with kind 0.':
'Profile event tags (e.g. lud16, nip05, website). Saved with kind 0.',
'Tag value': 'Tag value',
'Saving…': 'Saving…',
'Share with Jumble': 'Share with Jumble',
@ -269,7 +276,8 @@ export default { @@ -269,7 +276,8 @@ export default {
'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'Uploading...': 'Uploading...',
'No GIFs found. Try searching or add your own. GIFs come from Nostr kind 1063 (NIP-94) events on GIF relays.': 'No GIFs found. Try searching or add your own. GIFs come from Nostr kind 1063 (NIP-94) events on GIF relays.',
'No GIFs found. Try searching or add your own. GIFs come from Nostr kind 1063 (NIP-94) events on GIF relays.':
'No GIFs found. Try searching or add your own. GIFs come from Nostr kind 1063 (NIP-94) events on GIF relays.',
'{{name}} is not a GIF file': '{{name}} is not a GIF file',
'R & W': 'R & W',
Read: 'Read',
@ -353,9 +361,9 @@ export default { @@ -353,9 +361,9 @@ export default {
'RTT write': 'RTT write',
'Supported NIPs (from monitor)': 'Supported NIPs (from monitor)',
'Last reported by monitor': 'Last reported by monitor',
'Network': 'Network',
'Type': 'Type',
'Topics': 'Topics',
Network: 'Network',
Type: 'Type',
Topics: 'Topics',
'Open in a': 'Open in {{a}}',
'Cannot handle event of kind k': 'Cannot handle event of kind {{k}}',
'Sorry! The note cannot be found 😔': 'Sorry! The note cannot be found 😔',
@ -386,10 +394,12 @@ export default { @@ -386,10 +394,12 @@ export default {
'Seen on': 'Seen on',
'Temporarily display this reply': 'Temporarily display this reply',
'Note not found': 'Note not found',
'The note was not found on your relays or default relays.': 'The note was not found on your relays or default relays.',
'Try searching author\'s relays': 'Try searching author\'s relays',
'The note was not found on your relays or default relays.':
'The note was not found on your relays or default relays.',
"Try searching author's relays": "Try searching author's relays",
'Searching external relays...': 'Searching external relays...',
'This will connect to the author\'s relays and relay hints': 'This will connect to the author\'s relays and relay hints',
"This will connect to the author's relays and relay hints":
"This will connect to the author's relays and relay hints",
'Note could not be found anywhere': 'Note could not be found anywhere',
'Try external relays': 'Try external relays',
'Searching...': 'Searching...',
@ -433,22 +443,26 @@ export default { @@ -433,22 +443,26 @@ export default {
'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description':
'Adds {{n}} random public relays from the NIP-66 lively list (preferring monitors that reported a write RTT) to the publish relay list. When ON, they are selected by default; when OFF, they appear in the list but are unchecked so you can optionally include them.',
'relayType_local': 'Local',
'relayType_relay_list': 'Relay list',
'relayType_client_default': 'Client default',
'relayType_open_from': 'Current feed',
'relayType_favorite': 'Favorite',
'relayType_relay_set': 'Relay set',
'relayType_contextual': 'Reply/PM',
'relayType_randomly_selected': 'Random (optional)',
relayType_local: 'Local',
relayType_relay_list: 'Relay list',
relayType_client_default: 'Client default',
relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite',
relayType_relay_set: 'Relay set',
relayType_contextual: 'Reply/PM',
relayType_randomly_selected: 'Random (optional)',
'Session relays': 'Session relays',
'Session relays tab description': 'Relay logic for this session: working and striked preset relays, and scored random relays (used to prefer faster, proven relays when adding random relays to publish).',
'Session relays tab description':
'Relay logic for this session: working and striked preset relays, and scored random relays (used to prefer faster, proven relays when adding random relays to publish).',
'Session relays preset working': 'Working preset relays',
'Session relays preset working hint': 'Preset relays (from app defaults) that have not reached 3 publish failures this session.',
'Session relays preset working hint':
'Preset relays (from app defaults) that have not reached 3 publish failures this session.',
'Session relays preset striked': 'Striked preset relays',
'Session relays preset striked hint': 'Preset relays that have reached 3 publish failures this session and are skipped for the rest of the session.',
'Session relays preset striked hint':
'Preset relays that have reached 3 publish failures this session and are skipped for the rest of the session.',
'Session relays scored random': 'Scored random relays',
'Session relays scored random hint': 'Relays that have accepted at least one publish this session; used to prefer faster relays when picking random relays. Sorted by average latency.',
'Session relays scored random hint':
'Relays that have accepted at least one publish this session; used to prefer faster relays when picking random relays. Sorted by average latency.',
'Session relays all striked': 'All striked relays (any source)',
successes: 'successes',
None: 'None',
@ -518,7 +532,8 @@ export default { @@ -518,7 +532,8 @@ export default {
Unfavorite: 'Unfavorite',
'Recommended relays': 'Recommended relays',
'Show recommended relays panel': 'Show recommended relays panel',
'Display the right-side panel with recommended relays on desktop': 'Display the right-side panel with recommended relays on desktop',
'Display the right-side panel with recommended relays on desktop':
'Display the right-side panel with recommended relays on desktop',
'Blossom server URLs': 'Blossom server URLs',
'You need to add at least one blossom server in order to upload media files.':
'You need to add at least one blossom server in order to upload media files.',
@ -556,16 +571,20 @@ export default { @@ -556,16 +571,20 @@ export default {
'Republish to ...': 'Republish to ...',
'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)',
'Successfully republish to all available relays': 'Successfully republish to all available relays',
'Failed to republish to all available relays: {{error}}': 'Failed to republish to all available relays: {{error}}',
'Successfully republish to all available relays':
'Successfully republish to all available relays',
'Failed to republish to all available relays: {{error}}':
'Failed to republish to all available relays: {{error}}',
'Successfully republish to all active relays': 'Successfully republish to all active relays',
'Failed to republish to all active relays: {{error}}': 'Failed to republish to all active relays: {{error}}',
'Failed to republish to all active relays: {{error}}':
'Failed to republish to all active relays: {{error}}',
'No active relays in monitoring list': 'No active relays in monitoring list',
'No relay accepted the event': 'No relay accepted the event',
'No relays available': 'No relays available',
'No write relays configured': 'No write relays configured',
'Relay did not accept the event': 'Relay did not accept the event',
'Only {{count}} relay(s) accepted the event; at least 5 required for "all active relays".': 'Only {{count}} relay(s) accepted the event; at least 5 required for "all active relays".',
'Only {{count}} relay(s) accepted the event; at least 5 required for "all active relays".':
'Only {{count}} relay(s) accepted the event; at least 5 required for "all active relays".',
'Successfully republish to your write relays': 'Successfully republish to your write relays',
'Failed to republish to your write relays: {{error}}':
'Failed to republish to your write relays: {{error}}',
@ -608,7 +627,7 @@ export default { @@ -608,7 +627,7 @@ export default {
Posts: 'Posts',
'Posts (OPs)': 'Posts (OPs)',
'Kind 1 replies': 'Kind 1 replies',
'Comments': 'Comments',
Comments: 'Comments',
'Replies & comments': 'Replies & comments',
Articles: 'Articles',
Highlights: 'Highlights',
@ -642,7 +661,8 @@ export default { @@ -642,7 +661,8 @@ export default {
'Zapped note': 'Zapped note',
'Zapped profile': 'Zapped profile',
'Zap reply threshold': 'Zap reply threshold',
'Zaps above this amount will appear as replies in threads': 'Zaps above this amount will appear as replies in threads',
'Zaps above this amount will appear as replies in threads':
'Zaps above this amount will appear as replies in threads',
'Mark as read': 'Mark as read',
Report: 'Report',
'Successfully report': 'Successfully reported',
@ -722,10 +742,9 @@ export default { @@ -722,10 +742,9 @@ export default {
'{{count}} feeds': '{{count}} feeds',
'Toggle filters': 'Toggle filters',
'Showing {{filtered}} of {{total}} items': 'Showing {{filtered}} of {{total}} items',
'Full': 'Full',
'Compact': 'Compact',
'Expand': 'Expand',
Full: 'Full',
Compact: 'Compact',
Expand: 'Expand',
'help.title': 'Help',
'help.tabShortcuts': 'Keyboard shortcuts',
'help.tabOverview': 'App overview',
@ -750,7 +769,6 @@ export default { @@ -750,7 +769,6 @@ export default {
'shortcuts.closeOverlays': 'Close dialogs, menus, and the search dropdown',
'shortcuts.scrollWhenFocused': 'Scroll the focused scrollable area',
'shortcuts.browserBack': 'Browser back (history)',
'No spells yet. Create one with the button above.':
'No spells yet. Create one with the button above.',
'Loading spells from your relays…': 'Loading spells from your relays…',
@ -785,9 +803,7 @@ export default { @@ -785,9 +803,7 @@ export default {
'One or more relays failed or returned an error. You can change the relay list in the spell and save again.',
'COUNT spell total distinct explanation':
'Distinct matching event IDs across all relays that responded successfully (duplicates across relays removed). Each relay only returns up to the filter limit.',
'Leave empty to use your write relays.':
'Leave empty to use your write relays.',
'Leave empty to use your write relays.': 'Leave empty to use your write relays.',
'COUNT spell result explanation':
'Distinct events returned for this filter (merged from your spell relays and default write relays, duplicates removed). Relays only return up to the filter limit.',
'COUNT spell may be capped by limit':
@ -796,7 +812,6 @@ export default { @@ -796,7 +812,6 @@ export default {
'Could not complete the count. Check relays or try again.',
'REQ returns a feed; COUNT returns a number.':
'REQ: scrollable feed (choose live Feed or one-shot Fetch below). COUNT: a single number, no feed.',
listImportManualLabel: 'Pre-fill from event',
listImportFromEventHint:
'Supported tags are merged into the form (e, p, t, relay, r, a where possible). Non-empty content is skipped; encrypted private items are not read. You may see notices for unmapped tags.',
@ -832,14 +847,568 @@ export default { @@ -832,14 +847,568 @@ export default {
'Tag filter letter': 'Tag letter',
'Filter value': 'Value',
'Add tag filter': 'Add tag filter',
spellPickerSectionYours: 'Your spells',
'Failed to remove spell from local storage':
'Failed to remove spell from local storage',
'Failed to remove spell from local storage': 'Failed to remove spell from local storage',
Spells: 'Spells',
'doublePane.secondaryEmpty': 'Open a note, profile, or settings item to show it here.',
'doublePane.secondaryEmptyHint': 'Your feed and primary pages stay on the left.'
'doublePane.secondaryEmptyHint': 'Your feed and primary pages stay on the left.',
'(empty)': '—',
'12-hour (AM/PM)': '12-hour (AM/PM)',
'24-hour': '24-hour',
'A new version is available': 'A new version is available',
'A short description of the article content': 'A short description of the article content',
AM: 'AM',
'Access via': 'Access via',
'Accessed On': 'Accessed on',
'Accessed on': 'Accessed on',
'Add RSS feed URLs to subscribe to. If no feeds are configured, the default feed will be used.':
'Add RSS feed URLs to subscribe to. If no feeds are configured, the default feed will be used.',
'Add a relay to block': 'Add a relay to block',
'Add at least one invitee': 'Add at least one invitee',
'Add client identifier': 'Add client identifier',
'Add expiration tags by default': 'Add expiration tags by default',
'Add quiet tags by default': 'Add quiet tags by default',
'Add recipients using nostr: mentions (e.g., nostr:npub1...) or the recipient selector above':
'Add recipients using nostr: mentions (e.g., nostr:npub1...) or the recipient selector above',
'Add the source (where this text is from)': 'Add the source (where this text is from)',
'Add to favorites': 'Add to favorites',
'Add {{count}} Selected': 'Add {{count}} Selected',
'Added at': 'Added at',
'Added {{count}} relay(s)': 'Added {{count}} relay(s)',
'Adding...': 'Adding...',
'Adding…': 'Adding…',
'Advanced Options': 'Advanced Options',
'All Topics': 'All Topics',
'All favorite relays': 'All favorite relays',
'All feeds from OPML file are already added': 'All feeds from OPML file are already added',
'All items deleted successfully': 'All items deleted successfully',
'Already blocked': 'Already blocked',
'Already saved': 'Already saved',
'Application Recommendations': 'Application Recommendations',
'Are you sure you want to clear all cached data? This will delete all stored events and settings from your browser.':
'Are you sure you want to clear all cached data? This will delete all stored events and settings from your browser.',
'Are you sure you want to delete all items from this store?':
'Are you sure you want to delete all items from this store?',
'Are you sure you want to unmute this user? This will restore the follow button.':
'Are you sure you want to unmute this user? This will restore the follow button.',
"Are you sure you want to unregister the service worker? This will clear this app's service worker caches and you will need to reload the page.":
"Are you sure you want to unregister the service worker? This will clear this app's service worker caches and you will need to reload the page.",
'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)',
Audio: 'Audio',
Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups',
'Author name (optional)': 'Author name (optional)',
Authors: 'Authors',
'Block Relay': 'Block Relay',
'Blocked Relays': 'Blocked Relays',
'Blocking...': 'Blocking...',
Blossom: 'Blossom',
Book: 'Book',
'Brief description of the event': 'Brief description of the event',
'Brief summary (optional)': 'Brief summary (optional)',
'Brief summary of the article (optional)': 'Brief summary of the article (optional)',
'Browse Cache': 'Browse Cache',
'C-Tag': 'C-Tag',
'Cache Relays': 'Cache Relays',
'Cache cleared successfully': 'Cache cleared successfully',
'Cache refreshed successfully': 'Cache refreshed successfully',
'Cache relays are used to store and retrieve events locally. These relays are merged with your inbox and outbox relays.':
'Cache relays are used to store and retrieve events locally. These relays are merged with your inbox and outbox relays.',
'Cache relays must be local network URLs only (e.g., ws://localhost:4869 or ws://127.0.0.1:4869)':
'Cache relays must be local network URLs only (e.g., ws://localhost:4869 or ws://127.0.0.1:4869)',
'Cache relays saved': 'Cache relays saved',
Cancelled: 'Cancelled',
Chapter: 'Chapter',
'Chapter Title': 'Chapter Title',
'Chapter title (optional)': 'Chapter title (optional)',
Citation: 'Citation',
'Citation title (optional)': 'Citation title (optional)',
'Clean up duplicate replaceable events? This will keep only the newest version of each event.':
'Clean up duplicate replaceable events? This will keep only the newest version of each event.',
'Cleaned up {{deleted}} duplicate entries, kept {{kept}}':
'Cleaned up {{deleted}} duplicate entries, kept {{kept}}',
'Cleaned up {{deleted}} duplicate entries, kept {{kept}} (total items after cleanup: {{total}})':
'Cleaned up {{deleted}} duplicate entries, kept {{kept}} (total items after cleanup: {{total}})',
'Cleanup Duplicates': 'Cleanup Duplicates',
Clear: 'Clear',
'Clear Cache': 'Clear Cache',
'Clear Service Worker': 'Clear Service Worker',
'Clear cached data stored in your browser, including IndexedDB events, localStorage settings, and service worker caches.':
'Clear cached data stored in your browser, including IndexedDB events, localStorage settings, and service worker caches.',
'Click update to get the latest features and improvements':
'Click update to get the latest features and improvements',
Close: 'Close',
'Comma or space-separated topics (will be added as t-tags)':
'Comma or space-separated topics (will be added as t-tags)',
Command: 'Command',
Configure: 'Configure',
'Connect Wallet': 'Connect Wallet',
'Console Logs': 'Console Logs',
'Console logs cleared': 'Console logs cleared',
'Content is required': 'Content is required',
'Content must be 5000 characters or less': 'Content must be 5000 characters or less',
Controversial: 'Controversial',
'Copied!': 'Copied!',
'Copy to clipboard': 'Copy to clipboard',
'Create Article': 'Create Article',
'Create Citation': 'Create Citation',
'Create Highlight': 'Create Highlight',
'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread',
'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...',
'D-Tag': 'D-Tag',
'D-Tag is required for articles': 'D-Tag is required for articles',
DOI: 'DOI',
'Date-based (all-day)': 'Date-based (all-day)',
'Default expiration (months)': 'Default expiration (months)',
'Default quiet period (days)': 'Default quiet period (days)',
'Delete All': 'Delete All',
'Delete item': 'Delete item',
'Deleted {{count}} event(s)': 'Deleted {{count}} event(s)',
'Deletion request sent': 'Deletion request sent',
'Description (content)': 'Description (content)',
'Digital Object Identifier (optional)': 'Digital Object Identifier (optional)',
'Disable word wrap': 'Disable word wrap',
'Discovered Relays': 'Discovered Relays',
'Discovering relays...': 'Discovering relays...',
Discussion: 'Discussion',
Discussions: 'Discussions',
Downvote: 'Downvote',
'Edited by': 'Edited by',
Editor: 'Editor',
'Editor name (optional)': 'Editor name (optional)',
'Enable word wrap': 'Enable word wrap',
'End date': 'End date',
'End date must be after start date': 'End date must be after start date',
'Enter a Nostr event identifier (nevent, naddr, note, or hex ID) OR a web URL (https://). Not both.':
'Enter a Nostr event identifier (nevent, naddr, note, or hex ID) OR a web URL (https://). Not both.',
'Enter a descriptive title for your thread': 'Enter a descriptive title for your thread',
'Enter the author name': 'Enter the author name',
'Enter the book title': 'Enter the book title',
'Enter the specific text you want to highlight in the main content area above':
'Enter the specific text you want to highlight in the main content area above',
'Event IDs (ids)': 'Event IDs (ids)',
'Event appears to be invalid or corrupted': 'Event appears to be invalid or corrupted',
'Event has no value data': 'Event has no value data',
'Event is missing required fields: {{fields}}': 'Event is missing required fields: {{fields}}',
'Event type': 'Event type',
'Expiration Tags': 'Expiration Tags',
'Export OPML': 'Export OPML',
'Export as AsciiDoc': 'Export as AsciiDoc',
'Export as Markdown': 'Export as Markdown',
'External Citation': 'External Citation',
'External Citation Settings': 'External Citation Settings',
'Failed to add relay. Please try again.': 'Failed to add relay. Please try again.',
'Failed to add relays': 'Failed to add relays',
'Failed to block relay. Please try again.': 'Failed to block relay. Please try again.',
'Failed to cleanup duplicates': 'Failed to cleanup duplicates',
'Failed to clear cache': 'Failed to clear cache',
'Failed to copy': 'Failed to copy',
'Failed to create relay set. Please try again.':
'Failed to create relay set. Please try again.',
'Failed to create thread': 'Failed to create thread',
'Failed to create thread. Please try a different relay.':
'Failed to create thread. Please try a different relay.',
'Failed to delete all items': 'Failed to delete all items',
'Failed to delete item': 'Failed to delete item',
'Failed to discover relays': 'Failed to discover relays',
'Failed to export OPML file': 'Failed to export OPML file',
'Failed to export article': 'Failed to export article',
'Failed to import OPML file: {{error}}': 'Failed to import OPML file: {{error}}',
'Failed to load RSS feeds': 'Failed to load RSS feeds',
'Failed to load store items': 'Failed to load store items',
'Failed to mute user privately': 'Failed to mute user privately',
'Failed to mute user publicly': 'Failed to mute user publicly',
'Failed to pin note': 'Failed to pin note',
'Failed to publish post': 'Failed to publish post',
'Failed to publish reply': 'Failed to publish reply',
'Failed to publish thread': 'Failed to publish thread',
'Failed to publish to some relays. Please try again or use different relays.':
'Failed to publish to some relays. Please try again or use different relays.',
'Failed to save RSS feeds': 'Failed to save RSS feeds',
'Failed to save cache relays': 'Failed to save cache relays',
'Failed to save relay list': 'Failed to save relay list',
'Failed to unregister service worker: ': 'Failed to unregister service worker: ',
'Failed to unsubscribe from topic': 'Failed to unsubscribe from topic',
Favorite: 'Favorite',
Fetch: 'Fetch',
'Fetch once, then stop.': 'Fetch once, then stop.',
'Filter by': 'Filter by',
'Flat View': 'Flat View',
'Font size': 'Font size',
'Full Quote/Context': 'Full Quote/Context',
'Full-text search query': 'Full-text search query',
Geohash: 'Geohash',
'Geohash (optional)': 'Geohash (optional)',
'Global quiet mode': 'Global quiet mode',
'Group discussions by topic': 'Group discussions by topic',
'Grouped View': 'Grouped View',
Groups: 'Groups',
'Handler {{index}}': 'Handler {{index}}',
'Hardcopy Citation': 'Hardcopy Citation',
'Hardcopy Citation Settings': 'Hardcopy Citation Settings',
Hide: 'Hide',
'Hide interactions on all posts': 'Hide interactions on all posts',
'Hide interactions on posts with quiet tags': 'Hide interactions on posts with quiet tags',
'High PoW': 'High PoW',
'Higher values make your thread harder to mine but more unique.':
'Higher values make your thread harder to mine but more unique.',
Highlight: 'Highlight',
'Highlight Settings': 'Highlight Settings',
'How to Create a Highlight (NIP-84)': 'How to Create a Highlight (NIP-84)',
'Human-readable spell name': 'Human-readable spell name',
'Image URL': 'Image URL',
'Import OPML': 'Import OPML',
'Imported {{count}} feed(s) from OPML file': 'Imported {{count}} feed(s) from OPML file',
'In-Browser Cache': 'In-Browser Cache',
Insert: 'Insert',
'Insert URL into your post and publish to Nostr GIF library (NIP-94).':
'Insert URL into your post and publish to Nostr GIF library (NIP-94).',
'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation',
'Internal Citation Settings': 'Internal Citation Settings',
'Invalid Event': 'Invalid Event',
'Invalid Lightning Address': 'Invalid Lightning Address',
'Invalid Lightning Address. Please enter a valid Lightning Address or LNURL.':
'Invalid Lightning Address. Please enter a valid Lightning Address or LNURL.',
'Invalid URL': 'Invalid URL',
'Invalid content JSON': 'Invalid content JSON',
'Invalid relay URL': 'Invalid relay URL',
'Invalid source. Please enter a note ID, nevent, naddr, hex ID, or URL.':
'Invalid source. Please enter a note ID, nevent, naddr, hex ID, or URL.',
'Item deleted successfully': 'Item deleted successfully',
JSON: 'JSON',
'Join link': 'Join link',
'Journal/Publication name (optional)': 'Journal/Publication name (optional)',
Json: 'JSON',
Kinds: 'Kinds',
'Language Model': 'Language Model',
Large: 'Large',
'Leave empty for HiveTalk, or paste Zoom / Teams / other link':
'Leave empty for HiveTalk, or paste Zoom / Teams / other link',
'Lightning payment failed': 'Lightning payment failed',
Limit: 'Limit',
'Live feed; keeps updating.': 'Live feed; keeps updating.',
'Loading more...': 'Loading more...',
'Loading relays...': 'Loading relays...',
'Location (optional)': 'Location (optional)',
'Log in to run this spell (it uses $me or $contacts).':
'Log in to run this spell (it uses $me or $contacts).',
'Login failed': 'Login failed',
'Login to configure RSS feeds': 'Login to configure RSS feeds',
'Long-form Article': 'Long-form Article',
'Mailbox relays saved': 'Mailbox relays saved',
'Mark as NSFW': 'Mark as NSFW',
'Maximum {{max}} invitees': 'Maximum {{max}} invitees',
'Maximum {{max}} invitees allowed': 'Maximum {{max}} invitees allowed',
Medium: 'Medium',
Mode: 'Mode',
'Most Zapped': 'Most Zapped',
'Move to top': 'Move to top',
'Multiple choice': 'Multiple choice',
'Mute failed': 'Mute failed',
NSFW: 'NSFW',
Name: 'Name',
'Name of the language model used': 'Name of the language model used',
'New External Citation': 'New External Citation',
'New Hardcopy Citation': 'New Hardcopy Citation',
'New Highlight': 'New Highlight',
'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll',
'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article',
'New Wiki Article (Markdown)': 'New Wiki Article (Markdown)',
Newest: 'Newest',
'No JSON available': 'No JSON available',
'No RSS feeds found in OPML file': 'No RSS feeds found in OPML file',
'No cached data found.': 'No cached data found.',
'No console logs captured yet': 'No console logs captured yet',
'No events found': 'No events found',
'No feeds configured. Default feed will be used.':
'No feeds configured. Default feed will be used.',
'No feeds to export': 'No feeds to export',
'No groups available. Join some groups first.': 'No groups available. Join some groups first.',
'No items in this store.': 'No items in this store.',
'No items match your search.': 'No items match your search.',
'No logs match the current filters': 'No logs match the current filters',
'No posts found': 'No posts found',
'No posts match your search': 'No posts match your search',
'No relays available. Please configure relays in settings.':
'No relays available. Please configure relays in settings.',
'No service workers or caches found for this app':
'No service workers or caches found for this app',
'No users found': 'No users found',
'No valid RSS feed URLs found in OPML file': 'No valid RSS feed URLs found in OPML file',
'Note pinned': 'Note pinned',
'Note unpinned': 'Note unpinned',
Oldest: 'Oldest',
'Open Timestamp': 'Open Timestamp',
'Opens in a new tab. Copy a GIF URL there, then paste below. If this picker closed, click “Insert GIF” again to paste.':
'Opens in a new tab. Copy a GIF URL there, then paste below. If this picker closed, click “Insert GIF” again to paste.',
Option: 'Option',
Optional: 'Optional',
'Optional image for the event': 'Optional image for the event',
'Optionally, add the full quote/context to show your highlight within it':
'Optionally, add the full quote/context to show your highlight within it',
PM: 'PM',
'Page Range': 'Page Range',
Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight',
Photo: 'Photo',
'Picture Note': 'Picture Note',
'Pin note': 'Pin note',
'Plain text description of the query': 'Plain text description of the query',
'Please login to view bookmarks': 'Please login to view bookmarks',
'Please select a group': 'Please select a group',
'Please select at least one relay': 'Please select at least one relay',
'Please set a start date': 'Please set a start date',
'Poll with no options': 'Poll with no options',
'Post published to some relays': 'Post published to some relays',
'Posts will automatically include expiration tags':
'Posts will automatically include expiration tags',
'Posts will automatically include quiet tags': 'Posts will automatically include quiet tags',
'Posts will be quiet for this many days': 'Posts will be quiet for this many days',
'Posts will expire after this many months': 'Posts will expire after this many months',
'Processing...': 'Processing...',
'Profile event not available': 'Profile event not available',
'Prompt Citation': 'Prompt Citation',
'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work',
'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By',
'Published In': 'Published In',
'Published On': 'Published On',
'Published in': 'Published in',
'Published on': 'Published on',
'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed',
'RSS Feed Settings': 'RSS Feed Settings',
'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved',
'Rate limited. Please wait before trying again.':
'Rate limited. Please wait before trying again.',
'Reaction published': 'Reaction published',
'Reaction removed': 'Reaction removed',
'Read full article': 'Read full article',
'Reading group entry': 'Reading group entry',
'Readings Options': 'Readings Options',
Recipients: 'Recipients',
'Recipients detected from your message:': 'Recipients detected from your message:',
'Recommended Relays': 'Recommended Relays',
'Recommended applications for handling events of kind {{kind}}':
'Recommended applications for handling events of kind {{kind}}',
'Reference to the cited Nostr event in kind:pubkey:hex format':
'Reference to the cited Nostr event in kind:pubkey:hex format',
'Refresh Cache': 'Refresh Cache',
'Refreshing posts...': 'Refreshing posts...',
'Relative: 7d, 24h, 1w, 1mo, 1y. Or Unix timestamp.':
'Relative: 7d, 24h, 1w, 1mo, 1y. Or Unix timestamp.',
Relay: 'Relay',
'Relay Hint': 'Relay Hint',
'Relay URL (optional)': 'Relay URL (optional)',
'Relay blocked successfully': 'Relay blocked successfully',
'Relay requires authentication for write access. Please try a different relay or contact the relay operator.':
'Relay requires authentication for write access. Please try a different relay or contact the relay operator.',
'Relay set options': 'Relay set options',
'Remove from favorites': 'Remove from favorites',
Rendered: 'Rendered',
'Reply published': 'Reply published',
'Reply published to some relays': 'Reply published to some relays',
'Reply to Public Message': 'Reply to Public Message',
'Republish to all active relays': 'Republish to all active relays',
'Republish to all available relays': 'Republish to all available relays',
'Required: start (or start date), invitees. Optional: title, end, location, summary, topics, image.':
'Required: start (or start date), invitees. Optional: title, end, location, summary, topics, image.',
'Required: start time or start date. Optional: title, end, location, summary, topics, image.':
'Required: start time or start date. Optional: title, end, location, summary, topics, image.',
'Required: start time, invitees. Join link defaults to HiveTalk. Optional: title, end, summary, topics, image.':
'Required: start time, invitees. Join link defaults to HiveTalk. Optional: title, end, summary, topics, image.',
'Required: start time. Join link defaults to HiveTalk. Optional: title, end, summary, topics, image.':
'Required: start time. Join link defaults to HiveTalk. Optional: title, end, summary, topics, image.',
'Respect quiet tags': 'Respect quiet tags',
'Search (NIP-50)': 'Search (NIP-50)',
'Search by name or npub…': 'Search by name or npub…',
'Search calendar, publications, wiki…': 'Search calendar, publications, wiki…',
'Search for user…': 'Search for user…',
'Search items...': 'Search items...',
'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy',
'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...',
'Searching all available relays...': 'Searching all available relays...',
'Searching…': 'Searching…',
'See reference': 'See reference',
'Select Group': 'Select Group',
'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...',
'Select relays': 'Select relays',
'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...',
'Selected text': 'Selected text',
'Send Public Message': 'Send Public Message',
'Send a Lightning payment to this user': 'Send a Lightning payment to this user',
'Service worker caches cleared. Please reload the page.':
'Service worker caches cleared. Please reload the page.',
'Service worker unregistered and caches cleared. Please reload the page.':
'Service worker unregistered and caches cleared. Please reload the page.',
'Service worker unregistered. Please reload the page.':
'Service worker unregistered. Please reload the page.',
'Share your thoughts, ask questions, or start a discussion...':
'Share your thoughts, ask questions, or start a discussion...',
'Short Video Note': 'Short Video Note',
'Show RSS Feed': 'Show RSS Feed',
'Show all discussions in a single list': 'Show all discussions in a single list',
'Show less': 'Show less',
Since: 'Since',
Small: 'Small',
'Some relays have temporarily disabled writes.':
'Some relays have temporarily disabled writes.',
Source: 'Source',
'Spell definition': 'Spell definition',
'Spell published': 'Spell published',
'Start date': 'Start date',
'Start typing to see a preview...': 'Start typing to see a preview...',
'Subject (Book Title)': 'Subject (Book Title)',
'Subject (book title) is required for reading groups':
'Subject (book title) is required for reading groups',
'Subject / Topics': 'Subject / Topics',
Subscribe: 'Subscribe',
Subscribed: 'Subscribed',
'Subscribed to topic': 'Subscribed to topic',
'Subscribed to topic (local)': 'Subscribed to topic (local)',
'Subscribing...': 'Subscribing...',
Summary: 'Summary',
'Supported Event Types': 'Supported Event Types',
'Take a note': 'Take a note',
'The full prompt conversation (optional)': 'The full prompt conversation (optional)',
'The main editor above should contain only the text you want to highlight. This field should contain the full quote or paragraph for context.':
'The main editor above should contain only the text you want to highlight. This field should contain the full quote or paragraph for context.',
'These relays were found from your NIP-05 identifier and signer. You can add them to your relay list.':
'These relays were found from your NIP-05 identifier and signer. You can add them to your relay list.',
'This file could be either audio or video. Please select the correct type:':
'This file could be either audio or video. Please select the correct type:',
'This store does not contain replaceable events':
'This store does not contain replaceable events',
'This will add additional tags for author and subject to help organize reading group discussions.':
'This will add additional tags for author and subject to help organize reading group discussions.',
'Thread Content': 'Thread Content',
'Thread Title': 'Thread Title',
'Thread creation timed out. Please try again.': 'Thread creation timed out. Please try again.',
'Thread published': 'Thread published',
'Threads are organized by topics. Choose a topic that best fits your discussion.':
'Threads are organized by topics. Choose a topic that best fits your discussion.',
'Time-based': 'Time-based',
'Title is required': 'Title is required',
'Title must be 100 characters or less': 'Title must be 100 characters or less',
'To translate notes and other content, use your browser’s built-in translation. For example: right-click the page and choose “Translate to…”, or use the translate icon in the address bar.':
'To translate notes and other content, use your browser’s built-in translation. For example: right-click the page and choose “Translate to…”, or use the translate icon in the address bar.',
Top: 'Top',
Topic: 'Topic',
URL: 'URL',
'URL of the article cover image (optional)': 'URL of the article cover image (optional)',
'Unique identifier for this article (required)':
'Unique identifier for this article (required)',
'Unmute failed': 'Unmute failed',
'Unpin note': 'Unpin note',
Unsubscribe: 'Unsubscribe',
'Unsubscribed from topic': 'Unsubscribed from topic',
'Unsubscribing...': 'Unsubscribing...',
Until: 'Until',
Untitled: 'Untitled',
Update: 'Update',
'Updating...': 'Updating...',
'Upload Audio Comment': 'Upload Audio Comment',
'Upload Audio Message': 'Upload Audio Message',
'Upload Media': 'Upload Media',
Upvote: 'Upvote',
'User unmuted': 'User unmuted',
'Version number (optional)': 'Version number (optional)',
Video: 'Video',
'Video Note': 'Video Note',
'Video file': 'Video file',
'View Console Logs': 'View Console Logs',
'View JSON': 'View JSON',
'View cached items in this store.': 'View cached items in this store.',
'View definition': 'View definition',
'View details about cached data in IndexedDB stores. Click on a store to view its items.':
'View details about cached data in IndexedDB stores. Click on a store to view its items.',
'View on Alexandria': 'View on Alexandria',
'View on DecentNewsroom': 'View on DecentNewsroom',
'View on Wikistr': 'View on Wikistr',
'View recent console logs for debugging': 'View recent console logs for debugging',
'Voice Comment': 'Voice Comment',
'Voice Note': 'Voice Note',
'Voice note or audio file': 'Voice note or audio file',
Volume: 'Volume',
'Volume number (optional)': 'Volume number (optional)',
'Vote published': 'Vote published',
'Vote removed': 'Vote removed',
'Website where LLM was accessed (optional)': 'Website where LLM was accessed (optional)',
'Wiki Article (AsciiDoc)': 'Wiki Article (AsciiDoc)',
'Wiki Article (Markdown)': 'Wiki Article (Markdown)',
'You can only delete your own notes': 'You can only delete your own notes',
'You must be logged in to create a thread': 'You must be logged in to create a thread',
'You need to add at least one media server in order to upload media files.':
'You need to add at least one media server in order to upload media files.',
'You need to login first': 'You need to login first',
'Your account is blocked from posting to this relay.':
'Your account is blocked from posting to this relay.',
Zap: 'Zap',
'Zap failed': 'Zap failed',
created_at: 'created_at',
'e tag of kind 1040 event (optional)': 'e tag of kind 1040 event (optional)',
'e.g. meetup, conference': 'e.g. meetup, conference',
'e.g., 123-145 (optional)': 'e.g., 123-145 (optional)',
'e.g., GPT-4, Claude, etc. (required)': 'e.g., GPT-4, Claude, etc. (required)',
'e.g., my-article-title': 'e.g., my-article-title',
entries: 'entries',
'from Bunker': 'from Bunker',
'from Extension': 'from Extension',
'from NIP-05': 'from NIP-05',
general: 'general',
'https://example.com (required)': 'https://example.com (required)',
'https://example.com/image.jpg': 'https://example.com/image.jpg',
id: 'id',
items: 'items',
kind: 'kind',
'kind:pubkey:hex format (required)': 'kind:pubkey:hex format (required)',
'last updated': 'last updated',
matching: 'matching',
naddr: 'naddr',
nevent: 'nevent',
'nevent1..., naddr1..., note1..., hex ID, or https://...':
'nevent1..., naddr1..., note1..., hex ID, or https://...',
'no notes found': 'no notes found',
of: 'of',
'on note': 'on note',
optional: 'optional',
pubkey: 'pubkey',
'sent a public message': 'sent a public message',
'sent you a public message': 'sent you a public message',
'sent you a public message (along with {{count}} others)':
'sent you a public message (along with {{count}} others)',
sig: 'sig',
'started a discussion in {{topic}}': 'started a discussion in {{topic}}',
tags: 'tags',
thread: 'thread',
threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞'
}
}

984
src/i18n/locales/es.ts

File diff suppressed because it is too large Load Diff

983
src/i18n/locales/fa.ts

File diff suppressed because it is too large Load Diff

984
src/i18n/locales/fr.ts

File diff suppressed because it is too large Load Diff

983
src/i18n/locales/hi.ts

File diff suppressed because it is too large Load Diff

983
src/i18n/locales/it.ts

File diff suppressed because it is too large Load Diff

984
src/i18n/locales/ja.ts

File diff suppressed because it is too large Load Diff

986
src/i18n/locales/ko.ts

File diff suppressed because it is too large Load Diff

987
src/i18n/locales/pl.ts

File diff suppressed because it is too large Load Diff

983
src/i18n/locales/pt-BR.ts

File diff suppressed because it is too large Load Diff

988
src/i18n/locales/pt-PT.ts

File diff suppressed because it is too large Load Diff

985
src/i18n/locales/ru.ts

File diff suppressed because it is too large Load Diff

983
src/i18n/locales/th.ts

File diff suppressed because it is too large Load Diff

986
src/i18n/locales/zh.ts

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save