add intl messages part 1

pull/402/head^2
slowbackspace 5 years ago
parent 15fb502adc
commit dd99ab69d3

@ -4,9 +4,11 @@ import Link from 'components/Link';
import Button from 'components/Button';
import P from 'components/Paragraph';
import { H2 } from 'components/Heading';
import { FormattedMessage } from 'react-intl';
import ChromeImage from 'images/browser-chrome.png';
import FirefoxImage from 'images/browser-firefox.png';
import l10nMessages from './index.messages';
const Wrapper = styled.div`
padding: 24px 0px;
@ -32,21 +34,21 @@ const Browser = styled.div`
const BrowserNotSupported = () => (
<Wrapper>
<H2>Your browser is not supported</H2>
<P>Please choose one of the supported browsers</P>
<H2><FormattedMessage {...l10nMessages.TR_YOUR_BROWSER_IS_NOT_SUPPORTED} /></H2>
<P><FormattedMessage {...l10nMessages.TR_PLEASE_CHOOSE_ONE_OF_THE_SUPPORTED} /></P>
<ChooseBrowserWrapper>
<Browser>
<BrowserLogo src={ChromeImage} />
<P isSmaller>Google Chrome</P>
<Link href="https://www.google.com/chrome/">
<Button>Get Chrome</Button>
<Button><FormattedMessage {...l10nMessages.TR_GET_CHROME} /></Button>
</Link>
</Browser>
<Browser>
<BrowserLogo src={FirefoxImage} />
<P isSmaller>Mozzila Firefox</P>
<Link href="https://www.mozilla.org/en-US/firefox/new/">
<Button>Get Firefox</Button>
<Button><FormattedMessage {...l10nMessages.TR_GET_FIREFOX} /></Button>
</Link>
</Browser>

@ -0,0 +1,24 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_YOUR_BROWSER_IS_NOT_SUPPORTED: {
id: 'TR_YOUR_BROWSER_IS_NOT_SUPPORTED',
defaultMessage: 'Your browser is not supported',
},
TR_PLEASE_CHOOSE_ONE_OF_THE_SUPPORTED: {
id: 'TR_PLEASE_CHOOSE_ONE_OF_THE_SUPPORTED',
defaultMessage: 'Please choose one of the supported browsers',
},
TR_GET_CHROME: {
id: 'TR_GET_CHROME',
defaultMessage: 'Get Chrome',
},
TR_GET_FIREFOX: {
id: 'TR_GET_FIREFOX',
defaultMessage: 'Get Firefox',
},
});
export default definedMessages;

@ -3,6 +3,7 @@
import React, { PureComponent } from 'react';
import styled, { keyframes } from 'styled-components';
import TrezorConnect from 'trezor-connect';
import l10nCommonMessages from 'views/common.messages';
import P from 'components/Paragraph';
import Button from 'components/Button';
import { H2 } from 'components/Heading';
@ -149,7 +150,7 @@ class ConnectDevice extends PureComponent<Props> {
<React.Fragment>
<StyledP><FormattedMessage {...l10nMessages.TR_AND} /></StyledP>
<StyledButton isWebUsb>
<FormattedMessage {...l10nMessages.TR_CHECK_FOR_DEVICES} />
<FormattedMessage {...l10nCommonMessages.TR_CHECK_FOR_DEVICES} />
</StyledButton>
</React.Fragment>
)}

@ -19,10 +19,6 @@ const definedMessages: Messages = defineMessages({
id: 'TR_AND',
defaultMessage: 'and',
},
TR_CHECK_FOR_DEVICES: {
id: 'TR_CHECK_FOR_DEVICES',
defaultMessage: 'Check for devices',
},
TR_DEVICE_NOT_RECOGNIZED_TRY_INSTALLING: {
id: 'TR_DEVICE_NOT_RECOGNIZED_TRY_INSTALLING',
defaultMessage: 'Device not recognized? Try installing the {link}.',

@ -6,7 +6,7 @@ import colors from 'config/colors';
import { FONT_SIZE, FONT_WEIGHT } from 'config/variables';
import { Select } from 'components/Select';
import Link from 'components/Link';
import { H1, H2 } from 'components/Heading';
import { H1 } from 'components/Heading';
import Button from 'components/Button';
import P from 'components/Paragraph';
import Icon from 'components/Icon';
@ -14,7 +14,9 @@ import ICONS from 'config/icons';
import LandingWrapper from 'views/Landing/components/LandingWrapper';
import * as RouterActions from 'actions/RouterActions';
import { FormattedMessage } from 'react-intl';
import type { State as TrezorConnectState } from 'reducers/TrezorConnectReducer';
import l10nMessages from './index.messages';
type InstallTarget = {
value: string;
@ -112,17 +114,17 @@ const GoBack = styled.span`
}
`;
const Ol = styled.ul`
margin: 0 auto;
color: ${colors.TEXT_SECONDARY};
font-size: ${FONT_SIZE.BIG};
padding: 0px 0 15px 25px;
text-align: left;
`;
// const Ol = styled.ul`
// margin: 0 auto;
// color: ${colors.TEXT_SECONDARY};
// font-size: ${FONT_SIZE.BIG};
// padding: 0px 0 15px 25px;
// text-align: left;
// `;
const Li = styled.li`
text-align: justify;
`;
// const Li = styled.li`
// text-align: justify;
// `;
class InstallBridge extends PureComponent<Props, State> {
constructor(props: Props) {
@ -161,7 +163,7 @@ class InstallBridge extends PureComponent<Props, State> {
<Wrapper>
<Top>
<TitleHeader>Trezor Bridge<Version>{this.state.currentVersion}</Version></TitleHeader>
<P>New communication tool to facilitate the connection between your Trezor and your internet browser.</P>
<P><FormattedMessage {...l10nMessages.TR_NEW_COMMUNICATION_TOOL} /></P>
<Download>
<SelectWrapper
isSearchable={false}
@ -177,30 +179,39 @@ class InstallBridge extends PureComponent<Props, State> {
color={colors.WHITE}
size={30}
/>
Download latest Bridge {this.state.latestVersion}
<FormattedMessage {...l10nMessages.TR_DOWNLOAD_LATEST_BRIDGE} values={{ version: this.state.latestVersion }} />
</DownloadBridgeButton>
</Link>
</Download>
<H2>Changelog</H2>
{/* <H2><FormattedMessage {...l10nMessages.TR_CHANGELOG} /></H2>
<Ol>
{this.props.transport.bridge.changelog.map(entry => (
<Li key={entry}>{entry}</Li>
))}
</Ol>
</Ol> */}
<P isSmaller>
<LearnMoreText>Learn more about latest versions in</LearnMoreText>
<Link
href="https://github.com/trezor/trezord-go/blob/master/CHANGELOG.md"
isGreen
>Changelog
</Link>
<LearnMoreText>
<FormattedMessage
{...l10nMessages.TR_LEARN_MORE_ABOUT_LATEST_VERSION}
values={{
TR_CHANGELOG: (
<Link
href="https://github.com/trezor/trezord-go/blob/master/CHANGELOG.md"
isGreen
>
<FormattedMessage {...l10nMessages.TR_CHANGELOG} />
</Link>
),
}}
/>
</LearnMoreText>
</P>
<P>
{target.signature && (
<Link
href={this.state.uri + target.signature}
isGreen
>Check PGP signature
><FormattedMessage {...l10nMessages.TR_CHECK_PGP_SIGNATURE} />
</Link>
)}
</P>
@ -208,8 +219,8 @@ class InstallBridge extends PureComponent<Props, State> {
<Bottom>
{this.props.transport.type && (
<P>
No, i dont want to upgrade Bridge now<br />
Take me <GoBack onClick={() => this.props.selectFirstAvailableDevice()}>back to the wallet</GoBack>
<FormattedMessage {...l10nMessages.TR_DONT_UPGRADE_BRIDGE} /><br />
<GoBack onClick={() => this.props.selectFirstAvailableDevice()}><FormattedMessage {...l10nMessages.TR_TAKE_ME_BACK_TO_WALLET} /></GoBack>
</P>
)}
</Bottom>

@ -0,0 +1,37 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_NEW_COMMUNICATION_TOOL: {
id: 'TR_NEW_COMMUNICATION_TOOL',
defaultMessage: 'New communication tool to facilitate the connection between your Trezor and your internet browser.',
},
TR_DOWNLOAD_LATEST_BRIDGE: {
id: 'TR_DOWNLOAD_LATEST_BRIDGE',
defaultMessage: 'Download latest Bridge {version}',
},
TR_LEARN_MORE_ABOUT_LATEST_VERSION: {
id: 'TR_LEARN_MORE_ABOUT_LATEST_VERSION',
defaultMessage: 'Learn more about latest version in {TR_CHANGELOG}.',
},
TR_CHANGELOG: {
id: 'TR_CHANGELOG',
defaultMessage: 'Changelog',
description: 'Part of the sentence: Learn more about latest version in {TR_CHANGELOG}.',
},
TR_CHECK_PGP_SIGNATURE: {
id: 'TR_CHECK_PGP_SIGNATURE',
defaultMessage: 'Check PGP signature',
},
TR_DONT_UPGRADE_BRIDGE: {
id: 'TR_DONT_UPGRADE_BRIDGE',
defaultMessage: 'No, I don\'t want to upgrade Bridge now',
},
TR_TAKE_ME_BACK_TO_WALLET: {
id: 'TR_TAKE_ME_BACK_TO_WALLET',
defaultMessage: 'Take me back to the wallet',
},
});
export default definedMessages;

@ -9,6 +9,10 @@ import Button from 'components/Button';
import Link from 'components/Link';
import CoinLogo from 'components/images/CoinLogo';
import { FormattedMessage } from 'react-intl';
import l10nMessages from './index.messages';
const getInfoUrl = (networkShortcut: ?string) => {
const urls = {
default: 'https://wiki.trezor.io',
@ -54,13 +58,14 @@ const Message = styled(Paragraph)`
`;
const FirmwareUnsupported = (props: Props) => (
//TODO: localization
<Wrapper>
<Row>
{props.networkShortcut && <CoinLogoWrapper><StyledCoinLogo standalone network={props.networkShortcut} /></CoinLogoWrapper>}
<H1>{props.title}</H1>
<Message>{props.message}</Message>
<Link href={getInfoUrl(props.networkShortcut)}>
<Button>Find out more info</Button>
<Button><FormattedMessage {...l10nMessages.TR_FIND_OUT_MORE_INFO} /></Button>
</Link>
</Row>
</Wrapper>

@ -0,0 +1,16 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_FIND_OUT_MORE_INFO: {
id: 'TR_FIND_OUT_MORE_INFO',
defaultMessage: 'Find out more info',
},
TR_MODEL_DOES_NOT_SUPPORT_COIN: {
id: 'TR_MODEL_DOES_NOT_SUPPORT_COIN',
defaultMessage: 'The coin {coin} is not supported by your Trezor model.',
},
});
export default definedMessages;

@ -12,8 +12,11 @@ import colors from 'config/colors';
import type { State } from 'flowtype';
import FirmwareUpdate from 'views/Wallet/views/FirmwareUpdate';
import { FormattedMessage } from 'react-intl';
import FirmwareUnsupported from './components/FirmwareUnsupported';
import l10nMessages from './index.messages';
type Props = {
children?: React.Node,
isLoading?: boolean,
@ -81,7 +84,7 @@ const Content = ({
<Loading>
<Row>
{loader.type === 'progress' && <Loader size={30} />}
<Title type={loader.type}>{loader.title || 'Initializing accounts'}</Title>
<Title type={loader.type}>{loader.title || <FormattedMessage {...l10nMessages.TR_INITIALIZING_ACCOUNTS} />}</Title>
</Row>
{loader.message && <Message>{loader.message}</Message>}
</Loading>

@ -0,0 +1,12 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_INITIALIZING_ACCOUNTS: {
id: 'TR_INITIALIZING_ACCOUNTS',
defaultMessage: 'Initializing accounts',
},
});
export default definedMessages;

@ -8,6 +8,7 @@ import styled, { css } from 'styled-components';
import * as stateUtils from 'reducers/utils';
import Tooltip from 'components/Tooltip';
import ICONS from 'config/icons';
import { FormattedMessage } from 'react-intl';
import { NavLink } from 'react-router-dom';
import { findDeviceAccounts } from 'reducers/AccountsReducer';
@ -19,6 +20,8 @@ import type { Accounts } from 'flowtype';
import type { Props } from '../common';
import Row from '../Row';
import RowCoin from '../RowCoin';
import l10nMessages from './index.messages';
const Wrapper = styled.div``;
@ -105,7 +108,7 @@ const AccountMenu = (props: Props) => {
// const url: string = `${baseUrl}/network/${location.state.network}/account/${i}`;
const url: string = location.pathname.replace(/account+\/([0-9]*)/, `account/${i}`);
let balance: string = 'Loading...';
let balance: ?string = null;
if (account.balance !== '') {
const pending = stateUtils.getAccountPendingTx(props.pending, account);
const pendingAmount: BigNumber = stateUtils.getPendingAmount(pending, network.symbol);
@ -130,9 +133,9 @@ const AccountMenu = (props: Props) => {
isSelected={urlAccountIndex === account.index}
borderTop={account.index === 0}
>
Account #{account.index + 1}
<FormattedMessage {...l10nMessages.TR_ACCOUNT_HASH} values={{ number: account.index + 1 }} />
{balance && <Text>{balance}</Text>}
{!balance && <Text>Loading...</Text>}
{!balance && <Text><FormattedMessage {...l10nMessages.TR_LOADING_DOT_DOT_DOT} /></Text>}
</RowAccountWrapper>
</Row>
</NavLink>
@ -148,7 +151,7 @@ const AccountMenu = (props: Props) => {
discoveryStatus = (
<Tooltip
maxWidth={200}
content={`To add a new account, connect ${selected.instanceLabel} device.`}
content={<FormattedMessage {...l10nMessages.TR_TO_ADD_ACCOUNTS} />}
placement="bottom"
>
<Row>
@ -160,7 +163,7 @@ const AccountMenu = (props: Props) => {
color={colors.TEXT_SECONDARY}
/>
</AddAccountIconWrapper>
Add account
<FormattedMessage {...l10nMessages.TR_ADD_ACCOUNT} />
</RowAddAccountWrapper>
</Row>
</Tooltip>
@ -176,7 +179,7 @@ const AccountMenu = (props: Props) => {
color={colors.TEXT_SECONDARY}
/>
</AddAccountIconWrapper>
Add account
<FormattedMessage {...l10nMessages.TR_ADD_ACCOUNT} />
</RowAddAccountWrapper>
</Row>
);
@ -184,7 +187,7 @@ const AccountMenu = (props: Props) => {
discoveryStatus = (
<Tooltip
maxWidth={200}
content="To add a new account, last account must have some transactions."
content={<FormattedMessage {...l10nMessages.TR_TO_ADD_A_NEW_ACCOUNT_LAST} />}
placement="bottom"
>
<Row>
@ -196,7 +199,7 @@ const AccountMenu = (props: Props) => {
color={colors.TEXT_SECONDARY}
/>
</AddAccountIconWrapper>
Add account
<FormattedMessage {...l10nMessages.TR_ADD_ACCOUNT} />
</RowAddAccountWrapper>
</Row>
</Tooltip>
@ -208,7 +211,7 @@ const AccountMenu = (props: Props) => {
<DiscoveryLoadingWrapper>
<Loader size={20} />
<DiscoveryLoadingText>
Loading...
<FormattedMessage {...l10nMessages.TR_LOADING_DOT_DOT_DOT} />
</DiscoveryLoadingText>
</DiscoveryLoadingWrapper>
</Row>

@ -0,0 +1,29 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_ACCOUNT_HASH: {
id: 'TR_ACCOUNT_HASH',
defaultMessage: 'Account #{number}',
description: 'Used in auto-generated account label',
},
TR_LOADING_DOT_DOT_DOT: {
id: 'TR_LOADING_DOT_DOT_DOT',
defaultMessage: 'Loading...',
},
TR_TO_ADD_A_NEW_ACCOUNT_LAST: {
id: 'TR_TO_ADD_A_NEW_ACCOUNT_LAST',
defaultMessage: 'To add a new account, last account must have some transactions.',
},
TR_TO_ADD_ACCOUNTS: {
id: 'TR_TO_ADD_ACCOUNTS',
defaultMessage: 'To add accounts, make sure your device is connected.',
},
TR_ADD_ACCOUNT: {
id: 'TR_ADD_ACCOUNT',
defaultMessage: 'Add account',
},
});
export default definedMessages;

@ -8,9 +8,12 @@ import PropTypes from 'prop-types';
import React, { PureComponent } from 'react';
import { NavLink } from 'react-router-dom';
import Link from 'components/Link';
import { FormattedMessage } from 'react-intl';
import Divider from '../Divider';
import RowCoin from '../RowCoin';
import l10nMessages from './index.messages';
import type { Props } from '../common';
const Wrapper = styled.div``;
@ -73,8 +76,8 @@ class CoinMenu extends PureComponent<Props> {
))}
<Divider
testId="Main__page__coin__menu__divider"
textLeft="Other coins"
textRight="(You will be redirected)"
textLeft={<FormattedMessage {...l10nMessages.TR_OTHER_COINS} />}
textRight={<FormattedMessage {...l10nMessages.TR_YOU_WILL_BE_REDIRECTED} />}
hasBorder
/>
{this.getOtherCoins()}

@ -0,0 +1,16 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_OTHER_COINS: {
id: 'TR_OTHER_COINS',
defaultMessage: 'Other coins',
},
TR_YOU_WILL_BE_REDIRECTED: {
id: 'TR_YOU_WILL_BE_REDIRECTED',
defaultMessage: '(You will be redirected)',
},
});
export default definedMessages;

@ -3,11 +3,15 @@ import styled from 'styled-components';
import PropTypes from 'prop-types';
import Icon from 'components/Icon';
import DeviceIcon from 'components/images/DeviceIcon';
import { FormattedMessage } from 'react-intl';
import icons from 'config/icons';
import colors from 'config/colors';
import { FONT_SIZE } from 'config/variables';
// import l10nCommonMessages from 'views/common.messages';
import l10nMessages from './index.messages';
const Wrapper = styled.div`
background: ${colors.WHITE};
`;
@ -58,7 +62,7 @@ class MenuItems extends PureComponent {
size={25}
color={colors.TEXT_SECONDARY}
/>
<Label>Device settings</Label>
<Label><FormattedMessage {...l10nMessages.TR_DEVICE_SETTINGS} /></Label>
</Item> */}
{this.showClone() && (
<Item onClick={() => this.props.duplicateDevice(device)}>
@ -67,7 +71,7 @@ class MenuItems extends PureComponent {
size={25}
color={colors.TEXT_SECONDARY}
/>
<Label>Change wallet type</Label>
<Label><FormattedMessage {...l10nMessages.TR_CHANGE_WALLET_TYPE} /></Label>
</Item>
)}
{this.showRenewSession() && (
@ -75,7 +79,7 @@ class MenuItems extends PureComponent {
onClick={() => this.props.acquireDevice()}
>
<DeviceIcon device={this.props.device} size={25} color={colors.TEXT_SECONDARY} />
<Label>Renew session</Label>
<Label><FormattedMessage {...l10nMessages.TR_RENEW_SESSION} /></Label>
</Item>
)}
<Item onClick={() => this.props.forgetDevice(device)}>
@ -84,7 +88,7 @@ class MenuItems extends PureComponent {
size={25}
color={colors.TEXT_SECONDARY}
/>
<Label>Forget device</Label>
<Label><FormattedMessage {...l10nMessages.TR_FORGET_DEVICE} /></Label>
</Item>
</Wrapper>
);

@ -0,0 +1,21 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_CHANGE_WALLET_TYPE: {
id: 'TR_CHANGE_WALLET_TYPE',
defaultMessage: 'Change wallet type',
},
TR_RENEW_SESSION: {
id: 'TR_RENEW_SESSION',
defaultMessage: 'Renew session',
description: 'TODO',
},
TR_FORGET_DEVICE: {
id: 'TR_FORGET_DEVICE',
defaultMessage: 'Forget device',
},
});
export default definedMessages;

@ -2,6 +2,7 @@
import React, { PureComponent } from 'react';
import styled from 'styled-components';
import TrezorConnect from 'trezor-connect';
import { FormattedMessage } from 'react-intl';
import COLORS from 'config/colors';
import { FONT_SIZE, FONT_WEIGHT } from 'config/variables';
@ -9,6 +10,7 @@ import { SLIDE_DOWN } from 'config/animations';
import Button from 'components/Button';
import * as deviceUtils from 'utils/device';
import l10nCommonMessages from 'views/common.messages';
import MenuItems from './components/MenuItems';
import DeviceList from './components/DeviceList';
@ -124,7 +126,9 @@ class DeviceMenu extends PureComponent<Props> {
/>
{deviceUtils.isWebUSB(transport) && (
<ButtonWrapper>
<StyledButton isWebUsb>Check for devices</StyledButton>
<StyledButton isWebUsb>
<FormattedMessage {...l10nCommonMessages.TR_CHECK_FOR_DEVICES} />
</StyledButton>
</ButtonWrapper>
)}
</Wrapper>

@ -0,0 +1,9 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
});
export default definedMessages;

@ -37,8 +37,8 @@ const Divider = ({
Divider.propTypes = {
className: PropTypes.string,
textLeft: PropTypes.string,
textRight: PropTypes.string,
textLeft: PropTypes.node,
textRight: PropTypes.node,
hasBorder: PropTypes.bool,
testId: PropTypes.string,
};

@ -13,12 +13,14 @@ import DeviceHeader from 'components/DeviceHeader';
import * as deviceUtils from 'utils/device';
import Tooltip from 'components/Tooltip';
import { FormattedMessage } from 'react-intl';
import AccountMenu from './components/AccountMenu';
import CoinMenu from './components/CoinMenu';
import DeviceMenu from './components/DeviceMenu';
import Sidebar from './components/Sidebar';
import type { Props } from './components/common';
import l10nMessages from './index.messages';
const Header = styled(DeviceHeader)`
border-right: 1px solid ${colors.BACKGROUND};
@ -115,6 +117,26 @@ const TransitionMenu = (props: TransitionMenuProps): React$Element<TransitionGro
</TransitionGroupWrapper>
);
const WalletTooltipMsg = ({ walletType, isDeviceReady }: { walletType: string, isDeviceReady: ?boolean}): any => {
let secondPart = '';
if (isDeviceReady) {
secondPart = walletType === 'standard'
? <FormattedMessage {...l10nMessages.TR_CLICK_HERE_TO_ACCESS_YOUR_HIDDEN} />
: <FormattedMessage {...l10nMessages.TR_CLICK_HERE_TO_ACCESS_YOUR_STANDARD} />;
} else {
secondPart = <FormattedMessage {...l10nMessages.TR_TO_ACCESS_OTHER_WALLETS} />;
}
return (
<>
{walletType === 'standard'
? <FormattedMessage {...l10nMessages.TR_YOU_ARE_IN_YOUR_STANDARD_WALLET} />
: <FormattedMessage {...l10nMessages.TR_YOU_ARE_IN_YOUR_HIDDEN_WALLET} />}
{' '}{secondPart}
</>
);
};
type State = {
animationType: ?string;
clicked: boolean;
@ -211,14 +233,6 @@ class LeftNavigation extends React.PureComponent<Props, State> {
const showWalletType = selectedDevice && selectedDevice.features && selectedDevice.features.passphrase_protection;
const isDeviceReady = selectedDevice && selectedDevice.connected && selectedDevice.available;
let walletTooltipMsg = `You are in your ${walletType} wallet.`;
if (isDeviceReady) {
walletTooltipMsg = walletType === 'standard'
? `${walletTooltipMsg} Click here to access your hidden wallet.`
: `${walletTooltipMsg} Click here to access your standard or another hidden wallet`;
} else {
walletTooltipMsg = `${walletTooltipMsg} To access other wallets please connect your device.`;
}
return (
<Sidebar isOpen={props.wallet.showSidebar}>
@ -238,7 +252,7 @@ class LeftNavigation extends React.PureComponent<Props, State> {
<React.Fragment>
{showWalletType && (
<Tooltip
content={walletTooltipMsg}
content={<WalletTooltipMsg walletType={walletType} isDeviceReady={isDeviceReady} />}
maxWidth={200}
placement="bottom"
enterDelayMs={0.5}
@ -262,7 +276,7 @@ class LeftNavigation extends React.PureComponent<Props, State> {
}
{this.props.devices.length > 1 && (
<Tooltip
content="Number of devices"
content={<FormattedMessage {...l10nMessages.TR_NUMBER_OF_DEVICES} />}
maxWidth={200}
placement="bottom"
enterDelayMs={0.5}
@ -292,7 +306,7 @@ class LeftNavigation extends React.PureComponent<Props, State> {
target="_blank"
rel="noreferrer noopener"
>
<Icon size={26} icon={icons.CHAT} color={colors.TEXT_SECONDARY} />Need help?
<Icon size={26} icon={icons.CHAT} color={colors.TEXT_SECONDARY} /><FormattedMessage {...l10nMessages.TR_NEED_HELP} />
</A>
</Help>
</Footer>

@ -0,0 +1,36 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_YOU_ARE_IN_YOUR_STANDARD_WALLET: {
id: 'TR_YOU_ARE_IN_YOUR_STANDARD_WALLET',
defaultMessage: 'You are in your standard wallet.',
},
TR_YOU_ARE_IN_YOUR_HIDDEN_WALLET: {
id: 'TR_YOU_ARE_IN_YOUR_WALLET',
defaultMessage: 'You are in your hidden wallet.',
},
TR_CLICK_HERE_TO_ACCESS_YOUR_HIDDEN: {
id: 'TR_CLICK_HERE_TO_ACCESS_YOUR_HIDDEN',
defaultMessage: 'Click here to access your hidden wallet.',
},
TR_CLICK_HERE_TO_ACCESS_YOUR_STANDARD: {
id: 'TR_CLICK_HERE_TO_ACCESS_YOUR_STANDARD',
defaultMessage: 'Click here to access your standard or another hidden wallet.',
},
TR_TO_ACCESS_OTHER_WALLETS: {
id: 'TR_TO_ACCESS_OTHER_WALLETS',
defaultMessage: 'To access other wallets please connect your device.',
},
TR_NEED_HELP: {
id: 'TR_NEED_HELP',
defaultMessage: 'Need help?',
},
TR_NUMBER_OF_DEVICES: {
id: 'TR_NUMBER_OF_DEVICES',
defaultMessage: 'Number of devices',
},
});
export default definedMessages;

@ -20,7 +20,7 @@ const Title = ({
);
Title.propTypes = {
children: PropTypes.string,
children: PropTypes.node,
};
export default Title;

@ -7,7 +7,9 @@ import { NavLink } from 'react-router-dom';
import { connect } from 'react-redux';
import colors from 'config/colors';
import type { State } from 'flowtype';
import { FormattedMessage } from 'react-intl';
import l10nMessages from './index.messages';
import Indicator from './components/Indicator';
type Props = {
@ -83,11 +85,11 @@ class TopNavigationAccount extends React.PureComponent<Props> {
return (
<Wrapper className="account-tabs" ref={this.wrapperRefCallback}>
<StyledNavLink exact to={`${basePath}`}>Summary</StyledNavLink>
<StyledNavLink to={`${basePath}/receive`}>Receive</StyledNavLink>
<StyledNavLink to={`${basePath}/send`}>Send</StyledNavLink>
<StyledNavLink exact to={`${basePath}`}><FormattedMessage {...l10nMessages.TR_SUMMARY} /></StyledNavLink>
<StyledNavLink to={`${basePath}/receive`}><FormattedMessage {...l10nMessages.TR_RECEIVE} /></StyledNavLink>
<StyledNavLink to={`${basePath}/send`}><FormattedMessage {...l10nMessages.TR_SEND} /></StyledNavLink>
{network.type === 'ethereum'
&& <StyledNavLink to={`${basePath}/signverify`}>Sign &amp; Verify</StyledNavLink>
&& <StyledNavLink to={`${basePath}/signverify`}><FormattedMessage {...l10nMessages.TR_SIGN_AND_VERIFY} /></StyledNavLink>
}
<Indicator pathname={pathname} wrapper={() => this.wrapper} />
</Wrapper>

@ -0,0 +1,24 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_SUMMARY: {
id: 'TR_SUMMARY',
defaultMessage: 'Summary',
},
TR_RECEIVE: {
id: 'TR_RECEIVE',
defaultMessage: 'Receive',
},
TR_SEND: {
id: 'TR_SEND',
defaultMessage: 'Send',
},
TR_SIGN_AND_VERIFY: {
id: 'TR_SIGN_AND_VERIFY',
defaultMessage: 'Sign & Verify',
},
});
export default definedMessages;

@ -1,11 +1,13 @@
import styled from 'styled-components';
import React from 'react';
import { FormattedMessage } from 'react-intl';
import l10nCommonMessages from 'views/common.messages';
const Wrapper = styled.div``;
const AccountTabs = () => (
<Wrapper>
Device settings
<FormattedMessage {...l10nCommonMessages.TR_DEVICE_SETTINGS} />
</Wrapper>
);

@ -0,0 +1,20 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_CHECK_ADDRESS_ON_TREZOR: {
id: 'TR_CHECK_ADDRESS_ON_TREZOR',
defaultMessage: 'Check address on Trezor',
},
TR_SHOW_FULL_ADDRESS: {
id: 'TR_SHOW_FULL_ADDRESS',
defaultMessage: 'Show full address',
},
TR_QR_CODE: {
id: 'TR_QR_CODE',
defaultMessage: 'QR Code',
},
});
export default definedMessages;

@ -1,6 +1,9 @@
import React from 'react';
import styled from 'styled-components';
import PropTypes from 'prop-types';
import { FormattedMessage } from 'react-intl';
import l10nMessages from './index.messages';
const Wrapper = styled.div``;
const Content = styled.div``;
@ -9,12 +12,16 @@ const VerifyAddressTooltip = ({ isConnected, isAvailable, addressUnverified }) =
<Wrapper>
{addressUnverified && (
<Content>
Unverified address. {isConnected && isAvailable ? 'Show on Trezor' : 'Connect your Trezor to verify it.'}
{isConnected && isAvailable
? <FormattedMessage {...l10nMessages.TR_UNVERIFIED_ADDRESS_COMMA_SHOW} />
: <FormattedMessage {...l10nMessages.TR_UNVERIFIED_ADDRESS_COMMA_CONNECT} />}
</Content>
)}
{!addressUnverified && (
<Content>
{isConnected ? 'Show on Trezor' : 'Connect your Trezor to verify address.'}
{isConnected
? <FormattedMessage {...l10nMessages.TR_SHOW_ON_TREZOR} />
: <FormattedMessage {...l10nMessages.TR_CONNECT_YOUR_TREZOR_TO_CHECK} />}
</Content>
)}
</Wrapper>

@ -0,0 +1,24 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_UNVERIFIED_ADDRESS_COMMA_CONNECT: {
id: 'TR_UNVERIFIED_ADDRESS_COMMA_CONNECT',
defaultMessage: 'Unverified address, connect your Trezor to verify it',
},
TR_UNVERIFIED_ADDRESS_COMMA_SHOW: {
id: 'TR_UNVERIFIED_ADDRESS_COMMA_SHOW',
defaultMessage: 'Unverified address, show on Trezor.',
},
TR_SHOW_ON_TREZOR: {
id: 'TR_SHOW_ON_TREZOR',
defaultMessage: 'Show on Trezor',
},
TR_CONNECT_YOUR_TREZOR_TO_CHECK: {
id: 'TR_CONNECT_YOUR_TREZOR_TO_CHECK',
defaultMessage: 'Connect your Trezor to verify this address',
},
});
export default definedMessages;

@ -2,6 +2,7 @@
import React from 'react';
import { QRCode } from 'react-qr-svg';
import styled from 'styled-components';
import { FormattedMessage } from 'react-intl';
import Title from 'views/Wallet/components/Title';
import Button from 'components/Button';
@ -17,6 +18,9 @@ import { CONTEXT_DEVICE } from 'actions/constants/modal';
import Content from 'views/Wallet/components/Content';
import VerifyAddressTooltip from '../components/VerifyAddressTooltip';
import l10nMessages from './index.messages';
import l10nCommonMessages from '../common.messages';
import type { Props } from './Container';
const Label = styled.div`
@ -120,7 +124,7 @@ const AccountReceive = (props: Props) => {
return (
<Content>
<React.Fragment>
<Title>Receive Ethereum or tokens</Title>
<Title><FormattedMessage {...l10nMessages.TR_RECEIVE_ETHEREUM_OR_TOKENS} /></Title>
<AddressWrapper isShowingQrCode={addressVerified || addressUnverified}>
<Row>
<Input
@ -133,7 +137,7 @@ const AccountReceive = (props: Props) => {
trezorAction={isAddressVerifying ? (
<React.Fragment>
<DeviceIcon device={device} color={colors.WHITE} />
Check address on your Trezor
<FormattedMessage {...l10nCommonMessages.TR_CHECK_ADDRESS_ON_TREZOR} />
</React.Fragment>
) : null}
icon={((addressVerified || addressUnverified) && !isAddressVerifying) && (
@ -158,13 +162,13 @@ const AccountReceive = (props: Props) => {
/>
{!(addressVerified || addressUnverified) && (
<ShowAddressButton onClick={() => props.showAddress(account.accountPath)} isDisabled={device.connected && !discovery.completed}>
<ShowAddressIcon icon={ICONS.EYE} color={colors.WHITE} />Show full address
<ShowAddressIcon icon={ICONS.EYE} color={colors.WHITE} /><FormattedMessage {...l10nCommonMessages.TR_SHOW_FULL_ADDRESS} />
</ShowAddressButton>
)}
</Row>
{(addressVerified || addressUnverified) && !isAddressVerifying && (
<QrWrapper>
<Label>QR code</Label>
<Label><FormattedMessage {...l10nCommonMessages.TR_QR_CODE} /></Label>
<StyledQRCode
bgColor="#FFFFFF"
fgColor="#000000"

@ -0,0 +1,12 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_RECEIVE_ETHEREUM_OR_TOKENS: {
id: 'TR_RECEIVE_ETHEREUM_OR_TOKENS',
defaultMessage: 'Receive Ethereum or tokens',
},
});
export default definedMessages;

@ -2,6 +2,7 @@
import React from 'react';
import { QRCode } from 'react-qr-svg';
import styled from 'styled-components';
import { FormattedMessage } from 'react-intl';
import Title from 'views/Wallet/components/Title';
import Button from 'components/Button';
@ -17,6 +18,9 @@ import { CONTEXT_DEVICE } from 'actions/constants/modal';
import Content from 'views/Wallet/components/Content';
import VerifyAddressTooltip from '../components/VerifyAddressTooltip';
import l10nMessages from './index.messages';
import l10nCommonMessages from '../common.messages';
import type { Props } from './Container';
const Label = styled.div`
@ -120,7 +124,7 @@ const AccountReceive = (props: Props) => {
return (
<Content>
<React.Fragment>
<Title>Receive Ripple</Title>
<Title><FormattedMessage {...l10nMessages.TR_RECEIVE_RIPPLE} /></Title>
<AddressWrapper isShowingQrCode={addressVerified || addressUnverified}>
<Row>
<Input
@ -133,7 +137,7 @@ const AccountReceive = (props: Props) => {
trezorAction={isAddressVerifying ? (
<React.Fragment>
<DeviceIcon device={device} color={colors.WHITE} />
Check address on your Trezor
<FormattedMessage {...l10nCommonMessages.TR_CHECK_ADDRESS_ON_TREZOR} />
</React.Fragment>
) : null}
icon={((addressVerified || addressUnverified) && !isAddressVerifying) && (
@ -158,13 +162,13 @@ const AccountReceive = (props: Props) => {
/>
{!(addressVerified || addressUnverified) && (
<ShowAddressButton onClick={() => props.showAddress(account.accountPath)} isDisabled={device.connected && !discovery.completed}>
<ShowAddressIcon icon={ICONS.EYE} color={colors.WHITE} />Show full address
<ShowAddressIcon icon={ICONS.EYE} color={colors.WHITE} /><FormattedMessage {...l10nCommonMessages.TR_SHOW_FULL_ADDRESS} />
</ShowAddressButton>
)}
</Row>
{(addressVerified || addressUnverified) && !isAddressVerifying && (
<QrWrapper>
<Label>QR code</Label>
<Label><FormattedMessage {...l10nCommonMessages.TR_QR_CODE} /></Label>
<StyledQRCode
bgColor="#FFFFFF"
fgColor="#000000"

@ -0,0 +1,12 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_RECEIVE_RIPPLE: {
id: 'TR_RECEIVE_RIPPLE',
defaultMessage: 'Receive Ripple',
},
});
export default definedMessages;

@ -0,0 +1,36 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_AMOUNT: {
id: 'TR_AMOUNT',
defaultMessage: 'Amount',
},
TR_SET_MAX: {
id: 'TR_SET_MAX',
defaultMessage: 'Set max',
description: 'Used for setting maximum amount in Send form',
},
TR_FEE: {
id: 'TR_FEE',
defaultMessage: 'Fee',
description: 'Label in Send form',
},
TR_RECOMMENDED_FEES_UPDATED: {
id: 'TR_RECOMMENDED_FEES_UPDATED',
defaultMessage: 'Recommended fees updated.',
},
TR_CLICK_HERE_TO_USE_THEM: {
id: 'TR_CLICK_HERE_TO_USE_THEM',
defaultMessage: 'Click here to use them',
description: 'Button to use recommended updated fees.',
},
TR_ADVANCED_SETTINGS: {
id: 'TR_ADVANCED_SETTINGS',
defaultMessage: 'Advanced settings',
description: 'Shows advanced sending form',
},
});
export default definedMessages;

@ -3,6 +3,7 @@
import * as React from 'react';
import styled from 'styled-components';
import colors from 'config/colors';
import { FormattedMessage } from 'react-intl';
import Link from 'components/Link';
import Input from 'components/inputs/Input';
@ -12,6 +13,8 @@ import Icon from 'components/Icon';
import ICONS from 'config/icons';
import { FONT_SIZE } from 'config/variables';
import l10nMessages from './index.messages';
import type { Props as BaseProps } from '../../Container';
type Props = BaseProps & {
@ -177,14 +180,17 @@ const AdvancedForm = (props: Props) => {
topLabel={(
<InputLabelWrapper>
<Left>
Gas limit
<FormattedMessage {...l10nMessages.TR_GAS_LIMIT} />
<Tooltip
content={(
<React.Fragment>
Gas limit refers to the maximum amount of gas user is willing to spendon a particular transaction.{' '}
<GreenSpan>Transaction fee = gas limit * gas price</GreenSpan>.{' '}Increasing the gas limit will not get the transaction confirmed sooner.
Default value for sending {gasLimitTooltipCurrency} is <GreenSpan>{gasLimitTooltipValue}</GreenSpan>.
</React.Fragment>
<FormattedMessage
{...l10nMessages.TR_GAS_LIMIT_REFERS_TO}
values={{
TR_GAS_QUOTATION: <GreenSpan><FormattedMessage {...l10nMessages.TR_GAS_QUOTATION} /></GreenSpan>,
gasLimitTooltipValue: <GreenSpan>{gasLimitTooltipValue}</GreenSpan>,
gasLimitTooltipCurrency,
}}
/>
)}
maxWidth={410}
readMoreLink="https://wiki.trezor.io/Ethereum_Wallet#Gas_limit"
@ -199,14 +205,14 @@ const AdvancedForm = (props: Props) => {
</Left>
{ showDefaultGasLimitButton && (
<Right>
<StyledLink onClick={setDefaultGasLimit} isGreen>Set default</StyledLink>
<StyledLink onClick={setDefaultGasLimit} isGreen><FormattedMessage {...l10nMessages.TR_SET_DEFAULT} /></StyledLink>
</Right>
)
}
</InputLabelWrapper>
)}
bottomText={errors.gasLimit || warnings.gasLimit || infos.gasLimit}
value={calculatingGasLimit ? 'Calculating...' : gasLimit}
value={calculatingGasLimit ? 'Calculating...' : gasLimit} // TODO: figure out translations in inputs
isDisabled={networkSymbol === currency && data.length > 0}
onChange={event => onGasLimitChange(event.target.value)}
/>
@ -220,14 +226,17 @@ const AdvancedForm = (props: Props) => {
topLabel={(
<InputLabelWrapper>
<Left>
Gas price
<FormattedMessage {...l10nMessages.TR_GAS_PRICE} />
<Tooltip
content={(
<React.Fragment>
Gas price refers to the amount of ether you are willing to pay for every
unit of gas, and is usually measured in Gwei. <GreenSpan>Transaction fee = gas limit * gas price</GreenSpan>. Increasing the gas price will get the transaction confirmed sooner but
makes it more expensive. The recommended gas price is <GreenSpan>{recommendedGasPrice} GWEI</GreenSpan>.
</React.Fragment>
<FormattedMessage
{...l10nMessages.TR_GAS_PRICE_REFERS_TO}
values={{
TR_GAS_PRICE_QUOTATION: <GreenSpan><FormattedMessage {...l10nMessages.TR_GAS_PRICE_QUOTATION} /></GreenSpan>,
recommendedGasPrice: <GreenSpan>{recommendedGasPrice}</GreenSpan>,
}}
/>
)}
maxWidth={400}
readMoreLink="https://wiki.trezor.io/Ethereum_Wallet#Gas_price"
@ -252,13 +261,9 @@ const AdvancedForm = (props: Props) => {
topLabel={(
<InputLabelWrapper>
<Left>
Data
<FormattedMessage {...l10nMessages.TR_DATA} />
<Tooltip
content={(
<React.Fragment>
Data is usually used when you send transactions to contracts.
</React.Fragment>
)}
content={<FormattedMessage {...l10nMessages.TR_DATA_IS_USUALLY_USED} />}
placement="top"
>
<StyledIcon

@ -0,0 +1,48 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_GAS_LIMIT: {
id: 'TR_GAS_LIMIT',
defaultMessage: 'Gas limit',
},
TR_GAS_LIMIT_REFERS_TO: {
id: 'TR_GAS_LIMIT_REFERS_TO',
defaultMessage: 'Gas limit refers to the maximum amount of gas user is willing to spendon a particular transaction. {TR_GAS_QUOTATION}. Increasing the gas limit will not get the transaction confirmed sooner. Default value for sending {gasLimitTooltipCurrency} is {gasLimitTooltipValue}.',
},
TR_GAS_QUOTATION: {
id: 'TR_GAS_QUOTATION',
defaultMessage: 'Transaction fee = gas limit * gas price',
},
TR_SET_DEFAULT: {
id: 'TR_SET_DEFAULT',
defaultMessage: 'Set default',
},
TR_CALCULATING_DOT_DOT: {
id: 'TR_CALCULATING_DOT_DOT',
defaultMessage: 'Calculating...',
},
TR_GAS_PRICE: {
id: 'TR_GAS_PRICE',
defaultMessage: 'Gas price',
},
TR_GAS_PRICE_REFERS_TO: {
id: 'TR_GAS_PRICE_REFERS_TO',
defaultMessage: 'Gas price refers to the amount of ether you are willing to pay for every unit of gas, and is usually measured in “Gwei”. {TR_GAS_PRICE_QUOTATION}. Increasing the gas price will get the transaction confirmed sooner but makes it more expensive. The recommended gas price is {recommendedGasPrice} GWEI.',
},
TR_GAS_PRICE_QUOTATION: {
id: 'TR_GAS_PRICE_QUOTATION',
defaultMessage: 'Transaction fee = gas limit * gas price',
},
TR_DATA: {
id: 'TR_DATA',
defaultMessage: 'Data',
},
TR_DATA_IS_USUALLY_USED: {
id: 'TR_DATA_IS_USUALLY_USED',
defaultMessage: 'Data is usually used when you send transactions to contracts.',
},
});
export default definedMessages;

@ -16,9 +16,13 @@ import P from 'components/Paragraph';
import Content from 'views/Wallet/components/Content';
import * as stateUtils from 'reducers/utils';
import type { Token } from 'flowtype';
import { FormattedMessage } from 'react-intl';
import l10nCommonMessages from 'views/common.messages';
import AdvancedForm from './components/AdvancedForm';
import PendingTransactions from '../components/PendingTransactions';
import l10nMessages from './index.messages';
import l10nSendMessages from '../common.messages';
import type { Props } from './Container';
// TODO: Decide on a small screen width for the whole app
@ -294,7 +298,7 @@ const AccountSend = (props: Props) => {
return (
<Content>
<Title>Send Ethereum or tokens</Title>
<Title><FormattedMessage {...l10nMessages.TR_SEND_ETHEREUM_OR_TOKENS} /></Title>
<InputRow>
<Input
state={getAddressInputState(address, errors.address, warnings.address)}
@ -330,9 +334,14 @@ const AccountSend = (props: Props) => {
spellCheck="false"
topLabel={(
<AmountInputLabelWrapper>
<AmountInputLabel>Amount</AmountInputLabel>
<AmountInputLabel><FormattedMessage {...l10nSendMessages.TR_AMOUNT} /></AmountInputLabel>
{(isCurrentCurrencyToken && selectedToken) && (
<AmountInputLabel>You have: {selectedTokenBalance} {selectedToken.symbol}</AmountInputLabel>
<AmountInputLabel>
<FormattedMessage
{...l10nSendMessages.YOU_HAVE_TOKEN_BALANCE}
values={{ tokenBalance: `${selectedTokenBalance} ${selectedToken.symbol}` }}
/>
</AmountInputLabel>
)}
</AmountInputLabelWrapper>
)}
@ -360,7 +369,7 @@ const AccountSend = (props: Props) => {
color={colors.WHITE}
/>
)}
Set max
<FormattedMessage {...l10nSendMessages.TR_SET_MAX} />
</SetMaxAmountButton>
),
(
@ -388,7 +397,7 @@ const AccountSend = (props: Props) => {
color={colors.WARNING_PRIMARY}
size={20}
/>
Recommended fees updated. <StyledLink onClick={updateFeeLevels} isGreen>Click here to use them</StyledLink>
<FormattedMessage {...l10nSendMessages.TR_RECOMMENDED_FEES_UPDATED} /> <StyledLink onClick={updateFeeLevels} isGreen><FormattedMessage {...l10nSendMessages.TR_CLICK_HERE_TO_USE_THEM} /></StyledLink>
</UpdateFeeWrapper>
)}
</FeeLabelWrapper>
@ -414,7 +423,7 @@ const AccountSend = (props: Props) => {
isTransparent
onClick={toggleAdvanced}
>
Advanced settings
<FormattedMessage {...l10nSendMessages.TR_ADVANCED_SETTINGS} />
<AdvancedSettingsIcon
icon={ICONS.ARROW_DOWN}
color={colors.TEXT_SECONDARY}
@ -432,7 +441,7 @@ const AccountSend = (props: Props) => {
isWhite
onClick={() => onClear()}
>
Clear
<FormattedMessage {...l10nCommonMessages.TR_CLEAR} />
</ClearButton>
<SendButton
isDisabled={isSendButtonDisabled}
@ -453,7 +462,7 @@ const AccountSend = (props: Props) => {
isWhite
onClick={() => onClear()}
>
Clear
<FormattedMessage {...l10nCommonMessages.TR_CLEAR} />
</ClearButton>
<SendButton
isDisabled={isSendButtonDisabled}

@ -0,0 +1,16 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_SEND_ETHEREUM_OR_TOKENS: {
id: 'TR_SEND_ETHEREUM_OR_TOKENS',
defaultMessage: 'Send Ethereum or tokens',
},
YOU_HAVE_TOKEN_BALANCE: {
id: 'YOU_HAVE_TOKEN_BALANCE',
defaultMessage: 'You have: {tokenBalance}',
},
});
export default definedMessages;

@ -1,13 +1,16 @@
/* @flow */
import * as React from 'react';
import { FormattedMessage } from 'react-intl';
import styled from 'styled-components';
import colors from 'config/colors';
import l10nSendMessages from 'views/Wallet/views/Account/Send/common.messages';
import Input from 'components/inputs/Input';
import Tooltip from 'components/Tooltip';
import Icon from 'components/Icon';
import ICONS from 'config/icons';
import l10nMessages from './index.messages';
import type { Props as BaseProps } from '../../Container';
@ -125,13 +128,9 @@ const AdvancedForm = (props: Props) => {
topLabel={(
<InputLabelWrapper>
<Left>
Fee
<FormattedMessage {...l10nSendMessages.TR_FEE} />
<Tooltip
content={(
<React.Fragment>
Transfer cost in XRP drops
</React.Fragment>
)}
content={<FormattedMessage {...l10nMessages.TR_XRP_TRANSFER_COST} />}
maxWidth={100}
readMoreLink="https://developers.ripple.com/transaction-cost.html"
placement="top"
@ -161,13 +160,9 @@ const AdvancedForm = (props: Props) => {
topLabel={(
<InputLabelWrapper>
<Left>
Destination tag
<FormattedMessage {...l10nMessages.TR_XRP_DESTINATION_TAG} />
<Tooltip
content={(
<React.Fragment>
An arbitrary unsigned 32-bit integer that identifies a reason for payment or a non-Ripple account.
</React.Fragment>
)}
content={<FormattedMessage {...l10nMessages.TR_XRP_DESTINATION_TAG_EXPLAINED} />}
maxWidth={200}
readMoreLink="https://developers.ripple.com/rippleapi-reference.html#payment"
placement="top"

@ -0,0 +1,20 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_XRP_TRANSFER_COST: {
id: 'TR_XRP_TRANSFER_COST',
defaultMessage: 'Transfer cost in XRP drops',
},
TR_XRP_DESTINATION_TAG: {
id: 'TR_XRP_DESTINATION_TAG',
defaultMessage: 'Destination tag',
},
TR_XRP_DESTINATION_TAG_EXPLAINED: {
id: 'TR_XRP_DESTINATION_TAG_EXPLAINED',
defaultMessage: 'Number that identifies a reason for payment or a non-Ripple account.',
},
});
export default definedMessages;

@ -3,6 +3,7 @@
import React from 'react';
import styled, { css } from 'styled-components';
import { Select } from 'components/Select';
import { FormattedMessage } from 'react-intl';
import Button from 'components/Button';
import Input from 'components/inputs/Input';
import Icon from 'components/Icon';
@ -12,10 +13,14 @@ import { FONT_SIZE, FONT_WEIGHT, TRANSITION } from 'config/variables';
import colors from 'config/colors';
import Title from 'views/Wallet/components/Title';
import P from 'components/Paragraph';
import l10nCommonMessages from 'views/common.messages';
import Content from 'views/Wallet/components/Content';
import PendingTransactions from '../components/PendingTransactions';
import AdvancedForm from './components/AdvancedForm';
import l10nMessages from './index.messages';
import l10nSendMessages from '../common.messages';
import type { Props } from './Container';
// TODO: Decide on a small screen width for the whole app
@ -268,7 +273,7 @@ const AccountSend = (props: Props) => {
return (
<Content>
<Title>Send Ripple</Title>
<Title><FormattedMessage {...l10nMessages.TR_SEND_RIPPLE} /></Title>
<InputRow>
<Input
state={getAddressInputState(address, errors.address, warnings.address)}
@ -304,9 +309,14 @@ const AccountSend = (props: Props) => {
spellCheck="false"
topLabel={(
<AmountInputLabelWrapper>
<AmountInputLabel>Amount</AmountInputLabel>
<AmountInputLabel><FormattedMessage {...l10nSendMessages.TR_AMOUNT} /></AmountInputLabel>
{accountReserve && (
<AmountInputLabel>Reserve: {accountReserve} {network.symbol}</AmountInputLabel>
<AmountInputLabel>
<FormattedMessage
{...l10nMessages.TR_XRP_RESERVE}
values={{ value: `${accountReserve} ${network.symbol}` }}
/>
</AmountInputLabel>
)}
</AmountInputLabelWrapper>
)}
@ -334,7 +344,7 @@ const AccountSend = (props: Props) => {
color={colors.WHITE}
/>
)}
Set max
<FormattedMessage {...l10nSendMessages.TR_SET_MAX} />
</SetMaxAmountButton>
),
(
@ -353,7 +363,7 @@ const AccountSend = (props: Props) => {
<InputRow>
<FeeLabelWrapper>
<FeeLabel>Fee</FeeLabel>
<FeeLabel><FormattedMessage {...l10nSendMessages.TR_FEE} /></FeeLabel>
{feeNeedsUpdate && (
<UpdateFeeWrapper>
<Icon
@ -361,7 +371,7 @@ const AccountSend = (props: Props) => {
color={colors.WARNING_PRIMARY}
size={20}
/>
Recommended fees updated. <StyledLink onClick={updateFeeLevels} isGreen>Click here to use them</StyledLink>
<FormattedMessage {...l10nSendMessages.TR_RECOMMENDED_FEES_UPDATED} /> <StyledLink onClick={updateFeeLevels} isGreen><FormattedMessage {...l10nSendMessages.TR_CLICK_HERE_TO_USE_THEM} /></StyledLink>
</UpdateFeeWrapper>
)}
</FeeLabelWrapper>
@ -387,7 +397,7 @@ const AccountSend = (props: Props) => {
isTransparent
onClick={toggleAdvanced}
>
Advanced settings
<FormattedMessage {...l10nSendMessages.TR_ADVANCED_SETTINGS} />
<AdvancedSettingsIcon
icon={ICONS.ARROW_DOWN}
color={colors.TEXT_SECONDARY}
@ -405,7 +415,7 @@ const AccountSend = (props: Props) => {
isWhite
onClick={() => onClear()}
>
Clear
<FormattedMessage {...l10nCommonMessages.TR_CLEAR} />
</ClearButton>
<SendButton
isDisabled={isSendButtonDisabled}
@ -426,7 +436,7 @@ const AccountSend = (props: Props) => {
isWhite
onClick={() => onClear()}
>
Clear
<FormattedMessage {...l10nCommonMessages.TR_CLEAR} />
</ClearButton>
<SendButton
isDisabled={isSendButtonDisabled}

@ -0,0 +1,17 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_XRP_RESERVE: {
id: 'TR_XRP_RESERVE',
defaultMessage: 'Reserve: {value}',
description: 'XRP reserve input label',
},
TR_SEND_RIPPLE: {
id: 'TR_SEND_RIPPLE',
defaultMessage: 'Send Ripple',
},
});
export default definedMessages;

@ -0,0 +1,21 @@
/* @flow */
import { defineMessages } from 'react-intl';
import type { Messages } from 'flowtype/npm/react-intl';
const definedMessages: Messages = defineMessages({
TR_DEVICE_SETTINGS: {
id: 'TR_DEVICE_SETTINGS',
defaultMessage: 'Device settings',
},
TR_CLEAR: {
id: 'TR_CLEAR',
defaultMessage: 'Clear',
description: 'Clear form button',
},
TR_CHECK_FOR_DEVICES: {
id: 'TR_CHECK_FOR_DEVICES',
defaultMessage: 'Check for devices',
},
});
export default definedMessages;

@ -14,7 +14,7 @@
},
{
"id": "TR_TREZOR_BETA_WALLET_IS",
"defaultMessage": "{trezorBetaWallet} is a public feature-testing version of the {trezorWallet}, offering the newest features before they are available to the general public.",
"defaultMessage": "{TR_TREZOR_BETA_WALLET} is a public feature-testing version of the {TR_TREZOR_WALLET}, offering the newest features before they are available to the general public.",
"file": "src/views/Landing/components/BetaDisclaimer/index.messages.js",
"start": {
"line": 10,
@ -27,7 +27,7 @@
},
{
"id": "TR_IN_CONTRAST_COMMA_TREZOR",
"defaultMessage": "In contrast, {trezorWallet} is feature-conservative, making sure that its functionality is maximally reliable and dependable for the general public.",
"defaultMessage": "In contrast, {TR_TREZOR_WALLET} is feature-conservative, making sure that its functionality is maximally reliable and dependable for the general public.",
"file": "src/views/Landing/components/BetaDisclaimer/index.messages.js",
"start": {
"line": 14,
@ -40,7 +40,7 @@
},
{
"id": "TR_PLEASE_NOTE_THAT_THE_TREZOR",
"defaultMessage": "Please note that the {trezorBetaWallet} might be collecting anonymized usage data, especially error logs, for development purposes. The {trezorWallet} does not log any data.",
"defaultMessage": "Please note that the {TR_TREZOR_BETA_WALLET} might be collecting anonymized usage data, especially error logs, for development purposes. The {TR_TREZOR_WALLET} does not log any data.",
"file": "src/views/Landing/components/BetaDisclaimer/index.messages.js",
"start": {
"line": 18,

@ -0,0 +1,54 @@
[
{
"id": "TR_YOUR_BROWSER_IS_NOT_SUPPORTED",
"defaultMessage": "Your browser is not supported",
"file": "src/views/Landing/components/BrowserNotSupported/index.messages.js",
"start": {
"line": 6,
"column": 38
},
"end": {
"line": 9,
"column": 5
}
},
{
"id": "TR_PLEASE_CHOOSE_ONE_OF_THE_SUPPORTED",
"defaultMessage": "Please choose one of the supported browsers",
"file": "src/views/Landing/components/BrowserNotSupported/index.messages.js",
"start": {
"line": 10,
"column": 43
},
"end": {
"line": 13,
"column": 5
}
},
{
"id": "TR_GET_CHROME",
"defaultMessage": "Get Chrome",
"file": "src/views/Landing/components/BrowserNotSupported/index.messages.js",
"start": {
"line": 14,
"column": 19
},
"end": {
"line": 17,
"column": 5
}
},
{
"id": "TR_GET_FIREFOX",
"defaultMessage": "Get Firefox",
"file": "src/views/Landing/components/BrowserNotSupported/index.messages.js",
"start": {
"line": 18,
"column": 20
},
"end": {
"line": 21,
"column": 5
}
}
]

@ -51,29 +51,16 @@
"column": 5
}
},
{
"id": "TR_CHECK_FOR_DEVICES",
"defaultMessage": "Check for devices",
"file": "src/views/Landing/components/ConnectDevice/index.messages.js",
"start": {
"line": 22,
"column": 26
},
"end": {
"line": 25,
"column": 5
}
},
{
"id": "TR_DEVICE_NOT_RECOGNIZED_TRY_INSTALLING",
"defaultMessage": "Device not recognized? Try installing the {link}.",
"file": "src/views/Landing/components/ConnectDevice/index.messages.js",
"start": {
"line": 26,
"line": 22,
"column": 45
},
"end": {
"line": 29,
"line": 25,
"column": 5
}
},
@ -82,11 +69,11 @@
"defaultMessage": "Don't have a Trezor? {getOne}",
"file": "src/views/Landing/components/ConnectDevice/index.messages.js",
"start": {
"line": 30,
"line": 26,
"column": 27
},
"end": {
"line": 33,
"line": 29,
"column": 5
}
},
@ -96,11 +83,11 @@
"defaultMessage": "Get one",
"file": "src/views/Landing/components/ConnectDevice/index.messages.js",
"start": {
"line": 34,
"line": 30,
"column": 16
},
"end": {
"line": 38,
"line": 34,
"column": 5
}
}

@ -0,0 +1,94 @@
[
{
"id": "TR_NEW_COMMUNICATION_TOOL",
"defaultMessage": "New communication tool to facilitate the connection between your Trezor and your internet browser.",
"file": "src/views/Landing/views/InstallBridge/index.messages.js",
"start": {
"line": 6,
"column": 31
},
"end": {
"line": 9,
"column": 5
}
},
{
"id": "TR_DOWNLOAD_LATEST_BRIDGE",
"defaultMessage": "Download latest Bridge {version}",
"file": "src/views/Landing/views/InstallBridge/index.messages.js",
"start": {
"line": 10,
"column": 31
},
"end": {
"line": 13,
"column": 5
}
},
{
"id": "TR_LEARN_MORE_ABOUT_LATEST_VERSION",
"defaultMessage": "Learn more about latest version in {TR_CHANGELOG}.",
"file": "src/views/Landing/views/InstallBridge/index.messages.js",
"start": {
"line": 14,
"column": 40
},
"end": {
"line": 17,
"column": 5
}
},
{
"id": "TR_CHANGELOG",
"description": "Part of the sentence: Learn more about latest version in {TR_CHANGELOG}.",
"defaultMessage": "Changelog",
"file": "src/views/Landing/views/InstallBridge/index.messages.js",
"start": {
"line": 18,
"column": 18
},
"end": {
"line": 22,
"column": 5
}
},
{
"id": "TR_CHECK_PGP_SIGNATURE",
"defaultMessage": "Check PGP signature",
"file": "src/views/Landing/views/InstallBridge/index.messages.js",
"start": {
"line": 23,
"column": 28
},
"end": {
"line": 26,
"column": 5
}
},
{
"id": "TR_DONT_UPGRADE_BRIDGE",
"defaultMessage": "No, I don't want to upgrade Bridge now",
"file": "src/views/Landing/views/InstallBridge/index.messages.js",
"start": {
"line": 27,
"column": 28
},
"end": {
"line": 30,
"column": 5
}
},
{
"id": "TR_TAKE_ME_BACK_TO_WALLET",
"defaultMessage": "Take me back to the wallet",
"file": "src/views/Landing/views/InstallBridge/index.messages.js",
"start": {
"line": 31,
"column": 31
},
"end": {
"line": 34,
"column": 5
}
}
]

@ -0,0 +1,28 @@
[
{
"id": "TR_FIND_OUT_MORE_INFO",
"defaultMessage": "Find out more info",
"file": "src/views/Wallet/components/Content/components/FirmwareUnsupported/index.messages.js",
"start": {
"line": 6,
"column": 27
},
"end": {
"line": 9,
"column": 5
}
},
{
"id": "TR_MODEL_DOES_NOT_SUPPORT_COIN",
"defaultMessage": "The coin {coin} is not supported by your Trezor model.",
"file": "src/views/Wallet/components/Content/components/FirmwareUnsupported/index.messages.js",
"start": {
"line": 10,
"column": 36
},
"end": {
"line": 13,
"column": 5
}
}
]

@ -0,0 +1,15 @@
[
{
"id": "TR_INITIALIZING_ACCOUNTS",
"defaultMessage": "Initializing accounts",
"file": "src/views/Wallet/components/Content/index.messages.js",
"start": {
"line": 6,
"column": 30
},
"end": {
"line": 9,
"column": 5
}
}
]

@ -0,0 +1,68 @@
[
{
"id": "TR_ACCOUNT_HASH",
"description": "Used in auto-generated account label",
"defaultMessage": "Account #{number}",
"file": "src/views/Wallet/components/LeftNavigation/components/AccountMenu/index.messages.js",
"start": {
"line": 6,
"column": 21
},
"end": {
"line": 10,
"column": 5
}
},
{
"id": "TR_LOADING_DOT_DOT_DOT",
"defaultMessage": "Loading...",
"file": "src/views/Wallet/components/LeftNavigation/components/AccountMenu/index.messages.js",
"start": {
"line": 11,
"column": 28
},
"end": {
"line": 14,
"column": 5
}
},
{
"id": "TR_TO_ADD_A_NEW_ACCOUNT_LAST",
"defaultMessage": "To add a new account, last account must have some transactions.",
"file": "src/views/Wallet/components/LeftNavigation/components/AccountMenu/index.messages.js",
"start": {
"line": 15,
"column": 34
},
"end": {
"line": 18,
"column": 5
}
},
{
"id": "TR_TO_ADD_ACCOUNTS",
"defaultMessage": "To add accounts, make sure your device is connected.",
"file": "src/views/Wallet/components/LeftNavigation/components/AccountMenu/index.messages.js",
"start": {
"line": 19,
"column": 24
},
"end": {
"line": 22,
"column": 5
}
},
{
"id": "TR_ADD_ACCOUNT",
"defaultMessage": "Add account",
"file": "src/views/Wallet/components/LeftNavigation/components/AccountMenu/index.messages.js",
"start": {
"line": 23,
"column": 20
},
"end": {
"line": 26,
"column": 5
}
}
]

@ -0,0 +1,28 @@
[
{
"id": "TR_OTHER_COINS",
"defaultMessage": "Other coins",
"file": "src/views/Wallet/components/LeftNavigation/components/CoinMenu/index.messages.js",
"start": {
"line": 6,
"column": 20
},
"end": {
"line": 9,
"column": 5
}
},
{
"id": "TR_YOU_WILL_BE_REDIRECTED",
"defaultMessage": "(You will be redirected)",
"file": "src/views/Wallet/components/LeftNavigation/components/CoinMenu/index.messages.js",
"start": {
"line": 10,
"column": 31
},
"end": {
"line": 13,
"column": 5
}
}
]

@ -0,0 +1,42 @@
[
{
"id": "TR_CHANGE_WALLET_TYPE",
"defaultMessage": "Change wallet type",
"file": "src/views/Wallet/components/LeftNavigation/components/DeviceMenu/components/MenuItems/index.messages.js",
"start": {
"line": 6,
"column": 27
},
"end": {
"line": 9,
"column": 5
}
},
{
"id": "TR_RENEW_SESSION",
"description": "TODO",
"defaultMessage": "Renew session",
"file": "src/views/Wallet/components/LeftNavigation/components/DeviceMenu/components/MenuItems/index.messages.js",
"start": {
"line": 10,
"column": 22
},
"end": {
"line": 14,
"column": 5
}
},
{
"id": "TR_FORGET_DEVICE",
"defaultMessage": "Forget device",
"file": "src/views/Wallet/components/LeftNavigation/components/DeviceMenu/components/MenuItems/index.messages.js",
"start": {
"line": 15,
"column": 22
},
"end": {
"line": 18,
"column": 5
}
}
]

@ -0,0 +1,93 @@
[
{
"id": "TR_YOU_ARE_IN_YOUR_STANDARD_WALLET",
"defaultMessage": "You are in your standard wallet.",
"file": "src/views/Wallet/components/LeftNavigation/index.messages.js",
"start": {
"line": 6,
"column": 40
},
"end": {
"line": 9,
"column": 5
}
},
{
"id": "TR_YOU_ARE_IN_YOUR_WALLET",
"defaultMessage": "You are in your hidden wallet.",
"file": "src/views/Wallet/components/LeftNavigation/index.messages.js",
"start": {
"line": 10,
"column": 38
},
"end": {
"line": 13,
"column": 5
}
},
{
"id": "TR_CLICK_HERE_TO_ACCESS_YOUR_HIDDEN",
"defaultMessage": "Click here to access your hidden wallet.",
"file": "src/views/Wallet/components/LeftNavigation/index.messages.js",
"start": {
"line": 14,
"column": 41
},
"end": {
"line": 17,
"column": 5
}
},
{
"id": "TR_CLICK_HERE_TO_ACCESS_YOUR_STANDARD",
"defaultMessage": "Click here to access your standard or another hidden wallet.",
"file": "src/views/Wallet/components/LeftNavigation/index.messages.js",
"start": {
"line": 18,
"column": 43
},
"end": {
"line": 21,
"column": 5
}
},
{
"id": "TR_TO_ACCESS_OTHER_WALLETS",
"defaultMessage": "To access other wallets please connect your device.",
"file": "src/views/Wallet/components/LeftNavigation/index.messages.js",
"start": {
"line": 22,
"column": 32
},
"end": {
"line": 25,
"column": 5
}
},
{
"id": "TR_NEED_HELP",
"defaultMessage": "Need help?",
"file": "src/views/Wallet/components/LeftNavigation/index.messages.js",
"start": {
"line": 26,
"column": 18
},
"end": {
"line": 29,
"column": 5
}
},
{
"id": "TR_NUMBER_OF_DEVICES",
"defaultMessage": "Number of devices",
"file": "src/views/Wallet/components/LeftNavigation/index.messages.js",
"start": {
"line": 30,
"column": 26
},
"end": {
"line": 33,
"column": 5
}
}
]

@ -0,0 +1,54 @@
[
{
"id": "TR_SUMMARY",
"defaultMessage": "Summary",
"file": "src/views/Wallet/components/TopNavigationAccount/index.messages.js",
"start": {
"line": 6,
"column": 16
},
"end": {
"line": 9,
"column": 5
}
},
{
"id": "TR_RECEIVE",
"defaultMessage": "Receive",
"file": "src/views/Wallet/components/TopNavigationAccount/index.messages.js",
"start": {
"line": 10,
"column": 16
},
"end": {
"line": 13,
"column": 5
}
},
{
"id": "TR_SEND",
"defaultMessage": "Send",
"file": "src/views/Wallet/components/TopNavigationAccount/index.messages.js",
"start": {
"line": 14,
"column": 13
},
"end": {
"line": 17,
"column": 5
}
},
{
"id": "TR_SIGN_AND_VERIFY",
"defaultMessage": "Sign & Verify",
"file": "src/views/Wallet/components/TopNavigationAccount/index.messages.js",
"start": {
"line": 18,
"column": 24
},
"end": {
"line": 21,
"column": 5
}
}
]

@ -0,0 +1,41 @@
[
{
"id": "TR_CHECK_ADDRESS_ON_TREZOR",
"defaultMessage": "Check address on Trezor",
"file": "src/views/Wallet/views/Account/Receive/common.messages.js",
"start": {
"line": 6,
"column": 32
},
"end": {
"line": 9,
"column": 5
}
},
{
"id": "TR_SHOW_FULL_ADDRESS",
"defaultMessage": "Show full address",
"file": "src/views/Wallet/views/Account/Receive/common.messages.js",
"start": {
"line": 10,
"column": 26
},
"end": {
"line": 13,
"column": 5
}
},
{
"id": "TR_QR_CODE",
"defaultMessage": "QR Code",
"file": "src/views/Wallet/views/Account/Receive/common.messages.js",
"start": {
"line": 14,
"column": 16
},
"end": {
"line": 17,
"column": 5
}
}
]

@ -0,0 +1,54 @@
[
{
"id": "TR_UNVERIFIED_ADDRESS_COMMA_CONNECT",
"defaultMessage": "Unverified address, connect your Trezor to verify it",
"file": "src/views/Wallet/views/Account/Receive/components/VerifyAddressTooltip/index.messages.js",
"start": {
"line": 6,
"column": 41
},
"end": {
"line": 9,
"column": 5
}
},
{
"id": "TR_UNVERIFIED_ADDRESS_COMMA_SHOW",
"defaultMessage": "Unverified address, show on Trezor.",
"file": "src/views/Wallet/views/Account/Receive/components/VerifyAddressTooltip/index.messages.js",
"start": {
"line": 10,
"column": 38
},
"end": {
"line": 13,
"column": 5
}
},
{
"id": "TR_SHOW_ON_TREZOR",
"defaultMessage": "Show on Trezor",
"file": "src/views/Wallet/views/Account/Receive/components/VerifyAddressTooltip/index.messages.js",
"start": {
"line": 14,
"column": 23
},
"end": {
"line": 17,
"column": 5
}
},
{
"id": "TR_CONNECT_YOUR_TREZOR_TO_CHECK",
"defaultMessage": "Connect your Trezor to verify this address",
"file": "src/views/Wallet/views/Account/Receive/components/VerifyAddressTooltip/index.messages.js",
"start": {
"line": 18,
"column": 37
},
"end": {
"line": 21,
"column": 5
}
}
]

@ -0,0 +1,15 @@
[
{
"id": "TR_RECEIVE_ETHEREUM_OR_TOKENS",
"defaultMessage": "Receive Ethereum or tokens",
"file": "src/views/Wallet/views/Account/Receive/ethereum/index.messages.js",
"start": {
"line": 6,
"column": 35
},
"end": {
"line": 9,
"column": 5
}
}
]

@ -0,0 +1,15 @@
[
{
"id": "TR_RECEIVE_RIPPLE",
"defaultMessage": "Receive Ripple",
"file": "src/views/Wallet/views/Account/Receive/ripple/index.messages.js",
"start": {
"line": 6,
"column": 23
},
"end": {
"line": 9,
"column": 5
}
}
]

@ -0,0 +1,84 @@
[
{
"id": "TR_AMOUNT",
"defaultMessage": "Amount",
"file": "src/views/Wallet/views/Account/Send/common.messages.js",
"start": {
"line": 6,
"column": 15
},
"end": {
"line": 9,
"column": 5
}
},
{
"id": "TR_SET_MAX",
"description": "Used for setting maximum amount in Send form",
"defaultMessage": "Set max",
"file": "src/views/Wallet/views/Account/Send/common.messages.js",
"start": {
"line": 10,
"column": 16
},
"end": {
"line": 14,
"column": 5
}
},
{
"id": "TR_FEE",
"description": "Label in Send form",
"defaultMessage": "Fee",
"file": "src/views/Wallet/views/Account/Send/common.messages.js",
"start": {
"line": 15,
"column": 12
},
"end": {
"line": 19,
"column": 5
}
},
{
"id": "TR_RECOMMENDED_FEES_UPDATED",
"defaultMessage": "Recommended fees updated.",
"file": "src/views/Wallet/views/Account/Send/common.messages.js",
"start": {
"line": 20,
"column": 33
},
"end": {
"line": 23,
"column": 5
}
},
{
"id": "TR_CLICK_HERE_TO_USE_THEM",
"description": "Button to use recommended updated fees.",
"defaultMessage": "Click here to use them",
"file": "src/views/Wallet/views/Account/Send/common.messages.js",
"start": {
"line": 24,
"column": 31
},
"end": {
"line": 28,
"column": 5
}
},
{
"id": "TR_ADVANCED_SETTINGS",
"description": "Shows advanced sending form",
"defaultMessage": "Advanced settings",
"file": "src/views/Wallet/views/Account/Send/common.messages.js",
"start": {
"line": 29,
"column": 26
},
"end": {
"line": 33,
"column": 5
}
}
]

@ -0,0 +1,132 @@
[
{
"id": "TR_GAS_LIMIT",
"defaultMessage": "Gas limit",
"file": "src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js",
"start": {
"line": 6,
"column": 18
},
"end": {
"line": 9,
"column": 5
}
},
{
"id": "TR_GAS_LIMIT_REFERS_TO",
"defaultMessage": "Gas limit refers to the maximum amount of gas user is willing to spendon a particular transaction. {TR_GAS_QUOTATION}. Increasing the gas limit will not get the transaction confirmed sooner. Default value for sending {gasLimitTooltipCurrency} is {gasLimitTooltipValue}.",
"file": "src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js",
"start": {
"line": 10,
"column": 28
},
"end": {
"line": 13,
"column": 5
}
},
{
"id": "TR_GAS_QUOTATION",
"defaultMessage": "Transaction fee = gas limit * gas price",
"file": "src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js",
"start": {
"line": 14,
"column": 22
},
"end": {
"line": 17,
"column": 5
}
},
{
"id": "TR_SET_DEFAULT",
"defaultMessage": "Set default",
"file": "src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js",
"start": {
"line": 18,
"column": 20
},
"end": {
"line": 21,
"column": 5
}
},
{
"id": "TR_CALCULATING_DOT_DOT",
"defaultMessage": "Calculating...",
"file": "src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js",
"start": {
"line": 22,
"column": 28
},
"end": {
"line": 25,
"column": 5
}
},
{
"id": "TR_GAS_PRICE",
"defaultMessage": "Gas price",
"file": "src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js",
"start": {
"line": 26,
"column": 18
},
"end": {
"line": 29,
"column": 5
}
},
{
"id": "TR_GAS_PRICE_REFERS_TO",
"defaultMessage": "Gas price refers to the amount of ether you are willing to pay for every unit of gas, and is usually measured in “Gwei”. {TR_GAS_PRICE_QUOTATION}. Increasing the gas price will get the transaction confirmed sooner but makes it more expensive. The recommended gas price is {recommendedGasPrice} GWEI.",
"file": "src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js",
"start": {
"line": 30,
"column": 28
},
"end": {
"line": 33,
"column": 5
}
},
{
"id": "TR_GAS_PRICE_QUOTATION",
"defaultMessage": "Transaction fee = gas limit * gas price",
"file": "src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js",
"start": {
"line": 34,
"column": 28
},
"end": {
"line": 37,
"column": 5
}
},
{
"id": "TR_DATA",
"defaultMessage": "Data",
"file": "src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js",
"start": {
"line": 38,
"column": 13
},
"end": {
"line": 41,
"column": 5
}
},
{
"id": "TR_DATA_IS_USUALLY_USED",
"defaultMessage": "Data is usually used when you send transactions to contracts.",
"file": "src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js",
"start": {
"line": 42,
"column": 29
},
"end": {
"line": 45,
"column": 5
}
}
]

@ -0,0 +1,28 @@
[
{
"id": "TR_SEND_ETHEREUM_OR_TOKENS",
"defaultMessage": "Send Ethereum or tokens",
"file": "src/views/Wallet/views/Account/Send/ethereum/index.messages.js",
"start": {
"line": 6,
"column": 32
},
"end": {
"line": 9,
"column": 5
}
},
{
"id": "YOU_HAVE_TOKEN_BALANCE",
"defaultMessage": "You have: {tokenBalance}",
"file": "src/views/Wallet/views/Account/Send/ethereum/index.messages.js",
"start": {
"line": 10,
"column": 28
},
"end": {
"line": 13,
"column": 5
}
}
]

@ -0,0 +1,41 @@
[
{
"id": "TR_XRP_TRANSFER_COST",
"defaultMessage": "Transfer cost in XRP drops",
"file": "src/views/Wallet/views/Account/Send/ripple/components/AdvancedForm/index.messages.js",
"start": {
"line": 6,
"column": 26
},
"end": {
"line": 9,
"column": 5
}
},
{
"id": "TR_XRP_DESTINATION_TAG",
"defaultMessage": "Destination tag",
"file": "src/views/Wallet/views/Account/Send/ripple/components/AdvancedForm/index.messages.js",
"start": {
"line": 10,
"column": 28
},
"end": {
"line": 13,
"column": 5
}
},
{
"id": "TR_XRP_DESTINATION_TAG_EXPLAINED",
"defaultMessage": "Number that identifies a reason for payment or a non-Ripple account.",
"file": "src/views/Wallet/views/Account/Send/ripple/components/AdvancedForm/index.messages.js",
"start": {
"line": 14,
"column": 38
},
"end": {
"line": 17,
"column": 5
}
}
]

@ -0,0 +1,29 @@
[
{
"id": "TR_XRP_RESERVE",
"description": "XRP reserve input label",
"defaultMessage": "Reserve: {value}",
"file": "src/views/Wallet/views/Account/Send/ripple/index.messages.js",
"start": {
"line": 6,
"column": 20
},
"end": {
"line": 10,
"column": 5
}
},
{
"id": "TR_SEND_RIPPLE",
"defaultMessage": "Send Ripple",
"file": "src/views/Wallet/views/Account/Send/ripple/index.messages.js",
"start": {
"line": 11,
"column": 20
},
"end": {
"line": 14,
"column": 5
}
}
]

@ -0,0 +1,42 @@
[
{
"id": "TR_DEVICE_SETTINGS",
"defaultMessage": "Device settings",
"file": "src/views/common.messages.js",
"start": {
"line": 6,
"column": 24
},
"end": {
"line": 9,
"column": 5
}
},
{
"id": "TR_CLEAR",
"description": "Clear form button",
"defaultMessage": "Clear",
"file": "src/views/common.messages.js",
"start": {
"line": 10,
"column": 14
},
"end": {
"line": 14,
"column": 5
}
},
{
"id": "TR_CHECK_FOR_DEVICES",
"defaultMessage": "Check for devices",
"file": "src/views/common.messages.js",
"start": {
"line": 15,
"column": 26
},
"end": {
"line": 18,
"column": 5
}
}
]

@ -1,18 +1,87 @@
"key","source","context","af","ar","bn","zh-CN","zh-TW","cs","nl","en","et","fr","de","el","he","hi","hu","id","it","ja","ko","no","fa","pl","pt-PT","ru","es-ES","sv-SE","tr","uk","vi"
"TR_DEVICE_SETTINGS","Device settings","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_CLEAR","Clear","Clear form button","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_CHECK_FOR_DEVICES","Check for devices","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_YOU_ARE_OPENING_TREZOR_BETA_WALLET","You are opening Trezor Beta Wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_TREZOR_BETA_WALLET_IS","{trezorBetaWallet} is a public feature-testing version of the {trezorWallet}, offering the newest features before they are available to the general public.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_IN_CONTRAST_COMMA_TREZOR","In contrast, {trezorWallet} is feature-conservative, making sure that its functionality is maximally reliable and dependable for the general public.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_PLEASE_NOTE_THAT_THE_TREZOR","Please note that the {trezorBetaWallet} might be collecting anonymized usage data, especially error logs, for development purposes. The {trezorWallet} does not log any data.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_TREZOR_BETA_WALLET_IS","{TR_TREZOR_BETA_WALLET} is a public feature-testing version of the {TR_TREZOR_WALLET}, offering the newest features before they are available to the general public.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_IN_CONTRAST_COMMA_TREZOR","In contrast, {TR_TREZOR_WALLET} is feature-conservative, making sure that its functionality is maximally reliable and dependable for the general public.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_PLEASE_NOTE_THAT_THE_TREZOR","Please note that the {TR_TREZOR_BETA_WALLET} might be collecting anonymized usage data, especially error logs, for development purposes. The {TR_TREZOR_WALLET} does not log any data.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_OK_COMMA_I_UNDERSTAND","OK, I understand","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_TREZOR_WALLET","Trezor Wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_TREZOR_BETA_WALLET","Trezor Beta Wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_YOUR_BROWSER_IS_NOT_SUPPORTED","Your browser is not supported","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_PLEASE_CHOOSE_ONE_OF_THE_SUPPORTED","Please choose one of the supported browsers","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_GET_CHROME","Get Chrome","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_GET_FIREFOX","Get Firefox","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_TREZOR_WALLET_IS_AN_EASY_DASH","Trezor Wallet is an easy-to-use interface for your Trezor. Trezor Wallet allows you to easily control your funds, manage your balance and initiate transfers.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_THE_PRIVATE_BANK_IN_YOUR_HANDS","The private bank in your hands.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_CONNECT_TREZOR_TO_CONTINUE","Connect Trezor to continue","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_AND","and","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_CHECK_FOR_DEVICES","Check for devices","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_DEVICE_NOT_RECOGNIZED_TRY_INSTALLING","Device not recognized? Try installing the {link}.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_DONT_HAVE_A_TREZOR_GET","Don't have a Trezor? {getOne}","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_GET_ONE","Get one","Part of the sentence: Dont have a Trezor? Get one","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_NEW_COMMUNICATION_TOOL","New communication tool to facilitate the connection between your Trezor and your internet browser.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_DOWNLOAD_LATEST_BRIDGE","Download latest Bridge {version}","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_LEARN_MORE_ABOUT_LATEST_VERSION","Learn more about latest version in {TR_CHANGELOG}.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_CHANGELOG","Changelog","Part of the sentence: Learn more about latest version in {TR_CHANGELOG}.","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_CHECK_PGP_SIGNATURE","Check PGP signature","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_DONT_UPGRADE_BRIDGE","No, I don't want to upgrade Bridge now","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_TAKE_ME_BACK_TO_WALLET","Take me back to the wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_FIND_OUT_MORE_INFO","Find out more info","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_MODEL_DOES_NOT_SUPPORT_COIN","The coin {coin} is not supported by your Trezor model.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_INITIALIZING_ACCOUNTS","Initializing accounts","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_ACCOUNT_HASH","Account #{number}","Used in auto-generated account label","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_LOADING_DOT_DOT_DOT","Loading...","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_TO_ADD_A_NEW_ACCOUNT_LAST","To add a new account, last account must have some transactions.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_TO_ADD_ACCOUNTS","To add accounts, make sure your device is connected.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_ADD_ACCOUNT","Add account","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_OTHER_COINS","Other coins","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_YOU_WILL_BE_REDIRECTED","(You will be redirected)","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_CHANGE_WALLET_TYPE","Change wallet type","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_RENEW_SESSION","Renew session","TODO","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_FORGET_DEVICE","Forget device","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_YOU_ARE_IN_YOUR_STANDARD_WALLET","You are in your standard wallet.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_YOU_ARE_IN_YOUR_WALLET","You are in your hidden wallet.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_CLICK_HERE_TO_ACCESS_YOUR_HIDDEN","Click here to access your hidden wallet.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_CLICK_HERE_TO_ACCESS_YOUR_STANDARD","Click here to access your standard or another hidden wallet.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_TO_ACCESS_OTHER_WALLETS","To access other wallets please connect your device.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_NEED_HELP","Need help?","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_NUMBER_OF_DEVICES","Number of devices","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_SUMMARY","Summary","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_RECEIVE","Receive","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_SEND","Send","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_SIGN_AND_VERIFY","Sign & Verify","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_CHECK_ADDRESS_ON_TREZOR","Check address on Trezor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_SHOW_FULL_ADDRESS","Show full address","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_QR_CODE","QR Code","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_UNVERIFIED_ADDRESS_COMMA_CONNECT","Unverified address, connect your Trezor to verify it","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_UNVERIFIED_ADDRESS_COMMA_SHOW","Unverified address, show on Trezor.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_SHOW_ON_TREZOR","Show on Trezor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_CONNECT_YOUR_TREZOR_TO_CHECK","Connect your Trezor to verify this address","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_RECEIVE_ETHEREUM_OR_TOKENS","Receive Ethereum or tokens","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_RECEIVE_RIPPLE","Receive Ripple","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_AMOUNT","Amount","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_SET_MAX","Set max","Used for setting maximum amount in Send form","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_FEE","Fee","Label in Send form","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_RECOMMENDED_FEES_UPDATED","Recommended fees updated.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_CLICK_HERE_TO_USE_THEM","Click here to use them","Button to use recommended updated fees.","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_ADVANCED_SETTINGS","Advanced settings","Shows advanced sending form","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_GAS_LIMIT","Gas limit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_GAS_LIMIT_REFERS_TO","Gas limit refers to the maximum amount of gas user is willing to spendon a particular transaction. {TR_GAS_QUOTATION}. Increasing the gas limit will not get the transaction confirmed sooner. Default value for sending {gasLimitTooltipCurrency} is {gasLimitTooltipValue}.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_GAS_QUOTATION","Transaction fee = gas limit * gas price","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_SET_DEFAULT","Set default","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_CALCULATING_DOT_DOT","Calculating...","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_GAS_PRICE","Gas price","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_GAS_PRICE_REFERS_TO","Gas price refers to the amount of ether you are willing to pay for every unit of gas, and is usually measured in “Gwei”. {TR_GAS_PRICE_QUOTATION}. Increasing the gas price will get the transaction confirmed sooner but makes it more expensive. The recommended gas price is {recommendedGasPrice} GWEI.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_GAS_PRICE_QUOTATION","Transaction fee = gas limit * gas price","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_DATA","Data","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_DATA_IS_USUALLY_USED","Data is usually used when you send transactions to contracts.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_SEND_ETHEREUM_OR_TOKENS","Send Ethereum or tokens","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"YOU_HAVE_TOKEN_BALANCE","You have: {tokenBalance}","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_XRP_TRANSFER_COST","Transfer cost in XRP drops","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_XRP_DESTINATION_TAG","Destination tag","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_XRP_DESTINATION_TAG_EXPLAINED","Number that identifies a reason for payment or a non-Ripple account.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_XRP_RESERVE","Reserve: {value}","XRP reserve input label","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"TR_SEND_RIPPLE","Send Ripple","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"dashboard.selectyourcoin.title","Please select your coin","Title of the dashboard component if coin was not selected","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
"dashboard.selectyourcoin.body","You will gain access to receiving & sending selected coin","Content of the dashboard component if coin was not selected","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""

1 key source context af ar bn zh-CN zh-TW cs nl en et fr de el he hi hu id it ja ko no fa pl pt-PT ru es-ES sv-SE tr uk vi
2 TR_DEVICE_SETTINGS Device settings
3 TR_CLEAR Clear Clear form button
4 TR_CHECK_FOR_DEVICES Check for devices
5 TR_YOU_ARE_OPENING_TREZOR_BETA_WALLET You are opening Trezor Beta Wallet
6 TR_TREZOR_BETA_WALLET_IS {trezorBetaWallet} is a public feature-testing version of the {trezorWallet}, offering the newest features before they are available to the general public. {TR_TREZOR_BETA_WALLET} is a public feature-testing version of the {TR_TREZOR_WALLET}, offering the newest features before they are available to the general public.
7 TR_IN_CONTRAST_COMMA_TREZOR In contrast, {trezorWallet} is feature-conservative, making sure that its functionality is maximally reliable and dependable for the general public. In contrast, {TR_TREZOR_WALLET} is feature-conservative, making sure that its functionality is maximally reliable and dependable for the general public.
8 TR_PLEASE_NOTE_THAT_THE_TREZOR Please note that the {trezorBetaWallet} might be collecting anonymized usage data, especially error logs, for development purposes. The {trezorWallet} does not log any data. Please note that the {TR_TREZOR_BETA_WALLET} might be collecting anonymized usage data, especially error logs, for development purposes. The {TR_TREZOR_WALLET} does not log any data.
9 TR_OK_COMMA_I_UNDERSTAND OK, I understand
10 TR_TREZOR_WALLET Trezor Wallet
11 TR_TREZOR_BETA_WALLET Trezor Beta Wallet
12 TR_YOUR_BROWSER_IS_NOT_SUPPORTED Your browser is not supported
13 TR_PLEASE_CHOOSE_ONE_OF_THE_SUPPORTED Please choose one of the supported browsers
14 TR_GET_CHROME Get Chrome
15 TR_GET_FIREFOX Get Firefox
16 TR_TREZOR_WALLET_IS_AN_EASY_DASH Trezor Wallet is an easy-to-use interface for your Trezor. Trezor Wallet allows you to easily control your funds, manage your balance and initiate transfers.
17 TR_THE_PRIVATE_BANK_IN_YOUR_HANDS The private bank in your hands.
18 TR_CONNECT_TREZOR_TO_CONTINUE Connect Trezor to continue
19 TR_AND and
TR_CHECK_FOR_DEVICES Check for devices
20 TR_DEVICE_NOT_RECOGNIZED_TRY_INSTALLING Device not recognized? Try installing the {link}.
21 TR_DONT_HAVE_A_TREZOR_GET Don't have a Trezor? {getOne}
22 TR_GET_ONE Get one Part of the sentence: Dont have a Trezor? Get one
23 TR_NEW_COMMUNICATION_TOOL New communication tool to facilitate the connection between your Trezor and your internet browser.
24 TR_DOWNLOAD_LATEST_BRIDGE Download latest Bridge {version}
25 TR_LEARN_MORE_ABOUT_LATEST_VERSION Learn more about latest version in {TR_CHANGELOG}.
26 TR_CHANGELOG Changelog Part of the sentence: Learn more about latest version in {TR_CHANGELOG}.
27 TR_CHECK_PGP_SIGNATURE Check PGP signature
28 TR_DONT_UPGRADE_BRIDGE No, I don't want to upgrade Bridge now
29 TR_TAKE_ME_BACK_TO_WALLET Take me back to the wallet
30 TR_FIND_OUT_MORE_INFO Find out more info
31 TR_MODEL_DOES_NOT_SUPPORT_COIN The coin {coin} is not supported by your Trezor model.
32 TR_INITIALIZING_ACCOUNTS Initializing accounts
33 TR_ACCOUNT_HASH Account #{number} Used in auto-generated account label
34 TR_LOADING_DOT_DOT_DOT Loading...
35 TR_TO_ADD_A_NEW_ACCOUNT_LAST To add a new account, last account must have some transactions.
36 TR_TO_ADD_ACCOUNTS To add accounts, make sure your device is connected.
37 TR_ADD_ACCOUNT Add account
38 TR_OTHER_COINS Other coins
39 TR_YOU_WILL_BE_REDIRECTED (You will be redirected)
40 TR_CHANGE_WALLET_TYPE Change wallet type
41 TR_RENEW_SESSION Renew session TODO
42 TR_FORGET_DEVICE Forget device
43 TR_YOU_ARE_IN_YOUR_STANDARD_WALLET You are in your standard wallet.
44 TR_YOU_ARE_IN_YOUR_WALLET You are in your hidden wallet.
45 TR_CLICK_HERE_TO_ACCESS_YOUR_HIDDEN Click here to access your hidden wallet.
46 TR_CLICK_HERE_TO_ACCESS_YOUR_STANDARD Click here to access your standard or another hidden wallet.
47 TR_TO_ACCESS_OTHER_WALLETS To access other wallets please connect your device.
48 TR_NEED_HELP Need help?
49 TR_NUMBER_OF_DEVICES Number of devices
50 TR_SUMMARY Summary
51 TR_RECEIVE Receive
52 TR_SEND Send
53 TR_SIGN_AND_VERIFY Sign & Verify
54 TR_CHECK_ADDRESS_ON_TREZOR Check address on Trezor
55 TR_SHOW_FULL_ADDRESS Show full address
56 TR_QR_CODE QR Code
57 TR_UNVERIFIED_ADDRESS_COMMA_CONNECT Unverified address, connect your Trezor to verify it
58 TR_UNVERIFIED_ADDRESS_COMMA_SHOW Unverified address, show on Trezor.
59 TR_SHOW_ON_TREZOR Show on Trezor
60 TR_CONNECT_YOUR_TREZOR_TO_CHECK Connect your Trezor to verify this address
61 TR_RECEIVE_ETHEREUM_OR_TOKENS Receive Ethereum or tokens
62 TR_RECEIVE_RIPPLE Receive Ripple
63 TR_AMOUNT Amount
64 TR_SET_MAX Set max Used for setting maximum amount in Send form
65 TR_FEE Fee Label in Send form
66 TR_RECOMMENDED_FEES_UPDATED Recommended fees updated.
67 TR_CLICK_HERE_TO_USE_THEM Click here to use them Button to use recommended updated fees.
68 TR_ADVANCED_SETTINGS Advanced settings Shows advanced sending form
69 TR_GAS_LIMIT Gas limit
70 TR_GAS_LIMIT_REFERS_TO Gas limit refers to the maximum amount of gas user is willing to spendon a particular transaction. {TR_GAS_QUOTATION}. Increasing the gas limit will not get the transaction confirmed sooner. Default value for sending {gasLimitTooltipCurrency} is {gasLimitTooltipValue}.
71 TR_GAS_QUOTATION Transaction fee = gas limit * gas price
72 TR_SET_DEFAULT Set default
73 TR_CALCULATING_DOT_DOT Calculating...
74 TR_GAS_PRICE Gas price
75 TR_GAS_PRICE_REFERS_TO Gas price refers to the amount of ether you are willing to pay for every unit of gas, and is usually measured in “Gwei”. {TR_GAS_PRICE_QUOTATION}. Increasing the gas price will get the transaction confirmed sooner but makes it more expensive. The recommended gas price is {recommendedGasPrice} GWEI.
76 TR_GAS_PRICE_QUOTATION Transaction fee = gas limit * gas price
77 TR_DATA Data
78 TR_DATA_IS_USUALLY_USED Data is usually used when you send transactions to contracts.
79 TR_SEND_ETHEREUM_OR_TOKENS Send Ethereum or tokens
80 YOU_HAVE_TOKEN_BALANCE You have: {tokenBalance}
81 TR_XRP_TRANSFER_COST Transfer cost in XRP drops
82 TR_XRP_DESTINATION_TAG Destination tag
83 TR_XRP_DESTINATION_TAG_EXPLAINED Number that identifies a reason for payment or a non-Ripple account.
84 TR_XRP_RESERVE Reserve: {value} XRP reserve input label
85 TR_SEND_RIPPLE Send Ripple
86 dashboard.selectyourcoin.title Please select your coin Title of the dashboard component if coin was not selected
87 dashboard.selectyourcoin.body You will gain access to receiving & sending selected coin Content of the dashboard component if coin was not selected

@ -1,4 +1,29 @@
{
"TR_DEVICE_SETTINGS": {
"source": "Device settings",
"meta": {
"occurrences": [
"src/views/common.messages.js"
]
}
},
"TR_CLEAR": {
"source": "Clear",
"meta": {
"comment": "Clear form button",
"occurrences": [
"src/views/common.messages.js"
]
}
},
"TR_CHECK_FOR_DEVICES": {
"source": "Check for devices",
"meta": {
"occurrences": [
"src/views/common.messages.js"
]
}
},
"TR_YOU_ARE_OPENING_TREZOR_BETA_WALLET": {
"source": "You are opening Trezor Beta Wallet",
"meta": {
@ -8,7 +33,7 @@
}
},
"TR_TREZOR_BETA_WALLET_IS": {
"source": "{trezorBetaWallet} is a public feature-testing version of the {trezorWallet}, offering the newest features before they are available to the general public.",
"source": "{TR_TREZOR_BETA_WALLET} is a public feature-testing version of the {TR_TREZOR_WALLET}, offering the newest features before they are available to the general public.",
"meta": {
"occurrences": [
"src/views/Landing/components/BetaDisclaimer/index.messages.js"
@ -16,7 +41,7 @@
}
},
"TR_IN_CONTRAST_COMMA_TREZOR": {
"source": "In contrast, {trezorWallet} is feature-conservative, making sure that its functionality is maximally reliable and dependable for the general public.",
"source": "In contrast, {TR_TREZOR_WALLET} is feature-conservative, making sure that its functionality is maximally reliable and dependable for the general public.",
"meta": {
"occurrences": [
"src/views/Landing/components/BetaDisclaimer/index.messages.js"
@ -24,7 +49,7 @@
}
},
"TR_PLEASE_NOTE_THAT_THE_TREZOR": {
"source": "Please note that the {trezorBetaWallet} might be collecting anonymized usage data, especially error logs, for development purposes. The {trezorWallet} does not log any data.",
"source": "Please note that the {TR_TREZOR_BETA_WALLET} might be collecting anonymized usage data, especially error logs, for development purposes. The {TR_TREZOR_WALLET} does not log any data.",
"meta": {
"occurrences": [
"src/views/Landing/components/BetaDisclaimer/index.messages.js"
@ -55,6 +80,38 @@
]
}
},
"TR_YOUR_BROWSER_IS_NOT_SUPPORTED": {
"source": "Your browser is not supported",
"meta": {
"occurrences": [
"src/views/Landing/components/BrowserNotSupported/index.messages.js"
]
}
},
"TR_PLEASE_CHOOSE_ONE_OF_THE_SUPPORTED": {
"source": "Please choose one of the supported browsers",
"meta": {
"occurrences": [
"src/views/Landing/components/BrowserNotSupported/index.messages.js"
]
}
},
"TR_GET_CHROME": {
"source": "Get Chrome",
"meta": {
"occurrences": [
"src/views/Landing/components/BrowserNotSupported/index.messages.js"
]
}
},
"TR_GET_FIREFOX": {
"source": "Get Firefox",
"meta": {
"occurrences": [
"src/views/Landing/components/BrowserNotSupported/index.messages.js"
]
}
},
"TR_TREZOR_WALLET_IS_AN_EASY_DASH": {
"source": "Trezor Wallet is an easy-to-use interface for your Trezor. Trezor Wallet allows you to easily control your funds, manage your balance and initiate transfers.",
"meta": {
@ -87,14 +144,6 @@
]
}
},
"TR_CHECK_FOR_DEVICES": {
"source": "Check for devices",
"meta": {
"occurrences": [
"src/views/Landing/components/ConnectDevice/index.messages.js"
]
}
},
"TR_DEVICE_NOT_RECOGNIZED_TRY_INSTALLING": {
"source": "Device not recognized? Try installing the {link}.",
"meta": {
@ -120,6 +169,518 @@
]
}
},
"TR_NEW_COMMUNICATION_TOOL": {
"source": "New communication tool to facilitate the connection between your Trezor and your internet browser.",
"meta": {
"occurrences": [
"src/views/Landing/views/InstallBridge/index.messages.js"
]
}
},
"TR_DOWNLOAD_LATEST_BRIDGE": {
"source": "Download latest Bridge {version}",
"meta": {
"occurrences": [
"src/views/Landing/views/InstallBridge/index.messages.js"
]
}
},
"TR_LEARN_MORE_ABOUT_LATEST_VERSION": {
"source": "Learn more about latest version in {TR_CHANGELOG}.",
"meta": {
"occurrences": [
"src/views/Landing/views/InstallBridge/index.messages.js"
]
}
},
"TR_CHANGELOG": {
"source": "Changelog",
"meta": {
"comment": "Part of the sentence: Learn more about latest version in {TR_CHANGELOG}.",
"occurrences": [
"src/views/Landing/views/InstallBridge/index.messages.js"
]
}
},
"TR_CHECK_PGP_SIGNATURE": {
"source": "Check PGP signature",
"meta": {
"occurrences": [
"src/views/Landing/views/InstallBridge/index.messages.js"
]
}
},
"TR_DONT_UPGRADE_BRIDGE": {
"source": "No, I don't want to upgrade Bridge now",
"meta": {
"occurrences": [
"src/views/Landing/views/InstallBridge/index.messages.js"
]
}
},
"TR_TAKE_ME_BACK_TO_WALLET": {
"source": "Take me back to the wallet",
"meta": {
"occurrences": [
"src/views/Landing/views/InstallBridge/index.messages.js"
]
}
},
"TR_FIND_OUT_MORE_INFO": {
"source": "Find out more info",
"meta": {
"occurrences": [
"src/views/Wallet/components/Content/components/FirmwareUnsupported/index.messages.js"
]
}
},
"TR_MODEL_DOES_NOT_SUPPORT_COIN": {
"source": "The coin {coin} is not supported by your Trezor model.",
"meta": {
"occurrences": [
"src/views/Wallet/components/Content/components/FirmwareUnsupported/index.messages.js"
]
}
},
"TR_INITIALIZING_ACCOUNTS": {
"source": "Initializing accounts",
"meta": {
"occurrences": [
"src/views/Wallet/components/Content/index.messages.js"
]
}
},
"TR_ACCOUNT_HASH": {
"source": "Account #{number}",
"meta": {
"comment": "Used in auto-generated account label",
"occurrences": [
"src/views/Wallet/components/LeftNavigation/components/AccountMenu/index.messages.js"
]
}
},
"TR_LOADING_DOT_DOT_DOT": {
"source": "Loading...",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/components/AccountMenu/index.messages.js"
]
}
},
"TR_TO_ADD_A_NEW_ACCOUNT_LAST": {
"source": "To add a new account, last account must have some transactions.",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/components/AccountMenu/index.messages.js"
]
}
},
"TR_TO_ADD_ACCOUNTS": {
"source": "To add accounts, make sure your device is connected.",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/components/AccountMenu/index.messages.js"
]
}
},
"TR_ADD_ACCOUNT": {
"source": "Add account",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/components/AccountMenu/index.messages.js"
]
}
},
"TR_OTHER_COINS": {
"source": "Other coins",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/components/CoinMenu/index.messages.js"
]
}
},
"TR_YOU_WILL_BE_REDIRECTED": {
"source": "(You will be redirected)",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/components/CoinMenu/index.messages.js"
]
}
},
"TR_CHANGE_WALLET_TYPE": {
"source": "Change wallet type",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/components/DeviceMenu/components/MenuItems/index.messages.js"
]
}
},
"TR_RENEW_SESSION": {
"source": "Renew session",
"meta": {
"comment": "TODO",
"occurrences": [
"src/views/Wallet/components/LeftNavigation/components/DeviceMenu/components/MenuItems/index.messages.js"
]
}
},
"TR_FORGET_DEVICE": {
"source": "Forget device",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/components/DeviceMenu/components/MenuItems/index.messages.js"
]
}
},
"TR_YOU_ARE_IN_YOUR_STANDARD_WALLET": {
"source": "You are in your standard wallet.",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/index.messages.js"
]
}
},
"TR_YOU_ARE_IN_YOUR_WALLET": {
"source": "You are in your hidden wallet.",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/index.messages.js"
]
}
},
"TR_CLICK_HERE_TO_ACCESS_YOUR_HIDDEN": {
"source": "Click here to access your hidden wallet.",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/index.messages.js"
]
}
},
"TR_CLICK_HERE_TO_ACCESS_YOUR_STANDARD": {
"source": "Click here to access your standard or another hidden wallet.",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/index.messages.js"
]
}
},
"TR_TO_ACCESS_OTHER_WALLETS": {
"source": "To access other wallets please connect your device.",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/index.messages.js"
]
}
},
"TR_NEED_HELP": {
"source": "Need help?",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/index.messages.js"
]
}
},
"TR_NUMBER_OF_DEVICES": {
"source": "Number of devices",
"meta": {
"occurrences": [
"src/views/Wallet/components/LeftNavigation/index.messages.js"
]
}
},
"TR_SUMMARY": {
"source": "Summary",
"meta": {
"occurrences": [
"src/views/Wallet/components/TopNavigationAccount/index.messages.js"
]
}
},
"TR_RECEIVE": {
"source": "Receive",
"meta": {
"occurrences": [
"src/views/Wallet/components/TopNavigationAccount/index.messages.js"
]
}
},
"TR_SEND": {
"source": "Send",
"meta": {
"occurrences": [
"src/views/Wallet/components/TopNavigationAccount/index.messages.js"
]
}
},
"TR_SIGN_AND_VERIFY": {
"source": "Sign & Verify",
"meta": {
"occurrences": [
"src/views/Wallet/components/TopNavigationAccount/index.messages.js"
]
}
},
"TR_CHECK_ADDRESS_ON_TREZOR": {
"source": "Check address on Trezor",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Receive/common.messages.js"
]
}
},
"TR_SHOW_FULL_ADDRESS": {
"source": "Show full address",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Receive/common.messages.js"
]
}
},
"TR_QR_CODE": {
"source": "QR Code",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Receive/common.messages.js"
]
}
},
"TR_UNVERIFIED_ADDRESS_COMMA_CONNECT": {
"source": "Unverified address, connect your Trezor to verify it",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Receive/components/VerifyAddressTooltip/index.messages.js"
]
}
},
"TR_UNVERIFIED_ADDRESS_COMMA_SHOW": {
"source": "Unverified address, show on Trezor.",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Receive/components/VerifyAddressTooltip/index.messages.js"
]
}
},
"TR_SHOW_ON_TREZOR": {
"source": "Show on Trezor",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Receive/components/VerifyAddressTooltip/index.messages.js"
]
}
},
"TR_CONNECT_YOUR_TREZOR_TO_CHECK": {
"source": "Connect your Trezor to verify this address",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Receive/components/VerifyAddressTooltip/index.messages.js"
]
}
},
"TR_RECEIVE_ETHEREUM_OR_TOKENS": {
"source": "Receive Ethereum or tokens",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Receive/ethereum/index.messages.js"
]
}
},
"TR_RECEIVE_RIPPLE": {
"source": "Receive Ripple",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Receive/ripple/index.messages.js"
]
}
},
"TR_AMOUNT": {
"source": "Amount",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/common.messages.js"
]
}
},
"TR_SET_MAX": {
"source": "Set max",
"meta": {
"comment": "Used for setting maximum amount in Send form",
"occurrences": [
"src/views/Wallet/views/Account/Send/common.messages.js"
]
}
},
"TR_FEE": {
"source": "Fee",
"meta": {
"comment": "Label in Send form",
"occurrences": [
"src/views/Wallet/views/Account/Send/common.messages.js"
]
}
},
"TR_RECOMMENDED_FEES_UPDATED": {
"source": "Recommended fees updated.",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/common.messages.js"
]
}
},
"TR_CLICK_HERE_TO_USE_THEM": {
"source": "Click here to use them",
"meta": {
"comment": "Button to use recommended updated fees.",
"occurrences": [
"src/views/Wallet/views/Account/Send/common.messages.js"
]
}
},
"TR_ADVANCED_SETTINGS": {
"source": "Advanced settings",
"meta": {
"comment": "Shows advanced sending form",
"occurrences": [
"src/views/Wallet/views/Account/Send/common.messages.js"
]
}
},
"TR_GAS_LIMIT": {
"source": "Gas limit",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js"
]
}
},
"TR_GAS_LIMIT_REFERS_TO": {
"source": "Gas limit refers to the maximum amount of gas user is willing to spendon a particular transaction. {TR_GAS_QUOTATION}. Increasing the gas limit will not get the transaction confirmed sooner. Default value for sending {gasLimitTooltipCurrency} is {gasLimitTooltipValue}.",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js"
]
}
},
"TR_GAS_QUOTATION": {
"source": "Transaction fee = gas limit * gas price",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js"
]
}
},
"TR_SET_DEFAULT": {
"source": "Set default",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js"
]
}
},
"TR_CALCULATING_DOT_DOT": {
"source": "Calculating...",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js"
]
}
},
"TR_GAS_PRICE": {
"source": "Gas price",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js"
]
}
},
"TR_GAS_PRICE_REFERS_TO": {
"source": "Gas price refers to the amount of ether you are willing to pay for every unit of gas, and is usually measured in “Gwei”. {TR_GAS_PRICE_QUOTATION}. Increasing the gas price will get the transaction confirmed sooner but makes it more expensive. The recommended gas price is {recommendedGasPrice} GWEI.",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js"
]
}
},
"TR_GAS_PRICE_QUOTATION": {
"source": "Transaction fee = gas limit * gas price",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js"
]
}
},
"TR_DATA": {
"source": "Data",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js"
]
}
},
"TR_DATA_IS_USUALLY_USED": {
"source": "Data is usually used when you send transactions to contracts.",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ethereum/components/AdvancedForm/index.messages.js"
]
}
},
"TR_SEND_ETHEREUM_OR_TOKENS": {
"source": "Send Ethereum or tokens",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ethereum/index.messages.js"
]
}
},
"YOU_HAVE_TOKEN_BALANCE": {
"source": "You have: {tokenBalance}",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ethereum/index.messages.js"
]
}
},
"TR_XRP_TRANSFER_COST": {
"source": "Transfer cost in XRP drops",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ripple/components/AdvancedForm/index.messages.js"
]
}
},
"TR_XRP_DESTINATION_TAG": {
"source": "Destination tag",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ripple/components/AdvancedForm/index.messages.js"
]
}
},
"TR_XRP_DESTINATION_TAG_EXPLAINED": {
"source": "Number that identifies a reason for payment or a non-Ripple account.",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ripple/components/AdvancedForm/index.messages.js"
]
}
},
"TR_XRP_RESERVE": {
"source": "Reserve: {value}",
"meta": {
"comment": "XRP reserve input label",
"occurrences": [
"src/views/Wallet/views/Account/Send/ripple/index.messages.js"
]
}
},
"TR_SEND_RIPPLE": {
"source": "Send Ripple",
"meta": {
"occurrences": [
"src/views/Wallet/views/Account/Send/ripple/index.messages.js"
]
}
},
"dashboard.selectyourcoin.title": {
"source": "Please select your coin",
"meta": {

Loading…
Cancel
Save