Browse Source

update locales

imwald
Silberengel 1 month ago
parent
commit
849c7eb4b9
  1. 3
      .gitignore
  2. 2
      package.json
  3. 16
      scripts/sync-i18n-locales.ts
  4. 396
      src/i18n/locales/ar.ts
  5. 175
      src/i18n/locales/de.ts
  6. 51
      src/i18n/locales/en.ts
  7. 396
      src/i18n/locales/es.ts
  8. 396
      src/i18n/locales/fa.ts
  9. 395
      src/i18n/locales/fr.ts
  10. 396
      src/i18n/locales/hi.ts
  11. 396
      src/i18n/locales/it.ts
  12. 396
      src/i18n/locales/ja.ts
  13. 396
      src/i18n/locales/ko.ts
  14. 395
      src/i18n/locales/pl.ts
  15. 396
      src/i18n/locales/pt-BR.ts
  16. 396
      src/i18n/locales/pt-PT.ts
  17. 396
      src/i18n/locales/ru.ts
  18. 396
      src/i18n/locales/th.ts
  19. 396
      src/i18n/locales/zh.ts
  20. 45
      src/providers/FavoriteRelaysActivityProvider.tsx
  21. 5
      src/providers/LiveActivitiesProvider.tsx

3
.gitignore vendored

@ -28,3 +28,6 @@ dev-dist
*.sw? *.sw?
.vercel .vercel
.venv-i18n
scripts/i18n-overrides/.gaps

2
package.json

@ -23,6 +23,8 @@
"test:run": "vitest run", "test:run": "vitest run",
"i18n:sync": "npx tsx scripts/sync-i18n-locales.ts && prettier --write \"src/i18n/locales/*.ts\"", "i18n:sync": "npx tsx scripts/sync-i18n-locales.ts && prettier --write \"src/i18n/locales/*.ts\"",
"i18n:audit": "npx tsx scripts/i18n-audit.ts", "i18n:audit": "npx tsx scripts/i18n-audit.ts",
"i18n:gaps": "npx tsx scripts/export-en-parity-gaps.ts",
"i18n:translate-de": "PYTHONUNBUFFERED=1 .venv-i18n/bin/python scripts/auto_translate_i18n.py de",
"electron:dev": "concurrently -k -n vite,electron -c blue,green \"vite --host\" \"wait-on http://127.0.0.1:5173 && cross-env NODE_ENV=development electron .\"", "electron:dev": "concurrently -k -n vite,electron -c blue,green \"vite --host\" \"wait-on http://127.0.0.1:5173 && cross-env NODE_ENV=development electron .\"",
"build:electron": "tsc -b && vite build --base ./", "build:electron": "tsc -b && vite build --base ./",
"electron:pack": "npm run build:electron && electron-builder" "electron:pack": "npm run build:electron && electron-builder"

16
scripts/sync-i18n-locales.ts

@ -27,6 +27,18 @@ import zh from '../src/i18n/locales/zh'
const __dirname = path.dirname(fileURLToPath(import.meta.url)) const __dirname = path.dirname(fileURLToPath(import.meta.url))
const srcDir = path.join(__dirname, '..', 'src') const srcDir = path.join(__dirname, '..', 'src')
const localesDir = path.join(__dirname, '..', 'src/i18n/locales') const localesDir = path.join(__dirname, '..', 'src/i18n/locales')
const overridesDir = path.join(__dirname, 'i18n-overrides')
function loadOverrides(localeFile: string): Record<string, string> {
if (localeFile === 'en.ts') return {}
const p = path.join(overridesDir, localeFile.replace(/\.ts$/, '.json'))
if (!fs.existsSync(p)) return {}
try {
return JSON.parse(fs.readFileSync(p, 'utf8')) as Record<string, string>
} catch {
return {}
}
}
const PACKAGES: { file: string; translation: Record<string, string>; header?: string }[] = [ const PACKAGES: { file: string; translation: Record<string, string>; header?: string }[] = [
{ file: 'ar.ts', translation: ar.translation }, { file: 'ar.ts', translation: ar.translation },
@ -121,9 +133,11 @@ for (const k of keyOrder) {
for (const pkg of PACKAGES) { for (const pkg of PACKAGES) {
const prev = pkg.translation as Record<string, string> const prev = pkg.translation as Record<string, string>
const patch = loadOverrides(pkg.file)
const out: Record<string, string> = {} const out: Record<string, string> = {}
for (const k of keyOrder) { for (const k of keyOrder) {
out[k] = prev[k] !== undefined ? prev[k] : mergedEn[k] const base = prev[k] !== undefined ? prev[k] : mergedEn[k]
out[k] = patch[k] !== undefined ? patch[k] : base
} }
const body = emitLocaleFile(out, keyOrder, pkg.header) const body = emitLocaleFile(out, keyOrder, pkg.header)
fs.writeFileSync(path.join(localesDir, pkg.file), body, 'utf8') fs.writeFileSync(path.join(localesDir, pkg.file), body, 'utf8')

396
src/i18n/locales/ar.ts

@ -7,6 +7,18 @@ export default {
Home: 'الرئيسية', Home: 'الرئيسية',
Feed: 'Feed', Feed: 'Feed',
'Favorite Relays': 'الريلايات المفضلة', 'Favorite Relays': 'الريلايات المفضلة',
'Relay pulse': 'Relay pulse',
'Relay pulse empty': 'Quiet on your relays in the last hour.',
'Relay pulse follows': 'Following ({{count}})',
'Relay pulse others': 'Others ({{count}})',
'Relay pulse updated': 'Updated {{relative}}',
'Relay pulse active npubs': 'Active npubs',
'Relay pulse active npubs hint':
'Kind 0 profiles for pubkeys seen on your favorite relays in the last hour (same sample as Relay pulse).',
'Relay pulse drawer following': 'Following',
'Relay pulse drawer others': 'Others',
'Relay pulse drawer no profiles': 'No kind 0 profiles loaded for this sample yet.',
'See the newest notes from your follows': 'See the newest notes from your follows',
'All favorite relays': 'جميع الريلايات المفضلة', 'All favorite relays': 'جميع الريلايات المفضلة',
'Pinned note': 'Pinned note', 'Pinned note': 'Pinned note',
'Relay settings': 'إعدادات الريلاي', 'Relay settings': 'إعدادات الريلاي',
@ -14,11 +26,14 @@ export default {
'Account menu': 'Account menu', 'Account menu': 'Account menu',
SidebarRelays: 'الريلايات', SidebarRelays: 'الريلايات',
Refresh: 'تحديث', Refresh: 'تحديث',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: 'الملف الشخصي', Profile: 'الملف الشخصي',
Logout: 'تسجيل الخروج', Logout: 'تسجيل الخروج',
Following: 'المتابعون', Following: 'المتابعون',
followings: 'المتابعين', followings: 'المتابعين',
boosted: 'قوّى', boosted: 'قوّى',
'Boosted by:': 'Boosted by:',
'just now': 'الآن', 'just now': 'الآن',
'n minutes ago': 'منذ {{n}} دقيقة', 'n minutes ago': 'منذ {{n}} دقيقة',
'n m': '{{n}} دقيقة', 'n m': '{{n}} دقيقة',
@ -85,6 +100,7 @@ export default {
"username's used relays": 'الريلايات المستخدمة لـ {{username}}', "username's used relays": 'الريلايات المستخدمة لـ {{username}}',
"username's muted": '{{username}} تم كتمه', "username's muted": '{{username}} تم كتمه',
Login: 'تسجيل الدخول', Login: 'تسجيل الدخول',
downloadDesktopApp: 'Download app',
'Please log in to view notifications.': 'Please log in to view notifications.', 'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': 'يتابعك', 'Follows you': 'يتابعك',
'Relay Settings': 'إعدادات الريلاي', 'Relay Settings': 'إعدادات الريلاي',
@ -160,10 +176,50 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud',
'Read-aloud idle': 'Idle',
'Preparing read-aloud…': 'Preparing read-aloud…',
'Requesting audio…': 'Requesting audio…',
'Loading audio…': 'Loading audio…',
Playing: 'Playing',
Paused: 'Paused',
'Read-aloud finished': 'Finished',
'Read-aloud error': 'Error',
'TTS endpoint': 'TTS endpoint',
'Using browser speech synthesis': 'Using browser speech synthesis',
'Read-aloud section progress': 'Section {{current}} of {{total}}',
'Request sent': 'Request sent',
'Response received': 'Response received',
'Playback started': 'Playback started',
Characters: 'Characters',
Pause: 'Pause',
Play: 'Play',
Stop: 'Stop',
'Read-aloud sections': 'Read-aloud sections',
'Read-aloud overall progress': 'Overall progress',
'Read-aloud section done': 'Section {{index}}: finished',
'Read-aloud section pending': 'Section {{index}}: not started yet',
'Read-aloud section fetching': 'Section {{index}}: requesting audio',
'Read-aloud section preparing audio': 'Section {{index}}: loading audio',
'Read-aloud section playing': 'Section {{index}}: playing',
'Read-aloud section paused': 'Section {{index}}: paused',
'Read-aloud legend fetching': 'Requesting audio for this section from the server…',
'Read-aloud legend buffering': 'Decoding audio for this section…',
'Read-aloud legend playing': 'Playing this section.',
'Read-aloud legend paused': 'Playback paused.',
'Read-aloud Piper fallback notice':
'Server voice (Piper) could not be used. Playing with your browser voice instead.',
'Read-aloud Piper fallback detail label': 'Piper error',
'Read-aloud Piper status region': 'Piper text-to-speech status',
'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
"You're invited to a scheduled video call.": "You're invited to a scheduled video call.", "You're invited to a scheduled video call.": "You're invited to a scheduled video call.",
@ -275,16 +331,26 @@ export default {
'Upload Image': 'Upload Image', 'Upload Image': 'Upload Image',
'Insert emoji': 'Insert emoji', 'Insert emoji': 'Insert emoji',
'Insert GIF': 'Insert GIF', 'Insert GIF': 'Insert GIF',
'Insert meme': 'Insert meme',
'Search GIFs': 'Search GIFs', 'Search GIFs': 'Search GIFs',
'Search memes': 'Search memes',
'Choose a GIF': 'Choose a GIF', 'Choose a GIF': 'Choose a GIF',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs', 'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs',
'Add your own GIFs': 'Add your own GIFs', 'Add your own GIFs': 'Add your own GIFs',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Description (optional, for search)', 'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up', 'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Uploading...', '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.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} is not a GIF file', '{{name}} is not a GIF file': '{{name}} is not a GIF file',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': 'قراءة وكتابة', 'R & W': 'قراءة وكتابة',
Read: 'قراءة', Read: 'قراءة',
Write: 'كتابة', Write: 'كتابة',
@ -334,6 +400,9 @@ export default {
'Calculate optimal read relays': 'حساب أفضل ريلايات للقراءة', 'Calculate optimal read relays': 'حساب أفضل ريلايات للقراءة',
'Login to set': 'تسجيل الدخول للوصول إلى المجموعة', 'Login to set': 'تسجيل الدخول للوصول إلى المجموعة',
'Please login to view following feed': 'يرجى تسجيل الدخول لعرض خلاصات المتابعة', 'Please login to view following feed': 'يرجى تسجيل الدخول لعرض خلاصات المتابعة',
'Follow set': 'Follow set',
'Follow set feed empty':
'This NIP-51 list is empty, was not found, or relays could not load it yet.',
'Send only to r': 'إرسال فقط إلى {{r}}', 'Send only to r': 'إرسال فقط إلى {{r}}',
'Send only to these relays': 'إرسال فقط إلى هذه الريلايات', 'Send only to these relays': 'إرسال فقط إلى هذه الريلايات',
Explore: 'استكشاف', Explore: 'استكشاف',
@ -371,6 +440,43 @@ export default {
Topics: 'Topics', Topics: 'Topics',
'Open in a': 'فتح في {{a}}', 'Open in a': 'فتح في {{a}}',
'Cannot handle event of kind k': 'لا يمكن معالجة الحدث من النوع {{k}}', 'Cannot handle event of kind k': 'لا يمكن معالجة الحدث من النوع {{k}}',
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Reference tags (e, p, q, a)',
'Starred spells': 'Starred spells',
'Spell star add title': 'Star spell (adds to your Nostr bookmarks)',
'Spell star remove title': 'Unstar spell (removes from your Nostr bookmarks)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'reacted to this note.',
'Notification discussion upvote summary': 'upvoted in this discussion.',
'Notification discussion downvote summary': 'downvoted in this discussion.',
'Notification boost summary': 'Boosted this note',
'Notification boost detail': 'The preview above is the original post.',
'Notification poll vote summary': 'Voted on the poll above.',
'Notification poll vote options count': '{{count}} option(s) selected',
'Jumble Imwald synthetic event': 'Jumble Imwald synthetic event',
'+ Add a URL to this list': 'Add a URL to this list',
'Add a web URL': 'Add a web URL',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Open any https page in the side panel to reply, react, and discuss on Nostr.',
'Enter a valid http(s) URL': 'Enter a valid http(s) URL',
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.':
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.',
'Open in browser': 'Open in browser',
'Web page': 'Web page',
Open: 'Open',
'Sorry! The note cannot be found 😔': 'عذراً! لا يمكن العثور على الملاحظة 😔', 'Sorry! The note cannot be found 😔': 'عذراً! لا يمكن العثور على الملاحظة 😔',
'This user has been muted': 'تم كتم هذا المستخدم', 'This user has been muted': 'تم كتم هذا المستخدم',
Wallet: 'المحفظة', Wallet: 'المحفظة',
@ -388,6 +494,9 @@ export default {
All: 'الكل', All: 'الكل',
Reactions: 'التفاعلات', Reactions: 'التفاعلات',
Zaps: 'Zaps', Zaps: 'Zaps',
Boosts: 'Boosts',
Badges: 'Badges',
Reports: 'Reports',
'Enjoying Jumble?': 'هل تستمتع بـ Jumble؟', 'Enjoying Jumble?': 'هل تستمتع بـ Jumble؟',
'Your donation helps me maintain Jumble and make it better! 😊': 'Your donation helps me maintain Jumble and make it better! 😊':
'تبرعك يساعد في صيانة Jumble وتحسينه! 😊', 'تبرعك يساعد في صيانة Jumble وتحسينه! 😊',
@ -431,6 +540,11 @@ export default {
'no more relays': 'لا توجد مزيد من الريلايات', 'no more relays': 'لا توجد مزيد من الريلايات',
'Favorited by': 'المفضلة من قبل', 'Favorited by': 'المفضلة من قبل',
'Post settings': 'إعدادات النشر', 'Post settings': 'إعدادات النشر',
'Publishing feedback': 'Publishing feedback',
'Publish success toasts': 'Publish success toasts',
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.':
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.',
'Publish successful': 'Publish successful',
'Media upload service': 'خدمة تحميل الوسائط', 'Media upload service': 'خدمة تحميل الوسائط',
'Choose a relay': 'اختر ريلاي', 'Choose a relay': 'اختر ريلاي',
'no relays found': 'لم يتم العثور على ريلايات', 'no relays found': 'لم يتم العثور على ريلايات',
@ -444,6 +558,15 @@ export default {
Bookmarks: 'الإشارات المرجعية', Bookmarks: 'الإشارات المرجعية',
'Follow Packs': 'Follow Packs', 'Follow Packs': 'Follow Packs',
'Follow Pack': 'Follow Pack', 'Follow Pack': 'Follow Pack',
'Follow pack by': 'by',
'In Follow Packs': 'In Follow Packs',
'Badge details': 'Badge details',
'Issued by': 'Issued by',
'Other recipients': 'Other recipients',
'No other recipients found': 'No other recipients found',
'Recipients could not be loaded': 'Recipients could not be loaded',
'View award': 'View award',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Please log in to follow', 'Please log in to follow': 'Please log in to follow',
'Following All': 'Following All', 'Following All': 'Following All',
'Followed {{count}} users': 'Followed {{count}} users', 'Followed {{count}} users': 'Followed {{count}} users',
@ -457,11 +580,26 @@ export default {
General: 'عام', General: 'عام',
Autoplay: 'التشغيل التلقائي', Autoplay: 'التشغيل التلقائي',
'Enable video autoplay on this device': 'تمكين التشغيل التلقائي للفيديو على هذا الجهاز', 'Enable video autoplay on this device': 'تمكين التشغيل التلقائي للفيديو على هذا الجهاز',
'liveActivities.heading': 'Live now',
'liveActivities.regionLabel': 'Live spaces and streams',
'liveActivities.fromFollow': 'From someone you follow',
'liveActivities.goToSlide': 'Show live item {{n}}',
'liveActivities.settingsToggle': 'Live activities banner',
'liveActivities.settingsHint':
'Shows NIP-53 live rooms (audio/video spaces) from your relays. Updates on a quarter-hour schedule and when the app finishes its initial session warm-up.',
'Add random relays to every publish': 'Random relays in publish list', 'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description': '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.', '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_local: 'Local',
relayType_relay_list: 'Relay list', relayType_relay_list: 'Relay list',
relayType_http_relay_list: 'HTTP',
'HTTP relays': 'HTTP relays',
httpRelaysDescription:
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -481,9 +619,34 @@ export default {
'Session relays scored random hint': '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.', '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)', 'Session relays all striked': 'All striked relays (any source)',
'Session relays clear strike': 'Allow again',
'Session relays clear strike hint':
'Remove this relay from the session block list; it will be used again until new connection failures.',
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': 'الصق أو اسحب ملفات الوسائط لتحميلها', 'Paste or drop media files to upload': 'الصق أو اسحب ملفات الوسائط لتحميلها',
Preview: 'معاينة', Preview: 'معاينة',
'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?': 'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?':
@ -523,6 +686,11 @@ export default {
Pay: 'دفع', Pay: 'دفع',
interactions: 'التفاعلات', interactions: 'التفاعلات',
notifications: 'الإشعارات', notifications: 'الإشعارات',
notificationsViewAsAccount: 'View as',
notificationsViewAsAccountAria:
'Switch stored account. Notifications, replies, zaps, reactions, and boosts use this account.',
notificationsSwitchAccountFailed:
'Could not switch account. Check your signer, password, or extension and try again.',
'Show untrusted {type}': 'إظهار {{type}} غير الموثوق', 'Show untrusted {type}': 'إظهار {{type}} غير الموثوق',
'Hide untrusted {type}': 'إخفاء {{type}} غير الموثوق', 'Hide untrusted {type}': 'إخفاء {{type}} غير الموثوق',
'Currently hiding {type} from untrusted users.': 'Currently hiding {type} from untrusted users.':
@ -575,8 +743,41 @@ export default {
'Relay URLs (optional, comma-separated)': 'عناوين المرحلات (اختياري، مفصولة بفواصل)', 'Relay URLs (optional, comma-separated)': 'عناوين المرحلات (اختياري، مفصولة بفواصل)',
'Remove poll': 'إزالة الاستطلاع', 'Remove poll': 'إزالة الاستطلاع',
'Refresh results': 'تحديث النتائج', 'Refresh results': 'تحديث النتائج',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: 'استطلاع', Poll: 'استطلاع',
Media: 'الوسائط', Media: 'الوسائط',
'Articles and Publications': 'Articles and Publications',
'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
'No subscribed interests yet.': 'No subscribed interests yet.':
@ -587,6 +788,10 @@ export default {
'Nothing to load for this feed.': 'Nothing to load for this feed.', 'Nothing to load for this feed.': 'Nothing to load for this feed.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'No posts loaded for this feed. Try refreshing.', 'No posts loaded for this feed. Try refreshing.',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.',
'Per-relay timeline results ({{count}} connections)':
'Per-relay timeline results ({{count}} connections)',
'Republish to ...': 'إعادة النشر إلى ...', 'Republish to ...': 'إعادة النشر إلى ...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -623,7 +828,6 @@ export default {
'No more boosts': 'لا مزيد من الـ Boosts', 'No more boosts': 'لا مزيد من الـ Boosts',
'No boosts yet': 'لا توجد Boosts بعد', 'No boosts yet': 'لا توجد Boosts بعد',
'n more boosts': '{{count}} more boosts', 'n more boosts': '{{count}} more boosts',
Boosts: 'Boosts',
FollowListNotFoundConfirmation: FollowListNotFoundConfirmation:
'لم يتم العثور على قائمة المتابعة. هل تريد إنشاء واحدة جديدة؟ إذا كنت قد تابعت مستخدمين من قبل، يرجى عدم التأكيد لأن هذه العملية ستؤدي إلى فقدان قائمة المتابعة السابقة.', 'لم يتم العثور على قائمة المتابعة. هل تريد إنشاء واحدة جديدة؟ إذا كنت قد تابعت مستخدمين من قبل، يرجى عدم التأكيد لأن هذه العملية ستؤدي إلى فقدان قائمة المتابعة السابقة.',
MuteListNotFoundConfirmation: MuteListNotFoundConfirmation:
@ -653,12 +857,45 @@ export default {
Highlights: 'التمييز', Highlights: 'التمييز',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: 'الاستطلاعات', Polls: 'الاستطلاعات',
'Zap polls': 'Zap polls',
'Voice Posts': 'المشاركات الصوتية', 'Voice Posts': 'المشاركات الصوتية',
'Photo Posts': 'مشاركات الصور', 'Photo Posts': 'مشاركات الصور',
'Video Posts': 'مشاركات الفيديو', 'Video Posts': 'مشاركات الفيديو',
'Git repositories': 'Git repositories',
'Git issues': 'Git issues',
'Git releases': 'Git releases',
'Git Republic repository': 'Git Republic repository',
'Git Republic issue': 'Git Republic issue',
'Git Republic release': 'Git Republic release',
'Git Republic event': 'Git Republic event',
'Git Republic': 'Git Republic',
'Open in Git Republic': 'Open in Git Republic',
'Pre-release': 'Pre-release',
Draft: 'Draft',
'Repository release': 'Repository release',
'New Repository Release': 'New Repository Release',
'Release notes use the editor below (optional).':
'Release notes use the editor below (optional).',
'Repository owner (npub or hex)': 'Repository owner (npub or hex)',
'Repository id (d-tag)': 'Repository id (d-tag)',
'Git tag name': 'Git tag name',
'Tag target (40-char commit hash)': 'Tag target (40-character commit hash)',
'40-character hex SHA-1': '40-character hex SHA-1',
'Release title': 'Release title',
'Download URL': 'Download URL',
'Draft release': 'Draft release',
'Fill repository release fields': 'Fill in all required repository release fields.',
'Invalid repository owner pubkey': 'Invalid repository owner (use npub or 64-char hex).',
'Citations require private relays (NIP-65).':
'Citations require private outbox relays (NIP-65).',
'Select All': 'تحديد الكل', 'Select All': 'تحديد الكل',
'Clear All': 'مسح الكل', 'Clear All': 'مسح الكل',
'Set as default filter': 'تعيين كمرشح افتراضي', 'Set as default filter': 'تعيين كمرشح افتراضي',
'Use filter': 'Use filter',
'See all events': 'See all events',
'See all events hint':
'Feed requests omit kind filters and every kind is shown (still subject to relay limits and other feed rules). For testing new event kinds.',
'Use filter hint': 'Only the kinds you select below are requested and shown.',
Apply: 'تطبيق', Apply: 'تطبيق',
Reset: 'إعادة تعيين', Reset: 'إعادة تعيين',
'Share something on this Relay': 'شارك شيئاً على هذا الريلاي', 'Share something on this Relay': 'شارك شيئاً على هذا الريلاي',
@ -669,8 +906,56 @@ export default {
'Hide content mentioning muted users': 'إخفاء المحتوى الذي يذكر المستخدمين المكتومين', 'Hide content mentioning muted users': 'إخفاء المحتوى الذي يذكر المستخدمين المكتومين',
'This note mentions a user you muted': 'هذه الملاحظة تذكر مستخدماً قمت بكتمه', 'This note mentions a user you muted': 'هذه الملاحظة تذكر مستخدماً قمت بكتمه',
Filter: 'مرشح', Filter: 'مرشح',
'Feed filter': 'Feed filter',
'Search loaded posts': 'Search loaded posts',
'Filter loaded posts placeholder': 'Filter by text in content or tags…',
'Feed filter author': 'Author',
'Feed filter author everyone': 'From everyone',
'Feed filter author me': 'Only from me',
'Feed filter author npub': 'From user (npub or hex)',
'Feed filter author npub from prefix': 'from:',
'Feed filter author npub placeholder': 'npub1… or 64-char hex',
'Feed filter author me needs login': 'Log in to filter by your pubkey',
'Within the last': 'Within the last',
'Time unit': 'Time unit',
Minutes: 'Minutes',
Days: 'Days',
Weeks: 'Weeks',
Months: 'Months',
Years: 'Years',
'Feed filter client-side hint':
'Filters only apply to posts already loaded; relays are not queried again.',
'Feed full search': 'Perform full search',
'Feed full search running': 'Searching…',
'Feed full search clear': 'Clear',
'Feed full search active hint':
'Showing relay search results. Clear to return to the live feed.',
'Feed full search need constraint':
'Add search text, an author filter, or a time range before searching relays.',
'Feed full search invalid feed': 'This feed cannot run a relay search.',
'Feed full search failed': 'Relay search failed. Try again.',
'Feed full search empty': 'No matching posts were found on the queried relays.',
'No loaded posts match your filters.': 'No loaded posts match your filters.',
'mentioned you in a note': 'ذكرك في ملاحظة', 'mentioned you in a note': 'ذكرك في ملاحظة',
'quoted your note': 'اقتبس ملاحظتك', 'quoted your note': 'اقتبس ملاحظتك',
'quoted this note': 'Quoted this note',
'highlighted this note': 'Highlighted this note',
'cited in article': 'Cited in article',
'Thread backlinks heading': 'Also quoting this note',
'Thread backlinks primary section': 'Quotes, highlights & citations',
'Thread backlinks bookmarks section': 'Bookmarks',
'Thread backlinks lists section': 'Lists & collections',
'View full note and thread': 'View full note and thread',
'labeled this note': 'Labeled this note',
'reported this note': 'Reported this note',
'bookmarked this note': 'Bookmarked this note',
'pinned this note': 'Pinned this note',
'listed this note': 'Listed this note',
'bookmark set reference': 'Bookmark set includes this note',
'curated this note': 'Curated this note',
'badge award for this note': 'Badge award for this note',
'referenced this note': 'Referenced this note',
'Report events heading': 'Moderation reports',
'voted in your poll': 'صوت في استطلاعك', 'voted in your poll': 'صوت في استطلاعك',
'reacted to your note': 'تفاعل مع ملاحظتك', 'reacted to your note': 'تفاعل مع ملاحظتك',
'boosted your note': 'قوّى ملاحظتك', 'boosted your note': 'قوّى ملاحظتك',
@ -726,6 +1011,10 @@ export default {
'Trending on the Default Relays': 'Trending on the Default Relays', 'Trending on the Default Relays': 'Trending on the Default Relays',
'Latest from your follows': 'Latest from your follows', 'Latest from your follows': 'Latest from your follows',
'Latest from our recommended follows': 'Latest from our recommended follows', 'Latest from our recommended follows': 'Latest from our recommended follows',
'Follows latest page title': 'Latest from follows',
'Follows latest page description':
'Recent notes from accounts you follow (or a curated list when not signed in), using their outbox relays merged with your favorites. Expand a row for notes or open the profile from the row.',
'Follows latest nav label': 'Follows latest',
'Loading follow list…': 'Loading follow list…', 'Loading follow list…': 'Loading follow list…',
'Could not load recommended follows': 'Could not load recommended follows', 'Could not load recommended follows': 'Could not load recommended follows',
'Your follow list is empty': 'Your follow list is empty', 'Your follow list is empty': 'Your follow list is empty',
@ -915,6 +1204,8 @@ export default {
'Article exported as AsciiDoc': 'Article exported as AsciiDoc', 'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown', 'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)', 'Article title (optional)': 'Article title (optional)',
articleDTagDefaultHint:
'Optional. If empty, the d-tag defaults to a type-specific prefix plus a Unix timestamp (seconds), e.g. longform-article-…, wiki-article-…, wiki-markdown-…, publication-content-….',
Audio: 'Audio', Audio: 'Audio',
Author: 'Author', Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups', 'Author is required for reading groups': 'Author is required for reading groups',
@ -977,6 +1268,7 @@ export default {
'Create New Thread': 'Create New Thread', 'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll', 'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread', 'Create Thread': 'Create Thread',
composeModeKind1: 'Short note (kind 1) — turn off other compose types',
'Create a Spell': 'Create a Spell', 'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...', 'Creating...': 'Creating...',
'D-Tag': 'D-Tag', 'D-Tag': 'D-Tag',
@ -1087,6 +1379,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1140,6 +1434,7 @@ export default {
'New Internal Citation': 'New Internal Citation', 'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article', 'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll', 'New Poll': 'New Poll',
'New Discussion': 'New Discussion',
'New Prompt Citation': 'New Prompt Citation', 'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message', 'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article', 'New Wiki Article': 'New Wiki Article',
@ -1171,7 +1466,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1180,6 +1476,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1203,6 +1500,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1212,7 +1511,61 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Follow sets',
'Follow sets settings intro':
'NIP-51 follow sets (kind 30000) group people for custom feeds (for example in Spells). Lists are published to your NIP-65 outboxes and profile discovery relays.',
'New follow set': 'New follow set',
'Edit follow set': 'Edit follow set',
'No follow sets yet': 'You have not created any follow sets yet.',
'Follow set saved': 'Follow set saved',
'Follow set deleted': 'Follow set deleted',
'Failed to load follow sets': 'Failed to load follow sets',
members: 'members',
'Optional display title': 'Optional display title',
'List id (d tag)': 'List id (d tag)',
'Follow set d tag hint':
'Stable identifier for this list. It cannot be changed after the first publish.',
'People in this list': 'People in this list',
'Delete follow set?': 'Delete this follow set?',
'Delete follow set confirm':
'This sends a deletion request (kind 5) for the list. Relays that accept it will drop the list; other clients may still show a cached copy until they refresh.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1265,6 +1618,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1275,6 +1629,10 @@ export default {
'Select Media Type': 'Select Media Type', 'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...', 'Select group...': 'Select group...',
'Select relays': 'Select relays', 'Select relays': 'Select relays',
'Publish relay cap hint':
'At most {{max}} relays are contacted per publish. Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted; lower-priority checks are skipped first if you exceed the cap. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Publish relay cap hint with outbox first':
'At most {{max}} relays per publish. Your NIP-65 write relay(s) use {{reservedSlots}} of those slots first (merged ahead of this picker; they may also appear checked below). Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Select the group where you want to create this discussion.': 'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.', 'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...', 'Select topic...': 'Select topic...',
@ -1319,6 +1677,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1428,6 +1794,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

175
src/i18n/locales/de.ts

@ -19,7 +19,8 @@ export default {
'Kind-0-Profile für npubs, die in der letzten Stunde auf deinen Lieblingsrelais auftauchten (gleiche Stichprobe wie Relay-Puls).', 'Kind-0-Profile für npubs, die in der letzten Stunde auf deinen Lieblingsrelais auftauchten (gleiche Stichprobe wie Relay-Puls).',
'Relay pulse drawer following': 'Folge ich', 'Relay pulse drawer following': 'Folge ich',
'Relay pulse drawer others': 'Andere', 'Relay pulse drawer others': 'Andere',
'Relay pulse drawer no profiles': 'Für diese Stichprobe wurden noch keine Kind-0-Profile geladen.', 'Relay pulse drawer no profiles':
'Für diese Stichprobe wurden noch keine Kind-0-Profile geladen.',
'See the newest notes from your follows': 'Neueste Notizen von deinen Abos anzeigen', 'See the newest notes from your follows': 'Neueste Notizen von deinen Abos anzeigen',
'All favorite relays': 'Alle Lieblingsrelais', 'All favorite relays': 'Alle Lieblingsrelais',
'Pinned note': 'Angehefteter Beitrag', 'Pinned note': 'Angehefteter Beitrag',
@ -28,6 +29,8 @@ export default {
'Account menu': 'Kontomenü', 'Account menu': 'Kontomenü',
SidebarRelays: 'Relays', SidebarRelays: 'Relays',
Refresh: 'Aktualisieren', Refresh: 'Aktualisieren',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: 'Profil', Profile: 'Profil',
Logout: 'Abmelden', Logout: 'Abmelden',
Following: 'Folgende', Following: 'Folgende',
@ -336,16 +339,26 @@ export default {
'Upload Image': 'Bild hochladen', 'Upload Image': 'Bild hochladen',
'Insert emoji': 'Emoji einfügen', 'Insert emoji': 'Emoji einfügen',
'Insert GIF': 'GIF einfügen', 'Insert GIF': 'GIF einfügen',
'Insert meme': 'Insert meme',
'Search GIFs': 'GIFs suchen', 'Search GIFs': 'GIFs suchen',
'Search memes': 'Search memes',
'Choose a GIF': 'GIF auswählen', 'Choose a GIF': 'GIF auswählen',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Bei GifBuddy nach weiteren GIFs suchen', 'Search GifBuddy for more GIFs': 'Bei GifBuddy nach weiteren GIFs suchen',
'Add your own GIFs': 'Eigene GIFs hinzufügen', 'Add your own GIFs': 'Eigene GIFs hinzufügen',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Beschreibung (optional, für Suche)', 'Description (optional, for search)': 'Beschreibung (optional, für Suche)',
'e.g. happy birthday, thumbs up': 'z. B. happy birthday, Daumen hoch', 'e.g. happy birthday, thumbs up': 'z. B. happy birthday, Daumen hoch',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Wird hochgeladen...', 'Uploading...': 'Wird hochgeladen...',
'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.':
'Keine GIFs gefunden. Suche oder füge eigene hinzu. GIFs stammen von Nostr-Kind-1063-Events (NIP-94) auf GIF-Relays.', 'Keine GIFs gefunden. Suche oder füge eigene hinzu. GIFs stammen von Nostr-Kind-1063-Events (NIP-94) auf GIF-Relays.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} ist keine GIF-Datei', '{{name}} is not a GIF file': '{{name}} ist keine GIF-Datei',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': 'R & W', 'R & W': 'R & W',
Read: 'Lesen', Read: 'Lesen',
Write: 'Schreiben', Write: 'Schreiben',
@ -438,6 +451,22 @@ export default {
Topics: 'Themen', Topics: 'Themen',
'Open in a': 'Öffnen in {{a}}', 'Open in a': 'Öffnen in {{a}}',
'Cannot handle event of kind k': 'Ereignis des Typs {{k}} kann nicht verarbeitet werden', 'Cannot handle event of kind k': 'Ereignis des Typs {{k}} kann nicht verarbeitet werden',
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Referenz-Tags (e, p, q, a)',
'Starred spells': 'Markierte Sprüche',
'Spell star add title': 'Spruch markieren (wird zu deinen Nostr-Lesezeichen hinzugefügt)',
'Spell star remove title': 'Markierung aufheben (aus Nostr-Lesezeichen entfernen)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'hat auf diese Notiz reagiert.', 'Notification reaction summary': 'hat auf diese Notiz reagiert.',
'Notification discussion upvote summary': 'hat in dieser Diskussion positiv bewertet.', 'Notification discussion upvote summary': 'hat in dieser Diskussion positiv bewertet.',
'Notification discussion downvote summary': 'hat in dieser Diskussion negativ bewertet.', 'Notification discussion downvote summary': 'hat in dieser Diskussion negativ bewertet.',
@ -448,6 +477,9 @@ export default {
'Jumble Imwald synthetic event': 'Jumble Imwald – synthetisches Ereignis', 'Jumble Imwald synthetic event': 'Jumble Imwald – synthetisches Ereignis',
'+ Add a URL to this list': 'URL zur Liste hinzufügen', '+ Add a URL to this list': 'URL zur Liste hinzufügen',
'Add a web URL': 'Web-URL hinzufügen', 'Add a web URL': 'Web-URL hinzufügen',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.': 'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Beliebige https-Seite im Seitenpanel öffnen, um auf Nostr zu antworten, zu reagieren und zu diskutieren.', 'Beliebige https-Seite im Seitenpanel öffnen, um auf Nostr zu antworten, zu reagieren und zu diskutieren.',
'Enter a valid http(s) URL': 'Bitte eine gültige http(s)-URL eingeben', 'Enter a valid http(s) URL': 'Bitte eine gültige http(s)-URL eingeben',
@ -545,6 +577,7 @@ export default {
'No other recipients found': 'Keine weiteren Empfänger:innen gefunden', 'No other recipients found': 'Keine weiteren Empfänger:innen gefunden',
'Recipients could not be loaded': 'Empfänger:innen konnten nicht geladen werden', 'Recipients could not be loaded': 'Empfänger:innen konnten nicht geladen werden',
'View award': 'Verleihung anzeigen', 'View award': 'Verleihung anzeigen',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Zum Folgen bitte anmelden', 'Please log in to follow': 'Zum Folgen bitte anmelden',
'Following All': 'Allen gefolgt', 'Following All': 'Allen gefolgt',
'Followed {{count}} users': '{{count}} Nutzer:innen gefolgt', 'Followed {{count}} users': '{{count}} Nutzer:innen gefolgt',
@ -577,7 +610,8 @@ export default {
'HTTPS-Index-Relays (z. B. REST /api/events/filter). Gleiche Lese-/Schreib-/beides-Rollen wie Mailbox-Relays; gespeichert als Kind 10243. Liste leeren und speichern, um eine leere Liste zu veröffentlichen.', 'HTTPS-Index-Relays (z. B. REST /api/events/filter). Gleiche Lese-/Schreib-/beides-Rollen wie Mailbox-Relays; gespeichert als Kind 10243. Liste leeren und speichern, um eine leere Liste zu veröffentlichen.',
'HTTP relays saved': 'HTTP-Relays gespeichert', 'HTTP relays saved': 'HTTP-Relays gespeichert',
'Failed to save HTTP relay list': 'HTTP-Relay-Liste konnte nicht gespeichert werden', 'Failed to save HTTP relay list': 'HTTP-Relay-Liste konnte nicht gespeichert werden',
'HTTP relays must start with https:// or http://': 'HTTP-Relays müssen mit https:// oder http:// beginnen', 'HTTP relays must start with https:// or http://':
'HTTP-Relays müssen mit https:// oder http:// beginnen',
relayType_client_default: 'Client-Standard', relayType_client_default: 'Client-Standard',
relayType_open_from: 'Aktueller Feed', relayType_open_from: 'Aktueller Feed',
relayType_favorite: 'Favorit', relayType_favorite: 'Favorit',
@ -603,6 +637,28 @@ export default {
successes: 'Erfolge', successes: 'Erfolge',
None: 'Keine', None: 'Keine',
'Cache & offline storage': 'Cache & Offline-Speicher', 'Cache & offline storage': 'Cache & Offline-Speicher',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': 'Paste or drop media files to upload':
'Füge Medien-Dateien ein oder ziehe sie hierher, um sie hochzuladen', 'Füge Medien-Dateien ein oder ziehe sie hierher, um sie hochzuladen',
Preview: 'Vorschau', Preview: 'Vorschau',
@ -702,13 +758,39 @@ export default {
'Remove poll': 'Umfrage entfernen', 'Remove poll': 'Umfrage entfernen',
'Refresh results': 'Ergebnisse aktualisieren', 'Refresh results': 'Ergebnisse aktualisieren',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%', '{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: 'Umfrage', Poll: 'Umfrage',
Media: 'Medien', Media: 'Medien',
'Articles and Publications': 'Artikel und Veröffentlichungen', 'Articles and Publications': 'Artikel und Veröffentlichungen',
'Search articles...': 'Artikel suchen…', 'Search articles...': 'Artikel suchen…',
'Refreshing articles...': 'Artikel werden aktualisiert…', 'Refreshing articles...': 'Artikel werden aktualisiert…',
'No articles or publications found': 'Keine Artikel oder Veröffentlichungen gefunden', 'No articles or publications found': 'Keine Artikel oder Veröffentlichungen gefunden',
'No articles or publications match your search': 'Keine Artikel oder Veröffentlichungen entsprechen der Suche', 'No articles or publications match your search':
'Keine Artikel oder Veröffentlichungen entsprechen der Suche',
'articles and publications': 'Artikel und Veröffentlichungen', 'articles and publications': 'Artikel und Veröffentlichungen',
Interests: 'Interessen', Interests: 'Interessen',
Calendar: 'Kalender', Calendar: 'Kalender',
@ -720,10 +802,10 @@ export default {
'Nothing to load for this feed.': 'Für diesen Feed gibt es nichts zu laden.', 'Nothing to load for this feed.': 'Für diesen Feed gibt es nichts zu laden.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'Keine Beiträge für diesen Feed geladen. Bitte aktualisieren.', 'Keine Beiträge für diesen Feed geladen. Bitte aktualisieren.',
'Per-relay timeline results ({{count}} connections)':
'Ergebnis je Relay ({{count}} Verbindungen)',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.': 'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Die Relays haben keine Ereignisse für diesen Feed geliefert. Sie können offline sein, langsam antworten oder diese Notizen nicht indexieren.', 'Die Relays haben keine Ereignisse für diesen Feed geliefert. Sie können offline sein, langsam antworten oder diese Notizen nicht indexieren.',
'Per-relay timeline results ({{count}} connections)':
'Ergebnis je Relay ({{count}} Verbindungen)',
'Republish to ...': 'Erneut veröffentlichen zu ...', 'Republish to ...': 'Erneut veröffentlichen zu ...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -790,6 +872,7 @@ export default {
Highlights: 'Highlights', Highlights: 'Highlights',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: 'Umfragen', Polls: 'Umfragen',
'Zap polls': 'Zap polls',
'Voice Posts': 'Sprachbeiträge', 'Voice Posts': 'Sprachbeiträge',
'Photo Posts': 'Fotobeiträge', 'Photo Posts': 'Fotobeiträge',
'Video Posts': 'Videobeiträge', 'Video Posts': 'Videobeiträge',
@ -867,7 +950,8 @@ export default {
'Bitte Suchtext, Autorenfilter oder einen Zeitraum setzen, bevor Relays abgefragt werden.', 'Bitte Suchtext, Autorenfilter oder einen Zeitraum setzen, bevor Relays abgefragt werden.',
'Feed full search invalid feed': 'Für diesen Feed ist keine Relay-Suche möglich.', 'Feed full search invalid feed': 'Für diesen Feed ist keine Relay-Suche möglich.',
'Feed full search failed': 'Relay-Suche fehlgeschlagen. Bitte erneut versuchen.', 'Feed full search failed': 'Relay-Suche fehlgeschlagen. Bitte erneut versuchen.',
'Feed full search empty': 'Auf den abgefragten Relays wurden keine passenden Beiträge gefunden.', 'Feed full search empty':
'Auf den abgefragten Relays wurden keine passenden Beiträge gefunden.',
'No loaded posts match your filters.': 'Keine geladenen Beiträge entsprechen den Filtern.', 'No loaded posts match your filters.': 'Keine geladenen Beiträge entsprechen den Filtern.',
'mentioned you in a note': 'hat Sie in einer Notiz erwähnt', 'mentioned you in a note': 'hat Sie in einer Notiz erwähnt',
'quoted your note': 'hat Ihre Notiz zitiert', 'quoted your note': 'hat Ihre Notiz zitiert',
@ -1321,6 +1405,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1406,7 +1492,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1415,6 +1502,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1438,6 +1526,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1447,6 +1537,41 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Folgenlisten', 'Follow sets': 'Folgenlisten',
'Follow sets settings intro': 'Follow sets settings intro':
@ -1466,6 +1591,7 @@ export default {
'Delete follow set?': 'Diese Folgenliste löschen?', 'Delete follow set?': 'Diese Folgenliste löschen?',
'Delete follow set confirm': 'Delete follow set confirm':
'Es wird eine Löschanfrage (Kind 5) für die Liste gesendet. Relays, die sie annehmen, entfernen die Liste; andere Clients können noch zwischengespeicherte Daten anzeigen, bis sie neu laden.', 'Es wird eine Löschanfrage (Kind 5) für die Liste gesendet. Relays, die sie annehmen, entfernen die Liste; andere Clients können noch zwischengespeicherte Daten anzeigen, bis sie neu laden.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1518,6 +1644,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1569,10 +1696,6 @@ export default {
'Subscribed to topic (local)': 'Subscribed to topic (local)', 'Subscribed to topic (local)': 'Subscribed to topic (local)',
'Subscribing...': 'Subscribing...', 'Subscribing...': 'Subscribing...',
Summary: 'Summary', Summary: 'Summary',
'Unknown note reference tags': 'Referenz-Tags (e, p, q, a)',
'Starred spells': 'Markierte Sprüche',
'Spell star add title': 'Spruch markieren (wird zu deinen Nostr-Lesezeichen hinzugefügt)',
'Spell star remove title': 'Markierung aufheben (aus Nostr-Lesezeichen entfernen)',
'Supported Event Types': 'Supported Event Types', 'Supported Event Types': 'Supported Event Types',
'Take a note': 'Take a note', 'Take a note': 'Take a note',
'The full prompt conversation (optional)': 'The full prompt conversation (optional)', 'The full prompt conversation (optional)': 'The full prompt conversation (optional)',
@ -1580,6 +1703,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1689,6 +1820,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

51
src/i18n/locales/en.ts

@ -176,8 +176,7 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud', 'Read aloud': 'Read aloud',
@ -218,7 +217,8 @@ export default {
'Read-aloud Piper status heading': 'Piper (server voice)', 'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice': 'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.', 'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started': 'Piper was started at {{time}} (this read-aloud used the server first).', 'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}', 'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
@ -599,7 +599,8 @@ export default {
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.', 'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved', 'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list', 'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://': 'HTTP relays must start with https:// or http://', 'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -625,6 +626,9 @@ export default {
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive', 'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb': 'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.', 'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
@ -772,7 +776,8 @@ export default {
'Search articles...': 'Search articles...', 'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...', 'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found', 'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search': 'No articles or publications match your search', 'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications', 'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
@ -1241,7 +1246,7 @@ export default {
'Clear Cache': 'Clear Cache', 'Clear Cache': 'Clear Cache',
'Clear Service Worker': 'Clear Service Worker', '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.':
'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, read-aloud (Piper) audio cache, localStorage settings, and service worker caches.',
'Click update to get the latest features and improvements': 'Click update to get the latest features and improvements':
'Click update to get the latest features and improvements', 'Click update to get the latest features and improvements',
Close: 'Close', Close: 'Close',
@ -1514,15 +1519,15 @@ export default {
'Article URLs subtitle': 'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.', 'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline', 'RSS timeline': 'RSS timeline',
'RSS timeline subtitle': 'Every item from your subscribed feeds, newest first — classic RSS reader.', 'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs', URLs: 'URLs',
RSS: 'RSS', RSS: 'RSS',
Both: 'Both', Both: 'Both',
'RSS feed item label': 'RSS', 'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL', 'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity', 'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards': 'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed', 'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles', 'RSS articles': 'RSS articles',
@ -1532,8 +1537,7 @@ export default {
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL', '{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet', 'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet', 'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)', standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed', standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed', standardRssFeed_youtubeChannel: 'YouTube channel feed',
@ -1679,7 +1683,8 @@ export default {
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.', 'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.': 'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.', 'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.': 'This GIF was found in a Nostr event of kind {{kind}}.', 'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1789,6 +1794,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

396
src/i18n/locales/es.ts

@ -7,6 +7,18 @@ export default {
Home: 'Inicio', Home: 'Inicio',
Feed: 'Feed', Feed: 'Feed',
'Favorite Relays': 'Relés favoritos', 'Favorite Relays': 'Relés favoritos',
'Relay pulse': 'Relay pulse',
'Relay pulse empty': 'Quiet on your relays in the last hour.',
'Relay pulse follows': 'Following ({{count}})',
'Relay pulse others': 'Others ({{count}})',
'Relay pulse updated': 'Updated {{relative}}',
'Relay pulse active npubs': 'Active npubs',
'Relay pulse active npubs hint':
'Kind 0 profiles for pubkeys seen on your favorite relays in the last hour (same sample as Relay pulse).',
'Relay pulse drawer following': 'Following',
'Relay pulse drawer others': 'Others',
'Relay pulse drawer no profiles': 'No kind 0 profiles loaded for this sample yet.',
'See the newest notes from your follows': 'See the newest notes from your follows',
'All favorite relays': 'Todos los relés favoritos', 'All favorite relays': 'Todos los relés favoritos',
'Pinned note': 'Pinned note', 'Pinned note': 'Pinned note',
'Relay settings': 'Configuración de relés', 'Relay settings': 'Configuración de relés',
@ -14,11 +26,14 @@ export default {
'Account menu': 'Account menu', 'Account menu': 'Account menu',
SidebarRelays: 'Relés', SidebarRelays: 'Relés',
Refresh: 'Actualizar', Refresh: 'Actualizar',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: 'Perfil', Profile: 'Perfil',
Logout: 'Cerrar sesión', Logout: 'Cerrar sesión',
Following: 'Siguiendo', Following: 'Siguiendo',
followings: 'siguiendo', followings: 'siguiendo',
boosted: 'boosteado', boosted: 'boosteado',
'Boosted by:': 'Boosted by:',
'just now': 'justo ahora', 'just now': 'justo ahora',
'n minutes ago': 'hace {{n}} minutos', 'n minutes ago': 'hace {{n}} minutos',
'n m': '{{n}}m', 'n m': '{{n}}m',
@ -85,6 +100,7 @@ export default {
"username's used relays": 'Relés usados por {{username}}', "username's used relays": 'Relés usados por {{username}}',
"username's muted": 'Silenciados de {{username}}', "username's muted": 'Silenciados de {{username}}',
Login: 'Iniciar sesión', Login: 'Iniciar sesión',
downloadDesktopApp: 'Download app',
'Please log in to view notifications.': 'Please log in to view notifications.', 'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': 'Te sigue', 'Follows you': 'Te sigue',
'Relay Settings': 'Configuración de relés', 'Relay Settings': 'Configuración de relés',
@ -160,10 +176,50 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud',
'Read-aloud idle': 'Idle',
'Preparing read-aloud…': 'Preparing read-aloud…',
'Requesting audio…': 'Requesting audio…',
'Loading audio…': 'Loading audio…',
Playing: 'Playing',
Paused: 'Paused',
'Read-aloud finished': 'Finished',
'Read-aloud error': 'Error',
'TTS endpoint': 'TTS endpoint',
'Using browser speech synthesis': 'Using browser speech synthesis',
'Read-aloud section progress': 'Section {{current}} of {{total}}',
'Request sent': 'Request sent',
'Response received': 'Response received',
'Playback started': 'Playback started',
Characters: 'Characters',
Pause: 'Pause',
Play: 'Play',
Stop: 'Stop',
'Read-aloud sections': 'Read-aloud sections',
'Read-aloud overall progress': 'Overall progress',
'Read-aloud section done': 'Section {{index}}: finished',
'Read-aloud section pending': 'Section {{index}}: not started yet',
'Read-aloud section fetching': 'Section {{index}}: requesting audio',
'Read-aloud section preparing audio': 'Section {{index}}: loading audio',
'Read-aloud section playing': 'Section {{index}}: playing',
'Read-aloud section paused': 'Section {{index}}: paused',
'Read-aloud legend fetching': 'Requesting audio for this section from the server…',
'Read-aloud legend buffering': 'Decoding audio for this section…',
'Read-aloud legend playing': 'Playing this section.',
'Read-aloud legend paused': 'Playback paused.',
'Read-aloud Piper fallback notice':
'Server voice (Piper) could not be used. Playing with your browser voice instead.',
'Read-aloud Piper fallback detail label': 'Piper error',
'Read-aloud Piper status region': 'Piper text-to-speech status',
'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
"You're invited to a scheduled video call.": "You're invited to a scheduled video call.", "You're invited to a scheduled video call.": "You're invited to a scheduled video call.",
@ -276,16 +332,26 @@ export default {
'Upload Image': 'Upload Image', 'Upload Image': 'Upload Image',
'Insert emoji': 'Insert emoji', 'Insert emoji': 'Insert emoji',
'Insert GIF': 'Insert GIF', 'Insert GIF': 'Insert GIF',
'Insert meme': 'Insert meme',
'Search GIFs': 'Search GIFs', 'Search GIFs': 'Search GIFs',
'Search memes': 'Search memes',
'Choose a GIF': 'Choose a GIF', 'Choose a GIF': 'Choose a GIF',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs', 'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs',
'Add your own GIFs': 'Add your own GIFs', 'Add your own GIFs': 'Add your own GIFs',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Description (optional, for search)', 'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up', 'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Uploading...', '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.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} is not a GIF file', '{{name}} is not a GIF file': '{{name}} is not a GIF file',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': 'L y E', 'R & W': 'L y E',
Read: 'Leer', Read: 'Leer',
Write: 'Escribir', Write: 'Escribir',
@ -338,6 +404,9 @@ export default {
'Calculate optimal read relays': 'Calcular relés de lectura óptimos', 'Calculate optimal read relays': 'Calcular relés de lectura óptimos',
'Login to set': 'Inicia sesión para ajustar', 'Login to set': 'Inicia sesión para ajustar',
'Please login to view following feed': 'Por favor inicia sesión para ver el feed de seguidos', 'Please login to view following feed': 'Por favor inicia sesión para ver el feed de seguidos',
'Follow set': 'Follow set',
'Follow set feed empty':
'This NIP-51 list is empty, was not found, or relays could not load it yet.',
'Send only to r': 'Enviar únicamente a {{r}}', 'Send only to r': 'Enviar únicamente a {{r}}',
'Send only to these relays': 'Enviar únicamente a estos relés', 'Send only to these relays': 'Enviar únicamente a estos relés',
Explore: 'Explorar', Explore: 'Explorar',
@ -375,6 +444,43 @@ export default {
Topics: 'Topics', Topics: 'Topics',
'Open in a': 'Abrir en {{a}}', 'Open in a': 'Abrir en {{a}}',
'Cannot handle event of kind k': 'No se puede manejar el evento de tipo {{k}}', 'Cannot handle event of kind k': 'No se puede manejar el evento de tipo {{k}}',
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Reference tags (e, p, q, a)',
'Starred spells': 'Starred spells',
'Spell star add title': 'Star spell (adds to your Nostr bookmarks)',
'Spell star remove title': 'Unstar spell (removes from your Nostr bookmarks)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'reacted to this note.',
'Notification discussion upvote summary': 'upvoted in this discussion.',
'Notification discussion downvote summary': 'downvoted in this discussion.',
'Notification boost summary': 'Boosted this note',
'Notification boost detail': 'The preview above is the original post.',
'Notification poll vote summary': 'Voted on the poll above.',
'Notification poll vote options count': '{{count}} option(s) selected',
'Jumble Imwald synthetic event': 'Jumble Imwald synthetic event',
'+ Add a URL to this list': 'Add a URL to this list',
'Add a web URL': 'Add a web URL',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Open any https page in the side panel to reply, react, and discuss on Nostr.',
'Enter a valid http(s) URL': 'Enter a valid http(s) URL',
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.':
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.',
'Open in browser': 'Open in browser',
'Web page': 'Web page',
Open: 'Open',
'Sorry! The note cannot be found 😔': '¡Lo siento! No se pudo encontrar la nota 😔', 'Sorry! The note cannot be found 😔': '¡Lo siento! No se pudo encontrar la nota 😔',
'This user has been muted': 'Este usuario ha sido silenciado', 'This user has been muted': 'Este usuario ha sido silenciado',
Wallet: 'Billetera', Wallet: 'Billetera',
@ -392,6 +498,9 @@ export default {
All: 'Todo', All: 'Todo',
Reactions: 'Reacciones', Reactions: 'Reacciones',
Zaps: 'Zaps', Zaps: 'Zaps',
Boosts: 'Boosts',
Badges: 'Badges',
Reports: 'Reports',
'Enjoying Jumble?': '¿Te gusta Jumble?', 'Enjoying Jumble?': '¿Te gusta Jumble?',
'Your donation helps me maintain Jumble and make it better! 😊': 'Your donation helps me maintain Jumble and make it better! 😊':
'¡Tu donación me ayuda a mantener y mejorar Jumble! 😊', '¡Tu donación me ayuda a mantener y mejorar Jumble! 😊',
@ -435,6 +544,11 @@ export default {
'no more relays': 'no hay más relés', 'no more relays': 'no hay más relés',
'Favorited by': 'Favoritado por', 'Favorited by': 'Favoritado por',
'Post settings': 'Ajustes de publicación', 'Post settings': 'Ajustes de publicación',
'Publishing feedback': 'Publishing feedback',
'Publish success toasts': 'Publish success toasts',
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.':
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.',
'Publish successful': 'Publish successful',
'Media upload service': 'Servicio de carga de medios', 'Media upload service': 'Servicio de carga de medios',
'Choose a relay': 'Selecciona un relé', 'Choose a relay': 'Selecciona un relé',
'no relays found': 'no se encontraron relés', 'no relays found': 'no se encontraron relés',
@ -448,6 +562,15 @@ export default {
Bookmarks: 'Marcadores', Bookmarks: 'Marcadores',
'Follow Packs': 'Follow Packs', 'Follow Packs': 'Follow Packs',
'Follow Pack': 'Follow Pack', 'Follow Pack': 'Follow Pack',
'Follow pack by': 'by',
'In Follow Packs': 'In Follow Packs',
'Badge details': 'Badge details',
'Issued by': 'Issued by',
'Other recipients': 'Other recipients',
'No other recipients found': 'No other recipients found',
'Recipients could not be loaded': 'Recipients could not be loaded',
'View award': 'View award',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Please log in to follow', 'Please log in to follow': 'Please log in to follow',
'Following All': 'Following All', 'Following All': 'Following All',
'Followed {{count}} users': 'Followed {{count}} users', 'Followed {{count}} users': 'Followed {{count}} users',
@ -462,11 +585,26 @@ export default {
Autoplay: 'Reproducción automática', Autoplay: 'Reproducción automática',
'Enable video autoplay on this device': 'Enable video autoplay on this device':
'Habilitar reproducción automática de video en este dispositivo', 'Habilitar reproducción automática de video en este dispositivo',
'liveActivities.heading': 'Live now',
'liveActivities.regionLabel': 'Live spaces and streams',
'liveActivities.fromFollow': 'From someone you follow',
'liveActivities.goToSlide': 'Show live item {{n}}',
'liveActivities.settingsToggle': 'Live activities banner',
'liveActivities.settingsHint':
'Shows NIP-53 live rooms (audio/video spaces) from your relays. Updates on a quarter-hour schedule and when the app finishes its initial session warm-up.',
'Add random relays to every publish': 'Random relays in publish list', 'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description': '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.', '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_local: 'Local',
relayType_relay_list: 'Relay list', relayType_relay_list: 'Relay list',
relayType_http_relay_list: 'HTTP',
'HTTP relays': 'HTTP relays',
httpRelaysDescription:
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -486,9 +624,34 @@ export default {
'Session relays scored random hint': '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.', '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)', 'Session relays all striked': 'All striked relays (any source)',
'Session relays clear strike': 'Allow again',
'Session relays clear strike hint':
'Remove this relay from the session block list; it will be used again until new connection failures.',
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': 'Pegar o soltar archivos multimedia para cargar', 'Paste or drop media files to upload': 'Pegar o soltar archivos multimedia para cargar',
Preview: 'Vista previa', Preview: 'Vista previa',
'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?': 'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?':
@ -528,6 +691,11 @@ export default {
Pay: 'Pagar', Pay: 'Pagar',
interactions: 'interacciones', interactions: 'interacciones',
notifications: 'notificaciones', notifications: 'notificaciones',
notificationsViewAsAccount: 'View as',
notificationsViewAsAccountAria:
'Switch stored account. Notifications, replies, zaps, reactions, and boosts use this account.',
notificationsSwitchAccountFailed:
'Could not switch account. Check your signer, password, or extension and try again.',
'Show untrusted {type}': 'Mostrar {{type}} no confiables', 'Show untrusted {type}': 'Mostrar {{type}} no confiables',
'Hide untrusted {type}': 'Ocultar {{type}} no confiables', 'Hide untrusted {type}': 'Ocultar {{type}} no confiables',
'Currently hiding {type} from untrusted users.': 'Currently hiding {type} from untrusted users.':
@ -580,8 +748,41 @@ export default {
'Relay URLs (optional, comma-separated)': 'URLs de relé (opcional, separadas por comas)', 'Relay URLs (optional, comma-separated)': 'URLs de relé (opcional, separadas por comas)',
'Remove poll': 'Eliminar encuesta', 'Remove poll': 'Eliminar encuesta',
'Refresh results': 'Actualizar resultados', 'Refresh results': 'Actualizar resultados',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: 'Encuesta', Poll: 'Encuesta',
Media: 'medios', Media: 'medios',
'Articles and Publications': 'Articles and Publications',
'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
'No subscribed interests yet.': 'No subscribed interests yet.':
@ -592,6 +793,10 @@ export default {
'Nothing to load for this feed.': 'Nothing to load for this feed.', 'Nothing to load for this feed.': 'Nothing to load for this feed.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'No posts loaded for this feed. Try refreshing.', 'No posts loaded for this feed. Try refreshing.',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.',
'Per-relay timeline results ({{count}} connections)':
'Per-relay timeline results ({{count}} connections)',
'Republish to ...': 'Republicar a ...', 'Republish to ...': 'Republicar a ...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -627,7 +832,6 @@ export default {
'No more boosts': 'No hay más boosts', 'No more boosts': 'No hay más boosts',
'No boosts yet': 'Sin boosts aún', 'No boosts yet': 'Sin boosts aún',
'n more boosts': '{{count}} more boosts', 'n more boosts': '{{count}} more boosts',
Boosts: 'Boosts',
FollowListNotFoundConfirmation: FollowListNotFoundConfirmation:
'Lista de seguidos no encontrada. ¿Quieres crear una nueva? Si has seguido usuarios antes, por favor NO confirmes ya que esta operación te hará perder tu lista de seguidos anterior.', 'Lista de seguidos no encontrada. ¿Quieres crear una nueva? Si has seguido usuarios antes, por favor NO confirmes ya que esta operación te hará perder tu lista de seguidos anterior.',
MuteListNotFoundConfirmation: MuteListNotFoundConfirmation:
@ -657,12 +861,45 @@ export default {
Highlights: 'Destacados', Highlights: 'Destacados',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: 'Encuestas', Polls: 'Encuestas',
'Zap polls': 'Zap polls',
'Voice Posts': 'Publicaciones de voz', 'Voice Posts': 'Publicaciones de voz',
'Photo Posts': 'Publicaciones de fotos', 'Photo Posts': 'Publicaciones de fotos',
'Video Posts': 'Publicaciones de video', 'Video Posts': 'Publicaciones de video',
'Git repositories': 'Git repositories',
'Git issues': 'Git issues',
'Git releases': 'Git releases',
'Git Republic repository': 'Git Republic repository',
'Git Republic issue': 'Git Republic issue',
'Git Republic release': 'Git Republic release',
'Git Republic event': 'Git Republic event',
'Git Republic': 'Git Republic',
'Open in Git Republic': 'Open in Git Republic',
'Pre-release': 'Pre-release',
Draft: 'Draft',
'Repository release': 'Repository release',
'New Repository Release': 'New Repository Release',
'Release notes use the editor below (optional).':
'Release notes use the editor below (optional).',
'Repository owner (npub or hex)': 'Repository owner (npub or hex)',
'Repository id (d-tag)': 'Repository id (d-tag)',
'Git tag name': 'Git tag name',
'Tag target (40-char commit hash)': 'Tag target (40-character commit hash)',
'40-character hex SHA-1': '40-character hex SHA-1',
'Release title': 'Release title',
'Download URL': 'Download URL',
'Draft release': 'Draft release',
'Fill repository release fields': 'Fill in all required repository release fields.',
'Invalid repository owner pubkey': 'Invalid repository owner (use npub or 64-char hex).',
'Citations require private relays (NIP-65).':
'Citations require private outbox relays (NIP-65).',
'Select All': 'Seleccionar todo', 'Select All': 'Seleccionar todo',
'Clear All': 'Limpiar todo', 'Clear All': 'Limpiar todo',
'Set as default filter': 'Establecer como filtro predeterminado', 'Set as default filter': 'Establecer como filtro predeterminado',
'Use filter': 'Use filter',
'See all events': 'See all events',
'See all events hint':
'Feed requests omit kind filters and every kind is shown (still subject to relay limits and other feed rules). For testing new event kinds.',
'Use filter hint': 'Only the kinds you select below are requested and shown.',
Apply: 'Aplicar', Apply: 'Aplicar',
Reset: 'Restablecer', Reset: 'Restablecer',
'Share something on this Relay': 'Comparte algo en este relé', 'Share something on this Relay': 'Comparte algo en este relé',
@ -674,8 +911,56 @@ export default {
'Hide content mentioning muted users': 'Ocultar contenido que mencione usuarios silenciados', 'Hide content mentioning muted users': 'Ocultar contenido que mencione usuarios silenciados',
'This note mentions a user you muted': 'Esta nota menciona a un usuario que silenciaste', 'This note mentions a user you muted': 'Esta nota menciona a un usuario que silenciaste',
Filter: 'Filtro', Filter: 'Filtro',
'Feed filter': 'Feed filter',
'Search loaded posts': 'Search loaded posts',
'Filter loaded posts placeholder': 'Filter by text in content or tags…',
'Feed filter author': 'Author',
'Feed filter author everyone': 'From everyone',
'Feed filter author me': 'Only from me',
'Feed filter author npub': 'From user (npub or hex)',
'Feed filter author npub from prefix': 'from:',
'Feed filter author npub placeholder': 'npub1… or 64-char hex',
'Feed filter author me needs login': 'Log in to filter by your pubkey',
'Within the last': 'Within the last',
'Time unit': 'Time unit',
Minutes: 'Minutes',
Days: 'Days',
Weeks: 'Weeks',
Months: 'Months',
Years: 'Years',
'Feed filter client-side hint':
'Filters only apply to posts already loaded; relays are not queried again.',
'Feed full search': 'Perform full search',
'Feed full search running': 'Searching…',
'Feed full search clear': 'Clear',
'Feed full search active hint':
'Showing relay search results. Clear to return to the live feed.',
'Feed full search need constraint':
'Add search text, an author filter, or a time range before searching relays.',
'Feed full search invalid feed': 'This feed cannot run a relay search.',
'Feed full search failed': 'Relay search failed. Try again.',
'Feed full search empty': 'No matching posts were found on the queried relays.',
'No loaded posts match your filters.': 'No loaded posts match your filters.',
'mentioned you in a note': 'te mencionó en una nota', 'mentioned you in a note': 'te mencionó en una nota',
'quoted your note': 'citó tu nota', 'quoted your note': 'citó tu nota',
'quoted this note': 'Quoted this note',
'highlighted this note': 'Highlighted this note',
'cited in article': 'Cited in article',
'Thread backlinks heading': 'Also quoting this note',
'Thread backlinks primary section': 'Quotes, highlights & citations',
'Thread backlinks bookmarks section': 'Bookmarks',
'Thread backlinks lists section': 'Lists & collections',
'View full note and thread': 'View full note and thread',
'labeled this note': 'Labeled this note',
'reported this note': 'Reported this note',
'bookmarked this note': 'Bookmarked this note',
'pinned this note': 'Pinned this note',
'listed this note': 'Listed this note',
'bookmark set reference': 'Bookmark set includes this note',
'curated this note': 'Curated this note',
'badge award for this note': 'Badge award for this note',
'referenced this note': 'Referenced this note',
'Report events heading': 'Moderation reports',
'voted in your poll': 'votó en tu encuesta', 'voted in your poll': 'votó en tu encuesta',
'reacted to your note': 'reaccionó a tu nota', 'reacted to your note': 'reaccionó a tu nota',
'boosted your note': 'boosteó tu nota', 'boosted your note': 'boosteó tu nota',
@ -733,6 +1018,10 @@ export default {
'Trending on the Default Relays': 'Trending on the Default Relays', 'Trending on the Default Relays': 'Trending on the Default Relays',
'Latest from your follows': 'Latest from your follows', 'Latest from your follows': 'Latest from your follows',
'Latest from our recommended follows': 'Latest from our recommended follows', 'Latest from our recommended follows': 'Latest from our recommended follows',
'Follows latest page title': 'Latest from follows',
'Follows latest page description':
'Recent notes from accounts you follow (or a curated list when not signed in), using their outbox relays merged with your favorites. Expand a row for notes or open the profile from the row.',
'Follows latest nav label': 'Follows latest',
'Loading follow list…': 'Loading follow list…', 'Loading follow list…': 'Loading follow list…',
'Could not load recommended follows': 'Could not load recommended follows', 'Could not load recommended follows': 'Could not load recommended follows',
'Your follow list is empty': 'Your follow list is empty', 'Your follow list is empty': 'Your follow list is empty',
@ -923,6 +1212,8 @@ export default {
'Article exported as AsciiDoc': 'Article exported as AsciiDoc', 'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown', 'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)', 'Article title (optional)': 'Article title (optional)',
articleDTagDefaultHint:
'Optional. If empty, the d-tag defaults to a type-specific prefix plus a Unix timestamp (seconds), e.g. longform-article-…, wiki-article-…, wiki-markdown-…, publication-content-….',
Audio: 'Audio', Audio: 'Audio',
Author: 'Author', Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups', 'Author is required for reading groups': 'Author is required for reading groups',
@ -985,6 +1276,7 @@ export default {
'Create New Thread': 'Create New Thread', 'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll', 'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread', 'Create Thread': 'Create Thread',
composeModeKind1: 'Short note (kind 1) — turn off other compose types',
'Create a Spell': 'Create a Spell', 'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...', 'Creating...': 'Creating...',
'D-Tag': 'D-Tag', 'D-Tag': 'D-Tag',
@ -1095,6 +1387,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1148,6 +1442,7 @@ export default {
'New Internal Citation': 'New Internal Citation', 'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article', 'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll', 'New Poll': 'New Poll',
'New Discussion': 'New Discussion',
'New Prompt Citation': 'New Prompt Citation', 'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message', 'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article', 'New Wiki Article': 'New Wiki Article',
@ -1179,7 +1474,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1188,6 +1484,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1211,6 +1508,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1220,7 +1519,61 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Follow sets',
'Follow sets settings intro':
'NIP-51 follow sets (kind 30000) group people for custom feeds (for example in Spells). Lists are published to your NIP-65 outboxes and profile discovery relays.',
'New follow set': 'New follow set',
'Edit follow set': 'Edit follow set',
'No follow sets yet': 'You have not created any follow sets yet.',
'Follow set saved': 'Follow set saved',
'Follow set deleted': 'Follow set deleted',
'Failed to load follow sets': 'Failed to load follow sets',
members: 'members',
'Optional display title': 'Optional display title',
'List id (d tag)': 'List id (d tag)',
'Follow set d tag hint':
'Stable identifier for this list. It cannot be changed after the first publish.',
'People in this list': 'People in this list',
'Delete follow set?': 'Delete this follow set?',
'Delete follow set confirm':
'This sends a deletion request (kind 5) for the list. Relays that accept it will drop the list; other clients may still show a cached copy until they refresh.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1273,6 +1626,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1283,6 +1637,10 @@ export default {
'Select Media Type': 'Select Media Type', 'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...', 'Select group...': 'Select group...',
'Select relays': 'Select relays', 'Select relays': 'Select relays',
'Publish relay cap hint':
'At most {{max}} relays are contacted per publish. Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted; lower-priority checks are skipped first if you exceed the cap. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Publish relay cap hint with outbox first':
'At most {{max}} relays per publish. Your NIP-65 write relay(s) use {{reservedSlots}} of those slots first (merged ahead of this picker; they may also appear checked below). Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Select the group where you want to create this discussion.': 'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.', 'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...', 'Select topic...': 'Select topic...',
@ -1327,6 +1685,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1436,6 +1802,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

396
src/i18n/locales/fa.ts

@ -7,6 +7,18 @@ export default {
Home: 'خانه', Home: 'خانه',
Feed: 'Feed', Feed: 'Feed',
'Favorite Relays': 'رلههای مورد علاقه', 'Favorite Relays': 'رلههای مورد علاقه',
'Relay pulse': 'Relay pulse',
'Relay pulse empty': 'Quiet on your relays in the last hour.',
'Relay pulse follows': 'Following ({{count}})',
'Relay pulse others': 'Others ({{count}})',
'Relay pulse updated': 'Updated {{relative}}',
'Relay pulse active npubs': 'Active npubs',
'Relay pulse active npubs hint':
'Kind 0 profiles for pubkeys seen on your favorite relays in the last hour (same sample as Relay pulse).',
'Relay pulse drawer following': 'Following',
'Relay pulse drawer others': 'Others',
'Relay pulse drawer no profiles': 'No kind 0 profiles loaded for this sample yet.',
'See the newest notes from your follows': 'See the newest notes from your follows',
'All favorite relays': 'همهٔ رلههای مورد علاقه', 'All favorite relays': 'همهٔ رلههای مورد علاقه',
'Pinned note': 'Pinned note', 'Pinned note': 'Pinned note',
'Relay settings': 'تنظیمات رله', 'Relay settings': 'تنظیمات رله',
@ -14,11 +26,14 @@ export default {
'Account menu': 'Account menu', 'Account menu': 'Account menu',
SidebarRelays: 'رلهها', SidebarRelays: 'رلهها',
Refresh: 'بازخوانی', Refresh: 'بازخوانی',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: 'پروفایل', Profile: 'پروفایل',
Logout: 'خروج', Logout: 'خروج',
Following: 'دنبال میکنم', Following: 'دنبال میکنم',
followings: 'دنبال شوندهها', followings: 'دنبال شوندهها',
boosted: 'بوست شده', boosted: 'بوست شده',
'Boosted by:': 'Boosted by:',
'just now': 'همین الان', 'just now': 'همین الان',
'n minutes ago': '{{n}} دقیقه پیش', 'n minutes ago': '{{n}} دقیقه پیش',
'n m': '{{n}}د', 'n m': '{{n}}د',
@ -85,6 +100,7 @@ export default {
"username's used relays": 'رلههای استفاده شده {{username}}', "username's used relays": 'رلههای استفاده شده {{username}}',
"username's muted": 'بیصدا شدههای {{username}}', "username's muted": 'بیصدا شدههای {{username}}',
Login: 'ورود', Login: 'ورود',
downloadDesktopApp: 'Download app',
'Please log in to view notifications.': 'Please log in to view notifications.', 'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': 'شما را دنبال میکند', 'Follows you': 'شما را دنبال میکند',
'Relay Settings': 'تنظیمات رله', 'Relay Settings': 'تنظیمات رله',
@ -160,10 +176,50 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud',
'Read-aloud idle': 'Idle',
'Preparing read-aloud…': 'Preparing read-aloud…',
'Requesting audio…': 'Requesting audio…',
'Loading audio…': 'Loading audio…',
Playing: 'Playing',
Paused: 'Paused',
'Read-aloud finished': 'Finished',
'Read-aloud error': 'Error',
'TTS endpoint': 'TTS endpoint',
'Using browser speech synthesis': 'Using browser speech synthesis',
'Read-aloud section progress': 'Section {{current}} of {{total}}',
'Request sent': 'Request sent',
'Response received': 'Response received',
'Playback started': 'Playback started',
Characters: 'Characters',
Pause: 'Pause',
Play: 'Play',
Stop: 'Stop',
'Read-aloud sections': 'Read-aloud sections',
'Read-aloud overall progress': 'Overall progress',
'Read-aloud section done': 'Section {{index}}: finished',
'Read-aloud section pending': 'Section {{index}}: not started yet',
'Read-aloud section fetching': 'Section {{index}}: requesting audio',
'Read-aloud section preparing audio': 'Section {{index}}: loading audio',
'Read-aloud section playing': 'Section {{index}}: playing',
'Read-aloud section paused': 'Section {{index}}: paused',
'Read-aloud legend fetching': 'Requesting audio for this section from the server…',
'Read-aloud legend buffering': 'Decoding audio for this section…',
'Read-aloud legend playing': 'Playing this section.',
'Read-aloud legend paused': 'Playback paused.',
'Read-aloud Piper fallback notice':
'Server voice (Piper) could not be used. Playing with your browser voice instead.',
'Read-aloud Piper fallback detail label': 'Piper error',
'Read-aloud Piper status region': 'Piper text-to-speech status',
'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
"You're invited to a scheduled video call.": "You're invited to a scheduled video call.", "You're invited to a scheduled video call.": "You're invited to a scheduled video call.",
@ -276,16 +332,26 @@ export default {
'Upload Image': 'Upload Image', 'Upload Image': 'Upload Image',
'Insert emoji': 'Insert emoji', 'Insert emoji': 'Insert emoji',
'Insert GIF': 'Insert GIF', 'Insert GIF': 'Insert GIF',
'Insert meme': 'Insert meme',
'Search GIFs': 'Search GIFs', 'Search GIFs': 'Search GIFs',
'Search memes': 'Search memes',
'Choose a GIF': 'Choose a GIF', 'Choose a GIF': 'Choose a GIF',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs', 'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs',
'Add your own GIFs': 'Add your own GIFs', 'Add your own GIFs': 'Add your own GIFs',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Description (optional, for search)', 'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up', 'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Uploading...', '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.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} is not a GIF file', '{{name}} is not a GIF file': '{{name}} is not a GIF file',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': 'خواندن و نوشتن', 'R & W': 'خواندن و نوشتن',
Read: 'خواندن', Read: 'خواندن',
Write: 'نوشتن', Write: 'نوشتن',
@ -337,6 +403,9 @@ export default {
'Calculate optimal read relays': 'محاسبه رلههای خواندن بهینه', 'Calculate optimal read relays': 'محاسبه رلههای خواندن بهینه',
'Login to set': 'برای تنظیم وارد شوید', 'Login to set': 'برای تنظیم وارد شوید',
'Please login to view following feed': 'لطفاً برای مشاهده فید دنبال شوندهها وارد شوید', 'Please login to view following feed': 'لطفاً برای مشاهده فید دنبال شوندهها وارد شوید',
'Follow set': 'Follow set',
'Follow set feed empty':
'This NIP-51 list is empty, was not found, or relays could not load it yet.',
'Send only to r': 'فقط به {{r}} ارسال شود', 'Send only to r': 'فقط به {{r}} ارسال شود',
'Send only to these relays': 'فقط به این رلهها ارسال شود', 'Send only to these relays': 'فقط به این رلهها ارسال شود',
Explore: 'کاوش', Explore: 'کاوش',
@ -374,6 +443,43 @@ export default {
Topics: 'Topics', Topics: 'Topics',
'Open in a': 'باز کردن در {{a}}', 'Open in a': 'باز کردن در {{a}}',
'Cannot handle event of kind k': 'نمیتوان رویداد از نوع {{k}} را پردازش کرد', 'Cannot handle event of kind k': 'نمیتوان رویداد از نوع {{k}} را پردازش کرد',
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Reference tags (e, p, q, a)',
'Starred spells': 'Starred spells',
'Spell star add title': 'Star spell (adds to your Nostr bookmarks)',
'Spell star remove title': 'Unstar spell (removes from your Nostr bookmarks)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'reacted to this note.',
'Notification discussion upvote summary': 'upvoted in this discussion.',
'Notification discussion downvote summary': 'downvoted in this discussion.',
'Notification boost summary': 'Boosted this note',
'Notification boost detail': 'The preview above is the original post.',
'Notification poll vote summary': 'Voted on the poll above.',
'Notification poll vote options count': '{{count}} option(s) selected',
'Jumble Imwald synthetic event': 'Jumble Imwald synthetic event',
'+ Add a URL to this list': 'Add a URL to this list',
'Add a web URL': 'Add a web URL',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Open any https page in the side panel to reply, react, and discuss on Nostr.',
'Enter a valid http(s) URL': 'Enter a valid http(s) URL',
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.':
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.',
'Open in browser': 'Open in browser',
'Web page': 'Web page',
Open: 'Open',
'Sorry! The note cannot be found 😔': 'متأسفانه! یادداشت یافت نشد 😔', 'Sorry! The note cannot be found 😔': 'متأسفانه! یادداشت یافت نشد 😔',
'This user has been muted': 'این کاربر بیصدا شده است', 'This user has been muted': 'این کاربر بیصدا شده است',
Wallet: 'کیف پول', Wallet: 'کیف پول',
@ -391,6 +497,9 @@ export default {
All: 'همه', All: 'همه',
Reactions: 'واکنشها', Reactions: 'واکنشها',
Zaps: 'زپها', Zaps: 'زپها',
Boosts: 'بوستها',
Badges: 'Badges',
Reports: 'Reports',
'Enjoying Jumble?': 'از Jumble لذت میبرید؟', 'Enjoying Jumble?': 'از Jumble لذت میبرید؟',
'Your donation helps me maintain Jumble and make it better! 😊': 'Your donation helps me maintain Jumble and make it better! 😊':
'کمک مالی شما به من در نگهداری Jumble و بهتر کردن آن کمک میکند! 😊', 'کمک مالی شما به من در نگهداری Jumble و بهتر کردن آن کمک میکند! 😊',
@ -434,6 +543,11 @@ export default {
'no more relays': 'رله بیشتری وجود ندارد', 'no more relays': 'رله بیشتری وجود ندارد',
'Favorited by': 'مورد علاقه', 'Favorited by': 'مورد علاقه',
'Post settings': 'تنظیمات پست', 'Post settings': 'تنظیمات پست',
'Publishing feedback': 'Publishing feedback',
'Publish success toasts': 'Publish success toasts',
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.':
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.',
'Publish successful': 'Publish successful',
'Media upload service': 'سرویس آپلود رسانه', 'Media upload service': 'سرویس آپلود رسانه',
'Choose a relay': 'یک رله انتخاب کنید', 'Choose a relay': 'یک رله انتخاب کنید',
'no relays found': 'رلهای یافت نشد', 'no relays found': 'رلهای یافت نشد',
@ -447,6 +561,15 @@ export default {
Bookmarks: 'نشانکها', Bookmarks: 'نشانکها',
'Follow Packs': 'Follow Packs', 'Follow Packs': 'Follow Packs',
'Follow Pack': 'Follow Pack', 'Follow Pack': 'Follow Pack',
'Follow pack by': 'by',
'In Follow Packs': 'In Follow Packs',
'Badge details': 'Badge details',
'Issued by': 'Issued by',
'Other recipients': 'Other recipients',
'No other recipients found': 'No other recipients found',
'Recipients could not be loaded': 'Recipients could not be loaded',
'View award': 'View award',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Please log in to follow', 'Please log in to follow': 'Please log in to follow',
'Following All': 'Following All', 'Following All': 'Following All',
'Followed {{count}} users': 'Followed {{count}} users', 'Followed {{count}} users': 'Followed {{count}} users',
@ -460,11 +583,26 @@ export default {
General: 'عمومی', General: 'عمومی',
Autoplay: 'پخش خودکار', Autoplay: 'پخش خودکار',
'Enable video autoplay on this device': 'فعال کردن پخش خودکار ویدیو در این دستگاه', 'Enable video autoplay on this device': 'فعال کردن پخش خودکار ویدیو در این دستگاه',
'liveActivities.heading': 'Live now',
'liveActivities.regionLabel': 'Live spaces and streams',
'liveActivities.fromFollow': 'From someone you follow',
'liveActivities.goToSlide': 'Show live item {{n}}',
'liveActivities.settingsToggle': 'Live activities banner',
'liveActivities.settingsHint':
'Shows NIP-53 live rooms (audio/video spaces) from your relays. Updates on a quarter-hour schedule and when the app finishes its initial session warm-up.',
'Add random relays to every publish': 'Random relays in publish list', 'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description': '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.', '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_local: 'Local',
relayType_relay_list: 'Relay list', relayType_relay_list: 'Relay list',
relayType_http_relay_list: 'HTTP',
'HTTP relays': 'HTTP relays',
httpRelaysDescription:
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -484,9 +622,34 @@ export default {
'Session relays scored random hint': '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.', '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)', 'Session relays all striked': 'All striked relays (any source)',
'Session relays clear strike': 'Allow again',
'Session relays clear strike hint':
'Remove this relay from the session block list; it will be used again until new connection failures.',
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': 'فایلهای رسانه را برای آپلود بچسبانید یا بکشید', 'Paste or drop media files to upload': 'فایلهای رسانه را برای آپلود بچسبانید یا بکشید',
Preview: 'پیشنمایش', Preview: 'پیشنمایش',
'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?': 'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?':
@ -526,6 +689,11 @@ export default {
Pay: 'پرداخت', Pay: 'پرداخت',
interactions: 'تعاملات', interactions: 'تعاملات',
notifications: 'اعلانها', notifications: 'اعلانها',
notificationsViewAsAccount: 'View as',
notificationsViewAsAccountAria:
'Switch stored account. Notifications, replies, zaps, reactions, and boosts use this account.',
notificationsSwitchAccountFailed:
'Could not switch account. Check your signer, password, or extension and try again.',
'Show untrusted {type}': 'نمایش {{type}} غیرقابل اعتماد', 'Show untrusted {type}': 'نمایش {{type}} غیرقابل اعتماد',
'Hide untrusted {type}': 'مخفی کردن {{type}} غیرقابل اعتماد', 'Hide untrusted {type}': 'مخفی کردن {{type}} غیرقابل اعتماد',
'Currently hiding {type} from untrusted users.': 'Currently hiding {type} from untrusted users.':
@ -578,8 +746,41 @@ export default {
'Relay URLs (optional, comma-separated)': 'آدرسهای رله (اختیاری، جدا شده با کاما)', 'Relay URLs (optional, comma-separated)': 'آدرسهای رله (اختیاری، جدا شده با کاما)',
'Remove poll': 'حذف نظرسنجی', 'Remove poll': 'حذف نظرسنجی',
'Refresh results': 'بارگیری مجدد نتایج', 'Refresh results': 'بارگیری مجدد نتایج',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: 'نظرسنجی', Poll: 'نظرسنجی',
Media: 'رسانه', Media: 'رسانه',
'Articles and Publications': 'Articles and Publications',
'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
'No subscribed interests yet.': 'No subscribed interests yet.':
@ -590,6 +791,10 @@ export default {
'Nothing to load for this feed.': 'Nothing to load for this feed.', 'Nothing to load for this feed.': 'Nothing to load for this feed.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'No posts loaded for this feed. Try refreshing.', 'No posts loaded for this feed. Try refreshing.',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.',
'Per-relay timeline results ({{count}} connections)':
'Per-relay timeline results ({{count}} connections)',
'Republish to ...': 'بازنشر به ...', 'Republish to ...': 'بازنشر به ...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -625,7 +830,6 @@ export default {
'No more boosts': 'بوست دیگری نیست', 'No more boosts': 'بوست دیگری نیست',
'No boosts yet': 'هنوز بوستی نیست', 'No boosts yet': 'هنوز بوستی نیست',
'n more boosts': '{{count}} more boosts', 'n more boosts': '{{count}} more boosts',
Boosts: 'بوستها',
FollowListNotFoundConfirmation: FollowListNotFoundConfirmation:
'فهرست دنبالکنندگان پیدا نشد. آیا میخواهید یکی جدید ایجاد کنید؟ اگر قبلاً کاربرانی را دنبال کردهاید، لطفاً تأیید نکنید زیرا این عملیات باعث از دست رفتن فهرست دنبالکنندگان قبلی شما خواهد شد.', 'فهرست دنبالکنندگان پیدا نشد. آیا میخواهید یکی جدید ایجاد کنید؟ اگر قبلاً کاربرانی را دنبال کردهاید، لطفاً تأیید نکنید زیرا این عملیات باعث از دست رفتن فهرست دنبالکنندگان قبلی شما خواهد شد.',
MuteListNotFoundConfirmation: MuteListNotFoundConfirmation:
@ -655,12 +859,45 @@ export default {
Highlights: 'برجستهها', Highlights: 'برجستهها',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: 'نظرسنجیها', Polls: 'نظرسنجیها',
'Zap polls': 'Zap polls',
'Voice Posts': 'پستهای صوتی', 'Voice Posts': 'پستهای صوتی',
'Photo Posts': 'پستهای عکس', 'Photo Posts': 'پستهای عکس',
'Video Posts': 'پستهای ویدیو', 'Video Posts': 'پستهای ویدیو',
'Git repositories': 'Git repositories',
'Git issues': 'Git issues',
'Git releases': 'Git releases',
'Git Republic repository': 'Git Republic repository',
'Git Republic issue': 'Git Republic issue',
'Git Republic release': 'Git Republic release',
'Git Republic event': 'Git Republic event',
'Git Republic': 'Git Republic',
'Open in Git Republic': 'Open in Git Republic',
'Pre-release': 'Pre-release',
Draft: 'Draft',
'Repository release': 'Repository release',
'New Repository Release': 'New Repository Release',
'Release notes use the editor below (optional).':
'Release notes use the editor below (optional).',
'Repository owner (npub or hex)': 'Repository owner (npub or hex)',
'Repository id (d-tag)': 'Repository id (d-tag)',
'Git tag name': 'Git tag name',
'Tag target (40-char commit hash)': 'Tag target (40-character commit hash)',
'40-character hex SHA-1': '40-character hex SHA-1',
'Release title': 'Release title',
'Download URL': 'Download URL',
'Draft release': 'Draft release',
'Fill repository release fields': 'Fill in all required repository release fields.',
'Invalid repository owner pubkey': 'Invalid repository owner (use npub or 64-char hex).',
'Citations require private relays (NIP-65).':
'Citations require private outbox relays (NIP-65).',
'Select All': 'انتخاب همه', 'Select All': 'انتخاب همه',
'Clear All': 'پاک کردن همه', 'Clear All': 'پاک کردن همه',
'Set as default filter': 'تنظیم به عنوان فیلتر پیشفرض', 'Set as default filter': 'تنظیم به عنوان فیلتر پیشفرض',
'Use filter': 'Use filter',
'See all events': 'See all events',
'See all events hint':
'Feed requests omit kind filters and every kind is shown (still subject to relay limits and other feed rules). For testing new event kinds.',
'Use filter hint': 'Only the kinds you select below are requested and shown.',
Apply: 'اعمال', Apply: 'اعمال',
Reset: 'بازنشانی', Reset: 'بازنشانی',
'Share something on this Relay': 'در این رله چیزی به اشتراک بگذارید', 'Share something on this Relay': 'در این رله چیزی به اشتراک بگذارید',
@ -671,8 +908,56 @@ export default {
'Hide content mentioning muted users': 'مخفی کردن محتوای اشاره کننده به کاربران بیصدا شده', 'Hide content mentioning muted users': 'مخفی کردن محتوای اشاره کننده به کاربران بیصدا شده',
'This note mentions a user you muted': 'این یادداشت به کاربری که بیصدا کردهاید اشاره میکند', 'This note mentions a user you muted': 'این یادداشت به کاربری که بیصدا کردهاید اشاره میکند',
Filter: 'فیلتر', Filter: 'فیلتر',
'Feed filter': 'Feed filter',
'Search loaded posts': 'Search loaded posts',
'Filter loaded posts placeholder': 'Filter by text in content or tags…',
'Feed filter author': 'Author',
'Feed filter author everyone': 'From everyone',
'Feed filter author me': 'Only from me',
'Feed filter author npub': 'From user (npub or hex)',
'Feed filter author npub from prefix': 'from:',
'Feed filter author npub placeholder': 'npub1… or 64-char hex',
'Feed filter author me needs login': 'Log in to filter by your pubkey',
'Within the last': 'Within the last',
'Time unit': 'Time unit',
Minutes: 'Minutes',
Days: 'Days',
Weeks: 'Weeks',
Months: 'Months',
Years: 'Years',
'Feed filter client-side hint':
'Filters only apply to posts already loaded; relays are not queried again.',
'Feed full search': 'Perform full search',
'Feed full search running': 'Searching…',
'Feed full search clear': 'Clear',
'Feed full search active hint':
'Showing relay search results. Clear to return to the live feed.',
'Feed full search need constraint':
'Add search text, an author filter, or a time range before searching relays.',
'Feed full search invalid feed': 'This feed cannot run a relay search.',
'Feed full search failed': 'Relay search failed. Try again.',
'Feed full search empty': 'No matching posts were found on the queried relays.',
'No loaded posts match your filters.': 'No loaded posts match your filters.',
'mentioned you in a note': 'در یادداشتی از شما نام برد', 'mentioned you in a note': 'در یادداشتی از شما نام برد',
'quoted your note': 'یادداشت شما را نقل قول کرد', 'quoted your note': 'یادداشت شما را نقل قول کرد',
'quoted this note': 'Quoted this note',
'highlighted this note': 'Highlighted this note',
'cited in article': 'Cited in article',
'Thread backlinks heading': 'Also quoting this note',
'Thread backlinks primary section': 'Quotes, highlights & citations',
'Thread backlinks bookmarks section': 'Bookmarks',
'Thread backlinks lists section': 'Lists & collections',
'View full note and thread': 'View full note and thread',
'labeled this note': 'Labeled this note',
'reported this note': 'Reported this note',
'bookmarked this note': 'Bookmarked this note',
'pinned this note': 'Pinned this note',
'listed this note': 'Listed this note',
'bookmark set reference': 'Bookmark set includes this note',
'curated this note': 'Curated this note',
'badge award for this note': 'Badge award for this note',
'referenced this note': 'Referenced this note',
'Report events heading': 'Moderation reports',
'voted in your poll': 'در نظرسنجی شما رأی داد', 'voted in your poll': 'در نظرسنجی شما رأی داد',
'reacted to your note': 'به یادداشت شما واکنش نشان داد', 'reacted to your note': 'به یادداشت شما واکنش نشان داد',
'boosted your note': 'یادداشت شما را بوست کرد', 'boosted your note': 'یادداشت شما را بوست کرد',
@ -729,6 +1014,10 @@ export default {
'Trending on the Default Relays': 'Trending on the Default Relays', 'Trending on the Default Relays': 'Trending on the Default Relays',
'Latest from your follows': 'Latest from your follows', 'Latest from your follows': 'Latest from your follows',
'Latest from our recommended follows': 'Latest from our recommended follows', 'Latest from our recommended follows': 'Latest from our recommended follows',
'Follows latest page title': 'Latest from follows',
'Follows latest page description':
'Recent notes from accounts you follow (or a curated list when not signed in), using their outbox relays merged with your favorites. Expand a row for notes or open the profile from the row.',
'Follows latest nav label': 'Follows latest',
'Loading follow list…': 'Loading follow list…', 'Loading follow list…': 'Loading follow list…',
'Could not load recommended follows': 'Could not load recommended follows', 'Could not load recommended follows': 'Could not load recommended follows',
'Your follow list is empty': 'Your follow list is empty', 'Your follow list is empty': 'Your follow list is empty',
@ -919,6 +1208,8 @@ export default {
'Article exported as AsciiDoc': 'Article exported as AsciiDoc', 'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown', 'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)', 'Article title (optional)': 'Article title (optional)',
articleDTagDefaultHint:
'Optional. If empty, the d-tag defaults to a type-specific prefix plus a Unix timestamp (seconds), e.g. longform-article-…, wiki-article-…, wiki-markdown-…, publication-content-….',
Audio: 'Audio', Audio: 'Audio',
Author: 'Author', Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups', 'Author is required for reading groups': 'Author is required for reading groups',
@ -981,6 +1272,7 @@ export default {
'Create New Thread': 'Create New Thread', 'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll', 'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread', 'Create Thread': 'Create Thread',
composeModeKind1: 'Short note (kind 1) — turn off other compose types',
'Create a Spell': 'Create a Spell', 'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...', 'Creating...': 'Creating...',
'D-Tag': 'D-Tag', 'D-Tag': 'D-Tag',
@ -1091,6 +1383,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1144,6 +1438,7 @@ export default {
'New Internal Citation': 'New Internal Citation', 'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article', 'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll', 'New Poll': 'New Poll',
'New Discussion': 'New Discussion',
'New Prompt Citation': 'New Prompt Citation', 'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message', 'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article', 'New Wiki Article': 'New Wiki Article',
@ -1175,7 +1470,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1184,6 +1480,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1207,6 +1504,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1216,7 +1515,61 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Follow sets',
'Follow sets settings intro':
'NIP-51 follow sets (kind 30000) group people for custom feeds (for example in Spells). Lists are published to your NIP-65 outboxes and profile discovery relays.',
'New follow set': 'New follow set',
'Edit follow set': 'Edit follow set',
'No follow sets yet': 'You have not created any follow sets yet.',
'Follow set saved': 'Follow set saved',
'Follow set deleted': 'Follow set deleted',
'Failed to load follow sets': 'Failed to load follow sets',
members: 'members',
'Optional display title': 'Optional display title',
'List id (d tag)': 'List id (d tag)',
'Follow set d tag hint':
'Stable identifier for this list. It cannot be changed after the first publish.',
'People in this list': 'People in this list',
'Delete follow set?': 'Delete this follow set?',
'Delete follow set confirm':
'This sends a deletion request (kind 5) for the list. Relays that accept it will drop the list; other clients may still show a cached copy until they refresh.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1269,6 +1622,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1279,6 +1633,10 @@ export default {
'Select Media Type': 'Select Media Type', 'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...', 'Select group...': 'Select group...',
'Select relays': 'Select relays', 'Select relays': 'Select relays',
'Publish relay cap hint':
'At most {{max}} relays are contacted per publish. Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted; lower-priority checks are skipped first if you exceed the cap. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Publish relay cap hint with outbox first':
'At most {{max}} relays per publish. Your NIP-65 write relay(s) use {{reservedSlots}} of those slots first (merged ahead of this picker; they may also appear checked below). Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Select the group where you want to create this discussion.': 'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.', 'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...', 'Select topic...': 'Select topic...',
@ -1323,6 +1681,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1432,6 +1798,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

395
src/i18n/locales/fr.ts

@ -7,6 +7,18 @@ export default {
Home: 'Accueil', Home: 'Accueil',
Feed: 'Feed', Feed: 'Feed',
'Favorite Relays': 'Relais favoris', 'Favorite Relays': 'Relais favoris',
'Relay pulse': 'Relay pulse',
'Relay pulse empty': 'Quiet on your relays in the last hour.',
'Relay pulse follows': 'Following ({{count}})',
'Relay pulse others': 'Others ({{count}})',
'Relay pulse updated': 'Updated {{relative}}',
'Relay pulse active npubs': 'Active npubs',
'Relay pulse active npubs hint':
'Kind 0 profiles for pubkeys seen on your favorite relays in the last hour (same sample as Relay pulse).',
'Relay pulse drawer following': 'Following',
'Relay pulse drawer others': 'Others',
'Relay pulse drawer no profiles': 'No kind 0 profiles loaded for this sample yet.',
'See the newest notes from your follows': 'See the newest notes from your follows',
'All favorite relays': 'Tous les relais favoris', 'All favorite relays': 'Tous les relais favoris',
'Pinned note': 'Pinned note', 'Pinned note': 'Pinned note',
'Relay settings': 'Paramètres du relais', 'Relay settings': 'Paramètres du relais',
@ -14,11 +26,14 @@ export default {
'Account menu': 'Account menu', 'Account menu': 'Account menu',
SidebarRelays: 'Relais', SidebarRelays: 'Relais',
Refresh: 'Rafraîchir', Refresh: 'Rafraîchir',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: 'Profil', Profile: 'Profil',
Logout: 'Déconnexion', Logout: 'Déconnexion',
Following: 'Abonnements', Following: 'Abonnements',
followings: 'abonnements', followings: 'abonnements',
boosted: 'a boosté', boosted: 'a boosté',
'Boosted by:': 'Boosted by:',
'just now': "à l'instant", 'just now': "à l'instant",
'n minutes ago': 'il y a {{n}} minutes', 'n minutes ago': 'il y a {{n}} minutes',
'n m': '{{n}}m', 'n m': '{{n}}m',
@ -85,6 +100,7 @@ export default {
"username's used relays": 'les relais utilisés par {{username}}', "username's used relays": 'les relais utilisés par {{username}}',
"username's muted": '{{username}} en sourdine', "username's muted": '{{username}} en sourdine',
Login: 'Connexion', Login: 'Connexion',
downloadDesktopApp: 'Download app',
'Please log in to view notifications.': 'Please log in to view notifications.', 'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': 'Vous suit', 'Follows you': 'Vous suit',
'Relay Settings': 'Paramètres des relais', 'Relay Settings': 'Paramètres des relais',
@ -160,10 +176,50 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud',
'Read-aloud idle': 'Idle',
'Preparing read-aloud…': 'Preparing read-aloud…',
'Requesting audio…': 'Requesting audio…',
'Loading audio…': 'Loading audio…',
Playing: 'Playing',
Paused: 'Paused',
'Read-aloud finished': 'Finished',
'Read-aloud error': 'Error',
'TTS endpoint': 'TTS endpoint',
'Using browser speech synthesis': 'Using browser speech synthesis',
'Read-aloud section progress': 'Section {{current}} of {{total}}',
'Request sent': 'Request sent',
'Response received': 'Response received',
'Playback started': 'Playback started',
Characters: 'Characters',
Pause: 'Pause',
Play: 'Play',
Stop: 'Stop',
'Read-aloud sections': 'Read-aloud sections',
'Read-aloud overall progress': 'Overall progress',
'Read-aloud section done': 'Section {{index}}: finished',
'Read-aloud section pending': 'Section {{index}}: not started yet',
'Read-aloud section fetching': 'Section {{index}}: requesting audio',
'Read-aloud section preparing audio': 'Section {{index}}: loading audio',
'Read-aloud section playing': 'Section {{index}}: playing',
'Read-aloud section paused': 'Section {{index}}: paused',
'Read-aloud legend fetching': 'Requesting audio for this section from the server…',
'Read-aloud legend buffering': 'Decoding audio for this section…',
'Read-aloud legend playing': 'Playing this section.',
'Read-aloud legend paused': 'Playback paused.',
'Read-aloud Piper fallback notice':
'Server voice (Piper) could not be used. Playing with your browser voice instead.',
'Read-aloud Piper fallback detail label': 'Piper error',
'Read-aloud Piper status region': 'Piper text-to-speech status',
'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
"You're invited to a scheduled video call.": "You're invited to a scheduled video call.", "You're invited to a scheduled video call.": "You're invited to a scheduled video call.",
@ -276,16 +332,26 @@ export default {
'Upload Image': 'Upload Image', 'Upload Image': 'Upload Image',
'Insert emoji': 'Insert emoji', 'Insert emoji': 'Insert emoji',
'Insert GIF': 'Insert GIF', 'Insert GIF': 'Insert GIF',
'Insert meme': 'Insert meme',
'Search GIFs': 'Search GIFs', 'Search GIFs': 'Search GIFs',
'Search memes': 'Search memes',
'Choose a GIF': 'Choose a GIF', 'Choose a GIF': 'Choose a GIF',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs', 'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs',
'Add your own GIFs': 'Add your own GIFs', 'Add your own GIFs': 'Add your own GIFs',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Description (optional, for search)', 'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up', 'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Uploading...', '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.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} is not a GIF file', '{{name}} is not a GIF file': '{{name}} is not a GIF file',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': 'R & W', 'R & W': 'R & W',
Read: 'Lire', Read: 'Lire',
Write: 'Écrire', Write: 'Écrire',
@ -337,6 +403,9 @@ export default {
'Calculate optimal read relays': 'Calculer les relais de lecture optimaux', 'Calculate optimal read relays': 'Calculer les relais de lecture optimaux',
'Login to set': 'Connectez-vous pour définir', 'Login to set': 'Connectez-vous pour définir',
'Please login to view following feed': 'Veuillez vous connecter pour voir le fil d’abonnements', 'Please login to view following feed': 'Veuillez vous connecter pour voir le fil d’abonnements',
'Follow set': 'Follow set',
'Follow set feed empty':
'This NIP-51 list is empty, was not found, or relays could not load it yet.',
'Send only to r': 'Envoyer uniquement à {{r}}', 'Send only to r': 'Envoyer uniquement à {{r}}',
'Send only to these relays': 'Envoyer uniquement à ces relais', 'Send only to these relays': 'Envoyer uniquement à ces relais',
Explore: 'Explorer', Explore: 'Explorer',
@ -374,6 +443,43 @@ export default {
Topics: 'Topics', Topics: 'Topics',
'Open in a': 'Ouvrir dans {{a}}', 'Open in a': 'Ouvrir dans {{a}}',
'Cannot handle event of kind k': "Impossible de traiter l'événement de type {{k}}", 'Cannot handle event of kind k': "Impossible de traiter l'événement de type {{k}}",
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Reference tags (e, p, q, a)',
'Starred spells': 'Starred spells',
'Spell star add title': 'Star spell (adds to your Nostr bookmarks)',
'Spell star remove title': 'Unstar spell (removes from your Nostr bookmarks)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'reacted to this note.',
'Notification discussion upvote summary': 'upvoted in this discussion.',
'Notification discussion downvote summary': 'downvoted in this discussion.',
'Notification boost summary': 'Boosted this note',
'Notification boost detail': 'The preview above is the original post.',
'Notification poll vote summary': 'Voted on the poll above.',
'Notification poll vote options count': '{{count}} option(s) selected',
'Jumble Imwald synthetic event': 'Jumble Imwald synthetic event',
'+ Add a URL to this list': 'Add a URL to this list',
'Add a web URL': 'Add a web URL',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Open any https page in the side panel to reply, react, and discuss on Nostr.',
'Enter a valid http(s) URL': 'Enter a valid http(s) URL',
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.':
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.',
'Open in browser': 'Open in browser',
'Web page': 'Web page',
Open: 'Open',
'Sorry! The note cannot be found 😔': 'Désolé ! La note est introuvable 😔', 'Sorry! The note cannot be found 😔': 'Désolé ! La note est introuvable 😔',
'This user has been muted': 'Cet utilisateur a été mis en sourdine', 'This user has been muted': 'Cet utilisateur a été mis en sourdine',
Wallet: 'Portefeuille', Wallet: 'Portefeuille',
@ -391,6 +497,9 @@ export default {
All: 'Tous', All: 'Tous',
Reactions: 'Réactions', Reactions: 'Réactions',
Zaps: 'Zaps', Zaps: 'Zaps',
Boosts: 'Boosts',
Badges: 'Badges',
Reports: 'Reports',
'Enjoying Jumble?': 'Vous appréciez Jumble ?', 'Enjoying Jumble?': 'Vous appréciez Jumble ?',
'Your donation helps me maintain Jumble and make it better! 😊': 'Your donation helps me maintain Jumble and make it better! 😊':
"Votre don m'aide à maintenir Jumble et à l'améliorer ! 😊", "Votre don m'aide à maintenir Jumble et à l'améliorer ! 😊",
@ -434,6 +543,11 @@ export default {
'no more relays': 'aucun autre relais', 'no more relays': 'aucun autre relais',
'Favorited by': 'Favorisé par', 'Favorited by': 'Favorisé par',
'Post settings': 'Paramètres de publication', 'Post settings': 'Paramètres de publication',
'Publishing feedback': 'Publishing feedback',
'Publish success toasts': 'Publish success toasts',
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.':
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.',
'Publish successful': 'Publish successful',
'Media upload service': 'Service de téléchargement de médias', 'Media upload service': 'Service de téléchargement de médias',
'Choose a relay': 'Choisir un relais', 'Choose a relay': 'Choisir un relais',
'no relays found': 'aucun relais trouvé', 'no relays found': 'aucun relais trouvé',
@ -447,7 +561,15 @@ export default {
Bookmarks: 'Favoris', Bookmarks: 'Favoris',
'Follow Packs': 'Follow Packs', 'Follow Packs': 'Follow Packs',
'Follow Pack': 'Follow Pack', 'Follow Pack': 'Follow Pack',
'Follow pack by': 'by',
'In Follow Packs': 'Dans les Follow Packs', 'In Follow Packs': 'Dans les Follow Packs',
'Badge details': 'Badge details',
'Issued by': 'Issued by',
'Other recipients': 'Other recipients',
'No other recipients found': 'No other recipients found',
'Recipients could not be loaded': 'Recipients could not be loaded',
'View award': 'View award',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Please log in to follow', 'Please log in to follow': 'Please log in to follow',
'Following All': 'Following All', 'Following All': 'Following All',
'Followed {{count}} users': 'Followed {{count}} users', 'Followed {{count}} users': 'Followed {{count}} users',
@ -462,11 +584,26 @@ export default {
Autoplay: 'Lecture automatique', Autoplay: 'Lecture automatique',
'Enable video autoplay on this device': 'Enable video autoplay on this device':
'Activer la lecture automatique des vidéos sur cet appareil', 'Activer la lecture automatique des vidéos sur cet appareil',
'liveActivities.heading': 'Live now',
'liveActivities.regionLabel': 'Live spaces and streams',
'liveActivities.fromFollow': 'From someone you follow',
'liveActivities.goToSlide': 'Show live item {{n}}',
'liveActivities.settingsToggle': 'Live activities banner',
'liveActivities.settingsHint':
'Shows NIP-53 live rooms (audio/video spaces) from your relays. Updates on a quarter-hour schedule and when the app finishes its initial session warm-up.',
'Add random relays to every publish': 'Random relays in publish list', 'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description': '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.', '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_local: 'Local',
relayType_relay_list: 'Relay list', relayType_relay_list: 'Relay list',
relayType_http_relay_list: 'HTTP',
'HTTP relays': 'HTTP relays',
httpRelaysDescription:
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -486,9 +623,34 @@ export default {
'Session relays scored random hint': '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.', '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)', 'Session relays all striked': 'All striked relays (any source)',
'Session relays clear strike': 'Allow again',
'Session relays clear strike hint':
'Remove this relay from the session block list; it will be used again until new connection failures.',
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': 'Paste or drop media files to upload':
'Coller ou déposer des fichiers multimédias à télécharger', 'Coller ou déposer des fichiers multimédias à télécharger',
Preview: 'Aperçu', Preview: 'Aperçu',
@ -529,6 +691,11 @@ export default {
Pay: 'Payer', Pay: 'Payer',
interactions: 'interactions', interactions: 'interactions',
notifications: 'notifications', notifications: 'notifications',
notificationsViewAsAccount: 'View as',
notificationsViewAsAccountAria:
'Switch stored account. Notifications, replies, zaps, reactions, and boosts use this account.',
notificationsSwitchAccountFailed:
'Could not switch account. Check your signer, password, or extension and try again.',
'Show untrusted {type}': 'Afficher les {{type}} non fiables', 'Show untrusted {type}': 'Afficher les {{type}} non fiables',
'Hide untrusted {type}': 'Cacher les {{type}} non fiables', 'Hide untrusted {type}': 'Cacher les {{type}} non fiables',
'Currently hiding {type} from untrusted users.': 'Currently hiding {type} from untrusted users.':
@ -582,8 +749,41 @@ export default {
'URLs de relais (optionnel, séparées par des virgules)', 'URLs de relais (optionnel, séparées par des virgules)',
'Remove poll': 'Supprimer le sondage', 'Remove poll': 'Supprimer le sondage',
'Refresh results': 'Rafraîchir les résultats', 'Refresh results': 'Rafraîchir les résultats',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: 'Sondage', Poll: 'Sondage',
Media: 'média', Media: 'média',
'Articles and Publications': 'Articles and Publications',
'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
'No subscribed interests yet.': 'No subscribed interests yet.':
@ -594,6 +794,10 @@ export default {
'Nothing to load for this feed.': 'Nothing to load for this feed.', 'Nothing to load for this feed.': 'Nothing to load for this feed.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'No posts loaded for this feed. Try refreshing.', 'No posts loaded for this feed. Try refreshing.',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.',
'Per-relay timeline results ({{count}} connections)':
'Per-relay timeline results ({{count}} connections)',
'Republish to ...': 'Reposter vers ...', 'Republish to ...': 'Reposter vers ...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -630,7 +834,6 @@ export default {
'No more boosts': 'Plus de boosts', 'No more boosts': 'Plus de boosts',
'No boosts yet': 'Pas encore de boosts', 'No boosts yet': 'Pas encore de boosts',
'n more boosts': '{{count}} more boosts', 'n more boosts': '{{count}} more boosts',
Boosts: 'Boosts',
FollowListNotFoundConfirmation: FollowListNotFoundConfirmation:
'Liste de suivi non trouvée. Voulez-vous en créer une nouvelle ? Si vous avez suivi des utilisateurs auparavant, veuillez NE PAS confirmer car cette opération vous fera perdre votre liste de suivi précédente.', 'Liste de suivi non trouvée. Voulez-vous en créer une nouvelle ? Si vous avez suivi des utilisateurs auparavant, veuillez NE PAS confirmer car cette opération vous fera perdre votre liste de suivi précédente.',
MuteListNotFoundConfirmation: MuteListNotFoundConfirmation:
@ -660,12 +863,45 @@ export default {
Highlights: 'Surlignages', Highlights: 'Surlignages',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: 'Sondages', Polls: 'Sondages',
'Zap polls': 'Zap polls',
'Voice Posts': 'Publications vocales', 'Voice Posts': 'Publications vocales',
'Photo Posts': 'Publications photo', 'Photo Posts': 'Publications photo',
'Video Posts': 'Publications vidéo', 'Video Posts': 'Publications vidéo',
'Git repositories': 'Git repositories',
'Git issues': 'Git issues',
'Git releases': 'Git releases',
'Git Republic repository': 'Git Republic repository',
'Git Republic issue': 'Git Republic issue',
'Git Republic release': 'Git Republic release',
'Git Republic event': 'Git Republic event',
'Git Republic': 'Git Republic',
'Open in Git Republic': 'Open in Git Republic',
'Pre-release': 'Pre-release',
Draft: 'Draft',
'Repository release': 'Repository release',
'New Repository Release': 'New Repository Release',
'Release notes use the editor below (optional).':
'Release notes use the editor below (optional).',
'Repository owner (npub or hex)': 'Repository owner (npub or hex)',
'Repository id (d-tag)': 'Repository id (d-tag)',
'Git tag name': 'Git tag name',
'Tag target (40-char commit hash)': 'Tag target (40-character commit hash)',
'40-character hex SHA-1': '40-character hex SHA-1',
'Release title': 'Release title',
'Download URL': 'Download URL',
'Draft release': 'Draft release',
'Fill repository release fields': 'Fill in all required repository release fields.',
'Invalid repository owner pubkey': 'Invalid repository owner (use npub or 64-char hex).',
'Citations require private relays (NIP-65).':
'Citations require private outbox relays (NIP-65).',
'Select All': 'Tout sélectionner', 'Select All': 'Tout sélectionner',
'Clear All': 'Tout effacer', 'Clear All': 'Tout effacer',
'Set as default filter': 'Définir comme filtre par défaut', 'Set as default filter': 'Définir comme filtre par défaut',
'Use filter': 'Use filter',
'See all events': 'See all events',
'See all events hint':
'Feed requests omit kind filters and every kind is shown (still subject to relay limits and other feed rules). For testing new event kinds.',
'Use filter hint': 'Only the kinds you select below are requested and shown.',
Apply: 'Appliquer', Apply: 'Appliquer',
Reset: 'Réinitialiser', Reset: 'Réinitialiser',
'Share something on this Relay': 'Partager quelque chose sur ce relais', 'Share something on this Relay': 'Partager quelque chose sur ce relais',
@ -679,8 +915,56 @@ export default {
'This note mentions a user you muted': 'This note mentions a user you muted':
'Cette note mentionne un utilisateur que vous avez masqué', 'Cette note mentionne un utilisateur que vous avez masqué',
Filter: 'Filtre', Filter: 'Filtre',
'Feed filter': 'Feed filter',
'Search loaded posts': 'Search loaded posts',
'Filter loaded posts placeholder': 'Filter by text in content or tags…',
'Feed filter author': 'Author',
'Feed filter author everyone': 'From everyone',
'Feed filter author me': 'Only from me',
'Feed filter author npub': 'From user (npub or hex)',
'Feed filter author npub from prefix': 'from:',
'Feed filter author npub placeholder': 'npub1… or 64-char hex',
'Feed filter author me needs login': 'Log in to filter by your pubkey',
'Within the last': 'Within the last',
'Time unit': 'Time unit',
Minutes: 'Minutes',
Days: 'Days',
Weeks: 'Weeks',
Months: 'Months',
Years: 'Years',
'Feed filter client-side hint':
'Filters only apply to posts already loaded; relays are not queried again.',
'Feed full search': 'Perform full search',
'Feed full search running': 'Searching…',
'Feed full search clear': 'Clear',
'Feed full search active hint':
'Showing relay search results. Clear to return to the live feed.',
'Feed full search need constraint':
'Add search text, an author filter, or a time range before searching relays.',
'Feed full search invalid feed': 'This feed cannot run a relay search.',
'Feed full search failed': 'Relay search failed. Try again.',
'Feed full search empty': 'No matching posts were found on the queried relays.',
'No loaded posts match your filters.': 'No loaded posts match your filters.',
'mentioned you in a note': 'vous a mentionné dans une note', 'mentioned you in a note': 'vous a mentionné dans une note',
'quoted your note': 'a cité votre note', 'quoted your note': 'a cité votre note',
'quoted this note': 'Quoted this note',
'highlighted this note': 'Highlighted this note',
'cited in article': 'Cited in article',
'Thread backlinks heading': 'Also quoting this note',
'Thread backlinks primary section': 'Quotes, highlights & citations',
'Thread backlinks bookmarks section': 'Bookmarks',
'Thread backlinks lists section': 'Lists & collections',
'View full note and thread': 'View full note and thread',
'labeled this note': 'Labeled this note',
'reported this note': 'Reported this note',
'bookmarked this note': 'Bookmarked this note',
'pinned this note': 'Pinned this note',
'listed this note': 'Listed this note',
'bookmark set reference': 'Bookmark set includes this note',
'curated this note': 'Curated this note',
'badge award for this note': 'Badge award for this note',
'referenced this note': 'Referenced this note',
'Report events heading': 'Moderation reports',
'voted in your poll': 'a voté dans votre sondage', 'voted in your poll': 'a voté dans votre sondage',
'reacted to your note': 'a réagi à votre note', 'reacted to your note': 'a réagi à votre note',
'boosted your note': 'a boosté votre note', 'boosted your note': 'a boosté votre note',
@ -738,6 +1022,10 @@ export default {
'Trending on the Default Relays': 'Trending on the Default Relays', 'Trending on the Default Relays': 'Trending on the Default Relays',
'Latest from your follows': 'Latest from your follows', 'Latest from your follows': 'Latest from your follows',
'Latest from our recommended follows': 'Latest from our recommended follows', 'Latest from our recommended follows': 'Latest from our recommended follows',
'Follows latest page title': 'Latest from follows',
'Follows latest page description':
'Recent notes from accounts you follow (or a curated list when not signed in), using their outbox relays merged with your favorites. Expand a row for notes or open the profile from the row.',
'Follows latest nav label': 'Follows latest',
'Loading follow list…': 'Loading follow list…', 'Loading follow list…': 'Loading follow list…',
'Could not load recommended follows': 'Could not load recommended follows', 'Could not load recommended follows': 'Could not load recommended follows',
'Your follow list is empty': 'Your follow list is empty', 'Your follow list is empty': 'Your follow list is empty',
@ -929,6 +1217,8 @@ export default {
'Article exported as AsciiDoc': 'Article exported as AsciiDoc', 'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown', 'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)', 'Article title (optional)': 'Article title (optional)',
articleDTagDefaultHint:
'Optional. If empty, the d-tag defaults to a type-specific prefix plus a Unix timestamp (seconds), e.g. longform-article-…, wiki-article-…, wiki-markdown-…, publication-content-….',
Audio: 'Audio', Audio: 'Audio',
Author: 'Author', Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups', 'Author is required for reading groups': 'Author is required for reading groups',
@ -991,6 +1281,7 @@ export default {
'Create New Thread': 'Create New Thread', 'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll', 'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread', 'Create Thread': 'Create Thread',
composeModeKind1: 'Short note (kind 1) — turn off other compose types',
'Create a Spell': 'Create a Spell', 'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...', 'Creating...': 'Creating...',
'D-Tag': 'D-Tag', 'D-Tag': 'D-Tag',
@ -1101,6 +1392,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1154,6 +1447,7 @@ export default {
'New Internal Citation': 'New Internal Citation', 'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article', 'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll', 'New Poll': 'New Poll',
'New Discussion': 'New Discussion',
'New Prompt Citation': 'New Prompt Citation', 'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message', 'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article', 'New Wiki Article': 'New Wiki Article',
@ -1185,7 +1479,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1194,6 +1489,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1217,6 +1513,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1226,7 +1524,61 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Follow sets',
'Follow sets settings intro':
'NIP-51 follow sets (kind 30000) group people for custom feeds (for example in Spells). Lists are published to your NIP-65 outboxes and profile discovery relays.',
'New follow set': 'New follow set',
'Edit follow set': 'Edit follow set',
'No follow sets yet': 'You have not created any follow sets yet.',
'Follow set saved': 'Follow set saved',
'Follow set deleted': 'Follow set deleted',
'Failed to load follow sets': 'Failed to load follow sets',
members: 'members',
'Optional display title': 'Optional display title',
'List id (d tag)': 'List id (d tag)',
'Follow set d tag hint':
'Stable identifier for this list. It cannot be changed after the first publish.',
'People in this list': 'People in this list',
'Delete follow set?': 'Delete this follow set?',
'Delete follow set confirm':
'This sends a deletion request (kind 5) for the list. Relays that accept it will drop the list; other clients may still show a cached copy until they refresh.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1279,6 +1631,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1289,6 +1642,10 @@ export default {
'Select Media Type': 'Select Media Type', 'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...', 'Select group...': 'Select group...',
'Select relays': 'Select relays', 'Select relays': 'Select relays',
'Publish relay cap hint':
'At most {{max}} relays are contacted per publish. Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted; lower-priority checks are skipped first if you exceed the cap. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Publish relay cap hint with outbox first':
'At most {{max}} relays per publish. Your NIP-65 write relay(s) use {{reservedSlots}} of those slots first (merged ahead of this picker; they may also appear checked below). Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Select the group where you want to create this discussion.': 'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.', 'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...', 'Select topic...': 'Select topic...',
@ -1333,6 +1690,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1442,6 +1807,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

396
src/i18n/locales/hi.ts

@ -7,6 +7,18 @@ export default {
Home: 'हम', Home: 'हम',
Feed: 'Feed', Feed: 'Feed',
'Favorite Relays': 'पसि', 'Favorite Relays': 'पसि',
'Relay pulse': 'Relay pulse',
'Relay pulse empty': 'Quiet on your relays in the last hour.',
'Relay pulse follows': 'Following ({{count}})',
'Relay pulse others': 'Others ({{count}})',
'Relay pulse updated': 'Updated {{relative}}',
'Relay pulse active npubs': 'Active npubs',
'Relay pulse active npubs hint':
'Kind 0 profiles for pubkeys seen on your favorite relays in the last hour (same sample as Relay pulse).',
'Relay pulse drawer following': 'Following',
'Relay pulse drawer others': 'Others',
'Relay pulse drawer no profiles': 'No kind 0 profiles loaded for this sample yet.',
'See the newest notes from your follows': 'See the newest notes from your follows',
'All favorite relays': 'सभ पसि', 'All favorite relays': 'सभ पसि',
'Pinned note': 'Pinned note', 'Pinned note': 'Pinned note',
'Relay settings': 'रििस', 'Relay settings': 'रििस',
@ -14,11 +26,14 @@ export default {
'Account menu': 'Account menu', 'Account menu': 'Account menu',
SidebarRelays: 'रि', SidebarRelays: 'रि',
Refresh: 'रश', Refresh: 'रश',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: 'पइल', Profile: 'पइल',
Logout: 'लगआउट', Logout: 'लगआउट',
Following: 'फ कर रह', Following: 'फ कर रह',
followings: 'फग', followings: 'फग',
boosted: 'बट कि', boosted: 'बट कि',
'Boosted by:': 'Boosted by:',
'just now': 'अभ', 'just now': 'अभ',
'n minutes ago': '{{n}} मिनट पहल', 'n minutes ago': '{{n}} मिनट पहल',
'n m': '{{n}}मि', 'n m': '{{n}}मि',
@ -85,6 +100,7 @@ export default {
"username's used relays": '{{username}} क उपयग किए गए रि', "username's used relays": '{{username}} क उपयग किए गए रि',
"username's muted": '{{username}} कट किए गए', "username's muted": '{{username}} कट किए गए',
Login: 'लिन', Login: 'लिन',
downloadDesktopApp: 'Download app',
'Please log in to view notifications.': 'Please log in to view notifications.', 'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': 'आपक करत', 'Follows you': 'आपक करत',
'Relay Settings': 'रििस', 'Relay Settings': 'रििस',
@ -160,10 +176,50 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud',
'Read-aloud idle': 'Idle',
'Preparing read-aloud…': 'Preparing read-aloud…',
'Requesting audio…': 'Requesting audio…',
'Loading audio…': 'Loading audio…',
Playing: 'Playing',
Paused: 'Paused',
'Read-aloud finished': 'Finished',
'Read-aloud error': 'Error',
'TTS endpoint': 'TTS endpoint',
'Using browser speech synthesis': 'Using browser speech synthesis',
'Read-aloud section progress': 'Section {{current}} of {{total}}',
'Request sent': 'Request sent',
'Response received': 'Response received',
'Playback started': 'Playback started',
Characters: 'Characters',
Pause: 'Pause',
Play: 'Play',
Stop: 'Stop',
'Read-aloud sections': 'Read-aloud sections',
'Read-aloud overall progress': 'Overall progress',
'Read-aloud section done': 'Section {{index}}: finished',
'Read-aloud section pending': 'Section {{index}}: not started yet',
'Read-aloud section fetching': 'Section {{index}}: requesting audio',
'Read-aloud section preparing audio': 'Section {{index}}: loading audio',
'Read-aloud section playing': 'Section {{index}}: playing',
'Read-aloud section paused': 'Section {{index}}: paused',
'Read-aloud legend fetching': 'Requesting audio for this section from the server…',
'Read-aloud legend buffering': 'Decoding audio for this section…',
'Read-aloud legend playing': 'Playing this section.',
'Read-aloud legend paused': 'Playback paused.',
'Read-aloud Piper fallback notice':
'Server voice (Piper) could not be used. Playing with your browser voice instead.',
'Read-aloud Piper fallback detail label': 'Piper error',
'Read-aloud Piper status region': 'Piper text-to-speech status',
'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
"You're invited to a scheduled video call.": "You're invited to a scheduled video call.", "You're invited to a scheduled video call.": "You're invited to a scheduled video call.",
@ -277,16 +333,26 @@ export default {
'Upload Image': 'Upload Image', 'Upload Image': 'Upload Image',
'Insert emoji': 'Insert emoji', 'Insert emoji': 'Insert emoji',
'Insert GIF': 'Insert GIF', 'Insert GIF': 'Insert GIF',
'Insert meme': 'Insert meme',
'Search GIFs': 'Search GIFs', 'Search GIFs': 'Search GIFs',
'Search memes': 'Search memes',
'Choose a GIF': 'Choose a GIF', 'Choose a GIF': 'Choose a GIF',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs', 'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs',
'Add your own GIFs': 'Add your own GIFs', 'Add your own GIFs': 'Add your own GIFs',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Description (optional, for search)', 'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up', 'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Uploading...', '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.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} is not a GIF file', '{{name}} is not a GIF file': '{{name}} is not a GIF file',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': 'R & W', 'R & W': 'R & W',
Read: 'पढ', Read: 'पढ',
Write: 'लि', Write: 'लि',
@ -338,6 +404,9 @@ export default {
'Calculate optimal read relays': 'इषटतम रड रि गणन कर', 'Calculate optimal read relays': 'इषटतम रड रि गणन कर',
'Login to set': 'सट करनिए लिन कर', 'Login to set': 'सट करनिए लिन कर',
'Please login to view following feed': 'फग फड दखनिए कपयिन कर', 'Please login to view following feed': 'फग फड दखनिए कपयिन कर',
'Follow set': 'Follow set',
'Follow set feed empty':
'This NIP-51 list is empty, was not found, or relays could not load it yet.',
'Send only to r': 'कवल {{r}} क', 'Send only to r': 'कवल {{r}} क',
'Send only to these relays': 'कवल इन रि', 'Send only to these relays': 'कवल इन रि',
Explore: 'एकसपर कर', Explore: 'एकसपर कर',
@ -375,6 +444,43 @@ export default {
Topics: 'Topics', Topics: 'Topics',
'Open in a': '{{a}} म', 'Open in a': '{{a}} म',
'Cannot handle event of kind k': 'परकर {{k}} क इवट कडल नह कर सकत', 'Cannot handle event of kind k': 'परकर {{k}} क इवट कडल नह कर सकत',
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Reference tags (e, p, q, a)',
'Starred spells': 'Starred spells',
'Spell star add title': 'Star spell (adds to your Nostr bookmarks)',
'Spell star remove title': 'Unstar spell (removes from your Nostr bookmarks)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'reacted to this note.',
'Notification discussion upvote summary': 'upvoted in this discussion.',
'Notification discussion downvote summary': 'downvoted in this discussion.',
'Notification boost summary': 'Boosted this note',
'Notification boost detail': 'The preview above is the original post.',
'Notification poll vote summary': 'Voted on the poll above.',
'Notification poll vote options count': '{{count}} option(s) selected',
'Jumble Imwald synthetic event': 'Jumble Imwald synthetic event',
'+ Add a URL to this list': 'Add a URL to this list',
'Add a web URL': 'Add a web URL',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Open any https page in the side panel to reply, react, and discuss on Nostr.',
'Enter a valid http(s) URL': 'Enter a valid http(s) URL',
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.':
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.',
'Open in browser': 'Open in browser',
'Web page': 'Web page',
Open: 'Open',
'Sorry! The note cannot be found 😔': 'मफ कर! नट नहिल सक 😔', 'Sorry! The note cannot be found 😔': 'मफ कर! नट नहिल सक 😔',
'This user has been muted': 'इस उपयगकरट कर दि गय', 'This user has been muted': 'इस उपयगकरट कर दि गय',
Wallet: 'वट', Wallet: 'वट',
@ -392,6 +498,9 @@ export default {
All: 'सभ', All: 'सभ',
Reactions: 'परतिि', Reactions: 'परतिि',
Zaps: 'जस', Zaps: 'जस',
Boosts: 'बट',
Badges: 'Badges',
Reports: 'Reports',
'Enjoying Jumble?': 'Jumble क आनद ल रह?', 'Enjoying Jumble?': 'Jumble क आनद ल रह?',
'Your donation helps me maintain Jumble and make it better! 😊': 'Your donation helps me maintain Jumble and make it better! 😊':
'आपकन म Jumble क बनए रखन और इसहतर बन मदद करत! 😊', 'आपकन म Jumble क बनए रखन और इसहतर बन मदद करत! 😊',
@ -435,6 +544,11 @@ export default {
'no more relays': 'कई और रि नह', 'no more relays': 'कई और रि नह',
'Favorited by': 'द पस', 'Favorited by': 'द पस',
'Post settings': 'पट सिस', 'Post settings': 'पट सिस',
'Publishing feedback': 'Publishing feedback',
'Publish success toasts': 'Publish success toasts',
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.':
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.',
'Publish successful': 'Publish successful',
'Media upload service': 'मि अपलड स', 'Media upload service': 'मि अपलड स',
'Choose a relay': 'रि', 'Choose a relay': 'रि',
'no relays found': 'कई रि नहि', 'no relays found': 'कई रि नहि',
@ -448,6 +562,15 @@ export default {
Bookmarks: 'बकमक', Bookmarks: 'बकमक',
'Follow Packs': 'Follow Packs', 'Follow Packs': 'Follow Packs',
'Follow Pack': 'Follow Pack', 'Follow Pack': 'Follow Pack',
'Follow pack by': 'by',
'In Follow Packs': 'In Follow Packs',
'Badge details': 'Badge details',
'Issued by': 'Issued by',
'Other recipients': 'Other recipients',
'No other recipients found': 'No other recipients found',
'Recipients could not be loaded': 'Recipients could not be loaded',
'View award': 'View award',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Please log in to follow', 'Please log in to follow': 'Please log in to follow',
'Following All': 'Following All', 'Following All': 'Following All',
'Followed {{count}} users': 'Followed {{count}} users', 'Followed {{count}} users': 'Followed {{count}} users',
@ -461,11 +584,26 @@ export default {
General: 'सय', General: 'सय',
Autoplay: 'ऑट', Autoplay: 'ऑट',
'Enable video autoplay on this device': 'इस डिइस पर वि ऑट सकषम कर', 'Enable video autoplay on this device': 'इस डिइस पर वि ऑट सकषम कर',
'liveActivities.heading': 'Live now',
'liveActivities.regionLabel': 'Live spaces and streams',
'liveActivities.fromFollow': 'From someone you follow',
'liveActivities.goToSlide': 'Show live item {{n}}',
'liveActivities.settingsToggle': 'Live activities banner',
'liveActivities.settingsHint':
'Shows NIP-53 live rooms (audio/video spaces) from your relays. Updates on a quarter-hour schedule and when the app finishes its initial session warm-up.',
'Add random relays to every publish': 'Random relays in publish list', 'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description': '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.', '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_local: 'Local',
relayType_relay_list: 'Relay list', relayType_relay_list: 'Relay list',
relayType_http_relay_list: 'HTTP',
'HTTP relays': 'HTTP relays',
httpRelaysDescription:
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -485,9 +623,34 @@ export default {
'Session relays scored random hint': '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.', '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)', 'Session relays all striked': 'All striked relays (any source)',
'Session relays clear strike': 'Allow again',
'Session relays clear strike hint':
'Remove this relay from the session block list; it will be used again until new connection failures.',
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': 'अपलड करनिए मिइलट यप कर', 'Paste or drop media files to upload': 'अपलड करनिए मिइलट यप कर',
Preview: 'पवलकन', Preview: 'पवलकन',
'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?': 'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?':
@ -527,6 +690,11 @@ export default {
Pay: 'भगतन कर', Pay: 'भगतन कर',
interactions: 'इटरशन', interactions: 'इटरशन',
notifications: 'सचन', notifications: 'सचन',
notificationsViewAsAccount: 'View as',
notificationsViewAsAccountAria:
'Switch stored account. Notifications, replies, zaps, reactions, and boosts use this account.',
notificationsSwitchAccountFailed:
'Could not switch account. Check your signer, password, or extension and try again.',
'Show untrusted {type}': 'अविवसनय {{type}} दि', 'Show untrusted {type}': 'अविवसनय {{type}} दि',
'Hide untrusted {type}': 'अविवसनय {{type}} छ', 'Hide untrusted {type}': 'अविवसनय {{type}} छ',
'Currently hiding {type} from untrusted users.': 'Currently hiding {type} from untrusted users.':
@ -579,8 +747,41 @@ export default {
'Relay URLs (optional, comma-separated)': 'रि URLs (वकलिक, क अलग)', 'Relay URLs (optional, comma-separated)': 'रि URLs (वकलिक, क अलग)',
'Remove poll': 'पल हट', 'Remove poll': 'पल हट',
'Refresh results': 'परिम रश कर', 'Refresh results': 'परिम रश कर',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: 'पल', Poll: 'पल',
Media: 'मि', Media: 'मि',
'Articles and Publications': 'Articles and Publications',
'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
'No subscribed interests yet.': 'No subscribed interests yet.':
@ -591,6 +792,10 @@ export default {
'Nothing to load for this feed.': 'Nothing to load for this feed.', 'Nothing to load for this feed.': 'Nothing to load for this feed.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'No posts loaded for this feed. Try refreshing.', 'No posts loaded for this feed. Try refreshing.',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.',
'Per-relay timeline results ({{count}} connections)':
'Per-relay timeline results ({{count}} connections)',
'Republish to ...': 'परकित कर...', 'Republish to ...': 'परकित कर...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -626,7 +831,6 @@ export default {
'No more boosts': 'और कई बट नह', 'No more boosts': 'और कई बट नह',
'No boosts yet': 'अभ तक कई बट नह', 'No boosts yet': 'अभ तक कई बट नह',
'n more boosts': '{{count}} more boosts', 'n more boosts': '{{count}} more boosts',
Boosts: 'बट',
FollowListNotFoundConfirmation: FollowListNotFoundConfirmation:
'फ नहि। क आप एक नई बनहत? यदि आपन पहल उपयगकरि, तपयि न करि इस ऑपरशन स आपकिछल नषट हएग।', 'फ नहि। क आप एक नई बनहत? यदि आपन पहल उपयगकरि, तपयि न करि इस ऑपरशन स आपकिछल नषट हएग।',
MuteListNotFoundConfirmation: MuteListNotFoundConfirmation:
@ -656,12 +860,45 @@ export default {
Highlights: 'हइलइटस', Highlights: 'हइलइटस',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: 'पल', Polls: 'पल',
'Zap polls': 'Zap polls',
'Voice Posts': 'वयस पट', 'Voice Posts': 'वयस पट',
'Photo Posts': 'फट', 'Photo Posts': 'फट',
'Video Posts': 'विट', 'Video Posts': 'विट',
'Git repositories': 'Git repositories',
'Git issues': 'Git issues',
'Git releases': 'Git releases',
'Git Republic repository': 'Git Republic repository',
'Git Republic issue': 'Git Republic issue',
'Git Republic release': 'Git Republic release',
'Git Republic event': 'Git Republic event',
'Git Republic': 'Git Republic',
'Open in Git Republic': 'Open in Git Republic',
'Pre-release': 'Pre-release',
Draft: 'Draft',
'Repository release': 'Repository release',
'New Repository Release': 'New Repository Release',
'Release notes use the editor below (optional).':
'Release notes use the editor below (optional).',
'Repository owner (npub or hex)': 'Repository owner (npub or hex)',
'Repository id (d-tag)': 'Repository id (d-tag)',
'Git tag name': 'Git tag name',
'Tag target (40-char commit hash)': 'Tag target (40-character commit hash)',
'40-character hex SHA-1': '40-character hex SHA-1',
'Release title': 'Release title',
'Download URL': 'Download URL',
'Draft release': 'Draft release',
'Fill repository release fields': 'Fill in all required repository release fields.',
'Invalid repository owner pubkey': 'Invalid repository owner (use npub or 64-char hex).',
'Citations require private relays (NIP-65).':
'Citations require private outbox relays (NIP-65).',
'Select All': 'सभ', 'Select All': 'सभ',
'Clear All': 'सभ कर', 'Clear All': 'सभ कर',
'Set as default filter': 'डिट फिटर कप मट कर', 'Set as default filter': 'डिट फिटर कप मट कर',
'Use filter': 'Use filter',
'See all events': 'See all events',
'See all events hint':
'Feed requests omit kind filters and every kind is shown (still subject to relay limits and other feed rules). For testing new event kinds.',
'Use filter hint': 'Only the kinds you select below are requested and shown.',
Apply: 'ल कर', Apply: 'ल कर',
Reset: 'रट', Reset: 'रट',
'Share something on this Relay': 'इस रि पर कछ स कर', 'Share something on this Relay': 'इस रि पर कछ स कर',
@ -674,8 +911,56 @@ export default {
'This note mentions a user you muted': 'This note mentions a user you muted':
'यह नट एक उपयगकर उलख करति आपनट कि', 'यह नट एक उपयगकर उलख करति आपनट कि',
Filter: 'फिटर', Filter: 'फिटर',
'Feed filter': 'Feed filter',
'Search loaded posts': 'Search loaded posts',
'Filter loaded posts placeholder': 'Filter by text in content or tags…',
'Feed filter author': 'Author',
'Feed filter author everyone': 'From everyone',
'Feed filter author me': 'Only from me',
'Feed filter author npub': 'From user (npub or hex)',
'Feed filter author npub from prefix': 'from:',
'Feed filter author npub placeholder': 'npub1… or 64-char hex',
'Feed filter author me needs login': 'Log in to filter by your pubkey',
'Within the last': 'Within the last',
'Time unit': 'Time unit',
Minutes: 'Minutes',
Days: 'Days',
Weeks: 'Weeks',
Months: 'Months',
Years: 'Years',
'Feed filter client-side hint':
'Filters only apply to posts already loaded; relays are not queried again.',
'Feed full search': 'Perform full search',
'Feed full search running': 'Searching…',
'Feed full search clear': 'Clear',
'Feed full search active hint':
'Showing relay search results. Clear to return to the live feed.',
'Feed full search need constraint':
'Add search text, an author filter, or a time range before searching relays.',
'Feed full search invalid feed': 'This feed cannot run a relay search.',
'Feed full search failed': 'Relay search failed. Try again.',
'Feed full search empty': 'No matching posts were found on the queried relays.',
'No loaded posts match your filters.': 'No loaded posts match your filters.',
'mentioned you in a note': 'न आपक एक नट म उलख कि', 'mentioned you in a note': 'न आपक एक नट म उलख कि',
'quoted your note': 'न आपकट क उदत कि', 'quoted your note': 'न आपकट क उदत कि',
'quoted this note': 'Quoted this note',
'highlighted this note': 'Highlighted this note',
'cited in article': 'Cited in article',
'Thread backlinks heading': 'Also quoting this note',
'Thread backlinks primary section': 'Quotes, highlights & citations',
'Thread backlinks bookmarks section': 'Bookmarks',
'Thread backlinks lists section': 'Lists & collections',
'View full note and thread': 'View full note and thread',
'labeled this note': 'Labeled this note',
'reported this note': 'Reported this note',
'bookmarked this note': 'Bookmarked this note',
'pinned this note': 'Pinned this note',
'listed this note': 'Listed this note',
'bookmark set reference': 'Bookmark set includes this note',
'curated this note': 'Curated this note',
'badge award for this note': 'Badge award for this note',
'referenced this note': 'Referenced this note',
'Report events heading': 'Moderation reports',
'voted in your poll': 'न आपकल मट कि', 'voted in your poll': 'न आपकल मट कि',
'reacted to your note': 'न आपकट पर परतिि', 'reacted to your note': 'न आपकट पर परतिि',
'boosted your note': 'न आपकट कट कि', 'boosted your note': 'न आपकट कट कि',
@ -731,6 +1016,10 @@ export default {
'Trending on the Default Relays': 'Trending on the Default Relays', 'Trending on the Default Relays': 'Trending on the Default Relays',
'Latest from your follows': 'Latest from your follows', 'Latest from your follows': 'Latest from your follows',
'Latest from our recommended follows': 'Latest from our recommended follows', 'Latest from our recommended follows': 'Latest from our recommended follows',
'Follows latest page title': 'Latest from follows',
'Follows latest page description':
'Recent notes from accounts you follow (or a curated list when not signed in), using their outbox relays merged with your favorites. Expand a row for notes or open the profile from the row.',
'Follows latest nav label': 'Follows latest',
'Loading follow list…': 'Loading follow list…', 'Loading follow list…': 'Loading follow list…',
'Could not load recommended follows': 'Could not load recommended follows', 'Could not load recommended follows': 'Could not load recommended follows',
'Your follow list is empty': 'Your follow list is empty', 'Your follow list is empty': 'Your follow list is empty',
@ -921,6 +1210,8 @@ export default {
'Article exported as AsciiDoc': 'Article exported as AsciiDoc', 'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown', 'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)', 'Article title (optional)': 'Article title (optional)',
articleDTagDefaultHint:
'Optional. If empty, the d-tag defaults to a type-specific prefix plus a Unix timestamp (seconds), e.g. longform-article-…, wiki-article-…, wiki-markdown-…, publication-content-….',
Audio: 'Audio', Audio: 'Audio',
Author: 'Author', Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups', 'Author is required for reading groups': 'Author is required for reading groups',
@ -983,6 +1274,7 @@ export default {
'Create New Thread': 'Create New Thread', 'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll', 'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread', 'Create Thread': 'Create Thread',
composeModeKind1: 'Short note (kind 1) — turn off other compose types',
'Create a Spell': 'Create a Spell', 'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...', 'Creating...': 'Creating...',
'D-Tag': 'D-Tag', 'D-Tag': 'D-Tag',
@ -1093,6 +1385,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1146,6 +1440,7 @@ export default {
'New Internal Citation': 'New Internal Citation', 'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article', 'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll', 'New Poll': 'New Poll',
'New Discussion': 'New Discussion',
'New Prompt Citation': 'New Prompt Citation', 'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message', 'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article', 'New Wiki Article': 'New Wiki Article',
@ -1177,7 +1472,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1186,6 +1482,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1209,6 +1506,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1218,7 +1517,61 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Follow sets',
'Follow sets settings intro':
'NIP-51 follow sets (kind 30000) group people for custom feeds (for example in Spells). Lists are published to your NIP-65 outboxes and profile discovery relays.',
'New follow set': 'New follow set',
'Edit follow set': 'Edit follow set',
'No follow sets yet': 'You have not created any follow sets yet.',
'Follow set saved': 'Follow set saved',
'Follow set deleted': 'Follow set deleted',
'Failed to load follow sets': 'Failed to load follow sets',
members: 'members',
'Optional display title': 'Optional display title',
'List id (d tag)': 'List id (d tag)',
'Follow set d tag hint':
'Stable identifier for this list. It cannot be changed after the first publish.',
'People in this list': 'People in this list',
'Delete follow set?': 'Delete this follow set?',
'Delete follow set confirm':
'This sends a deletion request (kind 5) for the list. Relays that accept it will drop the list; other clients may still show a cached copy until they refresh.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1271,6 +1624,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1281,6 +1635,10 @@ export default {
'Select Media Type': 'Select Media Type', 'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...', 'Select group...': 'Select group...',
'Select relays': 'Select relays', 'Select relays': 'Select relays',
'Publish relay cap hint':
'At most {{max}} relays are contacted per publish. Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted; lower-priority checks are skipped first if you exceed the cap. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Publish relay cap hint with outbox first':
'At most {{max}} relays per publish. Your NIP-65 write relay(s) use {{reservedSlots}} of those slots first (merged ahead of this picker; they may also appear checked below). Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Select the group where you want to create this discussion.': 'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.', 'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...', 'Select topic...': 'Select topic...',
@ -1325,6 +1683,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1434,6 +1800,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

396
src/i18n/locales/it.ts

@ -7,6 +7,18 @@ export default {
Home: 'Inizio', Home: 'Inizio',
Feed: 'Feed', Feed: 'Feed',
'Favorite Relays': 'Relay preferiti', 'Favorite Relays': 'Relay preferiti',
'Relay pulse': 'Relay pulse',
'Relay pulse empty': 'Quiet on your relays in the last hour.',
'Relay pulse follows': 'Following ({{count}})',
'Relay pulse others': 'Others ({{count}})',
'Relay pulse updated': 'Updated {{relative}}',
'Relay pulse active npubs': 'Active npubs',
'Relay pulse active npubs hint':
'Kind 0 profiles for pubkeys seen on your favorite relays in the last hour (same sample as Relay pulse).',
'Relay pulse drawer following': 'Following',
'Relay pulse drawer others': 'Others',
'Relay pulse drawer no profiles': 'No kind 0 profiles loaded for this sample yet.',
'See the newest notes from your follows': 'See the newest notes from your follows',
'All favorite relays': 'Tutti i relay preferiti', 'All favorite relays': 'Tutti i relay preferiti',
'Pinned note': 'Pinned note', 'Pinned note': 'Pinned note',
'Relay settings': 'Impostazioni Relay', 'Relay settings': 'Impostazioni Relay',
@ -14,11 +26,14 @@ export default {
'Account menu': 'Account menu', 'Account menu': 'Account menu',
SidebarRelays: 'Relays', SidebarRelays: 'Relays',
Refresh: 'Aggiorna', Refresh: 'Aggiorna',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: 'Profilo', Profile: 'Profilo',
Logout: 'Disconnetti', Logout: 'Disconnetti',
Following: 'Seguendo', Following: 'Seguendo',
followings: 'seguiti', followings: 'seguiti',
boosted: 'ha boostato', boosted: 'ha boostato',
'Boosted by:': 'Boosted by:',
'just now': 'adesso', 'just now': 'adesso',
'n minutes ago': '{{n}} minuti fa', 'n minutes ago': '{{n}} minuti fa',
'n m': '{{n}}m', 'n m': '{{n}}m',
@ -85,6 +100,7 @@ export default {
"username's used relays": '{{username}} relays usati', "username's used relays": '{{username}} relays usati',
"username's muted": '{{username}} zittiti', "username's muted": '{{username}} zittiti',
Login: 'Accedi', Login: 'Accedi',
downloadDesktopApp: 'Download app',
'Please log in to view notifications.': 'Please log in to view notifications.', 'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': 'Ti segue', 'Follows you': 'Ti segue',
'Relay Settings': 'Impostazioni Relay', 'Relay Settings': 'Impostazioni Relay',
@ -160,10 +176,50 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud',
'Read-aloud idle': 'Idle',
'Preparing read-aloud…': 'Preparing read-aloud…',
'Requesting audio…': 'Requesting audio…',
'Loading audio…': 'Loading audio…',
Playing: 'Playing',
Paused: 'Paused',
'Read-aloud finished': 'Finished',
'Read-aloud error': 'Error',
'TTS endpoint': 'TTS endpoint',
'Using browser speech synthesis': 'Using browser speech synthesis',
'Read-aloud section progress': 'Section {{current}} of {{total}}',
'Request sent': 'Request sent',
'Response received': 'Response received',
'Playback started': 'Playback started',
Characters: 'Characters',
Pause: 'Pause',
Play: 'Play',
Stop: 'Stop',
'Read-aloud sections': 'Read-aloud sections',
'Read-aloud overall progress': 'Overall progress',
'Read-aloud section done': 'Section {{index}}: finished',
'Read-aloud section pending': 'Section {{index}}: not started yet',
'Read-aloud section fetching': 'Section {{index}}: requesting audio',
'Read-aloud section preparing audio': 'Section {{index}}: loading audio',
'Read-aloud section playing': 'Section {{index}}: playing',
'Read-aloud section paused': 'Section {{index}}: paused',
'Read-aloud legend fetching': 'Requesting audio for this section from the server…',
'Read-aloud legend buffering': 'Decoding audio for this section…',
'Read-aloud legend playing': 'Playing this section.',
'Read-aloud legend paused': 'Playback paused.',
'Read-aloud Piper fallback notice':
'Server voice (Piper) could not be used. Playing with your browser voice instead.',
'Read-aloud Piper fallback detail label': 'Piper error',
'Read-aloud Piper status region': 'Piper text-to-speech status',
'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
"You're invited to a scheduled video call.": "You're invited to a scheduled video call.", "You're invited to a scheduled video call.": "You're invited to a scheduled video call.",
@ -277,16 +333,26 @@ export default {
'Upload Image': 'Upload Image', 'Upload Image': 'Upload Image',
'Insert emoji': 'Insert emoji', 'Insert emoji': 'Insert emoji',
'Insert GIF': 'Insert GIF', 'Insert GIF': 'Insert GIF',
'Insert meme': 'Insert meme',
'Search GIFs': 'Search GIFs', 'Search GIFs': 'Search GIFs',
'Search memes': 'Search memes',
'Choose a GIF': 'Choose a GIF', 'Choose a GIF': 'Choose a GIF',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs', 'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs',
'Add your own GIFs': 'Add your own GIFs', 'Add your own GIFs': 'Add your own GIFs',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Description (optional, for search)', 'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up', 'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Uploading...', '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.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} is not a GIF file', '{{name}} is not a GIF file': '{{name}} is not a GIF file',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': 'L & S', 'R & W': 'L & S',
Read: 'Leggi', Read: 'Leggi',
Write: 'Scrivi', Write: 'Scrivi',
@ -338,6 +404,9 @@ export default {
'Calculate optimal read relays': 'Calcolo ottimale relay di lettura', 'Calculate optimal read relays': 'Calcolo ottimale relay di lettura',
'Login to set': 'Accedi per impostare', 'Login to set': 'Accedi per impostare',
'Please login to view following feed': 'Per favore accedi per vedere il feed dei seguiti', 'Please login to view following feed': 'Per favore accedi per vedere il feed dei seguiti',
'Follow set': 'Follow set',
'Follow set feed empty':
'This NIP-51 list is empty, was not found, or relays could not load it yet.',
'Send only to r': 'Invia solo a {{r}}', 'Send only to r': 'Invia solo a {{r}}',
'Send only to these relays': 'Invia solo a questi relay', 'Send only to these relays': 'Invia solo a questi relay',
Explore: 'Esplora', Explore: 'Esplora',
@ -375,6 +444,43 @@ export default {
Topics: 'Topics', Topics: 'Topics',
'Open in a': 'Apri in {{a}}', 'Open in a': 'Apri in {{a}}',
'Cannot handle event of kind k': 'Impossibile gestire un evento di tipo {{k}}', 'Cannot handle event of kind k': 'Impossibile gestire un evento di tipo {{k}}',
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Reference tags (e, p, q, a)',
'Starred spells': 'Starred spells',
'Spell star add title': 'Star spell (adds to your Nostr bookmarks)',
'Spell star remove title': 'Unstar spell (removes from your Nostr bookmarks)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'reacted to this note.',
'Notification discussion upvote summary': 'upvoted in this discussion.',
'Notification discussion downvote summary': 'downvoted in this discussion.',
'Notification boost summary': 'Boosted this note',
'Notification boost detail': 'The preview above is the original post.',
'Notification poll vote summary': 'Voted on the poll above.',
'Notification poll vote options count': '{{count}} option(s) selected',
'Jumble Imwald synthetic event': 'Jumble Imwald synthetic event',
'+ Add a URL to this list': 'Add a URL to this list',
'Add a web URL': 'Add a web URL',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Open any https page in the side panel to reply, react, and discuss on Nostr.',
'Enter a valid http(s) URL': 'Enter a valid http(s) URL',
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.':
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.',
'Open in browser': 'Open in browser',
'Web page': 'Web page',
Open: 'Open',
'Sorry! The note cannot be found 😔': 'Spiacente! La nota non può essere trovata 😔', 'Sorry! The note cannot be found 😔': 'Spiacente! La nota non può essere trovata 😔',
'This user has been muted': 'Questo utente è stato zittito', 'This user has been muted': 'Questo utente è stato zittito',
Wallet: 'Wallet', Wallet: 'Wallet',
@ -392,6 +498,9 @@ export default {
All: 'Tutto', All: 'Tutto',
Reactions: 'Reazioni', Reactions: 'Reazioni',
Zaps: 'Zaps', Zaps: 'Zaps',
Boosts: 'Boost',
Badges: 'Badges',
Reports: 'Reports',
'Enjoying Jumble?': 'Ti sta piacendo Jumble?', 'Enjoying Jumble?': 'Ti sta piacendo Jumble?',
'Your donation helps me maintain Jumble and make it better! 😊': 'Your donation helps me maintain Jumble and make it better! 😊':
'La tua donazione mi aiuta a mantenere Jumble e a migliorarlo! 😊', 'La tua donazione mi aiuta a mantenere Jumble e a migliorarlo! 😊',
@ -435,6 +544,11 @@ export default {
'no more relays': 'niente più relay', 'no more relays': 'niente più relay',
'Favorited by': 'Preferito da', 'Favorited by': 'Preferito da',
'Post settings': 'Impostazioni post', 'Post settings': 'Impostazioni post',
'Publishing feedback': 'Publishing feedback',
'Publish success toasts': 'Publish success toasts',
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.':
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.',
'Publish successful': 'Publish successful',
'Media upload service': 'Servizio di caricamento media', 'Media upload service': 'Servizio di caricamento media',
'Choose a relay': 'Scegli un relay', 'Choose a relay': 'Scegli un relay',
'no relays found': 'Nessun relay trovato', 'no relays found': 'Nessun relay trovato',
@ -448,6 +562,15 @@ export default {
Bookmarks: 'Segnalibri', Bookmarks: 'Segnalibri',
'Follow Packs': 'Follow Packs', 'Follow Packs': 'Follow Packs',
'Follow Pack': 'Follow Pack', 'Follow Pack': 'Follow Pack',
'Follow pack by': 'by',
'In Follow Packs': 'In Follow Packs',
'Badge details': 'Badge details',
'Issued by': 'Issued by',
'Other recipients': 'Other recipients',
'No other recipients found': 'No other recipients found',
'Recipients could not be loaded': 'Recipients could not be loaded',
'View award': 'View award',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Please log in to follow', 'Please log in to follow': 'Please log in to follow',
'Following All': 'Following All', 'Following All': 'Following All',
'Followed {{count}} users': 'Followed {{count}} users', 'Followed {{count}} users': 'Followed {{count}} users',
@ -462,11 +585,26 @@ export default {
Autoplay: 'Riproduzione automatica', Autoplay: 'Riproduzione automatica',
'Enable video autoplay on this device': 'Enable video autoplay on this device':
'Abilita riproduzione automatica video su questo dispositivo', 'Abilita riproduzione automatica video su questo dispositivo',
'liveActivities.heading': 'Live now',
'liveActivities.regionLabel': 'Live spaces and streams',
'liveActivities.fromFollow': 'From someone you follow',
'liveActivities.goToSlide': 'Show live item {{n}}',
'liveActivities.settingsToggle': 'Live activities banner',
'liveActivities.settingsHint':
'Shows NIP-53 live rooms (audio/video spaces) from your relays. Updates on a quarter-hour schedule and when the app finishes its initial session warm-up.',
'Add random relays to every publish': 'Random relays in publish list', 'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description': '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.', '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_local: 'Local',
relayType_relay_list: 'Relay list', relayType_relay_list: 'Relay list',
relayType_http_relay_list: 'HTTP',
'HTTP relays': 'HTTP relays',
httpRelaysDescription:
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -486,9 +624,34 @@ export default {
'Session relays scored random hint': '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.', '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)', 'Session relays all striked': 'All striked relays (any source)',
'Session relays clear strike': 'Allow again',
'Session relays clear strike hint':
'Remove this relay from the session block list; it will be used again until new connection failures.',
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': 'Incolla o trascina i file multimediali per caricarli', 'Paste or drop media files to upload': 'Incolla o trascina i file multimediali per caricarli',
Preview: 'Anteprima', Preview: 'Anteprima',
'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?': 'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?':
@ -528,6 +691,11 @@ export default {
Pay: 'Paga', Pay: 'Paga',
interactions: 'interazioni', interactions: 'interazioni',
notifications: 'notifiche', notifications: 'notifiche',
notificationsViewAsAccount: 'View as',
notificationsViewAsAccountAria:
'Switch stored account. Notifications, replies, zaps, reactions, and boosts use this account.',
notificationsSwitchAccountFailed:
'Could not switch account. Check your signer, password, or extension and try again.',
'Show untrusted {type}': 'Mostra {{type}} non fidati', 'Show untrusted {type}': 'Mostra {{type}} non fidati',
'Hide untrusted {type}': 'Nascondi {{type}} non fidati', 'Hide untrusted {type}': 'Nascondi {{type}} non fidati',
'Currently hiding {type} from untrusted users.': 'Currently hiding {type} from untrusted users.':
@ -580,8 +748,41 @@ export default {
'Relay URLs (optional, comma-separated)': 'URL relay (opzionale, separati da virgole)', 'Relay URLs (optional, comma-separated)': 'URL relay (opzionale, separati da virgole)',
'Remove poll': 'Rimuovi sondaggio', 'Remove poll': 'Rimuovi sondaggio',
'Refresh results': 'Aggiorna risultati', 'Refresh results': 'Aggiorna risultati',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: 'Sondaggio', Poll: 'Sondaggio',
Media: 'media', Media: 'media',
'Articles and Publications': 'Articles and Publications',
'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
'No subscribed interests yet.': 'No subscribed interests yet.':
@ -592,6 +793,10 @@ export default {
'Nothing to load for this feed.': 'Nothing to load for this feed.', 'Nothing to load for this feed.': 'Nothing to load for this feed.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'No posts loaded for this feed. Try refreshing.', 'No posts loaded for this feed. Try refreshing.',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.',
'Per-relay timeline results ({{count}} connections)':
'Per-relay timeline results ({{count}} connections)',
'Republish to ...': 'Ripubblica a...', 'Republish to ...': 'Ripubblica a...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -628,7 +833,6 @@ export default {
'No more boosts': 'Non ci sono più boost', 'No more boosts': 'Non ci sono più boost',
'No boosts yet': 'Ancora nessun boost', 'No boosts yet': 'Ancora nessun boost',
'n more boosts': '{{count}} more boosts', 'n more boosts': '{{count}} more boosts',
Boosts: 'Boost',
FollowListNotFoundConfirmation: FollowListNotFoundConfirmation:
'Elenco seguiti non trovato. Vuoi crearne uno nuovo? Se hai già seguito degli utenti in precedenza, per favore NON confermare poiché questa operazione causerà la perdita del tuo elenco seguiti precedente.', 'Elenco seguiti non trovato. Vuoi crearne uno nuovo? Se hai già seguito degli utenti in precedenza, per favore NON confermare poiché questa operazione causerà la perdita del tuo elenco seguiti precedente.',
MuteListNotFoundConfirmation: MuteListNotFoundConfirmation:
@ -658,12 +862,45 @@ export default {
Highlights: 'Evidenziazioni', Highlights: 'Evidenziazioni',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: 'Sondaggi', Polls: 'Sondaggi',
'Zap polls': 'Zap polls',
'Voice Posts': 'Post vocali', 'Voice Posts': 'Post vocali',
'Photo Posts': 'Post foto', 'Photo Posts': 'Post foto',
'Video Posts': 'Post video', 'Video Posts': 'Post video',
'Git repositories': 'Git repositories',
'Git issues': 'Git issues',
'Git releases': 'Git releases',
'Git Republic repository': 'Git Republic repository',
'Git Republic issue': 'Git Republic issue',
'Git Republic release': 'Git Republic release',
'Git Republic event': 'Git Republic event',
'Git Republic': 'Git Republic',
'Open in Git Republic': 'Open in Git Republic',
'Pre-release': 'Pre-release',
Draft: 'Draft',
'Repository release': 'Repository release',
'New Repository Release': 'New Repository Release',
'Release notes use the editor below (optional).':
'Release notes use the editor below (optional).',
'Repository owner (npub or hex)': 'Repository owner (npub or hex)',
'Repository id (d-tag)': 'Repository id (d-tag)',
'Git tag name': 'Git tag name',
'Tag target (40-char commit hash)': 'Tag target (40-character commit hash)',
'40-character hex SHA-1': '40-character hex SHA-1',
'Release title': 'Release title',
'Download URL': 'Download URL',
'Draft release': 'Draft release',
'Fill repository release fields': 'Fill in all required repository release fields.',
'Invalid repository owner pubkey': 'Invalid repository owner (use npub or 64-char hex).',
'Citations require private relays (NIP-65).':
'Citations require private outbox relays (NIP-65).',
'Select All': 'Seleziona tutto', 'Select All': 'Seleziona tutto',
'Clear All': 'Cancella tutto', 'Clear All': 'Cancella tutto',
'Set as default filter': 'Imposta come filtro predefinito', 'Set as default filter': 'Imposta come filtro predefinito',
'Use filter': 'Use filter',
'See all events': 'See all events',
'See all events hint':
'Feed requests omit kind filters and every kind is shown (still subject to relay limits and other feed rules). For testing new event kinds.',
'Use filter hint': 'Only the kinds you select below are requested and shown.',
Apply: 'Applica', Apply: 'Applica',
Reset: 'Reimposta', Reset: 'Reimposta',
'Share something on this Relay': 'Condividi qualcosa su questo Relay', 'Share something on this Relay': 'Condividi qualcosa su questo Relay',
@ -675,8 +912,56 @@ export default {
'Hide content mentioning muted users': 'Nascondi contenuto che menziona utenti silenziati', 'Hide content mentioning muted users': 'Nascondi contenuto che menziona utenti silenziati',
'This note mentions a user you muted': 'Questa nota menziona un utente che hai silenziato', 'This note mentions a user you muted': 'Questa nota menziona un utente che hai silenziato',
Filter: 'Filtro', Filter: 'Filtro',
'Feed filter': 'Feed filter',
'Search loaded posts': 'Search loaded posts',
'Filter loaded posts placeholder': 'Filter by text in content or tags…',
'Feed filter author': 'Author',
'Feed filter author everyone': 'From everyone',
'Feed filter author me': 'Only from me',
'Feed filter author npub': 'From user (npub or hex)',
'Feed filter author npub from prefix': 'from:',
'Feed filter author npub placeholder': 'npub1… or 64-char hex',
'Feed filter author me needs login': 'Log in to filter by your pubkey',
'Within the last': 'Within the last',
'Time unit': 'Time unit',
Minutes: 'Minutes',
Days: 'Days',
Weeks: 'Weeks',
Months: 'Months',
Years: 'Years',
'Feed filter client-side hint':
'Filters only apply to posts already loaded; relays are not queried again.',
'Feed full search': 'Perform full search',
'Feed full search running': 'Searching…',
'Feed full search clear': 'Clear',
'Feed full search active hint':
'Showing relay search results. Clear to return to the live feed.',
'Feed full search need constraint':
'Add search text, an author filter, or a time range before searching relays.',
'Feed full search invalid feed': 'This feed cannot run a relay search.',
'Feed full search failed': 'Relay search failed. Try again.',
'Feed full search empty': 'No matching posts were found on the queried relays.',
'No loaded posts match your filters.': 'No loaded posts match your filters.',
'mentioned you in a note': 'ti ha menzionato in una nota', 'mentioned you in a note': 'ti ha menzionato in una nota',
'quoted your note': 'ha citato la tua nota', 'quoted your note': 'ha citato la tua nota',
'quoted this note': 'Quoted this note',
'highlighted this note': 'Highlighted this note',
'cited in article': 'Cited in article',
'Thread backlinks heading': 'Also quoting this note',
'Thread backlinks primary section': 'Quotes, highlights & citations',
'Thread backlinks bookmarks section': 'Bookmarks',
'Thread backlinks lists section': 'Lists & collections',
'View full note and thread': 'View full note and thread',
'labeled this note': 'Labeled this note',
'reported this note': 'Reported this note',
'bookmarked this note': 'Bookmarked this note',
'pinned this note': 'Pinned this note',
'listed this note': 'Listed this note',
'bookmark set reference': 'Bookmark set includes this note',
'curated this note': 'Curated this note',
'badge award for this note': 'Badge award for this note',
'referenced this note': 'Referenced this note',
'Report events heading': 'Moderation reports',
'voted in your poll': 'ha votato nel tuo sondaggio', 'voted in your poll': 'ha votato nel tuo sondaggio',
'reacted to your note': 'ha reagito alla tua nota', 'reacted to your note': 'ha reagito alla tua nota',
'boosted your note': 'ha boostato la tua nota', 'boosted your note': 'ha boostato la tua nota',
@ -734,6 +1019,10 @@ export default {
'Trending on the Default Relays': 'Trending on the Default Relays', 'Trending on the Default Relays': 'Trending on the Default Relays',
'Latest from your follows': 'Latest from your follows', 'Latest from your follows': 'Latest from your follows',
'Latest from our recommended follows': 'Latest from our recommended follows', 'Latest from our recommended follows': 'Latest from our recommended follows',
'Follows latest page title': 'Latest from follows',
'Follows latest page description':
'Recent notes from accounts you follow (or a curated list when not signed in), using their outbox relays merged with your favorites. Expand a row for notes or open the profile from the row.',
'Follows latest nav label': 'Follows latest',
'Loading follow list…': 'Loading follow list…', 'Loading follow list…': 'Loading follow list…',
'Could not load recommended follows': 'Could not load recommended follows', 'Could not load recommended follows': 'Could not load recommended follows',
'Your follow list is empty': 'Your follow list is empty', 'Your follow list is empty': 'Your follow list is empty',
@ -924,6 +1213,8 @@ export default {
'Article exported as AsciiDoc': 'Article exported as AsciiDoc', 'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown', 'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)', 'Article title (optional)': 'Article title (optional)',
articleDTagDefaultHint:
'Optional. If empty, the d-tag defaults to a type-specific prefix plus a Unix timestamp (seconds), e.g. longform-article-…, wiki-article-…, wiki-markdown-…, publication-content-….',
Audio: 'Audio', Audio: 'Audio',
Author: 'Author', Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups', 'Author is required for reading groups': 'Author is required for reading groups',
@ -986,6 +1277,7 @@ export default {
'Create New Thread': 'Create New Thread', 'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll', 'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread', 'Create Thread': 'Create Thread',
composeModeKind1: 'Short note (kind 1) — turn off other compose types',
'Create a Spell': 'Create a Spell', 'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...', 'Creating...': 'Creating...',
'D-Tag': 'D-Tag', 'D-Tag': 'D-Tag',
@ -1096,6 +1388,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1149,6 +1443,7 @@ export default {
'New Internal Citation': 'New Internal Citation', 'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article', 'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll', 'New Poll': 'New Poll',
'New Discussion': 'New Discussion',
'New Prompt Citation': 'New Prompt Citation', 'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message', 'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article', 'New Wiki Article': 'New Wiki Article',
@ -1180,7 +1475,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1189,6 +1485,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1212,6 +1509,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1221,7 +1520,61 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Follow sets',
'Follow sets settings intro':
'NIP-51 follow sets (kind 30000) group people for custom feeds (for example in Spells). Lists are published to your NIP-65 outboxes and profile discovery relays.',
'New follow set': 'New follow set',
'Edit follow set': 'Edit follow set',
'No follow sets yet': 'You have not created any follow sets yet.',
'Follow set saved': 'Follow set saved',
'Follow set deleted': 'Follow set deleted',
'Failed to load follow sets': 'Failed to load follow sets',
members: 'members',
'Optional display title': 'Optional display title',
'List id (d tag)': 'List id (d tag)',
'Follow set d tag hint':
'Stable identifier for this list. It cannot be changed after the first publish.',
'People in this list': 'People in this list',
'Delete follow set?': 'Delete this follow set?',
'Delete follow set confirm':
'This sends a deletion request (kind 5) for the list. Relays that accept it will drop the list; other clients may still show a cached copy until they refresh.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1274,6 +1627,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1284,6 +1638,10 @@ export default {
'Select Media Type': 'Select Media Type', 'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...', 'Select group...': 'Select group...',
'Select relays': 'Select relays', 'Select relays': 'Select relays',
'Publish relay cap hint':
'At most {{max}} relays are contacted per publish. Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted; lower-priority checks are skipped first if you exceed the cap. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Publish relay cap hint with outbox first':
'At most {{max}} relays per publish. Your NIP-65 write relay(s) use {{reservedSlots}} of those slots first (merged ahead of this picker; they may also appear checked below). Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Select the group where you want to create this discussion.': 'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.', 'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...', 'Select topic...': 'Select topic...',
@ -1328,6 +1686,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1437,6 +1803,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

396
src/i18n/locales/ja.ts

@ -7,6 +7,18 @@ export default {
Home: 'ホーム', Home: 'ホーム',
Feed: 'Feed', Feed: 'Feed',
'Favorite Relays': 'お気に入りのリレイ', 'Favorite Relays': 'お気に入りのリレイ',
'Relay pulse': 'Relay pulse',
'Relay pulse empty': 'Quiet on your relays in the last hour.',
'Relay pulse follows': 'Following ({{count}})',
'Relay pulse others': 'Others ({{count}})',
'Relay pulse updated': 'Updated {{relative}}',
'Relay pulse active npubs': 'Active npubs',
'Relay pulse active npubs hint':
'Kind 0 profiles for pubkeys seen on your favorite relays in the last hour (same sample as Relay pulse).',
'Relay pulse drawer following': 'Following',
'Relay pulse drawer others': 'Others',
'Relay pulse drawer no profiles': 'No kind 0 profiles loaded for this sample yet.',
'See the newest notes from your follows': 'See the newest notes from your follows',
'All favorite relays': 'すべてのお気に入りリレイ', 'All favorite relays': 'すべてのお気に入りリレイ',
'Pinned note': 'Pinned note', 'Pinned note': 'Pinned note',
'Relay settings': 'リレイ設定', 'Relay settings': 'リレイ設定',
@ -14,11 +26,14 @@ export default {
'Account menu': 'Account menu', 'Account menu': 'Account menu',
SidebarRelays: 'リレイ', SidebarRelays: 'リレイ',
Refresh: '更新', Refresh: '更新',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: 'プロフィール', Profile: 'プロフィール',
Logout: 'ログアウト', Logout: 'ログアウト',
Following: 'フォロー中', Following: 'フォロー中',
followings: 'フォロー', followings: 'フォロー',
boosted: 'ブースト済み', boosted: 'ブースト済み',
'Boosted by:': 'Boosted by:',
'just now': 'たった今', 'just now': 'たった今',
'n minutes ago': '{{n}}分前', 'n minutes ago': '{{n}}分前',
'n m': '{{n}}分', 'n m': '{{n}}分',
@ -85,6 +100,7 @@ export default {
"username's used relays": '{{username}} の使用リレイ', "username's used relays": '{{username}} の使用リレイ',
"username's muted": '{{username}} はミュート済み', "username's muted": '{{username}} はミュート済み',
Login: 'ログイン', Login: 'ログイン',
downloadDesktopApp: 'Download app',
'Please log in to view notifications.': 'Please log in to view notifications.', 'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': 'あなたをフォローしています', 'Follows you': 'あなたをフォローしています',
'Relay Settings': 'リレイ設定', 'Relay Settings': 'リレイ設定',
@ -160,10 +176,50 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud',
'Read-aloud idle': 'Idle',
'Preparing read-aloud…': 'Preparing read-aloud…',
'Requesting audio…': 'Requesting audio…',
'Loading audio…': 'Loading audio…',
Playing: 'Playing',
Paused: 'Paused',
'Read-aloud finished': 'Finished',
'Read-aloud error': 'Error',
'TTS endpoint': 'TTS endpoint',
'Using browser speech synthesis': 'Using browser speech synthesis',
'Read-aloud section progress': 'Section {{current}} of {{total}}',
'Request sent': 'Request sent',
'Response received': 'Response received',
'Playback started': 'Playback started',
Characters: 'Characters',
Pause: 'Pause',
Play: 'Play',
Stop: 'Stop',
'Read-aloud sections': 'Read-aloud sections',
'Read-aloud overall progress': 'Overall progress',
'Read-aloud section done': 'Section {{index}}: finished',
'Read-aloud section pending': 'Section {{index}}: not started yet',
'Read-aloud section fetching': 'Section {{index}}: requesting audio',
'Read-aloud section preparing audio': 'Section {{index}}: loading audio',
'Read-aloud section playing': 'Section {{index}}: playing',
'Read-aloud section paused': 'Section {{index}}: paused',
'Read-aloud legend fetching': 'Requesting audio for this section from the server…',
'Read-aloud legend buffering': 'Decoding audio for this section…',
'Read-aloud legend playing': 'Playing this section.',
'Read-aloud legend paused': 'Playback paused.',
'Read-aloud Piper fallback notice':
'Server voice (Piper) could not be used. Playing with your browser voice instead.',
'Read-aloud Piper fallback detail label': 'Piper error',
'Read-aloud Piper status region': 'Piper text-to-speech status',
'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
"You're invited to a scheduled video call.": "You're invited to a scheduled video call.", "You're invited to a scheduled video call.": "You're invited to a scheduled video call.",
@ -276,16 +332,26 @@ export default {
'Upload Image': 'Upload Image', 'Upload Image': 'Upload Image',
'Insert emoji': 'Insert emoji', 'Insert emoji': 'Insert emoji',
'Insert GIF': 'Insert GIF', 'Insert GIF': 'Insert GIF',
'Insert meme': 'Insert meme',
'Search GIFs': 'Search GIFs', 'Search GIFs': 'Search GIFs',
'Search memes': 'Search memes',
'Choose a GIF': 'Choose a GIF', 'Choose a GIF': 'Choose a GIF',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs', 'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs',
'Add your own GIFs': 'Add your own GIFs', 'Add your own GIFs': 'Add your own GIFs',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Description (optional, for search)', 'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up', 'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Uploading...', '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.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} is not a GIF file', '{{name}} is not a GIF file': '{{name}} is not a GIF file',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': '読&書', 'R & W': '読&書',
Read: '読む', Read: '読む',
Write: '書く', Write: '書く',
@ -336,6 +402,9 @@ export default {
'Calculate optimal read relays': '最適な読みリレイを計算', 'Calculate optimal read relays': '最適な読みリレイを計算',
'Login to set': 'セットにログイン', 'Login to set': 'セットにログイン',
'Please login to view following feed': 'フォロー中のフィードを表示するにはログインしてください', 'Please login to view following feed': 'フォロー中のフィードを表示するにはログインしてください',
'Follow set': 'Follow set',
'Follow set feed empty':
'This NIP-51 list is empty, was not found, or relays could not load it yet.',
'Send only to r': '{{r}} にのみ送信', 'Send only to r': '{{r}} にのみ送信',
'Send only to these relays': 'これらのリレイにのみ送信', 'Send only to these relays': 'これらのリレイにのみ送信',
Explore: '探索', Explore: '探索',
@ -373,6 +442,43 @@ export default {
Topics: 'Topics', Topics: 'Topics',
'Open in a': '{{a}}で開く', 'Open in a': '{{a}}で開く',
'Cannot handle event of kind k': '種類{{k}}のイベントは処理できません', 'Cannot handle event of kind k': '種類{{k}}のイベントは処理できません',
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Reference tags (e, p, q, a)',
'Starred spells': 'Starred spells',
'Spell star add title': 'Star spell (adds to your Nostr bookmarks)',
'Spell star remove title': 'Unstar spell (removes from your Nostr bookmarks)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'reacted to this note.',
'Notification discussion upvote summary': 'upvoted in this discussion.',
'Notification discussion downvote summary': 'downvoted in this discussion.',
'Notification boost summary': 'Boosted this note',
'Notification boost detail': 'The preview above is the original post.',
'Notification poll vote summary': 'Voted on the poll above.',
'Notification poll vote options count': '{{count}} option(s) selected',
'Jumble Imwald synthetic event': 'Jumble Imwald synthetic event',
'+ Add a URL to this list': 'Add a URL to this list',
'Add a web URL': 'Add a web URL',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Open any https page in the side panel to reply, react, and discuss on Nostr.',
'Enter a valid http(s) URL': 'Enter a valid http(s) URL',
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.':
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.',
'Open in browser': 'Open in browser',
'Web page': 'Web page',
Open: 'Open',
'Sorry! The note cannot be found 😔': '申し訳ありません!ノートが見つかりません 😔', 'Sorry! The note cannot be found 😔': '申し訳ありません!ノートが見つかりません 😔',
'This user has been muted': 'このユーザーはミュートされています', 'This user has been muted': 'このユーザーはミュートされています',
Wallet: 'ウォレット', Wallet: 'ウォレット',
@ -390,6 +496,9 @@ export default {
All: 'すべて', All: 'すべて',
Reactions: '反応', Reactions: '反応',
Zaps: 'Zap', Zaps: 'Zap',
Boosts: 'ブースト',
Badges: 'Badges',
Reports: 'Reports',
'Enjoying Jumble?': 'Jumbleをお楽しみですか?', 'Enjoying Jumble?': 'Jumbleをお楽しみですか?',
'Your donation helps me maintain Jumble and make it better! 😊': 'Your donation helps me maintain Jumble and make it better! 😊':
'あなたの寄付はJumbleの維持と改善に役立ちます! 😊', 'あなたの寄付はJumbleの維持と改善に役立ちます! 😊',
@ -432,6 +541,11 @@ export default {
'no more relays': 'これ以上のリレイはありません', 'no more relays': 'これ以上のリレイはありません',
'Favorited by': 'お気に入り', 'Favorited by': 'お気に入り',
'Post settings': '投稿設定', 'Post settings': '投稿設定',
'Publishing feedback': 'Publishing feedback',
'Publish success toasts': 'Publish success toasts',
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.':
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.',
'Publish successful': 'Publish successful',
'Media upload service': 'メディアアップロードサービス', 'Media upload service': 'メディアアップロードサービス',
'Choose a relay': 'リレイを選択', 'Choose a relay': 'リレイを選択',
'no relays found': 'リレイが見つかりません', 'no relays found': 'リレイが見つかりません',
@ -445,6 +559,15 @@ export default {
Bookmarks: 'ブックマーク一覧', Bookmarks: 'ブックマーク一覧',
'Follow Packs': 'Follow Packs', 'Follow Packs': 'Follow Packs',
'Follow Pack': 'Follow Pack', 'Follow Pack': 'Follow Pack',
'Follow pack by': 'by',
'In Follow Packs': 'In Follow Packs',
'Badge details': 'Badge details',
'Issued by': 'Issued by',
'Other recipients': 'Other recipients',
'No other recipients found': 'No other recipients found',
'Recipients could not be loaded': 'Recipients could not be loaded',
'View award': 'View award',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Please log in to follow', 'Please log in to follow': 'Please log in to follow',
'Following All': 'Following All', 'Following All': 'Following All',
'Followed {{count}} users': 'Followed {{count}} users', 'Followed {{count}} users': 'Followed {{count}} users',
@ -458,11 +581,26 @@ export default {
General: '一般', General: '一般',
Autoplay: '自動再生', Autoplay: '自動再生',
'Enable video autoplay on this device': 'このデバイスでのビデオ自動再生を有効にする', 'Enable video autoplay on this device': 'このデバイスでのビデオ自動再生を有効にする',
'liveActivities.heading': 'Live now',
'liveActivities.regionLabel': 'Live spaces and streams',
'liveActivities.fromFollow': 'From someone you follow',
'liveActivities.goToSlide': 'Show live item {{n}}',
'liveActivities.settingsToggle': 'Live activities banner',
'liveActivities.settingsHint':
'Shows NIP-53 live rooms (audio/video spaces) from your relays. Updates on a quarter-hour schedule and when the app finishes its initial session warm-up.',
'Add random relays to every publish': 'Random relays in publish list', 'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description': '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.', '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_local: 'Local',
relayType_relay_list: 'Relay list', relayType_relay_list: 'Relay list',
relayType_http_relay_list: 'HTTP',
'HTTP relays': 'HTTP relays',
httpRelaysDescription:
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -482,9 +620,34 @@ export default {
'Session relays scored random hint': '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.', '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)', 'Session relays all striked': 'All striked relays (any source)',
'Session relays clear strike': 'Allow again',
'Session relays clear strike hint':
'Remove this relay from the session block list; it will be used again until new connection failures.',
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': 'メディアファイルを貼り付けるかドロップしてアップロード', 'Paste or drop media files to upload': 'メディアファイルを貼り付けるかドロップしてアップロード',
Preview: 'プレビュー', Preview: 'プレビュー',
'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?': 'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?':
@ -524,6 +687,11 @@ export default {
Pay: '支払う', Pay: '支払う',
interactions: 'インタラクション', interactions: 'インタラクション',
notifications: '通知', notifications: '通知',
notificationsViewAsAccount: 'View as',
notificationsViewAsAccountAria:
'Switch stored account. Notifications, replies, zaps, reactions, and boosts use this account.',
notificationsSwitchAccountFailed:
'Could not switch account. Check your signer, password, or extension and try again.',
'Show untrusted {type}': '信頼されていない{{type}}を表示', 'Show untrusted {type}': '信頼されていない{{type}}を表示',
'Hide untrusted {type}': '信頼されていない{{type}}を非表示', 'Hide untrusted {type}': '信頼されていない{{type}}を非表示',
'Currently hiding {type} from untrusted users.': 'Currently hiding {type} from untrusted users.':
@ -577,8 +745,41 @@ export default {
'Relay URLs (optional, comma-separated)': 'リレーURL(任意、カンマ区切り)', 'Relay URLs (optional, comma-separated)': 'リレーURL(任意、カンマ区切り)',
'Remove poll': '投票を削除', 'Remove poll': '投票を削除',
'Refresh results': '結果を更新', 'Refresh results': '結果を更新',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: '投票', Poll: '投票',
Media: 'メディア', Media: 'メディア',
'Articles and Publications': 'Articles and Publications',
'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
'No subscribed interests yet.': 'No subscribed interests yet.':
@ -589,6 +790,10 @@ export default {
'Nothing to load for this feed.': 'Nothing to load for this feed.', 'Nothing to load for this feed.': 'Nothing to load for this feed.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'No posts loaded for this feed. Try refreshing.', 'No posts loaded for this feed. Try refreshing.',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.',
'Per-relay timeline results ({{count}} connections)':
'Per-relay timeline results ({{count}} connections)',
'Republish to ...': '再公開先 ...', 'Republish to ...': '再公開先 ...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -624,7 +829,6 @@ export default {
'No more boosts': 'これ以上のブーストはありません', 'No more boosts': 'これ以上のブーストはありません',
'No boosts yet': 'まだブーストはありません', 'No boosts yet': 'まだブーストはありません',
'n more boosts': '{{count}} more boosts', 'n more boosts': '{{count}} more boosts',
Boosts: 'ブースト',
FollowListNotFoundConfirmation: FollowListNotFoundConfirmation:
'フォローリストが見つかりません。新しいものを作成しますか?以前にユーザーをフォローしたことがある場合は、この操作により前のフォローリストが失われるため、確認しないでください。', 'フォローリストが見つかりません。新しいものを作成しますか?以前にユーザーをフォローしたことがある場合は、この操作により前のフォローリストが失われるため、確認しないでください。',
MuteListNotFoundConfirmation: MuteListNotFoundConfirmation:
@ -654,12 +858,45 @@ export default {
Highlights: 'ハイライト', Highlights: 'ハイライト',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: '投票', Polls: '投票',
'Zap polls': 'Zap polls',
'Voice Posts': '音声投稿', 'Voice Posts': '音声投稿',
'Photo Posts': '写真投稿', 'Photo Posts': '写真投稿',
'Video Posts': 'ビデオ投稿', 'Video Posts': 'ビデオ投稿',
'Git repositories': 'Git repositories',
'Git issues': 'Git issues',
'Git releases': 'Git releases',
'Git Republic repository': 'Git Republic repository',
'Git Republic issue': 'Git Republic issue',
'Git Republic release': 'Git Republic release',
'Git Republic event': 'Git Republic event',
'Git Republic': 'Git Republic',
'Open in Git Republic': 'Open in Git Republic',
'Pre-release': 'Pre-release',
Draft: 'Draft',
'Repository release': 'Repository release',
'New Repository Release': 'New Repository Release',
'Release notes use the editor below (optional).':
'Release notes use the editor below (optional).',
'Repository owner (npub or hex)': 'Repository owner (npub or hex)',
'Repository id (d-tag)': 'Repository id (d-tag)',
'Git tag name': 'Git tag name',
'Tag target (40-char commit hash)': 'Tag target (40-character commit hash)',
'40-character hex SHA-1': '40-character hex SHA-1',
'Release title': 'Release title',
'Download URL': 'Download URL',
'Draft release': 'Draft release',
'Fill repository release fields': 'Fill in all required repository release fields.',
'Invalid repository owner pubkey': 'Invalid repository owner (use npub or 64-char hex).',
'Citations require private relays (NIP-65).':
'Citations require private outbox relays (NIP-65).',
'Select All': 'すべて選択', 'Select All': 'すべて選択',
'Clear All': 'すべてクリア', 'Clear All': 'すべてクリア',
'Set as default filter': 'デフォルトフィルターに設定', 'Set as default filter': 'デフォルトフィルターに設定',
'Use filter': 'Use filter',
'See all events': 'See all events',
'See all events hint':
'Feed requests omit kind filters and every kind is shown (still subject to relay limits and other feed rules). For testing new event kinds.',
'Use filter hint': 'Only the kinds you select below are requested and shown.',
Apply: '適用', Apply: '適用',
Reset: 'リセット', Reset: 'リセット',
'Share something on this Relay': 'このリレーで何かを共有する', 'Share something on this Relay': 'このリレーで何かを共有する',
@ -671,8 +908,56 @@ export default {
'Hide content mentioning muted users': 'ミュートしたユーザーを言及するコンテンツを非表示', 'Hide content mentioning muted users': 'ミュートしたユーザーを言及するコンテンツを非表示',
'This note mentions a user you muted': 'このノートはミュートしたユーザーを言及しています', 'This note mentions a user you muted': 'このノートはミュートしたユーザーを言及しています',
Filter: 'フィルター', Filter: 'フィルター',
'Feed filter': 'Feed filter',
'Search loaded posts': 'Search loaded posts',
'Filter loaded posts placeholder': 'Filter by text in content or tags…',
'Feed filter author': 'Author',
'Feed filter author everyone': 'From everyone',
'Feed filter author me': 'Only from me',
'Feed filter author npub': 'From user (npub or hex)',
'Feed filter author npub from prefix': 'from:',
'Feed filter author npub placeholder': 'npub1… or 64-char hex',
'Feed filter author me needs login': 'Log in to filter by your pubkey',
'Within the last': 'Within the last',
'Time unit': 'Time unit',
Minutes: 'Minutes',
Days: 'Days',
Weeks: 'Weeks',
Months: 'Months',
Years: 'Years',
'Feed filter client-side hint':
'Filters only apply to posts already loaded; relays are not queried again.',
'Feed full search': 'Perform full search',
'Feed full search running': 'Searching…',
'Feed full search clear': 'Clear',
'Feed full search active hint':
'Showing relay search results. Clear to return to the live feed.',
'Feed full search need constraint':
'Add search text, an author filter, or a time range before searching relays.',
'Feed full search invalid feed': 'This feed cannot run a relay search.',
'Feed full search failed': 'Relay search failed. Try again.',
'Feed full search empty': 'No matching posts were found on the queried relays.',
'No loaded posts match your filters.': 'No loaded posts match your filters.',
'mentioned you in a note': 'ノートであなたに言及しました', 'mentioned you in a note': 'ノートであなたに言及しました',
'quoted your note': 'あなたのノートを引用しました', 'quoted your note': 'あなたのノートを引用しました',
'quoted this note': 'Quoted this note',
'highlighted this note': 'Highlighted this note',
'cited in article': 'Cited in article',
'Thread backlinks heading': 'Also quoting this note',
'Thread backlinks primary section': 'Quotes, highlights & citations',
'Thread backlinks bookmarks section': 'Bookmarks',
'Thread backlinks lists section': 'Lists & collections',
'View full note and thread': 'View full note and thread',
'labeled this note': 'Labeled this note',
'reported this note': 'Reported this note',
'bookmarked this note': 'Bookmarked this note',
'pinned this note': 'Pinned this note',
'listed this note': 'Listed this note',
'bookmark set reference': 'Bookmark set includes this note',
'curated this note': 'Curated this note',
'badge award for this note': 'Badge award for this note',
'referenced this note': 'Referenced this note',
'Report events heading': 'Moderation reports',
'voted in your poll': 'あなたの投票に投票しました', 'voted in your poll': 'あなたの投票に投票しました',
'reacted to your note': 'あなたのノートにリアクションしました', 'reacted to your note': 'あなたのノートにリアクションしました',
'boosted your note': 'あなたのノートをブーストしました', 'boosted your note': 'あなたのノートをブーストしました',
@ -729,6 +1014,10 @@ export default {
'Trending on the Default Relays': 'Trending on the Default Relays', 'Trending on the Default Relays': 'Trending on the Default Relays',
'Latest from your follows': 'Latest from your follows', 'Latest from your follows': 'Latest from your follows',
'Latest from our recommended follows': 'Latest from our recommended follows', 'Latest from our recommended follows': 'Latest from our recommended follows',
'Follows latest page title': 'Latest from follows',
'Follows latest page description':
'Recent notes from accounts you follow (or a curated list when not signed in), using their outbox relays merged with your favorites. Expand a row for notes or open the profile from the row.',
'Follows latest nav label': 'Follows latest',
'Loading follow list…': 'Loading follow list…', 'Loading follow list…': 'Loading follow list…',
'Could not load recommended follows': 'Could not load recommended follows', 'Could not load recommended follows': 'Could not load recommended follows',
'Your follow list is empty': 'Your follow list is empty', 'Your follow list is empty': 'Your follow list is empty',
@ -919,6 +1208,8 @@ export default {
'Article exported as AsciiDoc': 'Article exported as AsciiDoc', 'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown', 'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)', 'Article title (optional)': 'Article title (optional)',
articleDTagDefaultHint:
'Optional. If empty, the d-tag defaults to a type-specific prefix plus a Unix timestamp (seconds), e.g. longform-article-…, wiki-article-…, wiki-markdown-…, publication-content-….',
Audio: 'Audio', Audio: 'Audio',
Author: 'Author', Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups', 'Author is required for reading groups': 'Author is required for reading groups',
@ -981,6 +1272,7 @@ export default {
'Create New Thread': 'Create New Thread', 'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll', 'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread', 'Create Thread': 'Create Thread',
composeModeKind1: 'Short note (kind 1) — turn off other compose types',
'Create a Spell': 'Create a Spell', 'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...', 'Creating...': 'Creating...',
'D-Tag': 'D-Tag', 'D-Tag': 'D-Tag',
@ -1091,6 +1383,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1144,6 +1438,7 @@ export default {
'New Internal Citation': 'New Internal Citation', 'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article', 'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll', 'New Poll': 'New Poll',
'New Discussion': 'New Discussion',
'New Prompt Citation': 'New Prompt Citation', 'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message', 'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article', 'New Wiki Article': 'New Wiki Article',
@ -1175,7 +1470,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1184,6 +1480,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1207,6 +1504,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1216,7 +1515,61 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Follow sets',
'Follow sets settings intro':
'NIP-51 follow sets (kind 30000) group people for custom feeds (for example in Spells). Lists are published to your NIP-65 outboxes and profile discovery relays.',
'New follow set': 'New follow set',
'Edit follow set': 'Edit follow set',
'No follow sets yet': 'You have not created any follow sets yet.',
'Follow set saved': 'Follow set saved',
'Follow set deleted': 'Follow set deleted',
'Failed to load follow sets': 'Failed to load follow sets',
members: 'members',
'Optional display title': 'Optional display title',
'List id (d tag)': 'List id (d tag)',
'Follow set d tag hint':
'Stable identifier for this list. It cannot be changed after the first publish.',
'People in this list': 'People in this list',
'Delete follow set?': 'Delete this follow set?',
'Delete follow set confirm':
'This sends a deletion request (kind 5) for the list. Relays that accept it will drop the list; other clients may still show a cached copy until they refresh.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1269,6 +1622,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1279,6 +1633,10 @@ export default {
'Select Media Type': 'Select Media Type', 'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...', 'Select group...': 'Select group...',
'Select relays': 'Select relays', 'Select relays': 'Select relays',
'Publish relay cap hint':
'At most {{max}} relays are contacted per publish. Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted; lower-priority checks are skipped first if you exceed the cap. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Publish relay cap hint with outbox first':
'At most {{max}} relays per publish. Your NIP-65 write relay(s) use {{reservedSlots}} of those slots first (merged ahead of this picker; they may also appear checked below). Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Select the group where you want to create this discussion.': 'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.', 'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...', 'Select topic...': 'Select topic...',
@ -1323,6 +1681,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1432,6 +1798,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

396
src/i18n/locales/ko.ts

@ -7,6 +7,18 @@ export default {
Home: '홈', Home: '홈',
Feed: 'Feed', Feed: 'Feed',
'Favorite Relays': '즐겨찾는 릴레이', 'Favorite Relays': '즐겨찾는 릴레이',
'Relay pulse': 'Relay pulse',
'Relay pulse empty': 'Quiet on your relays in the last hour.',
'Relay pulse follows': 'Following ({{count}})',
'Relay pulse others': 'Others ({{count}})',
'Relay pulse updated': 'Updated {{relative}}',
'Relay pulse active npubs': 'Active npubs',
'Relay pulse active npubs hint':
'Kind 0 profiles for pubkeys seen on your favorite relays in the last hour (same sample as Relay pulse).',
'Relay pulse drawer following': 'Following',
'Relay pulse drawer others': 'Others',
'Relay pulse drawer no profiles': 'No kind 0 profiles loaded for this sample yet.',
'See the newest notes from your follows': 'See the newest notes from your follows',
'All favorite relays': '모든 즐겨찾는 릴레이', 'All favorite relays': '모든 즐겨찾는 릴레이',
'Pinned note': 'Pinned note', 'Pinned note': 'Pinned note',
'Relay settings': '릴레이 설정', 'Relay settings': '릴레이 설정',
@ -14,11 +26,14 @@ export default {
'Account menu': 'Account menu', 'Account menu': 'Account menu',
SidebarRelays: '릴레이', SidebarRelays: '릴레이',
Refresh: '새로고침', Refresh: '새로고침',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: '프로필', Profile: '프로필',
Logout: '로그아웃', Logout: '로그아웃',
Following: '팔로잉', Following: '팔로잉',
followings: '팔로잉', followings: '팔로잉',
boosted: '부스트함', boosted: '부스트함',
'Boosted by:': 'Boosted by:',
'just now': '방금 전', 'just now': '방금 전',
'n minutes ago': '{{n}}분 전', 'n minutes ago': '{{n}}분 전',
'n m': '{{n}}분', 'n m': '{{n}}분',
@ -85,6 +100,7 @@ export default {
"username's used relays": '{{username}}님이 사용하는 릴레이', "username's used relays": '{{username}}님이 사용하는 릴레이',
"username's muted": '{{username}}님이 차단한 사용자', "username's muted": '{{username}}님이 차단한 사용자',
Login: '로그인', Login: '로그인',
downloadDesktopApp: 'Download app',
'Please log in to view notifications.': 'Please log in to view notifications.', 'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': '회원님을 팔로우함', 'Follows you': '회원님을 팔로우함',
'Relay Settings': '릴레이 설정', 'Relay Settings': '릴레이 설정',
@ -160,10 +176,50 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud',
'Read-aloud idle': 'Idle',
'Preparing read-aloud…': 'Preparing read-aloud…',
'Requesting audio…': 'Requesting audio…',
'Loading audio…': 'Loading audio…',
Playing: 'Playing',
Paused: 'Paused',
'Read-aloud finished': 'Finished',
'Read-aloud error': 'Error',
'TTS endpoint': 'TTS endpoint',
'Using browser speech synthesis': 'Using browser speech synthesis',
'Read-aloud section progress': 'Section {{current}} of {{total}}',
'Request sent': 'Request sent',
'Response received': 'Response received',
'Playback started': 'Playback started',
Characters: 'Characters',
Pause: 'Pause',
Play: 'Play',
Stop: 'Stop',
'Read-aloud sections': 'Read-aloud sections',
'Read-aloud overall progress': 'Overall progress',
'Read-aloud section done': 'Section {{index}}: finished',
'Read-aloud section pending': 'Section {{index}}: not started yet',
'Read-aloud section fetching': 'Section {{index}}: requesting audio',
'Read-aloud section preparing audio': 'Section {{index}}: loading audio',
'Read-aloud section playing': 'Section {{index}}: playing',
'Read-aloud section paused': 'Section {{index}}: paused',
'Read-aloud legend fetching': 'Requesting audio for this section from the server…',
'Read-aloud legend buffering': 'Decoding audio for this section…',
'Read-aloud legend playing': 'Playing this section.',
'Read-aloud legend paused': 'Playback paused.',
'Read-aloud Piper fallback notice':
'Server voice (Piper) could not be used. Playing with your browser voice instead.',
'Read-aloud Piper fallback detail label': 'Piper error',
'Read-aloud Piper status region': 'Piper text-to-speech status',
'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
"You're invited to a scheduled video call.": "You're invited to a scheduled video call.", "You're invited to a scheduled video call.": "You're invited to a scheduled video call.",
@ -276,16 +332,26 @@ export default {
'Upload Image': 'Upload Image', 'Upload Image': 'Upload Image',
'Insert emoji': 'Insert emoji', 'Insert emoji': 'Insert emoji',
'Insert GIF': 'Insert GIF', 'Insert GIF': 'Insert GIF',
'Insert meme': 'Insert meme',
'Search GIFs': 'Search GIFs', 'Search GIFs': 'Search GIFs',
'Search memes': 'Search memes',
'Choose a GIF': 'Choose a GIF', 'Choose a GIF': 'Choose a GIF',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs', 'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs',
'Add your own GIFs': 'Add your own GIFs', 'Add your own GIFs': 'Add your own GIFs',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Description (optional, for search)', 'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up', 'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Uploading...', '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.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} is not a GIF file', '{{name}} is not a GIF file': '{{name}} is not a GIF file',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': '읽기/쓰기', 'R & W': '읽기/쓰기',
Read: '읽기 전용', Read: '읽기 전용',
Write: '쓰기 전용', Write: '쓰기 전용',
@ -335,6 +401,9 @@ export default {
'Calculate optimal read relays': '최적의 읽기 릴레이 계산', 'Calculate optimal read relays': '최적의 읽기 릴레이 계산',
'Login to set': '설정하려면 로그인', 'Login to set': '설정하려면 로그인',
'Please login to view following feed': '팔로잉 피드를 보려면 로그인하세요', 'Please login to view following feed': '팔로잉 피드를 보려면 로그인하세요',
'Follow set': 'Follow set',
'Follow set feed empty':
'This NIP-51 list is empty, was not found, or relays could not load it yet.',
'Send only to r': '{{r}}에만 전송', 'Send only to r': '{{r}}에만 전송',
'Send only to these relays': '이 릴레이에만 전송', 'Send only to these relays': '이 릴레이에만 전송',
Explore: '탐색', Explore: '탐색',
@ -372,6 +441,43 @@ export default {
Topics: 'Topics', Topics: 'Topics',
'Open in a': '{{a}}에서 열기', 'Open in a': '{{a}}에서 열기',
'Cannot handle event of kind k': '{{k}} 유형의 이벤트를 처리할 수 없습니다', 'Cannot handle event of kind k': '{{k}} 유형의 이벤트를 처리할 수 없습니다',
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Reference tags (e, p, q, a)',
'Starred spells': 'Starred spells',
'Spell star add title': 'Star spell (adds to your Nostr bookmarks)',
'Spell star remove title': 'Unstar spell (removes from your Nostr bookmarks)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'reacted to this note.',
'Notification discussion upvote summary': 'upvoted in this discussion.',
'Notification discussion downvote summary': 'downvoted in this discussion.',
'Notification boost summary': 'Boosted this note',
'Notification boost detail': 'The preview above is the original post.',
'Notification poll vote summary': 'Voted on the poll above.',
'Notification poll vote options count': '{{count}} option(s) selected',
'Jumble Imwald synthetic event': 'Jumble Imwald synthetic event',
'+ Add a URL to this list': 'Add a URL to this list',
'Add a web URL': 'Add a web URL',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Open any https page in the side panel to reply, react, and discuss on Nostr.',
'Enter a valid http(s) URL': 'Enter a valid http(s) URL',
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.':
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.',
'Open in browser': 'Open in browser',
'Web page': 'Web page',
Open: 'Open',
'Sorry! The note cannot be found 😔': '죄송합니다! 해당 노트를 찾을 수 없습니다 😔', 'Sorry! The note cannot be found 😔': '죄송합니다! 해당 노트를 찾을 수 없습니다 😔',
'This user has been muted': '이 사용자는 차단되었습니다', 'This user has been muted': '이 사용자는 차단되었습니다',
Wallet: '지갑', Wallet: '지갑',
@ -389,6 +495,9 @@ export default {
All: '전체', All: '전체',
Reactions: '반응', Reactions: '반응',
Zaps: '잽', Zaps: '잽',
Boosts: '부스트',
Badges: 'Badges',
Reports: 'Reports',
'Enjoying Jumble?': 'Jumble이 마음에 드시나요?', 'Enjoying Jumble?': 'Jumble이 마음에 드시나요?',
'Your donation helps me maintain Jumble and make it better! 😊': 'Your donation helps me maintain Jumble and make it better! 😊':
'후원해주시면 Jumble을 더 잘 유지하고 발전시킬 수 있습니다! 😊', '후원해주시면 Jumble을 더 잘 유지하고 발전시킬 수 있습니다! 😊',
@ -431,6 +540,11 @@ export default {
'no more relays': '더 이상 릴레이 없음', 'no more relays': '더 이상 릴레이 없음',
'Favorited by': '즐겨찾기한 사람', 'Favorited by': '즐겨찾기한 사람',
'Post settings': '게시 설정', 'Post settings': '게시 설정',
'Publishing feedback': 'Publishing feedback',
'Publish success toasts': 'Publish success toasts',
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.':
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.',
'Publish successful': 'Publish successful',
'Media upload service': '미디어 업로드 서비스', 'Media upload service': '미디어 업로드 서비스',
'Choose a relay': '릴레이 선택', 'Choose a relay': '릴레이 선택',
'no relays found': '릴레이를 찾을 수 없음', 'no relays found': '릴레이를 찾을 수 없음',
@ -444,6 +558,15 @@ export default {
Bookmarks: '북마크', Bookmarks: '북마크',
'Follow Packs': 'Follow Packs', 'Follow Packs': 'Follow Packs',
'Follow Pack': 'Follow Pack', 'Follow Pack': 'Follow Pack',
'Follow pack by': 'by',
'In Follow Packs': 'In Follow Packs',
'Badge details': 'Badge details',
'Issued by': 'Issued by',
'Other recipients': 'Other recipients',
'No other recipients found': 'No other recipients found',
'Recipients could not be loaded': 'Recipients could not be loaded',
'View award': 'View award',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Please log in to follow', 'Please log in to follow': 'Please log in to follow',
'Following All': 'Following All', 'Following All': 'Following All',
'Followed {{count}} users': 'Followed {{count}} users', 'Followed {{count}} users': 'Followed {{count}} users',
@ -457,11 +580,26 @@ export default {
General: '일반', General: '일반',
Autoplay: '자동 재생', Autoplay: '자동 재생',
'Enable video autoplay on this device': '이 기기에서 비디오 자동 재생 활성화', 'Enable video autoplay on this device': '이 기기에서 비디오 자동 재생 활성화',
'liveActivities.heading': 'Live now',
'liveActivities.regionLabel': 'Live spaces and streams',
'liveActivities.fromFollow': 'From someone you follow',
'liveActivities.goToSlide': 'Show live item {{n}}',
'liveActivities.settingsToggle': 'Live activities banner',
'liveActivities.settingsHint':
'Shows NIP-53 live rooms (audio/video spaces) from your relays. Updates on a quarter-hour schedule and when the app finishes its initial session warm-up.',
'Add random relays to every publish': 'Random relays in publish list', 'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description': '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.', '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_local: 'Local',
relayType_relay_list: 'Relay list', relayType_relay_list: 'Relay list',
relayType_http_relay_list: 'HTTP',
'HTTP relays': 'HTTP relays',
httpRelaysDescription:
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -481,9 +619,34 @@ export default {
'Session relays scored random hint': '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.', '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)', 'Session relays all striked': 'All striked relays (any source)',
'Session relays clear strike': 'Allow again',
'Session relays clear strike hint':
'Remove this relay from the session block list; it will be used again until new connection failures.',
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': '미디어 파일을 붙여넣거나 드래그하여 업로드', 'Paste or drop media files to upload': '미디어 파일을 붙여넣거나 드래그하여 업로드',
Preview: '미리보기', Preview: '미리보기',
'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?': 'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?':
@ -523,6 +686,11 @@ export default {
Pay: '결제', Pay: '결제',
interactions: '상호작용', interactions: '상호작용',
notifications: '알림', notifications: '알림',
notificationsViewAsAccount: 'View as',
notificationsViewAsAccountAria:
'Switch stored account. Notifications, replies, zaps, reactions, and boosts use this account.',
notificationsSwitchAccountFailed:
'Could not switch account. Check your signer, password, or extension and try again.',
'Show untrusted {type}': '신뢰하지 않는 {{type}} 표시', 'Show untrusted {type}': '신뢰하지 않는 {{type}} 표시',
'Hide untrusted {type}': '신뢰하지 않는 {{type}} 숨기기', 'Hide untrusted {type}': '신뢰하지 않는 {{type}} 숨기기',
'Currently hiding {type} from untrusted users.': 'Currently hiding {type} from untrusted users.':
@ -575,8 +743,41 @@ export default {
'Relay URLs (optional, comma-separated)': '릴레이 URL (선택사항, 쉼표로 구분)', 'Relay URLs (optional, comma-separated)': '릴레이 URL (선택사항, 쉼표로 구분)',
'Remove poll': '투표 제거', 'Remove poll': '투표 제거',
'Refresh results': '결과 새로 고침', 'Refresh results': '결과 새로 고침',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: '투표', Poll: '투표',
Media: '미디어', Media: '미디어',
'Articles and Publications': 'Articles and Publications',
'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
'No subscribed interests yet.': 'No subscribed interests yet.':
@ -587,6 +788,10 @@ export default {
'Nothing to load for this feed.': 'Nothing to load for this feed.', 'Nothing to load for this feed.': 'Nothing to load for this feed.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'No posts loaded for this feed. Try refreshing.', 'No posts loaded for this feed. Try refreshing.',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.',
'Per-relay timeline results ({{count}} connections)':
'Per-relay timeline results ({{count}} connections)',
'Republish to ...': '다시 게시 ...', 'Republish to ...': '다시 게시 ...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -622,7 +827,6 @@ export default {
'No more boosts': '더 이상 부스트가 없습니다', 'No more boosts': '더 이상 부스트가 없습니다',
'No boosts yet': '아직 부스트가 없습니다', 'No boosts yet': '아직 부스트가 없습니다',
'n more boosts': '{{count}} more boosts', 'n more boosts': '{{count}} more boosts',
Boosts: '부스트',
FollowListNotFoundConfirmation: FollowListNotFoundConfirmation:
'팔로우 목록을 찾을 수 없습니다. 새로 만드시겠습니까? 이전에 사용자를 팔로우한 적이 있다면 이 작업으로 인해 이전 팔로우 목록을 잃게 되므로 확인하지 마시기 바랍니다.', '팔로우 목록을 찾을 수 없습니다. 새로 만드시겠습니까? 이전에 사용자를 팔로우한 적이 있다면 이 작업으로 인해 이전 팔로우 목록을 잃게 되므로 확인하지 마시기 바랍니다.',
MuteListNotFoundConfirmation: MuteListNotFoundConfirmation:
@ -652,12 +856,45 @@ export default {
Highlights: '하이라이트', Highlights: '하이라이트',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: '투표', Polls: '투표',
'Zap polls': 'Zap polls',
'Voice Posts': '음성 게시물', 'Voice Posts': '음성 게시물',
'Photo Posts': '사진 게시물', 'Photo Posts': '사진 게시물',
'Video Posts': '비디오 게시물', 'Video Posts': '비디오 게시물',
'Git repositories': 'Git repositories',
'Git issues': 'Git issues',
'Git releases': 'Git releases',
'Git Republic repository': 'Git Republic repository',
'Git Republic issue': 'Git Republic issue',
'Git Republic release': 'Git Republic release',
'Git Republic event': 'Git Republic event',
'Git Republic': 'Git Republic',
'Open in Git Republic': 'Open in Git Republic',
'Pre-release': 'Pre-release',
Draft: 'Draft',
'Repository release': 'Repository release',
'New Repository Release': 'New Repository Release',
'Release notes use the editor below (optional).':
'Release notes use the editor below (optional).',
'Repository owner (npub or hex)': 'Repository owner (npub or hex)',
'Repository id (d-tag)': 'Repository id (d-tag)',
'Git tag name': 'Git tag name',
'Tag target (40-char commit hash)': 'Tag target (40-character commit hash)',
'40-character hex SHA-1': '40-character hex SHA-1',
'Release title': 'Release title',
'Download URL': 'Download URL',
'Draft release': 'Draft release',
'Fill repository release fields': 'Fill in all required repository release fields.',
'Invalid repository owner pubkey': 'Invalid repository owner (use npub or 64-char hex).',
'Citations require private relays (NIP-65).':
'Citations require private outbox relays (NIP-65).',
'Select All': '모두 선택', 'Select All': '모두 선택',
'Clear All': '모두 지우기', 'Clear All': '모두 지우기',
'Set as default filter': '기본 필터로 설정', 'Set as default filter': '기본 필터로 설정',
'Use filter': 'Use filter',
'See all events': 'See all events',
'See all events hint':
'Feed requests omit kind filters and every kind is shown (still subject to relay limits and other feed rules). For testing new event kinds.',
'Use filter hint': 'Only the kinds you select below are requested and shown.',
Apply: '적용', Apply: '적용',
Reset: '초기화', Reset: '초기화',
'Share something on this Relay': '이 릴레이에서 무언가를 공유하세요', 'Share something on this Relay': '이 릴레이에서 무언가를 공유하세요',
@ -669,8 +906,56 @@ export default {
'Hide content mentioning muted users': '뮤트된 사용자를 언급하는 콘텐츠 숨기기', 'Hide content mentioning muted users': '뮤트된 사용자를 언급하는 콘텐츠 숨기기',
'This note mentions a user you muted': '이 노트는 뮤트한 사용자를 언급합니다', 'This note mentions a user you muted': '이 노트는 뮤트한 사용자를 언급합니다',
Filter: '필터', Filter: '필터',
'Feed filter': 'Feed filter',
'Search loaded posts': 'Search loaded posts',
'Filter loaded posts placeholder': 'Filter by text in content or tags…',
'Feed filter author': 'Author',
'Feed filter author everyone': 'From everyone',
'Feed filter author me': 'Only from me',
'Feed filter author npub': 'From user (npub or hex)',
'Feed filter author npub from prefix': 'from:',
'Feed filter author npub placeholder': 'npub1… or 64-char hex',
'Feed filter author me needs login': 'Log in to filter by your pubkey',
'Within the last': 'Within the last',
'Time unit': 'Time unit',
Minutes: 'Minutes',
Days: 'Days',
Weeks: 'Weeks',
Months: 'Months',
Years: 'Years',
'Feed filter client-side hint':
'Filters only apply to posts already loaded; relays are not queried again.',
'Feed full search': 'Perform full search',
'Feed full search running': 'Searching…',
'Feed full search clear': 'Clear',
'Feed full search active hint':
'Showing relay search results. Clear to return to the live feed.',
'Feed full search need constraint':
'Add search text, an author filter, or a time range before searching relays.',
'Feed full search invalid feed': 'This feed cannot run a relay search.',
'Feed full search failed': 'Relay search failed. Try again.',
'Feed full search empty': 'No matching posts were found on the queried relays.',
'No loaded posts match your filters.': 'No loaded posts match your filters.',
'mentioned you in a note': '노트에서 당신을 언급했습니다', 'mentioned you in a note': '노트에서 당신을 언급했습니다',
'quoted your note': '당신의 노트를 인용했습니다', 'quoted your note': '당신의 노트를 인용했습니다',
'quoted this note': 'Quoted this note',
'highlighted this note': 'Highlighted this note',
'cited in article': 'Cited in article',
'Thread backlinks heading': 'Also quoting this note',
'Thread backlinks primary section': 'Quotes, highlights & citations',
'Thread backlinks bookmarks section': 'Bookmarks',
'Thread backlinks lists section': 'Lists & collections',
'View full note and thread': 'View full note and thread',
'labeled this note': 'Labeled this note',
'reported this note': 'Reported this note',
'bookmarked this note': 'Bookmarked this note',
'pinned this note': 'Pinned this note',
'listed this note': 'Listed this note',
'bookmark set reference': 'Bookmark set includes this note',
'curated this note': 'Curated this note',
'badge award for this note': 'Badge award for this note',
'referenced this note': 'Referenced this note',
'Report events heading': 'Moderation reports',
'voted in your poll': '당신의 투표에 참여했습니다', 'voted in your poll': '당신의 투표에 참여했습니다',
'reacted to your note': '당신의 노트에 반응했습니다', 'reacted to your note': '당신의 노트에 반응했습니다',
'boosted your note': '당신의 노트를 부스트했습니다', 'boosted your note': '당신의 노트를 부스트했습니다',
@ -727,6 +1012,10 @@ export default {
'Trending on the Default Relays': 'Trending on the Default Relays', 'Trending on the Default Relays': 'Trending on the Default Relays',
'Latest from your follows': 'Latest from your follows', 'Latest from your follows': 'Latest from your follows',
'Latest from our recommended follows': 'Latest from our recommended follows', 'Latest from our recommended follows': 'Latest from our recommended follows',
'Follows latest page title': 'Latest from follows',
'Follows latest page description':
'Recent notes from accounts you follow (or a curated list when not signed in), using their outbox relays merged with your favorites. Expand a row for notes or open the profile from the row.',
'Follows latest nav label': 'Follows latest',
'Loading follow list…': 'Loading follow list…', 'Loading follow list…': 'Loading follow list…',
'Could not load recommended follows': 'Could not load recommended follows', 'Could not load recommended follows': 'Could not load recommended follows',
'Your follow list is empty': 'Your follow list is empty', 'Your follow list is empty': 'Your follow list is empty',
@ -917,6 +1206,8 @@ export default {
'Article exported as AsciiDoc': 'Article exported as AsciiDoc', 'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown', 'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)', 'Article title (optional)': 'Article title (optional)',
articleDTagDefaultHint:
'Optional. If empty, the d-tag defaults to a type-specific prefix plus a Unix timestamp (seconds), e.g. longform-article-…, wiki-article-…, wiki-markdown-…, publication-content-….',
Audio: 'Audio', Audio: 'Audio',
Author: 'Author', Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups', 'Author is required for reading groups': 'Author is required for reading groups',
@ -979,6 +1270,7 @@ export default {
'Create New Thread': 'Create New Thread', 'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll', 'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread', 'Create Thread': 'Create Thread',
composeModeKind1: 'Short note (kind 1) — turn off other compose types',
'Create a Spell': 'Create a Spell', 'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...', 'Creating...': 'Creating...',
'D-Tag': 'D-Tag', 'D-Tag': 'D-Tag',
@ -1089,6 +1381,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1142,6 +1436,7 @@ export default {
'New Internal Citation': 'New Internal Citation', 'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article', 'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll', 'New Poll': 'New Poll',
'New Discussion': 'New Discussion',
'New Prompt Citation': 'New Prompt Citation', 'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message', 'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article', 'New Wiki Article': 'New Wiki Article',
@ -1173,7 +1468,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1182,6 +1478,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1205,6 +1502,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1214,7 +1513,61 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Follow sets',
'Follow sets settings intro':
'NIP-51 follow sets (kind 30000) group people for custom feeds (for example in Spells). Lists are published to your NIP-65 outboxes and profile discovery relays.',
'New follow set': 'New follow set',
'Edit follow set': 'Edit follow set',
'No follow sets yet': 'You have not created any follow sets yet.',
'Follow set saved': 'Follow set saved',
'Follow set deleted': 'Follow set deleted',
'Failed to load follow sets': 'Failed to load follow sets',
members: 'members',
'Optional display title': 'Optional display title',
'List id (d tag)': 'List id (d tag)',
'Follow set d tag hint':
'Stable identifier for this list. It cannot be changed after the first publish.',
'People in this list': 'People in this list',
'Delete follow set?': 'Delete this follow set?',
'Delete follow set confirm':
'This sends a deletion request (kind 5) for the list. Relays that accept it will drop the list; other clients may still show a cached copy until they refresh.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1267,6 +1620,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1277,6 +1631,10 @@ export default {
'Select Media Type': 'Select Media Type', 'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...', 'Select group...': 'Select group...',
'Select relays': 'Select relays', 'Select relays': 'Select relays',
'Publish relay cap hint':
'At most {{max}} relays are contacted per publish. Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted; lower-priority checks are skipped first if you exceed the cap. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Publish relay cap hint with outbox first':
'At most {{max}} relays per publish. Your NIP-65 write relay(s) use {{reservedSlots}} of those slots first (merged ahead of this picker; they may also appear checked below). Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Select the group where you want to create this discussion.': 'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.', 'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...', 'Select topic...': 'Select topic...',
@ -1321,6 +1679,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1430,6 +1796,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

395
src/i18n/locales/pl.ts

@ -7,6 +7,18 @@ export default {
Home: 'Strona Główna', Home: 'Strona Główna',
Feed: 'Feed', Feed: 'Feed',
'Favorite Relays': 'Ulubione transmitery', 'Favorite Relays': 'Ulubione transmitery',
'Relay pulse': 'Relay pulse',
'Relay pulse empty': 'Quiet on your relays in the last hour.',
'Relay pulse follows': 'Following ({{count}})',
'Relay pulse others': 'Others ({{count}})',
'Relay pulse updated': 'Updated {{relative}}',
'Relay pulse active npubs': 'Active npubs',
'Relay pulse active npubs hint':
'Kind 0 profiles for pubkeys seen on your favorite relays in the last hour (same sample as Relay pulse).',
'Relay pulse drawer following': 'Following',
'Relay pulse drawer others': 'Others',
'Relay pulse drawer no profiles': 'No kind 0 profiles loaded for this sample yet.',
'See the newest notes from your follows': 'See the newest notes from your follows',
'All favorite relays': 'Wszystkie ulubione transmitery', 'All favorite relays': 'Wszystkie ulubione transmitery',
'Pinned note': 'Pinned note', 'Pinned note': 'Pinned note',
'Relay settings': 'Ustawienia transmiterów', 'Relay settings': 'Ustawienia transmiterów',
@ -14,11 +26,14 @@ export default {
'Account menu': 'Account menu', 'Account menu': 'Account menu',
SidebarRelays: 'Transmitery', SidebarRelays: 'Transmitery',
Refresh: 'Odśwież', Refresh: 'Odśwież',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: 'Twój Profil', Profile: 'Twój Profil',
Logout: 'Wyloguj', Logout: 'Wyloguj',
Following: 'Obserwowani', Following: 'Obserwowani',
followings: 'niżej wymienionych', followings: 'niżej wymienionych',
boosted: 'zboostował', boosted: 'zboostował',
'Boosted by:': 'Boosted by:',
'just now': 'teraz', 'just now': 'teraz',
'n minutes ago': '{{n}} m', 'n minutes ago': '{{n}} m',
'n m': '{{n}}m', 'n m': '{{n}}m',
@ -85,6 +100,7 @@ export default {
"username's used relays": '{{username}} użył transmiterów', "username's used relays": '{{username}} użył transmiterów',
"username's muted": 'Zablokowani przez {{username}} ', "username's muted": 'Zablokowani przez {{username}} ',
Login: 'Logowanie', Login: 'Logowanie',
downloadDesktopApp: 'Download app',
'Please log in to view notifications.': 'Please log in to view notifications.', 'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': 'Obserwujący', 'Follows you': 'Obserwujący',
'Relay Settings': 'Ustawienia transmiterów', 'Relay Settings': 'Ustawienia transmiterów',
@ -160,10 +176,50 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud',
'Read-aloud idle': 'Idle',
'Preparing read-aloud…': 'Preparing read-aloud…',
'Requesting audio…': 'Requesting audio…',
'Loading audio…': 'Loading audio…',
Playing: 'Playing',
Paused: 'Paused',
'Read-aloud finished': 'Finished',
'Read-aloud error': 'Error',
'TTS endpoint': 'TTS endpoint',
'Using browser speech synthesis': 'Using browser speech synthesis',
'Read-aloud section progress': 'Section {{current}} of {{total}}',
'Request sent': 'Request sent',
'Response received': 'Response received',
'Playback started': 'Playback started',
Characters: 'Characters',
Pause: 'Pause',
Play: 'Play',
Stop: 'Stop',
'Read-aloud sections': 'Read-aloud sections',
'Read-aloud overall progress': 'Overall progress',
'Read-aloud section done': 'Section {{index}}: finished',
'Read-aloud section pending': 'Section {{index}}: not started yet',
'Read-aloud section fetching': 'Section {{index}}: requesting audio',
'Read-aloud section preparing audio': 'Section {{index}}: loading audio',
'Read-aloud section playing': 'Section {{index}}: playing',
'Read-aloud section paused': 'Section {{index}}: paused',
'Read-aloud legend fetching': 'Requesting audio for this section from the server…',
'Read-aloud legend buffering': 'Decoding audio for this section…',
'Read-aloud legend playing': 'Playing this section.',
'Read-aloud legend paused': 'Playback paused.',
'Read-aloud Piper fallback notice':
'Server voice (Piper) could not be used. Playing with your browser voice instead.',
'Read-aloud Piper fallback detail label': 'Piper error',
'Read-aloud Piper status region': 'Piper text-to-speech status',
'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
"You're invited to a scheduled video call.": "You're invited to a scheduled video call.", "You're invited to a scheduled video call.": "You're invited to a scheduled video call.",
@ -276,16 +332,26 @@ export default {
'Upload Image': 'Upload Image', 'Upload Image': 'Upload Image',
'Insert emoji': 'Insert emoji', 'Insert emoji': 'Insert emoji',
'Insert GIF': 'Insert GIF', 'Insert GIF': 'Insert GIF',
'Insert meme': 'Insert meme',
'Search GIFs': 'Search GIFs', 'Search GIFs': 'Search GIFs',
'Search memes': 'Search memes',
'Choose a GIF': 'Choose a GIF', 'Choose a GIF': 'Choose a GIF',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs', 'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs',
'Add your own GIFs': 'Add your own GIFs', 'Add your own GIFs': 'Add your own GIFs',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Description (optional, for search)', 'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up', 'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Uploading...', '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.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} is not a GIF file', '{{name}} is not a GIF file': '{{name}} is not a GIF file',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': 'O & Z', 'R & W': 'O & Z',
Read: 'Odczyt', Read: 'Odczyt',
Write: 'Zapis', Write: 'Zapis',
@ -335,6 +401,9 @@ export default {
'Calculate optimal read relays': 'Obliczanie optymalnego odczytu transmiterów', 'Calculate optimal read relays': 'Obliczanie optymalnego odczytu transmiterów',
'Login to set': 'Zaloguj się', 'Login to set': 'Zaloguj się',
'Please login to view following feed': 'Zaloguj się, aby wyświetlić poniższy wpis', 'Please login to view following feed': 'Zaloguj się, aby wyświetlić poniższy wpis',
'Follow set': 'Follow set',
'Follow set feed empty':
'This NIP-51 list is empty, was not found, or relays could not load it yet.',
'Send only to r': 'Wyślij tylko do {{r}}', 'Send only to r': 'Wyślij tylko do {{r}}',
'Send only to these relays': 'Wyślij tylko do tych transmiterów', 'Send only to these relays': 'Wyślij tylko do tych transmiterów',
Explore: 'Transmitery', Explore: 'Transmitery',
@ -372,6 +441,43 @@ export default {
Topics: 'Topics', Topics: 'Topics',
'Open in a': 'Otwórz w {{a}}', 'Open in a': 'Otwórz w {{a}}',
'Cannot handle event of kind k': 'Nie można obsłużyć zdarzenia typu {{k}}', 'Cannot handle event of kind k': 'Nie można obsłużyć zdarzenia typu {{k}}',
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Reference tags (e, p, q, a)',
'Starred spells': 'Starred spells',
'Spell star add title': 'Star spell (adds to your Nostr bookmarks)',
'Spell star remove title': 'Unstar spell (removes from your Nostr bookmarks)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'reacted to this note.',
'Notification discussion upvote summary': 'upvoted in this discussion.',
'Notification discussion downvote summary': 'downvoted in this discussion.',
'Notification boost summary': 'Boosted this note',
'Notification boost detail': 'The preview above is the original post.',
'Notification poll vote summary': 'Voted on the poll above.',
'Notification poll vote options count': '{{count}} option(s) selected',
'Jumble Imwald synthetic event': 'Jumble Imwald synthetic event',
'+ Add a URL to this list': 'Add a URL to this list',
'Add a web URL': 'Add a web URL',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Open any https page in the side panel to reply, react, and discuss on Nostr.',
'Enter a valid http(s) URL': 'Enter a valid http(s) URL',
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.':
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.',
'Open in browser': 'Open in browser',
'Web page': 'Web page',
Open: 'Open',
'Sorry! The note cannot be found 😔': 'Sorry! The note cannot be found 😔', 'Sorry! The note cannot be found 😔': 'Sorry! The note cannot be found 😔',
'This user has been muted': 'Ten użytkownik został wyciszony', 'This user has been muted': 'Ten użytkownik został wyciszony',
Wallet: 'Portfel', Wallet: 'Portfel',
@ -389,6 +495,9 @@ export default {
All: 'Wszystkie', All: 'Wszystkie',
Reactions: 'Odzewy', Reactions: 'Odzewy',
Zaps: 'Zapy', Zaps: 'Zapy',
Boosts: 'Boosty',
Badges: 'Badges',
Reports: 'Reports',
'Enjoying Jumble?': 'Podoba ci się Jumble?', 'Enjoying Jumble?': 'Podoba ci się Jumble?',
'Your donation helps me maintain Jumble and make it better! 😊': 'Your donation helps me maintain Jumble and make it better! 😊':
'Twoja darowizna pomoże mi utrzymać i ulepszać Jumble! 😊', 'Twoja darowizna pomoże mi utrzymać i ulepszać Jumble! 😊',
@ -432,6 +541,11 @@ export default {
'no more relays': 'brak kolejnych transmiterów', 'no more relays': 'brak kolejnych transmiterów',
'Favorited by': 'Ulubione przez', 'Favorited by': 'Ulubione przez',
'Post settings': 'Ustawienia publikacji', 'Post settings': 'Ustawienia publikacji',
'Publishing feedback': 'Publishing feedback',
'Publish success toasts': 'Publish success toasts',
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.':
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.',
'Publish successful': 'Publish successful',
'Media upload service': 'Usługa przesyłania mediów', 'Media upload service': 'Usługa przesyłania mediów',
'Choose a relay': 'Wybierz transmiter', 'Choose a relay': 'Wybierz transmiter',
'no relays found': 'Nie znaleziono transmiterów', 'no relays found': 'Nie znaleziono transmiterów',
@ -445,7 +559,15 @@ export default {
Bookmarks: 'Zakładki', Bookmarks: 'Zakładki',
'Follow Packs': 'Follow Packs', 'Follow Packs': 'Follow Packs',
'Follow Pack': 'Follow Pack', 'Follow Pack': 'Follow Pack',
'Follow pack by': 'by',
'In Follow Packs': 'In Follow Packs', 'In Follow Packs': 'In Follow Packs',
'Badge details': 'Badge details',
'Issued by': 'Issued by',
'Other recipients': 'Other recipients',
'No other recipients found': 'No other recipients found',
'Recipients could not be loaded': 'Recipients could not be loaded',
'View award': 'View award',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Please log in to follow', 'Please log in to follow': 'Please log in to follow',
'Following All': 'Following All', 'Following All': 'Following All',
'Followed {{count}} users': 'Followed {{count}} users', 'Followed {{count}} users': 'Followed {{count}} users',
@ -460,11 +582,26 @@ export default {
Autoplay: 'Autoodtwarzanie', Autoplay: 'Autoodtwarzanie',
'Enable video autoplay on this device': 'Enable video autoplay on this device':
'Włącz automatyczne odtwarzanie wideo na tym urządzeniu', 'Włącz automatyczne odtwarzanie wideo na tym urządzeniu',
'liveActivities.heading': 'Live now',
'liveActivities.regionLabel': 'Live spaces and streams',
'liveActivities.fromFollow': 'From someone you follow',
'liveActivities.goToSlide': 'Show live item {{n}}',
'liveActivities.settingsToggle': 'Live activities banner',
'liveActivities.settingsHint':
'Shows NIP-53 live rooms (audio/video spaces) from your relays. Updates on a quarter-hour schedule and when the app finishes its initial session warm-up.',
'Add random relays to every publish': 'Random relays in publish list', 'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description': '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.', '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_local: 'Local',
relayType_relay_list: 'Relay list', relayType_relay_list: 'Relay list',
relayType_http_relay_list: 'HTTP',
'HTTP relays': 'HTTP relays',
httpRelaysDescription:
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -484,9 +621,34 @@ export default {
'Session relays scored random hint': '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.', '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)', 'Session relays all striked': 'All striked relays (any source)',
'Session relays clear strike': 'Allow again',
'Session relays clear strike hint':
'Remove this relay from the session block list; it will be used again until new connection failures.',
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': 'Wklej lub upuść pliki multimedialne, aby przesłać', 'Paste or drop media files to upload': 'Wklej lub upuść pliki multimedialne, aby przesłać',
Preview: 'Podgląd', Preview: 'Podgląd',
'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?': 'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?':
@ -526,6 +688,11 @@ export default {
Pay: 'Zapłać', Pay: 'Zapłać',
interactions: 'Interakcje', interactions: 'Interakcje',
notifications: 'Powiadomienia', notifications: 'Powiadomienia',
notificationsViewAsAccount: 'View as',
notificationsViewAsAccountAria:
'Switch stored account. Notifications, replies, zaps, reactions, and boosts use this account.',
notificationsSwitchAccountFailed:
'Could not switch account. Check your signer, password, or extension and try again.',
'Show untrusted {type}': 'Pokaż nieznane {{type}}', 'Show untrusted {type}': 'Pokaż nieznane {{type}}',
'Hide untrusted {type}': 'Ukryj nieznane {{type}}', 'Hide untrusted {type}': 'Ukryj nieznane {{type}}',
'Currently hiding {type} from untrusted users.': 'Currently hiding {type} from untrusted users.':
@ -579,8 +746,41 @@ export default {
'Adresy URL transmiterów (opcjonalne, oddzielone przecinkami)', 'Adresy URL transmiterów (opcjonalne, oddzielone przecinkami)',
'Remove poll': 'Usuń ankietę', 'Remove poll': 'Usuń ankietę',
'Refresh results': 'Odśwież wyniki', 'Refresh results': 'Odśwież wyniki',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: 'Ankieta', Poll: 'Ankieta',
Media: 'media', Media: 'media',
'Articles and Publications': 'Articles and Publications',
'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
'No subscribed interests yet.': 'No subscribed interests yet.':
@ -591,6 +791,10 @@ export default {
'Nothing to load for this feed.': 'Nothing to load for this feed.', 'Nothing to load for this feed.': 'Nothing to load for this feed.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'No posts loaded for this feed. Try refreshing.', 'No posts loaded for this feed. Try refreshing.',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.',
'Per-relay timeline results ({{count}} connections)':
'Per-relay timeline results ({{count}} connections)',
'Republish to ...': 'Przekaż ponownie do ...', 'Republish to ...': 'Przekaż ponownie do ...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -628,7 +832,6 @@ export default {
'No more boosts': 'Brak kolejnych boostów', 'No more boosts': 'Brak kolejnych boostów',
'No boosts yet': 'Brak boostów', 'No boosts yet': 'Brak boostów',
'n more boosts': '{{count}} more boosts', 'n more boosts': '{{count}} more boosts',
Boosts: 'Boosty',
FollowListNotFoundConfirmation: FollowListNotFoundConfirmation:
'Lista obserwowanych nie została znaleziona. Czy chcesz utworzyć nową? Jeśli wcześniej obserwowałeś użytkowników, proszę NIE potwierdzaj, ponieważ ta operacja spowoduje utratę poprzedniej listy obserwowanych.', 'Lista obserwowanych nie została znaleziona. Czy chcesz utworzyć nową? Jeśli wcześniej obserwowałeś użytkowników, proszę NIE potwierdzaj, ponieważ ta operacja spowoduje utratę poprzedniej listy obserwowanych.',
MuteListNotFoundConfirmation: MuteListNotFoundConfirmation:
@ -658,12 +861,45 @@ export default {
Highlights: 'Wyróżnienia', Highlights: 'Wyróżnienia',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: 'Ankiety', Polls: 'Ankiety',
'Zap polls': 'Zap polls',
'Voice Posts': 'Posty głosowe', 'Voice Posts': 'Posty głosowe',
'Photo Posts': 'Posty ze zdjęciami', 'Photo Posts': 'Posty ze zdjęciami',
'Video Posts': 'Posty wideo', 'Video Posts': 'Posty wideo',
'Git repositories': 'Git repositories',
'Git issues': 'Git issues',
'Git releases': 'Git releases',
'Git Republic repository': 'Git Republic repository',
'Git Republic issue': 'Git Republic issue',
'Git Republic release': 'Git Republic release',
'Git Republic event': 'Git Republic event',
'Git Republic': 'Git Republic',
'Open in Git Republic': 'Open in Git Republic',
'Pre-release': 'Pre-release',
Draft: 'Draft',
'Repository release': 'Repository release',
'New Repository Release': 'New Repository Release',
'Release notes use the editor below (optional).':
'Release notes use the editor below (optional).',
'Repository owner (npub or hex)': 'Repository owner (npub or hex)',
'Repository id (d-tag)': 'Repository id (d-tag)',
'Git tag name': 'Git tag name',
'Tag target (40-char commit hash)': 'Tag target (40-character commit hash)',
'40-character hex SHA-1': '40-character hex SHA-1',
'Release title': 'Release title',
'Download URL': 'Download URL',
'Draft release': 'Draft release',
'Fill repository release fields': 'Fill in all required repository release fields.',
'Invalid repository owner pubkey': 'Invalid repository owner (use npub or 64-char hex).',
'Citations require private relays (NIP-65).':
'Citations require private outbox relays (NIP-65).',
'Select All': 'Zaznacz wszystko', 'Select All': 'Zaznacz wszystko',
'Clear All': 'Wyczyść wszystko', 'Clear All': 'Wyczyść wszystko',
'Set as default filter': 'Ustaw jako domyślny filtr', 'Set as default filter': 'Ustaw jako domyślny filtr',
'Use filter': 'Use filter',
'See all events': 'See all events',
'See all events hint':
'Feed requests omit kind filters and every kind is shown (still subject to relay limits and other feed rules). For testing new event kinds.',
'Use filter hint': 'Only the kinds you select below are requested and shown.',
Apply: 'Zastosuj', Apply: 'Zastosuj',
Reset: 'Resetuj', Reset: 'Resetuj',
'Share something on this Relay': 'Udostępnij coś na tym transmiterze', 'Share something on this Relay': 'Udostępnij coś na tym transmiterze',
@ -675,8 +911,56 @@ export default {
'Hide content mentioning muted users': 'Ukryj treści wspominające wyciszonych użytkowników', 'Hide content mentioning muted users': 'Ukryj treści wspominające wyciszonych użytkowników',
'This note mentions a user you muted': 'Ten wpis wspomina użytkownika, którego wyciszyłeś', 'This note mentions a user you muted': 'Ten wpis wspomina użytkownika, którego wyciszyłeś',
Filter: 'Filtr', Filter: 'Filtr',
'Feed filter': 'Feed filter',
'Search loaded posts': 'Search loaded posts',
'Filter loaded posts placeholder': 'Filter by text in content or tags…',
'Feed filter author': 'Author',
'Feed filter author everyone': 'From everyone',
'Feed filter author me': 'Only from me',
'Feed filter author npub': 'From user (npub or hex)',
'Feed filter author npub from prefix': 'from:',
'Feed filter author npub placeholder': 'npub1… or 64-char hex',
'Feed filter author me needs login': 'Log in to filter by your pubkey',
'Within the last': 'Within the last',
'Time unit': 'Time unit',
Minutes: 'Minutes',
Days: 'Days',
Weeks: 'Weeks',
Months: 'Months',
Years: 'Years',
'Feed filter client-side hint':
'Filters only apply to posts already loaded; relays are not queried again.',
'Feed full search': 'Perform full search',
'Feed full search running': 'Searching…',
'Feed full search clear': 'Clear',
'Feed full search active hint':
'Showing relay search results. Clear to return to the live feed.',
'Feed full search need constraint':
'Add search text, an author filter, or a time range before searching relays.',
'Feed full search invalid feed': 'This feed cannot run a relay search.',
'Feed full search failed': 'Relay search failed. Try again.',
'Feed full search empty': 'No matching posts were found on the queried relays.',
'No loaded posts match your filters.': 'No loaded posts match your filters.',
'mentioned you in a note': 'wspomniał o tobie w notatce', 'mentioned you in a note': 'wspomniał o tobie w notatce',
'quoted your note': 'zacytował twoją notatkę', 'quoted your note': 'zacytował twoją notatkę',
'quoted this note': 'Quoted this note',
'highlighted this note': 'Highlighted this note',
'cited in article': 'Cited in article',
'Thread backlinks heading': 'Also quoting this note',
'Thread backlinks primary section': 'Quotes, highlights & citations',
'Thread backlinks bookmarks section': 'Bookmarks',
'Thread backlinks lists section': 'Lists & collections',
'View full note and thread': 'View full note and thread',
'labeled this note': 'Labeled this note',
'reported this note': 'Reported this note',
'bookmarked this note': 'Bookmarked this note',
'pinned this note': 'Pinned this note',
'listed this note': 'Listed this note',
'bookmark set reference': 'Bookmark set includes this note',
'curated this note': 'Curated this note',
'badge award for this note': 'Badge award for this note',
'referenced this note': 'Referenced this note',
'Report events heading': 'Moderation reports',
'voted in your poll': 'zagłosował w twojej ankiecie', 'voted in your poll': 'zagłosował w twojej ankiecie',
'reacted to your note': 'zareagował na twoją notatkę', 'reacted to your note': 'zareagował na twoją notatkę',
'boosted your note': 'zboostował twoją notatkę', 'boosted your note': 'zboostował twoją notatkę',
@ -733,6 +1017,10 @@ export default {
'Trending on the Default Relays': 'Trending on the Default Relays', 'Trending on the Default Relays': 'Trending on the Default Relays',
'Latest from your follows': 'Latest from your follows', 'Latest from your follows': 'Latest from your follows',
'Latest from our recommended follows': 'Latest from our recommended follows', 'Latest from our recommended follows': 'Latest from our recommended follows',
'Follows latest page title': 'Latest from follows',
'Follows latest page description':
'Recent notes from accounts you follow (or a curated list when not signed in), using their outbox relays merged with your favorites. Expand a row for notes or open the profile from the row.',
'Follows latest nav label': 'Follows latest',
'Loading follow list…': 'Loading follow list…', 'Loading follow list…': 'Loading follow list…',
'Could not load recommended follows': 'Could not load recommended follows', 'Could not load recommended follows': 'Could not load recommended follows',
'Your follow list is empty': 'Your follow list is empty', 'Your follow list is empty': 'Your follow list is empty',
@ -923,6 +1211,8 @@ export default {
'Article exported as AsciiDoc': 'Article exported as AsciiDoc', 'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown', 'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)', 'Article title (optional)': 'Article title (optional)',
articleDTagDefaultHint:
'Optional. If empty, the d-tag defaults to a type-specific prefix plus a Unix timestamp (seconds), e.g. longform-article-…, wiki-article-…, wiki-markdown-…, publication-content-….',
Audio: 'Audio', Audio: 'Audio',
Author: 'Author', Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups', 'Author is required for reading groups': 'Author is required for reading groups',
@ -985,6 +1275,7 @@ export default {
'Create New Thread': 'Create New Thread', 'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll', 'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread', 'Create Thread': 'Create Thread',
composeModeKind1: 'Short note (kind 1) — turn off other compose types',
'Create a Spell': 'Create a Spell', 'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...', 'Creating...': 'Creating...',
'D-Tag': 'D-Tag', 'D-Tag': 'D-Tag',
@ -1095,6 +1386,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1148,6 +1441,7 @@ export default {
'New Internal Citation': 'New Internal Citation', 'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article', 'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll', 'New Poll': 'New Poll',
'New Discussion': 'New Discussion',
'New Prompt Citation': 'New Prompt Citation', 'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message', 'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article', 'New Wiki Article': 'New Wiki Article',
@ -1179,7 +1473,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1188,6 +1483,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1211,6 +1507,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1220,7 +1518,61 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Follow sets',
'Follow sets settings intro':
'NIP-51 follow sets (kind 30000) group people for custom feeds (for example in Spells). Lists are published to your NIP-65 outboxes and profile discovery relays.',
'New follow set': 'New follow set',
'Edit follow set': 'Edit follow set',
'No follow sets yet': 'You have not created any follow sets yet.',
'Follow set saved': 'Follow set saved',
'Follow set deleted': 'Follow set deleted',
'Failed to load follow sets': 'Failed to load follow sets',
members: 'members',
'Optional display title': 'Optional display title',
'List id (d tag)': 'List id (d tag)',
'Follow set d tag hint':
'Stable identifier for this list. It cannot be changed after the first publish.',
'People in this list': 'People in this list',
'Delete follow set?': 'Delete this follow set?',
'Delete follow set confirm':
'This sends a deletion request (kind 5) for the list. Relays that accept it will drop the list; other clients may still show a cached copy until they refresh.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1273,6 +1625,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1283,6 +1636,10 @@ export default {
'Select Media Type': 'Select Media Type', 'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...', 'Select group...': 'Select group...',
'Select relays': 'Select relays', 'Select relays': 'Select relays',
'Publish relay cap hint':
'At most {{max}} relays are contacted per publish. Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted; lower-priority checks are skipped first if you exceed the cap. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Publish relay cap hint with outbox first':
'At most {{max}} relays per publish. Your NIP-65 write relay(s) use {{reservedSlots}} of those slots first (merged ahead of this picker; they may also appear checked below). Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Select the group where you want to create this discussion.': 'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.', 'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...', 'Select topic...': 'Select topic...',
@ -1327,6 +1684,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1436,6 +1801,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

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

@ -7,6 +7,18 @@ export default {
Home: 'Início', Home: 'Início',
Feed: 'Feed', Feed: 'Feed',
'Favorite Relays': 'Relays favoritos', 'Favorite Relays': 'Relays favoritos',
'Relay pulse': 'Relay pulse',
'Relay pulse empty': 'Quiet on your relays in the last hour.',
'Relay pulse follows': 'Following ({{count}})',
'Relay pulse others': 'Others ({{count}})',
'Relay pulse updated': 'Updated {{relative}}',
'Relay pulse active npubs': 'Active npubs',
'Relay pulse active npubs hint':
'Kind 0 profiles for pubkeys seen on your favorite relays in the last hour (same sample as Relay pulse).',
'Relay pulse drawer following': 'Following',
'Relay pulse drawer others': 'Others',
'Relay pulse drawer no profiles': 'No kind 0 profiles loaded for this sample yet.',
'See the newest notes from your follows': 'See the newest notes from your follows',
'All favorite relays': 'Todos os relays favoritos', 'All favorite relays': 'Todos os relays favoritos',
'Pinned note': 'Pinned note', 'Pinned note': 'Pinned note',
'Relay settings': 'Configurações de relay', 'Relay settings': 'Configurações de relay',
@ -14,11 +26,14 @@ export default {
'Account menu': 'Account menu', 'Account menu': 'Account menu',
SidebarRelays: 'Relays', SidebarRelays: 'Relays',
Refresh: 'Atualizar', Refresh: 'Atualizar',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: 'Perfil', Profile: 'Perfil',
Logout: 'Sair', Logout: 'Sair',
Following: 'Seguindo', Following: 'Seguindo',
followings: 'Seguidos', followings: 'Seguidos',
boosted: 'deu boost', boosted: 'deu boost',
'Boosted by:': 'Boosted by:',
'just now': 'agora mesmo', 'just now': 'agora mesmo',
'n minutes ago': '{{n}} minutos atrás', 'n minutes ago': '{{n}} minutos atrás',
'n m': '{{n}}m', 'n m': '{{n}}m',
@ -85,6 +100,7 @@ export default {
"username's used relays": 'relays usados por {{username}}', "username's used relays": 'relays usados por {{username}}',
"username's muted": '{{username}} silenciado', "username's muted": '{{username}} silenciado',
Login: 'Entrar', Login: 'Entrar',
downloadDesktopApp: 'Download app',
'Please log in to view notifications.': 'Please log in to view notifications.', 'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': 'Segue você', 'Follows you': 'Segue você',
'Relay Settings': 'Configurações de relay', 'Relay Settings': 'Configurações de relay',
@ -160,10 +176,50 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud',
'Read-aloud idle': 'Idle',
'Preparing read-aloud…': 'Preparing read-aloud…',
'Requesting audio…': 'Requesting audio…',
'Loading audio…': 'Loading audio…',
Playing: 'Playing',
Paused: 'Paused',
'Read-aloud finished': 'Finished',
'Read-aloud error': 'Error',
'TTS endpoint': 'TTS endpoint',
'Using browser speech synthesis': 'Using browser speech synthesis',
'Read-aloud section progress': 'Section {{current}} of {{total}}',
'Request sent': 'Request sent',
'Response received': 'Response received',
'Playback started': 'Playback started',
Characters: 'Characters',
Pause: 'Pause',
Play: 'Play',
Stop: 'Stop',
'Read-aloud sections': 'Read-aloud sections',
'Read-aloud overall progress': 'Overall progress',
'Read-aloud section done': 'Section {{index}}: finished',
'Read-aloud section pending': 'Section {{index}}: not started yet',
'Read-aloud section fetching': 'Section {{index}}: requesting audio',
'Read-aloud section preparing audio': 'Section {{index}}: loading audio',
'Read-aloud section playing': 'Section {{index}}: playing',
'Read-aloud section paused': 'Section {{index}}: paused',
'Read-aloud legend fetching': 'Requesting audio for this section from the server…',
'Read-aloud legend buffering': 'Decoding audio for this section…',
'Read-aloud legend playing': 'Playing this section.',
'Read-aloud legend paused': 'Playback paused.',
'Read-aloud Piper fallback notice':
'Server voice (Piper) could not be used. Playing with your browser voice instead.',
'Read-aloud Piper fallback detail label': 'Piper error',
'Read-aloud Piper status region': 'Piper text-to-speech status',
'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
"You're invited to a scheduled video call.": "You're invited to a scheduled video call.", "You're invited to a scheduled video call.": "You're invited to a scheduled video call.",
@ -276,16 +332,26 @@ export default {
'Upload Image': 'Upload Image', 'Upload Image': 'Upload Image',
'Insert emoji': 'Insert emoji', 'Insert emoji': 'Insert emoji',
'Insert GIF': 'Insert GIF', 'Insert GIF': 'Insert GIF',
'Insert meme': 'Insert meme',
'Search GIFs': 'Search GIFs', 'Search GIFs': 'Search GIFs',
'Search memes': 'Search memes',
'Choose a GIF': 'Choose a GIF', 'Choose a GIF': 'Choose a GIF',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs', 'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs',
'Add your own GIFs': 'Add your own GIFs', 'Add your own GIFs': 'Add your own GIFs',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Description (optional, for search)', 'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up', 'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Uploading...', '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.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} is not a GIF file', '{{name}} is not a GIF file': '{{name}} is not a GIF file',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': 'Leitura & Escrita', 'R & W': 'Leitura & Escrita',
Read: 'Leitura', Read: 'Leitura',
Write: 'Escrita', Write: 'Escrita',
@ -337,6 +403,9 @@ export default {
'Calculate optimal read relays': 'Calcular relays de leitura ideais', 'Calculate optimal read relays': 'Calcular relays de leitura ideais',
'Login to set': 'Entrar no conjunto', 'Login to set': 'Entrar no conjunto',
'Please login to view following feed': 'Por favor, faça login para ver o feed de seguidores', 'Please login to view following feed': 'Por favor, faça login para ver o feed de seguidores',
'Follow set': 'Follow set',
'Follow set feed empty':
'This NIP-51 list is empty, was not found, or relays could not load it yet.',
'Send only to r': 'Enviar apenas para {{r}}', 'Send only to r': 'Enviar apenas para {{r}}',
'Send only to these relays': 'Enviar apenas para estes relays', 'Send only to these relays': 'Enviar apenas para estes relays',
Explore: 'Explorar', Explore: 'Explorar',
@ -374,6 +443,43 @@ export default {
Topics: 'Topics', Topics: 'Topics',
'Open in a': 'Abrir em {{a}}', 'Open in a': 'Abrir em {{a}}',
'Cannot handle event of kind k': 'Não é possível lidar com o evento do tipo {{k}}', 'Cannot handle event of kind k': 'Não é possível lidar com o evento do tipo {{k}}',
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Reference tags (e, p, q, a)',
'Starred spells': 'Starred spells',
'Spell star add title': 'Star spell (adds to your Nostr bookmarks)',
'Spell star remove title': 'Unstar spell (removes from your Nostr bookmarks)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'reacted to this note.',
'Notification discussion upvote summary': 'upvoted in this discussion.',
'Notification discussion downvote summary': 'downvoted in this discussion.',
'Notification boost summary': 'Boosted this note',
'Notification boost detail': 'The preview above is the original post.',
'Notification poll vote summary': 'Voted on the poll above.',
'Notification poll vote options count': '{{count}} option(s) selected',
'Jumble Imwald synthetic event': 'Jumble Imwald synthetic event',
'+ Add a URL to this list': 'Add a URL to this list',
'Add a web URL': 'Add a web URL',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Open any https page in the side panel to reply, react, and discuss on Nostr.',
'Enter a valid http(s) URL': 'Enter a valid http(s) URL',
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.':
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.',
'Open in browser': 'Open in browser',
'Web page': 'Web page',
Open: 'Open',
'Sorry! The note cannot be found 😔': 'Desculpe! A nota não pode ser encontrada 😔', 'Sorry! The note cannot be found 😔': 'Desculpe! A nota não pode ser encontrada 😔',
'This user has been muted': 'Este usuário foi silenciado', 'This user has been muted': 'Este usuário foi silenciado',
Wallet: 'Carteira', Wallet: 'Carteira',
@ -391,6 +497,9 @@ export default {
All: 'Tudo', All: 'Tudo',
Reactions: 'Reações', Reactions: 'Reações',
Zaps: 'Zaps', Zaps: 'Zaps',
Boosts: 'Boosts',
Badges: 'Badges',
Reports: 'Reports',
'Enjoying Jumble?': 'Gostando do Jumble?', 'Enjoying Jumble?': 'Gostando do Jumble?',
'Your donation helps me maintain Jumble and make it better! 😊': 'Your donation helps me maintain Jumble and make it better! 😊':
'Sua doação me ajuda a manter o Jumble e torná-lo melhor! 😊', 'Sua doação me ajuda a manter o Jumble e torná-lo melhor! 😊',
@ -434,6 +543,11 @@ export default {
'no more relays': 'não há mais relays', 'no more relays': 'não há mais relays',
'Favorited by': 'Favoritado por', 'Favorited by': 'Favoritado por',
'Post settings': 'Ajustes de publicação', 'Post settings': 'Ajustes de publicação',
'Publishing feedback': 'Publishing feedback',
'Publish success toasts': 'Publish success toasts',
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.':
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.',
'Publish successful': 'Publish successful',
'Media upload service': 'Serviço de upload de mídia', 'Media upload service': 'Serviço de upload de mídia',
'Choose a relay': 'Escolher um relay', 'Choose a relay': 'Escolher um relay',
'no relays found': 'nenhum relay encontrado', 'no relays found': 'nenhum relay encontrado',
@ -447,6 +561,15 @@ export default {
Bookmarks: 'Favoritos', Bookmarks: 'Favoritos',
'Follow Packs': 'Follow Packs', 'Follow Packs': 'Follow Packs',
'Follow Pack': 'Follow Pack', 'Follow Pack': 'Follow Pack',
'Follow pack by': 'by',
'In Follow Packs': 'In Follow Packs',
'Badge details': 'Badge details',
'Issued by': 'Issued by',
'Other recipients': 'Other recipients',
'No other recipients found': 'No other recipients found',
'Recipients could not be loaded': 'Recipients could not be loaded',
'View award': 'View award',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Please log in to follow', 'Please log in to follow': 'Please log in to follow',
'Following All': 'Following All', 'Following All': 'Following All',
'Followed {{count}} users': 'Followed {{count}} users', 'Followed {{count}} users': 'Followed {{count}} users',
@ -461,11 +584,26 @@ export default {
Autoplay: 'Reprodução automática', Autoplay: 'Reprodução automática',
'Enable video autoplay on this device': 'Enable video autoplay on this device':
'Habilitar reprodução automática de vídeo neste dispositivo', 'Habilitar reprodução automática de vídeo neste dispositivo',
'liveActivities.heading': 'Live now',
'liveActivities.regionLabel': 'Live spaces and streams',
'liveActivities.fromFollow': 'From someone you follow',
'liveActivities.goToSlide': 'Show live item {{n}}',
'liveActivities.settingsToggle': 'Live activities banner',
'liveActivities.settingsHint':
'Shows NIP-53 live rooms (audio/video spaces) from your relays. Updates on a quarter-hour schedule and when the app finishes its initial session warm-up.',
'Add random relays to every publish': 'Random relays in publish list', 'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description': '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.', '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_local: 'Local',
relayType_relay_list: 'Relay list', relayType_relay_list: 'Relay list',
relayType_http_relay_list: 'HTTP',
'HTTP relays': 'HTTP relays',
httpRelaysDescription:
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -485,9 +623,34 @@ export default {
'Session relays scored random hint': '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.', '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)', 'Session relays all striked': 'All striked relays (any source)',
'Session relays clear strike': 'Allow again',
'Session relays clear strike hint':
'Remove this relay from the session block list; it will be used again until new connection failures.',
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': 'Cole ou arraste arquivos de mídia para fazer upload', 'Paste or drop media files to upload': 'Cole ou arraste arquivos de mídia para fazer upload',
Preview: 'Pré-visualização', Preview: 'Pré-visualização',
'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?': 'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?':
@ -527,6 +690,11 @@ export default {
Pay: 'Pagar', Pay: 'Pagar',
interactions: 'interações', interactions: 'interações',
notifications: 'notificações', notifications: 'notificações',
notificationsViewAsAccount: 'View as',
notificationsViewAsAccountAria:
'Switch stored account. Notifications, replies, zaps, reactions, and boosts use this account.',
notificationsSwitchAccountFailed:
'Could not switch account. Check your signer, password, or extension and try again.',
'Show untrusted {type}': 'Mostrar {{type}} não confiáveis', 'Show untrusted {type}': 'Mostrar {{type}} não confiáveis',
'Hide untrusted {type}': 'Ocultar {{type}} não confiáveis', 'Hide untrusted {type}': 'Ocultar {{type}} não confiáveis',
'Currently hiding {type} from untrusted users.': 'Currently hiding {type} from untrusted users.':
@ -579,8 +747,41 @@ export default {
'Relay URLs (optional, comma-separated)': 'URLs de relay (opcional, separadas por vírgulas)', 'Relay URLs (optional, comma-separated)': 'URLs de relay (opcional, separadas por vírgulas)',
'Remove poll': 'Remover enquete', 'Remove poll': 'Remover enquete',
'Refresh results': 'Atualizar resultados', 'Refresh results': 'Atualizar resultados',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: 'Enquete', Poll: 'Enquete',
Media: 'Mídia', Media: 'Mídia',
'Articles and Publications': 'Articles and Publications',
'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
'No subscribed interests yet.': 'No subscribed interests yet.':
@ -591,6 +792,10 @@ export default {
'Nothing to load for this feed.': 'Nothing to load for this feed.', 'Nothing to load for this feed.': 'Nothing to load for this feed.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'No posts loaded for this feed. Try refreshing.', 'No posts loaded for this feed. Try refreshing.',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.',
'Per-relay timeline results ({{count}} connections)':
'Per-relay timeline results ({{count}} connections)',
'Republish to ...': 'Republicar em ...', 'Republish to ...': 'Republicar em ...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -626,7 +831,6 @@ export default {
'No more boosts': 'Sem mais boosts', 'No more boosts': 'Sem mais boosts',
'No boosts yet': 'Ainda sem boosts', 'No boosts yet': 'Ainda sem boosts',
'n more boosts': '{{count}} more boosts', 'n more boosts': '{{count}} more boosts',
Boosts: 'Boosts',
FollowListNotFoundConfirmation: FollowListNotFoundConfirmation:
'Lista de seguindo não encontrada. Deseja criar uma nova? Se você seguiu usuários antes, por favor NÃO confirme, pois esta operação fará você perder sua lista de seguindo anterior.', 'Lista de seguindo não encontrada. Deseja criar uma nova? Se você seguiu usuários antes, por favor NÃO confirme, pois esta operação fará você perder sua lista de seguindo anterior.',
MuteListNotFoundConfirmation: MuteListNotFoundConfirmation:
@ -656,12 +860,45 @@ export default {
Highlights: 'Marcações', Highlights: 'Marcações',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: 'Enquetes', Polls: 'Enquetes',
'Zap polls': 'Zap polls',
'Voice Posts': 'Áudios', 'Voice Posts': 'Áudios',
'Photo Posts': 'Fotos', 'Photo Posts': 'Fotos',
'Video Posts': 'Vídeos', 'Video Posts': 'Vídeos',
'Git repositories': 'Git repositories',
'Git issues': 'Git issues',
'Git releases': 'Git releases',
'Git Republic repository': 'Git Republic repository',
'Git Republic issue': 'Git Republic issue',
'Git Republic release': 'Git Republic release',
'Git Republic event': 'Git Republic event',
'Git Republic': 'Git Republic',
'Open in Git Republic': 'Open in Git Republic',
'Pre-release': 'Pre-release',
Draft: 'Draft',
'Repository release': 'Repository release',
'New Repository Release': 'New Repository Release',
'Release notes use the editor below (optional).':
'Release notes use the editor below (optional).',
'Repository owner (npub or hex)': 'Repository owner (npub or hex)',
'Repository id (d-tag)': 'Repository id (d-tag)',
'Git tag name': 'Git tag name',
'Tag target (40-char commit hash)': 'Tag target (40-character commit hash)',
'40-character hex SHA-1': '40-character hex SHA-1',
'Release title': 'Release title',
'Download URL': 'Download URL',
'Draft release': 'Draft release',
'Fill repository release fields': 'Fill in all required repository release fields.',
'Invalid repository owner pubkey': 'Invalid repository owner (use npub or 64-char hex).',
'Citations require private relays (NIP-65).':
'Citations require private outbox relays (NIP-65).',
'Select All': 'Selecionar tudo', 'Select All': 'Selecionar tudo',
'Clear All': 'Limpar tudo', 'Clear All': 'Limpar tudo',
'Set as default filter': 'Definir como filtro padrão', 'Set as default filter': 'Definir como filtro padrão',
'Use filter': 'Use filter',
'See all events': 'See all events',
'See all events hint':
'Feed requests omit kind filters and every kind is shown (still subject to relay limits and other feed rules). For testing new event kinds.',
'Use filter hint': 'Only the kinds you select below are requested and shown.',
Apply: 'Aplicar', Apply: 'Aplicar',
Reset: 'Redefinir', Reset: 'Redefinir',
'Share something on this Relay': 'Compartilhe algo neste Relay', 'Share something on this Relay': 'Compartilhe algo neste Relay',
@ -672,8 +909,56 @@ export default {
'Hide content mentioning muted users': 'Ocultar conteúdo que menciona usuários silenciados', 'Hide content mentioning muted users': 'Ocultar conteúdo que menciona usuários silenciados',
'This note mentions a user you muted': 'Esta nota menciona um usuário que você silenciou', 'This note mentions a user you muted': 'Esta nota menciona um usuário que você silenciou',
Filter: 'Filtro', Filter: 'Filtro',
'Feed filter': 'Feed filter',
'Search loaded posts': 'Search loaded posts',
'Filter loaded posts placeholder': 'Filter by text in content or tags…',
'Feed filter author': 'Author',
'Feed filter author everyone': 'From everyone',
'Feed filter author me': 'Only from me',
'Feed filter author npub': 'From user (npub or hex)',
'Feed filter author npub from prefix': 'from:',
'Feed filter author npub placeholder': 'npub1… or 64-char hex',
'Feed filter author me needs login': 'Log in to filter by your pubkey',
'Within the last': 'Within the last',
'Time unit': 'Time unit',
Minutes: 'Minutes',
Days: 'Days',
Weeks: 'Weeks',
Months: 'Months',
Years: 'Years',
'Feed filter client-side hint':
'Filters only apply to posts already loaded; relays are not queried again.',
'Feed full search': 'Perform full search',
'Feed full search running': 'Searching…',
'Feed full search clear': 'Clear',
'Feed full search active hint':
'Showing relay search results. Clear to return to the live feed.',
'Feed full search need constraint':
'Add search text, an author filter, or a time range before searching relays.',
'Feed full search invalid feed': 'This feed cannot run a relay search.',
'Feed full search failed': 'Relay search failed. Try again.',
'Feed full search empty': 'No matching posts were found on the queried relays.',
'No loaded posts match your filters.': 'No loaded posts match your filters.',
'mentioned you in a note': 'mencionou você em uma nota', 'mentioned you in a note': 'mencionou você em uma nota',
'quoted your note': 'citou sua nota', 'quoted your note': 'citou sua nota',
'quoted this note': 'Quoted this note',
'highlighted this note': 'Highlighted this note',
'cited in article': 'Cited in article',
'Thread backlinks heading': 'Also quoting this note',
'Thread backlinks primary section': 'Quotes, highlights & citations',
'Thread backlinks bookmarks section': 'Bookmarks',
'Thread backlinks lists section': 'Lists & collections',
'View full note and thread': 'View full note and thread',
'labeled this note': 'Labeled this note',
'reported this note': 'Reported this note',
'bookmarked this note': 'Bookmarked this note',
'pinned this note': 'Pinned this note',
'listed this note': 'Listed this note',
'bookmark set reference': 'Bookmark set includes this note',
'curated this note': 'Curated this note',
'badge award for this note': 'Badge award for this note',
'referenced this note': 'Referenced this note',
'Report events heading': 'Moderation reports',
'voted in your poll': 'votou na sua enquete', 'voted in your poll': 'votou na sua enquete',
'reacted to your note': 'reagiu à sua nota', 'reacted to your note': 'reagiu à sua nota',
'boosted your note': 'deu boost na sua nota', 'boosted your note': 'deu boost na sua nota',
@ -731,6 +1016,10 @@ export default {
'Trending on the Default Relays': 'Trending on the Default Relays', 'Trending on the Default Relays': 'Trending on the Default Relays',
'Latest from your follows': 'Latest from your follows', 'Latest from your follows': 'Latest from your follows',
'Latest from our recommended follows': 'Latest from our recommended follows', 'Latest from our recommended follows': 'Latest from our recommended follows',
'Follows latest page title': 'Latest from follows',
'Follows latest page description':
'Recent notes from accounts you follow (or a curated list when not signed in), using their outbox relays merged with your favorites. Expand a row for notes or open the profile from the row.',
'Follows latest nav label': 'Follows latest',
'Loading follow list…': 'Loading follow list…', 'Loading follow list…': 'Loading follow list…',
'Could not load recommended follows': 'Could not load recommended follows', 'Could not load recommended follows': 'Could not load recommended follows',
'Your follow list is empty': 'Your follow list is empty', 'Your follow list is empty': 'Your follow list is empty',
@ -921,6 +1210,8 @@ export default {
'Article exported as AsciiDoc': 'Article exported as AsciiDoc', 'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown', 'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)', 'Article title (optional)': 'Article title (optional)',
articleDTagDefaultHint:
'Optional. If empty, the d-tag defaults to a type-specific prefix plus a Unix timestamp (seconds), e.g. longform-article-…, wiki-article-…, wiki-markdown-…, publication-content-….',
Audio: 'Audio', Audio: 'Audio',
Author: 'Author', Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups', 'Author is required for reading groups': 'Author is required for reading groups',
@ -983,6 +1274,7 @@ export default {
'Create New Thread': 'Create New Thread', 'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll', 'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread', 'Create Thread': 'Create Thread',
composeModeKind1: 'Short note (kind 1) — turn off other compose types',
'Create a Spell': 'Create a Spell', 'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...', 'Creating...': 'Creating...',
'D-Tag': 'D-Tag', 'D-Tag': 'D-Tag',
@ -1093,6 +1385,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1146,6 +1440,7 @@ export default {
'New Internal Citation': 'New Internal Citation', 'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article', 'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll', 'New Poll': 'New Poll',
'New Discussion': 'New Discussion',
'New Prompt Citation': 'New Prompt Citation', 'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message', 'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article', 'New Wiki Article': 'New Wiki Article',
@ -1177,7 +1472,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1186,6 +1482,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1209,6 +1506,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1218,7 +1517,61 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Follow sets',
'Follow sets settings intro':
'NIP-51 follow sets (kind 30000) group people for custom feeds (for example in Spells). Lists are published to your NIP-65 outboxes and profile discovery relays.',
'New follow set': 'New follow set',
'Edit follow set': 'Edit follow set',
'No follow sets yet': 'You have not created any follow sets yet.',
'Follow set saved': 'Follow set saved',
'Follow set deleted': 'Follow set deleted',
'Failed to load follow sets': 'Failed to load follow sets',
members: 'members',
'Optional display title': 'Optional display title',
'List id (d tag)': 'List id (d tag)',
'Follow set d tag hint':
'Stable identifier for this list. It cannot be changed after the first publish.',
'People in this list': 'People in this list',
'Delete follow set?': 'Delete this follow set?',
'Delete follow set confirm':
'This sends a deletion request (kind 5) for the list. Relays that accept it will drop the list; other clients may still show a cached copy until they refresh.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1271,6 +1624,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1281,6 +1635,10 @@ export default {
'Select Media Type': 'Select Media Type', 'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...', 'Select group...': 'Select group...',
'Select relays': 'Select relays', 'Select relays': 'Select relays',
'Publish relay cap hint':
'At most {{max}} relays are contacted per publish. Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted; lower-priority checks are skipped first if you exceed the cap. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Publish relay cap hint with outbox first':
'At most {{max}} relays per publish. Your NIP-65 write relay(s) use {{reservedSlots}} of those slots first (merged ahead of this picker; they may also appear checked below). Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Select the group where you want to create this discussion.': 'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.', 'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...', 'Select topic...': 'Select topic...',
@ -1325,6 +1683,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1434,6 +1800,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

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

@ -7,6 +7,18 @@ export default {
Home: 'Início', Home: 'Início',
Feed: 'Feed', Feed: 'Feed',
'Favorite Relays': 'Relés Favoritos', 'Favorite Relays': 'Relés Favoritos',
'Relay pulse': 'Relay pulse',
'Relay pulse empty': 'Quiet on your relays in the last hour.',
'Relay pulse follows': 'Following ({{count}})',
'Relay pulse others': 'Others ({{count}})',
'Relay pulse updated': 'Updated {{relative}}',
'Relay pulse active npubs': 'Active npubs',
'Relay pulse active npubs hint':
'Kind 0 profiles for pubkeys seen on your favorite relays in the last hour (same sample as Relay pulse).',
'Relay pulse drawer following': 'Following',
'Relay pulse drawer others': 'Others',
'Relay pulse drawer no profiles': 'No kind 0 profiles loaded for this sample yet.',
'See the newest notes from your follows': 'See the newest notes from your follows',
'All favorite relays': 'Todos os relés favoritos', 'All favorite relays': 'Todos os relés favoritos',
'Pinned note': 'Pinned note', 'Pinned note': 'Pinned note',
'Relay settings': 'Configurações de Relé', 'Relay settings': 'Configurações de Relé',
@ -14,11 +26,14 @@ export default {
'Account menu': 'Account menu', 'Account menu': 'Account menu',
SidebarRelays: 'Relés', SidebarRelays: 'Relés',
Refresh: 'Atualizar', Refresh: 'Atualizar',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: 'Perfil', Profile: 'Perfil',
Logout: 'Sair', Logout: 'Sair',
Following: 'Seguindo', Following: 'Seguindo',
followings: 'seguidos', followings: 'seguidos',
boosted: 'deu boost', boosted: 'deu boost',
'Boosted by:': 'Boosted by:',
'just now': 'agora mesmo', 'just now': 'agora mesmo',
'n minutes ago': '{{n}} minutos atrás', 'n minutes ago': '{{n}} minutos atrás',
'n m': '{{n}}m', 'n m': '{{n}}m',
@ -85,6 +100,7 @@ export default {
"username's used relays": 'relés usados por {{username}}', "username's used relays": 'relés usados por {{username}}',
"username's muted": '{{username}} silenciado', "username's muted": '{{username}} silenciado',
Login: 'Entrar', Login: 'Entrar',
downloadDesktopApp: 'Download app',
'Please log in to view notifications.': 'Please log in to view notifications.', 'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': 'Segue você', 'Follows you': 'Segue você',
'Relay Settings': 'Configurações de Relé', 'Relay Settings': 'Configurações de Relé',
@ -160,10 +176,50 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud',
'Read-aloud idle': 'Idle',
'Preparing read-aloud…': 'Preparing read-aloud…',
'Requesting audio…': 'Requesting audio…',
'Loading audio…': 'Loading audio…',
Playing: 'Playing',
Paused: 'Paused',
'Read-aloud finished': 'Finished',
'Read-aloud error': 'Error',
'TTS endpoint': 'TTS endpoint',
'Using browser speech synthesis': 'Using browser speech synthesis',
'Read-aloud section progress': 'Section {{current}} of {{total}}',
'Request sent': 'Request sent',
'Response received': 'Response received',
'Playback started': 'Playback started',
Characters: 'Characters',
Pause: 'Pause',
Play: 'Play',
Stop: 'Stop',
'Read-aloud sections': 'Read-aloud sections',
'Read-aloud overall progress': 'Overall progress',
'Read-aloud section done': 'Section {{index}}: finished',
'Read-aloud section pending': 'Section {{index}}: not started yet',
'Read-aloud section fetching': 'Section {{index}}: requesting audio',
'Read-aloud section preparing audio': 'Section {{index}}: loading audio',
'Read-aloud section playing': 'Section {{index}}: playing',
'Read-aloud section paused': 'Section {{index}}: paused',
'Read-aloud legend fetching': 'Requesting audio for this section from the server…',
'Read-aloud legend buffering': 'Decoding audio for this section…',
'Read-aloud legend playing': 'Playing this section.',
'Read-aloud legend paused': 'Playback paused.',
'Read-aloud Piper fallback notice':
'Server voice (Piper) could not be used. Playing with your browser voice instead.',
'Read-aloud Piper fallback detail label': 'Piper error',
'Read-aloud Piper status region': 'Piper text-to-speech status',
'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
"You're invited to a scheduled video call.": "You're invited to a scheduled video call.", "You're invited to a scheduled video call.": "You're invited to a scheduled video call.",
@ -276,16 +332,26 @@ export default {
'Upload Image': 'Upload Image', 'Upload Image': 'Upload Image',
'Insert emoji': 'Insert emoji', 'Insert emoji': 'Insert emoji',
'Insert GIF': 'Insert GIF', 'Insert GIF': 'Insert GIF',
'Insert meme': 'Insert meme',
'Search GIFs': 'Search GIFs', 'Search GIFs': 'Search GIFs',
'Search memes': 'Search memes',
'Choose a GIF': 'Choose a GIF', 'Choose a GIF': 'Choose a GIF',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs', 'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs',
'Add your own GIFs': 'Add your own GIFs', 'Add your own GIFs': 'Add your own GIFs',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Description (optional, for search)', 'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up', 'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Uploading...', '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.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} is not a GIF file', '{{name}} is not a GIF file': '{{name}} is not a GIF file',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': 'Leitura & Escrita', 'R & W': 'Leitura & Escrita',
Read: 'Ler', Read: 'Ler',
Write: 'Escrever', Write: 'Escrever',
@ -337,6 +403,9 @@ export default {
'Calculate optimal read relays': 'Calcular relés de leitura ideais', 'Calculate optimal read relays': 'Calcular relés de leitura ideais',
'Login to set': 'Entrar no conjunto', 'Login to set': 'Entrar no conjunto',
'Please login to view following feed': 'Por favor, faça login para ver o feed de seguidores', 'Please login to view following feed': 'Por favor, faça login para ver o feed de seguidores',
'Follow set': 'Follow set',
'Follow set feed empty':
'This NIP-51 list is empty, was not found, or relays could not load it yet.',
'Send only to r': 'Enviar apenas para {{r}}', 'Send only to r': 'Enviar apenas para {{r}}',
'Send only to these relays': 'Enviar apenas para estes relés', 'Send only to these relays': 'Enviar apenas para estes relés',
Explore: 'Explorar', Explore: 'Explorar',
@ -374,6 +443,43 @@ export default {
Topics: 'Topics', Topics: 'Topics',
'Open in a': 'Abrir em {{a}}', 'Open in a': 'Abrir em {{a}}',
'Cannot handle event of kind k': 'Não é possível lidar com o evento do tipo {{k}}', 'Cannot handle event of kind k': 'Não é possível lidar com o evento do tipo {{k}}',
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Reference tags (e, p, q, a)',
'Starred spells': 'Starred spells',
'Spell star add title': 'Star spell (adds to your Nostr bookmarks)',
'Spell star remove title': 'Unstar spell (removes from your Nostr bookmarks)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'reacted to this note.',
'Notification discussion upvote summary': 'upvoted in this discussion.',
'Notification discussion downvote summary': 'downvoted in this discussion.',
'Notification boost summary': 'Boosted this note',
'Notification boost detail': 'The preview above is the original post.',
'Notification poll vote summary': 'Voted on the poll above.',
'Notification poll vote options count': '{{count}} option(s) selected',
'Jumble Imwald synthetic event': 'Jumble Imwald synthetic event',
'+ Add a URL to this list': 'Add a URL to this list',
'Add a web URL': 'Add a web URL',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Open any https page in the side panel to reply, react, and discuss on Nostr.',
'Enter a valid http(s) URL': 'Enter a valid http(s) URL',
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.':
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.',
'Open in browser': 'Open in browser',
'Web page': 'Web page',
Open: 'Open',
'Sorry! The note cannot be found 😔': 'Desculpe! A nota não pode ser encontrada 😔', 'Sorry! The note cannot be found 😔': 'Desculpe! A nota não pode ser encontrada 😔',
'This user has been muted': 'Este usuário foi silenciado', 'This user has been muted': 'Este usuário foi silenciado',
Wallet: 'Carteira', Wallet: 'Carteira',
@ -391,6 +497,9 @@ export default {
All: 'Tudo', All: 'Tudo',
Reactions: 'Reações', Reactions: 'Reações',
Zaps: 'Zaps', Zaps: 'Zaps',
Boosts: 'Boosts',
Badges: 'Badges',
Reports: 'Reports',
'Enjoying Jumble?': 'Gostando do Jumble?', 'Enjoying Jumble?': 'Gostando do Jumble?',
'Your donation helps me maintain Jumble and make it better! 😊': 'Your donation helps me maintain Jumble and make it better! 😊':
'Sua doação me ajuda a manter o Jumble e torná-lo melhor! 😊', 'Sua doação me ajuda a manter o Jumble e torná-lo melhor! 😊',
@ -434,6 +543,11 @@ export default {
'no more relays': 'não há mais relés', 'no more relays': 'não há mais relés',
'Favorited by': 'Favoritado por', 'Favorited by': 'Favoritado por',
'Post settings': 'Configurações de Postagem', 'Post settings': 'Configurações de Postagem',
'Publishing feedback': 'Publishing feedback',
'Publish success toasts': 'Publish success toasts',
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.':
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.',
'Publish successful': 'Publish successful',
'Media upload service': 'Serviço de Upload de Mídia', 'Media upload service': 'Serviço de Upload de Mídia',
'Choose a relay': 'Escolher um Relé', 'Choose a relay': 'Escolher um Relé',
'no relays found': 'nenhum relé encontrado', 'no relays found': 'nenhum relé encontrado',
@ -447,6 +561,15 @@ export default {
Bookmarks: 'Favoritos', Bookmarks: 'Favoritos',
'Follow Packs': 'Follow Packs', 'Follow Packs': 'Follow Packs',
'Follow Pack': 'Follow Pack', 'Follow Pack': 'Follow Pack',
'Follow pack by': 'by',
'In Follow Packs': 'In Follow Packs',
'Badge details': 'Badge details',
'Issued by': 'Issued by',
'Other recipients': 'Other recipients',
'No other recipients found': 'No other recipients found',
'Recipients could not be loaded': 'Recipients could not be loaded',
'View award': 'View award',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Please log in to follow', 'Please log in to follow': 'Please log in to follow',
'Following All': 'Following All', 'Following All': 'Following All',
'Followed {{count}} users': 'Followed {{count}} users', 'Followed {{count}} users': 'Followed {{count}} users',
@ -461,11 +584,26 @@ export default {
Autoplay: 'Reprodução Automática', Autoplay: 'Reprodução Automática',
'Enable video autoplay on this device': 'Enable video autoplay on this device':
'Habilitar reprodução automática de vídeo neste dispositivo', 'Habilitar reprodução automática de vídeo neste dispositivo',
'liveActivities.heading': 'Live now',
'liveActivities.regionLabel': 'Live spaces and streams',
'liveActivities.fromFollow': 'From someone you follow',
'liveActivities.goToSlide': 'Show live item {{n}}',
'liveActivities.settingsToggle': 'Live activities banner',
'liveActivities.settingsHint':
'Shows NIP-53 live rooms (audio/video spaces) from your relays. Updates on a quarter-hour schedule and when the app finishes its initial session warm-up.',
'Add random relays to every publish': 'Random relays in publish list', 'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description': '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.', '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_local: 'Local',
relayType_relay_list: 'Relay list', relayType_relay_list: 'Relay list',
relayType_http_relay_list: 'HTTP',
'HTTP relays': 'HTTP relays',
httpRelaysDescription:
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -485,9 +623,34 @@ export default {
'Session relays scored random hint': '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.', '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)', 'Session relays all striked': 'All striked relays (any source)',
'Session relays clear strike': 'Allow again',
'Session relays clear strike hint':
'Remove this relay from the session block list; it will be used again until new connection failures.',
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': 'Cole ou solte arquivos de mídia para fazer upload', 'Paste or drop media files to upload': 'Cole ou solte arquivos de mídia para fazer upload',
Preview: 'Pré-visualização', Preview: 'Pré-visualização',
'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?': 'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?':
@ -527,6 +690,11 @@ export default {
Pay: 'Pagar', Pay: 'Pagar',
interactions: 'interações', interactions: 'interações',
notifications: 'notificações', notifications: 'notificações',
notificationsViewAsAccount: 'View as',
notificationsViewAsAccountAria:
'Switch stored account. Notifications, replies, zaps, reactions, and boosts use this account.',
notificationsSwitchAccountFailed:
'Could not switch account. Check your signer, password, or extension and try again.',
'Show untrusted {type}': 'Mostrar {{type}} não confiáveis', 'Show untrusted {type}': 'Mostrar {{type}} não confiáveis',
'Hide untrusted {type}': 'Esconder {{type}} não confiáveis', 'Hide untrusted {type}': 'Esconder {{type}} não confiáveis',
'Currently hiding {type} from untrusted users.': 'Currently hiding {type} from untrusted users.':
@ -579,8 +747,41 @@ export default {
'Relay URLs (optional, comma-separated)': 'URLs de relay (opcional, separadas por vírgulas)', 'Relay URLs (optional, comma-separated)': 'URLs de relay (opcional, separadas por vírgulas)',
'Remove poll': 'Remover sondagem', 'Remove poll': 'Remover sondagem',
'Refresh results': 'Atualizar resultados', 'Refresh results': 'Atualizar resultados',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: 'Sondagem', Poll: 'Sondagem',
Media: 'mídia', Media: 'mídia',
'Articles and Publications': 'Articles and Publications',
'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
'No subscribed interests yet.': 'No subscribed interests yet.':
@ -591,6 +792,10 @@ export default {
'Nothing to load for this feed.': 'Nothing to load for this feed.', 'Nothing to load for this feed.': 'Nothing to load for this feed.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'No posts loaded for this feed. Try refreshing.', 'No posts loaded for this feed. Try refreshing.',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.',
'Per-relay timeline results ({{count}} connections)':
'Per-relay timeline results ({{count}} connections)',
'Republish to ...': 'Transmitir para...', 'Republish to ...': 'Transmitir para...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -627,7 +832,6 @@ export default {
'No more boosts': 'Sem mais boosts', 'No more boosts': 'Sem mais boosts',
'No boosts yet': 'Ainda sem boosts', 'No boosts yet': 'Ainda sem boosts',
'n more boosts': '{{count}} more boosts', 'n more boosts': '{{count}} more boosts',
Boosts: 'Boosts',
FollowListNotFoundConfirmation: FollowListNotFoundConfirmation:
'Lista de seguir não encontrada. Deseja criar uma nova? Se seguiu utilizadores anteriormente, por favor NÃO confirme, pois esta operação fará com que perca a sua lista de seguir anterior.', 'Lista de seguir não encontrada. Deseja criar uma nova? Se seguiu utilizadores anteriormente, por favor NÃO confirme, pois esta operação fará com que perca a sua lista de seguir anterior.',
MuteListNotFoundConfirmation: MuteListNotFoundConfirmation:
@ -657,12 +861,45 @@ export default {
Highlights: 'Destaques', Highlights: 'Destaques',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: 'Inquéritos', Polls: 'Inquéritos',
'Zap polls': 'Zap polls',
'Voice Posts': 'Áudios', 'Voice Posts': 'Áudios',
'Photo Posts': 'Fotos', 'Photo Posts': 'Fotos',
'Video Posts': 'Vídeos', 'Video Posts': 'Vídeos',
'Git repositories': 'Git repositories',
'Git issues': 'Git issues',
'Git releases': 'Git releases',
'Git Republic repository': 'Git Republic repository',
'Git Republic issue': 'Git Republic issue',
'Git Republic release': 'Git Republic release',
'Git Republic event': 'Git Republic event',
'Git Republic': 'Git Republic',
'Open in Git Republic': 'Open in Git Republic',
'Pre-release': 'Pre-release',
Draft: 'Draft',
'Repository release': 'Repository release',
'New Repository Release': 'New Repository Release',
'Release notes use the editor below (optional).':
'Release notes use the editor below (optional).',
'Repository owner (npub or hex)': 'Repository owner (npub or hex)',
'Repository id (d-tag)': 'Repository id (d-tag)',
'Git tag name': 'Git tag name',
'Tag target (40-char commit hash)': 'Tag target (40-character commit hash)',
'40-character hex SHA-1': '40-character hex SHA-1',
'Release title': 'Release title',
'Download URL': 'Download URL',
'Draft release': 'Draft release',
'Fill repository release fields': 'Fill in all required repository release fields.',
'Invalid repository owner pubkey': 'Invalid repository owner (use npub or 64-char hex).',
'Citations require private relays (NIP-65).':
'Citations require private outbox relays (NIP-65).',
'Select All': 'Seleccionar tudo', 'Select All': 'Seleccionar tudo',
'Clear All': 'Limpar tudo', 'Clear All': 'Limpar tudo',
'Set as default filter': 'Definir como filtro predefinido', 'Set as default filter': 'Definir como filtro predefinido',
'Use filter': 'Use filter',
'See all events': 'See all events',
'See all events hint':
'Feed requests omit kind filters and every kind is shown (still subject to relay limits and other feed rules). For testing new event kinds.',
'Use filter hint': 'Only the kinds you select below are requested and shown.',
Apply: 'Aplicar', Apply: 'Aplicar',
Reset: 'Repor', Reset: 'Repor',
'Share something on this Relay': 'Partilhe algo neste Relay', 'Share something on this Relay': 'Partilhe algo neste Relay',
@ -674,8 +911,56 @@ export default {
'Hide content mentioning muted users': 'Ocultar conteúdo que menciona utilizadores silenciados', 'Hide content mentioning muted users': 'Ocultar conteúdo que menciona utilizadores silenciados',
'This note mentions a user you muted': 'Esta nota menciona um utilizador que silenciou', 'This note mentions a user you muted': 'Esta nota menciona um utilizador que silenciou',
Filter: 'Filtro', Filter: 'Filtro',
'Feed filter': 'Feed filter',
'Search loaded posts': 'Search loaded posts',
'Filter loaded posts placeholder': 'Filter by text in content or tags…',
'Feed filter author': 'Author',
'Feed filter author everyone': 'From everyone',
'Feed filter author me': 'Only from me',
'Feed filter author npub': 'From user (npub or hex)',
'Feed filter author npub from prefix': 'from:',
'Feed filter author npub placeholder': 'npub1… or 64-char hex',
'Feed filter author me needs login': 'Log in to filter by your pubkey',
'Within the last': 'Within the last',
'Time unit': 'Time unit',
Minutes: 'Minutes',
Days: 'Days',
Weeks: 'Weeks',
Months: 'Months',
Years: 'Years',
'Feed filter client-side hint':
'Filters only apply to posts already loaded; relays are not queried again.',
'Feed full search': 'Perform full search',
'Feed full search running': 'Searching…',
'Feed full search clear': 'Clear',
'Feed full search active hint':
'Showing relay search results. Clear to return to the live feed.',
'Feed full search need constraint':
'Add search text, an author filter, or a time range before searching relays.',
'Feed full search invalid feed': 'This feed cannot run a relay search.',
'Feed full search failed': 'Relay search failed. Try again.',
'Feed full search empty': 'No matching posts were found on the queried relays.',
'No loaded posts match your filters.': 'No loaded posts match your filters.',
'mentioned you in a note': 'mencionou-o numa nota', 'mentioned you in a note': 'mencionou-o numa nota',
'quoted your note': 'citou a sua nota', 'quoted your note': 'citou a sua nota',
'quoted this note': 'Quoted this note',
'highlighted this note': 'Highlighted this note',
'cited in article': 'Cited in article',
'Thread backlinks heading': 'Also quoting this note',
'Thread backlinks primary section': 'Quotes, highlights & citations',
'Thread backlinks bookmarks section': 'Bookmarks',
'Thread backlinks lists section': 'Lists & collections',
'View full note and thread': 'View full note and thread',
'labeled this note': 'Labeled this note',
'reported this note': 'Reported this note',
'bookmarked this note': 'Bookmarked this note',
'pinned this note': 'Pinned this note',
'listed this note': 'Listed this note',
'bookmark set reference': 'Bookmark set includes this note',
'curated this note': 'Curated this note',
'badge award for this note': 'Badge award for this note',
'referenced this note': 'Referenced this note',
'Report events heading': 'Moderation reports',
'voted in your poll': 'votou na sua sondagem', 'voted in your poll': 'votou na sua sondagem',
'reacted to your note': 'reagiu à sua nota', 'reacted to your note': 'reagiu à sua nota',
'boosted your note': 'deu boost na sua nota', 'boosted your note': 'deu boost na sua nota',
@ -733,6 +1018,10 @@ export default {
'Trending on the Default Relays': 'Trending on the Default Relays', 'Trending on the Default Relays': 'Trending on the Default Relays',
'Latest from your follows': 'Latest from your follows', 'Latest from your follows': 'Latest from your follows',
'Latest from our recommended follows': 'Latest from our recommended follows', 'Latest from our recommended follows': 'Latest from our recommended follows',
'Follows latest page title': 'Latest from follows',
'Follows latest page description':
'Recent notes from accounts you follow (or a curated list when not signed in), using their outbox relays merged with your favorites. Expand a row for notes or open the profile from the row.',
'Follows latest nav label': 'Follows latest',
'Loading follow list…': 'Loading follow list…', 'Loading follow list…': 'Loading follow list…',
'Could not load recommended follows': 'Could not load recommended follows', 'Could not load recommended follows': 'Could not load recommended follows',
'Your follow list is empty': 'Your follow list is empty', 'Your follow list is empty': 'Your follow list is empty',
@ -923,6 +1212,8 @@ export default {
'Article exported as AsciiDoc': 'Article exported as AsciiDoc', 'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown', 'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)', 'Article title (optional)': 'Article title (optional)',
articleDTagDefaultHint:
'Optional. If empty, the d-tag defaults to a type-specific prefix plus a Unix timestamp (seconds), e.g. longform-article-…, wiki-article-…, wiki-markdown-…, publication-content-….',
Audio: 'Audio', Audio: 'Audio',
Author: 'Author', Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups', 'Author is required for reading groups': 'Author is required for reading groups',
@ -985,6 +1276,7 @@ export default {
'Create New Thread': 'Create New Thread', 'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll', 'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread', 'Create Thread': 'Create Thread',
composeModeKind1: 'Short note (kind 1) — turn off other compose types',
'Create a Spell': 'Create a Spell', 'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...', 'Creating...': 'Creating...',
'D-Tag': 'D-Tag', 'D-Tag': 'D-Tag',
@ -1095,6 +1387,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1148,6 +1442,7 @@ export default {
'New Internal Citation': 'New Internal Citation', 'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article', 'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll', 'New Poll': 'New Poll',
'New Discussion': 'New Discussion',
'New Prompt Citation': 'New Prompt Citation', 'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message', 'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article', 'New Wiki Article': 'New Wiki Article',
@ -1179,7 +1474,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1188,6 +1484,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1211,6 +1508,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1220,7 +1519,61 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Follow sets',
'Follow sets settings intro':
'NIP-51 follow sets (kind 30000) group people for custom feeds (for example in Spells). Lists are published to your NIP-65 outboxes and profile discovery relays.',
'New follow set': 'New follow set',
'Edit follow set': 'Edit follow set',
'No follow sets yet': 'You have not created any follow sets yet.',
'Follow set saved': 'Follow set saved',
'Follow set deleted': 'Follow set deleted',
'Failed to load follow sets': 'Failed to load follow sets',
members: 'members',
'Optional display title': 'Optional display title',
'List id (d tag)': 'List id (d tag)',
'Follow set d tag hint':
'Stable identifier for this list. It cannot be changed after the first publish.',
'People in this list': 'People in this list',
'Delete follow set?': 'Delete this follow set?',
'Delete follow set confirm':
'This sends a deletion request (kind 5) for the list. Relays that accept it will drop the list; other clients may still show a cached copy until they refresh.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1273,6 +1626,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1283,6 +1637,10 @@ export default {
'Select Media Type': 'Select Media Type', 'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...', 'Select group...': 'Select group...',
'Select relays': 'Select relays', 'Select relays': 'Select relays',
'Publish relay cap hint':
'At most {{max}} relays are contacted per publish. Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted; lower-priority checks are skipped first if you exceed the cap. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Publish relay cap hint with outbox first':
'At most {{max}} relays per publish. Your NIP-65 write relay(s) use {{reservedSlots}} of those slots first (merged ahead of this picker; they may also appear checked below). Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Select the group where you want to create this discussion.': 'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.', 'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...', 'Select topic...': 'Select topic...',
@ -1327,6 +1685,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1436,6 +1802,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

396
src/i18n/locales/ru.ts

@ -7,6 +7,18 @@ export default {
Home: 'Главная', Home: 'Главная',
Feed: 'Feed', Feed: 'Feed',
'Favorite Relays': 'Избранные ретрансляторы', 'Favorite Relays': 'Избранные ретрансляторы',
'Relay pulse': 'Relay pulse',
'Relay pulse empty': 'Quiet on your relays in the last hour.',
'Relay pulse follows': 'Following ({{count}})',
'Relay pulse others': 'Others ({{count}})',
'Relay pulse updated': 'Updated {{relative}}',
'Relay pulse active npubs': 'Active npubs',
'Relay pulse active npubs hint':
'Kind 0 profiles for pubkeys seen on your favorite relays in the last hour (same sample as Relay pulse).',
'Relay pulse drawer following': 'Following',
'Relay pulse drawer others': 'Others',
'Relay pulse drawer no profiles': 'No kind 0 profiles loaded for this sample yet.',
'See the newest notes from your follows': 'See the newest notes from your follows',
'All favorite relays': 'Все избранные ретрансляторы', 'All favorite relays': 'Все избранные ретрансляторы',
'Pinned note': 'Pinned note', 'Pinned note': 'Pinned note',
'Relay settings': 'Настройки ретрансляции', 'Relay settings': 'Настройки ретрансляции',
@ -14,11 +26,14 @@ export default {
'Account menu': 'Account menu', 'Account menu': 'Account menu',
SidebarRelays: 'Ретрансляторы', SidebarRelays: 'Ретрансляторы',
Refresh: 'Обновить', Refresh: 'Обновить',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: 'Профиль', Profile: 'Профиль',
Logout: 'Выйти', Logout: 'Выйти',
Following: 'Подписки', Following: 'Подписки',
followings: 'подписки', followings: 'подписки',
boosted: 'сделал буст', boosted: 'сделал буст',
'Boosted by:': 'Boosted by:',
'just now': 'только что', 'just now': 'только что',
'n minutes ago': '{{n}} минут назад', 'n minutes ago': '{{n}} минут назад',
'n m': '{{n}}м', 'n m': '{{n}}м',
@ -85,6 +100,7 @@ export default {
"username's used relays": 'Ретрансляторы пользователя {{username}}', "username's used relays": 'Ретрансляторы пользователя {{username}}',
"username's muted": '{{username}} заблокирован', "username's muted": '{{username}} заблокирован',
Login: 'Войти', Login: 'Войти',
downloadDesktopApp: 'Download app',
'Please log in to view notifications.': 'Please log in to view notifications.', 'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': 'Подписан на вас', 'Follows you': 'Подписан на вас',
'Relay Settings': 'Настройки ретрансляторов', 'Relay Settings': 'Настройки ретрансляторов',
@ -160,10 +176,50 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud',
'Read-aloud idle': 'Idle',
'Preparing read-aloud…': 'Preparing read-aloud…',
'Requesting audio…': 'Requesting audio…',
'Loading audio…': 'Loading audio…',
Playing: 'Playing',
Paused: 'Paused',
'Read-aloud finished': 'Finished',
'Read-aloud error': 'Error',
'TTS endpoint': 'TTS endpoint',
'Using browser speech synthesis': 'Using browser speech synthesis',
'Read-aloud section progress': 'Section {{current}} of {{total}}',
'Request sent': 'Request sent',
'Response received': 'Response received',
'Playback started': 'Playback started',
Characters: 'Characters',
Pause: 'Pause',
Play: 'Play',
Stop: 'Stop',
'Read-aloud sections': 'Read-aloud sections',
'Read-aloud overall progress': 'Overall progress',
'Read-aloud section done': 'Section {{index}}: finished',
'Read-aloud section pending': 'Section {{index}}: not started yet',
'Read-aloud section fetching': 'Section {{index}}: requesting audio',
'Read-aloud section preparing audio': 'Section {{index}}: loading audio',
'Read-aloud section playing': 'Section {{index}}: playing',
'Read-aloud section paused': 'Section {{index}}: paused',
'Read-aloud legend fetching': 'Requesting audio for this section from the server…',
'Read-aloud legend buffering': 'Decoding audio for this section…',
'Read-aloud legend playing': 'Playing this section.',
'Read-aloud legend paused': 'Playback paused.',
'Read-aloud Piper fallback notice':
'Server voice (Piper) could not be used. Playing with your browser voice instead.',
'Read-aloud Piper fallback detail label': 'Piper error',
'Read-aloud Piper status region': 'Piper text-to-speech status',
'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
"You're invited to a scheduled video call.": "You're invited to a scheduled video call.", "You're invited to a scheduled video call.": "You're invited to a scheduled video call.",
@ -277,16 +333,26 @@ export default {
'Upload Image': 'Upload Image', 'Upload Image': 'Upload Image',
'Insert emoji': 'Insert emoji', 'Insert emoji': 'Insert emoji',
'Insert GIF': 'Insert GIF', 'Insert GIF': 'Insert GIF',
'Insert meme': 'Insert meme',
'Search GIFs': 'Search GIFs', 'Search GIFs': 'Search GIFs',
'Search memes': 'Search memes',
'Choose a GIF': 'Choose a GIF', 'Choose a GIF': 'Choose a GIF',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs', 'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs',
'Add your own GIFs': 'Add your own GIFs', 'Add your own GIFs': 'Add your own GIFs',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Description (optional, for search)', 'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up', 'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Uploading...', '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.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} is not a GIF file', '{{name}} is not a GIF file': '{{name}} is not a GIF file',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': 'Чтение & Запись', 'R & W': 'Чтение & Запись',
Read: 'Читать', Read: 'Читать',
Write: 'Писать', Write: 'Писать',
@ -338,6 +404,9 @@ export default {
'Calculate optimal read relays': 'Рассчитать оптимальные ретрансляторы для чтения', 'Calculate optimal read relays': 'Рассчитать оптимальные ретрансляторы для чтения',
'Login to set': 'Войти в набор', 'Login to set': 'Войти в набор',
'Please login to view following feed': 'Войдите, чтобы увидеть ленту подписок', 'Please login to view following feed': 'Войдите, чтобы увидеть ленту подписок',
'Follow set': 'Follow set',
'Follow set feed empty':
'This NIP-51 list is empty, was not found, or relays could not load it yet.',
'Send only to r': 'Отправить только на {{r}}', 'Send only to r': 'Отправить только на {{r}}',
'Send only to these relays': 'Отправить только на эти ретрансляторы', 'Send only to these relays': 'Отправить только на эти ретрансляторы',
Explore: 'Обзор', Explore: 'Обзор',
@ -375,6 +444,43 @@ export default {
Topics: 'Topics', Topics: 'Topics',
'Open in a': 'Открыть в {{a}}', 'Open in a': 'Открыть в {{a}}',
'Cannot handle event of kind k': 'Невозможно обработать событие типа {{k}}', 'Cannot handle event of kind k': 'Невозможно обработать событие типа {{k}}',
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Reference tags (e, p, q, a)',
'Starred spells': 'Starred spells',
'Spell star add title': 'Star spell (adds to your Nostr bookmarks)',
'Spell star remove title': 'Unstar spell (removes from your Nostr bookmarks)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'reacted to this note.',
'Notification discussion upvote summary': 'upvoted in this discussion.',
'Notification discussion downvote summary': 'downvoted in this discussion.',
'Notification boost summary': 'Boosted this note',
'Notification boost detail': 'The preview above is the original post.',
'Notification poll vote summary': 'Voted on the poll above.',
'Notification poll vote options count': '{{count}} option(s) selected',
'Jumble Imwald synthetic event': 'Jumble Imwald synthetic event',
'+ Add a URL to this list': 'Add a URL to this list',
'Add a web URL': 'Add a web URL',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Open any https page in the side panel to reply, react, and discuss on Nostr.',
'Enter a valid http(s) URL': 'Enter a valid http(s) URL',
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.':
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.',
'Open in browser': 'Open in browser',
'Web page': 'Web page',
Open: 'Open',
'Sorry! The note cannot be found 😔': 'Извините! Заметка не найдена 😔', 'Sorry! The note cannot be found 😔': 'Извините! Заметка не найдена 😔',
'This user has been muted': 'Этот пользователь заглушен', 'This user has been muted': 'Этот пользователь заглушен',
Wallet: 'Кошелёк', Wallet: 'Кошелёк',
@ -392,6 +498,9 @@ export default {
All: 'Все', All: 'Все',
Reactions: 'Реакции', Reactions: 'Реакции',
Zaps: 'Запы', Zaps: 'Запы',
Boosts: 'Бусты',
Badges: 'Badges',
Reports: 'Reports',
'Enjoying Jumble?': 'Нравится Jumble?', 'Enjoying Jumble?': 'Нравится Jumble?',
'Your donation helps me maintain Jumble and make it better! 😊': 'Your donation helps me maintain Jumble and make it better! 😊':
'Ваше пожертвование помогает поддерживать и улучшать Jumble! 😊', 'Ваше пожертвование помогает поддерживать и улучшать Jumble! 😊',
@ -435,6 +544,11 @@ export default {
'no more relays': 'больше нет ретрансляторов', 'no more relays': 'больше нет ретрансляторов',
'Favorited by': 'Избранные у', 'Favorited by': 'Избранные у',
'Post settings': 'Настройки публикации', 'Post settings': 'Настройки публикации',
'Publishing feedback': 'Publishing feedback',
'Publish success toasts': 'Publish success toasts',
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.':
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.',
'Publish successful': 'Publish successful',
'Media upload service': 'Служба загрузки медиафайлов', 'Media upload service': 'Служба загрузки медиафайлов',
'Choose a relay': 'Выберите ретранслятор', 'Choose a relay': 'Выберите ретранслятор',
'no relays found': 'ретрансляторы не найдены', 'no relays found': 'ретрансляторы не найдены',
@ -448,6 +562,15 @@ export default {
Bookmarks: 'Закладки', Bookmarks: 'Закладки',
'Follow Packs': 'Follow Packs', 'Follow Packs': 'Follow Packs',
'Follow Pack': 'Follow Pack', 'Follow Pack': 'Follow Pack',
'Follow pack by': 'by',
'In Follow Packs': 'In Follow Packs',
'Badge details': 'Badge details',
'Issued by': 'Issued by',
'Other recipients': 'Other recipients',
'No other recipients found': 'No other recipients found',
'Recipients could not be loaded': 'Recipients could not be loaded',
'View award': 'View award',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Please log in to follow', 'Please log in to follow': 'Please log in to follow',
'Following All': 'Following All', 'Following All': 'Following All',
'Followed {{count}} users': 'Followed {{count}} users', 'Followed {{count}} users': 'Followed {{count}} users',
@ -461,11 +584,26 @@ export default {
General: 'Общие', General: 'Общие',
Autoplay: 'Автовоспроизведение', Autoplay: 'Автовоспроизведение',
'Enable video autoplay on this device': 'Включить автовоспроизведение видео на этом устройстве', 'Enable video autoplay on this device': 'Включить автовоспроизведение видео на этом устройстве',
'liveActivities.heading': 'Live now',
'liveActivities.regionLabel': 'Live spaces and streams',
'liveActivities.fromFollow': 'From someone you follow',
'liveActivities.goToSlide': 'Show live item {{n}}',
'liveActivities.settingsToggle': 'Live activities banner',
'liveActivities.settingsHint':
'Shows NIP-53 live rooms (audio/video spaces) from your relays. Updates on a quarter-hour schedule and when the app finishes its initial session warm-up.',
'Add random relays to every publish': 'Random relays in publish list', 'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description': '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.', '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_local: 'Local',
relayType_relay_list: 'Relay list', relayType_relay_list: 'Relay list',
relayType_http_relay_list: 'HTTP',
'HTTP relays': 'HTTP relays',
httpRelaysDescription:
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -485,9 +623,34 @@ export default {
'Session relays scored random hint': '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.', '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)', 'Session relays all striked': 'All striked relays (any source)',
'Session relays clear strike': 'Allow again',
'Session relays clear strike hint':
'Remove this relay from the session block list; it will be used again until new connection failures.',
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': 'Вставьте или перетащите медиафайлы для загрузки', 'Paste or drop media files to upload': 'Вставьте или перетащите медиафайлы для загрузки',
Preview: 'Предварительный просмотр', Preview: 'Предварительный просмотр',
'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?': 'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?':
@ -527,6 +690,11 @@ export default {
Pay: 'Оплатить', Pay: 'Оплатить',
interactions: 'взаимодействия', interactions: 'взаимодействия',
notifications: 'уведомления', notifications: 'уведомления',
notificationsViewAsAccount: 'View as',
notificationsViewAsAccountAria:
'Switch stored account. Notifications, replies, zaps, reactions, and boosts use this account.',
notificationsSwitchAccountFailed:
'Could not switch account. Check your signer, password, or extension and try again.',
'Show untrusted {type}': 'Показать недоверенные {{type}}', 'Show untrusted {type}': 'Показать недоверенные {{type}}',
'Hide untrusted {type}': 'Скрыть недоверенные {{type}}', 'Hide untrusted {type}': 'Скрыть недоверенные {{type}}',
'Currently hiding {type} from untrusted users.': 'Currently hiding {type} from untrusted users.':
@ -579,8 +747,41 @@ export default {
'Relay URLs (optional, comma-separated)': 'URL релеев (необязательно, через запятую)', 'Relay URLs (optional, comma-separated)': 'URL релеев (необязательно, через запятую)',
'Remove poll': 'Удалить опрос', 'Remove poll': 'Удалить опрос',
'Refresh results': 'Обновить результаты', 'Refresh results': 'Обновить результаты',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: 'Опрос', Poll: 'Опрос',
Media: 'медиа', Media: 'медиа',
'Articles and Publications': 'Articles and Publications',
'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
'No subscribed interests yet.': 'No subscribed interests yet.':
@ -591,6 +792,10 @@ export default {
'Nothing to load for this feed.': 'Nothing to load for this feed.', 'Nothing to load for this feed.': 'Nothing to load for this feed.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'No posts loaded for this feed. Try refreshing.', 'No posts loaded for this feed. Try refreshing.',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.',
'Per-relay timeline results ({{count}} connections)':
'Per-relay timeline results ({{count}} connections)',
'Republish to ...': 'Ретранслировать в ...', 'Republish to ...': 'Ретранслировать в ...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -627,7 +832,6 @@ export default {
'No more boosts': 'Больше нет бустов', 'No more boosts': 'Больше нет бустов',
'No boosts yet': 'Пока нет бустов', 'No boosts yet': 'Пока нет бустов',
'n more boosts': '{{count}} more boosts', 'n more boosts': '{{count}} more boosts',
Boosts: 'Бусты',
FollowListNotFoundConfirmation: FollowListNotFoundConfirmation:
'Список подписок не найден. Хотите создать новый? Если вы уже подписывались на пользователей ранее, пожалуйста, НЕ подтверждайте, так как эта операция приведет к потере вашего предыдущего списка подписок.', 'Список подписок не найден. Хотите создать новый? Если вы уже подписывались на пользователей ранее, пожалуйста, НЕ подтверждайте, так как эта операция приведет к потере вашего предыдущего списка подписок.',
MuteListNotFoundConfirmation: MuteListNotFoundConfirmation:
@ -657,12 +861,45 @@ export default {
Highlights: 'Выделения', Highlights: 'Выделения',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: 'Опросы', Polls: 'Опросы',
'Zap polls': 'Zap polls',
'Voice Posts': 'Голосовые посты', 'Voice Posts': 'Голосовые посты',
'Photo Posts': 'Фото посты', 'Photo Posts': 'Фото посты',
'Video Posts': 'Видео посты', 'Video Posts': 'Видео посты',
'Git repositories': 'Git repositories',
'Git issues': 'Git issues',
'Git releases': 'Git releases',
'Git Republic repository': 'Git Republic repository',
'Git Republic issue': 'Git Republic issue',
'Git Republic release': 'Git Republic release',
'Git Republic event': 'Git Republic event',
'Git Republic': 'Git Republic',
'Open in Git Republic': 'Open in Git Republic',
'Pre-release': 'Pre-release',
Draft: 'Draft',
'Repository release': 'Repository release',
'New Repository Release': 'New Repository Release',
'Release notes use the editor below (optional).':
'Release notes use the editor below (optional).',
'Repository owner (npub or hex)': 'Repository owner (npub or hex)',
'Repository id (d-tag)': 'Repository id (d-tag)',
'Git tag name': 'Git tag name',
'Tag target (40-char commit hash)': 'Tag target (40-character commit hash)',
'40-character hex SHA-1': '40-character hex SHA-1',
'Release title': 'Release title',
'Download URL': 'Download URL',
'Draft release': 'Draft release',
'Fill repository release fields': 'Fill in all required repository release fields.',
'Invalid repository owner pubkey': 'Invalid repository owner (use npub or 64-char hex).',
'Citations require private relays (NIP-65).':
'Citations require private outbox relays (NIP-65).',
'Select All': 'Выбрать все', 'Select All': 'Выбрать все',
'Clear All': 'Очистить все', 'Clear All': 'Очистить все',
'Set as default filter': 'Установить как фильтр по умолчанию', 'Set as default filter': 'Установить как фильтр по умолчанию',
'Use filter': 'Use filter',
'See all events': 'See all events',
'See all events hint':
'Feed requests omit kind filters and every kind is shown (still subject to relay limits and other feed rules). For testing new event kinds.',
'Use filter hint': 'Only the kinds you select below are requested and shown.',
Apply: 'Применить', Apply: 'Применить',
Reset: 'Сбросить', Reset: 'Сбросить',
'Share something on this Relay': 'Поделиться чем-то на этом релее', 'Share something on this Relay': 'Поделиться чем-то на этом релее',
@ -674,8 +911,56 @@ export default {
'This note mentions a user you muted': 'This note mentions a user you muted':
'Эта заметка упоминает пользователя, которого вы заглушили', 'Эта заметка упоминает пользователя, которого вы заглушили',
Filter: 'Фильтр', Filter: 'Фильтр',
'Feed filter': 'Feed filter',
'Search loaded posts': 'Search loaded posts',
'Filter loaded posts placeholder': 'Filter by text in content or tags…',
'Feed filter author': 'Author',
'Feed filter author everyone': 'From everyone',
'Feed filter author me': 'Only from me',
'Feed filter author npub': 'From user (npub or hex)',
'Feed filter author npub from prefix': 'from:',
'Feed filter author npub placeholder': 'npub1… or 64-char hex',
'Feed filter author me needs login': 'Log in to filter by your pubkey',
'Within the last': 'Within the last',
'Time unit': 'Time unit',
Minutes: 'Minutes',
Days: 'Days',
Weeks: 'Weeks',
Months: 'Months',
Years: 'Years',
'Feed filter client-side hint':
'Filters only apply to posts already loaded; relays are not queried again.',
'Feed full search': 'Perform full search',
'Feed full search running': 'Searching…',
'Feed full search clear': 'Clear',
'Feed full search active hint':
'Showing relay search results. Clear to return to the live feed.',
'Feed full search need constraint':
'Add search text, an author filter, or a time range before searching relays.',
'Feed full search invalid feed': 'This feed cannot run a relay search.',
'Feed full search failed': 'Relay search failed. Try again.',
'Feed full search empty': 'No matching posts were found on the queried relays.',
'No loaded posts match your filters.': 'No loaded posts match your filters.',
'mentioned you in a note': 'упомянул вас в заметке', 'mentioned you in a note': 'упомянул вас в заметке',
'quoted your note': 'процитировал вашу заметку', 'quoted your note': 'процитировал вашу заметку',
'quoted this note': 'Quoted this note',
'highlighted this note': 'Highlighted this note',
'cited in article': 'Cited in article',
'Thread backlinks heading': 'Also quoting this note',
'Thread backlinks primary section': 'Quotes, highlights & citations',
'Thread backlinks bookmarks section': 'Bookmarks',
'Thread backlinks lists section': 'Lists & collections',
'View full note and thread': 'View full note and thread',
'labeled this note': 'Labeled this note',
'reported this note': 'Reported this note',
'bookmarked this note': 'Bookmarked this note',
'pinned this note': 'Pinned this note',
'listed this note': 'Listed this note',
'bookmark set reference': 'Bookmark set includes this note',
'curated this note': 'Curated this note',
'badge award for this note': 'Badge award for this note',
'referenced this note': 'Referenced this note',
'Report events heading': 'Moderation reports',
'voted in your poll': 'проголосовал в вашем опросе', 'voted in your poll': 'проголосовал в вашем опросе',
'reacted to your note': 'отреагировал на вашу заметку', 'reacted to your note': 'отреагировал на вашу заметку',
'boosted your note': 'сделал буст вашей заметки', 'boosted your note': 'сделал буст вашей заметки',
@ -734,6 +1019,10 @@ export default {
'Trending on the Default Relays': 'Trending on the Default Relays', 'Trending on the Default Relays': 'Trending on the Default Relays',
'Latest from your follows': 'Latest from your follows', 'Latest from your follows': 'Latest from your follows',
'Latest from our recommended follows': 'Latest from our recommended follows', 'Latest from our recommended follows': 'Latest from our recommended follows',
'Follows latest page title': 'Latest from follows',
'Follows latest page description':
'Recent notes from accounts you follow (or a curated list when not signed in), using their outbox relays merged with your favorites. Expand a row for notes or open the profile from the row.',
'Follows latest nav label': 'Follows latest',
'Loading follow list…': 'Loading follow list…', 'Loading follow list…': 'Loading follow list…',
'Could not load recommended follows': 'Could not load recommended follows', 'Could not load recommended follows': 'Could not load recommended follows',
'Your follow list is empty': 'Your follow list is empty', 'Your follow list is empty': 'Your follow list is empty',
@ -924,6 +1213,8 @@ export default {
'Article exported as AsciiDoc': 'Article exported as AsciiDoc', 'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown', 'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)', 'Article title (optional)': 'Article title (optional)',
articleDTagDefaultHint:
'Optional. If empty, the d-tag defaults to a type-specific prefix plus a Unix timestamp (seconds), e.g. longform-article-…, wiki-article-…, wiki-markdown-…, publication-content-….',
Audio: 'Audio', Audio: 'Audio',
Author: 'Author', Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups', 'Author is required for reading groups': 'Author is required for reading groups',
@ -986,6 +1277,7 @@ export default {
'Create New Thread': 'Create New Thread', 'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll', 'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread', 'Create Thread': 'Create Thread',
composeModeKind1: 'Short note (kind 1) — turn off other compose types',
'Create a Spell': 'Create a Spell', 'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...', 'Creating...': 'Creating...',
'D-Tag': 'D-Tag', 'D-Tag': 'D-Tag',
@ -1096,6 +1388,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1149,6 +1443,7 @@ export default {
'New Internal Citation': 'New Internal Citation', 'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article', 'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll', 'New Poll': 'New Poll',
'New Discussion': 'New Discussion',
'New Prompt Citation': 'New Prompt Citation', 'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message', 'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article', 'New Wiki Article': 'New Wiki Article',
@ -1180,7 +1475,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1189,6 +1485,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1212,6 +1509,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1221,7 +1520,61 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Follow sets',
'Follow sets settings intro':
'NIP-51 follow sets (kind 30000) group people for custom feeds (for example in Spells). Lists are published to your NIP-65 outboxes and profile discovery relays.',
'New follow set': 'New follow set',
'Edit follow set': 'Edit follow set',
'No follow sets yet': 'You have not created any follow sets yet.',
'Follow set saved': 'Follow set saved',
'Follow set deleted': 'Follow set deleted',
'Failed to load follow sets': 'Failed to load follow sets',
members: 'members',
'Optional display title': 'Optional display title',
'List id (d tag)': 'List id (d tag)',
'Follow set d tag hint':
'Stable identifier for this list. It cannot be changed after the first publish.',
'People in this list': 'People in this list',
'Delete follow set?': 'Delete this follow set?',
'Delete follow set confirm':
'This sends a deletion request (kind 5) for the list. Relays that accept it will drop the list; other clients may still show a cached copy until they refresh.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1274,6 +1627,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1284,6 +1638,10 @@ export default {
'Select Media Type': 'Select Media Type', 'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...', 'Select group...': 'Select group...',
'Select relays': 'Select relays', 'Select relays': 'Select relays',
'Publish relay cap hint':
'At most {{max}} relays are contacted per publish. Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted; lower-priority checks are skipped first if you exceed the cap. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Publish relay cap hint with outbox first':
'At most {{max}} relays per publish. Your NIP-65 write relay(s) use {{reservedSlots}} of those slots first (merged ahead of this picker; they may also appear checked below). Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Select the group where you want to create this discussion.': 'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.', 'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...', 'Select topic...': 'Select topic...',
@ -1328,6 +1686,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1437,6 +1803,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

396
src/i18n/locales/th.ts

@ -7,6 +7,18 @@ export default {
Home: 'หนาหลก', Home: 'หนาหลก',
Feed: 'Feed', Feed: 'Feed',
'Favorite Relays': 'รเลยโปรด', 'Favorite Relays': 'รเลยโปรด',
'Relay pulse': 'Relay pulse',
'Relay pulse empty': 'Quiet on your relays in the last hour.',
'Relay pulse follows': 'Following ({{count}})',
'Relay pulse others': 'Others ({{count}})',
'Relay pulse updated': 'Updated {{relative}}',
'Relay pulse active npubs': 'Active npubs',
'Relay pulse active npubs hint':
'Kind 0 profiles for pubkeys seen on your favorite relays in the last hour (same sample as Relay pulse).',
'Relay pulse drawer following': 'Following',
'Relay pulse drawer others': 'Others',
'Relay pulse drawer no profiles': 'No kind 0 profiles loaded for this sample yet.',
'See the newest notes from your follows': 'See the newest notes from your follows',
'All favorite relays': 'รเลยโปรดทงหมด', 'All favorite relays': 'รเลยโปรดทงหมด',
'Pinned note': 'Pinned note', 'Pinned note': 'Pinned note',
'Relay settings': 'การตงคารเลย', 'Relay settings': 'การตงคารเลย',
@ -14,11 +26,14 @@ export default {
'Account menu': 'Account menu', 'Account menu': 'Account menu',
SidebarRelays: 'รเลย', SidebarRelays: 'รเลย',
Refresh: 'รเฟรช', Refresh: 'รเฟรช',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: 'โปรไฟล', Profile: 'โปรไฟล',
Logout: 'ออกจากระบบ', Logout: 'ออกจากระบบ',
Following: 'กำลงตดตาม', Following: 'กำลงตดตาม',
followings: 'กำลงตดตาม', followings: 'กำลงตดตาม',
boosted: 'บสตแลว', boosted: 'บสตแลว',
'Boosted by:': 'Boosted by:',
'just now': 'เมอสกคร', 'just now': 'เมอสกคร',
'n minutes ago': '{{n}} นาทแลว', 'n minutes ago': '{{n}} นาทแลว',
'n m': '{{n}}น', 'n m': '{{n}}น',
@ -85,6 +100,7 @@ export default {
"username's used relays": 'รเลย {{username}} ใชงาน', "username's used relays": 'รเลย {{username}} ใชงาน',
"username's muted": 'ผ {{username}} ปดเสยง', "username's muted": 'ผ {{username}} ปดเสยง',
Login: 'เขาสระบบ', Login: 'เขาสระบบ',
downloadDesktopApp: 'Download app',
'Please log in to view notifications.': 'Please log in to view notifications.', 'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': 'ตดตามคณ', 'Follows you': 'ตดตามคณ',
'Relay Settings': 'การตงคารเลย', 'Relay Settings': 'การตงคารเลย',
@ -160,10 +176,50 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud',
'Read-aloud idle': 'Idle',
'Preparing read-aloud…': 'Preparing read-aloud…',
'Requesting audio…': 'Requesting audio…',
'Loading audio…': 'Loading audio…',
Playing: 'Playing',
Paused: 'Paused',
'Read-aloud finished': 'Finished',
'Read-aloud error': 'Error',
'TTS endpoint': 'TTS endpoint',
'Using browser speech synthesis': 'Using browser speech synthesis',
'Read-aloud section progress': 'Section {{current}} of {{total}}',
'Request sent': 'Request sent',
'Response received': 'Response received',
'Playback started': 'Playback started',
Characters: 'Characters',
Pause: 'Pause',
Play: 'Play',
Stop: 'Stop',
'Read-aloud sections': 'Read-aloud sections',
'Read-aloud overall progress': 'Overall progress',
'Read-aloud section done': 'Section {{index}}: finished',
'Read-aloud section pending': 'Section {{index}}: not started yet',
'Read-aloud section fetching': 'Section {{index}}: requesting audio',
'Read-aloud section preparing audio': 'Section {{index}}: loading audio',
'Read-aloud section playing': 'Section {{index}}: playing',
'Read-aloud section paused': 'Section {{index}}: paused',
'Read-aloud legend fetching': 'Requesting audio for this section from the server…',
'Read-aloud legend buffering': 'Decoding audio for this section…',
'Read-aloud legend playing': 'Playing this section.',
'Read-aloud legend paused': 'Playback paused.',
'Read-aloud Piper fallback notice':
'Server voice (Piper) could not be used. Playing with your browser voice instead.',
'Read-aloud Piper fallback detail label': 'Piper error',
'Read-aloud Piper status region': 'Piper text-to-speech status',
'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
"You're invited to a scheduled video call.": "You're invited to a scheduled video call.", "You're invited to a scheduled video call.": "You're invited to a scheduled video call.",
@ -276,16 +332,26 @@ export default {
'Upload Image': 'Upload Image', 'Upload Image': 'Upload Image',
'Insert emoji': 'Insert emoji', 'Insert emoji': 'Insert emoji',
'Insert GIF': 'Insert GIF', 'Insert GIF': 'Insert GIF',
'Insert meme': 'Insert meme',
'Search GIFs': 'Search GIFs', 'Search GIFs': 'Search GIFs',
'Search memes': 'Search memes',
'Choose a GIF': 'Choose a GIF', 'Choose a GIF': 'Choose a GIF',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs', 'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs',
'Add your own GIFs': 'Add your own GIFs', 'Add your own GIFs': 'Add your own GIFs',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Description (optional, for search)', 'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up', 'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Uploading...', '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.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} is not a GIF file', '{{name}} is not a GIF file': '{{name}} is not a GIF file',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': 'อาน & เขยน', 'R & W': 'อาน & เขยน',
Read: 'อาน', Read: 'อาน',
Write: 'เขยน', Write: 'เขยน',
@ -335,6 +401,9 @@ export default {
'Calculate optimal read relays': 'คำนวณรเลยานทเหมาะสม', 'Calculate optimal read relays': 'คำนวณรเลยานทเหมาะสม',
'Login to set': 'เขาสระบบเพอกำหนด', 'Login to set': 'เขาสระบบเพอกำหนด',
'Please login to view following feed': 'กรณาเขาสระบบเพอดดทดตาม', 'Please login to view following feed': 'กรณาเขาสระบบเพอดดทดตาม',
'Follow set': 'Follow set',
'Follow set feed empty':
'This NIP-51 list is empty, was not found, or relays could not load it yet.',
'Send only to r': 'สงเฉพาะไปยง {{r}}', 'Send only to r': 'สงเฉพาะไปยง {{r}}',
'Send only to these relays': 'สงเฉพาะไปยงรเลยเหลาน', 'Send only to these relays': 'สงเฉพาะไปยงรเลยเหลาน',
Explore: 'สำรวจ', Explore: 'สำรวจ',
@ -372,6 +441,43 @@ export default {
Topics: 'Topics', Topics: 'Topics',
'Open in a': 'เปดใน {{a}}', 'Open in a': 'เปดใน {{a}}',
'Cannot handle event of kind k': 'ไมสามารถจดการเหตการณประเภท {{k}}', 'Cannot handle event of kind k': 'ไมสามารถจดการเหตการณประเภท {{k}}',
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Reference tags (e, p, q, a)',
'Starred spells': 'Starred spells',
'Spell star add title': 'Star spell (adds to your Nostr bookmarks)',
'Spell star remove title': 'Unstar spell (removes from your Nostr bookmarks)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'reacted to this note.',
'Notification discussion upvote summary': 'upvoted in this discussion.',
'Notification discussion downvote summary': 'downvoted in this discussion.',
'Notification boost summary': 'Boosted this note',
'Notification boost detail': 'The preview above is the original post.',
'Notification poll vote summary': 'Voted on the poll above.',
'Notification poll vote options count': '{{count}} option(s) selected',
'Jumble Imwald synthetic event': 'Jumble Imwald synthetic event',
'+ Add a URL to this list': 'Add a URL to this list',
'Add a web URL': 'Add a web URL',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Open any https page in the side panel to reply, react, and discuss on Nostr.',
'Enter a valid http(s) URL': 'Enter a valid http(s) URL',
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.':
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.',
'Open in browser': 'Open in browser',
'Web page': 'Web page',
Open: 'Open',
'Sorry! The note cannot be found 😔': 'ขออภย! ไมพบโนต 😔', 'Sorry! The note cannot be found 😔': 'ขออภย! ไมพบโนต 😔',
'This user has been muted': 'ผใชกปดเสยง', 'This user has been muted': 'ผใชกปดเสยง',
Wallet: 'กระเปาสตางค', Wallet: 'กระเปาสตางค',
@ -389,6 +495,9 @@ export default {
All: 'ทงหมด', All: 'ทงหมด',
Reactions: 'ปฏยา', Reactions: 'ปฏยา',
Zaps: 'ซาตส', Zaps: 'ซาตส',
Boosts: 'บสต',
Badges: 'Badges',
Reports: 'Reports',
'Enjoying Jumble?': 'ชอบ Jumble ไหม?', 'Enjoying Jumble?': 'ชอบ Jumble ไหม?',
'Your donation helps me maintain Jumble and make it better! 😊': 'Your donation helps me maintain Jumble and make it better! 😊':
'การบรจาคของคณชวยใหนดแลและพฒนา Jumble ใหน! 😊', 'การบรจาคของคณชวยใหนดแลและพฒนา Jumble ใหน! 😊',
@ -431,6 +540,11 @@ export default {
'no more relays': 'ไมเลยเพมเตม', 'no more relays': 'ไมเลยเพมเตม',
'Favorited by': 'ถกเพมเปนรายการโปรดโดย', 'Favorited by': 'ถกเพมเปนรายการโปรดโดย',
'Post settings': 'การตงคาโพสต', 'Post settings': 'การตงคาโพสต',
'Publishing feedback': 'Publishing feedback',
'Publish success toasts': 'Publish success toasts',
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.':
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.',
'Publish successful': 'Publish successful',
'Media upload service': 'บรการอปโหลดสอ', 'Media upload service': 'บรการอปโหลดสอ',
'Choose a relay': 'เลอกรเลย', 'Choose a relay': 'เลอกรเลย',
'no relays found': 'ไมพบรเลย', 'no relays found': 'ไมพบรเลย',
@ -444,6 +558,15 @@ export default {
Bookmarks: 'บกมารก', Bookmarks: 'บกมารก',
'Follow Packs': 'Follow Packs', 'Follow Packs': 'Follow Packs',
'Follow Pack': 'Follow Pack', 'Follow Pack': 'Follow Pack',
'Follow pack by': 'by',
'In Follow Packs': 'In Follow Packs',
'Badge details': 'Badge details',
'Issued by': 'Issued by',
'Other recipients': 'Other recipients',
'No other recipients found': 'No other recipients found',
'Recipients could not be loaded': 'Recipients could not be loaded',
'View award': 'View award',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Please log in to follow', 'Please log in to follow': 'Please log in to follow',
'Following All': 'Following All', 'Following All': 'Following All',
'Followed {{count}} users': 'Followed {{count}} users', 'Followed {{count}} users': 'Followed {{count}} users',
@ -457,11 +580,26 @@ export default {
General: 'ทวไป', General: 'ทวไป',
Autoplay: 'เลนอตโนม', Autoplay: 'เลนอตโนม',
'Enable video autoplay on this device': 'เปดใชงานเลนวโออตโนมบนอปกรณ', 'Enable video autoplay on this device': 'เปดใชงานเลนวโออตโนมบนอปกรณ',
'liveActivities.heading': 'Live now',
'liveActivities.regionLabel': 'Live spaces and streams',
'liveActivities.fromFollow': 'From someone you follow',
'liveActivities.goToSlide': 'Show live item {{n}}',
'liveActivities.settingsToggle': 'Live activities banner',
'liveActivities.settingsHint':
'Shows NIP-53 live rooms (audio/video spaces) from your relays. Updates on a quarter-hour schedule and when the app finishes its initial session warm-up.',
'Add random relays to every publish': 'Random relays in publish list', 'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description': '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.', '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_local: 'Local',
relayType_relay_list: 'Relay list', relayType_relay_list: 'Relay list',
relayType_http_relay_list: 'HTTP',
'HTTP relays': 'HTTP relays',
httpRelaysDescription:
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -481,9 +619,34 @@ export default {
'Session relays scored random hint': '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.', '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)', 'Session relays all striked': 'All striked relays (any source)',
'Session relays clear strike': 'Allow again',
'Session relays clear strike hint':
'Remove this relay from the session block list; it will be used again until new connection failures.',
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': 'วางหรอหยอนไฟลอเพออปโหลด', 'Paste or drop media files to upload': 'วางหรอหยอนไฟลอเพออปโหลด',
Preview: 'ดวอยาง', Preview: 'ดวอยาง',
'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?': 'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?':
@ -523,6 +686,11 @@ export default {
Pay: 'ชำระเงน', Pay: 'ชำระเงน',
interactions: 'การโตตอบ', interactions: 'การโตตอบ',
notifications: 'การแจงเตอน', notifications: 'การแจงเตอน',
notificationsViewAsAccount: 'View as',
notificationsViewAsAccountAria:
'Switch stored account. Notifications, replies, zaps, reactions, and boosts use this account.',
notificationsSwitchAccountFailed:
'Could not switch account. Check your signer, password, or extension and try again.',
'Show untrusted {type}': 'แสดง {{type}} ทไมาเชอถอ', 'Show untrusted {type}': 'แสดง {{type}} ทไมาเชอถอ',
'Hide untrusted {type}': 'ซอน {{type}} ทไมาเชอถอ', 'Hide untrusted {type}': 'ซอน {{type}} ทไมาเชอถอ',
'Currently hiding {type} from untrusted users.': 'Currently hiding {type} from untrusted users.':
@ -575,8 +743,41 @@ export default {
'Relay URLs (optional, comma-separated)': 'URL รเลย (ไมงคบ, คนดวยจลภาค)', 'Relay URLs (optional, comma-separated)': 'URL รเลย (ไมงคบ, คนดวยจลภาค)',
'Remove poll': 'ลบโพลล', 'Remove poll': 'ลบโพลล',
'Refresh results': 'รเฟรชผลลพธ', 'Refresh results': 'รเฟรชผลลพธ',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: 'โพลล', Poll: 'โพลล',
Media: 'สอ', Media: 'สอ',
'Articles and Publications': 'Articles and Publications',
'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
'No subscribed interests yet.': 'No subscribed interests yet.':
@ -587,6 +788,10 @@ export default {
'Nothing to load for this feed.': 'Nothing to load for this feed.', 'Nothing to load for this feed.': 'Nothing to load for this feed.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'No posts loaded for this feed. Try refreshing.', 'No posts loaded for this feed. Try refreshing.',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.',
'Per-relay timeline results ({{count}} connections)':
'Per-relay timeline results ({{count}} connections)',
'Republish to ...': 'เผยแพรำไปยง ...', 'Republish to ...': 'เผยแพรำไปยง ...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -622,7 +827,6 @@ export default {
'No more boosts': 'ไมสตเพมเตม', 'No more boosts': 'ไมสตเพมเตม',
'No boosts yet': 'ยงไมสต', 'No boosts yet': 'ยงไมสต',
'n more boosts': '{{count}} more boosts', 'n more boosts': '{{count}} more boosts',
Boosts: 'บสต',
FollowListNotFoundConfirmation: FollowListNotFoundConfirmation:
'ไมพบรายการตดตาม คณตองการสรางรายการใหมหรอไม? หากคณเคยตดตามผใชมากอน กรณาอยายนยน เพราะการดำเนนการนจะทำใหณสญเสยรายการตดตามกอนหนาน', 'ไมพบรายการตดตาม คณตองการสรางรายการใหมหรอไม? หากคณเคยตดตามผใชมากอน กรณาอยายนยน เพราะการดำเนนการนจะทำใหณสญเสยรายการตดตามกอนหนาน',
MuteListNotFoundConfirmation: MuteListNotFoundConfirmation:
@ -652,12 +856,45 @@ export default {
Highlights: 'ไฮไลต', Highlights: 'ไฮไลต',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: 'โพล', Polls: 'โพล',
'Zap polls': 'Zap polls',
'Voice Posts': 'โพสตเสยง', 'Voice Posts': 'โพสตเสยง',
'Photo Posts': 'โพสตปภาพ', 'Photo Posts': 'โพสตปภาพ',
'Video Posts': 'โพสตโอ', 'Video Posts': 'โพสตโอ',
'Git repositories': 'Git repositories',
'Git issues': 'Git issues',
'Git releases': 'Git releases',
'Git Republic repository': 'Git Republic repository',
'Git Republic issue': 'Git Republic issue',
'Git Republic release': 'Git Republic release',
'Git Republic event': 'Git Republic event',
'Git Republic': 'Git Republic',
'Open in Git Republic': 'Open in Git Republic',
'Pre-release': 'Pre-release',
Draft: 'Draft',
'Repository release': 'Repository release',
'New Repository Release': 'New Repository Release',
'Release notes use the editor below (optional).':
'Release notes use the editor below (optional).',
'Repository owner (npub or hex)': 'Repository owner (npub or hex)',
'Repository id (d-tag)': 'Repository id (d-tag)',
'Git tag name': 'Git tag name',
'Tag target (40-char commit hash)': 'Tag target (40-character commit hash)',
'40-character hex SHA-1': '40-character hex SHA-1',
'Release title': 'Release title',
'Download URL': 'Download URL',
'Draft release': 'Draft release',
'Fill repository release fields': 'Fill in all required repository release fields.',
'Invalid repository owner pubkey': 'Invalid repository owner (use npub or 64-char hex).',
'Citations require private relays (NIP-65).':
'Citations require private outbox relays (NIP-65).',
'Select All': 'เลอกทงหมด', 'Select All': 'เลอกทงหมด',
'Clear All': 'ลางทงหมด', 'Clear All': 'ลางทงหมด',
'Set as default filter': 'ตงเปนตวกรองเรมตน', 'Set as default filter': 'ตงเปนตวกรองเรมตน',
'Use filter': 'Use filter',
'See all events': 'See all events',
'See all events hint':
'Feed requests omit kind filters and every kind is shown (still subject to relay limits and other feed rules). For testing new event kinds.',
'Use filter hint': 'Only the kinds you select below are requested and shown.',
Apply: 'ใช', Apply: 'ใช',
Reset: 'รเซต', Reset: 'รเซต',
'Share something on this Relay': 'แชรบางอยางบนรเลย', 'Share something on this Relay': 'แชรบางอยางบนรเลย',
@ -668,8 +905,56 @@ export default {
'Hide content mentioning muted users': 'ซอนเนอหาทกลาวถงผใชดเสยง', 'Hide content mentioning muted users': 'ซอนเนอหาทกลาวถงผใชดเสยง',
'This note mentions a user you muted': 'โนตนกลาวถงผใชณปดเสยง', 'This note mentions a user you muted': 'โนตนกลาวถงผใชณปดเสยง',
Filter: 'ตวกรอง', Filter: 'ตวกรอง',
'Feed filter': 'Feed filter',
'Search loaded posts': 'Search loaded posts',
'Filter loaded posts placeholder': 'Filter by text in content or tags…',
'Feed filter author': 'Author',
'Feed filter author everyone': 'From everyone',
'Feed filter author me': 'Only from me',
'Feed filter author npub': 'From user (npub or hex)',
'Feed filter author npub from prefix': 'from:',
'Feed filter author npub placeholder': 'npub1… or 64-char hex',
'Feed filter author me needs login': 'Log in to filter by your pubkey',
'Within the last': 'Within the last',
'Time unit': 'Time unit',
Minutes: 'Minutes',
Days: 'Days',
Weeks: 'Weeks',
Months: 'Months',
Years: 'Years',
'Feed filter client-side hint':
'Filters only apply to posts already loaded; relays are not queried again.',
'Feed full search': 'Perform full search',
'Feed full search running': 'Searching…',
'Feed full search clear': 'Clear',
'Feed full search active hint':
'Showing relay search results. Clear to return to the live feed.',
'Feed full search need constraint':
'Add search text, an author filter, or a time range before searching relays.',
'Feed full search invalid feed': 'This feed cannot run a relay search.',
'Feed full search failed': 'Relay search failed. Try again.',
'Feed full search empty': 'No matching posts were found on the queried relays.',
'No loaded posts match your filters.': 'No loaded posts match your filters.',
'mentioned you in a note': 'ไดกลาวถงคณในโนต', 'mentioned you in a note': 'ไดกลาวถงคณในโนต',
'quoted your note': 'ไดยกคำพดจากโนตของคณ', 'quoted your note': 'ไดยกคำพดจากโนตของคณ',
'quoted this note': 'Quoted this note',
'highlighted this note': 'Highlighted this note',
'cited in article': 'Cited in article',
'Thread backlinks heading': 'Also quoting this note',
'Thread backlinks primary section': 'Quotes, highlights & citations',
'Thread backlinks bookmarks section': 'Bookmarks',
'Thread backlinks lists section': 'Lists & collections',
'View full note and thread': 'View full note and thread',
'labeled this note': 'Labeled this note',
'reported this note': 'Reported this note',
'bookmarked this note': 'Bookmarked this note',
'pinned this note': 'Pinned this note',
'listed this note': 'Listed this note',
'bookmark set reference': 'Bookmark set includes this note',
'curated this note': 'Curated this note',
'badge award for this note': 'Badge award for this note',
'referenced this note': 'Referenced this note',
'Report events heading': 'Moderation reports',
'voted in your poll': 'ไดโหวตในการสำรวจของคณ', 'voted in your poll': 'ไดโหวตในการสำรวจของคณ',
'reacted to your note': 'ไดแสดงปฏยาตอโนตของคณ', 'reacted to your note': 'ไดแสดงปฏยาตอโนตของคณ',
'boosted your note': 'ไดสตโนตของคณ', 'boosted your note': 'ไดสตโนตของคณ',
@ -725,6 +1010,10 @@ export default {
'Trending on the Default Relays': 'Trending on the Default Relays', 'Trending on the Default Relays': 'Trending on the Default Relays',
'Latest from your follows': 'Latest from your follows', 'Latest from your follows': 'Latest from your follows',
'Latest from our recommended follows': 'Latest from our recommended follows', 'Latest from our recommended follows': 'Latest from our recommended follows',
'Follows latest page title': 'Latest from follows',
'Follows latest page description':
'Recent notes from accounts you follow (or a curated list when not signed in), using their outbox relays merged with your favorites. Expand a row for notes or open the profile from the row.',
'Follows latest nav label': 'Follows latest',
'Loading follow list…': 'Loading follow list…', 'Loading follow list…': 'Loading follow list…',
'Could not load recommended follows': 'Could not load recommended follows', 'Could not load recommended follows': 'Could not load recommended follows',
'Your follow list is empty': 'Your follow list is empty', 'Your follow list is empty': 'Your follow list is empty',
@ -914,6 +1203,8 @@ export default {
'Article exported as AsciiDoc': 'Article exported as AsciiDoc', 'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown', 'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)', 'Article title (optional)': 'Article title (optional)',
articleDTagDefaultHint:
'Optional. If empty, the d-tag defaults to a type-specific prefix plus a Unix timestamp (seconds), e.g. longform-article-…, wiki-article-…, wiki-markdown-…, publication-content-….',
Audio: 'Audio', Audio: 'Audio',
Author: 'Author', Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups', 'Author is required for reading groups': 'Author is required for reading groups',
@ -976,6 +1267,7 @@ export default {
'Create New Thread': 'Create New Thread', 'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll', 'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread', 'Create Thread': 'Create Thread',
composeModeKind1: 'Short note (kind 1) — turn off other compose types',
'Create a Spell': 'Create a Spell', 'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...', 'Creating...': 'Creating...',
'D-Tag': 'D-Tag', 'D-Tag': 'D-Tag',
@ -1086,6 +1378,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1139,6 +1433,7 @@ export default {
'New Internal Citation': 'New Internal Citation', 'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article', 'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll', 'New Poll': 'New Poll',
'New Discussion': 'New Discussion',
'New Prompt Citation': 'New Prompt Citation', 'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message', 'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article', 'New Wiki Article': 'New Wiki Article',
@ -1170,7 +1465,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1179,6 +1475,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1202,6 +1499,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1211,7 +1510,61 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Follow sets',
'Follow sets settings intro':
'NIP-51 follow sets (kind 30000) group people for custom feeds (for example in Spells). Lists are published to your NIP-65 outboxes and profile discovery relays.',
'New follow set': 'New follow set',
'Edit follow set': 'Edit follow set',
'No follow sets yet': 'You have not created any follow sets yet.',
'Follow set saved': 'Follow set saved',
'Follow set deleted': 'Follow set deleted',
'Failed to load follow sets': 'Failed to load follow sets',
members: 'members',
'Optional display title': 'Optional display title',
'List id (d tag)': 'List id (d tag)',
'Follow set d tag hint':
'Stable identifier for this list. It cannot be changed after the first publish.',
'People in this list': 'People in this list',
'Delete follow set?': 'Delete this follow set?',
'Delete follow set confirm':
'This sends a deletion request (kind 5) for the list. Relays that accept it will drop the list; other clients may still show a cached copy until they refresh.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1264,6 +1617,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1274,6 +1628,10 @@ export default {
'Select Media Type': 'Select Media Type', 'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...', 'Select group...': 'Select group...',
'Select relays': 'Select relays', 'Select relays': 'Select relays',
'Publish relay cap hint':
'At most {{max}} relays are contacted per publish. Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted; lower-priority checks are skipped first if you exceed the cap. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Publish relay cap hint with outbox first':
'At most {{max}} relays per publish. Your NIP-65 write relay(s) use {{reservedSlots}} of those slots first (merged ahead of this picker; they may also appear checked below). Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Select the group where you want to create this discussion.': 'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.', 'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...', 'Select topic...': 'Select topic...',
@ -1318,6 +1676,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1427,6 +1793,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

396
src/i18n/locales/zh.ts

@ -7,6 +7,18 @@ export default {
Home: '主页', Home: '主页',
Feed: 'Feed', Feed: 'Feed',
'Favorite Relays': '收藏的服务器', 'Favorite Relays': '收藏的服务器',
'Relay pulse': 'Relay pulse',
'Relay pulse empty': 'Quiet on your relays in the last hour.',
'Relay pulse follows': 'Following ({{count}})',
'Relay pulse others': 'Others ({{count}})',
'Relay pulse updated': 'Updated {{relative}}',
'Relay pulse active npubs': 'Active npubs',
'Relay pulse active npubs hint':
'Kind 0 profiles for pubkeys seen on your favorite relays in the last hour (same sample as Relay pulse).',
'Relay pulse drawer following': 'Following',
'Relay pulse drawer others': 'Others',
'Relay pulse drawer no profiles': 'No kind 0 profiles loaded for this sample yet.',
'See the newest notes from your follows': 'See the newest notes from your follows',
'All favorite relays': '所有收藏服务器', 'All favorite relays': '所有收藏服务器',
'Pinned note': 'Pinned note', 'Pinned note': 'Pinned note',
'Relay settings': '服务器设置', 'Relay settings': '服务器设置',
@ -14,11 +26,14 @@ export default {
'Account menu': 'Account menu', 'Account menu': 'Account menu',
SidebarRelays: '服务器', SidebarRelays: '服务器',
Refresh: '刷新列表', Refresh: '刷新列表',
'refresh.longPressHardReload': 'Long-press: reload app and restore feed cache',
'link.expandNostrEmbed': 'Show Nostr preview',
Profile: '个人资料', Profile: '个人资料',
Logout: '退出登录', Logout: '退出登录',
Following: '关注', Following: '关注',
followings: '关注', followings: '关注',
boosted: '已助推', boosted: '已助推',
'Boosted by:': 'Boosted by:',
'just now': '刚刚', 'just now': '刚刚',
'n minutes ago': '{{n}} 分钟前', 'n minutes ago': '{{n}} 分钟前',
'n m': '{{n}}分', 'n m': '{{n}}分',
@ -85,6 +100,7 @@ export default {
"username's used relays": '{{username}} 使用的服务器', "username's used relays": '{{username}} 使用的服务器',
"username's muted": '{{username}} 屏蔽的用户', "username's muted": '{{username}} 屏蔽的用户',
Login: '登录', Login: '登录',
downloadDesktopApp: 'Download app',
'Please log in to view notifications.': 'Please log in to view notifications.', 'Please log in to view notifications.': 'Please log in to view notifications.',
'Follows you': '关注了你', 'Follows you': '关注了你',
'Relay Settings': '服务器设置', 'Relay Settings': '服务器设置',
@ -160,10 +176,50 @@ export default {
'Start call about this': 'Start call about this', 'Start call about this': 'Start call about this',
'Send call invite': 'Send call invite', 'Send call invite': 'Send call invite',
'Read this note aloud': 'Read this note aloud', 'Read this note aloud': 'Read this note aloud',
'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser': 'Read-aloud is not supported in this browser',
'Read-aloud is not supported in this browser',
'Nothing to read aloud': 'Nothing to read aloud', 'Nothing to read aloud': 'Nothing to read aloud',
'Read-aloud failed': 'Read-aloud failed', 'Read-aloud failed': 'Read-aloud failed',
'Read aloud': 'Read aloud',
'Read-aloud idle': 'Idle',
'Preparing read-aloud…': 'Preparing read-aloud…',
'Requesting audio…': 'Requesting audio…',
'Loading audio…': 'Loading audio…',
Playing: 'Playing',
Paused: 'Paused',
'Read-aloud finished': 'Finished',
'Read-aloud error': 'Error',
'TTS endpoint': 'TTS endpoint',
'Using browser speech synthesis': 'Using browser speech synthesis',
'Read-aloud section progress': 'Section {{current}} of {{total}}',
'Request sent': 'Request sent',
'Response received': 'Response received',
'Playback started': 'Playback started',
Characters: 'Characters',
Pause: 'Pause',
Play: 'Play',
Stop: 'Stop',
'Read-aloud sections': 'Read-aloud sections',
'Read-aloud overall progress': 'Overall progress',
'Read-aloud section done': 'Section {{index}}: finished',
'Read-aloud section pending': 'Section {{index}}: not started yet',
'Read-aloud section fetching': 'Section {{index}}: requesting audio',
'Read-aloud section preparing audio': 'Section {{index}}: loading audio',
'Read-aloud section playing': 'Section {{index}}: playing',
'Read-aloud section paused': 'Section {{index}}: paused',
'Read-aloud legend fetching': 'Requesting audio for this section from the server…',
'Read-aloud legend buffering': 'Decoding audio for this section…',
'Read-aloud legend playing': 'Playing this section.',
'Read-aloud legend paused': 'Playback paused.',
'Read-aloud Piper fallback notice':
'Server voice (Piper) could not be used. Playing with your browser voice instead.',
'Read-aloud Piper fallback detail label': 'Piper error',
'Read-aloud Piper status region': 'Piper text-to-speech status',
'Read-aloud Piper status heading': 'Piper (server voice)',
'Read-aloud Piper skipped notice':
'No Piper URL is configured for this app (see VITE_READ_ALOUD_TTS_URL). Only the browser voice is used — the server was not contacted.',
'Read-aloud Piper attempt started':
'Piper was started at {{time}} (this read-aloud used the server first).',
'Read-aloud Piper endpoint tried': 'URL used: {{url}}',
'Join the video call': 'Join the video call', 'Join the video call': 'Join the video call',
'Schedule video call': 'Schedule video call', 'Schedule video call': 'Schedule video call',
"You're invited to a scheduled video call.": "You're invited to a scheduled video call.", "You're invited to a scheduled video call.": "You're invited to a scheduled video call.",
@ -275,16 +331,26 @@ export default {
'Upload Image': 'Upload Image', 'Upload Image': 'Upload Image',
'Insert emoji': 'Insert emoji', 'Insert emoji': 'Insert emoji',
'Insert GIF': 'Insert GIF', 'Insert GIF': 'Insert GIF',
'Insert meme': 'Insert meme',
'Search GIFs': 'Search GIFs', 'Search GIFs': 'Search GIFs',
'Search memes': 'Search memes',
'Choose a GIF': 'Choose a GIF', 'Choose a GIF': 'Choose a GIF',
'Choose a meme': 'Choose a meme',
'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs', 'Search GifBuddy for more GIFs': 'Search GifBuddy for more GIFs',
'Add your own GIFs': 'Add your own GIFs', 'Add your own GIFs': 'Add your own GIFs',
'Add your own meme templates': 'Add your own meme templates',
'Description (optional, for search)': 'Description (optional, for search)', 'Description (optional, for search)': 'Description (optional, for search)',
'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up', 'e.g. happy birthday, thumbs up': 'e.g. happy birthday, thumbs up',
'e.g. drake, distracted boyfriend': 'e.g. drake, distracted boyfriend',
'Uploading...': 'Uploading...', '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.',
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).':
'No meme templates found. Try searching or open Meme Amigo. The grid only lists kind 1063 (NIP-94) files tagged memeamigo (not random photos from notes).',
'Failed to publish meme template for the picker':
'Failed to publish meme template for the picker',
'{{name}} is not a GIF file': '{{name}} is not a GIF file', '{{name}} is not a GIF file': '{{name}} is not a GIF file',
'{{name}} is not a JPEG, PNG, or WebP file': '{{name}} is not a JPEG, PNG, or WebP file',
'R & W': '读写', 'R & W': '读写',
Read: '只读', Read: '只读',
Write: '只写', Write: '只写',
@ -334,6 +400,9 @@ export default {
'Calculate optimal read relays': '计算最佳读服务器', 'Calculate optimal read relays': '计算最佳读服务器',
'Login to set': '登录后设置', 'Login to set': '登录后设置',
'Please login to view following feed': '请登录以查看关注动态', 'Please login to view following feed': '请登录以查看关注动态',
'Follow set': 'Follow set',
'Follow set feed empty':
'This NIP-51 list is empty, was not found, or relays could not load it yet.',
'Send only to r': '只发送到 {{r}}', 'Send only to r': '只发送到 {{r}}',
'Send only to these relays': '只发送到这些服务器', 'Send only to these relays': '只发送到这些服务器',
Explore: '探索', Explore: '探索',
@ -371,6 +440,43 @@ export default {
Topics: 'Topics', Topics: 'Topics',
'Open in a': '在 {{a}} 中打开', 'Open in a': '在 {{a}} 中打开',
'Cannot handle event of kind k': '无法处理类型为 {{k}} 的事件', 'Cannot handle event of kind k': '无法处理类型为 {{k}} 的事件',
'Unsupported event preview':
'There isn’t a dedicated card for this event type yet. Here’s a readable preview.',
'No text content in event': 'No text in this event.',
'Technical details': 'Technical details',
'Event kind and time': 'Kind {{kind}} · {{time}}',
'Event kind label': 'Kind {{kind}}',
'Note kind label line': 'KIND: {{kind}} · {{description}}',
'Unknown note declared kind tag': 'Tagged kind: {{value}}',
'Unknown note tagged pubkey': 'Tagged pubkey',
'Unknown note tagged content': 'Content',
'Unknown note reference tags': 'Reference tags (e, p, q, a)',
'Starred spells': 'Starred spells',
'Spell star add title': 'Star spell (adds to your Nostr bookmarks)',
'Spell star remove title': 'Unstar spell (removes from your Nostr bookmarks)',
'Copy JSON': 'Copy JSON',
Verse: 'Verse',
'Notification reaction summary': 'reacted to this note.',
'Notification discussion upvote summary': 'upvoted in this discussion.',
'Notification discussion downvote summary': 'downvoted in this discussion.',
'Notification boost summary': 'Boosted this note',
'Notification boost detail': 'The preview above is the original post.',
'Notification poll vote summary': 'Voted on the poll above.',
'Notification poll vote options count': '{{count}} option(s) selected',
'Jumble Imwald synthetic event': 'Jumble Imwald synthetic event',
'+ Add a URL to this list': 'Add a URL to this list',
'Add a web URL': 'Add a web URL',
'Add web URL to feed description':
'Adds a card to this feed. Open the page from the card when you want to read, reply, react, or highlight.',
'Add to feed': 'Add to feed',
'Open any https page in the side panel to reply, react, and discuss on Nostr.':
'Open any https page in the side panel to reply, react, and discuss on Nostr.',
'Enter a valid http(s) URL': 'Enter a valid http(s) URL',
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.':
'Opened by URL — not from your RSS list. Nostr thread is still tied to this link.',
'Open in browser': 'Open in browser',
'Web page': 'Web page',
Open: 'Open',
'Sorry! The note cannot be found 😔': '抱歉!找不到该笔记 😔', 'Sorry! The note cannot be found 😔': '抱歉!找不到该笔记 😔',
'This user has been muted': '该用户已被屏蔽', 'This user has been muted': '该用户已被屏蔽',
Wallet: '钱包', Wallet: '钱包',
@ -388,6 +494,9 @@ export default {
All: '全部', All: '全部',
Reactions: '互动', Reactions: '互动',
Zaps: '打闪', Zaps: '打闪',
Boosts: '助推',
Badges: 'Badges',
Reports: 'Reports',
'Enjoying Jumble?': '喜欢 Jumble 吗?', 'Enjoying Jumble?': '喜欢 Jumble 吗?',
'Your donation helps me maintain Jumble and make it better! 😊': 'Your donation helps me maintain Jumble and make it better! 😊':
'您的捐赠帮助我维护 Jumble 并使其更好!😊', '您的捐赠帮助我维护 Jumble 并使其更好!😊',
@ -430,6 +539,11 @@ export default {
'no more relays': '没有更多服务器了', 'no more relays': '没有更多服务器了',
'Favorited by': '收藏自', 'Favorited by': '收藏自',
'Post settings': '发布设置', 'Post settings': '发布设置',
'Publishing feedback': 'Publishing feedback',
'Publish success toasts': 'Publish success toasts',
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.':
'Show green notifications when posts, replies, reactions, and other publishes succeed. When off, a small checkmark appears briefly at the bottom-right instead. Errors and failures still use a toast.',
'Publish successful': 'Publish successful',
'Media upload service': '媒体上传服务', 'Media upload service': '媒体上传服务',
'Choose a relay': '选择一个服务器', 'Choose a relay': '选择一个服务器',
'no relays found': '未找到服务器', 'no relays found': '未找到服务器',
@ -443,6 +557,15 @@ export default {
Bookmarks: '收藏', Bookmarks: '收藏',
'Follow Packs': 'Follow Packs', 'Follow Packs': 'Follow Packs',
'Follow Pack': 'Follow Pack', 'Follow Pack': 'Follow Pack',
'Follow pack by': 'by',
'In Follow Packs': 'In Follow Packs',
'Badge details': 'Badge details',
'Issued by': 'Issued by',
'Other recipients': 'Other recipients',
'No other recipients found': 'No other recipients found',
'Recipients could not be loaded': 'Recipients could not be loaded',
'View award': 'View award',
'Awarded on': 'Awarded on',
'Please log in to follow': 'Please log in to follow', 'Please log in to follow': 'Please log in to follow',
'Following All': 'Following All', 'Following All': 'Following All',
'Followed {{count}} users': 'Followed {{count}} users', 'Followed {{count}} users': 'Followed {{count}} users',
@ -456,11 +579,26 @@ export default {
General: '常规', General: '常规',
Autoplay: '自动播放', Autoplay: '自动播放',
'Enable video autoplay on this device': '在此设备上启用视频自动播放', 'Enable video autoplay on this device': '在此设备上启用视频自动播放',
'liveActivities.heading': 'Live now',
'liveActivities.regionLabel': 'Live spaces and streams',
'liveActivities.fromFollow': 'From someone you follow',
'liveActivities.goToSlide': 'Show live item {{n}}',
'liveActivities.settingsToggle': 'Live activities banner',
'liveActivities.settingsHint':
'Shows NIP-53 live rooms (audio/video spaces) from your relays. Updates on a quarter-hour schedule and when the app finishes its initial session warm-up.',
'Add random relays to every publish': 'Random relays in publish list', 'Add random relays to every publish': 'Random relays in publish list',
'Add random relays to every publish description': '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.', '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_local: 'Local',
relayType_relay_list: 'Relay list', relayType_relay_list: 'Relay list',
relayType_http_relay_list: 'HTTP',
'HTTP relays': 'HTTP relays',
httpRelaysDescription:
'HTTPS index relays (e.g. REST /api/events/filter). Same read/write/both roles as mailbox relays; stored as kind 10243. Clear the list and save to publish an empty list.',
'HTTP relays saved': 'HTTP relays saved',
'Failed to save HTTP relay list': 'Failed to save HTTP relay list',
'HTTP relays must start with https:// or http://':
'HTTP relays must start with https:// or http://',
relayType_client_default: 'Client default', relayType_client_default: 'Client default',
relayType_open_from: 'Current feed', relayType_open_from: 'Current feed',
relayType_favorite: 'Favorite', relayType_favorite: 'Favorite',
@ -480,9 +618,34 @@ export default {
'Session relays scored random hint': '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.', '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)', 'Session relays all striked': 'All striked relays (any source)',
'Session relays clear strike': 'Allow again',
'Session relays clear strike hint':
'Remove this relay from the session block list; it will be used again until new connection failures.',
successes: 'successes', successes: 'successes',
None: 'None', None: 'None',
'Cache & offline storage': 'Cache & offline storage', 'Cache & offline storage': 'Cache & offline storage',
feedStarting: 'Starting feeds and relays… This can take a few seconds after login.',
refreshCacheButtonExplainer:
'Refresh Cache runs an IndexedDB upgrade check, re-fetches your relay lists and profile-related events from the network (same work as the automatic startup sync), syncs kind-5 deletions into tombstones and removes deleted items from the local cache, then refreshes the store counts below.',
'eventArchive.sectionTitle': 'Notes & feed archive',
'eventArchive.sectionBlurb':
'Keeps notes, reactions, and timeline order on disk so feeds can load offline or on slow links. Replaceable data (profiles, relay lists, publications) stays in its existing stores — this archive only fills gaps for “firehose” events. Turn off to rely on relays only.',
'eventArchive.defaultsMobile':
'This device profile uses small defaults: about {{lru}} events in memory, ~{{mb}} MB / {{ev}} archived events (reactions/zaps drop first).',
'eventArchive.defaultsElectron':
'Desktop app defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.defaultsDesktopWeb':
'Desktop browser defaults: ~{{lru}} in-memory events, ~{{mb}} MB / {{ev}} archived events.',
'eventArchive.enablePersist': 'Persist feed events to disk',
'eventArchive.maxMb': 'Max archive size (MB), blank = default for this device',
'eventArchive.maxEvents': 'Max archived events, blank = default',
'eventArchive.sessionLru': 'In-memory session cache (event count), blank = default',
'eventArchive.effectiveSummary':
'Currently: {{enabled}} — ~{{mb}} MB budget, {{events}} events, {{lru}} session LRU.',
'eventArchive.on': 'on',
'eventArchive.off': 'off',
'eventArchive.apply': 'Apply cache settings',
'eventArchive.appliedToast': 'Cache settings saved. Session memory updated.',
'Paste or drop media files to upload': '支持粘贴或拖放媒体文件进行上传', 'Paste or drop media files to upload': '支持粘贴或拖放媒体文件进行上传',
Preview: '预览', Preview: '预览',
'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?': 'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?':
@ -522,6 +685,11 @@ export default {
Pay: '支付', Pay: '支付',
interactions: '互动', interactions: '互动',
notifications: '通知', notifications: '通知',
notificationsViewAsAccount: 'View as',
notificationsViewAsAccountAria:
'Switch stored account. Notifications, replies, zaps, reactions, and boosts use this account.',
notificationsSwitchAccountFailed:
'Could not switch account. Check your signer, password, or extension and try again.',
'Show untrusted {type}': '显示不受信任的{{type}}', 'Show untrusted {type}': '显示不受信任的{{type}}',
'Hide untrusted {type}': '隐藏不受信任的{{type}}', 'Hide untrusted {type}': '隐藏不受信任的{{type}}',
'Currently hiding {type} from untrusted users.': '当前隐藏来自不受信任用户的{{type}}。', 'Currently hiding {type} from untrusted users.': '当前隐藏来自不受信任用户的{{type}}。',
@ -573,8 +741,41 @@ export default {
'Relay URLs (optional, comma-separated)': '中继服务器 URL(可选,逗号分隔)', 'Relay URLs (optional, comma-separated)': '中继服务器 URL(可选,逗号分隔)',
'Remove poll': '移除投票', 'Remove poll': '移除投票',
'Refresh results': '刷新结果', 'Refresh results': '刷新结果',
'{{votes}} · {{pct}}%': '{{votes}} · {{pct}}%',
'See results': 'See results',
'Zap poll (paid votes)': 'Zap poll (paid votes)',
'Invalid zap poll': 'Invalid zap poll',
'You voted on this poll (zap receipt)': 'You voted on this poll (zap receipt)',
'Poll closed {{time}}': 'Poll closed {{time}}',
'Closes {{time}}': 'Closes {{time}}',
'Vote size': 'Vote size',
'{{n}} sats (fixed)': '{{n}} sats (fixed)',
'{{min}}–{{max}} sats': '{{min}}–{{max}} sats',
'≥ {{n}} sats': '≥ {{n}} sats',
'≤ {{n}} sats': '≤ {{n}} sats',
'Loading tally…': 'Loading tally…',
'Zap poll no votes yet':
'No zap votes found on the relays we queried (try Refresh tally, or votes may live on other relays).',
'Consensus threshold': 'Consensus threshold',
'Pay to': 'Pay to',
Recipient: 'Recipient',
Option: 'Option',
'Select option': 'Select option',
'Select an option': 'Select an option',
'Vote with zap': 'Vote with zap',
'Zap sent': 'Zap sent',
'Zapping…': 'Zapping…',
'Refresh tally': 'Refresh tally',
'{{n}} zaps': '{{n}} zaps',
Poll: '投票', Poll: '投票',
Media: '媒体', Media: '媒体',
'Articles and Publications': 'Articles and Publications',
'Search articles...': 'Search articles...',
'Refreshing articles...': 'Refreshing articles...',
'No articles or publications found': 'No articles or publications found',
'No articles or publications match your search':
'No articles or publications match your search',
'articles and publications': 'articles and publications',
Interests: 'Interests', Interests: 'Interests',
Calendar: 'Calendar', Calendar: 'Calendar',
'No subscribed interests yet.': 'No subscribed interests yet.':
@ -585,6 +786,10 @@ export default {
'Nothing to load for this feed.': 'Nothing to load for this feed.', 'Nothing to load for this feed.': 'Nothing to load for this feed.',
'No posts loaded for this feed. Try refreshing.': 'No posts loaded for this feed. Try refreshing.':
'No posts loaded for this feed. Try refreshing.', 'No posts loaded for this feed. Try refreshing.',
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.':
'Relays returned no events for this feed. They may be offline, slow, or not indexing these notes.',
'Per-relay timeline results ({{count}} connections)':
'Per-relay timeline results ({{count}} connections)',
'Republish to ...': '重新发布到 ...', 'Republish to ...': '重新发布到 ...',
'All available relays': 'All available relays', 'All available relays': 'All available relays',
'All active relays (monitoring list)': 'All active relays (monitoring list)', 'All active relays (monitoring list)': 'All active relays (monitoring list)',
@ -618,7 +823,6 @@ export default {
'No more boosts': '没有更多助推了', 'No more boosts': '没有更多助推了',
'No boosts yet': '暂无助推', 'No boosts yet': '暂无助推',
'n more boosts': '{{count}} more boosts', 'n more boosts': '{{count}} more boosts',
Boosts: '助推',
FollowListNotFoundConfirmation: FollowListNotFoundConfirmation:
'未找到关注列表。你想创建一个新的吗?如果你之前已经关注了用户,请不要确认,因为此操作会导致你丢失之前的关注列表。', '未找到关注列表。你想创建一个新的吗?如果你之前已经关注了用户,请不要确认,因为此操作会导致你丢失之前的关注列表。',
MuteListNotFoundConfirmation: MuteListNotFoundConfirmation:
@ -647,12 +851,45 @@ export default {
Highlights: '高亮', Highlights: '高亮',
'A note from': 'A note from', 'A note from': 'A note from',
Polls: '投票', Polls: '投票',
'Zap polls': 'Zap polls',
'Voice Posts': '语音帖子', 'Voice Posts': '语音帖子',
'Photo Posts': '图片帖子', 'Photo Posts': '图片帖子',
'Video Posts': '视频帖子', 'Video Posts': '视频帖子',
'Git repositories': 'Git repositories',
'Git issues': 'Git issues',
'Git releases': 'Git releases',
'Git Republic repository': 'Git Republic repository',
'Git Republic issue': 'Git Republic issue',
'Git Republic release': 'Git Republic release',
'Git Republic event': 'Git Republic event',
'Git Republic': 'Git Republic',
'Open in Git Republic': 'Open in Git Republic',
'Pre-release': 'Pre-release',
Draft: 'Draft',
'Repository release': 'Repository release',
'New Repository Release': 'New Repository Release',
'Release notes use the editor below (optional).':
'Release notes use the editor below (optional).',
'Repository owner (npub or hex)': 'Repository owner (npub or hex)',
'Repository id (d-tag)': 'Repository id (d-tag)',
'Git tag name': 'Git tag name',
'Tag target (40-char commit hash)': 'Tag target (40-character commit hash)',
'40-character hex SHA-1': '40-character hex SHA-1',
'Release title': 'Release title',
'Download URL': 'Download URL',
'Draft release': 'Draft release',
'Fill repository release fields': 'Fill in all required repository release fields.',
'Invalid repository owner pubkey': 'Invalid repository owner (use npub or 64-char hex).',
'Citations require private relays (NIP-65).':
'Citations require private outbox relays (NIP-65).',
'Select All': '全选', 'Select All': '全选',
'Clear All': '清空', 'Clear All': '清空',
'Set as default filter': '设为默认过滤器', 'Set as default filter': '设为默认过滤器',
'Use filter': 'Use filter',
'See all events': 'See all events',
'See all events hint':
'Feed requests omit kind filters and every kind is shown (still subject to relay limits and other feed rules). For testing new event kinds.',
'Use filter hint': 'Only the kinds you select below are requested and shown.',
Apply: '应用', Apply: '应用',
Reset: '重置', Reset: '重置',
'Share something on this Relay': '在此服务器上分享点什么', 'Share something on this Relay': '在此服务器上分享点什么',
@ -663,8 +900,56 @@ export default {
'Hide content mentioning muted users': '隐藏提及已屏蔽用户的内容', 'Hide content mentioning muted users': '隐藏提及已屏蔽用户的内容',
'This note mentions a user you muted': '此笔记提及了您已屏蔽的用户', 'This note mentions a user you muted': '此笔记提及了您已屏蔽的用户',
Filter: '过滤器', Filter: '过滤器',
'Feed filter': 'Feed filter',
'Search loaded posts': 'Search loaded posts',
'Filter loaded posts placeholder': 'Filter by text in content or tags…',
'Feed filter author': 'Author',
'Feed filter author everyone': 'From everyone',
'Feed filter author me': 'Only from me',
'Feed filter author npub': 'From user (npub or hex)',
'Feed filter author npub from prefix': 'from:',
'Feed filter author npub placeholder': 'npub1… or 64-char hex',
'Feed filter author me needs login': 'Log in to filter by your pubkey',
'Within the last': 'Within the last',
'Time unit': 'Time unit',
Minutes: 'Minutes',
Days: 'Days',
Weeks: 'Weeks',
Months: 'Months',
Years: 'Years',
'Feed filter client-side hint':
'Filters only apply to posts already loaded; relays are not queried again.',
'Feed full search': 'Perform full search',
'Feed full search running': 'Searching…',
'Feed full search clear': 'Clear',
'Feed full search active hint':
'Showing relay search results. Clear to return to the live feed.',
'Feed full search need constraint':
'Add search text, an author filter, or a time range before searching relays.',
'Feed full search invalid feed': 'This feed cannot run a relay search.',
'Feed full search failed': 'Relay search failed. Try again.',
'Feed full search empty': 'No matching posts were found on the queried relays.',
'No loaded posts match your filters.': 'No loaded posts match your filters.',
'mentioned you in a note': '在笔记中提及了您', 'mentioned you in a note': '在笔记中提及了您',
'quoted your note': '引用了您的笔记', 'quoted your note': '引用了您的笔记',
'quoted this note': 'Quoted this note',
'highlighted this note': 'Highlighted this note',
'cited in article': 'Cited in article',
'Thread backlinks heading': 'Also quoting this note',
'Thread backlinks primary section': 'Quotes, highlights & citations',
'Thread backlinks bookmarks section': 'Bookmarks',
'Thread backlinks lists section': 'Lists & collections',
'View full note and thread': 'View full note and thread',
'labeled this note': 'Labeled this note',
'reported this note': 'Reported this note',
'bookmarked this note': 'Bookmarked this note',
'pinned this note': 'Pinned this note',
'listed this note': 'Listed this note',
'bookmark set reference': 'Bookmark set includes this note',
'curated this note': 'Curated this note',
'badge award for this note': 'Badge award for this note',
'referenced this note': 'Referenced this note',
'Report events heading': 'Moderation reports',
'voted in your poll': '在您的投票中投票', 'voted in your poll': '在您的投票中投票',
'reacted to your note': '对您的笔记做出了反应', 'reacted to your note': '对您的笔记做出了反应',
'boosted your note': '助推了您的笔记', 'boosted your note': '助推了您的笔记',
@ -720,6 +1005,10 @@ export default {
'Trending on the Default Relays': 'Trending on the Default Relays', 'Trending on the Default Relays': 'Trending on the Default Relays',
'Latest from your follows': 'Latest from your follows', 'Latest from your follows': 'Latest from your follows',
'Latest from our recommended follows': 'Latest from our recommended follows', 'Latest from our recommended follows': 'Latest from our recommended follows',
'Follows latest page title': 'Latest from follows',
'Follows latest page description':
'Recent notes from accounts you follow (or a curated list when not signed in), using their outbox relays merged with your favorites. Expand a row for notes or open the profile from the row.',
'Follows latest nav label': 'Follows latest',
'Loading follow list…': 'Loading follow list…', 'Loading follow list…': 'Loading follow list…',
'Could not load recommended follows': 'Could not load recommended follows', 'Could not load recommended follows': 'Could not load recommended follows',
'Your follow list is empty': 'Your follow list is empty', 'Your follow list is empty': 'Your follow list is empty',
@ -909,6 +1198,8 @@ export default {
'Article exported as AsciiDoc': 'Article exported as AsciiDoc', 'Article exported as AsciiDoc': 'Article exported as AsciiDoc',
'Article exported as Markdown': 'Article exported as Markdown', 'Article exported as Markdown': 'Article exported as Markdown',
'Article title (optional)': 'Article title (optional)', 'Article title (optional)': 'Article title (optional)',
articleDTagDefaultHint:
'Optional. If empty, the d-tag defaults to a type-specific prefix plus a Unix timestamp (seconds), e.g. longform-article-…, wiki-article-…, wiki-markdown-…, publication-content-….',
Audio: 'Audio', Audio: 'Audio',
Author: 'Author', Author: 'Author',
'Author is required for reading groups': 'Author is required for reading groups', 'Author is required for reading groups': 'Author is required for reading groups',
@ -971,6 +1262,7 @@ export default {
'Create New Thread': 'Create New Thread', 'Create New Thread': 'Create New Thread',
'Create Poll': 'Create Poll', 'Create Poll': 'Create Poll',
'Create Thread': 'Create Thread', 'Create Thread': 'Create Thread',
composeModeKind1: 'Short note (kind 1) — turn off other compose types',
'Create a Spell': 'Create a Spell', 'Create a Spell': 'Create a Spell',
'Creating...': 'Creating...', 'Creating...': 'Creating...',
'D-Tag': 'D-Tag', 'D-Tag': 'D-Tag',
@ -1081,6 +1373,8 @@ export default {
Insert: 'Insert', 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 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 URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.':
'Insert URL into your post and publish kind 1063 (NIP-94) with hashtag memeamigo for discoverability.',
'Insert event or address': 'Insert event or address', 'Insert event or address': 'Insert event or address',
'Insert mention': 'Insert mention', 'Insert mention': 'Insert mention',
'Internal Citation': 'Internal Citation', 'Internal Citation': 'Internal Citation',
@ -1134,6 +1428,7 @@ export default {
'New Internal Citation': 'New Internal Citation', 'New Internal Citation': 'New Internal Citation',
'New Long-form Article': 'New Long-form Article', 'New Long-form Article': 'New Long-form Article',
'New Poll': 'New Poll', 'New Poll': 'New Poll',
'New Discussion': 'New Discussion',
'New Prompt Citation': 'New Prompt Citation', 'New Prompt Citation': 'New Prompt Citation',
'New Public Message': 'New Public Message', 'New Public Message': 'New Public Message',
'New Wiki Article': 'New Wiki Article', 'New Wiki Article': 'New Wiki Article',
@ -1165,7 +1460,8 @@ export default {
'Open Timestamp': 'Open Timestamp', '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.':
'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', 'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.':
'Opens in a new tab. Copy an image URL there, then paste below. If this picker closed, click “Insert meme” again to paste.',
Optional: 'Optional', Optional: 'Optional',
'Optional image for the event': 'Optional image for the event', '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':
@ -1174,6 +1470,7 @@ export default {
'Page Range': 'Page Range', 'Page Range': 'Page Range',
Pages: 'Pages', Pages: 'Pages',
'Paste URL of a GIF': 'Paste URL of a GIF', 'Paste URL of a GIF': 'Paste URL of a GIF',
'Paste URL of a meme image': 'Paste URL of a meme image',
'Paste the entire original passage that contains your highlight': 'Paste the entire original passage that contains your highlight':
'Paste the entire original passage that contains your highlight', 'Paste the entire original passage that contains your highlight',
Photo: 'Photo', Photo: 'Photo',
@ -1197,6 +1494,8 @@ export default {
'Prompt Citation Settings': 'Prompt Citation Settings', 'Prompt Citation Settings': 'Prompt Citation Settings',
'Prompt Conversation Script': 'Prompt Conversation Script', 'Prompt Conversation Script': 'Prompt Conversation Script',
'Proof of Work': 'Proof of Work', 'Proof of Work': 'Proof of Work',
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post':
'Publish kind 1063 (NIP-94) for this GIF and insert the URL into your post',
'Publish to Relays': 'Publish to Relays', 'Publish to Relays': 'Publish to Relays',
'Published By': 'Published By', 'Published By': 'Published By',
'Published In': 'Published In', 'Published In': 'Published In',
@ -1206,7 +1505,61 @@ export default {
'Publisher name (optional)': 'Publisher name (optional)', 'Publisher name (optional)': 'Publisher name (optional)',
'Quiet Tags': 'Quiet Tags', 'Quiet Tags': 'Quiet Tags',
'RSS Feed': 'RSS Feed', 'RSS Feed': 'RSS Feed',
'RSS + Web': 'RSS + Web',
'RSS feed source': 'RSS feed source',
'All feed sources': 'All feed sources',
'RSS feed view mode': 'RSS feed view mode',
'Article URLs': 'Article URLs',
'Article URLs subtitle':
'One card per link: URLs from Nostr relays (you and people you follow) plus any RSS hit. No RSS row yet → web preview card.',
'RSS timeline': 'RSS timeline',
'RSS timeline subtitle':
'Every item from your subscribed feeds, newest first — classic RSS reader.',
URLs: 'URLs',
RSS: 'RSS',
Both: 'Both',
'RSS feed item label': 'RSS',
'Web URL item label': 'Web URL',
'URL thread activity': 'URL thread activity',
'Suppress Clawstr links in RSS previews': 'Hide clawstr.com in RSS and URL feed',
'Hide local, media & feed URLs from URL cards':
'Hide local, media, feed, document & XML links from the feed',
'RSS articles': 'RSS articles',
'Web comments': 'Web comments',
'Web highlights': 'Web highlights',
'In your bookmarks': 'In your bookmarks',
'{{count}} RSS entries for this URL': '{{count}} RSS entries for this URL',
'No comments yet': 'No comments yet',
'No highlights yet': 'No highlights yet',
'Showing {{filtered}} of {{total}} entries': 'Showing {{filtered}} of {{total}} entries',
standardRssFeed_spotifeed: 'Spotify playlist (Spotifeed)',
standardRssFeed_youtube: 'YouTube feed',
standardRssFeed_youtubeChannel: 'YouTube channel feed',
standardRssFeed_youtubePlaylist: 'YouTube playlist feed',
standardRssFeed_feedburner: 'FeedBurner',
standardRssFeed_reddit: 'Reddit RSS',
standardRssFeed_substack: 'Substack',
standardRssFeed_medium: 'Medium',
'RSS Feed Settings': 'RSS Feed Settings', 'RSS Feed Settings': 'RSS Feed Settings',
'Follow sets': 'Follow sets',
'Follow sets settings intro':
'NIP-51 follow sets (kind 30000) group people for custom feeds (for example in Spells). Lists are published to your NIP-65 outboxes and profile discovery relays.',
'New follow set': 'New follow set',
'Edit follow set': 'Edit follow set',
'No follow sets yet': 'You have not created any follow sets yet.',
'Follow set saved': 'Follow set saved',
'Follow set deleted': 'Follow set deleted',
'Failed to load follow sets': 'Failed to load follow sets',
members: 'members',
'Optional display title': 'Optional display title',
'List id (d tag)': 'List id (d tag)',
'Follow set d tag hint':
'Stable identifier for this list. It cannot be changed after the first publish.',
'People in this list': 'People in this list',
'Delete follow set?': 'Delete this follow set?',
'Delete follow set confirm':
'This sends a deletion request (kind 5) for the list. Relays that accept it will drop the list; other clients may still show a cached copy until they refresh.',
'Remove feed': 'Remove feed',
'RSS Feeds': 'RSS Feeds', 'RSS Feeds': 'RSS Feeds',
'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file', 'RSS feeds exported to OPML file': 'RSS feeds exported to OPML file',
'RSS feeds saved': 'RSS feeds saved', 'RSS feeds saved': 'RSS feeds saved',
@ -1259,6 +1612,7 @@ export default {
'Search logs...': 'Search logs...', 'Search logs...': 'Search logs...',
'Search notes, threads, long-form…': 'Search notes, threads, long-form…', 'Search notes, threads, long-form…': 'Search notes, threads, long-form…',
'Search on GifBuddy': 'Search on GifBuddy', 'Search on GifBuddy': 'Search on GifBuddy',
'Search on Meme Amigo': 'Search on Meme Amigo',
'Search posts...': 'Search posts...', 'Search posts...': 'Search posts...',
'Search threads by title, content, tags, npub, author...': 'Search threads by title, content, tags, npub, author...':
'Search threads by title, content, tags, npub, author...', 'Search threads by title, content, tags, npub, author...',
@ -1269,6 +1623,10 @@ export default {
'Select Media Type': 'Select Media Type', 'Select Media Type': 'Select Media Type',
'Select group...': 'Select group...', 'Select group...': 'Select group...',
'Select relays': 'Select relays', 'Select relays': 'Select relays',
'Publish relay cap hint':
'At most {{max}} relays are contacted per publish. Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted; lower-priority checks are skipped first if you exceed the cap. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Publish relay cap hint with outbox first':
'At most {{max}} relays per publish. Your NIP-65 write relay(s) use {{reservedSlots}} of those slots first (merged ahead of this picker; they may also appear checked below). Of the {{selected}} relay(s) you checked here, {{selectedContacted}} will be contacted. Session-blocked relays are skipped. See console [PublishEvent] for the exact list.',
'Select the group where you want to create this discussion.': 'Select the group where you want to create this discussion.':
'Select the group where you want to create this discussion.', 'Select the group where you want to create this discussion.',
'Select topic...': 'Select topic...', 'Select topic...': 'Select topic...',
@ -1313,6 +1671,14 @@ export default {
'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.':
'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 GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.':
'This GIF comes from kind 1063 (NIP-94 file metadata). Choosing it still publishes your own kind 1063 to your write relays (and fast write relays as fallback) so your relays index the URL.',
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1 note. Notes are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.':
'This GIF was found in a kind 1111 comment. Comments are not NIP-94 GIF index entries; publish kind 1063 yourself if you want it discoverable as file metadata.',
'This GIF was found in a Nostr event of kind {{kind}}.':
'This GIF was found in a Nostr event of kind {{kind}}.',
'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 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':
@ -1422,6 +1788,26 @@ export default {
threads: 'threads', threads: 'threads',
'topic1, topic2, topic3': 'topic1, topic2, topic3', 'topic1, topic2, topic3': 'topic1, topic2, topic3',
'{{count}} relay(s) selected': '{{count}} relay(s) selected', '{{count}} relay(s) selected': '{{count}} relay(s) selected',
'🔞 NSFW 🔞': '🔞 NSFW 🔞' '🔞 NSFW 🔞': '🔞 NSFW 🔞',
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).':
'Choose a suggested topic or type your own. It becomes a normalized tag (e.g. my-topic).',
'Failed to refresh': 'Failed to refresh',
'Invalid article link.': 'Invalid article link.',
Likes: 'Likes',
'Loading…': 'Loading…',
'Missing pubkey': 'Missing pubkey',
'No RSS feed list found on relays': 'No RSS feed list found on relays',
'Pinned posts': 'Pinned posts',
'Publishing...': 'Publishing...',
'RSS article': 'RSS article',
'RSS feed list refreshed': 'RSS feed list refreshed',
'Save or discard your changes before refreshing from relays':
'Save or discard your changes before refreshing from relays',
'Suggested topics': 'Suggested topics',
'Synthetic event (no author)': 'Synthetic event (no author)',
'Topic is required': 'Topic is required',
'Type a topic or pick from the list': 'Type a topic or pick from the list',
profileEditorRefreshCacheHint: 'profileEditorRefreshCacheHint',
startupSessionHydrating: 'startupSessionHydrating'
} }
} }

45
src/providers/FavoriteRelaysActivityProvider.tsx

@ -10,6 +10,7 @@ import { useFavoriteRelays } from '@/providers/FavoriteRelaysProvider'
import { useNostr } from '@/providers/NostrProvider' import { useNostr } from '@/providers/NostrProvider'
import { queryService, replaceableEventService } from '@/services/client.service' import { queryService, replaceableEventService } from '@/services/client.service'
import indexedDb from '@/services/indexed-db.service' import indexedDb from '@/services/indexed-db.service'
import storage from '@/services/local-storage.service'
import type { Event } from 'nostr-tools' import type { Event } from 'nostr-tools'
import { kinds } from 'nostr-tools' import { kinds } from 'nostr-tools'
import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
@ -82,6 +83,12 @@ export function FavoriteRelaysActivityProvider({ children }: { children: React.R
const [activeNpubsDrawerOpen, setActiveNpubsDrawerOpen] = useState(false) const [activeNpubsDrawerOpen, setActiveNpubsDrawerOpen] = useState(false)
const [fallbackFollowings, setFallbackFollowings] = useState<string[]>([]) const [fallbackFollowings, setFallbackFollowings] = useState<string[]>([])
const lastCompletedFetchAtRef = useRef(Date.now()) const lastCompletedFetchAtRef = useRef(Date.now())
/** Nostr pubkey hydrates async after reload; storage already has current account (init before React mount). */
const viewerForPulseCache = viewerPubkey ?? storage.getCurrentAccount()?.pubkey ?? null
const orderedPubkeysRef = useRef<string[]>([])
orderedPubkeysRef.current = orderedPubkeys
/** After restoring from disk, ignore the first empty network result (timeouts / slow relays), then behave normally. */
const skipFirstEmptyNetworkOverwriteRef = useRef(false)
const relayKey = useMemo( const relayKey = useMemo(
() => getFavoritesFeedRelayUrls(favoriteRelays, blockedRelays).join('\n'), () => getFavoritesFeedRelayUrls(favoriteRelays, blockedRelays).join('\n'),
[favoriteRelays, blockedRelays] [favoriteRelays, blockedRelays]
@ -89,6 +96,7 @@ export function FavoriteRelaysActivityProvider({ children }: { children: React.R
const fetchActive = useCallback( const fetchActive = useCallback(
async (useDefaultRelays = false) => { async (useDefaultRelays = false) => {
const cacheViewer = viewerPubkey ?? storage.getCurrentAccount()?.pubkey ?? null
const urls = useDefaultRelays const urls = useDefaultRelays
? getFavoritesFeedRelayUrls([], blockedRelays) ? getFavoritesFeedRelayUrls([], blockedRelays)
: getFavoritesFeedRelayUrls(favoriteRelays, blockedRelays) : getFavoritesFeedRelayUrls(favoriteRelays, blockedRelays)
@ -101,7 +109,7 @@ export function FavoriteRelaysActivityProvider({ children }: { children: React.R
setLastFetchedAtMs(now) setLastFetchedAtMs(now)
writeRelayPulseActiveNpubsCache({ writeRelayPulseActiveNpubsCache({
relayKey, relayKey,
viewerPubkey: viewerPubkey ?? null, viewerPubkey: cacheViewer,
orderedPubkeys: [], orderedPubkeys: [],
lastFetchedAtMs: now lastFetchedAtMs: now
}) })
@ -121,15 +129,26 @@ export function FavoriteRelaysActivityProvider({ children }: { children: React.R
) )
const now = Date.now() const now = Date.now()
const nextPubkeys = aggregatePubkeysByRecency(events) const nextPubkeys = aggregatePubkeysByRecency(events)
setOrderedPubkeys(nextPubkeys) const prev = orderedPubkeysRef.current
lastCompletedFetchAtRef.current = now if (
setLastFetchedAtMs(now) skipFirstEmptyNetworkOverwriteRef.current &&
writeRelayPulseActiveNpubsCache({ nextPubkeys.length === 0 &&
relayKey, prev.length > 0
viewerPubkey: viewerPubkey ?? null, ) {
orderedPubkeys: nextPubkeys, skipFirstEmptyNetworkOverwriteRef.current = false
lastFetchedAtMs: now logger.debug('[FavoriteRelaysActivity] kept relay pulse from cache; first fetch returned empty')
}) } else {
skipFirstEmptyNetworkOverwriteRef.current = false
setOrderedPubkeys(nextPubkeys)
lastCompletedFetchAtRef.current = now
setLastFetchedAtMs(now)
writeRelayPulseActiveNpubsCache({
relayKey,
viewerPubkey: cacheViewer,
orderedPubkeys: nextPubkeys,
lastFetchedAtMs: now
})
}
} catch (error) { } catch (error) {
logger.debug('[FavoriteRelaysActivity] fetch failed', { error, useDefaultRelays }) logger.debug('[FavoriteRelaysActivity] fetch failed', { error, useDefaultRelays })
if (!useDefaultRelays && favoriteRelays.length > 0) { if (!useDefaultRelays && favoriteRelays.length > 0) {
@ -148,6 +167,7 @@ export function FavoriteRelaysActivityProvider({ children }: { children: React.R
/** Reset pulse state when account or relay set changes so we show loading until fresh data. */ /** Reset pulse state when account or relay set changes so we show loading until fresh data. */
const resetForRefetch = useCallback(() => { const resetForRefetch = useCallback(() => {
skipFirstEmptyNetworkOverwriteRef.current = false
setRelayActivityReady(false) setRelayActivityReady(false)
setOrderedPubkeys([]) setOrderedPubkeys([])
setProfileKind0ByPubkey({}) setProfileKind0ByPubkey({})
@ -180,13 +200,14 @@ export function FavoriteRelaysActivityProvider({ children }: { children: React.R
/** Restore last successful relay-pulse author list from localStorage (same relay set + viewer). */ /** Restore last successful relay-pulse author list from localStorage (same relay set + viewer). */
useEffect(() => { useEffect(() => {
const row = readRelayPulseActiveNpubsCache(relayKey, viewerPubkey ?? null) const row = readRelayPulseActiveNpubsCache(relayKey, viewerForPulseCache)
if (!row) return if (!row) return
setOrderedPubkeys(row.orderedPubkeys) setOrderedPubkeys(row.orderedPubkeys)
setLastFetchedAtMs(row.lastFetchedAtMs) setLastFetchedAtMs(row.lastFetchedAtMs)
setRelayActivityReady(true) setRelayActivityReady(true)
lastCompletedFetchAtRef.current = row.lastFetchedAtMs lastCompletedFetchAtRef.current = row.lastFetchedAtMs
}, [relayKey, viewerPubkey]) skipFirstEmptyNetworkOverwriteRef.current = row.orderedPubkeys.length > 0
}, [relayKey, viewerForPulseCache])
/** When follow list from context is empty but we have a logged-in viewer, try IndexedDB cache. /** When follow list from context is empty but we have a logged-in viewer, try IndexedDB cache.
* Fixes race where pulse data arrives before NostrProvider has hydrated follow list from cache. */ * Fixes race where pulse data arrives before NostrProvider has hydrated follow list from cache. */

5
src/providers/LiveActivitiesProvider.tsx

@ -11,7 +11,7 @@ import client from '@/services/client.service'
import { registerLiveActivitiesPrewarmCallback } from '@/services/live-activities-prewarm-bridge' import { registerLiveActivitiesPrewarmCallback } from '@/services/live-activities-prewarm-bridge'
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react' import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react'
import { useFavoriteRelays } from './FavoriteRelaysProvider' import { useFavoriteRelays } from './FavoriteRelaysProvider'
import { useFollowList } from './FollowListProvider' import { useFollowListOptional } from './FollowListProvider'
import { useNostr } from './NostrProvider' import { useNostr } from './NostrProvider'
import { useUserPreferences } from './UserPreferencesProvider' import { useUserPreferences } from './UserPreferencesProvider'
@ -37,7 +37,8 @@ export function useLiveActivitiesOptional(): TLiveActivitiesContext | undefined
export function LiveActivitiesProvider({ children }: { children: React.ReactNode }) { export function LiveActivitiesProvider({ children }: { children: React.ReactNode }) {
const { pubkey, relayList, isInitialized, isAccountSessionHydrating } = useNostr() const { pubkey, relayList, isInitialized, isAccountSessionHydrating } = useNostr()
const { favoriteRelays, blockedRelays } = useFavoriteRelays() const { favoriteRelays, blockedRelays } = useFavoriteRelays()
const { followings } = useFollowList() const followListCtx = useFollowListOptional()
const followings = followListCtx?.followings ?? []
const { showLiveActivitiesBanner } = useUserPreferences() const { showLiveActivitiesBanner } = useUserPreferences()
const [items, setItems] = useState<TLiveActivityItem[]>([]) const [items, setItems] = useState<TLiveActivityItem[]>([])

Loading…
Cancel
Save