Browse Source

Merge pull request #675 from LedgerHQ/develop

Prepare for beta.1
master
Gaëtan Renaudeau 7 years ago
committed by GitHub
parent
commit
d13819d984
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      .circleci/config.yml
  2. 20
      src/api/network.js
  3. 4
      src/commands/listenDevices.js
  4. 14
      src/components/AccountPage/EmptyStateAccount.js
  5. 2
      src/components/BalanceSummary/index.js
  6. 5
      src/components/DashboardPage/EmptyState.js
  7. 2
      src/components/DeviceConnect/index.js
  8. 15
      src/components/IsUnlocked.js
  9. 5
      src/components/Onboarding/helperComponents.js
  10. 2
      src/components/Onboarding/steps/GenuineCheck.js
  11. 4
      src/components/Onboarding/steps/Init.js
  12. 3
      src/components/SettingsPage/SettingsSection.js
  13. 2
      src/components/SettingsPage/sections/Display.js
  14. 8
      src/components/TopBar/ActivityIndicator.js
  15. 8
      src/components/TranslatedError.js
  16. 1
      src/components/base/Input/index.js
  17. 4
      src/components/base/Spinner.js
  18. 4
      src/components/modals/AddAccounts/steps/03-step-import.js
  19. 10
      src/components/modals/OperationDetails.js
  20. 2
      src/components/modals/Send/04-step-confirmation.js
  21. 3
      src/config/constants.js
  22. 4
      src/icons/Loader.js
  23. 2
      src/renderer/createStore.js
  24. 36
      static/i18n/en/app.yml
  25. 32
      static/i18n/en/errors.yml
  26. 320
      static/i18n/fr/app.yml
  27. 39
      static/i18n/fr/errors.yml
  28. 88
      static/i18n/fr/onboarding.yml
  29. 42
      yarn.lock

4
.circleci/config.yml

@ -15,13 +15,13 @@ jobs:
- restore_cache:
name: Restore Yarn Package Cache
keys:
- v1-yarn-packages-{{ .Branch }}-{{ checksum "yarn.lock" }}
- v1-yarn-packages-{{ checksum "yarn.lock" }}
- run:
name: Install Dependencies
command: bash scripts/install-ci-deps.sh
- save_cache:
name: Save Yarn Package Cache
key: v1-yarn-packages-{{ .Branch }}-{{ checksum "yarn.lock" }}
key: v1-yarn-packages-{{ checksum "yarn.lock" }}
paths:
- node_modules/
- run:

20
src/api/network.js

@ -19,16 +19,20 @@ const userFriendlyError = <A>(p: Promise<A>): Promise<A> =>
let msg = data.error || data.message
if (typeof msg === 'string') {
const m = msg.match(/^JsDefined\((.*)\)$/)
if (m) {
try {
const { message } = JSON.parse(m[1])
if (typeof message === 'string') {
msg = message
}
} catch (e) {
logger.warn("can't parse server result", e)
const innerPart = m ? m[1] : msg
try {
const r = JSON.parse(innerPart)
let message = r.error
if (typeof message === 'object') {
message = message.message
}
if (typeof message === 'string') {
msg = message
}
} catch (e) {
logger.warn("can't parse server result", e)
}
if (msg && msg[0] !== '<') {
throw new LedgerAPIErrorWithMessage(msg)
}

4
src/commands/listenDevices.js

@ -4,7 +4,9 @@ import logger from 'logger'
import { createCommand } from 'helpers/ipc'
import { Observable } from 'rxjs'
import CommNodeHid from '@ledgerhq/hw-transport-node-hid'
import { DEVICE_DISCONNECT_DEBOUNCE } from 'config/constants'
import { DEVICE_DISCONNECT_DEBOUNCE, LISTEN_DEVICES_POLLING_INTERVAL } from 'config/constants'
CommNodeHid.setListenDevicesPollingInterval(LISTEN_DEVICES_POLLING_INTERVAL)
const cmd = createCommand('listenDevices', () =>
Observable.create(o => {

14
src/components/AccountPage/EmptyStateAccount.js

@ -4,7 +4,7 @@ import React, { PureComponent } from 'react'
import { i } from 'helpers/staticPath'
import { connect } from 'react-redux'
import { compose } from 'redux'
import { translate } from 'react-i18next'
import { translate, Trans } from 'react-i18next'
import { openModal } from 'reducers/modals'
import type { T } from 'types/common'
@ -13,6 +13,7 @@ import type { Account } from '@ledgerhq/live-common/lib/types'
import { MODAL_RECEIVE } from 'config/constants'
import Box from 'components/base/Box'
import Text from 'components/base/Text'
import Button from 'components/base/Button'
import { Title, Description } from 'components/DashboardPage/EmptyState'
import IconReceive from 'icons/Receive'
@ -30,7 +31,6 @@ type Props = {
class EmptyStateAccount extends PureComponent<Props, *> {
render() {
const { t, account, openModal } = this.props
return (
<Box mt={7} alignItems="center">
<img
@ -41,7 +41,15 @@ class EmptyStateAccount extends PureComponent<Props, *> {
/>
<Box mt={5} alignItems="center">
<Title>{t('app:account.emptyState.title')}</Title>
<Description>{t('app:account.emptyState.desc')}</Description>
<Description>
<Trans i18nKey="app:account.emptyState.desc">
Make sure the
<Text ff="Open Sans|SemiBold" color="dark">
{account.currency.name}
</Text>
app is installed to receive funds.
</Trans>
</Description>
<Button mt={3} padded primary onClick={() => openModal(MODAL_RECEIVE, { account })}>
<Box horizontal flow={1} alignItems="center">
<IconReceive size={12} />

2
src/components/BalanceSummary/index.js

@ -56,7 +56,7 @@ const BalanceSummary = ({
<Chart
id={chartId}
unit={account ? account.unit : null}
color={!isAvailable ? '#eee' : chartColor}
color={!isAvailable ? 'rgba(0,0,0,0.04)' : chartColor}
data={
isAvailable
? balanceHistory

5
src/components/DashboardPage/EmptyState.js

@ -48,13 +48,13 @@ class EmptyState extends PureComponent<Props, *> {
<Title>{t('app:emptyState.dashboard.title')}</Title>
<Description>{t('app:emptyState.dashboard.desc')}</Description>
<Box mt={3} horizontal justifyContent="space-around" style={{ width: 300 }}>
<Button padded primary style={{ width: 120 }} onClick={this.handleInstallApp}>
<Button padded primary style={{ minWidth: 120 }} onClick={this.handleInstallApp}>
{t('app:emptyState.dashboard.buttons.installApp')}
</Button>
<Button
padded
primary
style={{ width: 120 }}
style={{ minWidth: 120 }}
onClick={() => openModal(MODAL_ADD_ACCOUNTS)}
>
{t('app:emptyState.dashboard.buttons.addAccount')}
@ -78,6 +78,7 @@ export const Description = styled(Box).attrs({
color: p => p.theme.colors.graphite,
})`
margin: 10px auto 25px;
display: block;
`
export default compose(
connect(

2
src/components/DeviceConnect/index.js

@ -131,7 +131,7 @@ const StepCheck = ({ checked, hasErrors }: { checked: boolean, hasErrors?: boole
<IconExclamationCircle size={16} />
</Box>
) : (
<Spinner size={16} />
<Spinner color="grey" size={16} />
)}
</Box>
)

15
src/components/IsUnlocked.js

@ -10,7 +10,7 @@ import { translate } from 'react-i18next'
import type { SettingsState as Settings } from 'reducers/settings'
import type { T } from 'types/common'
import IconLockScreen from 'icons/LockScreen'
import { i } from 'helpers/staticPath'
import IconTriangleWarning from 'icons/TriangleWarning'
import get from 'lodash/get'
@ -152,7 +152,18 @@ class IsUnlocked extends Component<Props, State> {
<Box sticky alignItems="center" justifyContent="center">
<form onSubmit={this.handleSubmit}>
<Box align="center">
<IconLockScreen size={136} />
<div
style={{
padding: 14,
backgroundColor: 'white',
borderRadius: 80,
fontSize: 0,
marginBottom: 40,
boxShadow: '0 2px 23px 0 rgba(0, 0, 0, 0.08)',
}}
>
<img alt="" src={i('ledgerlive-logo.svg')} width={50} height={50} />
</div>
<PageTitle>{t('app:common.lockScreen.title')}</PageTitle>
<LockScreenDesc>
{t('app:common.lockScreen.subTitle')}

5
src/components/Onboarding/helperComponents.js

@ -20,15 +20,16 @@ export const Title = styled(Box).attrs({
export const StepContainerInner = styled(GrowScroll).attrs({ pb: 6, align: 'center' })``
export const Description = styled(Box).attrs({
ff: 'Museo Sans|Light',
ff: 'Museo Sans|Regular',
fontSize: 5,
lineHeight: 1.5,
textAlign: 'center',
color: 'grey',
})`
margin: 10px auto 25px;
max-width: 570px;
max-width: 600px;
`
export const Inner = styled(Box).attrs({
horizontal: true,
grow: true,

2
src/components/Onboarding/steps/GenuineCheck.js

@ -353,7 +353,7 @@ export function GenuineCheckFail({
)
}
export const GenuineSuccessText = styled(Box).attrs({
ff: 'Open Sans|Regular',
ff: 'Open Sans|SemiBold',
fontSize: 4,
})``

4
src/components/Onboarding/steps/Init.js

@ -7,12 +7,12 @@ import { colors } from 'styles/theme'
import styled from 'styled-components'
import { flowType } from 'reducers/onboarding'
import Box from 'components/base/Box'
import IconUser from 'icons/User'
import IconPlus from 'icons/Plus'
import IconRecover from 'icons/Recover'
import IconCheck from 'icons/Check'
import IconExternalLink from 'icons/ExternalLink'
import IconChevronRight from 'icons/ChevronRight'
import { i } from 'helpers/staticPath'
import { Title } from '../helperComponents'
import type { StepProps } from '..'
@ -66,7 +66,7 @@ class Init extends PureComponent<StepProps, *> {
<Box sticky justifyContent="center">
<Box align="center">
<Box color="wallet">
<IconUser size={36} />
<img alt="" src={i('ledgerlive-logo.svg')} width={50} height={50} />
</Box>
<Box m={5} style={{ maxWidth: 480 }}>
<Title>{t('onboarding:init.title')}</Title>

3
src/components/SettingsPage/SettingsSection.js

@ -84,6 +84,7 @@ const SettingsSectionRowContainer = styled(Box).attrs({
horizontal: true,
align: 'center',
relative: true,
justifyContent: 'space-between',
})`
cursor: ${p => (p.onClick ? 'pointer' : '')};
`
@ -101,7 +102,7 @@ export function SettingsSectionRow({
}) {
return (
<SettingsSectionRowContainer onClick={onClick} tabIndex={-1}>
<Box grow shrink>
<Box grow shrink style={{ marginRight: '20%' }}>
<Box ff="Open Sans|SemiBold" color="dark" fontSize={4}>
{title}
</Box>

2
src/components/SettingsPage/sections/Display.js

@ -153,7 +153,7 @@ class TabProfile extends PureComponent<Props, State> {
title={t('app:settings.display.counterValue')}
desc={t('app:settings.display.counterValueDesc')}
>
<Box horizontal flow={2}>
<Box flow={2}>
<Select
small
minWidth={250}

8
src/components/TopBar/ActivityIndicator.js

@ -17,7 +17,7 @@ import { Rotating } from 'components/base/Spinner'
import Tooltip from 'components/base/Tooltip'
import TranslatedError from 'components/TranslatedError'
import Box from 'components/base/Box'
import IconRefresh from 'icons/Refresh'
import IconLoader from 'icons/Loader'
import IconExclamationCircle from 'icons/ExclamationCircle'
import IconCheckCircle from 'icons/CheckCircle'
import ItemContainer from './ItemContainer'
@ -88,18 +88,18 @@ class ActivityIndicatorInner extends PureComponent<Props, State> {
<Rotating
size={16}
isRotating={isRotating}
color={isError ? 'alertRed' : isRotating ? undefined : 'positiveGreen'}
color={isError ? 'alertRed' : isRotating ? 'grey' : 'positiveGreen'}
>
{isError ? (
<IconExclamationCircle size={16} />
) : isRotating ? (
<IconRefresh size={16} />
<IconLoader size={16} />
) : (
<IconCheckCircle size={16} />
)}
</Rotating>
<Box
ml={1}
ml={isRotating ? 2 : 1}
ff="Open Sans|SemiBold"
color={isError ? 'alertRed' : undefined}
fontSize={4}

8
src/components/TranslatedError.js

@ -19,9 +19,11 @@ class TranslatedError extends PureComponent<Props> {
const { t, error } = this.props
if (!error) return null
if (typeof error === 'string') return error
const translation = t(`errors:${error.name}`, error)
if (translation) {
return translation
if (error.name) {
const translation = t(`errors:${error.name}`, error)
if (translation) {
return translation
}
}
logger.warn(`TranslatedError: no translation for '${error.name}'`, error)
return error.message || error.name || t('errors:generic')

1
src/components/base/Input/index.js

@ -28,6 +28,7 @@ const ErrorDisplay = styled(Box)`
bottom: -20px;
left: 0px;
font-size: 12px;
white-space: nowrap;
color: ${p => p.theme.colors.pearl};
`

4
src/components/base/Spinner.js

@ -11,14 +11,14 @@ const rotate = keyframes`
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
transform: rotate(-360deg);
}
`
export const Rotating = styled(Box)`
width: ${p => p.size}px;
height: ${p => p.size}px;
animation: ${p => (p.isRotating === false ? 'none' : `${rotate} 1.5s linear infinite`)};
animation: ${p => (p.isRotating === false ? 'none' : `${rotate} 1s linear infinite`)};
transition: 100ms linear transform;
`

4
src/components/modals/AddAccounts/steps/03-step-import.js

@ -12,6 +12,7 @@ import CurrencyBadge from 'components/base/CurrencyBadge'
import Button from 'components/base/Button'
import AccountsList from 'components/base/AccountsList'
import IconExclamationCircleThin from 'icons/ExclamationCircleThin'
import TranslatedError from '../../../TranslatedError'
import type { StepProps } from '../index'
@ -150,6 +151,9 @@ class StepImport extends PureComponent<StepProps> {
<Box style={{ height: 200 }} align="center" justify="center" color="alertRed">
<IconExclamationCircleThin size={43} />
<Box mt={4}>{t('app:addAccounts.somethingWentWrong')}</Box>
<Box mt={4}>
<TranslatedError error={err} />
</Box>
</Box>
)
}

10
src/components/modals/OperationDetails.js

@ -61,10 +61,12 @@ const B = styled(Bar).attrs({
const operationSelector = createSelector(
accountSelector,
(_, { operationId }) => operationId,
(account, operationId) => {
(account: Account, operationId: string): ?Operation => {
if (!account) return null
const operation = account.operations.find(op => op.id === operationId)
return operation
const maybeOp = account.operations.find(op => op.id === operationId)
if (maybeOp) return maybeOp
const maybeOpPending = account.pendingOperations.find(op => op.id === operationId)
return maybeOpPending
},
)
@ -109,7 +111,7 @@ const OperationDetails = connect(mapStateToProps)((props: Props) => {
<ModalBody onClose={onClose}>
<ModalTitle>{t('app:operationDetails.title')}</ModalTitle>
<ModalContent style={{ height: 500 }} mx={-5} pb={0}>
<GrowScroll px={5} pb={8}>
<GrowScroll px={5} pt={1} pb={8}>
<Box flow={3}>
<Box alignItems="center" mt={1}>
<ConfirmationCheck

2
src/components/modals/Send/04-step-confirmation.js

@ -24,7 +24,7 @@ const Container = styled(Box).attrs({
const Title = styled(Box).attrs({
ff: 'Museo Sans',
fontSize: 5,
mt: 4,
mt: 2,
})`
text-align: center;
`

3
src/config/constants.js

@ -16,8 +16,9 @@ const stringFromEnv = (key: string, def: string): string => process.env[key] ||
export const GET_CALLS_TIMEOUT = intFromEnv('GET_CALLS_TIMEOUT', 30 * 1000)
export const GET_CALLS_RETRY = intFromEnv('GET_CALLS_RETRY', 2)
export const LISTEN_DEVICES_POLLING_INTERVAL = intFromEnv('LISTEN_DEVICES_POLLING_INTERVAL', 100)
export const SYNC_MAX_CONCURRENT = intFromEnv('LEDGER_SYNC_MAX_CONCURRENT', 6)
export const SYNC_MAX_CONCURRENT = intFromEnv('LEDGER_SYNC_MAX_CONCURRENT', 1)
export const SYNC_BOOT_DELAY = 2 * 1000
export const SYNC_ALL_INTERVAL = 120 * 1000
export const GENUINE_TIMEOUT = intFromEnv('GENUINE_TIMEOUT', 120 * 1000)

4
src/icons/Loader.js

@ -5,12 +5,12 @@ import React from 'react'
const path = (
<path
fill="currentColor"
d="M16.735 2.8c0-.69864021.5663598-1.265 1.265-1.265.6986402 0 1.265.56635979 1.265 1.265v6.4c0 .69864021-.5663598 1.265-1.265 1.265-.6986402 0-1.265-.56635979-1.265-1.265V2.8zm11.118533 3.55748685c.4940132-.49401323 1.2949669-.49401323 1.7889802 0 .4940132.49401323.4940132 1.29496693 0 1.78898016l-4.5254834 4.52548339c-.4940133.4940132-1.294967.4940132-1.7889802 0-.4940132-.4940132-.4940132-1.2949669 0-1.7889802l4.5254834-4.52548335zM33.2 16.735c.6986402 0 1.265.5663598 1.265 1.265 0 .6986402-.5663598 1.265-1.265 1.265h-6.4c-.6986402 0-1.265-.5663598-1.265-1.265 0-.6986402.5663598-1.265 1.265-1.265h6.4zm-3.5574868 11.118533c.4940132.4940132.4940132 1.2949669 0 1.7889802-.4940133.4940132-1.294967.4940132-1.7889802 0l-4.5254834-4.5254834c-.4940132-.4940133-.4940132-1.294967 0-1.7889802.4940132-.4940132 1.2949669-.4940132 1.7889802 0l4.5254834 4.5254834zM19.265 33.2c0 .6986402-.5663598 1.265-1.265 1.265-.6986402 0-1.265-.5663598-1.265-1.265v-6.4c0-.6986402.5663598-1.265 1.265-1.265.6986402 0 1.265.5663598 1.265 1.265v6.4zM8.14646701 29.6425132c-.49401323.4940132-1.29496693.4940132-1.78898016 0-.49401323-.4940133-.49401323-1.294967 0-1.7889802l4.52548335-4.5254834c.4940133-.4940132 1.294967-.4940132 1.7889802 0 .4940132.4940132.4940132 1.2949669 0 1.7889802l-4.52548339 4.5254834zM2.8 19.265c-.69864021 0-1.265-.5663598-1.265-1.265 0-.6986402.56635979-1.265 1.265-1.265h6.4c.69864021 0 1.265.5663598 1.265 1.265 0 .6986402-.56635979 1.265-1.265 1.265H2.8zM6.35748685 8.14646701c-.49401323-.49401323-.49401323-1.29496693 0-1.78898016.49401323-.49401323 1.29496693-.49401323 1.78898016 0l4.52548339 4.52548335c.4940132.4940133.4940132 1.294967 0 1.7889802-.4940132.4940132-1.2949669.4940132-1.7889802 0L6.35748685 8.14646701z"
d="M6.21808178,10.568167 C6.29564085,10.646177 6.29564085,10.7721786 6.21808178,10.8501886 L3.41980765,13.6647327 C3.11714476,13.9691553 2.62761129,13.9691553 2.3088625,13.648082 C-0.781445169,10.5004576 -0.766649034,5.44541442 2.33562933,2.32509858 C3.62511827,1.02811219 5.29557344,0.224617325 7.0902708,0.0248347769 C7.11281081,0.0223256621 7.14363339,0.0194413329 7.18273852,0.0161817893 C7.18838484,0.0157111502 7.19404861,0.0154808067 7.19971449,0.0154913829 C7.31010352,0.0156974391 7.39942447,0.105352473 7.39921842,0.215741505 L7.39934104,0.215741734 C7.39933225,0.220451344 7.39932355,0.225162829 7.39931495,0.22987619 L7.39917604,0.297792241 L7.39689423,1.39301009 C7.39668097,1.49537103 7.3192192,1.58105138 7.21739792,1.5915507 L7.21739667,1.5915385 C7.08762335,1.6049201 6.99288857,1.61650089 6.9331923,1.62628085 C5.6096232,1.84311957 4.38939863,2.46988645 3.43048859,3.43437186 C1.32425889,5.55284776 0.954959082,8.8321462 2.48386083,11.3559771 L2.87521099,12.0019974 L5.11758667,9.74658395 C5.11785916,9.74630987 5.11813246,9.74603658 5.11840654,9.74576408 C5.19673747,9.66788595 5.32336994,9.66825302 5.40124806,9.74658395 L6.21808178,10.568167 Z M10.8824133,6.25341605 C10.8821408,6.25369013 10.8818675,6.25396342 10.8815935,6.25423592 C10.8032625,6.33211405 10.6766301,6.33174698 10.5987519,6.25341605 L9.78191822,5.43183304 C9.70435915,5.35382302 9.70435915,5.2278214 9.78191822,5.14981139 L12.5801923,2.33526733 C12.8828552,2.03084467 13.3723887,2.03084467 13.6911375,2.35191801 C16.7814452,5.49954242 16.766649,10.5545856 13.6643707,13.6749014 C12.3748817,14.9718878 10.7044266,15.7753827 8.9097292,15.9751652 C8.88719047,15.9776742 8.85637012,15.9805583 8.81726815,15.9838177 C8.81159834,15.9842903 8.80591096,15.9845209 8.8002215,15.984509 C8.68966856,15.9842776 8.60023526,15.8944692 8.60046664,15.7839163 L8.60310406,14.606988 C8.60331829,14.5046269 8.68078047,14.4189469 8.7826019,14.4084476 L8.78260333,14.4084615 C8.91237665,14.3950799 9.00711143,14.3834991 9.0668077,14.3737191 C10.3903768,14.1568804 11.6106014,13.5301135 12.5695114,12.5656281 C14.6757411,10.4471522 15.0450409,7.1678538 13.5161392,4.64402293 L13.124789,3.99800259 L10.8824133,6.25341605 Z"
/>
)
export default ({ size, ...p }: { size: number }) => (
<svg viewBox="0 0 36 36" height={size} width={size} {...p}>
<svg viewBox="0 0 16 16" height={size} width={size} {...p}>
{path}
</svg>
)

2
src/renderer/createStore.js

@ -20,7 +20,7 @@ export default ({ state, history, dbMiddleware }: Props) => {
history = createHistory()
}
const middlewares = [routerMiddleware(history), thunk, logger]
if (!__STORYBOOK_ENV__) {
if (!process.env.STORYBOOK_ENV) {
middlewares.push(require('middlewares/sentry').default)
}
if (dbMiddleware) {

36
static/i18n/en/app.yml

@ -33,13 +33,13 @@ common:
western: Western
lockScreen:
title: Welcome back
subTitle: Ledger Live is locked
subTitle:
description: Enter your password to continue
inputPlaceholder:
inputPlaceholder: Type your password
lostPassword: I lost my password
sync:
syncing: Synchronizing...
upToDate: Live
upToDate: Up to date
error: Synchronization error
refresh: Refresh
ago: Synced {{time}}
@ -75,7 +75,7 @@ account:
lastOperations: Last operations
emptyState:
title: No funds yet?
desc: Make sure the [cryptocurrency] app is installed to receive funds. # replace [cryptocurrency] and make it bold
desc: Make sure the <1><0>{{currency}}</0></1> app is installed to receive funds. # replace [cryptocurrency] and make it bold
buttons:
receiveFunds: Receive funds
settings:
@ -189,9 +189,9 @@ manager:
all: Apps
installing: 'Installing {{app}}...'
uninstalling: 'Uninstalling {{app}}...'
installSuccess: '{{app}} app successfully installed'
uninstallSuccess: '{{app}} app successfully uninstalled'
alreadyInstalled: '{{app}} app is already installed'
installSuccess: '{{app}} is now installed on your device.'
uninstallSuccess: '{{app}} has been uninstalled from your device.'
alreadyInstalled: '{{app}} is already installed on your device.'
help: Remove and reinstall to update apps
firmware:
installed: 'Firmware version {{version}}'
@ -220,7 +220,7 @@ receive:
label: Account
connectDevice:
title: Connect device
withoutDevice: Proceed without device
withoutDevice: Receive without device
confirmAddress:
title: Confirm address
action: Confirm address on device
@ -244,7 +244,7 @@ send:
max: Max
fees: Fees
advancedOptions: Advanced options
useRBF: Use the RBF transaction
useRBF: Use the RBF transaction.
message: Leave a message (140)
rippleTag: Tag
ethereumGasLimit: Gas limit
@ -255,7 +255,9 @@ send:
verification:
title: Verification
warning: |
Carefully verify the transaction details on your device. Press the left button on your device to cancel.
Carefully verify the transaction details displayed one by one on your device before you proceed.
# blue
# nano
body: Press the right button to confirm the transaction.
confirmation:
title: Confirmation
@ -302,14 +304,14 @@ settings:
transactionsFees: Default transaction fees
transactionsFeesDesc: Select your default transaction fees. The higher the fee, the quicker the transaction will be processed.
explorer: Blockchain explorer
explorerDesc: Which service to use to look up an operation in the blockchain.
explorerDesc: Choose which explorer is used to look up the operation details in the blockchain.
profile:
desc:
password: Data encryption
passwordDesc: Enhance your privacy. Set a password to encrypt Ledger Live data stored on your computer, including account names, balances, transactions and public addresses.
changePassword: Change password
sync: Synchronize accounts
syncDesc: Resynchronize your accounts with the blockchain.
syncDesc: Resynchronize your accounts with the network.
export: Export logs
exportDesc: Exporting Ledger Live logs may be necessary for troubleshooting purposes.
softResetTitle: Clear cache
@ -340,15 +342,15 @@ settings:
softResetModal:
title: Clear cache
subTitle: Are you sure?
desc: Clearing the Ledger Live cache forces resynchronization with the blockchain.
desc: Clearing the Ledger Live cache forces network resynchronization.
removeAccountModal:
title: Remove account
subTitle: Are you sure?
desc: The account will no longer be included in your portfolio. Accounts can always be re-added.
exportLogs:
title: Export Logs
desc: Export Logs
btn: Export Logs
title: Export logs
desc: Exporting Ledger Live logs may be necessary for troubleshooting purposes.
btn: Export
password:
warning_0: Warning 0
warning_1: Warning 1
@ -385,7 +387,7 @@ crash:
oops: Oops, something went wrong
uselessText: You may try again by restarting Ledger Live. Please export your logs and contact Ledger Support if the problem persists.
restart: Restart
reset: Hard reset
reset: Reset
createTicket: Ledger Support
showDetails: Show details
showError: Show error

32
static/i18n/en/errors.yml

@ -3,23 +3,23 @@ RangeError: '{{message}}'
Error: '{{message}}'
LedgerAPIErrorWithMessage: '{{message}}'
TransportStatusError: '{{message}}'
TimeoutError: 'The request timed out. Please try again or contact Ledger Support.'
FeeEstimationFailed: 'The fee could not be estimated. Please try again or set a custom fee (status: {{status}})'
NotEnoughBalance: 'The account has insufficient funds to proceed.'
TimeoutError: 'The request timed out.'
FeeEstimationFailed: 'Fee estimation error. Try again or set a custom fee (status: {{status}})'
NotEnoughBalance: 'Insufficient funds to proceed.'
BtcUnmatchedApp: 'Open the ‘{{currencyName}}’ app on your Ledger device to proceed.'
WrongAppOpened: 'Open the ‘{{currencyName}}’ app on your Ledger device to proceed.'
WrongDeviceForAccount: 'Use the device associated with the account ‘{{accountName}}’.'
LedgerAPINotAvailable: 'The Ledger API is not available for {{currencyName}}. Please check status.ledger.fr.'
LedgerAPIError: 'A problem occurred with the Ledger API. Please try again later. (HTTP {{status}})'
NetworkDown: 'Your internet connection seems down. Please try again.'
LedgerAPINotAvailable: 'Ledger API not available for {{currencyName}}.'
LedgerAPIError: 'Ledger API error. Try again later. (HTTP {{status}})'
NetworkDown: 'Your internet connection seems down.'
NoAddressesFound: 'No accounts were found.'
UserRefusedOnDevice: Please try again or request Ledger Support assistance when in doubt.
WebsocketConnectionError: An error occurred with the websocket connection. Please try again or contact Ledger Support.
WebsocketConnectionFailed: Oops, could not establish a websocket connection. Please try again or contact Ledger Support.
DeviceSocketFail: Oops. a device socket failure occurred. Please try again or contact Ledger Support.
DeviceSocketNoBulkStatus: Oops, the device socket failed (bulk). Please try again or contact Ledger Support.
DeviceSocketNoHandler: Oops, the device socket failed (handler {{query}}). Please try again or contact Ledger Support.
LatestMCUInstalledError: The MCU on the device is already up to date.
HardResetFail: Could not reset Ledger Live. Please try again or contact Ledger Support.
CannotUninstall: Cannot uninstall app
CannotInstall: Cannot install app
UserRefusedOnDevice: Transaction refused on device.
WebsocketConnectionError: Oops, device connection failed. Please try again. [web-err]
WebsocketConnectionFailed: Oops, device connection failed. Please try again. [web-fail]
DeviceSocketFail: Oops, device connection failed. Please try again. [device-fail]
DeviceSocketNoBulkStatus: Oops, device connection failed. Please try again [bulk].
DeviceSocketNoHandler: Oops, device connection failed (handler {{query}}). Please try again.
LatestMCUInstalledError: MCU on device already up to date.
HardResetFail: Reset failed. Please try again.
CannotUninstall: Cannot uninstall app.
CannotInstall: Not enough room left on your device. Please uninstall some apps and try again.

320
static/i18n/fr/app.yml

@ -1,6 +1,6 @@
---
common:
ok: Okay
ok: OK
yes: true
no: false
apply: Apply
@ -8,12 +8,12 @@ common:
cancel: Cancel
delete: Delete
continue: Continue
skipThisStep: Skip This Step
skipThisStep: Skip this step
chooseWalletPlaceholder: Choose a wallet...
currency: Currency
selectAccount: Select an account
selectAccountNoOption: 'No account matching "{{accountName}}"'
selectCurrency: Select a currency
selectCurrency: Choose a crypto asset
selectCurrencyNoOption: 'No currency matching "{{currencyName}}"'
selectExchange: Select an exchange
selectExchangeNoOption: 'No exchange matching "{{exchangeName}}"'
@ -22,7 +22,7 @@ common:
save: Save
password: Password
editProfile: Edit profile
lockApplication: Lock application
lockApplication: Lock Ledger Live
showMore: Show more
max: Max
next: Next
@ -33,15 +33,15 @@ common:
eastern: Eastern
western: Western
lockScreen:
title: Welcome Back
subTitle: Your application is locked
description: Please enter your password to continue
title: Welcome back
subTitle:
description: Enter your password to continue
inputPlaceholder: Type your password
lostPassword: I lost my password
sync:
syncing: Syncing...
syncing: Synchronizing...
upToDate: Up to date
error: Sync error.
error: Synchronization error
refresh: Refresh
ago: Synced {{time}}
error:
@ -49,8 +49,8 @@ common:
noResults: No results
operation:
type:
IN: Receive funds
OUT: Sent funds
IN: Received
OUT: Sent
time:
day: Day
week: Week
@ -71,57 +71,61 @@ account:
receive: Receive
lastOperations: Last operations
emptyState:
title: This is a title, use it with caution
desc: Please create a new account or recover an old account from your Ledger device.
title: No funds yet?
desc: Make sure the <1><0>{{currency}}</0></1> app is installed to receive funds.
buttons:
receiveFunds: Receive Funds
receiveFunds: Receive funds
settings:
title: Edit Account
title: Edit account
advancedLogs: Advanced logs
accountName:
title: Account name
desc: Lorem ipsum dolort amet
error: Name is required
desc: Describe this account.
error: An account name is required.
unit:
title: Unit
desc: Lorem ipsum dolort amet
desc: Choose the unit to display.
endpointConfig:
title: Node
desc: The API node to use
error: Invalid endpoint
dashboard:
title: Dashboard
title: Portfolio
emptyAccountTile:
desc: Lorem ipsum dolor sit amet, consectetur adipiscing elit
createAccount: Create Account
accounts:
title: Accounts ({{count}})
greeting:
morning: "Good Morning!"
evening: "Good Evening!"
afternoon: "Good Afternoon!"
summary: here is the summary of your account
summary_plural: 'here is the summary of your {{count}} accounts'
noAccounts: no accounts
morning: "Good morning"
evening: "Good evening"
afternoon: "Good afternoon"
summary: "Here's the summary of your account."
summary_plural: "Here's the summary of your {{count}} accounts."
noAccounts: No accounts yet
recentActivity: Recent activity
totalBalance: Total balance
accountsOrder:
name: Alphabetic
balance: Balance
name: name
balance: balance
currentAddress:
title: Current address
for: Address for <1><0>{{accountName}}</0></1>
message: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam blandit velit egestas leo tincidunt
message: Your receive address has not been confirmed on your Ledger device. Verify the address for optimal security.
deviceConnect:
step1:
choose: "We detected {{count}} devices connected, please select one:"
connect: Connect your <1>Ledger device</1> to your computer and enter your <3>PIN code</3> on your device
choose: "We detected {{count}} connected devices, please select one:"
connect: Connect and unlock your <1>Ledger device</1>
dashboard: test
emptyState:
sidebar:
text: You don’t have any accounts at the moment. Press the + button to create an account
text: Press the + button to add an account to your portfolio.
dashboard:
title: This is a title, use it with caution
desc: Please create a new account or recover an old account from your Ledger device.
title: 'Let’s set up your portfolio!'
desc: Open the Manager to install apps on your device or add accounts if your device already has apps installed.
buttons:
addAccount: Add Account
installApp: Install App
addAccount: Add accounts
installApp: Open Manager
exchange:
title: Exchange
visitWebsite: Visit website
@ -134,28 +138,28 @@ genuinecheck:
addAccounts:
title: Add accounts
breadcrumb:
informations: Informations
informations: Choose asset
connectDevice: Connect device
import: Import
finish: End
accountToImportSubtitle: Account to import
accountToImportSubtitle_plural: 'Accounts to import ({{count}})'
import: Select accounts
finish: Confirmation
accountToImportSubtitle: Select existing accounts
accountToImportSubtitle_plural: 'Select ({{count}}) existing accounts'
selectAll: Select all
unselectAll: Unselect all
unselectAll: Deselect all
editName: Edit name
newAccount: New account
legacyAccount: '{{accountName}} (legacy)'
noAccountToImport: We didnt find any {{currencyName}} account to import.
success: Great success!
noAccountToImport: All {{currencyName}} accounts found are already in your portfolio.
success: Account successfully added to your portfolio.
createNewAccount:
title: Create new account
noOperationOnLastAccount: You cannot create a new account because your last account has no operations
noAccountToCreate: We didnt find any {{currencyName}} account to create.
somethingWentWrong: Something went wrong during synchronization.
noOperationOnLastAccount: 'You have to receive funds on {{accountName}} before you can create a new account.'
noAccountToCreate: No {{currencyName}} account was found to create.
somethingWentWrong: Something went wrong during synchronization, please try again.
cta:
create: 'Create account'
import: 'Import account'
import_plural: 'Import accounts'
create: 'Add account'
import: 'Add account'
import_plural: 'Add accounts'
operationDetails:
title: Operation details
account: Account
@ -166,11 +170,12 @@ operationDetails:
fees: Fees
from: From
to: To
identifier: Hash
viewOperation: View operation
showMore: See {{recipients}} more
identifier: Transaction ID
viewOperation: View in explorer
showMore: Show {{recipients}} more
showLess: Show less
operationList:
noMoreOperations: No more operations
noMoreOperations: That's all!
manager:
tabs:
apps: Apps
@ -180,81 +185,84 @@ manager:
all: Apps
installing: 'Installing {{app}}...'
uninstalling: 'Uninstalling {{app}}...'
installSuccess: '{{app}} app successfully installed'
uninstallSuccess: '{{app}} app successfully uninstalled'
alreadyInstalled: '{{app}} app is already installed'
help: To update an app, you have to uninstall the app and re install it.
installSuccess: '{{app}} is now installed on your device.'
uninstallSuccess: '{{app}} has been uninstalled from your device.'
alreadyInstalled: '{{app}} is already installed on your device.'
help: Remove and reinstall to update apps
firmware:
installed: 'Firmware {{version}}'
installed: 'Firmware version {{version}}'
update: Update firmware
updateTitle: Firmware update
latest: 'A new firmware {{version}} is available'
continue: Continue update
latest: 'Firmware version {{version}} is available.'
disclaimerTitle: 'You are about to install the latest <1><0>firmware {{version}}</0></1>'
disclaimerAppDelete: Please note that all the apps installed on your device will be deleted.
disclaimerAppReinstall: You will be able to re-install your apps after the firmware update
title: Manager
subtitle: Get all your apps here
subtitle: Install apps or update your device.
device:
title: Plug your device
desc: Please connect your Ledger device and follow the steps below to access the manager
cta: Plug my device
title: Connect your device
desc: Follow the steps below to use the Manager
cta: Connect my device
errors:
noDevice: Please make sur your device is connected (TEMPLATE NEEDED)
noDashboard: Please make sure your device is on the dashboard screen (TEMPLATED NEEDED)
noGenuine: You did not approve request on your device or your device is not genuine (TEMPLATE NEEDED)
noDevice: No device is connected (TEMPLATE NEEDED)
noDashboard: Navigate to the dashboard on your device (TEMPLATED NEEDED)
noGenuine: Allow the Manager to continue (TEMPLATE NEEDED)
receive:
title: Receive funds
steps:
chooseAccount:
title: Choose Account
title: Choose account
label: Account
connectDevice:
title: Connect Device
withoutDevice: I don't have my device
title: Connect device
withoutDevice: Receive without device
confirmAddress:
title: Confirm Address
title: Confirm address
action: Confirm address on device
text: To receive funds, confirm the address on your device.
support: Contact Support
support: Ledger Support
error:
title: Houston, we have a problem!
text: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer non nibh diam. In eget ipsum arcu donec finibus
title: Receive address rejected
text: Please try again or request Ledger Support assistance when in doubt.
receiveFunds:
title: Receive Funds
label: Amount (Optional)
title: Receive funds
label: Amount (optional)
send:
title: Send funds
totalSpent: Total spent
totalSpent: Total
steps:
amount:
title: Informations
title: Create payment
selectAccountDebit: Select an account to debit
recipientAddress: Recipient address
amount: Amount
max: Max
fees: Fees
advancedOptions: Advanced options
useRBF: Use the RBF transaction
useRBF: Use the RBF transaction.
message: Leave a message (140)
rippleTag: Tag
ethereumGasLimit: Gas limit
unitPerByte: '{{unit}} per byte'
feePerByte: Fee per byte
feePerByte: Fees per byte
connectDevice:
title: Connect device
verification:
title: Verification
warning: |
You are about to validate a transaction.
Be careful, we strongly recommand you to verify that the informations on your Ledger device are correct.
body: Once you have checked everything is ok, you can validate securely the transaction on your device.
Carefully verify the transaction details displayed one by one on your device before you proceed.
body: Press the right button to confirm the transaction.
confirmation:
title: Confirmation
success:
title: Transaction successfully broadcasted
title: Transaction sent
text: |
with the following transaction id:
The transaction has been signed and sent to the network. Your account balance will update once the blockchain has confirmed the transaction. It has the following Transaction ID:
cta: View operation details
error:
title: Transaction error
cta: Retry operation
title: Transaction canceled
cta: Retry
pending:
title: Broadcasting transaction...
releaseNotes:
@ -266,77 +274,77 @@ settings:
display: Display
currencies: Currencies
profile: Profile
about: About
about: Help
display:
desc: Lorem ipsum dolor sit amet
language: Interface language
languageDesc: Lorem ipsum dolor sit amet
counterValue: Countervalue
counterValueDesc: Lorem ipsum dolor sit amet
exchange: Exchange ({{ticker}})
exchangeDesc: The exchange to use for countervalue conversion
desc:
language: Language
languageDesc: Choose the language to display.
counterValue: Base currency
counterValueDesc: Choose the currency to display next to your balance and operations.
exchange: Rate provider ({{ticker}})
exchangeDesc: Choose the provider of the base currency exchange rates.
region: Region
regionDesc: Lorem ipsum dolor sit amet
stock: Stock market indicators
stockDesc: Lorem ipsum dolor sit amet
regionDesc: Choose the region in which you’re located to set the application’s time zone.
stock: Regional market indicator
stockDesc: Choose Western to display an increase in market value in blue. Choose Eastern to display an increase in market value in red.
currencies:
desc: Lorem ipsum dolor sit amet
exchange: Exchange ({{ticker}})
exchangeDesc: The exchange to use for countervalue conversion
confirmationsToSpend: Confirmations to spend
confirmationsToSpendDesc: Lorem ipsum dolor sit amet
desc: Select a cryptocurrency to edit its settings.
exchange: Rate provider ({{ticker}})
exchangeDesc: Choose the provider of the base currency exchange rates.
confirmationsToSpend: Number of confirmations required to spend
confirmationsToSpendDesc: Set the number of confirmations required for your funds to be spendable.
confirmationsNb: Number of confirmations
confirmationsNbDesc: Lorem ipsum dolor sit amet
transactionsFees: Transactions fees
transactionsFeesDesc: Lorem ipsum dolor sit amet
confirmationsNbDesc: Set the number of blocks a transaction needs to be included in to consider it as confirmed.
transactionsFees: Default transaction fees
transactionsFeesDesc: Select your default transaction fees. The higher the fee, the quicker the transaction will be processed.
explorer: Blockchain explorer
explorerDesc: Lorem ipsum dolor sit amet
explorerDesc: Choose which explorer is used to look up the operation details in the blockchain.
profile:
desc: Lorem ipsum dolor sit amet
password: Password
passwordDesc: Lorem ipsum dolor sit amet
desc:
password: Data encryption
passwordDesc: Enhance your privacy. Set a password to encrypt Ledger Live data stored on your computer, including account names, balances, transactions and public addresses.
changePassword: Change password
sync: Sync accounts
syncDesc: Lorem ipsum dolor sit amet
sync: Synchronize accounts
syncDesc: Resynchronize your accounts with the network.
export: Export logs
exportDesc: Lorem ipsum dolor sit amet
softResetTitle: Clean application cache
softResetDesc: Lorem ipsum dolor sit amet
softReset: Clean cache
hardResetTitle: Reset application
hardResetDesc: Lorem ipsum dolor sit amet
hardReset: Hard reset
developerMode: Developer Mode
developerModeDesc: Enable visibility of developer apps & currencies like Bitcoin Testnet
analytics: Share analytics
analyticsDesc: Help Ledger improve its products and services by automatically sending diagnostics and usage data.
reportErrors: Sentry Logs
reportErrorsDesc: Help Ledger improve its products and services by automatically sending diagnostics and usage data.
exportDesc: Exporting Ledger Live logs may be necessary for troubleshooting purposes.
softResetTitle: Clear cache
softResetDesc: Clear the Ledger Live cache to force resynchronization with the blockchain.
softReset: Clear
hardResetTitle: Reset Ledger Live
hardResetDesc: Erase all Ledger Live data stored on your computer, including your profile, accounts, transaction history and settings. The private keys that manage your crypto assets remain secure on your Ledger device.
hardReset: Reset
developerMode: Developer mode
developerModeDesc: Show developer apps in the Manager.
analytics: Analytics
analyticsDesc: Enable analytics of anonymous data to help Ledger improve the user experience. This includes the operating system, language, firmware versions and the number of added accounts.
reportErrors: Usage and diagnostics
reportErrorsDesc: Share anonymous usage and diagnostics data to help improve Ledger products, services and security features.
about:
desc: Lorem ipsum dolor sit amet
version: Version
desc:
version: Ledger Live version
releaseNotesBtn: Show release notes
faq: FAQ
faqDesc: Lorem ipsum dolor sit amet
faq: Ledger Support
faqDesc: A problem? Learn about Ledger Live, Ledger devices, supported crypto assets and apps.
contactUs: Contact us
contactUsDesc: Lorem ipsum dolor sit amet
terms: Terms and Privacy policy
termsDesc: Lorem ipsum dolor sit amet
contactUsDesc: Need help? Request assistance from Ledger Support by email or chat.
terms: '--- Terms and Privacy policy ---'
termsDesc: '--- Check with Legal ---'
hardResetModal:
title: Reset Ledger Live
desc: Resetting will erase all Ledger Live data stored on your computer, including your profile, accounts, transaction history and application settings. The keys to access your crypto assets in the blockchain remain secure on your Ledger device.
softResetModal:
title: Clean application cache
subTitle: Are you sure houston?
desc: Lorem ipsum dolor sit amet
title: Clear cache
subTitle: Are you sure?
desc: Clearing the Ledger Live cache forces network resynchronization.
removeAccountModal:
title: Delete this account
subTitle: Are you sure houston?
desc: Lorem ipsum dolor sit amet
title: Remove account
subTitle: Are you sure?
desc: The account will no longer be included in your portfolio. Accounts can always be re-added.
exportLogs:
title: Export Logs
desc: Export Logs
btn: Export Logs
title: Export logs
desc: Exporting Ledger Live logs may be necessary for troubleshooting purposes.
btn: Export
password:
warning_0: Warning 0
warning_1: Warning 1
@ -348,32 +356,32 @@ password:
inputFields:
newPassword:
label: Password
placeholder: Password
placeholder:
confirmPassword:
label: Confirm Password
placeholder: Confirm Password
label: Confirm password
placeholder:
currentPassword:
label: Current Password
placeholder: Current Password
label: Current password
placeholder:
changePassword:
title: Edit Password
title: Data encryption
subTitle: Change your password
desc: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer non nibh diam. In eget ipsum arcu donec finibus
desc: Make sure to remember your password. Losing your password requires resetting Ledger Live and re-adding accounts.
setPassword:
title: Set Password
subTitle: Set a password to lock your application
desc: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer non nibh diam. In eget ipsum arcu donec finibus
title: Enable data encryption
subTitle: Set a password
desc: Make sure to remember your password. Losing your password requires resetting Ledger Live and re-adding accounts.
disablePassword:
title: Disable Password
desc: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer non nibh diam.
title: Disable data encryption
desc: Ledger Live data will be stored unencrypted on your computer. This includes account names, balances, transactions and public addresses.
update:
newVersionReady: A new update is available.
relaunch: Update now
crash:
oops: Oops, something went wrong.
oops: Oops, something went wrong
uselessText: You may try again by restarting Ledger Live. Please export your logs and contact Ledger Support if the problem persists.
restart: Restart app
reset: Hard reset
createTicket: Create issue
restart: Restart
reset: Reset
createTicket: Ledger Support
showDetails: Show details
showError: Show error

39
static/i18n/fr/errors.yml

@ -1,23 +1,26 @@
---
generic: An error occurred
generic: Oops, an unknown error occurred. Please try again or contact Ledger Support.
RangeError: '{{message}}'
Error: '{{message}}'
LedgerAPIErrorWithMessage: '{{message}}'
TransportStatusError: '{{message}}'
TimeoutError: 'Timeout reached'
FeeEstimationFailed: 'fee estimation failed (status: {{status}})'
NotEnoughBalance: 'Not enough balance'
BtcUnmatchedApp: 'You must open application ‘{{currencyName}}’ on the device'
WrongAppOpened: 'You must open application ‘{{currencyName}}’ on the device'
WrongDeviceForAccount: 'You must use the device associated to the account ‘{{accountName}}’'
LedgerAPINotAvailable: 'Ledger API is not available for currency {{currencyName}}'
LedgerAPIError: 'A problem occurred with Ledger API. Please try again later. (HTTP {{status}})'
NetworkDown: 'Your internet connection seems down. Please try again later.'
NoAddressesFound: 'No accounts found'
UserRefusedOnDevice: Transaction have been aborted
WebsocketConnectionError: An error occurred with the socket connection
WebsocketConnectionFailed: Failed to establish a socket connection
DeviceSocketFail: Device socket failure
DeviceSocketNoBulkStatus: Device socket failure (bulk)
DeviceSocketNoHandler: Device socket failure (handler {{query}})
LatestMCUInstalledError: The latest MCU is already installed on the Device
TimeoutError: 'The request timed out.'
FeeEstimationFailed: 'Fee estimation error. Try again or set a custom fee (status: {{status}})'
NotEnoughBalance: 'Insufficient funds to proceed.'
BtcUnmatchedApp: 'Open the ‘{{currencyName}}’ app on your Ledger device to proceed.'
WrongAppOpened: 'Open the ‘{{currencyName}}’ app on your Ledger device to proceed.'
WrongDeviceForAccount: 'Use the device associated with the account ‘{{accountName}}’.'
LedgerAPINotAvailable: 'Ledger API not available for {{currencyName}}.'
LedgerAPIError: 'Ledger API error. Try again later. (HTTP {{status}})'
NetworkDown: 'Your internet connection seems down.'
NoAddressesFound: 'No accounts were found.'
UserRefusedOnDevice: Transaction refused on device.
WebsocketConnectionError: Oops, device connection failed. Please try again. [web-err]
WebsocketConnectionFailed: Oops, device connection failed. Please try again. [web-fail]
DeviceSocketFail: Oops, device connection failed. Please try again. [device-fail]
DeviceSocketNoBulkStatus: Oops, device connection failed. Please try again [bulk].
DeviceSocketNoHandler: Oops, device connection failed (handler {{query}}). Please try again.
LatestMCUInstalledError: MCU on device already up to date.
HardResetFail: Reset failed. Please try again.
CannotUninstall: Cannot uninstall app.
CannotInstall: Not enough room left on your device. Please uninstall some apps and try again.

88
static/i18n/fr/onboarding.yml

@ -34,32 +34,46 @@ selectDevice:
ledgerBlueCard:
title: Ledger Blue
selectPIN:
title: Start initialization - Choose your PIN code
instructions:
ledgerNano:
step1: Connect the Ledger Nano S to your computer.
step2: Press both buttons simultaneously as instructed on the screen.
step3: Press the right button to select Configure as new device?.
step4: 'Choose a PIN code between 4 and 8 digits long. Then select the checkmark (✓).'
ledgerBlue:
step1: Connect the Ledger Blue to your computer.
step2: Tap on Configure as new device.
step3: Choose a PIN code between 4 and 8 digits long.
disclaimer:
note1: Choose your own PIN code. This code will unlock your device.
note2: An 8-digit PIN code offers an optimum level of security.
note3: Never use a device supplied with a PIN code or a 24-word recovery phrase.
initialize:
title: Start initialization - Choose your PIN code
instructions:
nano:
step1: Connect the Ledger Nano S to your computer.
step2: Press both buttons simultaneously as instructed on the screen.
step3: Press the right button to select Configure as new device?.
step4: 'Choose a PIN code between 4 and 8 digits long. Then select the checkmark (✓).'
blue:
step1: Connect the Ledger Blue to your computer.
step2: Tap on Configure as new device.
step3: Choose a PIN code between 4 and 8 digits long.
restore:
title: Start restoration - Choose your PIN code
instructions:
nano:
step1: Connect the Ledger Nano S to your computer.
step2: Press both buttons simultaneously as instructed on the screen.
step3: Press the left button to cancel Initialize as new device?. Press the right button to select Restore configuration?.
step4: 'Choose a PIN code between 4 and 8 digits long. Then select the checkmark (✓).'
blue:
step1: Connect the Ledger Blue to your computer.
step2: Tap on Restore configuration.
step3: Choose a PIN code between 4 and 8 digits long.
writeSeed:
title: Save your recovery phrase
desc: Your device will generate a recovery phrase of 24 words, displayed only once.
nano:
step1: 'Copy the word displayed below Word #1 in position 1 on a blank Recovery sheet.'
step2: 'Press the right button to display Word #2 and repeat the process until all 24 words are copied on the Recovery sheet.'
step3: 'Confirm your recovery phrase: select each requested word and press both buttons to validate it.'
ledgerBlue:
step1: Copy each word of the recovery phrase on a blank Recovery sheet. Copy the words in the same order.
step2: Tap Next to move to the next words. Repeat the process until the Confirmation screen appears.
step3: Type each requested word to confirm your recovery phrase.
initialize:
title: Save your recovery phrase
desc: Your device will generate a recovery phrase of 24 words, displayed only once.
nano:
step1: 'Copy the word displayed below Word #1 in position 1 on a blank Recovery sheet.'
step2: 'Press the right button to display Word #2 and repeat the process until all 24 words are copied on the Recovery sheet.'
step3: 'Confirm your recovery phrase: select each requested word and press both buttons to validate it.'
blue:
step1: Copy each word of the recovery phrase on a blank Recovery sheet. Copy the words in the same order.
step2: Tap Next to move to the next words. Repeat the process until the Confirmation screen appears.
step3: Type each requested word to confirm your recovery phrase.
restore:
title: Enter your recovery phrase
desc: Copy the 24-word recovery phrase from your Recovery sheet on your device.
@ -68,7 +82,7 @@ writeSeed:
step2: 'Select the first letters of Word #1 by pressing the right or left button. Press both buttons to confirm each letter.'
step3: 'Select Word #1 from the suggested words. Press both buttons to continue.'
step4: Repeat the process until the last word.
ledgerBlue:
blue:
step1: Select the length of your recovery phrase.
step2: Type the first word of your recovery phrase. Select the word when it appears.
step3: Repeat the process until the last word.
@ -80,17 +94,15 @@ writeSeed:
genuineCheck:
title: Final security check
descNano: Your Ledger Nano S should now display Your device is now ready. Before getting started, please confirm that
descBlue:
steps:
step1:
title: Did you choose your PIN code by yourself?
step2:
title: Did you save your recovery phrase by yourself?
desc:
step3:
title: Check if your Ledger device is genuine
desc:
isGenuinePassed: 'Genuine'
descBlue: Your Ledger Blue should now display Your device is now ready. Before getting started, please confirm that
descRestore: Before getting started, please confirm that
step1:
title: Did you choose your PIN code by yourself?
step2:
title: Did you save your recovery phrase by yourself?
step3:
title: Do you have a genuine Ledger device?
isGenuinePassed: Your device is genuine
buttons:
genuineCheck: Genuine check
contactSupport: Ledger Support
@ -107,7 +119,7 @@ setPassword:
disclaimer:
note1: Make sure to remember your password. Do not share it.
note2: Losing your password requires resetting Ledger Live and re-adding accounts.
note3: Resetting Ledger Live does not affect your crypto-assets.
note3: Resetting Ledger Live does not affect your crypto assets.
password: Password
confirmPassword: Confirm password
skipThisStep: Skip this step
@ -116,12 +128,12 @@ analytics:
desc: Share anonymous usage and diagnostics data to help improve Ledger products, services and security features.
shareAnalytics:
title: Share usage data
desc: Enable analytics of anonymous data to help Ledger improve its user's experience. This includes the operating system, language, firmware versions and the number of added accounts.
desc: Enable analytics of anonymous data to help Ledger improve the user experience. This includes the operating system, language, firmware versions and the number of added accounts.
sentryLogs:
title: Report bugs
desc: Automatically send bug reports to help Ledger developers diagnose issues and improve Ledger Live performance.
finish:
title: 'Ready for launch!'
desc: The value of crypto assets can go up or down. Balances shown in your portfolio may involve double conversions and are for indicative purposes only!
title: Welcome to Ledger Live
desc: The unified crypto portfolio, backed by the security of your Ledger device.
openAppButton: Launch
followUsLabel:
followUsLabel: Follow us

42
yarn.lock

@ -1450,10 +1450,10 @@
resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.6.3.tgz#65682e68a82701c70eefb38d7f941a2c0bfa90de"
"@ledgerhq/hw-app-btc@^4.13.0":
version "4.13.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-4.13.0.tgz#c2d093d94c6d59113e2150aedbb4b5b0c55d6826"
version "4.15.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-4.15.0.tgz#8bea2908c4c67f47f85641eb8d82c54df50fef19"
dependencies:
"@ledgerhq/hw-transport" "^4.13.0"
"@ledgerhq/hw-transport" "^4.15.0"
create-hash "^1.1.3"
"@ledgerhq/hw-app-btc@^4.7.3":
@ -1464,23 +1464,23 @@
create-hash "^1.1.3"
"@ledgerhq/hw-app-eth@^4.14.0":
version "4.14.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-4.14.0.tgz#dd6b29024827348702cfe22bb1611e1c97923717"
version "4.15.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-4.15.0.tgz#16e520793d27d6daf9edfb6f08138aad14f2ce4f"
dependencies:
"@ledgerhq/hw-transport" "^4.13.0"
"@ledgerhq/hw-transport" "^4.15.0"
"@ledgerhq/hw-app-xrp@^4.13.0":
version "4.13.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-xrp/-/hw-app-xrp-4.13.0.tgz#a38a1417297074da8d24cc0fef7a9a68c186a6ab"
version "4.15.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-xrp/-/hw-app-xrp-4.15.0.tgz#a6d553ad89559465d7bcce3b34d56a131722166d"
dependencies:
"@ledgerhq/hw-transport" "^4.13.0"
"@ledgerhq/hw-transport" "^4.15.0"
bip32-path "0.4.2"
"@ledgerhq/hw-transport-node-hid@^4.13.0":
version "4.13.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-4.13.0.tgz#86306ff10c860d8bbd002db3f4618078460e4b9a"
version "4.15.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-4.15.0.tgz#d25b1839230509235782884a5be3d56e791dad26"
dependencies:
"@ledgerhq/hw-transport" "^4.13.0"
"@ledgerhq/hw-transport" "^4.15.0"
node-hid "^0.7.2"
"@ledgerhq/hw-transport-node-hid@^4.7.6":
@ -1496,9 +1496,9 @@
dependencies:
events "^2.0.0"
"@ledgerhq/hw-transport@^4.13.0":
version "4.13.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-4.13.0.tgz#463043200c96c91379318052ad4dbe8c80d95cf5"
"@ledgerhq/hw-transport@^4.13.0", "@ledgerhq/hw-transport@^4.15.0":
version "4.15.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-4.15.0.tgz#ec99436c2662e70fb6f9c72f7bb5d1f3a051c4e3"
dependencies:
events "^2.0.0"
@ -9707,12 +9707,18 @@ no-case@^2.2.0:
dependencies:
lower-case "^1.1.1"
node-abi@^2.0.0, node-abi@^2.2.0:
node-abi@^2.0.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.4.1.tgz#7628c4d4ec4e9cd3764ceb3652f36b2e7f8d4923"
dependencies:
semver "^5.4.1"
node-abi@^2.2.0:
version "2.4.3"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.4.3.tgz#43666b7b17e57863e572409edbb82115ac7af28b"
dependencies:
semver "^5.4.1"
node-dir@0.1.8:
version "0.1.8"
resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.8.tgz#55fb8deb699070707fb67f91a460f0448294c77d"
@ -13447,8 +13453,8 @@ tapable@^1.0.0, tapable@^1.0.0-beta.5:
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2"
tar-fs@^1.13.0:
version "1.16.2"
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.2.tgz#17e5239747e399f7e77344f5f53365f04af53577"
version "1.16.3"
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509"
dependencies:
chownr "^1.0.1"
mkdirp "^0.5.1"

Loading…
Cancel
Save