Skip to content

Commit 546a7ac

Browse files
committed
add more translations
1 parent b3e181b commit 546a7ac

File tree

10 files changed

+78
-49
lines changed

10 files changed

+78
-49
lines changed

apps/contract-verification/src/app/components/AccordionReceipt.tsx

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -97,32 +97,32 @@ const ReceiptsBody = ({ receipts }: { receipts: VerificationReceipt[] }) => {
9797
className="list-group-item d-flex flex-row align-items-center"
9898
>
9999
<CustomTooltip
100-
placement="top"
101-
tooltipClasses=" text-break"
102-
tooltipTextClasses="text-capitalize"
103-
tooltipText={`Status: ${receipt.status}${receipt.message ? `, Message: ${receipt.message}` : ''}`}
104-
>
105-
<span className="mr-2">
106-
{['verified', 'partially verified', 'already verified'].includes(receipt.status) ?
107-
<i className="fas fa-check text-success px-1"></i> :
108-
receipt.status === 'fully verified' ?
109-
<i className="fas fa-check-double text-success px-1"></i> :
110-
receipt.status === 'failed' ?
111-
<i className="fas fa-xmark text-warning px-1"></i> :
112-
['pending', 'awaiting implementation verification'].includes(receipt.status) ?
113-
<i className="fas fa-spinner fa-spin"></i> :
114-
<i className="fas fa-question"></i>
115-
}
116-
</span>
117-
</CustomTooltip>
118-
<div className="d-flex flex-row w-100 justify-content-between">
100+
placement="top"
101+
tooltipClasses=" text-break"
102+
tooltipTextClasses="text-capitalize"
103+
tooltipText={`Status: ${receipt.status}${receipt.message ? `, Message: ${receipt.message}` : ''}`}
104+
>
105+
<span className="mr-2">
106+
{['verified', 'partially verified', 'already verified'].includes(receipt.status) ?
107+
<i className="fas fa-check text-success px-1"></i> :
108+
receipt.status === 'fully verified' ?
109+
<i className="fas fa-check-double text-success px-1"></i> :
110+
receipt.status === 'failed' ?
111+
<i className="fas fa-xmark text-warning px-1"></i> :
112+
['pending', 'awaiting implementation verification'].includes(receipt.status) ?
113+
<i className="fas fa-spinner fa-spin"></i> :
114+
<i className="fas fa-question"></i>
115+
}
116+
</span>
117+
</CustomTooltip>
118+
<div className="d-flex flex-row w-100 justify-content-between">
119119
<CustomTooltip placement="top" tooltipClasses=" text-break" tooltipText={`API: ${receipt.verifierInfo.apiUrl}`}>
120120
<span className="font-weight-bold pr-2">{receipt.verifierInfo.name}</span>
121121
</CustomTooltip>
122122
<div className="ml-1">
123123
{!!receipt.lookupUrl && receipt.verifierInfo.name === 'Blockscout' ?
124124
<CopyToClipboard classList="pr-0 py-0" tip="Copy code URL" content={receipt.lookupUrl} direction="top" /> :
125-
!!receipt.lookupUrl && <a href={receipt.lookupUrl} target="_blank" className="fa fas fa-arrow-up-right-from-square"></a>
125+
!!receipt.lookupUrl && <a href={receipt.lookupUrl} target="_blank" className="fa fas fa-arrow-up-right-from-square" rel="noreferrer"></a>
126126
}
127127
</div>
128128
</div>

apps/contract-verification/src/app/components/ConfigInput.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React, { useEffect, useState } from 'react'
22
import { CustomTooltip } from '@remix-ui/helper'
3+
import { FormattedMessage } from 'react-intl'
34

45
interface ConfigInputProps {
56
label: string
@@ -42,7 +43,10 @@ export const ConfigInput: React.FC<ConfigInputProps> = ({ label, id, secret, ini
4243
type={secret ? 'password' : 'text'}
4344
className={`form-control small w-100 ${!enabled ? 'bg-transparent pl-0 border-0' : ''}`}
4445
id={id}
45-
placeholder={`Add ${label}`}
46+
placeholder={`${<FormattedMessage id="contract-verification.configInputPlaceholder" defaultMessage="Enter API Key"
47+
values={{
48+
label: label
49+
}} />}`}
4650
value={value}
4751
onChange={(e) => setValue(e.target.value)}
4852
disabled={!enabled}
@@ -51,10 +55,10 @@ export const ConfigInput: React.FC<ConfigInputProps> = ({ label, id, secret, ini
5155
{ enabled ? (
5256
<>
5357
<button type="button" className="btn btn-primary btn-sm ml-2" onClick={handleSave}>
54-
Save
58+
<FormattedMessage id="contract-verification.configInputSaveButton" defaultMessage="Save" />
5559
</button>
5660
<button type="button" className="btn btn-secondary btn-sm ml-2" onClick={handleCancel}>
57-
Cancel
61+
<FormattedMessage id="contract-verification.configInputCancelButton" defaultMessage="Cancel" />
5862
</button>
5963
</>
6064
) : (

apps/contract-verification/src/app/components/NavMenu.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ const NavItem: React.FC<NavItemProps> = ({ to, icon, title }) => {
2727
export const NavMenu = () => {
2828
return (
2929
<nav className="d-flex medium flex-row w-100" style={{ backgroundColor: 'var(--body-bg)!important' }}>
30-
<NavItem to="/" icon={<i className="fas fa-home"></i>} title={ <FormattedMessage id="contract-verification.verifyNavTitle" /> } />
31-
<NavItem to="/receipts" icon={<i className="fas fa-receipt"></i>} title={ <FormattedMessage id="contract-verification.receiptsNavTitle" /> } />
32-
<NavItem to="/lookup" icon={<i className="fas fa-search"></i>} title={ <FormattedMessage id="contract-verification.lookupNavTitle" /> } />
33-
<NavItem to="/settings" icon={<i className="fas fa-cog"></i>} title={ <FormattedMessage id="contract-verification.settingsNavTitle" /> } />
30+
<NavItem to="/" icon={<i className="fas fa-home"></i>} title={ <FormattedMessage id="contract-verification.verifyNavTitle" defaultMessage={'Verify'} /> } />
31+
<NavItem to="/receipts" icon={<i className="fas fa-receipt"></i>} title={ <FormattedMessage id="contract-verification.receiptsNavTitle" defaultMessage={'Receipts'} /> } />
32+
<NavItem to="/lookup" icon={<i className="fas fa-search"></i>} title={ <FormattedMessage id="contract-verification.lookupNavTitle" defaultMessage={'Lookup'} /> } />
33+
<NavItem to="/settings" icon={<i className="fas fa-cog"></i>} title={ <FormattedMessage id="contract-verification.settingsNavTitle" defaultMessage={'Settings'} /> } />
3434
</nav>
3535
)
3636
}

apps/contract-verification/src/app/components/SearchableChainDropdown.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ function getChainDescriptor(chain: Chain): string {
99
}
1010

1111
interface DropdownProps {
12-
label: string
12+
label: string | any
1313
id: string
1414
setSelectedChain: (chain: Chain) => void
1515
selectedChain: Chain

apps/contract-verification/src/app/routes.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@ import { HashRouter as Router, Route, Routes } from 'react-router-dom'
33

44
import { VerifyView, ReceiptsView, LookupView, SettingsView } from './views'
55
import { DefaultLayout } from './layouts'
6+
import { FormattedMessage } from 'react-intl'
67

78
const DisplayRoutes = () => (
89
<Router>
910
<Routes>
1011
<Route
1112
path="/"
1213
element={
13-
<DefaultLayout from="/" title="Verify" description="Verify compiled contracts on different verification services">
14+
<DefaultLayout from="/" title="Verify" description={<FormattedMessage id="contract-verification.verifyDefaultLayout.description" defaultMessage="Verify compiled contracts on different verification services" />}>
1415
<VerifyView />
1516
</DefaultLayout>
1617
}
@@ -19,7 +20,7 @@ const DisplayRoutes = () => (
1920
<Route
2021
path="/receipts"
2122
element={
22-
<DefaultLayout from="/" title="Receipts" description="Check the verification statuses of contracts submitted for verification">
23+
<DefaultLayout from="/" title="Receipts" description={<FormattedMessage id="contract-verification.receiptsDefaultLayout.description" defaultMessage="Check the verification statuses of contracts submitted for verification" />}>
2324
<ReceiptsView />
2425
</DefaultLayout>
2526
}
@@ -28,7 +29,7 @@ const DisplayRoutes = () => (
2829
<Route
2930
path="/lookup"
3031
element={
31-
<DefaultLayout from="/" title="Lookup" description="Search for verified contracts and download them to Remix">
32+
<DefaultLayout from="/" title="Lookup" description={<FormattedMessage id="contract-verification.lookupDefaultLayout.description" defaultMessage="Lookup the verification status of a contract by its address" />}>
3233
<LookupView />
3334
</DefaultLayout>
3435
}
@@ -37,7 +38,7 @@ const DisplayRoutes = () => (
3738
<Route
3839
path="/settings"
3940
element={
40-
<DefaultLayout from="/" title="Settings" description="Customize settings for each verification service and chain">
41+
<DefaultLayout from="/" title="Settings" description={<FormattedMessage id="contract-verification.settingsDefaultLayout.description" defaultMessage="Configure the settings for the contract verification plugin" />}>
4142
<SettingsView />
4243
</DefaultLayout>
4344
}

apps/contract-verification/src/app/views/LookupView.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { useNavigate } from 'react-router-dom'
99
import { VerifyFormContext } from '../VerifyFormContext'
1010
import { useSourcifySupported } from '../hooks/useSourcifySupported'
1111
import { CopyToClipboard } from '@remix-ui/clipboard'
12+
import { FormattedMessage } from 'react-intl'
1213

1314
export const LookupView = () => {
1415
const { settings, clientInstance } = useContext(AppContext)
@@ -74,10 +75,10 @@ export const LookupView = () => {
7475
return (
7576
<>
7677
<form onSubmit={handleLookup}>
77-
<SearchableChainDropdown label="Chain" id="network-dropdown" selectedChain={selectedChain} setSelectedChain={setSelectedChain} />
78-
<ContractAddressInput label="Contract Address" id="contract-address" contractAddress={contractAddress} setContractAddress={setContractAddress} contractAddressError={contractAddressError} setContractAddressError={setContractAddressError} />
78+
<SearchableChainDropdown label={<FormattedMessage id="contract-verification.searchableChainDropdownLabel" defaultMessage="Chain" />} id="network-dropdown" selectedChain={selectedChain} setSelectedChain={setSelectedChain} />
79+
<ContractAddressInput label={<FormattedMessage id="contract-verification.contractAddressInput" defaultMessage="Contract Address" />} id="contract-address" contractAddress={contractAddress} setContractAddress={setContractAddress} contractAddressError={contractAddressError} setContractAddressError={setContractAddressError} />
7980
<button type="submit" className="btn w-100 btn-primary" disabled={submitDisabled}>
80-
Lookup
81+
<FormattedMessage id="contract-verification.lookupButton" defaultMessage="Lookup" />
8182
</button>
8283
</form>
8384
<div className="pt-3">

apps/contract-verification/src/app/views/ReceiptsView.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { useContext } from 'react'
22
import { AccordionReceipt } from '../components/AccordionReceipt'
33
import { AppContext } from '../AppContext'
4+
import { FormattedMessage } from 'react-intl'
45

56
export const ReceiptsView = () => {
67
const { submittedContracts } = useContext(AppContext)
@@ -10,7 +11,9 @@ export const ReceiptsView = () => {
1011
<div>
1112
{contracts.length > 0 ? contracts.map((contract, index) => (
1213
<AccordionReceipt key={contract.id} contract={contract} index={index} />
13-
)) : <div className="text-center mt-5" data-id="noContractsSubmitted">No contracts submitted for verification</div>}
14+
)) : <div className="text-center mt-5" data-id="noContractsSubmitted">
15+
<FormattedMessage id="contract-verification.receipts.noContractsSubmitted" defaultMessage="No contracts submitted for verification" />
16+
</div>}
1417
</div>
1518
)
1619
}

apps/contract-verification/src/app/views/SettingsView.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import type { VerifierIdentifier, VerifierSettings, ContractVerificationSettings
44
import { mergeChainSettingsWithDefaults } from '../utils'
55
import { AppContext } from '../AppContext'
66
import { VerifyFormContext } from '../VerifyFormContext'
7+
import { FormattedMessage } from 'react-intl'
78

89
export const SettingsView = () => {
910
const { settings, setSettings } = useContext(AppContext)
@@ -28,7 +29,7 @@ export const SettingsView = () => {
2829

2930
return (
3031
<>
31-
<SearchableChainDropdown label="Chain" id="network-dropdown" setSelectedChain={setSelectedChain} selectedChain={selectedChain} />
32+
<SearchableChainDropdown label={<FormattedMessage id="contract-verification.searchableChainDropdownLabel" defaultMessage="Chain" />} id="network-dropdown" setSelectedChain={setSelectedChain} selectedChain={selectedChain} />
3233

3334
{selectedChain && (
3435
<div>

apps/contract-verification/src/app/views/VerifyView.tsx

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { SearchableChainDropdown, ContractDropdown, ContractAddressInput } from
55
import type { VerifierIdentifier, SubmittedContract, VerificationReceipt, VerifierInfo, VerificationResponse } from '../types'
66
import { VERIFIERS } from '../types'
77
import { mergeChainSettingsWithDefaults, validConfiguration } from '../utils'
8-
import { useNavigate } from 'react-router-dom'
8+
import { Form, useNavigate } from 'react-router-dom'
99
import { ConstructorArguments } from '../components/ConstructorArguments'
1010
import { CustomTooltip } from '@remix-ui/helper'
1111
import { AbstractVerifier, getVerifier } from '../Verifiers'
@@ -178,7 +178,12 @@ export const VerifyView = () => {
178178

179179
return (
180180
<form onSubmit={handleVerify}>
181-
<SearchableChainDropdown label="Chain" id="network-dropdown" selectedChain={selectedChain} setSelectedChain={setSelectedChain} />
181+
<SearchableChainDropdown
182+
label={<FormattedMessage id="contract-verification.searchableChainDropdown" defaultMessage={"Chain"} />}
183+
id="network-dropdown"
184+
selectedChain={selectedChain}
185+
setSelectedChain={setSelectedChain}
186+
/>
182187
<ContractAddressInput
183188
label={<FormattedMessage id="contract-verification.contractAddressInput" defaultMessage={"Contract Address"}/>}
184189
id="contract-address"
@@ -201,11 +206,11 @@ export const VerifyView = () => {
201206
<div className="d-flex py-1 align-items-center custom-control custom-checkbox">
202207
<input id="has-proxy" className="form-check-input custom-control-input" type="checkbox" checked={!!hasProxy} onChange={(e) => setHasProxy(e.target.checked)} />
203208
<label htmlFor="has-proxy" className="m-0 form-check-label custom-control-label" style={{ paddingTop: '2px' }}>
204-
<FormattedMessage id="contract-verification.proxyInputLabel" />
209+
<FormattedMessage id="contract-verification.proxyInputLabel" defaultMessage={'The deployed contract is behind a proxy'} />
205210
</label>
206211
</div>
207212
{hasProxy && <ContractAddressInput
208-
label={<FormattedMessage id="contract-verification.proxyContractAddressInput" />}
213+
label={<FormattedMessage id="contract-verification.proxyContractAddressInput" defaultMessage={'Proxy Address'} />}
209214
id="proxy-address"
210215
contractAddress={proxyAddress}
211216
setContractAddress={setProxyAddress}
@@ -262,14 +267,14 @@ export const VerifyView = () => {
262267
})}
263268
</div>
264269
<CustomTooltip tooltipText={submitDisabled ? (
265-
(!!contractAddressError || !contractAddress) ? "Please provide a valid contract address." :
266-
!selectedChain ? "Please select the chain." :
267-
!selectedContract ? "Please select the contract (compile if needed)." :
268-
((hasProxy && !!proxyAddressError) || (hasProxy && !proxyAddress)) ? "Please provide a valid proxy contract address." :
269-
"Please provide all necessary data to verify") // Is not expected to be a case
270-
: "Verify with selected tools"}>
270+
(!!contractAddressError || !contractAddress) ? <FormattedMessage id="contract-verification.contractAddressError" defaultMessage="Please provide a valid contract address." /> :
271+
!selectedChain ? <FormattedMessage id="contract-verification.chainError" defaultMessage="Please select the chain." /> :
272+
!selectedContract ? <FormattedMessage id="contract-verification.selectedContractError" defaultMessage="Please select the contract." /> :
273+
((hasProxy && !!proxyAddressError) || (hasProxy && !proxyAddress)) ? <FormattedMessage id="contract-verification.proxyAddressError" defaultMessage="Please provide a valid proxy address." /> :
274+
<FormattedMessage id="contract-verification.generalVerifyError" defaultMessage={"Please provide all necessary data to verify"} />) // Is not expected to be a case
275+
: <FormattedMessage id="contract-verification.verifyButtonTooltip" defaultMessage="Verify the contract on the selected chains with the selected verifiers." />}>
271276
<button type="submit" className="w-100 btn btn-primary mt-3" disabled={submitDisabled}>
272-
Verify
277+
<FormattedMessage id="contract-verification.verifyButton" defaultMessage="Verify" />
273278
</button>
274279
</CustomTooltip>
275280
</form>

apps/remix-ide/src/app/tabs/locales/en/contractverification.json

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,21 @@
66
"contract-verification.contractAddressInput": "Contract Address",
77
"contract-verification.proxyContractAddressInput": "Proxy Address",
88
"contract-verification.proxyInputLabel": "The deployed contract is behind a proxy",
9-
"contract-verification.panelDisplayName": "Contract Verification"
9+
"contract-verification.panelDisplayName": "Contract Verification",
10+
"contract-verification.searchableChainDropdownLabel": "Chain",
11+
"contract-verification.contractAddressError": "Please enter a valid contract address",
12+
"contract-verification.chainError": "Please select the chain.",
13+
"contract-verification.proxyAddressError": "Please provide a valid proxy contract address.",
14+
"contract-verification.verifyButton": "Verify",
15+
"contract-verification.lookupButton": "Lookup",
16+
"contract-verification.receipts.noContractsSubmitted": "No contracts submitted for verification",
17+
"contract-verification.receiptsDefaultLayout.description": "Check the verification statuses of contracts submitted for verification",
18+
"contract-verification.verifyDefaultLayout.description": "Verify compiled contracts on different verification services",
19+
"contract-verification.lookupDefaultLayout.description": "Search for verified contracts and download them to Remix",
20+
"contract-verification.settingsDefaultLayout.description": "Customize settings for each verification service and chain",
21+
"contract-verification.configInputPlaceholderText": "Add {label}",
22+
"contract-verification.configInputSaveButton": "Save",
23+
"contract-verification.configInputCancelButton": "Cancel"
1024
}
1125

1226

0 commit comments

Comments
 (0)