// Lightweight i18n. t('key', {vars}) interpolates {var} and falls back to the // English string (then the key). The chosen language persists in localStorage; // otherwise it's guessed from the browser. Arabic/Urdu render right-to-left. // // NOTE: non-English translations are machine-generated and would benefit from // native-speaker review. The English table (en) is the source of truth. export const LANGS = [ ['en', 'English'], ['zh', '中文'], ['hi', 'हिन्दी'], ['es', 'Español'], ['fr', 'Français'], ['ar', 'العربية'], ['bn', 'বাংলা'], ['pt', 'Português'], ['ru', 'Русский'], ['ur', 'اردو'], ['id', 'Indonesia'], ['de', 'Deutsch'], ['ja', '日本語'], ['sw', 'Kiswahili'], ['mr', 'मराठी'], ['te', 'తెలుగు'], ['tr', 'Türkçe'], ['ta', 'தமிழ்'], ['vi', 'Tiếng Việt'], ['ko', '한국어'], ]; const RTL = new Set(['ar', 'ur']); export const isRTL = (l) => RTL.has(l || lang); const STR = { en: { arkHistoryIncomplete: 'History incomplete', arkDetailsNotSynced: 'Payment details not synced', arkHistoryIncompleteHelp: 'These coins have been used, but the payment details and any remaining change have not synced to this device. Open the wallet that made the payments and let it sync.', arkOriginalCoins: 'Original coin total', arkDetectedAt: 'Detected on this device', appTitle: 'coinos', home: 'Home', lockWallet: 'Lock wallet', accounts: 'Accounts', addWallet: 'Add account', signInAnother: 'Sign into another account', signInAnotherNote: 'Add a different identity (Nostr, passkey or Google) without signing out. Switch between them here anytime.', switchIdentityTitle: 'Switch account', switchIdentityDesc: 'Accounts already signed in on this device. Tap one to switch. Nothing is logged out.', signInNew: 'Sign into a new account', identityNoKey: 'Not opened on this device yet', clearAll: 'Delete all', logoutForget: 'Logout & forget all data', entropyToggle: 'Entropy', entropySubmit: 'Submit', entropyHint: 'The seed comes from exactly what you type. Entering the same text again recreates the same wallet, on any device.', entropyWarn: '⚠ Anyone who can guess this text can take your money. Use plenty of real-world randomness: 100+ dice rolls, or the order of a fully shuffled deck of cards.', entropyPlaceholder: '4 2 6 6 1 3 5 2 …', logoutPopBlurb: 'Your accounts stay saved on this device.', logoutOne: 'Log out of {name}', logoutOneBlurbLogin: 'Only this account leaves. The others stay signed in. You can sign back in with the same key anytime.', logoutOneBlurbSeed: 'Only this account leaves. The others stay signed in. It is removed from this device, so make sure you have its recovery phrase.', logoutAll: 'Log out of all accounts', clearAllWarn: '⚠ This removes every account from this device. Any account whose recovery phrase or key you have not backed up will be lost for good.', removeWalletTitle: 'Remove account', removeWalletWarn: '⚠ Remove “{name}” from this device? It will be gone from this browser. Make sure you have its recovery phrase. Other accounts aren’t affected.', rename: 'Rename', remove: 'Remove', watchOnly: 'Watch-only', watchOnlyTag: 'watch-only', watchOnlyAdd: 'Add watch-only', watchOnlyDesc: 'Watch any wallet from its account public key. You can receive and view balance and history, but not send.', watchOnlyNote: 'This is a watch-only wallet. You can receive and view, but you cannot send.', loadSeedTitle: 'Load recovery phrase', loadSeedDesc: "Enter this wallet's recovery phrase (or private key) to spend from it. It must match this wallet.", loadSeedBtn: 'Load recovery phrase', seedPlaceholder: 'Recovery phrase or xprv', bip39PassphraseOpt: 'BIP39 passphrase (optional)', alsoSaveDevice: 'Also save to this device', enterSeedToSpend: 'Enter your recovery phrase.', seedMismatch: "That recovery phrase doesn't match this wallet.", seedNeedsPrivate: "That's a public key. Enter the recovery phrase or private key to spend.", seedInvalid: 'Not a valid recovery phrase or key.', watchOnlySendTitle: 'Load your seed to send', watchOnlySendDesc: "You're viewing this wallet without its seed, so you can't spend yet. Load your recovery phrase to send.", watchXpubLabel: 'Account xpub or zpub', labelOptional: 'Label (optional)', walletLabelN: 'Account {n}', watchLabelN: 'Watch {n}', saveDevice: 'Save on this device', forgetDevice: 'Saved · forg
{
"formatter": {
"indentStyle": "space"
},
"vcs": {
"enabled": true,
"clientKind": "git",
"useIgnoreFile": false
}
}