status-im / status-mobile

a free (libre) open source, mobile OS for Ethereum
https://status.app
Mozilla Public License 2.0
3.91k stars 987 forks source link

Implement translations linting #17614

Closed flexsurfer closed 1 year ago

flexsurfer commented 1 year ago

We need a tool to find outdated and missing translations in en.json during linting in dev and PR env.

We used Python script manually https://github.com/status-im/status-mobile/blob/develop/test/appium/tests/non_func/test_translations.py

also, this PR might be related https://github.com/status-im/status-mobile/pull/17610 cc @ilmotta

ilmotta commented 1 year ago

@flexsurfer, I took a very good look at your idea to identify missing/unused translations using clj-kondo. I'm no expert, so I might be wrong.

Basically, clj-kondo hooks run with SCI, and SCI doesn't allow reading files, which would be needed to verify if a given translation keyword is present in en.json. Therefore, Clojure outside SCI needs to run, but this is not supported in clj-kondo hooks.

AFAIU when we need to do project-wide linting (not just at the AST node level), we need to write custom code to process the output of the clj-kondo analysis. This is how this repo https://github.com/yannvanhalewyn/analyse-re-frame-usage-with-clj-kondo/tree/master shows how to lint re-frame keyword usage, but this means an external Clojure script needs to run and the results would not be integrated in text editors, they would printed to STDOUT. The script would be more "precise" than the Python one (because it would understand Clojure code), but I don't see much value in doing this if the Python script works fine.

Then there's the very complicated way clojure-lsp runs all sorts of diagnostics at the project level and is still capable of showing warnings/errors in text editors https://github.com/clojure-lsp/clojure-lsp/blob/c6b024940e65e86464fcb0f9be11aeee47a2440b/lib/src/clojure_lsp/feature/diagnostics.clj#L42. I can imagine we could fork clojure-lsp and extend the diagnostics (unless there's a better way), but I would not go into this rabbit hole personally.

So, the good news is that we can write very sophisticated linters project-wide that understand Clojure, but the bad news is that the DX is not the greatest because such project-wide linters can't be integrated with text editors 🤷🏼

I guess we can close this issue for the moment? Thank you

ilmotta commented 1 year ago

Just to be clear, even if we can't integrate with text editors, I still see value in having a custom linter preventing code from being merged that has unused or missing translations, and that we can certainly do.

So if this issue's scope is to only improve the usefulness of make lint, then I think we can leave it open, but if the goal is to nicely integrate everything with text editors, then it's much more tricky for project-wide analysis.

akatov commented 1 year ago

EDIT: the below list of unused tranlsation keys is wrong! clj-kondo does not currently check all usages of i18n/label, and when it does, it only registers the used keyword if it is directly passed to the function, i.e. not comuted before e.g. in an if statement.


some results from playing around with clj-kondo:

==================================================
UNUSED TRANSLATION KEYS

name-your-channel
membership-none
skip
confirmations-helper-text
create-multiaccount
community-image-pick
mobile-syncing-sheet-details
unpaired-keycard-text
intro-wizard-text2
use-valid-contact-code
public-group-topic
ok-got-it
use-recovery-phrase-subtitle
add-to-favourites
app-connections
password-creation-confirm
ens-test-message
favourites-empty
advertiser-starter-pack-accept
you-like-to-type-43-characters
try-your-luck-again
no-activity
permissions
status-not-sent-tap
node-version
open-dapp-store
success
logging
looking-for-cards
profile-picture-updated
switch-to-simple-interface
pin-retries-left
make-admin
invite-reward
add-custom-token
chats
buy-crypto
add-address-description
choose-new-location-for-keystore
or-tap
unpair-keycard-warning
validation-amount-is-too-precise
share-public-chat-text
more
community-thumbnail-upload
biometric-disable-password-description
sent
scan-sync-qr-code
welcome-screen-text
desktop
redeem-success
message
not-connected-nodes
datetime-day
channel-unmuted-successfully
recover
pairing-no-info
on-device
currency-display-name-brl
change-fleet
change-group-privacy
you-shared-a-community
K
view-signing
forgot-your-password-info-description
emoji-symbols
enable-notifications-sub-title
waku-bloom-filter-mode
currency-display-name-dop
community-key
one-month-int
offline-messaging-use-history-explanation
ens-chat-settings
public-chat-description
appearance
muted-until
recovery-phrase
block-contact
gif
add-address
contacts
identity-verification-request
custom-seed-phrase
enable-all
new-chat
currency-display-name-bhd
send-request-amount
colour
user-sent-a-gif
change-puk
peer-title
community-admins-will-review-your-request
discover-web3
statuses-descr
advertiser-title
retry
owner
enter-password-migration-prompt
three-words-description
group-chat
community-join-requirements-met
free
show-address-qr
what-is-shared
light
pin-one-attempt-blocked-after
describe-channel
help-capitalized
data-collected
transactions-filter-title
contacts-descr
ens-welcome-point-receive
community-members-title
no-pinned-messages-desc
advertiser-starter-pack-title
ens-remove-username
empty-notifications-title-read
selected
ens-username-hints
authorize
requesting
create-new-key
give-a-short-description
migration-successful-text
price-impact-desc
save
confirm-selection
mobile-network-use-mobile-data
send-request-unknown-token
forgot-your-password-info-reinstall-app-description
seed-phrase-title
profile-pic-take
network-chain
currency-display-name-cop
push-outbound-transaction-body
keycard-recover-title
add-new-contact
podcasts
wallet-invalid-address
sign-with
log-level
keycard-is-frozen-title
tx-fail-description2
membership-free
say-hi
unpin-from-chat
update-to-listen-audio
mark-user-untrustworthy
add-a-contact
new-favourite
unmute-channel
wakuv2-change-nodes
mailserver-retry
browsing-site-blocked-description2
active-unknown
mailserver-connection-error
sync-synced
if-you-cancel
sign-with-password
low-tip
wants-to-access-profile
membership-approval-description
key-on-device
tribute-to-talk-are-you-friends
redeem-amount
ok-continue
forgot-your-password-info-signup-with-key
community-request-not-accepted-body-text-prefix
view-token-gating
previewing-may-share-metadata
create-new-profile
balance
open-your
search-contacts
secret-keys-confirmation-text
are-you-sure-to-cancel
rename
forgot-your-password-info-create-new-password-description
keycard-reset-passcode
delete-category-confirmation
profile-pic-remove
recovery-success-text
try-keeping-the-card-still
ens-custom-domain
watch-only
community-info
generate-scan-sync-code
none
local-notifications
select-chat
close-all
keycard-recovery-phrase-confirmation-title
new-ui
step-i-of-n
seed-phrase-placeholder
contact-request-outgoing
invite-receive-account
removed
online-now
usd-currency
active-online
favourites
ens-release-username
origin
open-chat
member-ban
wakuv2-settings
enable-camera
synchronise-your-data-across-your-devices
history-nodes
cancel-request?
url
give-a-short-description-community
keycard-onboarding-preparing-header
chat-muted-for-1-week
load-messages-before
user-deleted-a-message
maximum-fee
les-ulc
currency-display-name-ils
mint
biometric-fingerprint
peers-stats
back
currency-display-name-mdl
enter-watch-account-address
messages-from-contacts-only-subtitle
buy-crypto-leaving
address-request-accepted
latamex-description
forgot-your-password-info-remove-app-description
push-failed-transaction
camera-permission-denied
starter-pack-received
currency-display-name-jmd
mobile-network-settings
cleared-chat-description-public
generate-new-key
select-new-location-for-keys
clear-all
priority
next
mailserver-request-error-title
confirm-new-password
starter-pack-coming
check-on-opensea
no-group-chats
scan-tokens
this-will-take-few-seconds
remove-from-chat
get-started
token
add-node
mon
remove-group
new-messages-header
recover-with-seed-phrase
declined
confirm-password-placeholder
special-characters
main-currency
bootnodes
ens-welcome-hints
browsing-cancel
mutual-contact-requests
warning-sending-to-contract-descr
enter-eth
dont-ask
create-channel-title
deleted-this-message
push-outbound-transaction
paste-json
online
community-private-key
transaction
currency-display-name-pln
add-mailserver
intro-text1
generate-account
hide
waiting-for-wifi
mentions
ens-welcome-point-customize-title
mobile-network-sheet-offline-details
chat-with-friends
no-pinned-messages
datetime-ago-format-short
optional
currency-display-name-uah
invite-reward-friend-description
grant-face-id-permissions
recipient-code-placeholder
words-n
updates-to-tos-desc
reset-card
intro-wizard-title6
tribute-to-talk-desc
change-passcode
currency-display-name-afn
new-network
status-inactive
syncing
communities-alpha
select-token-to-swap
edit-profile
biometric-auth-android-title
view-on-arb
devices
warning
keycard-is-blocked-instructions
wallet
view-cryptokitties
ens-saved
account-color
custom
intro-wizard-title4
community-key-placeholder
ens-welcome-point-receive-title
network-fee
nickname
community-request-not-accepted-body-text-suffix
delete-mailserver-title
http-gateway-error
remove-profile?
currency-display-name-egp
wrong-card-text
name-ens-or-address
send-contact-request-message
keycard-connected-title
biometric-disable-password-title
unmute-community
complete-hardwallet-setup
you-will-start-from-scratch
category-title
positive
app-commit
dapp-starter-pack-title
security
password_error1
validation-amount-invalid-number
new-to-status
public-channel
websites
off
mobile-network-continue-syncing-details
warning-message
no-keycard-applet-on-card
invite-chat-accept
send-to
create-group-chat
server
no-opened-communities
dev-mode-settings
no-group-chats-description
currency-display-name-btn
advertiser-starter-pack-decline
mobile-network-go-to-settings
you-can-choose-preview-websites
cannot-use-default-pin
address-or-ens-name
confirmations
keycard-recovery-intro-button-text
find
mo
biometric-enable-button
transaction-details
keycard-error-title
ens-get-name
membership
cancel
privacy
keycard-onboarding-puk-code-header
pair-card
bip39-password-placeholder
mailserver-error-title
hide-content-when-switching-apps
notifications
three-months-int
sign-you-in
leave-confirmation
wc-how-to-use-status-app
select-account
currency-display-name-bob
status-updates-descr
dapp-starter-pack-description
max-priority-fee
tribute-to-talk-set-snt-amount
clear-history-confirmation-content
ens-registration-failed-title
start-group-chat
get-status-at
remove-profile-message
push-notifications-server-enabled
you-dont-have-contacts-invite-friends
contact-request-is-now-a-contact
delete-chat
community-emoji-thumbnail-title
wallet-manage-accounts
last-backup-performed
dapp
you-sent-a-photo
current-network
traits
keycard-applet-install-instructions
mailserver-automatic-switch-explanation
recovery-typo-dialog-description
membership-requests
start-new-chat
token-gated-communities-info
wants-to-join
invite-friends-and-family
opened
go-to
manage-members
local-pairing-experimental-mode
transactions-sign
begin-set-up
default-sync-period
master-account
sending
token-details
remove-account
profile-pic-pick
specify-network-id
edit-name-image
pair-this-card
to-capitalized
delete-profile
tribute-to-talk-learn-more-2
name-of-token
tribute-to-talk-enabled
generate-keys
write-down-and-store-securely
close-contact-search
keycard-success-title
via
invite-chat-rule
welcome-to-status-description
recipient-code
currency-display-name-isk
command-button-send
request-pending
webview-camera-permission-requests
intro-wizard-title-alt5
show-existing-keys
delete
no-pairing-slots-available
status-automatic
wrong-password
sharing-data-desc-1
set-currency
community-info-not-found
have-a-sync-code?
chat-settings
jun
currency-display-name-eur
help-center
tribute-state-paid
copy-address
delete-mailserver-are-you-sure
current-password
max-fee
rpc-usage-copy
getting-started-generate-keys-from-recovery-phrase-description
status-dnd
not-keycard-text
chat-key
load-more-timeline
privacy-show-to-warning
membership-button
unpair-card-confirmation
sync-devices-complete-title
sync-in-progress
database-reset-title
settings
learn-more-about-keycard
status-tx-not-found
no-result
load-more-messages
all-time
secret-keys-confirmation-title
enable-access-to-camera
members
currency-display-name-mwk
pair-this-device
bug-report-too-short-description
mobile-network-sheet-configure
ens-terms-point-7
ens-terms-point-4
account-added
tap-card-again
add-bootnode
sync-all-devices
password-creation-title
user-keypair
ensure-qr-code-in-focus-to-scan
sent-n-photos
disconnect
open-on-block-explorer
timeline
ens-your-username
account-settings
mobile-network-sheet-remember-choice
image
ens-network-restriction
ens-want-custom-domain
delete-message
remove-from-contacts
recently-used-stickers
sep
welcome-community-blank-message-edit-chats
status-mobile-descr
unpair
encrypt-with-password
ens-powered-by
pair-code-placeholder
unread
emoji-recent
view-data
use-biometrics
move-keystore-file
database-reset-content
connecting-requires-login
type-your-password
paste
notifications-switch
multiaccounts-recover-enter-phrase-title
disable-later-in-settings
user-found
empty-notifications-admin-tab
make-one-it-is-easy-we-promise
read-more
specify-symbol
opensea
you-deleted-a-message
default-assets
page-camera-request-blocked
browsing-site-blocked-title
empty-tab
currency
send
keycard-processing-description
datetime-ago-format
disable-all
feb
wallet-key-content
ens-want-domain
all-connections
get-a-keycard
login-pin-description
new-category
send-transaction
show-profile-pictures-to
fee-explanation
biometric-auth-reason-login
welcome-community-blank-message
delete-network-confirmation
strikethrough
activity
transactions-history-loading
view-superrare
wallet-request
intro-wizard-text6
saved
show-qr
failed
my-albums
unlock
set-max
members-count
shared
new-contract
welcome-blank-community-message
your-keys
chat
enter-word
enter-your-code
transfers-fetching-failure
channel-muted-for-1-week
hash
mute
you-sent-a-gif
by-continuing-you-accept
invite-instruction-second
contract-interaction
community-enter-channel-info
network-preferences-desc
delivered
bug-report-submit-gh-issue
Pinned-a-message
browsers
update-to-see-image
ens-terms-point-1
empty-chat-description-one-to-one
need-help
ulc-enabled
instruction-after-qr-generated
generating-keys
share-link
enable-network-access
password-creation-placeholder-1
no-collectibles
add-private-key-account
ens-dismiss-message
log-level-settings
syncing-devices
soon
NFT
dont-yell-at-me
expand-all
nickname-description
datetime-ago
accepted
messages-gap-warning
custom-networks
currency-display-name-nzd
verified-community
node-address
synced-with
share-account
password-creation-tips-title
rpc-usage-get-stats
agree-by-continuing
key
contact-request-declined
ens-primary-username
incorrect-code
share-channel
pinned-messages
ens-terms-point-9
key-managment
ens-username-invalid-name-warning
biometric-auth-reason-verify
ens-remove-hints
tribute-to-talk
invalid-public-chat-topic
faq
close-app-title
pin-limit-reached
you-are-all-set-description
recipient
your-recovery-phrase-description
keycard-is-blocked-title
tribute-to-talk-add-friends
enter-address
remove-nickname-toast
empty-activity-center
one-photo
datetime-minute-short
view-details
peers-count
clear-history-action
enable-link-previews
emoji-travel
pairing
card-unpaired
cannot-pin-desc
keycard-unauthorized-operation
wallet-transaction-total-fee
community-message-preview
word-n
reduced-tip
storage
admin
connection-with-the-card-lost-setup-text
has-permissions
tribute-to-talk-learn-more-3
getting-started-generate-keys-description
about
empty-notifications-all-tab
audio-recorder-max-ms-reached
currency-display-name-pgk
add-watch-account
no-collectibles-description
enter-recipient-address-or-username
wrong-keycard-text
dismiss
see-it-again
open-membership
topic-name-error
empty-pending-invitations-descr
mute-community
invite-public-chat-home
sent-a-gif
pairing-changed
wallet-send-min-wei
pairing-maximum-number-reached-content
pin-one-attempt
database-reset-warning
you-canceled-the-request
profile-password
transactions-management-enabled
link-to-profile-copied
community-channel
you
fri
sharing-data-desc-3
edit-account
getting-started-with-status
sign-up
currency-display-name-bbd
introduce-yourself
wc-disclaimer
intro-privacy-policy-note2
share-contact-code
push-inbound-transaction
new
are-not-allowed
open-in-new-tab
keycard-recovery-phrase-confirm-header
mailserver-title
accept-and-share-address
use-recovery-phrase
scan-or-enter-sync-code
bug-report
invite-reward-you-name
minimum-received
mark-as-read
custom-seed-phrase-text-1
profile
ethereum-address
recover-keycard-multiaccount-not-supported
search-no-chat-found
generate-a-key
offline
web-view-error
contact-request-sent-to
revoke-access
name-your-channel-placeholder
view-channel-members-and-details
repeat-pin
vote-to-feature
invite-privacy-policy1
here-is-a-cat-in-a-box-instead
negative
send-request-amount-max-decimals
peer-to-peer
image-source-gallery
intro-wizard-text4
mark-untrustworthy
derivation-path
enable
accept-and-add
logout-title
group-invite
invite-reward-friend-name
invite-instruction-first
slow
empty-notifications-identity-verification-tab
clear-history
mailserver-reconnect
pin-to-chat
keycard-onboarding-intro-text
changed-asset-warning
error
left-community
dapps-permissions
browser-not-secure
gas-limit
empty-tab-description
you-already-use-status
contact-code
push-notifications-servers
create-category
this-device
send-reply
no-messages-description
created-group-chat-description
my-accounts-empty
community-image-take
hold-card
mark-all-read
local-notifications-subtitle
visit-dapp
M
completed
your-data-belongs-to-you-description
delete-node-are-you-sure
currency-display-name-rub
address-received
disconnected
you-dont-have-contacts
sync-devices-sub-title
main-account
identity-verification
view-etheremon
cost-fee
mainnet-network
press
getting-started-generate-keys-on-keycard
currency-display-name-sek
chat-muted-for-1-hour
signing
wakuv2-node-format
one-day
tribute-to-talk-removing-note
counter-99-plus
to-block
chat-name-content
strength-divider-strong-label
read
total-gas
public-chats
bug-report-description
user-pinned-a-message
currency-display-name-gel
getting-started-description
search-discover-communities
seed-phrase-invalid
peers
wallet-connect
remove-user-from-group
clear-history?
puk-code
status-always-online
mailserver-details
type-some-chat-key
emojis
status-not-sent-click
block
currency-display-name-thb
fetch-messages
request-to-join
ramp-description
max-fees
join-two-users
invite-chat-starter-pack
show-profile-pictures
enter-user-pk
no-pending-communities-description
passphrase
sharing-data-desc-6
leave-community-message
currency-display-name-ngn
mobile-network-sheet-offline
errors
leave-group?
this-device-desc
notifications-transactions
loading
generating-codes-for-pairing
and-go-to
request-feature
network-invalid-status-code
remote-notifications
group-chat-not-member
invite-reward-friend
token-auto-validate-decimals-error
connected-to
sharing-copied-to-clipboard
community-channel-read-requirements-met
seed-key-uid-mismatch-desc-1
cannot-pin-title
group-chat-no-contacts
already-logged-in-on-the-other-device
update
channel-muted-for-8-hours
delete-network-error
keycard-onboarding-intro-header
check-your-recovery-phrase
mobile-network-use-mobile
common-names
forgot-your-password-info-create-new-password
copy-qr
keycard-redeem-tx-desc
community-color-placeholder
emoji-activity
forgot-password
generate-keys-subtitle
group-chat-admin
only-mentions
create-profile
keycard-factory-reset-text
keycard-is-frozen-factory-reset
discover-communities
keycard-processing-title
sync-devices-result-sub-title
oops-wrong-password
cancelling
optimal
contact-request-header
enter-your-password
tribute-to-talk-disabled
refresh
new-public-group-chat
ens-add-username
invite-chat-name
enter-seed-phrase
community-kicked-heading
pinned-by
jan
network-settings
enter-password
transactions-history
share-address
pinned-messages-count
current-base-fee
yes
normal
maximum-fee-desc
community-roles
select-another-account
to-scan-a-qr-enable-your-camera
account-title
who-are-you-looking-for
block-contact-details
keycard-onboarding-recovery-phrase-header
your-card-is-frozen
emoji-no-results-title
link-to-profile
undo
new-group
shell-placeholder-subtitle
transaction-data
browser
on-status-tree
tribute-to-talk-contact-received-your-tribute
new-contact
apply
connection-with-the-card-lost-text
synced-devices
invalid-key-content
currency-display-name-chf
no-communities-description
transaction-request
password-reset-success-message
favourite-description
create-pin
about-app
pairing-code_error1
status-sent
access-existing-keys
account-exists-title
allow
bridge
restore-defaults
wallet-insufficient-gas
invite-instruction-third
set-a-topic
slide-to-sign
replied
delete-for-everyone
keycard-is-blocked-details
ens-username-you-can-follow-progress
waiting-for-wifi-change
suggested-price-limit
submit-bug
paired-with-this-device
mute-for-8-hours
from-capitalized
decryption-failed-content
community-share-title
membership-title
advanced
ens-name-not-found
chat-muted-for-15-minutes
token-auto-validate-name-error
n-photos
tribute-required-by-multiaccount
members-title
unpin
insufficient-balance-to-cover-fee
intro-title2
word-count
unique-identifiers
membership-ens
empty-chat-description
external-storage-denied
enter-a-private-key
pin-mismatch
notifications-marked-as-read
browsing-open-in-android-web-browser
accept-and-continue
empty-chat-description-public
you-eligible-to-join
push-failed-transaction-body
currency-display-name-jpy
keycard-error-description
image-remove-current
i-dont-have-status-on-another-device
share-dapp-text
connect-wallet
message-not-sent
product-information
transaction-fee
invalid-pairing-password
finishing-card-setup
joined
saving-keys-to-device
enter-channel
start-using-status
intro-wizard-title2
bootnode-format
terms-of-service
keycard-onboarding-mnemonic-text
bug-report-submit-email
emoji-objects
notifications-non-contacts
invite-button
contact-request-pending
access-key
incoming
build-yourself
select-token-to-receive
name
no-thanks
sa
keycard-onboarding-start-text
start-chat
strength-divider-very-weak-label
status-pending
intro-text
all-messages
biometric-auth-confirm-logout
empty-notifications-replies-tab
membership-ens-description
community-request-not-accepted
new-pin-description
fr
edit-group
limit
status-confirmed
chat-notification-preferences
wallet-invalid-address-checksum
audio-recorder-error
currency-display-name-bdt
already-have-asset
password-creation-placeholder-2
you-already-have-an-asset
are-you-sure-description
currency-display-name-idr
keycard-redeem-tx
keycard
oops-this-qr-does-not-contain-an-address
slide-to-reveal-code
ens-username-connected
community-members
new-status
community-request-accepted
pairing-maximum-number-reached-title
keycard-recovery-phrase-confirmation-text
sharing-copy-to-clipboard
ok-save-pass
close-app-content
updates-to-tos
untrustworthy
keycard-init-description
tribute-to-talk-you-require-snt
keycard-recovery-intro-header
not-found
tribute-to-talk-pending-note
keycard-init-title
rpc-usage-reset
network
ens-welcome-point-verify-title
keycard-cancel-setup-title
chat-is-not-a-contact
everyone-mention
profile-details
select-account-dapp
tap-on
password-reset-in-progress
copy-transaction-hash
keycard-is-frozen-details
buy
no-contacts
tu
leave-chat-confirmation
transaction-history
user-sent-a-sticker
strength-divider-weak-label
discover
enter-url
swap-details
use-keycard
currency-display-name-ugx
one-year
open-dapp
community-rules
notifications-preferences
blocked-users
ens-terms-point-8
ens-username-registration-confirmation
view-on-opensea
add-existing-status-profile
multiaccounts-recover-enter-phrase-text
create-profile-password-info-box-description
group-chat-member-joined
sent-at
leave-community?
destroy
with-full-encryption
create-a-pin
chaos-unicorn-day
approve-token
add-text
import
edit
manage-connections
help-improve-status
paired-devices
apr
outgoing-transaction
connect
changed-amount-warning
contact-request-chat-pending
browsing-title
display-collectibles
wrong-address
edit-name-and-image
collectibles-leak-metadata
confirm
wallet-connect-app-connected
contact-request-accepted
to-see-this-message
name-your-community
logout-are-you-sure
ens-agree-to
tabs
continue-anyway
cant-report-bug
one-week
pending-invitations
chat-link-previews
message-reply
buy-tokens
accept
emoji-food
keycard-upsell-subtitle
active-members
chat-key-description
setup-group-chat
sharing-share
manage-tokens
sync-code-generated
create-channel
ens-usernames
removed-from-contacts
pay-to-chat
emoji-search-placeholder
empty-notifications-subtitle-read
bootnodes-enabled
eth-or-ens
gas-used
address
wallet-assets
use-keycard-subtitle
you-not-eligible-to-join
tue
overview
ens-username-taken
intro-wizard-title-alt4
migration-successful
specify-rpc-url
ens-custom-username-hints
choose-storage
edit-categories
browsing-site-blocked-go-back
initialization
my-profile
leave-community
wallet-address
invalid-key-confirm
mainnet
favorite-communities
address-requested
sign-and-send
select
status-inactive-subtitle
group-membership-request
music
intro-text2
resend-message
status
remove-favourite
community-request-accepted-body-text
trip-accounts
identity-verification-request-sent
currency-display-name-try
password-creation-tips-2
check-on-block-explorer
join-more-users
fleet-settings
contact-request-sent
scan-sync-code
or
wallet-send
photo-caps
add-seed-account
advertiser-starter-pack-description
getting-started-generate-keys-on-keycard-description
install
rpc-usage-filter
enter-pair-code
import-community
backing-up
invite-chat-pending
intro-wizard-title3
finish
attribution-received
welcome-blank-message
not-paired-with-this-device
contact-request-chat-add
wallet-manage-app-connections
send-logs
members-limit-reached
create-profile-password-info-box-title
members-label
sharing-data-desc-4
contact-request-removed-you-as-contact
successful-connection
invite-reward-you
share-profile-link
chaos-mode
transaction-failed
connect-with-users
intro-wizard-text3
add-network
view-pinned-messages
duration-estimate
seed-phrase-words-uppercase
tribute-to-talk-learn-more-1
identifier
re-encrypt-key
disable
joined-community
keycard-onboarding-recovery-phrase-text
deny
share-invite-link
quiet-hours
tribute-to-talk-signing
identicon-ring
pinned-messages-empty
you-pinned-a-message
unpair-card
share-profile
forgot-your-password-info-signup-with-key-description
group-chat-decline-invitation
remove
tag-was-lost
mute-till-unmute
mailserver-request-error-status
you-dont-have-stickers
include
open-nfc-settings
fee-cap
selected-count-from-max
required-field
intro-wizard-text1
request-to-join-disclaimer
group-chat-member-removed
community-color
network-info
see-details
pin-one-attempt-blocked-before
ens-welcome-point-register-title
wallet-asset
tribute-to-talk-paywall-learn-more-1
pairing-code-placeholder
network-id
wallet-key-title
your-identifiers
invite
password-reset-success
error-unable-to-get-token-balance
strength-divider-okay-label
notifications-servers
make-moderator
suggested-min-tip
ens-welcome-point-register
accounts
shared-a-community
You
never
explore-the-decentralized-web
rpc-usage-filtered-total
dapp-starter-pack-accept
gwei
ens-welcome-point-customize
you-are-all-set
report-bug-email-template
join-me
delete-bootnode
move-keystore-file-to-keycard
leave
enter-12-words
mailserver-automatic
currency-display-name-tzs
how-it-works
perform-backup
currency-display-name-rsd
change-pairing
on
change-pairing-title
sync-devices-error-title
you-sent-n-photos
emoji-people
mutal-contacts
no-permissions
keycard-recovery-intro-text
edit-favourite
wrong-word
contacts-empty
specify-server-public-key
keycard-factory-reset
open-home
current
community-unmuted
currency-display-name-ttd
community-request-pending-body-text
added-to-group-chat
tip-cap
starter-pack-received-description
fast
currency-display-name-mad
biometric-disable-bioauth
waiting-wi-fi
link-to-community
delete-chat-confirmation
ens-welcome-point-simplify
user-sent-audio-message
available-participants
bug-report-steps-placeholder
image-source-title
kicked
token-price
ens-usernames-details
invalid-username-or-key
ens-locked
datetime-second
keypair-title
you-sent-a-sticker
send-push-notifications
currency-display-name-bnd
no-contacts-description
photo
mention
scan-or-enter-a-sync-code
ens-registration-failure
sign-in
connection-request
ens-username-registration-invalid
symbol
currency-display-name-clp
use-as-profile-picture
use-the-multichain-wallet
select-account-first
community-requests-to-join-title
share-my-profile
fetch-community
blank-keycard-text
back-up-your-seed-phrase
invite-instruction-fifth
group-chat-created
currency-display-name-twd
empty-notifications-membership-tab
ens-10-SNT
currency-display-name-usd
update-to-see-sticker
mute-for-15-mins
you-can-change-account
keycard-backup-success-body
invalid-format
one-month
shell-placeholder-title
added
add-members
only-6-images
join-group-chat
ens-name-title
ens-or-chat-key
network-invalid-network-id
signing-phrase
repeat-puk
currency-display-name-zar
add-to-contacts-text
wrong-contract
error-unable-to-get-prices
no-pending-communities
lifestyle
unmute-chat
recovery-confirm-phrase
membership-invite-description
intro-message1
until
unpaired-keycard-title
favourite
unable-to-fetch
per-gas-price-limit
unknown-status-go-error
currency-display-name-mur
submit
your-answer
unblock-contact
keycard-onboarding-start-step2
identicon-ring-explanation
quiet-days
miners-higher-fee
backup-through-waku
bug-report-description-placeholder
backup-recovery-phrase
keycard-onboarding-pin-text
show-more
nov
view-members
unable-to-send-messages
outgoing
channel-muted-for-1-hour
turn-nfc-on
currency-display-name-pen
pair
mailserver-request-error-content
keycard-free-pairing-slots
connect-mailserver-content
pin-changed
reset-card-description
community
getting-started-generate-keys-from-recovery-phrase
invite-chat-accept-join
add-a-watch-account
join-a-community
currency-display-name-pkr
your-tip-limit
copy-info
create-a-puk
datetime-second-short
error-syncing-connection-failed
request-processed-after-node-online
password-creation-disclaimer
experienced-web3
sync-settings
peer-content
sort-communities
in-contacts
wrong-keycard-title
group-info
requested-to-join-community
invalid-range
accept-new-chats-from
ens-username-available
add-account-description
fetching-community
added-you-to
change-password
delete-node
empty-notifications-subtitle-unread
delete-network-title
enter-sync-code
your-name
no-other-accounts
forgot-your-password-info-remove-app
no-opened-communities-description
ens-username-already-added
dapps
currency-display-name-ron
recovering-key
pin-code
user-keycard
export-key
connected
view-on-opt
sent-a-photo
account-name
continue
user-sent-n-photos
chat-unmuted-successfully
gas-price
close
biometric-secure-with
incoming-transaction
about-sharing-data
mar
remove-nickname
ask-in-status
and
audio-recorder
emojihash
data-syncing
unable-to-read-this-code
scan-or-enter-sync-code-seen-on-this-device
back-up-seed-phrase
currency-display-name-hkd
mailserver-content
keycard-factory-reset-title
im-new
test-networks
sun
chat-with
message-options-cancel
card-is-blank
name-optional
privacy-photos
contact-request-accepted-toast
browsing-open-in-ios-web-browser
featured
open-status-on-your-other-device
currency-display-name-kzt
dark
currency-display-name-mzn
status-dnd-subtitle
scan-qr
not-registered
multiaccount-exists-title
cancel-keycard-setup
received
blank-messages-text
pairing-go-to-installation
keycard-onboarding-start-step1
history
private-notifications-descr
statuses-my-status-descr
how-to-pair
wallet-insufficient-funds
add-nickname
fee-options
not-enough-snt
fleet
images
back-up
tribute-to-talk-ask-to-be-added
can-not-add-yourself
add-to-contacts
days
generating-mnemonic
delete-my-account
generate-an-account
join-new-public-chat
move-and-reset
mobile-network-stop-syncing-details
name-your-community-placeholder
currency-display-name-pyg
cancel-request-to-join
learn-more
keycard-onboarding-start-header
two-minutes
ens-username-invalid
audio
community-join-requirements-tokens-lost
mute-group
mute-channel
invite-chat-intro
nickname-visible-to-you
sign-anyway
editing-message
unlimited
type
lets-go
message-deleted-for-you-count
amount
this-is-you-signing
empty-chat-description-community
home
chat-is-a-contact
no-messages
membership-none-placeholder
privacy-and-security
copy-to-clipboard
close-app-button
main-networks
keycard-onboarding-start-step2-text
group-invite-link
biometric-enable
youre-on-mobile-network
pin
you-have-no-contacts
to-encrypt-enter-password
communities-verified
join-open-community
bad-fees-description
datetime-today
community-channel-write-requirements-met
keycard-blocked
puk-changed
copy-text
currency-display-name-myr
remember-me
gas-amount-limit
invite-select-account
leave-group
bootnode-details
recover-with-keycard
sharing-data-desc-5
disconnect-dapp
ens-displayed-with
push-inbound-transaction-body
your-price-limit
mark-all-notifications-as-read
contract-isnt-supported
message-deleted
etherscan-lookup
keycard-onboarding-start-step1-text
ens-deposit
datetime-day-short
increase-gas
tribute-to-talk-disabled-note
camera-access-error
valid-for-time
intro-privacy-policy-note1
community-link
start-conversation
scan-the-qr-code-or-copy-the-sync-code
wallet-connect-go-back
italic
contact-request
leave-chat
rpc-usage-info
pairing-new-installation-detected-title
wallet-manage-assets
version
wed
get-stickers
group-chat-members-count
scan-an-account-qr-code
unmute-group
unpin-from-channel
code-snippet
reveal-sync-code
link-preview-loading-message
type-something
delete-mailserver
browsing-site-blocked-description1
wallet-backup-recovery-title
your-contact-code
counter-9-plus
currency-display-name-inr
logging-enabled
datetime-hour
biometric-auth-confirm-try-again
keycard-enter-new-passcode
pin-one-attempt-frozen-after
logged-in
browsing-open-in-status
network-details
currency-display-name-vnd
mailserver-format
type-pairing-code
request-to-join-community
help
from
join
rpc-usage-filter-methods
datetime-yesterday
ethereum-node-started-incorrectly-title
collectibles
choose-authentication-method
accept-community-rules
clear-history-title
wallet-send-min-units
view-cryptostrikers
delete-my-profile
fetch-timeline
audio-recorder-permissions-error
private-key
ens-registration-in-progress
status-is-open-source
migrations-failed-content
gated
browsed-websites
three-words-description-2
channel-muted-till-unmuted
recent-empty
password
text-input-disabled
seed-key-uid-mismatch-desc-2
lost-connection
not-keycard-title
approve-token-contract-desc
find-sync-code
emoji-nature
community-join-requirements-not-met
can-send-messages
keycard-dont-ask-card
find-your-friends
keycard-recovery-no-key-text
node-details
seed-key-uid-mismatch
principles
join-new-private-chat
profile-deleted-keycard
use-photo
share-chat
empty-keycard-required
keycard-recover
sync-devices-complete-sub-title
you-must-now-hold
currency-display-name-etb
membership-description
nodes-disabled
dapp-would-like-to-connect-wallet
follow-your-interests
currency-display-name-ars
mobile-network-sheet-settings
anyone
my-status
ethereum-node-started-incorrectly-description
keycard-connected-description
ens-register
thu
page-would-like-to-use-camera
enter-puk-code-description
no
bootnode-address
send-push-notifications-description
create
joined-group-chat-description
replies
ens-terms-point-6
currency-display-name-lkr
currency-display-name-php
password-creation-match
public
profile-deleted-content
biometric-auth-android-sensor-error-desc
biometric-auth-confirm-title
assets
pending-confirmation
enter-pin
pairing-please-set-a-name
ens-username-connected-continue
device-syncing
profile-not-found
password-placeholder2
members-active-none
keycard-onboarding-recovery-phrase-description
currency-display-name-czk
share-logs
redeem-now
accept-status-tos-prefix
unpair-keycard
clear-history-confirmation
chat-muted-till-unmuted
mute-for-1-hour
mobile
group-chat-name-changed
not-applicable
wallet-collectibles
communities
add-contact
set-nickname-toast
empty-notifications-system-tab
photos
datetime-hour-short
delete-bootnode-title
generate-a-new-key
chat-name-title
share-image
enter-pair-code-description
mobile-network-continue-syncing
community-kicked-body
last-transaction
type-nickname
public-chat
delete-chat?
save-password-unavailable-android
tribute-to-talk-transaction-failed-note
transactions
add
community-channel-write-requirements-not-met
sticker
biometric-touchid
recover-key
biometric-auth-error
log-in
mobile-network-start-syncing
until-you-turn-it-back-on
tribute-to-talk-pending
dev-mode
currency-display-name-cny
moonpay-description
intro-title3
okay
enable-access-to-local-network
password-creation-tips-4
now
preference
invite-friends-to-status
buy-crypto-choose-a-service
ens-username-owned-continue
main-wallet
currency-display-name-npr
phone-e164
welcome-to-status
password-creation-dont-match
messages
recent
account-content
nonce
invited
sign-request-failed
password-creation-subtitle
no-recent-transactions
follow
contract-address
keycard-desc
keycard-recovery-no-key-header
delete-profile-warning
offline-messaging-use-history-nodes
new-password
password-description
all
contact-request-removed-as-contact
opening-buy-crypto
group-chat-admin-added
currency-display-name-hrk
view-gitcoin
wallet-settings
error-unable-to-get-balance
share-community
ens-welcome-point-simplify-title
webview-camera-permission-requests-subtitle
accent-colour
photos-access-error
rearrange-categories
processing
privacy-policy
group-details
sign-out
keycard-success-description
my-accounts
see-suggestions
set-custom-fee
no-saved-addresses
signing-a-message
remove-network
user-replied
you-can-fetch
invite-warning
category
create-pin-description
logout-key-management
delete-confirmation
ens-got-it
datetime-minute
contact-requests
chat-key-title
advanced-settings
pending-requests
one-week-int
thank-you
change-pairing-description
your-data-belongs-to-you
empty-notifications-transactions-tab
block-user?
ens-terms-point-10
reject-and-delete
not-a-chatkey
remove-profile-confirm-message
sharing-data-desc-2
membership-invite
generate-a-new-account
currency-display-name-omr
mobile-network-ask-me
token-gated-communities
contact-request-was-accepted
glossary
system
backup-settings
chaos-unicorn-day-details
emoji-no-results-description
no-pinned-messages-community-desc
price-impact
ens-name-content
currency-display-name-crc
create-community
notify
currency-display-name-kes
ens-saved-title
registered
status-hardwallet
ok
delete-account
chat-name
join-request
current-pin
currency-display-name-mxn
recent-recipients
below-base-fee
tribute-state-required
input-data
currency-display-name-uyu
three-days
eth
clear
new-tab
mail-should-be-configured
keycard-access-reset
ens-terms-point-5
join-group-chat-description
currency-display-name-dkk
seed-phrase-content
participate-in-the-metaverse
start-with-space
custom-node
ens-understand
ens-no-usernames
password-creation-hint
invite-privacy-policy-public
no-communities-description-strikethrough
audio-message
keycard-onboarding-start-step3
invite-public-chat-intro
save-image-library
invite-friends
maybe-later
community-invite-title
something-went-wrong
to-enable-biometric
su
decimals
transactions-history-empty
tribute-to-talk-tribute-received1
ends-with-space
total-members
preview-privacy
replying-to
puk-and-pairing-codes-displayed
profiles-on-device
logout
set-up-sync
edit-community
tribute-to-talk-finish-desc
sent-audio-message
not-connected-to-peers
account-name-input-placeholder
biometric-auth-confirm-message
whats-on-your-mind
public-group-status
you-must-always-hold
connecting
user-shared-a-community
edit-chats
keycard-awaiting-description
membership-free-description
enter-puk-code
data-collected-subtitle
ens-registration-failed
are-you-sure
contact-request-sent-toast
mailserver-request-retry
edit-message
language
no-dapps
transactions-filter-select-all
reject
what-changed
open
export-account
you-replied
ens-username-connected-with-different-key
manage-keys-and-storage
disabled
ens-transaction-pending
specify-address
album-images-count
invalid-number
non-contacts
community-thumbnail-image
reset-password
chat-and-transact
intro-wizard-title1
about-key-storage-content
transaction-signed
status-keycard
private-notifications
keycard-onboarding-finishing-header
public-key
pending
you-must-hold
notification-settings
keys-saved
external-link
send-logs-to
view-public-dashboard
add-me-to-your-contacts
group-chat-member-added
chat-muted-for-8-hours
lock-app-with
intro-wizard-title5
to
save-password
bug-report-steps
ens-terms-header
recovery-typo-dialog-title
welcome-to-web3
wallet-connect-2.0
pairing-new-installation-detected-content
backup-disabled
scan-qr-code
import-community-title
transactions-load-more
sign-in-by-syncing
currency-display-name-ghs
add-account
accounts-count
sign-message
delete-keys-keycard
pair-this-device-description
receive-transaction
sync-devices-error-sub-title
set-dapp-access-permissions
strength-divider-very-strong-label
retake
password-creation-tips-1
setup-syncing
currency-display-name-bgn
this-message-was-deleted
token-auto-validate-symbol-error
no-communities
wc-dispute
sync-code
cut
your-recovery-phrase
buy-crypto-title
new-puk-description
transaction-description
invite-reward-you-description
edit-channel-title
current-average-tip
invite-privacy-policy2
change-log-level
send-message
connection-with-the-card-lost
pairing-card
transfer-ma-unknown-error-desc-1
send-sending-to
keycard-awaiting-title
off-status-tree
how-to-scan
ens-username
got-it
sticker-market
invite-people
blank-keycard-title
multiaccount-exists-content
forgot-your-password-info-title
dec
lower-than-average-tip
currency-display-name-vef
currency-display-name-krw
password-placeholder
profile-deleted-title
view-on-eth
available
pair-code
keycard-backup
enter-a-seed-phrase
currency-display-name-cad
welcome-to-web3-sub-title
empty-keycard
delete-bootnode-are-you-sure
search
rpc-usage-total
account-info
alphabetically
edited
you-will-need-this-code
data
you-hold-number-of-hold-tokens-of-these
intro-title1
oct
view
specify-name
ens-terms-point-2
safe-estimate
empty-notifications-mentions-tab
biometric-faceid
type-a-message
decline
give-permissions-camera
invalid-address-qr-code
mute-chat-capitialized
cant-open-public-chat
tap
scan-sync-code-placeholder
bold
currency-display-name-aud
might-break
may
invite-people-from-contacts
th
password-mismatch
password-creation-tips-3
own-your-crypto
reset-database-warning-keycard
mobile-network-stop-syncing
sent-a-sticker
approve
tribute-to-talk-tribute-received2
keycard-onboarding-start-step3-text
community-request-pending
everyone
current-pin-description
view-community-rules
add-account-incorrect-password
mute-chat
new-group-chat
currency-display-name-nad
request-transaction
wallet-connect-proposal-description
remind-me-later
approve-limit
remote-notifications-subtitle
add-nickname-title
member-kick
chat-key-content
unmute
default
currency-display-name-sar
emoji-hash
empty-chat-description-public-share-this
we
on-keycard
simple
pinned-messages-2
minimum-characters
new-community-title
wallet-connect-proposal-title
allow-mention-notifications
invite-instruction-fourth
current-base
node-info
pin-to-channel
community-join-requirements-changed
ens-terms-registration
aug
puk-code-explanation
sync-devices-title
wrong-card
keycard-is-frozen-reset
community-image-remove
ens-terms-point-3
emoji-flags
community-edit-title
ens-username-owned
emojihash-description
seed-phrase-error
done
starter-pack-coming-description
confirmation-request
mobile-syncing-sheet-title
groups
community-channel-read-requirements-not-met
reset-database-warning
currency-display-name-sgd
currency-display-name-nok
biometric-auth-login-error-title
receive
wallet-choose-recipient
keycard-has-multiaccount-on-it
communities-enabled
blank-contacts-text
wc-brand-guide
no-tokens-found
pair-devices
to-pair-with-your-other-device-in-the-network
remove-token
empty-notifications-title-unread
transfer-ma-unknown-error-desc-2
linked-on
membership-request-denied
sat
biometric-enable-keycard
hooks
message-deleted-for-you
wallet-invalid-chain-id
at
emoji-hash-copied
layer-2
about-key-storage-title
biu
tribute-state-pending
contact-s
ens-your-usernames
group-chat-all-contacts-invited
pin-one-attempt-frozen-before
keycard-backup-success-title
network-invalid-url
advertiser-description
currency-display-name-aed
forgot-your-password-info-reinstall-app
keycard-recovery-success-header
transaction-sent
currency-display-name-qar
save-password-unavailable
current-minimum-tip
left
turn-nfc-description
edit-nickname
keycard-redeem-title
description
tribute-to-talk-paywall-learn-more-2
photo-saved
you-colon
mailserver-pick-another
community-image-delete
choose-actions
per-gas-tip-limit
keycard-recover-text
ens-your-your-name
unblock
pair-code-explanation
sync-new-device
add-an-account
about-names-title
mailserver-error-content
tribute-to-talk-paywall-learn-more-3
keycard-onboarding-pairing-header
puk-mismatch
currency-display-name-kwd
once-enabled-share-metadata
membership-approval
non-archival-node
ens-welcome-point-verify
enter-contact-code
message-deleted-for-everyone-count
buy-crypto-description
wc-new-tos-based-on-principles-prefix
membership-declined
bootnodes-settings
error-loading-audio
join-one-user
mailserver-address
allow-and-send
tx-fail-description1
ensure-qr-code-is-in-focus-to-scan
message-deleted-for-everyone
invalid-ens-or-key
request-membership
waiting-to-sign
mute-for-1-week
reset-database
channel-muted-for-15-minutes
signing-in-from-another-device
seed-phrase-info
membership-request-pending
ending-not-allowed
share
image-source-make-photo
actions
see-sticker-set
account-is-used
mobile-network-use-wifi
go-to-settings
status-automatic-subtitle
view-profile
user-sent-a-photo
currency-display-name-huf
show-notifications
send-request
ens-username-connection-confirmation
network-preferences
add-favourite
biometric-auth-android-sensor-desc
block-user
x-counter
currency-display-name-gbp
browser-secure
logout-app-content
welcome-back
change-tip
ens-show-username
card-reseted
jump-to
in
rpc-url
delete-node-title
error-this-is-not-a-sync-qr-code
keycard-can-use-with-new-passcode
pinned-a-message
cryptokitty-name
remove-from-contacts-text
view-rules
word-n-description
backup-enabled
change-pin
intro-text3
connection-status
show-transaction-data
keycard-cancel-setup-text
seed-phrase-words-exceeded
enable-biometrics
try-again
biometric-auth-login-ios-fallback-label
members-active
enter-a-chat-key
allowing-authorizes-this-dapp
request-access
empty-notifications-contact-requests-tab
hide-content-when-switching-apps-ios
show-less
are-you-sure?
about-names-content
powered-by-paraswap
change-logging-enabled
transaction-declined
delete-and-leave-group
join-decentralised-communities
ens-custom-username-taken
cannot-read-card
wallet-total-value
slippage
confirm-pairing-code-placeholder
invite-contacts
jul
delete-for-me
you-sent-audio-message
swap
current-average
==================================================

==================================================
MISSING TRANSLATION KEYS

goerli-network
==================================================