diff options
Diffstat (limited to 'src/i18n.js')
| -rw-r--r-- | src/i18n.js | 79 |
1 files changed, 71 insertions, 8 deletions
diff --git a/src/i18n.js b/src/i18n.js index ecc5bb4..fdcd1e1 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -36,7 +36,7 @@ export const isRTL = (l) => RTL.has(l || lang); const STR = { en: { mediaSeek: 'Seek', - mediaAtTime: 'at this time', + mediaMomentDrop: 'About the whole post, not this moment', mediaCommentAt: 'Comment at', arkHistoryIncomplete: 'History incomplete', arkDetailsNotSynced: 'Payment details not synced', @@ -109,6 +109,17 @@ const STR = { profDisplayName: 'Display name', profPublicKey: 'Nostr public key', profKeyLink: 'Public key', + profHistDesc: 'If another app replaced your profile, an older copy may still be on a relay that keeps history. Using one fills only the fields that are empty here.', + profHistLook: 'Look for older copies', + profHistUse: 'Use', + profHistNoName: '(no name)', + profHistNone: 'No older copy has anything this one is missing.', + profHistNothing: 'Everything in that copy is already here.', + profHistFilled: 'Filled {n} fields from the older copy. Save to publish.', + profHist_name: 'name', + profHist_about: 'bio', + profHist_picture: 'picture', + profHist_banner: 'banner', followHistTitle: 'Follow list', followHistDesc: 'You follow {n} people. If another app replaced your follow list, an older copy may still be on a relay that keeps history. Restoring adds everyone from it back; nobody is removed.', followHistLook: 'Look for older copies', @@ -282,6 +293,8 @@ const STR = { clipsAll: 'All shapes', clipsToggleTitle: 'Which clips to show: the ones that fit the screen, or all', videoTapToPlay: "Tap to play", + videoPlay: "Play", + videoPause: "Pause", pagerFetchingVideo: "Fetching the next video…", pagerFetchingPictures: "Fetching more pictures…", pagerCaughtUp: "That’s everything for now", @@ -290,6 +303,7 @@ const STR = { pagerPrevPic: 'Previous picture', pagerNextPic: 'Next picture', videoNoPicture: "This browser can’t show this video’s picture", + videoGone: "This video couldn’t be loaded from its host", videoOpenFile: "Open the file", wnDevicesTitle: 'Group invitations', wnDevicesHelp: 'White Noise and other Marmot apps invite one of your devices, and only that device gets the group. Keep the invitations coming to the device you actually use.', @@ -439,6 +453,7 @@ const STR = { profLists: 'Lists', searchTopicRow: 'Posts on this topic', searchTopicFor: 'Posts tagged #{q}', + relayLinkOpen: 'See what’s posted on this relay', alertsTitle: 'Notifications', alertsSub: 'Zaps, reactions and replies to your posts', alertsNew: '{n} new', @@ -665,6 +680,13 @@ const STR = { profComposePh: "What's on your mind?", profPostBtn: 'Post', profPosted: 'Posted', + schedToggle: 'Schedule for later', + schedAt: 'Post at', + schedBtn: 'Schedule', + schedDone: 'Scheduled for {when}', + schedTooSoon: 'Pick a time at least two minutes from now', + schedListTitle: 'Scheduled ({n})', + schedCancelled: 'Scheduled post cancelled', publicChatTitle: '{name} community', publicChatDesc: 'Live chat: read along, sign in to join the conversation', publicChatSignIn: 'Sign in to chat', @@ -684,8 +706,8 @@ const STR = { addrRead: '{min} min read', addrList: 'A list by {name}', msgSignerOff: "Your nostr signer isn't connected, so you can't post as yourself yet.", - msgAmberDms: 'Signed in with Amber, messages sent to you can’t be opened here, only ones you sent from this device.', - msgAmberConnect: 'Connect Amber', + msgAmberDms: 'Signed in with a signer app, messages sent to you can’t be opened here, only ones you sent from this device.', + msgAmberConnect: 'Connect signer', postRepostedBy: '{name} reposted', gifBtnTitle: 'Add a GIF', gifSearchPh: 'Search GIFs', @@ -776,6 +798,31 @@ const STR = { arkFeeChain: 'On-chain fee', arkFeeService: 'Service fee', arkCoinsExpired: 'expired', + arkCoinsHeld: 'held by Coinos', + arkCoopSelected: 'Only the {n} coins ticked above will move.', + arkCoopSelectedOne: 'Only the coin ticked above will move.', + arkCoopSelectedAmt: '{n} selected coins · {amount}', + arkCoopSelectedAmtOne: '1 selected coin · {amount}', + arkCustodyTitle: 'Custody strategy', + safeBootTitle: 'Coinos opened in safe mode', + safeBootBody: 'The app was closed {n} times in a row before it finished opening, so automatic connections are paused this time. Your coins and keys are untouched. Last step reached: {phase}.', + safeBootOpen: 'Open normally', + safeBootCopy: 'Copy report', + safeBootCopied: 'Copied', + arkCustodyDesc: 'Each coin expires about {days} days after it was made. Until then you can bring it on-chain yourself, without Coinos; after that, Coinos keeps honoring it. Renewing before expiry keeps your own exit, for a fee, so it is a choice:', + arkCustodyCustodial: 'Allow coins to expire', + arkCustodyCustodialDesc: 'Nothing renews and no renewal fees are paid. A coin keeps its own exit until it expires. After that, paying still works, but bringing it on-chain needs Coinos’s cooperation. The one exception: a coin whose payment history has grown very long is renewed free of the base fee, so it stays spendable.', + arkCustodySelf: 'Minimize renewal cost', + arkCustodySelfDesc: 'Coins renew in the last hours before they expire, when renewal is cheapest, so you can always exit on your own without Coinos. Roughly once every {days} days per coin. Coins too small to be worth the fee are left alone.', + arkCustodyExit: 'Minimize exit cost', + arkCustodyExitDesc: 'Every transfer adds a hop to a coin’s history, and a unilateral exit pays one on-chain transaction per hop. This renews a coin before it expires, and also as soon as its history is {hops} hops deep, so bringing any coin on-chain stays close to a fresh coin’s price. Only for coins worth it: never more than a tenth of a coin on its renewal.', + arkCustodyCostNone: 'no fees', + arkCustodyCostSelf: '{base} per renewal', + arkCustodyCostExit: '{base} near expiry, {pct} + {base} when early', + arkCustodySaved: 'Custody choice saved', + arkCustodyNotHere: 'This server does not honor expired coins, so they renew automatically here.', + arkExitNoneExitable: 'Every coin has expired, so there is nothing a unilateral exit can take on-chain: Coinos holds them now. Renewing restores your own exit; withdrawing with Coinos’s cooperation works as before.', + arkCoinsRenewDescCustodial: 'With “Allow coins to expire”, nothing renews on its own. A renewal replaces the selected coins with a single fresh one and restores your own exit for them. Every renewal costs a flat {base} toward its on-chain fee, plus a share that depends on how close each coin is to expiry. The closer, the cheaper:', noteForeignKind: 'A kind {kind} event this app doesn’t show.', zapRowText: 'zapped {n} sats', pollVoter: '{n} vote', @@ -799,8 +846,10 @@ const STR = { arkRenewStageRetry: 'The last check with the server didn’t go through; the wallet keeps trying.', arkRenewingHistory: 'Renewing', arkRenewingOpen: 'See the coins', - arkCoinsExitTitle: 'Unilateral exit', - arkCoinsCoopTitle: 'Co-operative exit', + arkCoinsExitTitle: 'Exit', + arkCoinsCoopTitle: 'Withdraw', + arkCoinsWithdrawBtn: 'Withdraw {amount}', + arkCoinsExitBtnAmt: 'Exit {amount}', arkOffboardBadAddress: 'Enter a valid on-chain address for this network.', arkCoinsExitBtn: 'Exit now', arkExitConfirmTitle: 'Start a unilateral exit?', @@ -893,6 +942,7 @@ const STR = { profNotesNone: 'No recent posts found.', profTabPosts: 'Posts', profTabReplies: 'Replies', + profTabStreams: 'Streams', profRepliesNone: 'No recent replies found.', profReplyTag: 'reply', msgSearching: 'Searching…', @@ -1028,6 +1078,10 @@ const STR = { giftWelcome: 'You’ve been sent Bitcoin', giftBackedUp: 'I’ve written it down', giftLink: 'Gift some Bitcoin', + giftNotePlaceholder: 'Add a note (optional)', + giftFromMe: 'Show it’s from me (whoever claims it follows you)', + giftFrom: 'From', + giftClaimFollows: 'Claiming it follows them', giftLinkDesc: 'Presign an amount as a link. Whoever opens it claims the Bitcoin into a brand-new wallet that only they control.', giftLinkWarn: '⚠ Anyone who opens this link can claim the amount, so share it only with the person you are gifting. Keep amounts small.', giftLinkReveal: 'Create gift link', @@ -1091,6 +1145,7 @@ const STR = { claimOr: 'or', goToWallet: 'Go to wallet', claimBtn: 'Claim it', + claimNowBtn: 'Claim it now', claimFeeNote: '~{n} fee', claimFailed: 'This gift has already been claimed or is no longer available.', claimNotVisibleBody: 'The coins funding this gift aren\u2019t visible from this wallet\u2019s network/data source. Make sure this wallet uses the same network and data source as the sender, then try again.', @@ -1357,6 +1412,8 @@ const STR = { onbSpendBody: 'Claim a username and get your own payment address. People can send you bitcoin instantly, with just your name.', onbNameWait: 'Getting things ready…', onbNotNow: 'Not now', + onbGiftNameTitle: 'Now pick a username', + onbGiftNameBody: 'Claim a name and get your own payment address, so people can send you bitcoin with just your name. Then choose a picture and a cover.', onbAvatarTitle: 'Choose your look', onbAvatarBody: 'Pick a cover and an avatar, or upload your own. You can change them anytime.', onbCover: 'Cover image', @@ -1380,8 +1437,10 @@ const STR = { nlSignInNostr: 'Sign in with Nostr', nlDesc: 'Use your Nostr account to open your wallet, on any device, with the same account.', nlExtension: 'Use browser extension', - nlAmber: 'Sign in with Amber (Android)', + nlAmber: 'Sign in with a signer app (Android)', nlAmberWait: 'Waiting for your signer app… approve there, then come back here.', + nlAmberTap: 'Your signer app has another request to answer. Open it to continue.', + nlAmberOpen: 'Open signer app', nlAmberPasteHint: 'The answer is read from the clipboard when you return. If nothing happens, paste it here:', nlAmberPastePh: 'Paste the signer’s answer', nlAmberPasteBtn: 'Use it', @@ -1390,7 +1449,7 @@ const STR = { nlPasskey: 'Sign in with a passkey', nlKeyOrBunker: 'nsec, private key, or bunker://…', nlGo: 'Log in', - nlHint: 'Works with Amber, Amethyst and other remote signers (paste their bunker:// address), or a browser extension. A pasted key is used once and never stored.', + nlHint: 'Works with remote signer apps (paste their bunker:// address) or a browser extension. A pasted key is used once and never stored.', nlApprove: 'Approve the request in your signer →', nlUnrecognized: 'That doesn’t look like a private key or a bunker:// address.', nlNewTitle: 'Create a wallet for this account', @@ -1411,7 +1470,7 @@ const STR = { nlReconnectDesc: "Your signer isn't connected, so this app can't sign as you. Reconnect it to post and update your profile. Your wallet and balance aren't affected.", nlReconnectTitle: 'Reconnect your signer', nlAmberUpgradeTitle: 'Read your messages', - nlAmberUpgradeBody: 'Amber can only open messages here when it’s connected as a remote signer. Tap below, approve in Amber (allow decrypting), and your messages will load. Signing works as before.', + nlAmberUpgradeBody: 'Your signer app can only open messages here when it’s connected as a remote signer. Tap below, approve in the signer app (allow decrypting), and your messages will load. Signing works as before.', nlReconnectBody: 'Your Nostr signer isn’t connected on this device. Reconnect to keep acting as {npub}…', nlWrongAccount: 'That signer is a different Nostr account. Reconnect with {npub}.', nlLinked: 'Wallet linked to your Nostr account', @@ -1443,6 +1502,7 @@ const STR = { namesClaim: 'Claim', namesClaimed: 'You are now {name}', namesCopy: 'Copy address', + namesChangeTo: 'Change to {addr}', namesMoreOpen: 'More options', namesMoreTitle: 'More ways to get paid', namesMoreBolt11: 'Lightning invoice (BOLT 11)', @@ -1566,6 +1626,9 @@ const STR = { notifChatHint: 'Community chat is opt-in per room. Turn it on from a room’s menu.', notifPaySent: 'Payments sent by connected apps', notifPaySentHint: 'A heads-up when a connected app (a nostr client zapping, for example) spends from this wallet while it’s closed.', + nwcWorkerLog: 'Background activity log', + nwcWorkerLogHint: 'What the wallet did while it was closed: wake-ups, payments, notifications. Copy it when reporting a problem.', + nwcWorkerLogEmpty: 'Nothing recorded yet', nwcNotifHint: 'You’ll be asked to allow notifications. The connection uses them to answer when Coinos is closed.', nwcNotifNeeded: 'Without notifications the connection couldn’t answer when Coinos is closed, so it wasn’t added. Allow notifications and try again.', nwcNotifBlocked: 'Notifications are blocked for this site. Allow them in your browser settings, then add the connection again.', |
